| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335363363633736338363393634036341363423634336344363453634636347363483634936350363513635236353363543635536356363573635836359363603636136362363633636436365363663636736368363693637036371363723637336374363753637636377363783637936380363813638236383363843638536386363873638836389363903639136392363933639436395363963639736398363993640036401364023640336404364053640636407364083640936410364113641236413364143641536416364173641836419364203642136422364233642436425364263642736428364293643036431364323643336434364353643636437364383643936440364413644236443364443644536446364473644836449364503645136452364533645436455364563645736458364593646036461364623646336464364653646636467364683646936470364713647236473364743647536476364773647836479364803648136482364833648436485364863648736488364893649036491364923649336494364953649636497364983649936500365013650236503365043650536506365073650836509365103651136512365133651436515365163651736518365193652036521365223652336524365253652636527365283652936530365313653236533365343653536536365373653836539365403654136542365433654436545365463654736548365493655036551365523655336554365553655636557365583655936560365613656236563365643656536566365673656836569365703657136572365733657436575365763657736578365793658036581365823658336584365853658636587365883658936590365913659236593365943659536596365973659836599366003660136602366033660436605366063660736608366093661036611366123661336614366153661636617366183661936620366213662236623366243662536626366273662836629366303663136632366333663436635366363663736638366393664036641366423664336644366453664636647366483664936650366513665236653366543665536656366573665836659366603666136662366633666436665366663666736668366693667036671366723667336674366753667636677366783667936680366813668236683366843668536686366873668836689366903669136692366933669436695366963669736698366993670036701367023670336704367053670636707367083670936710367113671236713367143671536716367173671836719367203672136722367233672436725367263672736728367293673036731367323673336734367353673636737367383673936740367413674236743367443674536746367473674836749367503675136752367533675436755367563675736758367593676036761367623676336764367653676636767367683676936770367713677236773367743677536776367773677836779367803678136782367833678436785367863678736788367893679036791367923679336794367953679636797367983679936800368013680236803368043680536806368073680836809368103681136812368133681436815368163681736818368193682036821368223682336824368253682636827368283682936830368313683236833368343683536836368373683836839368403684136842368433684436845368463684736848368493685036851368523685336854368553685636857368583685936860368613686236863368643686536866368673686836869368703687136872368733687436875368763687736878368793688036881368823688336884368853688636887368883688936890368913689236893368943689536896368973689836899369003690136902369033690436905369063690736908369093691036911369123691336914369153691636917369183691936920369213692236923369243692536926369273692836929369303693136932369333693436935369363693736938369393694036941369423694336944369453694636947369483694936950369513695236953369543695536956369573695836959369603696136962369633696436965369663696736968369693697036971369723697336974369753697636977369783697936980369813698236983369843698536986369873698836989369903699136992369933699436995369963699736998369993700037001370023700337004370053700637007370083700937010370113701237013370143701537016370173701837019370203702137022370233702437025370263702737028370293703037031370323703337034370353703637037370383703937040370413704237043370443704537046370473704837049370503705137052370533705437055370563705737058370593706037061370623706337064370653706637067370683706937070370713707237073370743707537076370773707837079370803708137082370833708437085370863708737088370893709037091370923709337094370953709637097370983709937100371013710237103371043710537106371073710837109371103711137112371133711437115371163711737118371193712037121371223712337124371253712637127371283712937130371313713237133371343713537136371373713837139371403714137142371433714437145371463714737148371493715037151371523715337154371553715637157371583715937160371613716237163371643716537166371673716837169371703717137172371733717437175371763717737178371793718037181371823718337184371853718637187371883718937190371913719237193371943719537196371973719837199372003720137202372033720437205372063720737208372093721037211372123721337214372153721637217372183721937220372213722237223372243722537226372273722837229372303723137232372333723437235372363723737238372393724037241372423724337244372453724637247372483724937250372513725237253372543725537256372573725837259372603726137262372633726437265372663726737268372693727037271372723727337274372753727637277372783727937280372813728237283372843728537286372873728837289372903729137292372933729437295372963729737298372993730037301373023730337304373053730637307373083730937310373113731237313373143731537316373173731837319373203732137322373233732437325373263732737328373293733037331373323733337334373353733637337373383733937340373413734237343373443734537346373473734837349373503735137352373533735437355373563735737358373593736037361373623736337364373653736637367373683736937370373713737237373373743737537376373773737837379373803738137382373833738437385373863738737388373893739037391373923739337394373953739637397373983739937400374013740237403374043740537406374073740837409374103741137412374133741437415374163741737418374193742037421374223742337424374253742637427374283742937430374313743237433374343743537436374373743837439374403744137442374433744437445374463744737448374493745037451374523745337454374553745637457374583745937460374613746237463374643746537466374673746837469374703747137472374733747437475374763747737478374793748037481374823748337484374853748637487374883748937490374913749237493374943749537496374973749837499375003750137502375033750437505375063750737508375093751037511375123751337514375153751637517375183751937520375213752237523375243752537526375273752837529375303753137532375333753437535375363753737538375393754037541375423754337544375453754637547375483754937550375513755237553375543755537556375573755837559375603756137562375633756437565375663756737568375693757037571375723757337574375753757637577375783757937580375813758237583375843758537586375873758837589375903759137592375933759437595375963759737598375993760037601376023760337604376053760637607376083760937610376113761237613376143761537616376173761837619376203762137622376233762437625376263762737628376293763037631376323763337634376353763637637376383763937640376413764237643376443764537646376473764837649376503765137652376533765437655376563765737658376593766037661376623766337664376653766637667376683766937670376713767237673376743767537676376773767837679376803768137682376833768437685376863768737688376893769037691376923769337694376953769637697376983769937700377013770237703377043770537706377073770837709377103771137712377133771437715377163771737718377193772037721377223772337724377253772637727377283772937730377313773237733377343773537736377373773837739377403774137742377433774437745377463774737748377493775037751377523775337754377553775637757377583775937760377613776237763377643776537766377673776837769377703777137772377733777437775377763777737778377793778037781377823778337784377853778637787377883778937790377913779237793377943779537796377973779837799378003780137802378033780437805378063780737808378093781037811378123781337814378153781637817378183781937820378213782237823378243782537826378273782837829378303783137832378333783437835378363783737838378393784037841378423784337844378453784637847378483784937850378513785237853378543785537856378573785837859378603786137862378633786437865378663786737868378693787037871378723787337874378753787637877378783787937880378813788237883378843788537886378873788837889378903789137892378933789437895378963789737898378993790037901379023790337904379053790637907379083790937910379113791237913379143791537916379173791837919379203792137922379233792437925379263792737928379293793037931379323793337934379353793637937379383793937940379413794237943379443794537946379473794837949379503795137952379533795437955379563795737958379593796037961379623796337964379653796637967379683796937970379713797237973379743797537976379773797837979379803798137982379833798437985379863798737988379893799037991379923799337994379953799637997379983799938000380013800238003380043800538006380073800838009380103801138012380133801438015380163801738018380193802038021380223802338024380253802638027380283802938030380313803238033380343803538036380373803838039380403804138042380433804438045380463804738048380493805038051380523805338054380553805638057380583805938060380613806238063380643806538066380673806838069380703807138072380733807438075380763807738078380793808038081380823808338084380853808638087380883808938090380913809238093380943809538096380973809838099381003810138102381033810438105381063810738108381093811038111381123811338114381153811638117381183811938120381213812238123381243812538126381273812838129381303813138132381333813438135381363813738138381393814038141381423814338144381453814638147381483814938150381513815238153381543815538156381573815838159381603816138162381633816438165381663816738168381693817038171381723817338174381753817638177381783817938180381813818238183381843818538186381873818838189381903819138192381933819438195381963819738198381993820038201382023820338204382053820638207382083820938210382113821238213382143821538216382173821838219382203822138222382233822438225382263822738228382293823038231382323823338234382353823638237382383823938240382413824238243382443824538246382473824838249382503825138252382533825438255382563825738258382593826038261382623826338264382653826638267382683826938270382713827238273382743827538276382773827838279382803828138282382833828438285382863828738288382893829038291382923829338294382953829638297382983829938300383013830238303383043830538306383073830838309383103831138312383133831438315383163831738318383193832038321383223832338324383253832638327383283832938330383313833238333383343833538336383373833838339383403834138342383433834438345383463834738348383493835038351383523835338354383553835638357383583835938360383613836238363383643836538366383673836838369383703837138372383733837438375383763837738378383793838038381383823838338384383853838638387383883838938390383913839238393383943839538396383973839838399384003840138402384033840438405384063840738408384093841038411384123841338414384153841638417384183841938420384213842238423384243842538426384273842838429384303843138432384333843438435384363843738438384393844038441384423844338444384453844638447384483844938450384513845238453384543845538456384573845838459384603846138462384633846438465384663846738468384693847038471384723847338474384753847638477384783847938480384813848238483384843848538486384873848838489384903849138492384933849438495384963849738498384993850038501385023850338504385053850638507385083850938510385113851238513385143851538516385173851838519385203852138522385233852438525385263852738528385293853038531385323853338534385353853638537385383853938540385413854238543385443854538546385473854838549385503855138552385533855438555385563855738558385593856038561385623856338564385653856638567385683856938570385713857238573385743857538576385773857838579385803858138582385833858438585385863858738588385893859038591385923859338594385953859638597385983859938600386013860238603386043860538606386073860838609386103861138612386133861438615386163861738618386193862038621386223862338624386253862638627386283862938630386313863238633386343863538636386373863838639386403864138642386433864438645386463864738648386493865038651386523865338654386553865638657386583865938660386613866238663386643866538666386673866838669386703867138672386733867438675386763867738678386793868038681386823868338684386853868638687386883868938690386913869238693386943869538696386973869838699387003870138702387033870438705387063870738708387093871038711387123871338714387153871638717387183871938720387213872238723387243872538726387273872838729387303873138732387333873438735387363873738738387393874038741387423874338744387453874638747387483874938750387513875238753387543875538756387573875838759387603876138762387633876438765387663876738768387693877038771387723877338774387753877638777387783877938780387813878238783387843878538786387873878838789387903879138792387933879438795387963879738798387993880038801388023880338804388053880638807388083880938810388113881238813388143881538816388173881838819388203882138822388233882438825388263882738828388293883038831388323883338834388353883638837388383883938840388413884238843388443884538846388473884838849388503885138852388533885438855388563885738858388593886038861388623886338864388653886638867388683886938870388713887238873388743887538876388773887838879388803888138882388833888438885388863888738888388893889038891388923889338894388953889638897388983889938900389013890238903389043890538906389073890838909389103891138912389133891438915389163891738918389193892038921389223892338924389253892638927389283892938930389313893238933389343893538936389373893838939389403894138942389433894438945389463894738948389493895038951389523895338954389553895638957389583895938960389613896238963389643896538966389673896838969389703897138972389733897438975389763897738978389793898038981389823898338984389853898638987389883898938990389913899238993389943899538996389973899838999390003900139002390033900439005390063900739008390093901039011390123901339014390153901639017390183901939020390213902239023390243902539026390273902839029390303903139032390333903439035390363903739038390393904039041390423904339044390453904639047390483904939050390513905239053390543905539056390573905839059390603906139062390633906439065390663906739068390693907039071390723907339074390753907639077390783907939080390813908239083390843908539086390873908839089390903909139092390933909439095390963909739098390993910039101391023910339104391053910639107391083910939110391113911239113391143911539116391173911839119391203912139122391233912439125391263912739128391293913039131391323913339134391353913639137391383913939140391413914239143391443914539146391473914839149391503915139152391533915439155391563915739158391593916039161391623916339164391653916639167391683916939170391713917239173391743917539176391773917839179391803918139182391833918439185391863918739188391893919039191391923919339194391953919639197391983919939200392013920239203392043920539206392073920839209392103921139212392133921439215392163921739218392193922039221392223922339224392253922639227392283922939230392313923239233392343923539236392373923839239392403924139242392433924439245392463924739248392493925039251392523925339254392553925639257392583925939260392613926239263392643926539266392673926839269392703927139272392733927439275392763927739278392793928039281392823928339284392853928639287392883928939290392913929239293392943929539296392973929839299393003930139302393033930439305393063930739308393093931039311393123931339314393153931639317393183931939320393213932239323393243932539326393273932839329393303933139332393333933439335393363933739338393393934039341393423934339344393453934639347393483934939350393513935239353393543935539356393573935839359393603936139362393633936439365393663936739368393693937039371393723937339374393753937639377393783937939380393813938239383393843938539386393873938839389393903939139392393933939439395393963939739398393993940039401394023940339404394053940639407394083940939410394113941239413394143941539416394173941839419394203942139422394233942439425394263942739428394293943039431394323943339434394353943639437394383943939440394413944239443394443944539446394473944839449394503945139452394533945439455394563945739458394593946039461394623946339464394653946639467394683946939470394713947239473394743947539476394773947839479394803948139482394833948439485394863948739488394893949039491394923949339494394953949639497394983949939500395013950239503395043950539506395073950839509395103951139512395133951439515395163951739518395193952039521395223952339524395253952639527395283952939530395313953239533395343953539536395373953839539395403954139542395433954439545395463954739548395493955039551395523955339554395553955639557395583955939560395613956239563395643956539566395673956839569395703957139572395733957439575395763957739578395793958039581395823958339584395853958639587395883958939590395913959239593395943959539596395973959839599396003960139602396033960439605396063960739608396093961039611396123961339614396153961639617396183961939620396213962239623396243962539626396273962839629396303963139632396333963439635396363963739638396393964039641396423964339644396453964639647396483964939650396513965239653396543965539656396573965839659396603966139662396633966439665396663966739668396693967039671396723967339674396753967639677396783967939680396813968239683396843968539686396873968839689396903969139692396933969439695396963969739698396993970039701397023970339704397053970639707397083970939710397113971239713397143971539716397173971839719397203972139722397233972439725397263972739728397293973039731397323973339734397353973639737397383973939740397413974239743397443974539746397473974839749397503975139752397533975439755397563975739758397593976039761397623976339764397653976639767397683976939770397713977239773397743977539776397773977839779397803978139782397833978439785397863978739788397893979039791397923979339794397953979639797397983979939800398013980239803398043980539806398073980839809398103981139812398133981439815398163981739818398193982039821398223982339824398253982639827398283982939830398313983239833398343983539836398373983839839398403984139842398433984439845398463984739848398493985039851398523985339854398553985639857398583985939860398613986239863398643986539866398673986839869398703987139872398733987439875398763987739878398793988039881398823988339884398853988639887398883988939890398913989239893398943989539896398973989839899399003990139902399033990439905399063990739908399093991039911399123991339914399153991639917399183991939920399213992239923399243992539926399273992839929399303993139932399333993439935399363993739938399393994039941399423994339944399453994639947399483994939950399513995239953399543995539956399573995839959399603996139962399633996439965399663996739968399693997039971399723997339974399753997639977399783997939980399813998239983399843998539986399873998839989399903999139992399933999439995399963999739998399994000040001400024000340004400054000640007400084000940010400114001240013400144001540016400174001840019400204002140022400234002440025400264002740028400294003040031400324003340034400354003640037400384003940040400414004240043400444004540046400474004840049400504005140052400534005440055400564005740058400594006040061400624006340064400654006640067400684006940070400714007240073400744007540076400774007840079400804008140082400834008440085400864008740088400894009040091400924009340094400954009640097400984009940100401014010240103401044010540106401074010840109401104011140112401134011440115401164011740118401194012040121401224012340124401254012640127401284012940130401314013240133401344013540136401374013840139401404014140142401434014440145401464014740148401494015040151401524015340154401554015640157401584015940160401614016240163401644016540166401674016840169401704017140172401734017440175401764017740178401794018040181401824018340184401854018640187401884018940190401914019240193401944019540196401974019840199402004020140202402034020440205402064020740208402094021040211402124021340214402154021640217402184021940220402214022240223402244022540226402274022840229402304023140232402334023440235402364023740238402394024040241402424024340244402454024640247402484024940250402514025240253402544025540256402574025840259402604026140262402634026440265402664026740268402694027040271402724027340274402754027640277402784027940280402814028240283402844028540286402874028840289402904029140292402934029440295402964029740298402994030040301403024030340304403054030640307403084030940310403114031240313403144031540316403174031840319403204032140322403234032440325403264032740328403294033040331403324033340334403354033640337403384033940340403414034240343403444034540346403474034840349403504035140352403534035440355403564035740358403594036040361403624036340364403654036640367403684036940370403714037240373403744037540376403774037840379403804038140382403834038440385403864038740388403894039040391403924039340394403954039640397403984039940400404014040240403404044040540406404074040840409404104041140412404134041440415404164041740418404194042040421404224042340424404254042640427404284042940430404314043240433404344043540436404374043840439404404044140442404434044440445404464044740448404494045040451404524045340454404554045640457404584045940460404614046240463404644046540466404674046840469404704047140472404734047440475404764047740478404794048040481404824048340484404854048640487404884048940490404914049240493404944049540496404974049840499405004050140502405034050440505405064050740508405094051040511405124051340514405154051640517405184051940520405214052240523405244052540526405274052840529405304053140532405334053440535405364053740538405394054040541405424054340544405454054640547405484054940550405514055240553405544055540556405574055840559405604056140562405634056440565405664056740568405694057040571405724057340574405754057640577405784057940580405814058240583405844058540586405874058840589405904059140592405934059440595405964059740598405994060040601406024060340604406054060640607406084060940610406114061240613406144061540616406174061840619406204062140622406234062440625406264062740628406294063040631406324063340634406354063640637406384063940640406414064240643406444064540646406474064840649406504065140652406534065440655406564065740658406594066040661406624066340664406654066640667406684066940670406714067240673406744067540676406774067840679406804068140682406834068440685406864068740688406894069040691406924069340694406954069640697406984069940700407014070240703407044070540706407074070840709407104071140712407134071440715407164071740718407194072040721407224072340724407254072640727407284072940730407314073240733407344073540736407374073840739407404074140742407434074440745407464074740748407494075040751407524075340754407554075640757407584075940760407614076240763407644076540766407674076840769407704077140772407734077440775407764077740778407794078040781407824078340784407854078640787407884078940790407914079240793407944079540796407974079840799408004080140802408034080440805408064080740808408094081040811408124081340814408154081640817408184081940820408214082240823408244082540826408274082840829408304083140832408334083440835408364083740838408394084040841408424084340844408454084640847408484084940850408514085240853408544085540856408574085840859408604086140862408634086440865408664086740868408694087040871408724087340874408754087640877408784087940880408814088240883408844088540886408874088840889408904089140892408934089440895408964089740898408994090040901409024090340904409054090640907409084090940910409114091240913409144091540916409174091840919409204092140922409234092440925409264092740928409294093040931409324093340934409354093640937409384093940940409414094240943409444094540946409474094840949409504095140952409534095440955409564095740958409594096040961409624096340964409654096640967409684096940970409714097240973409744097540976409774097840979409804098140982409834098440985409864098740988409894099040991409924099340994409954099640997409984099941000410014100241003410044100541006410074100841009410104101141012410134101441015410164101741018410194102041021410224102341024410254102641027410284102941030410314103241033410344103541036410374103841039410404104141042410434104441045410464104741048410494105041051410524105341054410554105641057410584105941060410614106241063410644106541066410674106841069410704107141072410734107441075410764107741078410794108041081410824108341084410854108641087410884108941090410914109241093410944109541096410974109841099411004110141102411034110441105411064110741108411094111041111411124111341114411154111641117411184111941120411214112241123411244112541126411274112841129411304113141132411334113441135411364113741138411394114041141411424114341144411454114641147411484114941150411514115241153411544115541156411574115841159411604116141162411634116441165411664116741168411694117041171411724117341174411754117641177411784117941180411814118241183411844118541186411874118841189411904119141192411934119441195411964119741198411994120041201412024120341204412054120641207412084120941210412114121241213412144121541216412174121841219412204122141222412234122441225412264122741228412294123041231412324123341234412354123641237412384123941240412414124241243412444124541246412474124841249412504125141252412534125441255412564125741258412594126041261412624126341264412654126641267412684126941270412714127241273412744127541276412774127841279412804128141282412834128441285412864128741288412894129041291412924129341294412954129641297412984129941300413014130241303413044130541306413074130841309413104131141312413134131441315413164131741318413194132041321413224132341324413254132641327413284132941330413314133241333413344133541336413374133841339413404134141342413434134441345413464134741348413494135041351413524135341354413554135641357413584135941360413614136241363413644136541366413674136841369413704137141372413734137441375413764137741378413794138041381413824138341384413854138641387413884138941390413914139241393413944139541396413974139841399414004140141402414034140441405414064140741408414094141041411414124141341414414154141641417414184141941420414214142241423414244142541426414274142841429414304143141432414334143441435414364143741438414394144041441414424144341444414454144641447414484144941450414514145241453414544145541456414574145841459414604146141462414634146441465414664146741468414694147041471414724147341474414754147641477414784147941480414814148241483414844148541486414874148841489414904149141492414934149441495414964149741498414994150041501415024150341504415054150641507415084150941510415114151241513415144151541516415174151841519415204152141522415234152441525415264152741528415294153041531415324153341534415354153641537415384153941540415414154241543415444154541546415474154841549415504155141552415534155441555415564155741558415594156041561415624156341564415654156641567415684156941570415714157241573415744157541576415774157841579415804158141582415834158441585415864158741588415894159041591415924159341594415954159641597415984159941600416014160241603416044160541606416074160841609416104161141612416134161441615416164161741618416194162041621416224162341624416254162641627416284162941630416314163241633416344163541636416374163841639416404164141642416434164441645416464164741648416494165041651416524165341654416554165641657416584165941660416614166241663416644166541666416674166841669416704167141672416734167441675416764167741678416794168041681416824168341684416854168641687416884168941690416914169241693416944169541696416974169841699417004170141702417034170441705417064170741708417094171041711417124171341714417154171641717417184171941720417214172241723417244172541726417274172841729417304173141732417334173441735417364173741738417394174041741417424174341744417454174641747417484174941750417514175241753417544175541756417574175841759417604176141762417634176441765417664176741768417694177041771417724177341774417754177641777417784177941780417814178241783417844178541786417874178841789417904179141792417934179441795417964179741798417994180041801418024180341804418054180641807418084180941810418114181241813418144181541816418174181841819418204182141822418234182441825418264182741828418294183041831418324183341834418354183641837418384183941840418414184241843418444184541846418474184841849418504185141852418534185441855418564185741858418594186041861418624186341864418654186641867418684186941870418714187241873418744187541876418774187841879418804188141882418834188441885418864188741888418894189041891418924189341894418954189641897418984189941900419014190241903419044190541906419074190841909419104191141912419134191441915419164191741918419194192041921419224192341924419254192641927419284192941930419314193241933419344193541936419374193841939419404194141942419434194441945419464194741948419494195041951419524195341954419554195641957419584195941960419614196241963419644196541966419674196841969419704197141972419734197441975419764197741978419794198041981419824198341984419854198641987419884198941990419914199241993419944199541996419974199841999420004200142002420034200442005420064200742008420094201042011420124201342014420154201642017420184201942020420214202242023420244202542026420274202842029420304203142032420334203442035420364203742038420394204042041420424204342044420454204642047420484204942050420514205242053420544205542056420574205842059420604206142062420634206442065420664206742068420694207042071420724207342074420754207642077420784207942080420814208242083420844208542086420874208842089420904209142092420934209442095420964209742098420994210042101421024210342104421054210642107421084210942110421114211242113421144211542116421174211842119421204212142122421234212442125421264212742128421294213042131421324213342134421354213642137421384213942140421414214242143421444214542146421474214842149421504215142152421534215442155421564215742158421594216042161421624216342164421654216642167421684216942170421714217242173421744217542176421774217842179421804218142182421834218442185421864218742188421894219042191421924219342194421954219642197421984219942200422014220242203422044220542206422074220842209422104221142212422134221442215422164221742218422194222042221422224222342224422254222642227422284222942230422314223242233422344223542236422374223842239422404224142242422434224442245422464224742248422494225042251422524225342254422554225642257422584225942260422614226242263422644226542266422674226842269422704227142272422734227442275422764227742278422794228042281422824228342284422854228642287422884228942290422914229242293422944229542296422974229842299423004230142302423034230442305423064230742308423094231042311423124231342314423154231642317423184231942320423214232242323423244232542326423274232842329423304233142332423334233442335423364233742338423394234042341423424234342344423454234642347423484234942350423514235242353423544235542356423574235842359423604236142362423634236442365423664236742368423694237042371423724237342374423754237642377423784237942380423814238242383423844238542386423874238842389423904239142392423934239442395423964239742398423994240042401424024240342404424054240642407424084240942410424114241242413424144241542416424174241842419424204242142422424234242442425424264242742428424294243042431424324243342434424354243642437424384243942440424414244242443424444244542446424474244842449424504245142452424534245442455424564245742458424594246042461424624246342464424654246642467424684246942470424714247242473424744247542476424774247842479424804248142482424834248442485424864248742488424894249042491424924249342494424954249642497424984249942500425014250242503425044250542506425074250842509425104251142512425134251442515425164251742518425194252042521425224252342524425254252642527425284252942530425314253242533425344253542536425374253842539425404254142542425434254442545425464254742548425494255042551425524255342554425554255642557425584255942560425614256242563425644256542566425674256842569425704257142572425734257442575425764257742578425794258042581425824258342584425854258642587425884258942590425914259242593425944259542596425974259842599426004260142602426034260442605426064260742608426094261042611426124261342614426154261642617426184261942620426214262242623426244262542626426274262842629426304263142632426334263442635426364263742638426394264042641426424264342644426454264642647426484264942650426514265242653426544265542656426574265842659426604266142662426634266442665426664266742668426694267042671426724267342674426754267642677426784267942680426814268242683426844268542686426874268842689426904269142692426934269442695426964269742698426994270042701427024270342704427054270642707427084270942710427114271242713427144271542716427174271842719427204272142722427234272442725427264272742728427294273042731427324273342734427354273642737427384273942740427414274242743427444274542746427474274842749427504275142752427534275442755427564275742758427594276042761427624276342764427654276642767427684276942770427714277242773427744277542776427774277842779427804278142782427834278442785427864278742788427894279042791427924279342794427954279642797427984279942800428014280242803428044280542806428074280842809428104281142812428134281442815428164281742818428194282042821428224282342824428254282642827428284282942830428314283242833428344283542836428374283842839428404284142842428434284442845428464284742848428494285042851428524285342854428554285642857428584285942860428614286242863428644286542866428674286842869428704287142872428734287442875428764287742878428794288042881428824288342884428854288642887428884288942890428914289242893428944289542896428974289842899429004290142902429034290442905429064290742908429094291042911429124291342914429154291642917429184291942920429214292242923429244292542926429274292842929429304293142932429334293442935429364293742938429394294042941429424294342944429454294642947429484294942950429514295242953429544295542956429574295842959429604296142962429634296442965429664296742968429694297042971429724297342974429754297642977429784297942980429814298242983429844298542986429874298842989429904299142992429934299442995429964299742998429994300043001430024300343004430054300643007430084300943010430114301243013430144301543016430174301843019430204302143022430234302443025430264302743028430294303043031430324303343034430354303643037430384303943040430414304243043430444304543046430474304843049430504305143052430534305443055430564305743058430594306043061430624306343064430654306643067430684306943070430714307243073430744307543076430774307843079430804308143082430834308443085430864308743088430894309043091430924309343094430954309643097430984309943100431014310243103431044310543106431074310843109431104311143112431134311443115431164311743118431194312043121431224312343124431254312643127431284312943130431314313243133431344313543136431374313843139431404314143142431434314443145431464314743148431494315043151431524315343154431554315643157431584315943160431614316243163431644316543166431674316843169431704317143172431734317443175431764317743178431794318043181431824318343184431854318643187431884318943190431914319243193431944319543196431974319843199432004320143202432034320443205432064320743208432094321043211432124321343214432154321643217432184321943220432214322243223432244322543226432274322843229432304323143232432334323443235432364323743238432394324043241432424324343244432454324643247432484324943250432514325243253432544325543256432574325843259432604326143262432634326443265432664326743268432694327043271432724327343274432754327643277432784327943280432814328243283432844328543286432874328843289432904329143292432934329443295432964329743298432994330043301433024330343304433054330643307433084330943310433114331243313433144331543316433174331843319433204332143322433234332443325433264332743328433294333043331433324333343334433354333643337433384333943340433414334243343433444334543346433474334843349433504335143352433534335443355433564335743358433594336043361433624336343364433654336643367433684336943370433714337243373433744337543376433774337843379433804338143382433834338443385433864338743388433894339043391433924339343394433954339643397433984339943400434014340243403434044340543406434074340843409434104341143412434134341443415434164341743418434194342043421434224342343424434254342643427434284342943430434314343243433434344343543436434374343843439434404344143442434434344443445434464344743448434494345043451434524345343454434554345643457434584345943460434614346243463434644346543466434674346843469434704347143472434734347443475434764347743478434794348043481434824348343484434854348643487434884348943490434914349243493434944349543496434974349843499435004350143502435034350443505435064350743508435094351043511435124351343514435154351643517435184351943520435214352243523435244352543526435274352843529435304353143532435334353443535435364353743538435394354043541435424354343544435454354643547435484354943550435514355243553435544355543556435574355843559435604356143562435634356443565435664356743568435694357043571435724357343574435754357643577435784357943580435814358243583435844358543586435874358843589435904359143592435934359443595435964359743598435994360043601436024360343604436054360643607436084360943610436114361243613436144361543616436174361843619436204362143622436234362443625436264362743628436294363043631436324363343634436354363643637436384363943640436414364243643436444364543646436474364843649436504365143652436534365443655436564365743658436594366043661436624366343664436654366643667436684366943670436714367243673436744367543676436774367843679436804368143682436834368443685436864368743688436894369043691436924369343694436954369643697436984369943700437014370243703437044370543706437074370843709437104371143712437134371443715437164371743718437194372043721437224372343724437254372643727437284372943730437314373243733437344373543736437374373843739437404374143742437434374443745437464374743748437494375043751437524375343754437554375643757437584375943760437614376243763437644376543766437674376843769437704377143772437734377443775437764377743778437794378043781437824378343784437854378643787437884378943790437914379243793437944379543796437974379843799438004380143802438034380443805438064380743808438094381043811438124381343814438154381643817438184381943820438214382243823438244382543826438274382843829438304383143832438334383443835438364383743838438394384043841438424384343844438454384643847438484384943850438514385243853438544385543856438574385843859438604386143862438634386443865438664386743868438694387043871438724387343874438754387643877438784387943880438814388243883438844388543886438874388843889438904389143892438934389443895438964389743898438994390043901439024390343904439054390643907439084390943910439114391243913439144391543916439174391843919439204392143922439234392443925439264392743928439294393043931439324393343934439354393643937439384393943940439414394243943439444394543946439474394843949439504395143952439534395443955439564395743958439594396043961439624396343964439654396643967439684396943970439714397243973439744397543976439774397843979439804398143982439834398443985439864398743988439894399043991439924399343994439954399643997439984399944000440014400244003440044400544006440074400844009440104401144012440134401444015440164401744018440194402044021440224402344024440254402644027440284402944030440314403244033440344403544036440374403844039440404404144042440434404444045440464404744048440494405044051440524405344054440554405644057440584405944060440614406244063440644406544066440674406844069440704407144072440734407444075440764407744078440794408044081440824408344084440854408644087440884408944090440914409244093440944409544096440974409844099441004410144102441034410444105441064410744108441094411044111441124411344114441154411644117441184411944120441214412244123441244412544126441274412844129441304413144132441334413444135441364413744138441394414044141441424414344144441454414644147441484414944150441514415244153441544415544156441574415844159441604416144162441634416444165441664416744168441694417044171441724417344174441754417644177441784417944180441814418244183441844418544186441874418844189441904419144192441934419444195441964419744198441994420044201442024420344204442054420644207442084420944210442114421244213442144421544216442174421844219442204422144222442234422444225442264422744228442294423044231442324423344234442354423644237442384423944240442414424244243442444424544246442474424844249442504425144252442534425444255442564425744258442594426044261442624426344264442654426644267442684426944270442714427244273442744427544276442774427844279442804428144282442834428444285442864428744288442894429044291442924429344294442954429644297442984429944300443014430244303443044430544306443074430844309443104431144312443134431444315443164431744318443194432044321443224432344324443254432644327443284432944330443314433244333443344433544336443374433844339443404434144342443434434444345443464434744348443494435044351443524435344354443554435644357443584435944360443614436244363443644436544366443674436844369443704437144372443734437444375443764437744378443794438044381443824438344384443854438644387443884438944390443914439244393443944439544396443974439844399444004440144402444034440444405444064440744408444094441044411444124441344414444154441644417444184441944420444214442244423444244442544426444274442844429444304443144432444334443444435444364443744438444394444044441444424444344444444454444644447444484444944450444514445244453444544445544456444574445844459444604446144462444634446444465444664446744468444694447044471444724447344474444754447644477444784447944480444814448244483444844448544486444874448844489444904449144492444934449444495444964449744498444994450044501445024450344504445054450644507445084450944510445114451244513445144451544516445174451844519445204452144522445234452444525445264452744528445294453044531445324453344534445354453644537445384453944540445414454244543445444454544546445474454844549445504455144552445534455444555445564455744558445594456044561445624456344564445654456644567445684456944570445714457244573445744457544576445774457844579445804458144582445834458444585445864458744588445894459044591445924459344594445954459644597445984459944600446014460244603446044460544606446074460844609446104461144612446134461444615446164461744618446194462044621446224462344624446254462644627446284462944630446314463244633446344463544636446374463844639446404464144642446434464444645446464464744648446494465044651446524465344654446554465644657446584465944660446614466244663446644466544666446674466844669446704467144672446734467444675446764467744678446794468044681446824468344684446854468644687446884468944690446914469244693446944469544696446974469844699447004470144702447034470444705447064470744708447094471044711447124471344714447154471644717447184471944720447214472244723447244472544726447274472844729447304473144732447334473444735447364473744738447394474044741447424474344744447454474644747447484474944750447514475244753447544475544756447574475844759447604476144762447634476444765447664476744768447694477044771447724477344774447754477644777447784477944780447814478244783447844478544786447874478844789447904479144792447934479444795447964479744798447994480044801448024480344804448054480644807448084480944810448114481244813448144481544816448174481844819448204482144822448234482444825448264482744828448294483044831448324483344834448354483644837448384483944840448414484244843448444484544846448474484844849448504485144852448534485444855448564485744858448594486044861448624486344864448654486644867448684486944870448714487244873448744487544876448774487844879448804488144882448834488444885448864488744888448894489044891448924489344894448954489644897448984489944900449014490244903449044490544906449074490844909449104491144912449134491444915449164491744918449194492044921449224492344924449254492644927449284492944930449314493244933449344493544936449374493844939449404494144942449434494444945449464494744948449494495044951449524495344954449554495644957449584495944960449614496244963449644496544966449674496844969449704497144972449734497444975449764497744978449794498044981449824498344984449854498644987449884498944990449914499244993449944499544996449974499844999450004500145002450034500445005450064500745008450094501045011450124501345014450154501645017450184501945020450214502245023450244502545026450274502845029450304503145032450334503445035450364503745038450394504045041450424504345044450454504645047450484504945050450514505245053450544505545056450574505845059450604506145062450634506445065450664506745068450694507045071450724507345074450754507645077450784507945080450814508245083450844508545086450874508845089450904509145092450934509445095450964509745098450994510045101451024510345104451054510645107451084510945110451114511245113451144511545116451174511845119451204512145122451234512445125451264512745128451294513045131451324513345134451354513645137451384513945140451414514245143451444514545146451474514845149451504515145152451534515445155451564515745158451594516045161451624516345164451654516645167451684516945170451714517245173451744517545176451774517845179451804518145182451834518445185451864518745188451894519045191451924519345194451954519645197451984519945200452014520245203452044520545206452074520845209452104521145212452134521445215452164521745218452194522045221452224522345224452254522645227452284522945230452314523245233452344523545236452374523845239452404524145242452434524445245452464524745248452494525045251452524525345254452554525645257452584525945260452614526245263452644526545266452674526845269452704527145272452734527445275452764527745278452794528045281452824528345284452854528645287452884528945290452914529245293452944529545296452974529845299453004530145302453034530445305453064530745308453094531045311453124531345314453154531645317453184531945320453214532245323453244532545326453274532845329453304533145332453334533445335453364533745338453394534045341453424534345344453454534645347453484534945350453514535245353453544535545356453574535845359453604536145362453634536445365453664536745368453694537045371453724537345374453754537645377453784537945380453814538245383453844538545386453874538845389453904539145392453934539445395453964539745398453994540045401454024540345404454054540645407454084540945410454114541245413454144541545416454174541845419454204542145422454234542445425454264542745428454294543045431454324543345434454354543645437454384543945440454414544245443454444544545446454474544845449454504545145452454534545445455454564545745458454594546045461454624546345464454654546645467454684546945470454714547245473454744547545476454774547845479454804548145482454834548445485454864548745488454894549045491454924549345494454954549645497454984549945500455014550245503455044550545506455074550845509455104551145512455134551445515455164551745518455194552045521455224552345524455254552645527455284552945530455314553245533455344553545536455374553845539455404554145542455434554445545455464554745548455494555045551455524555345554455554555645557455584555945560455614556245563455644556545566455674556845569455704557145572455734557445575455764557745578455794558045581455824558345584455854558645587455884558945590455914559245593455944559545596455974559845599456004560145602456034560445605456064560745608456094561045611456124561345614456154561645617456184561945620456214562245623456244562545626456274562845629456304563145632456334563445635456364563745638456394564045641456424564345644456454564645647456484564945650456514565245653456544565545656456574565845659456604566145662456634566445665456664566745668456694567045671456724567345674456754567645677456784567945680456814568245683456844568545686456874568845689456904569145692456934569445695456964569745698456994570045701457024570345704457054570645707457084570945710457114571245713457144571545716457174571845719457204572145722457234572445725457264572745728457294573045731457324573345734457354573645737457384573945740457414574245743457444574545746457474574845749457504575145752457534575445755457564575745758457594576045761457624576345764457654576645767457684576945770457714577245773457744577545776457774577845779457804578145782457834578445785457864578745788457894579045791457924579345794457954579645797457984579945800458014580245803458044580545806458074580845809458104581145812458134581445815458164581745818458194582045821458224582345824458254582645827458284582945830458314583245833458344583545836458374583845839458404584145842458434584445845458464584745848458494585045851458524585345854458554585645857458584585945860458614586245863458644586545866458674586845869458704587145872458734587445875458764587745878458794588045881458824588345884458854588645887458884588945890458914589245893458944589545896458974589845899459004590145902459034590445905459064590745908459094591045911459124591345914459154591645917459184591945920459214592245923459244592545926459274592845929459304593145932459334593445935459364593745938459394594045941459424594345944459454594645947459484594945950459514595245953459544595545956459574595845959459604596145962459634596445965459664596745968459694597045971459724597345974459754597645977459784597945980459814598245983459844598545986459874598845989459904599145992459934599445995459964599745998459994600046001460024600346004460054600646007460084600946010460114601246013460144601546016460174601846019460204602146022460234602446025460264602746028460294603046031460324603346034460354603646037460384603946040460414604246043460444604546046460474604846049460504605146052460534605446055460564605746058460594606046061460624606346064460654606646067460684606946070460714607246073460744607546076460774607846079460804608146082460834608446085460864608746088460894609046091460924609346094460954609646097460984609946100461014610246103461044610546106461074610846109461104611146112461134611446115461164611746118461194612046121461224612346124461254612646127461284612946130461314613246133461344613546136461374613846139461404614146142461434614446145461464614746148461494615046151461524615346154461554615646157461584615946160461614616246163461644616546166461674616846169461704617146172461734617446175461764617746178461794618046181461824618346184461854618646187461884618946190461914619246193461944619546196461974619846199462004620146202462034620446205462064620746208462094621046211462124621346214462154621646217462184621946220462214622246223462244622546226462274622846229462304623146232462334623446235462364623746238462394624046241462424624346244462454624646247462484624946250462514625246253462544625546256462574625846259462604626146262462634626446265462664626746268462694627046271462724627346274462754627646277462784627946280462814628246283462844628546286462874628846289462904629146292462934629446295462964629746298462994630046301463024630346304463054630646307463084630946310463114631246313463144631546316463174631846319463204632146322463234632446325463264632746328463294633046331463324633346334463354633646337463384633946340463414634246343463444634546346463474634846349463504635146352463534635446355463564635746358463594636046361463624636346364463654636646367463684636946370463714637246373463744637546376463774637846379463804638146382463834638446385463864638746388463894639046391463924639346394463954639646397463984639946400464014640246403464044640546406464074640846409464104641146412464134641446415464164641746418464194642046421464224642346424464254642646427464284642946430464314643246433464344643546436464374643846439464404644146442464434644446445464464644746448464494645046451464524645346454464554645646457464584645946460464614646246463464644646546466464674646846469464704647146472464734647446475464764647746478464794648046481464824648346484464854648646487464884648946490464914649246493464944649546496464974649846499465004650146502465034650446505465064650746508465094651046511465124651346514465154651646517465184651946520465214652246523465244652546526465274652846529465304653146532465334653446535465364653746538465394654046541465424654346544465454654646547465484654946550465514655246553465544655546556465574655846559465604656146562465634656446565465664656746568465694657046571465724657346574465754657646577465784657946580465814658246583465844658546586465874658846589465904659146592465934659446595465964659746598465994660046601466024660346604466054660646607466084660946610466114661246613466144661546616466174661846619466204662146622466234662446625466264662746628466294663046631466324663346634466354663646637466384663946640466414664246643466444664546646466474664846649466504665146652466534665446655466564665746658466594666046661466624666346664466654666646667466684666946670466714667246673466744667546676466774667846679466804668146682466834668446685466864668746688466894669046691466924669346694466954669646697466984669946700467014670246703467044670546706467074670846709467104671146712467134671446715467164671746718467194672046721467224672346724467254672646727467284672946730467314673246733467344673546736467374673846739467404674146742467434674446745467464674746748467494675046751467524675346754467554675646757467584675946760467614676246763467644676546766467674676846769467704677146772467734677446775467764677746778467794678046781467824678346784467854678646787467884678946790467914679246793467944679546796467974679846799468004680146802468034680446805468064680746808468094681046811468124681346814468154681646817468184681946820468214682246823468244682546826468274682846829468304683146832468334683446835468364683746838468394684046841468424684346844468454684646847468484684946850468514685246853468544685546856468574685846859468604686146862468634686446865468664686746868468694687046871468724687346874468754687646877468784687946880468814688246883468844688546886468874688846889468904689146892468934689446895468964689746898468994690046901469024690346904469054690646907469084690946910469114691246913469144691546916469174691846919469204692146922469234692446925469264692746928469294693046931469324693346934469354693646937469384693946940469414694246943469444694546946469474694846949469504695146952469534695446955469564695746958469594696046961469624696346964469654696646967469684696946970469714697246973469744697546976469774697846979469804698146982469834698446985469864698746988469894699046991469924699346994469954699646997469984699947000470014700247003470044700547006470074700847009470104701147012470134701447015470164701747018470194702047021470224702347024470254702647027470284702947030470314703247033470344703547036470374703847039470404704147042470434704447045470464704747048470494705047051470524705347054470554705647057470584705947060470614706247063470644706547066470674706847069470704707147072470734707447075470764707747078470794708047081470824708347084470854708647087470884708947090470914709247093470944709547096470974709847099471004710147102471034710447105471064710747108471094711047111471124711347114471154711647117471184711947120471214712247123471244712547126471274712847129471304713147132471334713447135471364713747138471394714047141471424714347144471454714647147471484714947150471514715247153471544715547156471574715847159471604716147162471634716447165471664716747168471694717047171471724717347174471754717647177471784717947180471814718247183471844718547186471874718847189471904719147192471934719447195471964719747198471994720047201472024720347204472054720647207472084720947210472114721247213472144721547216472174721847219472204722147222472234722447225472264722747228472294723047231472324723347234472354723647237472384723947240472414724247243472444724547246472474724847249472504725147252472534725447255472564725747258472594726047261472624726347264472654726647267472684726947270472714727247273472744727547276472774727847279472804728147282472834728447285472864728747288472894729047291472924729347294472954729647297472984729947300473014730247303473044730547306473074730847309473104731147312473134731447315473164731747318473194732047321473224732347324473254732647327473284732947330473314733247333473344733547336473374733847339473404734147342473434734447345473464734747348473494735047351473524735347354473554735647357473584735947360473614736247363473644736547366473674736847369473704737147372473734737447375473764737747378473794738047381473824738347384473854738647387473884738947390473914739247393473944739547396473974739847399474004740147402474034740447405474064740747408474094741047411474124741347414474154741647417474184741947420474214742247423474244742547426474274742847429474304743147432474334743447435474364743747438474394744047441474424744347444474454744647447474484744947450474514745247453474544745547456474574745847459474604746147462474634746447465474664746747468474694747047471474724747347474474754747647477474784747947480474814748247483474844748547486474874748847489474904749147492474934749447495474964749747498474994750047501475024750347504475054750647507475084750947510475114751247513475144751547516475174751847519475204752147522475234752447525475264752747528475294753047531475324753347534475354753647537475384753947540475414754247543475444754547546475474754847549475504755147552475534755447555475564755747558475594756047561475624756347564475654756647567475684756947570475714757247573475744757547576475774757847579475804758147582475834758447585475864758747588475894759047591475924759347594475954759647597475984759947600476014760247603476044760547606476074760847609476104761147612476134761447615476164761747618476194762047621476224762347624476254762647627476284762947630476314763247633476344763547636476374763847639476404764147642476434764447645476464764747648476494765047651476524765347654476554765647657476584765947660476614766247663476644766547666476674766847669476704767147672476734767447675476764767747678476794768047681476824768347684476854768647687476884768947690476914769247693476944769547696476974769847699477004770147702477034770447705477064770747708477094771047711477124771347714477154771647717477184771947720477214772247723477244772547726477274772847729477304773147732477334773447735477364773747738477394774047741477424774347744477454774647747477484774947750477514775247753477544775547756477574775847759477604776147762477634776447765477664776747768477694777047771477724777347774477754777647777477784777947780477814778247783477844778547786477874778847789477904779147792477934779447795477964779747798477994780047801478024780347804478054780647807478084780947810478114781247813478144781547816478174781847819478204782147822478234782447825478264782747828478294783047831478324783347834478354783647837478384783947840478414784247843478444784547846478474784847849478504785147852478534785447855478564785747858478594786047861478624786347864478654786647867478684786947870478714787247873478744787547876478774787847879478804788147882478834788447885478864788747888478894789047891478924789347894478954789647897478984789947900479014790247903479044790547906479074790847909479104791147912479134791447915479164791747918479194792047921479224792347924479254792647927479284792947930479314793247933479344793547936479374793847939479404794147942479434794447945479464794747948479494795047951479524795347954479554795647957479584795947960479614796247963479644796547966479674796847969479704797147972479734797447975479764797747978479794798047981479824798347984479854798647987479884798947990479914799247993479944799547996479974799847999480004800148002480034800448005480064800748008480094801048011480124801348014480154801648017480184801948020480214802248023480244802548026480274802848029480304803148032480334803448035480364803748038480394804048041480424804348044480454804648047480484804948050480514805248053480544805548056480574805848059480604806148062480634806448065480664806748068480694807048071480724807348074480754807648077480784807948080480814808248083480844808548086480874808848089480904809148092480934809448095480964809748098480994810048101481024810348104481054810648107481084810948110481114811248113481144811548116481174811848119481204812148122481234812448125481264812748128481294813048131481324813348134481354813648137481384813948140481414814248143481444814548146481474814848149481504815148152481534815448155481564815748158481594816048161481624816348164481654816648167481684816948170481714817248173481744817548176481774817848179481804818148182481834818448185481864818748188481894819048191481924819348194481954819648197481984819948200482014820248203482044820548206482074820848209482104821148212482134821448215482164821748218482194822048221482224822348224482254822648227482284822948230482314823248233482344823548236482374823848239482404824148242482434824448245482464824748248482494825048251482524825348254482554825648257482584825948260482614826248263482644826548266482674826848269482704827148272482734827448275482764827748278482794828048281482824828348284482854828648287482884828948290482914829248293482944829548296482974829848299483004830148302483034830448305483064830748308483094831048311483124831348314483154831648317483184831948320483214832248323483244832548326483274832848329483304833148332483334833448335483364833748338483394834048341483424834348344483454834648347483484834948350483514835248353483544835548356483574835848359483604836148362483634836448365483664836748368483694837048371483724837348374483754837648377483784837948380483814838248383483844838548386483874838848389483904839148392483934839448395483964839748398483994840048401484024840348404484054840648407484084840948410484114841248413484144841548416484174841848419484204842148422484234842448425484264842748428484294843048431484324843348434484354843648437484384843948440484414844248443484444844548446484474844848449484504845148452484534845448455484564845748458484594846048461484624846348464484654846648467484684846948470484714847248473484744847548476484774847848479484804848148482484834848448485484864848748488484894849048491484924849348494484954849648497484984849948500485014850248503485044850548506485074850848509485104851148512485134851448515485164851748518485194852048521485224852348524485254852648527485284852948530485314853248533485344853548536485374853848539485404854148542485434854448545485464854748548485494855048551485524855348554485554855648557485584855948560485614856248563485644856548566485674856848569485704857148572485734857448575485764857748578485794858048581485824858348584485854858648587485884858948590485914859248593485944859548596485974859848599486004860148602486034860448605486064860748608486094861048611486124861348614486154861648617486184861948620486214862248623486244862548626486274862848629486304863148632486334863448635486364863748638486394864048641486424864348644486454864648647486484864948650486514865248653486544865548656486574865848659486604866148662486634866448665486664866748668486694867048671486724867348674486754867648677486784867948680486814868248683486844868548686486874868848689486904869148692486934869448695486964869748698486994870048701487024870348704487054870648707487084870948710487114871248713487144871548716487174871848719487204872148722487234872448725487264872748728487294873048731487324873348734487354873648737487384873948740487414874248743487444874548746487474874848749487504875148752487534875448755487564875748758487594876048761487624876348764487654876648767487684876948770487714877248773487744877548776487774877848779487804878148782487834878448785487864878748788487894879048791487924879348794487954879648797487984879948800488014880248803488044880548806488074880848809488104881148812488134881448815488164881748818488194882048821488224882348824488254882648827488284882948830488314883248833488344883548836488374883848839488404884148842488434884448845488464884748848488494885048851488524885348854488554885648857488584885948860488614886248863488644886548866488674886848869488704887148872488734887448875488764887748878488794888048881488824888348884488854888648887488884888948890488914889248893488944889548896488974889848899489004890148902489034890448905489064890748908489094891048911489124891348914489154891648917489184891948920489214892248923489244892548926489274892848929489304893148932489334893448935489364893748938489394894048941489424894348944489454894648947489484894948950489514895248953489544895548956489574895848959489604896148962489634896448965489664896748968489694897048971489724897348974489754897648977489784897948980489814898248983489844898548986489874898848989489904899148992489934899448995489964899748998489994900049001490024900349004490054900649007490084900949010490114901249013490144901549016490174901849019490204902149022490234902449025490264902749028490294903049031490324903349034490354903649037490384903949040490414904249043490444904549046490474904849049490504905149052490534905449055490564905749058490594906049061490624906349064490654906649067490684906949070490714907249073490744907549076490774907849079490804908149082490834908449085490864908749088490894909049091490924909349094490954909649097490984909949100491014910249103491044910549106491074910849109491104911149112491134911449115491164911749118491194912049121491224912349124491254912649127491284912949130491314913249133491344913549136491374913849139491404914149142491434914449145491464914749148491494915049151491524915349154491554915649157491584915949160491614916249163491644916549166491674916849169491704917149172491734917449175491764917749178491794918049181491824918349184491854918649187491884918949190491914919249193491944919549196491974919849199492004920149202492034920449205492064920749208492094921049211492124921349214492154921649217492184921949220492214922249223492244922549226492274922849229492304923149232492334923449235492364923749238492394924049241492424924349244492454924649247492484924949250492514925249253492544925549256492574925849259492604926149262492634926449265492664926749268492694927049271492724927349274492754927649277492784927949280492814928249283492844928549286492874928849289492904929149292492934929449295492964929749298492994930049301493024930349304493054930649307493084930949310493114931249313493144931549316493174931849319493204932149322493234932449325493264932749328493294933049331493324933349334493354933649337493384933949340493414934249343493444934549346493474934849349493504935149352493534935449355493564935749358493594936049361493624936349364493654936649367493684936949370493714937249373493744937549376493774937849379493804938149382493834938449385493864938749388493894939049391493924939349394493954939649397493984939949400494014940249403494044940549406494074940849409494104941149412494134941449415494164941749418494194942049421494224942349424494254942649427494284942949430494314943249433494344943549436494374943849439494404944149442494434944449445494464944749448494494945049451494524945349454494554945649457494584945949460494614946249463494644946549466494674946849469494704947149472494734947449475494764947749478494794948049481494824948349484494854948649487494884948949490494914949249493494944949549496494974949849499495004950149502495034950449505495064950749508495094951049511495124951349514495154951649517495184951949520495214952249523495244952549526495274952849529495304953149532495334953449535495364953749538495394954049541495424954349544495454954649547495484954949550495514955249553495544955549556495574955849559495604956149562495634956449565495664956749568495694957049571495724957349574495754957649577495784957949580495814958249583495844958549586495874958849589495904959149592495934959449595495964959749598495994960049601496024960349604496054960649607496084960949610496114961249613496144961549616496174961849619496204962149622496234962449625496264962749628496294963049631496324963349634496354963649637496384963949640496414964249643496444964549646496474964849649496504965149652496534965449655496564965749658496594966049661496624966349664496654966649667496684966949670496714967249673496744967549676496774967849679496804968149682496834968449685496864968749688496894969049691496924969349694496954969649697496984969949700497014970249703497044970549706497074970849709497104971149712497134971449715497164971749718497194972049721497224972349724497254972649727497284972949730497314973249733497344973549736497374973849739497404974149742497434974449745497464974749748497494975049751497524975349754497554975649757497584975949760497614976249763497644976549766497674976849769497704977149772497734977449775497764977749778497794978049781497824978349784497854978649787497884978949790497914979249793497944979549796497974979849799498004980149802498034980449805498064980749808498094981049811498124981349814498154981649817498184981949820498214982249823498244982549826498274982849829498304983149832498334983449835498364983749838498394984049841498424984349844498454984649847498484984949850498514985249853498544985549856498574985849859498604986149862498634986449865498664986749868498694987049871498724987349874498754987649877498784987949880498814988249883498844988549886498874988849889498904989149892498934989449895498964989749898498994990049901499024990349904499054990649907499084990949910499114991249913499144991549916499174991849919499204992149922499234992449925499264992749928499294993049931499324993349934499354993649937499384993949940499414994249943499444994549946499474994849949499504995149952499534995449955499564995749958499594996049961499624996349964499654996649967499684996949970499714997249973499744997549976499774997849979499804998149982499834998449985499864998749988499894999049991499924999349994499954999649997499984999950000500015000250003500045000550006500075000850009500105001150012500135001450015500165001750018500195002050021500225002350024500255002650027500285002950030500315003250033500345003550036500375003850039500405004150042500435004450045500465004750048500495005050051500525005350054500555005650057500585005950060500615006250063500645006550066500675006850069500705007150072500735007450075500765007750078500795008050081500825008350084500855008650087500885008950090500915009250093500945009550096500975009850099501005010150102501035010450105501065010750108501095011050111501125011350114501155011650117501185011950120501215012250123501245012550126501275012850129501305013150132501335013450135501365013750138501395014050141501425014350144501455014650147501485014950150501515015250153501545015550156501575015850159501605016150162501635016450165501665016750168501695017050171501725017350174501755017650177501785017950180501815018250183501845018550186501875018850189501905019150192501935019450195501965019750198501995020050201502025020350204502055020650207502085020950210502115021250213502145021550216502175021850219502205022150222502235022450225502265022750228502295023050231502325023350234502355023650237502385023950240502415024250243502445024550246502475024850249502505025150252502535025450255502565025750258502595026050261502625026350264502655026650267502685026950270502715027250273502745027550276502775027850279502805028150282502835028450285502865028750288502895029050291502925029350294502955029650297502985029950300503015030250303503045030550306503075030850309503105031150312503135031450315503165031750318503195032050321503225032350324503255032650327503285032950330503315033250333503345033550336503375033850339503405034150342503435034450345503465034750348503495035050351503525035350354503555035650357503585035950360503615036250363503645036550366503675036850369503705037150372503735037450375503765037750378503795038050381503825038350384503855038650387503885038950390503915039250393503945039550396503975039850399504005040150402504035040450405504065040750408504095041050411504125041350414504155041650417504185041950420504215042250423504245042550426504275042850429504305043150432504335043450435504365043750438504395044050441504425044350444504455044650447504485044950450504515045250453504545045550456504575045850459504605046150462504635046450465504665046750468504695047050471504725047350474504755047650477504785047950480504815048250483504845048550486504875048850489504905049150492504935049450495504965049750498504995050050501505025050350504505055050650507505085050950510505115051250513505145051550516505175051850519505205052150522505235052450525505265052750528505295053050531505325053350534505355053650537505385053950540505415054250543505445054550546505475054850549505505055150552505535055450555505565055750558505595056050561505625056350564505655056650567505685056950570505715057250573505745057550576505775057850579505805058150582505835058450585505865058750588505895059050591505925059350594505955059650597505985059950600506015060250603506045060550606506075060850609506105061150612506135061450615506165061750618506195062050621506225062350624506255062650627506285062950630506315063250633506345063550636506375063850639506405064150642506435064450645506465064750648506495065050651506525065350654506555065650657506585065950660506615066250663506645066550666506675066850669506705067150672506735067450675506765067750678506795068050681506825068350684506855068650687506885068950690506915069250693506945069550696506975069850699507005070150702507035070450705507065070750708507095071050711507125071350714507155071650717507185071950720507215072250723507245072550726507275072850729507305073150732507335073450735507365073750738507395074050741507425074350744507455074650747507485074950750507515075250753507545075550756507575075850759507605076150762507635076450765507665076750768507695077050771507725077350774507755077650777507785077950780507815078250783507845078550786507875078850789507905079150792507935079450795507965079750798507995080050801508025080350804508055080650807508085080950810508115081250813508145081550816508175081850819508205082150822508235082450825508265082750828508295083050831508325083350834508355083650837508385083950840508415084250843508445084550846508475084850849508505085150852508535085450855508565085750858508595086050861508625086350864508655086650867508685086950870508715087250873508745087550876508775087850879508805088150882508835088450885508865088750888508895089050891508925089350894508955089650897508985089950900509015090250903509045090550906509075090850909509105091150912509135091450915509165091750918509195092050921509225092350924509255092650927509285092950930509315093250933509345093550936509375093850939509405094150942509435094450945509465094750948509495095050951509525095350954509555095650957509585095950960509615096250963509645096550966509675096850969509705097150972509735097450975509765097750978509795098050981509825098350984509855098650987509885098950990509915099250993509945099550996509975099850999510005100151002510035100451005510065100751008510095101051011510125101351014510155101651017510185101951020510215102251023510245102551026510275102851029510305103151032510335103451035510365103751038510395104051041510425104351044510455104651047510485104951050510515105251053510545105551056510575105851059510605106151062510635106451065510665106751068510695107051071510725107351074510755107651077510785107951080510815108251083510845108551086510875108851089510905109151092510935109451095510965109751098510995110051101511025110351104511055110651107511085110951110511115111251113511145111551116511175111851119511205112151122511235112451125511265112751128511295113051131511325113351134511355113651137511385113951140511415114251143511445114551146511475114851149511505115151152511535115451155511565115751158511595116051161511625116351164511655116651167511685116951170511715117251173511745117551176511775117851179511805118151182511835118451185511865118751188511895119051191511925119351194511955119651197511985119951200512015120251203512045120551206512075120851209512105121151212512135121451215512165121751218512195122051221512225122351224512255122651227512285122951230512315123251233512345123551236512375123851239512405124151242512435124451245512465124751248512495125051251512525125351254512555125651257512585125951260512615126251263512645126551266512675126851269512705127151272512735127451275512765127751278512795128051281512825128351284512855128651287512885128951290512915129251293512945129551296512975129851299513005130151302513035130451305513065130751308513095131051311513125131351314513155131651317513185131951320513215132251323513245132551326513275132851329513305133151332513335133451335513365133751338513395134051341513425134351344513455134651347513485134951350513515135251353513545135551356513575135851359513605136151362513635136451365513665136751368513695137051371513725137351374513755137651377513785137951380513815138251383513845138551386513875138851389513905139151392513935139451395513965139751398513995140051401514025140351404514055140651407514085140951410514115141251413514145141551416514175141851419514205142151422514235142451425514265142751428514295143051431514325143351434514355143651437514385143951440514415144251443514445144551446514475144851449514505145151452514535145451455514565145751458514595146051461514625146351464514655146651467514685146951470514715147251473514745147551476514775147851479514805148151482514835148451485514865148751488514895149051491514925149351494514955149651497514985149951500515015150251503515045150551506515075150851509515105151151512515135151451515515165151751518515195152051521515225152351524515255152651527515285152951530515315153251533515345153551536515375153851539515405154151542515435154451545515465154751548515495155051551515525155351554515555155651557515585155951560515615156251563515645156551566515675156851569515705157151572515735157451575515765157751578515795158051581515825158351584515855158651587515885158951590515915159251593515945159551596515975159851599516005160151602516035160451605516065160751608516095161051611516125161351614516155161651617516185161951620516215162251623516245162551626516275162851629516305163151632516335163451635516365163751638516395164051641516425164351644516455164651647516485164951650516515165251653516545165551656516575165851659516605166151662516635166451665516665166751668516695167051671516725167351674516755167651677516785167951680516815168251683516845168551686516875168851689516905169151692516935169451695516965169751698516995170051701517025170351704517055170651707517085170951710517115171251713517145171551716517175171851719517205172151722517235172451725517265172751728517295173051731517325173351734517355173651737517385173951740517415174251743517445174551746517475174851749517505175151752517535175451755517565175751758517595176051761517625176351764517655176651767517685176951770517715177251773517745177551776517775177851779517805178151782517835178451785517865178751788517895179051791517925179351794517955179651797517985179951800518015180251803518045180551806518075180851809518105181151812518135181451815518165181751818518195182051821518225182351824518255182651827518285182951830518315183251833518345183551836518375183851839518405184151842518435184451845518465184751848518495185051851518525185351854518555185651857518585185951860518615186251863518645186551866518675186851869518705187151872518735187451875518765187751878518795188051881518825188351884518855188651887518885188951890518915189251893518945189551896518975189851899519005190151902519035190451905519065190751908519095191051911519125191351914519155191651917519185191951920519215192251923519245192551926519275192851929519305193151932519335193451935519365193751938519395194051941519425194351944519455194651947519485194951950519515195251953519545195551956519575195851959519605196151962519635196451965519665196751968519695197051971519725197351974519755197651977519785197951980519815198251983519845198551986519875198851989519905199151992519935199451995519965199751998519995200052001520025200352004520055200652007520085200952010520115201252013520145201552016520175201852019520205202152022520235202452025520265202752028520295203052031520325203352034520355203652037520385203952040520415204252043520445204552046520475204852049520505205152052520535205452055520565205752058520595206052061520625206352064520655206652067520685206952070520715207252073520745207552076520775207852079520805208152082520835208452085520865208752088520895209052091520925209352094520955209652097520985209952100521015210252103521045210552106521075210852109521105211152112521135211452115521165211752118521195212052121521225212352124521255212652127521285212952130521315213252133521345213552136521375213852139521405214152142521435214452145521465214752148521495215052151521525215352154521555215652157521585215952160521615216252163521645216552166521675216852169521705217152172521735217452175521765217752178521795218052181521825218352184521855218652187521885218952190521915219252193521945219552196521975219852199522005220152202522035220452205522065220752208522095221052211522125221352214522155221652217522185221952220522215222252223522245222552226522275222852229522305223152232522335223452235522365223752238522395224052241522425224352244522455224652247522485224952250522515225252253522545225552256522575225852259522605226152262522635226452265522665226752268522695227052271522725227352274522755227652277522785227952280522815228252283522845228552286522875228852289522905229152292522935229452295522965229752298522995230052301523025230352304523055230652307523085230952310523115231252313523145231552316523175231852319523205232152322523235232452325523265232752328523295233052331523325233352334523355233652337523385233952340523415234252343523445234552346523475234852349523505235152352523535235452355523565235752358523595236052361523625236352364523655236652367523685236952370523715237252373523745237552376523775237852379523805238152382523835238452385523865238752388523895239052391523925239352394523955239652397523985239952400524015240252403524045240552406524075240852409524105241152412524135241452415524165241752418524195242052421524225242352424524255242652427524285242952430524315243252433524345243552436524375243852439524405244152442524435244452445524465244752448524495245052451524525245352454524555245652457524585245952460524615246252463524645246552466524675246852469524705247152472524735247452475524765247752478524795248052481524825248352484524855248652487524885248952490524915249252493524945249552496524975249852499525005250152502525035250452505525065250752508525095251052511525125251352514525155251652517525185251952520525215252252523525245252552526525275252852529525305253152532525335253452535525365253752538525395254052541525425254352544525455254652547525485254952550525515255252553525545255552556525575255852559525605256152562525635256452565525665256752568525695257052571525725257352574525755257652577525785257952580525815258252583525845258552586525875258852589525905259152592525935259452595525965259752598525995260052601526025260352604526055260652607526085260952610526115261252613526145261552616526175261852619526205262152622526235262452625526265262752628526295263052631526325263352634526355263652637526385263952640526415264252643526445264552646526475264852649526505265152652526535265452655526565265752658526595266052661526625266352664526655266652667526685266952670526715267252673526745267552676526775267852679526805268152682526835268452685526865268752688526895269052691526925269352694526955269652697526985269952700527015270252703527045270552706527075270852709527105271152712527135271452715527165271752718527195272052721527225272352724527255272652727527285272952730527315273252733527345273552736527375273852739527405274152742527435274452745527465274752748527495275052751527525275352754527555275652757527585275952760527615276252763527645276552766527675276852769527705277152772527735277452775527765277752778527795278052781527825278352784527855278652787527885278952790527915279252793527945279552796527975279852799528005280152802528035280452805528065280752808528095281052811528125281352814528155281652817528185281952820528215282252823528245282552826528275282852829528305283152832528335283452835528365283752838528395284052841528425284352844528455284652847528485284952850528515285252853528545285552856528575285852859528605286152862528635286452865528665286752868528695287052871528725287352874528755287652877528785287952880528815288252883528845288552886528875288852889528905289152892528935289452895528965289752898528995290052901529025290352904529055290652907529085290952910529115291252913529145291552916529175291852919529205292152922529235292452925529265292752928529295293052931529325293352934529355293652937529385293952940529415294252943529445294552946529475294852949529505295152952529535295452955529565295752958529595296052961529625296352964529655296652967529685296952970529715297252973529745297552976529775297852979529805298152982529835298452985529865298752988529895299052991529925299352994529955299652997529985299953000530015300253003530045300553006530075300853009530105301153012530135301453015530165301753018530195302053021530225302353024530255302653027530285302953030530315303253033530345303553036530375303853039530405304153042530435304453045530465304753048530495305053051530525305353054530555305653057530585305953060530615306253063530645306553066530675306853069530705307153072530735307453075530765307753078530795308053081530825308353084530855308653087530885308953090530915309253093530945309553096530975309853099531005310153102531035310453105531065310753108531095311053111531125311353114531155311653117531185311953120531215312253123531245312553126531275312853129531305313153132531335313453135531365313753138531395314053141531425314353144531455314653147531485314953150531515315253153531545315553156531575315853159531605316153162531635316453165531665316753168531695317053171531725317353174531755317653177531785317953180531815318253183531845318553186531875318853189531905319153192531935319453195531965319753198531995320053201532025320353204532055320653207532085320953210532115321253213532145321553216532175321853219532205322153222532235322453225532265322753228532295323053231532325323353234532355323653237532385323953240532415324253243532445324553246532475324853249532505325153252532535325453255532565325753258532595326053261532625326353264532655326653267532685326953270532715327253273532745327553276532775327853279532805328153282532835328453285532865328753288532895329053291532925329353294532955329653297532985329953300533015330253303533045330553306533075330853309533105331153312533135331453315533165331753318533195332053321533225332353324533255332653327533285332953330533315333253333533345333553336533375333853339533405334153342533435334453345533465334753348533495335053351533525335353354533555335653357533585335953360533615336253363533645336553366533675336853369533705337153372533735337453375533765337753378533795338053381533825338353384533855338653387533885338953390533915339253393533945339553396533975339853399534005340153402534035340453405534065340753408534095341053411534125341353414534155341653417534185341953420534215342253423534245342553426534275342853429534305343153432534335343453435534365343753438534395344053441534425344353444534455344653447534485344953450534515345253453534545345553456534575345853459534605346153462534635346453465534665346753468534695347053471534725347353474534755347653477534785347953480534815348253483534845348553486534875348853489534905349153492534935349453495534965349753498534995350053501535025350353504535055350653507535085350953510535115351253513535145351553516535175351853519535205352153522535235352453525535265352753528535295353053531535325353353534535355353653537535385353953540535415354253543535445354553546535475354853549535505355153552535535355453555535565355753558535595356053561535625356353564535655356653567535685356953570535715357253573535745357553576535775357853579535805358153582535835358453585535865358753588535895359053591535925359353594535955359653597535985359953600536015360253603536045360553606536075360853609536105361153612536135361453615536165361753618536195362053621536225362353624536255362653627536285362953630536315363253633536345363553636536375363853639536405364153642536435364453645536465364753648536495365053651536525365353654536555365653657536585365953660536615366253663536645366553666536675366853669536705367153672536735367453675536765367753678536795368053681536825368353684536855368653687536885368953690536915369253693536945369553696536975369853699537005370153702537035370453705537065370753708537095371053711537125371353714537155371653717537185371953720537215372253723537245372553726537275372853729537305373153732537335373453735537365373753738537395374053741537425374353744537455374653747537485374953750537515375253753537545375553756537575375853759537605376153762537635376453765537665376753768537695377053771537725377353774537755377653777537785377953780537815378253783537845378553786537875378853789537905379153792537935379453795537965379753798537995380053801538025380353804538055380653807538085380953810538115381253813538145381553816538175381853819538205382153822538235382453825538265382753828538295383053831538325383353834538355383653837538385383953840538415384253843538445384553846538475384853849538505385153852538535385453855538565385753858538595386053861538625386353864538655386653867538685386953870538715387253873538745387553876538775387853879538805388153882538835388453885538865388753888538895389053891538925389353894538955389653897538985389953900539015390253903539045390553906539075390853909539105391153912539135391453915539165391753918539195392053921539225392353924539255392653927539285392953930539315393253933539345393553936539375393853939539405394153942539435394453945539465394753948539495395053951539525395353954539555395653957539585395953960539615396253963539645396553966539675396853969539705397153972539735397453975539765397753978539795398053981539825398353984539855398653987539885398953990539915399253993539945399553996539975399853999540005400154002540035400454005540065400754008540095401054011540125401354014540155401654017540185401954020540215402254023540245402554026540275402854029540305403154032540335403454035540365403754038540395404054041540425404354044540455404654047540485404954050540515405254053540545405554056540575405854059540605406154062540635406454065540665406754068540695407054071540725407354074540755407654077540785407954080540815408254083540845408554086540875408854089540905409154092540935409454095540965409754098540995410054101541025410354104541055410654107541085410954110541115411254113541145411554116541175411854119541205412154122541235412454125541265412754128541295413054131541325413354134541355413654137541385413954140541415414254143541445414554146541475414854149541505415154152541535415454155541565415754158541595416054161541625416354164541655416654167541685416954170541715417254173541745417554176541775417854179541805418154182541835418454185541865418754188541895419054191541925419354194541955419654197541985419954200542015420254203542045420554206542075420854209542105421154212542135421454215542165421754218542195422054221542225422354224542255422654227542285422954230542315423254233542345423554236542375423854239542405424154242542435424454245542465424754248542495425054251542525425354254542555425654257542585425954260542615426254263542645426554266542675426854269542705427154272542735427454275542765427754278542795428054281542825428354284542855428654287542885428954290542915429254293542945429554296542975429854299543005430154302543035430454305543065430754308543095431054311543125431354314543155431654317543185431954320543215432254323543245432554326543275432854329543305433154332543335433454335543365433754338543395434054341543425434354344543455434654347543485434954350543515435254353543545435554356543575435854359543605436154362543635436454365543665436754368543695437054371543725437354374543755437654377543785437954380543815438254383543845438554386543875438854389543905439154392543935439454395543965439754398543995440054401544025440354404544055440654407544085440954410544115441254413544145441554416544175441854419544205442154422544235442454425544265442754428544295443054431544325443354434544355443654437544385443954440544415444254443544445444554446544475444854449544505445154452544535445454455544565445754458544595446054461544625446354464544655446654467544685446954470544715447254473544745447554476544775447854479544805448154482544835448454485544865448754488544895449054491544925449354494544955449654497544985449954500545015450254503545045450554506545075450854509545105451154512545135451454515545165451754518545195452054521545225452354524545255452654527545285452954530545315453254533545345453554536545375453854539545405454154542545435454454545545465454754548545495455054551545525455354554545555455654557545585455954560545615456254563545645456554566545675456854569545705457154572545735457454575545765457754578545795458054581545825458354584545855458654587545885458954590545915459254593545945459554596545975459854599546005460154602546035460454605546065460754608546095461054611546125461354614546155461654617546185461954620546215462254623546245462554626546275462854629546305463154632546335463454635546365463754638546395464054641546425464354644546455464654647546485464954650546515465254653546545465554656546575465854659546605466154662546635466454665546665466754668546695467054671546725467354674546755467654677546785467954680546815468254683546845468554686546875468854689546905469154692546935469454695546965469754698546995470054701547025470354704547055470654707547085470954710547115471254713547145471554716547175471854719547205472154722547235472454725547265472754728547295473054731547325473354734547355473654737547385473954740547415474254743547445474554746547475474854749547505475154752547535475454755547565475754758547595476054761547625476354764547655476654767547685476954770547715477254773547745477554776547775477854779547805478154782547835478454785547865478754788547895479054791547925479354794547955479654797547985479954800548015480254803548045480554806548075480854809548105481154812548135481454815548165481754818548195482054821548225482354824548255482654827548285482954830548315483254833548345483554836548375483854839548405484154842548435484454845548465484754848548495485054851548525485354854548555485654857548585485954860548615486254863548645486554866548675486854869548705487154872548735487454875548765487754878548795488054881548825488354884548855488654887548885488954890548915489254893548945489554896548975489854899549005490154902549035490454905549065490754908549095491054911549125491354914549155491654917549185491954920549215492254923549245492554926549275492854929549305493154932549335493454935549365493754938549395494054941549425494354944549455494654947549485494954950549515495254953549545495554956549575495854959549605496154962549635496454965549665496754968549695497054971549725497354974549755497654977549785497954980549815498254983549845498554986549875498854989549905499154992549935499454995549965499754998549995500055001550025500355004550055500655007550085500955010550115501255013550145501555016550175501855019550205502155022550235502455025550265502755028550295503055031550325503355034550355503655037550385503955040550415504255043550445504555046550475504855049550505505155052550535505455055550565505755058550595506055061550625506355064550655506655067550685506955070550715507255073550745507555076550775507855079550805508155082550835508455085550865508755088550895509055091550925509355094550955509655097550985509955100551015510255103551045510555106551075510855109551105511155112551135511455115551165511755118551195512055121551225512355124551255512655127551285512955130551315513255133551345513555136551375513855139551405514155142551435514455145551465514755148551495515055151551525515355154551555515655157551585515955160551615516255163551645516555166551675516855169551705517155172551735517455175551765517755178551795518055181551825518355184551855518655187551885518955190551915519255193551945519555196551975519855199552005520155202552035520455205552065520755208552095521055211552125521355214552155521655217552185521955220552215522255223552245522555226552275522855229552305523155232552335523455235552365523755238552395524055241552425524355244552455524655247552485524955250552515525255253552545525555256552575525855259552605526155262552635526455265552665526755268552695527055271552725527355274552755527655277552785527955280552815528255283552845528555286552875528855289552905529155292552935529455295552965529755298552995530055301553025530355304553055530655307553085530955310553115531255313553145531555316553175531855319553205532155322553235532455325553265532755328553295533055331553325533355334553355533655337553385533955340553415534255343553445534555346553475534855349553505535155352553535535455355553565535755358553595536055361553625536355364553655536655367553685536955370553715537255373553745537555376553775537855379553805538155382553835538455385553865538755388553895539055391553925539355394553955539655397553985539955400554015540255403554045540555406554075540855409554105541155412554135541455415554165541755418554195542055421554225542355424554255542655427554285542955430554315543255433554345543555436554375543855439554405544155442554435544455445554465544755448554495545055451554525545355454554555545655457554585545955460554615546255463554645546555466554675546855469554705547155472554735547455475554765547755478554795548055481554825548355484554855548655487554885548955490554915549255493554945549555496554975549855499555005550155502555035550455505555065550755508555095551055511555125551355514555155551655517555185551955520555215552255523555245552555526555275552855529555305553155532555335553455535555365553755538555395554055541555425554355544555455554655547555485554955550555515555255553555545555555556555575555855559555605556155562555635556455565555665556755568555695557055571555725557355574555755557655577555785557955580555815558255583555845558555586555875558855589555905559155592555935559455595555965559755598555995560055601556025560355604556055560655607556085560955610556115561255613556145561555616556175561855619556205562155622556235562455625556265562755628556295563055631556325563355634556355563655637556385563955640556415564255643556445564555646556475564855649556505565155652556535565455655556565565755658556595566055661556625566355664556655566655667556685566955670556715567255673556745567555676556775567855679556805568155682556835568455685556865568755688556895569055691556925569355694556955569655697556985569955700557015570255703557045570555706557075570855709557105571155712557135571455715557165571755718557195572055721557225572355724557255572655727557285572955730557315573255733557345573555736557375573855739557405574155742557435574455745557465574755748557495575055751557525575355754557555575655757557585575955760557615576255763557645576555766557675576855769557705577155772557735577455775557765577755778557795578055781557825578355784557855578655787557885578955790557915579255793557945579555796557975579855799558005580155802558035580455805558065580755808558095581055811558125581355814558155581655817558185581955820558215582255823558245582555826558275582855829558305583155832558335583455835558365583755838558395584055841558425584355844558455584655847558485584955850558515585255853558545585555856558575585855859558605586155862558635586455865558665586755868558695587055871558725587355874558755587655877558785587955880558815588255883558845588555886558875588855889558905589155892558935589455895558965589755898558995590055901559025590355904559055590655907559085590955910559115591255913559145591555916559175591855919559205592155922559235592455925559265592755928559295593055931559325593355934559355593655937559385593955940559415594255943559445594555946559475594855949559505595155952559535595455955559565595755958559595596055961559625596355964559655596655967559685596955970559715597255973559745597555976559775597855979559805598155982559835598455985559865598755988559895599055991559925599355994559955599655997559985599956000560015600256003560045600556006560075600856009560105601156012560135601456015560165601756018560195602056021560225602356024560255602656027560285602956030560315603256033560345603556036560375603856039560405604156042560435604456045560465604756048560495605056051560525605356054560555605656057560585605956060560615606256063560645606556066560675606856069560705607156072560735607456075560765607756078560795608056081560825608356084560855608656087560885608956090560915609256093560945609556096560975609856099561005610156102561035610456105561065610756108561095611056111561125611356114561155611656117561185611956120561215612256123561245612556126561275612856129561305613156132561335613456135561365613756138561395614056141561425614356144561455614656147561485614956150561515615256153561545615556156561575615856159561605616156162561635616456165561665616756168561695617056171561725617356174561755617656177561785617956180561815618256183561845618556186561875618856189561905619156192561935619456195561965619756198561995620056201562025620356204562055620656207562085620956210562115621256213562145621556216562175621856219562205622156222562235622456225562265622756228562295623056231562325623356234562355623656237562385623956240562415624256243562445624556246562475624856249562505625156252562535625456255562565625756258562595626056261562625626356264562655626656267562685626956270562715627256273562745627556276562775627856279562805628156282562835628456285562865628756288562895629056291562925629356294562955629656297562985629956300563015630256303563045630556306563075630856309563105631156312563135631456315563165631756318563195632056321563225632356324563255632656327563285632956330563315633256333563345633556336563375633856339563405634156342563435634456345563465634756348563495635056351563525635356354563555635656357563585635956360563615636256363563645636556366563675636856369563705637156372563735637456375563765637756378563795638056381563825638356384563855638656387563885638956390563915639256393563945639556396563975639856399564005640156402564035640456405564065640756408564095641056411564125641356414564155641656417564185641956420564215642256423564245642556426564275642856429564305643156432564335643456435564365643756438564395644056441564425644356444564455644656447564485644956450564515645256453564545645556456564575645856459564605646156462564635646456465564665646756468564695647056471564725647356474564755647656477564785647956480564815648256483564845648556486564875648856489564905649156492564935649456495564965649756498564995650056501565025650356504565055650656507565085650956510565115651256513565145651556516565175651856519565205652156522565235652456525565265652756528565295653056531565325653356534565355653656537565385653956540565415654256543565445654556546565475654856549565505655156552565535655456555565565655756558565595656056561565625656356564565655656656567565685656956570565715657256573565745657556576565775657856579565805658156582565835658456585565865658756588565895659056591565925659356594565955659656597565985659956600566015660256603566045660556606566075660856609566105661156612566135661456615566165661756618566195662056621566225662356624566255662656627566285662956630566315663256633566345663556636566375663856639566405664156642566435664456645566465664756648566495665056651566525665356654566555665656657566585665956660566615666256663566645666556666566675666856669566705667156672566735667456675566765667756678566795668056681566825668356684566855668656687566885668956690566915669256693566945669556696566975669856699567005670156702567035670456705567065670756708567095671056711567125671356714567155671656717567185671956720567215672256723567245672556726567275672856729567305673156732567335673456735567365673756738567395674056741567425674356744567455674656747567485674956750567515675256753567545675556756567575675856759567605676156762567635676456765567665676756768567695677056771567725677356774567755677656777567785677956780567815678256783567845678556786567875678856789567905679156792567935679456795567965679756798567995680056801568025680356804568055680656807568085680956810568115681256813568145681556816568175681856819568205682156822568235682456825568265682756828568295683056831568325683356834568355683656837568385683956840568415684256843568445684556846568475684856849568505685156852568535685456855568565685756858568595686056861568625686356864568655686656867568685686956870568715687256873568745687556876568775687856879568805688156882568835688456885568865688756888568895689056891568925689356894568955689656897568985689956900569015690256903569045690556906569075690856909569105691156912569135691456915569165691756918569195692056921569225692356924569255692656927569285692956930569315693256933569345693556936569375693856939569405694156942569435694456945569465694756948569495695056951569525695356954569555695656957569585695956960569615696256963569645696556966569675696856969569705697156972569735697456975569765697756978569795698056981569825698356984569855698656987569885698956990569915699256993569945699556996569975699856999570005700157002570035700457005570065700757008570095701057011570125701357014570155701657017570185701957020570215702257023570245702557026570275702857029570305703157032570335703457035570365703757038570395704057041570425704357044570455704657047570485704957050570515705257053570545705557056570575705857059570605706157062570635706457065570665706757068570695707057071570725707357074570755707657077570785707957080570815708257083570845708557086570875708857089570905709157092570935709457095570965709757098570995710057101571025710357104571055710657107571085710957110571115711257113571145711557116571175711857119571205712157122571235712457125571265712757128571295713057131571325713357134571355713657137571385713957140571415714257143571445714557146571475714857149571505715157152571535715457155571565715757158571595716057161571625716357164571655716657167571685716957170571715717257173571745717557176571775717857179571805718157182571835718457185571865718757188571895719057191571925719357194571955719657197571985719957200572015720257203572045720557206572075720857209572105721157212572135721457215572165721757218572195722057221572225722357224572255722657227572285722957230572315723257233572345723557236572375723857239572405724157242572435724457245572465724757248572495725057251572525725357254572555725657257572585725957260572615726257263572645726557266572675726857269572705727157272572735727457275572765727757278572795728057281572825728357284572855728657287572885728957290572915729257293572945729557296572975729857299573005730157302573035730457305573065730757308573095731057311573125731357314573155731657317573185731957320573215732257323573245732557326573275732857329573305733157332573335733457335573365733757338573395734057341573425734357344573455734657347573485734957350573515735257353573545735557356573575735857359573605736157362573635736457365573665736757368573695737057371573725737357374573755737657377573785737957380573815738257383573845738557386573875738857389573905739157392573935739457395573965739757398573995740057401574025740357404574055740657407574085740957410574115741257413574145741557416574175741857419574205742157422574235742457425574265742757428574295743057431574325743357434574355743657437574385743957440574415744257443574445744557446574475744857449574505745157452574535745457455574565745757458574595746057461574625746357464574655746657467574685746957470574715747257473574745747557476574775747857479574805748157482574835748457485574865748757488574895749057491574925749357494574955749657497574985749957500575015750257503575045750557506575075750857509575105751157512575135751457515575165751757518575195752057521575225752357524575255752657527575285752957530575315753257533575345753557536575375753857539575405754157542575435754457545575465754757548575495755057551575525755357554575555755657557575585755957560575615756257563575645756557566575675756857569575705757157572575735757457575575765757757578575795758057581575825758357584575855758657587575885758957590575915759257593575945759557596575975759857599576005760157602576035760457605576065760757608576095761057611576125761357614576155761657617576185761957620576215762257623576245762557626576275762857629576305763157632576335763457635576365763757638576395764057641576425764357644576455764657647576485764957650576515765257653576545765557656576575765857659576605766157662576635766457665576665766757668576695767057671576725767357674576755767657677576785767957680576815768257683576845768557686576875768857689576905769157692576935769457695576965769757698576995770057701577025770357704577055770657707577085770957710577115771257713577145771557716577175771857719577205772157722577235772457725577265772757728577295773057731577325773357734577355773657737577385773957740577415774257743577445774557746577475774857749577505775157752577535775457755577565775757758577595776057761577625776357764577655776657767577685776957770577715777257773577745777557776577775777857779577805778157782577835778457785577865778757788577895779057791577925779357794577955779657797577985779957800578015780257803578045780557806578075780857809578105781157812578135781457815578165781757818578195782057821578225782357824578255782657827578285782957830578315783257833578345783557836578375783857839578405784157842578435784457845578465784757848578495785057851578525785357854578555785657857578585785957860578615786257863578645786557866578675786857869578705787157872578735787457875578765787757878578795788057881578825788357884578855788657887578885788957890578915789257893578945789557896578975789857899579005790157902579035790457905579065790757908579095791057911579125791357914579155791657917579185791957920579215792257923579245792557926579275792857929579305793157932579335793457935579365793757938579395794057941579425794357944579455794657947579485794957950579515795257953579545795557956579575795857959579605796157962579635796457965579665796757968579695797057971579725797357974579755797657977579785797957980579815798257983579845798557986579875798857989579905799157992579935799457995579965799757998579995800058001580025800358004580055800658007580085800958010580115801258013580145801558016580175801858019580205802158022580235802458025580265802758028580295803058031580325803358034580355803658037580385803958040580415804258043580445804558046580475804858049580505805158052580535805458055580565805758058580595806058061580625806358064580655806658067580685806958070580715807258073580745807558076580775807858079580805808158082580835808458085580865808758088580895809058091580925809358094580955809658097580985809958100581015810258103581045810558106581075810858109581105811158112581135811458115581165811758118581195812058121581225812358124581255812658127581285812958130581315813258133581345813558136581375813858139581405814158142581435814458145581465814758148581495815058151581525815358154581555815658157581585815958160581615816258163581645816558166581675816858169581705817158172581735817458175581765817758178581795818058181581825818358184581855818658187581885818958190581915819258193581945819558196581975819858199582005820158202582035820458205582065820758208582095821058211582125821358214582155821658217582185821958220582215822258223582245822558226582275822858229582305823158232582335823458235582365823758238582395824058241582425824358244582455824658247582485824958250582515825258253582545825558256582575825858259582605826158262582635826458265582665826758268582695827058271582725827358274582755827658277582785827958280582815828258283582845828558286582875828858289582905829158292582935829458295582965829758298582995830058301583025830358304583055830658307583085830958310583115831258313583145831558316583175831858319583205832158322583235832458325583265832758328583295833058331583325833358334583355833658337583385833958340583415834258343583445834558346583475834858349583505835158352583535835458355583565835758358583595836058361583625836358364583655836658367583685836958370583715837258373583745837558376583775837858379583805838158382583835838458385583865838758388583895839058391583925839358394583955839658397583985839958400584015840258403584045840558406584075840858409584105841158412584135841458415584165841758418584195842058421584225842358424584255842658427584285842958430584315843258433584345843558436584375843858439584405844158442584435844458445584465844758448584495845058451584525845358454584555845658457584585845958460584615846258463584645846558466584675846858469584705847158472584735847458475584765847758478584795848058481584825848358484584855848658487584885848958490584915849258493584945849558496584975849858499585005850158502585035850458505585065850758508585095851058511585125851358514585155851658517585185851958520585215852258523585245852558526585275852858529585305853158532585335853458535585365853758538585395854058541585425854358544585455854658547585485854958550585515855258553585545855558556585575855858559585605856158562585635856458565585665856758568585695857058571585725857358574585755857658577585785857958580585815858258583585845858558586585875858858589585905859158592585935859458595585965859758598585995860058601586025860358604586055860658607586085860958610586115861258613586145861558616586175861858619586205862158622586235862458625586265862758628586295863058631586325863358634586355863658637586385863958640586415864258643586445864558646586475864858649586505865158652586535865458655586565865758658586595866058661586625866358664586655866658667586685866958670586715867258673586745867558676586775867858679586805868158682586835868458685586865868758688586895869058691586925869358694586955869658697586985869958700587015870258703587045870558706587075870858709587105871158712587135871458715587165871758718587195872058721587225872358724587255872658727587285872958730587315873258733587345873558736587375873858739587405874158742587435874458745587465874758748587495875058751587525875358754587555875658757587585875958760587615876258763587645876558766587675876858769587705877158772587735877458775587765877758778587795878058781587825878358784587855878658787587885878958790587915879258793587945879558796587975879858799588005880158802588035880458805588065880758808588095881058811588125881358814588155881658817588185881958820588215882258823588245882558826588275882858829588305883158832588335883458835588365883758838588395884058841588425884358844588455884658847588485884958850588515885258853588545885558856588575885858859588605886158862588635886458865588665886758868588695887058871588725887358874588755887658877588785887958880588815888258883588845888558886588875888858889588905889158892588935889458895588965889758898588995890058901589025890358904589055890658907589085890958910589115891258913589145891558916589175891858919589205892158922589235892458925589265892758928589295893058931589325893358934589355893658937589385893958940589415894258943589445894558946589475894858949589505895158952589535895458955589565895758958589595896058961589625896358964589655896658967589685896958970589715897258973589745897558976589775897858979589805898158982589835898458985589865898758988589895899058991589925899358994589955899658997589985899959000590015900259003590045900559006590075900859009590105901159012590135901459015590165901759018590195902059021590225902359024590255902659027590285902959030590315903259033590345903559036590375903859039590405904159042590435904459045590465904759048590495905059051590525905359054590555905659057590585905959060590615906259063590645906559066590675906859069590705907159072590735907459075590765907759078590795908059081590825908359084590855908659087590885908959090590915909259093590945909559096590975909859099591005910159102591035910459105591065910759108591095911059111591125911359114591155911659117591185911959120591215912259123591245912559126591275912859129591305913159132591335913459135591365913759138591395914059141591425914359144591455914659147591485914959150591515915259153591545915559156591575915859159591605916159162591635916459165591665916759168591695917059171591725917359174591755917659177591785917959180591815918259183591845918559186591875918859189591905919159192591935919459195591965919759198591995920059201592025920359204592055920659207592085920959210592115921259213592145921559216592175921859219592205922159222592235922459225592265922759228592295923059231592325923359234592355923659237592385923959240592415924259243592445924559246592475924859249592505925159252592535925459255592565925759258592595926059261592625926359264592655926659267592685926959270592715927259273592745927559276592775927859279592805928159282592835928459285592865928759288592895929059291592925929359294592955929659297592985929959300593015930259303593045930559306593075930859309593105931159312593135931459315593165931759318593195932059321593225932359324593255932659327593285932959330593315933259333593345933559336593375933859339593405934159342593435934459345593465934759348593495935059351593525935359354593555935659357593585935959360593615936259363593645936559366593675936859369593705937159372593735937459375593765937759378593795938059381593825938359384593855938659387593885938959390593915939259393593945939559396593975939859399594005940159402594035940459405594065940759408594095941059411594125941359414594155941659417594185941959420594215942259423594245942559426594275942859429594305943159432594335943459435594365943759438594395944059441594425944359444594455944659447594485944959450594515945259453594545945559456594575945859459594605946159462594635946459465594665946759468594695947059471594725947359474594755947659477594785947959480594815948259483594845948559486594875948859489594905949159492594935949459495594965949759498594995950059501595025950359504595055950659507595085950959510595115951259513595145951559516595175951859519595205952159522595235952459525595265952759528595295953059531595325953359534595355953659537595385953959540595415954259543595445954559546595475954859549595505955159552595535955459555595565955759558595595956059561595625956359564595655956659567595685956959570595715957259573595745957559576595775957859579595805958159582595835958459585595865958759588595895959059591595925959359594595955959659597595985959959600596015960259603596045960559606596075960859609596105961159612596135961459615596165961759618596195962059621596225962359624596255962659627596285962959630596315963259633596345963559636596375963859639596405964159642596435964459645596465964759648596495965059651596525965359654596555965659657596585965959660596615966259663596645966559666596675966859669596705967159672596735967459675596765967759678596795968059681596825968359684596855968659687596885968959690596915969259693596945969559696596975969859699597005970159702597035970459705597065970759708597095971059711597125971359714597155971659717597185971959720597215972259723597245972559726597275972859729597305973159732597335973459735597365973759738597395974059741597425974359744597455974659747597485974959750597515975259753597545975559756597575975859759597605976159762597635976459765597665976759768597695977059771597725977359774597755977659777597785977959780597815978259783597845978559786597875978859789597905979159792597935979459795597965979759798597995980059801598025980359804598055980659807598085980959810598115981259813598145981559816598175981859819598205982159822598235982459825598265982759828598295983059831598325983359834598355983659837598385983959840598415984259843598445984559846598475984859849598505985159852598535985459855598565985759858598595986059861598625986359864598655986659867598685986959870598715987259873598745987559876598775987859879598805988159882598835988459885598865988759888598895989059891598925989359894598955989659897598985989959900599015990259903599045990559906599075990859909599105991159912599135991459915599165991759918599195992059921599225992359924599255992659927599285992959930599315993259933599345993559936599375993859939599405994159942599435994459945599465994759948599495995059951599525995359954599555995659957599585995959960599615996259963599645996559966599675996859969599705997159972599735997459975599765997759978599795998059981599825998359984599855998659987599885998959990599915999259993599945999559996599975999859999600006000160002600036000460005600066000760008600096001060011600126001360014600156001660017600186001960020600216002260023600246002560026600276002860029600306003160032600336003460035600366003760038600396004060041600426004360044600456004660047600486004960050600516005260053600546005560056600576005860059600606006160062600636006460065600666006760068600696007060071600726007360074600756007660077600786007960080600816008260083600846008560086600876008860089600906009160092600936009460095600966009760098600996010060101601026010360104601056010660107601086010960110601116011260113601146011560116601176011860119601206012160122601236012460125601266012760128601296013060131601326013360134601356013660137601386013960140601416014260143601446014560146601476014860149601506015160152601536015460155601566015760158601596016060161601626016360164601656016660167601686016960170601716017260173601746017560176601776017860179601806018160182601836018460185601866018760188601896019060191601926019360194601956019660197601986019960200602016020260203602046020560206602076020860209602106021160212602136021460215602166021760218602196022060221602226022360224602256022660227602286022960230602316023260233602346023560236602376023860239602406024160242602436024460245602466024760248602496025060251602526025360254602556025660257602586025960260602616026260263602646026560266602676026860269602706027160272602736027460275602766027760278602796028060281602826028360284602856028660287602886028960290602916029260293602946029560296602976029860299603006030160302603036030460305603066030760308603096031060311603126031360314603156031660317603186031960320603216032260323603246032560326603276032860329603306033160332603336033460335603366033760338603396034060341603426034360344603456034660347603486034960350603516035260353603546035560356603576035860359603606036160362603636036460365603666036760368603696037060371603726037360374603756037660377603786037960380603816038260383603846038560386603876038860389603906039160392603936039460395603966039760398603996040060401604026040360404604056040660407604086040960410604116041260413604146041560416604176041860419604206042160422604236042460425604266042760428604296043060431604326043360434604356043660437604386043960440604416044260443604446044560446604476044860449604506045160452604536045460455604566045760458604596046060461604626046360464604656046660467604686046960470604716047260473604746047560476604776047860479604806048160482604836048460485604866048760488604896049060491604926049360494604956049660497604986049960500605016050260503605046050560506605076050860509605106051160512605136051460515605166051760518605196052060521605226052360524605256052660527605286052960530605316053260533605346053560536605376053860539605406054160542605436054460545605466054760548605496055060551605526055360554605556055660557605586055960560605616056260563605646056560566605676056860569605706057160572605736057460575605766057760578605796058060581605826058360584605856058660587605886058960590605916059260593605946059560596605976059860599606006060160602606036060460605606066060760608606096061060611606126061360614606156061660617606186061960620606216062260623606246062560626606276062860629606306063160632606336063460635606366063760638606396064060641606426064360644606456064660647606486064960650606516065260653606546065560656606576065860659606606066160662606636066460665606666066760668606696067060671606726067360674606756067660677606786067960680606816068260683606846068560686606876068860689606906069160692606936069460695606966069760698606996070060701607026070360704607056070660707607086070960710607116071260713607146071560716607176071860719607206072160722607236072460725607266072760728607296073060731607326073360734607356073660737607386073960740607416074260743607446074560746607476074860749607506075160752607536075460755607566075760758607596076060761607626076360764607656076660767607686076960770607716077260773607746077560776607776077860779607806078160782607836078460785607866078760788607896079060791607926079360794607956079660797607986079960800608016080260803608046080560806608076080860809608106081160812608136081460815608166081760818608196082060821608226082360824608256082660827608286082960830608316083260833608346083560836608376083860839608406084160842608436084460845608466084760848608496085060851608526085360854608556085660857608586085960860608616086260863608646086560866608676086860869608706087160872608736087460875608766087760878608796088060881608826088360884608856088660887608886088960890608916089260893608946089560896608976089860899609006090160902609036090460905609066090760908609096091060911609126091360914609156091660917609186091960920609216092260923609246092560926609276092860929609306093160932609336093460935609366093760938609396094060941609426094360944609456094660947609486094960950609516095260953609546095560956609576095860959609606096160962609636096460965609666096760968609696097060971609726097360974609756097660977609786097960980609816098260983609846098560986609876098860989609906099160992609936099460995609966099760998609996100061001610026100361004610056100661007610086100961010610116101261013610146101561016610176101861019610206102161022610236102461025610266102761028610296103061031610326103361034610356103661037610386103961040610416104261043610446104561046610476104861049610506105161052610536105461055610566105761058610596106061061610626106361064610656106661067610686106961070610716107261073610746107561076610776107861079610806108161082610836108461085610866108761088610896109061091610926109361094610956109661097610986109961100611016110261103611046110561106611076110861109611106111161112611136111461115611166111761118611196112061121611226112361124611256112661127611286112961130611316113261133611346113561136611376113861139611406114161142611436114461145611466114761148611496115061151611526115361154611556115661157611586115961160611616116261163611646116561166611676116861169611706117161172611736117461175611766117761178611796118061181611826118361184611856118661187611886118961190611916119261193611946119561196611976119861199612006120161202612036120461205612066120761208612096121061211612126121361214612156121661217612186121961220612216122261223612246122561226612276122861229612306123161232612336123461235612366123761238612396124061241612426124361244612456124661247612486124961250612516125261253612546125561256612576125861259612606126161262612636126461265612666126761268612696127061271612726127361274612756127661277612786127961280612816128261283612846128561286612876128861289612906129161292612936129461295612966129761298612996130061301613026130361304613056130661307613086130961310613116131261313613146131561316613176131861319613206132161322613236132461325613266132761328613296133061331613326133361334613356133661337613386133961340613416134261343613446134561346613476134861349613506135161352613536135461355613566135761358613596136061361613626136361364613656136661367613686136961370613716137261373613746137561376613776137861379613806138161382613836138461385613866138761388613896139061391613926139361394613956139661397613986139961400614016140261403614046140561406614076140861409614106141161412614136141461415614166141761418614196142061421614226142361424614256142661427614286142961430614316143261433614346143561436614376143861439614406144161442614436144461445614466144761448614496145061451614526145361454614556145661457614586145961460614616146261463614646146561466614676146861469614706147161472614736147461475614766147761478614796148061481614826148361484614856148661487614886148961490614916149261493614946149561496614976149861499615006150161502615036150461505615066150761508615096151061511615126151361514615156151661517615186151961520615216152261523615246152561526615276152861529615306153161532615336153461535615366153761538615396154061541615426154361544615456154661547615486154961550615516155261553615546155561556615576155861559615606156161562615636156461565615666156761568615696157061571615726157361574615756157661577615786157961580615816158261583615846158561586615876158861589615906159161592615936159461595615966159761598615996160061601616026160361604616056160661607616086160961610616116161261613616146161561616616176161861619616206162161622616236162461625616266162761628616296163061631616326163361634616356163661637616386163961640616416164261643616446164561646616476164861649616506165161652616536165461655616566165761658616596166061661616626166361664616656166661667616686166961670616716167261673616746167561676616776167861679616806168161682616836168461685616866168761688616896169061691616926169361694616956169661697616986169961700617016170261703617046170561706617076170861709617106171161712617136171461715617166171761718617196172061721617226172361724617256172661727617286172961730617316173261733617346173561736617376173861739617406174161742617436174461745617466174761748617496175061751617526175361754617556175661757617586175961760617616176261763617646176561766617676176861769617706177161772617736177461775617766177761778617796178061781617826178361784617856178661787617886178961790617916179261793617946179561796617976179861799618006180161802618036180461805618066180761808618096181061811618126181361814618156181661817618186181961820618216182261823618246182561826618276182861829618306183161832618336183461835618366183761838618396184061841618426184361844618456184661847618486184961850618516185261853618546185561856618576185861859618606186161862618636186461865618666186761868618696187061871618726187361874618756187661877618786187961880618816188261883618846188561886618876188861889618906189161892618936189461895618966189761898618996190061901619026190361904619056190661907619086190961910619116191261913619146191561916619176191861919619206192161922619236192461925619266192761928619296193061931619326193361934619356193661937619386193961940619416194261943619446194561946619476194861949619506195161952619536195461955619566195761958619596196061961619626196361964619656196661967619686196961970619716197261973619746197561976619776197861979619806198161982619836198461985619866198761988619896199061991619926199361994619956199661997619986199962000620016200262003620046200562006620076200862009620106201162012620136201462015620166201762018620196202062021620226202362024620256202662027620286202962030620316203262033620346203562036620376203862039620406204162042620436204462045620466204762048620496205062051620526205362054620556205662057620586205962060620616206262063620646206562066620676206862069620706207162072620736207462075620766207762078620796208062081620826208362084620856208662087620886208962090620916209262093620946209562096620976209862099621006210162102621036210462105621066210762108621096211062111621126211362114621156211662117621186211962120621216212262123621246212562126621276212862129621306213162132621336213462135621366213762138621396214062141621426214362144621456214662147621486214962150621516215262153621546215562156621576215862159621606216162162621636216462165621666216762168621696217062171621726217362174621756217662177621786217962180621816218262183621846218562186621876218862189621906219162192621936219462195621966219762198621996220062201622026220362204622056220662207622086220962210622116221262213622146221562216622176221862219622206222162222622236222462225622266222762228622296223062231622326223362234622356223662237622386223962240622416224262243622446224562246622476224862249622506225162252622536225462255622566225762258622596226062261622626226362264622656226662267622686226962270622716227262273622746227562276622776227862279622806228162282622836228462285622866228762288622896229062291622926229362294622956229662297622986229962300623016230262303623046230562306623076230862309623106231162312623136231462315623166231762318623196232062321623226232362324623256232662327623286232962330623316233262333623346233562336623376233862339623406234162342623436234462345623466234762348623496235062351623526235362354623556235662357623586235962360623616236262363623646236562366623676236862369623706237162372623736237462375623766237762378623796238062381623826238362384623856238662387623886238962390623916239262393623946239562396623976239862399624006240162402624036240462405624066240762408624096241062411624126241362414624156241662417624186241962420624216242262423624246242562426624276242862429624306243162432624336243462435624366243762438624396244062441624426244362444624456244662447624486244962450624516245262453624546245562456624576245862459624606246162462624636246462465624666246762468624696247062471624726247362474624756247662477624786247962480624816248262483624846248562486624876248862489624906249162492624936249462495624966249762498624996250062501625026250362504625056250662507625086250962510625116251262513625146251562516625176251862519625206252162522625236252462525625266252762528625296253062531625326253362534625356253662537625386253962540625416254262543625446254562546625476254862549625506255162552625536255462555625566255762558625596256062561625626256362564625656256662567625686256962570625716257262573625746257562576625776257862579625806258162582625836258462585625866258762588625896259062591625926259362594625956259662597625986259962600626016260262603626046260562606626076260862609626106261162612626136261462615626166261762618626196262062621626226262362624626256262662627626286262962630626316263262633626346263562636626376263862639626406264162642626436264462645626466264762648626496265062651626526265362654626556265662657626586265962660626616266262663626646266562666626676266862669626706267162672626736267462675626766267762678626796268062681626826268362684626856268662687626886268962690626916269262693626946269562696626976269862699627006270162702627036270462705627066270762708627096271062711627126271362714627156271662717627186271962720627216272262723627246272562726627276272862729627306273162732627336273462735627366273762738627396274062741627426274362744627456274662747627486274962750627516275262753627546275562756627576275862759627606276162762627636276462765627666276762768627696277062771627726277362774627756277662777627786277962780627816278262783627846278562786627876278862789627906279162792627936279462795627966279762798627996280062801628026280362804628056280662807628086280962810628116281262813628146281562816628176281862819628206282162822628236282462825628266282762828628296283062831628326283362834628356283662837628386283962840628416284262843628446284562846628476284862849628506285162852628536285462855628566285762858628596286062861628626286362864628656286662867628686286962870628716287262873628746287562876628776287862879628806288162882628836288462885628866288762888628896289062891628926289362894628956289662897628986289962900629016290262903629046290562906629076290862909629106291162912629136291462915629166291762918629196292062921629226292362924629256292662927629286292962930629316293262933629346293562936629376293862939629406294162942629436294462945629466294762948629496295062951629526295362954629556295662957629586295962960629616296262963629646296562966629676296862969629706297162972629736297462975629766297762978629796298062981629826298362984629856298662987629886298962990629916299262993629946299562996629976299862999630006300163002630036300463005630066300763008630096301063011630126301363014630156301663017630186301963020630216302263023630246302563026630276302863029630306303163032630336303463035630366303763038630396304063041630426304363044630456304663047630486304963050630516305263053630546305563056630576305863059630606306163062630636306463065630666306763068630696307063071630726307363074630756307663077630786307963080630816308263083630846308563086630876308863089630906309163092630936309463095630966309763098630996310063101631026310363104631056310663107631086310963110631116311263113631146311563116631176311863119631206312163122631236312463125631266312763128631296313063131631326313363134631356313663137631386313963140631416314263143631446314563146631476314863149631506315163152631536315463155631566315763158631596316063161631626316363164631656316663167631686316963170631716317263173631746317563176631776317863179631806318163182631836318463185631866318763188631896319063191631926319363194631956319663197631986319963200632016320263203632046320563206632076320863209632106321163212632136321463215632166321763218632196322063221632226322363224632256322663227632286322963230632316323263233632346323563236632376323863239632406324163242632436324463245632466324763248632496325063251632526325363254632556325663257632586325963260632616326263263632646326563266632676326863269632706327163272632736327463275632766327763278632796328063281632826328363284632856328663287632886328963290632916329263293632946329563296632976329863299633006330163302633036330463305633066330763308633096331063311633126331363314633156331663317633186331963320633216332263323633246332563326633276332863329633306333163332633336333463335633366333763338633396334063341633426334363344633456334663347633486334963350633516335263353633546335563356633576335863359633606336163362633636336463365633666336763368633696337063371633726337363374633756337663377633786337963380633816338263383633846338563386633876338863389633906339163392633936339463395633966339763398633996340063401634026340363404634056340663407634086340963410634116341263413634146341563416634176341863419634206342163422634236342463425634266342763428634296343063431634326343363434634356343663437634386343963440634416344263443634446344563446634476344863449634506345163452634536345463455634566345763458634596346063461634626346363464634656346663467634686346963470634716347263473634746347563476634776347863479634806348163482634836348463485634866348763488634896349063491634926349363494634956349663497634986349963500635016350263503635046350563506635076350863509635106351163512635136351463515635166351763518635196352063521635226352363524635256352663527635286352963530635316353263533635346353563536635376353863539635406354163542635436354463545635466354763548635496355063551635526355363554635556355663557635586355963560635616356263563635646356563566635676356863569635706357163572635736357463575635766357763578635796358063581635826358363584635856358663587635886358963590635916359263593635946359563596635976359863599636006360163602636036360463605636066360763608636096361063611636126361363614636156361663617636186361963620636216362263623636246362563626636276362863629636306363163632636336363463635636366363763638636396364063641636426364363644636456364663647636486364963650636516365263653636546365563656636576365863659636606366163662636636366463665636666366763668636696367063671636726367363674636756367663677636786367963680636816368263683636846368563686636876368863689636906369163692636936369463695636966369763698636996370063701637026370363704637056370663707637086370963710637116371263713637146371563716637176371863719637206372163722637236372463725637266372763728637296373063731637326373363734637356373663737637386373963740637416374263743637446374563746637476374863749637506375163752637536375463755637566375763758637596376063761637626376363764637656376663767637686376963770637716377263773637746377563776637776377863779637806378163782637836378463785637866378763788637896379063791637926379363794637956379663797637986379963800638016380263803638046380563806638076380863809638106381163812638136381463815638166381763818638196382063821638226382363824638256382663827638286382963830638316383263833638346383563836638376383863839638406384163842638436384463845638466384763848638496385063851638526385363854638556385663857638586385963860638616386263863638646386563866638676386863869638706387163872638736387463875638766387763878638796388063881638826388363884638856388663887638886388963890638916389263893638946389563896638976389863899639006390163902639036390463905639066390763908639096391063911639126391363914639156391663917639186391963920639216392263923639246392563926639276392863929639306393163932639336393463935639366393763938639396394063941639426394363944639456394663947639486394963950639516395263953639546395563956639576395863959639606396163962639636396463965639666396763968639696397063971639726397363974639756397663977639786397963980639816398263983639846398563986639876398863989639906399163992639936399463995639966399763998639996400064001640026400364004640056400664007640086400964010640116401264013640146401564016640176401864019640206402164022640236402464025640266402764028640296403064031640326403364034640356403664037640386403964040640416404264043640446404564046640476404864049640506405164052640536405464055640566405764058640596406064061640626406364064640656406664067640686406964070640716407264073640746407564076640776407864079640806408164082640836408464085640866408764088640896409064091640926409364094640956409664097640986409964100641016410264103641046410564106641076410864109641106411164112641136411464115641166411764118641196412064121641226412364124641256412664127641286412964130641316413264133641346413564136641376413864139641406414164142641436414464145641466414764148641496415064151641526415364154641556415664157641586415964160641616416264163641646416564166641676416864169641706417164172641736417464175641766417764178641796418064181641826418364184641856418664187641886418964190641916419264193641946419564196641976419864199642006420164202642036420464205642066420764208642096421064211642126421364214642156421664217642186421964220642216422264223642246422564226642276422864229642306423164232642336423464235642366423764238642396424064241642426424364244642456424664247642486424964250642516425264253642546425564256642576425864259642606426164262642636426464265642666426764268642696427064271642726427364274642756427664277642786427964280642816428264283642846428564286642876428864289642906429164292642936429464295642966429764298642996430064301643026430364304643056430664307643086430964310643116431264313643146431564316643176431864319643206432164322643236432464325643266432764328643296433064331643326433364334643356433664337643386433964340643416434264343643446434564346643476434864349643506435164352643536435464355643566435764358643596436064361643626436364364643656436664367643686436964370643716437264373643746437564376643776437864379643806438164382643836438464385643866438764388643896439064391643926439364394643956439664397643986439964400644016440264403644046440564406644076440864409644106441164412644136441464415644166441764418644196442064421644226442364424644256442664427644286442964430644316443264433644346443564436644376443864439644406444164442644436444464445644466444764448644496445064451644526445364454644556445664457644586445964460644616446264463644646446564466644676446864469644706447164472644736447464475644766447764478644796448064481644826448364484644856448664487644886448964490644916449264493644946449564496644976449864499645006450164502645036450464505645066450764508645096451064511645126451364514645156451664517645186451964520645216452264523645246452564526645276452864529645306453164532645336453464535645366453764538645396454064541645426454364544645456454664547645486454964550645516455264553645546455564556645576455864559645606456164562645636456464565645666456764568645696457064571645726457364574645756457664577645786457964580645816458264583645846458564586645876458864589645906459164592645936459464595645966459764598645996460064601646026460364604646056460664607646086460964610646116461264613646146461564616646176461864619646206462164622646236462464625646266462764628646296463064631646326463364634646356463664637646386463964640646416464264643646446464564646646476464864649646506465164652646536465464655646566465764658646596466064661646626466364664646656466664667646686466964670646716467264673646746467564676646776467864679646806468164682646836468464685646866468764688646896469064691646926469364694646956469664697646986469964700647016470264703647046470564706647076470864709647106471164712647136471464715647166471764718647196472064721647226472364724647256472664727647286472964730647316473264733647346473564736647376473864739647406474164742647436474464745647466474764748647496475064751647526475364754647556475664757647586475964760647616476264763647646476564766647676476864769647706477164772647736477464775647766477764778647796478064781647826478364784647856478664787647886478964790647916479264793647946479564796647976479864799648006480164802648036480464805648066480764808648096481064811648126481364814648156481664817648186481964820648216482264823648246482564826648276482864829648306483164832648336483464835648366483764838648396484064841648426484364844648456484664847648486484964850648516485264853648546485564856648576485864859648606486164862648636486464865648666486764868648696487064871648726487364874648756487664877648786487964880648816488264883648846488564886648876488864889648906489164892648936489464895648966489764898648996490064901649026490364904649056490664907649086490964910649116491264913649146491564916649176491864919649206492164922649236492464925649266492764928649296493064931649326493364934649356493664937649386493964940649416494264943649446494564946649476494864949649506495164952649536495464955649566495764958649596496064961649626496364964649656496664967649686496964970649716497264973649746497564976649776497864979649806498164982649836498464985649866498764988649896499064991649926499364994649956499664997649986499965000650016500265003650046500565006650076500865009650106501165012650136501465015650166501765018650196502065021650226502365024650256502665027650286502965030650316503265033650346503565036650376503865039650406504165042650436504465045650466504765048650496505065051650526505365054650556505665057650586505965060650616506265063650646506565066650676506865069650706507165072650736507465075650766507765078650796508065081650826508365084650856508665087650886508965090650916509265093650946509565096650976509865099651006510165102651036510465105651066510765108651096511065111651126511365114651156511665117651186511965120651216512265123651246512565126651276512865129651306513165132651336513465135651366513765138651396514065141651426514365144651456514665147651486514965150651516515265153651546515565156651576515865159651606516165162651636516465165651666516765168651696517065171651726517365174651756517665177651786517965180651816518265183651846518565186651876518865189651906519165192651936519465195651966519765198651996520065201652026520365204652056520665207652086520965210652116521265213652146521565216652176521865219652206522165222652236522465225652266522765228652296523065231652326523365234652356523665237652386523965240652416524265243652446524565246652476524865249652506525165252652536525465255652566525765258652596526065261652626526365264652656526665267652686526965270652716527265273652746527565276652776527865279652806528165282652836528465285652866528765288652896529065291652926529365294652956529665297652986529965300653016530265303653046530565306653076530865309653106531165312653136531465315653166531765318653196532065321653226532365324653256532665327653286532965330653316533265333653346533565336653376533865339653406534165342653436534465345653466534765348653496535065351653526535365354653556535665357653586535965360653616536265363653646536565366653676536865369653706537165372653736537465375653766537765378653796538065381653826538365384653856538665387653886538965390653916539265393653946539565396653976539865399654006540165402654036540465405654066540765408654096541065411654126541365414654156541665417654186541965420654216542265423654246542565426654276542865429654306543165432654336543465435654366543765438654396544065441654426544365444654456544665447654486544965450654516545265453654546545565456654576545865459654606546165462654636546465465654666546765468654696547065471654726547365474654756547665477654786547965480654816548265483654846548565486654876548865489654906549165492654936549465495654966549765498654996550065501655026550365504655056550665507655086550965510655116551265513655146551565516655176551865519655206552165522655236552465525655266552765528655296553065531655326553365534655356553665537655386553965540655416554265543655446554565546655476554865549655506555165552655536555465555655566555765558655596556065561655626556365564655656556665567655686556965570655716557265573655746557565576655776557865579655806558165582655836558465585655866558765588655896559065591655926559365594655956559665597655986559965600656016560265603656046560565606656076560865609656106561165612656136561465615656166561765618656196562065621656226562365624656256562665627656286562965630656316563265633656346563565636656376563865639656406564165642656436564465645656466564765648656496565065651656526565365654656556565665657656586565965660656616566265663656646566565666656676566865669656706567165672656736567465675656766567765678656796568065681656826568365684656856568665687656886568965690656916569265693656946569565696656976569865699657006570165702657036570465705657066570765708657096571065711657126571365714657156571665717657186571965720657216572265723657246572565726657276572865729657306573165732657336573465735657366573765738657396574065741657426574365744657456574665747657486574965750657516575265753657546575565756657576575865759657606576165762657636576465765657666576765768657696577065771657726577365774657756577665777657786577965780657816578265783657846578565786657876578865789657906579165792657936579465795657966579765798657996580065801658026580365804658056580665807658086580965810658116581265813658146581565816658176581865819658206582165822658236582465825658266582765828658296583065831658326583365834658356583665837658386583965840658416584265843658446584565846658476584865849658506585165852658536585465855658566585765858658596586065861658626586365864658656586665867658686586965870658716587265873658746587565876658776587865879658806588165882658836588465885658866588765888658896589065891658926589365894658956589665897658986589965900659016590265903659046590565906659076590865909659106591165912659136591465915659166591765918659196592065921659226592365924659256592665927659286592965930659316593265933659346593565936659376593865939659406594165942659436594465945659466594765948659496595065951659526595365954659556595665957659586595965960659616596265963659646596565966659676596865969659706597165972659736597465975659766597765978659796598065981659826598365984659856598665987659886598965990659916599265993659946599565996659976599865999660006600166002660036600466005660066600766008660096601066011660126601366014660156601666017660186601966020660216602266023660246602566026660276602866029660306603166032660336603466035660366603766038660396604066041660426604366044660456604666047660486604966050660516605266053660546605566056660576605866059660606606166062660636606466065660666606766068660696607066071660726607366074660756607666077660786607966080660816608266083660846608566086660876608866089660906609166092660936609466095660966609766098660996610066101661026610366104661056610666107661086610966110661116611266113661146611566116661176611866119661206612166122661236612466125661266612766128661296613066131661326613366134661356613666137661386613966140661416614266143661446614566146661476614866149661506615166152661536615466155661566615766158661596616066161661626616366164661656616666167661686616966170661716617266173661746617566176661776617866179661806618166182661836618466185661866618766188661896619066191661926619366194661956619666197661986619966200662016620266203662046620566206662076620866209662106621166212662136621466215662166621766218662196622066221662226622366224662256622666227662286622966230662316623266233662346623566236662376623866239662406624166242662436624466245662466624766248662496625066251662526625366254662556625666257662586625966260662616626266263662646626566266662676626866269662706627166272662736627466275662766627766278662796628066281662826628366284662856628666287662886628966290662916629266293662946629566296662976629866299663006630166302663036630466305663066630766308663096631066311663126631366314663156631666317663186631966320663216632266323663246632566326663276632866329663306633166332663336633466335663366633766338663396634066341663426634366344663456634666347663486634966350663516635266353663546635566356663576635866359663606636166362663636636466365663666636766368663696637066371663726637366374663756637666377663786637966380663816638266383663846638566386663876638866389663906639166392663936639466395663966639766398663996640066401664026640366404664056640666407664086640966410664116641266413664146641566416664176641866419664206642166422664236642466425664266642766428664296643066431664326643366434664356643666437664386643966440664416644266443664446644566446664476644866449664506645166452664536645466455664566645766458664596646066461664626646366464664656646666467664686646966470664716647266473664746647566476664776647866479664806648166482664836648466485664866648766488664896649066491664926649366494664956649666497664986649966500665016650266503665046650566506665076650866509665106651166512665136651466515665166651766518665196652066521665226652366524665256652666527665286652966530665316653266533665346653566536665376653866539665406654166542665436654466545665466654766548665496655066551665526655366554665556655666557665586655966560665616656266563665646656566566665676656866569665706657166572665736657466575665766657766578665796658066581665826658366584665856658666587665886658966590665916659266593665946659566596665976659866599666006660166602666036660466605666066660766608666096661066611666126661366614666156661666617666186661966620666216662266623666246662566626666276662866629666306663166632666336663466635666366663766638666396664066641666426664366644666456664666647666486664966650666516665266653666546665566656666576665866659666606666166662666636666466665666666666766668666696667066671666726667366674666756667666677666786667966680666816668266683666846668566686666876668866689666906669166692666936669466695666966669766698666996670066701667026670366704667056670666707667086670966710667116671266713667146671566716667176671866719667206672166722667236672466725667266672766728667296673066731667326673366734667356673666737667386673966740667416674266743667446674566746667476674866749667506675166752667536675466755667566675766758667596676066761667626676366764667656676666767667686676966770667716677266773667746677566776667776677866779667806678166782667836678466785667866678766788667896679066791667926679366794667956679666797667986679966800668016680266803668046680566806668076680866809668106681166812668136681466815668166681766818668196682066821668226682366824668256682666827668286682966830668316683266833668346683566836668376683866839668406684166842668436684466845668466684766848668496685066851668526685366854668556685666857668586685966860668616686266863668646686566866668676686866869668706687166872668736687466875668766687766878668796688066881668826688366884668856688666887668886688966890668916689266893668946689566896668976689866899669006690166902669036690466905669066690766908669096691066911669126691366914669156691666917669186691966920669216692266923669246692566926669276692866929669306693166932669336693466935669366693766938669396694066941669426694366944669456694666947669486694966950669516695266953669546695566956669576695866959669606696166962669636696466965669666696766968669696697066971669726697366974669756697666977669786697966980669816698266983669846698566986669876698866989669906699166992669936699466995669966699766998669996700067001670026700367004670056700667007670086700967010670116701267013670146701567016670176701867019670206702167022670236702467025670266702767028670296703067031670326703367034670356703667037670386703967040670416704267043670446704567046670476704867049670506705167052670536705467055670566705767058670596706067061670626706367064670656706667067670686706967070670716707267073670746707567076670776707867079670806708167082670836708467085670866708767088670896709067091670926709367094670956709667097670986709967100671016710267103671046710567106671076710867109671106711167112671136711467115671166711767118671196712067121671226712367124671256712667127671286712967130671316713267133671346713567136671376713867139671406714167142671436714467145671466714767148671496715067151671526715367154671556715667157671586715967160671616716267163671646716567166671676716867169671706717167172671736717467175671766717767178671796718067181671826718367184671856718667187671886718967190671916719267193671946719567196671976719867199672006720167202672036720467205672066720767208672096721067211672126721367214672156721667217672186721967220672216722267223672246722567226672276722867229672306723167232672336723467235672366723767238672396724067241672426724367244672456724667247672486724967250672516725267253672546725567256672576725867259672606726167262672636726467265672666726767268672696727067271672726727367274672756727667277672786727967280672816728267283672846728567286672876728867289672906729167292672936729467295672966729767298672996730067301673026730367304673056730667307673086730967310673116731267313673146731567316673176731867319673206732167322673236732467325673266732767328673296733067331673326733367334673356733667337673386733967340673416734267343673446734567346673476734867349673506735167352673536735467355673566735767358673596736067361673626736367364673656736667367673686736967370673716737267373673746737567376673776737867379673806738167382673836738467385673866738767388673896739067391673926739367394673956739667397673986739967400674016740267403674046740567406674076740867409674106741167412674136741467415674166741767418674196742067421674226742367424674256742667427674286742967430674316743267433674346743567436674376743867439674406744167442674436744467445674466744767448674496745067451674526745367454674556745667457674586745967460674616746267463674646746567466674676746867469674706747167472674736747467475674766747767478674796748067481674826748367484674856748667487674886748967490674916749267493674946749567496674976749867499675006750167502675036750467505675066750767508675096751067511675126751367514675156751667517675186751967520675216752267523675246752567526675276752867529675306753167532675336753467535675366753767538675396754067541675426754367544675456754667547675486754967550675516755267553675546755567556675576755867559675606756167562675636756467565675666756767568675696757067571675726757367574675756757667577675786757967580675816758267583675846758567586675876758867589675906759167592675936759467595675966759767598675996760067601676026760367604676056760667607676086760967610676116761267613676146761567616676176761867619676206762167622676236762467625676266762767628676296763067631676326763367634676356763667637676386763967640676416764267643676446764567646676476764867649676506765167652676536765467655676566765767658676596766067661676626766367664676656766667667676686766967670676716767267673676746767567676676776767867679676806768167682676836768467685676866768767688676896769067691676926769367694676956769667697676986769967700677016770267703677046770567706677076770867709677106771167712677136771467715677166771767718677196772067721677226772367724677256772667727677286772967730677316773267733677346773567736677376773867739677406774167742677436774467745677466774767748677496775067751677526775367754677556775667757677586775967760677616776267763677646776567766677676776867769677706777167772677736777467775677766777767778677796778067781677826778367784677856778667787677886778967790677916779267793677946779567796677976779867799678006780167802678036780467805678066780767808678096781067811678126781367814678156781667817678186781967820678216782267823678246782567826678276782867829678306783167832678336783467835678366783767838678396784067841678426784367844678456784667847678486784967850678516785267853678546785567856678576785867859678606786167862678636786467865678666786767868678696787067871678726787367874678756787667877678786787967880678816788267883678846788567886678876788867889678906789167892678936789467895678966789767898678996790067901679026790367904679056790667907679086790967910679116791267913679146791567916679176791867919679206792167922679236792467925679266792767928679296793067931679326793367934679356793667937679386793967940679416794267943679446794567946679476794867949679506795167952679536795467955679566795767958679596796067961679626796367964679656796667967679686796967970679716797267973679746797567976679776797867979679806798167982679836798467985679866798767988679896799067991679926799367994679956799667997679986799968000680016800268003680046800568006680076800868009680106801168012680136801468015680166801768018680196802068021680226802368024680256802668027680286802968030680316803268033680346803568036680376803868039680406804168042680436804468045680466804768048680496805068051680526805368054680556805668057680586805968060680616806268063680646806568066680676806868069680706807168072680736807468075680766807768078680796808068081680826808368084680856808668087680886808968090680916809268093680946809568096680976809868099681006810168102681036810468105681066810768108681096811068111681126811368114681156811668117681186811968120681216812268123681246812568126681276812868129681306813168132681336813468135681366813768138681396814068141681426814368144681456814668147681486814968150681516815268153681546815568156681576815868159681606816168162681636816468165681666816768168681696817068171681726817368174681756817668177681786817968180681816818268183681846818568186681876818868189681906819168192681936819468195681966819768198681996820068201682026820368204682056820668207682086820968210682116821268213682146821568216682176821868219682206822168222682236822468225682266822768228682296823068231682326823368234682356823668237682386823968240682416824268243682446824568246682476824868249682506825168252682536825468255682566825768258682596826068261682626826368264682656826668267682686826968270682716827268273682746827568276682776827868279682806828168282682836828468285682866828768288682896829068291682926829368294682956829668297682986829968300683016830268303683046830568306683076830868309683106831168312683136831468315683166831768318683196832068321683226832368324683256832668327683286832968330683316833268333683346833568336683376833868339683406834168342683436834468345683466834768348683496835068351683526835368354683556835668357683586835968360683616836268363683646836568366683676836868369683706837168372683736837468375683766837768378683796838068381683826838368384683856838668387683886838968390683916839268393683946839568396683976839868399684006840168402684036840468405684066840768408684096841068411684126841368414684156841668417684186841968420684216842268423684246842568426684276842868429684306843168432684336843468435684366843768438684396844068441684426844368444684456844668447684486844968450684516845268453684546845568456684576845868459684606846168462684636846468465684666846768468684696847068471684726847368474684756847668477684786847968480684816848268483684846848568486684876848868489684906849168492684936849468495684966849768498684996850068501685026850368504685056850668507685086850968510685116851268513685146851568516685176851868519685206852168522685236852468525685266852768528685296853068531685326853368534685356853668537685386853968540685416854268543685446854568546685476854868549685506855168552685536855468555685566855768558685596856068561685626856368564685656856668567685686856968570685716857268573685746857568576685776857868579685806858168582685836858468585685866858768588685896859068591685926859368594685956859668597685986859968600686016860268603686046860568606686076860868609686106861168612686136861468615686166861768618686196862068621686226862368624686256862668627686286862968630686316863268633686346863568636686376863868639686406864168642686436864468645686466864768648686496865068651686526865368654686556865668657686586865968660686616866268663686646866568666686676866868669686706867168672686736867468675686766867768678686796868068681686826868368684686856868668687686886868968690686916869268693686946869568696686976869868699687006870168702687036870468705687066870768708687096871068711687126871368714687156871668717687186871968720687216872268723687246872568726687276872868729687306873168732687336873468735687366873768738687396874068741687426874368744687456874668747687486874968750687516875268753687546875568756687576875868759687606876168762687636876468765687666876768768687696877068771687726877368774687756877668777687786877968780687816878268783687846878568786687876878868789687906879168792687936879468795687966879768798687996880068801688026880368804688056880668807688086880968810688116881268813688146881568816688176881868819688206882168822688236882468825688266882768828688296883068831688326883368834688356883668837688386883968840688416884268843688446884568846688476884868849688506885168852688536885468855688566885768858688596886068861688626886368864688656886668867688686886968870688716887268873688746887568876688776887868879688806888168882688836888468885688866888768888688896889068891688926889368894688956889668897688986889968900689016890268903689046890568906689076890868909689106891168912689136891468915689166891768918689196892068921689226892368924689256892668927689286892968930689316893268933689346893568936689376893868939689406894168942689436894468945689466894768948689496895068951689526895368954689556895668957689586895968960689616896268963689646896568966689676896868969689706897168972689736897468975689766897768978689796898068981689826898368984689856898668987689886898968990689916899268993689946899568996689976899868999690006900169002690036900469005690066900769008690096901069011690126901369014690156901669017690186901969020690216902269023690246902569026690276902869029690306903169032690336903469035690366903769038690396904069041690426904369044690456904669047690486904969050690516905269053690546905569056690576905869059690606906169062690636906469065690666906769068690696907069071690726907369074690756907669077690786907969080690816908269083690846908569086690876908869089690906909169092690936909469095690966909769098690996910069101691026910369104691056910669107691086910969110691116911269113691146911569116691176911869119691206912169122691236912469125691266912769128691296913069131691326913369134691356913669137691386913969140691416914269143691446914569146691476914869149691506915169152691536915469155691566915769158691596916069161691626916369164691656916669167691686916969170691716917269173691746917569176691776917869179691806918169182691836918469185691866918769188691896919069191691926919369194691956919669197691986919969200692016920269203692046920569206692076920869209692106921169212692136921469215692166921769218692196922069221692226922369224692256922669227692286922969230692316923269233692346923569236692376923869239692406924169242692436924469245692466924769248692496925069251692526925369254692556925669257692586925969260692616926269263692646926569266692676926869269692706927169272692736927469275692766927769278692796928069281692826928369284692856928669287692886928969290692916929269293692946929569296692976929869299693006930169302693036930469305693066930769308693096931069311693126931369314693156931669317693186931969320693216932269323693246932569326693276932869329693306933169332693336933469335693366933769338693396934069341693426934369344693456934669347693486934969350693516935269353693546935569356693576935869359693606936169362693636936469365693666936769368693696937069371693726937369374693756937669377693786937969380693816938269383693846938569386693876938869389693906939169392693936939469395693966939769398693996940069401694026940369404694056940669407694086940969410694116941269413694146941569416694176941869419694206942169422694236942469425694266942769428694296943069431694326943369434694356943669437694386943969440694416944269443694446944569446694476944869449694506945169452694536945469455694566945769458694596946069461694626946369464694656946669467694686946969470694716947269473694746947569476694776947869479694806948169482694836948469485694866948769488694896949069491694926949369494694956949669497694986949969500695016950269503695046950569506695076950869509695106951169512695136951469515695166951769518695196952069521695226952369524695256952669527695286952969530695316953269533695346953569536695376953869539695406954169542695436954469545695466954769548695496955069551695526955369554695556955669557695586955969560695616956269563695646956569566695676956869569695706957169572695736957469575695766957769578695796958069581695826958369584695856958669587695886958969590695916959269593695946959569596695976959869599696006960169602696036960469605696066960769608696096961069611696126961369614696156961669617696186961969620696216962269623696246962569626696276962869629696306963169632696336963469635696366963769638696396964069641696426964369644696456964669647696486964969650696516965269653696546965569656696576965869659696606966169662696636966469665696666966769668696696967069671696726967369674696756967669677696786967969680696816968269683696846968569686696876968869689696906969169692696936969469695696966969769698696996970069701697026970369704697056970669707697086970969710697116971269713697146971569716697176971869719697206972169722697236972469725697266972769728697296973069731697326973369734697356973669737697386973969740697416974269743697446974569746697476974869749697506975169752697536975469755697566975769758697596976069761697626976369764697656976669767697686976969770697716977269773697746977569776697776977869779697806978169782697836978469785697866978769788697896979069791697926979369794697956979669797697986979969800698016980269803698046980569806698076980869809698106981169812698136981469815698166981769818698196982069821698226982369824698256982669827698286982969830698316983269833698346983569836698376983869839698406984169842698436984469845698466984769848698496985069851698526985369854698556985669857698586985969860698616986269863698646986569866698676986869869698706987169872698736987469875698766987769878698796988069881698826988369884698856988669887698886988969890698916989269893698946989569896698976989869899699006990169902699036990469905699066990769908699096991069911699126991369914699156991669917699186991969920699216992269923699246992569926699276992869929699306993169932699336993469935699366993769938699396994069941699426994369944699456994669947699486994969950699516995269953699546995569956699576995869959699606996169962699636996469965699666996769968699696997069971699726997369974699756997669977699786997969980699816998269983699846998569986699876998869989699906999169992699936999469995699966999769998699997000070001700027000370004700057000670007700087000970010700117001270013700147001570016700177001870019700207002170022700237002470025700267002770028700297003070031700327003370034700357003670037700387003970040700417004270043700447004570046700477004870049700507005170052700537005470055700567005770058700597006070061700627006370064700657006670067700687006970070700717007270073700747007570076700777007870079700807008170082700837008470085700867008770088700897009070091700927009370094700957009670097700987009970100701017010270103701047010570106701077010870109701107011170112701137011470115701167011770118701197012070121701227012370124701257012670127701287012970130701317013270133701347013570136701377013870139701407014170142701437014470145701467014770148701497015070151701527015370154701557015670157701587015970160701617016270163701647016570166701677016870169701707017170172701737017470175701767017770178701797018070181701827018370184701857018670187701887018970190701917019270193701947019570196701977019870199702007020170202702037020470205702067020770208702097021070211702127021370214702157021670217702187021970220702217022270223702247022570226702277022870229702307023170232702337023470235702367023770238702397024070241702427024370244702457024670247702487024970250702517025270253702547025570256702577025870259702607026170262702637026470265702667026770268702697027070271702727027370274702757027670277702787027970280702817028270283702847028570286702877028870289702907029170292702937029470295702967029770298702997030070301703027030370304703057030670307703087030970310703117031270313703147031570316703177031870319703207032170322703237032470325703267032770328703297033070331703327033370334703357033670337703387033970340703417034270343703447034570346703477034870349703507035170352703537035470355703567035770358703597036070361703627036370364703657036670367703687036970370703717037270373703747037570376703777037870379703807038170382703837038470385703867038770388703897039070391703927039370394703957039670397703987039970400704017040270403704047040570406704077040870409704107041170412704137041470415704167041770418704197042070421704227042370424704257042670427704287042970430704317043270433704347043570436704377043870439704407044170442704437044470445704467044770448704497045070451704527045370454704557045670457704587045970460704617046270463704647046570466704677046870469704707047170472704737047470475704767047770478704797048070481704827048370484704857048670487704887048970490704917049270493704947049570496704977049870499705007050170502705037050470505705067050770508705097051070511705127051370514705157051670517705187051970520705217052270523705247052570526705277052870529705307053170532705337053470535705367053770538705397054070541705427054370544705457054670547705487054970550705517055270553705547055570556705577055870559705607056170562705637056470565705667056770568705697057070571705727057370574705757057670577705787057970580705817058270583705847058570586705877058870589705907059170592705937059470595705967059770598705997060070601706027060370604706057060670607706087060970610706117061270613706147061570616706177061870619706207062170622706237062470625706267062770628706297063070631706327063370634706357063670637706387063970640706417064270643706447064570646706477064870649706507065170652706537065470655706567065770658706597066070661706627066370664706657066670667706687066970670706717067270673706747067570676706777067870679706807068170682706837068470685706867068770688706897069070691706927069370694706957069670697706987069970700707017070270703707047070570706707077070870709707107071170712707137071470715707167071770718707197072070721707227072370724707257072670727707287072970730707317073270733707347073570736707377073870739707407074170742707437074470745707467074770748707497075070751707527075370754707557075670757707587075970760707617076270763707647076570766707677076870769707707077170772707737077470775707767077770778707797078070781707827078370784707857078670787707887078970790707917079270793707947079570796707977079870799708007080170802708037080470805708067080770808708097081070811708127081370814708157081670817708187081970820708217082270823708247082570826708277082870829708307083170832708337083470835708367083770838708397084070841708427084370844708457084670847708487084970850708517085270853708547085570856708577085870859708607086170862708637086470865708667086770868708697087070871708727087370874708757087670877708787087970880708817088270883708847088570886708877088870889708907089170892708937089470895708967089770898708997090070901709027090370904709057090670907709087090970910709117091270913709147091570916709177091870919709207092170922709237092470925709267092770928709297093070931709327093370934709357093670937709387093970940709417094270943709447094570946709477094870949709507095170952709537095470955709567095770958709597096070961709627096370964709657096670967709687096970970709717097270973709747097570976709777097870979709807098170982709837098470985709867098770988709897099070991709927099370994709957099670997709987099971000710017100271003710047100571006710077100871009710107101171012710137101471015710167101771018710197102071021710227102371024710257102671027710287102971030710317103271033710347103571036710377103871039710407104171042710437104471045710467104771048710497105071051710527105371054710557105671057710587105971060710617106271063710647106571066710677106871069710707107171072710737107471075710767107771078710797108071081710827108371084710857108671087710887108971090710917109271093710947109571096710977109871099711007110171102711037110471105711067110771108711097111071111711127111371114711157111671117711187111971120711217112271123711247112571126711277112871129711307113171132711337113471135711367113771138711397114071141711427114371144711457114671147711487114971150711517115271153711547115571156711577115871159711607116171162711637116471165711667116771168711697117071171711727117371174711757117671177711787117971180711817118271183711847118571186711877118871189711907119171192711937119471195711967119771198711997120071201712027120371204712057120671207712087120971210712117121271213712147121571216712177121871219712207122171222712237122471225712267122771228712297123071231712327123371234712357123671237712387123971240712417124271243712447124571246712477124871249712507125171252712537125471255712567125771258712597126071261712627126371264712657126671267712687126971270712717127271273712747127571276712777127871279712807128171282712837128471285712867128771288712897129071291712927129371294712957129671297712987129971300713017130271303713047130571306713077130871309713107131171312713137131471315713167131771318713197132071321713227132371324713257132671327713287132971330713317133271333713347133571336713377133871339713407134171342713437134471345713467134771348713497135071351713527135371354713557135671357713587135971360713617136271363713647136571366713677136871369713707137171372713737137471375713767137771378713797138071381713827138371384713857138671387713887138971390713917139271393713947139571396713977139871399714007140171402714037140471405714067140771408714097141071411714127141371414714157141671417714187141971420714217142271423714247142571426714277142871429714307143171432714337143471435714367143771438714397144071441714427144371444714457144671447714487144971450714517145271453714547145571456714577145871459714607146171462714637146471465714667146771468714697147071471714727147371474714757147671477714787147971480714817148271483714847148571486714877148871489714907149171492714937149471495714967149771498714997150071501715027150371504715057150671507715087150971510715117151271513715147151571516715177151871519715207152171522715237152471525715267152771528715297153071531715327153371534715357153671537715387153971540715417154271543715447154571546715477154871549715507155171552715537155471555715567155771558715597156071561715627156371564715657156671567715687156971570715717157271573715747157571576715777157871579715807158171582715837158471585715867158771588715897159071591715927159371594715957159671597715987159971600716017160271603716047160571606716077160871609716107161171612716137161471615716167161771618716197162071621716227162371624716257162671627716287162971630716317163271633716347163571636716377163871639716407164171642716437164471645716467164771648716497165071651716527165371654716557165671657716587165971660716617166271663716647166571666716677166871669716707167171672716737167471675716767167771678716797168071681716827168371684716857168671687716887168971690716917169271693716947169571696716977169871699717007170171702717037170471705717067170771708717097171071711717127171371714717157171671717717187171971720717217172271723717247172571726717277172871729717307173171732717337173471735717367173771738717397174071741717427174371744717457174671747717487174971750717517175271753717547175571756717577175871759717607176171762717637176471765717667176771768717697177071771717727177371774717757177671777717787177971780717817178271783717847178571786717877178871789717907179171792717937179471795717967179771798717997180071801718027180371804718057180671807718087180971810718117181271813718147181571816718177181871819718207182171822718237182471825718267182771828718297183071831718327183371834718357183671837718387183971840718417184271843718447184571846718477184871849718507185171852718537185471855718567185771858718597186071861718627186371864718657186671867718687186971870718717187271873718747187571876718777187871879718807188171882718837188471885718867188771888718897189071891718927189371894718957189671897718987189971900719017190271903719047190571906719077190871909719107191171912719137191471915719167191771918719197192071921719227192371924719257192671927719287192971930719317193271933719347193571936719377193871939719407194171942719437194471945719467194771948719497195071951719527195371954719557195671957719587195971960719617196271963719647196571966719677196871969719707197171972719737197471975719767197771978719797198071981719827198371984719857198671987719887198971990719917199271993719947199571996719977199871999720007200172002720037200472005720067200772008720097201072011720127201372014720157201672017720187201972020720217202272023720247202572026720277202872029720307203172032720337203472035720367203772038720397204072041720427204372044720457204672047720487204972050720517205272053720547205572056720577205872059720607206172062720637206472065720667206772068720697207072071720727207372074720757207672077720787207972080720817208272083720847208572086720877208872089720907209172092720937209472095720967209772098720997210072101721027210372104721057210672107721087210972110721117211272113721147211572116721177211872119721207212172122721237212472125721267212772128721297213072131721327213372134721357213672137721387213972140721417214272143721447214572146721477214872149721507215172152721537215472155721567215772158721597216072161721627216372164721657216672167721687216972170721717217272173721747217572176721777217872179721807218172182721837218472185721867218772188721897219072191721927219372194721957219672197721987219972200722017220272203722047220572206722077220872209722107221172212722137221472215722167221772218722197222072221722227222372224722257222672227722287222972230722317223272233722347223572236722377223872239722407224172242722437224472245722467224772248722497225072251722527225372254722557225672257722587225972260722617226272263722647226572266722677226872269722707227172272722737227472275722767227772278722797228072281722827228372284722857228672287722887228972290722917229272293722947229572296722977229872299723007230172302723037230472305723067230772308723097231072311723127231372314723157231672317723187231972320723217232272323723247232572326723277232872329723307233172332723337233472335723367233772338723397234072341723427234372344723457234672347723487234972350723517235272353723547235572356723577235872359723607236172362723637236472365723667236772368723697237072371723727237372374723757237672377723787237972380723817238272383723847238572386723877238872389723907239172392723937239472395723967239772398723997240072401724027240372404724057240672407724087240972410724117241272413724147241572416724177241872419724207242172422724237242472425724267242772428724297243072431724327243372434724357243672437724387243972440724417244272443724447244572446724477244872449724507245172452724537245472455724567245772458724597246072461724627246372464724657246672467724687246972470724717247272473724747247572476724777247872479724807248172482724837248472485724867248772488724897249072491724927249372494724957249672497724987249972500725017250272503725047250572506725077250872509725107251172512725137251472515725167251772518725197252072521725227252372524725257252672527725287252972530725317253272533725347253572536725377253872539725407254172542725437254472545725467254772548725497255072551725527255372554725557255672557725587255972560725617256272563725647256572566725677256872569725707257172572725737257472575725767257772578725797258072581725827258372584725857258672587725887258972590725917259272593725947259572596725977259872599726007260172602726037260472605726067260772608726097261072611726127261372614726157261672617726187261972620726217262272623726247262572626726277262872629726307263172632726337263472635726367263772638726397264072641726427264372644726457264672647726487264972650726517265272653726547265572656726577265872659726607266172662726637266472665726667266772668726697267072671726727267372674726757267672677726787267972680726817268272683726847268572686726877268872689726907269172692726937269472695726967269772698726997270072701727027270372704727057270672707727087270972710727117271272713727147271572716727177271872719727207272172722727237272472725727267272772728727297273072731727327273372734727357273672737727387273972740727417274272743727447274572746727477274872749727507275172752727537275472755727567275772758727597276072761727627276372764727657276672767727687276972770727717277272773727747277572776727777277872779727807278172782727837278472785727867278772788727897279072791727927279372794727957279672797727987279972800728017280272803728047280572806728077280872809728107281172812728137281472815728167281772818728197282072821728227282372824728257282672827728287282972830728317283272833728347283572836728377283872839728407284172842728437284472845728467284772848728497285072851728527285372854728557285672857728587285972860728617286272863728647286572866728677286872869728707287172872728737287472875728767287772878728797288072881728827288372884728857288672887728887288972890728917289272893728947289572896728977289872899729007290172902729037290472905729067290772908729097291072911729127291372914729157291672917729187291972920729217292272923729247292572926729277292872929729307293172932729337293472935729367293772938729397294072941729427294372944729457294672947729487294972950729517295272953729547295572956729577295872959729607296172962729637296472965729667296772968729697297072971729727297372974729757297672977729787297972980729817298272983729847298572986729877298872989729907299172992729937299472995729967299772998729997300073001730027300373004730057300673007730087300973010730117301273013730147301573016730177301873019730207302173022730237302473025730267302773028730297303073031730327303373034730357303673037730387303973040730417304273043730447304573046730477304873049730507305173052730537305473055730567305773058730597306073061730627306373064730657306673067730687306973070730717307273073730747307573076730777307873079730807308173082730837308473085730867308773088730897309073091730927309373094730957309673097730987309973100731017310273103731047310573106731077310873109731107311173112731137311473115731167311773118731197312073121731227312373124731257312673127731287312973130731317313273133731347313573136731377313873139731407314173142731437314473145731467314773148731497315073151731527315373154731557315673157731587315973160731617316273163731647316573166731677316873169731707317173172731737317473175731767317773178731797318073181731827318373184731857318673187731887318973190731917319273193731947319573196731977319873199732007320173202732037320473205732067320773208732097321073211732127321373214732157321673217732187321973220732217322273223732247322573226732277322873229732307323173232732337323473235732367323773238732397324073241732427324373244732457324673247732487324973250732517325273253732547325573256732577325873259732607326173262732637326473265732667326773268732697327073271732727327373274732757327673277732787327973280732817328273283732847328573286732877328873289732907329173292732937329473295732967329773298732997330073301733027330373304733057330673307733087330973310733117331273313733147331573316733177331873319733207332173322733237332473325733267332773328733297333073331733327333373334733357333673337733387333973340733417334273343733447334573346733477334873349733507335173352733537335473355733567335773358733597336073361733627336373364733657336673367733687336973370733717337273373733747337573376733777337873379733807338173382733837338473385733867338773388733897339073391733927339373394733957339673397733987339973400734017340273403734047340573406734077340873409734107341173412734137341473415734167341773418734197342073421734227342373424734257342673427734287342973430734317343273433734347343573436734377343873439734407344173442734437344473445734467344773448734497345073451734527345373454734557345673457734587345973460734617346273463734647346573466734677346873469734707347173472734737347473475734767347773478734797348073481734827348373484734857348673487734887348973490734917349273493734947349573496734977349873499735007350173502735037350473505735067350773508735097351073511735127351373514735157351673517735187351973520735217352273523735247352573526735277352873529735307353173532735337353473535735367353773538735397354073541735427354373544735457354673547735487354973550735517355273553735547355573556735577355873559735607356173562735637356473565735667356773568735697357073571735727357373574735757357673577735787357973580735817358273583735847358573586735877358873589735907359173592735937359473595735967359773598735997360073601736027360373604736057360673607736087360973610736117361273613736147361573616736177361873619736207362173622736237362473625736267362773628736297363073631736327363373634736357363673637736387363973640736417364273643736447364573646736477364873649736507365173652736537365473655736567365773658736597366073661736627366373664736657366673667736687366973670736717367273673736747367573676736777367873679736807368173682736837368473685736867368773688736897369073691736927369373694736957369673697736987369973700737017370273703737047370573706737077370873709737107371173712737137371473715737167371773718737197372073721737227372373724737257372673727737287372973730737317373273733737347373573736737377373873739737407374173742737437374473745737467374773748737497375073751737527375373754737557375673757737587375973760737617376273763737647376573766737677376873769737707377173772737737377473775737767377773778737797378073781737827378373784737857378673787737887378973790737917379273793737947379573796737977379873799738007380173802738037380473805738067380773808738097381073811738127381373814738157381673817738187381973820738217382273823738247382573826738277382873829738307383173832738337383473835738367383773838738397384073841738427384373844738457384673847738487384973850738517385273853738547385573856738577385873859738607386173862738637386473865738667386773868738697387073871738727387373874738757387673877738787387973880738817388273883738847388573886738877388873889738907389173892738937389473895738967389773898738997390073901739027390373904739057390673907739087390973910739117391273913739147391573916739177391873919739207392173922739237392473925739267392773928739297393073931739327393373934739357393673937739387393973940739417394273943739447394573946739477394873949739507395173952739537395473955739567395773958739597396073961739627396373964739657396673967739687396973970739717397273973739747397573976739777397873979739807398173982739837398473985739867398773988739897399073991739927399373994739957399673997739987399974000740017400274003740047400574006740077400874009740107401174012740137401474015740167401774018740197402074021740227402374024740257402674027740287402974030740317403274033740347403574036740377403874039740407404174042740437404474045740467404774048740497405074051740527405374054740557405674057740587405974060740617406274063740647406574066740677406874069740707407174072740737407474075740767407774078740797408074081740827408374084740857408674087740887408974090740917409274093740947409574096740977409874099741007410174102741037410474105741067410774108741097411074111741127411374114741157411674117741187411974120741217412274123741247412574126741277412874129741307413174132741337413474135741367413774138741397414074141741427414374144741457414674147741487414974150741517415274153741547415574156741577415874159741607416174162741637416474165741667416774168741697417074171741727417374174741757417674177741787417974180741817418274183741847418574186741877418874189741907419174192741937419474195741967419774198741997420074201742027420374204742057420674207742087420974210742117421274213742147421574216742177421874219742207422174222742237422474225742267422774228742297423074231742327423374234742357423674237742387423974240742417424274243742447424574246742477424874249742507425174252742537425474255742567425774258742597426074261742627426374264742657426674267742687426974270742717427274273742747427574276742777427874279742807428174282742837428474285742867428774288742897429074291742927429374294742957429674297742987429974300743017430274303743047430574306743077430874309743107431174312743137431474315743167431774318743197432074321743227432374324743257432674327743287432974330743317433274333743347433574336743377433874339743407434174342743437434474345743467434774348743497435074351743527435374354743557435674357743587435974360743617436274363743647436574366743677436874369743707437174372743737437474375743767437774378743797438074381743827438374384743857438674387743887438974390743917439274393743947439574396743977439874399744007440174402744037440474405744067440774408744097441074411744127441374414744157441674417744187441974420744217442274423744247442574426744277442874429744307443174432744337443474435744367443774438744397444074441744427444374444744457444674447744487444974450744517445274453744547445574456744577445874459744607446174462744637446474465744667446774468744697447074471744727447374474744757447674477744787447974480744817448274483744847448574486744877448874489744907449174492744937449474495744967449774498744997450074501745027450374504745057450674507745087450974510745117451274513745147451574516745177451874519745207452174522745237452474525745267452774528745297453074531745327453374534745357453674537745387453974540745417454274543745447454574546745477454874549745507455174552745537455474555745567455774558745597456074561745627456374564745657456674567745687456974570745717457274573745747457574576745777457874579745807458174582745837458474585745867458774588745897459074591745927459374594745957459674597745987459974600746017460274603746047460574606746077460874609746107461174612746137461474615746167461774618746197462074621746227462374624746257462674627746287462974630746317463274633746347463574636746377463874639746407464174642746437464474645746467464774648746497465074651746527465374654746557465674657746587465974660746617466274663746647466574666746677466874669746707467174672746737467474675746767467774678746797468074681746827468374684746857468674687746887468974690746917469274693746947469574696746977469874699747007470174702747037470474705747067470774708747097471074711747127471374714747157471674717747187471974720747217472274723747247472574726747277472874729747307473174732747337473474735747367473774738747397474074741747427474374744747457474674747747487474974750747517475274753747547475574756747577475874759747607476174762747637476474765747667476774768747697477074771747727477374774747757477674777747787477974780747817478274783747847478574786747877478874789747907479174792747937479474795747967479774798747997480074801748027480374804748057480674807748087480974810748117481274813748147481574816748177481874819748207482174822748237482474825748267482774828748297483074831748327483374834748357483674837748387483974840748417484274843748447484574846748477484874849748507485174852748537485474855748567485774858748597486074861748627486374864748657486674867748687486974870748717487274873748747487574876748777487874879748807488174882748837488474885748867488774888748897489074891748927489374894748957489674897748987489974900749017490274903749047490574906749077490874909749107491174912749137491474915749167491774918749197492074921749227492374924749257492674927749287492974930749317493274933749347493574936749377493874939749407494174942749437494474945749467494774948749497495074951749527495374954749557495674957749587495974960749617496274963749647496574966749677496874969749707497174972749737497474975749767497774978749797498074981749827498374984749857498674987749887498974990749917499274993749947499574996749977499874999750007500175002750037500475005750067500775008750097501075011750127501375014750157501675017750187501975020750217502275023750247502575026750277502875029750307503175032750337503475035750367503775038750397504075041750427504375044750457504675047750487504975050750517505275053750547505575056750577505875059750607506175062750637506475065750667506775068750697507075071750727507375074750757507675077750787507975080750817508275083750847508575086750877508875089750907509175092750937509475095750967509775098750997510075101751027510375104751057510675107751087510975110751117511275113751147511575116751177511875119751207512175122751237512475125751267512775128751297513075131751327513375134751357513675137751387513975140751417514275143751447514575146751477514875149751507515175152751537515475155751567515775158751597516075161751627516375164751657516675167751687516975170751717517275173751747517575176751777517875179751807518175182751837518475185751867518775188751897519075191751927519375194751957519675197751987519975200752017520275203752047520575206752077520875209752107521175212752137521475215752167521775218752197522075221752227522375224752257522675227752287522975230752317523275233752347523575236752377523875239752407524175242752437524475245752467524775248752497525075251752527525375254752557525675257752587525975260752617526275263752647526575266752677526875269752707527175272752737527475275752767527775278752797528075281752827528375284752857528675287752887528975290752917529275293752947529575296752977529875299753007530175302753037530475305753067530775308753097531075311753127531375314753157531675317753187531975320753217532275323753247532575326753277532875329753307533175332753337533475335753367533775338753397534075341753427534375344753457534675347753487534975350753517535275353753547535575356753577535875359753607536175362753637536475365753667536775368753697537075371753727537375374753757537675377753787537975380753817538275383753847538575386753877538875389753907539175392753937539475395753967539775398753997540075401754027540375404754057540675407754087540975410754117541275413754147541575416754177541875419754207542175422754237542475425754267542775428754297543075431754327543375434754357543675437754387543975440754417544275443754447544575446754477544875449754507545175452754537545475455754567545775458754597546075461754627546375464754657546675467754687546975470754717547275473754747547575476754777547875479754807548175482754837548475485754867548775488754897549075491754927549375494754957549675497754987549975500755017550275503755047550575506755077550875509755107551175512755137551475515755167551775518755197552075521755227552375524755257552675527755287552975530755317553275533755347553575536755377553875539755407554175542755437554475545755467554775548755497555075551755527555375554755557555675557755587555975560755617556275563755647556575566755677556875569755707557175572755737557475575755767557775578755797558075581755827558375584755857558675587755887558975590755917559275593755947559575596755977559875599756007560175602756037560475605756067560775608756097561075611756127561375614756157561675617756187561975620756217562275623756247562575626756277562875629756307563175632756337563475635756367563775638756397564075641756427564375644756457564675647756487564975650756517565275653756547565575656756577565875659756607566175662756637566475665756667566775668756697567075671756727567375674756757567675677756787567975680756817568275683756847568575686756877568875689756907569175692756937569475695756967569775698756997570075701757027570375704757057570675707757087570975710757117571275713757147571575716757177571875719757207572175722757237572475725757267572775728757297573075731757327573375734757357573675737757387573975740757417574275743757447574575746757477574875749757507575175752757537575475755757567575775758757597576075761757627576375764757657576675767757687576975770757717577275773757747577575776757777577875779757807578175782757837578475785757867578775788757897579075791757927579375794757957579675797757987579975800758017580275803758047580575806758077580875809758107581175812758137581475815758167581775818758197582075821758227582375824758257582675827758287582975830758317583275833758347583575836758377583875839758407584175842758437584475845758467584775848758497585075851758527585375854758557585675857758587585975860758617586275863758647586575866758677586875869758707587175872758737587475875758767587775878758797588075881758827588375884758857588675887758887588975890758917589275893758947589575896758977589875899759007590175902759037590475905759067590775908759097591075911759127591375914759157591675917759187591975920759217592275923759247592575926759277592875929759307593175932759337593475935759367593775938759397594075941759427594375944759457594675947759487594975950759517595275953759547595575956759577595875959759607596175962759637596475965759667596775968759697597075971759727597375974759757597675977759787597975980759817598275983759847598575986759877598875989759907599175992759937599475995759967599775998759997600076001760027600376004760057600676007760087600976010760117601276013760147601576016760177601876019760207602176022760237602476025760267602776028760297603076031760327603376034760357603676037760387603976040760417604276043760447604576046760477604876049760507605176052760537605476055760567605776058760597606076061760627606376064760657606676067760687606976070760717607276073760747607576076760777607876079760807608176082760837608476085760867608776088760897609076091760927609376094760957609676097760987609976100761017610276103761047610576106761077610876109761107611176112761137611476115761167611776118761197612076121761227612376124761257612676127761287612976130761317613276133761347613576136761377613876139761407614176142761437614476145761467614776148761497615076151761527615376154761557615676157761587615976160761617616276163761647616576166761677616876169761707617176172761737617476175761767617776178761797618076181761827618376184761857618676187761887618976190761917619276193761947619576196761977619876199762007620176202762037620476205762067620776208762097621076211762127621376214762157621676217762187621976220762217622276223762247622576226762277622876229762307623176232762337623476235762367623776238762397624076241762427624376244762457624676247762487624976250762517625276253762547625576256762577625876259762607626176262762637626476265762667626776268762697627076271762727627376274762757627676277762787627976280762817628276283762847628576286762877628876289762907629176292762937629476295762967629776298762997630076301763027630376304763057630676307763087630976310763117631276313763147631576316763177631876319763207632176322763237632476325763267632776328763297633076331763327633376334763357633676337763387633976340763417634276343763447634576346763477634876349763507635176352763537635476355763567635776358763597636076361763627636376364763657636676367763687636976370763717637276373763747637576376763777637876379763807638176382763837638476385763867638776388763897639076391763927639376394763957639676397763987639976400764017640276403764047640576406764077640876409764107641176412764137641476415764167641776418764197642076421764227642376424764257642676427764287642976430764317643276433764347643576436764377643876439764407644176442764437644476445764467644776448764497645076451764527645376454764557645676457764587645976460764617646276463764647646576466764677646876469764707647176472764737647476475764767647776478764797648076481764827648376484764857648676487764887648976490764917649276493764947649576496764977649876499765007650176502765037650476505765067650776508765097651076511765127651376514765157651676517765187651976520765217652276523765247652576526765277652876529765307653176532765337653476535765367653776538765397654076541765427654376544765457654676547765487654976550765517655276553765547655576556765577655876559765607656176562765637656476565765667656776568765697657076571765727657376574765757657676577765787657976580765817658276583765847658576586765877658876589765907659176592765937659476595765967659776598765997660076601766027660376604766057660676607766087660976610766117661276613766147661576616766177661876619766207662176622766237662476625766267662776628766297663076631766327663376634766357663676637766387663976640766417664276643766447664576646766477664876649766507665176652766537665476655766567665776658766597666076661766627666376664766657666676667766687666976670766717667276673766747667576676766777667876679766807668176682766837668476685766867668776688766897669076691766927669376694766957669676697766987669976700767017670276703767047670576706767077670876709767107671176712767137671476715767167671776718767197672076721767227672376724767257672676727767287672976730767317673276733767347673576736767377673876739767407674176742767437674476745767467674776748767497675076751767527675376754767557675676757767587675976760767617676276763767647676576766767677676876769767707677176772767737677476775767767677776778767797678076781767827678376784767857678676787767887678976790767917679276793767947679576796767977679876799768007680176802768037680476805768067680776808768097681076811768127681376814768157681676817768187681976820768217682276823768247682576826768277682876829768307683176832768337683476835768367683776838768397684076841768427684376844768457684676847768487684976850768517685276853768547685576856768577685876859768607686176862768637686476865768667686776868768697687076871768727687376874768757687676877768787687976880768817688276883768847688576886768877688876889768907689176892768937689476895768967689776898768997690076901769027690376904769057690676907769087690976910769117691276913769147691576916769177691876919769207692176922769237692476925769267692776928769297693076931769327693376934769357693676937769387693976940769417694276943769447694576946769477694876949769507695176952769537695476955769567695776958769597696076961769627696376964769657696676967769687696976970769717697276973769747697576976769777697876979769807698176982769837698476985769867698776988769897699076991769927699376994769957699676997769987699977000770017700277003770047700577006770077700877009770107701177012770137701477015770167701777018770197702077021770227702377024770257702677027770287702977030770317703277033770347703577036770377703877039770407704177042770437704477045770467704777048770497705077051770527705377054770557705677057770587705977060770617706277063770647706577066770677706877069770707707177072770737707477075770767707777078770797708077081770827708377084770857708677087770887708977090770917709277093770947709577096770977709877099771007710177102771037710477105771067710777108771097711077111771127711377114771157711677117771187711977120771217712277123771247712577126771277712877129771307713177132771337713477135771367713777138771397714077141771427714377144771457714677147771487714977150771517715277153771547715577156771577715877159771607716177162771637716477165771667716777168771697717077171771727717377174771757717677177771787717977180771817718277183771847718577186771877718877189771907719177192771937719477195771967719777198771997720077201772027720377204772057720677207772087720977210772117721277213772147721577216772177721877219772207722177222772237722477225772267722777228772297723077231772327723377234772357723677237772387723977240772417724277243772447724577246772477724877249772507725177252772537725477255772567725777258772597726077261772627726377264772657726677267772687726977270772717727277273772747727577276772777727877279772807728177282772837728477285772867728777288772897729077291772927729377294772957729677297772987729977300773017730277303773047730577306773077730877309773107731177312773137731477315773167731777318773197732077321773227732377324773257732677327773287732977330773317733277333773347733577336773377733877339773407734177342773437734477345773467734777348773497735077351773527735377354773557735677357773587735977360773617736277363773647736577366773677736877369773707737177372773737737477375773767737777378773797738077381773827738377384773857738677387773887738977390773917739277393773947739577396773977739877399774007740177402774037740477405774067740777408774097741077411774127741377414774157741677417774187741977420774217742277423774247742577426774277742877429774307743177432774337743477435774367743777438774397744077441774427744377444774457744677447774487744977450774517745277453774547745577456774577745877459774607746177462774637746477465774667746777468774697747077471774727747377474774757747677477774787747977480774817748277483774847748577486774877748877489774907749177492774937749477495774967749777498774997750077501775027750377504775057750677507775087750977510775117751277513775147751577516775177751877519775207752177522775237752477525775267752777528775297753077531775327753377534775357753677537775387753977540775417754277543775447754577546775477754877549775507755177552775537755477555775567755777558775597756077561775627756377564775657756677567775687756977570775717757277573775747757577576775777757877579775807758177582775837758477585775867758777588775897759077591775927759377594775957759677597775987759977600776017760277603776047760577606776077760877609776107761177612776137761477615776167761777618776197762077621776227762377624776257762677627776287762977630776317763277633776347763577636776377763877639776407764177642776437764477645776467764777648776497765077651776527765377654776557765677657776587765977660776617766277663776647766577666776677766877669776707767177672776737767477675776767767777678776797768077681776827768377684776857768677687776887768977690776917769277693776947769577696776977769877699777007770177702777037770477705777067770777708777097771077711777127771377714777157771677717777187771977720777217772277723777247772577726777277772877729777307773177732777337773477735777367773777738777397774077741777427774377744777457774677747777487774977750777517775277753777547775577756777577775877759777607776177762777637776477765777667776777768777697777077771777727777377774777757777677777777787777977780777817778277783777847778577786777877778877789777907779177792777937779477795777967779777798777997780077801778027780377804778057780677807778087780977810778117781277813778147781577816778177781877819778207782177822778237782477825778267782777828778297783077831778327783377834778357783677837778387783977840778417784277843778447784577846778477784877849778507785177852778537785477855778567785777858778597786077861778627786377864778657786677867778687786977870778717787277873778747787577876778777787877879778807788177882778837788477885778867788777888778897789077891778927789377894778957789677897778987789977900779017790277903779047790577906779077790877909779107791177912779137791477915779167791777918779197792077921779227792377924779257792677927779287792977930779317793277933779347793577936779377793877939779407794177942779437794477945779467794777948779497795077951779527795377954779557795677957779587795977960779617796277963779647796577966779677796877969779707797177972779737797477975779767797777978779797798077981779827798377984779857798677987779887798977990779917799277993779947799577996779977799877999780007800178002780037800478005780067800778008780097801078011780127801378014780157801678017780187801978020780217802278023780247802578026780277802878029780307803178032780337803478035780367803778038780397804078041780427804378044780457804678047780487804978050780517805278053780547805578056780577805878059780607806178062780637806478065780667806778068780697807078071780727807378074780757807678077780787807978080780817808278083780847808578086780877808878089780907809178092780937809478095780967809778098780997810078101781027810378104781057810678107781087810978110781117811278113781147811578116781177811878119781207812178122781237812478125781267812778128781297813078131781327813378134781357813678137781387813978140781417814278143781447814578146781477814878149781507815178152781537815478155781567815778158781597816078161781627816378164781657816678167781687816978170781717817278173781747817578176781777817878179781807818178182781837818478185781867818778188781897819078191781927819378194781957819678197781987819978200782017820278203782047820578206782077820878209782107821178212782137821478215782167821778218782197822078221782227822378224782257822678227782287822978230782317823278233782347823578236782377823878239782407824178242782437824478245782467824778248782497825078251782527825378254782557825678257782587825978260782617826278263782647826578266782677826878269782707827178272782737827478275782767827778278782797828078281782827828378284782857828678287782887828978290782917829278293782947829578296782977829878299783007830178302783037830478305783067830778308783097831078311783127831378314783157831678317783187831978320783217832278323783247832578326783277832878329783307833178332783337833478335783367833778338783397834078341783427834378344783457834678347783487834978350783517835278353783547835578356783577835878359783607836178362783637836478365783667836778368783697837078371783727837378374783757837678377783787837978380783817838278383783847838578386783877838878389783907839178392783937839478395783967839778398783997840078401784027840378404784057840678407784087840978410784117841278413784147841578416784177841878419784207842178422784237842478425784267842778428784297843078431784327843378434784357843678437784387843978440784417844278443784447844578446784477844878449784507845178452784537845478455784567845778458784597846078461784627846378464784657846678467784687846978470784717847278473784747847578476784777847878479784807848178482784837848478485784867848778488784897849078491784927849378494784957849678497784987849978500785017850278503785047850578506785077850878509785107851178512785137851478515785167851778518785197852078521785227852378524785257852678527785287852978530785317853278533785347853578536785377853878539785407854178542785437854478545785467854778548785497855078551785527855378554785557855678557785587855978560785617856278563785647856578566785677856878569785707857178572785737857478575785767857778578785797858078581785827858378584785857858678587785887858978590785917859278593785947859578596785977859878599786007860178602786037860478605786067860778608786097861078611786127861378614786157861678617786187861978620786217862278623786247862578626786277862878629786307863178632786337863478635786367863778638786397864078641786427864378644786457864678647786487864978650786517865278653786547865578656786577865878659786607866178662786637866478665786667866778668786697867078671786727867378674786757867678677786787867978680786817868278683786847868578686786877868878689786907869178692786937869478695786967869778698786997870078701787027870378704787057870678707787087870978710787117871278713787147871578716787177871878719787207872178722787237872478725787267872778728787297873078731787327873378734787357873678737787387873978740787417874278743787447874578746787477874878749787507875178752787537875478755787567875778758787597876078761787627876378764787657876678767787687876978770787717877278773787747877578776787777877878779787807878178782787837878478785787867878778788787897879078791787927879378794787957879678797787987879978800788017880278803788047880578806788077880878809788107881178812788137881478815788167881778818788197882078821788227882378824788257882678827788287882978830788317883278833788347883578836788377883878839788407884178842788437884478845788467884778848788497885078851788527885378854788557885678857788587885978860788617886278863788647886578866788677886878869788707887178872788737887478875788767887778878788797888078881788827888378884788857888678887788887888978890788917889278893788947889578896788977889878899789007890178902789037890478905789067890778908789097891078911789127891378914789157891678917789187891978920789217892278923789247892578926789277892878929789307893178932789337893478935789367893778938789397894078941789427894378944789457894678947789487894978950789517895278953789547895578956789577895878959789607896178962789637896478965789667896778968789697897078971789727897378974789757897678977789787897978980789817898278983789847898578986789877898878989789907899178992789937899478995789967899778998789997900079001790027900379004790057900679007790087900979010790117901279013790147901579016790177901879019790207902179022790237902479025790267902779028790297903079031790327903379034790357903679037790387903979040790417904279043790447904579046790477904879049790507905179052790537905479055790567905779058790597906079061790627906379064790657906679067790687906979070790717907279073790747907579076790777907879079790807908179082790837908479085790867908779088790897909079091790927909379094790957909679097790987909979100791017910279103791047910579106791077910879109791107911179112791137911479115791167911779118791197912079121791227912379124791257912679127791287912979130791317913279133791347913579136791377913879139791407914179142791437914479145791467914779148791497915079151791527915379154791557915679157791587915979160791617916279163791647916579166791677916879169791707917179172791737917479175791767917779178791797918079181791827918379184791857918679187791887918979190791917919279193791947919579196791977919879199792007920179202792037920479205792067920779208792097921079211792127921379214792157921679217792187921979220792217922279223792247922579226792277922879229792307923179232792337923479235792367923779238792397924079241792427924379244792457924679247792487924979250792517925279253792547925579256792577925879259792607926179262792637926479265792667926779268792697927079271792727927379274792757927679277792787927979280792817928279283792847928579286792877928879289792907929179292792937929479295792967929779298792997930079301793027930379304793057930679307793087930979310793117931279313793147931579316793177931879319793207932179322793237932479325793267932779328793297933079331793327933379334793357933679337793387933979340793417934279343793447934579346793477934879349793507935179352793537935479355793567935779358793597936079361793627936379364793657936679367793687936979370793717937279373793747937579376793777937879379793807938179382793837938479385793867938779388793897939079391793927939379394793957939679397793987939979400794017940279403794047940579406794077940879409794107941179412794137941479415794167941779418794197942079421794227942379424794257942679427794287942979430794317943279433794347943579436794377943879439794407944179442794437944479445794467944779448794497945079451794527945379454794557945679457794587945979460794617946279463794647946579466794677946879469794707947179472794737947479475794767947779478794797948079481794827948379484794857948679487794887948979490794917949279493794947949579496794977949879499795007950179502795037950479505795067950779508795097951079511795127951379514795157951679517795187951979520795217952279523795247952579526795277952879529795307953179532795337953479535795367953779538795397954079541795427954379544795457954679547795487954979550795517955279553795547955579556795577955879559795607956179562795637956479565795667956779568795697957079571795727957379574795757957679577795787957979580795817958279583795847958579586795877958879589795907959179592795937959479595795967959779598795997960079601796027960379604796057960679607796087960979610796117961279613796147961579616796177961879619796207962179622796237962479625796267962779628796297963079631796327963379634796357963679637796387963979640796417964279643796447964579646796477964879649796507965179652796537965479655796567965779658796597966079661796627966379664796657966679667796687966979670796717967279673796747967579676796777967879679796807968179682796837968479685796867968779688796897969079691796927969379694796957969679697796987969979700797017970279703797047970579706797077970879709797107971179712797137971479715797167971779718797197972079721797227972379724797257972679727797287972979730797317973279733797347973579736797377973879739797407974179742797437974479745797467974779748797497975079751797527975379754797557975679757797587975979760797617976279763797647976579766797677976879769797707977179772797737977479775797767977779778797797978079781797827978379784797857978679787797887978979790797917979279793797947979579796797977979879799798007980179802798037980479805798067980779808798097981079811798127981379814798157981679817798187981979820798217982279823798247982579826798277982879829798307983179832798337983479835798367983779838798397984079841798427984379844798457984679847798487984979850798517985279853798547985579856798577985879859798607986179862798637986479865798667986779868798697987079871798727987379874798757987679877798787987979880798817988279883798847988579886798877988879889798907989179892798937989479895798967989779898798997990079901799027990379904799057990679907799087990979910799117991279913799147991579916799177991879919799207992179922799237992479925799267992779928799297993079931799327993379934799357993679937799387993979940799417994279943799447994579946799477994879949799507995179952799537995479955799567995779958799597996079961799627996379964799657996679967799687996979970799717997279973799747997579976799777997879979799807998179982799837998479985799867998779988799897999079991799927999379994799957999679997799987999980000800018000280003800048000580006800078000880009800108001180012800138001480015800168001780018800198002080021800228002380024800258002680027800288002980030800318003280033800348003580036800378003880039800408004180042800438004480045800468004780048800498005080051800528005380054800558005680057800588005980060800618006280063800648006580066800678006880069800708007180072800738007480075800768007780078800798008080081800828008380084800858008680087800888008980090800918009280093800948009580096800978009880099801008010180102801038010480105801068010780108801098011080111801128011380114801158011680117801188011980120801218012280123801248012580126801278012880129801308013180132801338013480135801368013780138801398014080141801428014380144801458014680147801488014980150801518015280153801548015580156801578015880159801608016180162801638016480165801668016780168801698017080171801728017380174801758017680177801788017980180801818018280183801848018580186801878018880189801908019180192801938019480195801968019780198801998020080201802028020380204802058020680207802088020980210802118021280213802148021580216802178021880219802208022180222802238022480225802268022780228802298023080231802328023380234802358023680237802388023980240802418024280243802448024580246802478024880249802508025180252802538025480255802568025780258802598026080261802628026380264802658026680267802688026980270802718027280273802748027580276802778027880279802808028180282802838028480285802868028780288802898029080291802928029380294802958029680297802988029980300803018030280303803048030580306803078030880309803108031180312803138031480315803168031780318803198032080321803228032380324803258032680327803288032980330803318033280333803348033580336803378033880339803408034180342803438034480345803468034780348803498035080351803528035380354803558035680357803588035980360803618036280363803648036580366803678036880369803708037180372803738037480375803768037780378803798038080381803828038380384803858038680387803888038980390803918039280393803948039580396803978039880399804008040180402804038040480405804068040780408804098041080411804128041380414804158041680417804188041980420804218042280423804248042580426804278042880429804308043180432804338043480435804368043780438804398044080441804428044380444804458044680447804488044980450804518045280453804548045580456804578045880459804608046180462804638046480465804668046780468804698047080471804728047380474804758047680477804788047980480804818048280483804848048580486804878048880489804908049180492804938049480495804968049780498804998050080501805028050380504805058050680507805088050980510805118051280513805148051580516805178051880519805208052180522805238052480525805268052780528805298053080531805328053380534805358053680537805388053980540805418054280543805448054580546805478054880549805508055180552805538055480555805568055780558805598056080561805628056380564805658056680567805688056980570805718057280573805748057580576805778057880579805808058180582805838058480585805868058780588805898059080591805928059380594805958059680597805988059980600806018060280603806048060580606806078060880609806108061180612806138061480615806168061780618806198062080621806228062380624806258062680627806288062980630806318063280633806348063580636806378063880639806408064180642806438064480645806468064780648806498065080651806528065380654806558065680657806588065980660806618066280663806648066580666806678066880669806708067180672806738067480675806768067780678806798068080681806828068380684806858068680687806888068980690806918069280693806948069580696806978069880699807008070180702807038070480705807068070780708807098071080711807128071380714807158071680717807188071980720807218072280723807248072580726807278072880729807308073180732807338073480735807368073780738807398074080741807428074380744807458074680747807488074980750807518075280753807548075580756807578075880759807608076180762807638076480765807668076780768807698077080771807728077380774807758077680777807788077980780807818078280783807848078580786807878078880789807908079180792807938079480795807968079780798807998080080801808028080380804808058080680807808088080980810808118081280813808148081580816808178081880819808208082180822808238082480825808268082780828808298083080831808328083380834808358083680837808388083980840808418084280843808448084580846808478084880849808508085180852808538085480855808568085780858808598086080861808628086380864808658086680867808688086980870808718087280873808748087580876808778087880879808808088180882808838088480885808868088780888808898089080891808928089380894808958089680897808988089980900809018090280903809048090580906809078090880909809108091180912809138091480915809168091780918809198092080921809228092380924809258092680927809288092980930809318093280933809348093580936809378093880939809408094180942809438094480945809468094780948809498095080951809528095380954809558095680957809588095980960809618096280963809648096580966809678096880969809708097180972809738097480975809768097780978809798098080981809828098380984809858098680987809888098980990809918099280993809948099580996809978099880999810008100181002810038100481005810068100781008810098101081011810128101381014810158101681017810188101981020810218102281023810248102581026810278102881029810308103181032810338103481035810368103781038810398104081041810428104381044810458104681047810488104981050810518105281053810548105581056810578105881059810608106181062810638106481065810668106781068810698107081071810728107381074810758107681077810788107981080810818108281083810848108581086810878108881089810908109181092810938109481095810968109781098810998110081101811028110381104811058110681107811088110981110811118111281113811148111581116811178111881119811208112181122811238112481125811268112781128811298113081131811328113381134811358113681137811388113981140811418114281143811448114581146811478114881149811508115181152811538115481155811568115781158811598116081161811628116381164811658116681167811688116981170811718117281173811748117581176811778117881179811808118181182811838118481185811868118781188811898119081191811928119381194811958119681197811988119981200812018120281203812048120581206812078120881209812108121181212812138121481215812168121781218812198122081221812228122381224812258122681227812288122981230812318123281233812348123581236812378123881239812408124181242812438124481245812468124781248812498125081251812528125381254812558125681257812588125981260812618126281263812648126581266812678126881269812708127181272812738127481275812768127781278812798128081281812828128381284812858128681287812888128981290812918129281293812948129581296812978129881299813008130181302813038130481305813068130781308813098131081311813128131381314813158131681317813188131981320813218132281323813248132581326813278132881329813308133181332813338133481335813368133781338813398134081341813428134381344813458134681347813488134981350813518135281353813548135581356813578135881359813608136181362813638136481365813668136781368813698137081371813728137381374813758137681377813788137981380813818138281383813848138581386813878138881389813908139181392813938139481395813968139781398813998140081401814028140381404814058140681407814088140981410814118141281413814148141581416814178141881419814208142181422814238142481425814268142781428814298143081431814328143381434814358143681437814388143981440814418144281443814448144581446814478144881449814508145181452814538145481455814568145781458814598146081461814628146381464814658146681467814688146981470814718147281473814748147581476814778147881479814808148181482814838148481485814868148781488814898149081491814928149381494814958149681497814988149981500815018150281503815048150581506815078150881509815108151181512815138151481515815168151781518815198152081521815228152381524815258152681527815288152981530815318153281533815348153581536815378153881539815408154181542815438154481545815468154781548815498155081551815528155381554815558155681557815588155981560815618156281563815648156581566815678156881569815708157181572815738157481575815768157781578815798158081581815828158381584815858158681587815888158981590815918159281593815948159581596815978159881599816008160181602816038160481605816068160781608816098161081611816128161381614816158161681617816188161981620816218162281623816248162581626816278162881629816308163181632816338163481635816368163781638816398164081641816428164381644816458164681647816488164981650816518165281653816548165581656816578165881659816608166181662816638166481665816668166781668816698167081671816728167381674816758167681677816788167981680816818168281683816848168581686816878168881689816908169181692816938169481695816968169781698816998170081701817028170381704817058170681707817088170981710817118171281713817148171581716817178171881719817208172181722817238172481725817268172781728817298173081731817328173381734817358173681737817388173981740817418174281743817448174581746817478174881749817508175181752817538175481755817568175781758817598176081761817628176381764817658176681767817688176981770817718177281773817748177581776817778177881779817808178181782817838178481785817868178781788817898179081791817928179381794817958179681797817988179981800818018180281803818048180581806818078180881809818108181181812818138181481815818168181781818818198182081821818228182381824818258182681827818288182981830818318183281833818348183581836818378183881839818408184181842818438184481845818468184781848818498185081851818528185381854818558185681857818588185981860818618186281863818648186581866818678186881869818708187181872818738187481875818768187781878818798188081881818828188381884818858188681887818888188981890818918189281893818948189581896818978189881899819008190181902819038190481905819068190781908819098191081911819128191381914819158191681917819188191981920819218192281923819248192581926819278192881929819308193181932819338193481935819368193781938819398194081941819428194381944819458194681947819488194981950819518195281953819548195581956819578195881959819608196181962819638196481965819668196781968819698197081971819728197381974819758197681977819788197981980819818198281983819848198581986819878198881989819908199181992819938199481995819968199781998819998200082001820028200382004820058200682007820088200982010820118201282013820148201582016820178201882019820208202182022820238202482025820268202782028820298203082031820328203382034820358203682037820388203982040820418204282043820448204582046820478204882049820508205182052820538205482055820568205782058820598206082061820628206382064820658206682067820688206982070820718207282073820748207582076820778207882079820808208182082820838208482085820868208782088820898209082091820928209382094820958209682097820988209982100821018210282103821048210582106821078210882109821108211182112821138211482115821168211782118821198212082121821228212382124821258212682127821288212982130821318213282133821348213582136821378213882139821408214182142821438214482145821468214782148821498215082151821528215382154821558215682157821588215982160821618216282163821648216582166821678216882169821708217182172821738217482175821768217782178821798218082181821828218382184821858218682187821888218982190821918219282193821948219582196821978219882199822008220182202822038220482205822068220782208822098221082211822128221382214822158221682217822188221982220822218222282223822248222582226822278222882229822308223182232822338223482235822368223782238822398224082241822428224382244822458224682247822488224982250822518225282253822548225582256822578225882259822608226182262822638226482265822668226782268822698227082271822728227382274822758227682277822788227982280822818228282283822848228582286822878228882289822908229182292822938229482295822968229782298822998230082301823028230382304823058230682307823088230982310823118231282313823148231582316823178231882319823208232182322823238232482325823268232782328823298233082331823328233382334823358233682337823388233982340823418234282343823448234582346823478234882349823508235182352823538235482355823568235782358823598236082361823628236382364823658236682367823688236982370823718237282373823748237582376823778237882379823808238182382823838238482385823868238782388823898239082391823928239382394823958239682397823988239982400824018240282403824048240582406824078240882409824108241182412824138241482415824168241782418824198242082421824228242382424824258242682427824288242982430824318243282433824348243582436824378243882439824408244182442824438244482445824468244782448824498245082451824528245382454824558245682457824588245982460824618246282463824648246582466824678246882469824708247182472824738247482475824768247782478824798248082481824828248382484824858248682487824888248982490824918249282493824948249582496824978249882499825008250182502825038250482505825068250782508825098251082511825128251382514825158251682517825188251982520825218252282523825248252582526825278252882529825308253182532825338253482535825368253782538825398254082541825428254382544825458254682547825488254982550825518255282553825548255582556825578255882559825608256182562825638256482565825668256782568825698257082571825728257382574825758257682577825788257982580825818258282583825848258582586825878258882589825908259182592825938259482595825968259782598825998260082601826028260382604826058260682607826088260982610826118261282613826148261582616826178261882619826208262182622826238262482625826268262782628826298263082631826328263382634826358263682637826388263982640826418264282643826448264582646826478264882649826508265182652826538265482655826568265782658826598266082661826628266382664826658266682667826688266982670826718267282673826748267582676826778267882679826808268182682826838268482685826868268782688826898269082691826928269382694826958269682697826988269982700827018270282703827048270582706827078270882709827108271182712827138271482715827168271782718827198272082721827228272382724827258272682727827288272982730827318273282733827348273582736827378273882739827408274182742827438274482745827468274782748827498275082751827528275382754827558275682757827588275982760827618276282763827648276582766827678276882769827708277182772827738277482775827768277782778827798278082781827828278382784827858278682787827888278982790827918279282793827948279582796827978279882799828008280182802828038280482805828068280782808828098281082811828128281382814828158281682817828188281982820828218282282823828248282582826828278282882829828308283182832828338283482835828368283782838828398284082841828428284382844828458284682847828488284982850828518285282853828548285582856828578285882859828608286182862828638286482865828668286782868828698287082871828728287382874828758287682877828788287982880828818288282883828848288582886828878288882889828908289182892828938289482895828968289782898828998290082901829028290382904829058290682907829088290982910829118291282913829148291582916829178291882919829208292182922829238292482925829268292782928829298293082931829328293382934829358293682937829388293982940829418294282943829448294582946829478294882949829508295182952829538295482955829568295782958829598296082961829628296382964829658296682967829688296982970829718297282973829748297582976829778297882979829808298182982829838298482985829868298782988829898299082991829928299382994829958299682997829988299983000830018300283003830048300583006830078300883009830108301183012830138301483015830168301783018830198302083021830228302383024830258302683027830288302983030830318303283033830348303583036830378303883039830408304183042830438304483045830468304783048830498305083051830528305383054830558305683057830588305983060830618306283063830648306583066830678306883069830708307183072830738307483075830768307783078830798308083081830828308383084830858308683087830888308983090830918309283093830948309583096830978309883099831008310183102831038310483105831068310783108831098311083111831128311383114831158311683117831188311983120831218312283123831248312583126831278312883129831308313183132831338313483135831368313783138831398314083141831428314383144831458314683147831488314983150831518315283153831548315583156831578315883159831608316183162831638316483165831668316783168831698317083171831728317383174831758317683177831788317983180831818318283183831848318583186831878318883189831908319183192831938319483195831968319783198831998320083201832028320383204832058320683207832088320983210832118321283213832148321583216832178321883219832208322183222832238322483225832268322783228832298323083231832328323383234832358323683237832388323983240832418324283243832448324583246832478324883249832508325183252832538325483255 | 
../build/bt6702/stm32bt6702/stm32bt6702.elf:     file format elf32-littlearmSections:Idx Name          Size      VMA       LMA       File off  Algn  0 .isr_vector   00000188  08020000  08020000  00008000  2**0                  CONTENTS, ALLOC, LOAD, READONLY, DATA  1 .text         00021d94  08020188  08020188  00008188  2**3                  CONTENTS, ALLOC, LOAD, READONLY, CODE  2 .ARM          00000008  08041f1c  08041f1c  00029f1c  2**2                  CONTENTS, ALLOC, LOAD, READONLY, DATA  3 .init_array   00000004  08041f24  08041f24  00029f24  2**2                  CONTENTS, ALLOC, LOAD, DATA  4 .fini_array   00000004  08041f28  08041f28  00029f28  2**2                  CONTENTS, ALLOC, LOAD, DATA  5 .data         00001988  20000000  08041f2c  00030000  2**2                  CONTENTS, ALLOC, LOAD, DATA  6 .fill         0007c748  080438b4  080438b4  000338b4  2**0                  CONTENTS, ALLOC, LOAD, DATA  7 .crc          00000004  080bfffc  080bfffc  000afffc  2**2                  CONTENTS, ALLOC, LOAD, DATA  8 .bss          00013984  20001988  080438b4  000b1988  2**2                  ALLOC  9 ._user_heap_stack 00000200  2001530c  08057238  000b1988  2**0                  ALLOC 10 .memory_b1_text 0000f000  10000000  10000000  000b0000  2**0                  ALLOC 11 .ARM.attributes 0000002f  00000000  00000000  000b0000  2**0                  CONTENTS, READONLY 12 .debug_info   0004b1e2  00000000  00000000  000b002f  2**0                  CONTENTS, READONLY, DEBUGGING 13 .debug_abbrev 0000c22b  00000000  00000000  000fb211  2**0                  CONTENTS, READONLY, DEBUGGING 14 .debug_loc    00023fa2  00000000  00000000  0010743c  2**0                  CONTENTS, READONLY, DEBUGGING 15 .debug_aranges 00002eb0  00000000  00000000  0012b3e0  2**3                  CONTENTS, READONLY, DEBUGGING 16 .debug_ranges 000037c0  00000000  00000000  0012e290  2**3                  CONTENTS, READONLY, DEBUGGING 17 .debug_macro  0001f872  00000000  00000000  00131a50  2**0                  CONTENTS, READONLY, DEBUGGING 18 .debug_line   000234ec  00000000  00000000  001512c2  2**0                  CONTENTS, READONLY, DEBUGGING 19 .debug_str    0008092f  00000000  00000000  001747ae  2**0                  CONTENTS, READONLY, DEBUGGING 20 .comment      00000030  00000000  00000000  001f50dd  2**0                  CONTENTS, READONLY 21 .debug_frame  00007d78  00000000  00000000  001f5110  2**2                  CONTENTS, READONLY, DEBUGGINGDisassembly of section .text:08020188 <deregister_tm_clones>: 8020188:	b508      	push	{r3, lr} 802018a:	f641 1088 	movw	r0, #6536	; 0x1988 802018e:	4b07      	ldr	r3, [pc, #28]	; (80201ac <deregister_tm_clones+0x24>) 8020190:	f2c2 0000 	movt	r0, #8192	; 0x2000 8020194:	1a1b      	subs	r3, r3, r0 8020196:	2b06      	cmp	r3, #6 8020198:	d800      	bhi.n	802019c <deregister_tm_clones+0x14> 802019a:	bd08      	pop	{r3, pc} 802019c:	f240 0300 	movw	r3, #0 80201a0:	f2c0 0300 	movt	r3, #0 80201a4:	2b00      	cmp	r3, #0 80201a6:	d0f8      	beq.n	802019a <deregister_tm_clones+0x12> 80201a8:	4798      	blx	r3 80201aa:	e7f6      	b.n	802019a <deregister_tm_clones+0x12> 80201ac:	2000198b 	.word	0x2000198b080201b0 <register_tm_clones>: 80201b0:	b508      	push	{r3, lr} 80201b2:	f641 1088 	movw	r0, #6536	; 0x1988 80201b6:	f641 1388 	movw	r3, #6536	; 0x1988 80201ba:	f2c2 0000 	movt	r0, #8192	; 0x2000 80201be:	f2c2 0300 	movt	r3, #8192	; 0x2000 80201c2:	1a1b      	subs	r3, r3, r0 80201c4:	109b      	asrs	r3, r3, #2 80201c6:	eb03 73d3 	add.w	r3, r3, r3, lsr #31 80201ca:	1059      	asrs	r1, r3, #1 80201cc:	d100      	bne.n	80201d0 <register_tm_clones+0x20> 80201ce:	bd08      	pop	{r3, pc} 80201d0:	f240 0200 	movw	r2, #0 80201d4:	f2c0 0200 	movt	r2, #0 80201d8:	2a00      	cmp	r2, #0 80201da:	d0f8      	beq.n	80201ce <register_tm_clones+0x1e> 80201dc:	4790      	blx	r2 80201de:	e7f6      	b.n	80201ce <register_tm_clones+0x1e>080201e0 <__do_global_dtors_aux>: 80201e0:	b510      	push	{r4, lr} 80201e2:	f641 1488 	movw	r4, #6536	; 0x1988 80201e6:	f2c2 0400 	movt	r4, #8192	; 0x2000 80201ea:	7823      	ldrb	r3, [r4, #0] 80201ec:	b973      	cbnz	r3, 802020c <__do_global_dtors_aux+0x2c> 80201ee:	f7ff ffcb 	bl	8020188 <deregister_tm_clones> 80201f2:	f240 0300 	movw	r3, #0 80201f6:	f2c0 0300 	movt	r3, #0 80201fa:	b12b      	cbz	r3, 8020208 <__do_global_dtors_aux+0x28> 80201fc:	f641 7004 	movw	r0, #7940	; 0x1f04 8020200:	f6c0 0004 	movt	r0, #2052	; 0x804 8020204:	f3af 8000 	nop.w 8020208:	2301      	movs	r3, #1 802020a:	7023      	strb	r3, [r4, #0] 802020c:	bd10      	pop	{r4, pc} 802020e:	bf00      	nop08020210 <frame_dummy>: 8020210:	b508      	push	{r3, lr} 8020212:	f240 0300 	movw	r3, #0 8020216:	f2c0 0300 	movt	r3, #0 802021a:	b14b      	cbz	r3, 8020230 <frame_dummy+0x20> 802021c:	f641 7004 	movw	r0, #7940	; 0x1f04 8020220:	f641 118c 	movw	r1, #6540	; 0x198c 8020224:	f6c0 0004 	movt	r0, #2052	; 0x804 8020228:	f2c2 0100 	movt	r1, #8192	; 0x2000 802022c:	f3af 8000 	nop.w 8020230:	f641 1088 	movw	r0, #6536	; 0x1988 8020234:	f2c2 0000 	movt	r0, #8192	; 0x2000 8020238:	6803      	ldr	r3, [r0, #0] 802023a:	b12b      	cbz	r3, 8020248 <frame_dummy+0x38> 802023c:	f240 0300 	movw	r3, #0 8020240:	f2c0 0300 	movt	r3, #0 8020244:	b103      	cbz	r3, 8020248 <frame_dummy+0x38> 8020246:	4798      	blx	r3 8020248:	e8bd 4008 	ldmia.w	sp!, {r3, lr} 802024c:	f7ff bfb0 	b.w	80201b0 <register_tm_clones>08020250 <__aeabi_drsub>: 8020250:	f081 4100 	eor.w	r1, r1, #2147483648	; 0x80000000 8020254:	e002      	b.n	802025c <__adddf3> 8020256:	bf00      	nop08020258 <__aeabi_dsub>: 8020258:	f083 4300 	eor.w	r3, r3, #2147483648	; 0x800000000802025c <__adddf3>: 802025c:	b530      	push	{r4, r5, lr} 802025e:	ea4f 0441 	mov.w	r4, r1, lsl #1 8020262:	ea4f 0543 	mov.w	r5, r3, lsl #1 8020266:	ea94 0f05 	teq	r4, r5 802026a:	bf08      	it	eq 802026c:	ea90 0f02 	teqeq	r0, r2 8020270:	bf1f      	itttt	ne 8020272:	ea54 0c00 	orrsne.w	ip, r4, r0 8020276:	ea55 0c02 	orrsne.w	ip, r5, r2 802027a:	ea7f 5c64 	mvnsne.w	ip, r4, asr #21 802027e:	ea7f 5c65 	mvnsne.w	ip, r5, asr #21 8020282:	f000 80e2 	beq.w	802044a <__adddf3+0x1ee> 8020286:	ea4f 5454 	mov.w	r4, r4, lsr #21 802028a:	ebd4 5555 	rsbs	r5, r4, r5, lsr #21 802028e:	bfb8      	it	lt 8020290:	426d      	neglt	r5, r5 8020292:	dd0c      	ble.n	80202ae <__adddf3+0x52> 8020294:	442c      	add	r4, r5 8020296:	ea80 0202 	eor.w	r2, r0, r2 802029a:	ea81 0303 	eor.w	r3, r1, r3 802029e:	ea82 0000 	eor.w	r0, r2, r0 80202a2:	ea83 0101 	eor.w	r1, r3, r1 80202a6:	ea80 0202 	eor.w	r2, r0, r2 80202aa:	ea81 0303 	eor.w	r3, r1, r3 80202ae:	2d36      	cmp	r5, #54	; 0x36 80202b0:	bf88      	it	hi 80202b2:	bd30      	pophi	{r4, r5, pc} 80202b4:	f011 4f00 	tst.w	r1, #2147483648	; 0x80000000 80202b8:	ea4f 3101 	mov.w	r1, r1, lsl #12 80202bc:	f44f 1c80 	mov.w	ip, #1048576	; 0x100000 80202c0:	ea4c 3111 	orr.w	r1, ip, r1, lsr #12 80202c4:	d002      	beq.n	80202cc <__adddf3+0x70> 80202c6:	4240      	negs	r0, r0 80202c8:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1 80202cc:	f013 4f00 	tst.w	r3, #2147483648	; 0x80000000 80202d0:	ea4f 3303 	mov.w	r3, r3, lsl #12 80202d4:	ea4c 3313 	orr.w	r3, ip, r3, lsr #12 80202d8:	d002      	beq.n	80202e0 <__adddf3+0x84> 80202da:	4252      	negs	r2, r2 80202dc:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1 80202e0:	ea94 0f05 	teq	r4, r5 80202e4:	f000 80a7 	beq.w	8020436 <__adddf3+0x1da> 80202e8:	f1a4 0401 	sub.w	r4, r4, #1 80202ec:	f1d5 0e20 	rsbs	lr, r5, #32 80202f0:	db0d      	blt.n	802030e <__adddf3+0xb2> 80202f2:	fa02 fc0e 	lsl.w	ip, r2, lr 80202f6:	fa22 f205 	lsr.w	r2, r2, r5 80202fa:	1880      	adds	r0, r0, r2 80202fc:	f141 0100 	adc.w	r1, r1, #0 8020300:	fa03 f20e 	lsl.w	r2, r3, lr 8020304:	1880      	adds	r0, r0, r2 8020306:	fa43 f305 	asr.w	r3, r3, r5 802030a:	4159      	adcs	r1, r3 802030c:	e00e      	b.n	802032c <__adddf3+0xd0> 802030e:	f1a5 0520 	sub.w	r5, r5, #32 8020312:	f10e 0e20 	add.w	lr, lr, #32 8020316:	2a01      	cmp	r2, #1 8020318:	fa03 fc0e 	lsl.w	ip, r3, lr 802031c:	bf28      	it	cs 802031e:	f04c 0c02 	orrcs.w	ip, ip, #2 8020322:	fa43 f305 	asr.w	r3, r3, r5 8020326:	18c0      	adds	r0, r0, r3 8020328:	eb51 71e3 	adcs.w	r1, r1, r3, asr #31 802032c:	f001 4500 	and.w	r5, r1, #2147483648	; 0x80000000 8020330:	d507      	bpl.n	8020342 <__adddf3+0xe6> 8020332:	f04f 0e00 	mov.w	lr, #0 8020336:	f1dc 0c00 	rsbs	ip, ip, #0 802033a:	eb7e 0000 	sbcs.w	r0, lr, r0 802033e:	eb6e 0101 	sbc.w	r1, lr, r1 8020342:	f5b1 1f80 	cmp.w	r1, #1048576	; 0x100000 8020346:	d31b      	bcc.n	8020380 <__adddf3+0x124> 8020348:	f5b1 1f00 	cmp.w	r1, #2097152	; 0x200000 802034c:	d30c      	bcc.n	8020368 <__adddf3+0x10c> 802034e:	0849      	lsrs	r1, r1, #1 8020350:	ea5f 0030 	movs.w	r0, r0, rrx 8020354:	ea4f 0c3c 	mov.w	ip, ip, rrx 8020358:	f104 0401 	add.w	r4, r4, #1 802035c:	ea4f 5244 	mov.w	r2, r4, lsl #21 8020360:	f512 0f80 	cmn.w	r2, #4194304	; 0x400000 8020364:	f080 809a 	bcs.w	802049c <__adddf3+0x240> 8020368:	f1bc 4f00 	cmp.w	ip, #2147483648	; 0x80000000 802036c:	bf08      	it	eq 802036e:	ea5f 0c50 	movseq.w	ip, r0, lsr #1 8020372:	f150 0000 	adcs.w	r0, r0, #0 8020376:	eb41 5104 	adc.w	r1, r1, r4, lsl #20 802037a:	ea41 0105 	orr.w	r1, r1, r5 802037e:	bd30      	pop	{r4, r5, pc} 8020380:	ea5f 0c4c 	movs.w	ip, ip, lsl #1 8020384:	4140      	adcs	r0, r0 8020386:	eb41 0101 	adc.w	r1, r1, r1 802038a:	f411 1f80 	tst.w	r1, #1048576	; 0x100000 802038e:	f1a4 0401 	sub.w	r4, r4, #1 8020392:	d1e9      	bne.n	8020368 <__adddf3+0x10c> 8020394:	f091 0f00 	teq	r1, #0 8020398:	bf04      	itt	eq 802039a:	4601      	moveq	r1, r0 802039c:	2000      	moveq	r0, #0 802039e:	fab1 f381 	clz	r3, r1 80203a2:	bf08      	it	eq 80203a4:	3320      	addeq	r3, #32 80203a6:	f1a3 030b 	sub.w	r3, r3, #11 80203aa:	f1b3 0220 	subs.w	r2, r3, #32 80203ae:	da0c      	bge.n	80203ca <__adddf3+0x16e> 80203b0:	320c      	adds	r2, #12 80203b2:	dd08      	ble.n	80203c6 <__adddf3+0x16a> 80203b4:	f102 0c14 	add.w	ip, r2, #20 80203b8:	f1c2 020c 	rsb	r2, r2, #12 80203bc:	fa01 f00c 	lsl.w	r0, r1, ip 80203c0:	fa21 f102 	lsr.w	r1, r1, r2 80203c4:	e00c      	b.n	80203e0 <__adddf3+0x184> 80203c6:	f102 0214 	add.w	r2, r2, #20 80203ca:	bfd8      	it	le 80203cc:	f1c2 0c20 	rsble	ip, r2, #32 80203d0:	fa01 f102 	lsl.w	r1, r1, r2 80203d4:	fa20 fc0c 	lsr.w	ip, r0, ip 80203d8:	bfdc      	itt	le 80203da:	ea41 010c 	orrle.w	r1, r1, ip 80203de:	4090      	lslle	r0, r2 80203e0:	1ae4      	subs	r4, r4, r3 80203e2:	bfa2      	ittt	ge 80203e4:	eb01 5104 	addge.w	r1, r1, r4, lsl #20 80203e8:	4329      	orrge	r1, r5 80203ea:	bd30      	popge	{r4, r5, pc} 80203ec:	ea6f 0404 	mvn.w	r4, r4 80203f0:	3c1f      	subs	r4, #31 80203f2:	da1c      	bge.n	802042e <__adddf3+0x1d2> 80203f4:	340c      	adds	r4, #12 80203f6:	dc0e      	bgt.n	8020416 <__adddf3+0x1ba> 80203f8:	f104 0414 	add.w	r4, r4, #20 80203fc:	f1c4 0220 	rsb	r2, r4, #32 8020400:	fa20 f004 	lsr.w	r0, r0, r4 8020404:	fa01 f302 	lsl.w	r3, r1, r2 8020408:	ea40 0003 	orr.w	r0, r0, r3 802040c:	fa21 f304 	lsr.w	r3, r1, r4 8020410:	ea45 0103 	orr.w	r1, r5, r3 8020414:	bd30      	pop	{r4, r5, pc} 8020416:	f1c4 040c 	rsb	r4, r4, #12 802041a:	f1c4 0220 	rsb	r2, r4, #32 802041e:	fa20 f002 	lsr.w	r0, r0, r2 8020422:	fa01 f304 	lsl.w	r3, r1, r4 8020426:	ea40 0003 	orr.w	r0, r0, r3 802042a:	4629      	mov	r1, r5 802042c:	bd30      	pop	{r4, r5, pc} 802042e:	fa21 f004 	lsr.w	r0, r1, r4 8020432:	4629      	mov	r1, r5 8020434:	bd30      	pop	{r4, r5, pc} 8020436:	f094 0f00 	teq	r4, #0 802043a:	f483 1380 	eor.w	r3, r3, #1048576	; 0x100000 802043e:	bf06      	itte	eq 8020440:	f481 1180 	eoreq.w	r1, r1, #1048576	; 0x100000 8020444:	3401      	addeq	r4, #1 8020446:	3d01      	subne	r5, #1 8020448:	e74e      	b.n	80202e8 <__adddf3+0x8c> 802044a:	ea7f 5c64 	mvns.w	ip, r4, asr #21 802044e:	bf18      	it	ne 8020450:	ea7f 5c65 	mvnsne.w	ip, r5, asr #21 8020454:	d029      	beq.n	80204aa <__adddf3+0x24e> 8020456:	ea94 0f05 	teq	r4, r5 802045a:	bf08      	it	eq 802045c:	ea90 0f02 	teqeq	r0, r2 8020460:	d005      	beq.n	802046e <__adddf3+0x212> 8020462:	ea54 0c00 	orrs.w	ip, r4, r0 8020466:	bf04      	itt	eq 8020468:	4619      	moveq	r1, r3 802046a:	4610      	moveq	r0, r2 802046c:	bd30      	pop	{r4, r5, pc} 802046e:	ea91 0f03 	teq	r1, r3 8020472:	bf1e      	ittt	ne 8020474:	2100      	movne	r1, #0 8020476:	2000      	movne	r0, #0 8020478:	bd30      	popne	{r4, r5, pc} 802047a:	ea5f 5c54 	movs.w	ip, r4, lsr #21 802047e:	d105      	bne.n	802048c <__adddf3+0x230> 8020480:	0040      	lsls	r0, r0, #1 8020482:	4149      	adcs	r1, r1 8020484:	bf28      	it	cs 8020486:	f041 4100 	orrcs.w	r1, r1, #2147483648	; 0x80000000 802048a:	bd30      	pop	{r4, r5, pc} 802048c:	f514 0480 	adds.w	r4, r4, #4194304	; 0x400000 8020490:	bf3c      	itt	cc 8020492:	f501 1180 	addcc.w	r1, r1, #1048576	; 0x100000 8020496:	bd30      	popcc	{r4, r5, pc} 8020498:	f001 4500 	and.w	r5, r1, #2147483648	; 0x80000000 802049c:	f045 41fe 	orr.w	r1, r5, #2130706432	; 0x7f000000 80204a0:	f441 0170 	orr.w	r1, r1, #15728640	; 0xf00000 80204a4:	f04f 0000 	mov.w	r0, #0 80204a8:	bd30      	pop	{r4, r5, pc} 80204aa:	ea7f 5c64 	mvns.w	ip, r4, asr #21 80204ae:	bf1a      	itte	ne 80204b0:	4619      	movne	r1, r3 80204b2:	4610      	movne	r0, r2 80204b4:	ea7f 5c65 	mvnseq.w	ip, r5, asr #21 80204b8:	bf1c      	itt	ne 80204ba:	460b      	movne	r3, r1 80204bc:	4602      	movne	r2, r0 80204be:	ea50 3401 	orrs.w	r4, r0, r1, lsl #12 80204c2:	bf06      	itte	eq 80204c4:	ea52 3503 	orrseq.w	r5, r2, r3, lsl #12 80204c8:	ea91 0f03 	teqeq	r1, r3 80204cc:	f441 2100 	orrne.w	r1, r1, #524288	; 0x80000 80204d0:	bd30      	pop	{r4, r5, pc} 80204d2:	bf00      	nop080204d4 <__aeabi_ui2d>: 80204d4:	f090 0f00 	teq	r0, #0 80204d8:	bf04      	itt	eq 80204da:	2100      	moveq	r1, #0 80204dc:	4770      	bxeq	lr 80204de:	b530      	push	{r4, r5, lr} 80204e0:	f44f 6480 	mov.w	r4, #1024	; 0x400 80204e4:	f104 0432 	add.w	r4, r4, #50	; 0x32 80204e8:	f04f 0500 	mov.w	r5, #0 80204ec:	f04f 0100 	mov.w	r1, #0 80204f0:	e750      	b.n	8020394 <__adddf3+0x138> 80204f2:	bf00      	nop080204f4 <__aeabi_i2d>: 80204f4:	f090 0f00 	teq	r0, #0 80204f8:	bf04      	itt	eq 80204fa:	2100      	moveq	r1, #0 80204fc:	4770      	bxeq	lr 80204fe:	b530      	push	{r4, r5, lr} 8020500:	f44f 6480 	mov.w	r4, #1024	; 0x400 8020504:	f104 0432 	add.w	r4, r4, #50	; 0x32 8020508:	f010 4500 	ands.w	r5, r0, #2147483648	; 0x80000000 802050c:	bf48      	it	mi 802050e:	4240      	negmi	r0, r0 8020510:	f04f 0100 	mov.w	r1, #0 8020514:	e73e      	b.n	8020394 <__adddf3+0x138> 8020516:	bf00      	nop08020518 <__aeabi_f2d>: 8020518:	0042      	lsls	r2, r0, #1 802051a:	ea4f 01e2 	mov.w	r1, r2, asr #3 802051e:	ea4f 0131 	mov.w	r1, r1, rrx 8020522:	ea4f 7002 	mov.w	r0, r2, lsl #28 8020526:	bf1f      	itttt	ne 8020528:	f012 437f 	andsne.w	r3, r2, #4278190080	; 0xff000000 802052c:	f093 4f7f 	teqne	r3, #4278190080	; 0xff000000 8020530:	f081 5160 	eorne.w	r1, r1, #939524096	; 0x38000000 8020534:	4770      	bxne	lr 8020536:	f092 0f00 	teq	r2, #0 802053a:	bf14      	ite	ne 802053c:	f093 4f7f 	teqne	r3, #4278190080	; 0xff000000 8020540:	4770      	bxeq	lr 8020542:	b530      	push	{r4, r5, lr} 8020544:	f44f 7460 	mov.w	r4, #896	; 0x380 8020548:	f001 4500 	and.w	r5, r1, #2147483648	; 0x80000000 802054c:	f021 4100 	bic.w	r1, r1, #2147483648	; 0x80000000 8020550:	e720      	b.n	8020394 <__adddf3+0x138> 8020552:	bf00      	nop08020554 <__aeabi_ul2d>: 8020554:	ea50 0201 	orrs.w	r2, r0, r1 8020558:	bf08      	it	eq 802055a:	4770      	bxeq	lr 802055c:	b530      	push	{r4, r5, lr} 802055e:	f04f 0500 	mov.w	r5, #0 8020562:	e00a      	b.n	802057a <__aeabi_l2d+0x16>08020564 <__aeabi_l2d>: 8020564:	ea50 0201 	orrs.w	r2, r0, r1 8020568:	bf08      	it	eq 802056a:	4770      	bxeq	lr 802056c:	b530      	push	{r4, r5, lr} 802056e:	f011 4500 	ands.w	r5, r1, #2147483648	; 0x80000000 8020572:	d502      	bpl.n	802057a <__aeabi_l2d+0x16> 8020574:	4240      	negs	r0, r0 8020576:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1 802057a:	f44f 6480 	mov.w	r4, #1024	; 0x400 802057e:	f104 0432 	add.w	r4, r4, #50	; 0x32 8020582:	ea5f 5c91 	movs.w	ip, r1, lsr #22 8020586:	f43f aedc 	beq.w	8020342 <__adddf3+0xe6> 802058a:	f04f 0203 	mov.w	r2, #3 802058e:	ea5f 0cdc 	movs.w	ip, ip, lsr #3 8020592:	bf18      	it	ne 8020594:	3203      	addne	r2, #3 8020596:	ea5f 0cdc 	movs.w	ip, ip, lsr #3 802059a:	bf18      	it	ne 802059c:	3203      	addne	r2, #3 802059e:	eb02 02dc 	add.w	r2, r2, ip, lsr #3 80205a2:	f1c2 0320 	rsb	r3, r2, #32 80205a6:	fa00 fc03 	lsl.w	ip, r0, r3 80205aa:	fa20 f002 	lsr.w	r0, r0, r2 80205ae:	fa01 fe03 	lsl.w	lr, r1, r3 80205b2:	ea40 000e 	orr.w	r0, r0, lr 80205b6:	fa21 f102 	lsr.w	r1, r1, r2 80205ba:	4414      	add	r4, r2 80205bc:	e6c1      	b.n	8020342 <__adddf3+0xe6> 80205be:	bf00      	nop080205c0 <__aeabi_dmul>: 80205c0:	b570      	push	{r4, r5, r6, lr} 80205c2:	f04f 0cff 	mov.w	ip, #255	; 0xff 80205c6:	f44c 6ce0 	orr.w	ip, ip, #1792	; 0x700 80205ca:	ea1c 5411 	ands.w	r4, ip, r1, lsr #20 80205ce:	bf1d      	ittte	ne 80205d0:	ea1c 5513 	andsne.w	r5, ip, r3, lsr #20 80205d4:	ea94 0f0c 	teqne	r4, ip 80205d8:	ea95 0f0c 	teqne	r5, ip 80205dc:	f000 f8de 	bleq	802079c <__aeabi_dmul+0x1dc> 80205e0:	442c      	add	r4, r5 80205e2:	ea81 0603 	eor.w	r6, r1, r3 80205e6:	ea21 514c 	bic.w	r1, r1, ip, lsl #21 80205ea:	ea23 534c 	bic.w	r3, r3, ip, lsl #21 80205ee:	ea50 3501 	orrs.w	r5, r0, r1, lsl #12 80205f2:	bf18      	it	ne 80205f4:	ea52 3503 	orrsne.w	r5, r2, r3, lsl #12 80205f8:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000 80205fc:	f443 1380 	orr.w	r3, r3, #1048576	; 0x100000 8020600:	d038      	beq.n	8020674 <__aeabi_dmul+0xb4> 8020602:	fba0 ce02 	umull	ip, lr, r0, r2 8020606:	f04f 0500 	mov.w	r5, #0 802060a:	fbe1 e502 	umlal	lr, r5, r1, r2 802060e:	f006 4200 	and.w	r2, r6, #2147483648	; 0x80000000 8020612:	fbe0 e503 	umlal	lr, r5, r0, r3 8020616:	f04f 0600 	mov.w	r6, #0 802061a:	fbe1 5603 	umlal	r5, r6, r1, r3 802061e:	f09c 0f00 	teq	ip, #0 8020622:	bf18      	it	ne 8020624:	f04e 0e01 	orrne.w	lr, lr, #1 8020628:	f1a4 04ff 	sub.w	r4, r4, #255	; 0xff 802062c:	f5b6 7f00 	cmp.w	r6, #512	; 0x200 8020630:	f564 7440 	sbc.w	r4, r4, #768	; 0x300 8020634:	d204      	bcs.n	8020640 <__aeabi_dmul+0x80> 8020636:	ea5f 0e4e 	movs.w	lr, lr, lsl #1 802063a:	416d      	adcs	r5, r5 802063c:	eb46 0606 	adc.w	r6, r6, r6 8020640:	ea42 21c6 	orr.w	r1, r2, r6, lsl #11 8020644:	ea41 5155 	orr.w	r1, r1, r5, lsr #21 8020648:	ea4f 20c5 	mov.w	r0, r5, lsl #11 802064c:	ea40 505e 	orr.w	r0, r0, lr, lsr #21 8020650:	ea4f 2ece 	mov.w	lr, lr, lsl #11 8020654:	f1b4 0cfd 	subs.w	ip, r4, #253	; 0xfd 8020658:	bf88      	it	hi 802065a:	f5bc 6fe0 	cmphi.w	ip, #1792	; 0x700 802065e:	d81e      	bhi.n	802069e <__aeabi_dmul+0xde> 8020660:	f1be 4f00 	cmp.w	lr, #2147483648	; 0x80000000 8020664:	bf08      	it	eq 8020666:	ea5f 0e50 	movseq.w	lr, r0, lsr #1 802066a:	f150 0000 	adcs.w	r0, r0, #0 802066e:	eb41 5104 	adc.w	r1, r1, r4, lsl #20 8020672:	bd70      	pop	{r4, r5, r6, pc} 8020674:	f006 4600 	and.w	r6, r6, #2147483648	; 0x80000000 8020678:	ea46 0101 	orr.w	r1, r6, r1 802067c:	ea40 0002 	orr.w	r0, r0, r2 8020680:	ea81 0103 	eor.w	r1, r1, r3 8020684:	ebb4 045c 	subs.w	r4, r4, ip, lsr #1 8020688:	bfc2      	ittt	gt 802068a:	ebd4 050c 	rsbsgt	r5, r4, ip 802068e:	ea41 5104 	orrgt.w	r1, r1, r4, lsl #20 8020692:	bd70      	popgt	{r4, r5, r6, pc} 8020694:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000 8020698:	f04f 0e00 	mov.w	lr, #0 802069c:	3c01      	subs	r4, #1 802069e:	f300 80ab 	bgt.w	80207f8 <__aeabi_dmul+0x238> 80206a2:	f114 0f36 	cmn.w	r4, #54	; 0x36 80206a6:	bfde      	ittt	le 80206a8:	2000      	movle	r0, #0 80206aa:	f001 4100 	andle.w	r1, r1, #2147483648	; 0x80000000 80206ae:	bd70      	pople	{r4, r5, r6, pc} 80206b0:	f1c4 0400 	rsb	r4, r4, #0 80206b4:	3c20      	subs	r4, #32 80206b6:	da35      	bge.n	8020724 <__aeabi_dmul+0x164> 80206b8:	340c      	adds	r4, #12 80206ba:	dc1b      	bgt.n	80206f4 <__aeabi_dmul+0x134> 80206bc:	f104 0414 	add.w	r4, r4, #20 80206c0:	f1c4 0520 	rsb	r5, r4, #32 80206c4:	fa00 f305 	lsl.w	r3, r0, r5 80206c8:	fa20 f004 	lsr.w	r0, r0, r4 80206cc:	fa01 f205 	lsl.w	r2, r1, r5 80206d0:	ea40 0002 	orr.w	r0, r0, r2 80206d4:	f001 4200 	and.w	r2, r1, #2147483648	; 0x80000000 80206d8:	f021 4100 	bic.w	r1, r1, #2147483648	; 0x80000000 80206dc:	eb10 70d3 	adds.w	r0, r0, r3, lsr #31 80206e0:	fa21 f604 	lsr.w	r6, r1, r4 80206e4:	eb42 0106 	adc.w	r1, r2, r6 80206e8:	ea5e 0e43 	orrs.w	lr, lr, r3, lsl #1 80206ec:	bf08      	it	eq 80206ee:	ea20 70d3 	biceq.w	r0, r0, r3, lsr #31 80206f2:	bd70      	pop	{r4, r5, r6, pc} 80206f4:	f1c4 040c 	rsb	r4, r4, #12 80206f8:	f1c4 0520 	rsb	r5, r4, #32 80206fc:	fa00 f304 	lsl.w	r3, r0, r4 8020700:	fa20 f005 	lsr.w	r0, r0, r5 8020704:	fa01 f204 	lsl.w	r2, r1, r4 8020708:	ea40 0002 	orr.w	r0, r0, r2 802070c:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000 8020710:	eb10 70d3 	adds.w	r0, r0, r3, lsr #31 8020714:	f141 0100 	adc.w	r1, r1, #0 8020718:	ea5e 0e43 	orrs.w	lr, lr, r3, lsl #1 802071c:	bf08      	it	eq 802071e:	ea20 70d3 	biceq.w	r0, r0, r3, lsr #31 8020722:	bd70      	pop	{r4, r5, r6, pc} 8020724:	f1c4 0520 	rsb	r5, r4, #32 8020728:	fa00 f205 	lsl.w	r2, r0, r5 802072c:	ea4e 0e02 	orr.w	lr, lr, r2 8020730:	fa20 f304 	lsr.w	r3, r0, r4 8020734:	fa01 f205 	lsl.w	r2, r1, r5 8020738:	ea43 0302 	orr.w	r3, r3, r2 802073c:	fa21 f004 	lsr.w	r0, r1, r4 8020740:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000 8020744:	fa21 f204 	lsr.w	r2, r1, r4 8020748:	ea20 0002 	bic.w	r0, r0, r2 802074c:	eb00 70d3 	add.w	r0, r0, r3, lsr #31 8020750:	ea5e 0e43 	orrs.w	lr, lr, r3, lsl #1 8020754:	bf08      	it	eq 8020756:	ea20 70d3 	biceq.w	r0, r0, r3, lsr #31 802075a:	bd70      	pop	{r4, r5, r6, pc} 802075c:	f094 0f00 	teq	r4, #0 8020760:	d10f      	bne.n	8020782 <__aeabi_dmul+0x1c2> 8020762:	f001 4600 	and.w	r6, r1, #2147483648	; 0x80000000 8020766:	0040      	lsls	r0, r0, #1 8020768:	eb41 0101 	adc.w	r1, r1, r1 802076c:	f411 1f80 	tst.w	r1, #1048576	; 0x100000 8020770:	bf08      	it	eq 8020772:	3c01      	subeq	r4, #1 8020774:	d0f7      	beq.n	8020766 <__aeabi_dmul+0x1a6> 8020776:	ea41 0106 	orr.w	r1, r1, r6 802077a:	f095 0f00 	teq	r5, #0 802077e:	bf18      	it	ne 8020780:	4770      	bxne	lr 8020782:	f003 4600 	and.w	r6, r3, #2147483648	; 0x80000000 8020786:	0052      	lsls	r2, r2, #1 8020788:	eb43 0303 	adc.w	r3, r3, r3 802078c:	f413 1f80 	tst.w	r3, #1048576	; 0x100000 8020790:	bf08      	it	eq 8020792:	3d01      	subeq	r5, #1 8020794:	d0f7      	beq.n	8020786 <__aeabi_dmul+0x1c6> 8020796:	ea43 0306 	orr.w	r3, r3, r6 802079a:	4770      	bx	lr 802079c:	ea94 0f0c 	teq	r4, ip 80207a0:	ea0c 5513 	and.w	r5, ip, r3, lsr #20 80207a4:	bf18      	it	ne 80207a6:	ea95 0f0c 	teqne	r5, ip 80207aa:	d00c      	beq.n	80207c6 <__aeabi_dmul+0x206> 80207ac:	ea50 0641 	orrs.w	r6, r0, r1, lsl #1 80207b0:	bf18      	it	ne 80207b2:	ea52 0643 	orrsne.w	r6, r2, r3, lsl #1 80207b6:	d1d1      	bne.n	802075c <__aeabi_dmul+0x19c> 80207b8:	ea81 0103 	eor.w	r1, r1, r3 80207bc:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000 80207c0:	f04f 0000 	mov.w	r0, #0 80207c4:	bd70      	pop	{r4, r5, r6, pc} 80207c6:	ea50 0641 	orrs.w	r6, r0, r1, lsl #1 80207ca:	bf06      	itte	eq 80207cc:	4610      	moveq	r0, r2 80207ce:	4619      	moveq	r1, r3 80207d0:	ea52 0643 	orrsne.w	r6, r2, r3, lsl #1 80207d4:	d019      	beq.n	802080a <__aeabi_dmul+0x24a> 80207d6:	ea94 0f0c 	teq	r4, ip 80207da:	d102      	bne.n	80207e2 <__aeabi_dmul+0x222> 80207dc:	ea50 3601 	orrs.w	r6, r0, r1, lsl #12 80207e0:	d113      	bne.n	802080a <__aeabi_dmul+0x24a> 80207e2:	ea95 0f0c 	teq	r5, ip 80207e6:	d105      	bne.n	80207f4 <__aeabi_dmul+0x234> 80207e8:	ea52 3603 	orrs.w	r6, r2, r3, lsl #12 80207ec:	bf1c      	itt	ne 80207ee:	4610      	movne	r0, r2 80207f0:	4619      	movne	r1, r3 80207f2:	d10a      	bne.n	802080a <__aeabi_dmul+0x24a> 80207f4:	ea81 0103 	eor.w	r1, r1, r3 80207f8:	f001 4100 	and.w	r1, r1, #2147483648	; 0x80000000 80207fc:	f041 41fe 	orr.w	r1, r1, #2130706432	; 0x7f000000 8020800:	f441 0170 	orr.w	r1, r1, #15728640	; 0xf00000 8020804:	f04f 0000 	mov.w	r0, #0 8020808:	bd70      	pop	{r4, r5, r6, pc} 802080a:	f041 41fe 	orr.w	r1, r1, #2130706432	; 0x7f000000 802080e:	f441 0178 	orr.w	r1, r1, #16252928	; 0xf80000 8020812:	bd70      	pop	{r4, r5, r6, pc}08020814 <__aeabi_ddiv>: 8020814:	b570      	push	{r4, r5, r6, lr} 8020816:	f04f 0cff 	mov.w	ip, #255	; 0xff 802081a:	f44c 6ce0 	orr.w	ip, ip, #1792	; 0x700 802081e:	ea1c 5411 	ands.w	r4, ip, r1, lsr #20 8020822:	bf1d      	ittte	ne 8020824:	ea1c 5513 	andsne.w	r5, ip, r3, lsr #20 8020828:	ea94 0f0c 	teqne	r4, ip 802082c:	ea95 0f0c 	teqne	r5, ip 8020830:	f000 f8a7 	bleq	8020982 <__aeabi_ddiv+0x16e> 8020834:	eba4 0405 	sub.w	r4, r4, r5 8020838:	ea81 0e03 	eor.w	lr, r1, r3 802083c:	ea52 3503 	orrs.w	r5, r2, r3, lsl #12 8020840:	ea4f 3101 	mov.w	r1, r1, lsl #12 8020844:	f000 8088 	beq.w	8020958 <__aeabi_ddiv+0x144> 8020848:	ea4f 3303 	mov.w	r3, r3, lsl #12 802084c:	f04f 5580 	mov.w	r5, #268435456	; 0x10000000 8020850:	ea45 1313 	orr.w	r3, r5, r3, lsr #4 8020854:	ea43 6312 	orr.w	r3, r3, r2, lsr #24 8020858:	ea4f 2202 	mov.w	r2, r2, lsl #8 802085c:	ea45 1511 	orr.w	r5, r5, r1, lsr #4 8020860:	ea45 6510 	orr.w	r5, r5, r0, lsr #24 8020864:	ea4f 2600 	mov.w	r6, r0, lsl #8 8020868:	f00e 4100 	and.w	r1, lr, #2147483648	; 0x80000000 802086c:	429d      	cmp	r5, r3 802086e:	bf08      	it	eq 8020870:	4296      	cmpeq	r6, r2 8020872:	f144 04fd 	adc.w	r4, r4, #253	; 0xfd 8020876:	f504 7440 	add.w	r4, r4, #768	; 0x300 802087a:	d202      	bcs.n	8020882 <__aeabi_ddiv+0x6e> 802087c:	085b      	lsrs	r3, r3, #1 802087e:	ea4f 0232 	mov.w	r2, r2, rrx 8020882:	1ab6      	subs	r6, r6, r2 8020884:	eb65 0503 	sbc.w	r5, r5, r3 8020888:	085b      	lsrs	r3, r3, #1 802088a:	ea4f 0232 	mov.w	r2, r2, rrx 802088e:	f44f 1080 	mov.w	r0, #1048576	; 0x100000 8020892:	f44f 2c00 	mov.w	ip, #524288	; 0x80000 8020896:	ebb6 0e02 	subs.w	lr, r6, r2 802089a:	eb75 0e03 	sbcs.w	lr, r5, r3 802089e:	bf22      	ittt	cs 80208a0:	1ab6      	subcs	r6, r6, r2 80208a2:	4675      	movcs	r5, lr 80208a4:	ea40 000c 	orrcs.w	r0, r0, ip 80208a8:	085b      	lsrs	r3, r3, #1 80208aa:	ea4f 0232 	mov.w	r2, r2, rrx 80208ae:	ebb6 0e02 	subs.w	lr, r6, r2 80208b2:	eb75 0e03 	sbcs.w	lr, r5, r3 80208b6:	bf22      	ittt	cs 80208b8:	1ab6      	subcs	r6, r6, r2 80208ba:	4675      	movcs	r5, lr 80208bc:	ea40 005c 	orrcs.w	r0, r0, ip, lsr #1 80208c0:	085b      	lsrs	r3, r3, #1 80208c2:	ea4f 0232 	mov.w	r2, r2, rrx 80208c6:	ebb6 0e02 	subs.w	lr, r6, r2 80208ca:	eb75 0e03 	sbcs.w	lr, r5, r3 80208ce:	bf22      	ittt	cs 80208d0:	1ab6      	subcs	r6, r6, r2 80208d2:	4675      	movcs	r5, lr 80208d4:	ea40 009c 	orrcs.w	r0, r0, ip, lsr #2 80208d8:	085b      	lsrs	r3, r3, #1 80208da:	ea4f 0232 	mov.w	r2, r2, rrx 80208de:	ebb6 0e02 	subs.w	lr, r6, r2 80208e2:	eb75 0e03 	sbcs.w	lr, r5, r3 80208e6:	bf22      	ittt	cs 80208e8:	1ab6      	subcs	r6, r6, r2 80208ea:	4675      	movcs	r5, lr 80208ec:	ea40 00dc 	orrcs.w	r0, r0, ip, lsr #3 80208f0:	ea55 0e06 	orrs.w	lr, r5, r6 80208f4:	d018      	beq.n	8020928 <__aeabi_ddiv+0x114> 80208f6:	ea4f 1505 	mov.w	r5, r5, lsl #4 80208fa:	ea45 7516 	orr.w	r5, r5, r6, lsr #28 80208fe:	ea4f 1606 	mov.w	r6, r6, lsl #4 8020902:	ea4f 03c3 	mov.w	r3, r3, lsl #3 8020906:	ea43 7352 	orr.w	r3, r3, r2, lsr #29 802090a:	ea4f 02c2 	mov.w	r2, r2, lsl #3 802090e:	ea5f 1c1c 	movs.w	ip, ip, lsr #4 8020912:	d1c0      	bne.n	8020896 <__aeabi_ddiv+0x82> 8020914:	f411 1f80 	tst.w	r1, #1048576	; 0x100000 8020918:	d10b      	bne.n	8020932 <__aeabi_ddiv+0x11e> 802091a:	ea41 0100 	orr.w	r1, r1, r0 802091e:	f04f 0000 	mov.w	r0, #0 8020922:	f04f 4c00 	mov.w	ip, #2147483648	; 0x80000000 8020926:	e7b6      	b.n	8020896 <__aeabi_ddiv+0x82> 8020928:	f411 1f80 	tst.w	r1, #1048576	; 0x100000 802092c:	bf04      	itt	eq 802092e:	4301      	orreq	r1, r0 8020930:	2000      	moveq	r0, #0 8020932:	f1b4 0cfd 	subs.w	ip, r4, #253	; 0xfd 8020936:	bf88      	it	hi 8020938:	f5bc 6fe0 	cmphi.w	ip, #1792	; 0x700 802093c:	f63f aeaf 	bhi.w	802069e <__aeabi_dmul+0xde> 8020940:	ebb5 0c03 	subs.w	ip, r5, r3 8020944:	bf04      	itt	eq 8020946:	ebb6 0c02 	subseq.w	ip, r6, r2 802094a:	ea5f 0c50 	movseq.w	ip, r0, lsr #1 802094e:	f150 0000 	adcs.w	r0, r0, #0 8020952:	eb41 5104 	adc.w	r1, r1, r4, lsl #20 8020956:	bd70      	pop	{r4, r5, r6, pc} 8020958:	f00e 4e00 	and.w	lr, lr, #2147483648	; 0x80000000 802095c:	ea4e 3111 	orr.w	r1, lr, r1, lsr #12 8020960:	eb14 045c 	adds.w	r4, r4, ip, lsr #1 8020964:	bfc2      	ittt	gt 8020966:	ebd4 050c 	rsbsgt	r5, r4, ip 802096a:	ea41 5104 	orrgt.w	r1, r1, r4, lsl #20 802096e:	bd70      	popgt	{r4, r5, r6, pc} 8020970:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000 8020974:	f04f 0e00 	mov.w	lr, #0 8020978:	3c01      	subs	r4, #1 802097a:	e690      	b.n	802069e <__aeabi_dmul+0xde> 802097c:	ea45 0e06 	orr.w	lr, r5, r6 8020980:	e68d      	b.n	802069e <__aeabi_dmul+0xde> 8020982:	ea0c 5513 	and.w	r5, ip, r3, lsr #20 8020986:	ea94 0f0c 	teq	r4, ip 802098a:	bf08      	it	eq 802098c:	ea95 0f0c 	teqeq	r5, ip 8020990:	f43f af3b 	beq.w	802080a <__aeabi_dmul+0x24a> 8020994:	ea94 0f0c 	teq	r4, ip 8020998:	d10a      	bne.n	80209b0 <__aeabi_ddiv+0x19c> 802099a:	ea50 3401 	orrs.w	r4, r0, r1, lsl #12 802099e:	f47f af34 	bne.w	802080a <__aeabi_dmul+0x24a> 80209a2:	ea95 0f0c 	teq	r5, ip 80209a6:	f47f af25 	bne.w	80207f4 <__aeabi_dmul+0x234> 80209aa:	4610      	mov	r0, r2 80209ac:	4619      	mov	r1, r3 80209ae:	e72c      	b.n	802080a <__aeabi_dmul+0x24a> 80209b0:	ea95 0f0c 	teq	r5, ip 80209b4:	d106      	bne.n	80209c4 <__aeabi_ddiv+0x1b0> 80209b6:	ea52 3503 	orrs.w	r5, r2, r3, lsl #12 80209ba:	f43f aefd 	beq.w	80207b8 <__aeabi_dmul+0x1f8> 80209be:	4610      	mov	r0, r2 80209c0:	4619      	mov	r1, r3 80209c2:	e722      	b.n	802080a <__aeabi_dmul+0x24a> 80209c4:	ea50 0641 	orrs.w	r6, r0, r1, lsl #1 80209c8:	bf18      	it	ne 80209ca:	ea52 0643 	orrsne.w	r6, r2, r3, lsl #1 80209ce:	f47f aec5 	bne.w	802075c <__aeabi_dmul+0x19c> 80209d2:	ea50 0441 	orrs.w	r4, r0, r1, lsl #1 80209d6:	f47f af0d 	bne.w	80207f4 <__aeabi_dmul+0x234> 80209da:	ea52 0543 	orrs.w	r5, r2, r3, lsl #1 80209de:	f47f aeeb 	bne.w	80207b8 <__aeabi_dmul+0x1f8> 80209e2:	e712      	b.n	802080a <__aeabi_dmul+0x24a>080209e4 <__gedf2>: 80209e4:	f04f 3cff 	mov.w	ip, #4294967295 80209e8:	e006      	b.n	80209f8 <__cmpdf2+0x4> 80209ea:	bf00      	nop080209ec <__ledf2>: 80209ec:	f04f 0c01 	mov.w	ip, #1 80209f0:	e002      	b.n	80209f8 <__cmpdf2+0x4> 80209f2:	bf00      	nop080209f4 <__cmpdf2>: 80209f4:	f04f 0c01 	mov.w	ip, #1 80209f8:	f84d cd04 	str.w	ip, [sp, #-4]! 80209fc:	ea4f 0c41 	mov.w	ip, r1, lsl #1 8020a00:	ea7f 5c6c 	mvns.w	ip, ip, asr #21 8020a04:	ea4f 0c43 	mov.w	ip, r3, lsl #1 8020a08:	bf18      	it	ne 8020a0a:	ea7f 5c6c 	mvnsne.w	ip, ip, asr #21 8020a0e:	d01b      	beq.n	8020a48 <__cmpdf2+0x54> 8020a10:	b001      	add	sp, #4 8020a12:	ea50 0c41 	orrs.w	ip, r0, r1, lsl #1 8020a16:	bf0c      	ite	eq 8020a18:	ea52 0c43 	orrseq.w	ip, r2, r3, lsl #1 8020a1c:	ea91 0f03 	teqne	r1, r3 8020a20:	bf02      	ittt	eq 8020a22:	ea90 0f02 	teqeq	r0, r2 8020a26:	2000      	moveq	r0, #0 8020a28:	4770      	bxeq	lr 8020a2a:	f110 0f00 	cmn.w	r0, #0 8020a2e:	ea91 0f03 	teq	r1, r3 8020a32:	bf58      	it	pl 8020a34:	4299      	cmppl	r1, r3 8020a36:	bf08      	it	eq 8020a38:	4290      	cmpeq	r0, r2 8020a3a:	bf2c      	ite	cs 8020a3c:	17d8      	asrcs	r0, r3, #31 8020a3e:	ea6f 70e3 	mvncc.w	r0, r3, asr #31 8020a42:	f040 0001 	orr.w	r0, r0, #1 8020a46:	4770      	bx	lr 8020a48:	ea4f 0c41 	mov.w	ip, r1, lsl #1 8020a4c:	ea7f 5c6c 	mvns.w	ip, ip, asr #21 8020a50:	d102      	bne.n	8020a58 <__cmpdf2+0x64> 8020a52:	ea50 3c01 	orrs.w	ip, r0, r1, lsl #12 8020a56:	d107      	bne.n	8020a68 <__cmpdf2+0x74> 8020a58:	ea4f 0c43 	mov.w	ip, r3, lsl #1 8020a5c:	ea7f 5c6c 	mvns.w	ip, ip, asr #21 8020a60:	d1d6      	bne.n	8020a10 <__cmpdf2+0x1c> 8020a62:	ea52 3c03 	orrs.w	ip, r2, r3, lsl #12 8020a66:	d0d3      	beq.n	8020a10 <__cmpdf2+0x1c> 8020a68:	f85d 0b04 	ldr.w	r0, [sp], #4 8020a6c:	4770      	bx	lr 8020a6e:	bf00      	nop08020a70 <__aeabi_cdrcmple>: 8020a70:	4684      	mov	ip, r0 8020a72:	4610      	mov	r0, r2 8020a74:	4662      	mov	r2, ip 8020a76:	468c      	mov	ip, r1 8020a78:	4619      	mov	r1, r3 8020a7a:	4663      	mov	r3, ip 8020a7c:	e000      	b.n	8020a80 <__aeabi_cdcmpeq> 8020a7e:	bf00      	nop08020a80 <__aeabi_cdcmpeq>: 8020a80:	b501      	push	{r0, lr} 8020a82:	f7ff ffb7 	bl	80209f4 <__cmpdf2> 8020a86:	2800      	cmp	r0, #0 8020a88:	bf48      	it	mi 8020a8a:	f110 0f00 	cmnmi.w	r0, #0 8020a8e:	bd01      	pop	{r0, pc}08020a90 <__aeabi_dcmpeq>: 8020a90:	f84d ed08 	str.w	lr, [sp, #-8]! 8020a94:	f7ff fff4 	bl	8020a80 <__aeabi_cdcmpeq> 8020a98:	bf0c      	ite	eq 8020a9a:	2001      	moveq	r0, #1 8020a9c:	2000      	movne	r0, #0 8020a9e:	f85d fb08 	ldr.w	pc, [sp], #8 8020aa2:	bf00      	nop08020aa4 <__aeabi_dcmplt>: 8020aa4:	f84d ed08 	str.w	lr, [sp, #-8]! 8020aa8:	f7ff ffea 	bl	8020a80 <__aeabi_cdcmpeq> 8020aac:	bf34      	ite	cc 8020aae:	2001      	movcc	r0, #1 8020ab0:	2000      	movcs	r0, #0 8020ab2:	f85d fb08 	ldr.w	pc, [sp], #8 8020ab6:	bf00      	nop08020ab8 <__aeabi_dcmple>: 8020ab8:	f84d ed08 	str.w	lr, [sp, #-8]! 8020abc:	f7ff ffe0 	bl	8020a80 <__aeabi_cdcmpeq> 8020ac0:	bf94      	ite	ls 8020ac2:	2001      	movls	r0, #1 8020ac4:	2000      	movhi	r0, #0 8020ac6:	f85d fb08 	ldr.w	pc, [sp], #8 8020aca:	bf00      	nop08020acc <__aeabi_dcmpge>: 8020acc:	f84d ed08 	str.w	lr, [sp, #-8]! 8020ad0:	f7ff ffce 	bl	8020a70 <__aeabi_cdrcmple> 8020ad4:	bf94      	ite	ls 8020ad6:	2001      	movls	r0, #1 8020ad8:	2000      	movhi	r0, #0 8020ada:	f85d fb08 	ldr.w	pc, [sp], #8 8020ade:	bf00      	nop08020ae0 <__aeabi_dcmpgt>: 8020ae0:	f84d ed08 	str.w	lr, [sp, #-8]! 8020ae4:	f7ff ffc4 	bl	8020a70 <__aeabi_cdrcmple> 8020ae8:	bf34      	ite	cc 8020aea:	2001      	movcc	r0, #1 8020aec:	2000      	movcs	r0, #0 8020aee:	f85d fb08 	ldr.w	pc, [sp], #8 8020af2:	bf00      	nop08020af4 <__aeabi_d2iz>: 8020af4:	ea4f 0241 	mov.w	r2, r1, lsl #1 8020af8:	f512 1200 	adds.w	r2, r2, #2097152	; 0x200000 8020afc:	d215      	bcs.n	8020b2a <__aeabi_d2iz+0x36> 8020afe:	d511      	bpl.n	8020b24 <__aeabi_d2iz+0x30> 8020b00:	f46f 7378 	mvn.w	r3, #992	; 0x3e0 8020b04:	ebb3 5262 	subs.w	r2, r3, r2, asr #21 8020b08:	d912      	bls.n	8020b30 <__aeabi_d2iz+0x3c> 8020b0a:	ea4f 23c1 	mov.w	r3, r1, lsl #11 8020b0e:	f043 4300 	orr.w	r3, r3, #2147483648	; 0x80000000 8020b12:	ea43 5350 	orr.w	r3, r3, r0, lsr #21 8020b16:	f011 4f00 	tst.w	r1, #2147483648	; 0x80000000 8020b1a:	fa23 f002 	lsr.w	r0, r3, r2 8020b1e:	bf18      	it	ne 8020b20:	4240      	negne	r0, r0 8020b22:	4770      	bx	lr 8020b24:	f04f 0000 	mov.w	r0, #0 8020b28:	4770      	bx	lr 8020b2a:	ea50 3001 	orrs.w	r0, r0, r1, lsl #12 8020b2e:	d105      	bne.n	8020b3c <__aeabi_d2iz+0x48> 8020b30:	f011 4000 	ands.w	r0, r1, #2147483648	; 0x80000000 8020b34:	bf08      	it	eq 8020b36:	f06f 4000 	mvneq.w	r0, #2147483648	; 0x80000000 8020b3a:	4770      	bx	lr 8020b3c:	f04f 0000 	mov.w	r0, #0 8020b40:	4770      	bx	lr 8020b42:	bf00      	nop08020b44 <__aeabi_d2f>: 8020b44:	ea4f 0241 	mov.w	r2, r1, lsl #1 8020b48:	f1b2 43e0 	subs.w	r3, r2, #1879048192	; 0x70000000 8020b4c:	bf24      	itt	cs 8020b4e:	f5b3 1c00 	subscs.w	ip, r3, #2097152	; 0x200000 8020b52:	f1dc 5cfe 	rsbscs	ip, ip, #532676608	; 0x1fc00000 8020b56:	d90d      	bls.n	8020b74 <__aeabi_d2f+0x30> 8020b58:	f001 4c00 	and.w	ip, r1, #2147483648	; 0x80000000 8020b5c:	ea4f 02c0 	mov.w	r2, r0, lsl #3 8020b60:	ea4c 7050 	orr.w	r0, ip, r0, lsr #29 8020b64:	f1b2 4f00 	cmp.w	r2, #2147483648	; 0x80000000 8020b68:	eb40 0083 	adc.w	r0, r0, r3, lsl #2 8020b6c:	bf08      	it	eq 8020b6e:	f020 0001 	biceq.w	r0, r0, #1 8020b72:	4770      	bx	lr 8020b74:	f011 4f80 	tst.w	r1, #1073741824	; 0x40000000 8020b78:	d121      	bne.n	8020bbe <__aeabi_d2f+0x7a> 8020b7a:	f113 7238 	adds.w	r2, r3, #48234496	; 0x2e00000 8020b7e:	bfbc      	itt	lt 8020b80:	f001 4000 	andlt.w	r0, r1, #2147483648	; 0x80000000 8020b84:	4770      	bxlt	lr 8020b86:	f441 1180 	orr.w	r1, r1, #1048576	; 0x100000 8020b8a:	ea4f 5252 	mov.w	r2, r2, lsr #21 8020b8e:	f1c2 0218 	rsb	r2, r2, #24 8020b92:	f1c2 0c20 	rsb	ip, r2, #32 8020b96:	fa10 f30c 	lsls.w	r3, r0, ip 8020b9a:	fa20 f002 	lsr.w	r0, r0, r2 8020b9e:	bf18      	it	ne 8020ba0:	f040 0001 	orrne.w	r0, r0, #1 8020ba4:	ea4f 23c1 	mov.w	r3, r1, lsl #11 8020ba8:	ea4f 23d3 	mov.w	r3, r3, lsr #11 8020bac:	fa03 fc0c 	lsl.w	ip, r3, ip 8020bb0:	ea40 000c 	orr.w	r0, r0, ip 8020bb4:	fa23 f302 	lsr.w	r3, r3, r2 8020bb8:	ea4f 0343 	mov.w	r3, r3, lsl #1 8020bbc:	e7cc      	b.n	8020b58 <__aeabi_d2f+0x14> 8020bbe:	ea7f 5362 	mvns.w	r3, r2, asr #21 8020bc2:	d107      	bne.n	8020bd4 <__aeabi_d2f+0x90> 8020bc4:	ea50 3301 	orrs.w	r3, r0, r1, lsl #12 8020bc8:	bf1e      	ittt	ne 8020bca:	f04f 40fe 	movne.w	r0, #2130706432	; 0x7f000000 8020bce:	f440 0040 	orrne.w	r0, r0, #12582912	; 0xc00000 8020bd2:	4770      	bxne	lr 8020bd4:	f001 4000 	and.w	r0, r1, #2147483648	; 0x80000000 8020bd8:	f040 40fe 	orr.w	r0, r0, #2130706432	; 0x7f000000 8020bdc:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000 8020be0:	4770      	bx	lr 8020be2:	bf00      	nop08020be4 <__aeabi_frsub>: 8020be4:	f080 4000 	eor.w	r0, r0, #2147483648	; 0x80000000 8020be8:	e002      	b.n	8020bf0 <__addsf3> 8020bea:	bf00      	nop08020bec <__aeabi_fsub>: 8020bec:	f081 4100 	eor.w	r1, r1, #2147483648	; 0x8000000008020bf0 <__addsf3>: 8020bf0:	0042      	lsls	r2, r0, #1 8020bf2:	bf1f      	itttt	ne 8020bf4:	ea5f 0341 	movsne.w	r3, r1, lsl #1 8020bf8:	ea92 0f03 	teqne	r2, r3 8020bfc:	ea7f 6c22 	mvnsne.w	ip, r2, asr #24 8020c00:	ea7f 6c23 	mvnsne.w	ip, r3, asr #24 8020c04:	d06a      	beq.n	8020cdc <__addsf3+0xec> 8020c06:	ea4f 6212 	mov.w	r2, r2, lsr #24 8020c0a:	ebd2 6313 	rsbs	r3, r2, r3, lsr #24 8020c0e:	bfc1      	itttt	gt 8020c10:	18d2      	addgt	r2, r2, r3 8020c12:	4041      	eorgt	r1, r0 8020c14:	4048      	eorgt	r0, r1 8020c16:	4041      	eorgt	r1, r0 8020c18:	bfb8      	it	lt 8020c1a:	425b      	neglt	r3, r3 8020c1c:	2b19      	cmp	r3, #25 8020c1e:	bf88      	it	hi 8020c20:	4770      	bxhi	lr 8020c22:	f010 4f00 	tst.w	r0, #2147483648	; 0x80000000 8020c26:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000 8020c2a:	f020 407f 	bic.w	r0, r0, #4278190080	; 0xff000000 8020c2e:	bf18      	it	ne 8020c30:	4240      	negne	r0, r0 8020c32:	f011 4f00 	tst.w	r1, #2147483648	; 0x80000000 8020c36:	f441 0100 	orr.w	r1, r1, #8388608	; 0x800000 8020c3a:	f021 417f 	bic.w	r1, r1, #4278190080	; 0xff000000 8020c3e:	bf18      	it	ne 8020c40:	4249      	negne	r1, r1 8020c42:	ea92 0f03 	teq	r2, r3 8020c46:	d03f      	beq.n	8020cc8 <__addsf3+0xd8> 8020c48:	f1a2 0201 	sub.w	r2, r2, #1 8020c4c:	fa41 fc03 	asr.w	ip, r1, r3 8020c50:	eb10 000c 	adds.w	r0, r0, ip 8020c54:	f1c3 0320 	rsb	r3, r3, #32 8020c58:	fa01 f103 	lsl.w	r1, r1, r3 8020c5c:	f000 4300 	and.w	r3, r0, #2147483648	; 0x80000000 8020c60:	d502      	bpl.n	8020c68 <__addsf3+0x78> 8020c62:	4249      	negs	r1, r1 8020c64:	eb60 0040 	sbc.w	r0, r0, r0, lsl #1 8020c68:	f5b0 0f00 	cmp.w	r0, #8388608	; 0x800000 8020c6c:	d313      	bcc.n	8020c96 <__addsf3+0xa6> 8020c6e:	f1b0 7f80 	cmp.w	r0, #16777216	; 0x1000000 8020c72:	d306      	bcc.n	8020c82 <__addsf3+0x92> 8020c74:	0840      	lsrs	r0, r0, #1 8020c76:	ea4f 0131 	mov.w	r1, r1, rrx 8020c7a:	f102 0201 	add.w	r2, r2, #1 8020c7e:	2afe      	cmp	r2, #254	; 0xfe 8020c80:	d251      	bcs.n	8020d26 <__addsf3+0x136> 8020c82:	f1b1 4f00 	cmp.w	r1, #2147483648	; 0x80000000 8020c86:	eb40 50c2 	adc.w	r0, r0, r2, lsl #23 8020c8a:	bf08      	it	eq 8020c8c:	f020 0001 	biceq.w	r0, r0, #1 8020c90:	ea40 0003 	orr.w	r0, r0, r3 8020c94:	4770      	bx	lr 8020c96:	0049      	lsls	r1, r1, #1 8020c98:	eb40 0000 	adc.w	r0, r0, r0 8020c9c:	f410 0f00 	tst.w	r0, #8388608	; 0x800000 8020ca0:	f1a2 0201 	sub.w	r2, r2, #1 8020ca4:	d1ed      	bne.n	8020c82 <__addsf3+0x92> 8020ca6:	fab0 fc80 	clz	ip, r0 8020caa:	f1ac 0c08 	sub.w	ip, ip, #8 8020cae:	ebb2 020c 	subs.w	r2, r2, ip 8020cb2:	fa00 f00c 	lsl.w	r0, r0, ip 8020cb6:	bfaa      	itet	ge 8020cb8:	eb00 50c2 	addge.w	r0, r0, r2, lsl #23 8020cbc:	4252      	neglt	r2, r2 8020cbe:	4318      	orrge	r0, r3 8020cc0:	bfbc      	itt	lt 8020cc2:	40d0      	lsrlt	r0, r2 8020cc4:	4318      	orrlt	r0, r3 8020cc6:	4770      	bx	lr 8020cc8:	f092 0f00 	teq	r2, #0 8020ccc:	f481 0100 	eor.w	r1, r1, #8388608	; 0x800000 8020cd0:	bf06      	itte	eq 8020cd2:	f480 0000 	eoreq.w	r0, r0, #8388608	; 0x800000 8020cd6:	3201      	addeq	r2, #1 8020cd8:	3b01      	subne	r3, #1 8020cda:	e7b5      	b.n	8020c48 <__addsf3+0x58> 8020cdc:	ea4f 0341 	mov.w	r3, r1, lsl #1 8020ce0:	ea7f 6c22 	mvns.w	ip, r2, asr #24 8020ce4:	bf18      	it	ne 8020ce6:	ea7f 6c23 	mvnsne.w	ip, r3, asr #24 8020cea:	d021      	beq.n	8020d30 <__addsf3+0x140> 8020cec:	ea92 0f03 	teq	r2, r3 8020cf0:	d004      	beq.n	8020cfc <__addsf3+0x10c> 8020cf2:	f092 0f00 	teq	r2, #0 8020cf6:	bf08      	it	eq 8020cf8:	4608      	moveq	r0, r1 8020cfa:	4770      	bx	lr 8020cfc:	ea90 0f01 	teq	r0, r1 8020d00:	bf1c      	itt	ne 8020d02:	2000      	movne	r0, #0 8020d04:	4770      	bxne	lr 8020d06:	f012 4f7f 	tst.w	r2, #4278190080	; 0xff000000 8020d0a:	d104      	bne.n	8020d16 <__addsf3+0x126> 8020d0c:	0040      	lsls	r0, r0, #1 8020d0e:	bf28      	it	cs 8020d10:	f040 4000 	orrcs.w	r0, r0, #2147483648	; 0x80000000 8020d14:	4770      	bx	lr 8020d16:	f112 7200 	adds.w	r2, r2, #33554432	; 0x2000000 8020d1a:	bf3c      	itt	cc 8020d1c:	f500 0000 	addcc.w	r0, r0, #8388608	; 0x800000 8020d20:	4770      	bxcc	lr 8020d22:	f000 4300 	and.w	r3, r0, #2147483648	; 0x80000000 8020d26:	f043 40fe 	orr.w	r0, r3, #2130706432	; 0x7f000000 8020d2a:	f440 0000 	orr.w	r0, r0, #8388608	; 0x800000 8020d2e:	4770      	bx	lr 8020d30:	ea7f 6222 	mvns.w	r2, r2, asr #24 8020d34:	bf16      	itet	ne 8020d36:	4608      	movne	r0, r1 8020d38:	ea7f 6323 	mvnseq.w	r3, r3, asr #24 8020d3c:	4601      	movne	r1, r0 8020d3e:	0242      	lsls	r2, r0, #9 8020d40:	bf06      	itte	eq 8020d42:	ea5f 2341 	movseq.w	r3, r1, lsl #9 8020d46:	ea90 0f01 	teqeq	r0, r1 8020d4a:	f440 0080 	orrne.w	r0, r0, #4194304	; 0x400000 8020d4e:	4770      	bx	lr08020d50 <__aeabi_ui2f>: 8020d50:	f04f 0300 	mov.w	r3, #0 8020d54:	e004      	b.n	8020d60 <__aeabi_i2f+0x8> 8020d56:	bf00      	nop08020d58 <__aeabi_i2f>: 8020d58:	f010 4300 	ands.w	r3, r0, #2147483648	; 0x80000000 8020d5c:	bf48      	it	mi 8020d5e:	4240      	negmi	r0, r0 8020d60:	ea5f 0c00 	movs.w	ip, r0 8020d64:	bf08      	it	eq 8020d66:	4770      	bxeq	lr 8020d68:	f043 4396 	orr.w	r3, r3, #1258291200	; 0x4b000000 8020d6c:	4601      	mov	r1, r0 8020d6e:	f04f 0000 	mov.w	r0, #0 8020d72:	e01c      	b.n	8020dae <__aeabi_l2f+0x2a>08020d74 <__aeabi_ul2f>: 8020d74:	ea50 0201 	orrs.w	r2, r0, r1 8020d78:	bf08      	it	eq 8020d7a:	4770      	bxeq	lr 8020d7c:	f04f 0300 	mov.w	r3, #0 8020d80:	e00a      	b.n	8020d98 <__aeabi_l2f+0x14> 8020d82:	bf00      	nop08020d84 <__aeabi_l2f>: 8020d84:	ea50 0201 	orrs.w	r2, r0, r1 8020d88:	bf08      	it	eq 8020d8a:	4770      	bxeq	lr 8020d8c:	f011 4300 	ands.w	r3, r1, #2147483648	; 0x80000000 8020d90:	d502      	bpl.n	8020d98 <__aeabi_l2f+0x14> 8020d92:	4240      	negs	r0, r0 8020d94:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1 8020d98:	ea5f 0c01 	movs.w	ip, r1 8020d9c:	bf02      	ittt	eq 8020d9e:	4684      	moveq	ip, r0 8020da0:	4601      	moveq	r1, r0 8020da2:	2000      	moveq	r0, #0 8020da4:	f043 43b6 	orr.w	r3, r3, #1526726656	; 0x5b000000 8020da8:	bf08      	it	eq 8020daa:	f1a3 5380 	subeq.w	r3, r3, #268435456	; 0x10000000 8020dae:	f5a3 0300 	sub.w	r3, r3, #8388608	; 0x800000 8020db2:	fabc f28c 	clz	r2, ip 8020db6:	3a08      	subs	r2, #8 8020db8:	eba3 53c2 	sub.w	r3, r3, r2, lsl #23 8020dbc:	db10      	blt.n	8020de0 <__aeabi_l2f+0x5c> 8020dbe:	fa01 fc02 	lsl.w	ip, r1, r2 8020dc2:	4463      	add	r3, ip 8020dc4:	fa00 fc02 	lsl.w	ip, r0, r2 8020dc8:	f1c2 0220 	rsb	r2, r2, #32 8020dcc:	f1bc 4f00 	cmp.w	ip, #2147483648	; 0x80000000 8020dd0:	fa20 f202 	lsr.w	r2, r0, r2 8020dd4:	eb43 0002 	adc.w	r0, r3, r2 8020dd8:	bf08      	it	eq 8020dda:	f020 0001 	biceq.w	r0, r0, #1 8020dde:	4770      	bx	lr 8020de0:	f102 0220 	add.w	r2, r2, #32 8020de4:	fa01 fc02 	lsl.w	ip, r1, r2 8020de8:	f1c2 0220 	rsb	r2, r2, #32 8020dec:	ea50 004c 	orrs.w	r0, r0, ip, lsl #1 8020df0:	fa21 f202 	lsr.w	r2, r1, r2 8020df4:	eb43 0002 	adc.w	r0, r3, r2 8020df8:	bf08      	it	eq 8020dfa:	ea20 70dc 	biceq.w	r0, r0, ip, lsr #31 8020dfe:	4770      	bx	lr08020e00 <__gesf2>: 8020e00:	f04f 3cff 	mov.w	ip, #4294967295 8020e04:	e006      	b.n	8020e14 <__cmpsf2+0x4> 8020e06:	bf00      	nop08020e08 <__lesf2>: 8020e08:	f04f 0c01 	mov.w	ip, #1 8020e0c:	e002      	b.n	8020e14 <__cmpsf2+0x4> 8020e0e:	bf00      	nop08020e10 <__cmpsf2>: 8020e10:	f04f 0c01 	mov.w	ip, #1 8020e14:	f84d cd04 	str.w	ip, [sp, #-4]! 8020e18:	ea4f 0240 	mov.w	r2, r0, lsl #1 8020e1c:	ea4f 0341 	mov.w	r3, r1, lsl #1 8020e20:	ea7f 6c22 	mvns.w	ip, r2, asr #24 8020e24:	bf18      	it	ne 8020e26:	ea7f 6c23 	mvnsne.w	ip, r3, asr #24 8020e2a:	d011      	beq.n	8020e50 <__cmpsf2+0x40> 8020e2c:	b001      	add	sp, #4 8020e2e:	ea52 0c53 	orrs.w	ip, r2, r3, lsr #1 8020e32:	bf18      	it	ne 8020e34:	ea90 0f01 	teqne	r0, r1 8020e38:	bf58      	it	pl 8020e3a:	ebb2 0003 	subspl.w	r0, r2, r3 8020e3e:	bf88      	it	hi 8020e40:	17c8      	asrhi	r0, r1, #31 8020e42:	bf38      	it	cc 8020e44:	ea6f 70e1 	mvncc.w	r0, r1, asr #31 8020e48:	bf18      	it	ne 8020e4a:	f040 0001 	orrne.w	r0, r0, #1 8020e4e:	4770      	bx	lr 8020e50:	ea7f 6c22 	mvns.w	ip, r2, asr #24 8020e54:	d102      	bne.n	8020e5c <__cmpsf2+0x4c> 8020e56:	ea5f 2c40 	movs.w	ip, r0, lsl #9 8020e5a:	d105      	bne.n	8020e68 <__cmpsf2+0x58> 8020e5c:	ea7f 6c23 	mvns.w	ip, r3, asr #24 8020e60:	d1e4      	bne.n	8020e2c <__cmpsf2+0x1c> 8020e62:	ea5f 2c41 	movs.w	ip, r1, lsl #9 8020e66:	d0e1      	beq.n	8020e2c <__cmpsf2+0x1c> 8020e68:	f85d 0b04 	ldr.w	r0, [sp], #4 8020e6c:	4770      	bx	lr 8020e6e:	bf00      	nop08020e70 <__aeabi_cfrcmple>: 8020e70:	4684      	mov	ip, r0 8020e72:	4608      	mov	r0, r1 8020e74:	4661      	mov	r1, ip 8020e76:	e7ff      	b.n	8020e78 <__aeabi_cfcmpeq>08020e78 <__aeabi_cfcmpeq>: 8020e78:	b50f      	push	{r0, r1, r2, r3, lr} 8020e7a:	f7ff ffc9 	bl	8020e10 <__cmpsf2> 8020e7e:	2800      	cmp	r0, #0 8020e80:	bf48      	it	mi 8020e82:	f110 0f00 	cmnmi.w	r0, #0 8020e86:	bd0f      	pop	{r0, r1, r2, r3, pc}08020e88 <__aeabi_fcmpeq>: 8020e88:	f84d ed08 	str.w	lr, [sp, #-8]! 8020e8c:	f7ff fff4 	bl	8020e78 <__aeabi_cfcmpeq> 8020e90:	bf0c      	ite	eq 8020e92:	2001      	moveq	r0, #1 8020e94:	2000      	movne	r0, #0 8020e96:	f85d fb08 	ldr.w	pc, [sp], #8 8020e9a:	bf00      	nop08020e9c <__aeabi_fcmplt>: 8020e9c:	f84d ed08 	str.w	lr, [sp, #-8]! 8020ea0:	f7ff ffea 	bl	8020e78 <__aeabi_cfcmpeq> 8020ea4:	bf34      	ite	cc 8020ea6:	2001      	movcc	r0, #1 8020ea8:	2000      	movcs	r0, #0 8020eaa:	f85d fb08 	ldr.w	pc, [sp], #8 8020eae:	bf00      	nop08020eb0 <__aeabi_fcmple>: 8020eb0:	f84d ed08 	str.w	lr, [sp, #-8]! 8020eb4:	f7ff ffe0 	bl	8020e78 <__aeabi_cfcmpeq> 8020eb8:	bf94      	ite	ls 8020eba:	2001      	movls	r0, #1 8020ebc:	2000      	movhi	r0, #0 8020ebe:	f85d fb08 	ldr.w	pc, [sp], #8 8020ec2:	bf00      	nop08020ec4 <__aeabi_fcmpge>: 8020ec4:	f84d ed08 	str.w	lr, [sp, #-8]! 8020ec8:	f7ff ffd2 	bl	8020e70 <__aeabi_cfrcmple> 8020ecc:	bf94      	ite	ls 8020ece:	2001      	movls	r0, #1 8020ed0:	2000      	movhi	r0, #0 8020ed2:	f85d fb08 	ldr.w	pc, [sp], #8 8020ed6:	bf00      	nop08020ed8 <__aeabi_fcmpgt>: 8020ed8:	f84d ed08 	str.w	lr, [sp, #-8]! 8020edc:	f7ff ffc8 	bl	8020e70 <__aeabi_cfrcmple> 8020ee0:	bf34      	ite	cc 8020ee2:	2001      	movcc	r0, #1 8020ee4:	2000      	movcs	r0, #0 8020ee6:	f85d fb08 	ldr.w	pc, [sp], #8 8020eea:	bf00      	nop08020eec <__aeabi_uldivmod>: 8020eec:	b94b      	cbnz	r3, 8020f02 <__aeabi_uldivmod+0x16> 8020eee:	b942      	cbnz	r2, 8020f02 <__aeabi_uldivmod+0x16> 8020ef0:	2900      	cmp	r1, #0 8020ef2:	bf08      	it	eq 8020ef4:	2800      	cmpeq	r0, #0 8020ef6:	d002      	beq.n	8020efe <__aeabi_uldivmod+0x12> 8020ef8:	f04f 31ff 	mov.w	r1, #4294967295 8020efc:	4608      	mov	r0, r1 8020efe:	f000 b83b 	b.w	8020f78 <__aeabi_idiv0> 8020f02:	b082      	sub	sp, #8 8020f04:	46ec      	mov	ip, sp 8020f06:	e92d 5000 	stmdb	sp!, {ip, lr} 8020f0a:	f000 f81d 	bl	8020f48 <__gnu_uldivmod_helper> 8020f0e:	f8dd e004 	ldr.w	lr, [sp, #4] 8020f12:	b002      	add	sp, #8 8020f14:	bc0c      	pop	{r2, r3} 8020f16:	4770      	bx	lr08020f18 <__gnu_ldivmod_helper>: 8020f18:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 8020f1c:	4690      	mov	r8, r2 8020f1e:	4699      	mov	r9, r3 8020f20:	4606      	mov	r6, r0 8020f22:	460f      	mov	r7, r1 8020f24:	f000 f82a 	bl	8020f7c <__divdi3> 8020f28:	9b08      	ldr	r3, [sp, #32] 8020f2a:	fba8 4500 	umull	r4, r5, r8, r0 8020f2e:	fb08 f801 	mul.w	r8, r8, r1 8020f32:	fb00 8209 	mla	r2, r0, r9, r8 8020f36:	1955      	adds	r5, r2, r5 8020f38:	1b34      	subs	r4, r6, r4 8020f3a:	eb67 0505 	sbc.w	r5, r7, r5 8020f3e:	e9c3 4500 	strd	r4, r5, [r3] 8020f42:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 8020f46:	bf00      	nop08020f48 <__gnu_uldivmod_helper>: 8020f48:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8020f4c:	4690      	mov	r8, r2 8020f4e:	4606      	mov	r6, r0 8020f50:	460f      	mov	r7, r1 8020f52:	461d      	mov	r5, r3 8020f54:	f000 f9c8 	bl	80212e8 <__udivdi3> 8020f58:	fb00 f305 	mul.w	r3, r0, r5 8020f5c:	fba0 4508 	umull	r4, r5, r0, r8 8020f60:	fb08 3801 	mla	r8, r8, r1, r3 8020f64:	9b06      	ldr	r3, [sp, #24] 8020f66:	4445      	add	r5, r8 8020f68:	1b34      	subs	r4, r6, r4 8020f6a:	eb67 0505 	sbc.w	r5, r7, r5 8020f6e:	e9c3 4500 	strd	r4, r5, [r3] 8020f72:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 8020f76:	bf00      	nop08020f78 <__aeabi_idiv0>: 8020f78:	4770      	bx	lr 8020f7a:	bf00      	nop08020f7c <__divdi3>: 8020f7c:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8020f80:	2500      	movs	r5, #0 8020f82:	2900      	cmp	r1, #0 8020f84:	b085      	sub	sp, #20 8020f86:	461c      	mov	r4, r3 8020f88:	f2c0 8149 	blt.w	802121e <__divdi3+0x2a2> 8020f8c:	2c00      	cmp	r4, #0 8020f8e:	f2c0 8141 	blt.w	8021214 <__divdi3+0x298> 8020f92:	468c      	mov	ip, r1 8020f94:	460f      	mov	r7, r1 8020f96:	4682      	mov	sl, r0 8020f98:	4691      	mov	r9, r2 8020f9a:	4614      	mov	r4, r2 8020f9c:	4606      	mov	r6, r0 8020f9e:	4619      	mov	r1, r3 8020fa0:	2b00      	cmp	r3, #0 8020fa2:	d14b      	bne.n	802103c <__divdi3+0xc0> 8020fa4:	4562      	cmp	r2, ip 8020fa6:	d959      	bls.n	802105c <__divdi3+0xe0> 8020fa8:	fab2 f382 	clz	r3, r2 8020fac:	b143      	cbz	r3, 8020fc0 <__divdi3+0x44> 8020fae:	f1c3 0220 	rsb	r2, r3, #32 8020fb2:	fa0c f703 	lsl.w	r7, ip, r3 8020fb6:	fa20 f202 	lsr.w	r2, r0, r2 8020fba:	409c      	lsls	r4, r3 8020fbc:	4317      	orrs	r7, r2 8020fbe:	409e      	lsls	r6, r3 8020fc0:	ea4f 4814 	mov.w	r8, r4, lsr #16 8020fc4:	4638      	mov	r0, r7 8020fc6:	4641      	mov	r1, r8 8020fc8:	fa1f f984 	uxth.w	r9, r4 8020fcc:	f000 fb18 	bl	8021600 <__aeabi_uidiv> 8020fd0:	4641      	mov	r1, r8 8020fd2:	4682      	mov	sl, r0 8020fd4:	4638      	mov	r0, r7 8020fd6:	f000 fc41 	bl	802185c <__aeabi_uidivmod> 8020fda:	0c33      	lsrs	r3, r6, #16 8020fdc:	fb09 f00a 	mul.w	r0, r9, sl 8020fe0:	ea43 4101 	orr.w	r1, r3, r1, lsl #16 8020fe4:	4288      	cmp	r0, r1 8020fe6:	d90a      	bls.n	8020ffe <__divdi3+0x82> 8020fe8:	1909      	adds	r1, r1, r4 8020fea:	f10a 32ff 	add.w	r2, sl, #4294967295 8020fee:	d205      	bcs.n	8020ffc <__divdi3+0x80> 8020ff0:	4288      	cmp	r0, r1 8020ff2:	bf84      	itt	hi 8020ff4:	f1aa 0a02 	subhi.w	sl, sl, #2 8020ff8:	1909      	addhi	r1, r1, r4 8020ffa:	d800      	bhi.n	8020ffe <__divdi3+0x82> 8020ffc:	4692      	mov	sl, r2 8020ffe:	ebc0 0b01 	rsb	fp, r0, r1 8021002:	4641      	mov	r1, r8 8021004:	4658      	mov	r0, fp 8021006:	b2b6      	uxth	r6, r6 8021008:	f000 fafa 	bl	8021600 <__aeabi_uidiv> 802100c:	4641      	mov	r1, r8 802100e:	4607      	mov	r7, r0 8021010:	4658      	mov	r0, fp 8021012:	f000 fc23 	bl	802185c <__aeabi_uidivmod> 8021016:	fb09 f907 	mul.w	r9, r9, r7 802101a:	ea46 4101 	orr.w	r1, r6, r1, lsl #16 802101e:	4589      	cmp	r9, r1 8021020:	d907      	bls.n	8021032 <__divdi3+0xb6> 8021022:	1e7b      	subs	r3, r7, #1 8021024:	190c      	adds	r4, r1, r4 8021026:	f080 8157 	bcs.w	80212d8 <__divdi3+0x35c> 802102a:	3f02      	subs	r7, #2 802102c:	45a1      	cmp	r9, r4 802102e:	f240 8153 	bls.w	80212d8 <__divdi3+0x35c> 8021032:	ea47 400a 	orr.w	r0, r7, sl, lsl #16 8021036:	f04f 0800 	mov.w	r8, #0 802103a:	e004      	b.n	8021046 <__divdi3+0xca> 802103c:	4563      	cmp	r3, ip 802103e:	d958      	bls.n	80210f2 <__divdi3+0x176> 8021040:	f04f 0800 	mov.w	r8, #0 8021044:	4640      	mov	r0, r8 8021046:	4602      	mov	r2, r0 8021048:	4643      	mov	r3, r8 802104a:	b115      	cbz	r5, 8021052 <__divdi3+0xd6> 802104c:	4252      	negs	r2, r2 802104e:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1 8021052:	4610      	mov	r0, r2 8021054:	4619      	mov	r1, r3 8021056:	b005      	add	sp, #20 8021058:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802105c:	b922      	cbnz	r2, 8021068 <__divdi3+0xec> 802105e:	2001      	movs	r0, #1 8021060:	4611      	mov	r1, r2 8021062:	f000 facd 	bl	8021600 <__aeabi_uidiv> 8021066:	4604      	mov	r4, r0 8021068:	fab4 f384 	clz	r3, r4 802106c:	2b00      	cmp	r3, #0 802106e:	f040 80dc 	bne.w	802122a <__divdi3+0x2ae> 8021072:	1b3f      	subs	r7, r7, r4 8021074:	ea4f 4914 	mov.w	r9, r4, lsr #16 8021078:	fa1f fa84 	uxth.w	sl, r4 802107c:	f04f 0801 	mov.w	r8, #1 8021080:	4649      	mov	r1, r9 8021082:	4638      	mov	r0, r7 8021084:	f000 fabc 	bl	8021600 <__aeabi_uidiv> 8021088:	4649      	mov	r1, r9 802108a:	4683      	mov	fp, r0 802108c:	4638      	mov	r0, r7 802108e:	f000 fbe5 	bl	802185c <__aeabi_uidivmod> 8021092:	0c33      	lsrs	r3, r6, #16 8021094:	fb0a f00b 	mul.w	r0, sl, fp 8021098:	ea43 4101 	orr.w	r1, r3, r1, lsl #16 802109c:	4288      	cmp	r0, r1 802109e:	d90b      	bls.n	80210b8 <__divdi3+0x13c> 80210a0:	1909      	adds	r1, r1, r4 80210a2:	f10b 33ff 	add.w	r3, fp, #4294967295 80210a6:	f080 8115 	bcs.w	80212d4 <__divdi3+0x358> 80210aa:	4288      	cmp	r0, r1 80210ac:	bf84      	itt	hi 80210ae:	f1ab 0b02 	subhi.w	fp, fp, #2 80210b2:	1909      	addhi	r1, r1, r4 80210b4:	f240 810e 	bls.w	80212d4 <__divdi3+0x358> 80210b8:	1a0b      	subs	r3, r1, r0 80210ba:	4649      	mov	r1, r9 80210bc:	4618      	mov	r0, r3 80210be:	9301      	str	r3, [sp, #4] 80210c0:	f000 fa9e 	bl	8021600 <__aeabi_uidiv> 80210c4:	9b01      	ldr	r3, [sp, #4] 80210c6:	4649      	mov	r1, r9 80210c8:	b2b6      	uxth	r6, r6 80210ca:	4607      	mov	r7, r0 80210cc:	4618      	mov	r0, r3 80210ce:	f000 fbc5 	bl	802185c <__aeabi_uidivmod> 80210d2:	fb0a fa07 	mul.w	sl, sl, r7 80210d6:	ea46 4101 	orr.w	r1, r6, r1, lsl #16 80210da:	458a      	cmp	sl, r1 80210dc:	d906      	bls.n	80210ec <__divdi3+0x170> 80210de:	1e7b      	subs	r3, r7, #1 80210e0:	190c      	adds	r4, r1, r4 80210e2:	d202      	bcs.n	80210ea <__divdi3+0x16e> 80210e4:	3f02      	subs	r7, #2 80210e6:	45a2      	cmp	sl, r4 80210e8:	d800      	bhi.n	80210ec <__divdi3+0x170> 80210ea:	461f      	mov	r7, r3 80210ec:	ea47 400b 	orr.w	r0, r7, fp, lsl #16 80210f0:	e7a9      	b.n	8021046 <__divdi3+0xca> 80210f2:	fab3 f483 	clz	r4, r3 80210f6:	2c00      	cmp	r4, #0 80210f8:	f000 80e4 	beq.w	80212c4 <__divdi3+0x348> 80210fc:	f1c4 0320 	rsb	r3, r4, #32 8021100:	fa01 f104 	lsl.w	r1, r1, r4 8021104:	fa22 fa03 	lsr.w	sl, r2, r3 8021108:	fa2c fb03 	lsr.w	fp, ip, r3 802110c:	ea4a 0a01 	orr.w	sl, sl, r1 8021110:	fa20 f803 	lsr.w	r8, r0, r3 8021114:	fa0c fc04 	lsl.w	ip, ip, r4 8021118:	4658      	mov	r0, fp 802111a:	ea4f 471a 	mov.w	r7, sl, lsr #16 802111e:	ea48 080c 	orr.w	r8, r8, ip 8021122:	4639      	mov	r1, r7 8021124:	fa02 f904 	lsl.w	r9, r2, r4 8021128:	f8cd 900c 	str.w	r9, [sp, #12] 802112c:	f000 fa68 	bl	8021600 <__aeabi_uidiv> 8021130:	4639      	mov	r1, r7 8021132:	4681      	mov	r9, r0 8021134:	4658      	mov	r0, fp 8021136:	f000 fb91 	bl	802185c <__aeabi_uidivmod> 802113a:	fa1f fc8a 	uxth.w	ip, sl 802113e:	ea4f 4318 	mov.w	r3, r8, lsr #16 8021142:	fb0c f009 	mul.w	r0, ip, r9 8021146:	ea43 4301 	orr.w	r3, r3, r1, lsl #16 802114a:	4298      	cmp	r0, r3 802114c:	d90c      	bls.n	8021168 <__divdi3+0x1ec> 802114e:	eb13 030a 	adds.w	r3, r3, sl 8021152:	f109 31ff 	add.w	r1, r9, #4294967295 8021156:	f080 80c3 	bcs.w	80212e0 <__divdi3+0x364> 802115a:	4298      	cmp	r0, r3 802115c:	bf84      	itt	hi 802115e:	f1a9 0902 	subhi.w	r9, r9, #2 8021162:	4453      	addhi	r3, sl 8021164:	f240 80bc 	bls.w	80212e0 <__divdi3+0x364> 8021168:	1a1b      	subs	r3, r3, r0 802116a:	4639      	mov	r1, r7 802116c:	4618      	mov	r0, r3 802116e:	f8cd c008 	str.w	ip, [sp, #8] 8021172:	9301      	str	r3, [sp, #4] 8021174:	f000 fa44 	bl	8021600 <__aeabi_uidiv> 8021178:	9b01      	ldr	r3, [sp, #4] 802117a:	4639      	mov	r1, r7 802117c:	fa1f f888 	uxth.w	r8, r8 8021180:	4683      	mov	fp, r0 8021182:	4618      	mov	r0, r3 8021184:	f000 fb6a 	bl	802185c <__aeabi_uidivmod> 8021188:	f8dd c008 	ldr.w	ip, [sp, #8] 802118c:	fb0c f30b 	mul.w	r3, ip, fp 8021190:	ea48 4101 	orr.w	r1, r8, r1, lsl #16 8021194:	428b      	cmp	r3, r1 8021196:	d90c      	bls.n	80211b2 <__divdi3+0x236> 8021198:	eb11 010a 	adds.w	r1, r1, sl 802119c:	f10b 30ff 	add.w	r0, fp, #4294967295 80211a0:	f080 809c 	bcs.w	80212dc <__divdi3+0x360> 80211a4:	428b      	cmp	r3, r1 80211a6:	bf84      	itt	hi 80211a8:	f1ab 0b02 	subhi.w	fp, fp, #2 80211ac:	4451      	addhi	r1, sl 80211ae:	f240 8095 	bls.w	80212dc <__divdi3+0x360> 80211b2:	9f03      	ldr	r7, [sp, #12] 80211b4:	ea4b 4009 	orr.w	r0, fp, r9, lsl #16 80211b8:	1ac9      	subs	r1, r1, r3 80211ba:	fa1f fc80 	uxth.w	ip, r0 80211be:	b2ba      	uxth	r2, r7 80211c0:	ea4f 4917 	mov.w	r9, r7, lsr #16 80211c4:	0c07      	lsrs	r7, r0, #16 80211c6:	fb02 f80c 	mul.w	r8, r2, ip 80211ca:	fb02 f207 	mul.w	r2, r2, r7 80211ce:	fb09 230c 	mla	r3, r9, ip, r2 80211d2:	fb09 f907 	mul.w	r9, r9, r7 80211d6:	eb03 4318 	add.w	r3, r3, r8, lsr #16 80211da:	429a      	cmp	r2, r3 80211dc:	bf88      	it	hi 80211de:	f509 3980 	addhi.w	r9, r9, #65536	; 0x10000 80211e2:	eb09 4913 	add.w	r9, r9, r3, lsr #16 80211e6:	4549      	cmp	r1, r9 80211e8:	d310      	bcc.n	802120c <__divdi3+0x290> 80211ea:	fa1f f888 	uxth.w	r8, r8 80211ee:	bf14      	ite	ne 80211f0:	2200      	movne	r2, #0 80211f2:	2201      	moveq	r2, #1 80211f4:	fa06 f404 	lsl.w	r4, r6, r4 80211f8:	eb08 4303 	add.w	r3, r8, r3, lsl #16 80211fc:	429c      	cmp	r4, r3 80211fe:	bf2c      	ite	cs 8021200:	2300      	movcs	r3, #0 8021202:	f002 0301 	andcc.w	r3, r2, #1 8021206:	2b00      	cmp	r3, #0 8021208:	f43f af15 	beq.w	8021036 <__divdi3+0xba> 802120c:	3801      	subs	r0, #1 802120e:	f04f 0800 	mov.w	r8, #0 8021212:	e718      	b.n	8021046 <__divdi3+0xca> 8021214:	4252      	negs	r2, r2 8021216:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1 802121a:	43ed      	mvns	r5, r5 802121c:	e6b9      	b.n	8020f92 <__divdi3+0x16> 802121e:	4240      	negs	r0, r0 8021220:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1 8021224:	f04f 35ff 	mov.w	r5, #4294967295 8021228:	e6b0      	b.n	8020f8c <__divdi3+0x10> 802122a:	409c      	lsls	r4, r3 802122c:	f1c3 0b20 	rsb	fp, r3, #32 8021230:	fa27 f80b 	lsr.w	r8, r7, fp 8021234:	fa07 f703 	lsl.w	r7, r7, r3 8021238:	ea4f 4914 	mov.w	r9, r4, lsr #16 802123c:	4640      	mov	r0, r8 802123e:	4649      	mov	r1, r9 8021240:	fa26 fb0b 	lsr.w	fp, r6, fp 8021244:	409e      	lsls	r6, r3 8021246:	f000 f9db 	bl	8021600 <__aeabi_uidiv> 802124a:	4649      	mov	r1, r9 802124c:	fa1f fa84 	uxth.w	sl, r4 8021250:	ea4b 0b07 	orr.w	fp, fp, r7 8021254:	4603      	mov	r3, r0 8021256:	4640      	mov	r0, r8 8021258:	9301      	str	r3, [sp, #4] 802125a:	f000 faff 	bl	802185c <__aeabi_uidivmod> 802125e:	9b01      	ldr	r3, [sp, #4] 8021260:	ea4f 421b 	mov.w	r2, fp, lsr #16 8021264:	fb0a f003 	mul.w	r0, sl, r3 8021268:	ea42 4101 	orr.w	r1, r2, r1, lsl #16 802126c:	4288      	cmp	r0, r1 802126e:	d906      	bls.n	802127e <__divdi3+0x302> 8021270:	1e5a      	subs	r2, r3, #1 8021272:	1909      	adds	r1, r1, r4 8021274:	d236      	bcs.n	80212e4 <__divdi3+0x368> 8021276:	4288      	cmp	r0, r1 8021278:	d934      	bls.n	80212e4 <__divdi3+0x368> 802127a:	3b02      	subs	r3, #2 802127c:	1909      	adds	r1, r1, r4 802127e:	1a0f      	subs	r7, r1, r0 8021280:	4649      	mov	r1, r9 8021282:	4638      	mov	r0, r7 8021284:	9301      	str	r3, [sp, #4] 8021286:	f000 f9bb 	bl	8021600 <__aeabi_uidiv> 802128a:	4649      	mov	r1, r9 802128c:	fa1f fb8b 	uxth.w	fp, fp 8021290:	4680      	mov	r8, r0 8021292:	4638      	mov	r0, r7 8021294:	f000 fae2 	bl	802185c <__aeabi_uidivmod> 8021298:	9b01      	ldr	r3, [sp, #4] 802129a:	fb0a f708 	mul.w	r7, sl, r8 802129e:	ea4b 4101 	orr.w	r1, fp, r1, lsl #16 80212a2:	428f      	cmp	r7, r1 80212a4:	d90a      	bls.n	80212bc <__divdi3+0x340> 80212a6:	1909      	adds	r1, r1, r4 80212a8:	f108 32ff 	add.w	r2, r8, #4294967295 80212ac:	d205      	bcs.n	80212ba <__divdi3+0x33e> 80212ae:	428f      	cmp	r7, r1 80212b0:	bf84      	itt	hi 80212b2:	f1a8 0802 	subhi.w	r8, r8, #2 80212b6:	1909      	addhi	r1, r1, r4 80212b8:	d800      	bhi.n	80212bc <__divdi3+0x340> 80212ba:	4690      	mov	r8, r2 80212bc:	1bcf      	subs	r7, r1, r7 80212be:	ea48 4803 	orr.w	r8, r8, r3, lsl #16 80212c2:	e6dd      	b.n	8021080 <__divdi3+0x104> 80212c4:	2001      	movs	r0, #1 80212c6:	4563      	cmp	r3, ip 80212c8:	bf28      	it	cs 80212ca:	4552      	cmpcs	r2, sl 80212cc:	46a0      	mov	r8, r4 80212ce:	f67f aeba 	bls.w	8021046 <__divdi3+0xca> 80212d2:	e6b5      	b.n	8021040 <__divdi3+0xc4> 80212d4:	469b      	mov	fp, r3 80212d6:	e6ef      	b.n	80210b8 <__divdi3+0x13c> 80212d8:	461f      	mov	r7, r3 80212da:	e6aa      	b.n	8021032 <__divdi3+0xb6> 80212dc:	4683      	mov	fp, r0 80212de:	e768      	b.n	80211b2 <__divdi3+0x236> 80212e0:	4689      	mov	r9, r1 80212e2:	e741      	b.n	8021168 <__divdi3+0x1ec> 80212e4:	4613      	mov	r3, r2 80212e6:	e7ca      	b.n	802127e <__divdi3+0x302>080212e8 <__udivdi3>: 80212e8:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 80212ec:	4606      	mov	r6, r0 80212ee:	b083      	sub	sp, #12 80212f0:	460d      	mov	r5, r1 80212f2:	4614      	mov	r4, r2 80212f4:	4607      	mov	r7, r0 80212f6:	4688      	mov	r8, r1 80212f8:	2b00      	cmp	r3, #0 80212fa:	d14a      	bne.n	8021392 <__udivdi3+0xaa> 80212fc:	428a      	cmp	r2, r1 80212fe:	d955      	bls.n	80213ac <__udivdi3+0xc4> 8021300:	fab2 f382 	clz	r3, r2 8021304:	b14b      	cbz	r3, 802131a <__udivdi3+0x32> 8021306:	f1c3 0220 	rsb	r2, r3, #32 802130a:	fa01 f803 	lsl.w	r8, r1, r3 802130e:	fa20 f202 	lsr.w	r2, r0, r2 8021312:	409c      	lsls	r4, r3 8021314:	ea42 0808 	orr.w	r8, r2, r8 8021318:	409f      	lsls	r7, r3 802131a:	0c25      	lsrs	r5, r4, #16 802131c:	4640      	mov	r0, r8 802131e:	4629      	mov	r1, r5 8021320:	fa1f fa84 	uxth.w	sl, r4 8021324:	f000 f96c 	bl	8021600 <__aeabi_uidiv> 8021328:	4629      	mov	r1, r5 802132a:	4681      	mov	r9, r0 802132c:	4640      	mov	r0, r8 802132e:	f000 fa95 	bl	802185c <__aeabi_uidivmod> 8021332:	0c3b      	lsrs	r3, r7, #16 8021334:	fb0a f009 	mul.w	r0, sl, r9 8021338:	ea43 4101 	orr.w	r1, r3, r1, lsl #16 802133c:	4288      	cmp	r0, r1 802133e:	d90a      	bls.n	8021356 <__udivdi3+0x6e> 8021340:	1909      	adds	r1, r1, r4 8021342:	f109 32ff 	add.w	r2, r9, #4294967295 8021346:	d205      	bcs.n	8021354 <__udivdi3+0x6c> 8021348:	4288      	cmp	r0, r1 802134a:	bf84      	itt	hi 802134c:	f1a9 0902 	subhi.w	r9, r9, #2 8021350:	1909      	addhi	r1, r1, r4 8021352:	d800      	bhi.n	8021356 <__udivdi3+0x6e> 8021354:	4691      	mov	r9, r2 8021356:	ebc0 0801 	rsb	r8, r0, r1 802135a:	4629      	mov	r1, r5 802135c:	4640      	mov	r0, r8 802135e:	b2bf      	uxth	r7, r7 8021360:	f000 f94e 	bl	8021600 <__aeabi_uidiv> 8021364:	4629      	mov	r1, r5 8021366:	4606      	mov	r6, r0 8021368:	4640      	mov	r0, r8 802136a:	f000 fa77 	bl	802185c <__aeabi_uidivmod> 802136e:	fb0a fa06 	mul.w	sl, sl, r6 8021372:	ea47 4101 	orr.w	r1, r7, r1, lsl #16 8021376:	458a      	cmp	sl, r1 8021378:	d907      	bls.n	802138a <__udivdi3+0xa2> 802137a:	1e73      	subs	r3, r6, #1 802137c:	190c      	adds	r4, r1, r4 802137e:	f080 8122 	bcs.w	80215c6 <__udivdi3+0x2de> 8021382:	3e02      	subs	r6, #2 8021384:	45a2      	cmp	sl, r4 8021386:	f240 811e 	bls.w	80215c6 <__udivdi3+0x2de> 802138a:	ea46 4009 	orr.w	r0, r6, r9, lsl #16 802138e:	2600      	movs	r6, #0 8021390:	e058      	b.n	8021444 <__udivdi3+0x15c> 8021392:	428b      	cmp	r3, r1 8021394:	d854      	bhi.n	8021440 <__udivdi3+0x158> 8021396:	fab3 f483 	clz	r4, r3 802139a:	2c00      	cmp	r4, #0 802139c:	d156      	bne.n	802144c <__udivdi3+0x164> 802139e:	428b      	cmp	r3, r1 80213a0:	bf28      	it	cs 80213a2:	4282      	cmpcs	r2, r0 80213a4:	d84c      	bhi.n	8021440 <__udivdi3+0x158> 80213a6:	4626      	mov	r6, r4 80213a8:	2001      	movs	r0, #1 80213aa:	e04b      	b.n	8021444 <__udivdi3+0x15c> 80213ac:	b922      	cbnz	r2, 80213b8 <__udivdi3+0xd0> 80213ae:	2001      	movs	r0, #1 80213b0:	4611      	mov	r1, r2 80213b2:	f000 f925 	bl	8021600 <__aeabi_uidiv> 80213b6:	4604      	mov	r4, r0 80213b8:	fab4 f384 	clz	r3, r4 80213bc:	2b00      	cmp	r3, #0 80213be:	f040 80b9 	bne.w	8021534 <__udivdi3+0x24c> 80213c2:	1b2d      	subs	r5, r5, r4 80213c4:	ea4f 4814 	mov.w	r8, r4, lsr #16 80213c8:	fa1f fa84 	uxth.w	sl, r4 80213cc:	2601      	movs	r6, #1 80213ce:	4641      	mov	r1, r8 80213d0:	4628      	mov	r0, r5 80213d2:	f000 f915 	bl	8021600 <__aeabi_uidiv> 80213d6:	4641      	mov	r1, r8 80213d8:	4681      	mov	r9, r0 80213da:	4628      	mov	r0, r5 80213dc:	f000 fa3e 	bl	802185c <__aeabi_uidivmod> 80213e0:	0c3b      	lsrs	r3, r7, #16 80213e2:	fb0a f009 	mul.w	r0, sl, r9 80213e6:	ea43 4101 	orr.w	r1, r3, r1, lsl #16 80213ea:	4288      	cmp	r0, r1 80213ec:	d90b      	bls.n	8021406 <__udivdi3+0x11e> 80213ee:	1909      	adds	r1, r1, r4 80213f0:	f109 33ff 	add.w	r3, r9, #4294967295 80213f4:	f080 80e9 	bcs.w	80215ca <__udivdi3+0x2e2> 80213f8:	4288      	cmp	r0, r1 80213fa:	bf84      	itt	hi 80213fc:	f1a9 0902 	subhi.w	r9, r9, #2 8021400:	1909      	addhi	r1, r1, r4 8021402:	f240 80e2 	bls.w	80215ca <__udivdi3+0x2e2> 8021406:	ebc0 0b01 	rsb	fp, r0, r1 802140a:	4641      	mov	r1, r8 802140c:	4658      	mov	r0, fp 802140e:	b2bf      	uxth	r7, r7 8021410:	f000 f8f6 	bl	8021600 <__aeabi_uidiv> 8021414:	4641      	mov	r1, r8 8021416:	4605      	mov	r5, r0 8021418:	4658      	mov	r0, fp 802141a:	f000 fa1f 	bl	802185c <__aeabi_uidivmod> 802141e:	fb0a fa05 	mul.w	sl, sl, r5 8021422:	ea47 4101 	orr.w	r1, r7, r1, lsl #16 8021426:	458a      	cmp	sl, r1 8021428:	d907      	bls.n	802143a <__udivdi3+0x152> 802142a:	1e6b      	subs	r3, r5, #1 802142c:	190c      	adds	r4, r1, r4 802142e:	f080 80ce 	bcs.w	80215ce <__udivdi3+0x2e6> 8021432:	3d02      	subs	r5, #2 8021434:	45a2      	cmp	sl, r4 8021436:	f240 80ca 	bls.w	80215ce <__udivdi3+0x2e6> 802143a:	ea45 4009 	orr.w	r0, r5, r9, lsl #16 802143e:	e001      	b.n	8021444 <__udivdi3+0x15c> 8021440:	2600      	movs	r6, #0 8021442:	4630      	mov	r0, r6 8021444:	4631      	mov	r1, r6 8021446:	b003      	add	sp, #12 8021448:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802144c:	f1c4 0120 	rsb	r1, r4, #32 8021450:	fa03 f304 	lsl.w	r3, r3, r4 8021454:	fa22 f801 	lsr.w	r8, r2, r1 8021458:	fa25 f701 	lsr.w	r7, r5, r1 802145c:	ea48 0803 	orr.w	r8, r8, r3 8021460:	fa20 f101 	lsr.w	r1, r0, r1 8021464:	fa05 f504 	lsl.w	r5, r5, r4 8021468:	4638      	mov	r0, r7 802146a:	ea4f 4918 	mov.w	r9, r8, lsr #16 802146e:	430d      	orrs	r5, r1 8021470:	4649      	mov	r1, r9 8021472:	fa02 f204 	lsl.w	r2, r2, r4 8021476:	9201      	str	r2, [sp, #4] 8021478:	f000 f8c2 	bl	8021600 <__aeabi_uidiv> 802147c:	4649      	mov	r1, r9 802147e:	4682      	mov	sl, r0 8021480:	4638      	mov	r0, r7 8021482:	f000 f9eb 	bl	802185c <__aeabi_uidivmod> 8021486:	fa1f f288 	uxth.w	r2, r8 802148a:	0c2f      	lsrs	r7, r5, #16 802148c:	fb02 f00a 	mul.w	r0, r2, sl 8021490:	ea47 4701 	orr.w	r7, r7, r1, lsl #16 8021494:	42b8      	cmp	r0, r7 8021496:	d906      	bls.n	80214a6 <__udivdi3+0x1be> 8021498:	eb17 0708 	adds.w	r7, r7, r8 802149c:	f10a 31ff 	add.w	r1, sl, #4294967295 80214a0:	f0c0 809f 	bcc.w	80215e2 <__udivdi3+0x2fa> 80214a4:	468a      	mov	sl, r1 80214a6:	1a3f      	subs	r7, r7, r0 80214a8:	4649      	mov	r1, r9 80214aa:	4638      	mov	r0, r7 80214ac:	9200      	str	r2, [sp, #0] 80214ae:	f000 f8a7 	bl	8021600 <__aeabi_uidiv> 80214b2:	4649      	mov	r1, r9 80214b4:	b2ad      	uxth	r5, r5 80214b6:	4683      	mov	fp, r0 80214b8:	4638      	mov	r0, r7 80214ba:	f000 f9cf 	bl	802185c <__aeabi_uidivmod> 80214be:	9a00      	ldr	r2, [sp, #0] 80214c0:	fb02 f70b 	mul.w	r7, r2, fp 80214c4:	ea45 4101 	orr.w	r1, r5, r1, lsl #16 80214c8:	428f      	cmp	r7, r1 80214ca:	d905      	bls.n	80214d8 <__udivdi3+0x1f0> 80214cc:	eb11 0108 	adds.w	r1, r1, r8 80214d0:	f10b 32ff 	add.w	r2, fp, #4294967295 80214d4:	d37d      	bcc.n	80215d2 <__udivdi3+0x2ea> 80214d6:	4693      	mov	fp, r2 80214d8:	9b01      	ldr	r3, [sp, #4] 80214da:	ea4b 400a 	orr.w	r0, fp, sl, lsl #16 80214de:	1bc9      	subs	r1, r1, r7 80214e0:	ea4f 4c10 	mov.w	ip, r0, lsr #16 80214e4:	b29d      	uxth	r5, r3 80214e6:	ea4f 4a13 	mov.w	sl, r3, lsr #16 80214ea:	b283      	uxth	r3, r0 80214ec:	fb05 f203 	mul.w	r2, r5, r3 80214f0:	fb05 f50c 	mul.w	r5, r5, ip 80214f4:	fb0a 5303 	mla	r3, sl, r3, r5 80214f8:	fb0a fa0c 	mul.w	sl, sl, ip 80214fc:	eb03 4312 	add.w	r3, r3, r2, lsr #16 8021500:	429d      	cmp	r5, r3 8021502:	bf88      	it	hi 8021504:	f50a 3a80 	addhi.w	sl, sl, #65536	; 0x10000 8021508:	eb0a 4a13 	add.w	sl, sl, r3, lsr #16 802150c:	4551      	cmp	r1, sl 802150e:	d30e      	bcc.n	802152e <__udivdi3+0x246> 8021510:	b292      	uxth	r2, r2 8021512:	bf14      	ite	ne 8021514:	2100      	movne	r1, #0 8021516:	2101      	moveq	r1, #1 8021518:	fa06 f604 	lsl.w	r6, r6, r4 802151c:	eb02 4303 	add.w	r3, r2, r3, lsl #16 8021520:	429e      	cmp	r6, r3 8021522:	bf2c      	ite	cs 8021524:	2600      	movcs	r6, #0 8021526:	f001 0601 	andcc.w	r6, r1, #1 802152a:	2e00      	cmp	r6, #0 802152c:	d08a      	beq.n	8021444 <__udivdi3+0x15c> 802152e:	3801      	subs	r0, #1 8021530:	2600      	movs	r6, #0 8021532:	e787      	b.n	8021444 <__udivdi3+0x15c> 8021534:	409c      	lsls	r4, r3 8021536:	f1c3 0220 	rsb	r2, r3, #32 802153a:	fa25 fa02 	lsr.w	sl, r5, r2 802153e:	fa26 f902 	lsr.w	r9, r6, r2 8021542:	ea4f 4814 	mov.w	r8, r4, lsr #16 8021546:	4650      	mov	r0, sl 8021548:	4641      	mov	r1, r8 802154a:	fa05 f503 	lsl.w	r5, r5, r3 802154e:	fa06 f703 	lsl.w	r7, r6, r3 8021552:	f000 f855 	bl	8021600 <__aeabi_uidiv> 8021556:	4641      	mov	r1, r8 8021558:	ea49 0905 	orr.w	r9, r9, r5 802155c:	4683      	mov	fp, r0 802155e:	4650      	mov	r0, sl 8021560:	f000 f97c 	bl	802185c <__aeabi_uidivmod> 8021564:	fa1f fa84 	uxth.w	sl, r4 8021568:	ea4f 4319 	mov.w	r3, r9, lsr #16 802156c:	fb0a f00b 	mul.w	r0, sl, fp 8021570:	ea43 4101 	orr.w	r1, r3, r1, lsl #16 8021574:	4288      	cmp	r0, r1 8021576:	d909      	bls.n	802158c <__udivdi3+0x2a4> 8021578:	1909      	adds	r1, r1, r4 802157a:	f10b 33ff 	add.w	r3, fp, #4294967295 802157e:	d238      	bcs.n	80215f2 <__udivdi3+0x30a> 8021580:	4288      	cmp	r0, r1 8021582:	bf84      	itt	hi 8021584:	f1ab 0b02 	subhi.w	fp, fp, #2 8021588:	1909      	addhi	r1, r1, r4 802158a:	d932      	bls.n	80215f2 <__udivdi3+0x30a> 802158c:	1a0d      	subs	r5, r1, r0 802158e:	4641      	mov	r1, r8 8021590:	4628      	mov	r0, r5 8021592:	fa1f f989 	uxth.w	r9, r9 8021596:	f000 f833 	bl	8021600 <__aeabi_uidiv> 802159a:	4641      	mov	r1, r8 802159c:	4606      	mov	r6, r0 802159e:	4628      	mov	r0, r5 80215a0:	f000 f95c 	bl	802185c <__aeabi_uidivmod> 80215a4:	fb0a f506 	mul.w	r5, sl, r6 80215a8:	ea49 4101 	orr.w	r1, r9, r1, lsl #16 80215ac:	428d      	cmp	r5, r1 80215ae:	d906      	bls.n	80215be <__udivdi3+0x2d6> 80215b0:	1e73      	subs	r3, r6, #1 80215b2:	1909      	adds	r1, r1, r4 80215b4:	d21f      	bcs.n	80215f6 <__udivdi3+0x30e> 80215b6:	428d      	cmp	r5, r1 80215b8:	d91d      	bls.n	80215f6 <__udivdi3+0x30e> 80215ba:	3e02      	subs	r6, #2 80215bc:	1909      	adds	r1, r1, r4 80215be:	1b4d      	subs	r5, r1, r5 80215c0:	ea46 460b 	orr.w	r6, r6, fp, lsl #16 80215c4:	e703      	b.n	80213ce <__udivdi3+0xe6> 80215c6:	461e      	mov	r6, r3 80215c8:	e6df      	b.n	802138a <__udivdi3+0xa2> 80215ca:	4699      	mov	r9, r3 80215cc:	e71b      	b.n	8021406 <__udivdi3+0x11e> 80215ce:	461d      	mov	r5, r3 80215d0:	e733      	b.n	802143a <__udivdi3+0x152> 80215d2:	428f      	cmp	r7, r1 80215d4:	bf84      	itt	hi 80215d6:	f1ab 0b02 	subhi.w	fp, fp, #2 80215da:	4441      	addhi	r1, r8 80215dc:	f63f af7c 	bhi.w	80214d8 <__udivdi3+0x1f0> 80215e0:	e779      	b.n	80214d6 <__udivdi3+0x1ee> 80215e2:	42b8      	cmp	r0, r7 80215e4:	bf84      	itt	hi 80215e6:	f1aa 0a02 	subhi.w	sl, sl, #2 80215ea:	4447      	addhi	r7, r8 80215ec:	f63f af5b 	bhi.w	80214a6 <__udivdi3+0x1be> 80215f0:	e758      	b.n	80214a4 <__udivdi3+0x1bc> 80215f2:	469b      	mov	fp, r3 80215f4:	e7ca      	b.n	802158c <__udivdi3+0x2a4> 80215f6:	461e      	mov	r6, r3 80215f8:	e7e1      	b.n	80215be <__udivdi3+0x2d6> 80215fa:	bf00      	nop 80215fc:	0000      	movs	r0, r0 80215fe:	0000      	movs	r0, r008021600 <__aeabi_uidiv>: 8021600:	1e4a      	subs	r2, r1, #1 8021602:	bf08      	it	eq 8021604:	4770      	bxeq	lr 8021606:	f0c0 8124 	bcc.w	8021852 <__aeabi_uidiv+0x252> 802160a:	4288      	cmp	r0, r1 802160c:	f240 8116 	bls.w	802183c <__aeabi_uidiv+0x23c> 8021610:	4211      	tst	r1, r2 8021612:	f000 8117 	beq.w	8021844 <__aeabi_uidiv+0x244> 8021616:	fab0 f380 	clz	r3, r0 802161a:	fab1 f281 	clz	r2, r1 802161e:	eba2 0303 	sub.w	r3, r2, r3 8021622:	f1c3 031f 	rsb	r3, r3, #31 8021626:	a204      	add	r2, pc, #16	; (adr r2, 8021638 <__aeabi_uidiv+0x38>) 8021628:	eb02 1303 	add.w	r3, r2, r3, lsl #4 802162c:	f04f 0200 	mov.w	r2, #0 8021630:	469f      	mov	pc, r3 8021632:	bf00      	nop 8021634:	f3af 8000 	nop.w 8021638:	ebb0 7fc1 	cmp.w	r0, r1, lsl #31 802163c:	bf00      	nop 802163e:	eb42 0202 	adc.w	r2, r2, r2 8021642:	bf28      	it	cs 8021644:	eba0 70c1 	subcs.w	r0, r0, r1, lsl #31 8021648:	ebb0 7f81 	cmp.w	r0, r1, lsl #30 802164c:	bf00      	nop 802164e:	eb42 0202 	adc.w	r2, r2, r2 8021652:	bf28      	it	cs 8021654:	eba0 7081 	subcs.w	r0, r0, r1, lsl #30 8021658:	ebb0 7f41 	cmp.w	r0, r1, lsl #29 802165c:	bf00      	nop 802165e:	eb42 0202 	adc.w	r2, r2, r2 8021662:	bf28      	it	cs 8021664:	eba0 7041 	subcs.w	r0, r0, r1, lsl #29 8021668:	ebb0 7f01 	cmp.w	r0, r1, lsl #28 802166c:	bf00      	nop 802166e:	eb42 0202 	adc.w	r2, r2, r2 8021672:	bf28      	it	cs 8021674:	eba0 7001 	subcs.w	r0, r0, r1, lsl #28 8021678:	ebb0 6fc1 	cmp.w	r0, r1, lsl #27 802167c:	bf00      	nop 802167e:	eb42 0202 	adc.w	r2, r2, r2 8021682:	bf28      	it	cs 8021684:	eba0 60c1 	subcs.w	r0, r0, r1, lsl #27 8021688:	ebb0 6f81 	cmp.w	r0, r1, lsl #26 802168c:	bf00      	nop 802168e:	eb42 0202 	adc.w	r2, r2, r2 8021692:	bf28      	it	cs 8021694:	eba0 6081 	subcs.w	r0, r0, r1, lsl #26 8021698:	ebb0 6f41 	cmp.w	r0, r1, lsl #25 802169c:	bf00      	nop 802169e:	eb42 0202 	adc.w	r2, r2, r2 80216a2:	bf28      	it	cs 80216a4:	eba0 6041 	subcs.w	r0, r0, r1, lsl #25 80216a8:	ebb0 6f01 	cmp.w	r0, r1, lsl #24 80216ac:	bf00      	nop 80216ae:	eb42 0202 	adc.w	r2, r2, r2 80216b2:	bf28      	it	cs 80216b4:	eba0 6001 	subcs.w	r0, r0, r1, lsl #24 80216b8:	ebb0 5fc1 	cmp.w	r0, r1, lsl #23 80216bc:	bf00      	nop 80216be:	eb42 0202 	adc.w	r2, r2, r2 80216c2:	bf28      	it	cs 80216c4:	eba0 50c1 	subcs.w	r0, r0, r1, lsl #23 80216c8:	ebb0 5f81 	cmp.w	r0, r1, lsl #22 80216cc:	bf00      	nop 80216ce:	eb42 0202 	adc.w	r2, r2, r2 80216d2:	bf28      	it	cs 80216d4:	eba0 5081 	subcs.w	r0, r0, r1, lsl #22 80216d8:	ebb0 5f41 	cmp.w	r0, r1, lsl #21 80216dc:	bf00      	nop 80216de:	eb42 0202 	adc.w	r2, r2, r2 80216e2:	bf28      	it	cs 80216e4:	eba0 5041 	subcs.w	r0, r0, r1, lsl #21 80216e8:	ebb0 5f01 	cmp.w	r0, r1, lsl #20 80216ec:	bf00      	nop 80216ee:	eb42 0202 	adc.w	r2, r2, r2 80216f2:	bf28      	it	cs 80216f4:	eba0 5001 	subcs.w	r0, r0, r1, lsl #20 80216f8:	ebb0 4fc1 	cmp.w	r0, r1, lsl #19 80216fc:	bf00      	nop 80216fe:	eb42 0202 	adc.w	r2, r2, r2 8021702:	bf28      	it	cs 8021704:	eba0 40c1 	subcs.w	r0, r0, r1, lsl #19 8021708:	ebb0 4f81 	cmp.w	r0, r1, lsl #18 802170c:	bf00      	nop 802170e:	eb42 0202 	adc.w	r2, r2, r2 8021712:	bf28      	it	cs 8021714:	eba0 4081 	subcs.w	r0, r0, r1, lsl #18 8021718:	ebb0 4f41 	cmp.w	r0, r1, lsl #17 802171c:	bf00      	nop 802171e:	eb42 0202 	adc.w	r2, r2, r2 8021722:	bf28      	it	cs 8021724:	eba0 4041 	subcs.w	r0, r0, r1, lsl #17 8021728:	ebb0 4f01 	cmp.w	r0, r1, lsl #16 802172c:	bf00      	nop 802172e:	eb42 0202 	adc.w	r2, r2, r2 8021732:	bf28      	it	cs 8021734:	eba0 4001 	subcs.w	r0, r0, r1, lsl #16 8021738:	ebb0 3fc1 	cmp.w	r0, r1, lsl #15 802173c:	bf00      	nop 802173e:	eb42 0202 	adc.w	r2, r2, r2 8021742:	bf28      	it	cs 8021744:	eba0 30c1 	subcs.w	r0, r0, r1, lsl #15 8021748:	ebb0 3f81 	cmp.w	r0, r1, lsl #14 802174c:	bf00      	nop 802174e:	eb42 0202 	adc.w	r2, r2, r2 8021752:	bf28      	it	cs 8021754:	eba0 3081 	subcs.w	r0, r0, r1, lsl #14 8021758:	ebb0 3f41 	cmp.w	r0, r1, lsl #13 802175c:	bf00      	nop 802175e:	eb42 0202 	adc.w	r2, r2, r2 8021762:	bf28      	it	cs 8021764:	eba0 3041 	subcs.w	r0, r0, r1, lsl #13 8021768:	ebb0 3f01 	cmp.w	r0, r1, lsl #12 802176c:	bf00      	nop 802176e:	eb42 0202 	adc.w	r2, r2, r2 8021772:	bf28      	it	cs 8021774:	eba0 3001 	subcs.w	r0, r0, r1, lsl #12 8021778:	ebb0 2fc1 	cmp.w	r0, r1, lsl #11 802177c:	bf00      	nop 802177e:	eb42 0202 	adc.w	r2, r2, r2 8021782:	bf28      	it	cs 8021784:	eba0 20c1 	subcs.w	r0, r0, r1, lsl #11 8021788:	ebb0 2f81 	cmp.w	r0, r1, lsl #10 802178c:	bf00      	nop 802178e:	eb42 0202 	adc.w	r2, r2, r2 8021792:	bf28      	it	cs 8021794:	eba0 2081 	subcs.w	r0, r0, r1, lsl #10 8021798:	ebb0 2f41 	cmp.w	r0, r1, lsl #9 802179c:	bf00      	nop 802179e:	eb42 0202 	adc.w	r2, r2, r2 80217a2:	bf28      	it	cs 80217a4:	eba0 2041 	subcs.w	r0, r0, r1, lsl #9 80217a8:	ebb0 2f01 	cmp.w	r0, r1, lsl #8 80217ac:	bf00      	nop 80217ae:	eb42 0202 	adc.w	r2, r2, r2 80217b2:	bf28      	it	cs 80217b4:	eba0 2001 	subcs.w	r0, r0, r1, lsl #8 80217b8:	ebb0 1fc1 	cmp.w	r0, r1, lsl #7 80217bc:	bf00      	nop 80217be:	eb42 0202 	adc.w	r2, r2, r2 80217c2:	bf28      	it	cs 80217c4:	eba0 10c1 	subcs.w	r0, r0, r1, lsl #7 80217c8:	ebb0 1f81 	cmp.w	r0, r1, lsl #6 80217cc:	bf00      	nop 80217ce:	eb42 0202 	adc.w	r2, r2, r2 80217d2:	bf28      	it	cs 80217d4:	eba0 1081 	subcs.w	r0, r0, r1, lsl #6 80217d8:	ebb0 1f41 	cmp.w	r0, r1, lsl #5 80217dc:	bf00      	nop 80217de:	eb42 0202 	adc.w	r2, r2, r2 80217e2:	bf28      	it	cs 80217e4:	eba0 1041 	subcs.w	r0, r0, r1, lsl #5 80217e8:	ebb0 1f01 	cmp.w	r0, r1, lsl #4 80217ec:	bf00      	nop 80217ee:	eb42 0202 	adc.w	r2, r2, r2 80217f2:	bf28      	it	cs 80217f4:	eba0 1001 	subcs.w	r0, r0, r1, lsl #4 80217f8:	ebb0 0fc1 	cmp.w	r0, r1, lsl #3 80217fc:	bf00      	nop 80217fe:	eb42 0202 	adc.w	r2, r2, r2 8021802:	bf28      	it	cs 8021804:	eba0 00c1 	subcs.w	r0, r0, r1, lsl #3 8021808:	ebb0 0f81 	cmp.w	r0, r1, lsl #2 802180c:	bf00      	nop 802180e:	eb42 0202 	adc.w	r2, r2, r2 8021812:	bf28      	it	cs 8021814:	eba0 0081 	subcs.w	r0, r0, r1, lsl #2 8021818:	ebb0 0f41 	cmp.w	r0, r1, lsl #1 802181c:	bf00      	nop 802181e:	eb42 0202 	adc.w	r2, r2, r2 8021822:	bf28      	it	cs 8021824:	eba0 0041 	subcs.w	r0, r0, r1, lsl #1 8021828:	ebb0 0f01 	cmp.w	r0, r1 802182c:	bf00      	nop 802182e:	eb42 0202 	adc.w	r2, r2, r2 8021832:	bf28      	it	cs 8021834:	eba0 0001 	subcs.w	r0, r0, r1 8021838:	4610      	mov	r0, r2 802183a:	4770      	bx	lr 802183c:	bf0c      	ite	eq 802183e:	2001      	moveq	r0, #1 8021840:	2000      	movne	r0, #0 8021842:	4770      	bx	lr 8021844:	fab1 f281 	clz	r2, r1 8021848:	f1c2 021f 	rsb	r2, r2, #31 802184c:	fa20 f002 	lsr.w	r0, r0, r2 8021850:	4770      	bx	lr 8021852:	b108      	cbz	r0, 8021858 <__aeabi_uidiv+0x258> 8021854:	f04f 30ff 	mov.w	r0, #4294967295 8021858:	f7ff bb8e 	b.w	8020f78 <__aeabi_idiv0>0802185c <__aeabi_uidivmod>: 802185c:	2900      	cmp	r1, #0 802185e:	d0f8      	beq.n	8021852 <__aeabi_uidiv+0x252> 8021860:	e92d 4003 	stmdb	sp!, {r0, r1, lr} 8021864:	f7ff fecc 	bl	8021600 <__aeabi_uidiv> 8021868:	e8bd 4006 	ldmia.w	sp!, {r1, r2, lr} 802186c:	fb02 f300 	mul.w	r3, r2, r0 8021870:	eba1 0103 	sub.w	r1, r1, r3 8021874:	4770      	bx	lr 8021876:	bf00      	nop08021878 <atof>: 8021878:	2100      	movs	r1, #0 802187a:	f001 bde7 	b.w	802344c <strtod> 802187e:	bf00      	nop08021880 <atoi>: 8021880:	2100      	movs	r1, #0 8021882:	220a      	movs	r2, #10 8021884:	f001 bee2 	b.w	802364c <strtol>08021888 <_atoi_r>: 8021888:	2200      	movs	r2, #0 802188a:	230a      	movs	r3, #10 802188c:	f001 be3c 	b.w	8023508 <_strtol_r>08021890 <__libc_init_array>: 8021890:	b570      	push	{r4, r5, r6, lr} 8021892:	f641 7624 	movw	r6, #7972	; 0x1f24 8021896:	f641 7524 	movw	r5, #7972	; 0x1f24 802189a:	f6c0 0604 	movt	r6, #2052	; 0x804 802189e:	f6c0 0504 	movt	r5, #2052	; 0x804 80218a2:	1b76      	subs	r6, r6, r5 80218a4:	10b6      	asrs	r6, r6, #2 80218a6:	d007      	beq.n	80218b8 <__libc_init_array+0x28> 80218a8:	3d04      	subs	r5, #4 80218aa:	2400      	movs	r4, #0 80218ac:	f855 3f04 	ldr.w	r3, [r5, #4]! 80218b0:	3401      	adds	r4, #1 80218b2:	4798      	blx	r3 80218b4:	42a6      	cmp	r6, r4 80218b6:	d1f9      	bne.n	80218ac <__libc_init_array+0x1c> 80218b8:	f641 7628 	movw	r6, #7976	; 0x1f28 80218bc:	f641 7524 	movw	r5, #7972	; 0x1f24 80218c0:	f6c0 0604 	movt	r6, #2052	; 0x804 80218c4:	f6c0 0504 	movt	r5, #2052	; 0x804 80218c8:	1b76      	subs	r6, r6, r5 80218ca:	f020 fb1b 	bl	8041f04 <_init> 80218ce:	10b6      	asrs	r6, r6, #2 80218d0:	d008      	beq.n	80218e4 <__libc_init_array+0x54> 80218d2:	3d04      	subs	r5, #4 80218d4:	2400      	movs	r4, #0 80218d6:	f855 3f04 	ldr.w	r3, [r5, #4]! 80218da:	3401      	adds	r4, #1 80218dc:	4798      	blx	r3 80218de:	42a6      	cmp	r6, r4 80218e0:	d1f9      	bne.n	80218d6 <__libc_init_array+0x46> 80218e2:	bd70      	pop	{r4, r5, r6, pc} 80218e4:	bd70      	pop	{r4, r5, r6, pc} 80218e6:	bf00      	nop080218e8 <memcmp>: 80218e8:	2a03      	cmp	r2, #3 80218ea:	b470      	push	{r4, r5, r6} 80218ec:	d922      	bls.n	8021934 <memcmp+0x4c> 80218ee:	ea41 0300 	orr.w	r3, r1, r0 80218f2:	079b      	lsls	r3, r3, #30 80218f4:	d013      	beq.n	802191e <memcmp+0x36> 80218f6:	7805      	ldrb	r5, [r0, #0] 80218f8:	3a01      	subs	r2, #1 80218fa:	780c      	ldrb	r4, [r1, #0] 80218fc:	2300      	movs	r3, #0 80218fe:	42a5      	cmp	r5, r4 8021900:	d006      	beq.n	8021910 <memcmp+0x28> 8021902:	e01b      	b.n	802193c <memcmp+0x54> 8021904:	f810 5f01 	ldrb.w	r5, [r0, #1]! 8021908:	f811 4f01 	ldrb.w	r4, [r1, #1]! 802190c:	42a5      	cmp	r5, r4 802190e:	d115      	bne.n	802193c <memcmp+0x54> 8021910:	4293      	cmp	r3, r2 8021912:	f103 0301 	add.w	r3, r3, #1 8021916:	d1f5      	bne.n	8021904 <memcmp+0x1c> 8021918:	2000      	movs	r0, #0 802191a:	bc70      	pop	{r4, r5, r6} 802191c:	4770      	bx	lr 802191e:	460c      	mov	r4, r1 8021920:	4603      	mov	r3, r0 8021922:	3104      	adds	r1, #4 8021924:	3004      	adds	r0, #4 8021926:	681e      	ldr	r6, [r3, #0] 8021928:	6825      	ldr	r5, [r4, #0] 802192a:	42ae      	cmp	r6, r5 802192c:	d108      	bne.n	8021940 <memcmp+0x58> 802192e:	3a04      	subs	r2, #4 8021930:	2a03      	cmp	r2, #3 8021932:	d8f4      	bhi.n	802191e <memcmp+0x36> 8021934:	2a00      	cmp	r2, #0 8021936:	d1de      	bne.n	80218f6 <memcmp+0xe> 8021938:	4610      	mov	r0, r2 802193a:	e7ee      	b.n	802191a <memcmp+0x32> 802193c:	1b28      	subs	r0, r5, r4 802193e:	e7ec      	b.n	802191a <memcmp+0x32> 8021940:	4621      	mov	r1, r4 8021942:	4618      	mov	r0, r3 8021944:	2a00      	cmp	r2, #0 8021946:	d1d6      	bne.n	80218f6 <memcmp+0xe> 8021948:	e7f6      	b.n	8021938 <memcmp+0x50> 802194a:	bf00      	nop0802194c <memcpy>: 802194c:	2a03      	cmp	r2, #3 802194e:	e92d 0ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp} 8021952:	d809      	bhi.n	8021968 <memcpy+0x1c> 8021954:	b12a      	cbz	r2, 8021962 <memcpy+0x16> 8021956:	2300      	movs	r3, #0 8021958:	5ccc      	ldrb	r4, [r1, r3] 802195a:	54c4      	strb	r4, [r0, r3] 802195c:	3301      	adds	r3, #1 802195e:	4293      	cmp	r3, r2 8021960:	d1fa      	bne.n	8021958 <memcpy+0xc> 8021962:	e8bd 0ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp} 8021966:	4770      	bx	lr 8021968:	0783      	lsls	r3, r0, #30 802196a:	4402      	add	r2, r0 802196c:	d00e      	beq.n	802198c <memcpy+0x40> 802196e:	1c44      	adds	r4, r0, #1 8021970:	1c4d      	adds	r5, r1, #1 8021972:	f815 7c01 	ldrb.w	r7, [r5, #-1] 8021976:	f004 0603 	and.w	r6, r4, #3 802197a:	4623      	mov	r3, r4 802197c:	3401      	adds	r4, #1 802197e:	4629      	mov	r1, r5 8021980:	3501      	adds	r5, #1 8021982:	f804 7c02 	strb.w	r7, [r4, #-2] 8021986:	2e00      	cmp	r6, #0 8021988:	d1f3      	bne.n	8021972 <memcpy+0x26> 802198a:	e000      	b.n	802198e <memcpy+0x42> 802198c:	4603      	mov	r3, r0 802198e:	f011 0403 	ands.w	r4, r1, #3 8021992:	d06d      	beq.n	8021a70 <memcpy+0x124> 8021994:	1ad7      	subs	r7, r2, r3 8021996:	1b0d      	subs	r5, r1, r4 8021998:	2f03      	cmp	r7, #3 802199a:	682e      	ldr	r6, [r5, #0] 802199c:	dd19      	ble.n	80219d2 <memcpy+0x86> 802199e:	f1c4 0c04 	rsb	ip, r4, #4 80219a2:	ea4f 08c4 	mov.w	r8, r4, lsl #3 80219a6:	1d1c      	adds	r4, r3, #4 80219a8:	ea4f 0ccc 	mov.w	ip, ip, lsl #3 80219ac:	f855 7f04 	ldr.w	r7, [r5, #4]! 80219b0:	ebc4 0902 	rsb	r9, r4, r2 80219b4:	4623      	mov	r3, r4 80219b6:	3104      	adds	r1, #4 80219b8:	3404      	adds	r4, #4 80219ba:	f1b9 0f03 	cmp.w	r9, #3 80219be:	fa26 fa08 	lsr.w	sl, r6, r8 80219c2:	fa07 fb0c 	lsl.w	fp, r7, ip 80219c6:	463e      	mov	r6, r7 80219c8:	ea4b 070a 	orr.w	r7, fp, sl 80219cc:	f844 7c08 	str.w	r7, [r4, #-8] 80219d0:	dcec      	bgt.n	80219ac <memcpy+0x60> 80219d2:	429a      	cmp	r2, r3 80219d4:	d9c5      	bls.n	8021962 <memcpy+0x16> 80219d6:	3301      	adds	r3, #1 80219d8:	3101      	adds	r1, #1 80219da:	3201      	adds	r2, #1 80219dc:	f811 4c01 	ldrb.w	r4, [r1, #-1] 80219e0:	3301      	adds	r3, #1 80219e2:	3101      	adds	r1, #1 80219e4:	4293      	cmp	r3, r2 80219e6:	f803 4c02 	strb.w	r4, [r3, #-2] 80219ea:	d1f7      	bne.n	80219dc <memcpy+0x90> 80219ec:	e7b9      	b.n	8021962 <memcpy+0x16> 80219ee:	680c      	ldr	r4, [r1, #0] 80219f0:	3340      	adds	r3, #64	; 0x40 80219f2:	3140      	adds	r1, #64	; 0x40 80219f4:	f843 4c40 	str.w	r4, [r3, #-64] 80219f8:	f851 4c3c 	ldr.w	r4, [r1, #-60] 80219fc:	f843 4c3c 	str.w	r4, [r3, #-60] 8021a00:	f851 4c38 	ldr.w	r4, [r1, #-56] 8021a04:	f843 4c38 	str.w	r4, [r3, #-56] 8021a08:	f851 4c34 	ldr.w	r4, [r1, #-52] 8021a0c:	f843 4c34 	str.w	r4, [r3, #-52] 8021a10:	f851 4c30 	ldr.w	r4, [r1, #-48] 8021a14:	f843 4c30 	str.w	r4, [r3, #-48] 8021a18:	f851 4c2c 	ldr.w	r4, [r1, #-44] 8021a1c:	f843 4c2c 	str.w	r4, [r3, #-44] 8021a20:	f851 4c28 	ldr.w	r4, [r1, #-40] 8021a24:	f843 4c28 	str.w	r4, [r3, #-40] 8021a28:	f851 4c24 	ldr.w	r4, [r1, #-36] 8021a2c:	f843 4c24 	str.w	r4, [r3, #-36] 8021a30:	f851 4c20 	ldr.w	r4, [r1, #-32] 8021a34:	f843 4c20 	str.w	r4, [r3, #-32] 8021a38:	f851 4c1c 	ldr.w	r4, [r1, #-28] 8021a3c:	f843 4c1c 	str.w	r4, [r3, #-28] 8021a40:	f851 4c18 	ldr.w	r4, [r1, #-24] 8021a44:	f843 4c18 	str.w	r4, [r3, #-24] 8021a48:	f851 4c14 	ldr.w	r4, [r1, #-20] 8021a4c:	f843 4c14 	str.w	r4, [r3, #-20] 8021a50:	f851 4c10 	ldr.w	r4, [r1, #-16] 8021a54:	f843 4c10 	str.w	r4, [r3, #-16] 8021a58:	f851 4c0c 	ldr.w	r4, [r1, #-12] 8021a5c:	f843 4c0c 	str.w	r4, [r3, #-12] 8021a60:	f851 4c08 	ldr.w	r4, [r1, #-8] 8021a64:	f843 4c08 	str.w	r4, [r3, #-8] 8021a68:	f851 4c04 	ldr.w	r4, [r1, #-4] 8021a6c:	f843 4c04 	str.w	r4, [r3, #-4] 8021a70:	1ad4      	subs	r4, r2, r3 8021a72:	2c3f      	cmp	r4, #63	; 0x3f 8021a74:	dcbb      	bgt.n	80219ee <memcpy+0xa2> 8021a76:	e011      	b.n	8021a9c <memcpy+0x150> 8021a78:	680c      	ldr	r4, [r1, #0] 8021a7a:	3310      	adds	r3, #16 8021a7c:	3110      	adds	r1, #16 8021a7e:	f843 4c10 	str.w	r4, [r3, #-16] 8021a82:	f851 4c0c 	ldr.w	r4, [r1, #-12] 8021a86:	f843 4c0c 	str.w	r4, [r3, #-12] 8021a8a:	f851 4c08 	ldr.w	r4, [r1, #-8] 8021a8e:	f843 4c08 	str.w	r4, [r3, #-8] 8021a92:	f851 4c04 	ldr.w	r4, [r1, #-4] 8021a96:	f843 4c04 	str.w	r4, [r3, #-4] 8021a9a:	1ad4      	subs	r4, r2, r3 8021a9c:	2c0f      	cmp	r4, #15 8021a9e:	dceb      	bgt.n	8021a78 <memcpy+0x12c> 8021aa0:	2c03      	cmp	r4, #3 8021aa2:	dd96      	ble.n	80219d2 <memcpy+0x86> 8021aa4:	1d1c      	adds	r4, r3, #4 8021aa6:	1d0d      	adds	r5, r1, #4 8021aa8:	f855 7c04 	ldr.w	r7, [r5, #-4] 8021aac:	1b16      	subs	r6, r2, r4 8021aae:	4623      	mov	r3, r4 8021ab0:	4629      	mov	r1, r5 8021ab2:	3404      	adds	r4, #4 8021ab4:	3504      	adds	r5, #4 8021ab6:	2e03      	cmp	r6, #3 8021ab8:	f844 7c08 	str.w	r7, [r4, #-8] 8021abc:	dcf4      	bgt.n	8021aa8 <memcpy+0x15c> 8021abe:	e788      	b.n	80219d2 <memcpy+0x86>08021ac0 <memset>: 8021ac0:	2a03      	cmp	r2, #3 8021ac2:	b2c9      	uxtb	r1, r1 8021ac4:	b470      	push	{r4, r5, r6} 8021ac6:	d808      	bhi.n	8021ada <memset+0x1a> 8021ac8:	b12a      	cbz	r2, 8021ad6 <memset+0x16> 8021aca:	4603      	mov	r3, r0 8021acc:	1812      	adds	r2, r2, r0 8021ace:	f803 1b01 	strb.w	r1, [r3], #1 8021ad2:	4293      	cmp	r3, r2 8021ad4:	d1fb      	bne.n	8021ace <memset+0xe> 8021ad6:	bc70      	pop	{r4, r5, r6} 8021ad8:	4770      	bx	lr 8021ada:	0783      	lsls	r3, r0, #30 8021adc:	4402      	add	r2, r0 8021ade:	d009      	beq.n	8021af4 <memset+0x34> 8021ae0:	1c44      	adds	r4, r0, #1 8021ae2:	f004 0503 	and.w	r5, r4, #3 8021ae6:	4623      	mov	r3, r4 8021ae8:	f804 1c01 	strb.w	r1, [r4, #-1] 8021aec:	3401      	adds	r4, #1 8021aee:	2d00      	cmp	r5, #0 8021af0:	d1f7      	bne.n	8021ae2 <memset+0x22> 8021af2:	e000      	b.n	8021af6 <memset+0x36> 8021af4:	4603      	mov	r3, r0 8021af6:	1ad5      	subs	r5, r2, r3 8021af8:	eb01 2401 	add.w	r4, r1, r1, lsl #8 8021afc:	2d3f      	cmp	r5, #63	; 0x3f 8021afe:	eb04 4404 	add.w	r4, r4, r4, lsl #16 8021b02:	dd2c      	ble.n	8021b5e <memset+0x9e> 8021b04:	601c      	str	r4, [r3, #0] 8021b06:	3340      	adds	r3, #64	; 0x40 8021b08:	1ad5      	subs	r5, r2, r3 8021b0a:	f843 4c3c 	str.w	r4, [r3, #-60] 8021b0e:	2d3f      	cmp	r5, #63	; 0x3f 8021b10:	f843 4c38 	str.w	r4, [r3, #-56] 8021b14:	f843 4c34 	str.w	r4, [r3, #-52] 8021b18:	f843 4c30 	str.w	r4, [r3, #-48] 8021b1c:	f843 4c2c 	str.w	r4, [r3, #-44] 8021b20:	f843 4c28 	str.w	r4, [r3, #-40] 8021b24:	f843 4c24 	str.w	r4, [r3, #-36] 8021b28:	f843 4c20 	str.w	r4, [r3, #-32] 8021b2c:	f843 4c1c 	str.w	r4, [r3, #-28] 8021b30:	f843 4c18 	str.w	r4, [r3, #-24] 8021b34:	f843 4c14 	str.w	r4, [r3, #-20] 8021b38:	f843 4c10 	str.w	r4, [r3, #-16] 8021b3c:	f843 4c0c 	str.w	r4, [r3, #-12] 8021b40:	f843 4c08 	str.w	r4, [r3, #-8] 8021b44:	f843 4c04 	str.w	r4, [r3, #-4] 8021b48:	dcdc      	bgt.n	8021b04 <memset+0x44> 8021b4a:	e008      	b.n	8021b5e <memset+0x9e> 8021b4c:	601c      	str	r4, [r3, #0] 8021b4e:	3310      	adds	r3, #16 8021b50:	1ad5      	subs	r5, r2, r3 8021b52:	f843 4c0c 	str.w	r4, [r3, #-12] 8021b56:	f843 4c08 	str.w	r4, [r3, #-8] 8021b5a:	f843 4c04 	str.w	r4, [r3, #-4] 8021b5e:	2d0f      	cmp	r5, #15 8021b60:	dcf4      	bgt.n	8021b4c <memset+0x8c> 8021b62:	2d03      	cmp	r5, #3 8021b64:	dd08      	ble.n	8021b78 <memset+0xb8> 8021b66:	1d1d      	adds	r5, r3, #4 8021b68:	1b56      	subs	r6, r2, r5 8021b6a:	f845 4c04 	str.w	r4, [r5, #-4] 8021b6e:	2e03      	cmp	r6, #3 8021b70:	462b      	mov	r3, r5 8021b72:	f105 0504 	add.w	r5, r5, #4 8021b76:	dcf7      	bgt.n	8021b68 <memset+0xa8> 8021b78:	429a      	cmp	r2, r3 8021b7a:	d9ac      	bls.n	8021ad6 <memset+0x16> 8021b7c:	3301      	adds	r3, #1 8021b7e:	3201      	adds	r2, #1 8021b80:	f803 1c01 	strb.w	r1, [r3, #-1] 8021b84:	3301      	adds	r3, #1 8021b86:	4293      	cmp	r3, r2 8021b88:	d1fa      	bne.n	8021b80 <memset+0xc0> 8021b8a:	e7a4      	b.n	8021ad6 <memset+0x16>08021b8c <strcat>: 8021b8c:	0783      	lsls	r3, r0, #30 8021b8e:	b570      	push	{r4, r5, r6, lr} 8021b90:	4606      	mov	r6, r0 8021b92:	d114      	bne.n	8021bbe <strcat+0x32> 8021b94:	6803      	ldr	r3, [r0, #0] 8021b96:	f1a3 3201 	sub.w	r2, r3, #16843009	; 0x1010101 8021b9a:	ea22 0303 	bic.w	r3, r2, r3 8021b9e:	f013 3f80 	tst.w	r3, #2155905152	; 0x80808080 8021ba2:	d10c      	bne.n	8021bbe <strcat+0x32> 8021ba4:	1d03      	adds	r3, r0, #4 8021ba6:	461a      	mov	r2, r3 8021ba8:	f853 4b04 	ldr.w	r4, [r3], #4 8021bac:	f1a4 3501 	sub.w	r5, r4, #16843009	; 0x1010101 8021bb0:	ea25 0404 	bic.w	r4, r5, r4 8021bb4:	f014 3f80 	tst.w	r4, #2155905152	; 0x80808080 8021bb8:	d0f5      	beq.n	8021ba6 <strcat+0x1a> 8021bba:	4610      	mov	r0, r2 8021bbc:	e000      	b.n	8021bc0 <strcat+0x34> 8021bbe:	4630      	mov	r0, r6 8021bc0:	7803      	ldrb	r3, [r0, #0] 8021bc2:	b12b      	cbz	r3, 8021bd0 <strcat+0x44> 8021bc4:	1c43      	adds	r3, r0, #1 8021bc6:	4618      	mov	r0, r3 8021bc8:	3301      	adds	r3, #1 8021bca:	7804      	ldrb	r4, [r0, #0] 8021bcc:	2c00      	cmp	r4, #0 8021bce:	d1fa      	bne.n	8021bc6 <strcat+0x3a> 8021bd0:	f000 f8f0 	bl	8021db4 <strcpy> 8021bd4:	4630      	mov	r0, r6 8021bd6:	bd70      	pop	{r4, r5, r6, pc}08021bd8 <strcmp>: 8021bd8:	ea80 0201 	eor.w	r2, r0, r1 8021bdc:	f012 0f03 	tst.w	r2, #3 8021be0:	f040 803a 	bne.w	8021c58 <strcmp_unaligned> 8021be4:	f010 0203 	ands.w	r2, r0, #3 8021be8:	f020 0003 	bic.w	r0, r0, #3 8021bec:	f021 0103 	bic.w	r1, r1, #3 8021bf0:	f850 cb04 	ldr.w	ip, [r0], #4 8021bf4:	bf08      	it	eq 8021bf6:	f851 3b04 	ldreq.w	r3, [r1], #4 8021bfa:	d00d      	beq.n	8021c18 <strcmp+0x40> 8021bfc:	f082 0203 	eor.w	r2, r2, #3 8021c00:	ea4f 02c2 	mov.w	r2, r2, lsl #3 8021c04:	f06f 437f 	mvn.w	r3, #4278190080	; 0xff000000 8021c08:	fa23 f202 	lsr.w	r2, r3, r2 8021c0c:	f851 3b04 	ldr.w	r3, [r1], #4 8021c10:	ea4c 0c02 	orr.w	ip, ip, r2 8021c14:	ea43 0302 	orr.w	r3, r3, r2 8021c18:	f1ac 3201 	sub.w	r2, ip, #16843009	; 0x1010101 8021c1c:	459c      	cmp	ip, r3 8021c1e:	bf01      	itttt	eq 8021c20:	ea22 020c 	biceq.w	r2, r2, ip 8021c24:	f012 3f80 	tsteq.w	r2, #2155905152	; 0x80808080 8021c28:	f850 cb04 	ldreq.w	ip, [r0], #4 8021c2c:	f851 3b04 	ldreq.w	r3, [r1], #4 8021c30:	d0f2      	beq.n	8021c18 <strcmp+0x40> 8021c32:	ea4f 600c 	mov.w	r0, ip, lsl #24 8021c36:	ea4f 2c1c 	mov.w	ip, ip, lsr #8 8021c3a:	2801      	cmp	r0, #1 8021c3c:	bf28      	it	cs 8021c3e:	ebb0 6f03 	cmpcs.w	r0, r3, lsl #24 8021c42:	bf08      	it	eq 8021c44:	0a1b      	lsreq	r3, r3, #8 8021c46:	d0f4      	beq.n	8021c32 <strcmp+0x5a> 8021c48:	f003 03ff 	and.w	r3, r3, #255	; 0xff 8021c4c:	ea4f 6010 	mov.w	r0, r0, lsr #24 8021c50:	eba0 0003 	sub.w	r0, r0, r3 8021c54:	4770      	bx	lr 8021c56:	bf00      	nop08021c58 <strcmp_unaligned>: 8021c58:	f010 0f03 	tst.w	r0, #3 8021c5c:	d00a      	beq.n	8021c74 <strcmp_unaligned+0x1c> 8021c5e:	f810 2b01 	ldrb.w	r2, [r0], #1 8021c62:	f811 3b01 	ldrb.w	r3, [r1], #1 8021c66:	2a01      	cmp	r2, #1 8021c68:	bf28      	it	cs 8021c6a:	429a      	cmpcs	r2, r3 8021c6c:	d0f4      	beq.n	8021c58 <strcmp_unaligned> 8021c6e:	eba2 0003 	sub.w	r0, r2, r3 8021c72:	4770      	bx	lr 8021c74:	f84d 5d04 	str.w	r5, [sp, #-4]! 8021c78:	f84d 4d04 	str.w	r4, [sp, #-4]! 8021c7c:	f04f 0201 	mov.w	r2, #1 8021c80:	ea42 2202 	orr.w	r2, r2, r2, lsl #8 8021c84:	ea42 4202 	orr.w	r2, r2, r2, lsl #16 8021c88:	f001 0c03 	and.w	ip, r1, #3 8021c8c:	f021 0103 	bic.w	r1, r1, #3 8021c90:	f850 4b04 	ldr.w	r4, [r0], #4 8021c94:	f851 5b04 	ldr.w	r5, [r1], #4 8021c98:	f1bc 0f02 	cmp.w	ip, #2 8021c9c:	d026      	beq.n	8021cec <strcmp_unaligned+0x94> 8021c9e:	d84b      	bhi.n	8021d38 <strcmp_unaligned+0xe0> 8021ca0:	f024 4c7f 	bic.w	ip, r4, #4278190080	; 0xff000000 8021ca4:	ebbc 2f15 	cmp.w	ip, r5, lsr #8 8021ca8:	eba4 0302 	sub.w	r3, r4, r2 8021cac:	ea23 0304 	bic.w	r3, r3, r4 8021cb0:	d10d      	bne.n	8021cce <strcmp_unaligned+0x76> 8021cb2:	ea13 13c2 	ands.w	r3, r3, r2, lsl #7 8021cb6:	bf08      	it	eq 8021cb8:	f851 5b04 	ldreq.w	r5, [r1], #4 8021cbc:	d10a      	bne.n	8021cd4 <strcmp_unaligned+0x7c> 8021cbe:	ea8c 0c04 	eor.w	ip, ip, r4 8021cc2:	ebbc 6f05 	cmp.w	ip, r5, lsl #24 8021cc6:	d10c      	bne.n	8021ce2 <strcmp_unaligned+0x8a> 8021cc8:	f850 4b04 	ldr.w	r4, [r0], #4 8021ccc:	e7e8      	b.n	8021ca0 <strcmp_unaligned+0x48> 8021cce:	ea4f 2515 	mov.w	r5, r5, lsr #8 8021cd2:	e05c      	b.n	8021d8e <strcmp_unaligned+0x136> 8021cd4:	f033 437f 	bics.w	r3, r3, #4278190080	; 0xff000000 8021cd8:	d152      	bne.n	8021d80 <strcmp_unaligned+0x128> 8021cda:	780d      	ldrb	r5, [r1, #0] 8021cdc:	ea4f 6c14 	mov.w	ip, r4, lsr #24 8021ce0:	e055      	b.n	8021d8e <strcmp_unaligned+0x136> 8021ce2:	ea4f 6c14 	mov.w	ip, r4, lsr #24 8021ce6:	f005 05ff 	and.w	r5, r5, #255	; 0xff 8021cea:	e050      	b.n	8021d8e <strcmp_unaligned+0x136> 8021cec:	ea4f 4c04 	mov.w	ip, r4, lsl #16 8021cf0:	eba4 0302 	sub.w	r3, r4, r2 8021cf4:	ea4f 4c1c 	mov.w	ip, ip, lsr #16 8021cf8:	ea23 0304 	bic.w	r3, r3, r4 8021cfc:	ebbc 4f15 	cmp.w	ip, r5, lsr #16 8021d00:	d117      	bne.n	8021d32 <strcmp_unaligned+0xda> 8021d02:	ea13 13c2 	ands.w	r3, r3, r2, lsl #7 8021d06:	bf08      	it	eq 8021d08:	f851 5b04 	ldreq.w	r5, [r1], #4 8021d0c:	d107      	bne.n	8021d1e <strcmp_unaligned+0xc6> 8021d0e:	ea8c 0c04 	eor.w	ip, ip, r4 8021d12:	ebbc 4f05 	cmp.w	ip, r5, lsl #16 8021d16:	d108      	bne.n	8021d2a <strcmp_unaligned+0xd2> 8021d18:	f850 4b04 	ldr.w	r4, [r0], #4 8021d1c:	e7e6      	b.n	8021cec <strcmp_unaligned+0x94> 8021d1e:	041b      	lsls	r3, r3, #16 8021d20:	d12e      	bne.n	8021d80 <strcmp_unaligned+0x128> 8021d22:	880d      	ldrh	r5, [r1, #0] 8021d24:	ea4f 4c14 	mov.w	ip, r4, lsr #16 8021d28:	e031      	b.n	8021d8e <strcmp_unaligned+0x136> 8021d2a:	ea4f 4505 	mov.w	r5, r5, lsl #16 8021d2e:	ea4f 4c14 	mov.w	ip, r4, lsr #16 8021d32:	ea4f 4515 	mov.w	r5, r5, lsr #16 8021d36:	e02a      	b.n	8021d8e <strcmp_unaligned+0x136> 8021d38:	f004 0cff 	and.w	ip, r4, #255	; 0xff 8021d3c:	ebbc 6f15 	cmp.w	ip, r5, lsr #24 8021d40:	eba4 0302 	sub.w	r3, r4, r2 8021d44:	ea23 0304 	bic.w	r3, r3, r4 8021d48:	d10d      	bne.n	8021d66 <strcmp_unaligned+0x10e> 8021d4a:	ea13 13c2 	ands.w	r3, r3, r2, lsl #7 8021d4e:	bf08      	it	eq 8021d50:	f851 5b04 	ldreq.w	r5, [r1], #4 8021d54:	d10a      	bne.n	8021d6c <strcmp_unaligned+0x114> 8021d56:	ea8c 0c04 	eor.w	ip, ip, r4 8021d5a:	ebbc 2f05 	cmp.w	ip, r5, lsl #8 8021d5e:	d10a      	bne.n	8021d76 <strcmp_unaligned+0x11e> 8021d60:	f850 4b04 	ldr.w	r4, [r0], #4 8021d64:	e7e8      	b.n	8021d38 <strcmp_unaligned+0xe0> 8021d66:	ea4f 6515 	mov.w	r5, r5, lsr #24 8021d6a:	e010      	b.n	8021d8e <strcmp_unaligned+0x136> 8021d6c:	f014 0fff 	tst.w	r4, #255	; 0xff 8021d70:	d006      	beq.n	8021d80 <strcmp_unaligned+0x128> 8021d72:	f851 5b04 	ldr.w	r5, [r1], #4 8021d76:	ea4f 2c14 	mov.w	ip, r4, lsr #8 8021d7a:	f025 457f 	bic.w	r5, r5, #4278190080	; 0xff000000 8021d7e:	e006      	b.n	8021d8e <strcmp_unaligned+0x136> 8021d80:	f04f 0000 	mov.w	r0, #0 8021d84:	f85d 4b04 	ldr.w	r4, [sp], #4 8021d88:	f85d 5b04 	ldr.w	r5, [sp], #4 8021d8c:	4770      	bx	lr 8021d8e:	f00c 02ff 	and.w	r2, ip, #255	; 0xff 8021d92:	f005 00ff 	and.w	r0, r5, #255	; 0xff 8021d96:	2801      	cmp	r0, #1 8021d98:	bf28      	it	cs 8021d9a:	4290      	cmpcs	r0, r2 8021d9c:	bf04      	itt	eq 8021d9e:	ea4f 2c1c 	moveq.w	ip, ip, lsr #8 8021da2:	0a2d      	lsreq	r5, r5, #8 8021da4:	d0f3      	beq.n	8021d8e <strcmp_unaligned+0x136> 8021da6:	eba2 0000 	sub.w	r0, r2, r0 8021daa:	f85d 4b04 	ldr.w	r4, [sp], #4 8021dae:	f85d 5b04 	ldr.w	r5, [sp], #4 8021db2:	4770      	bx	lr08021db4 <strcpy>: 8021db4:	ea80 0201 	eor.w	r2, r0, r1 8021db8:	4684      	mov	ip, r0 8021dba:	f012 0f03 	tst.w	r2, #3 8021dbe:	d14f      	bne.n	8021e60 <strcpy+0xac> 8021dc0:	f011 0f03 	tst.w	r1, #3 8021dc4:	d132      	bne.n	8021e2c <strcpy+0x78> 8021dc6:	f84d 4d04 	str.w	r4, [sp, #-4]! 8021dca:	f011 0f04 	tst.w	r1, #4 8021dce:	f851 3b04 	ldr.w	r3, [r1], #4 8021dd2:	d00b      	beq.n	8021dec <strcpy+0x38> 8021dd4:	f1a3 3201 	sub.w	r2, r3, #16843009	; 0x1010101 8021dd8:	439a      	bics	r2, r3 8021dda:	f012 3f80 	tst.w	r2, #2155905152	; 0x80808080 8021dde:	bf04      	itt	eq 8021de0:	f84c 3b04 	streq.w	r3, [ip], #4 8021de4:	f851 3b04 	ldreq.w	r3, [r1], #4 8021de8:	d116      	bne.n	8021e18 <strcpy+0x64> 8021dea:	bf00      	nop 8021dec:	f851 4b04 	ldr.w	r4, [r1], #4 8021df0:	f1a3 3201 	sub.w	r2, r3, #16843009	; 0x1010101 8021df4:	439a      	bics	r2, r3 8021df6:	f012 3f80 	tst.w	r2, #2155905152	; 0x80808080 8021dfa:	f1a4 3201 	sub.w	r2, r4, #16843009	; 0x1010101 8021dfe:	d10b      	bne.n	8021e18 <strcpy+0x64> 8021e00:	f84c 3b04 	str.w	r3, [ip], #4 8021e04:	43a2      	bics	r2, r4 8021e06:	f012 3f80 	tst.w	r2, #2155905152	; 0x80808080 8021e0a:	bf04      	itt	eq 8021e0c:	f851 3b04 	ldreq.w	r3, [r1], #4 8021e10:	f84c 4b04 	streq.w	r4, [ip], #4 8021e14:	d0ea      	beq.n	8021dec <strcpy+0x38> 8021e16:	4623      	mov	r3, r4 8021e18:	f80c 3b01 	strb.w	r3, [ip], #1 8021e1c:	f013 0fff 	tst.w	r3, #255	; 0xff 8021e20:	ea4f 2333 	mov.w	r3, r3, ror #8 8021e24:	d1f8      	bne.n	8021e18 <strcpy+0x64> 8021e26:	f85d 4b04 	ldr.w	r4, [sp], #4 8021e2a:	4770      	bx	lr 8021e2c:	f011 0f01 	tst.w	r1, #1 8021e30:	d006      	beq.n	8021e40 <strcpy+0x8c> 8021e32:	f811 2b01 	ldrb.w	r2, [r1], #1 8021e36:	f80c 2b01 	strb.w	r2, [ip], #1 8021e3a:	2a00      	cmp	r2, #0 8021e3c:	bf08      	it	eq 8021e3e:	4770      	bxeq	lr 8021e40:	f011 0f02 	tst.w	r1, #2 8021e44:	d0bf      	beq.n	8021dc6 <strcpy+0x12> 8021e46:	f831 2b02 	ldrh.w	r2, [r1], #2 8021e4a:	f012 0fff 	tst.w	r2, #255	; 0xff 8021e4e:	bf16      	itet	ne 8021e50:	f82c 2b02 	strhne.w	r2, [ip], #2 8021e54:	f88c 2000 	strbeq.w	r2, [ip] 8021e58:	f412 4f7f 	tstne.w	r2, #65280	; 0xff00 8021e5c:	d1b3      	bne.n	8021dc6 <strcpy+0x12> 8021e5e:	4770      	bx	lr 8021e60:	f811 2b01 	ldrb.w	r2, [r1], #1 8021e64:	f80c 2b01 	strb.w	r2, [ip], #1 8021e68:	2a00      	cmp	r2, #0 8021e6a:	d1f9      	bne.n	8021e60 <strcpy+0xac> 8021e6c:	4770      	bx	lr 8021e6e:	bf00      	nop08021e70 <strlen>: 8021e70:	f020 0103 	bic.w	r1, r0, #3 8021e74:	f010 0003 	ands.w	r0, r0, #3 8021e78:	f1c0 0000 	rsb	r0, r0, #0 8021e7c:	f851 3b04 	ldr.w	r3, [r1], #4 8021e80:	f100 0c04 	add.w	ip, r0, #4 8021e84:	ea4f 0ccc 	mov.w	ip, ip, lsl #3 8021e88:	f06f 0200 	mvn.w	r2, #0 8021e8c:	bf1c      	itt	ne 8021e8e:	fa22 f20c 	lsrne.w	r2, r2, ip 8021e92:	4313      	orrne	r3, r2 8021e94:	f04f 0c01 	mov.w	ip, #1 8021e98:	ea4c 2c0c 	orr.w	ip, ip, ip, lsl #8 8021e9c:	ea4c 4c0c 	orr.w	ip, ip, ip, lsl #16 8021ea0:	eba3 020c 	sub.w	r2, r3, ip 8021ea4:	ea22 0203 	bic.w	r2, r2, r3 8021ea8:	ea12 12cc 	ands.w	r2, r2, ip, lsl #7 8021eac:	bf04      	itt	eq 8021eae:	f851 3b04 	ldreq.w	r3, [r1], #4 8021eb2:	3004      	addeq	r0, #4 8021eb4:	d0f4      	beq.n	8021ea0 <strlen+0x30> 8021eb6:	f013 0fff 	tst.w	r3, #255	; 0xff 8021eba:	bf1f      	itttt	ne 8021ebc:	3001      	addne	r0, #1 8021ebe:	f413 4f7f 	tstne.w	r3, #65280	; 0xff00 8021ec2:	3001      	addne	r0, #1 8021ec4:	f413 0f7f 	tstne.w	r3, #16711680	; 0xff0000 8021ec8:	bf18      	it	ne 8021eca:	3001      	addne	r0, #1 8021ecc:	4770      	bx	lr 8021ece:	bf00      	nop08021ed0 <strncat>: 8021ed0:	0783      	lsls	r3, r0, #30 8021ed2:	b470      	push	{r4, r5, r6} 8021ed4:	d113      	bne.n	8021efe <strncat+0x2e> 8021ed6:	6803      	ldr	r3, [r0, #0] 8021ed8:	f1a3 3401 	sub.w	r4, r3, #16843009	; 0x1010101 8021edc:	ea24 0303 	bic.w	r3, r4, r3 8021ee0:	f013 3f80 	tst.w	r3, #2155905152	; 0x80808080 8021ee4:	d10b      	bne.n	8021efe <strncat+0x2e> 8021ee6:	1d03      	adds	r3, r0, #4 8021ee8:	461d      	mov	r5, r3 8021eea:	f853 4b04 	ldr.w	r4, [r3], #4 8021eee:	f1a4 3601 	sub.w	r6, r4, #16843009	; 0x1010101 8021ef2:	ea26 0404 	bic.w	r4, r6, r4 8021ef6:	f014 3f80 	tst.w	r4, #2155905152	; 0x80808080 8021efa:	d0f5      	beq.n	8021ee8 <strncat+0x18> 8021efc:	e000      	b.n	8021f00 <strncat+0x30> 8021efe:	4605      	mov	r5, r0 8021f00:	782b      	ldrb	r3, [r5, #0] 8021f02:	b12b      	cbz	r3, 8021f10 <strncat+0x40> 8021f04:	1c6b      	adds	r3, r5, #1 8021f06:	461d      	mov	r5, r3 8021f08:	3301      	adds	r3, #1 8021f0a:	782c      	ldrb	r4, [r5, #0] 8021f0c:	2c00      	cmp	r4, #0 8021f0e:	d1fa      	bne.n	8021f06 <strncat+0x36> 8021f10:	3901      	subs	r1, #1 8021f12:	3d01      	subs	r5, #1 8021f14:	1e53      	subs	r3, r2, #1 8021f16:	b15a      	cbz	r2, 8021f30 <strncat+0x60> 8021f18:	f811 4f01 	ldrb.w	r4, [r1, #1]! 8021f1c:	461a      	mov	r2, r3 8021f1e:	f805 4f01 	strb.w	r4, [r5, #1]! 8021f22:	b12c      	cbz	r4, 8021f30 <strncat+0x60> 8021f24:	2b00      	cmp	r3, #0 8021f26:	d1f5      	bne.n	8021f14 <strncat+0x44> 8021f28:	706b      	strb	r3, [r5, #1] 8021f2a:	1e53      	subs	r3, r2, #1 8021f2c:	2a00      	cmp	r2, #0 8021f2e:	d1f3      	bne.n	8021f18 <strncat+0x48> 8021f30:	bc70      	pop	{r4, r5, r6} 8021f32:	4770      	bx	lr08021f34 <strncmp>: 8021f34:	b470      	push	{r4, r5, r6} 8021f36:	2a00      	cmp	r2, #0 8021f38:	d045      	beq.n	8021fc6 <strncmp+0x92> 8021f3a:	ea41 0300 	orr.w	r3, r1, r0 8021f3e:	f013 0303 	ands.w	r3, r3, #3 8021f42:	d129      	bne.n	8021f98 <strncmp+0x64> 8021f44:	2a03      	cmp	r2, #3 8021f46:	d927      	bls.n	8021f98 <strncmp+0x64> 8021f48:	6805      	ldr	r5, [r0, #0] 8021f4a:	680c      	ldr	r4, [r1, #0] 8021f4c:	42a5      	cmp	r5, r4 8021f4e:	d123      	bne.n	8021f98 <strncmp+0x64> 8021f50:	1f14      	subs	r4, r2, #4 8021f52:	d03a      	beq.n	8021fca <strncmp+0x96> 8021f54:	f1a5 3201 	sub.w	r2, r5, #16843009	; 0x1010101 8021f58:	ea22 0505 	bic.w	r5, r2, r5 8021f5c:	f015 3f80 	tst.w	r5, #2155905152	; 0x80808080 8021f60:	d00d      	beq.n	8021f7e <strncmp+0x4a> 8021f62:	e03a      	b.n	8021fda <strncmp+0xa6> 8021f64:	685b      	ldr	r3, [r3, #4] 8021f66:	686a      	ldr	r2, [r5, #4] 8021f68:	f1a3 3501 	sub.w	r5, r3, #16843009	; 0x1010101 8021f6c:	4293      	cmp	r3, r2 8021f6e:	ea25 0503 	bic.w	r5, r5, r3 8021f72:	d12e      	bne.n	8021fd2 <strncmp+0x9e> 8021f74:	3c04      	subs	r4, #4 8021f76:	d028      	beq.n	8021fca <strncmp+0x96> 8021f78:	f015 3f80 	tst.w	r5, #2155905152	; 0x80808080 8021f7c:	d127      	bne.n	8021fce <strncmp+0x9a> 8021f7e:	460d      	mov	r5, r1 8021f80:	4603      	mov	r3, r0 8021f82:	3104      	adds	r1, #4 8021f84:	3004      	adds	r0, #4 8021f86:	2c03      	cmp	r4, #3 8021f88:	d8ec      	bhi.n	8021f64 <strncmp+0x30> 8021f8a:	1e66      	subs	r6, r4, #1 8021f8c:	b92c      	cbnz	r4, 8021f9a <strncmp+0x66> 8021f8e:	791c      	ldrb	r4, [r3, #4] 8021f90:	792a      	ldrb	r2, [r5, #4] 8021f92:	1aa0      	subs	r0, r4, r2 8021f94:	bc70      	pop	{r4, r5, r6} 8021f96:	4770      	bx	lr 8021f98:	1e56      	subs	r6, r2, #1 8021f9a:	7804      	ldrb	r4, [r0, #0] 8021f9c:	780a      	ldrb	r2, [r1, #0] 8021f9e:	4294      	cmp	r4, r2 8021fa0:	d1f7      	bne.n	8021f92 <strncmp+0x5e> 8021fa2:	b1c6      	cbz	r6, 8021fd6 <strncmp+0xa2> 8021fa4:	b18c      	cbz	r4, 8021fca <strncmp+0x96> 8021fa6:	3601      	adds	r6, #1 8021fa8:	1c8b      	adds	r3, r1, #2 8021faa:	1989      	adds	r1, r1, r6 8021fac:	e004      	b.n	8021fb8 <strncmp+0x84> 8021fae:	428b      	cmp	r3, r1 8021fb0:	f103 0301 	add.w	r3, r3, #1 8021fb4:	d00b      	beq.n	8021fce <strncmp+0x9a> 8021fb6:	b144      	cbz	r4, 8021fca <strncmp+0x96> 8021fb8:	f813 2c01 	ldrb.w	r2, [r3, #-1] 8021fbc:	f810 4f01 	ldrb.w	r4, [r0, #1]! 8021fc0:	4294      	cmp	r4, r2 8021fc2:	d0f4      	beq.n	8021fae <strncmp+0x7a> 8021fc4:	e7e5      	b.n	8021f92 <strncmp+0x5e> 8021fc6:	4610      	mov	r0, r2 8021fc8:	e7e4      	b.n	8021f94 <strncmp+0x60> 8021fca:	4620      	mov	r0, r4 8021fcc:	e7e2      	b.n	8021f94 <strncmp+0x60> 8021fce:	2000      	movs	r0, #0 8021fd0:	e7e0      	b.n	8021f94 <strncmp+0x60> 8021fd2:	1e66      	subs	r6, r4, #1 8021fd4:	e7e1      	b.n	8021f9a <strncmp+0x66> 8021fd6:	4630      	mov	r0, r6 8021fd8:	e7dc      	b.n	8021f94 <strncmp+0x60> 8021fda:	4618      	mov	r0, r3 8021fdc:	e7da      	b.n	8021f94 <strncmp+0x60> 8021fde:	bf00      	nop08021fe0 <strncpy>: 8021fe0:	ea41 0300 	orr.w	r3, r1, r0 8021fe4:	f013 0f03 	tst.w	r3, #3 8021fe8:	4603      	mov	r3, r0 8021fea:	b470      	push	{r4, r5, r6} 8021fec:	d025      	beq.n	802203a <strncpy+0x5a> 8021fee:	b1aa      	cbz	r2, 802201c <strncpy+0x3c> 8021ff0:	780c      	ldrb	r4, [r1, #0] 8021ff2:	3a01      	subs	r2, #1 8021ff4:	f803 4b01 	strb.w	r4, [r3], #1 8021ff8:	b14c      	cbz	r4, 802200e <strncpy+0x2e> 8021ffa:	461c      	mov	r4, r3 8021ffc:	b172      	cbz	r2, 802201c <strncpy+0x3c> 8021ffe:	f811 5f01 	ldrb.w	r5, [r1, #1]! 8022002:	3a01      	subs	r2, #1 8022004:	f804 5b01 	strb.w	r5, [r4], #1 8022008:	4623      	mov	r3, r4 802200a:	2d00      	cmp	r5, #0 802200c:	d1f6      	bne.n	8021ffc <strncpy+0x1c> 802200e:	b12a      	cbz	r2, 802201c <strncpy+0x3c> 8022010:	189a      	adds	r2, r3, r2 8022012:	2100      	movs	r1, #0 8022014:	f803 1b01 	strb.w	r1, [r3], #1 8022018:	4293      	cmp	r3, r2 802201a:	d1fb      	bne.n	8022014 <strncpy+0x34> 802201c:	bc70      	pop	{r4, r5, r6} 802201e:	4770      	bx	lr 8022020:	460e      	mov	r6, r1 8022022:	f851 4b04 	ldr.w	r4, [r1], #4 8022026:	f1a4 3501 	sub.w	r5, r4, #16843009	; 0x1010101 802202a:	ea25 0504 	bic.w	r5, r5, r4 802202e:	f015 3f80 	tst.w	r5, #2155905152	; 0x80808080 8022032:	d105      	bne.n	8022040 <strncpy+0x60> 8022034:	3a04      	subs	r2, #4 8022036:	f843 4b04 	str.w	r4, [r3], #4 802203a:	2a03      	cmp	r2, #3 802203c:	d8f0      	bhi.n	8022020 <strncpy+0x40> 802203e:	e7d6      	b.n	8021fee <strncpy+0xe> 8022040:	4631      	mov	r1, r6 8022042:	e7d4      	b.n	8021fee <strncpy+0xe>08022044 <strpbrk>: 8022044:	b4f0      	push	{r4, r5, r6, r7} 8022046:	7804      	ldrb	r4, [r0, #0] 8022048:	2c00      	cmp	r4, #0 802204a:	d021      	beq.n	8022090 <strpbrk+0x4c> 802204c:	780f      	ldrb	r7, [r1, #0] 802204e:	4606      	mov	r6, r0 8022050:	4630      	mov	r0, r6 8022052:	b1af      	cbz	r7, 8022080 <strpbrk+0x3c> 8022054:	42a7      	cmp	r7, r4 8022056:	d019      	beq.n	802208c <strpbrk+0x48> 8022058:	1c4b      	adds	r3, r1, #1 802205a:	e001      	b.n	8022060 <strpbrk+0x1c> 802205c:	4294      	cmp	r4, r2 802205e:	d009      	beq.n	8022074 <strpbrk+0x30> 8022060:	461d      	mov	r5, r3 8022062:	f813 2b01 	ldrb.w	r2, [r3], #1 8022066:	2a00      	cmp	r2, #0 8022068:	d1f8      	bne.n	802205c <strpbrk+0x18> 802206a:	7844      	ldrb	r4, [r0, #1] 802206c:	3601      	adds	r6, #1 802206e:	2c00      	cmp	r4, #0 8022070:	d1ee      	bne.n	8022050 <strpbrk+0xc> 8022072:	782a      	ldrb	r2, [r5, #0] 8022074:	2a00      	cmp	r2, #0 8022076:	bf14      	ite	ne 8022078:	4630      	movne	r0, r6 802207a:	2000      	moveq	r0, #0 802207c:	bcf0      	pop	{r4, r5, r6, r7} 802207e:	4770      	bx	lr 8022080:	7844      	ldrb	r4, [r0, #1] 8022082:	460d      	mov	r5, r1 8022084:	3601      	adds	r6, #1 8022086:	2c00      	cmp	r4, #0 8022088:	d1e2      	bne.n	8022050 <strpbrk+0xc> 802208a:	e7f2      	b.n	8022072 <strpbrk+0x2e> 802208c:	463a      	mov	r2, r7 802208e:	e7f1      	b.n	8022074 <strpbrk+0x30> 8022090:	4620      	mov	r0, r4 8022092:	e7f3      	b.n	802207c <strpbrk+0x38>08022094 <critical_factorization>: 8022094:	e92d 07f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl} 8022098:	2701      	movs	r7, #1 802209a:	463c      	mov	r4, r7 802209c:	2500      	movs	r5, #0 802209e:	f04f 36ff 	mov.w	r6, #4294967295 80220a2:	1963      	adds	r3, r4, r5 80220a4:	eb00 0c06 	add.w	ip, r0, r6 80220a8:	428b      	cmp	r3, r1 80220aa:	d20d      	bcs.n	80220c8 <critical_factorization+0x34> 80220ac:	f81c c004 	ldrb.w	ip, [ip, r4] 80220b0:	f810 8003 	ldrb.w	r8, [r0, r3] 80220b4:	45e0      	cmp	r8, ip 80220b6:	d22e      	bcs.n	8022116 <critical_factorization+0x82> 80220b8:	2401      	movs	r4, #1 80220ba:	461d      	mov	r5, r3 80220bc:	1b9f      	subs	r7, r3, r6 80220be:	1963      	adds	r3, r4, r5 80220c0:	428b      	cmp	r3, r1 80220c2:	eb00 0c06 	add.w	ip, r0, r6 80220c6:	d3f1      	bcc.n	80220ac <critical_factorization+0x18> 80220c8:	f04f 0a01 	mov.w	sl, #1 80220cc:	2500      	movs	r5, #0 80220ce:	4654      	mov	r4, sl 80220d0:	f04f 3cff 	mov.w	ip, #4294967295 80220d4:	6017      	str	r7, [r2, #0] 80220d6:	1963      	adds	r3, r4, r5 80220d8:	eb00 080c 	add.w	r8, r0, ip 80220dc:	4299      	cmp	r1, r3 80220de:	d90e      	bls.n	80220fe <critical_factorization+0x6a> 80220e0:	f818 8004 	ldrb.w	r8, [r8, r4] 80220e4:	f810 9003 	ldrb.w	r9, [r0, r3] 80220e8:	45c1      	cmp	r9, r8 80220ea:	d91a      	bls.n	8022122 <critical_factorization+0x8e> 80220ec:	2401      	movs	r4, #1 80220ee:	461d      	mov	r5, r3 80220f0:	ebcc 0a03 	rsb	sl, ip, r3 80220f4:	1963      	adds	r3, r4, r5 80220f6:	4299      	cmp	r1, r3 80220f8:	eb00 080c 	add.w	r8, r0, ip 80220fc:	d8f0      	bhi.n	80220e0 <critical_factorization+0x4c> 80220fe:	f10c 0001 	add.w	r0, ip, #1 8022102:	3601      	adds	r6, #1 8022104:	42b0      	cmp	r0, r6 8022106:	bf3c      	itt	cc 8022108:	46ba      	movcc	sl, r7 802210a:	4630      	movcc	r0, r6 802210c:	f8c2 a000 	str.w	sl, [r2] 8022110:	e8bd 07f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl} 8022114:	4770      	bx	lr 8022116:	d00b      	beq.n	8022130 <critical_factorization+0x9c> 8022118:	2701      	movs	r7, #1 802211a:	462e      	mov	r6, r5 802211c:	463c      	mov	r4, r7 802211e:	19ed      	adds	r5, r5, r7 8022120:	e7bf      	b.n	80220a2 <critical_factorization+0xe> 8022122:	d009      	beq.n	8022138 <critical_factorization+0xa4> 8022124:	f04f 0a01 	mov.w	sl, #1 8022128:	46ac      	mov	ip, r5 802212a:	4654      	mov	r4, sl 802212c:	4455      	add	r5, sl 802212e:	e7d2      	b.n	80220d6 <critical_factorization+0x42> 8022130:	42bc      	cmp	r4, r7 8022132:	d005      	beq.n	8022140 <critical_factorization+0xac> 8022134:	3401      	adds	r4, #1 8022136:	e7b4      	b.n	80220a2 <critical_factorization+0xe> 8022138:	4554      	cmp	r4, sl 802213a:	d005      	beq.n	8022148 <critical_factorization+0xb4> 802213c:	3401      	adds	r4, #1 802213e:	e7ca      	b.n	80220d6 <critical_factorization+0x42> 8022140:	4627      	mov	r7, r4 8022142:	461d      	mov	r5, r3 8022144:	2401      	movs	r4, #1 8022146:	e7ac      	b.n	80220a2 <critical_factorization+0xe> 8022148:	46a2      	mov	sl, r4 802214a:	461d      	mov	r5, r3 802214c:	2401      	movs	r4, #1 802214e:	e7c2      	b.n	80220d6 <critical_factorization+0x42>08022150 <two_way_long_needle>: 8022150:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8022154:	f2ad 4d24 	subw	sp, sp, #1060	; 0x424 8022158:	4616      	mov	r6, r2 802215a:	4680      	mov	r8, r0 802215c:	460c      	mov	r4, r1 802215e:	4610      	mov	r0, r2 8022160:	4619      	mov	r1, r3 8022162:	aa07      	add	r2, sp, #28 8022164:	461d      	mov	r5, r3 8022166:	f7ff ff95 	bl	8022094 <critical_factorization> 802216a:	ab07      	add	r3, sp, #28 802216c:	f20d 421c 	addw	r2, sp, #1052	; 0x41c 8022170:	9003      	str	r0, [sp, #12] 8022172:	f843 5f04 	str.w	r5, [r3, #4]! 8022176:	4293      	cmp	r3, r2 8022178:	d1fb      	bne.n	8022172 <two_way_long_needle+0x22> 802217a:	1e6f      	subs	r7, r5, #1 802217c:	2300      	movs	r3, #0 802217e:	a808      	add	r0, sp, #32 8022180:	b135      	cbz	r5, 8022190 <two_way_long_needle+0x40> 8022182:	5cf2      	ldrb	r2, [r6, r3] 8022184:	1af9      	subs	r1, r7, r3 8022186:	3301      	adds	r3, #1 8022188:	42ab      	cmp	r3, r5 802218a:	f840 1022 	str.w	r1, [r0, r2, lsl #2] 802218e:	d1f8      	bne.n	8022182 <two_way_long_needle+0x32> 8022190:	9907      	ldr	r1, [sp, #28] 8022192:	4630      	mov	r0, r6 8022194:	9a03      	ldr	r2, [sp, #12] 8022196:	1871      	adds	r1, r6, r1 8022198:	f7ff fba6 	bl	80218e8 <memcmp> 802219c:	2800      	cmp	r0, #0 802219e:	d17f      	bne.n	80222a0 <two_way_long_needle+0x150> 80221a0:	f8dd c00c 	ldr.w	ip, [sp, #12] 80221a4:	4622      	mov	r2, r4 80221a6:	4682      	mov	sl, r0 80221a8:	1e6f      	subs	r7, r5, #1 80221aa:	f10c 3cff 	add.w	ip, ip, #4294967295 80221ae:	f8cd c008 	str.w	ip, [sp, #8] 80221b2:	44b4      	add	ip, r6 80221b4:	f8cd c014 	str.w	ip, [sp, #20] 80221b8:	f8dd c00c 	ldr.w	ip, [sp, #12] 80221bc:	4604      	mov	r4, r0 80221be:	9501      	str	r5, [sp, #4] 80221c0:	f1cc 0c01 	rsb	ip, ip, #1 80221c4:	f8cd c010 	str.w	ip, [sp, #16] 80221c8:	e009      	b.n	80221de <two_way_long_needle+0x8e> 80221ca:	b134      	cbz	r4, 80221da <two_way_long_needle+0x8a> 80221cc:	9a07      	ldr	r2, [sp, #28] 80221ce:	4293      	cmp	r3, r2 80221d0:	bf3e      	ittt	cc 80221d2:	4604      	movcc	r4, r0 80221d4:	9901      	ldrcc	r1, [sp, #4] 80221d6:	ebc2 0301 	rsbcc	r3, r2, r1 80221da:	449a      	add	sl, r3 80221dc:	462a      	mov	r2, r5 80221de:	9b01      	ldr	r3, [sp, #4] 80221e0:	eb08 0002 	add.w	r0, r8, r2 80221e4:	2100      	movs	r1, #0 80221e6:	eb0a 0503 	add.w	r5, sl, r3 80221ea:	1aaa      	subs	r2, r5, r2 80221ec:	f002 fa90 	bl	8024710 <memchr> 80221f0:	2800      	cmp	r0, #0 80221f2:	d14f      	bne.n	8022294 <two_way_long_needle+0x144> 80221f4:	2d00      	cmp	r5, #0 80221f6:	d04d      	beq.n	8022294 <two_way_long_needle+0x144> 80221f8:	eb08 0305 	add.w	r3, r8, r5 80221fc:	a908      	add	r1, sp, #32 80221fe:	f813 3c01 	ldrb.w	r3, [r3, #-1] 8022202:	f851 3023 	ldr.w	r3, [r1, r3, lsl #2] 8022206:	2b00      	cmp	r3, #0 8022208:	d1df      	bne.n	80221ca <two_way_long_needle+0x7a> 802220a:	9a03      	ldr	r2, [sp, #12] 802220c:	4294      	cmp	r4, r2 802220e:	bf28      	it	cs 8022210:	4622      	movcs	r2, r4 8022212:	42ba      	cmp	r2, r7 8022214:	d211      	bcs.n	802223a <two_way_long_needle+0xea> 8022216:	eb08 030a 	add.w	r3, r8, sl 802221a:	f816 c002 	ldrb.w	ip, [r6, r2] 802221e:	18b1      	adds	r1, r6, r2 8022220:	5c98      	ldrb	r0, [r3, r2] 8022222:	4584      	cmp	ip, r0 8022224:	d006      	beq.n	8022234 <two_way_long_needle+0xe4> 8022226:	e02f      	b.n	8022288 <two_way_long_needle+0x138> 8022228:	f811 0f01 	ldrb.w	r0, [r1, #1]! 802222c:	f813 c002 	ldrb.w	ip, [r3, r2] 8022230:	4584      	cmp	ip, r0 8022232:	d129      	bne.n	8022288 <two_way_long_needle+0x138> 8022234:	3201      	adds	r2, #1 8022236:	42ba      	cmp	r2, r7 8022238:	d3f6      	bcc.n	8022228 <two_way_long_needle+0xd8> 802223a:	9b03      	ldr	r3, [sp, #12] 802223c:	9802      	ldr	r0, [sp, #8] 802223e:	429c      	cmp	r4, r3 8022240:	bf28      	it	cs 8022242:	4618      	movcs	r0, r3 8022244:	d218      	bcs.n	8022278 <two_way_long_needle+0x128> 8022246:	f8dd c008 	ldr.w	ip, [sp, #8] 802224a:	eb08 030a 	add.w	r3, r8, sl 802224e:	f816 100c 	ldrb.w	r1, [r6, ip] 8022252:	f813 200c 	ldrb.w	r2, [r3, ip] 8022256:	4291      	cmp	r1, r2 8022258:	f040 8085 	bne.w	8022366 <two_way_long_needle+0x216> 802225c:	9a05      	ldr	r2, [sp, #20] 802225e:	eb06 0b04 	add.w	fp, r6, r4 8022262:	e006      	b.n	8022272 <two_way_long_needle+0x122> 8022264:	f813 c001 	ldrb.w	ip, [r3, r1] 8022268:	f812 9d01 	ldrb.w	r9, [r2, #-1]! 802226c:	45e1      	cmp	r9, ip 802226e:	d103      	bne.n	8022278 <two_way_long_needle+0x128> 8022270:	4608      	mov	r0, r1 8022272:	1e41      	subs	r1, r0, #1 8022274:	455a      	cmp	r2, fp 8022276:	d1f5      	bne.n	8022264 <two_way_long_needle+0x114> 8022278:	3401      	adds	r4, #1 802227a:	4284      	cmp	r4, r0 802227c:	d875      	bhi.n	802236a <two_way_long_needle+0x21a> 802227e:	9c07      	ldr	r4, [sp, #28] 8022280:	9b01      	ldr	r3, [sp, #4] 8022282:	44a2      	add	sl, r4 8022284:	1b1c      	subs	r4, r3, r4 8022286:	e7a9      	b.n	80221dc <two_way_long_needle+0x8c> 8022288:	f8dd c010 	ldr.w	ip, [sp, #16] 802228c:	2400      	movs	r4, #0 802228e:	44e2      	add	sl, ip 8022290:	4492      	add	sl, r2 8022292:	e7a3      	b.n	80221dc <two_way_long_needle+0x8c> 8022294:	2000      	movs	r0, #0 8022296:	b009      	add	sp, #36	; 0x24 8022298:	f50d 6d80 	add.w	sp, sp, #1024	; 0x400 802229c:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 80222a0:	f8dd c00c 	ldr.w	ip, [sp, #12] 80222a4:	f04f 0a00 	mov.w	sl, #0 80222a8:	f8dd b00c 	ldr.w	fp, [sp, #12] 80222ac:	f10d 0920 	add.w	r9, sp, #32 80222b0:	ebcc 0305 	rsb	r3, ip, r5 80222b4:	1e6f      	subs	r7, r5, #1 80222b6:	4563      	cmp	r3, ip 80222b8:	bf38      	it	cc 80222ba:	4663      	movcc	r3, ip 80222bc:	4622      	mov	r2, r4 80222be:	3301      	adds	r3, #1 80222c0:	9307      	str	r3, [sp, #28] 80222c2:	f10c 33ff 	add.w	r3, ip, #4294967295 80222c6:	9301      	str	r3, [sp, #4] 80222c8:	9b03      	ldr	r3, [sp, #12] 80222ca:	44b4      	add	ip, r6 80222cc:	f8cd c008 	str.w	ip, [sp, #8] 80222d0:	f1c3 0301 	rsb	r3, r3, #1 80222d4:	9304      	str	r3, [sp, #16] 80222d6:	eb0a 0405 	add.w	r4, sl, r5 80222da:	eb08 0002 	add.w	r0, r8, r2 80222de:	2100      	movs	r1, #0 80222e0:	1aa2      	subs	r2, r4, r2 80222e2:	f002 fa15 	bl	8024710 <memchr> 80222e6:	2800      	cmp	r0, #0 80222e8:	d1d4      	bne.n	8022294 <two_way_long_needle+0x144> 80222ea:	2c00      	cmp	r4, #0 80222ec:	d0d2      	beq.n	8022294 <two_way_long_needle+0x144> 80222ee:	eb08 0304 	add.w	r3, r8, r4 80222f2:	f813 3c01 	ldrb.w	r3, [r3, #-1] 80222f6:	f859 3023 	ldr.w	r3, [r9, r3, lsl #2] 80222fa:	bb63      	cbnz	r3, 8022356 <two_way_long_needle+0x206> 80222fc:	45bb      	cmp	fp, r7 80222fe:	eb08 000a 	add.w	r0, r8, sl 8022302:	d215      	bcs.n	8022330 <two_way_long_needle+0x1e0> 8022304:	f8dd c008 	ldr.w	ip, [sp, #8] 8022308:	f810 300b 	ldrb.w	r3, [r0, fp] 802230c:	f89c 2000 	ldrb.w	r2, [ip] 8022310:	429a      	cmp	r2, r3 8022312:	bf18      	it	ne 8022314:	465b      	movne	r3, fp 8022316:	d121      	bne.n	802235c <two_way_long_needle+0x20c> 8022318:	9a02      	ldr	r2, [sp, #8] 802231a:	465b      	mov	r3, fp 802231c:	e005      	b.n	802232a <two_way_long_needle+0x1da> 802231e:	f812 1f01 	ldrb.w	r1, [r2, #1]! 8022322:	f810 c003 	ldrb.w	ip, [r0, r3] 8022326:	458c      	cmp	ip, r1 8022328:	d118      	bne.n	802235c <two_way_long_needle+0x20c> 802232a:	3301      	adds	r3, #1 802232c:	42bb      	cmp	r3, r7 802232e:	d3f6      	bcc.n	802231e <two_way_long_needle+0x1ce> 8022330:	9b01      	ldr	r3, [sp, #4] 8022332:	1c5a      	adds	r2, r3, #1 8022334:	d0af      	beq.n	8022296 <two_way_long_needle+0x146> 8022336:	f8dd c004 	ldr.w	ip, [sp, #4] 802233a:	f816 100c 	ldrb.w	r1, [r6, ip] 802233e:	f810 200c 	ldrb.w	r2, [r0, ip] 8022342:	4291      	cmp	r1, r2 8022344:	d106      	bne.n	8022354 <two_way_long_needle+0x204> 8022346:	f113 33ff 	adds.w	r3, r3, #4294967295 802234a:	d3a4      	bcc.n	8022296 <two_way_long_needle+0x146> 802234c:	5cf1      	ldrb	r1, [r6, r3] 802234e:	5cc2      	ldrb	r2, [r0, r3] 8022350:	4291      	cmp	r1, r2 8022352:	d0f8      	beq.n	8022346 <two_way_long_needle+0x1f6> 8022354:	9b07      	ldr	r3, [sp, #28] 8022356:	449a      	add	sl, r3 8022358:	4622      	mov	r2, r4 802235a:	e7bc      	b.n	80222d6 <two_way_long_needle+0x186> 802235c:	f8dd c010 	ldr.w	ip, [sp, #16] 8022360:	44e2      	add	sl, ip 8022362:	449a      	add	sl, r3 8022364:	e7f8      	b.n	8022358 <two_way_long_needle+0x208> 8022366:	9803      	ldr	r0, [sp, #12] 8022368:	e786      	b.n	8022278 <two_way_long_needle+0x128> 802236a:	eb08 000a 	add.w	r0, r8, sl 802236e:	e792      	b.n	8022296 <two_way_long_needle+0x146>08022370 <strstr>: 8022370:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8022374:	4680      	mov	r8, r0 8022376:	7803      	ldrb	r3, [r0, #0] 8022378:	b087      	sub	sp, #28 802237a:	460e      	mov	r6, r1 802237c:	2b00      	cmp	r3, #0 802237e:	f000 80f7 	beq.w	8022570 <strstr+0x200> 8022382:	780a      	ldrb	r2, [r1, #0] 8022384:	b19a      	cbz	r2, 80223ae <strstr+0x3e> 8022386:	4684      	mov	ip, r0 8022388:	3101      	adds	r1, #1 802238a:	2701      	movs	r7, #1 802238c:	e002      	b.n	8022394 <strstr+0x24> 802238e:	f811 2b01 	ldrb.w	r2, [r1], #1 8022392:	b15a      	cbz	r2, 80223ac <strstr+0x3c> 8022394:	4293      	cmp	r3, r2 8022396:	bf14      	ite	ne 8022398:	2700      	movne	r7, #0 802239a:	f007 0701 	andeq.w	r7, r7, #1 802239e:	f81c 3f01 	ldrb.w	r3, [ip, #1]! 80223a2:	460d      	mov	r5, r1 80223a4:	2b00      	cmp	r3, #0 80223a6:	d1f2      	bne.n	802238e <strstr+0x1e> 80223a8:	782b      	ldrb	r3, [r5, #0] 80223aa:	bb03      	cbnz	r3, 80223ee <strstr+0x7e> 80223ac:	b11f      	cbz	r7, 80223b6 <strstr+0x46> 80223ae:	4640      	mov	r0, r8 80223b0:	b007      	add	sp, #28 80223b2:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 80223b6:	f108 0001 	add.w	r0, r8, #1 80223ba:	7831      	ldrb	r1, [r6, #0] 80223bc:	f002 fe92 	bl	80250e4 <strchr> 80223c0:	1bad      	subs	r5, r5, r6 80223c2:	2d01      	cmp	r5, #1 80223c4:	bf18      	it	ne 80223c6:	2800      	cmpne	r0, #0 80223c8:	4607      	mov	r7, r0 80223ca:	bf08      	it	eq 80223cc:	4680      	moveq	r8, r0 80223ce:	d0ee      	beq.n	80223ae <strstr+0x3e> 80223d0:	44a8      	add	r8, r5 80223d2:	4540      	cmp	r0, r8 80223d4:	bf94      	ite	ls 80223d6:	ebc0 0408 	rsbls	r4, r0, r8 80223da:	2401      	movhi	r4, #1 80223dc:	2d1f      	cmp	r5, #31 80223de:	d909      	bls.n	80223f4 <strstr+0x84> 80223e0:	4621      	mov	r1, r4 80223e2:	4632      	mov	r2, r6 80223e4:	462b      	mov	r3, r5 80223e6:	f7ff feb3 	bl	8022150 <two_way_long_needle> 80223ea:	4680      	mov	r8, r0 80223ec:	e7df      	b.n	80223ae <strstr+0x3e> 80223ee:	f04f 0800 	mov.w	r8, #0 80223f2:	e7dc      	b.n	80223ae <strstr+0x3e> 80223f4:	4629      	mov	r1, r5 80223f6:	aa05      	add	r2, sp, #20 80223f8:	4630      	mov	r0, r6 80223fa:	f7ff fe4b 	bl	8022094 <critical_factorization> 80223fe:	9905      	ldr	r1, [sp, #20] 8022400:	1871      	adds	r1, r6, r1 8022402:	9001      	str	r0, [sp, #4] 8022404:	4630      	mov	r0, r6 8022406:	9a01      	ldr	r2, [sp, #4] 8022408:	f7ff fa6e 	bl	80218e8 <memcmp> 802240c:	2800      	cmp	r0, #0 802240e:	d152      	bne.n	80224b6 <strstr+0x146> 8022410:	9b01      	ldr	r3, [sp, #4] 8022412:	4683      	mov	fp, r0 8022414:	4680      	mov	r8, r0 8022416:	3b01      	subs	r3, #1 8022418:	9300      	str	r3, [sp, #0] 802241a:	18f3      	adds	r3, r6, r3 802241c:	9303      	str	r3, [sp, #12] 802241e:	9b01      	ldr	r3, [sp, #4] 8022420:	f1c3 0301 	rsb	r3, r3, #1 8022424:	9302      	str	r3, [sp, #8] 8022426:	4622      	mov	r2, r4 8022428:	eb08 0405 	add.w	r4, r8, r5 802242c:	18b8      	adds	r0, r7, r2 802242e:	2100      	movs	r1, #0 8022430:	1aa2      	subs	r2, r4, r2 8022432:	f002 f96d 	bl	8024710 <memchr> 8022436:	2800      	cmp	r0, #0 8022438:	d1d9      	bne.n	80223ee <strstr+0x7e> 802243a:	2c00      	cmp	r4, #0 802243c:	d0d7      	beq.n	80223ee <strstr+0x7e> 802243e:	9b01      	ldr	r3, [sp, #4] 8022440:	459b      	cmp	fp, r3 8022442:	bf28      	it	cs 8022444:	465b      	movcs	r3, fp 8022446:	429d      	cmp	r5, r3 8022448:	d913      	bls.n	8022472 <strstr+0x102> 802244a:	18f9      	adds	r1, r7, r3 802244c:	5cf0      	ldrb	r0, [r6, r3] 802244e:	18f2      	adds	r2, r6, r3 8022450:	f811 1008 	ldrb.w	r1, [r1, r8] 8022454:	4288      	cmp	r0, r1 8022456:	f040 8085 	bne.w	8022564 <strstr+0x1f4> 802245a:	eb07 0c08 	add.w	ip, r7, r8 802245e:	e005      	b.n	802246c <strstr+0xfc> 8022460:	f812 1f01 	ldrb.w	r1, [r2, #1]! 8022464:	f81c 0003 	ldrb.w	r0, [ip, r3] 8022468:	4288      	cmp	r0, r1 802246a:	d17b      	bne.n	8022564 <strstr+0x1f4> 802246c:	3301      	adds	r3, #1 802246e:	429d      	cmp	r5, r3 8022470:	d8f6      	bhi.n	8022460 <strstr+0xf0> 8022472:	e89d 000a 	ldmia.w	sp, {r1, r3} 8022476:	455b      	cmp	r3, fp 8022478:	d97d      	bls.n	8022576 <strstr+0x206> 802247a:	eb07 0908 	add.w	r9, r7, r8 802247e:	5c72      	ldrb	r2, [r6, r1] 8022480:	f819 3001 	ldrb.w	r3, [r9, r1] 8022484:	429a      	cmp	r2, r3 8022486:	d176      	bne.n	8022576 <strstr+0x206> 8022488:	9b03      	ldr	r3, [sp, #12] 802248a:	eb06 0a0b 	add.w	sl, r6, fp 802248e:	e006      	b.n	802249e <strstr+0x12e> 8022490:	f819 0002 	ldrb.w	r0, [r9, r2] 8022494:	f813 cd01 	ldrb.w	ip, [r3, #-1]! 8022498:	4584      	cmp	ip, r0 802249a:	d103      	bne.n	80224a4 <strstr+0x134> 802249c:	4611      	mov	r1, r2 802249e:	1e4a      	subs	r2, r1, #1 80224a0:	4553      	cmp	r3, sl 80224a2:	d1f5      	bne.n	8022490 <strstr+0x120> 80224a4:	f10b 0b01 	add.w	fp, fp, #1 80224a8:	458b      	cmp	fp, r1 80224aa:	d866      	bhi.n	802257a <strstr+0x20a> 80224ac:	9b05      	ldr	r3, [sp, #20] 80224ae:	4498      	add	r8, r3 80224b0:	ebc3 0b05 	rsb	fp, r3, r5 80224b4:	e7b7      	b.n	8022426 <strstr+0xb6> 80224b6:	9801      	ldr	r0, [sp, #4] 80224b8:	f04f 0b00 	mov.w	fp, #0 80224bc:	4622      	mov	r2, r4 80224be:	1a2b      	subs	r3, r5, r0 80224c0:	eb06 0900 	add.w	r9, r6, r0 80224c4:	f100 38ff 	add.w	r8, r0, #4294967295 80224c8:	4682      	mov	sl, r0 80224ca:	4283      	cmp	r3, r0 80224cc:	bf38      	it	cc 80224ce:	4603      	movcc	r3, r0 80224d0:	1839      	adds	r1, r7, r0 80224d2:	3301      	adds	r3, #1 80224d4:	9100      	str	r1, [sp, #0] 80224d6:	9305      	str	r3, [sp, #20] 80224d8:	f1c0 0301 	rsb	r3, r0, #1 80224dc:	9302      	str	r3, [sp, #8] 80224de:	eb0b 0405 	add.w	r4, fp, r5 80224e2:	18b8      	adds	r0, r7, r2 80224e4:	2100      	movs	r1, #0 80224e6:	1aa2      	subs	r2, r4, r2 80224e8:	f002 f912 	bl	8024710 <memchr> 80224ec:	2800      	cmp	r0, #0 80224ee:	f47f af7e 	bne.w	80223ee <strstr+0x7e> 80224f2:	2c00      	cmp	r4, #0 80224f4:	f43f af7b 	beq.w	80223ee <strstr+0x7e> 80224f8:	4555      	cmp	r5, sl 80224fa:	bf98      	it	ls 80224fc:	eb07 000b 	addls.w	r0, r7, fp 8022500:	d914      	bls.n	802252c <strstr+0x1bc> 8022502:	9800      	ldr	r0, [sp, #0] 8022504:	f899 2000 	ldrb.w	r2, [r9] 8022508:	f810 300b 	ldrb.w	r3, [r0, fp] 802250c:	429a      	cmp	r2, r3 802250e:	d124      	bne.n	802255a <strstr+0x1ea> 8022510:	464a      	mov	r2, r9 8022512:	4653      	mov	r3, sl 8022514:	eb07 000b 	add.w	r0, r7, fp 8022518:	e005      	b.n	8022526 <strstr+0x1b6> 802251a:	f812 1f01 	ldrb.w	r1, [r2, #1]! 802251e:	f810 c003 	ldrb.w	ip, [r0, r3] 8022522:	458c      	cmp	ip, r1 8022524:	d11a      	bne.n	802255c <strstr+0x1ec> 8022526:	3301      	adds	r3, #1 8022528:	429d      	cmp	r5, r3 802252a:	d8f6      	bhi.n	802251a <strstr+0x1aa> 802252c:	f1b8 3fff 	cmp.w	r8, #4294967295 8022530:	4643      	mov	r3, r8 8022532:	f43f af5a 	beq.w	80223ea <strstr+0x7a> 8022536:	f816 1008 	ldrb.w	r1, [r6, r8] 802253a:	f810 2008 	ldrb.w	r2, [r0, r8] 802253e:	4291      	cmp	r1, r2 8022540:	d107      	bne.n	8022552 <strstr+0x1e2> 8022542:	f113 33ff 	adds.w	r3, r3, #4294967295 8022546:	f4ff af50 	bcc.w	80223ea <strstr+0x7a> 802254a:	5cf1      	ldrb	r1, [r6, r3] 802254c:	5cc2      	ldrb	r2, [r0, r3] 802254e:	4291      	cmp	r1, r2 8022550:	d0f7      	beq.n	8022542 <strstr+0x1d2> 8022552:	9b05      	ldr	r3, [sp, #20] 8022554:	449b      	add	fp, r3 8022556:	4622      	mov	r2, r4 8022558:	e7c1      	b.n	80224de <strstr+0x16e> 802255a:	4653      	mov	r3, sl 802255c:	9a02      	ldr	r2, [sp, #8] 802255e:	4493      	add	fp, r2 8022560:	449b      	add	fp, r3 8022562:	e7f8      	b.n	8022556 <strstr+0x1e6> 8022564:	9902      	ldr	r1, [sp, #8] 8022566:	f04f 0b00 	mov.w	fp, #0 802256a:	4488      	add	r8, r1 802256c:	4498      	add	r8, r3 802256e:	e75a      	b.n	8022426 <strstr+0xb6> 8022570:	460d      	mov	r5, r1 8022572:	2701      	movs	r7, #1 8022574:	e718      	b.n	80223a8 <strstr+0x38> 8022576:	9901      	ldr	r1, [sp, #4] 8022578:	e794      	b.n	80224a4 <strstr+0x134> 802257a:	44b8      	add	r8, r7 802257c:	e717      	b.n	80223ae <strstr+0x3e> 802257e:	bf00      	nop08022580 <_strtod_r>: 8022580:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8022584:	b09d      	sub	sp, #116	; 0x74 8022586:	468c      	mov	ip, r1 8022588:	4683      	mov	fp, r0 802258a:	9210      	str	r2, [sp, #64]	; 0x40 802258c:	4662      	mov	r2, ip 802258e:	2000      	movs	r0, #0 8022590:	2100      	movs	r1, #0 8022592:	f8cd c05c 	str.w	ip, [sp, #92]	; 0x5c 8022596:	e9cd 0106 	strd	r0, r1, [sp, #24] 802259a:	4611      	mov	r1, r2 802259c:	f812 3b01 	ldrb.w	r3, [r2], #1 80225a0:	2b2d      	cmp	r3, #45	; 0x2d 80225a2:	f200 8147 	bhi.w	8022834 <_strtod_r+0x2b4> 80225a6:	e8df f013 	tbh	[pc, r3, lsl #1] 80225aa:	0131      	.short	0x0131 80225ac:	01450145 	.word	0x01450145 80225b0:	01450145 	.word	0x01450145 80225b4:	01450145 	.word	0x01450145 80225b8:	01450145 	.word	0x01450145 80225bc:	01640164 	.word	0x01640164 80225c0:	01640164 	.word	0x01640164 80225c4:	01450164 	.word	0x01450164 80225c8:	01450145 	.word	0x01450145 80225cc:	01450145 	.word	0x01450145 80225d0:	01450145 	.word	0x01450145 80225d4:	01450145 	.word	0x01450145 80225d8:	01450145 	.word	0x01450145 80225dc:	01450145 	.word	0x01450145 80225e0:	01450145 	.word	0x01450145 80225e4:	01450145 	.word	0x01450145 80225e8:	01640145 	.word	0x01640145 80225ec:	01450145 	.word	0x01450145 80225f0:	01450145 	.word	0x01450145 80225f4:	01450145 	.word	0x01450145 80225f8:	01450145 	.word	0x01450145 80225fc:	01450145 	.word	0x01450145 8022600:	0145012e 	.word	0x0145012e 8022604:	002e      	.short	0x002e 8022606:	2501      	movs	r5, #1 8022608:	9512      	str	r5, [sp, #72]	; 0x48 802260a:	1c4e      	adds	r6, r1, #1 802260c:	9617      	str	r6, [sp, #92]	; 0x5c 802260e:	784b      	ldrb	r3, [r1, #1] 8022610:	4699      	mov	r9, r3 8022612:	469a      	mov	sl, r3 8022614:	2b00      	cmp	r3, #0 8022616:	f000 80fc 	beq.w	8022812 <_strtod_r+0x292> 802261a:	2b30      	cmp	r3, #48	; 0x30 802261c:	bf18      	it	ne 802261e:	f04f 0900 	movne.w	r9, #0 8022622:	f000 8110 	beq.w	8022846 <_strtod_r+0x2c6> 8022626:	2b2f      	cmp	r3, #47	; 0x2f 8022628:	461d      	mov	r5, r3 802262a:	f04f 0a00 	mov.w	sl, #0 802262e:	f340 84f9 	ble.w	8023024 <_strtod_r+0xaa4> 8022632:	2b39      	cmp	r3, #57	; 0x39 8022634:	f300 84f6 	bgt.w	8023024 <_strtod_r+0xaa4> 8022638:	1c72      	adds	r2, r6, #1 802263a:	4657      	mov	r7, sl 802263c:	4654      	mov	r4, sl 802263e:	e001      	b.n	8022644 <_strtod_r+0xc4> 8022640:	2b39      	cmp	r3, #57	; 0x39 8022642:	dc18      	bgt.n	8022676 <_strtod_r+0xf6> 8022644:	eb07 0187 	add.w	r1, r7, r7, lsl #2 8022648:	2c08      	cmp	r4, #8 802264a:	eb03 0141 	add.w	r1, r3, r1, lsl #1 802264e:	bfd8      	it	le 8022650:	f1a1 0730 	suble.w	r7, r1, #48	; 0x30 8022654:	dd07      	ble.n	8022666 <_strtod_r+0xe6> 8022656:	eb0a 018a 	add.w	r1, sl, sl, lsl #2 802265a:	2c0f      	cmp	r4, #15 802265c:	eb03 0341 	add.w	r3, r3, r1, lsl #1 8022660:	bfd8      	it	le 8022662:	f1a3 0a30 	suble.w	sl, r3, #48	; 0x30 8022666:	9217      	str	r2, [sp, #92]	; 0x5c 8022668:	4690      	mov	r8, r2 802266a:	f812 3b01 	ldrb.w	r3, [r2], #1 802266e:	3401      	adds	r4, #1 8022670:	2b2f      	cmp	r3, #47	; 0x2f 8022672:	461d      	mov	r5, r3 8022674:	dce4      	bgt.n	8022640 <_strtod_r+0xc0> 8022676:	4658      	mov	r0, fp 8022678:	f8cd c010 	str.w	ip, [sp, #16] 802267c:	f001 fd5a 	bl	8024134 <_localeconv_r> 8022680:	6801      	ldr	r1, [r0, #0] 8022682:	4658      	mov	r0, fp 8022684:	9105      	str	r1, [sp, #20] 8022686:	f001 fd55 	bl	8024134 <_localeconv_r> 802268a:	6800      	ldr	r0, [r0, #0] 802268c:	f7ff fbf0 	bl	8021e70 <strlen> 8022690:	9905      	ldr	r1, [sp, #20] 8022692:	4602      	mov	r2, r0 8022694:	4640      	mov	r0, r8 8022696:	f7ff fc4d 	bl	8021f34 <strncmp> 802269a:	f8dd c010 	ldr.w	ip, [sp, #16] 802269e:	4680      	mov	r8, r0 80226a0:	2800      	cmp	r0, #0 80226a2:	f000 8142 	beq.w	802292a <_strtod_r+0x3aa> 80226a6:	2000      	movs	r0, #0 80226a8:	46a0      	mov	r8, r4 80226aa:	4601      	mov	r1, r0 80226ac:	9009      	str	r0, [sp, #36]	; 0x24 80226ae:	f025 0320 	bic.w	r3, r5, #32 80226b2:	2b45      	cmp	r3, #69	; 0x45 80226b4:	f040 80df 	bne.w	8022876 <_strtod_r+0x2f6> 80226b8:	ea48 0300 	orr.w	r3, r8, r0 80226bc:	ea53 0309 	orrs.w	r3, r3, r9 80226c0:	f000 811d 	beq.w	80228fe <_strtod_r+0x37e> 80226c4:	f8dd c05c 	ldr.w	ip, [sp, #92]	; 0x5c 80226c8:	f10c 0301 	add.w	r3, ip, #1 80226cc:	9317      	str	r3, [sp, #92]	; 0x5c 80226ce:	f89c 5001 	ldrb.w	r5, [ip, #1] 80226d2:	2d2b      	cmp	r5, #43	; 0x2b 80226d4:	f000 84ab 	beq.w	802302e <_strtod_r+0xaae> 80226d8:	2d2d      	cmp	r5, #45	; 0x2d 80226da:	f000 833d 	beq.w	8022d58 <_strtod_r+0x7d8> 80226de:	2200      	movs	r2, #0 80226e0:	920a      	str	r2, [sp, #40]	; 0x28 80226e2:	f1a5 0330 	sub.w	r3, r5, #48	; 0x30 80226e6:	2b09      	cmp	r3, #9 80226e8:	f200 842c 	bhi.w	8022f44 <_strtod_r+0x9c4> 80226ec:	2d30      	cmp	r5, #48	; 0x30 80226ee:	d106      	bne.n	80226fe <_strtod_r+0x17e> 80226f0:	9b17      	ldr	r3, [sp, #92]	; 0x5c 80226f2:	3301      	adds	r3, #1 80226f4:	9317      	str	r3, [sp, #92]	; 0x5c 80226f6:	f813 5b01 	ldrb.w	r5, [r3], #1 80226fa:	2d30      	cmp	r5, #48	; 0x30 80226fc:	d0fa      	beq.n	80226f4 <_strtod_r+0x174> 80226fe:	f1a5 0331 	sub.w	r3, r5, #49	; 0x31 8022702:	2b08      	cmp	r3, #8 8022704:	f200 80b7 	bhi.w	8022876 <_strtod_r+0x2f6> 8022708:	9a17      	ldr	r2, [sp, #92]	; 0x5c 802270a:	3d30      	subs	r5, #48	; 0x30 802270c:	950d      	str	r5, [sp, #52]	; 0x34 802270e:	1c53      	adds	r3, r2, #1 8022710:	9317      	str	r3, [sp, #92]	; 0x5c 8022712:	7855      	ldrb	r5, [r2, #1] 8022714:	920b      	str	r2, [sp, #44]	; 0x2c 8022716:	2d2f      	cmp	r5, #47	; 0x2f 8022718:	dd16      	ble.n	8022748 <_strtod_r+0x1c8> 802271a:	2d39      	cmp	r5, #57	; 0x39 802271c:	dc14      	bgt.n	8022748 <_strtod_r+0x1c8> 802271e:	1c93      	adds	r3, r2, #2 8022720:	910c      	str	r1, [sp, #48]	; 0x30 8022722:	9a0d      	ldr	r2, [sp, #52]	; 0x34 8022724:	e001      	b.n	802272a <_strtod_r+0x1aa> 8022726:	2d39      	cmp	r5, #57	; 0x39 8022728:	dc0b      	bgt.n	8022742 <_strtod_r+0x1c2> 802272a:	9317      	str	r3, [sp, #92]	; 0x5c 802272c:	4619      	mov	r1, r3 802272e:	eb02 0282 	add.w	r2, r2, r2, lsl #2 8022732:	3301      	adds	r3, #1 8022734:	eb05 0242 	add.w	r2, r5, r2, lsl #1 8022738:	f813 5c01 	ldrb.w	r5, [r3, #-1] 802273c:	3a30      	subs	r2, #48	; 0x30 802273e:	2d2f      	cmp	r5, #47	; 0x2f 8022740:	dcf1      	bgt.n	8022726 <_strtod_r+0x1a6> 8022742:	460b      	mov	r3, r1 8022744:	990c      	ldr	r1, [sp, #48]	; 0x30 8022746:	920d      	str	r2, [sp, #52]	; 0x34 8022748:	9a0b      	ldr	r2, [sp, #44]	; 0x2c 802274a:	1a9b      	subs	r3, r3, r2 802274c:	2b08      	cmp	r3, #8 802274e:	bfc8      	it	gt 8022750:	f644 621f 	movwgt	r2, #19999	; 0x4e1f 8022754:	dc05      	bgt.n	8022762 <_strtod_r+0x1e2> 8022756:	9a0d      	ldr	r2, [sp, #52]	; 0x34 8022758:	f644 631f 	movw	r3, #19999	; 0x4e1f 802275c:	429a      	cmp	r2, r3 802275e:	bfa8      	it	ge 8022760:	461a      	movge	r2, r3 8022762:	9b0a      	ldr	r3, [sp, #40]	; 0x28 8022764:	b103      	cbz	r3, 8022768 <_strtod_r+0x1e8> 8022766:	4252      	negs	r2, r2 8022768:	f1b8 0f00 	cmp.w	r8, #0 802276c:	f000 8088 	beq.w	8022880 <_strtod_r+0x300> 8022770:	9d09      	ldr	r5, [sp, #36]	; 0x24 8022772:	4638      	mov	r0, r7 8022774:	2c00      	cmp	r4, #0 8022776:	bf08      	it	eq 8022778:	4644      	moveq	r4, r8 802277a:	940a      	str	r4, [sp, #40]	; 0x28 802277c:	1b52      	subs	r2, r2, r5 802277e:	9209      	str	r2, [sp, #36]	; 0x24 8022780:	f7fd fea8 	bl	80204d4 <__aeabi_ui2d> 8022784:	f1b8 0f10 	cmp.w	r8, #16 8022788:	bfb4      	ite	lt 802278a:	46c1      	movlt	r9, r8 802278c:	f04f 0910 	movge.w	r9, #16 8022790:	f1b9 0f09 	cmp.w	r9, #9 8022794:	4602      	mov	r2, r0 8022796:	460b      	mov	r3, r1 8022798:	e9cd 2306 	strd	r2, r3, [sp, #24] 802279c:	dd16      	ble.n	80227cc <_strtod_r+0x24c> 802279e:	f646 23d0 	movw	r3, #27344	; 0x6ad0 80227a2:	f6c0 0303 	movt	r3, #2051	; 0x803 80227a6:	eb03 03c9 	add.w	r3, r3, r9, lsl #3 80227aa:	e953 2312 	ldrd	r2, r3, [r3, #-72]	; 0x48 80227ae:	f7fd ff07 	bl	80205c0 <__aeabi_dmul> 80227b2:	4604      	mov	r4, r0 80227b4:	4650      	mov	r0, sl 80227b6:	460d      	mov	r5, r1 80227b8:	f7fd fe8c 	bl	80204d4 <__aeabi_ui2d> 80227bc:	4602      	mov	r2, r0 80227be:	460b      	mov	r3, r1 80227c0:	4620      	mov	r0, r4 80227c2:	4629      	mov	r1, r5 80227c4:	f7fd fd4a 	bl	802025c <__adddf3> 80227c8:	e9cd 0106 	strd	r0, r1, [sp, #24] 80227cc:	f1b8 0f0f 	cmp.w	r8, #15 80227d0:	f300 80f2 	bgt.w	80229b8 <_strtod_r+0x438> 80227d4:	9c09      	ldr	r4, [sp, #36]	; 0x24 80227d6:	2c00      	cmp	r4, #0 80227d8:	f000 80a2 	beq.w	8022920 <_strtod_r+0x3a0> 80227dc:	f340 8591 	ble.w	8023302 <_strtod_r+0xd82> 80227e0:	9d09      	ldr	r5, [sp, #36]	; 0x24 80227e2:	2d16      	cmp	r5, #22 80227e4:	f300 8545 	bgt.w	8023272 <_strtod_r+0xcf2> 80227e8:	f646 21d0 	movw	r1, #27344	; 0x6ad0 80227ec:	e9dd 2306 	ldrd	r2, r3, [sp, #24] 80227f0:	f6c0 0103 	movt	r1, #2051	; 0x803 80227f4:	eb01 01c5 	add.w	r1, r1, r5, lsl #3 80227f8:	e9d1 0100 	ldrd	r0, r1, [r1] 80227fc:	f7fd fee0 	bl	80205c0 <__aeabi_dmul> 8022800:	4681      	mov	r9, r0 8022802:	468a      	mov	sl, r1 8022804:	e009      	b.n	802281a <_strtod_r+0x29a> 8022806:	2400      	movs	r4, #0 8022808:	9412      	str	r4, [sp, #72]	; 0x48 802280a:	e6fe      	b.n	802260a <_strtod_r+0x8a> 802280c:	f04f 0900 	mov.w	r9, #0 8022810:	46ca      	mov	sl, r9 8022812:	2400      	movs	r4, #0 8022814:	f8cd c05c 	str.w	ip, [sp, #92]	; 0x5c 8022818:	9412      	str	r4, [sp, #72]	; 0x48 802281a:	9c10      	ldr	r4, [sp, #64]	; 0x40 802281c:	b10c      	cbz	r4, 8022822 <_strtod_r+0x2a2> 802281e:	9b17      	ldr	r3, [sp, #92]	; 0x5c 8022820:	6023      	str	r3, [r4, #0] 8022822:	9d12      	ldr	r5, [sp, #72]	; 0x48 8022824:	b10d      	cbz	r5, 802282a <_strtod_r+0x2aa> 8022826:	f10a 4a00 	add.w	sl, sl, #2147483648	; 0x80000000 802282a:	4648      	mov	r0, r9 802282c:	4651      	mov	r1, sl 802282e:	b01d      	add	sp, #116	; 0x74 8022830:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 8022834:	2500      	movs	r5, #0 8022836:	2b30      	cmp	r3, #48	; 0x30 8022838:	460e      	mov	r6, r1 802283a:	9512      	str	r5, [sp, #72]	; 0x48 802283c:	bf18      	it	ne 802283e:	f04f 0900 	movne.w	r9, #0 8022842:	f47f aef0 	bne.w	8022626 <_strtod_r+0xa6> 8022846:	7873      	ldrb	r3, [r6, #1] 8022848:	2b58      	cmp	r3, #88	; 0x58 802284a:	f000 8383 	beq.w	8022f54 <_strtod_r+0x9d4> 802284e:	1c72      	adds	r2, r6, #1 8022850:	2b78      	cmp	r3, #120	; 0x78 8022852:	f000 837f 	beq.w	8022f54 <_strtod_r+0x9d4> 8022856:	4616      	mov	r6, r2 8022858:	9217      	str	r2, [sp, #92]	; 0x5c 802285a:	f812 3b01 	ldrb.w	r3, [r2], #1 802285e:	2b30      	cmp	r3, #48	; 0x30 8022860:	d0f9      	beq.n	8022856 <_strtod_r+0x2d6> 8022862:	f04f 0901 	mov.w	r9, #1 8022866:	2b00      	cmp	r3, #0 8022868:	f47f aedd 	bne.w	8022626 <_strtod_r+0xa6> 802286c:	4699      	mov	r9, r3 802286e:	469a      	mov	sl, r3 8022870:	e7d3      	b.n	802281a <_strtod_r+0x29a> 8022872:	9217      	str	r2, [sp, #92]	; 0x5c 8022874:	e691      	b.n	802259a <_strtod_r+0x1a> 8022876:	2200      	movs	r2, #0 8022878:	f1b8 0f00 	cmp.w	r8, #0 802287c:	f47f af78 	bne.w	8022770 <_strtod_r+0x1f0> 8022880:	ea50 0009 	orrs.w	r0, r0, r9 8022884:	d14c      	bne.n	8022920 <_strtod_r+0x3a0> 8022886:	2900      	cmp	r1, #0 8022888:	d139      	bne.n	80228fe <_strtod_r+0x37e> 802288a:	3d49      	subs	r5, #73	; 0x49 802288c:	2d25      	cmp	r5, #37	; 0x25 802288e:	d836      	bhi.n	80228fe <_strtod_r+0x37e> 8022890:	e8df f015 	tbh	[pc, r5, lsl #1] 8022894:	0035026a 	.word	0x0035026a 8022898:	00350035 	.word	0x00350035 802289c:	00260035 	.word	0x00260035 80228a0:	00350035 	.word	0x00350035 80228a4:	00350035 	.word	0x00350035 80228a8:	00350035 	.word	0x00350035 80228ac:	00350035 	.word	0x00350035 80228b0:	00350035 	.word	0x00350035 80228b4:	00350035 	.word	0x00350035 80228b8:	00350035 	.word	0x00350035 80228bc:	00350035 	.word	0x00350035 80228c0:	00350035 	.word	0x00350035 80228c4:	00350035 	.word	0x00350035 80228c8:	00350035 	.word	0x00350035 80228cc:	00350035 	.word	0x00350035 80228d0:	00350035 	.word	0x00350035 80228d4:	0035026a 	.word	0x0035026a 80228d8:	00350035 	.word	0x00350035 80228dc:	00260035 	.word	0x00260035 80228e0:	4853      	ldr	r0, [pc, #332]	; (8022a30 <_strtod_r+0x4b0>) 80228e2:	9a17      	ldr	r2, [sp, #92]	; 0x5c 80228e4:	f810 1f01 	ldrb.w	r1, [r0, #1]! 80228e8:	4613      	mov	r3, r2 80228ea:	b169      	cbz	r1, 8022908 <_strtod_r+0x388> 80228ec:	785b      	ldrb	r3, [r3, #1] 80228ee:	3201      	adds	r2, #1 80228f0:	2b40      	cmp	r3, #64	; 0x40 80228f2:	dd02      	ble.n	80228fa <_strtod_r+0x37a> 80228f4:	2b5a      	cmp	r3, #90	; 0x5a 80228f6:	bfd8      	it	le 80228f8:	3320      	addle	r3, #32 80228fa:	428b      	cmp	r3, r1 80228fc:	d0f2      	beq.n	80228e4 <_strtod_r+0x364> 80228fe:	f8dd 9018 	ldr.w	r9, [sp, #24] 8022902:	f8dd a01c 	ldr.w	sl, [sp, #28] 8022906:	e784      	b.n	8022812 <_strtod_r+0x292> 8022908:	1c53      	adds	r3, r2, #1 802290a:	9317      	str	r3, [sp, #92]	; 0x5c 802290c:	7853      	ldrb	r3, [r2, #1] 802290e:	2b28      	cmp	r3, #40	; 0x28 8022910:	f000 8575 	beq.w	80233fe <_strtod_r+0xe7e> 8022914:	2300      	movs	r3, #0 8022916:	9306      	str	r3, [sp, #24] 8022918:	461c      	mov	r4, r3 802291a:	f6cf 74f8 	movt	r4, #65528	; 0xfff8 802291e:	9407      	str	r4, [sp, #28] 8022920:	f8dd 9018 	ldr.w	r9, [sp, #24] 8022924:	f8dd a01c 	ldr.w	sl, [sp, #28] 8022928:	e777      	b.n	802281a <_strtod_r+0x29a> 802292a:	4658      	mov	r0, fp 802292c:	9d17      	ldr	r5, [sp, #92]	; 0x5c 802292e:	f001 fc01 	bl	8024134 <_localeconv_r> 8022932:	6800      	ldr	r0, [r0, #0] 8022934:	f7ff fa9c 	bl	8021e70 <strlen> 8022938:	f8dd c010 	ldr.w	ip, [sp, #16] 802293c:	182b      	adds	r3, r5, r0 802293e:	9317      	str	r3, [sp, #92]	; 0x5c 8022940:	5c2d      	ldrb	r5, [r5, r0] 8022942:	2c00      	cmp	r4, #0 8022944:	f040 819b 	bne.w	8022c7e <_strtod_r+0x6fe> 8022948:	2d30      	cmp	r5, #48	; 0x30 802294a:	4620      	mov	r0, r4 802294c:	d105      	bne.n	802295a <_strtod_r+0x3da> 802294e:	3301      	adds	r3, #1 8022950:	9317      	str	r3, [sp, #92]	; 0x5c 8022952:	3001      	adds	r0, #1 8022954:	781d      	ldrb	r5, [r3, #0] 8022956:	2d30      	cmp	r5, #48	; 0x30 8022958:	d0f9      	beq.n	802294e <_strtod_r+0x3ce> 802295a:	f1a5 0331 	sub.w	r3, r5, #49	; 0x31 802295e:	2b08      	cmp	r3, #8 8022960:	f200 819a 	bhi.w	8022c98 <_strtod_r+0x718> 8022964:	9e17      	ldr	r6, [sp, #92]	; 0x5c 8022966:	f04f 0800 	mov.w	r8, #0 802296a:	9009      	str	r0, [sp, #36]	; 0x24 802296c:	f1a5 0130 	sub.w	r1, r5, #48	; 0x30 8022970:	2001      	movs	r0, #1 8022972:	960a      	str	r6, [sp, #40]	; 0x28 8022974:	2900      	cmp	r1, #0 8022976:	f000 836c 	beq.w	8023052 <_strtod_r+0xad2> 802297a:	9a09      	ldr	r2, [sp, #36]	; 0x24 802297c:	2801      	cmp	r0, #1 802297e:	4402      	add	r2, r0 8022980:	9209      	str	r2, [sp, #36]	; 0x24 8022982:	f000 8532 	beq.w	80233ea <_strtod_r+0xe6a> 8022986:	eb08 0200 	add.w	r2, r8, r0 802298a:	4643      	mov	r3, r8 802298c:	3a01      	subs	r2, #1 802298e:	f8cd 802c 	str.w	r8, [sp, #44]	; 0x2c 8022992:	4690      	mov	r8, r2 8022994:	e003      	b.n	802299e <_strtod_r+0x41e> 8022996:	006f      	lsls	r7, r5, #1 8022998:	4543      	cmp	r3, r8 802299a:	f000 834b 	beq.w	8023034 <_strtod_r+0xab4> 802299e:	3301      	adds	r3, #1 80229a0:	eb07 0587 	add.w	r5, r7, r7, lsl #2 80229a4:	1e5a      	subs	r2, r3, #1 80229a6:	2a08      	cmp	r2, #8 80229a8:	ddf5      	ble.n	8022996 <_strtod_r+0x416> 80229aa:	eb0a 028a 	add.w	r2, sl, sl, lsl #2 80229ae:	2b10      	cmp	r3, #16 80229b0:	bfd8      	it	le 80229b2:	ea4f 0a42 	movle.w	sl, r2, lsl #1 80229b6:	e7ef      	b.n	8022998 <_strtod_r+0x418> 80229b8:	9d09      	ldr	r5, [sp, #36]	; 0x24 80229ba:	ebc9 0908 	rsb	r9, r9, r8 80229be:	eb05 0409 	add.w	r4, r5, r9 80229c2:	2c00      	cmp	r4, #0 80229c4:	f340 83de 	ble.w	8023184 <_strtod_r+0xc04> 80229c8:	f014 000f 	ands.w	r0, r4, #15 80229cc:	d00d      	beq.n	80229ea <_strtod_r+0x46a> 80229ce:	f646 21d0 	movw	r1, #27344	; 0x6ad0 80229d2:	e9dd 2306 	ldrd	r2, r3, [sp, #24] 80229d6:	f6c0 0103 	movt	r1, #2051	; 0x803 80229da:	eb01 01c0 	add.w	r1, r1, r0, lsl #3 80229de:	e9d1 0100 	ldrd	r0, r1, [r1] 80229e2:	f7fd fded 	bl	80205c0 <__aeabi_dmul> 80229e6:	e9cd 0106 	strd	r0, r1, [sp, #24] 80229ea:	f034 040f 	bics.w	r4, r4, #15 80229ee:	f040 815f 	bne.w	8022cb0 <_strtod_r+0x730> 80229f2:	f8dd 9018 	ldr.w	r9, [sp, #24] 80229f6:	f8dd a01c 	ldr.w	sl, [sp, #28] 80229fa:	940b      	str	r4, [sp, #44]	; 0x2c 80229fc:	9700      	str	r7, [sp, #0] 80229fe:	4658      	mov	r0, fp 8022a00:	4631      	mov	r1, r6 8022a02:	9a0a      	ldr	r2, [sp, #40]	; 0x28 8022a04:	4643      	mov	r3, r8 8022a06:	f001 ff67 	bl	80248d8 <__s2b> 8022a0a:	9d09      	ldr	r5, [sp, #36]	; 0x24 8022a0c:	2d00      	cmp	r5, #0 8022a0e:	9011      	str	r0, [sp, #68]	; 0x44 8022a10:	f2c0 8472 	blt.w	80232f8 <_strtod_r+0xd78> 8022a14:	2400      	movs	r4, #0 8022a16:	940d      	str	r4, [sp, #52]	; 0x34 8022a18:	9d09      	ldr	r5, [sp, #36]	; 0x24 8022a1a:	9c11      	ldr	r4, [sp, #68]	; 0x44 8022a1c:	ea25 75e5 	bic.w	r5, r5, r5, asr #31 8022a20:	f8cd 9024 	str.w	r9, [sp, #36]	; 0x24 8022a24:	340c      	adds	r4, #12 8022a26:	950e      	str	r5, [sp, #56]	; 0x38 8022a28:	9413      	str	r4, [sp, #76]	; 0x4c 8022a2a:	f8cd a028 	str.w	sl, [sp, #40]	; 0x28 8022a2e:	e073      	b.n	8022b18 <_strtod_r+0x598> 8022a30:	08041ecf 	.word	0x08041ecf 8022a34:	9b0f      	ldr	r3, [sp, #60]	; 0x3c 8022a36:	2b00      	cmp	r3, #0 8022a38:	f000 81a8 	beq.w	8022d8c <_strtod_r+0x80c> 8022a3c:	f04f 0900 	mov.w	r9, #0 8022a40:	2500      	movs	r5, #0 8022a42:	f8dd c01c 	ldr.w	ip, [sp, #28] 8022a46:	2400      	movs	r4, #0 8022a48:	f6c3 75f0 	movt	r5, #16368	; 0x3ff0 8022a4c:	f6c3 79f0 	movt	r9, #16368	; 0x3ff0 8022a50:	f8cd 8030 	str.w	r8, [sp, #48]	; 0x30 8022a54:	f04f 0800 	mov.w	r8, #0 8022a58:	4643      	mov	r3, r8 8022a5a:	f6c7 78f0 	movt	r8, #32752	; 0x7ff0 8022a5e:	f6c7 73e0 	movt	r3, #32736	; 0x7fe0 8022a62:	ea0c 0808 	and.w	r8, ip, r8 8022a66:	4598      	cmp	r8, r3 8022a68:	f000 81c5 	beq.w	8022df6 <_strtod_r+0x876> 8022a6c:	9a0b      	ldr	r2, [sp, #44]	; 0x2c 8022a6e:	f1b8 6fd4 	cmp.w	r8, #111149056	; 0x6a00000 8022a72:	bf8c      	ite	hi 8022a74:	2300      	movhi	r3, #0 8022a76:	2301      	movls	r3, #1 8022a78:	2a00      	cmp	r2, #0 8022a7a:	bf08      	it	eq 8022a7c:	2300      	moveq	r3, #0 8022a7e:	b1eb      	cbz	r3, 8022abc <_strtod_r+0x53c> 8022a80:	980c      	ldr	r0, [sp, #48]	; 0x30 8022a82:	4649      	mov	r1, r9 8022a84:	a388      	add	r3, pc, #544	; (adr r3, 8022ca8 <_strtod_r+0x728>) 8022a86:	e9d3 2300 	ldrd	r2, r3, [r3] 8022a8a:	f7fe f815 	bl	8020ab8 <__aeabi_dcmple> 8022a8e:	b188      	cbz	r0, 8022ab4 <_strtod_r+0x534> 8022a90:	980c      	ldr	r0, [sp, #48]	; 0x30 8022a92:	4649      	mov	r1, r9 8022a94:	f002 fbd6 	bl	8025244 <__aeabi_d2uiz> 8022a98:	2800      	cmp	r0, #0 8022a9a:	f000 8246 	beq.w	8022f2a <_strtod_r+0x9aa> 8022a9e:	f7fd fd19 	bl	80204d4 <__aeabi_ui2d> 8022aa2:	4689      	mov	r9, r1 8022aa4:	900c      	str	r0, [sp, #48]	; 0x30 8022aa6:	9c0f      	ldr	r4, [sp, #60]	; 0x3c 8022aa8:	f109 4300 	add.w	r3, r9, #2147483648	; 0x80000000 8022aac:	b104      	cbz	r4, 8022ab0 <_strtod_r+0x530> 8022aae:	464b      	mov	r3, r9 8022ab0:	9c0c      	ldr	r4, [sp, #48]	; 0x30 8022ab2:	461d      	mov	r5, r3 8022ab4:	f105 63d6 	add.w	r3, r5, #112197632	; 0x6b00000 8022ab8:	ebc8 0503 	rsb	r5, r8, r3 8022abc:	9809      	ldr	r0, [sp, #36]	; 0x24 8022abe:	990a      	ldr	r1, [sp, #40]	; 0x28 8022ac0:	f002 f98a 	bl	8024dd8 <__ulp> 8022ac4:	4602      	mov	r2, r0 8022ac6:	460b      	mov	r3, r1 8022ac8:	4620      	mov	r0, r4 8022aca:	4629      	mov	r1, r5 8022acc:	f7fd fd78 	bl	80205c0 <__aeabi_dmul> 8022ad0:	4602      	mov	r2, r0 8022ad2:	460b      	mov	r3, r1 8022ad4:	9809      	ldr	r0, [sp, #36]	; 0x24 8022ad6:	990a      	ldr	r1, [sp, #40]	; 0x28 8022ad8:	f7fd fbc0 	bl	802025c <__adddf3> 8022adc:	e9cd 0106 	strd	r0, r1, [sp, #24] 8022ae0:	9c07      	ldr	r4, [sp, #28] 8022ae2:	9009      	str	r0, [sp, #36]	; 0x24 8022ae4:	910a      	str	r1, [sp, #40]	; 0x28 8022ae6:	9d0b      	ldr	r5, [sp, #44]	; 0x2c 8022ae8:	b935      	cbnz	r5, 8022af8 <_strtod_r+0x578> 8022aea:	2300      	movs	r3, #0 8022aec:	f6c7 73f0 	movt	r3, #32752	; 0x7ff0 8022af0:	4023      	ands	r3, r4 8022af2:	4598      	cmp	r8, r3 8022af4:	f000 81bc 	beq.w	8022e70 <_strtod_r+0x8f0> 8022af8:	4658      	mov	r0, fp 8022afa:	9918      	ldr	r1, [sp, #96]	; 0x60 8022afc:	f001 fe8c 	bl	8024818 <_Bfree> 8022b00:	4658      	mov	r0, fp 8022b02:	4651      	mov	r1, sl 8022b04:	f001 fe88 	bl	8024818 <_Bfree> 8022b08:	4658      	mov	r0, fp 8022b0a:	4639      	mov	r1, r7 8022b0c:	f001 fe84 	bl	8024818 <_Bfree> 8022b10:	4658      	mov	r0, fp 8022b12:	4631      	mov	r1, r6 8022b14:	f001 fe80 	bl	8024818 <_Bfree> 8022b18:	9c11      	ldr	r4, [sp, #68]	; 0x44 8022b1a:	4658      	mov	r0, fp 8022b1c:	ad16      	add	r5, sp, #88	; 0x58 8022b1e:	6861      	ldr	r1, [r4, #4] 8022b20:	f001 fe44 	bl	80247ac <_Balloc> 8022b24:	6923      	ldr	r3, [r4, #16] 8022b26:	9913      	ldr	r1, [sp, #76]	; 0x4c 8022b28:	1c9a      	adds	r2, r3, #2 8022b2a:	0092      	lsls	r2, r2, #2 8022b2c:	4682      	mov	sl, r0 8022b2e:	300c      	adds	r0, #12 8022b30:	f7fe ff0c 	bl	802194c <memcpy> 8022b34:	9a09      	ldr	r2, [sp, #36]	; 0x24 8022b36:	9b0a      	ldr	r3, [sp, #40]	; 0x28 8022b38:	a819      	add	r0, sp, #100	; 0x64 8022b3a:	9500      	str	r5, [sp, #0] 8022b3c:	9001      	str	r0, [sp, #4] 8022b3e:	4658      	mov	r0, fp 8022b40:	f002 f9c4 	bl	8024ecc <__d2b> 8022b44:	2101      	movs	r1, #1 8022b46:	9018      	str	r0, [sp, #96]	; 0x60 8022b48:	4658      	mov	r0, fp 8022b4a:	f001 ff5d 	bl	8024a08 <__i2b> 8022b4e:	9a16      	ldr	r2, [sp, #88]	; 0x58 8022b50:	9b19      	ldr	r3, [sp, #100]	; 0x64 8022b52:	f46f 717f 	mvn.w	r1, #1020	; 0x3fc 8022b56:	2a00      	cmp	r2, #0 8022b58:	bfaa      	itet	ge 8022b5a:	9d0d      	ldrge	r5, [sp, #52]	; 0x34 8022b5c:	9c0e      	ldrlt	r4, [sp, #56]	; 0x38 8022b5e:	18ac      	addge	r4, r5, r2 8022b60:	9d0b      	ldr	r5, [sp, #44]	; 0x2c 8022b62:	4607      	mov	r7, r0 8022b64:	bfb8      	it	lt 8022b66:	ebc2 0004 	rsblt	r0, r2, r4 8022b6a:	ebc5 0202 	rsb	r2, r5, r2 8022b6e:	bfb8      	it	lt 8022b70:	9c0d      	ldrlt	r4, [sp, #52]	; 0x34 8022b72:	eb02 0503 	add.w	r5, r2, r3 8022b76:	bfa8      	it	ge 8022b78:	980e      	ldrge	r0, [sp, #56]	; 0x38 8022b7a:	428d      	cmp	r5, r1 8022b7c:	990d      	ldr	r1, [sp, #52]	; 0x34 8022b7e:	bfb4      	ite	lt 8022b80:	f202 4333 	addwlt	r3, r2, #1075	; 0x433 8022b84:	f1c3 0336 	rsbge	r3, r3, #54	; 0x36 8022b88:	18e6      	adds	r6, r4, r3 8022b8a:	18c3      	adds	r3, r0, r3 8022b8c:	980b      	ldr	r0, [sp, #44]	; 0x2c 8022b8e:	181d      	adds	r5, r3, r0 8022b90:	42a6      	cmp	r6, r4 8022b92:	bfb4      	ite	lt 8022b94:	4633      	movlt	r3, r6 8022b96:	4623      	movge	r3, r4 8022b98:	42ab      	cmp	r3, r5 8022b9a:	bfa8      	it	ge 8022b9c:	462b      	movge	r3, r5 8022b9e:	2b00      	cmp	r3, #0 8022ba0:	bfc2      	ittt	gt 8022ba2:	ebc3 0606 	rsbgt	r6, r3, r6 8022ba6:	ebc3 0505 	rsbgt	r5, r3, r5 8022baa:	ebc3 0404 	rsbgt	r4, r3, r4 8022bae:	b189      	cbz	r1, 8022bd4 <_strtod_r+0x654> 8022bb0:	460a      	mov	r2, r1 8022bb2:	4658      	mov	r0, fp 8022bb4:	4639      	mov	r1, r7 8022bb6:	f001 ffcf 	bl	8024b58 <__pow5mult> 8022bba:	9a18      	ldr	r2, [sp, #96]	; 0x60 8022bbc:	4607      	mov	r7, r0 8022bbe:	4658      	mov	r0, fp 8022bc0:	4639      	mov	r1, r7 8022bc2:	f001 ff2b 	bl	8024a1c <__multiply> 8022bc6:	9918      	ldr	r1, [sp, #96]	; 0x60 8022bc8:	4680      	mov	r8, r0 8022bca:	4658      	mov	r0, fp 8022bcc:	f001 fe24 	bl	8024818 <_Bfree> 8022bd0:	f8cd 8060 	str.w	r8, [sp, #96]	; 0x60 8022bd4:	2e00      	cmp	r6, #0 8022bd6:	dd05      	ble.n	8022be4 <_strtod_r+0x664> 8022bd8:	4658      	mov	r0, fp 8022bda:	9918      	ldr	r1, [sp, #96]	; 0x60 8022bdc:	4632      	mov	r2, r6 8022bde:	f002 f80d 	bl	8024bfc <__lshift> 8022be2:	9018      	str	r0, [sp, #96]	; 0x60 8022be4:	9a0e      	ldr	r2, [sp, #56]	; 0x38 8022be6:	b122      	cbz	r2, 8022bf2 <_strtod_r+0x672> 8022be8:	4651      	mov	r1, sl 8022bea:	4658      	mov	r0, fp 8022bec:	f001 ffb4 	bl	8024b58 <__pow5mult> 8022bf0:	4682      	mov	sl, r0 8022bf2:	2d00      	cmp	r5, #0 8022bf4:	dd05      	ble.n	8022c02 <_strtod_r+0x682> 8022bf6:	4651      	mov	r1, sl 8022bf8:	4658      	mov	r0, fp 8022bfa:	462a      	mov	r2, r5 8022bfc:	f001 fffe 	bl	8024bfc <__lshift> 8022c00:	4682      	mov	sl, r0 8022c02:	2c00      	cmp	r4, #0 8022c04:	dd05      	ble.n	8022c12 <_strtod_r+0x692> 8022c06:	4639      	mov	r1, r7 8022c08:	4658      	mov	r0, fp 8022c0a:	4622      	mov	r2, r4 8022c0c:	f001 fff6 	bl	8024bfc <__lshift> 8022c10:	4607      	mov	r7, r0 8022c12:	9918      	ldr	r1, [sp, #96]	; 0x60 8022c14:	4652      	mov	r2, sl 8022c16:	4658      	mov	r0, fp 8022c18:	f04f 0800 	mov.w	r8, #0 8022c1c:	f002 f866 	bl	8024cec <__mdiff> 8022c20:	4639      	mov	r1, r7 8022c22:	68c4      	ldr	r4, [r0, #12] 8022c24:	4606      	mov	r6, r0 8022c26:	f8c0 800c 	str.w	r8, [r0, #12] 8022c2a:	940f      	str	r4, [sp, #60]	; 0x3c 8022c2c:	f002 f840 	bl	8024cb0 <__mcmp> 8022c30:	4540      	cmp	r0, r8 8022c32:	f2c0 8213 	blt.w	802305c <_strtod_r+0xadc> 8022c36:	f000 8261 	beq.w	80230fc <_strtod_r+0xb7c> 8022c3a:	4630      	mov	r0, r6 8022c3c:	4639      	mov	r1, r7 8022c3e:	f002 f9a3 	bl	8024f88 <__ratio> 8022c42:	2200      	movs	r2, #0 8022c44:	f04f 4380 	mov.w	r3, #1073741824	; 0x40000000 8022c48:	4604      	mov	r4, r0 8022c4a:	460d      	mov	r5, r1 8022c4c:	f7fd ff34 	bl	8020ab8 <__aeabi_dcmple> 8022c50:	2800      	cmp	r0, #0 8022c52:	f47f aeef 	bne.w	8022a34 <_strtod_r+0x4b4> 8022c56:	2300      	movs	r3, #0 8022c58:	4620      	mov	r0, r4 8022c5a:	f6c3 73e0 	movt	r3, #16352	; 0x3fe0 8022c5e:	4629      	mov	r1, r5 8022c60:	2200      	movs	r2, #0 8022c62:	f7fd fcad 	bl	80205c0 <__aeabi_dmul> 8022c66:	9c0f      	ldr	r4, [sp, #60]	; 0x3c 8022c68:	900c      	str	r0, [sp, #48]	; 0x30 8022c6a:	4689      	mov	r9, r1 8022c6c:	f101 4300 	add.w	r3, r1, #2147483648	; 0x80000000 8022c70:	b104      	cbz	r4, 8022c74 <_strtod_r+0x6f4> 8022c72:	460b      	mov	r3, r1 8022c74:	9c0c      	ldr	r4, [sp, #48]	; 0x30 8022c76:	461d      	mov	r5, r3 8022c78:	f8dd c01c 	ldr.w	ip, [sp, #28] 8022c7c:	e6ea      	b.n	8022a54 <_strtod_r+0x4d4> 8022c7e:	4640      	mov	r0, r8 8022c80:	46a0      	mov	r8, r4 8022c82:	9009      	str	r0, [sp, #36]	; 0x24 8022c84:	f1a5 0130 	sub.w	r1, r5, #48	; 0x30 8022c88:	2909      	cmp	r1, #9 8022c8a:	d803      	bhi.n	8022c94 <_strtod_r+0x714> 8022c8c:	9a17      	ldr	r2, [sp, #92]	; 0x5c 8022c8e:	3001      	adds	r0, #1 8022c90:	920a      	str	r2, [sp, #40]	; 0x28 8022c92:	e66f      	b.n	8022974 <_strtod_r+0x3f4> 8022c94:	2101      	movs	r1, #1 8022c96:	e50a      	b.n	80226ae <_strtod_r+0x12e> 8022c98:	f04f 0800 	mov.w	r8, #0 8022c9c:	2101      	movs	r1, #1 8022c9e:	f8cd 8024 	str.w	r8, [sp, #36]	; 0x24 8022ca2:	e504      	b.n	80226ae <_strtod_r+0x12e> 8022ca4:	f3af 8000 	nop.w 8022ca8:	ffc00000 	.word	0xffc00000 8022cac:	41dfffff 	.word	0x41dfffff 8022cb0:	f5b4 7f9a 	cmp.w	r4, #308	; 0x134 8022cb4:	f300 8258 	bgt.w	8023168 <_strtod_r+0xbe8> 8022cb8:	1124      	asrs	r4, r4, #4 8022cba:	f646 3ac0 	movw	sl, #27584	; 0x6bc0 8022cbe:	2c01      	cmp	r4, #1 8022cc0:	f340 8398 	ble.w	80233f4 <_strtod_r+0xe74> 8022cc4:	f6c0 0a03 	movt	sl, #2051	; 0x803 8022cc8:	e9dd 2306 	ldrd	r2, r3, [sp, #24] 8022ccc:	f04f 0900 	mov.w	r9, #0 8022cd0:	4655      	mov	r5, sl 8022cd2:	f014 0f01 	tst.w	r4, #1 8022cd6:	4610      	mov	r0, r2 8022cd8:	4619      	mov	r1, r3 8022cda:	ea4f 0464 	mov.w	r4, r4, asr #1 8022cde:	f109 0901 	add.w	r9, r9, #1 8022ce2:	d005      	beq.n	8022cf0 <_strtod_r+0x770> 8022ce4:	e9d5 2300 	ldrd	r2, r3, [r5] 8022ce8:	f7fd fc6a 	bl	80205c0 <__aeabi_dmul> 8022cec:	4602      	mov	r2, r0 8022cee:	460b      	mov	r3, r1 8022cf0:	3508      	adds	r5, #8 8022cf2:	2c01      	cmp	r4, #1 8022cf4:	dced      	bgt.n	8022cd2 <_strtod_r+0x752> 8022cf6:	4610      	mov	r0, r2 8022cf8:	4619      	mov	r1, r3 8022cfa:	e9cd 0106 	strd	r0, r1, [sp, #24] 8022cfe:	9907      	ldr	r1, [sp, #28] 8022d00:	eb0a 09c9 	add.w	r9, sl, r9, lsl #3 8022d04:	f1a1 7154 	sub.w	r1, r1, #55574528	; 0x3500000 8022d08:	9107      	str	r1, [sp, #28] 8022d0a:	e9dd 2306 	ldrd	r2, r3, [sp, #24] 8022d0e:	e9d9 0100 	ldrd	r0, r1, [r9] 8022d12:	f7fd fc55 	bl	80205c0 <__aeabi_dmul> 8022d16:	2300      	movs	r3, #0 8022d18:	2200      	movs	r2, #0 8022d1a:	f6c7 73f0 	movt	r3, #32752	; 0x7ff0 8022d1e:	f6c7 42a0 	movt	r2, #31904	; 0x7ca0 8022d22:	e9cd 0106 	strd	r0, r1, [sp, #24] 8022d26:	9907      	ldr	r1, [sp, #28] 8022d28:	400b      	ands	r3, r1 8022d2a:	4293      	cmp	r3, r2 8022d2c:	f200 821c 	bhi.w	8023168 <_strtod_r+0xbe8> 8022d30:	2200      	movs	r2, #0 8022d32:	f6c7 4290 	movt	r2, #31888	; 0x7c90 8022d36:	4293      	cmp	r3, r2 8022d38:	f240 8305 	bls.w	8023346 <_strtod_r+0xdc6> 8022d3c:	f64f 72ff 	movw	r2, #65535	; 0xffff 8022d40:	f04f 30ff 	mov.w	r0, #4294967295 8022d44:	4615      	mov	r5, r2 8022d46:	2400      	movs	r4, #0 8022d48:	f6c7 75ef 	movt	r5, #32751	; 0x7fef 8022d4c:	940b      	str	r4, [sp, #44]	; 0x2c 8022d4e:	9507      	str	r5, [sp, #28] 8022d50:	4681      	mov	r9, r0 8022d52:	9006      	str	r0, [sp, #24] 8022d54:	46aa      	mov	sl, r5 8022d56:	e651      	b.n	80229fc <_strtod_r+0x47c> 8022d58:	2301      	movs	r3, #1 8022d5a:	930a      	str	r3, [sp, #40]	; 0x28 8022d5c:	f10c 0302 	add.w	r3, ip, #2 8022d60:	9317      	str	r3, [sp, #92]	; 0x5c 8022d62:	f89c 5002 	ldrb.w	r5, [ip, #2] 8022d66:	e4bc      	b.n	80226e2 <_strtod_r+0x162> 8022d68:	48ab      	ldr	r0, [pc, #684]	; (8023018 <_strtod_r+0xa98>) 8022d6a:	9a17      	ldr	r2, [sp, #92]	; 0x5c 8022d6c:	f810 1f01 	ldrb.w	r1, [r0, #1]! 8022d70:	4613      	mov	r3, r2 8022d72:	2900      	cmp	r1, #0 8022d74:	f000 8311 	beq.w	802339a <_strtod_r+0xe1a> 8022d78:	785b      	ldrb	r3, [r3, #1] 8022d7a:	3201      	adds	r2, #1 8022d7c:	2b40      	cmp	r3, #64	; 0x40 8022d7e:	dd02      	ble.n	8022d86 <_strtod_r+0x806> 8022d80:	2b5a      	cmp	r3, #90	; 0x5a 8022d82:	bfd8      	it	le 8022d84:	3320      	addle	r3, #32 8022d86:	428b      	cmp	r3, r1 8022d88:	d0f0      	beq.n	8022d6c <_strtod_r+0x7ec> 8022d8a:	e5b8      	b.n	80228fe <_strtod_r+0x37e> 8022d8c:	9b06      	ldr	r3, [sp, #24] 8022d8e:	f8dd c01c 	ldr.w	ip, [sp, #28] 8022d92:	2b00      	cmp	r3, #0 8022d94:	f040 80a6 	bne.w	8022ee4 <_strtod_r+0x964> 8022d98:	f3cc 0313 	ubfx	r3, ip, #0, #20 8022d9c:	bb03      	cbnz	r3, 8022de0 <_strtod_r+0x860> 8022d9e:	2300      	movs	r3, #0 8022da0:	4620      	mov	r0, r4 8022da2:	4629      	mov	r1, r5 8022da4:	2200      	movs	r2, #0 8022da6:	f6c3 73f0 	movt	r3, #16368	; 0x3ff0 8022daa:	f8cd c010 	str.w	ip, [sp, #16] 8022dae:	f7fd fe79 	bl	8020aa4 <__aeabi_dcmplt> 8022db2:	f8dd c010 	ldr.w	ip, [sp, #16] 8022db6:	2800      	cmp	r0, #0 8022db8:	f040 8246 	bne.w	8023248 <_strtod_r+0xcc8> 8022dbc:	2300      	movs	r3, #0 8022dbe:	2200      	movs	r2, #0 8022dc0:	f6c3 73e0 	movt	r3, #16352	; 0x3fe0 8022dc4:	4620      	mov	r0, r4 8022dc6:	4629      	mov	r1, r5 8022dc8:	f7fd fbfa 	bl	80205c0 <__aeabi_dmul> 8022dcc:	f8dd c010 	ldr.w	ip, [sp, #16] 8022dd0:	4689      	mov	r9, r1 8022dd2:	4602      	mov	r2, r0 8022dd4:	f101 4300 	add.w	r3, r1, #2147483648	; 0x80000000 8022dd8:	900c      	str	r0, [sp, #48]	; 0x30 8022dda:	4614      	mov	r4, r2 8022ddc:	461d      	mov	r5, r3 8022dde:	e639      	b.n	8022a54 <_strtod_r+0x4d4> 8022de0:	f04f 0900 	mov.w	r9, #0 8022de4:	2500      	movs	r5, #0 8022de6:	f8cd 9030 	str.w	r9, [sp, #48]	; 0x30 8022dea:	2400      	movs	r4, #0 8022dec:	f6cb 75f0 	movt	r5, #49136	; 0xbff0 8022df0:	f6c3 79f0 	movt	r9, #16368	; 0x3ff0 8022df4:	e62e      	b.n	8022a54 <_strtod_r+0x4d4> 8022df6:	f1ac 7c54 	sub.w	ip, ip, #55574528	; 0x3500000 8022dfa:	9a09      	ldr	r2, [sp, #36]	; 0x24 8022dfc:	f8cd c01c 	str.w	ip, [sp, #28] 8022e00:	9b0a      	ldr	r3, [sp, #40]	; 0x28 8022e02:	e9dd 0106 	ldrd	r0, r1, [sp, #24] 8022e06:	e9cd 4502 	strd	r4, r5, [sp, #8] 8022e0a:	4614      	mov	r4, r2 8022e0c:	461d      	mov	r5, r3 8022e0e:	e9cd 4514 	strd	r4, r5, [sp, #80]	; 0x50 8022e12:	f001 ffe1 	bl	8024dd8 <__ulp> 8022e16:	4602      	mov	r2, r0 8022e18:	460b      	mov	r3, r1 8022e1a:	e9dd 0102 	ldrd	r0, r1, [sp, #8] 8022e1e:	f7fd fbcf 	bl	80205c0 <__aeabi_dmul> 8022e22:	4602      	mov	r2, r0 8022e24:	460b      	mov	r3, r1 8022e26:	e9dd 0106 	ldrd	r0, r1, [sp, #24] 8022e2a:	f7fd fa17 	bl	802025c <__adddf3> 8022e2e:	2300      	movs	r3, #0 8022e30:	f6c7 73f0 	movt	r3, #32752	; 0x7ff0 8022e34:	f64f 72ff 	movw	r2, #65535	; 0xffff 8022e38:	f6c7 429f 	movt	r2, #31903	; 0x7c9f 8022e3c:	e9cd 0106 	strd	r0, r1, [sp, #24] 8022e40:	9c07      	ldr	r4, [sp, #28] 8022e42:	4023      	ands	r3, r4 8022e44:	4293      	cmp	r3, r2 8022e46:	d976      	bls.n	8022f36 <_strtod_r+0x9b6> 8022e48:	f64f 73ff 	movw	r3, #65535	; 0xffff 8022e4c:	9d15      	ldr	r5, [sp, #84]	; 0x54 8022e4e:	f6c7 73ef 	movt	r3, #32751	; 0x7fef 8022e52:	429d      	cmp	r5, r3 8022e54:	f000 8177 	beq.w	8023146 <_strtod_r+0xbc6> 8022e58:	f64f 71ff 	movw	r1, #65535	; 0xffff 8022e5c:	f04f 33ff 	mov.w	r3, #4294967295 8022e60:	460a      	mov	r2, r1 8022e62:	9306      	str	r3, [sp, #24] 8022e64:	f6c7 72ef 	movt	r2, #32751	; 0x7fef 8022e68:	9309      	str	r3, [sp, #36]	; 0x24 8022e6a:	9207      	str	r2, [sp, #28] 8022e6c:	920a      	str	r2, [sp, #40]	; 0x28 8022e6e:	e643      	b.n	8022af8 <_strtod_r+0x578> 8022e70:	4649      	mov	r1, r9 8022e72:	980c      	ldr	r0, [sp, #48]	; 0x30 8022e74:	f7fd fe3e 	bl	8020af4 <__aeabi_d2iz> 8022e78:	f7fd fb3c 	bl	80204f4 <__aeabi_i2d> 8022e7c:	4602      	mov	r2, r0 8022e7e:	460b      	mov	r3, r1 8022e80:	980c      	ldr	r0, [sp, #48]	; 0x30 8022e82:	4649      	mov	r1, r9 8022e84:	f7fd f9e8 	bl	8020258 <__aeabi_dsub> 8022e88:	9d0f      	ldr	r5, [sp, #60]	; 0x3c 8022e8a:	4680      	mov	r8, r0 8022e8c:	4689      	mov	r9, r1 8022e8e:	2d00      	cmp	r5, #0 8022e90:	d137      	bne.n	8022f02 <_strtod_r+0x982> 8022e92:	9a06      	ldr	r2, [sp, #24] 8022e94:	2a00      	cmp	r2, #0 8022e96:	d134      	bne.n	8022f02 <_strtod_r+0x982> 8022e98:	f3c4 0413 	ubfx	r4, r4, #0, #20 8022e9c:	2c00      	cmp	r4, #0 8022e9e:	d130      	bne.n	8022f02 <_strtod_r+0x982> 8022ea0:	a357      	add	r3, pc, #348	; (adr r3, 8023000 <_strtod_r+0xa80>) 8022ea2:	e9d3 2300 	ldrd	r2, r3, [r3] 8022ea6:	f7fd fdfd 	bl	8020aa4 <__aeabi_dcmplt> 8022eaa:	2800      	cmp	r0, #0 8022eac:	f43f ae24 	beq.w	8022af8 <_strtod_r+0x578> 8022eb0:	4654      	mov	r4, sl 8022eb2:	f8dd 9024 	ldr.w	r9, [sp, #36]	; 0x24 8022eb6:	f8dd a028 	ldr.w	sl, [sp, #40]	; 0x28 8022eba:	4658      	mov	r0, fp 8022ebc:	9918      	ldr	r1, [sp, #96]	; 0x60 8022ebe:	f001 fcab 	bl	8024818 <_Bfree> 8022ec2:	4658      	mov	r0, fp 8022ec4:	4621      	mov	r1, r4 8022ec6:	f001 fca7 	bl	8024818 <_Bfree> 8022eca:	4658      	mov	r0, fp 8022ecc:	4639      	mov	r1, r7 8022ece:	f001 fca3 	bl	8024818 <_Bfree> 8022ed2:	4658      	mov	r0, fp 8022ed4:	9911      	ldr	r1, [sp, #68]	; 0x44 8022ed6:	f001 fc9f 	bl	8024818 <_Bfree> 8022eda:	4658      	mov	r0, fp 8022edc:	4631      	mov	r1, r6 8022ede:	f001 fc9b 	bl	8024818 <_Bfree> 8022ee2:	e49a      	b.n	802281a <_strtod_r+0x29a> 8022ee4:	2b01      	cmp	r3, #1 8022ee6:	f47f af7b 	bne.w	8022de0 <_strtod_r+0x860> 8022eea:	4661      	mov	r1, ip 8022eec:	2900      	cmp	r1, #0 8022eee:	f47f af77 	bne.w	8022de0 <_strtod_r+0x860> 8022ef2:	4654      	mov	r4, sl 8022ef4:	f04f 0900 	mov.w	r9, #0 8022ef8:	46ca      	mov	sl, r9 8022efa:	2322      	movs	r3, #34	; 0x22 8022efc:	f8cb 3000 	str.w	r3, [fp] 8022f00:	e7db      	b.n	8022eba <_strtod_r+0x93a> 8022f02:	4640      	mov	r0, r8 8022f04:	4649      	mov	r1, r9 8022f06:	a340      	add	r3, pc, #256	; (adr r3, 8023008 <_strtod_r+0xa88>) 8022f08:	e9d3 2300 	ldrd	r2, r3, [r3] 8022f0c:	f7fd fdca 	bl	8020aa4 <__aeabi_dcmplt> 8022f10:	2800      	cmp	r0, #0 8022f12:	d1cd      	bne.n	8022eb0 <_strtod_r+0x930> 8022f14:	4640      	mov	r0, r8 8022f16:	4649      	mov	r1, r9 8022f18:	a33d      	add	r3, pc, #244	; (adr r3, 8023010 <_strtod_r+0xa90>) 8022f1a:	e9d3 2300 	ldrd	r2, r3, [r3] 8022f1e:	f7fd fddf 	bl	8020ae0 <__aeabi_dcmpgt> 8022f22:	2800      	cmp	r0, #0 8022f24:	f43f ade8 	beq.w	8022af8 <_strtod_r+0x578> 8022f28:	e7c2      	b.n	8022eb0 <_strtod_r+0x930> 8022f2a:	f04f 0900 	mov.w	r9, #0 8022f2e:	900c      	str	r0, [sp, #48]	; 0x30 8022f30:	f6c3 79f0 	movt	r9, #16368	; 0x3ff0 8022f34:	e5b7      	b.n	8022aa6 <_strtod_r+0x526> 8022f36:	9906      	ldr	r1, [sp, #24] 8022f38:	f104 7454 	add.w	r4, r4, #55574528	; 0x3500000 8022f3c:	9407      	str	r4, [sp, #28] 8022f3e:	940a      	str	r4, [sp, #40]	; 0x28 8022f40:	9109      	str	r1, [sp, #36]	; 0x24 8022f42:	e5d0      	b.n	8022ae6 <_strtod_r+0x566> 8022f44:	f8cd c05c 	str.w	ip, [sp, #92]	; 0x5c 8022f48:	2200      	movs	r2, #0 8022f4a:	f1b8 0f00 	cmp.w	r8, #0 8022f4e:	f47f ac0f 	bne.w	8022770 <_strtod_r+0x1f0> 8022f52:	e495      	b.n	8022880 <_strtod_r+0x300> 8022f54:	9d12      	ldr	r5, [sp, #72]	; 0x48 8022f56:	f240 0404 	movw	r4, #4 8022f5a:	f2c2 0400 	movt	r4, #8192	; 0x2000 8022f5e:	ab18      	add	r3, sp, #96	; 0x60 8022f60:	4658      	mov	r0, fp 8022f62:	e88d 0028 	stmia.w	sp, {r3, r5} 8022f66:	a917      	add	r1, sp, #92	; 0x5c 8022f68:	4622      	mov	r2, r4 8022f6a:	ab19      	add	r3, sp, #100	; 0x64 8022f6c:	f000 fd1c 	bl	80239a8 <__gethex> 8022f70:	f010 0707 	ands.w	r7, r0, #7 8022f74:	4605      	mov	r5, r0 8022f76:	bf04      	itt	eq 8022f78:	46b9      	moveq	r9, r7 8022f7a:	46ca      	moveq	sl, r9 8022f7c:	f43f ac4d 	beq.w	802281a <_strtod_r+0x29a> 8022f80:	2f06      	cmp	r7, #6 8022f82:	f000 816f 	beq.w	8023264 <_strtod_r+0xce4> 8022f86:	9a18      	ldr	r2, [sp, #96]	; 0x60 8022f88:	b13a      	cbz	r2, 8022f9a <_strtod_r+0xa1a> 8022f8a:	6821      	ldr	r1, [r4, #0] 8022f8c:	a81a      	add	r0, sp, #104	; 0x68 8022f8e:	f002 f845 	bl	802501c <__copybits> 8022f92:	4658      	mov	r0, fp 8022f94:	9918      	ldr	r1, [sp, #96]	; 0x60 8022f96:	f001 fc3f 	bl	8024818 <_Bfree> 8022f9a:	9b19      	ldr	r3, [sp, #100]	; 0x64 8022f9c:	2f06      	cmp	r7, #6 8022f9e:	d80b      	bhi.n	8022fb8 <_strtod_r+0xa38> 8022fa0:	e8df f007 	tbb	[pc, r7] 8022fa4:	141b203c 	.word	0x141b203c 8022fa8:	2004      	.short	0x2004 8022faa:	3c          	.byte	0x3c 8022fab:	00          	.byte	0x00 8022fac:	f06f 4400 	mvn.w	r4, #2147483648	; 0x80000000 8022fb0:	f04f 30ff 	mov.w	r0, #4294967295 8022fb4:	9407      	str	r4, [sp, #28] 8022fb6:	9006      	str	r0, [sp, #24] 8022fb8:	072b      	lsls	r3, r5, #28 8022fba:	f57f acb1 	bpl.w	8022920 <_strtod_r+0x3a0> 8022fbe:	9907      	ldr	r1, [sp, #28] 8022fc0:	f8dd 9018 	ldr.w	r9, [sp, #24] 8022fc4:	f041 4300 	orr.w	r3, r1, #2147483648	; 0x80000000 8022fc8:	469a      	mov	sl, r3 8022fca:	e426      	b.n	802281a <_strtod_r+0x29a> 8022fcc:	2100      	movs	r1, #0 8022fce:	9106      	str	r1, [sp, #24] 8022fd0:	460a      	mov	r2, r1 8022fd2:	f6c7 72f0 	movt	r2, #32752	; 0x7ff0 8022fd6:	9207      	str	r2, [sp, #28] 8022fd8:	e7ee      	b.n	8022fb8 <_strtod_r+0xa38> 8022fda:	9b1a      	ldr	r3, [sp, #104]	; 0x68 8022fdc:	9c1b      	ldr	r4, [sp, #108]	; 0x6c 8022fde:	9306      	str	r3, [sp, #24] 8022fe0:	9407      	str	r4, [sp, #28] 8022fe2:	e7e9      	b.n	8022fb8 <_strtod_r+0xa38> 8022fe4:	981a      	ldr	r0, [sp, #104]	; 0x68 8022fe6:	f203 4333 	addw	r3, r3, #1075	; 0x433 8022fea:	9a1b      	ldr	r2, [sp, #108]	; 0x6c 8022fec:	f422 1280 	bic.w	r2, r2, #1048576	; 0x100000 8022ff0:	9006      	str	r0, [sp, #24] 8022ff2:	ea42 5203 	orr.w	r2, r2, r3, lsl #20 8022ff6:	9207      	str	r2, [sp, #28] 8022ff8:	e7de      	b.n	8022fb8 <_strtod_r+0xa38> 8022ffa:	bf00      	nop 8022ffc:	f3af 8000 	nop.w 8023000:	94a03595 	.word	0x94a03595 8023004:	3fcfffff 	.word	0x3fcfffff 8023008:	94a03595 	.word	0x94a03595 802300c:	3fdfffff 	.word	0x3fdfffff 8023010:	35afe535 	.word	0x35afe535 8023014:	3fe00000 	.word	0x3fe00000 8023018:	08041ec3 	.word	0x08041ec3 802301c:	2100      	movs	r1, #0 802301e:	9107      	str	r1, [sp, #28] 8023020:	9106      	str	r1, [sp, #24] 8023022:	e7c9      	b.n	8022fb8 <_strtod_r+0xa38> 8023024:	46b0      	mov	r8, r6 8023026:	4657      	mov	r7, sl 8023028:	4654      	mov	r4, sl 802302a:	f7ff bb24 	b.w	8022676 <_strtod_r+0xf6> 802302e:	2300      	movs	r3, #0 8023030:	930a      	str	r3, [sp, #40]	; 0x28 8023032:	e693      	b.n	8022d5c <_strtod_r+0x7dc> 8023034:	f8dd 802c 	ldr.w	r8, [sp, #44]	; 0x2c 8023038:	eb08 0300 	add.w	r3, r8, r0 802303c:	3b01      	subs	r3, #1 802303e:	2b08      	cmp	r3, #8 8023040:	f103 0801 	add.w	r8, r3, #1 8023044:	f300 8172 	bgt.w	802332c <_strtod_r+0xdac> 8023048:	eb07 0787 	add.w	r7, r7, r7, lsl #2 802304c:	2000      	movs	r0, #0 802304e:	eb01 0747 	add.w	r7, r1, r7, lsl #1 8023052:	9d0a      	ldr	r5, [sp, #40]	; 0x28 8023054:	1c6b      	adds	r3, r5, #1 8023056:	9317      	str	r3, [sp, #92]	; 0x5c 8023058:	786d      	ldrb	r5, [r5, #1] 802305a:	e613      	b.n	8022c84 <_strtod_r+0x704> 802305c:	9d0f      	ldr	r5, [sp, #60]	; 0x3c 802305e:	4654      	mov	r4, sl 8023060:	bb7d      	cbnz	r5, 80230c2 <_strtod_r+0xb42> 8023062:	9806      	ldr	r0, [sp, #24] 8023064:	bb68      	cbnz	r0, 80230c2 <_strtod_r+0xb42> 8023066:	9a07      	ldr	r2, [sp, #28] 8023068:	f3c2 0313 	ubfx	r3, r2, #0, #20 802306c:	bb4b      	cbnz	r3, 80230c2 <_strtod_r+0xb42> 802306e:	4643      	mov	r3, r8 8023070:	f6c7 73f0 	movt	r3, #32752	; 0x7ff0 8023074:	4013      	ands	r3, r2 8023076:	f1b3 6fd6 	cmp.w	r3, #112197632	; 0x6b00000 802307a:	d922      	bls.n	80230c2 <_strtod_r+0xb42> 802307c:	6973      	ldr	r3, [r6, #20] 802307e:	b913      	cbnz	r3, 8023086 <_strtod_r+0xb06> 8023080:	6933      	ldr	r3, [r6, #16] 8023082:	2b01      	cmp	r3, #1 8023084:	dd1d      	ble.n	80230c2 <_strtod_r+0xb42> 8023086:	4631      	mov	r1, r6 8023088:	2201      	movs	r2, #1 802308a:	4658      	mov	r0, fp 802308c:	f001 fdb6 	bl	8024bfc <__lshift> 8023090:	4639      	mov	r1, r7 8023092:	4606      	mov	r6, r0 8023094:	f001 fe0c 	bl	8024cb0 <__mcmp> 8023098:	2800      	cmp	r0, #0 802309a:	dd12      	ble.n	80230c2 <_strtod_r+0xb42> 802309c:	9d0b      	ldr	r5, [sp, #44]	; 0x2c 802309e:	2d00      	cmp	r5, #0 80230a0:	f040 8195 	bne.w	80233ce <_strtod_r+0xe4e> 80230a4:	9807      	ldr	r0, [sp, #28] 80230a6:	f020 4300 	bic.w	r3, r0, #2147483648	; 0x80000000 80230aa:	0d1b      	lsrs	r3, r3, #20 80230ac:	051b      	lsls	r3, r3, #20 80230ae:	f5a3 1380 	sub.w	r3, r3, #1048576	; 0x100000 80230b2:	f04f 32ff 	mov.w	r2, #4294967295 80230b6:	9206      	str	r2, [sp, #24] 80230b8:	ea6f 5313 	mvn.w	r3, r3, lsr #20 80230bc:	ea6f 5303 	mvn.w	r3, r3, lsl #20 80230c0:	9307      	str	r3, [sp, #28] 80230c2:	9d0b      	ldr	r5, [sp, #44]	; 0x2c 80230c4:	2d00      	cmp	r5, #0 80230c6:	f000 80c8 	beq.w	802325a <_strtod_r+0xcda> 80230ca:	2200      	movs	r2, #0 80230cc:	2300      	movs	r3, #0 80230ce:	f6c3 1250 	movt	r2, #14672	; 0x3950 80230d2:	9314      	str	r3, [sp, #80]	; 0x50 80230d4:	9215      	str	r2, [sp, #84]	; 0x54 80230d6:	e9dd 0106 	ldrd	r0, r1, [sp, #24] 80230da:	e9dd 2314 	ldrd	r2, r3, [sp, #80]	; 0x50 80230de:	f7fd fa6f 	bl	80205c0 <__aeabi_dmul> 80230e2:	e9cd 0106 	strd	r0, r1, [sp, #24] 80230e6:	468a      	mov	sl, r1 80230e8:	9907      	ldr	r1, [sp, #28] 80230ea:	4681      	mov	r9, r0 80230ec:	2900      	cmp	r1, #0 80230ee:	f47f aee4 	bne.w	8022eba <_strtod_r+0x93a> 80230f2:	9a06      	ldr	r2, [sp, #24] 80230f4:	2a00      	cmp	r2, #0 80230f6:	f47f aee0 	bne.w	8022eba <_strtod_r+0x93a> 80230fa:	e6fe      	b.n	8022efa <_strtod_r+0x97a> 80230fc:	9d0f      	ldr	r5, [sp, #60]	; 0x3c 80230fe:	4654      	mov	r4, sl 8023100:	f8dd 9024 	ldr.w	r9, [sp, #36]	; 0x24 8023104:	f8dd a028 	ldr.w	sl, [sp, #40]	; 0x28 8023108:	2d00      	cmp	r5, #0 802310a:	f000 80d3 	beq.w	80232b4 <_strtod_r+0xd34> 802310e:	9b07      	ldr	r3, [sp, #28] 8023110:	f64f 72ff 	movw	r2, #65535	; 0xffff 8023114:	f2c0 020f 	movt	r2, #15 8023118:	f023 417f 	bic.w	r1, r3, #4278190080	; 0xff000000 802311c:	f421 0170 	bic.w	r1, r1, #15728640	; 0xf00000 8023120:	4291      	cmp	r1, r2 8023122:	9906      	ldr	r1, [sp, #24] 8023124:	f000 8119 	beq.w	802335a <_strtod_r+0xdda> 8023128:	07cb      	lsls	r3, r1, #31 802312a:	d5ca      	bpl.n	80230c2 <_strtod_r+0xb42> 802312c:	4648      	mov	r0, r9 802312e:	4651      	mov	r1, sl 8023130:	f001 fe52 	bl	8024dd8 <__ulp> 8023134:	4602      	mov	r2, r0 8023136:	460b      	mov	r3, r1 8023138:	4648      	mov	r0, r9 802313a:	4651      	mov	r1, sl 802313c:	f7fd f88e 	bl	802025c <__adddf3> 8023140:	e9cd 0106 	strd	r0, r1, [sp, #24] 8023144:	e7bd      	b.n	80230c2 <_strtod_r+0xb42> 8023146:	9814      	ldr	r0, [sp, #80]	; 0x50 8023148:	3001      	adds	r0, #1 802314a:	f47f ae85 	bne.w	8022e58 <_strtod_r+0x8d8> 802314e:	2000      	movs	r0, #0 8023150:	4654      	mov	r4, sl 8023152:	4601      	mov	r1, r0 8023154:	2322      	movs	r3, #34	; 0x22 8023156:	f6c7 71f0 	movt	r1, #32752	; 0x7ff0 802315a:	f8cb 3000 	str.w	r3, [fp] 802315e:	9107      	str	r1, [sp, #28] 8023160:	4681      	mov	r9, r0 8023162:	9006      	str	r0, [sp, #24] 8023164:	468a      	mov	sl, r1 8023166:	e6a8      	b.n	8022eba <_strtod_r+0x93a> 8023168:	2300      	movs	r3, #0 802316a:	2500      	movs	r5, #0 802316c:	461c      	mov	r4, r3 802316e:	9506      	str	r5, [sp, #24] 8023170:	f6c7 74f0 	movt	r4, #32752	; 0x7ff0 8023174:	2322      	movs	r3, #34	; 0x22 8023176:	9407      	str	r4, [sp, #28] 8023178:	46a9      	mov	r9, r5 802317a:	f8cb 3000 	str.w	r3, [fp] 802317e:	46a2      	mov	sl, r4 8023180:	f7ff bb4b 	b.w	802281a <_strtod_r+0x29a> 8023184:	f43f ac35 	beq.w	80229f2 <_strtod_r+0x472> 8023188:	4264      	negs	r4, r4 802318a:	f014 020f 	ands.w	r2, r4, #15 802318e:	d00d      	beq.n	80231ac <_strtod_r+0xc2c> 8023190:	f646 23d0 	movw	r3, #27344	; 0x6ad0 8023194:	e9dd 0106 	ldrd	r0, r1, [sp, #24] 8023198:	f6c0 0303 	movt	r3, #2051	; 0x803 802319c:	eb03 03c2 	add.w	r3, r3, r2, lsl #3 80231a0:	e9d3 2300 	ldrd	r2, r3, [r3] 80231a4:	f7fd fb36 	bl	8020814 <__aeabi_ddiv> 80231a8:	e9cd 0106 	strd	r0, r1, [sp, #24] 80231ac:	1124      	asrs	r4, r4, #4 80231ae:	f43f ac20 	beq.w	80229f2 <_strtod_r+0x472> 80231b2:	2c1f      	cmp	r4, #31 80231b4:	dc40      	bgt.n	8023238 <_strtod_r+0xcb8> 80231b6:	f014 0f10 	tst.w	r4, #16 80231ba:	bf14      	ite	ne 80231bc:	256a      	movne	r5, #106	; 0x6a 80231be:	2500      	moveq	r5, #0 80231c0:	2c00      	cmp	r4, #0 80231c2:	950b      	str	r5, [sp, #44]	; 0x2c 80231c4:	dd17      	ble.n	80231f6 <_strtod_r+0xc76> 80231c6:	f646 2598 	movw	r5, #27288	; 0x6a98 80231ca:	e9dd 2306 	ldrd	r2, r3, [sp, #24] 80231ce:	f6c0 0503 	movt	r5, #2051	; 0x803 80231d2:	f014 0f01 	tst.w	r4, #1 80231d6:	4610      	mov	r0, r2 80231d8:	4619      	mov	r1, r3 80231da:	d005      	beq.n	80231e8 <_strtod_r+0xc68> 80231dc:	e9d5 2300 	ldrd	r2, r3, [r5] 80231e0:	f7fd f9ee 	bl	80205c0 <__aeabi_dmul> 80231e4:	4602      	mov	r2, r0 80231e6:	460b      	mov	r3, r1 80231e8:	3508      	adds	r5, #8 80231ea:	1064      	asrs	r4, r4, #1 80231ec:	d1f1      	bne.n	80231d2 <_strtod_r+0xc52> 80231ee:	4610      	mov	r0, r2 80231f0:	4619      	mov	r1, r3 80231f2:	e9cd 0106 	strd	r0, r1, [sp, #24] 80231f6:	9c0b      	ldr	r4, [sp, #44]	; 0x2c 80231f8:	b18c      	cbz	r4, 802321e <_strtod_r+0xc9e> 80231fa:	9a07      	ldr	r2, [sp, #28] 80231fc:	f3c2 530a 	ubfx	r3, r2, #20, #11 8023200:	f1c3 036b 	rsb	r3, r3, #107	; 0x6b 8023204:	2b00      	cmp	r3, #0 8023206:	dd0a      	ble.n	802321e <_strtod_r+0xc9e> 8023208:	2b1f      	cmp	r3, #31 802320a:	f340 810a 	ble.w	8023422 <_strtod_r+0xea2> 802320e:	2100      	movs	r1, #0 8023210:	2b34      	cmp	r3, #52	; 0x34 8023212:	9106      	str	r1, [sp, #24] 8023214:	f340 810d 	ble.w	8023432 <_strtod_r+0xeb2> 8023218:	f04f 725c 	mov.w	r2, #57671680	; 0x3700000 802321c:	9207      	str	r2, [sp, #28] 802321e:	9d06      	ldr	r5, [sp, #24] 8023220:	2200      	movs	r2, #0 8023222:	9c07      	ldr	r4, [sp, #28] 8023224:	2300      	movs	r3, #0 8023226:	4628      	mov	r0, r5 8023228:	46a9      	mov	r9, r5 802322a:	4621      	mov	r1, r4 802322c:	46a2      	mov	sl, r4 802322e:	f7fd fc2f 	bl	8020a90 <__aeabi_dcmpeq> 8023232:	2800      	cmp	r0, #0 8023234:	f43f abe2 	beq.w	80229fc <_strtod_r+0x47c> 8023238:	f04f 0900 	mov.w	r9, #0 802323c:	2322      	movs	r3, #34	; 0x22 802323e:	46ca      	mov	sl, r9 8023240:	f8cb 3000 	str.w	r3, [fp] 8023244:	f7ff bae9 	b.w	802281a <_strtod_r+0x29a> 8023248:	9a0f      	ldr	r2, [sp, #60]	; 0x3c 802324a:	2300      	movs	r3, #0 802324c:	4699      	mov	r9, r3 802324e:	f6cb 73e0 	movt	r3, #49120	; 0xbfe0 8023252:	f6c3 79e0 	movt	r9, #16352	; 0x3fe0 8023256:	920c      	str	r2, [sp, #48]	; 0x30 8023258:	e5bf      	b.n	8022dda <_strtod_r+0x85a> 802325a:	f8dd 9018 	ldr.w	r9, [sp, #24] 802325e:	f8dd a01c 	ldr.w	sl, [sp, #28] 8023262:	e62a      	b.n	8022eba <_strtod_r+0x93a> 8023264:	f04f 0900 	mov.w	r9, #0 8023268:	3601      	adds	r6, #1 802326a:	46ca      	mov	sl, r9 802326c:	9617      	str	r6, [sp, #92]	; 0x5c 802326e:	f7ff bad4 	b.w	802281a <_strtod_r+0x29a> 8023272:	9c09      	ldr	r4, [sp, #36]	; 0x24 8023274:	f1c8 0325 	rsb	r3, r8, #37	; 0x25 8023278:	429c      	cmp	r4, r3 802327a:	f73f ab9d 	bgt.w	80229b8 <_strtod_r+0x438> 802327e:	f1c8 080f 	rsb	r8, r8, #15 8023282:	f646 24d0 	movw	r4, #27344	; 0x6ad0 8023286:	f6c0 0403 	movt	r4, #2051	; 0x803 802328a:	e9dd 2306 	ldrd	r2, r3, [sp, #24] 802328e:	eb04 01c8 	add.w	r1, r4, r8, lsl #3 8023292:	e9d1 0100 	ldrd	r0, r1, [r1] 8023296:	f7fd f993 	bl	80205c0 <__aeabi_dmul> 802329a:	9d09      	ldr	r5, [sp, #36]	; 0x24 802329c:	ebc8 0805 	rsb	r8, r8, r5 80232a0:	eb04 04c8 	add.w	r4, r4, r8, lsl #3 80232a4:	e9d4 2300 	ldrd	r2, r3, [r4] 80232a8:	f7fd f98a 	bl	80205c0 <__aeabi_dmul> 80232ac:	4681      	mov	r9, r0 80232ae:	468a      	mov	sl, r1 80232b0:	f7ff bab3 	b.w	802281a <_strtod_r+0x29a> 80232b4:	9907      	ldr	r1, [sp, #28] 80232b6:	f3c1 0313 	ubfx	r3, r1, #0, #20 80232ba:	2b00      	cmp	r3, #0 80232bc:	d141      	bne.n	8023342 <_strtod_r+0xdc2> 80232be:	9b06      	ldr	r3, [sp, #24] 80232c0:	2b00      	cmp	r3, #0 80232c2:	f43f aeeb 	beq.w	802309c <_strtod_r+0xb1c> 80232c6:	07da      	lsls	r2, r3, #31 80232c8:	f57f aefb 	bpl.w	80230c2 <_strtod_r+0xb42> 80232cc:	4648      	mov	r0, r9 80232ce:	4651      	mov	r1, sl 80232d0:	f001 fd82 	bl	8024dd8 <__ulp> 80232d4:	4602      	mov	r2, r0 80232d6:	460b      	mov	r3, r1 80232d8:	4648      	mov	r0, r9 80232da:	4651      	mov	r1, sl 80232dc:	f7fc ffbc 	bl	8020258 <__aeabi_dsub> 80232e0:	4602      	mov	r2, r0 80232e2:	460b      	mov	r3, r1 80232e4:	e9cd 2306 	strd	r2, r3, [sp, #24] 80232e8:	2200      	movs	r2, #0 80232ea:	2300      	movs	r3, #0 80232ec:	f7fd fbd0 	bl	8020a90 <__aeabi_dcmpeq> 80232f0:	2800      	cmp	r0, #0 80232f2:	f47f adff 	bne.w	8022ef4 <_strtod_r+0x974> 80232f6:	e6e4      	b.n	80230c2 <_strtod_r+0xb42> 80232f8:	9d09      	ldr	r5, [sp, #36]	; 0x24 80232fa:	426d      	negs	r5, r5 80232fc:	950d      	str	r5, [sp, #52]	; 0x34 80232fe:	f7ff bb8b 	b.w	8022a18 <_strtod_r+0x498> 8023302:	9c09      	ldr	r4, [sp, #36]	; 0x24 8023304:	f114 0f16 	cmn.w	r4, #22 8023308:	f6ff ab56 	blt.w	80229b8 <_strtod_r+0x438> 802330c:	f646 23d0 	movw	r3, #27344	; 0x6ad0 8023310:	e9dd 0106 	ldrd	r0, r1, [sp, #24] 8023314:	f6c0 0303 	movt	r3, #2051	; 0x803 8023318:	eba3 03c4 	sub.w	r3, r3, r4, lsl #3 802331c:	e9d3 2300 	ldrd	r2, r3, [r3] 8023320:	f7fd fa78 	bl	8020814 <__aeabi_ddiv> 8023324:	4681      	mov	r9, r0 8023326:	468a      	mov	sl, r1 8023328:	f7ff ba77 	b.w	802281a <_strtod_r+0x29a> 802332c:	2000      	movs	r0, #0 802332e:	f1b8 0f10 	cmp.w	r8, #16 8023332:	f73f ae8e 	bgt.w	8023052 <_strtod_r+0xad2> 8023336:	eb0a 0a8a 	add.w	sl, sl, sl, lsl #2 802333a:	2000      	movs	r0, #0 802333c:	eb01 0a4a 	add.w	sl, r1, sl, lsl #1 8023340:	e687      	b.n	8023052 <_strtod_r+0xad2> 8023342:	9b06      	ldr	r3, [sp, #24] 8023344:	e7bf      	b.n	80232c6 <_strtod_r+0xd46> 8023346:	f101 7154 	add.w	r1, r1, #55574528	; 0x3500000 802334a:	2400      	movs	r4, #0 802334c:	9107      	str	r1, [sp, #28] 802334e:	468a      	mov	sl, r1 8023350:	940b      	str	r4, [sp, #44]	; 0x2c 8023352:	f8dd 9018 	ldr.w	r9, [sp, #24] 8023356:	f7ff bb51 	b.w	80229fc <_strtod_r+0x47c> 802335a:	9d0b      	ldr	r5, [sp, #44]	; 0x2c 802335c:	b1d5      	cbz	r5, 8023394 <_strtod_r+0xe14> 802335e:	2200      	movs	r2, #0 8023360:	f6c7 72f0 	movt	r2, #32752	; 0x7ff0 8023364:	401a      	ands	r2, r3 8023366:	f1b2 6fd4 	cmp.w	r2, #111149056	; 0x6a00000 802336a:	d813      	bhi.n	8023394 <_strtod_r+0xe14> 802336c:	0d12      	lsrs	r2, r2, #20 802336e:	f04f 30ff 	mov.w	r0, #4294967295 8023372:	f1c2 026b 	rsb	r2, r2, #107	; 0x6b 8023376:	fa00 f202 	lsl.w	r2, r0, r2 802337a:	4291      	cmp	r1, r2 802337c:	f47f aed4 	bne.w	8023128 <_strtod_r+0xba8> 8023380:	2200      	movs	r2, #0 8023382:	2000      	movs	r0, #0 8023384:	f6c7 72f0 	movt	r2, #32752	; 0x7ff0 8023388:	9006      	str	r0, [sp, #24] 802338a:	401a      	ands	r2, r3 802338c:	f502 1280 	add.w	r2, r2, #1048576	; 0x100000 8023390:	9207      	str	r2, [sp, #28] 8023392:	e696      	b.n	80230c2 <_strtod_r+0xb42> 8023394:	f04f 32ff 	mov.w	r2, #4294967295 8023398:	e7ef      	b.n	802337a <_strtod_r+0xdfa> 802339a:	4c2a      	ldr	r4, [pc, #168]	; (8023444 <_strtod_r+0xec4>) 802339c:	4611      	mov	r1, r2 802339e:	9217      	str	r2, [sp, #92]	; 0x5c 80233a0:	f814 0f01 	ldrb.w	r0, [r4, #1]! 80233a4:	460b      	mov	r3, r1 80233a6:	b310      	cbz	r0, 80233ee <_strtod_r+0xe6e> 80233a8:	785b      	ldrb	r3, [r3, #1] 80233aa:	3101      	adds	r1, #1 80233ac:	2b40      	cmp	r3, #64	; 0x40 80233ae:	dd02      	ble.n	80233b6 <_strtod_r+0xe36> 80233b0:	2b5a      	cmp	r3, #90	; 0x5a 80233b2:	bfd8      	it	le 80233b4:	3320      	addle	r3, #32 80233b6:	4283      	cmp	r3, r0 80233b8:	d0f2      	beq.n	80233a0 <_strtod_r+0xe20> 80233ba:	3201      	adds	r2, #1 80233bc:	9217      	str	r2, [sp, #92]	; 0x5c 80233be:	2500      	movs	r5, #0 80233c0:	9506      	str	r5, [sp, #24] 80233c2:	4628      	mov	r0, r5 80233c4:	f6c7 70f0 	movt	r0, #32752	; 0x7ff0 80233c8:	9007      	str	r0, [sp, #28] 80233ca:	f7ff baa9 	b.w	8022920 <_strtod_r+0x3a0> 80233ce:	9907      	ldr	r1, [sp, #28] 80233d0:	f021 4300 	bic.w	r3, r1, #2147483648	; 0x80000000 80233d4:	0d1b      	lsrs	r3, r3, #20 80233d6:	051b      	lsls	r3, r3, #20 80233d8:	f1b3 6fd6 	cmp.w	r3, #112197632	; 0x6b00000 80233dc:	f63f ae67 	bhi.w	80230ae <_strtod_r+0xb2e> 80233e0:	f1b3 7f5c 	cmp.w	r3, #57671680	; 0x3700000 80233e4:	f63f ae71 	bhi.w	80230ca <_strtod_r+0xb4a> 80233e8:	e584      	b.n	8022ef4 <_strtod_r+0x974> 80233ea:	4643      	mov	r3, r8 80233ec:	e627      	b.n	802303e <_strtod_r+0xabe> 80233ee:	3101      	adds	r1, #1 80233f0:	9117      	str	r1, [sp, #92]	; 0x5c 80233f2:	e7e4      	b.n	80233be <_strtod_r+0xe3e> 80233f4:	f04f 0900 	mov.w	r9, #0 80233f8:	f6c0 0a03 	movt	sl, #2051	; 0x803 80233fc:	e47f      	b.n	8022cfe <_strtod_r+0x77e> 80233fe:	a817      	add	r0, sp, #92	; 0x5c 8023400:	4911      	ldr	r1, [pc, #68]	; (8023448 <_strtod_r+0xec8>) 8023402:	aa1a      	add	r2, sp, #104	; 0x68 8023404:	f000 fd7e 	bl	8023f04 <__hexnan> 8023408:	2805      	cmp	r0, #5 802340a:	f47f aa83 	bne.w	8022914 <_strtod_r+0x394> 802340e:	9b1b      	ldr	r3, [sp, #108]	; 0x6c 8023410:	9a1a      	ldr	r2, [sp, #104]	; 0x68 8023412:	f043 43ff 	orr.w	r3, r3, #2139095040	; 0x7f800000 8023416:	f443 03e0 	orr.w	r3, r3, #7340032	; 0x700000 802341a:	9307      	str	r3, [sp, #28] 802341c:	9206      	str	r2, [sp, #24] 802341e:	f7ff ba7f 	b.w	8022920 <_strtod_r+0x3a0> 8023422:	f04f 32ff 	mov.w	r2, #4294967295 8023426:	9c06      	ldr	r4, [sp, #24] 8023428:	fa02 f303 	lsl.w	r3, r2, r3 802342c:	401c      	ands	r4, r3 802342e:	9406      	str	r4, [sp, #24] 8023430:	e6f5      	b.n	802321e <_strtod_r+0xc9e> 8023432:	f04f 31ff 	mov.w	r1, #4294967295 8023436:	3b20      	subs	r3, #32 8023438:	fa01 f303 	lsl.w	r3, r1, r3 802343c:	4013      	ands	r3, r2 802343e:	9307      	str	r3, [sp, #28] 8023440:	e6ed      	b.n	802321e <_strtod_r+0xc9e> 8023442:	bf00      	nop 8023444:	08041ec7 	.word	0x08041ec7 8023448:	20000018 	.word	0x200000180802344c <strtod>: 802344c:	f240 032c 	movw	r3, #44	; 0x2c 8023450:	460a      	mov	r2, r1 8023452:	f2c2 0300 	movt	r3, #8192	; 0x2000 8023456:	4601      	mov	r1, r0 8023458:	6818      	ldr	r0, [r3, #0] 802345a:	f7ff b891 	b.w	8022580 <_strtod_r> 802345e:	bf00      	nop08023460 <strtof>: 8023460:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 8023464:	f240 062c 	movw	r6, #44	; 0x2c 8023468:	f2c2 0600 	movt	r6, #8192	; 0x2000 802346c:	460a      	mov	r2, r1 802346e:	4601      	mov	r1, r0 8023470:	f04f 0801 	mov.w	r8, #1 8023474:	6830      	ldr	r0, [r6, #0] 8023476:	f7ff f883 	bl	8022580 <_strtod_r> 802347a:	460d      	mov	r5, r1 802347c:	4604      	mov	r4, r0 802347e:	f7fd fb61 	bl	8020b44 <__aeabi_d2f> 8023482:	2100      	movs	r1, #0 8023484:	4607      	mov	r7, r0 8023486:	f7fd fcff 	bl	8020e88 <__aeabi_fcmpeq> 802348a:	b908      	cbnz	r0, 8023490 <strtof+0x30> 802348c:	f04f 0800 	mov.w	r8, #0 8023490:	4620      	mov	r0, r4 8023492:	4629      	mov	r1, r5 8023494:	2200      	movs	r2, #0 8023496:	2300      	movs	r3, #0 8023498:	f04f 0901 	mov.w	r9, #1 802349c:	f7fd faf8 	bl	8020a90 <__aeabi_dcmpeq> 80234a0:	b108      	cbz	r0, 80234a6 <strtof+0x46> 80234a2:	f04f 0900 	mov.w	r9, #0 80234a6:	ea08 0809 	and.w	r8, r8, r9 80234aa:	f018 0fff 	tst.w	r8, #255	; 0xff 80234ae:	d116      	bne.n	80234de <strtof+0x7e> 80234b0:	f64f 71ff 	movw	r1, #65535	; 0xffff 80234b4:	4638      	mov	r0, r7 80234b6:	f6c7 717f 	movt	r1, #32639	; 0x7f7f 80234ba:	f7fd fd0d 	bl	8020ed8 <__aeabi_fcmpgt> 80234be:	b9a0      	cbnz	r0, 80234ea <strtof+0x8a> 80234c0:	4638      	mov	r0, r7 80234c2:	f46f 0100 	mvn.w	r1, #8388608	; 0x800000 80234c6:	f7fd fce9 	bl	8020e9c <__aeabi_fcmplt> 80234ca:	b158      	cbz	r0, 80234e4 <strtof+0x84> 80234cc:	4620      	mov	r0, r4 80234ce:	4629      	mov	r1, r5 80234d0:	f04f 32ff 	mov.w	r2, #4294967295 80234d4:	f46f 1380 	mvn.w	r3, #1048576	; 0x100000 80234d8:	f7fd fae4 	bl	8020aa4 <__aeabi_dcmplt> 80234dc:	b910      	cbnz	r0, 80234e4 <strtof+0x84> 80234de:	6833      	ldr	r3, [r6, #0] 80234e0:	2222      	movs	r2, #34	; 0x22 80234e2:	601a      	str	r2, [r3, #0] 80234e4:	4638      	mov	r0, r7 80234e6:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 80234ea:	f64f 73ff 	movw	r3, #65535	; 0xffff 80234ee:	4620      	mov	r0, r4 80234f0:	4629      	mov	r1, r5 80234f2:	f04f 32ff 	mov.w	r2, #4294967295 80234f6:	f6c7 73ef 	movt	r3, #32751	; 0x7fef 80234fa:	f7fd faf1 	bl	8020ae0 <__aeabi_dcmpgt> 80234fe:	2800      	cmp	r0, #0 8023500:	d0ed      	beq.n	80234de <strtof+0x7e> 8023502:	e7dd      	b.n	80234c0 <strtof+0x60> 8023504:	f3af 8000 	nop.w08023508 <_strtol_r>: 8023508:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 802350c:	f240 0400 	movw	r4, #0 8023510:	f2c2 0400 	movt	r4, #8192	; 0x2000 8023514:	b085      	sub	sp, #20 8023516:	4699      	mov	r9, r3 8023518:	460b      	mov	r3, r1 802351a:	f8d4 8000 	ldr.w	r8, [r4] 802351e:	9102      	str	r1, [sp, #8] 8023520:	9003      	str	r0, [sp, #12] 8023522:	461c      	mov	r4, r3 8023524:	f814 5b01 	ldrb.w	r5, [r4], #1 8023528:	eb08 0105 	add.w	r1, r8, r5 802352c:	4623      	mov	r3, r4 802352e:	7849      	ldrb	r1, [r1, #1] 8023530:	f001 0108 	and.w	r1, r1, #8 8023534:	b2c9      	uxtb	r1, r1 8023536:	2900      	cmp	r1, #0 8023538:	d1f3      	bne.n	8023522 <_strtol_r+0x1a> 802353a:	2d2d      	cmp	r5, #45	; 0x2d 802353c:	d07b      	beq.n	8023636 <_strtol_r+0x12e> 802353e:	2d2b      	cmp	r5, #43	; 0x2b 8023540:	bf05      	ittet	eq 8023542:	4624      	moveq	r4, r4 8023544:	460b      	moveq	r3, r1 8023546:	460b      	movne	r3, r1 8023548:	f814 5b01 	ldrbeq.w	r5, [r4], #1 802354c:	f039 0110 	bics.w	r1, r9, #16 8023550:	d112      	bne.n	8023578 <_strtol_r+0x70> 8023552:	f1d9 0001 	rsbs	r0, r9, #1 8023556:	bf38      	it	cc 8023558:	2000      	movcc	r0, #0 802355a:	2d30      	cmp	r5, #48	; 0x30 802355c:	d004      	beq.n	8023568 <_strtol_r+0x60> 802355e:	b158      	cbz	r0, 8023578 <_strtol_r+0x70> 8023560:	f04f 090a 	mov.w	r9, #10 8023564:	46cb      	mov	fp, r9 8023566:	e008      	b.n	802357a <_strtol_r+0x72> 8023568:	7821      	ldrb	r1, [r4, #0] 802356a:	f001 01df 	and.w	r1, r1, #223	; 0xdf 802356e:	2958      	cmp	r1, #88	; 0x58 8023570:	d065      	beq.n	802363e <_strtol_r+0x136> 8023572:	b108      	cbz	r0, 8023578 <_strtol_r+0x70> 8023574:	f04f 0908 	mov.w	r9, #8 8023578:	46cb      	mov	fp, r9 802357a:	2b00      	cmp	r3, #0 802357c:	4659      	mov	r1, fp 802357e:	bf0c      	ite	eq 8023580:	f06f 4600 	mvneq.w	r6, #2147483648	; 0x80000000 8023584:	f04f 4600 	movne.w	r6, #2147483648	; 0x80000000 8023588:	e88d 000c 	stmia.w	sp, {r2, r3} 802358c:	4630      	mov	r0, r6 802358e:	2700      	movs	r7, #0 8023590:	f7fe f964 	bl	802185c <__aeabi_uidivmod> 8023594:	4630      	mov	r0, r6 8023596:	468a      	mov	sl, r1 8023598:	4659      	mov	r1, fp 802359a:	f7fe f831 	bl	8021600 <__aeabi_uidiv> 802359e:	46bc      	mov	ip, r7 80235a0:	e89d 000c 	ldmia.w	sp, {r2, r3} 80235a4:	e016      	b.n	80235d4 <_strtol_r+0xcc> 80235a6:	3d30      	subs	r5, #48	; 0x30 80235a8:	45a9      	cmp	r9, r5 80235aa:	dd25      	ble.n	80235f8 <_strtol_r+0xf0> 80235ac:	4584      	cmp	ip, r0 80235ae:	bf94      	ite	ls 80235b0:	2100      	movls	r1, #0 80235b2:	2101      	movhi	r1, #1 80235b4:	ea51 77d7 	orrs.w	r7, r1, r7, lsr #31 80235b8:	d129      	bne.n	802360e <_strtol_r+0x106> 80235ba:	4555      	cmp	r5, sl 80235bc:	bfd4      	ite	le 80235be:	2100      	movle	r1, #0 80235c0:	2101      	movgt	r1, #1 80235c2:	4584      	cmp	ip, r0 80235c4:	bf18      	it	ne 80235c6:	2100      	movne	r1, #0 80235c8:	bb09      	cbnz	r1, 802360e <_strtol_r+0x106> 80235ca:	fb0b 5c0c 	mla	ip, fp, ip, r5 80235ce:	2701      	movs	r7, #1 80235d0:	f814 5b01 	ldrb.w	r5, [r4], #1 80235d4:	eb08 0105 	add.w	r1, r8, r5 80235d8:	7849      	ldrb	r1, [r1, #1] 80235da:	f001 0604 	and.w	r6, r1, #4 80235de:	b2f6      	uxtb	r6, r6 80235e0:	2e00      	cmp	r6, #0 80235e2:	d1e0      	bne.n	80235a6 <_strtol_r+0x9e> 80235e4:	f011 0103 	ands.w	r1, r1, #3 80235e8:	d006      	beq.n	80235f8 <_strtol_r+0xf0> 80235ea:	2901      	cmp	r1, #1 80235ec:	bf14      	ite	ne 80235ee:	2157      	movne	r1, #87	; 0x57 80235f0:	2137      	moveq	r1, #55	; 0x37 80235f2:	1a6d      	subs	r5, r5, r1 80235f4:	45a9      	cmp	r9, r5 80235f6:	dcd9      	bgt.n	80235ac <_strtol_r+0xa4> 80235f8:	1c79      	adds	r1, r7, #1 80235fa:	d00b      	beq.n	8023614 <_strtol_r+0x10c> 80235fc:	b9c3      	cbnz	r3, 8023630 <_strtol_r+0x128> 80235fe:	4660      	mov	r0, ip 8023600:	b112      	cbz	r2, 8023608 <_strtol_r+0x100> 8023602:	b997      	cbnz	r7, 802362a <_strtol_r+0x122> 8023604:	9b02      	ldr	r3, [sp, #8] 8023606:	6013      	str	r3, [r2, #0] 8023608:	b005      	add	sp, #20 802360a:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802360e:	f04f 37ff 	mov.w	r7, #4294967295 8023612:	e7dd      	b.n	80235d0 <_strtol_r+0xc8> 8023614:	9903      	ldr	r1, [sp, #12] 8023616:	2b00      	cmp	r3, #0 8023618:	bf0c      	ite	eq 802361a:	f06f 4000 	mvneq.w	r0, #2147483648	; 0x80000000 802361e:	f04f 4000 	movne.w	r0, #2147483648	; 0x80000000 8023622:	2322      	movs	r3, #34	; 0x22 8023624:	600b      	str	r3, [r1, #0] 8023626:	2a00      	cmp	r2, #0 8023628:	d0ee      	beq.n	8023608 <_strtol_r+0x100> 802362a:	3c01      	subs	r4, #1 802362c:	9402      	str	r4, [sp, #8] 802362e:	e7e9      	b.n	8023604 <_strtol_r+0xfc> 8023630:	f1cc 0c00 	rsb	ip, ip, #0 8023634:	e7e3      	b.n	80235fe <_strtol_r+0xf6> 8023636:	f814 5b01 	ldrb.w	r5, [r4], #1 802363a:	2301      	movs	r3, #1 802363c:	e786      	b.n	802354c <_strtol_r+0x44> 802363e:	f04f 0910 	mov.w	r9, #16 8023642:	7865      	ldrb	r5, [r4, #1] 8023644:	46cb      	mov	fp, r9 8023646:	3402      	adds	r4, #2 8023648:	e797      	b.n	802357a <_strtol_r+0x72> 802364a:	bf00      	nop0802364c <strtol>: 802364c:	b430      	push	{r4, r5} 802364e:	f240 042c 	movw	r4, #44	; 0x2c 8023652:	f2c2 0400 	movt	r4, #8192	; 0x2000 8023656:	460d      	mov	r5, r1 8023658:	4613      	mov	r3, r2 802365a:	4601      	mov	r1, r0 802365c:	462a      	mov	r2, r5 802365e:	6820      	ldr	r0, [r4, #0] 8023660:	bc30      	pop	{r4, r5} 8023662:	f7ff bf51 	b.w	8023508 <_strtol_r> 8023666:	bf00      	nop08023668 <_malloc_trim_r>: 8023668:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 802366a:	f240 149c 	movw	r4, #412	; 0x19c 802366e:	f2c2 0400 	movt	r4, #8192	; 0x2000 8023672:	460f      	mov	r7, r1 8023674:	4605      	mov	r5, r0 8023676:	f001 f895 	bl	80247a4 <__malloc_lock> 802367a:	68a3      	ldr	r3, [r4, #8] 802367c:	685e      	ldr	r6, [r3, #4] 802367e:	f026 0603 	bic.w	r6, r6, #3 8023682:	f606 73ef 	addw	r3, r6, #4079	; 0xfef 8023686:	1bdf      	subs	r7, r3, r7 8023688:	0b3f      	lsrs	r7, r7, #12 802368a:	3f01      	subs	r7, #1 802368c:	033f      	lsls	r7, r7, #12 802368e:	f5b7 5f80 	cmp.w	r7, #4096	; 0x1000 8023692:	db07      	blt.n	80236a4 <_malloc_trim_r+0x3c> 8023694:	2100      	movs	r1, #0 8023696:	4628      	mov	r0, r5 8023698:	f001 fd10 	bl	80250bc <_sbrk_r> 802369c:	68a3      	ldr	r3, [r4, #8] 802369e:	199b      	adds	r3, r3, r6 80236a0:	4298      	cmp	r0, r3 80236a2:	d004      	beq.n	80236ae <_malloc_trim_r+0x46> 80236a4:	4628      	mov	r0, r5 80236a6:	f001 f87f 	bl	80247a8 <__malloc_unlock> 80236aa:	2000      	movs	r0, #0 80236ac:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 80236ae:	4279      	negs	r1, r7 80236b0:	4628      	mov	r0, r5 80236b2:	f001 fd03 	bl	80250bc <_sbrk_r> 80236b6:	3001      	adds	r0, #1 80236b8:	d010      	beq.n	80236dc <_malloc_trim_r+0x74> 80236ba:	f641 13a8 	movw	r3, #6568	; 0x19a8 80236be:	68a1      	ldr	r1, [r4, #8] 80236c0:	f2c2 0300 	movt	r3, #8192	; 0x2000 80236c4:	1bf6      	subs	r6, r6, r7 80236c6:	4628      	mov	r0, r5 80236c8:	f046 0601 	orr.w	r6, r6, #1 80236cc:	681a      	ldr	r2, [r3, #0] 80236ce:	604e      	str	r6, [r1, #4] 80236d0:	1bd7      	subs	r7, r2, r7 80236d2:	601f      	str	r7, [r3, #0] 80236d4:	f001 f868 	bl	80247a8 <__malloc_unlock> 80236d8:	2001      	movs	r0, #1 80236da:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 80236dc:	2100      	movs	r1, #0 80236de:	4628      	mov	r0, r5 80236e0:	f001 fcec 	bl	80250bc <_sbrk_r> 80236e4:	68a3      	ldr	r3, [r4, #8] 80236e6:	1ac2      	subs	r2, r0, r3 80236e8:	2a0f      	cmp	r2, #15 80236ea:	dddb      	ble.n	80236a4 <_malloc_trim_r+0x3c> 80236ec:	f240 54a4 	movw	r4, #1444	; 0x5a4 80236f0:	f641 11a8 	movw	r1, #6568	; 0x19a8 80236f4:	f2c2 0400 	movt	r4, #8192	; 0x2000 80236f8:	f2c2 0100 	movt	r1, #8192	; 0x2000 80236fc:	f042 0201 	orr.w	r2, r2, #1 8023700:	605a      	str	r2, [r3, #4] 8023702:	6823      	ldr	r3, [r4, #0] 8023704:	1ac0      	subs	r0, r0, r3 8023706:	6008      	str	r0, [r1, #0] 8023708:	e7cc      	b.n	80236a4 <_malloc_trim_r+0x3c> 802370a:	bf00      	nop0802370c <_free_r>: 802370c:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8023710:	460e      	mov	r6, r1 8023712:	4680      	mov	r8, r0 8023714:	2900      	cmp	r1, #0 8023716:	d05c      	beq.n	80237d2 <_free_r+0xc6> 8023718:	f001 f844 	bl	80247a4 <__malloc_lock> 802371c:	f240 159c 	movw	r5, #412	; 0x19c 8023720:	f856 1c04 	ldr.w	r1, [r6, #-4] 8023724:	f2c2 0500 	movt	r5, #8192	; 0x2000 8023728:	f1a6 0408 	sub.w	r4, r6, #8 802372c:	f021 0301 	bic.w	r3, r1, #1 8023730:	68af      	ldr	r7, [r5, #8] 8023732:	18e2      	adds	r2, r4, r3 8023734:	4297      	cmp	r7, r2 8023736:	6850      	ldr	r0, [r2, #4] 8023738:	f020 0003 	bic.w	r0, r0, #3 802373c:	d067      	beq.n	802380e <_free_r+0x102> 802373e:	f011 0101 	ands.w	r1, r1, #1 8023742:	6050      	str	r0, [r2, #4] 8023744:	d035      	beq.n	80237b2 <_free_r+0xa6> 8023746:	2100      	movs	r1, #0 8023748:	1816      	adds	r6, r2, r0 802374a:	6876      	ldr	r6, [r6, #4] 802374c:	f016 0f01 	tst.w	r6, #1 8023750:	d106      	bne.n	8023760 <_free_r+0x54> 8023752:	181b      	adds	r3, r3, r0 8023754:	6890      	ldr	r0, [r2, #8] 8023756:	2900      	cmp	r1, #0 8023758:	d04d      	beq.n	80237f6 <_free_r+0xea> 802375a:	68d2      	ldr	r2, [r2, #12] 802375c:	60c2      	str	r2, [r0, #12] 802375e:	6090      	str	r0, [r2, #8] 8023760:	f043 0201 	orr.w	r2, r3, #1 8023764:	50e3      	str	r3, [r4, r3] 8023766:	6062      	str	r2, [r4, #4] 8023768:	b9f1      	cbnz	r1, 80237a8 <_free_r+0x9c> 802376a:	f5b3 7f00 	cmp.w	r3, #512	; 0x200 802376e:	d332      	bcc.n	80237d6 <_free_r+0xca> 8023770:	0a5a      	lsrs	r2, r3, #9 8023772:	2a04      	cmp	r2, #4 8023774:	d86c      	bhi.n	8023850 <_free_r+0x144> 8023776:	0998      	lsrs	r0, r3, #6 8023778:	3038      	adds	r0, #56	; 0x38 802377a:	0041      	lsls	r1, r0, #1 802377c:	eb05 0581 	add.w	r5, r5, r1, lsl #2 8023780:	f240 119c 	movw	r1, #412	; 0x19c 8023784:	f2c2 0100 	movt	r1, #8192	; 0x2000 8023788:	68aa      	ldr	r2, [r5, #8] 802378a:	42aa      	cmp	r2, r5 802378c:	d06b      	beq.n	8023866 <_free_r+0x15a> 802378e:	6851      	ldr	r1, [r2, #4] 8023790:	f021 0103 	bic.w	r1, r1, #3 8023794:	428b      	cmp	r3, r1 8023796:	d202      	bcs.n	802379e <_free_r+0x92> 8023798:	6892      	ldr	r2, [r2, #8] 802379a:	4295      	cmp	r5, r2 802379c:	d1f7      	bne.n	802378e <_free_r+0x82> 802379e:	68d3      	ldr	r3, [r2, #12] 80237a0:	60e3      	str	r3, [r4, #12] 80237a2:	60a2      	str	r2, [r4, #8] 80237a4:	60d4      	str	r4, [r2, #12] 80237a6:	609c      	str	r4, [r3, #8] 80237a8:	4640      	mov	r0, r8 80237aa:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr} 80237ae:	f000 bffb 	b.w	80247a8 <__malloc_unlock> 80237b2:	f856 6c08 	ldr.w	r6, [r6, #-8] 80237b6:	f105 0c08 	add.w	ip, r5, #8 80237ba:	1ba4      	subs	r4, r4, r6 80237bc:	199b      	adds	r3, r3, r6 80237be:	68a6      	ldr	r6, [r4, #8] 80237c0:	4566      	cmp	r6, ip 80237c2:	d043      	beq.n	802384c <_free_r+0x140> 80237c4:	f8d4 c00c 	ldr.w	ip, [r4, #12] 80237c8:	f8c6 c00c 	str.w	ip, [r6, #12] 80237cc:	f8cc 6008 	str.w	r6, [ip, #8] 80237d0:	e7ba      	b.n	8023748 <_free_r+0x3c> 80237d2:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 80237d6:	08db      	lsrs	r3, r3, #3 80237d8:	2101      	movs	r1, #1 80237da:	6868      	ldr	r0, [r5, #4] 80237dc:	eb05 02c3 	add.w	r2, r5, r3, lsl #3 80237e0:	109b      	asrs	r3, r3, #2 80237e2:	fa01 f303 	lsl.w	r3, r1, r3 80237e6:	60e2      	str	r2, [r4, #12] 80237e8:	6891      	ldr	r1, [r2, #8] 80237ea:	4318      	orrs	r0, r3 80237ec:	6068      	str	r0, [r5, #4] 80237ee:	60a1      	str	r1, [r4, #8] 80237f0:	60cc      	str	r4, [r1, #12] 80237f2:	6094      	str	r4, [r2, #8] 80237f4:	e7d8      	b.n	80237a8 <_free_r+0x9c> 80237f6:	4e29      	ldr	r6, [pc, #164]	; (802389c <_free_r+0x190>) 80237f8:	42b0      	cmp	r0, r6 80237fa:	d1ae      	bne.n	802375a <_free_r+0x4e> 80237fc:	616c      	str	r4, [r5, #20] 80237fe:	f043 0201 	orr.w	r2, r3, #1 8023802:	612c      	str	r4, [r5, #16] 8023804:	60e0      	str	r0, [r4, #12] 8023806:	60a0      	str	r0, [r4, #8] 8023808:	6062      	str	r2, [r4, #4] 802380a:	50e3      	str	r3, [r4, r3] 802380c:	e7cc      	b.n	80237a8 <_free_r+0x9c> 802380e:	18c0      	adds	r0, r0, r3 8023810:	07cb      	lsls	r3, r1, #31 8023812:	d407      	bmi.n	8023824 <_free_r+0x118> 8023814:	f856 3c08 	ldr.w	r3, [r6, #-8] 8023818:	1ae4      	subs	r4, r4, r3 802381a:	18c0      	adds	r0, r0, r3 802381c:	68a2      	ldr	r2, [r4, #8] 802381e:	68e3      	ldr	r3, [r4, #12] 8023820:	60d3      	str	r3, [r2, #12] 8023822:	609a      	str	r2, [r3, #8] 8023824:	f240 52a8 	movw	r2, #1448	; 0x5a8 8023828:	f040 0301 	orr.w	r3, r0, #1 802382c:	f2c2 0200 	movt	r2, #8192	; 0x2000 8023830:	6063      	str	r3, [r4, #4] 8023832:	60ac      	str	r4, [r5, #8] 8023834:	6813      	ldr	r3, [r2, #0] 8023836:	4298      	cmp	r0, r3 8023838:	d3b6      	bcc.n	80237a8 <_free_r+0x9c> 802383a:	f641 13a4 	movw	r3, #6564	; 0x19a4 802383e:	4640      	mov	r0, r8 8023840:	f2c2 0300 	movt	r3, #8192	; 0x2000 8023844:	6819      	ldr	r1, [r3, #0] 8023846:	f7ff ff0f 	bl	8023668 <_malloc_trim_r> 802384a:	e7ad      	b.n	80237a8 <_free_r+0x9c> 802384c:	2101      	movs	r1, #1 802384e:	e77b      	b.n	8023748 <_free_r+0x3c> 8023850:	f102 005b 	add.w	r0, r2, #91	; 0x5b 8023854:	0041      	lsls	r1, r0, #1 8023856:	2a14      	cmp	r2, #20 8023858:	d990      	bls.n	802377c <_free_r+0x70> 802385a:	2a54      	cmp	r2, #84	; 0x54 802385c:	d80c      	bhi.n	8023878 <_free_r+0x16c> 802385e:	0b18      	lsrs	r0, r3, #12 8023860:	306e      	adds	r0, #110	; 0x6e 8023862:	0041      	lsls	r1, r0, #1 8023864:	e78a      	b.n	802377c <_free_r+0x70> 8023866:	2601      	movs	r6, #1 8023868:	684d      	ldr	r5, [r1, #4] 802386a:	1080      	asrs	r0, r0, #2 802386c:	4613      	mov	r3, r2 802386e:	fa06 f000 	lsl.w	r0, r6, r0 8023872:	4305      	orrs	r5, r0 8023874:	604d      	str	r5, [r1, #4] 8023876:	e793      	b.n	80237a0 <_free_r+0x94> 8023878:	f5b2 7faa 	cmp.w	r2, #340	; 0x154 802387c:	d803      	bhi.n	8023886 <_free_r+0x17a> 802387e:	0bd8      	lsrs	r0, r3, #15 8023880:	3077      	adds	r0, #119	; 0x77 8023882:	0041      	lsls	r1, r0, #1 8023884:	e77a      	b.n	802377c <_free_r+0x70> 8023886:	f240 5154 	movw	r1, #1364	; 0x554 802388a:	428a      	cmp	r2, r1 802388c:	d803      	bhi.n	8023896 <_free_r+0x18a> 802388e:	0c98      	lsrs	r0, r3, #18 8023890:	307c      	adds	r0, #124	; 0x7c 8023892:	0041      	lsls	r1, r0, #1 8023894:	e772      	b.n	802377c <_free_r+0x70> 8023896:	21fc      	movs	r1, #252	; 0xfc 8023898:	207e      	movs	r0, #126	; 0x7e 802389a:	e76f      	b.n	802377c <_free_r+0x70> 802389c:	200001a4 	.word	0x200001a4080238a0 <rshift>: 80238a0:	6902      	ldr	r2, [r0, #16] 80238a2:	114b      	asrs	r3, r1, #5 80238a4:	e92d 01f0 	stmdb	sp!, {r4, r5, r6, r7, r8} 80238a8:	4293      	cmp	r3, r2 80238aa:	f100 0714 	add.w	r7, r0, #20 80238ae:	da2d      	bge.n	802390c <rshift+0x6c> 80238b0:	3304      	adds	r3, #4 80238b2:	eb00 0282 	add.w	r2, r0, r2, lsl #2 80238b6:	3214      	adds	r2, #20 80238b8:	f011 011f 	ands.w	r1, r1, #31 80238bc:	eb00 0383 	add.w	r3, r0, r3, lsl #2 80238c0:	f103 0c04 	add.w	ip, r3, #4 80238c4:	d029      	beq.n	802391a <rshift+0x7a> 80238c6:	685c      	ldr	r4, [r3, #4] 80238c8:	f10c 0304 	add.w	r3, ip, #4 80238cc:	429a      	cmp	r2, r3 80238ce:	f1c1 0820 	rsb	r8, r1, #32 80238d2:	fa24 f401 	lsr.w	r4, r4, r1 80238d6:	d938      	bls.n	802394a <rshift+0xaa> 80238d8:	463d      	mov	r5, r7 80238da:	681e      	ldr	r6, [r3, #0] 80238dc:	fa06 f608 	lsl.w	r6, r6, r8 80238e0:	4334      	orrs	r4, r6 80238e2:	f845 4b04 	str.w	r4, [r5], #4 80238e6:	f853 4b04 	ldr.w	r4, [r3], #4 80238ea:	429a      	cmp	r2, r3 80238ec:	fa24 f401 	lsr.w	r4, r4, r1 80238f0:	d8f3      	bhi.n	80238da <rshift+0x3a> 80238f2:	ebcc 0302 	rsb	r3, ip, r2 80238f6:	3b05      	subs	r3, #5 80238f8:	f023 0303 	bic.w	r3, r3, #3 80238fc:	18c3      	adds	r3, r0, r3 80238fe:	3318      	adds	r3, #24 8023900:	601c      	str	r4, [r3, #0] 8023902:	b1e4      	cbz	r4, 802393e <rshift+0x9e> 8023904:	3304      	adds	r3, #4 8023906:	1bdf      	subs	r7, r3, r7 8023908:	10bf      	asrs	r7, r7, #2 802390a:	e01a      	b.n	8023942 <rshift+0xa2> 802390c:	2300      	movs	r3, #0 802390e:	6103      	str	r3, [r0, #16] 8023910:	2300      	movs	r3, #0 8023912:	6143      	str	r3, [r0, #20] 8023914:	e8bd 01f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8} 8023918:	4770      	bx	lr 802391a:	4562      	cmp	r2, ip 802391c:	bf84      	itt	hi 802391e:	4663      	movhi	r3, ip 8023920:	4639      	movhi	r1, r7 8023922:	d9f3      	bls.n	802390c <rshift+0x6c> 8023924:	f853 4b04 	ldr.w	r4, [r3], #4 8023928:	429a      	cmp	r2, r3 802392a:	f841 4b04 	str.w	r4, [r1], #4 802392e:	d8f9      	bhi.n	8023924 <rshift+0x84> 8023930:	ea6f 030c 	mvn.w	r3, ip 8023934:	189b      	adds	r3, r3, r2 8023936:	f023 0303 	bic.w	r3, r3, #3 802393a:	18c3      	adds	r3, r0, r3 802393c:	3318      	adds	r3, #24 802393e:	1bdf      	subs	r7, r3, r7 8023940:	10bf      	asrs	r7, r7, #2 8023942:	6107      	str	r7, [r0, #16] 8023944:	2f00      	cmp	r7, #0 8023946:	d1e5      	bne.n	8023914 <rshift+0x74> 8023948:	e7e2      	b.n	8023910 <rshift+0x70> 802394a:	463b      	mov	r3, r7 802394c:	e7d8      	b.n	8023900 <rshift+0x60> 802394e:	bf00      	nop08023950 <__hexdig_init>: 8023950:	f641 60e4 	movw	r0, #7908	; 0x1ee4 8023954:	f245 230c 	movw	r3, #21004	; 0x520c 8023958:	f6c0 0004 	movt	r0, #2052	; 0x804 802395c:	2110      	movs	r1, #16 802395e:	2230      	movs	r2, #48	; 0x30 8023960:	f2c2 0301 	movt	r3, #8193	; 0x2001 8023964:	5499      	strb	r1, [r3, r2] 8023966:	3101      	adds	r1, #1 8023968:	f810 2f01 	ldrb.w	r2, [r0, #1]! 802396c:	b2c9      	uxtb	r1, r1 802396e:	2a00      	cmp	r2, #0 8023970:	d1f8      	bne.n	8023964 <__hexdig_init+0x14> 8023972:	f641 60dc 	movw	r0, #7900	; 0x1edc 8023976:	211a      	movs	r1, #26 8023978:	f6c0 0004 	movt	r0, #2052	; 0x804 802397c:	2261      	movs	r2, #97	; 0x61 802397e:	5499      	strb	r1, [r3, r2] 8023980:	3101      	adds	r1, #1 8023982:	f810 2f01 	ldrb.w	r2, [r0, #1]! 8023986:	b2c9      	uxtb	r1, r1 8023988:	2a00      	cmp	r2, #0 802398a:	d1f8      	bne.n	802397e <__hexdig_init+0x2e> 802398c:	f641 60d4 	movw	r0, #7892	; 0x1ed4 8023990:	211a      	movs	r1, #26 8023992:	f6c0 0004 	movt	r0, #2052	; 0x804 8023996:	2241      	movs	r2, #65	; 0x41 8023998:	5499      	strb	r1, [r3, r2] 802399a:	3101      	adds	r1, #1 802399c:	f810 2f01 	ldrb.w	r2, [r0, #1]! 80239a0:	b2c9      	uxtb	r1, r1 80239a2:	2a00      	cmp	r2, #0 80239a4:	d1f8      	bne.n	8023998 <__hexdig_init+0x48> 80239a6:	4770      	bx	lr080239a8 <__gethex>: 80239a8:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 80239ac:	b08b      	sub	sp, #44	; 0x2c 80239ae:	4688      	mov	r8, r1 80239b0:	f245 260c 	movw	r6, #21004	; 0x520c 80239b4:	9206      	str	r2, [sp, #24] 80239b6:	f2c2 0601 	movt	r6, #8193	; 0x2001 80239ba:	9309      	str	r3, [sp, #36]	; 0x24 80239bc:	9007      	str	r0, [sp, #28] 80239be:	f000 fbb9 	bl	8024134 <_localeconv_r> 80239c2:	6800      	ldr	r0, [r0, #0] 80239c4:	9002      	str	r0, [sp, #8] 80239c6:	f7fe fa53 	bl	8021e70 <strlen> 80239ca:	9b02      	ldr	r3, [sp, #8] 80239cc:	181a      	adds	r2, r3, r0 80239ce:	f896 3030 	ldrb.w	r3, [r6, #48]	; 0x30 80239d2:	9003      	str	r0, [sp, #12] 80239d4:	f812 ac01 	ldrb.w	sl, [r2, #-1] 80239d8:	2b00      	cmp	r3, #0 80239da:	f000 810e 	beq.w	8023bfa <__gethex+0x252> 80239de:	f8d8 3000 	ldr.w	r3, [r8] 80239e2:	1c9d      	adds	r5, r3, #2 80239e4:	789a      	ldrb	r2, [r3, #2] 80239e6:	2a30      	cmp	r2, #48	; 0x30 80239e8:	f040 8200 	bne.w	8023dec <__gethex+0x444> 80239ec:	3303      	adds	r3, #3 80239ee:	2700      	movs	r7, #0 80239f0:	461d      	mov	r5, r3 80239f2:	f813 2b01 	ldrb.w	r2, [r3], #1 80239f6:	3701      	adds	r7, #1 80239f8:	2a30      	cmp	r2, #48	; 0x30 80239fa:	d0f9      	beq.n	80239f0 <__gethex+0x48> 80239fc:	f816 b002 	ldrb.w	fp, [r6, r2] 8023a00:	f245 290c 	movw	r9, #21004	; 0x520c 8023a04:	f2c2 0901 	movt	r9, #8193	; 0x2001 8023a08:	f1bb 0f00 	cmp.w	fp, #0 8023a0c:	f000 80f8 	beq.w	8023c00 <__gethex+0x258> 8023a10:	782b      	ldrb	r3, [r5, #0] 8023a12:	f04f 0b00 	mov.w	fp, #0 8023a16:	f819 4003 	ldrb.w	r4, [r9, r3] 8023a1a:	2c00      	cmp	r4, #0 8023a1c:	f000 8200 	beq.w	8023e20 <__gethex+0x478> 8023a20:	1c6a      	adds	r2, r5, #1 8023a22:	4614      	mov	r4, r2 8023a24:	3201      	adds	r2, #1 8023a26:	7823      	ldrb	r3, [r4, #0] 8023a28:	5cf3      	ldrb	r3, [r6, r3] 8023a2a:	2b00      	cmp	r3, #0 8023a2c:	d1f9      	bne.n	8023a22 <__gethex+0x7a> 8023a2e:	4699      	mov	r9, r3 8023a30:	4620      	mov	r0, r4 8023a32:	9902      	ldr	r1, [sp, #8] 8023a34:	9a03      	ldr	r2, [sp, #12] 8023a36:	f7fe fa7d 	bl	8021f34 <strncmp> 8023a3a:	b1e8      	cbz	r0, 8023a78 <__gethex+0xd0> 8023a3c:	7823      	ldrb	r3, [r4, #0] 8023a3e:	f1bb 0f00 	cmp.w	fp, #0 8023a42:	f000 81c1 	beq.w	8023dc8 <__gethex+0x420> 8023a46:	ebc4 0b0b 	rsb	fp, r4, fp 8023a4a:	ea4f 028b 	mov.w	r2, fp, lsl #2 8023a4e:	9205      	str	r2, [sp, #20] 8023a50:	2b50      	cmp	r3, #80	; 0x50 8023a52:	f000 809b 	beq.w	8023b8c <__gethex+0x1e4> 8023a56:	2b70      	cmp	r3, #112	; 0x70 8023a58:	f000 8098 	beq.w	8023b8c <__gethex+0x1e4> 8023a5c:	4622      	mov	r2, r4 8023a5e:	f8c8 2000 	str.w	r2, [r8] 8023a62:	f1b9 0f00 	cmp.w	r9, #0 8023a66:	d00d      	beq.n	8023a84 <__gethex+0xdc> 8023a68:	2f00      	cmp	r7, #0 8023a6a:	bf0c      	ite	eq 8023a6c:	2706      	moveq	r7, #6 8023a6e:	2700      	movne	r7, #0 8023a70:	4638      	mov	r0, r7 8023a72:	b00b      	add	sp, #44	; 0x2c 8023a74:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 8023a78:	f1bb 0f00 	cmp.w	fp, #0 8023a7c:	f000 81be 	beq.w	8023dfc <__gethex+0x454> 8023a80:	7823      	ldrb	r3, [r4, #0] 8023a82:	e7e0      	b.n	8023a46 <__gethex+0x9e> 8023a84:	1b63      	subs	r3, r4, r5 8023a86:	4649      	mov	r1, r9 8023a88:	3b01      	subs	r3, #1 8023a8a:	2b07      	cmp	r3, #7 8023a8c:	dd03      	ble.n	8023a96 <__gethex+0xee> 8023a8e:	105b      	asrs	r3, r3, #1 8023a90:	3101      	adds	r1, #1 8023a92:	2b07      	cmp	r3, #7 8023a94:	dcfb      	bgt.n	8023a8e <__gethex+0xe6> 8023a96:	9807      	ldr	r0, [sp, #28] 8023a98:	f000 fe88 	bl	80247ac <_Balloc> 8023a9c:	42a5      	cmp	r5, r4 8023a9e:	f100 0314 	add.w	r3, r0, #20 8023aa2:	9004      	str	r0, [sp, #16] 8023aa4:	9308      	str	r3, [sp, #32] 8023aa6:	f080 81db 	bcs.w	8023e60 <__gethex+0x4b8> 8023aaa:	469b      	mov	fp, r3 8023aac:	9b03      	ldr	r3, [sp, #12] 8023aae:	f04f 0800 	mov.w	r8, #0 8023ab2:	4647      	mov	r7, r8 8023ab4:	f1c3 0c01 	rsb	ip, r3, #1 8023ab8:	e00f      	b.n	8023ada <__gethex+0x132> 8023aba:	2f20      	cmp	r7, #32 8023abc:	d05f      	beq.n	8023b7e <__gethex+0x1d6> 8023abe:	463a      	mov	r2, r7 8023ac0:	3704      	adds	r7, #4 8023ac2:	f814 3c01 	ldrb.w	r3, [r4, #-1] 8023ac6:	464c      	mov	r4, r9 8023ac8:	42a5      	cmp	r5, r4 8023aca:	5cf3      	ldrb	r3, [r6, r3] 8023acc:	f003 030f 	and.w	r3, r3, #15 8023ad0:	fa03 f302 	lsl.w	r3, r3, r2 8023ad4:	ea48 0803 	orr.w	r8, r8, r3 8023ad8:	d219      	bcs.n	8023b0e <__gethex+0x166> 8023ada:	f814 3c01 	ldrb.w	r3, [r4, #-1] 8023ade:	f104 39ff 	add.w	r9, r4, #4294967295 8023ae2:	4553      	cmp	r3, sl 8023ae4:	d1e9      	bne.n	8023aba <__gethex+0x112> 8023ae6:	eb09 030c 	add.w	r3, r9, ip 8023aea:	429d      	cmp	r5, r3 8023aec:	d8e5      	bhi.n	8023aba <__gethex+0x112> 8023aee:	4618      	mov	r0, r3 8023af0:	9902      	ldr	r1, [sp, #8] 8023af2:	9a03      	ldr	r2, [sp, #12] 8023af4:	9301      	str	r3, [sp, #4] 8023af6:	f8cd c000 	str.w	ip, [sp] 8023afa:	f7fe fa1b 	bl	8021f34 <strncmp> 8023afe:	9b01      	ldr	r3, [sp, #4] 8023b00:	f8dd c000 	ldr.w	ip, [sp] 8023b04:	2800      	cmp	r0, #0 8023b06:	d1d8      	bne.n	8023aba <__gethex+0x112> 8023b08:	461c      	mov	r4, r3 8023b0a:	42a5      	cmp	r5, r4 8023b0c:	d3e5      	bcc.n	8023ada <__gethex+0x132> 8023b0e:	9b08      	ldr	r3, [sp, #32] 8023b10:	4640      	mov	r0, r8 8023b12:	f84b 8b04 	str.w	r8, [fp], #4 8023b16:	9904      	ldr	r1, [sp, #16] 8023b18:	ebc3 0b0b 	rsb	fp, r3, fp 8023b1c:	ea4f 03ab 	mov.w	r3, fp, asr #2 8023b20:	610b      	str	r3, [r1, #16] 8023b22:	015d      	lsls	r5, r3, #5 8023b24:	f000 ff24 	bl	8024970 <__hi0bits> 8023b28:	9a06      	ldr	r2, [sp, #24] 8023b2a:	6814      	ldr	r4, [r2, #0] 8023b2c:	1a28      	subs	r0, r5, r0 8023b2e:	42a0      	cmp	r0, r4 8023b30:	f300 8125 	bgt.w	8023d7e <__gethex+0x3d6> 8023b34:	f2c0 814b 	blt.w	8023dce <__gethex+0x426> 8023b38:	2500      	movs	r5, #0 8023b3a:	9806      	ldr	r0, [sp, #24] 8023b3c:	9905      	ldr	r1, [sp, #20] 8023b3e:	6883      	ldr	r3, [r0, #8] 8023b40:	4299      	cmp	r1, r3 8023b42:	f300 80f6 	bgt.w	8023d32 <__gethex+0x38a> 8023b46:	9806      	ldr	r0, [sp, #24] 8023b48:	9905      	ldr	r1, [sp, #20] 8023b4a:	6843      	ldr	r3, [r0, #4] 8023b4c:	4299      	cmp	r1, r3 8023b4e:	f280 8100 	bge.w	8023d52 <__gethex+0x3aa> 8023b52:	1a5e      	subs	r6, r3, r1 8023b54:	42b4      	cmp	r4, r6 8023b56:	dc76      	bgt.n	8023c46 <__gethex+0x29e> 8023b58:	68c2      	ldr	r2, [r0, #12] 8023b5a:	2a02      	cmp	r2, #2 8023b5c:	f000 816f 	beq.w	8023e3e <__gethex+0x496> 8023b60:	2a03      	cmp	r2, #3 8023b62:	f000 8198 	beq.w	8023e96 <__gethex+0x4ee> 8023b66:	2a01      	cmp	r2, #1 8023b68:	f000 8186 	beq.w	8023e78 <__gethex+0x4d0> 8023b6c:	9807      	ldr	r0, [sp, #28] 8023b6e:	2750      	movs	r7, #80	; 0x50 8023b70:	9904      	ldr	r1, [sp, #16] 8023b72:	f000 fe51 	bl	8024818 <_Bfree> 8023b76:	9814      	ldr	r0, [sp, #80]	; 0x50 8023b78:	2300      	movs	r3, #0 8023b7a:	6003      	str	r3, [r0, #0] 8023b7c:	e778      	b.n	8023a70 <__gethex+0xc8> 8023b7e:	f84b 8b04 	str.w	r8, [fp], #4 8023b82:	f04f 0800 	mov.w	r8, #0 8023b86:	2704      	movs	r7, #4 8023b88:	4642      	mov	r2, r8 8023b8a:	e79a      	b.n	8023ac2 <__gethex+0x11a> 8023b8c:	7863      	ldrb	r3, [r4, #1] 8023b8e:	2b2b      	cmp	r3, #43	; 0x2b 8023b90:	f000 80f2 	beq.w	8023d78 <__gethex+0x3d0> 8023b94:	2b2d      	cmp	r3, #45	; 0x2d 8023b96:	f000 80ea 	beq.w	8023d6e <__gethex+0x3c6> 8023b9a:	1c60      	adds	r0, r4, #1 8023b9c:	f04f 0b00 	mov.w	fp, #0 8023ba0:	5cf1      	ldrb	r1, [r6, r3] 8023ba2:	f245 230c 	movw	r3, #21004	; 0x520c 8023ba6:	f2c2 0301 	movt	r3, #8193	; 0x2001 8023baa:	2900      	cmp	r1, #0 8023bac:	f43f af56 	beq.w	8023a5c <__gethex+0xb4> 8023bb0:	2919      	cmp	r1, #25 8023bb2:	f73f af53 	bgt.w	8023a5c <__gethex+0xb4> 8023bb6:	f890 c001 	ldrb.w	ip, [r0, #1] 8023bba:	3910      	subs	r1, #16 8023bbc:	1c42      	adds	r2, r0, #1 8023bbe:	f813 300c 	ldrb.w	r3, [r3, ip] 8023bc2:	b193      	cbz	r3, 8023bea <__gethex+0x242> 8023bc4:	2b19      	cmp	r3, #25 8023bc6:	dc10      	bgt.n	8023bea <__gethex+0x242> 8023bc8:	3002      	adds	r0, #2 8023bca:	e001      	b.n	8023bd0 <__gethex+0x228> 8023bcc:	2b19      	cmp	r3, #25 8023bce:	dc0c      	bgt.n	8023bea <__gethex+0x242> 8023bd0:	4602      	mov	r2, r0 8023bd2:	eb01 0181 	add.w	r1, r1, r1, lsl #2 8023bd6:	3001      	adds	r0, #1 8023bd8:	f892 c000 	ldrb.w	ip, [r2] 8023bdc:	eb03 0141 	add.w	r1, r3, r1, lsl #1 8023be0:	3910      	subs	r1, #16 8023be2:	f816 300c 	ldrb.w	r3, [r6, ip] 8023be6:	2b00      	cmp	r3, #0 8023be8:	d1f0      	bne.n	8023bcc <__gethex+0x224> 8023bea:	f1bb 0f00 	cmp.w	fp, #0 8023bee:	d000      	beq.n	8023bf2 <__gethex+0x24a> 8023bf0:	4249      	negs	r1, r1 8023bf2:	9b05      	ldr	r3, [sp, #20] 8023bf4:	185b      	adds	r3, r3, r1 8023bf6:	9305      	str	r3, [sp, #20] 8023bf8:	e731      	b.n	8023a5e <__gethex+0xb6> 8023bfa:	f7ff fea9 	bl	8023950 <__hexdig_init> 8023bfe:	e6ee      	b.n	80239de <__gethex+0x36> 8023c00:	4628      	mov	r0, r5 8023c02:	9902      	ldr	r1, [sp, #8] 8023c04:	9a03      	ldr	r2, [sp, #12] 8023c06:	f7fe f995 	bl	8021f34 <strncmp> 8023c0a:	2800      	cmp	r0, #0 8023c0c:	f040 809a 	bne.w	8023d44 <__gethex+0x39c> 8023c10:	9803      	ldr	r0, [sp, #12] 8023c12:	182c      	adds	r4, r5, r0 8023c14:	5c2b      	ldrb	r3, [r5, r0] 8023c16:	f819 2003 	ldrb.w	r2, [r9, r3] 8023c1a:	2a00      	cmp	r2, #0 8023c1c:	f000 80e8 	beq.w	8023df0 <__gethex+0x448> 8023c20:	2b30      	cmp	r3, #48	; 0x30 8023c22:	f040 8108 	bne.w	8023e36 <__gethex+0x48e> 8023c26:	1c63      	adds	r3, r4, #1 8023c28:	461d      	mov	r5, r3 8023c2a:	f813 2b01 	ldrb.w	r2, [r3], #1 8023c2e:	2a30      	cmp	r2, #48	; 0x30 8023c30:	d0fa      	beq.n	8023c28 <__gethex+0x280> 8023c32:	5cb3      	ldrb	r3, [r6, r2] 8023c34:	2b00      	cmp	r3, #0 8023c36:	f040 80ff 	bne.w	8023e38 <__gethex+0x490> 8023c3a:	f04f 0901 	mov.w	r9, #1 8023c3e:	46a3      	mov	fp, r4 8023c40:	464f      	mov	r7, r9 8023c42:	462c      	mov	r4, r5 8023c44:	e6f4      	b.n	8023a30 <__gethex+0x88> 8023c46:	1e77      	subs	r7, r6, #1 8023c48:	2d00      	cmp	r5, #0 8023c4a:	f040 80e7 	bne.w	8023e1c <__gethex+0x474> 8023c4e:	2f00      	cmp	r7, #0 8023c50:	dd04      	ble.n	8023c5c <__gethex+0x2b4> 8023c52:	9804      	ldr	r0, [sp, #16] 8023c54:	4639      	mov	r1, r7 8023c56:	f001 fa05 	bl	8025064 <__any_on> 8023c5a:	4605      	mov	r5, r0 8023c5c:	9908      	ldr	r1, [sp, #32] 8023c5e:	117b      	asrs	r3, r7, #5 8023c60:	2201      	movs	r2, #1 8023c62:	f007 071f 	and.w	r7, r7, #31 8023c66:	9804      	ldr	r0, [sp, #16] 8023c68:	1ba4      	subs	r4, r4, r6 8023c6a:	f851 3023 	ldr.w	r3, [r1, r3, lsl #2] 8023c6e:	fa02 f207 	lsl.w	r2, r2, r7 8023c72:	4631      	mov	r1, r6 8023c74:	421a      	tst	r2, r3 8023c76:	bf18      	it	ne 8023c78:	f045 0502 	orrne.w	r5, r5, #2 8023c7c:	f7ff fe10 	bl	80238a0 <rshift> 8023c80:	9b06      	ldr	r3, [sp, #24] 8023c82:	2702      	movs	r7, #2 8023c84:	685b      	ldr	r3, [r3, #4] 8023c86:	9305      	str	r3, [sp, #20] 8023c88:	2d00      	cmp	r5, #0 8023c8a:	d069      	beq.n	8023d60 <__gethex+0x3b8> 8023c8c:	9806      	ldr	r0, [sp, #24] 8023c8e:	68c3      	ldr	r3, [r0, #12] 8023c90:	2b02      	cmp	r3, #2 8023c92:	f000 80ea 	beq.w	8023e6a <__gethex+0x4c2> 8023c96:	2b03      	cmp	r3, #3 8023c98:	d05d      	beq.n	8023d56 <__gethex+0x3ae> 8023c9a:	2b01      	cmp	r3, #1 8023c9c:	d15e      	bne.n	8023d5c <__gethex+0x3b4> 8023c9e:	07aa      	lsls	r2, r5, #30 8023ca0:	d55c      	bpl.n	8023d5c <__gethex+0x3b4> 8023ca2:	9908      	ldr	r1, [sp, #32] 8023ca4:	680b      	ldr	r3, [r1, #0] 8023ca6:	432b      	orrs	r3, r5 8023ca8:	07db      	lsls	r3, r3, #31 8023caa:	d557      	bpl.n	8023d5c <__gethex+0x3b4> 8023cac:	9b04      	ldr	r3, [sp, #16] 8023cae:	2600      	movs	r6, #0 8023cb0:	9904      	ldr	r1, [sp, #16] 8023cb2:	691d      	ldr	r5, [r3, #16] 8023cb4:	9b08      	ldr	r3, [sp, #32] 8023cb6:	eb01 0085 	add.w	r0, r1, r5, lsl #2 8023cba:	3014      	adds	r0, #20 8023cbc:	4619      	mov	r1, r3 8023cbe:	f853 2b04 	ldr.w	r2, [r3], #4 8023cc2:	f1b2 3fff 	cmp.w	r2, #4294967295 8023cc6:	f040 80eb 	bne.w	8023ea0 <__gethex+0x4f8> 8023cca:	4298      	cmp	r0, r3 8023ccc:	f843 6c04 	str.w	r6, [r3, #-4] 8023cd0:	d8f4      	bhi.n	8023cbc <__gethex+0x314> 8023cd2:	9a04      	ldr	r2, [sp, #16] 8023cd4:	6893      	ldr	r3, [r2, #8] 8023cd6:	429d      	cmp	r5, r3 8023cd8:	bfb8      	it	lt 8023cda:	462b      	movlt	r3, r5 8023cdc:	f280 80f9 	bge.w	8023ed2 <__gethex+0x52a> 8023ce0:	9904      	ldr	r1, [sp, #16] 8023ce2:	eb01 0283 	add.w	r2, r1, r3, lsl #2 8023ce6:	3301      	adds	r3, #1 8023ce8:	610b      	str	r3, [r1, #16] 8023cea:	2301      	movs	r3, #1 8023cec:	6153      	str	r3, [r2, #20] 8023cee:	2f02      	cmp	r7, #2 8023cf0:	f000 80d9 	beq.w	8023ea6 <__gethex+0x4fe> 8023cf4:	9904      	ldr	r1, [sp, #16] 8023cf6:	690b      	ldr	r3, [r1, #16] 8023cf8:	429d      	cmp	r5, r3 8023cfa:	db0e      	blt.n	8023d1a <__gethex+0x372> 8023cfc:	f014 041f 	ands.w	r4, r4, #31 8023d00:	f000 80ac 	beq.w	8023e5c <__gethex+0x4b4> 8023d04:	9b04      	ldr	r3, [sp, #16] 8023d06:	eb03 0585 	add.w	r5, r3, r5, lsl #2 8023d0a:	6928      	ldr	r0, [r5, #16] 8023d0c:	f000 fe30 	bl	8024970 <__hi0bits> 8023d10:	f1c4 0320 	rsb	r3, r4, #32 8023d14:	4298      	cmp	r0, r3 8023d16:	f280 80a1 	bge.w	8023e5c <__gethex+0x4b4> 8023d1a:	9804      	ldr	r0, [sp, #16] 8023d1c:	2101      	movs	r1, #1 8023d1e:	f7ff fdbf 	bl	80238a0 <rshift> 8023d22:	9a06      	ldr	r2, [sp, #24] 8023d24:	9805      	ldr	r0, [sp, #20] 8023d26:	6893      	ldr	r3, [r2, #8] 8023d28:	3001      	adds	r0, #1 8023d2a:	9005      	str	r0, [sp, #20] 8023d2c:	4298      	cmp	r0, r3 8023d2e:	f340 8095 	ble.w	8023e5c <__gethex+0x4b4> 8023d32:	9807      	ldr	r0, [sp, #28] 8023d34:	27a3      	movs	r7, #163	; 0xa3 8023d36:	9904      	ldr	r1, [sp, #16] 8023d38:	f000 fd6e 	bl	8024818 <_Bfree> 8023d3c:	9a14      	ldr	r2, [sp, #80]	; 0x50 8023d3e:	2300      	movs	r3, #0 8023d40:	6013      	str	r3, [r2, #0] 8023d42:	e695      	b.n	8023a70 <__gethex+0xc8> 8023d44:	782b      	ldrb	r3, [r5, #0] 8023d46:	462c      	mov	r4, r5 8023d48:	f8cd b014 	str.w	fp, [sp, #20] 8023d4c:	f04f 0901 	mov.w	r9, #1 8023d50:	e67e      	b.n	8023a50 <__gethex+0xa8> 8023d52:	2701      	movs	r7, #1 8023d54:	e798      	b.n	8023c88 <__gethex+0x2e0> 8023d56:	9b15      	ldr	r3, [sp, #84]	; 0x54 8023d58:	2b00      	cmp	r3, #0 8023d5a:	d1a7      	bne.n	8023cac <__gethex+0x304> 8023d5c:	f047 0710 	orr.w	r7, r7, #16 8023d60:	9b04      	ldr	r3, [sp, #16] 8023d62:	9814      	ldr	r0, [sp, #80]	; 0x50 8023d64:	6003      	str	r3, [r0, #0] 8023d66:	9b05      	ldr	r3, [sp, #20] 8023d68:	9809      	ldr	r0, [sp, #36]	; 0x24 8023d6a:	6003      	str	r3, [r0, #0] 8023d6c:	e680      	b.n	8023a70 <__gethex+0xc8> 8023d6e:	f04f 0b01 	mov.w	fp, #1 8023d72:	78a3      	ldrb	r3, [r4, #2] 8023d74:	1ca0      	adds	r0, r4, #2 8023d76:	e713      	b.n	8023ba0 <__gethex+0x1f8> 8023d78:	f04f 0b00 	mov.w	fp, #0 8023d7c:	e7f9      	b.n	8023d72 <__gethex+0x3ca> 8023d7e:	1b06      	subs	r6, r0, r4 8023d80:	9804      	ldr	r0, [sp, #16] 8023d82:	4631      	mov	r1, r6 8023d84:	f001 f96e 	bl	8025064 <__any_on> 8023d88:	4605      	mov	r5, r0 8023d8a:	b1a8      	cbz	r0, 8023db8 <__gethex+0x410> 8023d8c:	1e73      	subs	r3, r6, #1 8023d8e:	9804      	ldr	r0, [sp, #16] 8023d90:	2501      	movs	r5, #1 8023d92:	f003 011f 	and.w	r1, r3, #31 8023d96:	115a      	asrs	r2, r3, #5 8023d98:	fa05 f101 	lsl.w	r1, r5, r1 8023d9c:	eb00 0282 	add.w	r2, r0, r2, lsl #2 8023da0:	6952      	ldr	r2, [r2, #20] 8023da2:	4211      	tst	r1, r2 8023da4:	d008      	beq.n	8023db8 <__gethex+0x410> 8023da6:	42ab      	cmp	r3, r5 8023da8:	dd05      	ble.n	8023db6 <__gethex+0x40e> 8023daa:	9804      	ldr	r0, [sp, #16] 8023dac:	1eb1      	subs	r1, r6, #2 8023dae:	f001 f959 	bl	8025064 <__any_on> 8023db2:	2503      	movs	r5, #3 8023db4:	b900      	cbnz	r0, 8023db8 <__gethex+0x410> 8023db6:	2502      	movs	r5, #2 8023db8:	9804      	ldr	r0, [sp, #16] 8023dba:	4631      	mov	r1, r6 8023dbc:	f7ff fd70 	bl	80238a0 <rshift> 8023dc0:	9b05      	ldr	r3, [sp, #20] 8023dc2:	199b      	adds	r3, r3, r6 8023dc4:	9305      	str	r3, [sp, #20] 8023dc6:	e6b8      	b.n	8023b3a <__gethex+0x192> 8023dc8:	f8cd b014 	str.w	fp, [sp, #20] 8023dcc:	e640      	b.n	8023a50 <__gethex+0xa8> 8023dce:	1a25      	subs	r5, r4, r0 8023dd0:	9904      	ldr	r1, [sp, #16] 8023dd2:	462a      	mov	r2, r5 8023dd4:	9807      	ldr	r0, [sp, #28] 8023dd6:	f000 ff11 	bl	8024bfc <__lshift> 8023dda:	9b05      	ldr	r3, [sp, #20] 8023ddc:	1b5b      	subs	r3, r3, r5 8023dde:	2500      	movs	r5, #0 8023de0:	9305      	str	r3, [sp, #20] 8023de2:	9004      	str	r0, [sp, #16] 8023de4:	f100 0314 	add.w	r3, r0, #20 8023de8:	9308      	str	r3, [sp, #32] 8023dea:	e6a6      	b.n	8023b3a <__gethex+0x192> 8023dec:	2700      	movs	r7, #0 8023dee:	e605      	b.n	80239fc <__gethex+0x54> 8023df0:	9205      	str	r2, [sp, #20] 8023df2:	f04f 0901 	mov.w	r9, #1 8023df6:	e62b      	b.n	8023a50 <__gethex+0xa8> 8023df8:	462c      	mov	r4, r5 8023dfa:	4681      	mov	r9, r0 8023dfc:	9903      	ldr	r1, [sp, #12] 8023dfe:	eb04 0b01 	add.w	fp, r4, r1 8023e02:	5c63      	ldrb	r3, [r4, r1] 8023e04:	5cf2      	ldrb	r2, [r6, r3] 8023e06:	2a00      	cmp	r2, #0 8023e08:	d07a      	beq.n	8023f00 <__gethex+0x558> 8023e0a:	f10b 0201 	add.w	r2, fp, #1 8023e0e:	4614      	mov	r4, r2 8023e10:	f812 3b01 	ldrb.w	r3, [r2], #1 8023e14:	5cf1      	ldrb	r1, [r6, r3] 8023e16:	2900      	cmp	r1, #0 8023e18:	d1f9      	bne.n	8023e0e <__gethex+0x466> 8023e1a:	e614      	b.n	8023a46 <__gethex+0x9e> 8023e1c:	2501      	movs	r5, #1 8023e1e:	e71d      	b.n	8023c5c <__gethex+0x2b4> 8023e20:	4628      	mov	r0, r5 8023e22:	9902      	ldr	r1, [sp, #8] 8023e24:	9a03      	ldr	r2, [sp, #12] 8023e26:	f7fe f885 	bl	8021f34 <strncmp> 8023e2a:	2800      	cmp	r0, #0 8023e2c:	d0e4      	beq.n	8023df8 <__gethex+0x450> 8023e2e:	46a1      	mov	r9, r4 8023e30:	462c      	mov	r4, r5 8023e32:	46cb      	mov	fp, r9 8023e34:	e602      	b.n	8023a3c <__gethex+0x94> 8023e36:	4625      	mov	r5, r4 8023e38:	46a3      	mov	fp, r4 8023e3a:	2701      	movs	r7, #1 8023e3c:	e5f0      	b.n	8023a20 <__gethex+0x78> 8023e3e:	9815      	ldr	r0, [sp, #84]	; 0x54 8023e40:	2800      	cmp	r0, #0 8023e42:	f47f ae93 	bne.w	8023b6c <__gethex+0x1c4> 8023e46:	9a09      	ldr	r2, [sp, #36]	; 0x24 8023e48:	2762      	movs	r7, #98	; 0x62 8023e4a:	9804      	ldr	r0, [sp, #16] 8023e4c:	9908      	ldr	r1, [sp, #32] 8023e4e:	6013      	str	r3, [r2, #0] 8023e50:	2301      	movs	r3, #1 8023e52:	9a14      	ldr	r2, [sp, #80]	; 0x50 8023e54:	6103      	str	r3, [r0, #16] 8023e56:	600b      	str	r3, [r1, #0] 8023e58:	6010      	str	r0, [r2, #0] 8023e5a:	e609      	b.n	8023a70 <__gethex+0xc8> 8023e5c:	2721      	movs	r7, #33	; 0x21 8023e5e:	e77f      	b.n	8023d60 <__gethex+0x3b8> 8023e60:	f8dd b020 	ldr.w	fp, [sp, #32] 8023e64:	f04f 0800 	mov.w	r8, #0 8023e68:	e651      	b.n	8023b0e <__gethex+0x166> 8023e6a:	9a15      	ldr	r2, [sp, #84]	; 0x54 8023e6c:	f1c2 0301 	rsb	r3, r2, #1 8023e70:	2b00      	cmp	r3, #0 8023e72:	f43f af73 	beq.w	8023d5c <__gethex+0x3b4> 8023e76:	e719      	b.n	8023cac <__gethex+0x304> 8023e78:	42a6      	cmp	r6, r4 8023e7a:	f47f ae77 	bne.w	8023b6c <__gethex+0x1c4> 8023e7e:	2c01      	cmp	r4, #1 8023e80:	dde1      	ble.n	8023e46 <__gethex+0x49e> 8023e82:	9804      	ldr	r0, [sp, #16] 8023e84:	1e61      	subs	r1, r4, #1 8023e86:	f001 f8ed 	bl	8025064 <__any_on> 8023e8a:	2800      	cmp	r0, #0 8023e8c:	f43f ae6e 	beq.w	8023b6c <__gethex+0x1c4> 8023e90:	9a06      	ldr	r2, [sp, #24] 8023e92:	6853      	ldr	r3, [r2, #4] 8023e94:	e7d7      	b.n	8023e46 <__gethex+0x49e> 8023e96:	9915      	ldr	r1, [sp, #84]	; 0x54 8023e98:	2900      	cmp	r1, #0 8023e9a:	f43f ae67 	beq.w	8023b6c <__gethex+0x1c4> 8023e9e:	e7d2      	b.n	8023e46 <__gethex+0x49e> 8023ea0:	3201      	adds	r2, #1 8023ea2:	600a      	str	r2, [r1, #0] 8023ea4:	e723      	b.n	8023cee <__gethex+0x346> 8023ea6:	9a06      	ldr	r2, [sp, #24] 8023ea8:	2722      	movs	r7, #34	; 0x22 8023eaa:	6813      	ldr	r3, [r2, #0] 8023eac:	3b01      	subs	r3, #1 8023eae:	42a3      	cmp	r3, r4 8023eb0:	f47f af56 	bne.w	8023d60 <__gethex+0x3b8> 8023eb4:	1163      	asrs	r3, r4, #5 8023eb6:	9804      	ldr	r0, [sp, #16] 8023eb8:	2201      	movs	r2, #1 8023eba:	f004 041f 	and.w	r4, r4, #31 8023ebe:	eb00 0383 	add.w	r3, r0, r3, lsl #2 8023ec2:	fa02 f204 	lsl.w	r2, r2, r4 8023ec6:	695b      	ldr	r3, [r3, #20] 8023ec8:	421a      	tst	r2, r3 8023eca:	bf14      	ite	ne 8023ecc:	2721      	movne	r7, #33	; 0x21 8023ece:	2722      	moveq	r7, #34	; 0x22 8023ed0:	e746      	b.n	8023d60 <__gethex+0x3b8> 8023ed2:	6851      	ldr	r1, [r2, #4] 8023ed4:	9807      	ldr	r0, [sp, #28] 8023ed6:	3101      	adds	r1, #1 8023ed8:	f000 fc68 	bl	80247ac <_Balloc> 8023edc:	4606      	mov	r6, r0 8023ede:	9804      	ldr	r0, [sp, #16] 8023ee0:	f100 010c 	add.w	r1, r0, #12 8023ee4:	6903      	ldr	r3, [r0, #16] 8023ee6:	f106 000c 	add.w	r0, r6, #12 8023eea:	1c9a      	adds	r2, r3, #2 8023eec:	0092      	lsls	r2, r2, #2 8023eee:	f7fd fd2d 	bl	802194c <memcpy> 8023ef2:	9904      	ldr	r1, [sp, #16] 8023ef4:	9807      	ldr	r0, [sp, #28] 8023ef6:	9604      	str	r6, [sp, #16] 8023ef8:	f000 fc8e 	bl	8024818 <_Bfree> 8023efc:	6933      	ldr	r3, [r6, #16] 8023efe:	e6ef      	b.n	8023ce0 <__gethex+0x338> 8023f00:	465c      	mov	r4, fp 8023f02:	e5a0      	b.n	8023a46 <__gethex+0x9e>08023f04 <__hexnan>: 8023f04:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8023f08:	f245 280c 	movw	r8, #21004	; 0x520c 8023f0c:	f2c2 0801 	movt	r8, #8193	; 0x2001 8023f10:	b085      	sub	sp, #20 8023f12:	460c      	mov	r4, r1 8023f14:	4692      	mov	sl, r2 8023f16:	f898 3030 	ldrb.w	r3, [r8, #48]	; 0x30 8023f1a:	9002      	str	r0, [sp, #8] 8023f1c:	2b00      	cmp	r3, #0 8023f1e:	f000 80ad 	beq.w	802407c <__hexnan+0x178> 8023f22:	6823      	ldr	r3, [r4, #0] 8023f24:	115a      	asrs	r2, r3, #5 8023f26:	f013 031f 	ands.w	r3, r3, #31 8023f2a:	9303      	str	r3, [sp, #12] 8023f2c:	eb0a 0282 	add.w	r2, sl, r2, lsl #2 8023f30:	9200      	str	r2, [sp, #0] 8023f32:	d001      	beq.n	8023f38 <__hexnan+0x34> 8023f34:	3204      	adds	r2, #4 8023f36:	9200      	str	r2, [sp, #0] 8023f38:	9a00      	ldr	r2, [sp, #0] 8023f3a:	2300      	movs	r3, #0 8023f3c:	4699      	mov	r9, r3 8023f3e:	9900      	ldr	r1, [sp, #0] 8023f40:	46cb      	mov	fp, r9 8023f42:	464e      	mov	r6, r9 8023f44:	f842 3c04 	str.w	r3, [r2, #-4] 8023f48:	3904      	subs	r1, #4 8023f4a:	9b02      	ldr	r3, [sp, #8] 8023f4c:	9101      	str	r1, [sp, #4] 8023f4e:	f8dd c004 	ldr.w	ip, [sp, #4] 8023f52:	6819      	ldr	r1, [r3, #0] 8023f54:	4664      	mov	r4, ip 8023f56:	784b      	ldrb	r3, [r1, #1] 8023f58:	2b00      	cmp	r3, #0 8023f5a:	d033      	beq.n	8023fc4 <__hexnan+0xc0> 8023f5c:	f818 2003 	ldrb.w	r2, [r8, r3] 8023f60:	2a00      	cmp	r2, #0 8023f62:	d16f      	bne.n	8024044 <__hexnan+0x140> 8023f64:	2b20      	cmp	r3, #32 8023f66:	f200 8083 	bhi.w	8024070 <__hexnan+0x16c> 8023f6a:	455e      	cmp	r6, fp 8023f6c:	dd26      	ble.n	8023fbc <__hexnan+0xb8> 8023f6e:	f1b9 0f07 	cmp.w	r9, #7 8023f72:	bfcc      	ite	gt 8023f74:	2300      	movgt	r3, #0 8023f76:	2301      	movle	r3, #1 8023f78:	4564      	cmp	r4, ip 8023f7a:	bf28      	it	cs 8023f7c:	2300      	movcs	r3, #0 8023f7e:	b193      	cbz	r3, 8023fa6 <__hexnan+0xa2> 8023f80:	f1c9 0908 	rsb	r9, r9, #8 8023f84:	6822      	ldr	r2, [r4, #0] 8023f86:	4623      	mov	r3, r4 8023f88:	ea4f 0989 	mov.w	r9, r9, lsl #2 8023f8c:	f1c9 0720 	rsb	r7, r9, #32 8023f90:	6858      	ldr	r0, [r3, #4] 8023f92:	fa00 f507 	lsl.w	r5, r0, r7 8023f96:	4315      	orrs	r5, r2 8023f98:	fa20 f209 	lsr.w	r2, r0, r9 8023f9c:	601d      	str	r5, [r3, #0] 8023f9e:	f843 2f04 	str.w	r2, [r3, #4]! 8023fa2:	459c      	cmp	ip, r3 8023fa4:	d8f4      	bhi.n	8023f90 <__hexnan+0x8c> 8023fa6:	4554      	cmp	r4, sl 8023fa8:	bf98      	it	ls 8023faa:	f04f 0908 	movls.w	r9, #8 8023fae:	d905      	bls.n	8023fbc <__hexnan+0xb8> 8023fb0:	2200      	movs	r2, #0 8023fb2:	3c04      	subs	r4, #4 8023fb4:	6022      	str	r2, [r4, #0] 8023fb6:	46b3      	mov	fp, r6 8023fb8:	46a4      	mov	ip, r4 8023fba:	4691      	mov	r9, r2 8023fbc:	3101      	adds	r1, #1 8023fbe:	784b      	ldrb	r3, [r1, #1] 8023fc0:	2b00      	cmp	r3, #0 8023fc2:	d1cb      	bne.n	8023f5c <__hexnan+0x58> 8023fc4:	2e00      	cmp	r6, #0 8023fc6:	d055      	beq.n	8024074 <__hexnan+0x170> 8023fc8:	f1b9 0f07 	cmp.w	r9, #7 8023fcc:	bfcc      	ite	gt 8023fce:	2300      	movgt	r3, #0 8023fd0:	2301      	movle	r3, #1 8023fd2:	4564      	cmp	r4, ip 8023fd4:	bf28      	it	cs 8023fd6:	2300      	movcs	r3, #0 8023fd8:	b193      	cbz	r3, 8024000 <__hexnan+0xfc> 8023fda:	f1c9 0908 	rsb	r9, r9, #8 8023fde:	6822      	ldr	r2, [r4, #0] 8023fe0:	4623      	mov	r3, r4 8023fe2:	ea4f 0989 	mov.w	r9, r9, lsl #2 8023fe6:	f1c9 0520 	rsb	r5, r9, #32 8023fea:	6859      	ldr	r1, [r3, #4] 8023fec:	fa01 f005 	lsl.w	r0, r1, r5 8023ff0:	4310      	orrs	r0, r2 8023ff2:	fa21 f209 	lsr.w	r2, r1, r9 8023ff6:	6018      	str	r0, [r3, #0] 8023ff8:	f843 2f04 	str.w	r2, [r3, #4]! 8023ffc:	4563      	cmp	r3, ip 8023ffe:	d3f4      	bcc.n	8023fea <__hexnan+0xe6> 8024000:	45a2      	cmp	sl, r4 8024002:	d23e      	bcs.n	8024082 <__hexnan+0x17e> 8024004:	9801      	ldr	r0, [sp, #4] 8024006:	4652      	mov	r2, sl 8024008:	f854 1b04 	ldr.w	r1, [r4], #4 802400c:	4613      	mov	r3, r2 802400e:	42a0      	cmp	r0, r4 8024010:	f843 1b04 	str.w	r1, [r3], #4 8024014:	461a      	mov	r2, r3 8024016:	d2f7      	bcs.n	8024008 <__hexnan+0x104> 8024018:	9901      	ldr	r1, [sp, #4] 802401a:	2200      	movs	r2, #0 802401c:	f843 2b04 	str.w	r2, [r3], #4 8024020:	4299      	cmp	r1, r3 8024022:	d2fb      	bcs.n	802401c <__hexnan+0x118> 8024024:	9900      	ldr	r1, [sp, #0] 8024026:	f851 3c04 	ldr.w	r3, [r1, #-4] 802402a:	b94b      	cbnz	r3, 8024040 <__hexnan+0x13c> 802402c:	9b01      	ldr	r3, [sp, #4] 802402e:	459a      	cmp	sl, r3 8024030:	d102      	bne.n	8024038 <__hexnan+0x134> 8024032:	e038      	b.n	80240a6 <__hexnan+0x1a2> 8024034:	459a      	cmp	sl, r3 8024036:	d037      	beq.n	80240a8 <__hexnan+0x1a4> 8024038:	f853 2d04 	ldr.w	r2, [r3, #-4]! 802403c:	2a00      	cmp	r2, #0 802403e:	d0f9      	beq.n	8024034 <__hexnan+0x130> 8024040:	2005      	movs	r0, #5 8024042:	e018      	b.n	8024076 <__hexnan+0x172> 8024044:	f109 0901 	add.w	r9, r9, #1 8024048:	3601      	adds	r6, #1 802404a:	f1b9 0f08 	cmp.w	r9, #8 802404e:	dc07      	bgt.n	8024060 <__hexnan+0x15c> 8024050:	6823      	ldr	r3, [r4, #0] 8024052:	011b      	lsls	r3, r3, #4 8024054:	f002 020f 	and.w	r2, r2, #15 8024058:	3101      	adds	r1, #1 802405a:	431a      	orrs	r2, r3 802405c:	6022      	str	r2, [r4, #0] 802405e:	e7ae      	b.n	8023fbe <__hexnan+0xba> 8024060:	4554      	cmp	r4, sl 8024062:	d9ab      	bls.n	8023fbc <__hexnan+0xb8> 8024064:	2300      	movs	r3, #0 8024066:	3c04      	subs	r4, #4 8024068:	6023      	str	r3, [r4, #0] 802406a:	f04f 0901 	mov.w	r9, #1 802406e:	e7f1      	b.n	8024054 <__hexnan+0x150> 8024070:	2b29      	cmp	r3, #41	; 0x29 8024072:	d01d      	beq.n	80240b0 <__hexnan+0x1ac> 8024074:	2004      	movs	r0, #4 8024076:	b005      	add	sp, #20 8024078:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802407c:	f7ff fc68 	bl	8023950 <__hexdig_init> 8024080:	e74f      	b.n	8023f22 <__hexnan+0x1e> 8024082:	9a03      	ldr	r2, [sp, #12] 8024084:	2a00      	cmp	r2, #0 8024086:	d0cd      	beq.n	8024024 <__hexnan+0x120> 8024088:	9a00      	ldr	r2, [sp, #0] 802408a:	9903      	ldr	r1, [sp, #12] 802408c:	f852 3c04 	ldr.w	r3, [r2, #-4] 8024090:	f1c1 0220 	rsb	r2, r1, #32 8024094:	f04f 31ff 	mov.w	r1, #4294967295 8024098:	fa21 f202 	lsr.w	r2, r1, r2 802409c:	4013      	ands	r3, r2 802409e:	9a00      	ldr	r2, [sp, #0] 80240a0:	f842 3c04 	str.w	r3, [r2, #-4] 80240a4:	e7c1      	b.n	802402a <__hexnan+0x126> 80240a6:	4653      	mov	r3, sl 80240a8:	2201      	movs	r2, #1 80240aa:	2005      	movs	r0, #5 80240ac:	601a      	str	r2, [r3, #0] 80240ae:	e7e2      	b.n	8024076 <__hexnan+0x172> 80240b0:	9b02      	ldr	r3, [sp, #8] 80240b2:	3102      	adds	r1, #2 80240b4:	6019      	str	r1, [r3, #0] 80240b6:	2e00      	cmp	r6, #0 80240b8:	d186      	bne.n	8023fc8 <__hexnan+0xc4> 80240ba:	e7db      	b.n	8024074 <__hexnan+0x170>080240bc <_setlocale_r>: 80240bc:	b510      	push	{r4, lr} 80240be:	4614      	mov	r4, r2 80240c0:	b13a      	cbz	r2, 80240d2 <_setlocale_r+0x16> 80240c2:	f641 61f4 	movw	r1, #7924	; 0x1ef4 80240c6:	4610      	mov	r0, r2 80240c8:	f6c0 0104 	movt	r1, #2052	; 0x804 80240cc:	f7fd fd84 	bl	8021bd8 <strcmp> 80240d0:	b920      	cbnz	r0, 80240dc <_setlocale_r+0x20> 80240d2:	f641 60f0 	movw	r0, #7920	; 0x1ef0 80240d6:	f6c0 0004 	movt	r0, #2052	; 0x804 80240da:	bd10      	pop	{r4, pc} 80240dc:	f641 61f0 	movw	r1, #7920	; 0x1ef0 80240e0:	4620      	mov	r0, r4 80240e2:	f6c0 0104 	movt	r1, #2052	; 0x804 80240e6:	f7fd fd77 	bl	8021bd8 <strcmp> 80240ea:	2800      	cmp	r0, #0 80240ec:	d0f1      	beq.n	80240d2 <_setlocale_r+0x16> 80240ee:	f641 61fc 	movw	r1, #7932	; 0x1efc 80240f2:	4620      	mov	r0, r4 80240f4:	f6c0 0104 	movt	r1, #2052	; 0x804 80240f8:	f7fd fd6e 	bl	8021bd8 <strcmp> 80240fc:	f641 63f0 	movw	r3, #7920	; 0x1ef0 8024100:	f6c0 0304 	movt	r3, #2052	; 0x804 8024104:	2800      	cmp	r0, #0 8024106:	bf0c      	ite	eq 8024108:	4618      	moveq	r0, r3 802410a:	2000      	movne	r0, #0 802410c:	bd10      	pop	{r4, pc} 802410e:	bf00      	nop08024110 <__locale_charset>: 8024110:	f240 1020 	movw	r0, #288	; 0x120 8024114:	f2c2 0000 	movt	r0, #8192	; 0x2000 8024118:	4770      	bx	lr 802411a:	bf00      	nop0802411c <__locale_mb_cur_max>: 802411c:	f240 1320 	movw	r3, #288	; 0x120 8024120:	f2c2 0300 	movt	r3, #8192	; 0x2000 8024124:	6a18      	ldr	r0, [r3, #32] 8024126:	4770      	bx	lr08024128 <__locale_msgcharset>: 8024128:	4800      	ldr	r0, [pc, #0]	; (802412c <__locale_msgcharset+0x4>) 802412a:	4770      	bx	lr 802412c:	20000144 	.word	0x2000014408024130 <__locale_cjk_lang>: 8024130:	2000      	movs	r0, #0 8024132:	4770      	bx	lr08024134 <_localeconv_r>: 8024134:	4800      	ldr	r0, [pc, #0]	; (8024138 <_localeconv_r+0x4>) 8024136:	4770      	bx	lr 8024138:	20000164 	.word	0x200001640802413c <setlocale>: 802413c:	f240 032c 	movw	r3, #44	; 0x2c 8024140:	460a      	mov	r2, r1 8024142:	f2c2 0300 	movt	r3, #8192	; 0x2000 8024146:	4601      	mov	r1, r0 8024148:	6818      	ldr	r0, [r3, #0] 802414a:	f7ff bfb7 	b.w	80240bc <_setlocale_r> 802414e:	bf00      	nop08024150 <localeconv>: 8024150:	4800      	ldr	r0, [pc, #0]	; (8024154 <localeconv+0x4>) 8024152:	4770      	bx	lr 8024154:	20000164 	.word	0x2000016408024158 <malloc>: 8024158:	f240 032c 	movw	r3, #44	; 0x2c 802415c:	4601      	mov	r1, r0 802415e:	f2c2 0300 	movt	r3, #8192	; 0x2000 8024162:	6818      	ldr	r0, [r3, #0] 8024164:	f000 b808 	b.w	8024178 <_malloc_r>08024168 <free>: 8024168:	f240 032c 	movw	r3, #44	; 0x2c 802416c:	4601      	mov	r1, r0 802416e:	f2c2 0300 	movt	r3, #8192	; 0x2000 8024172:	6818      	ldr	r0, [r3, #0] 8024174:	f7ff baca 	b.w	802370c <_free_r>08024178 <_malloc_r>: 8024178:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 802417c:	f101 040b 	add.w	r4, r1, #11 8024180:	2c16      	cmp	r4, #22 8024182:	b083      	sub	sp, #12 8024184:	4607      	mov	r7, r0 8024186:	d930      	bls.n	80241ea <_malloc_r+0x72> 8024188:	f024 0407 	bic.w	r4, r4, #7 802418c:	0fe3      	lsrs	r3, r4, #31 802418e:	428c      	cmp	r4, r1 8024190:	bf2c      	ite	cs 8024192:	4619      	movcs	r1, r3 8024194:	f043 0101 	orrcc.w	r1, r3, #1 8024198:	2900      	cmp	r1, #0 802419a:	d12f      	bne.n	80241fc <_malloc_r+0x84> 802419c:	4638      	mov	r0, r7 802419e:	f000 fb01 	bl	80247a4 <__malloc_lock> 80241a2:	f5b4 7ffc 	cmp.w	r4, #504	; 0x1f8 80241a6:	d22e      	bcs.n	8024206 <_malloc_r+0x8e> 80241a8:	ea4f 0cd4 	mov.w	ip, r4, lsr #3 80241ac:	f240 169c 	movw	r6, #412	; 0x19c 80241b0:	f2c2 0600 	movt	r6, #8192	; 0x2000 80241b4:	eb06 02cc 	add.w	r2, r6, ip, lsl #3 80241b8:	68d3      	ldr	r3, [r2, #12] 80241ba:	4293      	cmp	r3, r2 80241bc:	f000 8211 	beq.w	80245e2 <_malloc_r+0x46a> 80241c0:	6859      	ldr	r1, [r3, #4] 80241c2:	f103 0808 	add.w	r8, r3, #8 80241c6:	68da      	ldr	r2, [r3, #12] 80241c8:	4638      	mov	r0, r7 80241ca:	f021 0403 	bic.w	r4, r1, #3 80241ce:	6899      	ldr	r1, [r3, #8] 80241d0:	191b      	adds	r3, r3, r4 80241d2:	685c      	ldr	r4, [r3, #4] 80241d4:	60ca      	str	r2, [r1, #12] 80241d6:	f044 0401 	orr.w	r4, r4, #1 80241da:	6091      	str	r1, [r2, #8] 80241dc:	605c      	str	r4, [r3, #4] 80241de:	f000 fae3 	bl	80247a8 <__malloc_unlock> 80241e2:	4640      	mov	r0, r8 80241e4:	b003      	add	sp, #12 80241e6:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 80241ea:	2300      	movs	r3, #0 80241ec:	2410      	movs	r4, #16 80241ee:	428c      	cmp	r4, r1 80241f0:	bf2c      	ite	cs 80241f2:	4619      	movcs	r1, r3 80241f4:	f043 0101 	orrcc.w	r1, r3, #1 80241f8:	2900      	cmp	r1, #0 80241fa:	d0cf      	beq.n	802419c <_malloc_r+0x24> 80241fc:	230c      	movs	r3, #12 80241fe:	f04f 0800 	mov.w	r8, #0 8024202:	603b      	str	r3, [r7, #0] 8024204:	e7ed      	b.n	80241e2 <_malloc_r+0x6a> 8024206:	ea5f 2c54 	movs.w	ip, r4, lsr #9 802420a:	bf04      	itt	eq 802420c:	ea4f 0cd4 	moveq.w	ip, r4, lsr #3 8024210:	ea4f 054c 	moveq.w	r5, ip, lsl #1 8024214:	f040 808f 	bne.w	8024336 <_malloc_r+0x1be> 8024218:	f240 169c 	movw	r6, #412	; 0x19c 802421c:	f2c2 0600 	movt	r6, #8192	; 0x2000 8024220:	eb06 0585 	add.w	r5, r6, r5, lsl #2 8024224:	68eb      	ldr	r3, [r5, #12] 8024226:	429d      	cmp	r5, r3 8024228:	d106      	bne.n	8024238 <_malloc_r+0xc0> 802422a:	e00d      	b.n	8024248 <_malloc_r+0xd0> 802422c:	2a00      	cmp	r2, #0 802422e:	f280 8155 	bge.w	80244dc <_malloc_r+0x364> 8024232:	68db      	ldr	r3, [r3, #12] 8024234:	429d      	cmp	r5, r3 8024236:	d007      	beq.n	8024248 <_malloc_r+0xd0> 8024238:	6859      	ldr	r1, [r3, #4] 802423a:	f021 0103 	bic.w	r1, r1, #3 802423e:	1b0a      	subs	r2, r1, r4 8024240:	2a0f      	cmp	r2, #15 8024242:	ddf3      	ble.n	802422c <_malloc_r+0xb4> 8024244:	f10c 3cff 	add.w	ip, ip, #4294967295 8024248:	f10c 0c01 	add.w	ip, ip, #1 802424c:	f240 129c 	movw	r2, #412	; 0x19c 8024250:	6933      	ldr	r3, [r6, #16] 8024252:	f2c2 0200 	movt	r2, #8192	; 0x2000 8024256:	f102 0e08 	add.w	lr, r2, #8 802425a:	4573      	cmp	r3, lr 802425c:	bf08      	it	eq 802425e:	f8d2 9004 	ldreq.w	r9, [r2, #4] 8024262:	d022      	beq.n	80242aa <_malloc_r+0x132> 8024264:	6858      	ldr	r0, [r3, #4] 8024266:	f020 0003 	bic.w	r0, r0, #3 802426a:	1b01      	subs	r1, r0, r4 802426c:	290f      	cmp	r1, #15 802426e:	f300 8184 	bgt.w	802457a <_malloc_r+0x402> 8024272:	2900      	cmp	r1, #0 8024274:	f8c2 e014 	str.w	lr, [r2, #20] 8024278:	f8c2 e010 	str.w	lr, [r2, #16] 802427c:	da66      	bge.n	802434c <_malloc_r+0x1d4> 802427e:	f5b0 7f00 	cmp.w	r0, #512	; 0x200 8024282:	f080 814e 	bcs.w	8024522 <_malloc_r+0x3aa> 8024286:	08c1      	lsrs	r1, r0, #3 8024288:	f04f 0801 	mov.w	r8, #1 802428c:	eb02 00c1 	add.w	r0, r2, r1, lsl #3 8024290:	1089      	asrs	r1, r1, #2 8024292:	fa08 f801 	lsl.w	r8, r8, r1 8024296:	6851      	ldr	r1, [r2, #4] 8024298:	6885      	ldr	r5, [r0, #8] 802429a:	60d8      	str	r0, [r3, #12] 802429c:	ea48 0901 	orr.w	r9, r8, r1 80242a0:	f8c2 9004 	str.w	r9, [r2, #4] 80242a4:	609d      	str	r5, [r3, #8] 80242a6:	60eb      	str	r3, [r5, #12] 80242a8:	6083      	str	r3, [r0, #8] 80242aa:	2201      	movs	r2, #1 80242ac:	ea4f 03ac 	mov.w	r3, ip, asr #2 80242b0:	fa02 f303 	lsl.w	r3, r2, r3 80242b4:	454b      	cmp	r3, r9 80242b6:	d854      	bhi.n	8024362 <_malloc_r+0x1ea> 80242b8:	ea19 0f03 	tst.w	r9, r3 80242bc:	d10d      	bne.n	80242da <_malloc_r+0x162> 80242be:	4093      	lsls	r3, r2 80242c0:	f02c 0c03 	bic.w	ip, ip, #3 80242c4:	ea19 0f03 	tst.w	r9, r3 80242c8:	f10c 0c04 	add.w	ip, ip, #4 80242cc:	d105      	bne.n	80242da <_malloc_r+0x162> 80242ce:	005b      	lsls	r3, r3, #1 80242d0:	f10c 0c04 	add.w	ip, ip, #4 80242d4:	ea19 0f03 	tst.w	r9, r3 80242d8:	d0f9      	beq.n	80242ce <_malloc_r+0x156> 80242da:	eb06 09cc 	add.w	r9, r6, ip, lsl #3 80242de:	46e0      	mov	r8, ip 80242e0:	4648      	mov	r0, r9 80242e2:	68c2      	ldr	r2, [r0, #12] 80242e4:	4290      	cmp	r0, r2 80242e6:	d107      	bne.n	80242f8 <_malloc_r+0x180> 80242e8:	e15b      	b.n	80245a2 <_malloc_r+0x42a> 80242ea:	2900      	cmp	r1, #0 80242ec:	f280 8183 	bge.w	80245f6 <_malloc_r+0x47e> 80242f0:	68d2      	ldr	r2, [r2, #12] 80242f2:	4290      	cmp	r0, r2 80242f4:	f000 8155 	beq.w	80245a2 <_malloc_r+0x42a> 80242f8:	6855      	ldr	r5, [r2, #4] 80242fa:	f025 0503 	bic.w	r5, r5, #3 80242fe:	1b29      	subs	r1, r5, r4 8024300:	290f      	cmp	r1, #15 8024302:	ddf2      	ble.n	80242ea <_malloc_r+0x172> 8024304:	4690      	mov	r8, r2 8024306:	1913      	adds	r3, r2, r4 8024308:	68d5      	ldr	r5, [r2, #12] 802430a:	f044 0001 	orr.w	r0, r4, #1 802430e:	f858 4f08 	ldr.w	r4, [r8, #8]! 8024312:	f041 0c01 	orr.w	ip, r1, #1 8024316:	6050      	str	r0, [r2, #4] 8024318:	4638      	mov	r0, r7 802431a:	f8c3 c004 	str.w	ip, [r3, #4] 802431e:	60e5      	str	r5, [r4, #12] 8024320:	60ac      	str	r4, [r5, #8] 8024322:	6173      	str	r3, [r6, #20] 8024324:	6133      	str	r3, [r6, #16] 8024326:	f8c3 e00c 	str.w	lr, [r3, #12] 802432a:	f8c3 e008 	str.w	lr, [r3, #8] 802432e:	5059      	str	r1, [r3, r1] 8024330:	f000 fa3a 	bl	80247a8 <__malloc_unlock> 8024334:	e755      	b.n	80241e2 <_malloc_r+0x6a> 8024336:	f1bc 0f04 	cmp.w	ip, #4 802433a:	f200 80de 	bhi.w	80244fa <_malloc_r+0x382> 802433e:	ea4f 1c94 	mov.w	ip, r4, lsr #6 8024342:	f10c 0c38 	add.w	ip, ip, #56	; 0x38 8024346:	ea4f 054c 	mov.w	r5, ip, lsl #1 802434a:	e765      	b.n	8024218 <_malloc_r+0xa0> 802434c:	181a      	adds	r2, r3, r0 802434e:	f103 0808 	add.w	r8, r3, #8 8024352:	4638      	mov	r0, r7 8024354:	6853      	ldr	r3, [r2, #4] 8024356:	f043 0301 	orr.w	r3, r3, #1 802435a:	6053      	str	r3, [r2, #4] 802435c:	f000 fa24 	bl	80247a8 <__malloc_unlock> 8024360:	e73f      	b.n	80241e2 <_malloc_r+0x6a> 8024362:	68b5      	ldr	r5, [r6, #8] 8024364:	686b      	ldr	r3, [r5, #4] 8024366:	f023 0a03 	bic.w	sl, r3, #3 802436a:	4554      	cmp	r4, sl 802436c:	d804      	bhi.n	8024378 <_malloc_r+0x200> 802436e:	ebc4 030a 	rsb	r3, r4, sl 8024372:	2b0f      	cmp	r3, #15 8024374:	f300 80a4 	bgt.w	80244c0 <_malloc_r+0x348> 8024378:	f641 19a4 	movw	r9, #6564	; 0x19a4 802437c:	f8d6 1408 	ldr.w	r1, [r6, #1032]	; 0x408 8024380:	f2c2 0900 	movt	r9, #8192	; 0x2000 8024384:	eb05 020a 	add.w	r2, r5, sl 8024388:	3101      	adds	r1, #1 802438a:	f8d9 3000 	ldr.w	r3, [r9] 802438e:	4423      	add	r3, r4 8024390:	bf08      	it	eq 8024392:	f103 0b10 	addeq.w	fp, r3, #16 8024396:	d006      	beq.n	80243a6 <_malloc_r+0x22e> 8024398:	f503 5380 	add.w	r3, r3, #4096	; 0x1000 802439c:	330f      	adds	r3, #15 802439e:	f423 637f 	bic.w	r3, r3, #4080	; 0xff0 80243a2:	f023 0b0f 	bic.w	fp, r3, #15 80243a6:	4638      	mov	r0, r7 80243a8:	4659      	mov	r1, fp 80243aa:	9201      	str	r2, [sp, #4] 80243ac:	f000 fe86 	bl	80250bc <_sbrk_r> 80243b0:	9a01      	ldr	r2, [sp, #4] 80243b2:	1c41      	adds	r1, r0, #1 80243b4:	4680      	mov	r8, r0 80243b6:	f000 8168 	beq.w	802468a <_malloc_r+0x512> 80243ba:	4282      	cmp	r2, r0 80243bc:	f200 8131 	bhi.w	8024622 <_malloc_r+0x4aa> 80243c0:	f8d9 3004 	ldr.w	r3, [r9, #4] 80243c4:	4542      	cmp	r2, r8 80243c6:	445b      	add	r3, fp 80243c8:	f8c9 3004 	str.w	r3, [r9, #4] 80243cc:	f000 8166 	beq.w	802469c <_malloc_r+0x524> 80243d0:	f8d6 1408 	ldr.w	r1, [r6, #1032]	; 0x408 80243d4:	f240 109c 	movw	r0, #412	; 0x19c 80243d8:	f2c2 0000 	movt	r0, #8192	; 0x2000 80243dc:	3101      	adds	r1, #1 80243de:	bf17      	itett	ne 80243e0:	ebc2 0208 	rsbne	r2, r2, r8 80243e4:	f8c0 8408 	streq.w	r8, [r0, #1032]	; 0x408 80243e8:	189b      	addne	r3, r3, r2 80243ea:	f8c9 3004 	strne.w	r3, [r9, #4] 80243ee:	f018 0307 	ands.w	r3, r8, #7 80243f2:	4638      	mov	r0, r7 80243f4:	bf1f      	itttt	ne 80243f6:	f1c3 0208 	rsbne	r2, r3, #8 80243fa:	f5c3 5380 	rsbne	r3, r3, #4096	; 0x1000 80243fe:	4490      	addne	r8, r2 8024400:	f103 0208 	addne.w	r2, r3, #8 8024404:	eb08 030b 	add.w	r3, r8, fp 8024408:	bf08      	it	eq 802440a:	f44f 5280 	moveq.w	r2, #4096	; 0x1000 802440e:	051b      	lsls	r3, r3, #20 8024410:	0d1b      	lsrs	r3, r3, #20 8024412:	ebc3 0b02 	rsb	fp, r3, r2 8024416:	4659      	mov	r1, fp 8024418:	f000 fe50 	bl	80250bc <_sbrk_r> 802441c:	1c43      	adds	r3, r0, #1 802441e:	f000 8149 	beq.w	80246b4 <_malloc_r+0x53c> 8024422:	ebc8 0100 	rsb	r1, r8, r0 8024426:	4459      	add	r1, fp 8024428:	f041 0101 	orr.w	r1, r1, #1 802442c:	f8d9 3004 	ldr.w	r3, [r9, #4] 8024430:	42b5      	cmp	r5, r6 8024432:	f641 12a4 	movw	r2, #6564	; 0x19a4 8024436:	f8c6 8008 	str.w	r8, [r6, #8] 802443a:	445b      	add	r3, fp 802443c:	f2c2 0200 	movt	r2, #8192	; 0x2000 8024440:	f8c8 1004 	str.w	r1, [r8, #4] 8024444:	f8c9 3004 	str.w	r3, [r9, #4] 8024448:	d018      	beq.n	802447c <_malloc_r+0x304> 802444a:	f1ba 0f0f 	cmp.w	sl, #15 802444e:	f240 810b 	bls.w	8024668 <_malloc_r+0x4f0> 8024452:	f1aa 000c 	sub.w	r0, sl, #12 8024456:	6869      	ldr	r1, [r5, #4] 8024458:	f020 0007 	bic.w	r0, r0, #7 802445c:	f04f 0c05 	mov.w	ip, #5 8024460:	eb05 0e00 	add.w	lr, r5, r0 8024464:	280f      	cmp	r0, #15 8024466:	f001 0101 	and.w	r1, r1, #1 802446a:	ea40 0101 	orr.w	r1, r0, r1 802446e:	6069      	str	r1, [r5, #4] 8024470:	f8ce c004 	str.w	ip, [lr, #4] 8024474:	f8ce c008 	str.w	ip, [lr, #8] 8024478:	f200 8120 	bhi.w	80246bc <_malloc_r+0x544> 802447c:	f641 12a4 	movw	r2, #6564	; 0x19a4 8024480:	f8d9 102c 	ldr.w	r1, [r9, #44]	; 0x2c 8024484:	f2c2 0200 	movt	r2, #8192	; 0x2000 8024488:	68b5      	ldr	r5, [r6, #8] 802448a:	428b      	cmp	r3, r1 802448c:	f8d9 1030 	ldr.w	r1, [r9, #48]	; 0x30 8024490:	bf88      	it	hi 8024492:	62d3      	strhi	r3, [r2, #44]	; 0x2c 8024494:	f641 12a4 	movw	r2, #6564	; 0x19a4 8024498:	f2c2 0200 	movt	r2, #8192	; 0x2000 802449c:	428b      	cmp	r3, r1 802449e:	bf88      	it	hi 80244a0:	6313      	strhi	r3, [r2, #48]	; 0x30 80244a2:	686a      	ldr	r2, [r5, #4] 80244a4:	f022 0203 	bic.w	r2, r2, #3 80244a8:	4294      	cmp	r4, r2 80244aa:	ebc4 0302 	rsb	r3, r4, r2 80244ae:	d801      	bhi.n	80244b4 <_malloc_r+0x33c> 80244b0:	2b0f      	cmp	r3, #15 80244b2:	dc05      	bgt.n	80244c0 <_malloc_r+0x348> 80244b4:	4638      	mov	r0, r7 80244b6:	f04f 0800 	mov.w	r8, #0 80244ba:	f000 f975 	bl	80247a8 <__malloc_unlock> 80244be:	e690      	b.n	80241e2 <_malloc_r+0x6a> 80244c0:	192a      	adds	r2, r5, r4 80244c2:	f043 0301 	orr.w	r3, r3, #1 80244c6:	f044 0401 	orr.w	r4, r4, #1 80244ca:	4638      	mov	r0, r7 80244cc:	606c      	str	r4, [r5, #4] 80244ce:	f105 0808 	add.w	r8, r5, #8 80244d2:	6053      	str	r3, [r2, #4] 80244d4:	60b2      	str	r2, [r6, #8] 80244d6:	f000 f967 	bl	80247a8 <__malloc_unlock> 80244da:	e682      	b.n	80241e2 <_malloc_r+0x6a> 80244dc:	1859      	adds	r1, r3, r1 80244de:	68da      	ldr	r2, [r3, #12] 80244e0:	689c      	ldr	r4, [r3, #8] 80244e2:	4638      	mov	r0, r7 80244e4:	684d      	ldr	r5, [r1, #4] 80244e6:	f103 0808 	add.w	r8, r3, #8 80244ea:	f045 0501 	orr.w	r5, r5, #1 80244ee:	60e2      	str	r2, [r4, #12] 80244f0:	6094      	str	r4, [r2, #8] 80244f2:	604d      	str	r5, [r1, #4] 80244f4:	f000 f958 	bl	80247a8 <__malloc_unlock> 80244f8:	e673      	b.n	80241e2 <_malloc_r+0x6a> 80244fa:	f1bc 0f14 	cmp.w	ip, #20 80244fe:	bf9c      	itt	ls 8024500:	f10c 0c5b 	addls.w	ip, ip, #91	; 0x5b 8024504:	ea4f 054c 	movls.w	r5, ip, lsl #1 8024508:	f67f ae86 	bls.w	8024218 <_malloc_r+0xa0> 802450c:	f1bc 0f54 	cmp.w	ip, #84	; 0x54 8024510:	f200 8093 	bhi.w	802463a <_malloc_r+0x4c2> 8024514:	ea4f 3c14 	mov.w	ip, r4, lsr #12 8024518:	f10c 0c6e 	add.w	ip, ip, #110	; 0x6e 802451c:	ea4f 054c 	mov.w	r5, ip, lsl #1 8024520:	e67a      	b.n	8024218 <_malloc_r+0xa0> 8024522:	0a42      	lsrs	r2, r0, #9 8024524:	2a04      	cmp	r2, #4 8024526:	d975      	bls.n	8024614 <_malloc_r+0x49c> 8024528:	2a14      	cmp	r2, #20 802452a:	bf9c      	itt	ls 802452c:	f102 095b 	addls.w	r9, r2, #91	; 0x5b 8024530:	ea4f 0549 	movls.w	r5, r9, lsl #1 8024534:	d908      	bls.n	8024548 <_malloc_r+0x3d0> 8024536:	2a54      	cmp	r2, #84	; 0x54 8024538:	f200 80c9 	bhi.w	80246ce <_malloc_r+0x556> 802453c:	ea4f 3910 	mov.w	r9, r0, lsr #12 8024540:	f109 096e 	add.w	r9, r9, #110	; 0x6e 8024544:	ea4f 0549 	mov.w	r5, r9, lsl #1 8024548:	eb06 0585 	add.w	r5, r6, r5, lsl #2 802454c:	f240 189c 	movw	r8, #412	; 0x19c 8024550:	f2c2 0800 	movt	r8, #8192	; 0x2000 8024554:	68aa      	ldr	r2, [r5, #8] 8024556:	42aa      	cmp	r2, r5 8024558:	d079      	beq.n	802464e <_malloc_r+0x4d6> 802455a:	6851      	ldr	r1, [r2, #4] 802455c:	f021 0103 	bic.w	r1, r1, #3 8024560:	4288      	cmp	r0, r1 8024562:	d202      	bcs.n	802456a <_malloc_r+0x3f2> 8024564:	6892      	ldr	r2, [r2, #8] 8024566:	4295      	cmp	r5, r2 8024568:	d1f7      	bne.n	802455a <_malloc_r+0x3e2> 802456a:	68d0      	ldr	r0, [r2, #12] 802456c:	f8d6 9004 	ldr.w	r9, [r6, #4] 8024570:	60d8      	str	r0, [r3, #12] 8024572:	609a      	str	r2, [r3, #8] 8024574:	60d3      	str	r3, [r2, #12] 8024576:	6083      	str	r3, [r0, #8] 8024578:	e697      	b.n	80242aa <_malloc_r+0x132> 802457a:	191d      	adds	r5, r3, r4 802457c:	f041 0601 	orr.w	r6, r1, #1 8024580:	6155      	str	r5, [r2, #20] 8024582:	f044 0401 	orr.w	r4, r4, #1 8024586:	6115      	str	r5, [r2, #16] 8024588:	4638      	mov	r0, r7 802458a:	605c      	str	r4, [r3, #4] 802458c:	f103 0808 	add.w	r8, r3, #8 8024590:	f8c5 e00c 	str.w	lr, [r5, #12] 8024594:	f8c5 e008 	str.w	lr, [r5, #8] 8024598:	606e      	str	r6, [r5, #4] 802459a:	5069      	str	r1, [r5, r1] 802459c:	f000 f904 	bl	80247a8 <__malloc_unlock> 80245a0:	e61f      	b.n	80241e2 <_malloc_r+0x6a> 80245a2:	f108 0801 	add.w	r8, r8, #1 80245a6:	3008      	adds	r0, #8 80245a8:	f018 0f03 	tst.w	r8, #3 80245ac:	f47f ae99 	bne.w	80242e2 <_malloc_r+0x16a> 80245b0:	464a      	mov	r2, r9 80245b2:	f01c 0f03 	tst.w	ip, #3 80245b6:	f1a2 0108 	sub.w	r1, r2, #8 80245ba:	f10c 3cff 	add.w	ip, ip, #4294967295 80245be:	f000 809e 	beq.w	80246fe <_malloc_r+0x586> 80245c2:	6812      	ldr	r2, [r2, #0] 80245c4:	428a      	cmp	r2, r1 80245c6:	d0f4      	beq.n	80245b2 <_malloc_r+0x43a> 80245c8:	6872      	ldr	r2, [r6, #4] 80245ca:	005b      	lsls	r3, r3, #1 80245cc:	4293      	cmp	r3, r2 80245ce:	f63f aec8 	bhi.w	8024362 <_malloc_r+0x1ea> 80245d2:	2b00      	cmp	r3, #0 80245d4:	f43f aec5 	beq.w	8024362 <_malloc_r+0x1ea> 80245d8:	421a      	tst	r2, r3 80245da:	f000 8095 	beq.w	8024708 <_malloc_r+0x590> 80245de:	46c4      	mov	ip, r8 80245e0:	e67b      	b.n	80242da <_malloc_r+0x162> 80245e2:	f103 0208 	add.w	r2, r3, #8 80245e6:	695b      	ldr	r3, [r3, #20] 80245e8:	429a      	cmp	r2, r3 80245ea:	bf08      	it	eq 80245ec:	f10c 0c02 	addeq.w	ip, ip, #2 80245f0:	f43f ae2c 	beq.w	802424c <_malloc_r+0xd4> 80245f4:	e5e4      	b.n	80241c0 <_malloc_r+0x48> 80245f6:	4690      	mov	r8, r2 80245f8:	1955      	adds	r5, r2, r5 80245fa:	68d3      	ldr	r3, [r2, #12] 80245fc:	4638      	mov	r0, r7 80245fe:	f858 2f08 	ldr.w	r2, [r8, #8]! 8024602:	6869      	ldr	r1, [r5, #4] 8024604:	60d3      	str	r3, [r2, #12] 8024606:	f041 0101 	orr.w	r1, r1, #1 802460a:	609a      	str	r2, [r3, #8] 802460c:	6069      	str	r1, [r5, #4] 802460e:	f000 f8cb 	bl	80247a8 <__malloc_unlock> 8024612:	e5e6      	b.n	80241e2 <_malloc_r+0x6a> 8024614:	ea4f 1990 	mov.w	r9, r0, lsr #6 8024618:	f109 0938 	add.w	r9, r9, #56	; 0x38 802461c:	ea4f 0549 	mov.w	r5, r9, lsl #1 8024620:	e792      	b.n	8024548 <_malloc_r+0x3d0> 8024622:	42b5      	cmp	r5, r6 8024624:	f240 139c 	movw	r3, #412	; 0x19c 8024628:	f2c2 0300 	movt	r3, #8192	; 0x2000 802462c:	f43f aec8 	beq.w	80243c0 <_malloc_r+0x248> 8024630:	689d      	ldr	r5, [r3, #8] 8024632:	686a      	ldr	r2, [r5, #4] 8024634:	f022 0203 	bic.w	r2, r2, #3 8024638:	e736      	b.n	80244a8 <_malloc_r+0x330> 802463a:	f5bc 7faa 	cmp.w	ip, #340	; 0x154 802463e:	d819      	bhi.n	8024674 <_malloc_r+0x4fc> 8024640:	ea4f 3cd4 	mov.w	ip, r4, lsr #15 8024644:	f10c 0c77 	add.w	ip, ip, #119	; 0x77 8024648:	ea4f 054c 	mov.w	r5, ip, lsl #1 802464c:	e5e4      	b.n	8024218 <_malloc_r+0xa0> 802464e:	2501      	movs	r5, #1 8024650:	f8d8 1004 	ldr.w	r1, [r8, #4] 8024654:	ea4f 09a9 	mov.w	r9, r9, asr #2 8024658:	4610      	mov	r0, r2 802465a:	fa05 f509 	lsl.w	r5, r5, r9 802465e:	ea45 0901 	orr.w	r9, r5, r1 8024662:	f8c8 9004 	str.w	r9, [r8, #4] 8024666:	e783      	b.n	8024570 <_malloc_r+0x3f8> 8024668:	2301      	movs	r3, #1 802466a:	4645      	mov	r5, r8 802466c:	f8c8 3004 	str.w	r3, [r8, #4] 8024670:	2200      	movs	r2, #0 8024672:	e719      	b.n	80244a8 <_malloc_r+0x330> 8024674:	f240 5354 	movw	r3, #1364	; 0x554 8024678:	459c      	cmp	ip, r3 802467a:	d80b      	bhi.n	8024694 <_malloc_r+0x51c> 802467c:	ea4f 4c94 	mov.w	ip, r4, lsr #18 8024680:	f10c 0c7c 	add.w	ip, ip, #124	; 0x7c 8024684:	ea4f 054c 	mov.w	r5, ip, lsl #1 8024688:	e5c6      	b.n	8024218 <_malloc_r+0xa0> 802468a:	68b5      	ldr	r5, [r6, #8] 802468c:	686a      	ldr	r2, [r5, #4] 802468e:	f022 0203 	bic.w	r2, r2, #3 8024692:	e709      	b.n	80244a8 <_malloc_r+0x330> 8024694:	25fc      	movs	r5, #252	; 0xfc 8024696:	f04f 0c7e 	mov.w	ip, #126	; 0x7e 802469a:	e5bd      	b.n	8024218 <_malloc_r+0xa0> 802469c:	0511      	lsls	r1, r2, #20 802469e:	0d09      	lsrs	r1, r1, #20 80246a0:	2900      	cmp	r1, #0 80246a2:	f47f ae95 	bne.w	80243d0 <_malloc_r+0x258> 80246a6:	68b2      	ldr	r2, [r6, #8] 80246a8:	eb0b 010a 	add.w	r1, fp, sl 80246ac:	f041 0101 	orr.w	r1, r1, #1 80246b0:	6051      	str	r1, [r2, #4] 80246b2:	e6e3      	b.n	802447c <_malloc_r+0x304> 80246b4:	2101      	movs	r1, #1 80246b6:	f04f 0b00 	mov.w	fp, #0 80246ba:	e6b7      	b.n	802442c <_malloc_r+0x2b4> 80246bc:	4638      	mov	r0, r7 80246be:	f105 0108 	add.w	r1, r5, #8 80246c2:	9201      	str	r2, [sp, #4] 80246c4:	f7ff f822 	bl	802370c <_free_r> 80246c8:	9a01      	ldr	r2, [sp, #4] 80246ca:	6853      	ldr	r3, [r2, #4] 80246cc:	e6d6      	b.n	802447c <_malloc_r+0x304> 80246ce:	f5b2 7faa 	cmp.w	r2, #340	; 0x154 80246d2:	d806      	bhi.n	80246e2 <_malloc_r+0x56a> 80246d4:	ea4f 39d0 	mov.w	r9, r0, lsr #15 80246d8:	f109 0977 	add.w	r9, r9, #119	; 0x77 80246dc:	ea4f 0549 	mov.w	r5, r9, lsl #1 80246e0:	e732      	b.n	8024548 <_malloc_r+0x3d0> 80246e2:	f240 5154 	movw	r1, #1364	; 0x554 80246e6:	25fc      	movs	r5, #252	; 0xfc 80246e8:	428a      	cmp	r2, r1 80246ea:	f04f 097e 	mov.w	r9, #126	; 0x7e 80246ee:	bf9e      	ittt	ls 80246f0:	ea4f 4990 	movls.w	r9, r0, lsr #18 80246f4:	f109 097c 	addls.w	r9, r9, #124	; 0x7c 80246f8:	ea4f 0549 	movls.w	r5, r9, lsl #1 80246fc:	e724      	b.n	8024548 <_malloc_r+0x3d0> 80246fe:	6872      	ldr	r2, [r6, #4] 8024700:	ea22 0203 	bic.w	r2, r2, r3 8024704:	6072      	str	r2, [r6, #4] 8024706:	e760      	b.n	80245ca <_malloc_r+0x452> 8024708:	005b      	lsls	r3, r3, #1 802470a:	f108 0804 	add.w	r8, r8, #4 802470e:	e763      	b.n	80245d8 <_malloc_r+0x460>08024710 <memchr>: 8024710:	0783      	lsls	r3, r0, #30 8024712:	b2c9      	uxtb	r1, r1 8024714:	b470      	push	{r4, r5, r6} 8024716:	d040      	beq.n	802479a <memchr+0x8a> 8024718:	1e54      	subs	r4, r2, #1 802471a:	2a00      	cmp	r2, #0 802471c:	d03f      	beq.n	802479e <memchr+0x8e> 802471e:	7803      	ldrb	r3, [r0, #0] 8024720:	428b      	cmp	r3, r1 8024722:	d021      	beq.n	8024768 <memchr+0x58> 8024724:	1c43      	adds	r3, r0, #1 8024726:	e004      	b.n	8024732 <memchr+0x22> 8024728:	b304      	cbz	r4, 802476c <memchr+0x5c> 802472a:	7802      	ldrb	r2, [r0, #0] 802472c:	3c01      	subs	r4, #1 802472e:	428a      	cmp	r2, r1 8024730:	d01a      	beq.n	8024768 <memchr+0x58> 8024732:	f013 0f03 	tst.w	r3, #3 8024736:	4618      	mov	r0, r3 8024738:	f103 0301 	add.w	r3, r3, #1 802473c:	d1f4      	bne.n	8024728 <memchr+0x18> 802473e:	2c03      	cmp	r4, #3 8024740:	d816      	bhi.n	8024770 <memchr+0x60> 8024742:	1e65      	subs	r5, r4, #1 8024744:	b194      	cbz	r4, 802476c <memchr+0x5c> 8024746:	7803      	ldrb	r3, [r0, #0] 8024748:	428b      	cmp	r3, r1 802474a:	d00d      	beq.n	8024768 <memchr+0x58> 802474c:	1c42      	adds	r2, r0, #1 802474e:	2300      	movs	r3, #0 8024750:	e002      	b.n	8024758 <memchr+0x48> 8024752:	7804      	ldrb	r4, [r0, #0] 8024754:	428c      	cmp	r4, r1 8024756:	d007      	beq.n	8024768 <memchr+0x58> 8024758:	429d      	cmp	r5, r3 802475a:	4610      	mov	r0, r2 802475c:	f103 0301 	add.w	r3, r3, #1 8024760:	f102 0201 	add.w	r2, r2, #1 8024764:	d1f5      	bne.n	8024752 <memchr+0x42> 8024766:	2000      	movs	r0, #0 8024768:	bc70      	pop	{r4, r5, r6} 802476a:	4770      	bx	lr 802476c:	4620      	mov	r0, r4 802476e:	e7fb      	b.n	8024768 <memchr+0x58> 8024770:	ea41 2601 	orr.w	r6, r1, r1, lsl #8 8024774:	ea46 4606 	orr.w	r6, r6, r6, lsl #16 8024778:	4602      	mov	r2, r0 802477a:	3004      	adds	r0, #4 802477c:	6813      	ldr	r3, [r2, #0] 802477e:	4073      	eors	r3, r6 8024780:	f1a3 3501 	sub.w	r5, r3, #16843009	; 0x1010101 8024784:	ea25 0303 	bic.w	r3, r5, r3 8024788:	f013 3f80 	tst.w	r3, #2155905152	; 0x80808080 802478c:	d103      	bne.n	8024796 <memchr+0x86> 802478e:	3c04      	subs	r4, #4 8024790:	2c03      	cmp	r4, #3 8024792:	d8f1      	bhi.n	8024778 <memchr+0x68> 8024794:	e7d5      	b.n	8024742 <memchr+0x32> 8024796:	4610      	mov	r0, r2 8024798:	e7d3      	b.n	8024742 <memchr+0x32> 802479a:	4614      	mov	r4, r2 802479c:	e7cf      	b.n	802473e <memchr+0x2e> 802479e:	4610      	mov	r0, r2 80247a0:	e7e2      	b.n	8024768 <memchr+0x58> 80247a2:	bf00      	nop080247a4 <__malloc_lock>: 80247a4:	4770      	bx	lr 80247a6:	bf00      	nop080247a8 <__malloc_unlock>: 80247a8:	4770      	bx	lr 80247aa:	bf00      	nop080247ac <_Balloc>: 80247ac:	b570      	push	{r4, r5, r6, lr} 80247ae:	4606      	mov	r6, r0 80247b0:	6a44      	ldr	r4, [r0, #36]	; 0x24 80247b2:	460d      	mov	r5, r1 80247b4:	b15c      	cbz	r4, 80247ce <_Balloc+0x22> 80247b6:	68e2      	ldr	r2, [r4, #12] 80247b8:	b19a      	cbz	r2, 80247e2 <_Balloc+0x36> 80247ba:	f852 0025 	ldr.w	r0, [r2, r5, lsl #2] 80247be:	b1e0      	cbz	r0, 80247fa <_Balloc+0x4e> 80247c0:	6801      	ldr	r1, [r0, #0] 80247c2:	f842 1025 	str.w	r1, [r2, r5, lsl #2] 80247c6:	2200      	movs	r2, #0 80247c8:	6102      	str	r2, [r0, #16] 80247ca:	60c2      	str	r2, [r0, #12] 80247cc:	bd70      	pop	{r4, r5, r6, pc} 80247ce:	2010      	movs	r0, #16 80247d0:	f7ff fcc2 	bl	8024158 <malloc> 80247d4:	2300      	movs	r3, #0 80247d6:	4604      	mov	r4, r0 80247d8:	6270      	str	r0, [r6, #36]	; 0x24 80247da:	6043      	str	r3, [r0, #4] 80247dc:	6083      	str	r3, [r0, #8] 80247de:	6003      	str	r3, [r0, #0] 80247e0:	60c3      	str	r3, [r0, #12] 80247e2:	2221      	movs	r2, #33	; 0x21 80247e4:	4630      	mov	r0, r6 80247e6:	2104      	movs	r1, #4 80247e8:	f000 fcfc 	bl	80251e4 <_calloc_r> 80247ec:	6a73      	ldr	r3, [r6, #36]	; 0x24 80247ee:	60e0      	str	r0, [r4, #12] 80247f0:	68da      	ldr	r2, [r3, #12] 80247f2:	2a00      	cmp	r2, #0 80247f4:	d1e1      	bne.n	80247ba <_Balloc+0xe> 80247f6:	2000      	movs	r0, #0 80247f8:	bd70      	pop	{r4, r5, r6, pc} 80247fa:	2301      	movs	r3, #1 80247fc:	4630      	mov	r0, r6 80247fe:	4619      	mov	r1, r3 8024800:	fa03 f405 	lsl.w	r4, r3, r5 8024804:	1d62      	adds	r2, r4, #5 8024806:	0092      	lsls	r2, r2, #2 8024808:	f000 fcec 	bl	80251e4 <_calloc_r> 802480c:	2800      	cmp	r0, #0 802480e:	d0f2      	beq.n	80247f6 <_Balloc+0x4a> 8024810:	6045      	str	r5, [r0, #4] 8024812:	6084      	str	r4, [r0, #8] 8024814:	e7d7      	b.n	80247c6 <_Balloc+0x1a> 8024816:	bf00      	nop08024818 <_Bfree>: 8024818:	b530      	push	{r4, r5, lr} 802481a:	4604      	mov	r4, r0 802481c:	6a45      	ldr	r5, [r0, #36]	; 0x24 802481e:	b083      	sub	sp, #12 8024820:	b155      	cbz	r5, 8024838 <_Bfree+0x20> 8024822:	b139      	cbz	r1, 8024834 <_Bfree+0x1c> 8024824:	6a63      	ldr	r3, [r4, #36]	; 0x24 8024826:	684a      	ldr	r2, [r1, #4] 8024828:	68db      	ldr	r3, [r3, #12] 802482a:	f853 0022 	ldr.w	r0, [r3, r2, lsl #2] 802482e:	6008      	str	r0, [r1, #0] 8024830:	f843 1022 	str.w	r1, [r3, r2, lsl #2] 8024834:	b003      	add	sp, #12 8024836:	bd30      	pop	{r4, r5, pc} 8024838:	2010      	movs	r0, #16 802483a:	9101      	str	r1, [sp, #4] 802483c:	f7ff fc8c 	bl	8024158 <malloc> 8024840:	9901      	ldr	r1, [sp, #4] 8024842:	6260      	str	r0, [r4, #36]	; 0x24 8024844:	6045      	str	r5, [r0, #4] 8024846:	6085      	str	r5, [r0, #8] 8024848:	6005      	str	r5, [r0, #0] 802484a:	60c5      	str	r5, [r0, #12] 802484c:	e7e9      	b.n	8024822 <_Bfree+0xa> 802484e:	bf00      	nop08024850 <__multadd>: 8024850:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 8024854:	4688      	mov	r8, r1 8024856:	f8d1 a010 	ldr.w	sl, [r1, #16] 802485a:	b082      	sub	sp, #8 802485c:	4681      	mov	r9, r0 802485e:	f101 0514 	add.w	r5, r1, #20 8024862:	2400      	movs	r4, #0 8024864:	682f      	ldr	r7, [r5, #0] 8024866:	3401      	adds	r4, #1 8024868:	b2be      	uxth	r6, r7 802486a:	0c3f      	lsrs	r7, r7, #16 802486c:	fb02 3606 	mla	r6, r2, r6, r3 8024870:	fb02 f307 	mul.w	r3, r2, r7 8024874:	eb03 4316 	add.w	r3, r3, r6, lsr #16 8024878:	b2b6      	uxth	r6, r6 802487a:	eb06 4603 	add.w	r6, r6, r3, lsl #16 802487e:	0c1b      	lsrs	r3, r3, #16 8024880:	45a2      	cmp	sl, r4 8024882:	f845 6b04 	str.w	r6, [r5], #4 8024886:	dced      	bgt.n	8024864 <__multadd+0x14> 8024888:	b153      	cbz	r3, 80248a0 <__multadd+0x50> 802488a:	f8d8 2008 	ldr.w	r2, [r8, #8] 802488e:	4592      	cmp	sl, r2 8024890:	da0a      	bge.n	80248a8 <__multadd+0x58> 8024892:	eb08 028a 	add.w	r2, r8, sl, lsl #2 8024896:	f10a 0101 	add.w	r1, sl, #1 802489a:	f8c8 1010 	str.w	r1, [r8, #16] 802489e:	6153      	str	r3, [r2, #20] 80248a0:	4640      	mov	r0, r8 80248a2:	b002      	add	sp, #8 80248a4:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 80248a8:	f8d8 1004 	ldr.w	r1, [r8, #4] 80248ac:	4648      	mov	r0, r9 80248ae:	9301      	str	r3, [sp, #4] 80248b0:	3101      	adds	r1, #1 80248b2:	f7ff ff7b 	bl	80247ac <_Balloc> 80248b6:	f8d8 2010 	ldr.w	r2, [r8, #16] 80248ba:	f108 010c 	add.w	r1, r8, #12 80248be:	3202      	adds	r2, #2 80248c0:	0092      	lsls	r2, r2, #2 80248c2:	4604      	mov	r4, r0 80248c4:	300c      	adds	r0, #12 80248c6:	f7fd f841 	bl	802194c <memcpy> 80248ca:	4641      	mov	r1, r8 80248cc:	4648      	mov	r0, r9 80248ce:	46a0      	mov	r8, r4 80248d0:	f7ff ffa2 	bl	8024818 <_Bfree> 80248d4:	9b01      	ldr	r3, [sp, #4] 80248d6:	e7dc      	b.n	8024892 <__multadd+0x42>080248d8 <__s2b>: 80248d8:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 80248dc:	f648 6539 	movw	r5, #36409	; 0x8e39 80248e0:	461f      	mov	r7, r3 80248e2:	f6c3 05e3 	movt	r5, #14563	; 0x38e3 80248e6:	3308      	adds	r3, #8 80248e8:	4606      	mov	r6, r0 80248ea:	460c      	mov	r4, r1 80248ec:	4690      	mov	r8, r2 80248ee:	fb85 1003 	smull	r1, r0, r5, r3 80248f2:	17db      	asrs	r3, r3, #31 80248f4:	ebc3 0060 	rsb	r0, r3, r0, asr #1 80248f8:	2801      	cmp	r0, #1 80248fa:	dd37      	ble.n	802496c <__s2b+0x94> 80248fc:	2501      	movs	r5, #1 80248fe:	2100      	movs	r1, #0 8024900:	006d      	lsls	r5, r5, #1 8024902:	3101      	adds	r1, #1 8024904:	42a8      	cmp	r0, r5 8024906:	dcfb      	bgt.n	8024900 <__s2b+0x28> 8024908:	4630      	mov	r0, r6 802490a:	f7ff ff4f 	bl	80247ac <_Balloc> 802490e:	9b08      	ldr	r3, [sp, #32] 8024910:	6143      	str	r3, [r0, #20] 8024912:	2301      	movs	r3, #1 8024914:	f1b8 0f09 	cmp.w	r8, #9 8024918:	4601      	mov	r1, r0 802491a:	6103      	str	r3, [r0, #16] 802491c:	dd22      	ble.n	8024964 <__s2b+0x8c> 802491e:	f104 0909 	add.w	r9, r4, #9 8024922:	4444      	add	r4, r8 8024924:	464d      	mov	r5, r9 8024926:	f815 3b01 	ldrb.w	r3, [r5], #1 802492a:	220a      	movs	r2, #10 802492c:	4630      	mov	r0, r6 802492e:	3b30      	subs	r3, #48	; 0x30 8024930:	f7ff ff8e 	bl	8024850 <__multadd> 8024934:	42a5      	cmp	r5, r4 8024936:	4601      	mov	r1, r0 8024938:	d1f5      	bne.n	8024926 <__s2b+0x4e> 802493a:	eb09 0408 	add.w	r4, r9, r8 802493e:	3c08      	subs	r4, #8 8024940:	4547      	cmp	r7, r8 8024942:	dd0c      	ble.n	802495e <__s2b+0x86> 8024944:	ebc8 0707 	rsb	r7, r8, r7 8024948:	19e7      	adds	r7, r4, r7 802494a:	f814 3b01 	ldrb.w	r3, [r4], #1 802494e:	220a      	movs	r2, #10 8024950:	4630      	mov	r0, r6 8024952:	3b30      	subs	r3, #48	; 0x30 8024954:	f7ff ff7c 	bl	8024850 <__multadd> 8024958:	42bc      	cmp	r4, r7 802495a:	4601      	mov	r1, r0 802495c:	d1f5      	bne.n	802494a <__s2b+0x72> 802495e:	4608      	mov	r0, r1 8024960:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 8024964:	340a      	adds	r4, #10 8024966:	f04f 0809 	mov.w	r8, #9 802496a:	e7e9      	b.n	8024940 <__s2b+0x68> 802496c:	2100      	movs	r1, #0 802496e:	e7cb      	b.n	8024908 <__s2b+0x30>08024970 <__hi0bits>: 8024970:	4603      	mov	r3, r0 8024972:	2000      	movs	r0, #0 8024974:	0c1a      	lsrs	r2, r3, #16 8024976:	d101      	bne.n	802497c <__hi0bits+0xc> 8024978:	041b      	lsls	r3, r3, #16 802497a:	2010      	movs	r0, #16 802497c:	f013 4f7f 	tst.w	r3, #4278190080	; 0xff000000 8024980:	d101      	bne.n	8024986 <__hi0bits+0x16> 8024982:	3008      	adds	r0, #8 8024984:	021b      	lsls	r3, r3, #8 8024986:	f013 4f70 	tst.w	r3, #4026531840	; 0xf0000000 802498a:	d101      	bne.n	8024990 <__hi0bits+0x20> 802498c:	3004      	adds	r0, #4 802498e:	011b      	lsls	r3, r3, #4 8024990:	f013 4f40 	tst.w	r3, #3221225472	; 0xc0000000 8024994:	d101      	bne.n	802499a <__hi0bits+0x2a> 8024996:	3002      	adds	r0, #2 8024998:	009b      	lsls	r3, r3, #2 802499a:	2b00      	cmp	r3, #0 802499c:	db02      	blt.n	80249a4 <__hi0bits+0x34> 802499e:	005b      	lsls	r3, r3, #1 80249a0:	d401      	bmi.n	80249a6 <__hi0bits+0x36> 80249a2:	2020      	movs	r0, #32 80249a4:	4770      	bx	lr 80249a6:	3001      	adds	r0, #1 80249a8:	4770      	bx	lr 80249aa:	bf00      	nop080249ac <__lo0bits>: 80249ac:	6803      	ldr	r3, [r0, #0] 80249ae:	4602      	mov	r2, r0 80249b0:	f013 0007 	ands.w	r0, r3, #7 80249b4:	d007      	beq.n	80249c6 <__lo0bits+0x1a> 80249b6:	07d9      	lsls	r1, r3, #31 80249b8:	d41f      	bmi.n	80249fa <__lo0bits+0x4e> 80249ba:	0798      	lsls	r0, r3, #30 80249bc:	d41f      	bmi.n	80249fe <__lo0bits+0x52> 80249be:	089b      	lsrs	r3, r3, #2 80249c0:	2002      	movs	r0, #2 80249c2:	6013      	str	r3, [r2, #0] 80249c4:	4770      	bx	lr 80249c6:	b299      	uxth	r1, r3 80249c8:	b909      	cbnz	r1, 80249ce <__lo0bits+0x22> 80249ca:	0c1b      	lsrs	r3, r3, #16 80249cc:	2010      	movs	r0, #16 80249ce:	f013 0fff 	tst.w	r3, #255	; 0xff 80249d2:	d101      	bne.n	80249d8 <__lo0bits+0x2c> 80249d4:	3008      	adds	r0, #8 80249d6:	0a1b      	lsrs	r3, r3, #8 80249d8:	0719      	lsls	r1, r3, #28 80249da:	d101      	bne.n	80249e0 <__lo0bits+0x34> 80249dc:	3004      	adds	r0, #4 80249de:	091b      	lsrs	r3, r3, #4 80249e0:	0799      	lsls	r1, r3, #30 80249e2:	d101      	bne.n	80249e8 <__lo0bits+0x3c> 80249e4:	3002      	adds	r0, #2 80249e6:	089b      	lsrs	r3, r3, #2 80249e8:	07d9      	lsls	r1, r3, #31 80249ea:	d404      	bmi.n	80249f6 <__lo0bits+0x4a> 80249ec:	085b      	lsrs	r3, r3, #1 80249ee:	d101      	bne.n	80249f4 <__lo0bits+0x48> 80249f0:	2020      	movs	r0, #32 80249f2:	4770      	bx	lr 80249f4:	3001      	adds	r0, #1 80249f6:	6013      	str	r3, [r2, #0] 80249f8:	4770      	bx	lr 80249fa:	2000      	movs	r0, #0 80249fc:	4770      	bx	lr 80249fe:	085b      	lsrs	r3, r3, #1 8024a00:	2001      	movs	r0, #1 8024a02:	6013      	str	r3, [r2, #0] 8024a04:	4770      	bx	lr 8024a06:	bf00      	nop08024a08 <__i2b>: 8024a08:	b510      	push	{r4, lr} 8024a0a:	460c      	mov	r4, r1 8024a0c:	2101      	movs	r1, #1 8024a0e:	f7ff fecd 	bl	80247ac <_Balloc> 8024a12:	2201      	movs	r2, #1 8024a14:	6144      	str	r4, [r0, #20] 8024a16:	6102      	str	r2, [r0, #16] 8024a18:	bd10      	pop	{r4, pc} 8024a1a:	bf00      	nop08024a1c <__multiply>: 8024a1c:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8024a20:	460c      	mov	r4, r1 8024a22:	690e      	ldr	r6, [r1, #16] 8024a24:	b085      	sub	sp, #20 8024a26:	6915      	ldr	r5, [r2, #16] 8024a28:	4617      	mov	r7, r2 8024a2a:	42ae      	cmp	r6, r5 8024a2c:	da04      	bge.n	8024a38 <__multiply+0x1c> 8024a2e:	4632      	mov	r2, r6 8024a30:	463c      	mov	r4, r7 8024a32:	462e      	mov	r6, r5 8024a34:	460f      	mov	r7, r1 8024a36:	4615      	mov	r5, r2 8024a38:	68a3      	ldr	r3, [r4, #8] 8024a3a:	eb06 0805 	add.w	r8, r6, r5 8024a3e:	6861      	ldr	r1, [r4, #4] 8024a40:	4598      	cmp	r8, r3 8024a42:	bfc8      	it	gt 8024a44:	3101      	addgt	r1, #1 8024a46:	f7ff feb1 	bl	80247ac <_Balloc> 8024a4a:	eb00 0988 	add.w	r9, r0, r8, lsl #2 8024a4e:	f100 0314 	add.w	r3, r0, #20 8024a52:	f109 0914 	add.w	r9, r9, #20 8024a56:	9001      	str	r0, [sp, #4] 8024a58:	2000      	movs	r0, #0 8024a5a:	454b      	cmp	r3, r9 8024a5c:	d203      	bcs.n	8024a66 <__multiply+0x4a> 8024a5e:	f843 0b04 	str.w	r0, [r3], #4 8024a62:	4599      	cmp	r9, r3 8024a64:	d8fb      	bhi.n	8024a5e <__multiply+0x42> 8024a66:	eb07 0585 	add.w	r5, r7, r5, lsl #2 8024a6a:	eb04 0686 	add.w	r6, r4, r6, lsl #2 8024a6e:	3714      	adds	r7, #20 8024a70:	3514      	adds	r5, #20 8024a72:	3414      	adds	r4, #20 8024a74:	3614      	adds	r6, #20 8024a76:	42af      	cmp	r7, r5 8024a78:	d257      	bcs.n	8024b2a <__multiply+0x10e> 8024a7a:	9a01      	ldr	r2, [sp, #4] 8024a7c:	f8cd 9008 	str.w	r9, [sp, #8] 8024a80:	46a9      	mov	r9, r5 8024a82:	f8cd 800c 	str.w	r8, [sp, #12] 8024a86:	f102 0c18 	add.w	ip, r2, #24 8024a8a:	46a0      	mov	r8, r4 8024a8c:	f857 4b04 	ldr.w	r4, [r7], #4 8024a90:	b2a0      	uxth	r0, r4 8024a92:	b1f0      	cbz	r0, 8024ad2 <__multiply+0xb6> 8024a94:	4642      	mov	r2, r8 8024a96:	f1ac 0304 	sub.w	r3, ip, #4 8024a9a:	2400      	movs	r4, #0 8024a9c:	f852 1b04 	ldr.w	r1, [r2], #4 8024aa0:	681d      	ldr	r5, [r3, #0] 8024aa2:	fa1f fa81 	uxth.w	sl, r1 8024aa6:	0c09      	lsrs	r1, r1, #16 8024aa8:	fa1f fb85 	uxth.w	fp, r5 8024aac:	0c2d      	lsrs	r5, r5, #16 8024aae:	fb00 ba0a 	mla	sl, r0, sl, fp 8024ab2:	fb00 5101 	mla	r1, r0, r1, r5 8024ab6:	4454      	add	r4, sl 8024ab8:	eb01 4114 	add.w	r1, r1, r4, lsr #16 8024abc:	b2a4      	uxth	r4, r4 8024abe:	ea44 4501 	orr.w	r5, r4, r1, lsl #16 8024ac2:	0c0c      	lsrs	r4, r1, #16 8024ac4:	4296      	cmp	r6, r2 8024ac6:	f843 5b04 	str.w	r5, [r3], #4 8024aca:	d8e7      	bhi.n	8024a9c <__multiply+0x80> 8024acc:	601c      	str	r4, [r3, #0] 8024ace:	f857 4c04 	ldr.w	r4, [r7, #-4] 8024ad2:	0c24      	lsrs	r4, r4, #16 8024ad4:	d021      	beq.n	8024b1a <__multiply+0xfe> 8024ad6:	f85c 1c04 	ldr.w	r1, [ip, #-4] 8024ada:	4642      	mov	r2, r8 8024adc:	4663      	mov	r3, ip 8024ade:	2500      	movs	r5, #0 8024ae0:	4608      	mov	r0, r1 8024ae2:	f8b2 a000 	ldrh.w	sl, [r2] 8024ae6:	0c00      	lsrs	r0, r0, #16 8024ae8:	b289      	uxth	r1, r1 8024aea:	469b      	mov	fp, r3 8024aec:	fb04 000a 	mla	r0, r4, sl, r0 8024af0:	1945      	adds	r5, r0, r5 8024af2:	ea41 4105 	orr.w	r1, r1, r5, lsl #16 8024af6:	f843 1c04 	str.w	r1, [r3, #-4] 8024afa:	f853 0b04 	ldr.w	r0, [r3], #4 8024afe:	f852 1b04 	ldr.w	r1, [r2], #4 8024b02:	fa1f fa80 	uxth.w	sl, r0 8024b06:	0c09      	lsrs	r1, r1, #16 8024b08:	fb04 a101 	mla	r1, r4, r1, sl 8024b0c:	eb01 4115 	add.w	r1, r1, r5, lsr #16 8024b10:	0c0d      	lsrs	r5, r1, #16 8024b12:	4296      	cmp	r6, r2 8024b14:	d8e5      	bhi.n	8024ae2 <__multiply+0xc6> 8024b16:	f8cb 1000 	str.w	r1, [fp] 8024b1a:	45b9      	cmp	r9, r7 8024b1c:	f10c 0c04 	add.w	ip, ip, #4 8024b20:	d8b4      	bhi.n	8024a8c <__multiply+0x70> 8024b22:	f8dd 9008 	ldr.w	r9, [sp, #8] 8024b26:	f8dd 800c 	ldr.w	r8, [sp, #12] 8024b2a:	f1b8 0f00 	cmp.w	r8, #0 8024b2e:	dd0b      	ble.n	8024b48 <__multiply+0x12c> 8024b30:	f859 3c04 	ldr.w	r3, [r9, #-4] 8024b34:	f1a9 0904 	sub.w	r9, r9, #4 8024b38:	b11b      	cbz	r3, 8024b42 <__multiply+0x126> 8024b3a:	e005      	b.n	8024b48 <__multiply+0x12c> 8024b3c:	f859 3d04 	ldr.w	r3, [r9, #-4]! 8024b40:	b913      	cbnz	r3, 8024b48 <__multiply+0x12c> 8024b42:	f1b8 0801 	subs.w	r8, r8, #1 8024b46:	d1f9      	bne.n	8024b3c <__multiply+0x120> 8024b48:	9b01      	ldr	r3, [sp, #4] 8024b4a:	4618      	mov	r0, r3 8024b4c:	f8c3 8010 	str.w	r8, [r3, #16] 8024b50:	b005      	add	sp, #20 8024b52:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 8024b56:	bf00      	nop08024b58 <__pow5mult>: 8024b58:	f012 0303 	ands.w	r3, r2, #3 8024b5c:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8024b60:	4614      	mov	r4, r2 8024b62:	4680      	mov	r8, r0 8024b64:	460f      	mov	r7, r1 8024b66:	d128      	bne.n	8024bba <__pow5mult+0x62> 8024b68:	10a4      	asrs	r4, r4, #2 8024b6a:	d01a      	beq.n	8024ba2 <__pow5mult+0x4a> 8024b6c:	f8d8 5024 	ldr.w	r5, [r8, #36]	; 0x24 8024b70:	2d00      	cmp	r5, #0 8024b72:	d02e      	beq.n	8024bd2 <__pow5mult+0x7a> 8024b74:	68ae      	ldr	r6, [r5, #8] 8024b76:	b92e      	cbnz	r6, 8024b84 <__pow5mult+0x2c> 8024b78:	e036      	b.n	8024be8 <__pow5mult+0x90> 8024b7a:	1064      	asrs	r4, r4, #1 8024b7c:	d011      	beq.n	8024ba2 <__pow5mult+0x4a> 8024b7e:	6835      	ldr	r5, [r6, #0] 8024b80:	b195      	cbz	r5, 8024ba8 <__pow5mult+0x50> 8024b82:	462e      	mov	r6, r5 8024b84:	07e0      	lsls	r0, r4, #31 8024b86:	d5f8      	bpl.n	8024b7a <__pow5mult+0x22> 8024b88:	4639      	mov	r1, r7 8024b8a:	4632      	mov	r2, r6 8024b8c:	4640      	mov	r0, r8 8024b8e:	f7ff ff45 	bl	8024a1c <__multiply> 8024b92:	4639      	mov	r1, r7 8024b94:	4605      	mov	r5, r0 8024b96:	4640      	mov	r0, r8 8024b98:	f7ff fe3e 	bl	8024818 <_Bfree> 8024b9c:	1064      	asrs	r4, r4, #1 8024b9e:	462f      	mov	r7, r5 8024ba0:	d1ed      	bne.n	8024b7e <__pow5mult+0x26> 8024ba2:	4638      	mov	r0, r7 8024ba4:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 8024ba8:	4631      	mov	r1, r6 8024baa:	4632      	mov	r2, r6 8024bac:	4640      	mov	r0, r8 8024bae:	f7ff ff35 	bl	8024a1c <__multiply> 8024bb2:	6030      	str	r0, [r6, #0] 8024bb4:	4606      	mov	r6, r0 8024bb6:	6005      	str	r5, [r0, #0] 8024bb8:	e7e4      	b.n	8024b84 <__pow5mult+0x2c> 8024bba:	f646 22c0 	movw	r2, #27328	; 0x6ac0 8024bbe:	1e5d      	subs	r5, r3, #1 8024bc0:	f6c0 0203 	movt	r2, #2051	; 0x803 8024bc4:	2300      	movs	r3, #0 8024bc6:	f852 2025 	ldr.w	r2, [r2, r5, lsl #2] 8024bca:	f7ff fe41 	bl	8024850 <__multadd> 8024bce:	4607      	mov	r7, r0 8024bd0:	e7ca      	b.n	8024b68 <__pow5mult+0x10> 8024bd2:	2010      	movs	r0, #16 8024bd4:	f7ff fac0 	bl	8024158 <malloc> 8024bd8:	2300      	movs	r3, #0 8024bda:	4605      	mov	r5, r0 8024bdc:	f8c8 0024 	str.w	r0, [r8, #36]	; 0x24 8024be0:	6043      	str	r3, [r0, #4] 8024be2:	6083      	str	r3, [r0, #8] 8024be4:	6003      	str	r3, [r0, #0] 8024be6:	60c3      	str	r3, [r0, #12] 8024be8:	4640      	mov	r0, r8 8024bea:	f240 2171 	movw	r1, #625	; 0x271 8024bee:	f7ff ff0b 	bl	8024a08 <__i2b> 8024bf2:	2300      	movs	r3, #0 8024bf4:	60a8      	str	r0, [r5, #8] 8024bf6:	4606      	mov	r6, r0 8024bf8:	6003      	str	r3, [r0, #0] 8024bfa:	e7c3      	b.n	8024b84 <__pow5mult+0x2c>08024bfc <__lshift>: 8024bfc:	e92d 4ff8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 8024c00:	4693      	mov	fp, r2 8024c02:	690a      	ldr	r2, [r1, #16] 8024c04:	460f      	mov	r7, r1 8024c06:	ea4f 156b 	mov.w	r5, fp, asr #5 8024c0a:	688b      	ldr	r3, [r1, #8] 8024c0c:	eb05 0a02 	add.w	sl, r5, r2 8024c10:	4681      	mov	r9, r0 8024c12:	f10a 0601 	add.w	r6, sl, #1 8024c16:	6849      	ldr	r1, [r1, #4] 8024c18:	429e      	cmp	r6, r3 8024c1a:	dd03      	ble.n	8024c24 <__lshift+0x28> 8024c1c:	005b      	lsls	r3, r3, #1 8024c1e:	3101      	adds	r1, #1 8024c20:	429e      	cmp	r6, r3 8024c22:	dcfb      	bgt.n	8024c1c <__lshift+0x20> 8024c24:	4648      	mov	r0, r9 8024c26:	f7ff fdc1 	bl	80247ac <_Balloc> 8024c2a:	2d00      	cmp	r5, #0 8024c2c:	4680      	mov	r8, r0 8024c2e:	f100 0414 	add.w	r4, r0, #20 8024c32:	dd0a      	ble.n	8024c4a <__lshift+0x4e> 8024c34:	2300      	movs	r3, #0 8024c36:	461a      	mov	r2, r3 8024c38:	3301      	adds	r3, #1 8024c3a:	f844 2b04 	str.w	r2, [r4], #4 8024c3e:	42ab      	cmp	r3, r5 8024c40:	d1fa      	bne.n	8024c38 <__lshift+0x3c> 8024c42:	eb08 0383 	add.w	r3, r8, r3, lsl #2 8024c46:	f103 0414 	add.w	r4, r3, #20 8024c4a:	6938      	ldr	r0, [r7, #16] 8024c4c:	f107 0514 	add.w	r5, r7, #20 8024c50:	eb07 0080 	add.w	r0, r7, r0, lsl #2 8024c54:	3014      	adds	r0, #20 8024c56:	f01b 0b1f 	ands.w	fp, fp, #31 8024c5a:	d01c      	beq.n	8024c96 <__lshift+0x9a> 8024c5c:	f1cb 0320 	rsb	r3, fp, #32 8024c60:	2200      	movs	r2, #0 8024c62:	6829      	ldr	r1, [r5, #0] 8024c64:	fa01 f10b 	lsl.w	r1, r1, fp 8024c68:	430a      	orrs	r2, r1 8024c6a:	f844 2b04 	str.w	r2, [r4], #4 8024c6e:	f855 2b04 	ldr.w	r2, [r5], #4 8024c72:	42a8      	cmp	r0, r5 8024c74:	fa22 f203 	lsr.w	r2, r2, r3 8024c78:	d8f3      	bhi.n	8024c62 <__lshift+0x66> 8024c7a:	6022      	str	r2, [r4, #0] 8024c7c:	b10a      	cbz	r2, 8024c82 <__lshift+0x86> 8024c7e:	f10a 0602 	add.w	r6, sl, #2 8024c82:	4648      	mov	r0, r9 8024c84:	3e01      	subs	r6, #1 8024c86:	4639      	mov	r1, r7 8024c88:	f8c8 6010 	str.w	r6, [r8, #16] 8024c8c:	f7ff fdc4 	bl	8024818 <_Bfree> 8024c90:	4640      	mov	r0, r8 8024c92:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 8024c96:	f855 3b04 	ldr.w	r3, [r5], #4 8024c9a:	42a8      	cmp	r0, r5 8024c9c:	f844 3b04 	str.w	r3, [r4], #4 8024ca0:	d9ef      	bls.n	8024c82 <__lshift+0x86> 8024ca2:	f855 3b04 	ldr.w	r3, [r5], #4 8024ca6:	42a8      	cmp	r0, r5 8024ca8:	f844 3b04 	str.w	r3, [r4], #4 8024cac:	d8f3      	bhi.n	8024c96 <__lshift+0x9a> 8024cae:	e7e8      	b.n	8024c82 <__lshift+0x86>08024cb0 <__mcmp>: 8024cb0:	4603      	mov	r3, r0 8024cb2:	690a      	ldr	r2, [r1, #16] 8024cb4:	6900      	ldr	r0, [r0, #16] 8024cb6:	b430      	push	{r4, r5} 8024cb8:	1a80      	subs	r0, r0, r2 8024cba:	d10f      	bne.n	8024cdc <__mcmp+0x2c> 8024cbc:	3204      	adds	r2, #4 8024cbe:	f103 0514 	add.w	r5, r3, #20 8024cc2:	0092      	lsls	r2, r2, #2 8024cc4:	189b      	adds	r3, r3, r2 8024cc6:	1889      	adds	r1, r1, r2 8024cc8:	3304      	adds	r3, #4 8024cca:	3104      	adds	r1, #4 8024ccc:	f853 2d04 	ldr.w	r2, [r3, #-4]! 8024cd0:	f851 4d04 	ldr.w	r4, [r1, #-4]! 8024cd4:	42a2      	cmp	r2, r4 8024cd6:	d103      	bne.n	8024ce0 <__mcmp+0x30> 8024cd8:	429d      	cmp	r5, r3 8024cda:	d3f7      	bcc.n	8024ccc <__mcmp+0x1c> 8024cdc:	bc30      	pop	{r4, r5} 8024cde:	4770      	bx	lr 8024ce0:	4294      	cmp	r4, r2 8024ce2:	bf94      	ite	ls 8024ce4:	2001      	movls	r0, #1 8024ce6:	f04f 30ff 	movhi.w	r0, #4294967295 8024cea:	e7f7      	b.n	8024cdc <__mcmp+0x2c>08024cec <__mdiff>: 8024cec:	e92d 4ff8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 8024cf0:	468b      	mov	fp, r1 8024cf2:	4604      	mov	r4, r0 8024cf4:	4611      	mov	r1, r2 8024cf6:	4658      	mov	r0, fp 8024cf8:	4691      	mov	r9, r2 8024cfa:	f7ff ffd9 	bl	8024cb0 <__mcmp> 8024cfe:	1e05      	subs	r5, r0, #0 8024d00:	d061      	beq.n	8024dc6 <__mdiff+0xda> 8024d02:	bfbc      	itt	lt 8024d04:	465b      	movlt	r3, fp 8024d06:	46cb      	movlt	fp, r9 8024d08:	4620      	mov	r0, r4 8024d0a:	bfb8      	it	lt 8024d0c:	4699      	movlt	r9, r3 8024d0e:	f8db 1004 	ldr.w	r1, [fp, #4] 8024d12:	bfac      	ite	ge 8024d14:	f04f 0800 	movge.w	r8, #0 8024d18:	f04f 0801 	movlt.w	r8, #1 8024d1c:	f7ff fd46 	bl	80247ac <_Balloc> 8024d20:	f8db 7010 	ldr.w	r7, [fp, #16] 8024d24:	f109 0514 	add.w	r5, r9, #20 8024d28:	f8d9 3010 	ldr.w	r3, [r9, #16] 8024d2c:	f10b 0614 	add.w	r6, fp, #20 8024d30:	2400      	movs	r4, #0 8024d32:	eb0b 0c87 	add.w	ip, fp, r7, lsl #2 8024d36:	eb09 0983 	add.w	r9, r9, r3, lsl #2 8024d3a:	f10c 0c14 	add.w	ip, ip, #20 8024d3e:	f109 0914 	add.w	r9, r9, #20 8024d42:	f100 0a14 	add.w	sl, r0, #20 8024d46:	f8c0 800c 	str.w	r8, [r0, #12] 8024d4a:	f856 8b04 	ldr.w	r8, [r6], #4 8024d4e:	4653      	mov	r3, sl 8024d50:	f855 ab04 	ldr.w	sl, [r5], #4 8024d54:	4632      	mov	r2, r6 8024d56:	fa1f f188 	uxth.w	r1, r8 8024d5a:	1909      	adds	r1, r1, r4 8024d5c:	fa1f fb8a 	uxth.w	fp, sl 8024d60:	ebcb 0101 	rsb	r1, fp, r1 8024d64:	ea4f 441a 	mov.w	r4, sl, lsr #16 8024d68:	ebc4 4418 	rsb	r4, r4, r8, lsr #16 8024d6c:	eb04 4421 	add.w	r4, r4, r1, asr #16 8024d70:	b289      	uxth	r1, r1 8024d72:	ea41 4104 	orr.w	r1, r1, r4, lsl #16 8024d76:	1424      	asrs	r4, r4, #16 8024d78:	45a9      	cmp	r9, r5 8024d7a:	f843 1b04 	str.w	r1, [r3], #4 8024d7e:	469a      	mov	sl, r3 8024d80:	d8e3      	bhi.n	8024d4a <__mdiff+0x5e> 8024d82:	45b4      	cmp	ip, r6 8024d84:	4698      	mov	r8, r3 8024d86:	d914      	bls.n	8024db2 <__mdiff+0xc6> 8024d88:	f852 5b04 	ldr.w	r5, [r2], #4 8024d8c:	b2a9      	uxth	r1, r5 8024d8e:	0c2d      	lsrs	r5, r5, #16 8024d90:	190c      	adds	r4, r1, r4 8024d92:	eb05 4524 	add.w	r5, r5, r4, asr #16 8024d96:	b2a4      	uxth	r4, r4 8024d98:	ea44 4105 	orr.w	r1, r4, r5, lsl #16 8024d9c:	142c      	asrs	r4, r5, #16 8024d9e:	4594      	cmp	ip, r2 8024da0:	f843 1b04 	str.w	r1, [r3], #4 8024da4:	d8f0      	bhi.n	8024d88 <__mdiff+0x9c> 8024da6:	43f3      	mvns	r3, r6 8024da8:	4463      	add	r3, ip 8024daa:	f023 0303 	bic.w	r3, r3, #3 8024dae:	3304      	adds	r3, #4 8024db0:	4443      	add	r3, r8 8024db2:	3b04      	subs	r3, #4 8024db4:	b921      	cbnz	r1, 8024dc0 <__mdiff+0xd4> 8024db6:	f853 2d04 	ldr.w	r2, [r3, #-4]! 8024dba:	3f01      	subs	r7, #1 8024dbc:	2a00      	cmp	r2, #0 8024dbe:	d0fa      	beq.n	8024db6 <__mdiff+0xca> 8024dc0:	6107      	str	r7, [r0, #16] 8024dc2:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 8024dc6:	4620      	mov	r0, r4 8024dc8:	4629      	mov	r1, r5 8024dca:	f7ff fcef 	bl	80247ac <_Balloc> 8024dce:	2301      	movs	r3, #1 8024dd0:	6145      	str	r5, [r0, #20] 8024dd2:	6103      	str	r3, [r0, #16] 8024dd4:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}08024dd8 <__ulp>: 8024dd8:	2300      	movs	r3, #0 8024dda:	f6c7 73f0 	movt	r3, #32752	; 0x7ff0 8024dde:	400b      	ands	r3, r1 8024de0:	f1a3 7350 	sub.w	r3, r3, #54525952	; 0x3400000 8024de4:	2b00      	cmp	r3, #0 8024de6:	dd02      	ble.n	8024dee <__ulp+0x16> 8024de8:	4619      	mov	r1, r3 8024dea:	2000      	movs	r0, #0 8024dec:	4770      	bx	lr 8024dee:	425b      	negs	r3, r3 8024df0:	2100      	movs	r1, #0 8024df2:	151b      	asrs	r3, r3, #20 8024df4:	2b13      	cmp	r3, #19 8024df6:	dd0b      	ble.n	8024e10 <__ulp+0x38> 8024df8:	2b32      	cmp	r3, #50	; 0x32 8024dfa:	dd02      	ble.n	8024e02 <__ulp+0x2a> 8024dfc:	2301      	movs	r3, #1 8024dfe:	4618      	mov	r0, r3 8024e00:	4770      	bx	lr 8024e02:	2201      	movs	r2, #1 8024e04:	f1c3 0333 	rsb	r3, r3, #51	; 0x33 8024e08:	fa02 f303 	lsl.w	r3, r2, r3 8024e0c:	4618      	mov	r0, r3 8024e0e:	4770      	bx	lr 8024e10:	f44f 2200 	mov.w	r2, #524288	; 0x80000 8024e14:	2000      	movs	r0, #0 8024e16:	fa42 f103 	asr.w	r1, r2, r3 8024e1a:	4770      	bx	lr08024e1c <__b2d>: 8024e1c:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 8024e20:	f100 0814 	add.w	r8, r0, #20 8024e24:	6906      	ldr	r6, [r0, #16] 8024e26:	4689      	mov	r9, r1 8024e28:	3604      	adds	r6, #4 8024e2a:	eb00 0686 	add.w	r6, r0, r6, lsl #2 8024e2e:	4634      	mov	r4, r6 8024e30:	4637      	mov	r7, r6 8024e32:	f854 5b04 	ldr.w	r5, [r4], #4 8024e36:	4628      	mov	r0, r5 8024e38:	f7ff fd9a 	bl	8024970 <__hi0bits> 8024e3c:	280a      	cmp	r0, #10 8024e3e:	f1c0 0320 	rsb	r3, r0, #32 8024e42:	f8c9 3000 	str.w	r3, [r9] 8024e46:	dc18      	bgt.n	8024e7a <__b2d+0x5e> 8024e48:	45b0      	cmp	r8, r6 8024e4a:	f1c0 010b 	rsb	r1, r0, #11 8024e4e:	fa25 f701 	lsr.w	r7, r5, r1 8024e52:	bf38      	it	cc 8024e54:	f854 4c08 	ldrcc.w	r4, [r4, #-8] 8024e58:	f047 577f 	orr.w	r7, r7, #1069547520	; 0x3fc00000 8024e5c:	f447 1340 	orr.w	r3, r7, #3145728	; 0x300000 8024e60:	bf34      	ite	cc 8024e62:	fa24 f101 	lsrcc.w	r1, r4, r1 8024e66:	2100      	movcs	r1, #0 8024e68:	3015      	adds	r0, #21 8024e6a:	fa05 f500 	lsl.w	r5, r5, r0 8024e6e:	ea41 0205 	orr.w	r2, r1, r5 8024e72:	4610      	mov	r0, r2 8024e74:	4619      	mov	r1, r3 8024e76:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 8024e7a:	2100      	movs	r1, #0 8024e7c:	45b0      	cmp	r8, r6 8024e7e:	d202      	bcs.n	8024e86 <__b2d+0x6a> 8024e80:	f854 1c08 	ldr.w	r1, [r4, #-8] 8024e84:	1f37      	subs	r7, r6, #4 8024e86:	f1b0 040b 	subs.w	r4, r0, #11 8024e8a:	d018      	beq.n	8024ebe <__b2d+0xa2> 8024e8c:	fa05 f504 	lsl.w	r5, r5, r4 8024e90:	f1c0 002b 	rsb	r0, r0, #43	; 0x2b 8024e94:	4547      	cmp	r7, r8 8024e96:	f045 557f 	orr.w	r5, r5, #1069547520	; 0x3fc00000 8024e9a:	fa21 f600 	lsr.w	r6, r1, r0 8024e9e:	f445 1540 	orr.w	r5, r5, #3145728	; 0x300000 8024ea2:	ea45 0306 	orr.w	r3, r5, r6 8024ea6:	bf88      	it	hi 8024ea8:	f857 5c04 	ldrhi.w	r5, [r7, #-4] 8024eac:	fa01 f104 	lsl.w	r1, r1, r4 8024eb0:	bf8c      	ite	hi 8024eb2:	fa25 f000 	lsrhi.w	r0, r5, r0 8024eb6:	2000      	movls	r0, #0 8024eb8:	ea40 0201 	orr.w	r2, r0, r1 8024ebc:	e7d9      	b.n	8024e72 <__b2d+0x56> 8024ebe:	f045 557f 	orr.w	r5, r5, #1069547520	; 0x3fc00000 8024ec2:	460a      	mov	r2, r1 8024ec4:	f445 1340 	orr.w	r3, r5, #3145728	; 0x300000 8024ec8:	e7d3      	b.n	8024e72 <__b2d+0x56> 8024eca:	bf00      	nop08024ecc <__d2b>: 8024ecc:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr} 8024ed0:	b083      	sub	sp, #12 8024ed2:	2101      	movs	r1, #1 8024ed4:	461d      	mov	r5, r3 8024ed6:	4614      	mov	r4, r2 8024ed8:	9f0a      	ldr	r7, [sp, #40]	; 0x28 8024eda:	f7ff fc67 	bl	80247ac <_Balloc> 8024ede:	f3c5 560a 	ubfx	r6, r5, #20, #11 8024ee2:	f025 437f 	bic.w	r3, r5, #4278190080	; 0xff000000 8024ee6:	46a9      	mov	r9, r5 8024ee8:	f423 0370 	bic.w	r3, r3, #15728640	; 0xf00000 8024eec:	4680      	mov	r8, r0 8024eee:	b10e      	cbz	r6, 8024ef4 <__d2b+0x28> 8024ef0:	f443 1380 	orr.w	r3, r3, #1048576	; 0x100000 8024ef4:	9301      	str	r3, [sp, #4] 8024ef6:	2c00      	cmp	r4, #0 8024ef8:	d024      	beq.n	8024f44 <__d2b+0x78> 8024efa:	a802      	add	r0, sp, #8 8024efc:	f840 4d08 	str.w	r4, [r0, #-8]! 8024f00:	4668      	mov	r0, sp 8024f02:	f7ff fd53 	bl	80249ac <__lo0bits> 8024f06:	9b01      	ldr	r3, [sp, #4] 8024f08:	2800      	cmp	r0, #0 8024f0a:	d131      	bne.n	8024f70 <__d2b+0xa4> 8024f0c:	9a00      	ldr	r2, [sp, #0] 8024f0e:	f8c8 2014 	str.w	r2, [r8, #20] 8024f12:	2b00      	cmp	r3, #0 8024f14:	bf0c      	ite	eq 8024f16:	2401      	moveq	r4, #1 8024f18:	2402      	movne	r4, #2 8024f1a:	f8c8 3018 	str.w	r3, [r8, #24] 8024f1e:	f8c8 4010 	str.w	r4, [r8, #16] 8024f22:	b9e6      	cbnz	r6, 8024f5e <__d2b+0x92> 8024f24:	eb08 0384 	add.w	r3, r8, r4, lsl #2 8024f28:	f2a0 4032 	subw	r0, r0, #1074	; 0x432 8024f2c:	6038      	str	r0, [r7, #0] 8024f2e:	6918      	ldr	r0, [r3, #16] 8024f30:	f7ff fd1e 	bl	8024970 <__hi0bits> 8024f34:	9b0b      	ldr	r3, [sp, #44]	; 0x2c 8024f36:	ebc0 1044 	rsb	r0, r0, r4, lsl #5 8024f3a:	6018      	str	r0, [r3, #0] 8024f3c:	4640      	mov	r0, r8 8024f3e:	b003      	add	sp, #12 8024f40:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc} 8024f44:	a801      	add	r0, sp, #4 8024f46:	f7ff fd31 	bl	80249ac <__lo0bits> 8024f4a:	2301      	movs	r3, #1 8024f4c:	461c      	mov	r4, r3 8024f4e:	f8c8 3010 	str.w	r3, [r8, #16] 8024f52:	9b01      	ldr	r3, [sp, #4] 8024f54:	f8c8 3014 	str.w	r3, [r8, #20] 8024f58:	3020      	adds	r0, #32 8024f5a:	2e00      	cmp	r6, #0 8024f5c:	d0e2      	beq.n	8024f24 <__d2b+0x58> 8024f5e:	9a0b      	ldr	r2, [sp, #44]	; 0x2c 8024f60:	f2a6 4933 	subw	r9, r6, #1075	; 0x433 8024f64:	f1c0 0335 	rsb	r3, r0, #53	; 0x35 8024f68:	4448      	add	r0, r9 8024f6a:	6038      	str	r0, [r7, #0] 8024f6c:	6013      	str	r3, [r2, #0] 8024f6e:	e7e5      	b.n	8024f3c <__d2b+0x70> 8024f70:	f1c0 0120 	rsb	r1, r0, #32 8024f74:	9a00      	ldr	r2, [sp, #0] 8024f76:	fa03 f101 	lsl.w	r1, r3, r1 8024f7a:	fa23 f300 	lsr.w	r3, r3, r0 8024f7e:	430a      	orrs	r2, r1 8024f80:	9301      	str	r3, [sp, #4] 8024f82:	f8c8 2014 	str.w	r2, [r8, #20] 8024f86:	e7c4      	b.n	8024f12 <__d2b+0x46>08024f88 <__ratio>: 8024f88:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr} 8024f8c:	b083      	sub	sp, #12 8024f8e:	4688      	mov	r8, r1 8024f90:	4669      	mov	r1, sp 8024f92:	4606      	mov	r6, r0 8024f94:	f7ff ff42 	bl	8024e1c <__b2d> 8024f98:	460d      	mov	r5, r1 8024f9a:	4604      	mov	r4, r0 8024f9c:	a901      	add	r1, sp, #4 8024f9e:	4640      	mov	r0, r8 8024fa0:	f7ff ff3c 	bl	8024e1c <__b2d> 8024fa4:	462f      	mov	r7, r5 8024fa6:	460b      	mov	r3, r1 8024fa8:	4602      	mov	r2, r0 8024faa:	f8d8 1010 	ldr.w	r1, [r8, #16] 8024fae:	4699      	mov	r9, r3 8024fb0:	6930      	ldr	r0, [r6, #16] 8024fb2:	4626      	mov	r6, r4 8024fb4:	4690      	mov	r8, r2 8024fb6:	ebc1 0e00 	rsb	lr, r1, r0 8024fba:	e89d 0003 	ldmia.w	sp, {r0, r1} 8024fbe:	1a40      	subs	r0, r0, r1 8024fc0:	eb00 114e 	add.w	r1, r0, lr, lsl #5 8024fc4:	2900      	cmp	r1, #0 8024fc6:	bfc9      	itett	gt 8024fc8:	eb05 5701 	addgt.w	r7, r5, r1, lsl #20 8024fcc:	eba3 5901 	suble.w	r9, r3, r1, lsl #20 8024fd0:	4624      	movgt	r4, r4 8024fd2:	463d      	movgt	r5, r7 8024fd4:	bfdc      	itt	le 8024fd6:	4612      	movle	r2, r2 8024fd8:	464b      	movle	r3, r9 8024fda:	4620      	mov	r0, r4 8024fdc:	4629      	mov	r1, r5 8024fde:	f7fb fc19 	bl	8020814 <__aeabi_ddiv> 8024fe2:	b003      	add	sp, #12 8024fe4:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc}08024fe8 <_mprec_log10>: 8024fe8:	2817      	cmp	r0, #23 8024fea:	b510      	push	{r4, lr} 8024fec:	4604      	mov	r4, r0 8024fee:	dd0c      	ble.n	802500a <_mprec_log10+0x22> 8024ff0:	2100      	movs	r1, #0 8024ff2:	2000      	movs	r0, #0 8024ff4:	f6c3 71f0 	movt	r1, #16368	; 0x3ff0 8024ff8:	2300      	movs	r3, #0 8024ffa:	2200      	movs	r2, #0 8024ffc:	f2c4 0324 	movt	r3, #16420	; 0x4024 8025000:	f7fb fade 	bl	80205c0 <__aeabi_dmul> 8025004:	3c01      	subs	r4, #1 8025006:	d1f7      	bne.n	8024ff8 <_mprec_log10+0x10> 8025008:	bd10      	pop	{r4, pc} 802500a:	f646 23c0 	movw	r3, #27328	; 0x6ac0 802500e:	f6c0 0303 	movt	r3, #2051	; 0x803 8025012:	eb03 03c0 	add.w	r3, r3, r0, lsl #3 8025016:	e9d3 0104 	ldrd	r0, r1, [r3, #16] 802501a:	bd10      	pop	{r4, pc}0802501c <__copybits>: 802501c:	b470      	push	{r4, r5, r6} 802501e:	3901      	subs	r1, #1 8025020:	6915      	ldr	r5, [r2, #16] 8025022:	f102 0314 	add.w	r3, r2, #20 8025026:	114e      	asrs	r6, r1, #5 8025028:	3601      	adds	r6, #1 802502a:	eb02 0585 	add.w	r5, r2, r5, lsl #2 802502e:	3514      	adds	r5, #20 8025030:	eb00 0686 	add.w	r6, r0, r6, lsl #2 8025034:	42ab      	cmp	r3, r5 8025036:	d20c      	bcs.n	8025052 <__copybits+0x36> 8025038:	4601      	mov	r1, r0 802503a:	f853 4b04 	ldr.w	r4, [r3], #4 802503e:	429d      	cmp	r5, r3 8025040:	f841 4b04 	str.w	r4, [r1], #4 8025044:	d8f9      	bhi.n	802503a <__copybits+0x1e> 8025046:	1aab      	subs	r3, r5, r2 8025048:	3b15      	subs	r3, #21 802504a:	f023 0303 	bic.w	r3, r3, #3 802504e:	3304      	adds	r3, #4 8025050:	18c0      	adds	r0, r0, r3 8025052:	4286      	cmp	r6, r0 8025054:	d904      	bls.n	8025060 <__copybits+0x44> 8025056:	2300      	movs	r3, #0 8025058:	f840 3b04 	str.w	r3, [r0], #4 802505c:	4286      	cmp	r6, r0 802505e:	d8fb      	bhi.n	8025058 <__copybits+0x3c> 8025060:	bc70      	pop	{r4, r5, r6} 8025062:	4770      	bx	lr08025064 <__any_on>: 8025064:	b430      	push	{r4, r5} 8025066:	114b      	asrs	r3, r1, #5 8025068:	6904      	ldr	r4, [r0, #16] 802506a:	f100 0214 	add.w	r2, r0, #20 802506e:	429c      	cmp	r4, r3 8025070:	bfb8      	it	lt 8025072:	4623      	movlt	r3, r4 8025074:	db00      	blt.n	8025078 <__any_on+0x14> 8025076:	dc11      	bgt.n	802509c <__any_on+0x38> 8025078:	3304      	adds	r3, #4 802507a:	eb00 0083 	add.w	r0, r0, r3, lsl #2 802507e:	1d03      	adds	r3, r0, #4 8025080:	429a      	cmp	r2, r3 8025082:	d218      	bcs.n	80250b6 <__any_on+0x52> 8025084:	f853 3c04 	ldr.w	r3, [r3, #-4] 8025088:	b92b      	cbnz	r3, 8025096 <__any_on+0x32> 802508a:	4282      	cmp	r2, r0 802508c:	d213      	bcs.n	80250b6 <__any_on+0x52> 802508e:	f850 3d04 	ldr.w	r3, [r0, #-4]! 8025092:	2b00      	cmp	r3, #0 8025094:	d0f9      	beq.n	802508a <__any_on+0x26> 8025096:	2001      	movs	r0, #1 8025098:	bc30      	pop	{r4, r5} 802509a:	4770      	bx	lr 802509c:	f011 011f 	ands.w	r1, r1, #31 80250a0:	d0ea      	beq.n	8025078 <__any_on+0x14> 80250a2:	eb00 0483 	add.w	r4, r0, r3, lsl #2 80250a6:	6964      	ldr	r4, [r4, #20] 80250a8:	fa24 f501 	lsr.w	r5, r4, r1 80250ac:	fa05 f101 	lsl.w	r1, r5, r1 80250b0:	42a1      	cmp	r1, r4 80250b2:	d1f0      	bne.n	8025096 <__any_on+0x32> 80250b4:	e7e0      	b.n	8025078 <__any_on+0x14> 80250b6:	2000      	movs	r0, #0 80250b8:	e7ee      	b.n	8025098 <__any_on+0x34> 80250ba:	bf00      	nop080250bc <_sbrk_r>: 80250bc:	b538      	push	{r3, r4, r5, lr} 80250be:	f245 2408 	movw	r4, #21000	; 0x5208 80250c2:	f2c2 0401 	movt	r4, #8193	; 0x2001 80250c6:	4605      	mov	r5, r0 80250c8:	4608      	mov	r0, r1 80250ca:	2300      	movs	r3, #0 80250cc:	6023      	str	r3, [r4, #0] 80250ce:	f011 fc1b 	bl	8036908 <_sbrk> 80250d2:	1c43      	adds	r3, r0, #1 80250d4:	d000      	beq.n	80250d8 <_sbrk_r+0x1c> 80250d6:	bd38      	pop	{r3, r4, r5, pc} 80250d8:	6823      	ldr	r3, [r4, #0] 80250da:	2b00      	cmp	r3, #0 80250dc:	d0fb      	beq.n	80250d6 <_sbrk_r+0x1a> 80250de:	602b      	str	r3, [r5, #0] 80250e0:	bd38      	pop	{r3, r4, r5, pc} 80250e2:	bf00      	nop080250e4 <strchr>: 80250e4:	b2c9      	uxtb	r1, r1 80250e6:	b4f0      	push	{r4, r5, r6, r7} 80250e8:	2900      	cmp	r1, #0 80250ea:	d04b      	beq.n	8025184 <strchr+0xa0> 80250ec:	0783      	lsls	r3, r0, #30 80250ee:	d00f      	beq.n	8025110 <strchr+0x2c> 80250f0:	7803      	ldrb	r3, [r0, #0] 80250f2:	2b00      	cmp	r3, #0 80250f4:	d073      	beq.n	80251de <strchr+0xfa> 80250f6:	4299      	cmp	r1, r3 80250f8:	d042      	beq.n	8025180 <strchr+0x9c> 80250fa:	1c43      	adds	r3, r0, #1 80250fc:	e005      	b.n	802510a <strchr+0x26> 80250fe:	f813 2b01 	ldrb.w	r2, [r3], #1 8025102:	2a00      	cmp	r2, #0 8025104:	d03b      	beq.n	802517e <strchr+0x9a> 8025106:	4291      	cmp	r1, r2 8025108:	d03a      	beq.n	8025180 <strchr+0x9c> 802510a:	079a      	lsls	r2, r3, #30 802510c:	4618      	mov	r0, r3 802510e:	d1f6      	bne.n	80250fe <strchr+0x1a> 8025110:	6803      	ldr	r3, [r0, #0] 8025112:	ea41 2701 	orr.w	r7, r1, r1, lsl #8 8025116:	f1a3 3201 	sub.w	r2, r3, #16843009	; 0x1010101 802511a:	ea47 4707 	orr.w	r7, r7, r7, lsl #16 802511e:	ea22 0203 	bic.w	r2, r2, r3 8025122:	f012 3f80 	tst.w	r2, #2155905152	; 0x80808080 8025126:	d11c      	bne.n	8025162 <strchr+0x7e> 8025128:	407b      	eors	r3, r7 802512a:	f1a3 3201 	sub.w	r2, r3, #16843009	; 0x1010101 802512e:	ea22 0303 	bic.w	r3, r2, r3 8025132:	f013 3f80 	tst.w	r3, #2155905152	; 0x80808080 8025136:	d114      	bne.n	8025162 <strchr+0x7e> 8025138:	1d02      	adds	r2, r0, #4 802513a:	e002      	b.n	8025142 <strchr+0x5e> 802513c:	f014 3f80 	tst.w	r4, #2155905152	; 0x80808080 8025140:	d10f      	bne.n	8025162 <strchr+0x7e> 8025142:	4610      	mov	r0, r2 8025144:	f852 3b04 	ldr.w	r3, [r2], #4 8025148:	f1a3 3601 	sub.w	r6, r3, #16843009	; 0x1010101 802514c:	ea87 0403 	eor.w	r4, r7, r3 8025150:	ea26 0303 	bic.w	r3, r6, r3 8025154:	f1a4 3501 	sub.w	r5, r4, #16843009	; 0x1010101 8025158:	f013 3f80 	tst.w	r3, #2155905152	; 0x80808080 802515c:	ea25 0404 	bic.w	r4, r5, r4 8025160:	d0ec      	beq.n	802513c <strchr+0x58> 8025162:	7803      	ldrb	r3, [r0, #0] 8025164:	2b00      	cmp	r3, #0 8025166:	d03a      	beq.n	80251de <strchr+0xfa> 8025168:	4299      	cmp	r1, r3 802516a:	d009      	beq.n	8025180 <strchr+0x9c> 802516c:	1c43      	adds	r3, r0, #1 802516e:	e001      	b.n	8025174 <strchr+0x90> 8025170:	4291      	cmp	r1, r2 8025172:	d005      	beq.n	8025180 <strchr+0x9c> 8025174:	4618      	mov	r0, r3 8025176:	f813 2b01 	ldrb.w	r2, [r3], #1 802517a:	2a00      	cmp	r2, #0 802517c:	d1f8      	bne.n	8025170 <strchr+0x8c> 802517e:	4610      	mov	r0, r2 8025180:	bcf0      	pop	{r4, r5, r6, r7} 8025182:	4770      	bx	lr 8025184:	0781      	lsls	r1, r0, #30 8025186:	d00d      	beq.n	80251a4 <strchr+0xc0> 8025188:	7803      	ldrb	r3, [r0, #0] 802518a:	2b00      	cmp	r3, #0 802518c:	d0f8      	beq.n	8025180 <strchr+0x9c> 802518e:	1c43      	adds	r3, r0, #1 8025190:	e002      	b.n	8025198 <strchr+0xb4> 8025192:	7802      	ldrb	r2, [r0, #0] 8025194:	2a00      	cmp	r2, #0 8025196:	d0f3      	beq.n	8025180 <strchr+0x9c> 8025198:	f013 0f03 	tst.w	r3, #3 802519c:	4618      	mov	r0, r3 802519e:	f103 0301 	add.w	r3, r3, #1 80251a2:	d1f6      	bne.n	8025192 <strchr+0xae> 80251a4:	6803      	ldr	r3, [r0, #0] 80251a6:	f1a3 3201 	sub.w	r2, r3, #16843009	; 0x1010101 80251aa:	ea22 0303 	bic.w	r3, r2, r3 80251ae:	f013 3f80 	tst.w	r3, #2155905152	; 0x80808080 80251b2:	d10a      	bne.n	80251ca <strchr+0xe6> 80251b4:	1d02      	adds	r2, r0, #4 80251b6:	4610      	mov	r0, r2 80251b8:	f852 1b04 	ldr.w	r1, [r2], #4 80251bc:	f1a1 3401 	sub.w	r4, r1, #16843009	; 0x1010101 80251c0:	ea24 0101 	bic.w	r1, r4, r1 80251c4:	f011 3f80 	tst.w	r1, #2155905152	; 0x80808080 80251c8:	d0f5      	beq.n	80251b6 <strchr+0xd2> 80251ca:	7803      	ldrb	r3, [r0, #0] 80251cc:	2b00      	cmp	r3, #0 80251ce:	d0d7      	beq.n	8025180 <strchr+0x9c> 80251d0:	1c43      	adds	r3, r0, #1 80251d2:	4618      	mov	r0, r3 80251d4:	3301      	adds	r3, #1 80251d6:	7802      	ldrb	r2, [r0, #0] 80251d8:	2a00      	cmp	r2, #0 80251da:	d1fa      	bne.n	80251d2 <strchr+0xee> 80251dc:	e7d0      	b.n	8025180 <strchr+0x9c> 80251de:	4618      	mov	r0, r3 80251e0:	e7ce      	b.n	8025180 <strchr+0x9c> 80251e2:	bf00      	nop080251e4 <_calloc_r>: 80251e4:	b510      	push	{r4, lr} 80251e6:	fb01 f102 	mul.w	r1, r1, r2 80251ea:	f7fe ffc5 	bl	8024178 <_malloc_r> 80251ee:	4604      	mov	r4, r0 80251f0:	b170      	cbz	r0, 8025210 <_calloc_r+0x2c> 80251f2:	f850 2c04 	ldr.w	r2, [r0, #-4] 80251f6:	f022 0203 	bic.w	r2, r2, #3 80251fa:	3a04      	subs	r2, #4 80251fc:	2a24      	cmp	r2, #36	; 0x24 80251fe:	d81c      	bhi.n	802523a <_calloc_r+0x56> 8025200:	2a13      	cmp	r2, #19 8025202:	bf98      	it	ls 8025204:	4603      	movls	r3, r0 8025206:	d805      	bhi.n	8025214 <_calloc_r+0x30> 8025208:	2200      	movs	r2, #0 802520a:	601a      	str	r2, [r3, #0] 802520c:	605a      	str	r2, [r3, #4] 802520e:	609a      	str	r2, [r3, #8] 8025210:	4620      	mov	r0, r4 8025212:	bd10      	pop	{r4, pc} 8025214:	2100      	movs	r1, #0 8025216:	2a1b      	cmp	r2, #27 8025218:	6001      	str	r1, [r0, #0] 802521a:	bf98      	it	ls 802521c:	f100 0308 	addls.w	r3, r0, #8 8025220:	6041      	str	r1, [r0, #4] 8025222:	d9f1      	bls.n	8025208 <_calloc_r+0x24> 8025224:	2a24      	cmp	r2, #36	; 0x24 8025226:	6081      	str	r1, [r0, #8] 8025228:	60c1      	str	r1, [r0, #12] 802522a:	bf11      	iteee	ne 802522c:	f100 0310 	addne.w	r3, r0, #16 8025230:	6101      	streq	r1, [r0, #16] 8025232:	f100 0318 	addeq.w	r3, r0, #24 8025236:	6141      	streq	r1, [r0, #20] 8025238:	e7e6      	b.n	8025208 <_calloc_r+0x24> 802523a:	2100      	movs	r1, #0 802523c:	f7fc fc40 	bl	8021ac0 <memset> 8025240:	4620      	mov	r0, r4 8025242:	bd10      	pop	{r4, pc}08025244 <__aeabi_d2uiz>: 8025244:	004a      	lsls	r2, r1, #1 8025246:	d211      	bcs.n	802526c <__aeabi_d2uiz+0x28> 8025248:	f512 1200 	adds.w	r2, r2, #2097152	; 0x200000 802524c:	d211      	bcs.n	8025272 <__aeabi_d2uiz+0x2e> 802524e:	d50d      	bpl.n	802526c <__aeabi_d2uiz+0x28> 8025250:	f46f 7378 	mvn.w	r3, #992	; 0x3e0 8025254:	ebb3 5262 	subs.w	r2, r3, r2, asr #21 8025258:	d40e      	bmi.n	8025278 <__aeabi_d2uiz+0x34> 802525a:	ea4f 23c1 	mov.w	r3, r1, lsl #11 802525e:	f043 4300 	orr.w	r3, r3, #2147483648	; 0x80000000 8025262:	ea43 5350 	orr.w	r3, r3, r0, lsr #21 8025266:	fa23 f002 	lsr.w	r0, r3, r2 802526a:	4770      	bx	lr 802526c:	f04f 0000 	mov.w	r0, #0 8025270:	4770      	bx	lr 8025272:	ea50 3001 	orrs.w	r0, r0, r1, lsl #12 8025276:	d102      	bne.n	802527e <__aeabi_d2uiz+0x3a> 8025278:	f04f 30ff 	mov.w	r0, #4294967295 802527c:	4770      	bx	lr 802527e:	f04f 0000 	mov.w	r0, #0 8025282:	4770      	bx	lr08025284 <fabs>: 8025284:	f021 4100 	bic.w	r1, r1, #2147483648	; 0x80000000 8025288:	4770      	bx	lr 802528a:	bf00      	nop0802528c <NVIC_PriorityGroupConfig>:{  /* Check the parameters */  assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));    /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */  SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup; 802528c:	f040 60bf 	orr.w	r0, r0, #100139008	; 0x5f80000 8025290:	4b02      	ldr	r3, [pc, #8]	; (802529c <NVIC_PriorityGroupConfig+0x10>) 8025292:	f440 3000 	orr.w	r0, r0, #131072	; 0x20000 8025296:	60d8      	str	r0, [r3, #12] 8025298:	4770      	bx	lr 802529a:	bf00      	nop 802529c:	e000ed00 	.word	0xe000ed00080252a0 <NVIC_Init>:  /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));  assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));    assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));      if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE) 80252a0:	78c3      	ldrb	r3, [r0, #3] 80252a2:	b30b      	cbz	r3, 80252e8 <NVIC_Init+0x48>  {    /* Compute the Corresponding IRQ Priority --------------------------------*/        tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08; 80252a4:	4b16      	ldr	r3, [pc, #88]	; (8025300 <NVIC_Init+0x60>)    tmppre = (0x4 - tmppriority);    tmpsub = tmpsub >> tmppriority;    tmppriority = NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre; 80252a6:	7841      	ldrb	r1, [r0, #1]  assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));      if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)  {    /* Compute the Corresponding IRQ Priority --------------------------------*/        tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08; 80252a8:	68db      	ldr	r3, [r3, #12] 80252aa:	43db      	mvns	r3, r3 80252ac:	f3c3 2302 	ubfx	r3, r3, #8, #3    tmppre = (0x4 - tmppriority); 80252b0:	f1c3 0204 	rsb	r2, r3, #4    tmpsub = tmpsub >> tmppriority;    tmppriority = NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre; 80252b4:	b2d2      	uxtb	r2, r2 80252b6:	fa01 f202 	lsl.w	r2, r1, r2  if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)  {    /* Compute the Corresponding IRQ Priority --------------------------------*/        tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08;    tmppre = (0x4 - tmppriority);    tmpsub = tmpsub >> tmppriority; 80252ba:	210f      	movs	r1, #15 80252bc:	fa41 f303 	asr.w	r3, r1, r3    tmppriority = NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;    tmppriority |=  (uint8_t)(NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub); 80252c0:	7881      	ldrb	r1, [r0, #2]    /* Compute the Corresponding IRQ Priority --------------------------------*/        tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08;    tmppre = (0x4 - tmppriority);    tmpsub = tmpsub >> tmppriority;    tmppriority = NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre; 80252c2:	b2d2      	uxtb	r2, r2    tmppriority |=  (uint8_t)(NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub); 80252c4:	400b      	ands	r3, r1 80252c6:	431a      	orrs	r2, r3            tmppriority = tmppriority << 0x04;            NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority; 80252c8:	7803      	ldrb	r3, [r0, #0] 80252ca:	f103 4360 	add.w	r3, r3, #3758096384	; 0xe0000000 80252ce:	f503 4361 	add.w	r3, r3, #57600	; 0xe100    tmpsub = tmpsub >> tmppriority;    tmppriority = NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;    tmppriority |=  (uint8_t)(NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub);            tmppriority = tmppriority << 0x04; 80252d2:	0112      	lsls	r2, r2, #4            NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority; 80252d4:	f883 2300 	strb.w	r2, [r3, #768]	; 0x300        /* Enable the Selected IRQ Channels --------------------------------------*/    NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = 80252d8:	7803      	ldrb	r3, [r0, #0]      (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); 80252da:	2201      	movs	r2, #1    tmppriority = tmppriority << 0x04;            NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority;        /* Enable the Selected IRQ Channels --------------------------------------*/    NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = 80252dc:	0959      	lsrs	r1, r3, #5      (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); 80252de:	f003 031f 	and.w	r3, r3, #31 80252e2:	fa02 f303 	lsl.w	r3, r2, r3 80252e6:	e007      	b.n	80252f8 <NVIC_Init+0x58>  }  else  {    /* Disable the Selected IRQ Channels -------------------------------------*/    NVIC->ICER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = 80252e8:	7803      	ldrb	r3, [r0, #0]      (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); 80252ea:	2201      	movs	r2, #1      (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);  }  else  {    /* Disable the Selected IRQ Channels -------------------------------------*/    NVIC->ICER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = 80252ec:	0959      	lsrs	r1, r3, #5      (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F); 80252ee:	f003 031f 	and.w	r3, r3, #31 80252f2:	fa02 f303 	lsl.w	r3, r2, r3      (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);  }  else  {    /* Disable the Selected IRQ Channels -------------------------------------*/    NVIC->ICER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] = 80252f6:	3120      	adds	r1, #32 80252f8:	4a02      	ldr	r2, [pc, #8]	; (8025304 <NVIC_Init+0x64>) 80252fa:	f842 3021 	str.w	r3, [r2, r1, lsl #2] 80252fe:	4770      	bx	lr 8025300:	e000ed00 	.word	0xe000ed00 8025304:	e000e100 	.word	0xe000e10008025308 <NVIC_SetVectorTable>:{   /* Check the parameters */  assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));  assert_param(IS_NVIC_OFFSET(Offset));       SCB->VTOR = NVIC_VectTab | (Offset & (uint32_t)0x1FFFFF80); 8025308:	f021 4160 	bic.w	r1, r1, #3758096384	; 0xe0000000 802530c:	f021 017f 	bic.w	r1, r1, #127	; 0x7f 8025310:	4b01      	ldr	r3, [pc, #4]	; (8025318 <NVIC_SetVectorTable+0x10>) 8025312:	4308      	orrs	r0, r1 8025314:	6098      	str	r0, [r3, #8] 8025316:	4770      	bx	lr 8025318:	e000ed00 	.word	0xe000ed000802531c <CRC_ResetDR>:  * @retval None  */void CRC_ResetDR(void){  /* Reset CRC generator */  CRC->CR = CRC_CR_RESET; 802531c:	4b01      	ldr	r3, [pc, #4]	; (8025324 <CRC_ResetDR+0x8>) 802531e:	2201      	movs	r2, #1 8025320:	609a      	str	r2, [r3, #8] 8025322:	4770      	bx	lr 8025324:	40023000 	.word	0x4002300008025328 <CRC_CalcBlockCRC>:  * @param  pBuffer: pointer to the buffer containing the data to be computed  * @param  BufferLength: length of the buffer to be computed					  * @retval 32-bit CRC  */uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength){ 8025328:	b510      	push	{r4, lr}  uint32_t index = 0;    for(index = 0; index < BufferLength; index++) 802532a:	2300      	movs	r3, #0 802532c:	4c05      	ldr	r4, [pc, #20]	; (8025344 <CRC_CalcBlockCRC+0x1c>) 802532e:	e003      	b.n	8025338 <CRC_CalcBlockCRC+0x10>  {    CRC->DR = pBuffer[index]; 8025330:	f850 2023 	ldr.w	r2, [r0, r3, lsl #2]  */uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength){  uint32_t index = 0;    for(index = 0; index < BufferLength; index++) 8025334:	3301      	adds	r3, #1  {    CRC->DR = pBuffer[index]; 8025336:	6022      	str	r2, [r4, #0]  */uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength){  uint32_t index = 0;    for(index = 0; index < BufferLength; index++) 8025338:	428b      	cmp	r3, r1 802533a:	d1f9      	bne.n	8025330 <CRC_CalcBlockCRC+0x8>  {    CRC->DR = pBuffer[index];  }  return (CRC->DR); 802533c:	4b01      	ldr	r3, [pc, #4]	; (8025344 <CRC_CalcBlockCRC+0x1c>) 802533e:	6818      	ldr	r0, [r3, #0]} 8025340:	bd10      	pop	{r4, pc} 8025342:	bf00      	nop 8025344:	40023000 	.word	0x4002300008025348 <FLASH_Unlock>:  * @param  None  * @retval None  */void FLASH_Unlock(void){  if((FLASH->CR & FLASH_CR_LOCK) != RESET) 8025348:	4b04      	ldr	r3, [pc, #16]	; (802535c <FLASH_Unlock+0x14>) 802534a:	691a      	ldr	r2, [r3, #16] 802534c:	2a00      	cmp	r2, #0 802534e:	da04      	bge.n	802535a <FLASH_Unlock+0x12>  {    /* Authorize the FLASH Registers access */    FLASH->KEYR = FLASH_KEY1; 8025350:	4a03      	ldr	r2, [pc, #12]	; (8025360 <FLASH_Unlock+0x18>) 8025352:	605a      	str	r2, [r3, #4]    FLASH->KEYR = FLASH_KEY2; 8025354:	f102 3288 	add.w	r2, r2, #2290649224	; 0x88888888 8025358:	605a      	str	r2, [r3, #4] 802535a:	4770      	bx	lr 802535c:	40023c00 	.word	0x40023c00 8025360:	45670123 	.word	0x4567012308025364 <FLASH_Lock>:  * @retval None  */void FLASH_Lock(void){  /* Set the LOCK Bit to lock the FLASH Registers access */  FLASH->CR |= FLASH_CR_LOCK; 8025364:	4b02      	ldr	r3, [pc, #8]	; (8025370 <FLASH_Lock+0xc>) 8025366:	691a      	ldr	r2, [r3, #16] 8025368:	f042 4200 	orr.w	r2, r2, #2147483648	; 0x80000000 802536c:	611a      	str	r2, [r3, #16] 802536e:	4770      	bx	lr 8025370:	40023c00 	.word	0x40023c0008025374 <FLASH_ClearFlag>:{  /* Check the parameters */  assert_param(IS_FLASH_CLEAR_FLAG(FLASH_FLAG));    /* Clear the flags */  FLASH->SR = FLASH_FLAG; 8025374:	4b01      	ldr	r3, [pc, #4]	; (802537c <FLASH_ClearFlag+0x8>) 8025376:	60d8      	str	r0, [r3, #12] 8025378:	4770      	bx	lr 802537a:	bf00      	nop 802537c:	40023c00 	.word	0x40023c0008025380 <FLASH_GetStatus>:  */FLASH_Status FLASH_GetStatus(void){  FLASH_Status flashstatus = FLASH_COMPLETE;    if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY)  8025380:	4b0b      	ldr	r3, [pc, #44]	; (80253b0 <FLASH_GetStatus+0x30>) 8025382:	68da      	ldr	r2, [r3, #12] 8025384:	03d0      	lsls	r0, r2, #15 8025386:	d40d      	bmi.n	80253a4 <FLASH_GetStatus+0x24>  {    flashstatus = FLASH_BUSY;  }  else   {      if((FLASH->SR & FLASH_FLAG_WRPERR) != (uint32_t)0x00) 8025388:	68da      	ldr	r2, [r3, #12] 802538a:	06d1      	lsls	r1, r2, #27 802538c:	d40c      	bmi.n	80253a8 <FLASH_GetStatus+0x28>    {       flashstatus = FLASH_ERROR_WRP;    }    else     {      if((FLASH->SR & (uint32_t)0xEF) != (uint32_t)0x00) 802538e:	68da      	ldr	r2, [r3, #12] 8025390:	f012 0fef 	tst.w	r2, #239	; 0xef 8025394:	d10a      	bne.n	80253ac <FLASH_GetStatus+0x2c>      {        flashstatus = FLASH_ERROR_PROGRAM;       }      else      {        if((FLASH->SR & FLASH_FLAG_OPERR) != (uint32_t)0x00) 8025396:	68db      	ldr	r3, [r3, #12] 8025398:	f013 0f02 	tst.w	r3, #2        {          flashstatus = FLASH_ERROR_OPERATION; 802539c:	bf0c      	ite	eq 802539e:	2008      	moveq	r0, #8 80253a0:	2007      	movne	r0, #7 80253a2:	4770      	bx	lr{  FLASH_Status flashstatus = FLASH_COMPLETE;    if((FLASH->SR & FLASH_FLAG_BSY) == FLASH_FLAG_BSY)   {    flashstatus = FLASH_BUSY; 80253a4:	2001      	movs	r0, #1 80253a6:	4770      	bx	lr  }  else   {      if((FLASH->SR & FLASH_FLAG_WRPERR) != (uint32_t)0x00)    {       flashstatus = FLASH_ERROR_WRP; 80253a8:	2005      	movs	r0, #5 80253aa:	4770      	bx	lr    }    else     {      if((FLASH->SR & (uint32_t)0xEF) != (uint32_t)0x00)      {        flashstatus = FLASH_ERROR_PROGRAM;  80253ac:	2006      	movs	r0, #6      }    }  }  /* Return the FLASH Status */  return flashstatus;} 80253ae:	4770      	bx	lr 80253b0:	40023c00 	.word	0x40023c00080253b4 <FLASH_WaitForLastOperation>:  * @param  None  * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PROGRAM,  *                       FLASH_ERROR_WRP, FLASH_ERROR_OPERATION or FLASH_COMPLETE.  */FLASH_Status FLASH_WaitForLastOperation(void){  80253b4:	b507      	push	{r0, r1, r2, lr}  __IO FLASH_Status status = FLASH_COMPLETE; 80253b6:	2308      	movs	r3, #8 80253b8:	f88d 3007 	strb.w	r3, [sp, #7]  /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.     Even if the FLASH operation fails, the BUSY flag will be reset and an error     flag will be set */  while(status == FLASH_BUSY)  {    status = FLASH_GetStatus(); 80253bc:	f7ff ffe0 	bl	8025380 <FLASH_GetStatus> 80253c0:	f88d 0007 	strb.w	r0, [sp, #7]  status = FLASH_GetStatus();  /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset.     Even if the FLASH operation fails, the BUSY flag will be reset and an error     flag will be set */  while(status == FLASH_BUSY) 80253c4:	f89d 3007 	ldrb.w	r3, [sp, #7] 80253c8:	2b01      	cmp	r3, #1 80253ca:	d0f7      	beq.n	80253bc <FLASH_WaitForLastOperation+0x8>  {    status = FLASH_GetStatus();  }  /* Return the operation status */  return status; 80253cc:	f89d 0007 	ldrb.w	r0, [sp, #7]} 80253d0:	bd0e      	pop	{r1, r2, r3, pc} 80253d2:	0000      	movs	r0, r0080253d4 <FLASH_ProgramByte>:  * @param  Data: specifies the data to be programmed.  * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PROGRAM,  *                       FLASH_ERROR_WRP, FLASH_ERROR_OPERATION or FLASH_COMPLETE.  */FLASH_Status FLASH_ProgramByte(uint32_t Address, uint8_t Data){ 80253d4:	b570      	push	{r4, r5, r6, lr} 80253d6:	4605      	mov	r5, r0 80253d8:	460e      	mov	r6, r1  /* Check the parameters */  assert_param(IS_FLASH_ADDRESS(Address));  /* Wait for last operation to be completed */  status = FLASH_WaitForLastOperation(); 80253da:	f7ff ffeb 	bl	80253b4 <FLASH_WaitForLastOperation>    if(status == FLASH_COMPLETE) 80253de:	2808      	cmp	r0, #8 80253e0:	d111      	bne.n	8025406 <FLASH_ProgramByte+0x32>  {    /* if the previous operation is completed, proceed to program the new data */    FLASH->CR &= CR_PSIZE_MASK; 80253e2:	4c09      	ldr	r4, [pc, #36]	; (8025408 <FLASH_ProgramByte+0x34>) 80253e4:	6923      	ldr	r3, [r4, #16] 80253e6:	f423 7340 	bic.w	r3, r3, #768	; 0x300 80253ea:	6123      	str	r3, [r4, #16]    FLASH->CR |= FLASH_PSIZE_BYTE; 80253ec:	6923      	ldr	r3, [r4, #16] 80253ee:	6123      	str	r3, [r4, #16]    FLASH->CR |= FLASH_CR_PG; 80253f0:	6923      	ldr	r3, [r4, #16] 80253f2:	f043 0301 	orr.w	r3, r3, #1 80253f6:	6123      	str	r3, [r4, #16]      *(__IO uint8_t*)Address = Data; 80253f8:	702e      	strb	r6, [r5, #0]            /* Wait for last operation to be completed */    status = FLASH_WaitForLastOperation(); 80253fa:	f7ff ffdb 	bl	80253b4 <FLASH_WaitForLastOperation>    /* if the program operation is completed, disable the PG Bit */    FLASH->CR &= (~FLASH_CR_PG); 80253fe:	6923      	ldr	r3, [r4, #16] 8025400:	f023 0301 	bic.w	r3, r3, #1 8025404:	6123      	str	r3, [r4, #16]  }   /* Return the Program Status */  return status;} 8025406:	bd70      	pop	{r4, r5, r6, pc} 8025408:	40023c00 	.word	0x40023c000802540c <FLASH_ProgramWord>:  * @param  Data: specifies the data to be programmed.  * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PROGRAM,  *                       FLASH_ERROR_WRP, FLASH_ERROR_OPERATION or FLASH_COMPLETE.  */FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data){ 802540c:	b570      	push	{r4, r5, r6, lr} 802540e:	4605      	mov	r5, r0 8025410:	460e      	mov	r6, r1  /* Check the parameters */  assert_param(IS_FLASH_ADDRESS(Address));  /* Wait for last operation to be completed */  status = FLASH_WaitForLastOperation(); 8025412:	f7ff ffcf 	bl	80253b4 <FLASH_WaitForLastOperation>    if(status == FLASH_COMPLETE) 8025416:	2808      	cmp	r0, #8 8025418:	d113      	bne.n	8025442 <FLASH_ProgramWord+0x36>  {    /* if the previous operation is completed, proceed to program the new data */    FLASH->CR &= CR_PSIZE_MASK; 802541a:	4c0a      	ldr	r4, [pc, #40]	; (8025444 <FLASH_ProgramWord+0x38>) 802541c:	6923      	ldr	r3, [r4, #16] 802541e:	f423 7340 	bic.w	r3, r3, #768	; 0x300 8025422:	6123      	str	r3, [r4, #16]    FLASH->CR |= FLASH_PSIZE_WORD; 8025424:	6923      	ldr	r3, [r4, #16] 8025426:	f443 7300 	orr.w	r3, r3, #512	; 0x200 802542a:	6123      	str	r3, [r4, #16]    FLASH->CR |= FLASH_CR_PG; 802542c:	6923      	ldr	r3, [r4, #16] 802542e:	f043 0301 	orr.w	r3, r3, #1 8025432:	6123      	str	r3, [r4, #16]      *(__IO uint32_t*)Address = Data; 8025434:	602e      	str	r6, [r5, #0]            /* Wait for last operation to be completed */    status = FLASH_WaitForLastOperation(); 8025436:	f7ff ffbd 	bl	80253b4 <FLASH_WaitForLastOperation>    /* if the program operation is completed, disable the PG Bit */    FLASH->CR &= (~FLASH_CR_PG); 802543a:	6923      	ldr	r3, [r4, #16] 802543c:	f023 0301 	bic.w	r3, r3, #1 8025440:	6123      	str	r3, [r4, #16]  }   /* Return the Program Status */  return status;} 8025442:	bd70      	pop	{r4, r5, r6, pc} 8025444:	40023c00 	.word	0x40023c0008025448 <FLASH_EraseSector>:  *         * @retval FLASH Status: The returned value can be: FLASH_BUSY, FLASH_ERROR_PROGRAM,  *                       FLASH_ERROR_WRP, FLASH_ERROR_OPERATION or FLASH_COMPLETE.  */FLASH_Status FLASH_EraseSector(uint32_t FLASH_Sector, uint8_t VoltageRange){ 8025448:	b570      	push	{r4, r5, r6, lr} 802544a:	4606      	mov	r6, r0  /* Check the parameters */  assert_param(IS_FLASH_SECTOR(FLASH_Sector));  assert_param(IS_VOLTAGERANGE(VoltageRange));    if(VoltageRange == VoltageRange_1) 802544c:	b141      	cbz	r1, 8025460 <FLASH_EraseSector+0x18>  {     tmp_psize = FLASH_PSIZE_BYTE;  }  else if(VoltageRange == VoltageRange_2) 802544e:	2901      	cmp	r1, #1 8025450:	d008      	beq.n	8025464 <FLASH_EraseSector+0x1c>  {    tmp_psize = FLASH_PSIZE_HALF_WORD;  }  else if(VoltageRange == VoltageRange_3)  {    tmp_psize = FLASH_PSIZE_WORD; 8025452:	2902      	cmp	r1, #2 8025454:	bf14      	ite	ne 8025456:	f44f 7540 	movne.w	r5, #768	; 0x300 802545a:	f44f 7500 	moveq.w	r5, #512	; 0x200 802545e:	e003      	b.n	8025468 <FLASH_EraseSector+0x20>  assert_param(IS_FLASH_SECTOR(FLASH_Sector));  assert_param(IS_VOLTAGERANGE(VoltageRange));    if(VoltageRange == VoltageRange_1)  {     tmp_psize = FLASH_PSIZE_BYTE; 8025460:	460d      	mov	r5, r1 8025462:	e001      	b.n	8025468 <FLASH_EraseSector+0x20>  }  else if(VoltageRange == VoltageRange_2)  {    tmp_psize = FLASH_PSIZE_HALF_WORD; 8025464:	f44f 7580 	mov.w	r5, #256	; 0x100  else  {    tmp_psize = FLASH_PSIZE_DOUBLE_WORD;  }  /* Wait for last operation to be completed */  status = FLASH_WaitForLastOperation(); 8025468:	f7ff ffa4 	bl	80253b4 <FLASH_WaitForLastOperation>    if(status == FLASH_COMPLETE) 802546c:	2808      	cmp	r0, #8 802546e:	d11e      	bne.n	80254ae <FLASH_EraseSector+0x66>  {     /* if the previous operation is completed, proceed to erase the sector */    FLASH->CR &= CR_PSIZE_MASK; 8025470:	4c0f      	ldr	r4, [pc, #60]	; (80254b0 <FLASH_EraseSector+0x68>) 8025472:	6923      	ldr	r3, [r4, #16] 8025474:	f423 7340 	bic.w	r3, r3, #768	; 0x300 8025478:	6123      	str	r3, [r4, #16]    FLASH->CR |= tmp_psize; 802547a:	6921      	ldr	r1, [r4, #16] 802547c:	430d      	orrs	r5, r1 802547e:	6125      	str	r5, [r4, #16]    FLASH->CR &= SECTOR_MASK; 8025480:	6923      	ldr	r3, [r4, #16] 8025482:	f023 03f8 	bic.w	r3, r3, #248	; 0xf8 8025486:	6123      	str	r3, [r4, #16]    FLASH->CR |= FLASH_CR_SER | FLASH_Sector; 8025488:	6923      	ldr	r3, [r4, #16] 802548a:	f043 0302 	orr.w	r3, r3, #2 802548e:	431e      	orrs	r6, r3 8025490:	6126      	str	r6, [r4, #16]    FLASH->CR |= FLASH_CR_STRT; 8025492:	6923      	ldr	r3, [r4, #16] 8025494:	f443 3380 	orr.w	r3, r3, #65536	; 0x10000 8025498:	6123      	str	r3, [r4, #16]        /* Wait for last operation to be completed */    status = FLASH_WaitForLastOperation(); 802549a:	f7ff ff8b 	bl	80253b4 <FLASH_WaitForLastOperation>        /* if the erase operation is completed, disable the SER Bit */    FLASH->CR &= (~FLASH_CR_SER); 802549e:	6923      	ldr	r3, [r4, #16] 80254a0:	f023 0302 	bic.w	r3, r3, #2 80254a4:	6123      	str	r3, [r4, #16]    FLASH->CR &= SECTOR_MASK;  80254a6:	6923      	ldr	r3, [r4, #16] 80254a8:	f023 03f8 	bic.w	r3, r3, #248	; 0xf8 80254ac:	6123      	str	r3, [r4, #16]  }  /* Return the Erase Status */  return status;} 80254ae:	bd70      	pop	{r4, r5, r6, pc} 80254b0:	40023c00 	.word	0x40023c00080254b4 <GPIO_DeInit>:  * @note   By default, The GPIO pins are configured in input floating mode (except JTAG pins).  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.  * @retval None  */void GPIO_DeInit(GPIO_TypeDef* GPIOx){ 80254b4:	b508      	push	{r3, lr}  /* Check the parameters */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  if (GPIOx == GPIOA) 80254b6:	4b2c      	ldr	r3, [pc, #176]	; (8025568 <GPIO_DeInit+0xb4>) 80254b8:	4298      	cmp	r0, r3 80254ba:	d105      	bne.n	80254c8 <GPIO_DeInit+0x14>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE); 80254bc:	2001      	movs	r0, #1 80254be:	4601      	mov	r1, r0 80254c0:	f000 f974 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, DISABLE); 80254c4:	2001      	movs	r0, #1 80254c6:	e048      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOB) 80254c8:	4b28      	ldr	r3, [pc, #160]	; (802556c <GPIO_DeInit+0xb8>) 80254ca:	4298      	cmp	r0, r3 80254cc:	d105      	bne.n	80254da <GPIO_DeInit+0x26>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, ENABLE); 80254ce:	2002      	movs	r0, #2 80254d0:	2101      	movs	r1, #1 80254d2:	f000 f96b 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOB, DISABLE); 80254d6:	2002      	movs	r0, #2 80254d8:	e03f      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOC) 80254da:	4b25      	ldr	r3, [pc, #148]	; (8025570 <GPIO_DeInit+0xbc>) 80254dc:	4298      	cmp	r0, r3 80254de:	d105      	bne.n	80254ec <GPIO_DeInit+0x38>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, ENABLE); 80254e0:	2004      	movs	r0, #4 80254e2:	2101      	movs	r1, #1 80254e4:	f000 f962 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOC, DISABLE); 80254e8:	2004      	movs	r0, #4 80254ea:	e036      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOD) 80254ec:	4b21      	ldr	r3, [pc, #132]	; (8025574 <GPIO_DeInit+0xc0>) 80254ee:	4298      	cmp	r0, r3 80254f0:	d105      	bne.n	80254fe <GPIO_DeInit+0x4a>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, ENABLE); 80254f2:	2008      	movs	r0, #8 80254f4:	2101      	movs	r1, #1 80254f6:	f000 f959 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOD, DISABLE); 80254fa:	2008      	movs	r0, #8 80254fc:	e02d      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOE) 80254fe:	4b1e      	ldr	r3, [pc, #120]	; (8025578 <GPIO_DeInit+0xc4>) 8025500:	4298      	cmp	r0, r3 8025502:	d105      	bne.n	8025510 <GPIO_DeInit+0x5c>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, ENABLE); 8025504:	2010      	movs	r0, #16 8025506:	2101      	movs	r1, #1 8025508:	f000 f950 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOE, DISABLE); 802550c:	2010      	movs	r0, #16 802550e:	e024      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOF) 8025510:	4b1a      	ldr	r3, [pc, #104]	; (802557c <GPIO_DeInit+0xc8>) 8025512:	4298      	cmp	r0, r3 8025514:	d105      	bne.n	8025522 <GPIO_DeInit+0x6e>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, ENABLE); 8025516:	2020      	movs	r0, #32 8025518:	2101      	movs	r1, #1 802551a:	f000 f947 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOF, DISABLE); 802551e:	2020      	movs	r0, #32 8025520:	e01b      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOG) 8025522:	4b17      	ldr	r3, [pc, #92]	; (8025580 <GPIO_DeInit+0xcc>) 8025524:	4298      	cmp	r0, r3 8025526:	d105      	bne.n	8025534 <GPIO_DeInit+0x80>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, ENABLE); 8025528:	2040      	movs	r0, #64	; 0x40 802552a:	2101      	movs	r1, #1 802552c:	f000 f93e 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOG, DISABLE); 8025530:	2040      	movs	r0, #64	; 0x40 8025532:	e012      	b.n	802555a <GPIO_DeInit+0xa6>  }  else if (GPIOx == GPIOH) 8025534:	4b13      	ldr	r3, [pc, #76]	; (8025584 <GPIO_DeInit+0xd0>) 8025536:	4298      	cmp	r0, r3 8025538:	d105      	bne.n	8025546 <GPIO_DeInit+0x92>  {    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, ENABLE); 802553a:	2080      	movs	r0, #128	; 0x80 802553c:	2101      	movs	r1, #1 802553e:	f000 f935 	bl	80257ac <RCC_AHB1PeriphResetCmd>    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOH, DISABLE); 8025542:	2080      	movs	r0, #128	; 0x80 8025544:	e009      	b.n	802555a <GPIO_DeInit+0xa6>  }  else  {    if (GPIOx == GPIOI) 8025546:	4b10      	ldr	r3, [pc, #64]	; (8025588 <GPIO_DeInit+0xd4>) 8025548:	4298      	cmp	r0, r3 802554a:	d10b      	bne.n	8025564 <GPIO_DeInit+0xb0>    {      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, ENABLE); 802554c:	f44f 7080 	mov.w	r0, #256	; 0x100 8025550:	2101      	movs	r1, #1 8025552:	f000 f92b 	bl	80257ac <RCC_AHB1PeriphResetCmd>      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, DISABLE); 8025556:	f44f 7080 	mov.w	r0, #256	; 0x100 802555a:	2100      	movs	r1, #0    }  }} 802555c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  else  {    if (GPIOx == GPIOI)    {      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, ENABLE);      RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOI, DISABLE); 8025560:	f000 b924 	b.w	80257ac <RCC_AHB1PeriphResetCmd> 8025564:	bd08      	pop	{r3, pc} 8025566:	bf00      	nop 8025568:	40020000 	.word	0x40020000 802556c:	40020400 	.word	0x40020400 8025570:	40020800 	.word	0x40020800 8025574:	40020c00 	.word	0x40020c00 8025578:	40021000 	.word	0x40021000 802557c:	40021400 	.word	0x40021400 8025580:	40021800 	.word	0x40021800 8025584:	40021c00 	.word	0x40021c00 8025588:	40022000 	.word	0x400220000802558c <GPIO_Init>:  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that contains  *         the configuration information for the specified GPIO peripheral.  * @retval None  */void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct){ 802558c:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}  /*-- GPIO Mode Configuration --*/  for (pinpos = 0x00; pinpos < 0x10; pinpos++)  {    pos = ((uint32_t)0x01) << pinpos;    /* Get the port pins position */    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos; 8025590:	680f      	ldr	r7, [r1, #0]  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));  assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));  /* -------------------------Configure the port pins---------------- */  /*-- GPIO Mode Configuration --*/  for (pinpos = 0x00; pinpos < 0x10; pinpos++) 8025592:	2300      	movs	r3, #0  {    pos = ((uint32_t)0x01) << pinpos; 8025594:	f04f 0c01 	mov.w	ip, #1    /* Get the port pins position */    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;    if (currentpin == pos)    {      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2)); 8025598:	f04f 0803 	mov.w	r8, #3  /* -------------------------Configure the port pins---------------- */  /*-- GPIO Mode Configuration --*/  for (pinpos = 0x00; pinpos < 0x10; pinpos++)  {    pos = ((uint32_t)0x01) << pinpos; 802559c:	fa0c f203 	lsl.w	r2, ip, r3    /* Get the port pins position */    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos; 80255a0:	ea02 0507 	and.w	r5, r2, r7    if (currentpin == pos) 80255a4:	4295      	cmp	r5, r2 80255a6:	d131      	bne.n	802560c <GPIO_Init+0x80>  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that contains  *         the configuration information for the specified GPIO peripheral.  * @retval None  */void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 80255a8:	005a      	lsls	r2, r3, #1    /* Get the port pins position */    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;    if (currentpin == pos)    {      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2)); 80255aa:	6806      	ldr	r6, [r0, #0] 80255ac:	fa08 f402 	lsl.w	r4, r8, r2 80255b0:	43e4      	mvns	r4, r4 80255b2:	4026      	ands	r6, r4 80255b4:	6006      	str	r6, [r0, #0]      GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2)); 80255b6:	790e      	ldrb	r6, [r1, #4] 80255b8:	f8d0 9000 	ldr.w	r9, [r0] 80255bc:	fa06 fa02 	lsl.w	sl, r6, r2      if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF)) 80255c0:	3e01      	subs	r6, #1    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;    if (currentpin == pos)    {      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2));      GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2)); 80255c2:	ea4a 0909 	orr.w	r9, sl, r9      if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF)) 80255c6:	2e01      	cmp	r6, #1    currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;    if (currentpin == pos)    {      GPIOx->MODER  &= ~(GPIO_MODER_MODER0 << (pinpos * 2));      GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2)); 80255c8:	f8c0 9000 	str.w	r9, [r0]      if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF)) 80255cc:	d815      	bhi.n	80255fa <GPIO_Init+0x6e>      {        /* Check Speed mode parameters */        assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));        /* Speed mode configuration */        GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2)); 80255ce:	6886      	ldr	r6, [r0, #8]        GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2)); 80255d0:	f891 9005 	ldrb.w	r9, [r1, #5]      {        /* Check Speed mode parameters */        assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));        /* Speed mode configuration */        GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2)); 80255d4:	4026      	ands	r6, r4 80255d6:	6086      	str	r6, [r0, #8]        GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2)); 80255d8:	6886      	ldr	r6, [r0, #8] 80255da:	fa09 f902 	lsl.w	r9, r9, r2 80255de:	ea49 0606 	orr.w	r6, r9, r6 80255e2:	6086      	str	r6, [r0, #8]        /* Check Output mode parameters */        assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));        /* Output mode configuration*/        GPIOx->OTYPER  &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos)) ; 80255e4:	6846      	ldr	r6, [r0, #4] 80255e6:	ea26 0505 	bic.w	r5, r6, r5 80255ea:	6045      	str	r5, [r0, #4]        GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos)); 80255ec:	798d      	ldrb	r5, [r1, #6] 80255ee:	6846      	ldr	r6, [r0, #4] 80255f0:	fa05 f503 	lsl.w	r5, r5, r3    temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;} 80255f4:	b2ad      	uxth	r5, r5        /* Check Output mode parameters */        assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));        /* Output mode configuration*/        GPIOx->OTYPER  &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos)) ;        GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos)); 80255f6:	4335      	orrs	r5, r6 80255f8:	6045      	str	r5, [r0, #4]      }      /* Pull-up Pull down resistor configuration*/      GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2)); 80255fa:	68c5      	ldr	r5, [r0, #12] 80255fc:	402c      	ands	r4, r5 80255fe:	60c4      	str	r4, [r0, #12]      GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2)); 8025600:	79cd      	ldrb	r5, [r1, #7] 8025602:	68c4      	ldr	r4, [r0, #12] 8025604:	fa05 f202 	lsl.w	r2, r5, r2 8025608:	4322      	orrs	r2, r4 802560a:	60c2      	str	r2, [r0, #12]  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));  assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));  /* -------------------------Configure the port pins---------------- */  /*-- GPIO Mode Configuration --*/  for (pinpos = 0x00; pinpos < 0x10; pinpos++) 802560c:	3301      	adds	r3, #1 802560e:	2b10      	cmp	r3, #16 8025610:	d1c4      	bne.n	802559c <GPIO_Init+0x10>      /* Pull-up Pull down resistor configuration*/      GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2));      GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2));    }  }} 8025612:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}08025616 <GPIO_SetBits>:{  /* Check the parameters */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_PIN(GPIO_Pin));  GPIOx->BSRRL = GPIO_Pin; 8025616:	8301      	strh	r1, [r0, #24] 8025618:	4770      	bx	lr0802561a <GPIO_ResetBits>:{  /* Check the parameters */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_PIN(GPIO_Pin));  GPIOx->BSRRH = GPIO_Pin; 802561a:	8341      	strh	r1, [r0, #26] 802561c:	4770      	bx	lr0802561e <GPIO_PinAFConfig>:  /* Check the parameters */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));  assert_param(IS_GPIO_AF(GPIO_AF));    temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ; 802561e:	f001 0307 	and.w	r3, r1, #7  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ; 8025622:	08c9      	lsrs	r1, r1, #3 8025624:	3108      	adds	r1, #8  *            @arg GPIO_AF_DCMI: Connect DCMI pins to AF13  *            @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF15  * @retval None  */void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF){ 8025626:	b530      	push	{r4, r5, lr}  /* Check the parameters */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));  assert_param(IS_GPIO_AF(GPIO_AF));    temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ; 8025628:	009b      	lsls	r3, r3, #2  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ; 802562a:	f850 5021 	ldr.w	r5, [r0, r1, lsl #2] 802562e:	240f      	movs	r4, #15 8025630:	fa04 f403 	lsl.w	r4, r4, r3 8025634:	ea25 0404 	bic.w	r4, r5, r4 8025638:	f840 4021 	str.w	r4, [r0, r1, lsl #2]  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp; 802563c:	f850 4021 	ldr.w	r4, [r0, r1, lsl #2]  /* Check the parameters */  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));  assert_param(IS_GPIO_AF(GPIO_AF));    temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ; 8025640:	fa02 f203 	lsl.w	r2, r2, r3  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp; 8025644:	4314      	orrs	r4, r2  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2; 8025646:	f840 4021 	str.w	r4, [r0, r1, lsl #2] 802564a:	bd30      	pop	{r4, r5, pc}0802564c <PWR_BackupAccessCmd>:void PWR_BackupAccessCmd(FunctionalState NewState){  /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));    *(__IO uint32_t *) CR_DBP_BB = (uint32_t)NewState; 802564c:	4b01      	ldr	r3, [pc, #4]	; (8025654 <PWR_BackupAccessCmd+0x8>) 802564e:	6018      	str	r0, [r3, #0] 8025650:	4770      	bx	lr 8025652:	bf00      	nop 8025654:	420e0020 	.word	0x420e002008025658 <RCC_LSEConfig>:  /* Check the parameters */  assert_param(IS_RCC_LSE(RCC_LSE));  /* Reset LSEON and LSEBYP bits before configuring the LSE ------------------*/  /* Reset LSEON bit */  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF; 8025658:	4b06      	ldr	r3, [pc, #24]	; (8025674 <RCC_LSEConfig+0x1c>) 802565a:	2200      	movs	r2, #0  /* Reset LSEBYP bit */  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF;  /* Configure LSE (RCC_LSE_OFF is already covered by the code section above) */  switch (RCC_LSE) 802565c:	2801      	cmp	r0, #1  /* Check the parameters */  assert_param(IS_RCC_LSE(RCC_LSE));  /* Reset LSEON and LSEBYP bits before configuring the LSE ------------------*/  /* Reset LSEON bit */  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF; 802565e:	701a      	strb	r2, [r3, #0]  /* Reset LSEBYP bit */  *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_OFF; 8025660:	701a      	strb	r2, [r3, #0]  /* Configure LSE (RCC_LSE_OFF is already covered by the code section above) */  switch (RCC_LSE) 8025662:	d002      	beq.n	802566a <RCC_LSEConfig+0x12> 8025664:	2804      	cmp	r0, #4 8025666:	d104      	bne.n	8025672 <RCC_LSEConfig+0x1a> 8025668:	e001      	b.n	802566e <RCC_LSEConfig+0x16>  {    case RCC_LSE_ON:      /* Set LSEON bit */      *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_ON; 802566a:	7018      	strb	r0, [r3, #0]      break; 802566c:	4770      	bx	lr    case RCC_LSE_Bypass:      /* Set LSEBYP and LSEON bits */      *(__IO uint8_t *) BDCR_ADDRESS = RCC_LSE_Bypass | RCC_LSE_ON; 802566e:	2205      	movs	r2, #5 8025670:	701a      	strb	r2, [r3, #0] 8025672:	4770      	bx	lr 8025674:	40023870 	.word	0x4002387008025678 <RCC_LSICmd>:void RCC_LSICmd(FunctionalState NewState){  /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));  *(__IO uint32_t *) CSR_LSION_BB = (uint32_t)NewState; 8025678:	4b01      	ldr	r3, [pc, #4]	; (8025680 <RCC_LSICmd+0x8>) 802567a:	6018      	str	r0, [r3, #0] 802567c:	4770      	bx	lr 802567e:	bf00      	nop 8025680:	42470e80 	.word	0x42470e8008025684 <RCC_GetClocksFreq>:void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks){  uint32_t tmp = 0, presc = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;  /* Get SYSCLK source -------------------------------------------------------*/  tmp = RCC->CFGR & RCC_CFGR_SWS; 8025684:	4b1e      	ldr	r3, [pc, #120]	; (8025700 <RCC_GetClocksFreq+0x7c>) 8025686:	689a      	ldr	r2, [r3, #8] 8025688:	f002 020c 	and.w	r2, r2, #12  switch (tmp) 802568c:	2a04      	cmp	r2, #4  *         configuration based on this function will be incorrect.  *      * @retval None  */void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks){ 802568e:	b510      	push	{r4, lr}  uint32_t tmp = 0, presc = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;  /* Get SYSCLK source -------------------------------------------------------*/  tmp = RCC->CFGR & RCC_CFGR_SWS;  switch (tmp) 8025690:	d003      	beq.n	802569a <RCC_GetClocksFreq+0x16> 8025692:	2a08      	cmp	r2, #8 8025694:	d003      	beq.n	802569e <RCC_GetClocksFreq+0x1a> 8025696:	4b1b      	ldr	r3, [pc, #108]	; (8025704 <RCC_GetClocksFreq+0x80>) 8025698:	e018      	b.n	80256cc <RCC_GetClocksFreq+0x48>  {    case 0x00:  /* HSI used as system clock source */      RCC_Clocks->SYSCLK_Frequency = HSI_VALUE;      break;    case 0x04:  /* HSE used as system clock  source */      RCC_Clocks->SYSCLK_Frequency = HSE_VALUE; 802569a:	4b1b      	ldr	r3, [pc, #108]	; (8025708 <RCC_GetClocksFreq+0x84>) 802569c:	e016      	b.n	80256cc <RCC_GetClocksFreq+0x48>    case 0x08:  /* PLL used as system clock  source */      /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN         SYSCLK = PLL_VCO / PLLP         */          pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; 802569e:	6859      	ldr	r1, [r3, #4]      pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; 80256a0:	685a      	ldr	r2, [r3, #4]            if (pllsource != 0) 80256a2:	f411 0f80 	tst.w	r1, #4194304	; 0x400000      {        /* HSE used as PLL clock source */        pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); 80256a6:	6859      	ldr	r1, [r3, #4] 80256a8:	bf14      	ite	ne 80256aa:	4b17      	ldrne	r3, [pc, #92]	; (8025708 <RCC_GetClocksFreq+0x84>)      }      else      {        /* HSI used as PLL clock source */        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);       80256ac:	4b15      	ldreq	r3, [pc, #84]	; (8025704 <RCC_GetClocksFreq+0x80>)      /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN         SYSCLK = PLL_VCO / PLLP         */          pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;      pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; 80256ae:	f002 023f 	and.w	r2, r2, #63	; 0x3f        pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);      }      else      {        /* HSI used as PLL clock source */        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);       80256b2:	fbb3 f3f2 	udiv	r3, r3, r2      }      pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; 80256b6:	4a12      	ldr	r2, [pc, #72]	; (8025700 <RCC_GetClocksFreq+0x7c>) 80256b8:	6852      	ldr	r2, [r2, #4] 80256ba:	f3c2 4201 	ubfx	r2, r2, #16, #2      pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;            if (pllsource != 0)      {        /* HSE used as PLL clock source */        pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); 80256be:	f3c1 1188 	ubfx	r1, r1, #6, #9      {        /* HSI used as PLL clock source */        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);            }      pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; 80256c2:	3201      	adds	r2, #1        pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);      }      else      {        /* HSI used as PLL clock source */        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);       80256c4:	434b      	muls	r3, r1      }      pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; 80256c6:	0052      	lsls	r2, r2, #1      RCC_Clocks->SYSCLK_Frequency = pllvco/pllp; 80256c8:	fbb3 f3f2 	udiv	r3, r3, r2      break;  }  /* Compute HCLK, PCLK1 and PCLK2 clocks frequencies ------------------------*/  /* Get HCLK prescaler */  tmp = RCC->CFGR & RCC_CFGR_HPRE; 80256cc:	490c      	ldr	r1, [pc, #48]	; (8025700 <RCC_GetClocksFreq+0x7c>)        /* HSI used as PLL clock source */        pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);            }      pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;      RCC_Clocks->SYSCLK_Frequency = pllvco/pllp; 80256ce:	6003      	str	r3, [r0, #0]      break;  }  /* Compute HCLK, PCLK1 and PCLK2 clocks frequencies ------------------------*/  /* Get HCLK prescaler */  tmp = RCC->CFGR & RCC_CFGR_HPRE; 80256d0:	688b      	ldr	r3, [r1, #8]  tmp = tmp >> 4;  presc = APBAHBPrescTable[tmp]; 80256d2:	4a0e      	ldr	r2, [pc, #56]	; (802570c <RCC_GetClocksFreq+0x88>)  }  /* Compute HCLK, PCLK1 and PCLK2 clocks frequencies ------------------------*/  /* Get HCLK prescaler */  tmp = RCC->CFGR & RCC_CFGR_HPRE;  tmp = tmp >> 4; 80256d4:	f3c3 1303 	ubfx	r3, r3, #4, #4  presc = APBAHBPrescTable[tmp]; 80256d8:	5cd4      	ldrb	r4, [r2, r3]  /* HCLK clock frequency */  RCC_Clocks->HCLK_Frequency = RCC_Clocks->SYSCLK_Frequency >> presc; 80256da:	6803      	ldr	r3, [r0, #0] 80256dc:	fa23 f304 	lsr.w	r3, r3, r4 80256e0:	6043      	str	r3, [r0, #4]  /* Get PCLK1 prescaler */  tmp = RCC->CFGR & RCC_CFGR_PPRE1; 80256e2:	688c      	ldr	r4, [r1, #8]  tmp = tmp >> 10; 80256e4:	f3c4 2482 	ubfx	r4, r4, #10, #3  presc = APBAHBPrescTable[tmp]; 80256e8:	5d14      	ldrb	r4, [r2, r4]  /* PCLK1 clock frequency */  RCC_Clocks->PCLK1_Frequency = RCC_Clocks->HCLK_Frequency >> presc; 80256ea:	fa23 f404 	lsr.w	r4, r3, r4 80256ee:	6084      	str	r4, [r0, #8]  /* Get PCLK2 prescaler */  tmp = RCC->CFGR & RCC_CFGR_PPRE2; 80256f0:	6889      	ldr	r1, [r1, #8]  tmp = tmp >> 13; 80256f2:	f3c1 3142 	ubfx	r1, r1, #13, #3  presc = APBAHBPrescTable[tmp]; 80256f6:	5c52      	ldrb	r2, [r2, r1]  /* PCLK2 clock frequency */  RCC_Clocks->PCLK2_Frequency = RCC_Clocks->HCLK_Frequency >> presc; 80256f8:	fa23 f302 	lsr.w	r3, r3, r2 80256fc:	60c3      	str	r3, [r0, #12] 80256fe:	bd10      	pop	{r4, pc} 8025700:	40023800 	.word	0x40023800 8025704:	00f42400 	.word	0x00f42400 8025708:	017d7840 	.word	0x017d7840 802570c:	200005ac 	.word	0x200005ac08025710 <RCC_RTCCLKConfig>:  uint32_t tmpreg = 0;  /* Check the parameters */  assert_param(IS_RCC_RTCCLK_SOURCE(RCC_RTCCLKSource));  if ((RCC_RTCCLKSource & 0x00000300) == 0x00000300) 8025710:	f400 7340 	and.w	r3, r0, #768	; 0x300 8025714:	f5b3 7f40 	cmp.w	r3, #768	; 0x300 8025718:	4b08      	ldr	r3, [pc, #32]	; (802573c <RCC_RTCCLKConfig+0x2c>) 802571a:	d108      	bne.n	802572e <RCC_RTCCLKConfig+0x1e>  { /* If HSE is selected as RTC clock source, configure HSE division factor for RTC clock */    tmpreg = RCC->CFGR; 802571c:	6899      	ldr	r1, [r3, #8]    /* Clear RTCPRE[4:0] bits */    tmpreg &= ~RCC_CFGR_RTCPRE;    /* Configure HSE division factor for RTC clock */    tmpreg |= (RCC_RTCCLKSource & 0xFFFFCFF); 802571e:	f020 4270 	bic.w	r2, r0, #4026531840	; 0xf0000000  if ((RCC_RTCCLKSource & 0x00000300) == 0x00000300)  { /* If HSE is selected as RTC clock source, configure HSE division factor for RTC clock */    tmpreg = RCC->CFGR;    /* Clear RTCPRE[4:0] bits */    tmpreg &= ~RCC_CFGR_RTCPRE; 8025722:	f421 11f8 	bic.w	r1, r1, #2031616	; 0x1f0000    /* Configure HSE division factor for RTC clock */    tmpreg |= (RCC_RTCCLKSource & 0xFFFFCFF); 8025726:	f422 7240 	bic.w	r2, r2, #768	; 0x300 802572a:	430a      	orrs	r2, r1    /* Store the new value */    RCC->CFGR = tmpreg; 802572c:	609a      	str	r2, [r3, #8]  }      /* Select the RTC clock source */  RCC->BDCR |= (RCC_RTCCLKSource & 0x00000FFF); 802572e:	6f1a      	ldr	r2, [r3, #112]	; 0x70 8025730:	0500      	lsls	r0, r0, #20 8025732:	ea42 5010 	orr.w	r0, r2, r0, lsr #20 8025736:	6718      	str	r0, [r3, #112]	; 0x70 8025738:	4770      	bx	lr 802573a:	bf00      	nop 802573c:	40023800 	.word	0x4002380008025740 <RCC_RTCCLKCmd>:void RCC_RTCCLKCmd(FunctionalState NewState){  /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));  *(__IO uint32_t *) BDCR_RTCEN_BB = (uint32_t)NewState; 8025740:	4b01      	ldr	r3, [pc, #4]	; (8025748 <RCC_RTCCLKCmd+0x8>) 8025742:	6018      	str	r0, [r3, #0] 8025744:	4770      	bx	lr 8025746:	bf00      	nop 8025748:	42470e3c 	.word	0x42470e3c0802574c <RCC_AHB1PeriphClockCmd>:  * @param  NewState: new state of the specified peripheral clock.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState){ 802574c:	4b04      	ldr	r3, [pc, #16]	; (8025760 <RCC_AHB1PeriphClockCmd+0x14>)  assert_param(IS_RCC_AHB1_CLOCK_PERIPH(RCC_AHB1Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->AHB1ENR |= RCC_AHB1Periph; 802574e:	6b1a      	ldr	r2, [r3, #48]	; 0x30{  /* Check the parameters */  assert_param(IS_RCC_AHB1_CLOCK_PERIPH(RCC_AHB1Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 8025750:	b109      	cbz	r1, 8025756 <RCC_AHB1PeriphClockCmd+0xa>  {    RCC->AHB1ENR |= RCC_AHB1Periph; 8025752:	4310      	orrs	r0, r2 8025754:	e001      	b.n	802575a <RCC_AHB1PeriphClockCmd+0xe>  }  else  {    RCC->AHB1ENR &= ~RCC_AHB1Periph; 8025756:	ea22 0000 	bic.w	r0, r2, r0 802575a:	6318      	str	r0, [r3, #48]	; 0x30 802575c:	4770      	bx	lr 802575e:	bf00      	nop 8025760:	40023800 	.word	0x4002380008025764 <RCC_AHB2PeriphClockCmd>:  * @param  NewState: new state of the specified peripheral clock.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState){ 8025764:	4b04      	ldr	r3, [pc, #16]	; (8025778 <RCC_AHB2PeriphClockCmd+0x14>)  assert_param(IS_RCC_AHB2_PERIPH(RCC_AHB2Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->AHB2ENR |= RCC_AHB2Periph; 8025766:	6b5a      	ldr	r2, [r3, #52]	; 0x34{  /* Check the parameters */  assert_param(IS_RCC_AHB2_PERIPH(RCC_AHB2Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 8025768:	b109      	cbz	r1, 802576e <RCC_AHB2PeriphClockCmd+0xa>  {    RCC->AHB2ENR |= RCC_AHB2Periph; 802576a:	4310      	orrs	r0, r2 802576c:	e001      	b.n	8025772 <RCC_AHB2PeriphClockCmd+0xe>  }  else  {    RCC->AHB2ENR &= ~RCC_AHB2Periph; 802576e:	ea22 0000 	bic.w	r0, r2, r0 8025772:	6358      	str	r0, [r3, #52]	; 0x34 8025774:	4770      	bx	lr 8025776:	bf00      	nop 8025778:	40023800 	.word	0x400238000802577c <RCC_APB1PeriphClockCmd>:  * @param  NewState: new state of the specified peripheral clock.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState){ 802577c:	4b04      	ldr	r3, [pc, #16]	; (8025790 <RCC_APB1PeriphClockCmd+0x14>)  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));    assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->APB1ENR |= RCC_APB1Periph; 802577e:	6c1a      	ldr	r2, [r3, #64]	; 0x40{  /* Check the parameters */  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));    assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 8025780:	b109      	cbz	r1, 8025786 <RCC_APB1PeriphClockCmd+0xa>  {    RCC->APB1ENR |= RCC_APB1Periph; 8025782:	4310      	orrs	r0, r2 8025784:	e001      	b.n	802578a <RCC_APB1PeriphClockCmd+0xe>  }  else  {    RCC->APB1ENR &= ~RCC_APB1Periph; 8025786:	ea22 0000 	bic.w	r0, r2, r0 802578a:	6418      	str	r0, [r3, #64]	; 0x40 802578c:	4770      	bx	lr 802578e:	bf00      	nop 8025790:	40023800 	.word	0x4002380008025794 <RCC_APB2PeriphClockCmd>:  * @param  NewState: new state of the specified peripheral clock.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState){ 8025794:	4b04      	ldr	r3, [pc, #16]	; (80257a8 <RCC_APB2PeriphClockCmd+0x14>)  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->APB2ENR |= RCC_APB2Periph; 8025796:	6c5a      	ldr	r2, [r3, #68]	; 0x44{  /* Check the parameters */  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 8025798:	b109      	cbz	r1, 802579e <RCC_APB2PeriphClockCmd+0xa>  {    RCC->APB2ENR |= RCC_APB2Periph; 802579a:	4310      	orrs	r0, r2 802579c:	e001      	b.n	80257a2 <RCC_APB2PeriphClockCmd+0xe>  }  else  {    RCC->APB2ENR &= ~RCC_APB2Periph; 802579e:	ea22 0000 	bic.w	r0, r2, r0 80257a2:	6458      	str	r0, [r3, #68]	; 0x44 80257a4:	4770      	bx	lr 80257a6:	bf00      	nop 80257a8:	40023800 	.word	0x40023800080257ac <RCC_AHB1PeriphResetCmd>:  * @param  NewState: new state of the specified peripheral reset.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_AHB1PeriphResetCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState){ 80257ac:	4b04      	ldr	r3, [pc, #16]	; (80257c0 <RCC_AHB1PeriphResetCmd+0x14>)  assert_param(IS_RCC_AHB1_RESET_PERIPH(RCC_AHB1Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->AHB1RSTR |= RCC_AHB1Periph; 80257ae:	691a      	ldr	r2, [r3, #16]{  /* Check the parameters */  assert_param(IS_RCC_AHB1_RESET_PERIPH(RCC_AHB1Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 80257b0:	b109      	cbz	r1, 80257b6 <RCC_AHB1PeriphResetCmd+0xa>  {    RCC->AHB1RSTR |= RCC_AHB1Periph; 80257b2:	4310      	orrs	r0, r2 80257b4:	e001      	b.n	80257ba <RCC_AHB1PeriphResetCmd+0xe>  }  else  {    RCC->AHB1RSTR &= ~RCC_AHB1Periph; 80257b6:	ea22 0000 	bic.w	r0, r2, r0 80257ba:	6118      	str	r0, [r3, #16] 80257bc:	4770      	bx	lr 80257be:	bf00      	nop 80257c0:	40023800 	.word	0x40023800080257c4 <RCC_APB1PeriphResetCmd>:  * @param  NewState: new state of the specified peripheral reset.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState){ 80257c4:	4b04      	ldr	r3, [pc, #16]	; (80257d8 <RCC_APB1PeriphResetCmd+0x14>)  /* Check the parameters */  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->APB1RSTR |= RCC_APB1Periph; 80257c6:	6a1a      	ldr	r2, [r3, #32]void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState){  /* Check the parameters */  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 80257c8:	b109      	cbz	r1, 80257ce <RCC_APB1PeriphResetCmd+0xa>  {    RCC->APB1RSTR |= RCC_APB1Periph; 80257ca:	4310      	orrs	r0, r2 80257cc:	e001      	b.n	80257d2 <RCC_APB1PeriphResetCmd+0xe>  }  else  {    RCC->APB1RSTR &= ~RCC_APB1Periph; 80257ce:	ea22 0000 	bic.w	r0, r2, r0 80257d2:	6218      	str	r0, [r3, #32] 80257d4:	4770      	bx	lr 80257d6:	bf00      	nop 80257d8:	40023800 	.word	0x40023800080257dc <RCC_APB2PeriphResetCmd>:  * @param  NewState: new state of the specified peripheral reset.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState){ 80257dc:	4b04      	ldr	r3, [pc, #16]	; (80257f0 <RCC_APB2PeriphResetCmd+0x14>)  /* Check the parameters */  assert_param(IS_RCC_APB2_RESET_PERIPH(RCC_APB2Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    RCC->APB2RSTR |= RCC_APB2Periph; 80257de:	6a5a      	ldr	r2, [r3, #36]	; 0x24void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState){  /* Check the parameters */  assert_param(IS_RCC_APB2_RESET_PERIPH(RCC_APB2Periph));  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 80257e0:	b109      	cbz	r1, 80257e6 <RCC_APB2PeriphResetCmd+0xa>  {    RCC->APB2RSTR |= RCC_APB2Periph; 80257e2:	4310      	orrs	r0, r2 80257e4:	e001      	b.n	80257ea <RCC_APB2PeriphResetCmd+0xe>  }  else  {    RCC->APB2RSTR &= ~RCC_APB2Periph; 80257e6:	ea22 0000 	bic.w	r0, r2, r0 80257ea:	6258      	str	r0, [r3, #36]	; 0x24 80257ec:	4770      	bx	lr 80257ee:	bf00      	nop 80257f0:	40023800 	.word	0x40023800080257f4 <RCC_GetFlagStatus>:  /* Check the parameters */  assert_param(IS_RCC_FLAG(RCC_FLAG));  /* Get the RCC register index */  tmp = RCC_FLAG >> 5; 80257f4:	0943      	lsrs	r3, r0, #5  if (tmp == 1)               /* The flag to check is in CR register */ 80257f6:	2b01      	cmp	r3, #1 80257f8:	4a07      	ldr	r2, [pc, #28]	; (8025818 <RCC_GetFlagStatus+0x24>) 80257fa:	d101      	bne.n	8025800 <RCC_GetFlagStatus+0xc>  {    statusreg = RCC->CR; 80257fc:	6813      	ldr	r3, [r2, #0] 80257fe:	e003      	b.n	8025808 <RCC_GetFlagStatus+0x14>  }  else if (tmp == 2)          /* The flag to check is in BDCR register */ 8025800:	2b02      	cmp	r3, #2  {    statusreg = RCC->BDCR; 8025802:	bf0c      	ite	eq 8025804:	6f13      	ldreq	r3, [r2, #112]	; 0x70  }  else                       /* The flag to check is in CSR register */  {    statusreg = RCC->CSR; 8025806:	6f53      	ldrne	r3, [r2, #116]	; 0x74  }  /* Get the flag position */  tmp = RCC_FLAG & FLAG_MASK;  if ((statusreg & ((uint32_t)1 << tmp)) != (uint32_t)RESET) 8025808:	f000 001f 	and.w	r0, r0, #31 802580c:	fa23 f000 	lsr.w	r0, r3, r0  {    bitstatus = RESET;  }  /* Return the flag status */  return bitstatus;} 8025810:	f000 0001 	and.w	r0, r0, #1 8025814:	4770      	bx	lr 8025816:	bf00      	nop 8025818:	40023800 	.word	0x400238000802581c <RNG_Cmd>:  * @param  NewState: new state of the RNG peripheral.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void RNG_Cmd(FunctionalState NewState){ 802581c:	4b04      	ldr	r3, [pc, #16]	; (8025830 <RNG_Cmd+0x14>)  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE)  {    /* Enable the RNG */    RNG->CR |= RNG_CR_RNGEN; 802581e:	681a      	ldr	r2, [r3, #0]void RNG_Cmd(FunctionalState NewState){  /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));  if (NewState != DISABLE) 8025820:	b110      	cbz	r0, 8025828 <RNG_Cmd+0xc>  {    /* Enable the RNG */    RNG->CR |= RNG_CR_RNGEN; 8025822:	f042 0204 	orr.w	r2, r2, #4 8025826:	e001      	b.n	802582c <RNG_Cmd+0x10>  }  else  {    /* Disable the RNG */    RNG->CR &= ~RNG_CR_RNGEN; 8025828:	f022 0204 	bic.w	r2, r2, #4 802582c:	601a      	str	r2, [r3, #0] 802582e:	4770      	bx	lr 8025830:	50060800 	.word	0x5006080008025834 <RNG_GetRandomNumber>:  * @retval 32-bit random number.  */uint32_t RNG_GetRandomNumber(void){  /* Return the 32 bit random number from the DR register */  return RNG->DR; 8025834:	4b01      	ldr	r3, [pc, #4]	; (802583c <RNG_GetRandomNumber+0x8>) 8025836:	6898      	ldr	r0, [r3, #8]} 8025838:	4770      	bx	lr 802583a:	bf00      	nop 802583c:	50060800 	.word	0x5006080008025840 <RTC_ByteToBcd2>:  * @param  Value: Byte to be converted.  * @retval Converted byte  */static uint8_t RTC_ByteToBcd2(uint8_t Value){  uint8_t bcdhigh = 0; 8025840:	2300      	movs	r3, #0    while (Value >= 10) 8025842:	e003      	b.n	802584c <RTC_ByteToBcd2+0xc>  {    bcdhigh++; 8025844:	3301      	adds	r3, #1    Value -= 10; 8025846:	380a      	subs	r0, #10{  uint8_t bcdhigh = 0;    while (Value >= 10)  {    bcdhigh++; 8025848:	b2db      	uxtb	r3, r3    Value -= 10; 802584a:	b2c0      	uxtb	r0, r0  */static uint8_t RTC_ByteToBcd2(uint8_t Value){  uint8_t bcdhigh = 0;    while (Value >= 10) 802584c:	2809      	cmp	r0, #9 802584e:	d8f9      	bhi.n	8025844 <RTC_ByteToBcd2+0x4>  {    bcdhigh++;    Value -= 10;  }    return  ((uint8_t)(bcdhigh << 4) | Value); 8025850:	ea40 1003 	orr.w	r0, r0, r3, lsl #4} 8025854:	b2c0      	uxtb	r0, r0 8025856:	4770      	bx	lr08025858 <RTC_Bcd2ToByte>:  * @retval Converted word  */static uint8_t RTC_Bcd2ToByte(uint8_t Value){  uint8_t tmp = 0;  tmp = ((uint8_t)(Value & (uint8_t)0xF0) >> (uint8_t)0x4) * 10; 8025858:	0902      	lsrs	r2, r0, #4  return (tmp + (Value & (uint8_t)0x0F)); 802585a:	f000 030f 	and.w	r3, r0, #15 802585e:	200a      	movs	r0, #10 8025860:	fb00 3002 	mla	r0, r0, r2, r3} 8025864:	b2c0      	uxtb	r0, r0 8025866:	4770      	bx	lr08025868 <RTC_EnterInitMode>:  * @retval An ErrorStatus enumeration value:  *          - SUCCESS: RTC is in Init mode  *          - ERROR: RTC is not in Init mode    */ErrorStatus RTC_EnterInitMode(void){ 8025868:	b082      	sub	sp, #8  __IO uint32_t initcounter = 0x00; 802586a:	2300      	movs	r3, #0 802586c:	9301      	str	r3, [sp, #4]  ErrorStatus status = ERROR;  uint32_t initstatus = 0x00;       /* Check if the Initialization mode is set */  if ((RTC->ISR & RTC_ISR_INITF) == (uint32_t)RESET) 802586e:	4b0d      	ldr	r3, [pc, #52]	; (80258a4 <RTC_EnterInitMode+0x3c>) 8025870:	68da      	ldr	r2, [r3, #12] 8025872:	0650      	lsls	r0, r2, #25 8025874:	d413      	bmi.n	802589e <RTC_EnterInitMode+0x36>  {    /* Set the Initialization mode */    RTC->ISR = (uint32_t)RTC_INIT_MASK; 8025876:	f04f 32ff 	mov.w	r2, #4294967295 802587a:	60da      	str	r2, [r3, #12]        /* Wait till RTC is in INIT state and if Time out is reached exit */    do    {      initstatus = RTC->ISR & RTC_ISR_INITF; 802587c:	68da      	ldr	r2, [r3, #12]      initcounter++;   802587e:	9901      	ldr	r1, [sp, #4] 8025880:	3101      	adds	r1, #1 8025882:	9101      	str	r1, [sp, #4]    } while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00)); 8025884:	9901      	ldr	r1, [sp, #4] 8025886:	f5b1 3f80 	cmp.w	r1, #65536	; 0x10000    RTC->ISR = (uint32_t)RTC_INIT_MASK;        /* Wait till RTC is in INIT state and if Time out is reached exit */    do    {      initstatus = RTC->ISR & RTC_ISR_INITF; 802588a:	f002 0240 	and.w	r2, r2, #64	; 0x40      initcounter++;      } while((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00)); 802588e:	d001      	beq.n	8025894 <RTC_EnterInitMode+0x2c> 8025890:	2a00      	cmp	r2, #0 8025892:	d0f3      	beq.n	802587c <RTC_EnterInitMode+0x14>        if ((RTC->ISR & RTC_ISR_INITF) != RESET) 8025894:	4b03      	ldr	r3, [pc, #12]	; (80258a4 <RTC_EnterInitMode+0x3c>) 8025896:	68d8      	ldr	r0, [r3, #12]    {      status = SUCCESS; 8025898:	f3c0 1080 	ubfx	r0, r0, #6, #1 802589c:	e000      	b.n	80258a0 <RTC_EnterInitMode+0x38>      status = ERROR;    }          }  else  {    status = SUCCESS;   802589e:	2001      	movs	r0, #1  }       return (status);  } 80258a0:	b002      	add	sp, #8 80258a2:	4770      	bx	lr 80258a4:	40002800 	.word	0x40002800080258a8 <RTC_ExitInitMode>:  * @retval None  */void RTC_ExitInitMode(void){   /* Exit Initialization mode */  RTC->ISR &= (uint32_t)~RTC_ISR_INIT;   80258a8:	4b02      	ldr	r3, [pc, #8]	; (80258b4 <RTC_ExitInitMode+0xc>) 80258aa:	68da      	ldr	r2, [r3, #12] 80258ac:	f022 0280 	bic.w	r2, r2, #128	; 0x80 80258b0:	60da      	str	r2, [r3, #12] 80258b2:	4770      	bx	lr 80258b4:	40002800 	.word	0x40002800080258b8 <RTC_Init>:  * @retval An ErrorStatus enumeration value:  *          - SUCCESS: RTC registers are initialized  *          - ERROR: RTC registers are not initialized    */ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct){ 80258b8:	b538      	push	{r3, r4, r5, lr}  assert_param(IS_RTC_HOUR_FORMAT(RTC_InitStruct->RTC_HourFormat));  assert_param(IS_RTC_ASYNCH_PREDIV(RTC_InitStruct->RTC_AsynchPrediv));  assert_param(IS_RTC_SYNCH_PREDIV(RTC_InitStruct->RTC_SynchPrediv));  /* Disable the write protection for RTC registers */  RTC->WPR = 0xCA; 80258ba:	4c0f      	ldr	r4, [pc, #60]	; (80258f8 <RTC_Init+0x40>) 80258bc:	23ca      	movs	r3, #202	; 0xca 80258be:	6263      	str	r3, [r4, #36]	; 0x24  RTC->WPR = 0x53; 80258c0:	2353      	movs	r3, #83	; 0x53 80258c2:	6263      	str	r3, [r4, #36]	; 0x24  * @retval An ErrorStatus enumeration value:  *          - SUCCESS: RTC registers are initialized  *          - ERROR: RTC registers are not initialized    */ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct){ 80258c4:	4605      	mov	r5, r0  /* Disable the write protection for RTC registers */  RTC->WPR = 0xCA;  RTC->WPR = 0x53;  /* Set Initialization mode */  if (RTC_EnterInitMode() == ERROR) 80258c6:	f7ff ffcf 	bl	8025868 <RTC_EnterInitMode> 80258ca:	b188      	cbz	r0, 80258f0 <RTC_Init+0x38>    status = ERROR;  }   else  {    /* Clear RTC CR FMT Bit */    RTC->CR &= ((uint32_t)~(RTC_CR_FMT)); 80258cc:	68a3      	ldr	r3, [r4, #8] 80258ce:	f023 0340 	bic.w	r3, r3, #64	; 0x40 80258d2:	60a3      	str	r3, [r4, #8]    /* Set RTC_CR register */    RTC->CR |=  ((uint32_t)(RTC_InitStruct->RTC_HourFormat)); 80258d4:	68a2      	ldr	r2, [r4, #8] 80258d6:	682b      	ldr	r3, [r5, #0] 80258d8:	4313      	orrs	r3, r2 80258da:	60a3      	str	r3, [r4, #8]      /* Configure the RTC PRER */    RTC->PRER = (uint32_t)(RTC_InitStruct->RTC_SynchPrediv); 80258dc:	68ab      	ldr	r3, [r5, #8] 80258de:	6123      	str	r3, [r4, #16]    RTC->PRER |= (uint32_t)(RTC_InitStruct->RTC_AsynchPrediv << 16); 80258e0:	6923      	ldr	r3, [r4, #16] 80258e2:	686a      	ldr	r2, [r5, #4] 80258e4:	ea43 4302 	orr.w	r3, r3, r2, lsl #16 80258e8:	6123      	str	r3, [r4, #16]    /* Exit Initialization mode */    RTC_ExitInitMode(); 80258ea:	f7ff ffdd 	bl	80258a8 <RTC_ExitInitMode>    status = SUCCESS;     80258ee:	2001      	movs	r0, #1  }  /* Enable the write protection for RTC registers */  RTC->WPR = 0xFF;  80258f0:	4b01      	ldr	r3, [pc, #4]	; (80258f8 <RTC_Init+0x40>) 80258f2:	22ff      	movs	r2, #255	; 0xff 80258f4:	625a      	str	r2, [r3, #36]	; 0x24    return status;} 80258f6:	bd38      	pop	{r3, r4, r5, pc} 80258f8:	40002800 	.word	0x40002800080258fc <RTC_WaitForSynchro>:  * @retval An ErrorStatus enumeration value:  *          - SUCCESS: RTC registers are synchronised  *          - ERROR: RTC registers are not synchronised  */ErrorStatus RTC_WaitForSynchro(void){ 80258fc:	b082      	sub	sp, #8  __IO uint32_t synchrocounter = 0; 80258fe:	2300      	movs	r3, #0 8025900:	9301      	str	r3, [sp, #4]  ErrorStatus status = ERROR;  uint32_t synchrostatus = 0x00;  /* Disable the write protection for RTC registers */  RTC->WPR = 0xCA; 8025902:	4b0e      	ldr	r3, [pc, #56]	; (802593c <RTC_WaitForSynchro+0x40>) 8025904:	22ca      	movs	r2, #202	; 0xca 8025906:	625a      	str	r2, [r3, #36]	; 0x24  RTC->WPR = 0x53; 8025908:	2253      	movs	r2, #83	; 0x53 802590a:	625a      	str	r2, [r3, #36]	; 0x24      /* Clear RSF flag */  RTC->ISR &= (uint32_t)RTC_RSF_MASK; 802590c:	68da      	ldr	r2, [r3, #12] 802590e:	f022 02a0 	bic.w	r2, r2, #160	; 0xa0 8025912:	60da      	str	r2, [r3, #12]      /* Wait the registers to be synchronised */  do  {    synchrostatus = RTC->ISR & RTC_ISR_RSF; 8025914:	68d9      	ldr	r1, [r3, #12]    synchrocounter++;   8025916:	9a01      	ldr	r2, [sp, #4] 8025918:	3201      	adds	r2, #1 802591a:	9201      	str	r2, [sp, #4]  } while((synchrocounter != SYNCHRO_TIMEOUT) && (synchrostatus == 0x00)); 802591c:	9a01      	ldr	r2, [sp, #4] 802591e:	f5b2 3f00 	cmp.w	r2, #131072	; 0x20000  RTC->ISR &= (uint32_t)RTC_RSF_MASK;      /* Wait the registers to be synchronised */  do  {    synchrostatus = RTC->ISR & RTC_ISR_RSF; 8025922:	f001 0120 	and.w	r1, r1, #32 8025926:	4a05      	ldr	r2, [pc, #20]	; (802593c <RTC_WaitForSynchro+0x40>)    synchrocounter++;    } while((synchrocounter != SYNCHRO_TIMEOUT) && (synchrostatus == 0x00)); 8025928:	d001      	beq.n	802592e <RTC_WaitForSynchro+0x32> 802592a:	2900      	cmp	r1, #0 802592c:	d0f2      	beq.n	8025914 <RTC_WaitForSynchro+0x18>      if ((RTC->ISR & RTC_ISR_RSF) != RESET) 802592e:	68d0      	ldr	r0, [r2, #12]  {    status = ERROR;  }          /* Enable the write protection for RTC registers */  RTC->WPR = 0xFF;  8025930:	23ff      	movs	r3, #255	; 0xff 8025932:	6253      	str	r3, [r2, #36]	; 0x24      return (status); } 8025934:	f3c0 1040 	ubfx	r0, r0, #5, #1 8025938:	b002      	add	sp, #8 802593a:	4770      	bx	lr 802593c:	40002800 	.word	0x4000280008025940 <RTC_SetTime>:  * @retval An ErrorStatus enumeration value:  *          - SUCCESS: RTC Time register is configured  *          - ERROR: RTC Time register is not configured  */ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct){ 8025940:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8025942:	4b24      	ldr	r3, [pc, #144]	; (80259d4 <RTC_SetTime+0x94>) 8025944:	460c      	mov	r4, r1  /* Check the parameters */  assert_param(IS_RTC_FORMAT(RTC_Format));    if (RTC_Format == RTC_Format_BIN)  {    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET) 8025946:	689b      	ldr	r3, [r3, #8]  ErrorStatus status = ERROR;      /* Check the parameters */  assert_param(IS_RTC_FORMAT(RTC_Format));    if (RTC_Format == RTC_Format_BIN) 8025948:	b920      	cbnz	r0, 8025954 <RTC_SetTime+0x14>  {    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET) 802594a:	f013 0340 	ands.w	r3, r3, #64	; 0x40 802594e:	d12e      	bne.n	80259ae <RTC_SetTime+0x6e>      assert_param(IS_RTC_HOUR12(RTC_TimeStruct->RTC_Hours));      assert_param(IS_RTC_H12(RTC_TimeStruct->RTC_H12));    }     else    {      RTC_TimeStruct->RTC_H12 = 0x00; 8025950:	70cb      	strb	r3, [r1, #3] 8025952:	e02c      	b.n	80259ae <RTC_SetTime+0x6e>    assert_param(IS_RTC_MINUTES(RTC_TimeStruct->RTC_Minutes));    assert_param(IS_RTC_SECONDS(RTC_TimeStruct->RTC_Seconds));  }  else  {    if ((RTC->CR & RTC_CR_FMT) != (uint32_t)RESET) 8025954:	f013 0340 	ands.w	r3, r3, #64	; 0x40 8025958:	d11e      	bne.n	8025998 <RTC_SetTime+0x58>      assert_param(IS_RTC_HOUR12(tmpreg));      assert_param(IS_RTC_H12(RTC_TimeStruct->RTC_H12));     }     else    {      RTC_TimeStruct->RTC_H12 = 0x00; 802595a:	70cb      	strb	r3, [r1, #3] 802595c:	e01c      	b.n	8025998 <RTC_SetTime+0x58>                   ((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Seconds)) | \                   (((uint32_t)RTC_TimeStruct->RTC_H12) << 16));  }    /* Disable the write protection for RTC registers */  RTC->WPR = 0xCA; 802595e:	4c1d      	ldr	r4, [pc, #116]	; (80259d4 <RTC_SetTime+0x94>) 8025960:	23ca      	movs	r3, #202	; 0xca 8025962:	6263      	str	r3, [r4, #36]	; 0x24  RTC->WPR = 0x53; 8025964:	2353      	movs	r3, #83	; 0x53 8025966:	6263      	str	r3, [r4, #36]	; 0x24  /* Set Initialization mode */  if (RTC_EnterInitMode() == ERROR) 8025968:	f7ff ff7e 	bl	8025868 <RTC_EnterInitMode> 802596c:	b180      	cbz	r0, 8025990 <RTC_SetTime+0x50>    status = ERROR;  }   else  {    /* Set the RTC_TR register */    RTC->TR = (uint32_t)(tmpreg & RTC_TR_RESERVED_MASK); 802596e:	f005 357f 	and.w	r5, r5, #2139062143	; 0x7f7f7f7f 8025972:	f025 45fe 	bic.w	r5, r5, #2130706432	; 0x7f000000 8025976:	6025      	str	r5, [r4, #0]    /* Exit Initialization mode */    RTC_ExitInitMode();  8025978:	f7ff ff96 	bl	80258a8 <RTC_ExitInitMode>    /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */    if ((RTC->CR & RTC_CR_BYPSHAD) == RESET) 802597c:	68a3      	ldr	r3, [r4, #8] 802597e:	0699      	lsls	r1, r3, #26 8025980:	d405      	bmi.n	802598e <RTC_SetTime+0x4e>    {      if (RTC_WaitForSynchro() == ERROR) 8025982:	f7ff ffbb 	bl	80258fc <RTC_WaitForSynchro>  RTC->WPR = 0x53;  /* Set Initialization mode */  if (RTC_EnterInitMode() == ERROR)  {    status = ERROR; 8025986:	3000      	adds	r0, #0 8025988:	bf18      	it	ne 802598a:	2001      	movne	r0, #1 802598c:	e000      	b.n	8025990 <RTC_SetTime+0x50>        status = SUCCESS;      }    }    else    {      status = SUCCESS; 802598e:	2001      	movs	r0, #1    }  }  /* Enable the write protection for RTC registers */  RTC->WPR = 0xFF;  8025990:	4b10      	ldr	r3, [pc, #64]	; (80259d4 <RTC_SetTime+0x94>) 8025992:	22ff      	movs	r2, #255	; 0xff 8025994:	625a      	str	r2, [r3, #36]	; 0x24 8025996:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}    /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = (((uint32_t)(RTC_TimeStruct->RTC_Hours) << 16) | \             ((uint32_t)(RTC_TimeStruct->RTC_Minutes) << 8) | \ 8025998:	7865      	ldrb	r5, [r4, #1]  }    /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = (((uint32_t)(RTC_TimeStruct->RTC_Hours) << 16) | \ 802599a:	7823      	ldrb	r3, [r4, #0]             ((uint32_t)(RTC_TimeStruct->RTC_Minutes) << 8) | \ 802599c:	022d      	lsls	r5, r5, #8  }    /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = (((uint32_t)(RTC_TimeStruct->RTC_Hours) << 16) | \ 802599e:	ea45 4503 	orr.w	r5, r5, r3, lsl #16             ((uint32_t)(RTC_TimeStruct->RTC_Minutes) << 8) | \             ((uint32_t)RTC_TimeStruct->RTC_Seconds) | \ 80259a2:	78a3      	ldrb	r3, [r4, #2]    /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = (((uint32_t)(RTC_TimeStruct->RTC_Hours) << 16) | \             ((uint32_t)(RTC_TimeStruct->RTC_Minutes) << 8) | \ 80259a4:	431d      	orrs	r5, r3             ((uint32_t)RTC_TimeStruct->RTC_Seconds) | \             ((uint32_t)(RTC_TimeStruct->RTC_H12) << 16));  80259a6:	78e3      	ldrb	r3, [r4, #3]  }    /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = (((uint32_t)(RTC_TimeStruct->RTC_Hours) << 16) | \ 80259a8:	ea45 4503 	orr.w	r5, r5, r3, lsl #16 80259ac:	e7d7      	b.n	802595e <RTC_SetTime+0x1e>             ((uint32_t)RTC_TimeStruct->RTC_Seconds) | \             ((uint32_t)(RTC_TimeStruct->RTC_H12) << 16));   }    else  {    tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Hours) << 16) | \ 80259ae:	7820      	ldrb	r0, [r4, #0] 80259b0:	f7ff ff46 	bl	8025840 <RTC_ByteToBcd2> 80259b4:	4607      	mov	r7, r0                   ((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Minutes) << 8) | \ 80259b6:	7860      	ldrb	r0, [r4, #1] 80259b8:	f7ff ff42 	bl	8025840 <RTC_ByteToBcd2> 80259bc:	4606      	mov	r6, r0                   ((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Seconds)) | \ 80259be:	78a0      	ldrb	r0, [r4, #2] 80259c0:	f7ff ff3e 	bl	8025840 <RTC_ByteToBcd2>                   (((uint32_t)RTC_TimeStruct->RTC_H12) << 16)); 80259c4:	78e5      	ldrb	r5, [r4, #3]             ((uint32_t)RTC_TimeStruct->RTC_Seconds) | \             ((uint32_t)(RTC_TimeStruct->RTC_H12) << 16));   }    else  {    tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Hours) << 16) | \ 80259c6:	ea40 4005 	orr.w	r0, r0, r5, lsl #16                   ((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Minutes) << 8) | \ 80259ca:	ea40 4507 	orr.w	r5, r0, r7, lsl #16             ((uint32_t)RTC_TimeStruct->RTC_Seconds) | \             ((uint32_t)(RTC_TimeStruct->RTC_H12) << 16));   }    else  {    tmpreg = (uint32_t)(((uint32_t)RTC_ByteToBcd2(RTC_TimeStruct->RTC_Hours) << 16) | \ 80259ce:	ea45 2506 	orr.w	r5, r5, r6, lsl #8 80259d2:	e7c4      	b.n	802595e <RTC_SetTime+0x1e> 80259d4:	40002800 	.word	0x40002800080259d8 <RTC_GetTime>:  /* Check the parameters */  assert_param(IS_RTC_FORMAT(RTC_Format));  /* Get the RTC_TR register */  tmpreg = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);  80259d8:	4b0f      	ldr	r3, [pc, #60]	; (8025a18 <RTC_GetTime+0x40>) 80259da:	681b      	ldr	r3, [r3, #0]  * @param  RTC_TimeStruct: pointer to a RTC_TimeTypeDef structure that will   *                        contain the returned current time configuration.       * @retval None  */void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct){ 80259dc:	b570      	push	{r4, r5, r6, lr}  /* Get the RTC_TR register */  tmpreg = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);     /* Fill the structure fields with the read parameters */  RTC_TimeStruct->RTC_Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16); 80259de:	f3c3 4205 	ubfx	r2, r3, #16, #6  RTC_TimeStruct->RTC_Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >>8); 80259e2:	f3c3 2606 	ubfx	r6, r3, #8, #7  RTC_TimeStruct->RTC_Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU)); 80259e6:	f003 057f 	and.w	r5, r3, #127	; 0x7f  RTC_TimeStruct->RTC_H12 = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16);   80259ea:	f403 0380 	and.w	r3, r3, #4194304	; 0x400000 80259ee:	0c1b      	lsrs	r3, r3, #16  * @param  RTC_TimeStruct: pointer to a RTC_TimeTypeDef structure that will   *                        contain the returned current time configuration.       * @retval None  */void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct){ 80259f0:	460c      	mov	r4, r1  /* Get the RTC_TR register */  tmpreg = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);     /* Fill the structure fields with the read parameters */  RTC_TimeStruct->RTC_Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16); 80259f2:	700a      	strb	r2, [r1, #0]  RTC_TimeStruct->RTC_Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >>8); 80259f4:	704e      	strb	r6, [r1, #1]  RTC_TimeStruct->RTC_Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU)); 80259f6:	708d      	strb	r5, [r1, #2]  RTC_TimeStruct->RTC_H12 = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16);   80259f8:	70cb      	strb	r3, [r1, #3]  /* Check the input parameters format */  if (RTC_Format == RTC_Format_BIN) 80259fa:	b958      	cbnz	r0, 8025a14 <RTC_GetTime+0x3c>  {    /* Convert the structure parameters to Binary format */    RTC_TimeStruct->RTC_Hours = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Hours); 80259fc:	4610      	mov	r0, r2 80259fe:	f7ff ff2b 	bl	8025858 <RTC_Bcd2ToByte> 8025a02:	7020      	strb	r0, [r4, #0]    RTC_TimeStruct->RTC_Minutes = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Minutes); 8025a04:	4630      	mov	r0, r6 8025a06:	f7ff ff27 	bl	8025858 <RTC_Bcd2ToByte> 8025a0a:	7060      	strb	r0, [r4, #1]    RTC_TimeStruct->RTC_Seconds = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Seconds);    8025a0c:	4628      	mov	r0, r5 8025a0e:	f7ff ff23 	bl	8025858 <RTC_Bcd2ToByte> 8025a12:	70a0      	strb	r0, [r4, #2] 8025a14:	bd70      	pop	{r4, r5, r6, pc} 8025a16:	bf00      	nop 8025a18:	40002800 	.word	0x4000280008025a1c <RTC_SetDate>:  * @retval An ErrorStatus enumeration value:  *          - SUCCESS: RTC Date register is configured  *          - ERROR: RTC Date register is not configured  */ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct){ 8025a1c:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8025a1e:	460c      	mov	r4, r1 8025a20:	784b      	ldrb	r3, [r1, #1]  ErrorStatus status = ERROR;    /* Check the parameters */  assert_param(IS_RTC_FORMAT(RTC_Format));  if ((RTC_Format == RTC_Format_BIN) && ((RTC_DateStruct->RTC_Month & 0x10) == 0x10)) 8025a22:	2800      	cmp	r0, #0 8025a24:	d138      	bne.n	8025a98 <RTC_SetDate+0x7c> 8025a26:	f003 0210 	and.w	r2, r3, #16 8025a2a:	b2d2      	uxtb	r2, r2 8025a2c:	b30a      	cbz	r2, 8025a72 <RTC_SetDate+0x56>  {    RTC_DateStruct->RTC_Month = (RTC_DateStruct->RTC_Month & (uint32_t)~(0x10)) + 0x0A; 8025a2e:	f023 0310 	bic.w	r3, r3, #16 8025a32:	330a      	adds	r3, #10 8025a34:	704b      	strb	r3, [r1, #1] 8025a36:	e01c      	b.n	8025a72 <RTC_SetDate+0x56>              ((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Date)) | \              ((uint32_t)RTC_DateStruct->RTC_WeekDay << 13));  }  /* Disable the write protection for RTC registers */  RTC->WPR = 0xCA; 8025a38:	4c1c      	ldr	r4, [pc, #112]	; (8025aac <RTC_SetDate+0x90>) 8025a3a:	23ca      	movs	r3, #202	; 0xca 8025a3c:	6263      	str	r3, [r4, #36]	; 0x24  RTC->WPR = 0x53; 8025a3e:	2353      	movs	r3, #83	; 0x53 8025a40:	6263      	str	r3, [r4, #36]	; 0x24  /* Set Initialization mode */  if (RTC_EnterInitMode() == ERROR) 8025a42:	f7ff ff11 	bl	8025868 <RTC_EnterInitMode> 8025a46:	b180      	cbz	r0, 8025a6a <RTC_SetDate+0x4e>    status = ERROR;  }   else  {    /* Set the RTC_DR register */    RTC->DR = (uint32_t)(tmpreg & RTC_DR_RESERVED_MASK); 8025a48:	f025 457f 	bic.w	r5, r5, #4278190080	; 0xff000000 8025a4c:	f025 05c0 	bic.w	r5, r5, #192	; 0xc0 8025a50:	6065      	str	r5, [r4, #4]    /* Exit Initialization mode */    RTC_ExitInitMode();  8025a52:	f7ff ff29 	bl	80258a8 <RTC_ExitInitMode>    /* If  RTC_CR_BYPSHAD bit = 0, wait for synchro else this check is not needed */    if ((RTC->CR & RTC_CR_BYPSHAD) == RESET) 8025a56:	68a3      	ldr	r3, [r4, #8] 8025a58:	0698      	lsls	r0, r3, #26 8025a5a:	d405      	bmi.n	8025a68 <RTC_SetDate+0x4c>    {      if (RTC_WaitForSynchro() == ERROR) 8025a5c:	f7ff ff4e 	bl	80258fc <RTC_WaitForSynchro>  RTC->WPR = 0x53;  /* Set Initialization mode */  if (RTC_EnterInitMode() == ERROR)  {    status = ERROR; 8025a60:	3000      	adds	r0, #0 8025a62:	bf18      	it	ne 8025a64:	2001      	movne	r0, #1 8025a66:	e000      	b.n	8025a6a <RTC_SetDate+0x4e>        status = SUCCESS;      }    }    else    {      status = SUCCESS; 8025a68:	2001      	movs	r0, #1    }  }  /* Enable the write protection for RTC registers */  RTC->WPR = 0xFF;    8025a6a:	4b10      	ldr	r3, [pc, #64]	; (8025aac <RTC_SetDate+0x90>) 8025a6c:	22ff      	movs	r2, #255	; 0xff 8025a6e:	625a      	str	r2, [r3, #36]	; 0x24 8025a70:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}              ((uint32_t)RTC_DateStruct->RTC_Date) | \              (((uint32_t)RTC_DateStruct->RTC_WeekDay) << 13));   }    else  {    tmpreg = (((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Year) << 16) | \ 8025a72:	78e0      	ldrb	r0, [r4, #3] 8025a74:	f7ff fee4 	bl	8025840 <RTC_ByteToBcd2> 8025a78:	4607      	mov	r7, r0              ((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Month) << 8) | \ 8025a7a:	7860      	ldrb	r0, [r4, #1] 8025a7c:	f7ff fee0 	bl	8025840 <RTC_ByteToBcd2> 8025a80:	4606      	mov	r6, r0              ((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Date)) | \ 8025a82:	78a0      	ldrb	r0, [r4, #2] 8025a84:	f7ff fedc 	bl	8025840 <RTC_ByteToBcd2>              ((uint32_t)RTC_DateStruct->RTC_WeekDay << 13)); 8025a88:	7825      	ldrb	r5, [r4, #0]              ((uint32_t)RTC_DateStruct->RTC_Date) | \              (((uint32_t)RTC_DateStruct->RTC_WeekDay) << 13));   }    else  {    tmpreg = (((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Year) << 16) | \ 8025a8a:	ea40 3045 	orr.w	r0, r0, r5, lsl #13              ((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Month) << 8) | \ 8025a8e:	ea40 4507 	orr.w	r5, r0, r7, lsl #16              ((uint32_t)RTC_DateStruct->RTC_Date) | \              (((uint32_t)RTC_DateStruct->RTC_WeekDay) << 13));   }    else  {    tmpreg = (((uint32_t)RTC_ByteToBcd2(RTC_DateStruct->RTC_Year) << 16) | \ 8025a92:	ea45 2506 	orr.w	r5, r5, r6, lsl #8 8025a96:	e7cf      	b.n	8025a38 <RTC_SetDate+0x1c>  assert_param(IS_RTC_WEEKDAY(RTC_DateStruct->RTC_WeekDay));  /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = ((((uint32_t)RTC_DateStruct->RTC_Year) << 16) | \ 8025a98:	78cd      	ldrb	r5, [r1, #3]              (((uint32_t)RTC_DateStruct->RTC_Month) << 8) | \              ((uint32_t)RTC_DateStruct->RTC_Date) | \ 8025a9a:	788a      	ldrb	r2, [r1, #2]  /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = ((((uint32_t)RTC_DateStruct->RTC_Year) << 16) | \              (((uint32_t)RTC_DateStruct->RTC_Month) << 8) | \ 8025a9c:	021b      	lsls	r3, r3, #8  assert_param(IS_RTC_WEEKDAY(RTC_DateStruct->RTC_WeekDay));  /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = ((((uint32_t)RTC_DateStruct->RTC_Year) << 16) | \ 8025a9e:	ea43 4505 	orr.w	r5, r3, r5, lsl #16              (((uint32_t)RTC_DateStruct->RTC_Month) << 8) | \              ((uint32_t)RTC_DateStruct->RTC_Date) | \              (((uint32_t)RTC_DateStruct->RTC_WeekDay) << 13));  8025aa2:	780b      	ldrb	r3, [r1, #0]  /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = ((((uint32_t)RTC_DateStruct->RTC_Year) << 16) | \              (((uint32_t)RTC_DateStruct->RTC_Month) << 8) | \ 8025aa4:	4315      	orrs	r5, r2  assert_param(IS_RTC_WEEKDAY(RTC_DateStruct->RTC_WeekDay));  /* Check the input parameters format */  if (RTC_Format != RTC_Format_BIN)  {    tmpreg = ((((uint32_t)RTC_DateStruct->RTC_Year) << 16) | \ 8025aa6:	ea45 3543 	orr.w	r5, r5, r3, lsl #13 8025aaa:	e7c5      	b.n	8025a38 <RTC_SetDate+0x1c> 8025aac:	40002800 	.word	0x4000280008025ab0 <RTC_GetDate>:  /* Check the parameters */  assert_param(IS_RTC_FORMAT(RTC_Format));    /* Get the RTC_TR register */  tmpreg = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);  8025ab0:	4b0e      	ldr	r3, [pc, #56]	; (8025aec <RTC_GetDate+0x3c>) 8025ab2:	685b      	ldr	r3, [r3, #4]  * @param RTC_DateStruct: pointer to a RTC_DateTypeDef structure that will   *                        contain the returned current date configuration.       * @retval None  */void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct){ 8025ab4:	b570      	push	{r4, r5, r6, lr}    /* Get the RTC_TR register */  tmpreg = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);   /* Fill the structure fields with the read parameters */  RTC_DateStruct->RTC_Year = (uint8_t)((tmpreg & (RTC_DR_YT | RTC_DR_YU)) >> 16); 8025ab6:	f3c3 4207 	ubfx	r2, r3, #16, #8  RTC_DateStruct->RTC_Month = (uint8_t)((tmpreg & (RTC_DR_MT | RTC_DR_MU)) >> 8); 8025aba:	f3c3 2604 	ubfx	r6, r3, #8, #5  RTC_DateStruct->RTC_Date = (uint8_t)(tmpreg & (RTC_DR_DT | RTC_DR_DU)); 8025abe:	f003 053f 	and.w	r5, r3, #63	; 0x3f  RTC_DateStruct->RTC_WeekDay = (uint8_t)((tmpreg & (RTC_DR_WDU)) >> 13); 8025ac2:	f3c3 3342 	ubfx	r3, r3, #13, #3  * @param RTC_DateStruct: pointer to a RTC_DateTypeDef structure that will   *                        contain the returned current date configuration.       * @retval None  */void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct){ 8025ac6:	460c      	mov	r4, r1    /* Get the RTC_TR register */  tmpreg = (uint32_t)(RTC->DR & RTC_DR_RESERVED_MASK);   /* Fill the structure fields with the read parameters */  RTC_DateStruct->RTC_Year = (uint8_t)((tmpreg & (RTC_DR_YT | RTC_DR_YU)) >> 16); 8025ac8:	70ca      	strb	r2, [r1, #3]  RTC_DateStruct->RTC_Month = (uint8_t)((tmpreg & (RTC_DR_MT | RTC_DR_MU)) >> 8); 8025aca:	704e      	strb	r6, [r1, #1]  RTC_DateStruct->RTC_Date = (uint8_t)(tmpreg & (RTC_DR_DT | RTC_DR_DU)); 8025acc:	708d      	strb	r5, [r1, #2]  RTC_DateStruct->RTC_WeekDay = (uint8_t)((tmpreg & (RTC_DR_WDU)) >> 13); 8025ace:	700b      	strb	r3, [r1, #0]  /* Check the input parameters format */  if (RTC_Format == RTC_Format_BIN) 8025ad0:	b958      	cbnz	r0, 8025aea <RTC_GetDate+0x3a>  {    /* Convert the structure parameters to Binary format */    RTC_DateStruct->RTC_Year = (uint8_t)RTC_Bcd2ToByte(RTC_DateStruct->RTC_Year); 8025ad2:	4610      	mov	r0, r2 8025ad4:	f7ff fec0 	bl	8025858 <RTC_Bcd2ToByte> 8025ad8:	70e0      	strb	r0, [r4, #3]    RTC_DateStruct->RTC_Month = (uint8_t)RTC_Bcd2ToByte(RTC_DateStruct->RTC_Month); 8025ada:	4630      	mov	r0, r6 8025adc:	f7ff febc 	bl	8025858 <RTC_Bcd2ToByte> 8025ae0:	7060      	strb	r0, [r4, #1]    RTC_DateStruct->RTC_Date = (uint8_t)RTC_Bcd2ToByte(RTC_DateStruct->RTC_Date); 8025ae2:	4628      	mov	r0, r5 8025ae4:	f7ff feb8 	bl	8025858 <RTC_Bcd2ToByte> 8025ae8:	70a0      	strb	r0, [r4, #2] 8025aea:	bd70      	pop	{r4, r5, r6, pc} 8025aec:	40002800 	.word	0x4000280008025af0 <RTC_WriteBackupRegister>:  *                          specify the register.  * @param  Data: Data to be written in the specified RTC Backup data register.                       * @retval None  */void RTC_WriteBackupRegister(uint32_t RTC_BKP_DR, uint32_t Data){ 8025af0:	b082      	sub	sp, #8  __IO uint32_t tmp = 0; 8025af2:	2300      	movs	r3, #0 8025af4:	9301      	str	r3, [sp, #4]    /* Check the parameters */  assert_param(IS_RTC_BKP(RTC_BKP_DR));  tmp = RTC_BASE + 0x50; 8025af6:	4b05      	ldr	r3, [pc, #20]	; (8025b0c <RTC_WriteBackupRegister+0x1c>) 8025af8:	9301      	str	r3, [sp, #4]  tmp += (RTC_BKP_DR * 4); 8025afa:	9b01      	ldr	r3, [sp, #4] 8025afc:	eb03 0080 	add.w	r0, r3, r0, lsl #2 8025b00:	9001      	str	r0, [sp, #4]  /* Write the specified register */  *(__IO uint32_t *)tmp = (uint32_t)Data; 8025b02:	9b01      	ldr	r3, [sp, #4] 8025b04:	6019      	str	r1, [r3, #0]} 8025b06:	b002      	add	sp, #8 8025b08:	4770      	bx	lr 8025b0a:	bf00      	nop 8025b0c:	40002850 	.word	0x4000285008025b10 <RTC_ReadBackupRegister>:  *          This parameter can be: RTC_BKP_DRx where x can be from 0 to 19 to   *                          specify the register.                     * @retval None  */uint32_t RTC_ReadBackupRegister(uint32_t RTC_BKP_DR){ 8025b10:	b082      	sub	sp, #8  __IO uint32_t tmp = 0; 8025b12:	2300      	movs	r3, #0 8025b14:	9301      	str	r3, [sp, #4]    /* Check the parameters */  assert_param(IS_RTC_BKP(RTC_BKP_DR));  tmp = RTC_BASE + 0x50; 8025b16:	4b05      	ldr	r3, [pc, #20]	; (8025b2c <RTC_ReadBackupRegister+0x1c>) 8025b18:	9301      	str	r3, [sp, #4]  tmp += (RTC_BKP_DR * 4); 8025b1a:	9b01      	ldr	r3, [sp, #4] 8025b1c:	eb03 0080 	add.w	r0, r3, r0, lsl #2 8025b20:	9001      	str	r0, [sp, #4]    /* Read the specified register */  return (*(__IO uint32_t *)tmp); 8025b22:	9b01      	ldr	r3, [sp, #4] 8025b24:	6818      	ldr	r0, [r3, #0]} 8025b26:	b002      	add	sp, #8 8025b28:	4770      	bx	lr 8025b2a:	bf00      	nop 8025b2c:	40002850 	.word	0x4000285008025b30 <RTC_GetITStatus>:   /* Check the parameters */  assert_param(IS_RTC_GET_IT(RTC_IT));    /* Get the TAMPER Interrupt enable bit and pending bit */  tmpreg = (uint32_t)(RTC->TAFCR & (RTC_TAFCR_TAMPIE)); 8025b30:	4b0a      	ldr	r3, [pc, #40]	; (8025b5c <RTC_GetITStatus+0x2c>) 8025b32:	6c1a      	ldr	r2, [r3, #64]	; 0x40  *            @arg RTC_IT_ALRA: Alarm A interrupt   *            @arg RTC_IT_TAMP1: Tamper 1 event interrupt   * @retval The new state of RTC_IT (SET or RESET).  */ITStatus RTC_GetITStatus(uint32_t RTC_IT){ 8025b34:	b510      	push	{r4, lr}    /* Get the TAMPER Interrupt enable bit and pending bit */  tmpreg = (uint32_t)(RTC->TAFCR & (RTC_TAFCR_TAMPIE));   /* Get the Interrupt enable Status */  enablestatus = (uint32_t)((RTC->CR & RTC_IT) | (tmpreg & (RTC_IT >> 15))); 8025b36:	689c      	ldr	r4, [r3, #8]    /* Get the Interrupt pending bit */  tmpreg = (uint32_t)((RTC->ISR & (uint32_t)(RTC_IT >> 4))); 8025b38:	68d9      	ldr	r1, [r3, #12]   /* Check the parameters */  assert_param(IS_RTC_GET_IT(RTC_IT));    /* Get the TAMPER Interrupt enable bit and pending bit */  tmpreg = (uint32_t)(RTC->TAFCR & (RTC_TAFCR_TAMPIE)); 8025b3a:	f002 0204 	and.w	r2, r2, #4   /* Get the Interrupt enable Status */  enablestatus = (uint32_t)((RTC->CR & RTC_IT) | (tmpreg & (RTC_IT >> 15))); 8025b3e:	ea02 32d0 	and.w	r2, r2, r0, lsr #15 8025b42:	ea00 0304 	and.w	r3, r0, r4    /* Get the Interrupt pending bit */  tmpreg = (uint32_t)((RTC->ISR & (uint32_t)(RTC_IT >> 4)));    /* Get the status of the Interrupt */  if ((enablestatus != (uint32_t)RESET) && ((tmpreg & 0x0000FFFF) != (uint32_t)RESET)) 8025b46:	4313      	orrs	r3, r2 8025b48:	d006      	beq.n	8025b58 <RTC_GetITStatus+0x28>   /* Get the Interrupt enable Status */  enablestatus = (uint32_t)((RTC->CR & RTC_IT) | (tmpreg & (RTC_IT >> 15)));    /* Get the Interrupt pending bit */  tmpreg = (uint32_t)((RTC->ISR & (uint32_t)(RTC_IT >> 4))); 8025b4a:	b28b      	uxth	r3, r1    /* Get the status of the Interrupt */  if ((enablestatus != (uint32_t)RESET) && ((tmpreg & 0x0000FFFF) != (uint32_t)RESET)) 8025b4c:	ea13 1310 	ands.w	r3, r3, r0, lsr #4  {    bitstatus = SET; 8025b50:	bf0c      	ite	eq 8025b52:	2000      	moveq	r0, #0 8025b54:	2001      	movne	r0, #1 8025b56:	bd10      	pop	{r4, pc}  }  else  {    bitstatus = RESET; 8025b58:	4618      	mov	r0, r3  }  return bitstatus;} 8025b5a:	bd10      	pop	{r4, pc} 8025b5c:	40002800 	.word	0x4000280008025b60 <RTC_ClearITPendingBit>:  /* Get the RTC_ISR Interrupt pending bits mask */  tmpreg = (uint32_t)(RTC_IT >> 4);  /* Clear the interrupt pending bits in the RTC_ISR register */  RTC->ISR = (uint32_t)((uint32_t)(~((tmpreg | RTC_ISR_INIT)& 0x0000FFFF) | (uint32_t)(RTC->ISR & RTC_ISR_INIT)));  8025b60:	4b05      	ldr	r3, [pc, #20]	; (8025b78 <RTC_ClearITPendingBit+0x18>) 8025b62:	68da      	ldr	r2, [r3, #12] 8025b64:	f3c0 100f 	ubfx	r0, r0, #4, #16 8025b68:	f040 0080 	orr.w	r0, r0, #128	; 0x80 8025b6c:	f002 0280 	and.w	r2, r2, #128	; 0x80 8025b70:	ea62 0200 	orn	r2, r2, r0 8025b74:	60da      	str	r2, [r3, #12] 8025b76:	4770      	bx	lr 8025b78:	40002800 	.word	0x4000280008025b7c <SYSCFG_ETH_MediaInterfaceConfig>:  */void SYSCFG_ETH_MediaInterfaceConfig(uint32_t SYSCFG_ETH_MediaInterface) {   assert_param(IS_SYSCFG_ETH_MEDIA_INTERFACE(SYSCFG_ETH_MediaInterface));   /* Configure MII_RMII selection bit */   *(__IO uint32_t *) PMC_MII_RMII_SEL_BB = SYSCFG_ETH_MediaInterface;  8025b7c:	4b01      	ldr	r3, [pc, #4]	; (8025b84 <SYSCFG_ETH_MediaInterfaceConfig+0x8>) 8025b7e:	6018      	str	r0, [r3, #0] 8025b80:	4770      	bx	lr 8025b82:	bf00      	nop 8025b84:	422700dc 	.word	0x422700dc08025b88 <TIM_ClearITPendingBit>:{  /* Check the parameters */  assert_param(IS_TIM_ALL_PERIPH(TIMx));  /* Clear the IT pending Bit */  TIMx->SR = (uint16_t)~TIM_IT; 8025b88:	43c9      	mvns	r1, r1 8025b8a:	8201      	strh	r1, [r0, #16] 8025b8c:	4770      	bx	lr 8025b8e:	0000      	movs	r0, r008025b90 <USART_DeInit>:  * @param  USARTx: where x can be 1, 2, 3, 4, 5 or 6 to select the USART or   *         UART peripheral.  * @retval None  */void USART_DeInit(USART_TypeDef* USARTx){ 8025b90:	b508      	push	{r3, lr}  /* Check the parameters */  assert_param(IS_USART_ALL_PERIPH(USARTx));  if (USARTx == USART1) 8025b92:	4b23      	ldr	r3, [pc, #140]	; (8025c20 <USART_DeInit+0x90>) 8025b94:	4298      	cmp	r0, r3 8025b96:	d105      	bne.n	8025ba4 <USART_DeInit+0x14>  {    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE); 8025b98:	2010      	movs	r0, #16 8025b9a:	2101      	movs	r1, #1 8025b9c:	f7ff fe1e 	bl	80257dc <RCC_APB2PeriphResetCmd>    RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE); 8025ba0:	2010      	movs	r0, #16 8025ba2:	e037      	b.n	8025c14 <USART_DeInit+0x84>  }  else if (USARTx == USART2) 8025ba4:	4b1f      	ldr	r3, [pc, #124]	; (8025c24 <USART_DeInit+0x94>) 8025ba6:	4298      	cmp	r0, r3 8025ba8:	d107      	bne.n	8025bba <USART_DeInit+0x2a>  {    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE); 8025baa:	f44f 3000 	mov.w	r0, #131072	; 0x20000 8025bae:	2101      	movs	r1, #1 8025bb0:	f7ff fe08 	bl	80257c4 <RCC_APB1PeriphResetCmd>    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE); 8025bb4:	f44f 3000 	mov.w	r0, #131072	; 0x20000 8025bb8:	e009      	b.n	8025bce <USART_DeInit+0x3e>  }  else if (USARTx == USART3) 8025bba:	4b1b      	ldr	r3, [pc, #108]	; (8025c28 <USART_DeInit+0x98>) 8025bbc:	4298      	cmp	r0, r3 8025bbe:	d10b      	bne.n	8025bd8 <USART_DeInit+0x48>  {    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE); 8025bc0:	f44f 2080 	mov.w	r0, #262144	; 0x40000 8025bc4:	2101      	movs	r1, #1 8025bc6:	f7ff fdfd 	bl	80257c4 <RCC_APB1PeriphResetCmd>    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE); 8025bca:	f44f 2080 	mov.w	r0, #262144	; 0x40000 8025bce:	2100      	movs	r1, #0    {       RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, ENABLE);      RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, DISABLE);    }  }} 8025bd0:	e8bd 4008 	ldmia.w	sp!, {r3, lr}    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE);  }  else if (USARTx == USART3)  {    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE);    RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE); 8025bd4:	f7ff bdf6 	b.w	80257c4 <RCC_APB1PeriphResetCmd>  }      else if (USARTx == UART4) 8025bd8:	4b14      	ldr	r3, [pc, #80]	; (8025c2c <USART_DeInit+0x9c>) 8025bda:	4298      	cmp	r0, r3 8025bdc:	d107      	bne.n	8025bee <USART_DeInit+0x5e>  {    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE); 8025bde:	f44f 2000 	mov.w	r0, #524288	; 0x80000 8025be2:	2101      	movs	r1, #1 8025be4:	f7ff fdee 	bl	80257c4 <RCC_APB1PeriphResetCmd>    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE); 8025be8:	f44f 2000 	mov.w	r0, #524288	; 0x80000 8025bec:	e7ef      	b.n	8025bce <USART_DeInit+0x3e>  }  else if (USARTx == UART5) 8025bee:	4b10      	ldr	r3, [pc, #64]	; (8025c30 <USART_DeInit+0xa0>) 8025bf0:	4298      	cmp	r0, r3 8025bf2:	d107      	bne.n	8025c04 <USART_DeInit+0x74>  {    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE); 8025bf4:	f44f 1080 	mov.w	r0, #1048576	; 0x100000 8025bf8:	2101      	movs	r1, #1 8025bfa:	f7ff fde3 	bl	80257c4 <RCC_APB1PeriphResetCmd>    RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE); 8025bfe:	f44f 1080 	mov.w	r0, #1048576	; 0x100000 8025c02:	e7e4      	b.n	8025bce <USART_DeInit+0x3e>  }       else  {    if (USARTx == USART6) 8025c04:	4b0b      	ldr	r3, [pc, #44]	; (8025c34 <USART_DeInit+0xa4>) 8025c06:	4298      	cmp	r0, r3 8025c08:	d109      	bne.n	8025c1e <USART_DeInit+0x8e>    {       RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, ENABLE); 8025c0a:	2020      	movs	r0, #32 8025c0c:	2101      	movs	r1, #1 8025c0e:	f7ff fde5 	bl	80257dc <RCC_APB2PeriphResetCmd>      RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, DISABLE); 8025c12:	2020      	movs	r0, #32 8025c14:	2100      	movs	r1, #0    }  }} 8025c16:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  else  {    if (USARTx == USART6)    {       RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, ENABLE);      RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART6, DISABLE); 8025c1a:	f7ff bddf 	b.w	80257dc <RCC_APB2PeriphResetCmd> 8025c1e:	bd08      	pop	{r3, pc} 8025c20:	40011000 	.word	0x40011000 8025c24:	40004400 	.word	0x40004400 8025c28:	40004800 	.word	0x40004800 8025c2c:	40004c00 	.word	0x40004c00 8025c30:	40005000 	.word	0x40005000 8025c34:	40011400 	.word	0x4001140008025c38 <USART_Init>:  {    assert_param(IS_USART_1236_PERIPH(USARTx));  }/*---------------------------- USART CR2 Configuration -----------------------*/  tmpreg = USARTx->CR2; 8025c38:	8a03      	ldrh	r3, [r0, #16]  /* Clear STOP[13:12] bits */  tmpreg &= (uint32_t)~((uint32_t)USART_CR2_STOP);  /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit :      Set STOP[13:12] bits according to USART_StopBits value */  tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits; 8025c3a:	88ca      	ldrh	r2, [r1, #6]  {    assert_param(IS_USART_1236_PERIPH(USARTx));  }/*---------------------------- USART CR2 Configuration -----------------------*/  tmpreg = USARTx->CR2; 8025c3c:	b29b      	uxth	r3, r3  /* Clear STOP[13:12] bits */  tmpreg &= (uint32_t)~((uint32_t)USART_CR2_STOP); 8025c3e:	f423 5340 	bic.w	r3, r3, #12288	; 0x3000  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure that contains  *         the configuration information for the specified USART peripheral.  * @retval None  */void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct){ 8025c42:	b530      	push	{r4, r5, lr}  /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit :      Set STOP[13:12] bits according to USART_StopBits value */  tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits;    /* Write to USART CR2 */  USARTx->CR2 = (uint16_t)tmpreg; 8025c44:	4313      	orrs	r3, r2  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure that contains  *         the configuration information for the specified USART peripheral.  * @retval None  */void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct){ 8025c46:	460d      	mov	r5, r1  /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit :      Set STOP[13:12] bits according to USART_StopBits value */  tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits;    /* Write to USART CR2 */  USARTx->CR2 = (uint16_t)tmpreg; 8025c48:	8203      	strh	r3, [r0, #16]/*---------------------------- USART CR1 Configuration -----------------------*/  tmpreg = USARTx->CR1; 8025c4a:	8983      	ldrh	r3, [r0, #12]  /* Configure the USART Word Length, Parity and mode:      Set the M bits according to USART_WordLength value      Set PCE and PS bits according to USART_Parity value     Set TE and RE bits according to USART_Mode value */  tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity | 8025c4c:	8909      	ldrh	r1, [r1, #8] 8025c4e:	88aa      	ldrh	r2, [r5, #4]/*---------------------------- USART CR1 Configuration -----------------------*/  tmpreg = USARTx->CR1;  /* Clear M, PCE, PS, TE and RE bits */  tmpreg &= (uint32_t)~((uint32_t)CR1_CLEAR_MASK); 8025c50:	f423 53b0 	bic.w	r3, r3, #5632	; 0x1600  /* Configure the USART Word Length, Parity and mode:      Set the M bits according to USART_WordLength value      Set PCE and PS bits according to USART_Parity value     Set TE and RE bits according to USART_Mode value */  tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity | 8025c54:	430a      	orrs	r2, r1 8025c56:	8969      	ldrh	r1, [r5, #10]/*---------------------------- USART CR1 Configuration -----------------------*/  tmpreg = USARTx->CR1;  /* Clear M, PCE, PS, TE and RE bits */  tmpreg &= (uint32_t)~((uint32_t)CR1_CLEAR_MASK); 8025c58:	f023 030c 	bic.w	r3, r3, #12 8025c5c:	041b      	lsls	r3, r3, #16  /* Configure the USART Word Length, Parity and mode:      Set the M bits according to USART_WordLength value      Set PCE and PS bits according to USART_Parity value     Set TE and RE bits according to USART_Mode value */  tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity | 8025c5e:	430a      	orrs	r2, r1/*---------------------------- USART CR1 Configuration -----------------------*/  tmpreg = USARTx->CR1;  /* Clear M, PCE, PS, TE and RE bits */  tmpreg &= (uint32_t)~((uint32_t)CR1_CLEAR_MASK); 8025c60:	0c1b      	lsrs	r3, r3, #16  /* Configure the USART Word Length, Parity and mode:      Set the M bits according to USART_WordLength value      Set PCE and PS bits according to USART_Parity value     Set TE and RE bits according to USART_Mode value */  tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity | 8025c62:	b292      	uxth	r2, r2            USART_InitStruct->USART_Mode;  /* Write to USART CR1 */  USARTx->CR1 = (uint16_t)tmpreg; 8025c64:	4313      	orrs	r3, r2 8025c66:	8183      	strh	r3, [r0, #12]/*---------------------------- USART CR3 Configuration -----------------------*/    tmpreg = USARTx->CR3; 8025c68:	8a83      	ldrh	r3, [r0, #20]  /* Clear CTSE and RTSE bits */  tmpreg &= (uint32_t)~((uint32_t)CR3_CLEAR_MASK);  /* Configure the USART HFC :       Set CTSE and RTSE bits according to USART_HardwareFlowControl value */  tmpreg |= USART_InitStruct->USART_HardwareFlowControl; 8025c6a:	89aa      	ldrh	r2, [r5, #12]  /* Write to USART CR1 */  USARTx->CR1 = (uint16_t)tmpreg;/*---------------------------- USART CR3 Configuration -----------------------*/    tmpreg = USARTx->CR3; 8025c6c:	b29b      	uxth	r3, r3  /* Clear CTSE and RTSE bits */  tmpreg &= (uint32_t)~((uint32_t)CR3_CLEAR_MASK); 8025c6e:	f423 7340 	bic.w	r3, r3, #768	; 0x300  /* Configure the USART HFC :       Set CTSE and RTSE bits according to USART_HardwareFlowControl value */  tmpreg |= USART_InitStruct->USART_HardwareFlowControl;  /* Write to USART CR3 */  USARTx->CR3 = (uint16_t)tmpreg; 8025c72:	4313      	orrs	r3, r2  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure that contains  *         the configuration information for the specified USART peripheral.  * @retval None  */void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct){ 8025c74:	b085      	sub	sp, #20  /* Configure the USART HFC :       Set CTSE and RTSE bits according to USART_HardwareFlowControl value */  tmpreg |= USART_InitStruct->USART_HardwareFlowControl;  /* Write to USART CR3 */  USARTx->CR3 = (uint16_t)tmpreg; 8025c76:	8283      	strh	r3, [r0, #20]  * @param  USART_InitStruct: pointer to a USART_InitTypeDef structure that contains  *         the configuration information for the specified USART peripheral.  * @retval None  */void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct){ 8025c78:	4604      	mov	r4, r0  /* Write to USART CR3 */  USARTx->CR3 = (uint16_t)tmpreg;/*---------------------------- USART BRR Configuration -----------------------*/  /* Configure the USART Baud Rate */  RCC_GetClocksFreq(&RCC_ClocksStatus); 8025c7a:	4668      	mov	r0, sp 8025c7c:	f7ff fd02 	bl	8025684 <RCC_GetClocksFreq>  if ((USARTx == USART1) || (USARTx == USART6)) 8025c80:	4b19      	ldr	r3, [pc, #100]	; (8025ce8 <USART_Init+0xb0>) 8025c82:	429c      	cmp	r4, r3 8025c84:	d003      	beq.n	8025c8e <USART_Init+0x56> 8025c86:	f503 6380 	add.w	r3, r3, #1024	; 0x400 8025c8a:	429c      	cmp	r4, r3 8025c8c:	d101      	bne.n	8025c92 <USART_Init+0x5a>  {    apbclock = RCC_ClocksStatus.PCLK2_Frequency; 8025c8e:	9b03      	ldr	r3, [sp, #12] 8025c90:	e000      	b.n	8025c94 <USART_Init+0x5c>  }  else  {    apbclock = RCC_ClocksStatus.PCLK1_Frequency; 8025c92:	9b02      	ldr	r3, [sp, #8]  }    /* Determine the integer part */  if ((USARTx->CR1 & USART_CR1_OVER8) != 0) 8025c94:	89a2      	ldrh	r2, [r4, #12] 8025c96:	b212      	sxth	r2, r2 8025c98:	2a00      	cmp	r2, #0 8025c9a:	f04f 0119 	mov.w	r1, #25 8025c9e:	682a      	ldr	r2, [r5, #0]  {    /* Integer part computing in case Oversampling mode is 8 Samples */    integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate)));     8025ca0:	fb01 f103 	mul.w	r1, r1, r3  {    apbclock = RCC_ClocksStatus.PCLK1_Frequency;  }    /* Determine the integer part */  if ((USARTx->CR1 & USART_CR1_OVER8) != 0) 8025ca4:	da01      	bge.n	8025caa <USART_Init+0x72>  {    /* Integer part computing in case Oversampling mode is 8 Samples */    integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate)));     8025ca6:	0052      	lsls	r2, r2, #1 8025ca8:	e000      	b.n	8025cac <USART_Init+0x74>  }  else /* if ((USARTx->CR1 & USART_CR1_OVER8) == 0) */  {    /* Integer part computing in case Oversampling mode is 16 Samples */    integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));     8025caa:	0092      	lsls	r2, r2, #2  }  tmpreg = (integerdivider / 100) << 4; 8025cac:	2364      	movs	r3, #100	; 0x64    integerdivider = ((25 * apbclock) / (2 * (USART_InitStruct->USART_BaudRate)));      }  else /* if ((USARTx->CR1 & USART_CR1_OVER8) == 0) */  {    /* Integer part computing in case Oversampling mode is 16 Samples */    integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));     8025cae:	fbb1 f1f2 	udiv	r1, r1, r2  }  tmpreg = (integerdivider / 100) << 4; 8025cb2:	fbb1 f2f3 	udiv	r2, r1, r3 8025cb6:	0112      	lsls	r2, r2, #4  /* Determine the fractional part */  fractionaldivider = integerdivider - (100 * (tmpreg >> 4)); 8025cb8:	0910      	lsrs	r0, r2, #4 8025cba:	fb03 1110 	mls	r1, r3, r0, r1  /* Implement the fractional part in the register */  if ((USARTx->CR1 & USART_CR1_OVER8) != 0) 8025cbe:	89a0      	ldrh	r0, [r4, #12] 8025cc0:	b200      	sxth	r0, r0 8025cc2:	2800      	cmp	r0, #0 8025cc4:	da06      	bge.n	8025cd4 <USART_Init+0x9c>  {    tmpreg |= ((((fractionaldivider * 8) + 50) / 100)) & ((uint8_t)0x07); 8025cc6:	00c9      	lsls	r1, r1, #3 8025cc8:	3132      	adds	r1, #50	; 0x32 8025cca:	fbb1 f3f3 	udiv	r3, r1, r3 8025cce:	f003 0307 	and.w	r3, r3, #7 8025cd2:	e005      	b.n	8025ce0 <USART_Init+0xa8>  }  else /* if ((USARTx->CR1 & USART_CR1_OVER8) == 0) */  {    tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F); 8025cd4:	0109      	lsls	r1, r1, #4 8025cd6:	3132      	adds	r1, #50	; 0x32 8025cd8:	fbb1 f3f3 	udiv	r3, r1, r3 8025cdc:	f003 030f 	and.w	r3, r3, #15 8025ce0:	431a      	orrs	r2, r3  }    /* Write to USART BRR register */  USARTx->BRR = (uint16_t)tmpreg; 8025ce2:	8122      	strh	r2, [r4, #8]} 8025ce4:	b005      	add	sp, #20 8025ce6:	bd30      	pop	{r4, r5, pc} 8025ce8:	40011000 	.word	0x4001100008025cec <USART_Cmd>:  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE)  {    /* Enable the selected USART by setting the UE bit in the CR1 register */    USARTx->CR1 |= USART_CR1_UE; 8025cec:	8983      	ldrh	r3, [r0, #12]{  /* Check the parameters */  assert_param(IS_USART_ALL_PERIPH(USARTx));  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE) 8025cee:	b119      	cbz	r1, 8025cf8 <USART_Cmd+0xc>  {    /* Enable the selected USART by setting the UE bit in the CR1 register */    USARTx->CR1 |= USART_CR1_UE; 8025cf0:	b29b      	uxth	r3, r3 8025cf2:	f443 5300 	orr.w	r3, r3, #8192	; 0x2000 8025cf6:	e003      	b.n	8025d00 <USART_Cmd+0x14>  }  else  {    /* Disable the selected USART by clearing the UE bit in the CR1 register */    USARTx->CR1 &= (uint16_t)~((uint16_t)USART_CR1_UE); 8025cf8:	f423 5300 	bic.w	r3, r3, #8192	; 0x2000 8025cfc:	041b      	lsls	r3, r3, #16 8025cfe:	0c1b      	lsrs	r3, r3, #16 8025d00:	8183      	strh	r3, [r0, #12] 8025d02:	4770      	bx	lr08025d04 <USART_ITConfig>:  }       usartxbase = (uint32_t)USARTx;  /* Get the USART register index */  usartreg = (((uint8_t)USART_IT) >> 0x05); 8025d04:	f3c1 1342 	ubfx	r3, r1, #5, #3  * @param  NewState: new state of the specified USARTx interrupts.  *          This parameter can be: ENABLE or DISABLE.  * @retval None  */void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState){ 8025d08:	b510      	push	{r4, lr}  /* Get the USART register index */  usartreg = (((uint8_t)USART_IT) >> 0x05);  /* Get the interrupt position */  itpos = USART_IT & IT_MASK;  itmask = (((uint32_t)0x01) << itpos); 8025d0a:	2401      	movs	r4, #1 8025d0c:	f001 011f 	and.w	r1, r1, #31      if (usartreg == 0x01) /* The IT is in CR1 register */ 8025d10:	42a3      	cmp	r3, r4  /* Get the USART register index */  usartreg = (((uint8_t)USART_IT) >> 0x05);  /* Get the interrupt position */  itpos = USART_IT & IT_MASK;  itmask = (((uint32_t)0x01) << itpos); 8025d12:	fa04 f101 	lsl.w	r1, r4, r1      if (usartreg == 0x01) /* The IT is in CR1 register */ 8025d16:	d101      	bne.n	8025d1c <USART_ITConfig+0x18>  {    usartxbase += 0x0C; 8025d18:	300c      	adds	r0, #12 8025d1a:	e004      	b.n	8025d26 <USART_ITConfig+0x22>  }  else if (usartreg == 0x02) /* The IT is in CR2 register */ 8025d1c:	2b02      	cmp	r3, #2 8025d1e:	d101      	bne.n	8025d24 <USART_ITConfig+0x20>  {    usartxbase += 0x10; 8025d20:	3010      	adds	r0, #16 8025d22:	e000      	b.n	8025d26 <USART_ITConfig+0x22>  }  else /* The IT is in CR3 register */  {    usartxbase += 0x14;  8025d24:	3014      	adds	r0, #20  }  if (NewState != DISABLE)  {    *(__IO uint32_t*)usartxbase  |= itmask; 8025d26:	6803      	ldr	r3, [r0, #0]  }  else /* The IT is in CR3 register */  {    usartxbase += 0x14;   }  if (NewState != DISABLE) 8025d28:	b10a      	cbz	r2, 8025d2e <USART_ITConfig+0x2a>  {    *(__IO uint32_t*)usartxbase  |= itmask; 8025d2a:	4319      	orrs	r1, r3 8025d2c:	e001      	b.n	8025d32 <USART_ITConfig+0x2e>  }  else  {    *(__IO uint32_t*)usartxbase &= ~itmask; 8025d2e:	ea23 0101 	bic.w	r1, r3, r1 8025d32:	6001      	str	r1, [r0, #0] 8025d34:	bd10      	pop	{r4, pc}08025d36 <USART_GetITStatus>:  *            @arg USART_IT_FE:   Framing Error interrupt  *            @arg USART_IT_PE:   Parity Error interrupt  * @retval The new state of USART_IT (SET or RESET).  */ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT){ 8025d36:	b510      	push	{r4, lr}  {    assert_param(IS_USART_1236_PERIPH(USARTx));  }       /* Get the USART register index */  usartreg = (((uint8_t)USART_IT) >> 0x05); 8025d38:	f3c1 1442 	ubfx	r4, r1, #5, #3  /* Get the interrupt position */  itmask = USART_IT & IT_MASK;  itmask = (uint32_t)0x01 << itmask; 8025d3c:	2201      	movs	r2, #1 8025d3e:	f001 031f 	and.w	r3, r1, #31    if (usartreg == 0x01) /* The IT  is in CR1 register */ 8025d42:	2c01      	cmp	r4, #1      /* Get the USART register index */  usartreg = (((uint8_t)USART_IT) >> 0x05);  /* Get the interrupt position */  itmask = USART_IT & IT_MASK;  itmask = (uint32_t)0x01 << itmask; 8025d44:	fa02 f203 	lsl.w	r2, r2, r3    if (usartreg == 0x01) /* The IT  is in CR1 register */ 8025d48:	d101      	bne.n	8025d4e <USART_GetITStatus+0x18>  {    itmask &= USARTx->CR1; 8025d4a:	8983      	ldrh	r3, [r0, #12] 8025d4c:	e003      	b.n	8025d56 <USART_GetITStatus+0x20>  }  else if (usartreg == 0x02) /* The IT  is in CR2 register */ 8025d4e:	2c02      	cmp	r4, #2  {    itmask &= USARTx->CR2; 8025d50:	bf0c      	ite	eq 8025d52:	8a03      	ldrheq	r3, [r0, #16]  }  else /* The IT  is in CR3 register */  {    itmask &= USARTx->CR3; 8025d54:	8a83      	ldrhne	r3, [r0, #20] 8025d56:	b29b      	uxth	r3, r3 8025d58:	4013      	ands	r3, r2  }    bitpos = USART_IT >> 0x08;  bitpos = (uint32_t)0x01 << bitpos;  bitpos &= USARTx->SR; 8025d5a:	8802      	ldrh	r2, [r0, #0] 8025d5c:	b292      	uxth	r2, r2  if ((itmask != (uint16_t)RESET)&&(bitpos != (uint16_t)RESET)) 8025d5e:	b143      	cbz	r3, 8025d72 <USART_GetITStatus+0x3c>  {    itmask &= USARTx->CR3;  }    bitpos = USART_IT >> 0x08;  bitpos = (uint32_t)0x01 << bitpos; 8025d60:	2301      	movs	r3, #1 8025d62:	0a09      	lsrs	r1, r1, #8 8025d64:	fa03 f101 	lsl.w	r1, r3, r1  bitpos &= USARTx->SR;  if ((itmask != (uint16_t)RESET)&&(bitpos != (uint16_t)RESET)) 8025d68:	4211      	tst	r1, r2  {    bitstatus = SET; 8025d6a:	bf0c      	ite	eq 8025d6c:	2000      	moveq	r0, #0 8025d6e:	2001      	movne	r0, #1 8025d70:	bd10      	pop	{r4, pc}  }  else  {    bitstatus = RESET; 8025d72:	4618      	mov	r0, r3  }    return bitstatus;  } 8025d74:	bd10      	pop	{r4, pc}08025d76 <USART_ClearITPendingBit>:  {    assert_param(IS_USART_1236_PERIPH(USARTx));  }       bitpos = USART_IT >> 0x08;  itmask = ((uint16_t)0x01 << (uint16_t)bitpos); 8025d76:	0a09      	lsrs	r1, r1, #8 8025d78:	2301      	movs	r3, #1 8025d7a:	fa03 f301 	lsl.w	r3, r3, r1  USARTx->SR = (uint16_t)~itmask; 8025d7e:	43db      	mvns	r3, r3 8025d80:	8003      	strh	r3, [r0, #0] 8025d82:	4770      	bx	lr08025d84 <SystemInit>:    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */  #endif  /* Reset the RCC clock configuration to the default reset state ------------*/  /* Set HSION bit */  RCC->CR |= (uint32_t)0x00000001; 8025d84:	4b35      	ldr	r3, [pc, #212]	; (8025e5c <SystemInit+0xd8>) 8025d86:	681a      	ldr	r2, [r3, #0] 8025d88:	f042 0201 	orr.w	r2, r2, #1 8025d8c:	601a      	str	r2, [r3, #0]  /* Reset CFGR register */  RCC->CFGR = 0x00000000; 8025d8e:	2200      	movs	r2, #0 8025d90:	609a      	str	r2, [r3, #8]  /* Reset HSEON, CSSON and PLLON bits */  RCC->CR &= (uint32_t)0xFEF6FFFF; 8025d92:	6819      	ldr	r1, [r3, #0] 8025d94:	f021 7184 	bic.w	r1, r1, #17301504	; 0x1080000 8025d98:	f421 3180 	bic.w	r1, r1, #65536	; 0x10000 8025d9c:	6019      	str	r1, [r3, #0]  /* Reset PLLCFGR register */  RCC->PLLCFGR = 0x24003010; 8025d9e:	4930      	ldr	r1, [pc, #192]	; (8025e60 <SystemInit+0xdc>) 8025da0:	6059      	str	r1, [r3, #4]  /* Reset HSEBYP bit */  RCC->CR &= (uint32_t)0xFFFBFFFF; 8025da2:	6819      	ldr	r1, [r3, #0]  *         SystemFrequency variable.  * @param  None  * @retval None  */void SystemInit(void){ 8025da4:	b082      	sub	sp, #8  /* Reset PLLCFGR register */  RCC->PLLCFGR = 0x24003010;  /* Reset HSEBYP bit */  RCC->CR &= (uint32_t)0xFFFBFFFF; 8025da6:	f421 2180 	bic.w	r1, r1, #262144	; 0x40000 8025daa:	6019      	str	r1, [r3, #0]  /* Disable all interrupts */  RCC->CIR = 0x00000000; 8025dac:	60da      	str	r2, [r3, #12]static void SetSysClock(void){/******************************************************************************//*            PLL (clocked by HSE) used as System clock source                *//******************************************************************************/  __IO uint32_t StartUpCounter = 0, HSEStatus = 0; 8025dae:	9200      	str	r2, [sp, #0] 8025db0:	9201      	str	r2, [sp, #4]    /* Enable HSE */  RCC->CR |= ((uint32_t)RCC_CR_HSEON); 8025db2:	681a      	ldr	r2, [r3, #0] 8025db4:	f442 3280 	orr.w	r2, r2, #65536	; 0x10000 8025db8:	601a      	str	r2, [r3, #0]   /* Wait till HSE is ready and if Time out is reached exit */  do  {    HSEStatus = RCC->CR & RCC_CR_HSERDY; 8025dba:	681a      	ldr	r2, [r3, #0] 8025dbc:	f402 3200 	and.w	r2, r2, #131072	; 0x20000 8025dc0:	9201      	str	r2, [sp, #4]    StartUpCounter++; 8025dc2:	9a00      	ldr	r2, [sp, #0] 8025dc4:	3201      	adds	r2, #1 8025dc6:	9200      	str	r2, [sp, #0]  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); 8025dc8:	9a01      	ldr	r2, [sp, #4] 8025dca:	b91a      	cbnz	r2, 8025dd4 <SystemInit+0x50> 8025dcc:	9a00      	ldr	r2, [sp, #0] 8025dce:	f5b2 6fa0 	cmp.w	r2, #1280	; 0x500 8025dd2:	d1f2      	bne.n	8025dba <SystemInit+0x36>  if ((RCC->CR & RCC_CR_HSERDY) != RESET) 8025dd4:	4b21      	ldr	r3, [pc, #132]	; (8025e5c <SystemInit+0xd8>) 8025dd6:	681b      	ldr	r3, [r3, #0] 8025dd8:	f413 3300 	ands.w	r3, r3, #131072	; 0x20000  {    HSEStatus = (uint32_t)0x01; 8025ddc:	bf18      	it	ne 8025dde:	2301      	movne	r3, #1  }  else  {    HSEStatus = (uint32_t)0x00; 8025de0:	9301      	str	r3, [sp, #4]  }  if (HSEStatus == (uint32_t)0x01) 8025de2:	9b01      	ldr	r3, [sp, #4] 8025de4:	2b01      	cmp	r3, #1 8025de6:	d133      	bne.n	8025e50 <SystemInit+0xcc>  {    /* Select regulator voltage output Scale 1 mode, System frequency up to 168 MHz */    RCC->APB1ENR |= RCC_APB1ENR_PWREN; 8025de8:	4b1c      	ldr	r3, [pc, #112]	; (8025e5c <SystemInit+0xd8>) 8025dea:	6c1a      	ldr	r2, [r3, #64]	; 0x40 8025dec:	f042 5280 	orr.w	r2, r2, #268435456	; 0x10000000 8025df0:	641a      	str	r2, [r3, #64]	; 0x40    PWR->CR |= PWR_CR_VOS; 8025df2:	4a1c      	ldr	r2, [pc, #112]	; (8025e64 <SystemInit+0xe0>) 8025df4:	6811      	ldr	r1, [r2, #0] 8025df6:	f441 4180 	orr.w	r1, r1, #16384	; 0x4000 8025dfa:	6011      	str	r1, [r2, #0]    /* HCLK = SYSCLK / 1*/    RCC->CFGR |= RCC_CFGR_HPRE_DIV1; 8025dfc:	689a      	ldr	r2, [r3, #8] 8025dfe:	609a      	str	r2, [r3, #8]          /* PCLK2 = HCLK / 2*/    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; 8025e00:	689a      	ldr	r2, [r3, #8] 8025e02:	f442 4200 	orr.w	r2, r2, #32768	; 0x8000 8025e06:	609a      	str	r2, [r3, #8]        /* PCLK1 = HCLK / 4*/    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; 8025e08:	689a      	ldr	r2, [r3, #8] 8025e0a:	f442 52a0 	orr.w	r2, r2, #5120	; 0x1400 8025e0e:	609a      	str	r2, [r3, #8]    /* Configure the main PLL */    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | 8025e10:	4a15      	ldr	r2, [pc, #84]	; (8025e68 <SystemInit+0xe4>) 8025e12:	605a      	str	r2, [r3, #4]                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);    /* Enable the main PLL */    RCC->CR |= RCC_CR_PLLON; 8025e14:	681a      	ldr	r2, [r3, #0] 8025e16:	f042 7280 	orr.w	r2, r2, #16777216	; 0x1000000 8025e1a:	601a      	str	r2, [r3, #0]    /* Wait till the main PLL is ready */    while((RCC->CR & RCC_CR_PLLRDY) == 0) 8025e1c:	6819      	ldr	r1, [r3, #0] 8025e1e:	4a0f      	ldr	r2, [pc, #60]	; (8025e5c <SystemInit+0xd8>) 8025e20:	0189      	lsls	r1, r1, #6 8025e22:	d5fb      	bpl.n	8025e1c <SystemInit+0x98>    {    }       /* Configure Flash prefetch, Instruction cache, Data cache and wait state */    FLASH->ACR = FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_5WS; 8025e24:	4b11      	ldr	r3, [pc, #68]	; (8025e6c <SystemInit+0xe8>) 8025e26:	f240 6105 	movw	r1, #1541	; 0x605 8025e2a:	6019      	str	r1, [r3, #0]    /* Select the main PLL as system clock source */    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); 8025e2c:	6893      	ldr	r3, [r2, #8] 8025e2e:	f023 0303 	bic.w	r3, r3, #3 8025e32:	6093      	str	r3, [r2, #8]    RCC->CFGR |= RCC_CFGR_SW_PLL; 8025e34:	6893      	ldr	r3, [r2, #8] 8025e36:	f043 0302 	orr.w	r3, r3, #2 8025e3a:	6093      	str	r3, [r2, #8]    /* Wait till the main PLL is used as system clock source */    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL); 8025e3c:	6891      	ldr	r1, [r2, #8] 8025e3e:	4b07      	ldr	r3, [pc, #28]	; (8025e5c <SystemInit+0xd8>) 8025e40:	f001 010c 	and.w	r1, r1, #12 8025e44:	2908      	cmp	r1, #8 8025e46:	d1f9      	bne.n	8025e3c <SystemInit+0xb8>    {    }		/* Добавил переход на внутренний генератор в случае отказа HSE */ 	RCC->CR|=RCC_CR_CSSON;  8025e48:	681a      	ldr	r2, [r3, #0] 8025e4a:	f442 2200 	orr.w	r2, r2, #524288	; 0x80000 8025e4e:	601a      	str	r2, [r3, #0]  /* Configure the Vector Table location add offset address ------------------*/#ifdef VECT_TAB_SRAM  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */#else  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ 8025e50:	4b07      	ldr	r3, [pc, #28]	; (8025e70 <SystemInit+0xec>) 8025e52:	f04f 6200 	mov.w	r2, #134217728	; 0x8000000 8025e56:	609a      	str	r2, [r3, #8]#endif} 8025e58:	b002      	add	sp, #8 8025e5a:	4770      	bx	lr 8025e5c:	40023800 	.word	0x40023800 8025e60:	24003010 	.word	0x24003010 8025e64:	40007000 	.word	0x40007000 8025e68:	07405419 	.word	0x07405419 8025e6c:	40023c00 	.word	0x40023c00 8025e70:	e000ed00 	.word	0xe000ed0008025e74 <gpio_hw_config_pin>:	GPIO_TABLE(EXPAND_AS_DEFS)};void gpio_hw_config_pin(GPIO_TypeDef *port, uint8_t pin, uint16_t conf) {	uint8_t shift;	shift = pin * 2; 8025e74:	004b      	lsls	r3, r1, #1	port->MODER &= ~(GPIO_MODER_MASK << shift); 8025e76:	b2db      	uxtb	r3, r3gpio_pindef_t gpio_pins[] = {	GPIO_TABLE(EXPAND_AS_DEFS)};void gpio_hw_config_pin(GPIO_TypeDef *port, uint8_t pin, uint16_t conf) { 8025e78:	b570      	push	{r4, r5, r6, lr}	uint8_t shift;	shift = pin * 2;	port->MODER &= ~(GPIO_MODER_MASK << shift); 8025e7a:	2403      	movs	r4, #3 8025e7c:	6805      	ldr	r5, [r0, #0] 8025e7e:	fa04 f403 	lsl.w	r4, r4, r3 8025e82:	43e4      	mvns	r4, r4 8025e84:	4025      	ands	r5, r4 8025e86:	6005      	str	r5, [r0, #0]	port->MODER |= (uint32_t)((conf >> GPIO_MODE_CFG_SHIFT) & GPIO_MODER_MASK) << shift; 8025e88:	6806      	ldr	r6, [r0, #0] 8025e8a:	f002 0503 	and.w	r5, r2, #3 8025e8e:	fa05 f503 	lsl.w	r5, r5, r3 8025e92:	4335      	orrs	r5, r6 8025e94:	6005      	str	r5, [r0, #0]	port->OTYPER &= ~(GPIO_TYPER_MASK << pin); 8025e96:	6846      	ldr	r6, [r0, #4] 8025e98:	2501      	movs	r5, #1 8025e9a:	fa05 f501 	lsl.w	r5, r5, r1 8025e9e:	ea26 0505 	bic.w	r5, r6, r5 8025ea2:	6045      	str	r5, [r0, #4]	port->OTYPER |= (uint32_t)((conf >> GPIO_TYPE_CFG_SHIFT) & GPIO_TYPER_MASK) << pin; 8025ea4:	6845      	ldr	r5, [r0, #4] 8025ea6:	f3c2 0680 	ubfx	r6, r2, #2, #1 8025eaa:	fa06 f101 	lsl.w	r1, r6, r1 8025eae:	4329      	orrs	r1, r5 8025eb0:	6041      	str	r1, [r0, #4]	port->OSPEEDR &= ~(GPIO_SPEEDR_MASK << shift); 8025eb2:	6881      	ldr	r1, [r0, #8] 8025eb4:	4021      	ands	r1, r4 8025eb6:	6081      	str	r1, [r0, #8]	port->OSPEEDR |= (uint32_t)((conf >> GPIO_SPEED_CFG_SHIFT) & GPIO_SPEEDR_MASK) << shift; 8025eb8:	6885      	ldr	r5, [r0, #8] 8025eba:	f3c2 1101 	ubfx	r1, r2, #4, #2 8025ebe:	fa01 f103 	lsl.w	r1, r1, r3 8025ec2:	4329      	orrs	r1, r5 8025ec4:	6081      	str	r1, [r0, #8]	port->PUPDR &= ~(GPIO_PUPDR_MASK << shift); 8025ec6:	68c1      	ldr	r1, [r0, #12] 8025ec8:	400c      	ands	r4, r1 8025eca:	60c4      	str	r4, [r0, #12]	port->PUPDR |= (uint32_t)((conf >> GPIO_PUPD_CFG_SHIFT) & GPIO_PUPDR_MASK) << shift; 8025ecc:	68c1      	ldr	r1, [r0, #12] 8025ece:	f3c2 1281 	ubfx	r2, r2, #6, #2 8025ed2:	fa02 f303 	lsl.w	r3, r2, r3 8025ed6:	430b      	orrs	r3, r1 8025ed8:	60c3      	str	r3, [r0, #12] 8025eda:	bd70      	pop	{r4, r5, r6, pc}08025edc <gpio_connect_af>:}void gpio_connect_af(gpio_t id, uint8_t af_n) { 8025edc:	b510      	push	{r4, lr}	gpio_pindef_t *pin = &gpio_pins[id]; 8025ede:	4b13      	ldr	r3, [pc, #76]	; (8025f2c <gpio_connect_af+0x50>) 8025ee0:	eb03 02c0 	add.w	r2, r3, r0, lsl #3	uint8_t shift;	if (pin->pin < 8) {		shift = pin->pin * 4;		pin->port->AFR[0] &= ~((uint32_t)GPIO_AFR_MASK << shift); 8025ee4:	f853 3030 	ldr.w	r3, [r3, r0, lsl #3]}void gpio_connect_af(gpio_t id, uint8_t af_n) {	gpio_pindef_t *pin = &gpio_pins[id];	uint8_t shift;	if (pin->pin < 8) { 8025ee8:	7912      	ldrb	r2, [r2, #4] 8025eea:	2a07      	cmp	r2, #7 8025eec:	d80e      	bhi.n	8025f0c <gpio_connect_af+0x30>		shift = pin->pin * 4; 8025eee:	0092      	lsls	r2, r2, #2		pin->port->AFR[0] &= ~((uint32_t)GPIO_AFR_MASK << shift); 8025ef0:	6a1c      	ldr	r4, [r3, #32] 8025ef2:	b2d2      	uxtb	r2, r2 8025ef4:	200f      	movs	r0, #15 8025ef6:	fa00 f002 	lsl.w	r0, r0, r2 8025efa:	ea24 0000 	bic.w	r0, r4, r0 8025efe:	6218      	str	r0, [r3, #32]		pin->port->AFR[0] |= af_n << shift; 8025f00:	6a18      	ldr	r0, [r3, #32] 8025f02:	fa01 f202 	lsl.w	r2, r1, r2 8025f06:	4302      	orrs	r2, r0 8025f08:	621a      	str	r2, [r3, #32] 8025f0a:	bd10      	pop	{r4, pc}	}	else {		shift = (pin->pin - 8) * 4; 8025f0c:	3a08      	subs	r2, #8 8025f0e:	0092      	lsls	r2, r2, #2		pin->port->AFR[1] &= ~((uint32_t)GPIO_AFR_MASK << shift); 8025f10:	6a5c      	ldr	r4, [r3, #36]	; 0x24 8025f12:	b2d2      	uxtb	r2, r2 8025f14:	200f      	movs	r0, #15 8025f16:	fa00 f002 	lsl.w	r0, r0, r2 8025f1a:	ea24 0000 	bic.w	r0, r4, r0 8025f1e:	6258      	str	r0, [r3, #36]	; 0x24		pin->port->AFR[1] |= af_n << shift; 8025f20:	6a58      	ldr	r0, [r3, #36]	; 0x24 8025f22:	fa01 f202 	lsl.w	r2, r1, r2 8025f26:	4302      	orrs	r2, r0 8025f28:	625a      	str	r2, [r3, #36]	; 0x24 8025f2a:	bd10      	pop	{r4, pc} 8025f2c:	200005c0 	.word	0x200005c008025f30 <gpio_set>:		}	}}void gpio_set(gpio_t pin, bool value) {	if (gpio_pins[pin].flags & GPIO_INV) 8025f30:	4b0e      	ldr	r3, [pc, #56]	; (8025f6c <gpio_set+0x3c>) 8025f32:	eb03 02c0 	add.w	r2, r3, r0, lsl #3 8025f36:	88d2      	ldrh	r2, [r2, #6] 8025f38:	f002 0210 	and.w	r2, r2, #16 8025f3c:	b292      	uxth	r2, r2 8025f3e:	b10a      	cbz	r2, 8025f44 <gpio_set+0x14>		value = !value; 8025f40:	f081 0101 	eor.w	r1, r1, #1 8025f44:	00c2      	lsls	r2, r0, #3	if (value) 8025f46:	b141      	cbz	r1, 8025f5a <gpio_set+0x2a>		gpio_pins[pin].port->BSRRL = 1 << gpio_pins[pin].pin; 8025f48:	f853 1030 	ldr.w	r1, [r3, r0, lsl #3] 8025f4c:	189b      	adds	r3, r3, r2 8025f4e:	2201      	movs	r2, #1 8025f50:	791b      	ldrb	r3, [r3, #4] 8025f52:	fa02 f303 	lsl.w	r3, r2, r3 8025f56:	830b      	strh	r3, [r1, #24] 8025f58:	4770      	bx	lr	else		gpio_pins[pin].port->BSRRH = 1 << gpio_pins[pin].pin; 8025f5a:	f853 1030 	ldr.w	r1, [r3, r0, lsl #3] 8025f5e:	189b      	adds	r3, r3, r2 8025f60:	2201      	movs	r2, #1 8025f62:	791b      	ldrb	r3, [r3, #4] 8025f64:	fa02 f303 	lsl.w	r3, r2, r3 8025f68:	834b      	strh	r3, [r1, #26] 8025f6a:	4770      	bx	lr 8025f6c:	200005c0 	.word	0x200005c008025f70 <gpio_set_config>:}/* * TODO add analog flag and setup ADC pins in a proper way */static void gpio_set_config(gpio_t id) { 8025f70:	b570      	push	{r4, r5, r6, lr}	gpio_pindef_t *pin = &gpio_pins[id]; 8025f72:	4e1e      	ldr	r6, [pc, #120]	; (8025fec <gpio_set_config+0x7c>) 8025f74:	eb06 05c0 	add.w	r5, r6, r0, lsl #3}/* * TODO add analog flag and setup ADC pins in a proper way */static void gpio_set_config(gpio_t id) { 8025f78:	4604      	mov	r4, r0	gpio_pindef_t *pin = &gpio_pins[id];	if (pin->flags & GPIO_AF) { 8025f7a:	88e9      	ldrh	r1, [r5, #6] 8025f7c:	f401 7300 	and.w	r3, r1, #512	; 0x200 8025f80:	b29b      	uxth	r3, r3 8025f82:	b13b      	cbz	r3, 8025f94 <gpio_set_config+0x24>		uint8_t af_n = (uint8_t)(pin->flags >> _GPIO_AF_SHIFT);		gpio_connect_af(id, af_n); 8025f84:	0a89      	lsrs	r1, r1, #10 8025f86:	f7ff ffa9 	bl	8025edc <gpio_connect_af>		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_AF_CFG |  8025f8a:	f856 0034 	ldr.w	r0, [r6, r4, lsl #3] 8025f8e:	7929      	ldrb	r1, [r5, #4] 8025f90:	2232      	movs	r2, #50	; 0x32 8025f92:	e005      	b.n	8025fa0 <gpio_set_config+0x30>				GPIO_SPEED_HIGH_CFG);	}	else if (pin->flags & GPIO_IN) 8025f94:	07cb      	lsls	r3, r1, #31 8025f96:	d507      	bpl.n	8025fa8 <gpio_set_config+0x38>		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_IN_CFG |  8025f98:	f856 0030 	ldr.w	r0, [r6, r0, lsl #3] 8025f9c:	7929      	ldrb	r1, [r5, #4] 8025f9e:	2230      	movs	r2, #48	; 0x30				((pin->flags & GPIO_OD) ? 				 GPIO_TYPE_OD_CFG : GPIO_TYPE_PP_CFG) |				GPIO_SPEED_HIGH_CFG);		gpio_set(id, pin->flags & GPIO_SET);	}} 8025fa0:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}		gpio_connect_af(id, af_n);		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_AF_CFG | 				GPIO_SPEED_HIGH_CFG);	}	else if (pin->flags & GPIO_IN)		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_IN_CFG |  8025fa4:	f7ff bf66 	b.w	8025e74 <gpio_hw_config_pin>				GPIO_SPEED_HIGH_CFG);	else if (pin->flags & GPIO_IN_PU) { 8025fa8:	f001 0302 	and.w	r3, r1, #2 8025fac:	b29b      	uxth	r3, r3 8025fae:	b123      	cbz	r3, 8025fba <gpio_set_config+0x4a>		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_IN_CFG | GPIO_PU_CFG | 8025fb0:	f856 0030 	ldr.w	r0, [r6, r0, lsl #3] 8025fb4:	7929      	ldrb	r1, [r5, #4] 8025fb6:	2270      	movs	r2, #112	; 0x70 8025fb8:	e00d      	b.n	8025fd6 <gpio_set_config+0x66>				GPIO_SPEED_HIGH_CFG);		gpio_set(id, pin->flags & GPIO_SET);	}	else if (pin->flags & GPIO_OUT) { 8025fba:	f001 0304 	and.w	r3, r1, #4 8025fbe:	b29b      	uxth	r3, r3 8025fc0:	b19b      	cbz	r3, 8025fea <gpio_set_config+0x7a>		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_OUT_CFG | 8025fc2:	f001 0120 	and.w	r1, r1, #32 8025fc6:	b28a      	uxth	r2, r1 8025fc8:	f856 0030 	ldr.w	r0, [r6, r0, lsl #3] 8025fcc:	7929      	ldrb	r1, [r5, #4] 8025fce:	2a00      	cmp	r2, #0 8025fd0:	bf0c      	ite	eq 8025fd2:	2231      	moveq	r2, #49	; 0x31 8025fd4:	2235      	movne	r2, #53	; 0x35 8025fd6:	f7ff ff4d 	bl	8025e74 <gpio_hw_config_pin>				((pin->flags & GPIO_OD) ? 				 GPIO_TYPE_OD_CFG : GPIO_TYPE_PP_CFG) |				GPIO_SPEED_HIGH_CFG);		gpio_set(id, pin->flags & GPIO_SET); 8025fda:	88e9      	ldrh	r1, [r5, #6] 8025fdc:	4620      	mov	r0, r4 8025fde:	f3c1 01c0 	ubfx	r1, r1, #3, #1	}} 8025fe2:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}	else if (pin->flags & GPIO_OUT) {		gpio_hw_config_pin(pin->port, pin->pin, GPIO_MODE_OUT_CFG |				((pin->flags & GPIO_OD) ? 				 GPIO_TYPE_OD_CFG : GPIO_TYPE_PP_CFG) |				GPIO_SPEED_HIGH_CFG);		gpio_set(id, pin->flags & GPIO_SET); 8025fe6:	f7ff bfa3 	b.w	8025f30 <gpio_set> 8025fea:	bd70      	pop	{r4, r5, r6, pc} 8025fec:	200005c0 	.word	0x200005c008025ff0 <gpio_init>:	}}void gpio_init(void) { 8025ff0:	b538      	push	{r3, r4, r5, lr}	uint32_t i;	GPIO_DeInit(GPIOA); 8025ff2:	4812      	ldr	r0, [pc, #72]	; (802603c <gpio_init+0x4c>)				GPIO_SPEED_HIGH_CFG);		gpio_set(id, pin->flags & GPIO_SET);	}}void gpio_init(void) { 8025ff4:	4d12      	ldr	r5, [pc, #72]	; (8026040 <gpio_init+0x50>)	uint32_t i;	GPIO_DeInit(GPIOA); 8025ff6:	f7ff fa5d 	bl	80254b4 <GPIO_DeInit>	GPIO_DeInit(GPIOB); 8025ffa:	4812      	ldr	r0, [pc, #72]	; (8026044 <gpio_init+0x54>) 8025ffc:	f7ff fa5a 	bl	80254b4 <GPIO_DeInit>	GPIO_DeInit(GPIOC); 8026000:	4811      	ldr	r0, [pc, #68]	; (8026048 <gpio_init+0x58>) 8026002:	f7ff fa57 	bl	80254b4 <GPIO_DeInit>	GPIO_DeInit(GPIOD); 8026006:	4811      	ldr	r0, [pc, #68]	; (802604c <gpio_init+0x5c>) 8026008:	f7ff fa54 	bl	80254b4 <GPIO_DeInit>	GPIO_DeInit(GPIOE); 802600c:	4810      	ldr	r0, [pc, #64]	; (8026050 <gpio_init+0x60>) 802600e:	f7ff fa51 	bl	80254b4 <GPIO_DeInit>	// configure clocks	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | 8026012:	4b10      	ldr	r3, [pc, #64]	; (8026054 <gpio_init+0x64>) 8026014:	6b1a      	ldr	r2, [r3, #48]	; 0x30 8026016:	f042 021f 	orr.w	r2, r2, #31 802601a:	631a      	str	r2, [r3, #48]	; 0x30			RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN |			RCC_AHB1ENR_GPIOEEN;	// configure gpios	for (i = 0; i < GPIO_TOTAL_COUNT; i++) { 802601c:	2400      	movs	r4, #0				GPIO_SPEED_HIGH_CFG);		gpio_set(id, pin->flags & GPIO_SET);	}}void gpio_init(void) { 802601e:	eb05 03c4 	add.w	r3, r5, r4, lsl #3			RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN |			RCC_AHB1ENR_GPIOEEN;	// configure gpios	for (i = 0; i < GPIO_TOTAL_COUNT; i++) {		if (gpio_pins[i].flags & GPIO_NOINIT) 8026022:	88db      	ldrh	r3, [r3, #6] 8026024:	f003 0380 	and.w	r3, r3, #128	; 0x80 8026028:	b29b      	uxth	r3, r3 802602a:	b913      	cbnz	r3, 8026032 <gpio_init+0x42>			continue;		else {			gpio_set_config(i); 802602c:	b2e0      	uxtb	r0, r4 802602e:	f7ff ff9f 	bl	8025f70 <gpio_set_config>	RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN |			RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN |			RCC_AHB1ENR_GPIOEEN;	// configure gpios	for (i = 0; i < GPIO_TOTAL_COUNT; i++) { 8026032:	3401      	adds	r4, #1 8026034:	2c11      	cmp	r4, #17 8026036:	d1f2      	bne.n	802601e <gpio_init+0x2e>			continue;		else {			gpio_set_config(i);		}	}} 8026038:	bd38      	pop	{r3, r4, r5, pc} 802603a:	bf00      	nop 802603c:	40020000 	.word	0x40020000 8026040:	200005c0 	.word	0x200005c0 8026044:	40020400 	.word	0x40020400 8026048:	40020800 	.word	0x40020800 802604c:	40020c00 	.word	0x40020c00 8026050:	40021000 	.word	0x40021000 8026054:	40023800 	.word	0x4002380008026058 <gpio_invert_output>:		gpio_pins[pin].port->BSRRH = 1 << gpio_pins[pin].pin;}void gpio_invert_output(gpio_t pin) {	gpio_pins[pin].port->ODR ^= 1 << gpio_pins[pin].pin; 8026058:	4a06      	ldr	r2, [pc, #24]	; (8026074 <gpio_invert_output+0x1c>) 802605a:	f852 3030 	ldr.w	r3, [r2, r0, lsl #3] 802605e:	eb02 02c0 	add.w	r2, r2, r0, lsl #3 8026062:	6959      	ldr	r1, [r3, #20] 8026064:	7912      	ldrb	r2, [r2, #4] 8026066:	2001      	movs	r0, #1 8026068:	fa00 f202 	lsl.w	r2, r0, r2 802606c:	404a      	eors	r2, r1 802606e:	615a      	str	r2, [r3, #20] 8026070:	4770      	bx	lr 8026072:	bf00      	nop 8026074:	200005c0 	.word	0x200005c008026078 <gpio_get>:}bool gpio_get(gpio_t pin) {	bool value;	if (gpio_pins[pin].flags & GPIO_NOINIT) { 8026078:	490e      	ldr	r1, [pc, #56]	; (80260b4 <gpio_get+0x3c>) 802607a:	eb01 02c0 	add.w	r2, r1, r0, lsl #3void gpio_invert_output(gpio_t pin) {	gpio_pins[pin].port->ODR ^= 1 << gpio_pins[pin].pin;}bool gpio_get(gpio_t pin) { 802607e:	b510      	push	{r4, lr}	bool value;	if (gpio_pins[pin].flags & GPIO_NOINIT) { 8026080:	88d3      	ldrh	r3, [r2, #6] 8026082:	f003 0480 	and.w	r4, r3, #128	; 0x80 8026086:	b2a4      	uxth	r4, r4 8026088:	b994      	cbnz	r4, 80260b0 <gpio_get+0x38>		return false;	}	else {		value = (gpio_pins[pin].port->IDR & (1 << gpio_pins[pin].pin)) >> gpio_pins[pin].pin; 802608a:	f851 1030 	ldr.w	r1, [r1, r0, lsl #3] 802608e:	7912      	ldrb	r2, [r2, #4] 8026090:	6908      	ldr	r0, [r1, #16] 8026092:	2101      	movs	r1, #1 8026094:	fa01 f102 	lsl.w	r1, r1, r2 8026098:	4001      	ands	r1, r0		return (gpio_pins[pin].flags & GPIO_INV) ? !value : value; 802609a:	f003 0310 	and.w	r3, r3, #16	bool value;	if (gpio_pins[pin].flags & GPIO_NOINIT) {		return false;	}	else {		value = (gpio_pins[pin].port->IDR & (1 << gpio_pins[pin].pin)) >> gpio_pins[pin].pin; 802609e:	40d1      	lsrs	r1, r2		return (gpio_pins[pin].flags & GPIO_INV) ? !value : value; 80260a0:	b29b      	uxth	r3, r3	bool value;	if (gpio_pins[pin].flags & GPIO_NOINIT) {		return false;	}	else {		value = (gpio_pins[pin].port->IDR & (1 << gpio_pins[pin].pin)) >> gpio_pins[pin].pin; 80260a2:	bf0c      	ite	eq 80260a4:	2000      	moveq	r0, #0 80260a6:	2001      	movne	r0, #1		return (gpio_pins[pin].flags & GPIO_INV) ? !value : value; 80260a8:	b11b      	cbz	r3, 80260b2 <gpio_get+0x3a> 80260aa:	f080 0001 	eor.w	r0, r0, #1 80260ae:	bd10      	pop	{r4, pc}}bool gpio_get(gpio_t pin) {	bool value;	if (gpio_pins[pin].flags & GPIO_NOINIT) {		return false; 80260b0:	2000      	movs	r0, #0	}	else {		value = (gpio_pins[pin].port->IDR & (1 << gpio_pins[pin].pin)) >> gpio_pins[pin].pin;		return (gpio_pins[pin].flags & GPIO_INV) ? !value : value;	}} 80260b2:	bd10      	pop	{r4, pc} 80260b4:	200005c0 	.word	0x200005c0080260b8 <RNG_Init>:#include "rng.h"#include "stm32f4xx.h"void RNG_Init(void){ 80260b8:	b508      	push	{r3, lr}    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG,ENABLE); 80260ba:	2040      	movs	r0, #64	; 0x40 80260bc:	2101      	movs	r1, #1 80260be:	f7ff fb51 	bl	8025764 <RCC_AHB2PeriphClockCmd>    RNG_Cmd(ENABLE); 80260c2:	2001      	movs	r0, #1} 80260c4:	e8bd 4008 	ldmia.w	sp!, {r3, lr}void RNG_Init(void){    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG,ENABLE);    RNG_Cmd(ENABLE); 80260c8:	f7ff bba8 	b.w	802581c <RNG_Cmd>080260cc <GetRandomNumber>:}uint32_t GetRandomNumber(void) {    return RNG_GetRandomNumber();; 80260cc:	f7ff bbb2 	b.w	8025834 <RNG_GetRandomNumber>080260d0 <TM_RTC_SetDateTime>:  /* Устанавливаем новое время */  TM_RTC_GetDateTimeFromUnix(&newData, unixTime);  TM_RTC_SetDateTime(&newData, TM_RTC_Format_BIN);}TM_RTC_Result_t TM_RTC_SetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) { 80260d0:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}	TM_RTC_t tmp;		/* Check date and time validation */	if (format == TM_RTC_Format_BCD) { 80260d4:	2901      	cmp	r1, #1  /* Устанавливаем новое время */  TM_RTC_GetDateTimeFromUnix(&newData, unixTime);  TM_RTC_SetDateTime(&newData, TM_RTC_Format_BIN);}TM_RTC_Result_t TM_RTC_SetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) { 80260d6:	4603      	mov	r3, r0 80260d8:	460e      	mov	r6, r1 80260da:	79c0      	ldrb	r0, [r0, #7]	TM_RTC_t tmp;		/* Check date and time validation */	if (format == TM_RTC_Format_BCD) { 80260dc:	d137      	bne.n	802614e <TM_RTC_SetDateTime+0x7e>		tmp.date = TM_RTC_BCD2BIN(data->date);		tmp.month = TM_RTC_BCD2BIN(data->month); 80260de:	7a1c      	ldrb	r4, [r3, #8]		tmp.year = TM_RTC_BCD2BIN(data->year); 80260e0:	7a5d      	ldrb	r5, [r3, #9]		tmp.hours = TM_RTC_BCD2BIN(data->hours);		tmp.minutes = TM_RTC_BCD2BIN(data->minutes);		tmp.seconds = TM_RTC_BCD2BIN(data->seconds); 80260e2:	f893 8000 	ldrb.w	r8, [r3]TM_RTC_Result_t TM_RTC_SetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) {	TM_RTC_t tmp;		/* Check date and time validation */	if (format == TM_RTC_Format_BCD) {		tmp.date = TM_RTC_BCD2BIN(data->date); 80260e6:	220a      	movs	r2, #10 80260e8:	0901      	lsrs	r1, r0, #4 80260ea:	f000 000f 	and.w	r0, r0, #15 80260ee:	fb02 0001 	mla	r0, r2, r1, r0		tmp.month = TM_RTC_BCD2BIN(data->month); 80260f2:	0921      	lsrs	r1, r4, #4 80260f4:	f004 040f 	and.w	r4, r4, #15 80260f8:	fb02 4101 	mla	r1, r2, r1, r4		tmp.year = TM_RTC_BCD2BIN(data->year); 80260fc:	092c      	lsrs	r4, r5, #4 80260fe:	f005 050f 	and.w	r5, r5, #15 8026102:	fb02 5404 	mla	r4, r2, r4, r5		tmp.hours = TM_RTC_BCD2BIN(data->hours); 8026106:	795d      	ldrb	r5, [r3, #5] 8026108:	ea4f 1c15 	mov.w	ip, r5, lsr #4 802610c:	f005 050f 	and.w	r5, r5, #15 8026110:	fb02 5c0c 	mla	ip, r2, ip, r5		tmp.minutes = TM_RTC_BCD2BIN(data->minutes); 8026114:	791d      	ldrb	r5, [r3, #4] 8026116:	092f      	lsrs	r7, r5, #4 8026118:	f005 050f 	and.w	r5, r5, #15 802611c:	fb02 5707 	mla	r7, r2, r7, r5		tmp.seconds = TM_RTC_BCD2BIN(data->seconds); 8026120:	ea4f 1518 	mov.w	r5, r8, lsr #4 8026124:	f008 080f 	and.w	r8, r8, #15 8026128:	fb02 8505 	mla	r5, r2, r5, r8		tmp.day = TM_RTC_BCD2BIN(data->day); 802612c:	f893 8006 	ldrb.w	r8, [r3, #6] 8026130:	ea4f 1918 	mov.w	r9, r8, lsr #4 8026134:	f008 080f 	and.w	r8, r8, #15 8026138:	fb02 8209 	mla	r2, r2, r9, r8TM_RTC_Result_t TM_RTC_SetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) {	TM_RTC_t tmp;		/* Check date and time validation */	if (format == TM_RTC_Format_BCD) {		tmp.date = TM_RTC_BCD2BIN(data->date); 802613c:	b2c0      	uxtb	r0, r0		tmp.month = TM_RTC_BCD2BIN(data->month); 802613e:	b2c9      	uxtb	r1, r1		tmp.year = TM_RTC_BCD2BIN(data->year); 8026140:	b2e4      	uxtb	r4, r4		tmp.hours = TM_RTC_BCD2BIN(data->hours); 8026142:	fa5f fc8c 	uxtb.w	ip, ip		tmp.minutes = TM_RTC_BCD2BIN(data->minutes); 8026146:	b2ff      	uxtb	r7, r7		tmp.seconds = TM_RTC_BCD2BIN(data->seconds); 8026148:	b2ed      	uxtb	r5, r5		tmp.day = TM_RTC_BCD2BIN(data->day); 802614a:	b2d2      	uxtb	r2, r2 802614c:	e006      	b.n	802615c <TM_RTC_SetDateTime+0x8c>	} else {		tmp.date = data->date;		tmp.month = data->month; 802614e:	7a19      	ldrb	r1, [r3, #8]		tmp.year = data->year; 8026150:	7a5c      	ldrb	r4, [r3, #9]		tmp.hours = data->hours; 8026152:	f893 c005 	ldrb.w	ip, [r3, #5]		tmp.minutes = data->minutes; 8026156:	791f      	ldrb	r7, [r3, #4]		tmp.seconds = data->seconds; 8026158:	781d      	ldrb	r5, [r3, #0]		tmp.day = data->day; 802615a:	799a      	ldrb	r2, [r3, #6]	}		/* Check year and month */	if ( 802615c:	2c63      	cmp	r4, #99	; 0x63 802615e:	d86c      	bhi.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.year > 99 ||  8026160:	2900      	cmp	r1, #0 8026162:	d06a      	beq.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.month == 0 ||  8026164:	290c      	cmp	r1, #12 8026166:	d868      	bhi.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.month > 12 || 8026168:	2800      	cmp	r0, #0 802616a:	d066      	beq.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.date == 0 ||		tmp.date > TM_RTC_Months[TM_RTC_LEAP_YEAR(2000 + tmp.year) ? 1 : 0][tmp.month - 1] || 802616c:	f014 0f03 	tst.w	r4, #3 8026170:	d10a      	bne.n	8026188 <TM_RTC_SetDateTime+0xb8> 8026172:	f504 69fa 	add.w	r9, r4, #2000	; 0x7d0 8026176:	f04f 0864 	mov.w	r8, #100	; 0x64 802617a:	fb99 faf8 	sdiv	sl, r9, r8 802617e:	fb08 981a 	mls	r8, r8, sl, r9 8026182:	f1b8 0f00 	cmp.w	r8, #0 8026186:	d10c      	bne.n	80261a2 <TM_RTC_SetDateTime+0xd2> 8026188:	f504 64fa 	add.w	r4, r4, #2000	; 0x7d0 802618c:	f44f 78c8 	mov.w	r8, #400	; 0x190 8026190:	fb94 f9f8 	sdiv	r9, r4, r8 8026194:	fb08 4419 	mls	r4, r8, r9, r4 8026198:	f1d4 0401 	rsbs	r4, r4, #1 802619c:	bf38      	it	cc 802619e:	2400      	movcc	r4, #0 80261a0:	e000      	b.n	80261a4 <TM_RTC_SetDateTime+0xd4> 80261a2:	2401      	movs	r4, #1 80261a4:	f8df 80a8 	ldr.w	r8, [pc, #168]	; 8026250 <TM_RTC_SetDateTime+0x180> 80261a8:	f04f 090c 	mov.w	r9, #12 80261ac:	fb09 8404 	mla	r4, r9, r4, r8 80261b0:	1861      	adds	r1, r4, r1	/* Check year and month */	if (		tmp.year > 99 || 		tmp.month == 0 || 		tmp.month > 12 ||		tmp.date == 0 || 80261b2:	f811 1c01 	ldrb.w	r1, [r1, #-1] 80261b6:	4281      	cmp	r1, r0 80261b8:	d33f      	bcc.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.date > TM_RTC_Months[TM_RTC_LEAP_YEAR(2000 + tmp.year) ? 1 : 0][tmp.month - 1] || 80261ba:	f1bc 0f17 	cmp.w	ip, #23 80261be:	d83c      	bhi.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.hours > 23 || 80261c0:	2f3b      	cmp	r7, #59	; 0x3b 80261c2:	d83a      	bhi.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.minutes > 59 || 80261c4:	2d3b      	cmp	r5, #59	; 0x3b 80261c6:	d838      	bhi.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.seconds > 59 || 80261c8:	2a00      	cmp	r2, #0 80261ca:	d036      	beq.n	802623a <TM_RTC_SetDateTime+0x16a>		tmp.day == 0 || 80261cc:	2a07      	cmp	r2, #7 80261ce:	d834      	bhi.n	802623a <TM_RTC_SetDateTime+0x16a>		/* Invalid date */		return TM_RTC_Result_Error; 	}		/* Fill time */	RTC_TimeStruct.RTC_Hours = data->hours; 80261d0:	795a      	ldrb	r2, [r3, #5] 80261d2:	4d1b      	ldr	r5, [pc, #108]	; (8026240 <TM_RTC_SetDateTime+0x170>)	RTC_TimeStruct.RTC_Minutes = data->minutes;	RTC_TimeStruct.RTC_Seconds = data->seconds;	/* Fill date */	RTC_DateStruct.RTC_Date = data->date; 80261d4:	4c1b      	ldr	r4, [pc, #108]	; (8026244 <TM_RTC_SetDateTime+0x174>)		/* Invalid date */		return TM_RTC_Result_Error; 	}		/* Fill time */	RTC_TimeStruct.RTC_Hours = data->hours; 80261d6:	702a      	strb	r2, [r5, #0]	RTC_TimeStruct.RTC_Minutes = data->minutes; 80261d8:	791a      	ldrb	r2, [r3, #4]	RTC_DateStruct.RTC_Month = data->month;	RTC_DateStruct.RTC_Year = data->year;	RTC_DateStruct.RTC_WeekDay = data->day;		/* Set the RTC time base to 1s and hours format to 24h */	RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24; 80261da:	481b      	ldr	r0, [pc, #108]	; (8026248 <TM_RTC_SetDateTime+0x178>)		return TM_RTC_Result_Error; 	}		/* Fill time */	RTC_TimeStruct.RTC_Hours = data->hours;	RTC_TimeStruct.RTC_Minutes = data->minutes; 80261dc:	706a      	strb	r2, [r5, #1]	RTC_TimeStruct.RTC_Seconds = data->seconds; 80261de:	781a      	ldrb	r2, [r3, #0] 80261e0:	70aa      	strb	r2, [r5, #2]	/* Fill date */	RTC_DateStruct.RTC_Date = data->date; 80261e2:	79da      	ldrb	r2, [r3, #7] 80261e4:	70a2      	strb	r2, [r4, #2]	RTC_DateStruct.RTC_Month = data->month; 80261e6:	7a1a      	ldrb	r2, [r3, #8] 80261e8:	7062      	strb	r2, [r4, #1]	RTC_DateStruct.RTC_Year = data->year; 80261ea:	7a5a      	ldrb	r2, [r3, #9]	RTC_DateStruct.RTC_WeekDay = data->day; 80261ec:	799b      	ldrb	r3, [r3, #6]	RTC_TimeStruct.RTC_Minutes = data->minutes;	RTC_TimeStruct.RTC_Seconds = data->seconds;	/* Fill date */	RTC_DateStruct.RTC_Date = data->date;	RTC_DateStruct.RTC_Month = data->month;	RTC_DateStruct.RTC_Year = data->year; 80261ee:	70e2      	strb	r2, [r4, #3]	RTC_DateStruct.RTC_WeekDay = data->day;		/* Set the RTC time base to 1s and hours format to 24h */	RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24;	RTC_InitStruct.RTC_AsynchPrediv = RTC_ASYNC_PREDIV; 80261f0:	221f      	movs	r2, #31	RTC_DateStruct.RTC_Month = data->month;	RTC_DateStruct.RTC_Year = data->year;	RTC_DateStruct.RTC_WeekDay = data->day;		/* Set the RTC time base to 1s and hours format to 24h */	RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24; 80261f2:	2700      	movs	r7, #0	RTC_InitStruct.RTC_AsynchPrediv = RTC_ASYNC_PREDIV; 80261f4:	6042      	str	r2, [r0, #4]	RTC_InitStruct.RTC_SynchPrediv = RTC_SYNC_PREDIV; 80261f6:	f502 7278 	add.w	r2, r2, #992	; 0x3e0	RTC_TimeStruct.RTC_Seconds = data->seconds;	/* Fill date */	RTC_DateStruct.RTC_Date = data->date;	RTC_DateStruct.RTC_Month = data->month;	RTC_DateStruct.RTC_Year = data->year;	RTC_DateStruct.RTC_WeekDay = data->day; 80261fa:	7023      	strb	r3, [r4, #0]		/* Set the RTC time base to 1s and hours format to 24h */	RTC_InitStruct.RTC_HourFormat = RTC_HourFormat_24; 80261fc:	6007      	str	r7, [r0, #0]	RTC_InitStruct.RTC_AsynchPrediv = RTC_ASYNC_PREDIV;	RTC_InitStruct.RTC_SynchPrediv = RTC_SYNC_PREDIV; 80261fe:	6082      	str	r2, [r0, #8]	RTC_Init(&RTC_InitStruct); 8026200:	f7ff fb5a 	bl	80258b8 <RTC_Init>	/* Set time */	if (format == TM_RTC_Format_BCD) { 8026204:	2e01      	cmp	r6, #1 8026206:	d105      	bne.n	8026214 <TM_RTC_SetDateTime+0x144>		RTC_SetTime(RTC_Format_BCD, &RTC_TimeStruct); 8026208:	4630      	mov	r0, r6 802620a:	4629      	mov	r1, r5 802620c:	f7ff fb98 	bl	8025940 <RTC_SetTime>		RTC_SetTime(RTC_Format_BIN, &RTC_TimeStruct);	}		/* Set date */	if (format == TM_RTC_Format_BCD) {		RTC_SetDate(RTC_Format_BCD, &RTC_DateStruct); 8026210:	4630      	mov	r0, r6 8026212:	e004      	b.n	802621e <TM_RTC_SetDateTime+0x14e>	/* Set time */	if (format == TM_RTC_Format_BCD) {		RTC_SetTime(RTC_Format_BCD, &RTC_TimeStruct);	} else {		RTC_SetTime(RTC_Format_BIN, &RTC_TimeStruct); 8026214:	4638      	mov	r0, r7 8026216:	4629      	mov	r1, r5 8026218:	f7ff fb92 	bl	8025940 <RTC_SetTime>		/* Set date */	if (format == TM_RTC_Format_BCD) {		RTC_SetDate(RTC_Format_BCD, &RTC_DateStruct);	} else {		RTC_SetDate(RTC_Format_BIN, &RTC_DateStruct); 802621c:	4638      	mov	r0, r7 802621e:	4621      	mov	r1, r4 8026220:	f7ff fbfc 	bl	8025a1c <RTC_SetDate>	}			if (TM_RTC_Status != RTC_STATUS_ZERO) { 8026224:	4b09      	ldr	r3, [pc, #36]	; (802624c <TM_RTC_SetDateTime+0x17c>) 8026226:	6818      	ldr	r0, [r3, #0] 8026228:	b140      	cbz	r0, 802623c <TM_RTC_SetDateTime+0x16c>		/* Write backup registers */		RTC_WriteBackupRegister(RTC_STATUS_REG, RTC_STATUS_TIME_OK); 802622a:	2013      	movs	r0, #19 802622c:	f244 3121 	movw	r1, #17185	; 0x4321 8026230:	f7ff fc5e 	bl	8025af0 <RTC_WriteBackupRegister>	}		/* Return OK */	return TM_RTC_Result_Ok; 8026234:	2000      	movs	r0, #0 8026236:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}		tmp.seconds > 59 ||		tmp.day == 0 ||		tmp.day > 7	) {		/* Invalid date */		return TM_RTC_Result_Error;  802623a:	2001      	movs	r0, #1		RTC_WriteBackupRegister(RTC_STATUS_REG, RTC_STATUS_TIME_OK);	}		/* Return OK */	return TM_RTC_Result_Ok;} 802623c:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 8026240:	2000e5bc 	.word	0x2000e5bc 8026244:	2000e5cc 	.word	0x2000e5cc 8026248:	2000e5c0 	.word	0x2000e5c0 802624c:	200019d8 	.word	0x200019d8 8026250:	20000648 	.word	0x2000064808026254 <TM_RTC_SetDateTimeString>:TM_RTC_Result_t TM_RTC_SetDateTimeString(char* str) { 8026254:	b530      	push	{r4, r5, lr}	TM_RTC_t tmp;	uint8_t i = 0;		/* Get date */	tmp.date = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026256:	2200      	movs	r2, #0		/* Return OK */	return TM_RTC_Result_Ok;}TM_RTC_Result_t TM_RTC_SetDateTimeString(char* str) { 8026258:	b085      	sub	sp, #20	TM_RTC_t tmp;	uint8_t i = 0; 802625a:	4613      	mov	r3, r2		/* Get date */	tmp.date = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802625c:	250a      	movs	r5, #10	TM_RTC_t tmp;	uint8_t i = 0;		/* Get date */	tmp.date = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 802625e:	e006      	b.n	802626e <TM_RTC_SetDateTimeString+0x1a>		tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026260:	fb05 1202 	mla	r2, r5, r2, r1 8026264:	3a30      	subs	r2, #48	; 0x30		i++; 8026266:	3301      	adds	r3, #1	uint8_t i = 0;		/* Get date */	tmp.date = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026268:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 802626c:	b2db      	uxtb	r3, r3	TM_RTC_t tmp;	uint8_t i = 0;		/* Get date */	tmp.date = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 802626e:	5cc1      	ldrb	r1, [r0, r3] 8026270:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 8026274:	2c09      	cmp	r4, #9 8026276:	d9f3      	bls.n	8026260 <TM_RTC_SetDateTimeString+0xc>		tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i));		i++;	}	i++; 8026278:	3301      	adds	r3, #1 802627a:	f88d 2007 	strb.w	r2, [sp, #7] 802627e:	b2db      	uxtb	r3, r3		/* Get month */	tmp.month = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026280:	2200      	movs	r2, #0		tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026282:	250a      	movs	r5, #10	}	i++;		/* Get month */	tmp.month = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026284:	e006      	b.n	8026294 <TM_RTC_SetDateTimeString+0x40>		tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026286:	fb05 1202 	mla	r2, r5, r2, r1 802628a:	3a30      	subs	r2, #48	; 0x30		i++; 802628c:	3301      	adds	r3, #1	i++;		/* Get month */	tmp.month = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802628e:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 8026292:	b2db      	uxtb	r3, r3	}	i++;		/* Get month */	tmp.month = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026294:	5cc1      	ldrb	r1, [r0, r3] 8026296:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 802629a:	2c09      	cmp	r4, #9 802629c:	d9f3      	bls.n	8026286 <TM_RTC_SetDateTimeString+0x32>		tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i));		i++;	}	i++; 802629e:	3301      	adds	r3, #1 80262a0:	f88d 2008 	strb.w	r2, [sp, #8] 80262a4:	b2db      	uxtb	r3, r3		/* Get year */	tmp.year = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262a6:	2200      	movs	r2, #0		tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262a8:	250a      	movs	r5, #10	}	i++;		/* Get year */	tmp.year = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262aa:	e006      	b.n	80262ba <TM_RTC_SetDateTimeString+0x66>		tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262ac:	fb05 1202 	mla	r2, r5, r2, r1 80262b0:	3a30      	subs	r2, #48	; 0x30		i++; 80262b2:	3301      	adds	r3, #1	i++;		/* Get year */	tmp.year = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262b4:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 80262b8:	b2db      	uxtb	r3, r3	}	i++;		/* Get year */	tmp.year = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262ba:	5cc1      	ldrb	r1, [r0, r3] 80262bc:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 80262c0:	2c09      	cmp	r4, #9 80262c2:	d9f3      	bls.n	80262ac <TM_RTC_SetDateTimeString+0x58>		tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i));		i++;	}	i++; 80262c4:	3301      	adds	r3, #1 80262c6:	f88d 2009 	strb.w	r2, [sp, #9] 80262ca:	b2db      	uxtb	r3, r3		/* Get day in a week */	tmp.day = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262cc:	2200      	movs	r2, #0		tmp.day = tmp.day * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262ce:	250a      	movs	r5, #10	}	i++;		/* Get day in a week */	tmp.day = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262d0:	e006      	b.n	80262e0 <TM_RTC_SetDateTimeString+0x8c>		tmp.day = tmp.day * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262d2:	fb05 1202 	mla	r2, r5, r2, r1 80262d6:	3a30      	subs	r2, #48	; 0x30		i++; 80262d8:	3301      	adds	r3, #1	i++;		/* Get day in a week */	tmp.day = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.day = tmp.day * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262da:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 80262de:	b2db      	uxtb	r3, r3	}	i++;		/* Get day in a week */	tmp.day = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262e0:	5cc1      	ldrb	r1, [r0, r3] 80262e2:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 80262e6:	2c09      	cmp	r4, #9 80262e8:	d9f3      	bls.n	80262d2 <TM_RTC_SetDateTimeString+0x7e>		tmp.day = tmp.day * 10 + TM_RTC_CHAR2NUM(*(str + i));		i++;	}	i++; 80262ea:	3301      	adds	r3, #1 80262ec:	f88d 2006 	strb.w	r2, [sp, #6] 80262f0:	b2db      	uxtb	r3, r3		/* Get hours */	tmp.hours = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262f2:	2200      	movs	r2, #0		tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262f4:	250a      	movs	r5, #10	}	i++;		/* Get hours */	tmp.hours = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 80262f6:	e006      	b.n	8026306 <TM_RTC_SetDateTimeString+0xb2>		tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80262f8:	fb05 1202 	mla	r2, r5, r2, r1 80262fc:	3a30      	subs	r2, #48	; 0x30		i++; 80262fe:	3301      	adds	r3, #1	i++;		/* Get hours */	tmp.hours = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026300:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 8026304:	b2db      	uxtb	r3, r3	}	i++;		/* Get hours */	tmp.hours = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026306:	5cc1      	ldrb	r1, [r0, r3] 8026308:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 802630c:	2c09      	cmp	r4, #9 802630e:	d9f3      	bls.n	80262f8 <TM_RTC_SetDateTimeString+0xa4>		tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i));		i++;	}	i++; 8026310:	3301      	adds	r3, #1 8026312:	f88d 2005 	strb.w	r2, [sp, #5] 8026316:	b2db      	uxtb	r3, r3		/* Get minutes */	tmp.minutes = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026318:	2200      	movs	r2, #0		tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802631a:	250a      	movs	r5, #10	}	i++;		/* Get minutes */	tmp.minutes = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 802631c:	e006      	b.n	802632c <TM_RTC_SetDateTimeString+0xd8>		tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802631e:	fb05 1202 	mla	r2, r5, r2, r1 8026322:	3a30      	subs	r2, #48	; 0x30		i++; 8026324:	3301      	adds	r3, #1	i++;		/* Get minutes */	tmp.minutes = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026326:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 802632a:	b2db      	uxtb	r3, r3	}	i++;		/* Get minutes */	tmp.minutes = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 802632c:	5cc1      	ldrb	r1, [r0, r3] 802632e:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 8026332:	2c09      	cmp	r4, #9 8026334:	d9f3      	bls.n	802631e <TM_RTC_SetDateTimeString+0xca>		tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i));		i++;	}	i++; 8026336:	3301      	adds	r3, #1 8026338:	f88d 2004 	strb.w	r2, [sp, #4] 802633c:	b2db      	uxtb	r3, r3		/* Get seconds */	tmp.seconds = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 802633e:	2200      	movs	r2, #0		tmp.seconds = tmp.seconds * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026340:	250a      	movs	r5, #10	}	i++;		/* Get seconds */	tmp.seconds = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026342:	e006      	b.n	8026352 <TM_RTC_SetDateTimeString+0xfe>		tmp.seconds = tmp.seconds * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026344:	fb05 1202 	mla	r2, r5, r2, r1 8026348:	3a30      	subs	r2, #48	; 0x30		i++; 802634a:	3301      	adds	r3, #1	i++;		/* Get seconds */	tmp.seconds = 0;	while (TM_RTC_CHARISNUM(*(str + i))) {		tmp.seconds = tmp.seconds * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802634c:	f002 02ff 	and.w	r2, r2, #255	; 0xff		i++; 8026350:	b2db      	uxtb	r3, r3	}	i++;		/* Get seconds */	tmp.seconds = 0;	while (TM_RTC_CHARISNUM(*(str + i))) { 8026352:	5cc1      	ldrb	r1, [r0, r3] 8026354:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 8026358:	2c09      	cmp	r4, #9 802635a:	d9f3      	bls.n	8026344 <TM_RTC_SetDateTimeString+0xf0> 802635c:	a804      	add	r0, sp, #16		i++;	}	i++;		/* Return status from set date time function */	return TM_RTC_SetDateTime(&tmp, TM_RTC_Format_BIN); 802635e:	2100      	movs	r1, #0 8026360:	f800 2d10 	strb.w	r2, [r0, #-16]! 8026364:	4668      	mov	r0, sp 8026366:	f7ff feb3 	bl	80260d0 <TM_RTC_SetDateTime>} 802636a:	b005      	add	sp, #20 802636c:	bd30      	pop	{r4, r5, pc}0802636e <TM_RTC_Config>:uint16_t TM_RTC_GetDaysInYear(uint8_t year) {	/* Return days in year */	return TM_RTC_DAYS_IN_YEAR(2000 + year);}void TM_RTC_Config(TM_RTC_ClockSource_t source) { 802636e:	b508      	push	{r3, lr}	if (source == TM_RTC_ClockSource_Internal) { 8026370:	b950      	cbnz	r0, 8026388 <TM_RTC_Config+0x1a>		/* Enable the LSI OSC */		RCC_LSICmd(ENABLE); 8026372:	2001      	movs	r0, #1 8026374:	f7ff f980 	bl	8025678 <RCC_LSICmd>		/* Wait till LSI is ready */		while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET); 8026378:	2061      	movs	r0, #97	; 0x61 802637a:	f7ff fa3b 	bl	80257f4 <RCC_GetFlagStatus> 802637e:	2800      	cmp	r0, #0 8026380:	d0fa      	beq.n	8026378 <TM_RTC_Config+0xa>		/* Select the RTC Clock Source */		RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); 8026382:	f44f 7000 	mov.w	r0, #512	; 0x200 8026386:	e00a      	b.n	802639e <TM_RTC_Config+0x30>	} else if (source == TM_RTC_ClockSource_External) { 8026388:	2801      	cmp	r0, #1 802638a:	d10a      	bne.n	80263a2 <TM_RTC_Config+0x34>		/* Enable the LSE OSC */		RCC_LSEConfig(RCC_LSE_ON); 802638c:	f7ff f964 	bl	8025658 <RCC_LSEConfig>		/* Wait till LSE is ready */ 		while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); 8026390:	2041      	movs	r0, #65	; 0x41 8026392:	f7ff fa2f 	bl	80257f4 <RCC_GetFlagStatus> 8026396:	2800      	cmp	r0, #0 8026398:	d0fa      	beq.n	8026390 <TM_RTC_Config+0x22>		/* Select the RTC Clock Source */		RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); 802639a:	f44f 7080 	mov.w	r0, #256	; 0x100 802639e:	f7ff f9b7 	bl	8025710 <RCC_RTCCLKConfig>	}		/* Enable the RTC Clock */	RCC_RTCCLKCmd(ENABLE); 80263a2:	2001      	movs	r0, #1 80263a4:	f7ff f9cc 	bl	8025740 <RCC_RTCCLKCmd>		/* Wait for register synchronization */	RTC_WaitForSynchro(); 80263a8:	f7ff faa8 	bl	80258fc <RTC_WaitForSynchro>	/* Write status */	RTC_WriteBackupRegister(RTC_STATUS_REG, RTC_STATUS_INIT_OK); 80263ac:	2013      	movs	r0, #19 80263ae:	f241 2134 	movw	r1, #4660	; 0x1234} 80263b2:	e8bd 4008 	ldmia.w	sp!, {r3, lr}		/* Wait for register synchronization */	RTC_WaitForSynchro();	/* Write status */	RTC_WriteBackupRegister(RTC_STATUS_REG, RTC_STATUS_INIT_OK); 80263b6:	f7ff bb9b 	b.w	8025af0 <RTC_WriteBackupRegister> 80263ba:	0000      	movs	r0, r0080263bc <TM_RTC_GetUnixTimeStamp>:		/* Enable wakeup command */		RTC_WakeUpCmd(ENABLE);	}}uint32_t TM_RTC_GetUnixTimeStamp(TM_RTC_t* data) { 80263bc:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}	uint32_t days = 0, seconds = 0;	uint16_t i;	uint16_t year = (uint16_t) (data->year + 2000); 80263c0:	7a42      	ldrb	r2, [r0, #9] 80263c2:	f240 73b2 	movw	r3, #1970	; 0x7b2 80263c6:	f502 62fa 	add.w	r2, r2, #2000	; 0x7d0 80263ca:	2100      	movs	r1, #0	if (year < TM_RTC_OFFSET_YEAR) {		return 0;	}	/* Days in back years */	for (i = TM_RTC_OFFSET_YEAR; i < year; i++) {		days += TM_RTC_DAYS_IN_YEAR(i); 80263cc:	f44f 75c8 	mov.w	r5, #400	; 0x190 80263d0:	2664      	movs	r6, #100	; 0x64 80263d2:	079c      	lsls	r4, r3, #30 80263d4:	d108      	bne.n	80263e8 <TM_RTC_GetUnixTimeStamp+0x2c> 80263d6:	fbb3 f4f6 	udiv	r4, r3, r6 80263da:	fb06 3414 	mls	r4, r6, r4, r3 80263de:	b2a4      	uxth	r4, r4 80263e0:	b114      	cbz	r4, 80263e8 <TM_RTC_GetUnixTimeStamp+0x2c> 80263e2:	f44f 74b7 	mov.w	r4, #366	; 0x16e 80263e6:	e008      	b.n	80263fa <TM_RTC_GetUnixTimeStamp+0x3e> 80263e8:	fbb3 f4f5 	udiv	r4, r3, r5 80263ec:	fb05 3414 	mls	r4, r5, r4, r3 80263f0:	b2a4      	uxth	r4, r4 80263f2:	2c00      	cmp	r4, #0 80263f4:	d0f5      	beq.n	80263e2 <TM_RTC_GetUnixTimeStamp+0x26> 80263f6:	f240 146d 	movw	r4, #365	; 0x16d	/* Year is below offset year */	if (year < TM_RTC_OFFSET_YEAR) {		return 0;	}	/* Days in back years */	for (i = TM_RTC_OFFSET_YEAR; i < year; i++) { 80263fa:	3301      	adds	r3, #1 80263fc:	b29b      	uxth	r3, r3 80263fe:	4293      	cmp	r3, r2		days += TM_RTC_DAYS_IN_YEAR(i); 8026400:	4421      	add	r1, r4	/* Year is below offset year */	if (year < TM_RTC_OFFSET_YEAR) {		return 0;	}	/* Days in back years */	for (i = TM_RTC_OFFSET_YEAR; i < year; i++) { 8026402:	d3e6      	bcc.n	80263d2 <TM_RTC_GetUnixTimeStamp+0x16>		days += TM_RTC_DAYS_IN_YEAR(i);	}	/* Days in current year */	for (i = 1; i < data->month; i++) {		days += TM_RTC_Months[TM_RTC_LEAP_YEAR(year)][i - 1]; 8026404:	2364      	movs	r3, #100	; 0x64 8026406:	fbb2 f7f3 	udiv	r7, r2, r3 802640a:	fb03 2317 	mls	r3, r3, r7, r2 802640e:	b29f      	uxth	r7, r3 8026410:	f44f 73c8 	mov.w	r3, #400	; 0x190 8026414:	fbb2 f4f3 	udiv	r4, r2, r3 8026418:	fb03 2414 	mls	r4, r3, r4, r2 802641c:	b2a4      	uxth	r4, r4 802641e:	f1d4 0401 	rsbs	r4, r4, #1 8026422:	bf38      	it	cc 8026424:	2400      	movcc	r4, #0	/* Days in back years */	for (i = TM_RTC_OFFSET_YEAR; i < year; i++) {		days += TM_RTC_DAYS_IN_YEAR(i);	}	/* Days in current year */	for (i = 1; i < data->month; i++) { 8026426:	7a06      	ldrb	r6, [r0, #8]		days += TM_RTC_Months[TM_RTC_LEAP_YEAR(year)][i - 1]; 8026428:	f8df c058 	ldr.w	ip, [pc, #88]	; 8026484 <TM_RTC_GetUnixTimeStamp+0xc8> 802642c:	2300      	movs	r3, #0 802642e:	f002 0203 	and.w	r2, r2, #3 8026432:	f04f 080c 	mov.w	r8, #12 8026436:	e00c      	b.n	8026452 <TM_RTC_GetUnixTimeStamp+0x96> 8026438:	b922      	cbnz	r2, 8026444 <TM_RTC_GetUnixTimeStamp+0x88> 802643a:	2f00      	cmp	r7, #0 802643c:	bf0c      	ite	eq 802643e:	4625      	moveq	r5, r4 8026440:	2501      	movne	r5, #1 8026442:	e000      	b.n	8026446 <TM_RTC_GetUnixTimeStamp+0x8a> 8026444:	4625      	mov	r5, r4 8026446:	fb08 3505 	mla	r5, r8, r5, r3 802644a:	3301      	adds	r3, #1 802644c:	f81c 5005 	ldrb.w	r5, [ip, r5] 8026450:	1949      	adds	r1, r1, r5	/* Days in back years */	for (i = TM_RTC_OFFSET_YEAR; i < year; i++) {		days += TM_RTC_DAYS_IN_YEAR(i);	}	/* Days in current year */	for (i = 1; i < data->month; i++) { 8026452:	1c5d      	adds	r5, r3, #1 8026454:	b2ad      	uxth	r5, r5 8026456:	42b5      	cmp	r5, r6 8026458:	d3ee      	bcc.n	8026438 <TM_RTC_GetUnixTimeStamp+0x7c>		days += TM_RTC_Months[TM_RTC_LEAP_YEAR(year)][i - 1];	}	/* Day starts with 1 */	days += data->date - 1; 802645a:	79c3      	ldrb	r3, [r0, #7]	seconds = days * TM_RTC_SECONDS_PER_DAY;	seconds += data->hours * TM_RTC_SECONDS_PER_HOUR; 802645c:	7944      	ldrb	r4, [r0, #5]	/* Days in current year */	for (i = 1; i < data->month; i++) {		days += TM_RTC_Months[TM_RTC_LEAP_YEAR(year)][i - 1];	}	/* Day starts with 1 */	days += data->date - 1; 802645e:	3b01      	subs	r3, #1 8026460:	1859      	adds	r1, r3, r1	seconds = days * TM_RTC_SECONDS_PER_DAY;	seconds += data->hours * TM_RTC_SECONDS_PER_HOUR;	seconds += data->minutes * TM_RTC_SECONDS_PER_MINUTE; 8026462:	7903      	ldrb	r3, [r0, #4] 8026464:	009a      	lsls	r2, r3, #2 8026466:	019b      	lsls	r3, r3, #6 8026468:	1a9a      	subs	r2, r3, r2		days += TM_RTC_Months[TM_RTC_LEAP_YEAR(year)][i - 1];	}	/* Day starts with 1 */	days += data->date - 1;	seconds = days * TM_RTC_SECONDS_PER_DAY;	seconds += data->hours * TM_RTC_SECONDS_PER_HOUR; 802646a:	f44f 6361 	mov.w	r3, #3600	; 0xe10 802646e:	fb03 2304 	mla	r3, r3, r4, r2	seconds += data->minutes * TM_RTC_SECONDS_PER_MINUTE;	seconds += data->seconds; 8026472:	7802      	ldrb	r2, [r0, #0]		/* seconds = days * 86400; */	return seconds;} 8026474:	4802      	ldr	r0, [pc, #8]	; (8026480 <TM_RTC_GetUnixTimeStamp+0xc4>)	}	/* Day starts with 1 */	days += data->date - 1;	seconds = days * TM_RTC_SECONDS_PER_DAY;	seconds += data->hours * TM_RTC_SECONDS_PER_HOUR;	seconds += data->minutes * TM_RTC_SECONDS_PER_MINUTE; 8026476:	189b      	adds	r3, r3, r2	seconds += data->seconds;		/* seconds = days * 86400; */	return seconds;} 8026478:	fb00 3001 	mla	r0, r0, r1, r3 802647c:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 8026480:	00015180 	.word	0x00015180 8026484:	20000648 	.word	0x2000064808026488 <TM_RTC_GetDateTime>:		/* Return status from set date time function */	return TM_RTC_SetDateTime(&tmp, TM_RTC_Format_BIN);}void TM_RTC_GetDateTime(TM_RTC_t* data, TM_RTC_Format_t format) { 8026488:	b538      	push	{r3, r4, r5, lr} 802648a:	4604      	mov	r4, r0	uint32_t unix;	/* Get time */	if (format == TM_RTC_Format_BIN) { 802648c:	460d      	mov	r5, r1 802648e:	b909      	cbnz	r1, 8026494 <TM_RTC_GetDateTime+0xc>		RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct); 8026490:	4608      	mov	r0, r1 8026492:	e000      	b.n	8026496 <TM_RTC_GetDateTime+0xe>	} else {		RTC_GetTime(RTC_Format_BCD, &RTC_TimeStruct); 8026494:	2001      	movs	r0, #1 8026496:	4911      	ldr	r1, [pc, #68]	; (80264dc <TM_RTC_GetDateTime+0x54>) 8026498:	f7ff fa9e 	bl	80259d8 <RTC_GetTime>	}		/* Format hours */	data->hours = RTC_TimeStruct.RTC_Hours; 802649c:	4b0f      	ldr	r3, [pc, #60]	; (80264dc <TM_RTC_GetDateTime+0x54>) 802649e:	781a      	ldrb	r2, [r3, #0] 80264a0:	7162      	strb	r2, [r4, #5]	data->minutes = RTC_TimeStruct.RTC_Minutes; 80264a2:	785a      	ldrb	r2, [r3, #1]	data->seconds = RTC_TimeStruct.RTC_Seconds; 80264a4:	789b      	ldrb	r3, [r3, #2]		RTC_GetTime(RTC_Format_BCD, &RTC_TimeStruct);	}		/* Format hours */	data->hours = RTC_TimeStruct.RTC_Hours;	data->minutes = RTC_TimeStruct.RTC_Minutes; 80264a6:	7122      	strb	r2, [r4, #4]	data->seconds = RTC_TimeStruct.RTC_Seconds; 80264a8:	7023      	strb	r3, [r4, #0]		/* Get subseconds */	data->subseconds = RTC->SSR; 80264aa:	4b0d      	ldr	r3, [pc, #52]	; (80264e0 <TM_RTC_GetDateTime+0x58>) 80264ac:	6a9b      	ldr	r3, [r3, #40]	; 0x28 80264ae:	8063      	strh	r3, [r4, #2]		/* Get date */	if (format == TM_RTC_Format_BIN) { 80264b0:	b90d      	cbnz	r5, 80264b6 <TM_RTC_GetDateTime+0x2e>		RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct); 80264b2:	4628      	mov	r0, r5 80264b4:	e000      	b.n	80264b8 <TM_RTC_GetDateTime+0x30>	} else {		RTC_GetDate(RTC_Format_BCD, &RTC_DateStruct); 80264b6:	2001      	movs	r0, #1 80264b8:	490a      	ldr	r1, [pc, #40]	; (80264e4 <TM_RTC_GetDateTime+0x5c>) 80264ba:	f7ff faf9 	bl	8025ab0 <RTC_GetDate>	}		/* Format date */	data->year = RTC_DateStruct.RTC_Year; 80264be:	4b09      	ldr	r3, [pc, #36]	; (80264e4 <TM_RTC_GetDateTime+0x5c>) 80264c0:	78da      	ldrb	r2, [r3, #3] 80264c2:	7262      	strb	r2, [r4, #9]	data->month = RTC_DateStruct.RTC_Month; 80264c4:	785a      	ldrb	r2, [r3, #1] 80264c6:	7222      	strb	r2, [r4, #8]	data->date = RTC_DateStruct.RTC_Date; 80264c8:	789a      	ldrb	r2, [r3, #2]	data->day = RTC_DateStruct.RTC_WeekDay; 80264ca:	781b      	ldrb	r3, [r3, #0]	}		/* Format date */	data->year = RTC_DateStruct.RTC_Year;	data->month = RTC_DateStruct.RTC_Month;	data->date = RTC_DateStruct.RTC_Date; 80264cc:	71e2      	strb	r2, [r4, #7]	data->day = RTC_DateStruct.RTC_WeekDay; 80264ce:	71a3      	strb	r3, [r4, #6]		/* Calculate unix offset */	unix = TM_RTC_GetUnixTimeStamp(data); 80264d0:	4620      	mov	r0, r4 80264d2:	f7ff ff73 	bl	80263bc <TM_RTC_GetUnixTimeStamp>	data->unix = unix; 80264d6:	60e0      	str	r0, [r4, #12] 80264d8:	bd38      	pop	{r3, r4, r5, pc} 80264da:	bf00      	nop 80264dc:	2000e5bc 	.word	0x2000e5bc 80264e0:	40002800 	.word	0x40002800 80264e4:	2000e5cc 	.word	0x2000e5cc080264e8 <TM_RTC_Init>:  }}uint32_t TM_RTC_Init(TM_RTC_ClockSource_t source) { 80264e8:	b5f0      	push	{r4, r5, r6, r7, lr}  uint32_t status;  uint8_t stat = 1;  TM_RTC_t datatime;	  /* Enable PWR peripheral clock */  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); 80264ea:	2101      	movs	r1, #1  }}uint32_t TM_RTC_Init(TM_RTC_ClockSource_t source) { 80264ec:	b085      	sub	sp, #20 80264ee:	4605      	mov	r5, r0  uint32_t status;  uint8_t stat = 1;  TM_RTC_t datatime;	  /* Enable PWR peripheral clock */  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); 80264f0:	f04f 5080 	mov.w	r0, #268435456	; 0x10000000 80264f4:	f7ff f942 	bl	802577c <RCC_APB1PeriphClockCmd>  /* Allow access to BKP Domain */  PWR_BackupAccessCmd(ENABLE); 80264f8:	2001      	movs	r0, #1 80264fa:	f7ff f8a7 	bl	802564c <PWR_BackupAccessCmd>	  /* Get RTC status */  status = RTC_ReadBackupRegister(RTC_STATUS_REG); 80264fe:	2013      	movs	r0, #19 8026500:	f7ff fb06 	bl	8025b10 <RTC_ReadBackupRegister>	  if (status == RTC_STATUS_TIME_OK)  8026504:	f244 3321 	movw	r3, #17185	; 0x4321 8026508:	4298      	cmp	r0, r3 802650a:	4e25      	ldr	r6, [pc, #148]	; (80265a0 <TM_RTC_Init+0xb8>) 802650c:	d113      	bne.n	8026536 <TM_RTC_Init+0x4e>  {    TM_RTC_Status = RTC_STATUS_TIME_OK; 802650e:	6030      	str	r0, [r6, #0]		    /* Start internal clock if we choose internal clock */    if (source == TM_RTC_ClockSource_Internal) 8026510:	b915      	cbnz	r5, 8026518 <TM_RTC_Init+0x30>      TM_RTC_Config(TM_RTC_ClockSource_Internal); 8026512:	4628      	mov	r0, r5 8026514:	f7ff ff2b 	bl	802636e <TM_RTC_Config>    /* Wait for RTC APB registers synchronisation (needed after start-up from Reset) */    RTC_WaitForSynchro(); 8026518:	f7ff f9f0 	bl	80258fc <RTC_WaitForSynchro>		    /* Clear interrupt flags */    RTC_ClearITPendingBit(RTC_IT_WUT); 802651c:	f44f 4080 	mov.w	r0, #16384	; 0x4000 8026520:	f7ff fb1e 	bl	8025b60 <RTC_ClearITPendingBit>    EXTI->PR = 0x00400000; 8026524:	4b1f      	ldr	r3, [pc, #124]	; (80265a4 <TM_RTC_Init+0xbc>) 8026526:	f44f 0280 	mov.w	r2, #4194304	; 0x400000 802652a:	615a      	str	r2, [r3, #20]		    /* Get date and time */    TM_RTC_GetDateTime(&datatime, TM_RTC_Format_BIN); 802652c:	4668      	mov	r0, sp 802652e:	2100      	movs	r1, #0 8026530:	f7ff ffaa 	bl	8026488 <TM_RTC_GetDateTime> 8026534:	e02f      	b.n	8026596 <TM_RTC_Init+0xae>  }   else if (status == RTC_STATUS_INIT_OK)  8026536:	f241 2734 	movw	r7, #4660	; 0x1234 802653a:	42b8      	cmp	r0, r7 802653c:	d10f      	bne.n	802655e <TM_RTC_Init+0x76>  {    TM_RTC_Status = RTC_STATUS_INIT_OK; 802653e:	6030      	str	r0, [r6, #0]		    /* Start internal clock if we choose internal clock */    if (source == TM_RTC_ClockSource_Internal) 8026540:	b915      	cbnz	r5, 8026548 <TM_RTC_Init+0x60>      TM_RTC_Config(TM_RTC_ClockSource_Internal); 8026542:	4628      	mov	r0, r5 8026544:	f7ff ff13 	bl	802636e <TM_RTC_Config>    /* Wait for RTC APB registers synchronisation (needed after start-up from Reset) */    RTC_WaitForSynchro(); 8026548:	f7ff f9d8 	bl	80258fc <RTC_WaitForSynchro>		    /* Clear interrupt flags */    RTC_ClearITPendingBit(RTC_IT_WUT); 802654c:	f44f 4080 	mov.w	r0, #16384	; 0x4000 8026550:	f7ff fb06 	bl	8025b60 <RTC_ClearITPendingBit>    EXTI->PR = 0x00400000; 8026554:	4b13      	ldr	r3, [pc, #76]	; (80265a4 <TM_RTC_Init+0xbc>) 8026556:	f44f 0280 	mov.w	r2, #4194304	; 0x400000 802655a:	615a      	str	r2, [r3, #20] 802655c:	e01b      	b.n	8026596 <TM_RTC_Init+0xae>    /* Get date and time */    //TM_RTC_GetDateTime(&datatime, TM_RTC_Format_BIN);  }   else   {    TM_RTC_Status = RTC_STATUS_ZERO; 802655e:	2400      	movs	r4, #0    /* Return status = 0 -> RTC Never initialized before */    stat = RTC_STATUS_ZERO;    /* Config RTC */	TM_RTC_Config(source); 8026560:	4628      	mov	r0, r5    /* Get date and time */    //TM_RTC_GetDateTime(&datatime, TM_RTC_Format_BIN);  }   else   {    TM_RTC_Status = RTC_STATUS_ZERO; 8026562:	6034      	str	r4, [r6, #0]    /* Return status = 0 -> RTC Never initialized before */    stat = RTC_STATUS_ZERO;    /* Config RTC */	TM_RTC_Config(source); 8026564:	f7ff ff03 	bl	802636e <TM_RTC_Config>    datatime.day = 1;    datatime.month = 1;    datatime.year = 0;    datatime.hours = 0;    datatime.minutes = 0;    datatime.seconds = 0; 8026568:	a804      	add	r0, sp, #16    stat = RTC_STATUS_ZERO;    /* Config RTC */	TM_RTC_Config(source);		    /* Set date and time */    datatime.date = 1; 802656a:	2301      	movs	r3, #1    datatime.day = 1;    datatime.month = 1;    datatime.year = 0;    datatime.hours = 0;    datatime.minutes = 0;    datatime.seconds = 0; 802656c:	f800 4d10 	strb.w	r4, [r0, #-16]!    /* Set date and time */    TM_RTC_SetDateTime(&datatime, TM_RTC_Format_BIN); 8026570:	4621      	mov	r1, r4 8026572:	4668      	mov	r0, sp    stat = RTC_STATUS_ZERO;    /* Config RTC */	TM_RTC_Config(source);		    /* Set date and time */    datatime.date = 1; 8026574:	f88d 3007 	strb.w	r3, [sp, #7]    datatime.day = 1; 8026578:	f88d 3006 	strb.w	r3, [sp, #6]    datatime.month = 1; 802657c:	f88d 3008 	strb.w	r3, [sp, #8]    datatime.year = 0; 8026580:	f88d 4009 	strb.w	r4, [sp, #9]    datatime.hours = 0; 8026584:	f88d 4005 	strb.w	r4, [sp, #5]    datatime.minutes = 0; 8026588:	f88d 4004 	strb.w	r4, [sp, #4]    datatime.seconds = 0;    /* Set date and time */    TM_RTC_SetDateTime(&datatime, TM_RTC_Format_BIN); 802658c:	f7ff fda0 	bl	80260d0 <TM_RTC_SetDateTime>		    /* Initialized OK */    TM_RTC_Status = RTC_STATUS_INIT_OK; 8026590:	6037      	str	r7, [r6, #0]  }  /* If first time initialized */  if (stat == RTC_STATUS_ZERO) 	return 0; 8026592:	4620      	mov	r0, r4 8026594:	e001      	b.n	802659a <TM_RTC_Init+0xb2>    return TM_RTC_Status;   8026596:	4b02      	ldr	r3, [pc, #8]	; (80265a0 <TM_RTC_Init+0xb8>) 8026598:	6818      	ldr	r0, [r3, #0]} 802659a:	b005      	add	sp, #20 802659c:	bdf0      	pop	{r4, r5, r6, r7, pc} 802659e:	bf00      	nop 80265a0:	200019d8 	.word	0x200019d8 80265a4:	40013c00 	.word	0x40013c00080265a8 <TM_RTC_GetDateTimeFromUnix>:	uint16_t year;		/* Store unix time to unix in struct */	data->unix = unix;	/* Get seconds from unix */	data->seconds = unix % 60; 80265a8:	233c      	movs	r3, #60	; 0x3c		/* seconds = days * 86400; */	return seconds;}void TM_RTC_GetDateTimeFromUnix(TM_RTC_t* data, uint32_t unix) { 80265aa:	b5f0      	push	{r4, r5, r6, r7, lr}	uint16_t year;		/* Store unix time to unix in struct */	data->unix = unix;	/* Get seconds from unix */	data->seconds = unix % 60; 80265ac:	fbb1 f4f3 	udiv	r4, r1, r3	/* Go to minutes */	unix /= 60;	/* Get minutes */	data->minutes = unix % 60; 80265b0:	fbb4 f2f3 	udiv	r2, r4, r3void TM_RTC_GetDateTimeFromUnix(TM_RTC_t* data, uint32_t unix) {	uint16_t year;		/* Store unix time to unix in struct */	data->unix = unix; 80265b4:	60c1      	str	r1, [r0, #12]	/* Get seconds from unix */	data->seconds = unix % 60; 80265b6:	fb03 1114 	mls	r1, r3, r4, r1 80265ba:	7001      	strb	r1, [r0, #0]	/* Go to minutes */	unix /= 60;	/* Get minutes */	data->minutes = unix % 60; 80265bc:	fb03 4312 	mls	r3, r3, r2, r4	/* Go to hours */	unix /= 60;	/* Get hours */	data->hours = unix % 24; 80265c0:	2118      	movs	r1, #24	/* Get seconds from unix */	data->seconds = unix % 60;	/* Go to minutes */	unix /= 60;	/* Get minutes */	data->minutes = unix % 60; 80265c2:	7103      	strb	r3, [r0, #4]	/* Go to hours */	unix /= 60;	/* Get hours */	data->hours = unix % 24; 80265c4:	fbb2 f3f1 	udiv	r3, r2, r1 80265c8:	fb01 2213 	mls	r2, r1, r3, r2 80265cc:	7142      	strb	r2, [r0, #5]	/* Go to days */	unix /= 24;		/* Get week day */	/* Monday is day one */	data->day = (unix + 3) % 7 + 1; 80265ce:	1cd9      	adds	r1, r3, #3 80265d0:	2207      	movs	r2, #7 80265d2:	fbb1 f4f2 	udiv	r4, r1, r2 80265d6:	fb02 1214 	mls	r2, r2, r4, r1 80265da:	3201      	adds	r2, #1 80265dc:	7182      	strb	r2, [r0, #6]	/* Get year */	year = 1970;	while (1) {		if (TM_RTC_LEAP_YEAR(year)) {			if (unix >= 366) { 80265de:	f240 156d 	movw	r5, #365	; 0x16d	/* Get week day */	/* Monday is day one */	data->day = (unix + 3) % 7 + 1;	/* Get year */	year = 1970; 80265e2:	f240 72b2 	movw	r2, #1970	; 0x7b2	while (1) {		if (TM_RTC_LEAP_YEAR(year)) { 80265e6:	f44f 71c8 	mov.w	r1, #400	; 0x190 80265ea:	2464      	movs	r4, #100	; 0x64 80265ec:	f012 0603 	ands.w	r6, r2, #3 80265f0:	d105      	bne.n	80265fe <TM_RTC_GetDateTimeFromUnix+0x56> 80265f2:	fbb2 f7f4 	udiv	r7, r2, r4 80265f6:	fb04 2717 	mls	r7, r4, r7, r2 80265fa:	b2bf      	uxth	r7, r7 80265fc:	b92f      	cbnz	r7, 802660a <TM_RTC_GetDateTimeFromUnix+0x62> 80265fe:	fbb2 f7f1 	udiv	r7, r2, r1 8026602:	fb01 2717 	mls	r7, r1, r7, r2 8026606:	b2bf      	uxth	r7, r7 8026608:	b927      	cbnz	r7, 8026614 <TM_RTC_GetDateTimeFromUnix+0x6c>			if (unix >= 366) { 802660a:	42ab      	cmp	r3, r5 802660c:	d90b      	bls.n	8026626 <TM_RTC_GetDateTimeFromUnix+0x7e>				unix -= 366; 802660e:	f5a3 73b7 	sub.w	r3, r3, #366	; 0x16e	/* Get year */	year = 1970;	while (1) {		if (TM_RTC_LEAP_YEAR(year)) {			if (unix >= 366) { 8026612:	e005      	b.n	8026620 <TM_RTC_GetDateTimeFromUnix+0x78>				unix -= 366;			} else {				break;			}		} else if (unix >= 365) { 8026614:	f5b3 7fb6 	cmp.w	r3, #364	; 0x16c 8026618:	d905      	bls.n	8026626 <TM_RTC_GetDateTimeFromUnix+0x7e>			unix -= 365; 802661a:	f46f 76b6 	mvn.w	r6, #364	; 0x16c 802661e:	199b      	adds	r3, r3, r6		} else {			break;		}		year++; 8026620:	3201      	adds	r2, #1 8026622:	b292      	uxth	r2, r2	} 8026624:	e7e2      	b.n	80265ec <TM_RTC_GetDateTimeFromUnix+0x44>	/* Get year in xx format */	data->year = (uint8_t) (year - 2000); 8026626:	f102 0130 	add.w	r1, r2, #48	; 0x30 802662a:	7241      	strb	r1, [r0, #9]	/* Get month */	for (data->month = 0; data->month < 12; data->month++) { 802662c:	2100      	movs	r1, #0 802662e:	7201      	strb	r1, [r0, #8]		if (TM_RTC_LEAP_YEAR(year) && unix >= (uint32_t)TM_RTC_Months[1][data->month]) { 8026630:	2164      	movs	r1, #100	; 0x64 8026632:	fbb2 f7f1 	udiv	r7, r2, r1 8026636:	fb01 2117 	mls	r1, r1, r7, r2 802663a:	b28f      	uxth	r7, r1 802663c:	f44f 71c8 	mov.w	r1, #400	; 0x190 8026640:	fbb2 f4f1 	udiv	r4, r2, r1 8026644:	fb01 2214 	mls	r2, r1, r4, r2 8026648:	b292      	uxth	r2, r2			unix -= TM_RTC_Months[1][data->month];		} else if (unix >= (uint32_t)TM_RTC_Months[0][data->month]) { 802664a:	4c0c      	ldr	r4, [pc, #48]	; (802667c <TM_RTC_GetDateTimeFromUnix+0xd4>)		year++;	}	/* Get year in xx format */	data->year = (uint8_t) (year - 2000);	/* Get month */	for (data->month = 0; data->month < 12; data->month++) { 802664c:	e012      	b.n	8026674 <TM_RTC_GetDateTimeFromUnix+0xcc>		if (TM_RTC_LEAP_YEAR(year) && unix >= (uint32_t)TM_RTC_Months[1][data->month]) { 802664e:	b906      	cbnz	r6, 8026652 <TM_RTC_GetDateTimeFromUnix+0xaa> 8026650:	b907      	cbnz	r7, 8026654 <TM_RTC_GetDateTimeFromUnix+0xac> 8026652:	b922      	cbnz	r2, 802665e <TM_RTC_GetDateTimeFromUnix+0xb6> 8026654:	1865      	adds	r5, r4, r1 8026656:	7b2d      	ldrb	r5, [r5, #12] 8026658:	42ab      	cmp	r3, r5 802665a:	d300      	bcc.n	802665e <TM_RTC_GetDateTimeFromUnix+0xb6> 802665c:	e007      	b.n	802666e <TM_RTC_GetDateTimeFromUnix+0xc6>			unix -= TM_RTC_Months[1][data->month];		} else if (unix >= (uint32_t)TM_RTC_Months[0][data->month]) { 802665e:	5c65      	ldrb	r5, [r4, r1] 8026660:	42ab      	cmp	r3, r5 8026662:	d204      	bcs.n	802666e <TM_RTC_GetDateTimeFromUnix+0xc6>			break;		}	}	/* Get month */	/* Month starts with 1 */	data->month++; 8026664:	3101      	adds	r1, #1	/* Get date */	/* Date starts with 1 */	data->date = unix + 1; 8026666:	3301      	adds	r3, #1			break;		}	}	/* Get month */	/* Month starts with 1 */	data->month++; 8026668:	7201      	strb	r1, [r0, #8]	/* Get date */	/* Date starts with 1 */	data->date = unix + 1; 802666a:	71c3      	strb	r3, [r0, #7] 802666c:	bdf0      	pop	{r4, r5, r6, r7, pc}		year++;	}	/* Get year in xx format */	data->year = (uint8_t) (year - 2000);	/* Get month */	for (data->month = 0; data->month < 12; data->month++) { 802666e:	3101      	adds	r1, #1		if (TM_RTC_LEAP_YEAR(year) && unix >= (uint32_t)TM_RTC_Months[1][data->month]) {			unix -= TM_RTC_Months[1][data->month];		} else if (unix >= (uint32_t)TM_RTC_Months[0][data->month]) {			unix -= TM_RTC_Months[0][data->month]; 8026670:	1b5b      	subs	r3, r3, r5		year++;	}	/* Get year in xx format */	data->year = (uint8_t) (year - 2000);	/* Get month */	for (data->month = 0; data->month < 12; data->month++) { 8026672:	7201      	strb	r1, [r0, #8] 8026674:	7a01      	ldrb	r1, [r0, #8] 8026676:	290b      	cmp	r1, #11 8026678:	d9e9      	bls.n	802664e <TM_RTC_GetDateTimeFromUnix+0xa6> 802667a:	e7f3      	b.n	8026664 <TM_RTC_GetDateTimeFromUnix+0xbc> 802667c:	20000648 	.word	0x2000064808026680 <TM_RTC_Correction>:  * @brief  Кореектировака времени.  * @param  Часовой пояс  * @retval   */void TM_RTC_Correction(float utc){ 8026680:	b510      	push	{r4, lr} 8026682:	b088      	sub	sp, #32 8026684:	4604      	mov	r4, r0  TM_RTC_t newData;  int      utcSec;  uint32_t unixTime;    /* Получаем текущее время */  TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN); 8026686:	2100      	movs	r1, #0 8026688:	4668      	mov	r0, sp 802668a:	f7ff fefd 	bl	8026488 <TM_RTC_GetDateTime>    /* Рассчитываем поправку */  utcSec = (int)(3600.0*utc); 802668e:	4620      	mov	r0, r4 8026690:	f7f9 ff42 	bl	8020518 <__aeabi_f2d> 8026694:	a308      	add	r3, pc, #32	; (adr r3, 80266b8 <TM_RTC_Correction+0x38>) 8026696:	e9d3 2300 	ldrd	r2, r3, [r3] 802669a:	f7f9 ff91 	bl	80205c0 <__aeabi_dmul> 802669e:	f7fa fa29 	bl	8020af4 <__aeabi_d2iz>  unixTime = data.unix + utcSec; 80266a2:	9903      	ldr	r1, [sp, #12] 80266a4:	1841      	adds	r1, r0, r1    /* Устанавливаем новое время */  TM_RTC_GetDateTimeFromUnix(&newData, unixTime); 80266a6:	a804      	add	r0, sp, #16 80266a8:	f7ff ff7e 	bl	80265a8 <TM_RTC_GetDateTimeFromUnix>  TM_RTC_SetDateTime(&newData, TM_RTC_Format_BIN); 80266ac:	a804      	add	r0, sp, #16 80266ae:	2100      	movs	r1, #0 80266b0:	f7ff fd0e 	bl	80260d0 <TM_RTC_SetDateTime>} 80266b4:	b008      	add	sp, #32 80266b6:	bd10      	pop	{r4, pc} 80266b8:	00000000 	.word	0x00000000 80266bc:	40ac2000 	.word	0x40ac2000080266c0 <TM_RTC_SetDataTimeUnix>:  return TM_RTC_Status;  }void TM_RTC_SetDataTimeUnix(uint32_t unixTime){ 80266c0:	b51f      	push	{r0, r1, r2, r3, r4, lr} 80266c2:	4601      	mov	r1, r0  TM_RTC_t data;    TM_RTC_GetDateTimeFromUnix(&data, unixTime); 80266c4:	4668      	mov	r0, sp 80266c6:	f7ff ff6f 	bl	80265a8 <TM_RTC_GetDateTimeFromUnix>  TM_RTC_SetDateTime(&data, TM_RTC_Format_BIN); 80266ca:	4668      	mov	r0, sp 80266cc:	2100      	movs	r1, #0 80266ce:	f7ff fcff 	bl	80260d0 <TM_RTC_SetDateTime>} 80266d2:	b005      	add	sp, #20 80266d4:	bd00      	pop	{pc}080266d6 <TM_RTC_RequestHandler>:	/* Read data from backup register */	return *(uint32_t *)((&RTC->BKP0R) + 4 * location);}/* Callbacks */__weak void TM_RTC_RequestHandler(void) { 80266d6:	4770      	bx	lr080266d8 <TM_RTC_AlarmAHandler>:	/* If user needs this function, then they should be defined separatelly in your project */}__weak void TM_RTC_AlarmAHandler(void) { 80266d8:	4770      	bx	lr080266da <TM_RTC_AlarmBHandler>:	/* If user needs this function, then they should be defined separatelly in your project */}__weak void TM_RTC_AlarmBHandler(void) { 80266da:	4770      	bx	lr080266dc <RTC_WKUP_IRQHandler>:	/* If user needs this function, then they should be defined separatelly in your project */}/* Private RTC IRQ handlers */void RTC_WKUP_IRQHandler(void) { 80266dc:	b508      	push	{r3, lr}	/* Check for RTC interrupt */	if (RTC_GetITStatus(RTC_IT_WUT) != RESET) { 80266de:	f44f 4080 	mov.w	r0, #16384	; 0x4000 80266e2:	f7ff fa25 	bl	8025b30 <RTC_GetITStatus> 80266e6:	b128      	cbz	r0, 80266f4 <RTC_WKUP_IRQHandler+0x18>		/* Clear interrupt flags */		RTC_ClearITPendingBit(RTC_IT_WUT); 80266e8:	f44f 4080 	mov.w	r0, #16384	; 0x4000 80266ec:	f7ff fa38 	bl	8025b60 <RTC_ClearITPendingBit>				/* Call user function */		TM_RTC_RequestHandler(); 80266f0:	f7ff fff1 	bl	80266d6 <TM_RTC_RequestHandler>	}		/* Clear EXTI line 22 bit */	EXTI->PR = 0x00400000; 80266f4:	4b02      	ldr	r3, [pc, #8]	; (8026700 <RTC_WKUP_IRQHandler+0x24>) 80266f6:	f44f 0280 	mov.w	r2, #4194304	; 0x400000 80266fa:	615a      	str	r2, [r3, #20] 80266fc:	bd08      	pop	{r3, pc} 80266fe:	bf00      	nop 8026700:	40013c00 	.word	0x40013c0008026704 <RTC_Alarm_IRQHandler>:}void RTC_Alarm_IRQHandler(void) { 8026704:	b508      	push	{r3, lr}	/* RTC Alarm A check */	if (RTC_GetITStatus(RTC_IT_ALRA) != RESET) { 8026706:	f44f 5080 	mov.w	r0, #4096	; 0x1000 802670a:	f7ff fa11 	bl	8025b30 <RTC_GetITStatus> 802670e:	b128      	cbz	r0, 802671c <RTC_Alarm_IRQHandler+0x18>		/* Clear RTC Alarm A interrupt flag */		RTC_ClearITPendingBit(RTC_IT_ALRA); 8026710:	f44f 5080 	mov.w	r0, #4096	; 0x1000 8026714:	f7ff fa24 	bl	8025b60 <RTC_ClearITPendingBit>				/* Call user function for Alarm A */		TM_RTC_AlarmAHandler(); 8026718:	f7ff ffde 	bl	80266d8 <TM_RTC_AlarmAHandler>	}		/* RTC Alarm B check */	if (RTC_GetITStatus(RTC_IT_ALRB) != RESET) { 802671c:	f44f 5000 	mov.w	r0, #8192	; 0x2000 8026720:	f7ff fa06 	bl	8025b30 <RTC_GetITStatus> 8026724:	b128      	cbz	r0, 8026732 <RTC_Alarm_IRQHandler+0x2e>		/* Clear RTC Alarm A interrupt flag */		RTC_ClearITPendingBit(RTC_IT_ALRB); 8026726:	f44f 5000 	mov.w	r0, #8192	; 0x2000 802672a:	f7ff fa19 	bl	8025b60 <RTC_ClearITPendingBit>				/* Call user function for Alarm B */		TM_RTC_AlarmBHandler(); 802672e:	f7ff ffd4 	bl	80266da <TM_RTC_AlarmBHandler>	}		/* Clear EXTI line 17 bit */	EXTI->PR = 0x00020000; 8026732:	4b02      	ldr	r3, [pc, #8]	; (802673c <RTC_Alarm_IRQHandler+0x38>) 8026734:	f44f 3200 	mov.w	r2, #131072	; 0x20000 8026738:	615a      	str	r2, [r3, #20] 802673a:	bd08      	pop	{r3, pc} 802673c:	40013c00 	.word	0x40013c0008026740 <RTC_SetProfTime>:/**  * @brief  Установливает время срабатывания профилактики сульфатации  */void RTC_SetProfTime(char *str){ 8026740:	b530      	push	{r4, r5, lr}  uint32_t unixTime;  uint8_t i = 0;	  /* Get date */  tmp.date = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 8026742:	2200      	movs	r2, #0/**  * @brief  Установливает время срабатывания профилактики сульфатации  */void RTC_SetProfTime(char *str){ 8026744:	b085      	sub	sp, #20  TM_RTC_t tmp;  uint32_t unixTime;  uint8_t i = 0; 8026746:	4613      	mov	r3, r2	  /* Get date */  tmp.date = 0;  while (TM_RTC_CHARISNUM(*(str + i))) {	tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026748:	250a      	movs	r5, #10  uint32_t unixTime;  uint8_t i = 0;	  /* Get date */  tmp.date = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 802674a:	e006      	b.n	802675a <RTC_SetProfTime+0x1a>	tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802674c:	fb05 1202 	mla	r2, r5, r2, r1 8026750:	3a30      	subs	r2, #48	; 0x30	i++; 8026752:	3301      	adds	r3, #1  uint8_t i = 0;	  /* Get date */  tmp.date = 0;  while (TM_RTC_CHARISNUM(*(str + i))) {	tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026754:	f002 02ff 	and.w	r2, r2, #255	; 0xff	i++; 8026758:	b2db      	uxtb	r3, r3  uint32_t unixTime;  uint8_t i = 0;	  /* Get date */  tmp.date = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 802675a:	5cc1      	ldrb	r1, [r0, r3] 802675c:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 8026760:	2c09      	cmp	r4, #9 8026762:	d9f3      	bls.n	802674c <RTC_SetProfTime+0xc>	tmp.date = tmp.date * 10 + TM_RTC_CHAR2NUM(*(str + i));	i++;  }  i++; 8026764:	3301      	adds	r3, #1 8026766:	f88d 2007 	strb.w	r2, [sp, #7] 802676a:	b2db      	uxtb	r3, r3	  /* Get month */  tmp.month = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 802676c:	2200      	movs	r2, #0	tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802676e:	250a      	movs	r5, #10  }  i++;	  /* Get month */  tmp.month = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 8026770:	e006      	b.n	8026780 <RTC_SetProfTime+0x40>	tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026772:	fb05 1202 	mla	r2, r5, r2, r1 8026776:	3a30      	subs	r2, #48	; 0x30	i++; 8026778:	3301      	adds	r3, #1  i++;	  /* Get month */  tmp.month = 0;  while (TM_RTC_CHARISNUM(*(str + i))) {	tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i)); 802677a:	f002 02ff 	and.w	r2, r2, #255	; 0xff	i++; 802677e:	b2db      	uxtb	r3, r3  }  i++;	  /* Get month */  tmp.month = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 8026780:	5cc1      	ldrb	r1, [r0, r3] 8026782:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 8026786:	2c09      	cmp	r4, #9 8026788:	d9f3      	bls.n	8026772 <RTC_SetProfTime+0x32>	tmp.month = tmp.month * 10 + TM_RTC_CHAR2NUM(*(str + i));	i++;  }  //i++;  i+=3; 802678a:	3303      	adds	r3, #3 802678c:	f88d 2008 	strb.w	r2, [sp, #8] 8026790:	b2db      	uxtb	r3, r3    /* Get year */  tmp.year = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 8026792:	2200      	movs	r2, #0	tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026794:	250a      	movs	r5, #10  //i++;  i+=3;    /* Get year */  tmp.year = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 8026796:	e006      	b.n	80267a6 <RTC_SetProfTime+0x66>	tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i)); 8026798:	fb05 1202 	mla	r2, r5, r2, r1 802679c:	3a30      	subs	r2, #48	; 0x30	i++; 802679e:	3301      	adds	r3, #1  i+=3;    /* Get year */  tmp.year = 0;  while (TM_RTC_CHARISNUM(*(str + i))) {	tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267a0:	f002 02ff 	and.w	r2, r2, #255	; 0xff	i++; 80267a4:	b2db      	uxtb	r3, r3  //i++;  i+=3;    /* Get year */  tmp.year = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267a6:	5cc1      	ldrb	r1, [r0, r3] 80267a8:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 80267ac:	2c09      	cmp	r4, #9 80267ae:	d9f3      	bls.n	8026798 <RTC_SetProfTime+0x58>	tmp.year = tmp.year * 10 + TM_RTC_CHAR2NUM(*(str + i));	i++;  }  i++;  i++; 80267b0:	3302      	adds	r3, #2 80267b2:	f88d 2009 	strb.w	r2, [sp, #9] 80267b6:	b2db      	uxtb	r3, r3	  /* Get hours */  tmp.hours = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267b8:	2200      	movs	r2, #0	tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267ba:	250a      	movs	r5, #10  i++;  i++;	  /* Get hours */  tmp.hours = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267bc:	e006      	b.n	80267cc <RTC_SetProfTime+0x8c>	tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267be:	fb05 1202 	mla	r2, r5, r2, r1 80267c2:	3a30      	subs	r2, #48	; 0x30	i++; 80267c4:	3301      	adds	r3, #1  i++;	  /* Get hours */  tmp.hours = 0;  while (TM_RTC_CHARISNUM(*(str + i))) {	tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267c6:	f002 02ff 	and.w	r2, r2, #255	; 0xff	i++; 80267ca:	b2db      	uxtb	r3, r3  i++;  i++;	  /* Get hours */  tmp.hours = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267cc:	5cc1      	ldrb	r1, [r0, r3] 80267ce:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 80267d2:	2c09      	cmp	r4, #9 80267d4:	d9f3      	bls.n	80267be <RTC_SetProfTime+0x7e>	tmp.hours = tmp.hours * 10 + TM_RTC_CHAR2NUM(*(str + i));	i++;  }  i++; 80267d6:	3301      	adds	r3, #1 80267d8:	f88d 2005 	strb.w	r2, [sp, #5] 80267dc:	b2db      	uxtb	r3, r3	  /* Get minutes */  tmp.minutes = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267de:	2200      	movs	r2, #0	tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267e0:	250a      	movs	r5, #10  }  i++;	  /* Get minutes */  tmp.minutes = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267e2:	e006      	b.n	80267f2 <RTC_SetProfTime+0xb2>	tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267e4:	fb05 1202 	mla	r2, r5, r2, r1 80267e8:	3a30      	subs	r2, #48	; 0x30	i++; 80267ea:	3301      	adds	r3, #1  i++;	  /* Get minutes */  tmp.minutes = 0;  while (TM_RTC_CHARISNUM(*(str + i))) {	tmp.minutes = tmp.minutes * 10 + TM_RTC_CHAR2NUM(*(str + i)); 80267ec:	f002 02ff 	and.w	r2, r2, #255	; 0xff	i++; 80267f0:	b2db      	uxtb	r3, r3  }  i++;	  /* Get minutes */  tmp.minutes = 0;  while (TM_RTC_CHARISNUM(*(str + i))) { 80267f2:	5cc1      	ldrb	r1, [r0, r3] 80267f4:	f1a1 0430 	sub.w	r4, r1, #48	; 0x30 80267f8:	2c09      	cmp	r4, #9 80267fa:	d9f3      	bls.n	80267e4 <RTC_SetProfTime+0xa4>	i++;  }  i++;	  /* Get seconds */  tmp.seconds = 0; 80267fc:	2300      	movs	r3, #0 80267fe:	f88d 3000 	strb.w	r3, [sp]	  /* Устанавливаем +1 для профилактики */  tmp.year += 1; 8026802:	f89d 3009 	ldrb.w	r3, [sp, #9] 8026806:	f88d 2004 	strb.w	r2, [sp, #4] 802680a:	3301      	adds	r3, #1  unixTime = TM_RTC_GetUnixTimeStamp(&tmp);   802680c:	4668      	mov	r0, sp	  /* Get seconds */  tmp.seconds = 0;	  /* Устанавливаем +1 для профилактики */  tmp.year += 1; 802680e:	f88d 3009 	strb.w	r3, [sp, #9]  unixTime = TM_RTC_GetUnixTimeStamp(&tmp);   8026812:	f7ff fdd3 	bl	80263bc <TM_RTC_GetUnixTimeStamp>	if (location > 18) {		return;	}		/* Write data to backup register */	*(uint32_t *)((&RTC->BKP0R) + 4 * location) = value; 8026816:	4b02      	ldr	r3, [pc, #8]	; (8026820 <RTC_SetProfTime+0xe0>) 8026818:	6018      	str	r0, [r3, #0]	  /* Устанавливаем +1 для профилактики */  tmp.year += 1;  unixTime = TM_RTC_GetUnixTimeStamp(&tmp);    TM_RTC_WriteBackupRegister(RTC_BKP_DR0, unixTime); 802681a:	b005      	add	sp, #20 802681c:	bd30      	pop	{r4, r5, pc} 802681e:	bf00      	nop 8026820:	40002850 	.word	0x4000285008026824 <spi_tx_rx>://static TN_MUTEX spi_mutex;static uint8_t spi_tx_rx(uint8_t byte) {	while (!(SPI2->SR & SPI_SR_TXE)) {} 8026824:	4907      	ldr	r1, [pc, #28]	; (8026844 <spi_tx_rx+0x20>) 8026826:	890a      	ldrh	r2, [r1, #8] 8026828:	4b06      	ldr	r3, [pc, #24]	; (8026844 <spi_tx_rx+0x20>) 802682a:	f002 0202 	and.w	r2, r2, #2 802682e:	b292      	uxth	r2, r2 8026830:	2a00      	cmp	r2, #0 8026832:	d0f8      	beq.n	8026826 <spi_tx_rx+0x2>	SPI2->DR = byte; 8026834:	8198      	strh	r0, [r3, #12]			while (!(SPI2->SR & SPI_SR_RXNE)) {} 8026836:	891a      	ldrh	r2, [r3, #8] 8026838:	07d2      	lsls	r2, r2, #31 802683a:	d5fc      	bpl.n	8026836 <spi_tx_rx+0x12>	return SPI2->DR; 802683c:	4b01      	ldr	r3, [pc, #4]	; (8026844 <spi_tx_rx+0x20>) 802683e:	8998      	ldrh	r0, [r3, #12]} 8026840:	b2c0      	uxtb	r0, r0 8026842:	4770      	bx	lr 8026844:	40003800 	.word	0x4000380008026848 <send_addr>:		status = spi_tx_rx(0);	} while (status & SR_WIP);	SPI_FLASH_CS_H();}static inline void send_addr(int addr) { 8026848:	b510      	push	{r4, lr} 802684a:	4604      	mov	r4, r0	spi_tx_rx((addr >> 16) & 0xFF); 802684c:	f3c0 4007 	ubfx	r0, r0, #16, #8 8026850:	f7ff ffe8 	bl	8026824 <spi_tx_rx>	spi_tx_rx((addr >> 8) & 0xFF); 8026854:	f3c4 2007 	ubfx	r0, r4, #8, #8 8026858:	f7ff ffe4 	bl	8026824 <spi_tx_rx>	spi_tx_rx(addr & 0xFF); 802685c:	b2e0      	uxtb	r0, r4} 802685e:	e8bd 4010 	ldmia.w	sp!, {r4, lr}}static inline void send_addr(int addr) {	spi_tx_rx((addr >> 16) & 0xFF);	spi_tx_rx((addr >> 8) & 0xFF);	spi_tx_rx(addr & 0xFF); 8026862:	f7ff bfdf 	b.w	8026824 <spi_tx_rx>08026866 <wait_write_enable>:spi_flash_desc_t spi_flash_desc;static inline void wait_write_enable(void) {	uint8_t status;//	spi_cs_down();	SPI_FLASH_CS_L(); 8026866:	2005      	movs	r0, #5#define SR_WEL	(1 << 1)#define SR_SRWD	(1 << 7)spi_flash_desc_t spi_flash_desc;static inline void wait_write_enable(void) { 8026868:	b508      	push	{r3, lr}	uint8_t status;//	spi_cs_down();	SPI_FLASH_CS_L(); 802686a:	2100      	movs	r1, #0 802686c:	f7ff fb60 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_RDSR); 8026870:	2005      	movs	r0, #5 8026872:	f7ff ffd7 	bl	8026824 <spi_tx_rx>	do {		status = spi_tx_rx(0); 8026876:	2000      	movs	r0, #0 8026878:	f7ff ffd4 	bl	8026824 <spi_tx_rx>	} while (!(status & SR_WEL)); 802687c:	f000 0002 	and.w	r0, r0, #2 8026880:	b2c0      	uxtb	r0, r0 8026882:	2800      	cmp	r0, #0 8026884:	d0f7      	beq.n	8026876 <wait_write_enable+0x10>//	spi_cs_up();	SPI_FLASH_CS_H(); 8026886:	2005      	movs	r0, #5 8026888:	2101      	movs	r1, #1} 802688a:	e8bd 4008 	ldmia.w	sp!, {r3, lr}	spi_tx_rx(CMD_RDSR);	do {		status = spi_tx_rx(0);	} while (!(status & SR_WEL));//	spi_cs_up();	SPI_FLASH_CS_H(); 802688e:	f7ff bb4f 	b.w	8025f30 <gpio_set>08026892 <wait_write_end>:}static inline void wait_write_end(void) {	uint8_t status;	SPI_FLASH_CS_L(); 8026892:	2005      	movs	r0, #5	} while (!(status & SR_WEL));//	spi_cs_up();	SPI_FLASH_CS_H();}static inline void wait_write_end(void) { 8026894:	b508      	push	{r3, lr}	uint8_t status;	SPI_FLASH_CS_L(); 8026896:	2100      	movs	r1, #0 8026898:	f7ff fb4a 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_RDSR); 802689c:	2005      	movs	r0, #5 802689e:	f7ff ffc1 	bl	8026824 <spi_tx_rx>	do {		status = spi_tx_rx(0); 80268a2:	2000      	movs	r0, #0 80268a4:	f7ff ffbe 	bl	8026824 <spi_tx_rx>	} while (status & SR_WIP); 80268a8:	07c1      	lsls	r1, r0, #31 80268aa:	d4fa      	bmi.n	80268a2 <wait_write_end+0x10>	SPI_FLASH_CS_H(); 80268ac:	2005      	movs	r0, #5 80268ae:	2101      	movs	r1, #1} 80268b0:	e8bd 4008 	ldmia.w	sp!, {r3, lr}	SPI_FLASH_CS_L();	spi_tx_rx(CMD_RDSR);	do {		status = spi_tx_rx(0);	} while (status & SR_WIP);	SPI_FLASH_CS_H(); 80268b4:	f7ff bb3c 	b.w	8025f30 <gpio_set>080268b8 <spi_flash_read>:		*((uint8_t *)buf++) = spi_tx_rx(0);	SPI_FLASH_CS_H();	return 0;}ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout) { 80268b8:	b570      	push	{r4, r5, r6, lr} 80268ba:	4605      	mov	r5, r0 80268bc:	460c      	mov	r4, r1	ssize_t ret = 0;//	ret = tn_mutex_lock(&spi_mutex, timeout);//	if (ret != TERR_NO_ERR)//		return ret;	SPI_FLASH_CS_L(); 80268be:	2005      	movs	r0, #5 80268c0:	2100      	movs	r1, #0		*((uint8_t *)buf++) = spi_tx_rx(0);	SPI_FLASH_CS_H();	return 0;}ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout) { 80268c2:	4616      	mov	r6, r2	ssize_t ret = 0;//	ret = tn_mutex_lock(&spi_mutex, timeout);//	if (ret != TERR_NO_ERR)//		return ret;	SPI_FLASH_CS_L(); 80268c4:	f7ff fb34 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_READ); 80268c8:	2003      	movs	r0, #3 80268ca:	f7ff ffab 	bl	8026824 <spi_tx_rx>	send_addr(addr); 80268ce:	4628      	mov	r0, r5 80268d0:	f7ff ffba 	bl	8026848 <send_addr>		*((uint8_t *)buf++) = spi_tx_rx(0);	SPI_FLASH_CS_H();	return 0;}ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout) { 80268d4:	19a6      	adds	r6, r4, r6//		return ret;	SPI_FLASH_CS_L();	spi_tx_rx(CMD_READ);	send_addr(addr);	while (len--) 80268d6:	e004      	b.n	80268e2 <spi_flash_read+0x2a>		*((uint8_t *)buf++) = spi_tx_rx(0); 80268d8:	2000      	movs	r0, #0 80268da:	f7ff ffa3 	bl	8026824 <spi_tx_rx> 80268de:	f804 0b01 	strb.w	r0, [r4], #1//		return ret;	SPI_FLASH_CS_L();	spi_tx_rx(CMD_READ);	send_addr(addr);	while (len--) 80268e2:	42b4      	cmp	r4, r6 80268e4:	d1f8      	bne.n	80268d8 <spi_flash_read+0x20>		*((uint8_t *)buf++) = spi_tx_rx(0);	SPI_FLASH_CS_H(); 80268e6:	2005      	movs	r0, #5 80268e8:	2101      	movs	r1, #1 80268ea:	f7ff fb21 	bl	8025f30 <gpio_set>//	tn_mutex_unlock(&spi_mutex);	return len;} 80268ee:	f04f 30ff 	mov.w	r0, #4294967295 80268f2:	bd70      	pop	{r4, r5, r6, pc}080268f4 <spi_flash_pp>://	ret = tn_mutex_lock(&spi_mutex, timeout);//	if (ret != TERR_NO_ERR)//		return ret;	// don't allow page wrapping	ssize_t ret = 0;	if ((addr & 0xFF) + len > 0xFF) 80268f4:	b2c3      	uxtb	r3, r0	return len;}#define TIMEOUT 10000uint16_t spi_flash_pp(int addr, const void *buf, size_t len, uint32_t timeout) { 80268f6:	b570      	push	{r4, r5, r6, lr} 80268f8:	4615      	mov	r5, r2//	ret = tn_mutex_lock(&spi_mutex, timeout);//	if (ret != TERR_NO_ERR)//		return ret;	// don't allow page wrapping	ssize_t ret = 0;	if ((addr & 0xFF) + len > 0xFF) 80268fa:	18d2      	adds	r2, r2, r3 80268fc:	2aff      	cmp	r2, #255	; 0xff	    len = 0x100 - (addr & 0xFF); 80268fe:	bf88      	it	hi 8026900:	f5c3 7580 	rsbhi	r5, r3, #256	; 0x100	return len;}#define TIMEOUT 10000uint16_t spi_flash_pp(int addr, const void *buf, size_t len, uint32_t timeout) { 8026904:	4604      	mov	r4, r0 8026906:	460e      	mov	r6, r1	ssize_t ret = 0;	if ((addr & 0xFF) + len > 0xFF)	    len = 0x100 - (addr & 0xFF);	ret = len;	SPI_FLASH_CS_L(); 8026908:	2005      	movs	r0, #5 802690a:	2100      	movs	r1, #0 802690c:	f7ff fb10 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_WREN); 8026910:	2006      	movs	r0, #6 8026912:	f7ff ff87 	bl	8026824 <spi_tx_rx>	SPI_FLASH_CS_H(); 8026916:	2005      	movs	r0, #5 8026918:	2101      	movs	r1, #1 802691a:	f7ff fb09 	bl	8025f30 <gpio_set>	wait_write_enable(); 802691e:	f7ff ffa2 	bl	8026866 <wait_write_enable>	SPI_FLASH_CS_L(); 8026922:	2100      	movs	r1, #0 8026924:	2005      	movs	r0, #5 8026926:	f7ff fb03 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_PP); 802692a:	2002      	movs	r0, #2 802692c:	f7ff ff7a 	bl	8026824 <spi_tx_rx>	send_addr(addr); 8026930:	4620      	mov	r0, r4 8026932:	f7ff ff89 	bl	8026848 <send_addr>	while (len--) 8026936:	2400      	movs	r4, #0 8026938:	e003      	b.n	8026942 <spi_flash_pp+0x4e>	    spi_tx_rx(*((uint8_t *)buf++)); 802693a:	5d30      	ldrb	r0, [r6, r4] 802693c:	f7ff ff72 	bl	8026824 <spi_tx_rx> 8026940:	3401      	adds	r4, #1	wait_write_enable();	SPI_FLASH_CS_L();	spi_tx_rx(CMD_PP);	send_addr(addr);	while (len--) 8026942:	42ac      	cmp	r4, r5 8026944:	d1f9      	bne.n	802693a <spi_flash_pp+0x46>	    spi_tx_rx(*((uint8_t *)buf++));	SPI_FLASH_CS_H(); 8026946:	2005      	movs	r0, #5 8026948:	2101      	movs	r1, #1 802694a:	f7ff faf1 	bl	8025f30 <gpio_set>	wait_write_end(); 802694e:	f7ff ffa0 	bl	8026892 <wait_write_end>//	tn_mutex_unlock(&spi_mutex);	return ret;} 8026952:	b2a0      	uxth	r0, r4 8026954:	bd70      	pop	{r4, r5, r6, pc}08026956 <spi_flash_write>:ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout) { 8026956:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8026958:	4607      	mov	r7, r0 802695a:	460e      	mov	r6, r1 802695c:	4615      	mov	r5, r2	int ret = 0, offset = 0; 802695e:	2400      	movs	r4, #0	do {	    ret = spi_flash_pp(addr + offset, buf + offset, len - offset, 0); 8026960:	1938      	adds	r0, r7, r4 8026962:	1931      	adds	r1, r6, r4 8026964:	1b2a      	subs	r2, r5, r4 8026966:	2300      	movs	r3, #0 8026968:	f7ff ffc4 	bl	80268f4 <spi_flash_pp>	    offset += ret; 802696c:	1824      	adds	r4, r4, r0	} while (len - offset); 802696e:	42a5      	cmp	r5, r4 8026970:	d1f6      	bne.n	8026960 <spi_flash_write+0xa>	return 0;} 8026972:	2000      	movs	r0, #0 8026974:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}08026976 <spi_flash_erase_sector>:	wait_write_end();	return 0;}int spi_flash_erase_sector(int addr, uint32_t timeout) { 8026976:	b510      	push	{r4, lr}	int ret = 0;//	ret = tn_mutex_lock(&spi_mutex, timeout);//	if (ret != TERR_NO_ERR)//		return ret;	SPI_FLASH_CS_L(); 8026978:	2100      	movs	r1, #0	wait_write_end();	return 0;}int spi_flash_erase_sector(int addr, uint32_t timeout) { 802697a:	4604      	mov	r4, r0	int ret = 0;//	ret = tn_mutex_lock(&spi_mutex, timeout);//	if (ret != TERR_NO_ERR)//		return ret;	SPI_FLASH_CS_L(); 802697c:	2005      	movs	r0, #5 802697e:	f7ff fad7 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_WREN); 8026982:	2006      	movs	r0, #6 8026984:	f7ff ff4e 	bl	8026824 <spi_tx_rx>	SPI_FLASH_CS_H(); 8026988:	2005      	movs	r0, #5 802698a:	2101      	movs	r1, #1 802698c:	f7ff fad0 	bl	8025f30 <gpio_set>	wait_write_enable(); 8026990:	f7ff ff69 	bl	8026866 <wait_write_enable>	SPI_FLASH_CS_L(); 8026994:	2100      	movs	r1, #0 8026996:	2005      	movs	r0, #5 8026998:	f7ff faca 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_SE); 802699c:	2020      	movs	r0, #32 802699e:	f7ff ff41 	bl	8026824 <spi_tx_rx>	send_addr(addr); 80269a2:	4620      	mov	r0, r4 80269a4:	f7ff ff50 	bl	8026848 <send_addr>	SPI_FLASH_CS_H(); 80269a8:	2005      	movs	r0, #5 80269aa:	2101      	movs	r1, #1 80269ac:	f7ff fac0 	bl	8025f30 <gpio_set>	wait_write_end(); 80269b0:	f7ff ff6f 	bl	8026892 <wait_write_end>//	tn_mutex_unlock(&spi_mutex);	return 0;} 80269b4:	2000      	movs	r0, #0 80269b6:	bd10      	pop	{r4, pc}080269b8 <spi_flash_init>:bool spi_flash_init(void) {	uint32_t i, ptable, bitsize = 0;	uint8_t tmp[4];	spi_flash_desc.present = false; 80269b8:	4b28      	ldr	r3, [pc, #160]	; (8026a5c <spi_flash_init+0xa4>)//	tn_mutex_unlock(&spi_mutex);	return 0;}bool spi_flash_init(void) { 80269ba:	b513      	push	{r0, r1, r4, lr}	uint32_t i, ptable, bitsize = 0;	uint8_t tmp[4];	spi_flash_desc.present = false; 80269bc:	2400      	movs	r4, #0 80269be:	701c      	strb	r4, [r3, #0]static void spi_init_(void) {//	tn_mutex_create(&spi_mutex, TN_MUTEX_ATTR_INHERIT, 0);	//tn_sem_create(&xact.ready, 0, 1);	RCC->APB1ENR |= RCC_APB1ENR_SPI2EN; 80269c0:	4b27      	ldr	r3, [pc, #156]	; (8026a60 <spi_flash_init+0xa8>) 80269c2:	6c1a      	ldr	r2, [r3, #64]	; 0x40 80269c4:	f442 4280 	orr.w	r2, r2, #16384	; 0x4000 80269c8:	641a      	str	r2, [r3, #64]	; 0x40	RCC->APB1RSTR |= RCC_APB1RSTR_SPI2RST; 80269ca:	6a1a      	ldr	r2, [r3, #32] 80269cc:	f442 4200 	orr.w	r2, r2, #32768	; 0x8000 80269d0:	621a      	str	r2, [r3, #32]	RCC->APB1RSTR &= ~RCC_APB1RSTR_SPI2RST; 80269d2:	6a1a      	ldr	r2, [r3, #32] 80269d4:	f422 4200 	bic.w	r2, r2, #32768	; 0x8000 80269d8:	621a      	str	r2, [r3, #32]	SPI2->CR1 &= ~SPI_CR1_SPE; 80269da:	f5a3 3300 	sub.w	r3, r3, #131072	; 0x20000	spi_tx_rx((addr >> 8) & 0xFF);	spi_tx_rx(addr & 0xFF);}static int spi_flash_read_sfdp(int addr, void *buf, size_t len) {	SPI_FLASH_CS_L(); 80269de:	4621      	mov	r1, r4	RCC->APB1ENR |= RCC_APB1ENR_SPI2EN;	RCC->APB1RSTR |= RCC_APB1RSTR_SPI2RST;	RCC->APB1RSTR &= ~RCC_APB1RSTR_SPI2RST;	SPI2->CR1 &= ~SPI_CR1_SPE; 80269e0:	881a      	ldrh	r2, [r3, #0] 80269e2:	f022 0240 	bic.w	r2, r2, #64	; 0x40 80269e6:	0412      	lsls	r2, r2, #16 80269e8:	0c12      	lsrs	r2, r2, #16 80269ea:	801a      	strh	r2, [r3, #0]	//SPI2->CR1 = SPI_CR1_MSTR | SPI_CR1_BR_1 | SPI_CR1_SSM | SPI_CR1_SSI;	SPI2->CR1 = SPI_CR1_MSTR | SPI_CR1_SSM | SPI_CR1_SSI; 80269ec:	f44f 7241 	mov.w	r2, #772	; 0x304 80269f0:	801a      	strh	r2, [r3, #0]	SPI2->CR2 = 0;//SPI_CR2_SSOE; 80269f2:	809c      	strh	r4, [r3, #4]	SPI2->CR1 |= SPI_CR1_SPE; 80269f4:	881a      	ldrh	r2, [r3, #0] 80269f6:	b292      	uxth	r2, r2 80269f8:	f042 0240 	orr.w	r2, r2, #64	; 0x40 80269fc:	801a      	strh	r2, [r3, #0]	spi_tx_rx((addr >> 8) & 0xFF);	spi_tx_rx(addr & 0xFF);}static int spi_flash_read_sfdp(int addr, void *buf, size_t len) {	SPI_FLASH_CS_L(); 80269fe:	2005      	movs	r0, #5 8026a00:	f7ff fa96 	bl	8025f30 <gpio_set>	spi_tx_rx(CMD_RDSFDP); 8026a04:	205a      	movs	r0, #90	; 0x5a 8026a06:	f7ff ff0d 	bl	8026824 <spi_tx_rx>	send_addr(addr); 8026a0a:	4620      	mov	r0, r4 8026a0c:	f7ff ff1c 	bl	8026848 <send_addr>	spi_tx_rx(0); 8026a10:	4620      	mov	r0, r4 8026a12:	f7ff ff07 	bl	8026824 <spi_tx_rx>	while (len--)		*((uint8_t *)buf++) = spi_tx_rx(0); 8026a16:	2000      	movs	r0, #0 8026a18:	f7ff ff04 	bl	8026824 <spi_tx_rx> 8026a1c:	ab01      	add	r3, sp, #4 8026a1e:	5518      	strb	r0, [r3, r4] 8026a20:	3401      	adds	r4, #1static int spi_flash_read_sfdp(int addr, void *buf, size_t len) {	SPI_FLASH_CS_L();	spi_tx_rx(CMD_RDSFDP);	send_addr(addr);	spi_tx_rx(0);	while (len--) 8026a22:	2c04      	cmp	r4, #4 8026a24:	d1f7      	bne.n	8026a16 <spi_flash_init+0x5e>		*((uint8_t *)buf++) = spi_tx_rx(0);	SPI_FLASH_CS_H(); 8026a26:	2005      	movs	r0, #5 8026a28:	2101      	movs	r1, #1 8026a2a:	f7ff fa81 	bl	8025f30 <gpio_set>	spi_init_();	// check SFDP magic	spi_flash_read_sfdp(0, tmp, 4);	if (!(tmp[0] == 0x53 && tmp[1] == 0x46 &&  8026a2e:	f89d 3004 	ldrb.w	r3, [sp, #4] 8026a32:	2b53      	cmp	r3, #83	; 0x53 8026a34:	d110      	bne.n	8026a58 <spi_flash_init+0xa0> 8026a36:	f89d 3005 	ldrb.w	r3, [sp, #5] 8026a3a:	2b46      	cmp	r3, #70	; 0x46 8026a3c:	d10c      	bne.n	8026a58 <spi_flash_init+0xa0> 8026a3e:	f89d 3006 	ldrb.w	r3, [sp, #6] 8026a42:	2b44      	cmp	r3, #68	; 0x44 8026a44:	d108      	bne.n	8026a58 <spi_flash_init+0xa0> 8026a46:	f89d 0007 	ldrb.w	r0, [sp, #7] 8026a4a:	f1b0 0c50 	subs.w	ip, r0, #80	; 0x50 8026a4e:	f1dc 0000 	rsbs	r0, ip, #0 8026a52:	eb50 000c 	adcs.w	r0, r0, ip 8026a56:	e000      	b.n	8026a5a <spi_flash_init+0xa2>		tmp[2] == 0x44 && tmp[3] == 0x50))		return 0; 8026a58:	2000      	movs	r0, #0	if (!spi_flash_desc.sector_size)		return;	spi_flash_desc.present = true;*/} 8026a5a:	bd1c      	pop	{r2, r3, r4, pc} 8026a5c:	2000e5ec 	.word	0x2000e5ec 8026a60:	40023800 	.word	0x4002380008026a64 <spi_flash_test>:#define  bufsize2 (countof(txbuf2)-1)uint8_t  rxbuf1[bufsize1] = {0};uint8_t  rxbuf2[bufsize2] = {0};void spi_flash_test(void) { 8026a64:	b510      	push	{r4, lr}    if (!spi_flash_init()) 8026a66:	f7ff ffa7 	bl	80269b8 <spi_flash_init> 8026a6a:	2800      	cmp	r0, #0 8026a6c:	d04a      	beq.n	8026b04 <spi_flash_test+0xa0>	return;    int ret = 0, addr = 0, offset = 0;    spi_flash_read(0, rxbuf1, bufsize1, 0); 8026a6e:	2000      	movs	r0, #0 8026a70:	f640 62f9 	movw	r2, #3833	; 0xef9 8026a74:	4603      	mov	r3, r0 8026a76:	4924      	ldr	r1, [pc, #144]	; (8026b08 <spi_flash_test+0xa4>) 8026a78:	f7ff ff1e 	bl	80268b8 <spi_flash_read>    spi_flash_erase_sector(0,0); 8026a7c:	2000      	movs	r0, #0 8026a7e:	4601      	mov	r1, r0 8026a80:	f7ff ff79 	bl	8026976 <spi_flash_erase_sector>    spi_flash_read(0, rxbuf1, bufsize1, 0); 8026a84:	2000      	movs	r0, #0 8026a86:	4920      	ldr	r1, [pc, #128]	; (8026b08 <spi_flash_test+0xa4>) 8026a88:	f640 62f9 	movw	r2, #3833	; 0xef9 8026a8c:	4603      	mov	r3, r0 8026a8e:	f7ff ff13 	bl	80268b8 <spi_flash_read>        spi_flash_write(addr, txbuf1, bufsize1, 0); 8026a92:	2000      	movs	r0, #0 8026a94:	4603      	mov	r3, r0 8026a96:	491d      	ldr	r1, [pc, #116]	; (8026b0c <spi_flash_test+0xa8>) 8026a98:	f640 62f9 	movw	r2, #3833	; 0xef9 8026a9c:	f7ff ff5b 	bl	8026956 <spi_flash_write>    memset(rxbuf1, 0, bufsize1); 8026aa0:	2100      	movs	r1, #0 8026aa2:	f640 62f9 	movw	r2, #3833	; 0xef9 8026aa6:	4818      	ldr	r0, [pc, #96]	; (8026b08 <spi_flash_test+0xa4>) 8026aa8:	f7fb f80a 	bl	8021ac0 <memset>    spi_flash_read(0, rxbuf1, bufsize1, 0); 8026aac:	2000      	movs	r0, #0 8026aae:	4916      	ldr	r1, [pc, #88]	; (8026b08 <spi_flash_test+0xa4>) 8026ab0:	f640 62f9 	movw	r2, #3833	; 0xef9 8026ab4:	4603      	mov	r3, r0 8026ab6:	f7ff feff 	bl	80268b8 <spi_flash_read>    if (memcmp(txbuf1, rxbuf1, bufsize1) != 0) 8026aba:	4814      	ldr	r0, [pc, #80]	; (8026b0c <spi_flash_test+0xa8>) 8026abc:	4912      	ldr	r1, [pc, #72]	; (8026b08 <spi_flash_test+0xa4>) 8026abe:	f640 62f9 	movw	r2, #3833	; 0xef9 8026ac2:	f7fa ff11 	bl	80218e8 <memcmp> 8026ac6:	4604      	mov	r4, r0 8026ac8:	b9e0      	cbnz	r0, 8026b04 <spi_flash_test+0xa0>	return;    spi_flash_erase_sector(0,0); 8026aca:	4601      	mov	r1, r0 8026acc:	f7ff ff53 	bl	8026976 <spi_flash_erase_sector>    spi_flash_read(0, rxbuf1, bufsize1, 0); 8026ad0:	4623      	mov	r3, r4 8026ad2:	4620      	mov	r0, r4 8026ad4:	490c      	ldr	r1, [pc, #48]	; (8026b08 <spi_flash_test+0xa4>) 8026ad6:	f640 62f9 	movw	r2, #3833	; 0xef9 8026ada:	f7ff feed 	bl	80268b8 <spi_flash_read>    spi_flash_write(0, txbuf2, bufsize2, 0); 8026ade:	4623      	mov	r3, r4 8026ae0:	224e      	movs	r2, #78	; 0x4e 8026ae2:	4620      	mov	r0, r4 8026ae4:	490a      	ldr	r1, [pc, #40]	; (8026b10 <spi_flash_test+0xac>) 8026ae6:	f7ff ff36 	bl	8026956 <spi_flash_write>    memset(rxbuf2, 0, bufsize2); 8026aea:	4621      	mov	r1, r4 8026aec:	224e      	movs	r2, #78	; 0x4e 8026aee:	4809      	ldr	r0, [pc, #36]	; (8026b14 <spi_flash_test+0xb0>) 8026af0:	f7fa ffe6 	bl	8021ac0 <memset>    spi_flash_read(0, rxbuf2, bufsize2, 0); 8026af4:	4907      	ldr	r1, [pc, #28]	; (8026b14 <spi_flash_test+0xb0>) 8026af6:	4620      	mov	r0, r4 8026af8:	224e      	movs	r2, #78	; 0x4e 8026afa:	4623      	mov	r3, r4		spi_flash_desc.sector_size,		spi_flash_desc.sector_size * spi_flash_desc.sector_count);	return 0;*/    } 8026afc:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    spi_flash_read(0, rxbuf1, bufsize1, 0);    spi_flash_write(0, txbuf2, bufsize2, 0);    memset(rxbuf2, 0, bufsize2);    spi_flash_read(0, rxbuf2, bufsize2, 0); 8026b00:	f7ff beda 	b.w	80268b8 <spi_flash_read> 8026b04:	bd10      	pop	{r4, pc} 8026b06:	bf00      	nop 8026b08:	200019dc 	.word	0x200019dc 8026b0c:	200006af 	.word	0x200006af 8026b10:	20000660 	.word	0x20000660 8026b14:	200028d5 	.word	0x200028d508026b18 <NVIC_EncodePriority.constprop.0>:    \param [in]       SubPriority  Subpriority value (starting from 0).    \return                        Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). */__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority){  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */ 8026b18:	f000 0007 	and.w	r0, r0, #7  uint32_t PreemptPriorityBits;  uint32_t SubPriorityBits;  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; 8026b1c:	f1c0 0307 	rsb	r3, r0, #7  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; 8026b20:	1d02      	adds	r2, r0, #4{  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */  uint32_t PreemptPriorityBits;  uint32_t SubPriorityBits;  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp; 8026b22:	2b04      	cmp	r3, #4 8026b24:	bf28      	it	cs 8026b26:	2304      	movcs	r3, #4  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS; 8026b28:	2a06      	cmp	r2, #6 8026b2a:	d901      	bls.n	8026b30 <NVIC_EncodePriority.constprop.0+0x18> 8026b2c:	3803      	subs	r0, #3 8026b2e:	e000      	b.n	8026b32 <NVIC_EncodePriority.constprop.0+0x1a> 8026b30:	2000      	movs	r0, #0  return (           ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) | 8026b32:	2201      	movs	r2, #1 8026b34:	fa02 f303 	lsl.w	r3, r2, r3 8026b38:	3b01      	subs	r3, #1 8026b3a:	f003 0305 	and.w	r3, r3, #5           ((SubPriority     & ((1 << (SubPriorityBits    )) - 1)))         );} 8026b3e:	fa03 f000 	lsl.w	r0, r3, r0 8026b42:	4770      	bx	lr08026b44 <uart_hw_init>:uint32_t ups_tx_fifo[UPS_RBUF_SIZE];SemaphoreHandle_t xSem_rx_buf;USART_InitTypeDef USART_InitStructure;void uart_hw_init(USART_TypeDef *uart, uint32_t baud, uint16_t wordlen, uint16_t parity, uint16_t stop) { 8026b44:	b570      	push	{r4, r5, r6, lr}	if (wordlen == 8)		wordlen_tmp = USART_WordLength_8b;	if (wordlen == 9)		wordlen_tmp = USART_WordLength_9b;	USART_InitStructure.USART_BaudRate = baud; 8026b46:	4d34      	ldr	r5, [pc, #208]	; (8026c18 <uart_hw_init+0xd4>)uint32_t ups_tx_fifo[UPS_RBUF_SIZE];SemaphoreHandle_t xSem_rx_buf;USART_InitTypeDef USART_InitStructure;void uart_hw_init(USART_TypeDef *uart, uint32_t baud, uint16_t wordlen, uint16_t parity, uint16_t stop) { 8026b48:	f8bd 6010 	ldrh.w	r6, [sp, #16]		wordlen_tmp = USART_WordLength_9b;	USART_InitStructure.USART_BaudRate = baud;	USART_InitStructure.USART_WordLength = wordlen_tmp;	USART_InitStructure.USART_StopBits = stop;	USART_InitStructure.USART_Parity = parity; 8026b4c:	812b      	strh	r3, [r5, #8]void uart_hw_init(USART_TypeDef *uart, uint32_t baud, uint16_t wordlen, uint16_t parity, uint16_t stop) {	uint16_t wordlen_tmp;	if (wordlen == 8)		wordlen_tmp = USART_WordLength_8b;	if (wordlen == 9) 8026b4e:	2a09      	cmp	r2, #9 8026b50:	bf0c      	ite	eq 8026b52:	f44f 5280 	moveq.w	r2, #4096	; 0x1000 8026b56:	2200      	movne	r2, #0	USART_InitStructure.USART_BaudRate = baud;	USART_InitStructure.USART_WordLength = wordlen_tmp;	USART_InitStructure.USART_StopBits = stop;	USART_InitStructure.USART_Parity = parity;	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 8026b58:	230c      	movs	r3, #12	if (wordlen == 9)		wordlen_tmp = USART_WordLength_9b;	USART_InitStructure.USART_BaudRate = baud;	USART_InitStructure.USART_WordLength = wordlen_tmp;	USART_InitStructure.USART_StopBits = stop; 8026b5a:	80ee      	strh	r6, [r5, #6]	USART_InitStructure.USART_Parity = parity;	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 8026b5c:	2600      	movs	r6, #0uint32_t ups_tx_fifo[UPS_RBUF_SIZE];SemaphoreHandle_t xSem_rx_buf;USART_InitTypeDef USART_InitStructure;void uart_hw_init(USART_TypeDef *uart, uint32_t baud, uint16_t wordlen, uint16_t parity, uint16_t stop) { 8026b5e:	4604      	mov	r4, r0	USART_InitStructure.USART_BaudRate = baud;	USART_InitStructure.USART_WordLength = wordlen_tmp;	USART_InitStructure.USART_StopBits = stop;	USART_InitStructure.USART_Parity = parity;	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 8026b60:	816b      	strh	r3, [r5, #10]	if (wordlen == 8)		wordlen_tmp = USART_WordLength_8b;	if (wordlen == 9)		wordlen_tmp = USART_WordLength_9b;	USART_InitStructure.USART_BaudRate = baud; 8026b62:	6029      	str	r1, [r5, #0]	USART_InitStructure.USART_WordLength = wordlen_tmp; 8026b64:	80aa      	strh	r2, [r5, #4]	USART_InitStructure.USART_StopBits = stop;	USART_InitStructure.USART_Parity = parity;	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 8026b66:	81ae      	strh	r6, [r5, #12]	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	USART_DeInit(uart); 8026b68:	f7ff f812 	bl	8025b90 <USART_DeInit>	if (uart == USART1) { 8026b6c:	4b2b      	ldr	r3, [pc, #172]	; (8026c1c <uart_hw_init+0xd8>) 8026b6e:	429c      	cmp	r4, r3 8026b70:	d111      	bne.n	8026b96 <uart_hw_init+0x52>		RCC->APB2ENR |= RCC_APB2Periph_USART1; 8026b72:	f503 3394 	add.w	r3, r3, #75776	; 0x12800 8026b76:	6c5a      	ldr	r2, [r3, #68]	; 0x44 8026b78:	f042 0210 	orr.w	r2, r2, #16 8026b7c:	645a      	str	r2, [r3, #68]	; 0x44    \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void){  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */ 8026b7e:	4b28      	ldr	r3, [pc, #160]	; (8026c20 <uart_hw_init+0xdc>) 8026b80:	68d8      	ldr	r0, [r3, #12]		NVIC_SetPriority(USART1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0x05, 0)); 8026b82:	f3c0 2002 	ubfx	r0, r0, #8, #3 8026b86:	f7ff ffc7 	bl	8026b18 <NVIC_EncodePriority.constprop.0>__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority){  if(IRQn < 0) {    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */  else {    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */ 8026b8a:	4b26      	ldr	r3, [pc, #152]	; (8026c24 <uart_hw_init+0xe0>) 8026b8c:	0100      	lsls	r0, r0, #4 8026b8e:	f883 0325 	strb.w	r0, [r3, #805]	; 0x325    \param [in]      IRQn  External interrupt number. Value cannot be negative. */__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn){/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ 8026b92:	2220      	movs	r2, #32 8026b94:	e028      	b.n	8026be8 <uart_hw_init+0xa4>		USART_Cmd(USART1, ENABLE);		USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);		USART_ITConfig(USART1, USART_IT_TXE, DISABLE);	}	if (uart == USART2) { 8026b96:	4b24      	ldr	r3, [pc, #144]	; (8026c28 <uart_hw_init+0xe4>) 8026b98:	429c      	cmp	r4, r3 8026b9a:	d111      	bne.n	8026bc0 <uart_hw_init+0x7c>		RCC->APB1ENR |= RCC_APB1Periph_USART2; 8026b9c:	f503 33fa 	add.w	r3, r3, #128000	; 0x1f400 8026ba0:	6c1a      	ldr	r2, [r3, #64]	; 0x40 8026ba2:	f442 3200 	orr.w	r2, r2, #131072	; 0x20000 8026ba6:	641a      	str	r2, [r3, #64]	; 0x40    \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void){  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */ 8026ba8:	4b1d      	ldr	r3, [pc, #116]	; (8026c20 <uart_hw_init+0xdc>) 8026baa:	68d8      	ldr	r0, [r3, #12]		NVIC_SetPriority(USART2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0x05, 0)); 8026bac:	f3c0 2002 	ubfx	r0, r0, #8, #3 8026bb0:	f7ff ffb2 	bl	8026b18 <NVIC_EncodePriority.constprop.0>__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority){  if(IRQn < 0) {    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */  else {    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */ 8026bb4:	4b1b      	ldr	r3, [pc, #108]	; (8026c24 <uart_hw_init+0xe0>) 8026bb6:	0100      	lsls	r0, r0, #4 8026bb8:	f883 0326 	strb.w	r0, [r3, #806]	; 0x326    \param [in]      IRQn  External interrupt number. Value cannot be negative. */__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn){/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ 8026bbc:	2240      	movs	r2, #64	; 0x40 8026bbe:	e013      	b.n	8026be8 <uart_hw_init+0xa4>		USART_Cmd(USART2, ENABLE);		USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);		USART_ITConfig(USART2, USART_IT_TXE, DISABLE);	}    if (uart == USART3) { 8026bc0:	4b1a      	ldr	r3, [pc, #104]	; (8026c2c <uart_hw_init+0xe8>) 8026bc2:	429c      	cmp	r4, r3 8026bc4:	d127      	bne.n	8026c16 <uart_hw_init+0xd2>        RCC->APB1ENR |= RCC_APB1Periph_USART3; 8026bc6:	f503 33f8 	add.w	r3, r3, #126976	; 0x1f000 8026bca:	6c1a      	ldr	r2, [r3, #64]	; 0x40 8026bcc:	f442 2280 	orr.w	r2, r2, #262144	; 0x40000 8026bd0:	641a      	str	r2, [r3, #64]	; 0x40    \return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void){  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */ 8026bd2:	4b13      	ldr	r3, [pc, #76]	; (8026c20 <uart_hw_init+0xdc>) 8026bd4:	68d8      	ldr	r0, [r3, #12]        NVIC_SetPriority(USART3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0x05, 0)); 8026bd6:	f3c0 2002 	ubfx	r0, r0, #8, #3 8026bda:	f7ff ff9d 	bl	8026b18 <NVIC_EncodePriority.constprop.0>__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority){  if(IRQn < 0) {    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */  else {    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */ 8026bde:	4b11      	ldr	r3, [pc, #68]	; (8026c24 <uart_hw_init+0xe0>) 8026be0:	0100      	lsls	r0, r0, #4 8026be2:	f883 0327 	strb.w	r0, [r3, #807]	; 0x327    \param [in]      IRQn  External interrupt number. Value cannot be negative. */__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn){/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */ 8026be6:	2280      	movs	r2, #128	; 0x80 8026be8:	605a      	str	r2, [r3, #4]        NVIC_EnableIRQ(USART3_IRQn);        USART_Init(USART3, &USART_InitStructure); 8026bea:	4620      	mov	r0, r4 8026bec:	4629      	mov	r1, r5 8026bee:	f7ff f823 	bl	8025c38 <USART_Init>        USART_Cmd(USART3, ENABLE); 8026bf2:	4620      	mov	r0, r4 8026bf4:	2101      	movs	r1, #1 8026bf6:	f7ff f879 	bl	8025cec <USART_Cmd>    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); 8026bfa:	4620      	mov	r0, r4 8026bfc:	2201      	movs	r2, #1 8026bfe:	f240 5125 	movw	r1, #1317	; 0x525 8026c02:	f7ff f87f 	bl	8025d04 <USART_ITConfig>    USART_ITConfig(USART3, USART_IT_TXE, DISABLE); 8026c06:	4620      	mov	r0, r4 8026c08:	f240 7127 	movw	r1, #1831	; 0x727 8026c0c:	4632      	mov	r2, r6    }} 8026c0e:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}        NVIC_SetPriority(USART3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0x05, 0));        NVIC_EnableIRQ(USART3_IRQn);        USART_Init(USART3, &USART_InitStructure);        USART_Cmd(USART3, ENABLE);    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);    USART_ITConfig(USART3, USART_IT_TXE, DISABLE); 8026c12:	f7ff b877 	b.w	8025d04 <USART_ITConfig> 8026c16:	bd70      	pop	{r4, r5, r6, pc} 8026c18:	2000e938 	.word	0x2000e938 8026c1c:	40011000 	.word	0x40011000 8026c20:	e000ed00 	.word	0xe000ed00 8026c24:	e000e100 	.word	0xe000e100 8026c28:	40004400 	.word	0x40004400 8026c2c:	40004800 	.word	0x4000480008026c30 <InitUSART>:    }}void InitUSART(void) { 8026c30:	b507      	push	{r0, r1, r2, lr}	xSem_rx_buf = xSemaphoreCreateCounting( UPS_RBUF_SIZE, 0 ); 8026c32:	2100      	movs	r1, #0 8026c34:	2064      	movs	r0, #100	; 0x64 8026c36:	f002 fc3b 	bl	80294b0 <xQueueCreateCountingSemaphore> 8026c3a:	4b0a      	ldr	r3, [pc, #40]	; (8026c64 <InitUSART+0x34>)	rbuf32_init(&ups_tx_rbuf, ups_tx_fifo, UPS_RBUF_SIZE); 8026c3c:	490a      	ldr	r1, [pc, #40]	; (8026c68 <InitUSART+0x38>)    USART_ITConfig(USART3, USART_IT_TXE, DISABLE);    }}void InitUSART(void) {	xSem_rx_buf = xSemaphoreCreateCounting( UPS_RBUF_SIZE, 0 ); 8026c3e:	6018      	str	r0, [r3, #0]	rbuf32_init(&ups_tx_rbuf, ups_tx_fifo, UPS_RBUF_SIZE); 8026c40:	2264      	movs	r2, #100	; 0x64 8026c42:	480a      	ldr	r0, [pc, #40]	; (8026c6c <InitUSART+0x3c>) 8026c44:	f002 f8bc 	bl	8028dc0 <rbuf32_init>	rbuf32_init(&ups_rx_rbuf, ups_rx_fifo, UPS_RBUF_SIZE); 8026c48:	2264      	movs	r2, #100	; 0x64 8026c4a:	4809      	ldr	r0, [pc, #36]	; (8026c70 <InitUSART+0x40>) 8026c4c:	4909      	ldr	r1, [pc, #36]	; (8026c74 <InitUSART+0x44>) 8026c4e:	f002 f8b7 	bl	8028dc0 <rbuf32_init>	uart_hw_init(UPS_USART, UPS_USART_BAUD, UPS_USART_WORD_LEN, UPS_USART_PARITY, UPS_USART_STOP_BIT); 8026c52:	2300      	movs	r3, #0 8026c54:	9300      	str	r3, [sp, #0] 8026c56:	4808      	ldr	r0, [pc, #32]	; (8026c78 <InitUSART+0x48>) 8026c58:	f44f 6116 	mov.w	r1, #2400	; 0x960 8026c5c:	2208      	movs	r2, #8 8026c5e:	f7ff ff71 	bl	8026b44 <uart_hw_init>} 8026c62:	bd0e      	pop	{r1, r2, r3, pc} 8026c64:	2000e948 	.word	0x2000e948 8026c68:	2000e608 	.word	0x2000e608 8026c6c:	2000e928 	.word	0x2000e928 8026c70:	2000e5f8 	.word	0x2000e5f8 8026c74:	2000e798 	.word	0x2000e798 8026c78:	40004400 	.word	0x4000440008026c7c <ups_send_block>:}int ups_send_block(void *data, uint8_t len) {	int i = 0;	uint32_t s_temp = 0;	UPS_USART->CR1 &= ~USART_CR1_TXEIE; 8026c7c:	4a0f      	ldr	r2, [pc, #60]	; (8026cbc <ups_send_block+0x40>) 8026c7e:	8993      	ldrh	r3, [r2, #12] 8026c80:	f023 0380 	bic.w	r3, r3, #128	; 0x80 8026c84:	041b      	lsls	r3, r3, #16 8026c86:	0c1b      	lsrs	r3, r3, #16		rbuf32_put(&ups_tx_rbuf, (uint32_t)(byte));	}	UPS_USART->CR1 |= USART_CR1_TXEIE;}int ups_send_block(void *data, uint8_t len) { 8026c88:	b570      	push	{r4, r5, r6, lr} 8026c8a:	4606      	mov	r6, r0 8026c8c:	460d      	mov	r5, r1	int i = 0;	uint32_t s_temp = 0;	UPS_USART->CR1 &= ~USART_CR1_TXEIE; 8026c8e:	8193      	strh	r3, [r2, #12]	}	UPS_USART->CR1 |= USART_CR1_TXEIE;}int ups_send_block(void *data, uint8_t len) {	int i = 0; 8026c90:	2400      	movs	r4, #0	uint32_t s_temp = 0;	UPS_USART->CR1 &= ~USART_CR1_TXEIE;	//DBG printf("STOP \r\n");	while (i < len) { 8026c92:	e008      	b.n	8026ca6 <ups_send_block+0x2a>		if (!rbuf_isfull(&ups_tx_rbuf)) { 8026c94:	480a      	ldr	r0, [pc, #40]	; (8026cc0 <ups_send_block+0x44>) 8026c96:	f002 f899 	bl	8028dcc <rbuf_isfull> 8026c9a:	b930      	cbnz	r0, 8026caa <ups_send_block+0x2e>			s_temp = ((uint8_t *)data)[i++]; 8026c9c:	5d31      	ldrb	r1, [r6, r4]			rbuf32_put(&ups_tx_rbuf, s_temp); 8026c9e:	4808      	ldr	r0, [pc, #32]	; (8026cc0 <ups_send_block+0x44>)	uint32_t s_temp = 0;	UPS_USART->CR1 &= ~USART_CR1_TXEIE;	//DBG printf("STOP \r\n");	while (i < len) {		if (!rbuf_isfull(&ups_tx_rbuf)) {			s_temp = ((uint8_t *)data)[i++]; 8026ca0:	3401      	adds	r4, #1			rbuf32_put(&ups_tx_rbuf, s_temp); 8026ca2:	f002 f8b4 	bl	8028e0e <rbuf32_put>int ups_send_block(void *data, uint8_t len) {	int i = 0;	uint32_t s_temp = 0;	UPS_USART->CR1 &= ~USART_CR1_TXEIE;	//DBG printf("STOP \r\n");	while (i < len) { 8026ca6:	42ac      	cmp	r4, r5 8026ca8:	dbf4      	blt.n	8026c94 <ups_send_block+0x18>			rbuf32_put(&ups_tx_rbuf, s_temp);		}		else			break;	}	UPS_USART->CR1 |= USART_CR1_TXEIE; 8026caa:	4b04      	ldr	r3, [pc, #16]	; (8026cbc <ups_send_block+0x40>) 8026cac:	899a      	ldrh	r2, [r3, #12] 8026cae:	b292      	uxth	r2, r2 8026cb0:	f042 0280 	orr.w	r2, r2, #128	; 0x80 8026cb4:	819a      	strh	r2, [r3, #12]	return i;} 8026cb6:	4620      	mov	r0, r4 8026cb8:	bd70      	pop	{r4, r5, r6, pc} 8026cba:	bf00      	nop 8026cbc:	40004400 	.word	0x40004400 8026cc0:	2000e928 	.word	0x2000e92808026cc4 <ups_getchar>:int ups_getchar(unsigned int timeout) {	int res;	res = xSemaphoreTake( xSem_rx_buf, (TickType_t)timeout ); 8026cc4:	4b09      	ldr	r3, [pc, #36]	; (8026cec <ups_getchar+0x28>)	}	UPS_USART->CR1 |= USART_CR1_TXEIE;	return i;}int ups_getchar(unsigned int timeout) { 8026cc6:	b507      	push	{r0, r1, r2, lr}	int res;	res = xSemaphoreTake( xSem_rx_buf, (TickType_t)timeout ); 8026cc8:	2100      	movs	r1, #0	}	UPS_USART->CR1 |= USART_CR1_TXEIE;	return i;}int ups_getchar(unsigned int timeout) { 8026cca:	4602      	mov	r2, r0	int res;	res = xSemaphoreTake( xSem_rx_buf, (TickType_t)timeout ); 8026ccc:	6818      	ldr	r0, [r3, #0] 8026cce:	460b      	mov	r3, r1 8026cd0:	f002 fd44 	bl	802975c <xQueueGenericReceive> 8026cd4:	9001      	str	r0, [sp, #4]	if (res == pdFALSE) { 8026cd6:	b128      	cbz	r0, 8026ce4 <ups_getchar+0x20>		return -1;	}	rbuf32_get(&ups_rx_rbuf, &res); 8026cd8:	4805      	ldr	r0, [pc, #20]	; (8026cf0 <ups_getchar+0x2c>) 8026cda:	a901      	add	r1, sp, #4 8026cdc:	f002 f882 	bl	8028de4 <rbuf32_get>//	DBG printf("STOP \r\n");//	DBG printf("wr: %d 0x%x\r\n", rs485_rx_rbuf.read_index,res);	return res; 8026ce0:	9801      	ldr	r0, [sp, #4] 8026ce2:	e001      	b.n	8026ce8 <ups_getchar+0x24>int ups_getchar(unsigned int timeout) {	int res;	res = xSemaphoreTake( xSem_rx_buf, (TickType_t)timeout );	if (res == pdFALSE) {		return -1; 8026ce4:	f04f 30ff 	mov.w	r0, #4294967295	}	rbuf32_get(&ups_rx_rbuf, &res);//	DBG printf("STOP \r\n");//	DBG printf("wr: %d 0x%x\r\n", rs485_rx_rbuf.read_index,res);	return res;} 8026ce8:	bd0e      	pop	{r1, r2, r3, pc} 8026cea:	bf00      	nop 8026cec:	2000e948 	.word	0x2000e948 8026cf0:	2000e5f8 	.word	0x2000e5f808026cf4 <USART1_IRQHandler>:		portYIELD_FROM_ISR(xHigherPriorityTaskWoken);	}}void USART1_IRQHandler(void) { 8026cf4:	4770      	bx	lr 8026cf6:	0000      	movs	r0, r008026cf8 <USART2_IRQHandler>:}void USART2_IRQHandler(void) { 8026cf8:	b513      	push	{r0, r1, r4, lr}inline void rs232_irq_handler(void){	uint32_t c = 0; 8026cfa:	2300      	movs	r3, #0 8026cfc:	9301      	str	r3, [sp, #4]	static BaseType_t xHigherPriorityTaskWoken = pdFALSE;	if ((UPS_USART->SR & USART_SR_ORE)) { 8026cfe:	4b26      	ldr	r3, [pc, #152]	; (8026d98 <USART2_IRQHandler+0xa0>) 8026d00:	881a      	ldrh	r2, [r3, #0] 8026d02:	f002 0208 	and.w	r2, r2, #8 8026d06:	b292      	uxth	r2, r2 8026d08:	b112      	cbz	r2, 8026d10 <USART2_IRQHandler+0x18>		c = (uint32_t)UPS_USART->DR; 8026d0a:	889b      	ldrh	r3, [r3, #4] 8026d0c:	b29b      	uxth	r3, r3 8026d0e:	9301      	str	r3, [sp, #4]		//DBG printf("overrunRS485\r\n");	}	if (USART_GetITStatus(UPS_USART, USART_IT_TXE) != RESET) { 8026d10:	4c21      	ldr	r4, [pc, #132]	; (8026d98 <USART2_IRQHandler+0xa0>) 8026d12:	f240 7127 	movw	r1, #1831	; 0x727 8026d16:	4620      	mov	r0, r4 8026d18:	f7ff f80d 	bl	8025d36 <USART_GetITStatus> 8026d1c:	b1c0      	cbz	r0, 8026d50 <USART2_IRQHandler+0x58>		if(rbuf32_get(&ups_tx_rbuf, &c)) { 8026d1e:	481f      	ldr	r0, [pc, #124]	; (8026d9c <USART2_IRQHandler+0xa4>) 8026d20:	a901      	add	r1, sp, #4 8026d22:	f002 f85f 	bl	8028de4 <rbuf32_get> 8026d26:	b118      	cbz	r0, 8026d30 <USART2_IRQHandler+0x38>			UPS_USART->DR = (uint16_t)c; 8026d28:	f8bd 3004 	ldrh.w	r3, [sp, #4] 8026d2c:	80a3      	strh	r3, [r4, #4] 8026d2e:	e00a      	b.n	8026d46 <USART2_IRQHandler+0x4e>			//DBG printf("wr: %d 0x%x\r\n", rs485_tx_rbuf.read_index,c);		}		else {			UPS_USART->CR1 &= ~USART_CR1_TXEIE; 8026d30:	89a3      	ldrh	r3, [r4, #12] 8026d32:	f023 0380 	bic.w	r3, r3, #128	; 0x80 8026d36:	041b      	lsls	r3, r3, #16 8026d38:	0c1b      	lsrs	r3, r3, #16 8026d3a:	81a3      	strh	r3, [r4, #12]			UPS_USART->CR1 |= USART_CR1_RXNEIE; 8026d3c:	89a3      	ldrh	r3, [r4, #12] 8026d3e:	b29b      	uxth	r3, r3 8026d40:	f043 0320 	orr.w	r3, r3, #32 8026d44:	81a3      	strh	r3, [r4, #12]		}			USART_ClearITPendingBit(UPS_USART, USART_IT_TXE); 8026d46:	4814      	ldr	r0, [pc, #80]	; (8026d98 <USART2_IRQHandler+0xa0>) 8026d48:	f240 7127 	movw	r1, #1831	; 0x727 8026d4c:	f7ff f813 	bl	8025d76 <USART_ClearITPendingBit>	}	if(USART_GetITStatus(UPS_USART, USART_IT_RXNE) != RESET) 8026d50:	4c11      	ldr	r4, [pc, #68]	; (8026d98 <USART2_IRQHandler+0xa0>) 8026d52:	f240 5125 	movw	r1, #1317	; 0x525 8026d56:	4620      	mov	r0, r4 8026d58:	f7fe ffed 	bl	8025d36 <USART_GetITStatus> 8026d5c:	b1d8      	cbz	r0, 8026d96 <USART2_IRQHandler+0x9e>	{		c = (uint32_t)UPS_USART->DR; 8026d5e:	88a3      	ldrh	r3, [r4, #4]		//DBG printf("read: %d 0x%x\r\n", rs485_rx_rbuf.write_index,c);		if (!rbuf_isfull(&ups_rx_rbuf)) 8026d60:	480f      	ldr	r0, [pc, #60]	; (8026da0 <USART2_IRQHandler+0xa8>)		}			USART_ClearITPendingBit(UPS_USART, USART_IT_TXE);	}	if(USART_GetITStatus(UPS_USART, USART_IT_RXNE) != RESET)	{		c = (uint32_t)UPS_USART->DR; 8026d62:	b29b      	uxth	r3, r3 8026d64:	9301      	str	r3, [sp, #4]		//DBG printf("read: %d 0x%x\r\n", rs485_rx_rbuf.write_index,c);		if (!rbuf_isfull(&ups_rx_rbuf)) 8026d66:	f002 f831 	bl	8028dcc <rbuf_isfull> 8026d6a:	b918      	cbnz	r0, 8026d74 <USART2_IRQHandler+0x7c>			rbuf32_put(&ups_rx_rbuf, c); 8026d6c:	480c      	ldr	r0, [pc, #48]	; (8026da0 <USART2_IRQHandler+0xa8>) 8026d6e:	9901      	ldr	r1, [sp, #4] 8026d70:	f002 f84d 	bl	8028e0e <rbuf32_put>		USART_ClearITPendingBit(UPS_USART, USART_IT_RXNE); 8026d74:	4808      	ldr	r0, [pc, #32]	; (8026d98 <USART2_IRQHandler+0xa0>)		xSemaphoreGiveFromISR(xSem_rx_buf, &xHigherPriorityTaskWoken); 8026d76:	4c0b      	ldr	r4, [pc, #44]	; (8026da4 <USART2_IRQHandler+0xac>)	{		c = (uint32_t)UPS_USART->DR;		//DBG printf("read: %d 0x%x\r\n", rs485_rx_rbuf.write_index,c);		if (!rbuf_isfull(&ups_rx_rbuf))			rbuf32_put(&ups_rx_rbuf, c);		USART_ClearITPendingBit(UPS_USART, USART_IT_RXNE); 8026d78:	f240 5125 	movw	r1, #1317	; 0x525 8026d7c:	f7fe fffb 	bl	8025d76 <USART_ClearITPendingBit>		xSemaphoreGiveFromISR(xSem_rx_buf, &xHigherPriorityTaskWoken); 8026d80:	4b09      	ldr	r3, [pc, #36]	; (8026da8 <USART2_IRQHandler+0xb0>) 8026d82:	4621      	mov	r1, r4 8026d84:	6818      	ldr	r0, [r3, #0] 8026d86:	f002 fcb7 	bl	80296f8 <xQueueGiveFromISR>		portYIELD_FROM_ISR(xHigherPriorityTaskWoken); 8026d8a:	6823      	ldr	r3, [r4, #0] 8026d8c:	b11b      	cbz	r3, 8026d96 <USART2_IRQHandler+0x9e> 8026d8e:	4b07      	ldr	r3, [pc, #28]	; (8026dac <USART2_IRQHandler+0xb4>) 8026d90:	f04f 5280 	mov.w	r2, #268435456	; 0x10000000 8026d94:	601a      	str	r2, [r3, #0]}void USART2_IRQHandler(void) {	rs232_irq_handler();} 8026d96:	bd1c      	pop	{r2, r3, r4, pc} 8026d98:	40004400 	.word	0x40004400 8026d9c:	2000e928 	.word	0x2000e928 8026da0:	2000e5f8 	.word	0x2000e5f8 8026da4:	20002924 	.word	0x20002924 8026da8:	2000e948 	.word	0x2000e948 8026dac:	e000ed04 	.word	0xe000ed0408026db0 <USART3_IRQHandler>:void USART3_IRQHandler(void) { 8026db0:	4770      	bx	lr 8026db2:	0000      	movs	r0, r008026db4 <InitTask>:/**  * @brief  Задача инициализации. Запускает основные задачи девайса и умирает.  * @retval   */void InitTask(void *params){ 8026db4:	b51f      	push	{r0, r1, r2, r3, r4, lr}// -----------------------------------------------------------------------------  #ifdef LED_ENABLE  LED_Init();  /* Простая мигалка для подтверждения живучести контроллера */  xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);//&xTaskToKill 8026db6:	2400      	movs	r4, #0void InitTask(void *params){// -----------------------------------------------------------------------------     // xTaskCreate(vTaskWdt, "WDT", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------      InitUSART(); 8026db8:	f7ff ff3a 	bl	8026c30 <InitUSART>  ups_megatec_init(); 8026dbc:	f001 ffec 	bl	8028d98 <ups_megatec_init>// -----------------------------------------------------------------------------     // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);/*  SETTINGS_SetDefaultDebug();  SETTINGS_Save();*/  SETTINGS_Load(); 8026dc0:	f001 fcf6 	bl	80287b0 <SETTINGS_Load>  set_mode_jumper(); 8026dc4:	f001 fdf6 	bl	80289b4 <set_mode_jumper>#endif  // -----------------------------------------------------------------------------    // -----------------------------------------------------------------------------  #ifdef LED_ENABLE  LED_Init(); 8026dc8:	f001 fd50 	bl	802886c <LED_Init>  /* Простая мигалка для подтверждения живучести контроллера */  xTaskCreate(vTaskLedBlink, "LED_Blink", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);//&xTaskToKill 8026dcc:	2280      	movs	r2, #128	; 0x80 8026dce:	4623      	mov	r3, r4 8026dd0:	4932      	ldr	r1, [pc, #200]	; (8026e9c <InitTask+0xe8>) 8026dd2:	9400      	str	r4, [sp, #0] 8026dd4:	9401      	str	r4, [sp, #4] 8026dd6:	9402      	str	r4, [sp, #8] 8026dd8:	9403      	str	r4, [sp, #12] 8026dda:	4831      	ldr	r0, [pc, #196]	; (8026ea0 <InitTask+0xec>) 8026ddc:	f002 fdc8 	bl	8029970 <xTaskGenericCreate>#endif  // -----------------------------------------------------------------------------      // -----------------------------------------------------------------------------  #ifdef BUTTON_ENABLE    BUTTON_Init(); 8026de0:	f001 fda0 	bl	8028924 <BUTTON_Init>  xTaskCreate(vTaskButtons, "Buttons", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL); 8026de4:	2280      	movs	r2, #128	; 0x80 8026de6:	4623      	mov	r3, r4 8026de8:	492e      	ldr	r1, [pc, #184]	; (8026ea4 <InitTask+0xf0>) 8026dea:	9400      	str	r4, [sp, #0] 8026dec:	9401      	str	r4, [sp, #4] 8026dee:	9402      	str	r4, [sp, #8] 8026df0:	9403      	str	r4, [sp, #12] 8026df2:	482d      	ldr	r0, [pc, #180]	; (8026ea8 <InitTask+0xf4>) 8026df4:	f002 fdbc 	bl	8029970 <xTaskGenericCreate>  //xTaskCreate( d_inouts_task,  "inouts_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL); // 	xTaskCreate( d_inouts_test, "d_inouts_test", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);// -----------------------------------------------------------------------------    #ifdef RTC_ENABLE    TM_RTC_Init(TM_RTC_ClockSource_External);  // Так было 8026df8:	2001      	movs	r0, #1 8026dfa:	f7ff fb75 	bl	80264e8 <TM_RTC_Init>// -----------------------------------------------------------------------------#ifdef UPS_ENABLE /* UPS_Init();  xTaskCreate(UPS_TaskParsing, "UPS_Parsing", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);  xTaskCreate(UPS_TaskState, "UPS_State", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);*/  xTaskCreate(UPS_Monitor, "UPS_Monitor", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL); 8026dfe:	2280      	movs	r2, #128	; 0x80 8026e00:	4623      	mov	r3, r4 8026e02:	492a      	ldr	r1, [pc, #168]	; (8026eac <InitTask+0xf8>) 8026e04:	9400      	str	r4, [sp, #0] 8026e06:	9401      	str	r4, [sp, #4] 8026e08:	9402      	str	r4, [sp, #8] 8026e0a:	9403      	str	r4, [sp, #12] 8026e0c:	4828      	ldr	r0, [pc, #160]	; (8026eb0 <InitTask+0xfc>) 8026e0e:	f002 fdaf 	bl	8029970 <xTaskGenericCreate>#endif// -----------------------------------------------------------------------------      /* Random number generator */  RNG_Init(); 8026e12:	f7ff f951 	bl	80260b8 <RNG_Init>// -----------------------------------------------------------------------------  #ifdef NET_ENABLE  ETH_BSP_Config(); 8026e16:	f00f f8f7 	bl	8036008 <ETH_BSP_Config>  LwIP_Init(); 8026e1a:	f00e fbdd 	bl	80355d8 <LwIP_Init>  #ifdef WEB_SERVER_ENABLE  HTTP_Init(); 8026e1e:	f003 fec3 	bl	802aba8 <HTTP_Init>#endif  #ifdef SNMP_ENABLE  SNMP_Init(); 8026e22:	f00e feb1 	bl	8035b88 <SNMP_Init>	  	xTaskCreate(SNMP_SysUpTimeTask, "snmpSysUpTime", configMINIMAL_STACK_SIZE, 8026e26:	2280      	movs	r2, #128	; 0x80 8026e28:	4623      	mov	r3, r4 8026e2a:	9400      	str	r4, [sp, #0] 8026e2c:	9401      	str	r4, [sp, #4] 8026e2e:	9402      	str	r4, [sp, #8] 8026e30:	9403      	str	r4, [sp, #12] 8026e32:	4920      	ldr	r1, [pc, #128]	; (8026eb4 <InitTask+0x100>) 8026e34:	4820      	ldr	r0, [pc, #128]	; (8026eb8 <InitTask+0x104>) 8026e36:	f002 fd9b 	bl	8029970 <xTaskGenericCreate>              NULL, tskIDLE_PRIORITY, NULL);		xTaskCreate(snmp_trap_tread, "snmpTrapTest", 3*configMINIMAL_STACK_SIZE, 8026e3a:	4623      	mov	r3, r4 8026e3c:	491f      	ldr	r1, [pc, #124]	; (8026ebc <InitTask+0x108>) 8026e3e:	9400      	str	r4, [sp, #0] 8026e40:	f44f 72c0 	mov.w	r2, #384	; 0x180 8026e44:	9401      	str	r4, [sp, #4] 8026e46:	9402      	str	r4, [sp, #8] 8026e48:	9403      	str	r4, [sp, #12] 8026e4a:	481d      	ldr	r0, [pc, #116]	; (8026ec0 <InitTask+0x10c>) 8026e4c:	f002 fd90 	bl	8029970 <xTaskGenericCreate>#endif	    #endif  // -----------------------------------------------------------------------------      	 /* SNTP */	 SNTP_Init(); 8026e50:	f00e ff38 	bl	8035cc4 <SNTP_Init>	 xTaskCreate(vTaskOnceSynchro, "sntpOnceSinhro", 2*configMINIMAL_STACK_SIZE, 8026e54:	4b1b      	ldr	r3, [pc, #108]	; (8026ec4 <InitTask+0x110>) 8026e56:	9400      	str	r4, [sp, #0] 8026e58:	9301      	str	r3, [sp, #4] 8026e5a:	9402      	str	r4, [sp, #8] 8026e5c:	4623      	mov	r3, r4 8026e5e:	9403      	str	r4, [sp, #12] 8026e60:	4919      	ldr	r1, [pc, #100]	; (8026ec8 <InitTask+0x114>) 8026e62:	481a      	ldr	r0, [pc, #104]	; (8026ecc <InitTask+0x118>) 8026e64:	f44f 7280 	mov.w	r2, #256	; 0x100 8026e68:	f002 fd82 	bl	8029970 <xTaskGenericCreate>				 NULL, tskIDLE_PRIORITY, &xHandleSntpOnceSinhro);	 xTaskCreate(vTaskPeriodicSynchro, "sntpPeriodicSinhro", 2*configMINIMAL_STACK_SIZE, 8026e6c:	4918      	ldr	r1, [pc, #96]	; (8026ed0 <InitTask+0x11c>) 8026e6e:	9400      	str	r4, [sp, #0] 8026e70:	f44f 7280 	mov.w	r2, #256	; 0x100 8026e74:	4623      	mov	r3, r4 8026e76:	9401      	str	r4, [sp, #4] 8026e78:	9402      	str	r4, [sp, #8] 8026e7a:	9403      	str	r4, [sp, #12] 8026e7c:	4815      	ldr	r0, [pc, #84]	; (8026ed4 <InitTask+0x120>) 8026e7e:	f002 fd77 	bl	8029970 <xTaskGenericCreate>  //TEST_IO();    /* Контроль успешной загрузки. Сброс флага bootry */  /* Сброс флага и сохранение нового значения во флеш памяти происходт после     некоторой задержки для запуска всех задач */  vTaskDelay(4000); 8026e82:	f44f 607a 	mov.w	r0, #4000	; 0xfa0 8026e86:	f003 f80d 	bl	8029ea4 <vTaskDelay> /* if (!dhcp)    SNMP_SendUserTrap(DEVICE_REBOOTED);    printf("Hello world\r\n");*/    vTaskDelete(NULL); 8026e8a:	4620      	mov	r0, r4 8026e8c:	f002 fe48 	bl	8029b20 <vTaskDelete>     taskYIELD();} 8026e90:	b004      	add	sp, #16 8026e92:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    SNMP_SendUserTrap(DEVICE_REBOOTED);    printf("Hello world\r\n");*/    vTaskDelete(NULL);     taskYIELD(); 8026e96:	f003 bc07 	b.w	802a6a8 <vPortYield> 8026e9a:	bf00      	nop 8026e9c:	08036be8 	.word	0x08036be8 8026ea0:	08028891 	.word	0x08028891 8026ea4:	08036bf2 	.word	0x08036bf2 8026ea8:	080289a1 	.word	0x080289a1 8026eac:	08036bfa 	.word	0x08036bfa 8026eb0:	0802923d 	.word	0x0802923d 8026eb4:	08036c06 	.word	0x08036c06 8026eb8:	0803595d 	.word	0x0803595d 8026ebc:	08036c14 	.word	0x08036c14 8026ec0:	08035aad 	.word	0x08035aad 8026ec4:	20002928 	.word	0x20002928 8026ec8:	08036c21 	.word	0x08036c21 8026ecc:	08035d91 	.word	0x08035d91 8026ed0:	08036c30 	.word	0x08036c30 8026ed4:	08035d49 	.word	0x08035d4908026ed8 <main>:void vApplicationTickHook(void) {} int main(){ 8026ed8:	b51f      	push	{r0, r1, r2, r3, r4, lr}  This function disables IRQ interrupts by setting the I-bit in the CPSR.  Can only be executed in Privileged modes. */__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void){  __ASM volatile ("cpsid i" : : : "memory"); 8026eda:	b672      	cpsid	i  //TIM_Cmd(TIM13, DISABLE);  //TIM_ClearITPendingBit(TIM13, TIM_IT_Update);  	__disable_irq();	NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x20000); 8026edc:	f04f 6000 	mov.w	r0, #134217728	; 0x8000000 8026ee0:	f44f 3100 	mov.w	r1, #131072	; 0x20000 8026ee4:	f7fe fa10 	bl	8025308 <NVIC_SetVectorTable>__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup){  uint32_t reg_value;  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07);               /* only values 0..7 are used          */  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */ 8026ee8:	4a17      	ldr	r2, [pc, #92]	; (8026f48 <main+0x70>) 8026eea:	68d1      	ldr	r1, [r2, #12]  reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk);             /* clear bits to change               */ 8026eec:	f64f 03ff 	movw	r3, #63743	; 0xf8ff 8026ef0:	400b      	ands	r3, r1  reg_value  =  (reg_value                                 | 8026ef2:	f043 63bf 	orr.w	r3, r3, #100139008	; 0x5f80000 8026ef6:	f443 3300 	orr.w	r3, r3, #131072	; 0x20000                ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) |                (PriorityGroupTmp << 8));                                     /* Insert write key and priorty group */  SCB->AIRCR =  reg_value; 8026efa:	60d3      	str	r3, [r2, #12]	NVIC_SetPriorityGrouping(0);	NVIC_PriorityGroupConfig( NVIC_PriorityGroup_4 ); 8026efc:	f44f 7040 	mov.w	r0, #768	; 0x300 8026f00:	f7fe f9c4 	bl	802528c <NVIC_PriorityGroupConfig>  This function enables IRQ interrupts by clearing the I-bit in the CPSR.  Can only be executed in Privileged modes. */__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void){  __ASM volatile ("cpsie i" : : : "memory"); 8026f04:	b662      	cpsie	i	__enable_irq();	//WDG_Init();	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE); 8026f06:	2101      	movs	r1, #1 8026f08:	f44f 5080 	mov.w	r0, #4096	; 0x1000 8026f0c:	f7fe fc1e 	bl	802574c <RCC_AHB1PeriphClockCmd>	/* Clear flash error flags if were set */	FLASH_ClearFlag(FLASH_FLAG_PGPERR); 8026f10:	2040      	movs	r0, #64	; 0x40	gpio_init();	spi_flash_test();//  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);    xTaskCreate( InitTask, "InitTask", 1000, NULL, tskIDLE_PRIORITY, NULL); 8026f12:	2400      	movs	r4, #0	//WDG_Init();	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);	/* Clear flash error flags if were set */	FLASH_ClearFlag(FLASH_FLAG_PGPERR); 8026f14:	f7fe fa2e 	bl	8025374 <FLASH_ClearFlag>	FLASH_ClearFlag(FLASH_FLAG_PGSERR); 8026f18:	2080      	movs	r0, #128	; 0x80 8026f1a:	f7fe fa2b 	bl	8025374 <FLASH_ClearFlag>	gpio_init(); 8026f1e:	f7ff f867 	bl	8025ff0 <gpio_init>	spi_flash_test(); 8026f22:	f7ff fd9f 	bl	8026a64 <spi_flash_test>//  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);    xTaskCreate( InitTask, "InitTask", 1000, NULL, tskIDLE_PRIORITY, NULL); 8026f26:	4909      	ldr	r1, [pc, #36]	; (8026f4c <main+0x74>) 8026f28:	9400      	str	r4, [sp, #0] 8026f2a:	f44f 727a 	mov.w	r2, #1000	; 0x3e8 8026f2e:	4623      	mov	r3, r4 8026f30:	9401      	str	r4, [sp, #4] 8026f32:	9402      	str	r4, [sp, #8] 8026f34:	9403      	str	r4, [sp, #12] 8026f36:	4806      	ldr	r0, [pc, #24]	; (8026f50 <main+0x78>) 8026f38:	f002 fd1a 	bl	8029970 <xTaskGenericCreate>    vTaskStartScheduler(); 8026f3c:	f002 fe4a 	bl	8029bd4 <vTaskStartScheduler>	/*while(1)	{	}*/} 8026f40:	4620      	mov	r0, r4 8026f42:	b004      	add	sp, #16 8026f44:	bd10      	pop	{r4, pc} 8026f46:	bf00      	nop 8026f48:	e000ed00 	.word	0xe000ed00 8026f4c:	08036c43 	.word	0x08036c43 8026f50:	08026db5 	.word	0x08026db508026f54 <NMI_Handler>:  * @brief  This function handles NMI exception.  * @param  None  * @retval None  */void NMI_Handler(void){ 8026f54:	4770      	bx	lr 8026f56:	0000      	movs	r0, r008026f58 <HardFault_Output>:}void HardFault_Output(uint32_t *sp){ 8026f58:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}    uint32_t r0  = sp[0];    uint32_t r1  = sp[1]; 8026f5c:	e890 0808 	ldmia.w	r0, {r3, fp}    uint32_t r2  = sp[2]; 8026f60:	f8d0 a008 	ldr.w	sl, [r0, #8]    uint32_t r3  = sp[3]; 8026f64:	f8d0 900c 	ldr.w	r9, [r0, #12]    uint32_t r12 = sp[4]; 8026f68:	f8d0 8010 	ldr.w	r8, [r0, #16]    uint32_t lr  = sp[5]; 8026f6c:	6947      	ldr	r7, [r0, #20]    uint32_t pc  = sp[6]; 8026f6e:	6986      	ldr	r6, [r0, #24]    uint32_t psr = sp[7]; 8026f70:	69c5      	ldr	r5, [r0, #28]    printf("HardFault:\n\r"); 8026f72:	9301      	str	r3, [sp, #4]void NMI_Handler(void){}void HardFault_Output(uint32_t *sp){ 8026f74:	4604      	mov	r4, r0    uint32_t r12 = sp[4];    uint32_t lr  = sp[5];    uint32_t pc  = sp[6];    uint32_t psr = sp[7];    printf("HardFault:\n\r"); 8026f76:	4816      	ldr	r0, [pc, #88]	; (8026fd0 <HardFault_Output+0x78>) 8026f78:	f000 fbc6 	bl	8027708 <tfp_printf>    /* Print CFSR register */    /* Print CPU registers */    printf("\n\rRegisters:\n\r"); 8026f7c:	4815      	ldr	r0, [pc, #84]	; (8026fd4 <HardFault_Output+0x7c>) 8026f7e:	f000 fbc3 	bl	8027708 <tfp_printf>    printf("SP          0x%08lx\n\r", (uint32_t)sp); 8026f82:	4815      	ldr	r0, [pc, #84]	; (8026fd8 <HardFault_Output+0x80>) 8026f84:	4621      	mov	r1, r4 8026f86:	f000 fbbf 	bl	8027708 <tfp_printf>    printf("R0          0x%08lx\n\r", r0); 8026f8a:	9b01      	ldr	r3, [sp, #4] 8026f8c:	4813      	ldr	r0, [pc, #76]	; (8026fdc <HardFault_Output+0x84>) 8026f8e:	4619      	mov	r1, r3 8026f90:	f000 fbba 	bl	8027708 <tfp_printf>    printf("R1          0x%08lx\n\r", r1); 8026f94:	4812      	ldr	r0, [pc, #72]	; (8026fe0 <HardFault_Output+0x88>) 8026f96:	4659      	mov	r1, fp 8026f98:	f000 fbb6 	bl	8027708 <tfp_printf>    printf("R2          0x%08lx\n\r", r2); 8026f9c:	4811      	ldr	r0, [pc, #68]	; (8026fe4 <HardFault_Output+0x8c>) 8026f9e:	4651      	mov	r1, sl 8026fa0:	f000 fbb2 	bl	8027708 <tfp_printf>    printf("R3          0x%08lx\n\r", r3); 8026fa4:	4810      	ldr	r0, [pc, #64]	; (8026fe8 <HardFault_Output+0x90>) 8026fa6:	4649      	mov	r1, r9 8026fa8:	f000 fbae 	bl	8027708 <tfp_printf>    printf("R12         0x%08lx\n\r", r12); 8026fac:	480f      	ldr	r0, [pc, #60]	; (8026fec <HardFault_Output+0x94>) 8026fae:	4641      	mov	r1, r8 8026fb0:	f000 fbaa 	bl	8027708 <tfp_printf>    printf("LR          0x%08lx\n\r", lr); 8026fb4:	480e      	ldr	r0, [pc, #56]	; (8026ff0 <HardFault_Output+0x98>) 8026fb6:	4639      	mov	r1, r7 8026fb8:	f000 fba6 	bl	8027708 <tfp_printf>    printf("PC          0x%08lx\n\r", pc); 8026fbc:	480d      	ldr	r0, [pc, #52]	; (8026ff4 <HardFault_Output+0x9c>) 8026fbe:	4631      	mov	r1, r6 8026fc0:	f000 fba2 	bl	8027708 <tfp_printf>    printf("PSR         0x%08lx\n\r", psr); 8026fc4:	480c      	ldr	r0, [pc, #48]	; (8026ff8 <HardFault_Output+0xa0>) 8026fc6:	4629      	mov	r1, r5 8026fc8:	f000 fb9e 	bl	8027708 <tfp_printf> 8026fcc:	e7fe      	b.n	8026fcc <HardFault_Output+0x74> 8026fce:	bf00      	nop 8026fd0:	08036c4c 	.word	0x08036c4c 8026fd4:	08036c59 	.word	0x08036c59 8026fd8:	08036c68 	.word	0x08036c68 8026fdc:	08036c7e 	.word	0x08036c7e 8026fe0:	08036c94 	.word	0x08036c94 8026fe4:	08036caa 	.word	0x08036caa 8026fe8:	08036cc0 	.word	0x08036cc0 8026fec:	08036cd6 	.word	0x08036cd6 8026ff0:	08036cec 	.word	0x08036cec 8026ff4:	08036d02 	.word	0x08036d02 8026ff8:	08036d18 	.word	0x08036d1808026ffc <HardFault_Handler>:  * @retval None  */__attribute__( (naked) )void HardFault_Handler(void){__asm volatile 8026ffc:	f01e 0f04 	tst.w	lr, #4 8027000:	bf0c      	ite	eq 8027002:	f3ef 8008 	mrseq	r0, MSP 8027006:	f3ef 8009 	mrsne	r0, PSP 802700a:	f8df 1004 	ldr.w	r1, [pc, #4]	; 8027010 <debugHardfault_address> 802700e:	4708      	bx	r108027010 <debugHardfault_address>: 8027010:	08026f59 	.word	0x08026f5908027014 <MemManage_Handler>:  * @brief  This function handles Memory Manage exception.  * @param  None  * @retval None  */void MemManage_Handler(void){ 8027014:	e7fe      	b.n	8027014 <MemManage_Handler> 8027016:	0000      	movs	r0, r008027018 <TIM8_UP_TIM13_IRQHandler>:  }}void TIM8_UP_TIM13_IRQHandler(void){	TIM_ClearITPendingBit(TIM13, TIM_IT_Update); 8027018:	4801      	ldr	r0, [pc, #4]	; (8027020 <TIM8_UP_TIM13_IRQHandler+0x8>) 802701a:	2101      	movs	r1, #1 802701c:	f7fe bdb4 	b.w	8025b88 <TIM_ClearITPendingBit> 8027020:	40001c00 	.word	0x40001c0008027024 <BusFault_Handler>:  * @brief  This function handles Bus Fault exception.  * @param  None  * @retval None  */void BusFault_Handler(void){ 8027024:	e7fe      	b.n	8027024 <BusFault_Handler>08027026 <UsageFault_Handler>:  * @brief  This function handles Usage Fault exception.  * @param  None  * @retval None  */void UsageFault_Handler(void){ 8027026:	e7fe      	b.n	8027026 <UsageFault_Handler>08027028 <DebugMon_Handler>:  * @brief  This function handles Debug Monitor exception.  * @param  None  * @retval None  */void DebugMon_Handler(void){ 8027028:	4770      	bx	lr0802702a <SDIO_IRQHandler>:/*void PPP_IRQHandler(void){}*/void SDIO_IRQHandler(void){ 802702a:	4770      	bx	lr0802702c <ETH_IRQHandler>:  * @brief  This function handles ethernet DMA interrupt request.  * @param  None  * @retval None  */void ETH_IRQHandler(void){ 802702c:	b507      	push	{r0, r1, r2, lr}  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; 802702e:	2300      	movs	r3, #0  /* Frame received */  if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET) 8027030:	2040      	movs	r0, #64	; 0x40  * @param  None  * @retval None  */void ETH_IRQHandler(void){  portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; 8027032:	9301      	str	r3, [sp, #4]  /* Frame received */  if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET) 8027034:	f00f fa86 	bl	8036544 <ETH_GetDMAFlagStatus> 8027038:	2801      	cmp	r0, #1 802703a:	d104      	bne.n	8027046 <ETH_IRQHandler+0x1a>  {    /* Give the semaphore to wakeup LwIP task */    xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken ); 802703c:	4b09      	ldr	r3, [pc, #36]	; (8027064 <ETH_IRQHandler+0x38>) 802703e:	a901      	add	r1, sp, #4 8027040:	6818      	ldr	r0, [r3, #0] 8027042:	f002 fb59 	bl	80296f8 <xQueueGiveFromISR>  }  /* Clear the interrupt flags. */  /* Clear the Eth DMA Rx IT pending bits */  ETH_DMAClearITPendingBit(ETH_DMA_IT_R); 8027046:	2040      	movs	r0, #64	; 0x40 8027048:	f00f fa92 	bl	8036570 <ETH_DMAClearITPendingBit>  ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS); 802704c:	f44f 3080 	mov.w	r0, #65536	; 0x10000 8027050:	f00f fa8e 	bl	8036570 <ETH_DMAClearITPendingBit>  // Switch tasks if necessary. */  if( xHigherPriorityTaskWoken != pdFALSE ) 8027054:	9b01      	ldr	r3, [sp, #4] 8027056:	b11b      	cbz	r3, 8027060 <ETH_IRQHandler+0x34>  {    portEND_SWITCHING_ISR( xHigherPriorityTaskWoken ); 8027058:	4b03      	ldr	r3, [pc, #12]	; (8027068 <ETH_IRQHandler+0x3c>) 802705a:	f04f 5280 	mov.w	r2, #268435456	; 0x10000000 802705e:	601a      	str	r2, [r3, #0]  }} 8027060:	bd0e      	pop	{r1, r2, r3, pc} 8027062:	bf00      	nop 8027064:	2000e57c 	.word	0x2000e57c 8027068:	e000ed04 	.word	0xe000ed040802706c <ulli2a>:#ifdef PRINTF_LONG_LONG_SUPPORTstatic void _TFP_GCC_NO_INLINE_ ulli2a(    unsigned long long int num, struct param *p){ 802706c:	e92d 4ff8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr}    int n = 0;    unsigned long long int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 8027070:	68d3      	ldr	r3, [r2, #12]static void _TFP_GCC_NO_INLINE_ ulli2a(    unsigned long long int num, struct param *p){    int n = 0;    unsigned long long int d = 1;    char *bf = p->bf; 8027072:	f8d2 b010 	ldr.w	fp, [r2, #16]#ifdef PRINTF_LONG_LONG_SUPPORTstatic void _TFP_GCC_NO_INLINE_ ulli2a(    unsigned long long int num, struct param *p){ 8027076:	4681      	mov	r9, r0 8027078:	468a      	mov	sl, r1 802707a:	4690      	mov	r8, r2    int n = 0;    unsigned long long int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 802707c:	461e      	mov	r6, r3 802707e:	2700      	movs	r7, #0#ifdef PRINTF_LONG_LONG_SUPPORTstatic void _TFP_GCC_NO_INLINE_ ulli2a(    unsigned long long int num, struct param *p){    int n = 0;    unsigned long long int d = 1; 8027080:	2401      	movs	r4, #1 8027082:	2500      	movs	r5, #0    char *bf = p->bf;    while (num / d >= p->base) 8027084:	e006      	b.n	8027094 <ulli2a+0x28>        d *= p->base; 8027086:	fb04 f307 	mul.w	r3, r4, r7 802708a:	fb06 3305 	mla	r3, r6, r5, r3 802708e:	fba4 4506 	umull	r4, r5, r4, r6 8027092:	195d      	adds	r5, r3, r5    unsigned long long int num, struct param *p){    int n = 0;    unsigned long long int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 8027094:	4648      	mov	r0, r9 8027096:	4651      	mov	r1, sl 8027098:	4622      	mov	r2, r4 802709a:	462b      	mov	r3, r5 802709c:	f7f9 ff26 	bl	8020eec <__aeabi_uldivmod> 80270a0:	42b9      	cmp	r1, r7 80270a2:	bf08      	it	eq 80270a4:	42b0      	cmpeq	r0, r6 80270a6:	d2ee      	bcs.n	8027086 <ulli2a+0x1a> 80270a8:	2600      	movs	r6, #0 80270aa:	e02d      	b.n	8027108 <ulli2a+0x9c>        d *= p->base;    while (d != 0) {        int dgt = num / d; 80270ac:	4622      	mov	r2, r4 80270ae:	462b      	mov	r3, r5 80270b0:	4648      	mov	r0, r9 80270b2:	4651      	mov	r1, sl 80270b4:	f7f9 ff1a 	bl	8020eec <__aeabi_uldivmod>        num %= d; 80270b8:	4651      	mov	r1, sl 80270ba:	4622      	mov	r2, r4 80270bc:	462b      	mov	r3, r5    unsigned long long int d = 1;    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) {        int dgt = num / d; 80270be:	4607      	mov	r7, r0        num %= d; 80270c0:	4648      	mov	r0, r9 80270c2:	f7f9 ff13 	bl	8020eec <__aeabi_uldivmod>        d /= p->base; 80270c6:	4620      	mov	r0, r4 80270c8:	4629      	mov	r1, r5    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) {        int dgt = num / d;        num %= d; 80270ca:	4691      	mov	r9, r2 80270cc:	469a      	mov	sl, r3        d /= p->base; 80270ce:	f8d8 200c 	ldr.w	r2, [r8, #12] 80270d2:	2300      	movs	r3, #0 80270d4:	f7f9 ff0a 	bl	8020eec <__aeabi_uldivmod> 80270d8:	4604      	mov	r4, r0 80270da:	460d      	mov	r5, r1        if (n || dgt > 0 || d == 0) { 80270dc:	b926      	cbnz	r6, 80270e8 <ulli2a+0x7c> 80270de:	2f00      	cmp	r7, #0 80270e0:	dc02      	bgt.n	80270e8 <ulli2a+0x7c> 80270e2:	ea54 0305 	orrs.w	r3, r4, r5 80270e6:	d1e1      	bne.n	80270ac <ulli2a+0x40>            *bf++ = dgt + (dgt < 10 ? '0' : (p->uc ? 'A' : 'a') - 10); 80270e8:	2f09      	cmp	r7, #9 80270ea:	b2fa      	uxtb	r2, r7 80270ec:	dd07      	ble.n	80270fe <ulli2a+0x92> 80270ee:	f898 3000 	ldrb.w	r3, [r8] 80270f2:	f013 0f04 	tst.w	r3, #4 80270f6:	bf0c      	ite	eq 80270f8:	2357      	moveq	r3, #87	; 0x57 80270fa:	2337      	movne	r3, #55	; 0x37 80270fc:	e000      	b.n	8027100 <ulli2a+0x94> 80270fe:	2330      	movs	r3, #48	; 0x30 8027100:	189b      	adds	r3, r3, r2 8027102:	f80b 3b01 	strb.w	r3, [fp], #1            ++n; 8027106:	3601      	adds	r6, #1    int n = 0;    unsigned long long int d = 1;    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) { 8027108:	ea54 0305 	orrs.w	r3, r4, r5 802710c:	d1ce      	bne.n	80270ac <ulli2a+0x40>        if (n || dgt > 0 || d == 0) {            *bf++ = dgt + (dgt < 10 ? '0' : (p->uc ? 'A' : 'a') - 10);            ++n;        }    }    *bf = 0; 802710e:	2300      	movs	r3, #0 8027110:	f88b 3000 	strb.w	r3, [fp] 8027114:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}08027118 <uli2a>:}#endif#ifdef PRINTF_LONG_SUPPORTstatic void uli2a(unsigned long int num, struct param *p){ 8027118:	b570      	push	{r4, r5, r6, lr}    int n = 0;    unsigned long int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 802711a:	68ca      	ldr	r2, [r1, #12]#ifdef PRINTF_LONG_SUPPORTstatic void uli2a(unsigned long int num, struct param *p){    int n = 0;    unsigned long int d = 1;    char *bf = p->bf; 802711c:	690c      	ldr	r4, [r1, #16]#ifdef PRINTF_LONG_SUPPORTstatic void uli2a(unsigned long int num, struct param *p){    int n = 0;    unsigned long int d = 1; 802711e:	2301      	movs	r3, #1    char *bf = p->bf;    while (num / d >= p->base) 8027120:	e000      	b.n	8027124 <uli2a+0xc>        d *= p->base; 8027122:	4353      	muls	r3, r2static void uli2a(unsigned long int num, struct param *p){    int n = 0;    unsigned long int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 8027124:	fbb0 f5f3 	udiv	r5, r0, r3 8027128:	4295      	cmp	r5, r2 802712a:	d2fa      	bcs.n	8027122 <uli2a+0xa> 802712c:	2500      	movs	r5, #0 802712e:	e01a      	b.n	8027166 <uli2a+0x4e>        d *= p->base;    while (d != 0) {        int dgt = num / d;        num %= d;        d /= p->base; 8027130:	68ce      	ldr	r6, [r1, #12]    unsigned long int d = 1;    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) {        int dgt = num / d; 8027132:	fbb0 f2f3 	udiv	r2, r0, r3        num %= d; 8027136:	fb03 0012 	mls	r0, r3, r2, r0        d /= p->base; 802713a:	fbb3 f3f6 	udiv	r3, r3, r6        if (n || dgt > 0 || d == 0) { 802713e:	b91d      	cbnz	r5, 8027148 <uli2a+0x30> 8027140:	2a00      	cmp	r2, #0 8027142:	dc01      	bgt.n	8027148 <uli2a+0x30> 8027144:	2b00      	cmp	r3, #0 8027146:	d1f3      	bne.n	8027130 <uli2a+0x18>            *bf++ = dgt + (dgt < 10 ? '0' : (p->uc ? 'A' : 'a') - 10); 8027148:	2a09      	cmp	r2, #9 802714a:	b2d6      	uxtb	r6, r2 802714c:	dd06      	ble.n	802715c <uli2a+0x44> 802714e:	780a      	ldrb	r2, [r1, #0] 8027150:	f012 0f04 	tst.w	r2, #4 8027154:	bf0c      	ite	eq 8027156:	2257      	moveq	r2, #87	; 0x57 8027158:	2237      	movne	r2, #55	; 0x37 802715a:	e000      	b.n	802715e <uli2a+0x46> 802715c:	2230      	movs	r2, #48	; 0x30 802715e:	1992      	adds	r2, r2, r6 8027160:	f804 2b01 	strb.w	r2, [r4], #1            ++n; 8027164:	3501      	adds	r5, #1    int n = 0;    unsigned long int d = 1;    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) { 8027166:	2b00      	cmp	r3, #0 8027168:	d1e2      	bne.n	8027130 <uli2a+0x18>        if (n || dgt > 0 || d == 0) {            *bf++ = dgt + (dgt < 10 ? '0' : (p->uc ? 'A' : 'a') - 10);            ++n;        }    }    *bf = 0; 802716a:	7023      	strb	r3, [r4, #0] 802716c:	bd70      	pop	{r4, r5, r6, pc}0802716e <ui2a>:    uli2a(num, p);}#endifstatic void ui2a(unsigned int num, struct param *p){ 802716e:	b570      	push	{r4, r5, r6, lr}    int n = 0;    unsigned int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 8027170:	68ca      	ldr	r2, [r1, #12]static void ui2a(unsigned int num, struct param *p){    int n = 0;    unsigned int d = 1;    char *bf = p->bf; 8027172:	690c      	ldr	r4, [r1, #16]#endifstatic void ui2a(unsigned int num, struct param *p){    int n = 0;    unsigned int d = 1; 8027174:	2301      	movs	r3, #1    char *bf = p->bf;    while (num / d >= p->base) 8027176:	e000      	b.n	802717a <ui2a+0xc>        d *= p->base; 8027178:	4353      	muls	r3, r2static void ui2a(unsigned int num, struct param *p){    int n = 0;    unsigned int d = 1;    char *bf = p->bf;    while (num / d >= p->base) 802717a:	fbb0 f5f3 	udiv	r5, r0, r3 802717e:	4295      	cmp	r5, r2 8027180:	d2fa      	bcs.n	8027178 <ui2a+0xa> 8027182:	2500      	movs	r5, #0 8027184:	e01a      	b.n	80271bc <ui2a+0x4e>        d *= p->base;    while (d != 0) {        int dgt = num / d;        num %= d;        d /= p->base; 8027186:	68ce      	ldr	r6, [r1, #12]    unsigned int d = 1;    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) {        int dgt = num / d; 8027188:	fbb0 f2f3 	udiv	r2, r0, r3        num %= d; 802718c:	fb03 0012 	mls	r0, r3, r2, r0        d /= p->base; 8027190:	fbb3 f3f6 	udiv	r3, r3, r6        if (n || dgt > 0 || d == 0) { 8027194:	b91d      	cbnz	r5, 802719e <ui2a+0x30> 8027196:	2a00      	cmp	r2, #0 8027198:	dc01      	bgt.n	802719e <ui2a+0x30> 802719a:	2b00      	cmp	r3, #0 802719c:	d1f3      	bne.n	8027186 <ui2a+0x18>            *bf++ = dgt + (dgt < 10 ? '0' : (p->uc ? 'A' : 'a') - 10); 802719e:	2a09      	cmp	r2, #9 80271a0:	b2d6      	uxtb	r6, r2 80271a2:	dd06      	ble.n	80271b2 <ui2a+0x44> 80271a4:	780a      	ldrb	r2, [r1, #0] 80271a6:	f012 0f04 	tst.w	r2, #4 80271aa:	bf0c      	ite	eq 80271ac:	2257      	moveq	r2, #87	; 0x57 80271ae:	2237      	movne	r2, #55	; 0x37 80271b0:	e000      	b.n	80271b4 <ui2a+0x46> 80271b2:	2230      	movs	r2, #48	; 0x30 80271b4:	1992      	adds	r2, r2, r6 80271b6:	f804 2b01 	strb.w	r2, [r4], #1            ++n; 80271ba:	3501      	adds	r5, #1    int n = 0;    unsigned int d = 1;    char *bf = p->bf;    while (num / d >= p->base)        d *= p->base;    while (d != 0) { 80271bc:	2b00      	cmp	r3, #0 80271be:	d1e2      	bne.n	8027186 <ui2a+0x18>        if (n || dgt > 0 || d == 0) {            *bf++ = dgt + (dgt < 10 ? '0' : (p->uc ? 'A' : 'a') - 10);            ++n;        }    }    *bf = 0; 80271c0:	7023      	strb	r3, [r4, #0] 80271c2:	bd70      	pop	{r4, r5, r6, pc}080271c4 <putchw>:}static void putchw(void *putp, putcf putf, struct param *p){ 80271c4:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}    char ch;    int n = p->width;    char *bf = p->bf; 80271c8:	6913      	ldr	r3, [r2, #16]}static void putchw(void *putp, putcf putf, struct param *p){    char ch;    int n = p->width; 80271ca:	6854      	ldr	r4, [r2, #4]}static void putchw(void *putp, putcf putf, struct param *p){ 80271cc:	4606      	mov	r6, r0 80271ce:	460f      	mov	r7, r1 80271d0:	4615      	mov	r5, r2    char ch;    int n = p->width;    char *bf = p->bf;    /* Number of filling characters */    while (*bf++ && n > 0) 80271d2:	e000      	b.n	80271d6 <putchw+0x12>        n--; 80271d4:	3c01      	subs	r4, #1    char ch;    int n = p->width;    char *bf = p->bf;    /* Number of filling characters */    while (*bf++ && n > 0) 80271d6:	f813 2b01 	ldrb.w	r2, [r3], #1 80271da:	b912      	cbnz	r2, 80271e2 <putchw+0x1e>        n--;    if (p->sign) 80271dc:	7a2b      	ldrb	r3, [r5, #8] 80271de:	b91b      	cbnz	r3, 80271e8 <putchw+0x24> 80271e0:	e003      	b.n	80271ea <putchw+0x26>    char ch;    int n = p->width;    char *bf = p->bf;    /* Number of filling characters */    while (*bf++ && n > 0) 80271e2:	2c00      	cmp	r4, #0 80271e4:	dcf6      	bgt.n	80271d4 <putchw+0x10> 80271e6:	e7f9      	b.n	80271dc <putchw+0x18>        n--;    if (p->sign)        n--; 80271e8:	3c01      	subs	r4, #1    if (p->alt && p->base == 16) 80271ea:	782b      	ldrb	r3, [r5, #0] 80271ec:	0799      	lsls	r1, r3, #30 80271ee:	d507      	bpl.n	8027200 <putchw+0x3c> 80271f0:	68eb      	ldr	r3, [r5, #12] 80271f2:	2b10      	cmp	r3, #16 80271f4:	d101      	bne.n	80271fa <putchw+0x36>        n -= 2; 80271f6:	3c02      	subs	r4, #2 80271f8:	e002      	b.n	8027200 <putchw+0x3c>    else if (p->alt && p->base == 8) 80271fa:	2b08      	cmp	r3, #8        n--; 80271fc:	bf08      	it	eq 80271fe:	3c01      	subeq	r4, #1    /* Fill with space to align to the right, before alternate or sign */    if (!p->lz && !p->align_left) { 8027200:	782b      	ldrb	r3, [r5, #0] 8027202:	f013 0f09 	tst.w	r3, #9 8027206:	d10d      	bne.n	8027224 <putchw+0x60> 8027208:	46a0      	mov	r8, r4 802720a:	e004      	b.n	8027216 <putchw+0x52>        while (n-- > 0)            putf(putp, ' '); 802720c:	4630      	mov	r0, r6 802720e:	2120      	movs	r1, #32 8027210:	47b8      	blx	r7 8027212:	f108 38ff 	add.w	r8, r8, #4294967295    else if (p->alt && p->base == 8)        n--;    /* Fill with space to align to the right, before alternate or sign */    if (!p->lz && !p->align_left) {        while (n-- > 0) 8027216:	f1b8 0f00 	cmp.w	r8, #0 802721a:	dcf7      	bgt.n	802720c <putchw+0x48>    return neg ? -fvalue : fvalue;}static void putchw(void *putp, putcf putf, struct param *p) 802721c:	1e63      	subs	r3, r4, #1 802721e:	ea24 74e4 	bic.w	r4, r4, r4, asr #31 8027222:	1b1c      	subs	r4, r3, r4        while (n-- > 0)            putf(putp, ' ');    }    /* print sign */    if (p->sign) 8027224:	7a29      	ldrb	r1, [r5, #8] 8027226:	b109      	cbz	r1, 802722c <putchw+0x68>        putf(putp, p->sign); 8027228:	4630      	mov	r0, r6 802722a:	47b8      	blx	r7    /* Alternate */    if (p->alt && p->base == 16) { 802722c:	782b      	ldrb	r3, [r5, #0] 802722e:	079a      	lsls	r2, r3, #30 8027230:	d512      	bpl.n	8027258 <putchw+0x94> 8027232:	68eb      	ldr	r3, [r5, #12] 8027234:	2b10      	cmp	r3, #16 8027236:	d10a      	bne.n	802724e <putchw+0x8a>        putf(putp, '0'); 8027238:	2130      	movs	r1, #48	; 0x30 802723a:	4630      	mov	r0, r6 802723c:	47b8      	blx	r7        putf(putp, (p->uc ? 'X' : 'x')); 802723e:	782b      	ldrb	r3, [r5, #0] 8027240:	f013 0f04 	tst.w	r3, #4 8027244:	4630      	mov	r0, r6 8027246:	bf0c      	ite	eq 8027248:	2178      	moveq	r1, #120	; 0x78 802724a:	2158      	movne	r1, #88	; 0x58 802724c:	e003      	b.n	8027256 <putchw+0x92>    } else if (p->alt && p->base == 8) { 802724e:	2b08      	cmp	r3, #8 8027250:	d102      	bne.n	8027258 <putchw+0x94>        putf(putp, '0'); 8027252:	4630      	mov	r0, r6 8027254:	2130      	movs	r1, #48	; 0x30 8027256:	47b8      	blx	r7    }    /* Fill with zeros, after alternate or sign */    if (p->lz) { 8027258:	782b      	ldrb	r3, [r5, #0] 802725a:	07db      	lsls	r3, r3, #31 802725c:	d50d      	bpl.n	802727a <putchw+0xb6> 802725e:	46a0      	mov	r8, r4 8027260:	e004      	b.n	802726c <putchw+0xa8>        while (n-- > 0)            putf(putp, '0'); 8027262:	4630      	mov	r0, r6 8027264:	2130      	movs	r1, #48	; 0x30 8027266:	47b8      	blx	r7 8027268:	f108 38ff 	add.w	r8, r8, #4294967295        putf(putp, '0');    }    /* Fill with zeros, after alternate or sign */    if (p->lz) {        while (n-- > 0) 802726c:	f1b8 0f00 	cmp.w	r8, #0 8027270:	dcf7      	bgt.n	8027262 <putchw+0x9e>    return neg ? -fvalue : fvalue;}static void putchw(void *putp, putcf putf, struct param *p) 8027272:	1e63      	subs	r3, r4, #1 8027274:	ea24 74e4 	bic.w	r4, r4, r4, asr #31 8027278:	1b1c      	subs	r4, r3, r4        while (n-- > 0)            putf(putp, '0');    }    /* Put actual buffer */    bf = p->bf; 802727a:	f8d5 8010 	ldr.w	r8, [r5, #16]    while ((ch = *bf++)) 802727e:	e001      	b.n	8027284 <putchw+0xc0>        putf(putp, ch); 8027280:	4630      	mov	r0, r6 8027282:	47b8      	blx	r7            putf(putp, '0');    }    /* Put actual buffer */    bf = p->bf;    while ((ch = *bf++)) 8027284:	f818 1b01 	ldrb.w	r1, [r8], #1 8027288:	2900      	cmp	r1, #0 802728a:	d1f9      	bne.n	8027280 <putchw+0xbc>        putf(putp, ch);    /* Fill with space to align to the left, after string */    if (!p->lz && p->align_left) { 802728c:	782b      	ldrb	r3, [r5, #0] 802728e:	f003 0309 	and.w	r3, r3, #9 8027292:	2b08      	cmp	r3, #8 8027294:	d106      	bne.n	80272a4 <putchw+0xe0> 8027296:	e003      	b.n	80272a0 <putchw+0xdc>        while (n-- > 0)            putf(putp, ' '); 8027298:	4630      	mov	r0, r6 802729a:	2120      	movs	r1, #32 802729c:	47b8      	blx	r7 802729e:	3c01      	subs	r4, #1    while ((ch = *bf++))        putf(putp, ch);    /* Fill with space to align to the left, after string */    if (!p->lz && p->align_left) {        while (n-- > 0) 80272a0:	2c00      	cmp	r4, #0 80272a2:	dcf9      	bgt.n	8027298 <putchw+0xd4> 80272a4:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}080272a8 <_vsnprintf_putcf>:};static void _vsnprintf_putcf(void *p, char c){  struct _vsnprintf_putcf_data *data = (struct _vsnprintf_putcf_data*)p;  if (data->num_chars < data->dest_capacity) 80272a8:	6883      	ldr	r3, [r0, #8] 80272aa:	6802      	ldr	r2, [r0, #0] 80272ac:	4293      	cmp	r3, r2    data->dest[data->num_chars] = c; 80272ae:	bf3c      	itt	cc 80272b0:	6842      	ldrcc	r2, [r0, #4] 80272b2:	54d1      	strbcc	r1, [r2, r3]  data->num_chars ++; 80272b4:	6883      	ldr	r3, [r0, #8] 80272b6:	3301      	adds	r3, #1 80272b8:	6083      	str	r3, [r0, #8] 80272ba:	4770      	bx	lr080272bc <_vsprintf_putcf>:};static void _vsprintf_putcf(void *p, char c){  struct _vsprintf_putcf_data *data = (struct _vsprintf_putcf_data*)p;  data->dest[data->num_chars++] = c; 80272bc:	e890 000c 	ldmia.w	r0, {r2, r3} 80272c0:	54d1      	strb	r1, [r2, r3] 80272c2:	3301      	adds	r3, #1 80272c4:	6043      	str	r3, [r0, #4] 80272c6:	4770      	bx	lr080272c8 <tfp_format>:            putf(putp, ' ');    }}void tfp_format(void *putp, putcf putf, const char *fmt, va_list va){ 80272c8:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 80272cc:	b09b      	sub	sp, #108	; 0x6c 80272ce:	4617      	mov	r7, r2    char bf[23];  /* long = 64b on some architectures */#else    char bf[12];  /* int = 32b on some architectures */#endif    char ch;    p.bf = bf; 80272d0:	aa04      	add	r2, sp, #16            putf(putp, ' ');    }}void tfp_format(void *putp, putcf putf, const char *fmt, va_list va){ 80272d2:	4605      	mov	r5, r0 80272d4:	460e      	mov	r6, r1 80272d6:	461c      	mov	r4, r3    char bf[23];  /* long = 64b on some architectures */#else    char bf[12];  /* int = 32b on some architectures */#endif    char ch;    p.bf = bf; 80272d8:	920e      	str	r2, [sp, #56]	; 0x38    while ((ch = *(fmt++))) { 80272da:	e208      	b.n	80276ee <tfp_format+0x426>        if (ch != '%') { 80272dc:	2925      	cmp	r1, #37	; 0x25 80272de:	d000      	beq.n	80272e2 <tfp_format+0x1a> 80272e0:	e13a      	b.n	8027558 <tfp_format+0x290>#endif            /* Init parameter struct */            p.lz = 0;            p.alt = 0;            p.width = 0;            p.align_left = 0; 80272e2:	f89d 2028 	ldrb.w	r2, [sp, #40]	; 0x28            char lng = 0;  /* 1 for long, 2 for long long */#endif            /* Init parameter struct */            p.lz = 0;            p.alt = 0;            p.width = 0; 80272e6:	2300      	movs	r3, #0            p.align_left = 0; 80272e8:	f002 02fc 	and.w	r2, r2, #252	; 0xfc 80272ec:	f363 02c3 	bfi	r2, r3, #3, #1 80272f0:	f88d 2028 	strb.w	r2, [sp, #40]	; 0x28            p.sign = 0;            p.prec = 2; 80272f4:	2102      	movs	r1, #2        } else {#ifdef PRINTF_LONG_SUPPORT            char lng = 0;  /* 1 for long, 2 for long long */#endif            /* Init parameter struct */            p.lz = 0; 80272f6:	b2d2      	uxtb	r2, r2 80272f8:	f002 0c01 	and.w	ip, r2, #1 80272fc:	f3c2 0040 	ubfx	r0, r2, #1, #1            p.alt = 0;            p.width = 0; 8027300:	930b      	str	r3, [sp, #44]	; 0x2c            p.align_left = 0;            p.sign = 0; 8027302:	f88d 3030 	strb.w	r3, [sp, #48]	; 0x30            p.prec = 2; 8027306:	f88d 103c 	strb.w	r1, [sp, #60]	; 0x3c 802730a:	f3c2 02c0 	ubfx	r2, r2, #3, #1            /* Flags */            while ((ch = *(fmt++))) { 802730e:	e012      	b.n	8027336 <tfp_format+0x6e>                switch (ch) { 8027310:	292d      	cmp	r1, #45	; 0x2d 8027312:	d00f      	beq.n	8027334 <tfp_format+0x6c> 8027314:	d804      	bhi.n	8027320 <tfp_format+0x58> 8027316:	2923      	cmp	r1, #35	; 0x23 8027318:	d008      	beq.n	802732c <tfp_format+0x64> 802731a:	292b      	cmp	r1, #43	; 0x2b 802731c:	d10f      	bne.n	802733e <tfp_format+0x76> 802731e:	e007      	b.n	8027330 <tfp_format+0x68> 8027320:	2930      	cmp	r1, #48	; 0x30 8027322:	d000      	beq.n	8027326 <tfp_format+0x5e> 8027324:	e00b      	b.n	802733e <tfp_format+0x76>                case '-':                    p.align_left = 1;                    continue;                case '0':                    p.lz = 1; 8027326:	f04f 0c01 	mov.w	ip, #1                    continue; 802732a:	e004      	b.n	8027336 <tfp_format+0x6e>                case '#':                    p.alt = 1; 802732c:	2001      	movs	r0, #1                    continue; 802732e:	e002      	b.n	8027336 <tfp_format+0x6e>                case '+':                	p.sign = 1; 8027330:	2301      	movs	r3, #1                	continue; 8027332:	e000      	b.n	8027336 <tfp_format+0x6e>            /* Flags */            while ((ch = *(fmt++))) {                switch (ch) {                case '-':                    p.align_left = 1; 8027334:	2201      	movs	r2, #1            p.align_left = 0;            p.sign = 0;            p.prec = 2;            /* Flags */            while ((ch = *(fmt++))) { 8027336:	f817 1b01 	ldrb.w	r1, [r7], #1 802733a:	2900      	cmp	r1, #0 802733c:	d1e8      	bne.n	8027310 <tfp_format+0x48> 802733e:	f89d 8028 	ldrb.w	r8, [sp, #40]	; 0x28 8027342:	f88d 3030 	strb.w	r3, [sp, #48]	; 0x30 8027346:	f36c 0800 	bfi	r8, ip, #0, #1 802734a:	46c4      	mov	ip, r8 802734c:	f360 0c41 	bfi	ip, r0, #1, #1 8027350:	4660      	mov	r0, ip                }                break;            }            /* Width */            if (ch >= '0' && ch <= '9') { 8027352:	f1a1 0330 	sub.w	r3, r1, #48	; 0x30 8027356:	f362 00c3 	bfi	r0, r2, #3, #1 802735a:	2b09      	cmp	r3, #9 802735c:	f88d 0028 	strb.w	r0, [sp, #40]	; 0x28 8027360:	d81d      	bhi.n	802739e <tfp_format+0xd6> 8027362:	e004      	b.n	802736e <tfp_format+0xa6>    unsigned int num = 0;    int digit;    while ((digit = a2d(ch)) >= 0) {        if (digit > base)            break;        num = num * base + digit; 8027364:	fb00 3202 	mla	r2, r0, r2, r3        ch = *p++; 8027368:	f817 1b01 	ldrb.w	r1, [r7], #1 802736c:	e001      	b.n	8027372 <tfp_format+0xaa>                }                break;            }            /* Width */            if (ch >= '0' && ch <= '9') { 802736e:	2200      	movs	r2, #0    unsigned int num = 0;    int digit;    while ((digit = a2d(ch)) >= 0) {        if (digit > base)            break;        num = num * base + digit; 8027370:	200a      	movs	r0, #10    ui2a(num, p);}static int a2d(char ch){    if (ch >= '0' && ch <= '9') 8027372:	f1a1 0330 	sub.w	r3, r1, #48	; 0x30 8027376:	fa5f fc83 	uxtb.w	ip, r3 802737a:	f1bc 0f09 	cmp.w	ip, #9 802737e:	d9f1      	bls.n	8027364 <tfp_format+0x9c>        return ch - '0';    else if (ch >= 'a' && ch <= 'f') 8027380:	f1a1 0361 	sub.w	r3, r1, #97	; 0x61 8027384:	2b05      	cmp	r3, #5 8027386:	d802      	bhi.n	802738e <tfp_format+0xc6>        return ch - 'a' + 10; 8027388:	f1a1 0357 	sub.w	r3, r1, #87	; 0x57 802738c:	e1b5      	b.n	80276fa <tfp_format+0x432>    else if (ch >= 'A' && ch <= 'F') 802738e:	f1a1 0341 	sub.w	r3, r1, #65	; 0x41 8027392:	2b05      	cmp	r3, #5 8027394:	d802      	bhi.n	802739c <tfp_format+0xd4>        return ch - 'A' + 10; 8027396:	f1a1 0337 	sub.w	r3, r1, #55	; 0x37 802739a:	e1ae      	b.n	80276fa <tfp_format+0x432>            break;        num = num * base + digit;        ch = *p++;    }    *src = p;    *nump = num; 802739c:	920b      	str	r2, [sp, #44]	; 0x2c            }            /* We accept 'x.y' format but don't support it completely:             * we ignore the 'y' digit => this ignores 0-fill             * size and makes it == width (ie. 'x') */            if (ch == '.') { 802739e:	292e      	cmp	r1, #46	; 0x2e 80273a0:	d10e      	bne.n	80273c0 <tfp_format+0xf8>              //p.lz = 1;  /* zero-padding */              /* ignore actual 0-fill size: */               ch = *(fmt++);               if (ch >= '0' && ch <= '9') 80273a2:	783a      	ldrb	r2, [r7, #0] 80273a4:	3a30      	subs	r2, #48	; 0x30 80273a6:	b2d2      	uxtb	r2, r2             * we ignore the 'y' digit => this ignores 0-fill             * size and makes it == width (ie. 'x') */            if (ch == '.') {              //p.lz = 1;  /* zero-padding */              /* ignore actual 0-fill size: */               ch = *(fmt++); 80273a8:	1c7b      	adds	r3, r7, #1               if (ch >= '0' && ch <= '9') 80273aa:	2a09      	cmp	r2, #9            	   p.prec = ch - '0'; 80273ac:	bf98      	it	ls 80273ae:	f88d 203c 	strbls.w	r2, [sp, #60]	; 0x3c               do               {            	   ch = *(fmt++); 80273b2:	f813 1b01 	ldrb.w	r1, [r3], #1               }   while (ch >= '0' && ch <= '9'); 80273b6:	f1a1 0230 	sub.w	r2, r1, #48	; 0x30 80273ba:	2a09      	cmp	r2, #9               ch = *(fmt++);               if (ch >= '0' && ch <= '9')            	   p.prec = ch - '0';               do               {            	   ch = *(fmt++); 80273bc:	461f      	mov	r7, r3               }   while (ch >= '0' && ch <= '9'); 80273be:	d9f8      	bls.n	80273b2 <tfp_format+0xea>            }#ifdef PRINTF_SIZE_T_SUPPORT# ifdef PRINTF_LONG_SUPPORT            if (ch == 'z') { 80273c0:	297a      	cmp	r1, #122	; 0x7a 80273c2:	d102      	bne.n	80273ca <tfp_format+0x102>                ch = *(fmt++); 80273c4:	f817 1b01 	ldrb.w	r1, [r7], #1 80273c8:	e005      	b.n	80273d6 <tfp_format+0x10e>            } else# endif#endif#ifdef PRINTF_LONG_SUPPORT            if (ch == 'l') { 80273ca:	296c      	cmp	r1, #108	; 0x6c 80273cc:	d109      	bne.n	80273e2 <tfp_format+0x11a>                ch = *(fmt++); 80273ce:	7839      	ldrb	r1, [r7, #0]                lng = 1;#ifdef PRINTF_LONG_LONG_SUPPORT                if (ch == 'l') { 80273d0:	296c      	cmp	r1, #108	; 0x6c 80273d2:	d002      	beq.n	80273da <tfp_format+0x112># endif#endif#ifdef PRINTF_LONG_SUPPORT            if (ch == 'l') {                ch = *(fmt++); 80273d4:	3701      	adds	r7, #1                lng = 1; 80273d6:	2301      	movs	r3, #1 80273d8:	e004      	b.n	80273e4 <tfp_format+0x11c>#ifdef PRINTF_LONG_LONG_SUPPORT                if (ch == 'l') {                  ch = *(fmt++); 80273da:	7879      	ldrb	r1, [r7, #1]                  lng = 2; 80273dc:	2302      	movs	r3, #2            if (ch == 'l') {                ch = *(fmt++);                lng = 1;#ifdef PRINTF_LONG_LONG_SUPPORT                if (ch == 'l') {                  ch = *(fmt++); 80273de:	3702      	adds	r7, #2 80273e0:	e000      	b.n	80273e4 <tfp_format+0x11c>    while ((ch = *(fmt++))) {        if (ch != '%') {            putf(putp, ch);        } else {#ifdef PRINTF_LONG_SUPPORT            char lng = 0;  /* 1 for long, 2 for long long */ 80273e2:	2300      	movs	r3, #0                  lng = 2;                }#endif            }#endif            switch (ch) { 80273e4:	2969      	cmp	r1, #105	; 0x69 80273e6:	d036      	beq.n	8027456 <tfp_format+0x18e> 80273e8:	d816      	bhi.n	8027418 <tfp_format+0x150> 80273ea:	2963      	cmp	r1, #99	; 0x63 80273ec:	f000 80a1 	beq.w	8027532 <tfp_format+0x26a> 80273f0:	d80c      	bhi.n	802740c <tfp_format+0x144> 80273f2:	2946      	cmp	r1, #70	; 0x46 80273f4:	f000 80b3 	beq.w	802755e <tfp_format+0x296> 80273f8:	d806      	bhi.n	8027408 <tfp_format+0x140> 80273fa:	2900      	cmp	r1, #0 80273fc:	f000 8181 	beq.w	8027702 <tfp_format+0x43a> 8027400:	2925      	cmp	r1, #37	; 0x25 8027402:	f040 8174 	bne.w	80276ee <tfp_format+0x426> 8027406:	e0a7      	b.n	8027558 <tfp_format+0x290> 8027408:	2958      	cmp	r1, #88	; 0x58 802740a:	e012      	b.n	8027432 <tfp_format+0x16a> 802740c:	2964      	cmp	r1, #100	; 0x64 802740e:	d022      	beq.n	8027456 <tfp_format+0x18e> 8027410:	2966      	cmp	r1, #102	; 0x66 8027412:	f040 816c 	bne.w	80276ee <tfp_format+0x426> 8027416:	e0a2      	b.n	802755e <tfp_format+0x296> 8027418:	2973      	cmp	r1, #115	; 0x73 802741a:	f000 8090 	beq.w	802753e <tfp_format+0x276> 802741e:	d805      	bhi.n	802742c <tfp_format+0x164> 8027420:	296f      	cmp	r1, #111	; 0x6f 8027422:	d078      	beq.n	8027516 <tfp_format+0x24e> 8027424:	2970      	cmp	r1, #112	; 0x70 8027426:	f040 8162 	bne.w	80276ee <tfp_format+0x426> 802742a:	e040      	b.n	80274ae <tfp_format+0x1e6> 802742c:	2975      	cmp	r1, #117	; 0x75 802742e:	d003      	beq.n	8027438 <tfp_format+0x170> 8027430:	2978      	cmp	r1, #120	; 0x78 8027432:	f040 815c 	bne.w	80276ee <tfp_format+0x426> 8027436:	e041      	b.n	80274bc <tfp_format+0x1f4>            case 0:                goto abort;            case 'u':                p.base = 10; 8027438:	220a      	movs	r2, #10#ifdef PRINTF_LONG_SUPPORT#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng) 802743a:	2b02      	cmp	r3, #2#endif            switch (ch) {            case 0:                goto abort;            case 'u':                p.base = 10; 802743c:	920d      	str	r2, [sp, #52]	; 0x34#ifdef PRINTF_LONG_SUPPORT#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng) 802743e:	d107      	bne.n	8027450 <tfp_format+0x188>                    ulli2a(va_arg(va, unsigned long long int), &p); 8027440:	3407      	adds	r4, #7 8027442:	f024 0307 	bic.w	r3, r4, #7 8027446:	f103 0408 	add.w	r4, r3, #8 802744a:	e9d3 0100 	ldrd	r0, r1, [r3] 802744e:	e017      	b.n	8027480 <tfp_format+0x1b8>                else#endif                  if (1 == lng)                    uli2a(va_arg(va, unsigned long int), &p); 8027450:	6820      	ldr	r0, [r4, #0] 8027452:	a90a      	add	r1, sp, #40	; 0x28 8027454:	e04f      	b.n	80274f6 <tfp_format+0x22e>                    ui2a(va_arg(va, unsigned int), &p);                putchw(putp, putf, &p);                break;            case 'd':            case 'i':                p.base = 10; 8027456:	220a      	movs	r2, #10#ifdef PRINTF_LONG_SUPPORT#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng) 8027458:	2b02      	cmp	r3, #2                    ui2a(va_arg(va, unsigned int), &p);                putchw(putp, putf, &p);                break;            case 'd':            case 'i':                p.base = 10; 802745a:	920d      	str	r2, [sp, #52]	; 0x34#ifdef PRINTF_LONG_SUPPORT#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng) 802745c:	d112      	bne.n	8027484 <tfp_format+0x1bc>                    lli2a(va_arg(va, long long int), &p); 802745e:	3407      	adds	r4, #7 8027460:	f024 0307 	bic.w	r3, r4, #7 8027464:	e9d3 0100 	ldrd	r0, r1, [r3] 8027468:	f103 0408 	add.w	r4, r3, #8    *bf = 0;}static void lli2a(long long int num, struct param *p){    if (num < 0) { 802746c:	2800      	cmp	r0, #0 802746e:	f171 0300 	sbcs.w	r3, r1, #0 8027472:	da05      	bge.n	8027480 <tfp_format+0x1b8>        num = -num;        p->sign = '-'; 8027474:	232d      	movs	r3, #45	; 0x2d}static void lli2a(long long int num, struct param *p){    if (num < 0) {        num = -num; 8027476:	4240      	negs	r0, r0 8027478:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1        p->sign = '-'; 802747c:	f88d 3030 	strb.w	r3, [sp, #48]	; 0x30    }    ulli2a(num, p); 8027480:	aa0a      	add	r2, sp, #40	; 0x28 8027482:	e033      	b.n	80274ec <tfp_format+0x224>#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng)                    lli2a(va_arg(va, long long int), &p);                else#endif                  if (1 == lng) 8027484:	2b01      	cmp	r3, #1                    li2a(va_arg(va, long int), &p); 8027486:	6820      	ldr	r0, [r4, #0] 8027488:	f104 0804 	add.w	r8, r4, #4#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng)                    lli2a(va_arg(va, long long int), &p);                else#endif                  if (1 == lng) 802748c:	d107      	bne.n	802749e <tfp_format+0x1d6>    *bf = 0;}static void li2a(long num, struct param *p){    if (num < 0) { 802748e:	2800      	cmp	r0, #0 8027490:	da03      	bge.n	802749a <tfp_format+0x1d2>        num = -num;        p->sign = '-'; 8027492:	232d      	movs	r3, #45	; 0x2d}static void li2a(long num, struct param *p){    if (num < 0) {        num = -num; 8027494:	4240      	negs	r0, r0        p->sign = '-'; 8027496:	f88d 3030 	strb.w	r3, [sp, #48]	; 0x30    }    uli2a(num, p); 802749a:	a90a      	add	r1, sp, #40	; 0x28 802749c:	e02f      	b.n	80274fe <tfp_format+0x236>    *bf = 0;}static void i2a(int num, struct param *p){    if (num < 0) { 802749e:	2800      	cmp	r0, #0 80274a0:	da03      	bge.n	80274aa <tfp_format+0x1e2>        num = -num;        p->sign = '-'; 80274a2:	232d      	movs	r3, #45	; 0x2d}static void i2a(int num, struct param *p){    if (num < 0) {        num = -num; 80274a4:	4240      	negs	r0, r0        p->sign = '-'; 80274a6:	f88d 3030 	strb.w	r3, [sp, #48]	; 0x30    }    ui2a(num, p); 80274aa:	a90a      	add	r1, sp, #40	; 0x28 80274ac:	e02a      	b.n	8027504 <tfp_format+0x23c>                    i2a(va_arg(va, int), &p);                putchw(putp, putf, &p);                break;#ifdef SIZEOF_POINTER            case 'p':                p.alt = 1; 80274ae:	f89d 3028 	ldrb.w	r3, [sp, #40]	; 0x28 80274b2:	f043 0302 	orr.w	r3, r3, #2 80274b6:	f88d 3028 	strb.w	r3, [sp, #40]	; 0x28# if defined(SIZEOF_INT) && SIZEOF_POINTER <= SIZEOF_INT                lng = 0; 80274ba:	2300      	movs	r3, #0                lng = 2;# endif#endif            case 'x':            case 'X':                p.base = 16; 80274bc:	2210      	movs	r2, #16                p.uc = (ch == 'X')?1:0; 80274be:	f1b1 0e58 	subs.w	lr, r1, #88	; 0x58 80274c2:	f1de 0100 	rsbs	r1, lr, #0 80274c6:	f89d 0028 	ldrb.w	r0, [sp, #40]	; 0x28                lng = 2;# endif#endif            case 'x':            case 'X':                p.base = 16; 80274ca:	920d      	str	r2, [sp, #52]	; 0x34                p.uc = (ch == 'X')?1:0; 80274cc:	eb51 010e 	adcs.w	r1, r1, lr 80274d0:	aa1a      	add	r2, sp, #104	; 0x68 80274d2:	f361 0082 	bfi	r0, r1, #2, #1#ifdef PRINTF_LONG_SUPPORT#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng) 80274d6:	2b02      	cmp	r3, #2# endif#endif            case 'x':            case 'X':                p.base = 16;                p.uc = (ch == 'X')?1:0; 80274d8:	f802 0d40 	strb.w	r0, [r2, #-64]!#ifdef PRINTF_LONG_SUPPORT#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng) 80274dc:	d109      	bne.n	80274f2 <tfp_format+0x22a>                    ulli2a(va_arg(va, unsigned long long int), &p); 80274de:	3407      	adds	r4, #7 80274e0:	f024 0307 	bic.w	r3, r4, #7 80274e4:	e9d3 0100 	ldrd	r0, r1, [r3] 80274e8:	f103 0408 	add.w	r4, r3, #8 80274ec:	f7ff fdbe 	bl	802706c <ulli2a> 80274f0:	e00b      	b.n	802750a <tfp_format+0x242>                else#endif                  if (1 == lng)                    uli2a(va_arg(va, unsigned long int), &p); 80274f2:	6820      	ldr	r0, [r4, #0] 80274f4:	4611      	mov	r1, r2#ifdef PRINTF_LONG_LONG_SUPPORT                if (2 == lng)                    ulli2a(va_arg(va, unsigned long long int), &p);                else#endif                  if (1 == lng) 80274f6:	2b01      	cmp	r3, #1 80274f8:	f104 0804 	add.w	r8, r4, #4 80274fc:	d102      	bne.n	8027504 <tfp_format+0x23c>                    uli2a(va_arg(va, unsigned long int), &p); 80274fe:	f7ff fe0b 	bl	8027118 <uli2a> 8027502:	e001      	b.n	8027508 <tfp_format+0x240>                else#endif                    ui2a(va_arg(va, unsigned int), &p); 8027504:	f7ff fe33 	bl	802716e <ui2a> 8027508:	4644      	mov	r4, r8                putchw(putp, putf, &p); 802750a:	4628      	mov	r0, r5 802750c:	4631      	mov	r1, r6 802750e:	aa0a      	add	r2, sp, #40	; 0x28 8027510:	f7ff fe58 	bl	80271c4 <putchw>                break; 8027514:	e0eb      	b.n	80276ee <tfp_format+0x426>            case 'o':                p.base = 8; 8027516:	2308      	movs	r3, #8                ui2a(va_arg(va, unsigned int), &p); 8027518:	6820      	ldr	r0, [r4, #0]#endif                    ui2a(va_arg(va, unsigned int), &p);                putchw(putp, putf, &p);                break;            case 'o':                p.base = 8; 802751a:	930d      	str	r3, [sp, #52]	; 0x34                ui2a(va_arg(va, unsigned int), &p); 802751c:	a90a      	add	r1, sp, #40	; 0x28 802751e:	f7ff fe26 	bl	802716e <ui2a>                putchw(putp, putf, &p); 8027522:	4628      	mov	r0, r5 8027524:	4631      	mov	r1, r6 8027526:	aa0a      	add	r2, sp, #40	; 0x28                    ui2a(va_arg(va, unsigned int), &p);                putchw(putp, putf, &p);                break;            case 'o':                p.base = 8;                ui2a(va_arg(va, unsigned int), &p); 8027528:	f104 0804 	add.w	r8, r4, #4                putchw(putp, putf, &p); 802752c:	f7ff fe4a 	bl	80271c4 <putchw> 8027530:	e010      	b.n	8027554 <tfp_format+0x28c>                break;            case 'c':                putf(putp, (char)(va_arg(va, int))); 8027532:	4628      	mov	r0, r5 8027534:	7821      	ldrb	r1, [r4, #0] 8027536:	f104 0804 	add.w	r8, r4, #4 802753a:	47b0      	blx	r6 802753c:	e00a      	b.n	8027554 <tfp_format+0x28c>                break;            case 's':                p.bf = va_arg(va, char *); 802753e:	6823      	ldr	r3, [r4, #0]                putchw(putp, putf, &p); 8027540:	aa0a      	add	r2, sp, #40	; 0x28 8027542:	4628      	mov	r0, r5 8027544:	4631      	mov	r1, r6                break;            case 'c':                putf(putp, (char)(va_arg(va, int)));                break;            case 's':                p.bf = va_arg(va, char *); 8027546:	930e      	str	r3, [sp, #56]	; 0x38                putchw(putp, putf, &p); 8027548:	f7ff fe3c 	bl	80271c4 <putchw>                p.bf = bf; 802754c:	aa04      	add	r2, sp, #16                break;            case 'c':                putf(putp, (char)(va_arg(va, int)));                break;            case 's':                p.bf = va_arg(va, char *); 802754e:	f104 0804 	add.w	r8, r4, #4                putchw(putp, putf, &p);                p.bf = bf; 8027552:	920e      	str	r2, [sp, #56]	; 0x38                break;            case 'c':                putf(putp, (char)(va_arg(va, int)));                break;            case 's':                p.bf = va_arg(va, char *); 8027554:	4644      	mov	r4, r8                putchw(putp, putf, &p);                p.bf = bf;                break; 8027556:	e0ca      	b.n	80276ee <tfp_format+0x426>            case '%':                putf(putp, ch); 8027558:	4628      	mov	r0, r5 802755a:	47b0      	blx	r6                break; 802755c:	e0c7      	b.n	80276ee <tfp_format+0x426>            case 'f':            case 'F':                fval  = va_arg(va, double); 802755e:	3407      	adds	r4, #7 8027560:	f024 0307 	bic.w	r3, r4, #7 8027564:	f103 0408 	add.w	r4, r3, #8 8027568:	e893 0404 	ldmia.w	r3, {r2, sl} 802756c:	9200      	str	r2, [sp, #0]                sign = 0;                if (fval < 0) 802756e:	4610      	mov	r0, r2 8027570:	4651      	mov	r1, sl 8027572:	2200      	movs	r2, #0 8027574:	2300      	movs	r3, #0 8027576:	f7f9 fa95 	bl	8020aa4 <__aeabi_dcmplt> 802757a:	b138      	cbz	r0, 802758c <tfp_format+0x2c4>				   {                	   sign    = 1;					   p.width--; 802757c:	9b0b      	ldr	r3, [sp, #44]	; 0x2c 802757e:	3b01      	subs	r3, #1 8027580:	930b      	str	r3, [sp, #44]	; 0x2c					   fval    = - fval; 8027582:	f10a 4a00 	add.w	sl, sl, #2147483648	; 0x80000000            case 'F':                fval  = va_arg(va, double);                sign = 0;                if (fval < 0)				   {                	   sign    = 1; 8027586:	f04f 0b01 	mov.w	fp, #1 802758a:	e009      	b.n	80275a0 <tfp_format+0x2d8>					   p.width--;					   fval    = - fval;				   }				   else if (p.sign) { 802758c:	f89d 3030 	ldrb.w	r3, [sp, #48]	; 0x30 8027590:	b12b      	cbz	r3, 802759e <tfp_format+0x2d6>					   sign = 2;					   p.width--; 8027592:	9b0b      	ldr	r3, [sp, #44]	; 0x2c 8027594:	3b01      	subs	r3, #1 8027596:	930b      	str	r3, [sp, #44]	; 0x2c                	   sign    = 1;					   p.width--;					   fval    = - fval;				   }				   else if (p.sign) {					   sign = 2; 8027598:	f04f 0b02 	mov.w	fp, #2 802759c:	e000      	b.n	80275a0 <tfp_format+0x2d8>                putf(putp, ch);                break;            case 'f':            case 'F':                fval  = va_arg(va, double);                sign = 0; 802759e:	469b      	mov	fp, r3				   else if (p.sign) {					   sign = 2;					   p.width--;				   }                fpart = (int)fval; 80275a0:	4651      	mov	r1, sl 80275a2:	9800      	ldr	r0, [sp, #0] 80275a4:	f7f9 faa6 	bl	8020af4 <__aeabi_d2iz>                fiter = 0; 80275a8:	2200      	movs	r2, #0				   else if (p.sign) {					   sign = 2;					   p.width--;				   }                fpart = (int)fval; 80275aa:	9001      	str	r0, [sp, #4] 80275ac:	4680      	mov	r8, r0                fiter = 0;                while (fpart != 0)                {                    temp_buffer[fiter++] = fpart % 10; 80275ae:	210a      	movs	r1, #10				   }                fpart = (int)fval;                fiter = 0;                while (fpart != 0) 80275b0:	e008      	b.n	80275c4 <tfp_format+0x2fc>                {                    temp_buffer[fiter++] = fpart % 10; 80275b2:	fb98 f0f1 	sdiv	r0, r8, r1 80275b6:	ab10      	add	r3, sp, #64	; 0x40 80275b8:	fb01 8810 	mls	r8, r1, r0, r8 80275bc:	f843 8022 	str.w	r8, [r3, r2, lsl #2] 80275c0:	3201      	adds	r2, #1                    fpart = fpart / 10; 80275c2:	4680      	mov	r8, r0				   }                fpart = (int)fval;                fiter = 0;                while (fpart != 0) 80275c4:	f1b8 0f00 	cmp.w	r8, #0 80275c8:	d1f3      	bne.n	80275b2 <tfp_format+0x2ea>                    temp_buffer[fiter++] = fpart % 10;                    fpart = fpart / 10;                }                fiter--;                if (fiter == -1) 80275ca:	f102 39ff 	add.w	r9, r2, #4294967295 80275ce:	b912      	cbnz	r2, 80275d6 <tfp_format+0x30e>                	p.width--; 80275d0:	9a0b      	ldr	r2, [sp, #44]	; 0x2c 80275d2:	3a01      	subs	r2, #1 80275d4:	920b      	str	r2, [sp, #44]	; 0x2c                /* Leading zeros */                if (p.lz) { 80275d6:	f89d 2028 	ldrb.w	r2, [sp, #40]	; 0x28 80275da:	07d0      	lsls	r0, r2, #31 80275dc:	d51b      	bpl.n	8027616 <tfp_format+0x34e>                	if (sign == 1) 80275de:	f1bb 0f01 	cmp.w	fp, #1 80275e2:	d102      	bne.n	80275ea <tfp_format+0x322> 					   putf(putp, '-'); 80275e4:	4628      	mov	r0, r5 80275e6:	212d      	movs	r1, #45	; 0x2d 80275e8:	e007      	b.n	80275fa <tfp_format+0x332>                	else if (sign == 2) 80275ea:	f1bb 0f02 	cmp.w	fp, #2 80275ee:	d105      	bne.n	80275fc <tfp_format+0x334>                	   putf(putp, '+'); 80275f0:	4628      	mov	r0, r5 80275f2:	212b      	movs	r1, #43	; 0x2b 80275f4:	e001      	b.n	80275fa <tfp_format+0x332>					while (p.width-- > p.prec + fiter + 2)					{						putf(putp, '0'); 80275f6:	4628      	mov	r0, r5 80275f8:	2130      	movs	r1, #48	; 0x30 80275fa:	47b0      	blx	r6                	if (sign == 1) 					   putf(putp, '-');                	else if (sign == 2)                	   putf(putp, '+');					while (p.width-- > p.prec + fiter + 2) 80275fc:	f89d 203c 	ldrb.w	r2, [sp, #60]	; 0x3c 8027600:	9b0b      	ldr	r3, [sp, #44]	; 0x2c 8027602:	444a      	add	r2, r9 8027604:	3202      	adds	r2, #2 8027606:	1e59      	subs	r1, r3, #1 8027608:	4293      	cmp	r3, r2 802760a:	910b      	str	r1, [sp, #44]	; 0x2c 802760c:	dcf3      	bgt.n	80275f6 <tfp_format+0x32e> 802760e:	e017      	b.n	8027640 <tfp_format+0x378>                else                {					while (p.width-- > p.prec + fiter + 2)					{						putf(putp, ' '); 8027610:	4628      	mov	r0, r5 8027612:	2120      	movs	r1, #32 8027614:	47b0      	blx	r6					}                }                else                {					while (p.width-- > p.prec + fiter + 2) 8027616:	f89d 103c 	ldrb.w	r1, [sp, #60]	; 0x3c 802761a:	9a0b      	ldr	r2, [sp, #44]	; 0x2c 802761c:	4449      	add	r1, r9 802761e:	3102      	adds	r1, #2 8027620:	1e50      	subs	r0, r2, #1 8027622:	428a      	cmp	r2, r1 8027624:	900b      	str	r0, [sp, #44]	; 0x2c 8027626:	dcf3      	bgt.n	8027610 <tfp_format+0x348>					{						putf(putp, ' ');					}                	if (sign == 1) 8027628:	f1bb 0f01 	cmp.w	fp, #1 802762c:	d102      	bne.n	8027634 <tfp_format+0x36c> 					   putf(putp, '-'); 802762e:	4628      	mov	r0, r5 8027630:	212d      	movs	r1, #45	; 0x2d 8027632:	e004      	b.n	802763e <tfp_format+0x376>                	else if (sign == 2) 8027634:	f1bb 0f02 	cmp.w	fp, #2 8027638:	d102      	bne.n	8027640 <tfp_format+0x378>                	   putf(putp, '+'); 802763a:	4628      	mov	r0, r5 802763c:	212b      	movs	r1, #43	; 0x2b 802763e:	47b0      	blx	r6                }                if (fiter == -1) 8027640:	f1b9 3fff 	cmp.w	r9, #4294967295 8027644:	d102      	bne.n	802764c <tfp_format+0x384>                	putf(putp, '0'); 8027646:	4628      	mov	r0, r5 8027648:	2130      	movs	r1, #48	; 0x30 802764a:	e007      	b.n	802765c <tfp_format+0x394>                while (fiter > -1)                {                    putf(putp, '0' + (temp_buffer[fiter--])); 802764c:	ab10      	add	r3, sp, #64	; 0x40 802764e:	4628      	mov	r0, r5 8027650:	f853 1029 	ldr.w	r1, [r3, r9, lsl #2] 8027654:	3130      	adds	r1, #48	; 0x30 8027656:	f109 39ff 	add.w	r9, r9, #4294967295 802765a:	b2c9      	uxtb	r1, r1 802765c:	47b0      	blx	r6                }                if (fiter == -1)                	putf(putp, '0');                while (fiter > -1) 802765e:	f1b9 3fff 	cmp.w	r9, #4294967295 8027662:	d1f3      	bne.n	802764c <tfp_format+0x384>                {                    putf(putp, '0' + (temp_buffer[fiter--]));                }                putf(putp, '.'); 8027664:	4628      	mov	r0, r5 8027666:	212e      	movs	r1, #46	; 0x2e 8027668:	47b0      	blx	r6                ffactor = 1; 802766a:	f04f 0901 	mov.w	r9, #1                while (p.prec-- > 0) 802766e:	e01d      	b.n	80276ac <tfp_format+0x3e4>                {                	ffactor *= 10; 8027670:	230a      	movs	r3, #10                	fpart = (int)((fval - (int)fval)*ffactor); 8027672:	9801      	ldr	r0, [sp, #4]                putf(putp, '.');                ffactor = 1;                while (p.prec-- > 0)                {                	ffactor *= 10; 8027674:	fb03 f909 	mul.w	r9, r3, r9                	fpart = (int)((fval - (int)fval)*ffactor); 8027678:	f7f8 ff3c 	bl	80204f4 <__aeabi_i2d> 802767c:	4602      	mov	r2, r0 802767e:	460b      	mov	r3, r1 8027680:	9800      	ldr	r0, [sp, #0] 8027682:	4651      	mov	r1, sl 8027684:	f7f8 fde8 	bl	8020258 <__aeabi_dsub> 8027688:	e9cd 0102 	strd	r0, r1, [sp, #8] 802768c:	4648      	mov	r0, r9 802768e:	f7f8 ff31 	bl	80204f4 <__aeabi_i2d> 8027692:	4602      	mov	r2, r0 8027694:	460b      	mov	r3, r1 8027696:	e9dd 0102 	ldrd	r0, r1, [sp, #8] 802769a:	f7f8 ff91 	bl	80205c0 <__aeabi_dmul> 802769e:	f7f9 fa29 	bl	8020af4 <__aeabi_d2iz>                	if (fpart == 0) 80276a2:	4680      	mov	r8, r0 80276a4:	b910      	cbnz	r0, 80276ac <tfp_format+0x3e4>						putf(putp, '0'); 80276a6:	4628      	mov	r0, r5 80276a8:	2130      	movs	r1, #48	; 0x30 80276aa:	47b0      	blx	r6                    putf(putp, '0' + (temp_buffer[fiter--]));                }                putf(putp, '.');                ffactor = 1;                while (p.prec-- > 0) 80276ac:	f89d 303c 	ldrb.w	r3, [sp, #60]	; 0x3c 80276b0:	1e5a      	subs	r2, r3, #1 80276b2:	f88d 203c 	strb.w	r2, [sp, #60]	; 0x3c 80276b6:	2b00      	cmp	r3, #0 80276b8:	d1da      	bne.n	8027670 <tfp_format+0x3a8>						putf(putp, '0');                }                fiter = 0;                while (fpart != 0)                {                    temp_buffer[fiter++] = fpart % 10; 80276ba:	220a      	movs	r2, #10 80276bc:	e008      	b.n	80276d0 <tfp_format+0x408> 80276be:	fb98 f1f2 	sdiv	r1, r8, r2 80276c2:	a810      	add	r0, sp, #64	; 0x40 80276c4:	fb02 8811 	mls	r8, r2, r1, r8 80276c8:	f840 8023 	str.w	r8, [r0, r3, lsl #2] 80276cc:	3301      	adds	r3, #1                    fpart = fpart / 10; 80276ce:	4688      	mov	r8, r1                	fpart = (int)((fval - (int)fval)*ffactor);                	if (fpart == 0)						putf(putp, '0');                }                fiter = 0;                while (fpart != 0) 80276d0:	f1b8 0f00 	cmp.w	r8, #0 80276d4:	d1f3      	bne.n	80276be <tfp_format+0x3f6> 80276d6:	4698      	mov	r8, r3                    temp_buffer[fiter++] = fpart % 10;                    fpart = fpart / 10;                }                fiter--;                while (fiter > -1) 80276d8:	e006      	b.n	80276e8 <tfp_format+0x420>                {                    putf(putp, '0' + (temp_buffer[fiter--])); 80276da:	ab10      	add	r3, sp, #64	; 0x40 80276dc:	4628      	mov	r0, r5 80276de:	f853 1028 	ldr.w	r1, [r3, r8, lsl #2] 80276e2:	3130      	adds	r1, #48	; 0x30 80276e4:	b2c9      	uxtb	r1, r1 80276e6:	47b0      	blx	r6                    temp_buffer[fiter++] = fpart % 10;                    fpart = fpart / 10;                }                fiter--;                while (fiter > -1) 80276e8:	f118 38ff 	adds.w	r8, r8, #4294967295 80276ec:	d2f5      	bcs.n	80276da <tfp_format+0x412>    char bf[12];  /* int = 32b on some architectures */#endif    char ch;    p.bf = bf;    while ((ch = *(fmt++))) { 80276ee:	f817 1b01 	ldrb.w	r1, [r7], #1 80276f2:	2900      	cmp	r1, #0 80276f4:	f47f adf2 	bne.w	80272dc <tfp_format+0x14> 80276f8:	e003      	b.n	8027702 <tfp_format+0x43a>{    const char *p = *src;    unsigned int num = 0;    int digit;    while ((digit = a2d(ch)) >= 0) {        if (digit > base) 80276fa:	2b0a      	cmp	r3, #10 80276fc:	f77f ae32 	ble.w	8027364 <tfp_format+0x9c> 8027700:	e64c      	b.n	802739c <tfp_format+0xd4>                break;            }        }    } abort:;} 8027702:	b01b      	add	sp, #108	; 0x6c 8027704:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}08027708 <tfp_printf>:    stdout_putf = putf;    stdout_putp = putp;}void tfp_printf(char *fmt, ...){ 8027708:	b40f      	push	{r0, r1, r2, r3} 802770a:	b507      	push	{r0, r1, r2, lr}    va_list va;    va_start(va, fmt);    tfp_format(stdout_putp, stdout_putf, fmt, va); 802770c:	4906      	ldr	r1, [pc, #24]	; (8027728 <tfp_printf+0x20>)    stdout_putf = putf;    stdout_putp = putp;}void tfp_printf(char *fmt, ...){ 802770e:	ab04      	add	r3, sp, #16    va_list va;    va_start(va, fmt);    tfp_format(stdout_putp, stdout_putf, fmt, va); 8027710:	6808      	ldr	r0, [r1, #0] 8027712:	4906      	ldr	r1, [pc, #24]	; (802772c <tfp_printf+0x24>)    stdout_putf = putf;    stdout_putp = putp;}void tfp_printf(char *fmt, ...){ 8027714:	f853 2b04 	ldr.w	r2, [r3], #4    va_list va;    va_start(va, fmt);    tfp_format(stdout_putp, stdout_putf, fmt, va); 8027718:	6809      	ldr	r1, [r1, #0]}void tfp_printf(char *fmt, ...){    va_list va;    va_start(va, fmt); 802771a:	9301      	str	r3, [sp, #4]    tfp_format(stdout_putp, stdout_putf, fmt, va); 802771c:	f7ff fdd4 	bl	80272c8 <tfp_format>    va_end(va);} 8027720:	e8bd 400e 	ldmia.w	sp!, {r1, r2, r3, lr} 8027724:	b004      	add	sp, #16 8027726:	4770      	bx	lr 8027728:	20002930 	.word	0x20002930 802772c:	2000292c 	.word	0x2000292c08027730 <tfp_vsnprintf>:    data->dest[data->num_chars] = c;  data->num_chars ++;}int tfp_vsnprintf(char *str, size_t size, const char *format, va_list ap){ 8027730:	b51f      	push	{r0, r1, r2, r3, r4, lr} 8027732:	2400      	movs	r4, #0  struct _vsnprintf_putcf_data data;  if (size < 1) 8027734:	b181      	cbz	r1, 8027758 <tfp_vsnprintf+0x28>    return 0;  data.dest = str;  data.dest_capacity = size-1; 8027736:	3901      	subs	r1, #1  struct _vsnprintf_putcf_data data;  if (size < 1)    return 0;  data.dest = str; 8027738:	9002      	str	r0, [sp, #8]  data.dest_capacity = size-1; 802773a:	9101      	str	r1, [sp, #4]  data.num_chars = 0;  tfp_format(&data, _vsnprintf_putcf, format, ap); 802773c:	a801      	add	r0, sp, #4 802773e:	4908      	ldr	r1, [pc, #32]	; (8027760 <tfp_vsnprintf+0x30>)  if (size < 1)    return 0;  data.dest = str;  data.dest_capacity = size-1;  data.num_chars = 0; 8027740:	9403      	str	r4, [sp, #12]  tfp_format(&data, _vsnprintf_putcf, format, ap); 8027742:	f7ff fdc1 	bl	80272c8 <tfp_format>  if (data.num_chars < data.dest_capacity) 8027746:	9903      	ldr	r1, [sp, #12] 8027748:	9b01      	ldr	r3, [sp, #4] 802774a:	9a02      	ldr	r2, [sp, #8] 802774c:	4299      	cmp	r1, r3    data.dest[data.num_chars] = '\0'; 802774e:	bf34      	ite	cc 8027750:	5454      	strbcc	r4, [r2, r1]  else    data.dest[data.dest_capacity] = '\0'; 8027752:	54d4      	strbcs	r4, [r2, r3]  return data.num_chars; 8027754:	9803      	ldr	r0, [sp, #12] 8027756:	e000      	b.n	802775a <tfp_vsnprintf+0x2a>int tfp_vsnprintf(char *str, size_t size, const char *format, va_list ap){  struct _vsnprintf_putcf_data data;  if (size < 1)    return 0; 8027758:	4608      	mov	r0, r1    data.dest[data.num_chars] = '\0';  else    data.dest[data.dest_capacity] = '\0';  return data.num_chars;} 802775a:	b004      	add	sp, #16 802775c:	bd10      	pop	{r4, pc} 802775e:	bf00      	nop 8027760:	080272a9 	.word	0x080272a908027764 <tfp_snprintf>:int tfp_snprintf(char *str, size_t size, const char *format, ...){ 8027764:	b40c      	push	{r2, r3} 8027766:	b507      	push	{r0, r1, r2, lr} 8027768:	ab04      	add	r3, sp, #16 802776a:	f853 2b04 	ldr.w	r2, [r3], #4  va_list ap;  int retval;  va_start(ap, format); 802776e:	9301      	str	r3, [sp, #4]  retval = tfp_vsnprintf(str, size, format, ap); 8027770:	f7ff ffde 	bl	8027730 <tfp_vsnprintf>  va_end(ap);  return retval;} 8027774:	e8bd 400e 	ldmia.w	sp!, {r1, r2, r3, lr} 8027778:	b002      	add	sp, #8 802777a:	4770      	bx	lr0802777c <tfp_vsprintf>:  struct _vsprintf_putcf_data *data = (struct _vsprintf_putcf_data*)p;  data->dest[data->num_chars++] = c;}int tfp_vsprintf(char *str, const char *format, va_list ap){ 802777c:	b537      	push	{r0, r1, r2, r4, r5, lr} 802777e:	460d      	mov	r5, r1 8027780:	4613      	mov	r3, r2  struct _vsprintf_putcf_data data;  data.dest = str; 8027782:	9000      	str	r0, [sp, #0]  data.num_chars = 0; 8027784:	2400      	movs	r4, #0  tfp_format(&data, _vsprintf_putcf, format, ap); 8027786:	4668      	mov	r0, sp 8027788:	462a      	mov	r2, r5 802778a:	4904      	ldr	r1, [pc, #16]	; (802779c <tfp_vsprintf+0x20>)int tfp_vsprintf(char *str, const char *format, va_list ap){  struct _vsprintf_putcf_data data;  data.dest = str;  data.num_chars = 0; 802778c:	9401      	str	r4, [sp, #4]  tfp_format(&data, _vsprintf_putcf, format, ap); 802778e:	f7ff fd9b 	bl	80272c8 <tfp_format>  data.dest[data.num_chars] = '\0'; 8027792:	e89d 000c 	ldmia.w	sp, {r2, r3} 8027796:	54d4      	strb	r4, [r2, r3]  return data.num_chars;} 8027798:	9801      	ldr	r0, [sp, #4] 802779a:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 802779c:	080272bd 	.word	0x080272bd080277a0 <tfp_sprintf>:int tfp_sprintf(char *str, const char *format, ...){ 80277a0:	b40e      	push	{r1, r2, r3} 80277a2:	b503      	push	{r0, r1, lr} 80277a4:	aa03      	add	r2, sp, #12 80277a6:	f852 1b04 	ldr.w	r1, [r2], #4  va_list ap;  int retval;  va_start(ap, format); 80277aa:	9201      	str	r2, [sp, #4]  retval = tfp_vsprintf(str, format, ap); 80277ac:	f7ff ffe6 	bl	802777c <tfp_vsprintf>  va_end(ap);  return retval;} 80277b0:	e8bd 400c 	ldmia.w	sp!, {r2, r3, lr} 80277b4:	b003      	add	sp, #12 80277b6:	4770      	bx	lr080277b8 <GetLineFailBitStr>:  /*  if (upsParams.lineFailBit)    *str = '1';  else    *str = '0';*/	*str = '0'; 80277b8:	2330      	movs	r3, #48	; 0x30 80277ba:	7003      	strb	r3, [r0, #0]  *len = 1; 80277bc:	2301      	movs	r3, #1 80277be:	700b      	strb	r3, [r1, #0] 80277c0:	4770      	bx	lr080277c2 <GetLowBatteryBitStr>:    *str = '1';  else    *str = '0';    *len = 1;*/	*str = '0'; 80277c2:	2330      	movs	r3, #48	; 0x30 80277c4:	7003      	strb	r3, [r0, #0]	  *len = 1; 80277c6:	2301      	movs	r3, #1 80277c8:	700b      	strb	r3, [r1, #0] 80277ca:	4770      	bx	lr080277cc <GetInputFreqStr>:/**  * @brief    */void GetInputFreqStr(char *str, uint8_t *len){ 80277cc:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", UPS.Freq_in); 80277ce:	4b08      	ldr	r3, [pc, #32]	; (80277f0 <GetInputFreqStr+0x24>)/**  * @brief    */void GetInputFreqStr(char *str, uint8_t *len){ 80277d0:	4604      	mov	r4, r0  sprintf(str, "%0.1f", UPS.Freq_in); 80277d2:	6818      	ldr	r0, [r3, #0]/**  * @brief    */void GetInputFreqStr(char *str, uint8_t *len){ 80277d4:	460d      	mov	r5, r1  sprintf(str, "%0.1f", UPS.Freq_in); 80277d6:	f7f8 fe9f 	bl	8020518 <__aeabi_f2d> 80277da:	4602      	mov	r2, r0 80277dc:	460b      	mov	r3, r1 80277de:	4620      	mov	r0, r4 80277e0:	4904      	ldr	r1, [pc, #16]	; (80277f4 <GetInputFreqStr+0x28>) 80277e2:	f7ff ffdd 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 80277e6:	4620      	mov	r0, r4 80277e8:	f7fa fb42 	bl	8021e70 <strlen> 80277ec:	7028      	strb	r0, [r5, #0] 80277ee:	bd38      	pop	{r3, r4, r5, pc} 80277f0:	2000e954 	.word	0x2000e954 80277f4:	08036d2e 	.word	0x08036d2e080277f8 <GetOutputFreqStr>:/**  * @brief    */void GetOutputFreqStr(char *str, uint8_t *len){ 80277f8:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", UPS.Freq_in); 80277fa:	4b08      	ldr	r3, [pc, #32]	; (802781c <GetOutputFreqStr+0x24>)/**  * @brief    */void GetOutputFreqStr(char *str, uint8_t *len){ 80277fc:	4604      	mov	r4, r0  sprintf(str, "%0.1f", UPS.Freq_in); 80277fe:	6818      	ldr	r0, [r3, #0]/**  * @brief    */void GetOutputFreqStr(char *str, uint8_t *len){ 8027800:	460d      	mov	r5, r1  sprintf(str, "%0.1f", UPS.Freq_in); 8027802:	f7f8 fe89 	bl	8020518 <__aeabi_f2d> 8027806:	4602      	mov	r2, r0 8027808:	460b      	mov	r3, r1 802780a:	4620      	mov	r0, r4 802780c:	4904      	ldr	r1, [pc, #16]	; (8027820 <GetOutputFreqStr+0x28>) 802780e:	f7ff ffc7 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027812:	4620      	mov	r0, r4 8027814:	f7fa fb2c 	bl	8021e70 <strlen> 8027818:	7028      	strb	r0, [r5, #0] 802781a:	bd38      	pop	{r3, r4, r5, pc} 802781c:	2000e954 	.word	0x2000e954 8027820:	08036d2e 	.word	0x08036d2e08027824 <GetInputVoltageStr>:/**  * @brief    */void GetInputVoltageStr(char *str, uint8_t *len){ 8027824:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", UPS.VAC_in); 8027826:	4b08      	ldr	r3, [pc, #32]	; (8027848 <GetInputVoltageStr+0x24>)/**  * @brief    */void GetInputVoltageStr(char *str, uint8_t *len){ 8027828:	4604      	mov	r4, r0  sprintf(str, "%0.1f", UPS.VAC_in); 802782a:	6858      	ldr	r0, [r3, #4]/**  * @brief    */void GetInputVoltageStr(char *str, uint8_t *len){ 802782c:	460d      	mov	r5, r1  sprintf(str, "%0.1f", UPS.VAC_in); 802782e:	f7f8 fe73 	bl	8020518 <__aeabi_f2d> 8027832:	4602      	mov	r2, r0 8027834:	460b      	mov	r3, r1 8027836:	4620      	mov	r0, r4 8027838:	4904      	ldr	r1, [pc, #16]	; (802784c <GetInputVoltageStr+0x28>) 802783a:	f7ff ffb1 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 802783e:	4620      	mov	r0, r4 8027840:	f7fa fb16 	bl	8021e70 <strlen> 8027844:	7028      	strb	r0, [r5, #0] 8027846:	bd38      	pop	{r3, r4, r5, pc} 8027848:	2000e954 	.word	0x2000e954 802784c:	08036d2e 	.word	0x08036d2e08027850 <GetOutputVoltageStr>:/**  * @brief    */void GetOutputVoltageStr(char *str, uint8_t *len){ 8027850:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", UPS.VAC_out); 8027852:	4b08      	ldr	r3, [pc, #32]	; (8027874 <GetOutputVoltageStr+0x24>)/**  * @brief    */void GetOutputVoltageStr(char *str, uint8_t *len){ 8027854:	4604      	mov	r4, r0  sprintf(str, "%0.1f", UPS.VAC_out); 8027856:	6898      	ldr	r0, [r3, #8]/**  * @brief    */void GetOutputVoltageStr(char *str, uint8_t *len){ 8027858:	460d      	mov	r5, r1  sprintf(str, "%0.1f", UPS.VAC_out); 802785a:	f7f8 fe5d 	bl	8020518 <__aeabi_f2d> 802785e:	4602      	mov	r2, r0 8027860:	460b      	mov	r3, r1 8027862:	4620      	mov	r0, r4 8027864:	4904      	ldr	r1, [pc, #16]	; (8027878 <GetOutputVoltageStr+0x28>) 8027866:	f7ff ff9b 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 802786a:	4620      	mov	r0, r4 802786c:	f7fa fb00 	bl	8021e70 <strlen> 8027870:	7028      	strb	r0, [r5, #0] 8027872:	bd38      	pop	{r3, r4, r5, pc} 8027874:	2000e954 	.word	0x2000e954 8027878:	08036d2e 	.word	0x08036d2e0802787c <GetPowerStr>:/**  * @brief    */void GetPowerStr(char *str, uint8_t *len){ 802787c:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%d", UPS.Load); 802787e:	4b06      	ldr	r3, [pc, #24]	; (8027898 <GetPowerStr+0x1c>)/**  * @brief    */void GetPowerStr(char *str, uint8_t *len){ 8027880:	4605      	mov	r5, r0 8027882:	460c      	mov	r4, r1  sprintf(str, "%d", UPS.Load); 8027884:	7c1a      	ldrb	r2, [r3, #16] 8027886:	4905      	ldr	r1, [pc, #20]	; (802789c <GetPowerStr+0x20>) 8027888:	f7ff ff8a 	bl	80277a0 <tfp_sprintf>  *len = strlen(str);  802788c:	4628      	mov	r0, r5 802788e:	f7fa faef 	bl	8021e70 <strlen> 8027892:	7020      	strb	r0, [r4, #0] 8027894:	bd38      	pop	{r3, r4, r5, pc} 8027896:	bf00      	nop 8027898:	2000e954 	.word	0x2000e954 802789c:	08036d34 	.word	0x08036d34080278a0 <GetBatCapacityStr>:/**  * @brief    */void GetBatCapacityStr(char *str, uint8_t *len){ 80278a0:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", UPS.SOC); 80278a2:	4b06      	ldr	r3, [pc, #24]	; (80278bc <GetBatCapacityStr+0x1c>)/**  * @brief    */void GetBatCapacityStr(char *str, uint8_t *len){ 80278a4:	4605      	mov	r5, r0 80278a6:	460c      	mov	r4, r1  sprintf(str, "%0.1f", UPS.SOC); 80278a8:	7c5a      	ldrb	r2, [r3, #17] 80278aa:	4905      	ldr	r1, [pc, #20]	; (80278c0 <GetBatCapacityStr+0x20>) 80278ac:	f7ff ff78 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 80278b0:	4628      	mov	r0, r5 80278b2:	f7fa fadd 	bl	8021e70 <strlen> 80278b6:	7020      	strb	r0, [r4, #0] 80278b8:	bd38      	pop	{r3, r4, r5, pc} 80278ba:	bf00      	nop 80278bc:	2000e954 	.word	0x2000e954 80278c0:	08036d2e 	.word	0x08036d2e080278c4 <GetRuntimeStr>:/**  * @brief    */void GetRuntimeStr(char *str, uint8_t *len){ 80278c4:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%d", UPS.work_time); 80278c6:	4b06      	ldr	r3, [pc, #24]	; (80278e0 <GetRuntimeStr+0x1c>)/**  * @brief    */void GetRuntimeStr(char *str, uint8_t *len){ 80278c8:	4605      	mov	r5, r0 80278ca:	460c      	mov	r4, r1  sprintf(str, "%d", UPS.work_time); 80278cc:	7c9a      	ldrb	r2, [r3, #18] 80278ce:	4905      	ldr	r1, [pc, #20]	; (80278e4 <GetRuntimeStr+0x20>) 80278d0:	f7ff ff66 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 80278d4:	4628      	mov	r0, r5 80278d6:	f7fa facb 	bl	8021e70 <strlen> 80278da:	7020      	strb	r0, [r4, #0] 80278dc:	bd38      	pop	{r3, r4, r5, pc} 80278de:	bf00      	nop 80278e0:	2000e954 	.word	0x2000e954 80278e4:	08036d34 	.word	0x08036d34080278e8 <GetInternalTempStr>:/**  * @brief    */void GetInternalTempStr(char *str, uint8_t *len){ 80278e8:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", UPS.Temp); 80278ea:	4b08      	ldr	r3, [pc, #32]	; (802790c <GetInternalTempStr+0x24>)/**  * @brief    */void GetInternalTempStr(char *str, uint8_t *len){ 80278ec:	4604      	mov	r4, r0  sprintf(str, "%0.1f", UPS.Temp); 80278ee:	68d8      	ldr	r0, [r3, #12]/**  * @brief    */void GetInternalTempStr(char *str, uint8_t *len){ 80278f0:	460d      	mov	r5, r1  sprintf(str, "%0.1f", UPS.Temp); 80278f2:	f7f8 fe11 	bl	8020518 <__aeabi_f2d> 80278f6:	4602      	mov	r2, r0 80278f8:	460b      	mov	r3, r1 80278fa:	4620      	mov	r0, r4 80278fc:	4904      	ldr	r1, [pc, #16]	; (8027910 <GetInternalTempStr+0x28>) 80278fe:	f7ff ff4f 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027902:	4620      	mov	r0, r4 8027904:	f7fa fab4 	bl	8021e70 <strlen> 8027908:	7028      	strb	r0, [r5, #0] 802790a:	bd38      	pop	{r3, r4, r5, pc} 802790c:	2000e954 	.word	0x2000e954 8027910:	08036d2e 	.word	0x08036d2e08027914 <GetConnectMonitorStr>:  // 0 - коннект есть, 1 - нет/*  if (upsParams.connect)    *str = '0';  else    *str = '1';*/	*str = '0'; 8027914:	2330      	movs	r3, #48	; 0x30 8027916:	7003      	strb	r3, [r0, #0]  *len = 1; 8027918:	2301      	movs	r3, #1 802791a:	700b      	strb	r3, [r1, #0] 802791c:	4770      	bx	lr 802791e:	0000      	movs	r0, r008027920 <GetAlarmStr>:/**  * @brief  Индикация аварийных ситуаций  */void GetAlarmStr(char *str, uint8_t *len){ 8027920:	b538      	push	{r3, r4, r5, lr}	sprintf(str, "%d", UPS.Status); 8027922:	4b06      	ldr	r3, [pc, #24]	; (802793c <GetAlarmStr+0x1c>)/**  * @brief  Индикация аварийных ситуаций  */void GetAlarmStr(char *str, uint8_t *len){ 8027924:	4605      	mov	r5, r0 8027926:	460c      	mov	r4, r1	sprintf(str, "%d", UPS.Status); 8027928:	7cda      	ldrb	r2, [r3, #19] 802792a:	4905      	ldr	r1, [pc, #20]	; (8027940 <GetAlarmStr+0x20>) 802792c:	f7ff ff38 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027930:	4628      	mov	r0, r5 8027932:	f7fa fa9d 	bl	8021e70 <strlen> 8027936:	7020      	strb	r0, [r4, #0] 8027938:	bd38      	pop	{r3, r4, r5, pc} 802793a:	bf00      	nop 802793c:	2000e954 	.word	0x2000e954 8027940:	08036d34 	.word	0x08036d3408027944 <GetDateStr>:/**  * @brief  Дата (Ready for PRS!)  */void GetDateStr(char *str, uint8_t *len){ 8027944:	b530      	push	{r4, r5, lr} 8027946:	b087      	sub	sp, #28 8027948:	4604      	mov	r4, r0 802794a:	460d      	mov	r5, r1    TM_RTC_t data;    uint16_t sys_year ;    TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN); 802794c:	a802      	add	r0, sp, #8 802794e:	2100      	movs	r1, #0 8027950:	f7fe fd9a 	bl	8026488 <TM_RTC_GetDateTime>    sys_year = 2000 + data.year;    sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date); 8027954:	f89d 100f 	ldrb.w	r1, [sp, #15]{    TM_RTC_t data;    uint16_t sys_year ;    TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);    sys_year = 2000 + data.year; 8027958:	f89d 2011 	ldrb.w	r2, [sp, #17]    sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date); 802795c:	f89d 3010 	ldrb.w	r3, [sp, #16] 8027960:	9100      	str	r1, [sp, #0] 8027962:	f502 62fa 	add.w	r2, r2, #2000	; 0x7d0 8027966:	4905      	ldr	r1, [pc, #20]	; (802797c <GetDateStr+0x38>) 8027968:	4620      	mov	r0, r4 802796a:	f7ff ff19 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 802796e:	4620      	mov	r0, r4 8027970:	f7fa fa7e 	bl	8021e70 <strlen> 8027974:	7028      	strb	r0, [r5, #0]} 8027976:	b007      	add	sp, #28 8027978:	bd30      	pop	{r4, r5, pc} 802797a:	bf00      	nop 802797c:	08036d37 	.word	0x08036d3708027980 <GetTimeStr>:/**  * @brief  Время (Ready for PRS!)  */void GetTimeStr(char *str, uint8_t *len){ 8027980:	b530      	push	{r4, r5, lr} 8027982:	b085      	sub	sp, #20 8027984:	4604      	mov	r4, r0 8027986:	460d      	mov	r5, r1    TM_RTC_t data;    TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN); 8027988:	4668      	mov	r0, sp 802798a:	2100      	movs	r1, #0 802798c:	f7fe fd7c 	bl	8026488 <TM_RTC_GetDateTime>    sprintf(str, "%02i:%02i", data.hours, data.minutes); 8027990:	4906      	ldr	r1, [pc, #24]	; (80279ac <GetTimeStr+0x2c>) 8027992:	f89d 2005 	ldrb.w	r2, [sp, #5] 8027996:	f89d 3004 	ldrb.w	r3, [sp, #4] 802799a:	4620      	mov	r0, r4 802799c:	f7ff ff00 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 80279a0:	4620      	mov	r0, r4 80279a2:	f7fa fa65 	bl	8021e70 <strlen> 80279a6:	7028      	strb	r0, [r5, #0]} 80279a8:	b005      	add	sp, #20 80279aa:	bd30      	pop	{r4, r5, pc} 80279ac:	08036d7a 	.word	0x08036d7a080279b0 <GetUnixTimeStr>:/**  * @brief  Время (Ready for PRS!)  */void GetUnixTimeStr(char *str, uint8_t *len){ 80279b0:	b530      	push	{r4, r5, lr} 80279b2:	b085      	sub	sp, #20 80279b4:	4604      	mov	r4, r0 80279b6:	460d      	mov	r5, r1    TM_RTC_t data;    TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN); 80279b8:	4668      	mov	r0, sp 80279ba:	2100      	movs	r1, #0 80279bc:	f7fe fd64 	bl	8026488 <TM_RTC_GetDateTime>    sprintf(str, "%d", data.unix); 80279c0:	4905      	ldr	r1, [pc, #20]	; (80279d8 <GetUnixTimeStr+0x28>) 80279c2:	9a03      	ldr	r2, [sp, #12] 80279c4:	4620      	mov	r0, r4 80279c6:	f7ff feeb 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 80279ca:	4620      	mov	r0, r4 80279cc:	f7fa fa50 	bl	8021e70 <strlen> 80279d0:	7028      	strb	r0, [r5, #0]} 80279d2:	b005      	add	sp, #20 80279d4:	bd30      	pop	{r4, r5, pc} 80279d6:	bf00      	nop 80279d8:	08036d34 	.word	0x08036d34080279dc <GetSntpStateStr>:/**  * @brief  Состояние SNTP (Ready for PRS!)  */void GetSntpStateStr(char *str, uint8_t *len){ 80279dc:	b538      	push	{r3, r4, r5, lr}  if (sSettings.sSNTP.sntpEnable) 80279de:	4b08      	ldr	r3, [pc, #32]	; (8027a00 <GetSntpStateStr+0x24>) 80279e0:	f893 3344 	ldrb.w	r3, [r3, #836]	; 0x344/**  * @brief  Состояние SNTP (Ready for PRS!)  */void GetSntpStateStr(char *str, uint8_t *len){ 80279e4:	460c      	mov	r4, r1 80279e6:	4605      	mov	r5, r0  if (sSettings.sSNTP.sntpEnable)  {    sprintf(str, "%s", "1"); //авто 80279e8:	4906      	ldr	r1, [pc, #24]	; (8027a04 <GetSntpStateStr+0x28>)/**  * @brief  Состояние SNTP (Ready for PRS!)  */void GetSntpStateStr(char *str, uint8_t *len){  if (sSettings.sSNTP.sntpEnable) 80279ea:	b10b      	cbz	r3, 80279f0 <GetSntpStateStr+0x14>  {    sprintf(str, "%s", "1"); //авто 80279ec:	4a06      	ldr	r2, [pc, #24]	; (8027a08 <GetSntpStateStr+0x2c>) 80279ee:	e000      	b.n	80279f2 <GetSntpStateStr+0x16>    *len = strlen(str);  }  else  {    sprintf(str, "%s", "0"); //ручной 80279f0:	4a06      	ldr	r2, [pc, #24]	; (8027a0c <GetSntpStateStr+0x30>) 80279f2:	f7ff fed5 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 80279f6:	4628      	mov	r0, r5 80279f8:	f7fa fa3a 	bl	8021e70 <strlen> 80279fc:	7020      	strb	r0, [r4, #0] 80279fe:	bd38      	pop	{r3, r4, r5, pc} 8027a00:	2000e984 	.word	0x2000e984 8027a04:	08036d46 	.word	0x08036d46 8027a08:	08036e2f 	.word	0x08036e2f 8027a0c:	08036dd2 	.word	0x08036dd208027a10 <GetSntpServerIpStr>:/**  * @brief  IP адрес SNTP сервера (Ready for PRS!)  */void GetSntpServerIpStr(char *str, uint8_t *len){ 8027a10:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSNTP.ip); 8027a12:	4a05      	ldr	r2, [pc, #20]	; (8027a28 <GetSntpServerIpStr+0x18>)/**  * @brief  IP адрес SNTP сервера (Ready for PRS!)  */void GetSntpServerIpStr(char *str, uint8_t *len){ 8027a14:	4605      	mov	r5, r0 8027a16:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSNTP.ip); 8027a18:	4904      	ldr	r1, [pc, #16]	; (8027a2c <GetSntpServerIpStr+0x1c>) 8027a1a:	f7ff fec1 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027a1e:	4628      	mov	r0, r5 8027a20:	f7fa fa26 	bl	8021e70 <strlen> 8027a24:	7020      	strb	r0, [r4, #0] 8027a26:	bd38      	pop	{r3, r4, r5, pc} 8027a28:	2000ecc9 	.word	0x2000ecc9 8027a2c:	08036d46 	.word	0x08036d4608027a30 <GetSntpTimeZoneStr>:/**  * @brief  Часовой пояс контроллера (Ready for PRS!)  */void GetSntpTimeZoneStr(char *str, uint8_t *len){ 8027a30:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%0.1f", sSettings.sSNTP.timeZone); 8027a32:	4b09      	ldr	r3, [pc, #36]	; (8027a58 <GetSntpTimeZoneStr+0x28>)/**  * @brief  Часовой пояс контроллера (Ready for PRS!)  */void GetSntpTimeZoneStr(char *str, uint8_t *len){ 8027a34:	4604      	mov	r4, r0  sprintf(str, "%0.1f", sSettings.sSNTP.timeZone); 8027a36:	f8d3 0374 	ldr.w	r0, [r3, #884]	; 0x374/**  * @brief  Часовой пояс контроллера (Ready for PRS!)  */void GetSntpTimeZoneStr(char *str, uint8_t *len){ 8027a3a:	460d      	mov	r5, r1  sprintf(str, "%0.1f", sSettings.sSNTP.timeZone); 8027a3c:	f7f8 fd6c 	bl	8020518 <__aeabi_f2d> 8027a40:	4602      	mov	r2, r0 8027a42:	460b      	mov	r3, r1 8027a44:	4620      	mov	r0, r4 8027a46:	4905      	ldr	r1, [pc, #20]	; (8027a5c <GetSntpTimeZoneStr+0x2c>) 8027a48:	f7ff feaa 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027a4c:	4620      	mov	r0, r4 8027a4e:	f7fa fa0f 	bl	8021e70 <strlen> 8027a52:	7028      	strb	r0, [r5, #0] 8027a54:	bd38      	pop	{r3, r4, r5, pc} 8027a56:	bf00      	nop 8027a58:	2000e984 	.word	0x2000e984 8027a5c:	08036d2e 	.word	0x08036d2e08027a60 <GetSntpLastDataStr>:/**  * @brief  Дата последней синхронизации SNTP (Ready for PRS!)  */void GetSntpLastDataStr(char *str, uint8_t *len){ 8027a60:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSNTP.data); 8027a62:	4a05      	ldr	r2, [pc, #20]	; (8027a78 <GetSntpLastDataStr+0x18>)/**  * @brief  Дата последней синхронизации SNTP (Ready for PRS!)  */void GetSntpLastDataStr(char *str, uint8_t *len){ 8027a64:	4605      	mov	r5, r0 8027a66:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSNTP.data); 8027a68:	4904      	ldr	r1, [pc, #16]	; (8027a7c <GetSntpLastDataStr+0x1c>) 8027a6a:	f7ff fe99 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027a6e:	4628      	mov	r0, r5 8027a70:	f7fa f9fe 	bl	8021e70 <strlen> 8027a74:	7020      	strb	r0, [r4, #0] 8027a76:	bd38      	pop	{r3, r4, r5, pc} 8027a78:	2000ecd9 	.word	0x2000ecd9 8027a7c:	08036d46 	.word	0x08036d4608027a80 <GetDINTypeActStr>:/**  * @brief  Тип действий при срабатывание сухих контактов  */void GetDINTypeActStr(char *str, uint8_t *len, uint8_t num){ 8027a80:	b538      	push	{r3, r4, r5, lr}	sprintf(str, "%d", sSettings.sInOuts.din_type_act[num]); 8027a82:	4b07      	ldr	r3, [pc, #28]	; (8027aa0 <GetDINTypeActStr+0x20>) 8027a84:	189a      	adds	r2, r3, r2/**  * @brief  Тип действий при срабатывание сухих контактов  */void GetDINTypeActStr(char *str, uint8_t *len, uint8_t num){ 8027a86:	4605      	mov	r5, r0 8027a88:	460c      	mov	r4, r1	sprintf(str, "%d", sSettings.sInOuts.din_type_act[num]); 8027a8a:	f892 237a 	ldrb.w	r2, [r2, #890]	; 0x37a 8027a8e:	4905      	ldr	r1, [pc, #20]	; (8027aa4 <GetDINTypeActStr+0x24>) 8027a90:	f7ff fe86 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027a94:	4628      	mov	r0, r5 8027a96:	f7fa f9eb 	bl	8021e70 <strlen> 8027a9a:	7020      	strb	r0, [r4, #0] 8027a9c:	bd38      	pop	{r3, r4, r5, pc} 8027a9e:	bf00      	nop 8027aa0:	2000e984 	.word	0x2000e984 8027aa4:	08036d34 	.word	0x08036d3408027aa8 <GetDINStatusStr>:/**  * @brief  Состояние сухого контакта  */void GetDINStatusStr(char *str, uint8_t *len, uint8_t num){	sprintf(str, "%d", get_state_din_outs(DIN1+num)); 8027aa8:	3206      	adds	r2, #6/**  * @brief  Состояние сухого контакта  */void GetDINStatusStr(char *str, uint8_t *len, uint8_t num){ 8027aaa:	b538      	push	{r3, r4, r5, lr} 8027aac:	4604      	mov	r4, r0	sprintf(str, "%d", get_state_din_outs(DIN1+num)); 8027aae:	b2d0      	uxtb	r0, r2/**  * @brief  Состояние сухого контакта  */void GetDINStatusStr(char *str, uint8_t *len, uint8_t num){ 8027ab0:	460d      	mov	r5, r1	sprintf(str, "%d", get_state_din_outs(DIN1+num)); 8027ab2:	f000 ff89 	bl	80289c8 <get_state_din_outs> 8027ab6:	4905      	ldr	r1, [pc, #20]	; (8027acc <GetDINStatusStr+0x24>) 8027ab8:	4602      	mov	r2, r0 8027aba:	4620      	mov	r0, r4 8027abc:	f7ff fe70 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027ac0:	4620      	mov	r0, r4 8027ac2:	f7fa f9d5 	bl	8021e70 <strlen> 8027ac6:	7028      	strb	r0, [r5, #0] 8027ac8:	bd38      	pop	{r3, r4, r5, pc} 8027aca:	bf00      	nop 8027acc:	08036d34 	.word	0x08036d3408027ad0 <GetDIN0StatusStr>:/**  * @brief  Состояние сухого контакта  */void GetDIN0StatusStr(char *str, uint8_t *len){ 8027ad0:	b538      	push	{r3, r4, r5, lr} 8027ad2:	4604      	mov	r4, r0	sprintf(str, "%d", get_state_din_outs(DIN1)); 8027ad4:	2006      	movs	r0, #6/**  * @brief  Состояние сухого контакта  */void GetDIN0StatusStr(char *str, uint8_t *len){ 8027ad6:	460d      	mov	r5, r1	sprintf(str, "%d", get_state_din_outs(DIN1)); 8027ad8:	f000 ff76 	bl	80289c8 <get_state_din_outs> 8027adc:	4904      	ldr	r1, [pc, #16]	; (8027af0 <GetDIN0StatusStr+0x20>) 8027ade:	4602      	mov	r2, r0 8027ae0:	4620      	mov	r0, r4 8027ae2:	f7ff fe5d 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027ae6:	4620      	mov	r0, r4 8027ae8:	f7fa f9c2 	bl	8021e70 <strlen> 8027aec:	7028      	strb	r0, [r5, #0] 8027aee:	bd38      	pop	{r3, r4, r5, pc} 8027af0:	08036d34 	.word	0x08036d3408027af4 <GetROTypeActStr>:/**  * @brief  Источник срабатывания реле  */void GetROTypeActStr(char *str, uint8_t *len, uint8_t num){ 8027af4:	b538      	push	{r3, r4, r5, lr}	sprintf(str, "%d", sSettings.sInOuts.ro_type_source[num]); 8027af6:	4b07      	ldr	r3, [pc, #28]	; (8027b14 <GetROTypeActStr+0x20>) 8027af8:	189a      	adds	r2, r3, r2/**  * @brief  Источник срабатывания реле  */void GetROTypeActStr(char *str, uint8_t *len, uint8_t num){ 8027afa:	4605      	mov	r5, r0 8027afc:	460c      	mov	r4, r1	sprintf(str, "%d", sSettings.sInOuts.ro_type_source[num]); 8027afe:	f892 2378 	ldrb.w	r2, [r2, #888]	; 0x378 8027b02:	4905      	ldr	r1, [pc, #20]	; (8027b18 <GetROTypeActStr+0x24>) 8027b04:	f7ff fe4c 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027b08:	4628      	mov	r0, r5 8027b0a:	f7fa f9b1 	bl	8021e70 <strlen> 8027b0e:	7020      	strb	r0, [r4, #0] 8027b10:	bd38      	pop	{r3, r4, r5, pc} 8027b12:	bf00      	nop 8027b14:	2000e984 	.word	0x2000e984 8027b18:	08036d34 	.word	0x08036d3408027b1c <GetDOUTStatusStr>:/**  * @brief  Состояние релейного выхода  */void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num){	sprintf(str, "%d", get_state_din_outs(DOUT1+num)); 8027b1c:	3207      	adds	r2, #7/**  * @brief  Состояние релейного выхода  */void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num){ 8027b1e:	b538      	push	{r3, r4, r5, lr} 8027b20:	4604      	mov	r4, r0	sprintf(str, "%d", get_state_din_outs(DOUT1+num)); 8027b22:	b2d0      	uxtb	r0, r2/**  * @brief  Состояние релейного выхода  */void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num){ 8027b24:	460d      	mov	r5, r1	sprintf(str, "%d", get_state_din_outs(DOUT1+num)); 8027b26:	f000 ff4f 	bl	80289c8 <get_state_din_outs> 8027b2a:	4905      	ldr	r1, [pc, #20]	; (8027b40 <GetDOUTStatusStr+0x24>) 8027b2c:	4602      	mov	r2, r0 8027b2e:	4620      	mov	r0, r4 8027b30:	f7ff fe36 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027b34:	4620      	mov	r0, r4 8027b36:	f7fa f99b 	bl	8021e70 <strlen> 8027b3a:	7028      	strb	r0, [r5, #0] 8027b3c:	bd38      	pop	{r3, r4, r5, pc} 8027b3e:	bf00      	nop 8027b40:	08036d34 	.word	0x08036d3408027b44 <GetDOUT0StatusStr>:/**  * @brief  Состояние релейного выхода  */void GetDOUT0StatusStr(char *str, uint8_t *len){ 8027b44:	b538      	push	{r3, r4, r5, lr} 8027b46:	4604      	mov	r4, r0	sprintf(str, "%d", get_state_din_outs(DOUT1)); 8027b48:	2007      	movs	r0, #7/**  * @brief  Состояние релейного выхода  */void GetDOUT0StatusStr(char *str, uint8_t *len){ 8027b4a:	460d      	mov	r5, r1	sprintf(str, "%d", get_state_din_outs(DOUT1)); 8027b4c:	f000 ff3c 	bl	80289c8 <get_state_din_outs> 8027b50:	4904      	ldr	r1, [pc, #16]	; (8027b64 <GetDOUT0StatusStr+0x20>) 8027b52:	4602      	mov	r2, r0 8027b54:	4620      	mov	r0, r4 8027b56:	f7ff fe23 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027b5a:	4620      	mov	r0, r4 8027b5c:	f7fa f988 	bl	8021e70 <strlen> 8027b60:	7028      	strb	r0, [r5, #0] 8027b62:	bd38      	pop	{r3, r4, r5, pc} 8027b64:	08036d34 	.word	0x08036d3408027b68 <GetDOUT1StatusStr>:/**  * @brief  Состояние релейного выхода  */void GetDOUT1StatusStr(char *str, uint8_t *len){ 8027b68:	b538      	push	{r3, r4, r5, lr} 8027b6a:	4604      	mov	r4, r0	sprintf(str, "%d", get_state_din_outs(DOUT2)); 8027b6c:	2008      	movs	r0, #8/**  * @brief  Состояние релейного выхода  */void GetDOUT1StatusStr(char *str, uint8_t *len){ 8027b6e:	460d      	mov	r5, r1	sprintf(str, "%d", get_state_din_outs(DOUT2)); 8027b70:	f000 ff2a 	bl	80289c8 <get_state_din_outs> 8027b74:	4904      	ldr	r1, [pc, #16]	; (8027b88 <GetDOUT1StatusStr+0x20>) 8027b76:	4602      	mov	r2, r0 8027b78:	4620      	mov	r0, r4 8027b7a:	f7ff fe11 	bl	80277a0 <tfp_sprintf>	*len = strlen(str); 8027b7e:	4620      	mov	r0, r4 8027b80:	f7fa f976 	bl	8021e70 <strlen> 8027b84:	7028      	strb	r0, [r5, #0] 8027b86:	bd38      	pop	{r3, r4, r5, pc} 8027b88:	08036d34 	.word	0x08036d3408027b8c <GetWorkTimeStr>:/**  * @brief  Время работы устройства  */void GetWorkTimeStr(char *str, uint8_t *len){ 8027b8c:	b57f      	push	{r0, r1, r2, r3, r4, r5, r6, lr} 8027b8e:	4604      	mov	r4, r0  u32_t    tick;  uint16_t day;  uint8_t  hour;  uint8_t  min;  snmp_get_sysuptime(&tick); 8027b90:	a803      	add	r0, sp, #12/**  * @brief  Время работы устройства  */void GetWorkTimeStr(char *str, uint8_t *len){ 8027b92:	460e      	mov	r6, r1  u32_t    tick;  uint16_t day;  uint8_t  hour;  uint8_t  min;  snmp_get_sysuptime(&tick); 8027b94:	f00a fa72 	bl	803207c <snmp_get_sysuptime>  day = tick/8640000; 8027b98:	9803      	ldr	r0, [sp, #12]    tick = tick%8640000; 8027b9a:	4b0c      	ldr	r3, [pc, #48]	; (8027bcc <GetWorkTimeStr+0x40>)  hour = tick/360000;    tick = tick%360000; 8027b9c:	4d0c      	ldr	r5, [pc, #48]	; (8027bd0 <GetWorkTimeStr+0x44>)  snmp_get_sysuptime(&tick);  day = tick/8640000;    tick = tick%8640000; 8027b9e:	fbb0 f2f3 	udiv	r2, r0, r3 8027ba2:	fb03 0012 	mls	r0, r3, r2, r0  hour = tick/360000;    tick = tick%360000; 8027ba6:	fbb0 f3f5 	udiv	r3, r0, r5 8027baa:	fb05 0013 	mls	r0, r5, r3, r0  min = tick/6000; 8027bae:	f241 7170 	movw	r1, #6000	; 0x1770  day = tick/8640000;    tick = tick%8640000;  hour = tick/360000;    tick = tick%360000; 8027bb2:	9003      	str	r0, [sp, #12]  min = tick/6000; 8027bb4:	fbb0 f0f1 	udiv	r0, r0, r1  sprintf(str, "%d дн. %d ч. %d мин.", day, hour, min); 8027bb8:	9000      	str	r0, [sp, #0] 8027bba:	4906      	ldr	r1, [pc, #24]	; (8027bd4 <GetWorkTimeStr+0x48>) 8027bbc:	4620      	mov	r0, r4 8027bbe:	f7ff fdef 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027bc2:	4620      	mov	r0, r4 8027bc4:	f7fa f954 	bl	8021e70 <strlen> 8027bc8:	7030      	strb	r0, [r6, #0]} 8027bca:	bd7f      	pop	{r0, r1, r2, r3, r4, r5, r6, pc} 8027bcc:	0083d600 	.word	0x0083d600 8027bd0:	00057e40 	.word	0x00057e40 8027bd4:	08036d49 	.word	0x08036d4908027bd8 <GetModelStr>:/**  * @brief  Модель устройства  */void GetModelStr(char *str, uint8_t *len){ 8027bd8:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sSnmp.sysName); 8027bda:	4c07      	ldr	r4, [pc, #28]	; (8027bf8 <GetModelStr+0x20>)/**  * @brief  Модель устройства  */void GetModelStr(char *str, uint8_t *len){ 8027bdc:	4605      	mov	r5, r0  *len = strlen(sSettings.sSnmp.sysName); 8027bde:	4620      	mov	r0, r4/**  * @brief  Модель устройства  */void GetModelStr(char *str, uint8_t *len){ 8027be0:	460e      	mov	r6, r1  *len = strlen(sSettings.sSnmp.sysName); 8027be2:	f7fa f945 	bl	8021e70 <strlen> 8027be6:	4602      	mov	r2, r0 8027be8:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sSnmp.sysName, *len); 8027bea:	4621      	mov	r1, r4 8027bec:	4628      	mov	r0, r5 8027bee:	b2d2      	uxtb	r2, r2} 8027bf0:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Модель устройства  */void GetModelStr(char *str, uint8_t *len){  *len = strlen(sSettings.sSnmp.sysName);  strncpy(str, sSettings.sSnmp.sysName, *len); 8027bf4:	f7fa b9f4 	b.w	8021fe0 <strncpy> 8027bf8:	2000eae2 	.word	0x2000eae208027bfc <GetProductionDataStr>:/**  * @brief  Дата производства  */void GetProductionDataStr(char *str, uint8_t *len){ 8027bfc:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sInfo.productionData); 8027bfe:	4c07      	ldr	r4, [pc, #28]	; (8027c1c <GetProductionDataStr+0x20>)/**  * @brief  Дата производства  */void GetProductionDataStr(char *str, uint8_t *len){ 8027c00:	4605      	mov	r5, r0  *len = strlen(sSettings.sInfo.productionData); 8027c02:	4620      	mov	r0, r4/**  * @brief  Дата производства  */void GetProductionDataStr(char *str, uint8_t *len){ 8027c04:	460e      	mov	r6, r1  *len = strlen(sSettings.sInfo.productionData); 8027c06:	f7fa f933 	bl	8021e70 <strlen> 8027c0a:	4602      	mov	r2, r0 8027c0c:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sInfo.productionData, *len); 8027c0e:	4621      	mov	r1, r4 8027c10:	4628      	mov	r0, r5 8027c12:	b2d2      	uxtb	r2, r2} 8027c14:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Дата производства  */void GetProductionDataStr(char *str, uint8_t *len){  *len = strlen(sSettings.sInfo.productionData);  strncpy(str, sSettings.sInfo.productionData, *len); 8027c18:	f7fa b9e2 	b.w	8021fe0 <strncpy> 8027c1c:	2000ebc8 	.word	0x2000ebc808027c20 <GetVersionStr>:/**  * @brief  Версия ПО  */void GetVersionStr(char *str, uint8_t *len) // +{ 8027c20:	b570      	push	{r4, r5, r6, lr}  *len = strlen(VERSION); 8027c22:	4c07      	ldr	r4, [pc, #28]	; (8027c40 <GetVersionStr+0x20>)/**  * @brief  Версия ПО  */void GetVersionStr(char *str, uint8_t *len) // +{ 8027c24:	4605      	mov	r5, r0  *len = strlen(VERSION); 8027c26:	4620      	mov	r0, r4/**  * @brief  Версия ПО  */void GetVersionStr(char *str, uint8_t *len) // +{ 8027c28:	460e      	mov	r6, r1  *len = strlen(VERSION); 8027c2a:	f7fa f921 	bl	8021e70 <strlen> 8027c2e:	4602      	mov	r2, r0 8027c30:	7030      	strb	r0, [r6, #0]  strncpy(str, VERSION, *len); 8027c32:	4621      	mov	r1, r4 8027c34:	4628      	mov	r0, r5 8027c36:	b2d2      	uxtb	r2, r2} 8027c38:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Версия ПО  */void GetVersionStr(char *str, uint8_t *len) // +{  *len = strlen(VERSION);  strncpy(str, VERSION, *len); 8027c3c:	f7fa b9d0 	b.w	8021fe0 <strncpy> 8027c40:	08036d64 	.word	0x08036d6408027c44 <GetMacStr>:/**  * @brief  MAC адрес устройства  */void GetMacStr(char *str, uint8_t *len){ 8027c44:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sInfo.mac); 8027c46:	4c07      	ldr	r4, [pc, #28]	; (8027c64 <GetMacStr+0x20>)/**  * @brief  MAC адрес устройства  */void GetMacStr(char *str, uint8_t *len){ 8027c48:	4605      	mov	r5, r0  *len = strlen(sSettings.sInfo.mac); 8027c4a:	4620      	mov	r0, r4/**  * @brief  MAC адрес устройства  */void GetMacStr(char *str, uint8_t *len){ 8027c4c:	460e      	mov	r6, r1  *len = strlen(sSettings.sInfo.mac); 8027c4e:	f7fa f90f 	bl	8021e70 <strlen> 8027c52:	4602      	mov	r2, r0 8027c54:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sInfo.mac, *len); 8027c56:	4621      	mov	r1, r4 8027c58:	4628      	mov	r0, r5 8027c5a:	b2d2      	uxtb	r2, r2} 8027c5c:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  MAC адрес устройства  */void GetMacStr(char *str, uint8_t *len){  *len = strlen(sSettings.sInfo.mac);  strncpy(str, sSettings.sInfo.mac, *len); 8027c60:	f7fa b9be 	b.w	8021fe0 <strncpy> 8027c64:	2000ebf0 	.word	0x2000ebf008027c68 <GetSerialNumberStr>:/**  * @brief  Серийный номер устройства  */void GetSerialNumberStr(char *str, uint8_t *len){ 8027c68:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sInfo.serialNumber); 8027c6a:	4c07      	ldr	r4, [pc, #28]	; (8027c88 <GetSerialNumberStr+0x20>)/**  * @brief  Серийный номер устройства  */void GetSerialNumberStr(char *str, uint8_t *len){ 8027c6c:	4605      	mov	r5, r0  *len = strlen(sSettings.sInfo.serialNumber); 8027c6e:	4620      	mov	r0, r4/**  * @brief  Серийный номер устройства  */void GetSerialNumberStr(char *str, uint8_t *len){ 8027c70:	460e      	mov	r6, r1  *len = strlen(sSettings.sInfo.serialNumber); 8027c72:	f7fa f8fd 	bl	8021e70 <strlen> 8027c76:	4602      	mov	r2, r0 8027c78:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sInfo.serialNumber, *len); 8027c7a:	4621      	mov	r1, r4 8027c7c:	4628      	mov	r0, r5 8027c7e:	b2d2      	uxtb	r2, r2} 8027c80:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Серийный номер устройства  */void GetSerialNumberStr(char *str, uint8_t *len){  *len = strlen(sSettings.sInfo.serialNumber);  strncpy(str, sSettings.sInfo.serialNumber, *len); 8027c84:	f7fa b9ac 	b.w	8021fe0 <strncpy> 8027c88:	2000ec02 	.word	0x2000ec0208027c8c <GetOwnerStr>:/**  * @brief  Владелец устройства  */void GetOwnerStr(char *str, uint8_t *len){ 8027c8c:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sSnmp.sysContact); 8027c8e:	4c07      	ldr	r4, [pc, #28]	; (8027cac <GetOwnerStr+0x20>)/**  * @brief  Владелец устройства  */void GetOwnerStr(char *str, uint8_t *len){ 8027c90:	4605      	mov	r5, r0  *len = strlen(sSettings.sSnmp.sysContact); 8027c92:	4620      	mov	r0, r4/**  * @brief  Владелец устройства  */void GetOwnerStr(char *str, uint8_t *len){ 8027c94:	460e      	mov	r6, r1  *len = strlen(sSettings.sSnmp.sysContact); 8027c96:	f7fa f8eb 	bl	8021e70 <strlen> 8027c9a:	4602      	mov	r2, r0 8027c9c:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sSnmp.sysContact, *len); 8027c9e:	4621      	mov	r1, r4 8027ca0:	4628      	mov	r0, r5 8027ca2:	b2d2      	uxtb	r2, r2} 8027ca4:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Владелец устройства  */void GetOwnerStr(char *str, uint8_t *len){  *len = strlen(sSettings.sSnmp.sysContact);  strncpy(str, sSettings.sSnmp.sysContact, *len); 8027ca8:	f7fa b99a 	b.w	8021fe0 <strncpy> 8027cac:	2000eab0 	.word	0x2000eab008027cb0 <GetLocationStr>:/**  * @brief  Местоположение устройства  */void GetLocationStr(char *str, uint8_t *len){ 8027cb0:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sSnmp.sysLocation); 8027cb2:	4c07      	ldr	r4, [pc, #28]	; (8027cd0 <GetLocationStr+0x20>)/**  * @brief  Местоположение устройства  */void GetLocationStr(char *str, uint8_t *len){ 8027cb4:	4605      	mov	r5, r0  *len = strlen(sSettings.sSnmp.sysLocation); 8027cb6:	4620      	mov	r0, r4/**  * @brief  Местоположение устройства  */void GetLocationStr(char *str, uint8_t *len){ 8027cb8:	460e      	mov	r6, r1  *len = strlen(sSettings.sSnmp.sysLocation); 8027cba:	f7fa f8d9 	bl	8021e70 <strlen> 8027cbe:	4602      	mov	r2, r0 8027cc0:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sSnmp.sysLocation, *len); 8027cc2:	4621      	mov	r1, r4 8027cc4:	4628      	mov	r0, r5 8027cc6:	b2d2      	uxtb	r2, r2} 8027cc8:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Местоположение устройства  */void GetLocationStr(char *str, uint8_t *len){  *len = strlen(sSettings.sSnmp.sysLocation);  strncpy(str, sSettings.sSnmp.sysLocation, *len); 8027ccc:	f7fa b988 	b.w	8021fe0 <strncpy> 8027cd0:	2000eaf6 	.word	0x2000eaf608027cd4 <GetCommentsStr>:/**  * @brief  Комментарии  */void GetCommentsStr(char *str, uint8_t *len){ 8027cd4:	b570      	push	{r4, r5, r6, lr}  *len = strlen(sSettings.sInfo.comments); 8027cd6:	4c07      	ldr	r4, [pc, #28]	; (8027cf4 <GetCommentsStr+0x20>)/**  * @brief  Комментарии  */void GetCommentsStr(char *str, uint8_t *len){ 8027cd8:	4605      	mov	r5, r0  *len = strlen(sSettings.sInfo.comments); 8027cda:	4620      	mov	r0, r4/**  * @brief  Комментарии  */void GetCommentsStr(char *str, uint8_t *len){ 8027cdc:	460e      	mov	r6, r1  *len = strlen(sSettings.sInfo.comments); 8027cde:	f7fa f8c7 	bl	8021e70 <strlen> 8027ce2:	4602      	mov	r2, r0 8027ce4:	7030      	strb	r0, [r6, #0]  strncpy(str, sSettings.sInfo.comments, *len); 8027ce6:	4621      	mov	r1, r4 8027ce8:	4628      	mov	r0, r5 8027cea:	b2d2      	uxtb	r2, r2} 8027cec:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Комментарии  */void GetCommentsStr(char *str, uint8_t *len){  *len = strlen(sSettings.sInfo.comments);  strncpy(str, sSettings.sInfo.comments, *len); 8027cf0:	f7fa b976 	b.w	8021fe0 <strncpy> 8027cf4:	2000ec12 	.word	0x2000ec1208027cf8 <GetUPSModelStr>:/**  * @brief  Модель UPS  */void GetUPSModelStr(char *str, uint8_t *len){ 8027cf8:	b570      	push	{r4, r5, r6, lr}  *len = strlen(UPS.model); 8027cfa:	4c07      	ldr	r4, [pc, #28]	; (8027d18 <GetUPSModelStr+0x20>)/**  * @brief  Модель UPS  */void GetUPSModelStr(char *str, uint8_t *len){ 8027cfc:	4605      	mov	r5, r0  *len = strlen(UPS.model); 8027cfe:	4620      	mov	r0, r4/**  * @brief  Модель UPS  */void GetUPSModelStr(char *str, uint8_t *len){ 8027d00:	460e      	mov	r6, r1  *len = strlen(UPS.model); 8027d02:	f7fa f8b5 	bl	8021e70 <strlen> 8027d06:	4602      	mov	r2, r0 8027d08:	7030      	strb	r0, [r6, #0]  strncpy(str, UPS.model, *len); 8027d0a:	4621      	mov	r1, r4 8027d0c:	4628      	mov	r0, r5 8027d0e:	b2d2      	uxtb	r2, r2} 8027d10:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Модель UPS  */void GetUPSModelStr(char *str, uint8_t *len){  *len = strlen(UPS.model);  strncpy(str, UPS.model, *len); 8027d14:	f7fa b964 	b.w	8021fe0 <strncpy> 8027d18:	2000e968 	.word	0x2000e96808027d1c <GetUPSVersionStr>:/**  * @brief  Версия UPS ПО  */void GetUPSVersionStr(char *str, uint8_t *len) // +{ 8027d1c:	b570      	push	{r4, r5, r6, lr}	*len = strlen(UPS.vertion); 8027d1e:	4c07      	ldr	r4, [pc, #28]	; (8027d3c <GetUPSVersionStr+0x20>)/**  * @brief  Версия UPS ПО  */void GetUPSVersionStr(char *str, uint8_t *len) // +{ 8027d20:	4605      	mov	r5, r0	*len = strlen(UPS.vertion); 8027d22:	4620      	mov	r0, r4/**  * @brief  Версия UPS ПО  */void GetUPSVersionStr(char *str, uint8_t *len) // +{ 8027d24:	460e      	mov	r6, r1	*len = strlen(UPS.vertion); 8027d26:	f7fa f8a3 	bl	8021e70 <strlen> 8027d2a:	4602      	mov	r2, r0 8027d2c:	7030      	strb	r0, [r6, #0]	strncpy(str, UPS.vertion, *len); 8027d2e:	4621      	mov	r1, r4 8027d30:	4628      	mov	r0, r5 8027d32:	b2d2      	uxtb	r2, r2} 8027d34:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Версия UPS ПО  */void GetUPSVersionStr(char *str, uint8_t *len) // +{	*len = strlen(UPS.vertion);	strncpy(str, UPS.vertion, *len); 8027d38:	f7fa b952 	b.w	8021fe0 <strncpy> 8027d3c:	2000e973 	.word	0x2000e97308027d40 <GetUserLogin>:// ************************************************************************** ////                          Настройки аутентификацииvoid GetUserLogin(uint8_t user_id, char *str, uint8_t *len){ 8027d40:	b538      	push	{r3, r4, r5, lr}    sprintf(str, "%s", sSettings.sAuth[user_id].login); 8027d42:	4b08      	ldr	r3, [pc, #32]	; (8027d64 <GetUserLogin+0x24>)// ************************************************************************** ////                          Настройки аутентификацииvoid GetUserLogin(uint8_t user_id, char *str, uint8_t *len){ 8027d44:	4615      	mov	r5, r2    sprintf(str, "%s", sSettings.sAuth[user_id].login); 8027d46:	2217      	movs	r2, #23 8027d48:	fb02 3200 	mla	r2, r2, r0, r3// ************************************************************************** ////                          Настройки аутентификацииvoid GetUserLogin(uint8_t user_id, char *str, uint8_t *len){ 8027d4c:	460c      	mov	r4, r1    sprintf(str, "%s", sSettings.sAuth[user_id].login); 8027d4e:	4608      	mov	r0, r1 8027d50:	3205      	adds	r2, #5 8027d52:	4905      	ldr	r1, [pc, #20]	; (8027d68 <GetUserLogin+0x28>) 8027d54:	f7ff fd24 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 8027d58:	4620      	mov	r0, r4 8027d5a:	f7fa f889 	bl	8021e70 <strlen> 8027d5e:	7028      	strb	r0, [r5, #0] 8027d60:	bd38      	pop	{r3, r4, r5, pc} 8027d62:	bf00      	nop 8027d64:	2000ec94 	.word	0x2000ec94 8027d68:	08036d46 	.word	0x08036d4608027d6c <GetUserPassword>:}void GetUserPassword(uint8_t user_id, char *str, uint8_t *len){ 8027d6c:	b538      	push	{r3, r4, r5, lr}    sprintf(str, "%s", sSettings.sAuth[user_id].password); 8027d6e:	4b08      	ldr	r3, [pc, #32]	; (8027d90 <GetUserPassword+0x24>)    sprintf(str, "%s", sSettings.sAuth[user_id].login);    *len = strlen(str);}void GetUserPassword(uint8_t user_id, char *str, uint8_t *len){ 8027d70:	4615      	mov	r5, r2    sprintf(str, "%s", sSettings.sAuth[user_id].password); 8027d72:	2217      	movs	r2, #23 8027d74:	fb02 3200 	mla	r2, r2, r0, r3    sprintf(str, "%s", sSettings.sAuth[user_id].login);    *len = strlen(str);}void GetUserPassword(uint8_t user_id, char *str, uint8_t *len){ 8027d78:	460c      	mov	r4, r1    sprintf(str, "%s", sSettings.sAuth[user_id].password); 8027d7a:	4608      	mov	r0, r1 8027d7c:	3208      	adds	r2, #8 8027d7e:	4905      	ldr	r1, [pc, #20]	; (8027d94 <GetUserPassword+0x28>) 8027d80:	f7ff fd0e 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 8027d84:	4620      	mov	r0, r4 8027d86:	f7fa f873 	bl	8021e70 <strlen> 8027d8a:	7028      	strb	r0, [r5, #0] 8027d8c:	bd38      	pop	{r3, r4, r5, pc} 8027d8e:	bf00      	nop 8027d90:	2000ec9c 	.word	0x2000ec9c 8027d94:	08036d46 	.word	0x08036d4608027d98 <GetUserLevelInt>:    *len = strlen(str);}void GetUserLevelInt(uint8_t user_id, uint8_t *value){    *value = sSettings.sAuth[user_id].level; 8027d98:	4b03      	ldr	r3, [pc, #12]	; (8027da8 <GetUserLevelInt+0x10>) 8027d9a:	2217      	movs	r2, #23 8027d9c:	fb02 3000 	mla	r0, r2, r0, r3 8027da0:	f890 3314 	ldrb.w	r3, [r0, #788]	; 0x314 8027da4:	700b      	strb	r3, [r1, #0] 8027da6:	4770      	bx	lr 8027da8:	2000e984 	.word	0x2000e98408027dac <GetIpStr>:  * @brief  Текущий IP адрес  */void GetIpStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027dac:	4a08      	ldr	r2, [pc, #32]	; (8027dd0 <GetIpStr+0x24>)/**  * @brief  Текущий IP адрес  */void GetIpStr(char *str, uint8_t *len){ 8027dae:	b538      	push	{r3, r4, r5, lr}  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027db0:	f892 32fc 	ldrb.w	r3, [r2, #764]	; 0x2fc/**  * @brief  Текущий IP адрес  */void GetIpStr(char *str, uint8_t *len){ 8027db4:	460c      	mov	r4, r1 8027db6:	4605      	mov	r5, r0  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged)	sprintf(str, "%s", sSettings.sWebTempParams.ip); 8027db8:	4906      	ldr	r1, [pc, #24]	; (8027dd4 <GetIpStr+0x28>)  * @brief  Текущий IP адрес  */void GetIpStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027dba:	b10b      	cbz	r3, 8027dc0 <GetIpStr+0x14>	sprintf(str, "%s", sSettings.sWebTempParams.ip); 8027dbc:	3233      	adds	r2, #51	; 0x33 8027dbe:	e000      	b.n	8027dc2 <GetIpStr+0x16>  else	    sprintf(str, "%s", sSettings.sWebParams.ip); 8027dc0:	3202      	adds	r2, #2 8027dc2:	f7ff fced 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 8027dc6:	4628      	mov	r0, r5 8027dc8:	f7fa f852 	bl	8021e70 <strlen> 8027dcc:	7020      	strb	r0, [r4, #0] 8027dce:	bd38      	pop	{r3, r4, r5, pc} 8027dd0:	2000e984 	.word	0x2000e984 8027dd4:	08036d46 	.word	0x08036d4608027dd8 <GetGatewayStr>:  * @brief  Текущий шлюз  */void GetGatewayStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027dd8:	4a08      	ldr	r2, [pc, #32]	; (8027dfc <GetGatewayStr+0x24>)/**  * @brief  Текущий шлюз  */void GetGatewayStr(char *str, uint8_t *len){ 8027dda:	b538      	push	{r3, r4, r5, lr}  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027ddc:	f892 32fc 	ldrb.w	r3, [r2, #764]	; 0x2fc/**  * @brief  Текущий шлюз  */void GetGatewayStr(char *str, uint8_t *len){ 8027de0:	460c      	mov	r4, r1 8027de2:	4605      	mov	r5, r0  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged)	sprintf(str, "%s", sSettings.sWebTempParams.gate); 8027de4:	4906      	ldr	r1, [pc, #24]	; (8027e00 <GetGatewayStr+0x28>)  * @brief  Текущий шлюз  */void GetGatewayStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027de6:	b10b      	cbz	r3, 8027dec <GetGatewayStr+0x14>	sprintf(str, "%s", sSettings.sWebTempParams.gate); 8027de8:	3243      	adds	r2, #67	; 0x43 8027dea:	e000      	b.n	8027dee <GetGatewayStr+0x16>  else	sprintf(str, "%s", sSettings.sWebParams.gate); 8027dec:	3212      	adds	r2, #18 8027dee:	f7ff fcd7 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 8027df2:	4628      	mov	r0, r5 8027df4:	f7fa f83c 	bl	8021e70 <strlen> 8027df8:	7020      	strb	r0, [r4, #0] 8027dfa:	bd38      	pop	{r3, r4, r5, pc} 8027dfc:	2000e984 	.word	0x2000e984 8027e00:	08036d46 	.word	0x08036d4608027e04 <GetMaskStr>:  * @brief  Текущая маска подсети  */void GetMaskStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027e04:	4a08      	ldr	r2, [pc, #32]	; (8027e28 <GetMaskStr+0x24>)/**  * @brief  Текущая маска подсети  */void GetMaskStr(char *str, uint8_t *len){ 8027e06:	b538      	push	{r3, r4, r5, lr}  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027e08:	f892 32fc 	ldrb.w	r3, [r2, #764]	; 0x2fc/**  * @brief  Текущая маска подсети  */void GetMaskStr(char *str, uint8_t *len){ 8027e0c:	460c      	mov	r4, r1 8027e0e:	4605      	mov	r5, r0  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged)    sprintf(str, "%s", sSettings.sWebTempParams.mask); 8027e10:	4906      	ldr	r1, [pc, #24]	; (8027e2c <GetMaskStr+0x28>)  * @brief  Текущая маска подсети  */void GetMaskStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027e12:	b10b      	cbz	r3, 8027e18 <GetMaskStr+0x14>    sprintf(str, "%s", sSettings.sWebTempParams.mask); 8027e14:	3253      	adds	r2, #83	; 0x53 8027e16:	e000      	b.n	8027e1a <GetMaskStr+0x16>  else	    sprintf(str, "%s", sSettings.sWebParams.mask); 8027e18:	3222      	adds	r2, #34	; 0x22 8027e1a:	f7ff fcc1 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 8027e1e:	4628      	mov	r0, r5 8027e20:	f7fa f826 	bl	8021e70 <strlen> 8027e24:	7020      	strb	r0, [r4, #0] 8027e26:	bd38      	pop	{r3, r4, r5, pc} 8027e28:	2000e984 	.word	0x2000e984 8027e2c:	08036d46 	.word	0x08036d4608027e30 <GetDhcpStateStr>:  * @brief  Настройка DHCP  */void GetDhcpStateStr(char *str, uint8_t *len){  /* Если сейчас временные настройки */  if (sSettings.sFlags.netsettingsChanged) 8027e30:	4b08      	ldr	r3, [pc, #32]	; (8027e54 <GetDhcpStateStr+0x24>) 8027e32:	f893 22fc 	ldrb.w	r2, [r3, #764]	; 0x2fc 8027e36:	b112      	cbz	r2, 8027e3e <GetDhcpStateStr+0xe>  {    if (sSettings.sWebTempParams.dhcpEnable) 8027e38:	f893 3063 	ldrb.w	r3, [r3, #99]	; 0x63 8027e3c:	e001      	b.n	8027e42 <GetDhcpStateStr+0x12>    else      *str = '0';  }  else  {    if (sSettings.sWebParams.dhcpEnable) 8027e3e:	f893 3032 	ldrb.w	r3, [r3, #50]	; 0x32 8027e42:	b10b      	cbz	r3, 8027e48 <GetDhcpStateStr+0x18>      *str = '1'; 8027e44:	2331      	movs	r3, #49	; 0x31 8027e46:	e000      	b.n	8027e4a <GetDhcpStateStr+0x1a>    else      *str = '0'; 8027e48:	2330      	movs	r3, #48	; 0x30 8027e4a:	7003      	strb	r3, [r0, #0]  }    *len = 1; 8027e4c:	2301      	movs	r3, #1 8027e4e:	700b      	strb	r3, [r1, #0] 8027e50:	4770      	bx	lr 8027e52:	bf00      	nop 8027e54:	2000e984 	.word	0x2000e98408027e58 <GetReadCommunity>:/**  * @brief  Текущее community для чтения  */void GetReadCommunity(char *str, uint8_t *len){ 8027e58:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.readCommunity); 8027e5a:	4a05      	ldr	r2, [pc, #20]	; (8027e70 <GetReadCommunity+0x18>)/**  * @brief  Текущее community для чтения  */void GetReadCommunity(char *str, uint8_t *len){ 8027e5c:	4605      	mov	r5, r0 8027e5e:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.readCommunity); 8027e60:	4904      	ldr	r1, [pc, #16]	; (8027e74 <GetReadCommunity+0x1c>) 8027e62:	f7ff fc9d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027e66:	4628      	mov	r0, r5 8027e68:	f7fa f802 	bl	8021e70 <strlen> 8027e6c:	7020      	strb	r0, [r4, #0] 8027e6e:	bd38      	pop	{r3, r4, r5, pc} 8027e70:	2000ea88 	.word	0x2000ea88 8027e74:	08036d46 	.word	0x08036d4608027e78 <GetWriteCommunity>:/**  * @brief  Текущее community для записи  */void GetWriteCommunity(char *str, uint8_t *len){ 8027e78:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.writeCommunity); 8027e7a:	4a05      	ldr	r2, [pc, #20]	; (8027e90 <GetWriteCommunity+0x18>)/**  * @brief  Текущее community для записи  */void GetWriteCommunity(char *str, uint8_t *len){ 8027e7c:	4605      	mov	r5, r0 8027e7e:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.writeCommunity); 8027e80:	4904      	ldr	r1, [pc, #16]	; (8027e94 <GetWriteCommunity+0x1c>) 8027e82:	f7ff fc8d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027e86:	4628      	mov	r0, r5 8027e88:	f7f9 fff2 	bl	8021e70 <strlen> 8027e8c:	7020      	strb	r0, [r4, #0] 8027e8e:	bd38      	pop	{r3, r4, r5, pc} 8027e90:	2000ea9c 	.word	0x2000ea9c 8027e94:	08036d46 	.word	0x08036d4608027e98 <GetManagerIp>:/**  * @brief  IP SNMP менеджера  */void GetManagerIp(char *str, uint8_t *len){ 8027e98:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.managerIP); 8027e9a:	4a05      	ldr	r2, [pc, #20]	; (8027eb0 <GetManagerIp+0x18>)/**  * @brief  IP SNMP менеджера  */void GetManagerIp(char *str, uint8_t *len){ 8027e9c:	4605      	mov	r5, r0 8027e9e:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.managerIP); 8027ea0:	4904      	ldr	r1, [pc, #16]	; (8027eb4 <GetManagerIp+0x1c>) 8027ea2:	f7ff fc7d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027ea6:	4628      	mov	r0, r5 8027ea8:	f7f9 ffe2 	bl	8021e70 <strlen> 8027eac:	7020      	strb	r0, [r4, #0] 8027eae:	bd38      	pop	{r3, r4, r5, pc} 8027eb0:	2000eb64 	.word	0x2000eb64 8027eb4:	08036d46 	.word	0x08036d4608027eb8 <GetManagerIp2>:}void GetManagerIp2(char *str, uint8_t *len){ 8027eb8:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.managerIP2); 8027eba:	4a05      	ldr	r2, [pc, #20]	; (8027ed0 <GetManagerIp2+0x18>)  sprintf(str, "%s", sSettings.sSnmp.managerIP);  *len = strlen(str);}void GetManagerIp2(char *str, uint8_t *len){ 8027ebc:	4605      	mov	r5, r0 8027ebe:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.managerIP2); 8027ec0:	4904      	ldr	r1, [pc, #16]	; (8027ed4 <GetManagerIp2+0x1c>) 8027ec2:	f7ff fc6d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027ec6:	4628      	mov	r0, r5 8027ec8:	f7f9 ffd2 	bl	8021e70 <strlen> 8027ecc:	7020      	strb	r0, [r4, #0] 8027ece:	bd38      	pop	{r3, r4, r5, pc} 8027ed0:	2000eb78 	.word	0x2000eb78 8027ed4:	08036d46 	.word	0x08036d4608027ed8 <GetManagerIp3>:}void GetManagerIp3(char *str, uint8_t *len){ 8027ed8:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.managerIP3); 8027eda:	4a05      	ldr	r2, [pc, #20]	; (8027ef0 <GetManagerIp3+0x18>)  sprintf(str, "%s", sSettings.sSnmp.managerIP2);  *len = strlen(str);}void GetManagerIp3(char *str, uint8_t *len){ 8027edc:	4605      	mov	r5, r0 8027ede:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.managerIP3); 8027ee0:	4904      	ldr	r1, [pc, #16]	; (8027ef4 <GetManagerIp3+0x1c>) 8027ee2:	f7ff fc5d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027ee6:	4628      	mov	r0, r5 8027ee8:	f7f9 ffc2 	bl	8021e70 <strlen> 8027eec:	7020      	strb	r0, [r4, #0] 8027eee:	bd38      	pop	{r3, r4, r5, pc} 8027ef0:	2000eb8c 	.word	0x2000eb8c 8027ef4:	08036d46 	.word	0x08036d4608027ef8 <GetManagerIp4>:}void GetManagerIp4(char *str, uint8_t *len){ 8027ef8:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.managerIP4); 8027efa:	4a05      	ldr	r2, [pc, #20]	; (8027f10 <GetManagerIp4+0x18>)  sprintf(str, "%s", sSettings.sSnmp.managerIP3);  *len = strlen(str);}void GetManagerIp4(char *str, uint8_t *len){ 8027efc:	4605      	mov	r5, r0 8027efe:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.managerIP4); 8027f00:	4904      	ldr	r1, [pc, #16]	; (8027f14 <GetManagerIp4+0x1c>) 8027f02:	f7ff fc4d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027f06:	4628      	mov	r0, r5 8027f08:	f7f9 ffb2 	bl	8021e70 <strlen> 8027f0c:	7020      	strb	r0, [r4, #0] 8027f0e:	bd38      	pop	{r3, r4, r5, pc} 8027f10:	2000eba0 	.word	0x2000eba0 8027f14:	08036d46 	.word	0x08036d4608027f18 <GetManagerIp5>:}void GetManagerIp5(char *str, uint8_t *len){ 8027f18:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sSnmp.managerIP5); 8027f1a:	4a05      	ldr	r2, [pc, #20]	; (8027f30 <GetManagerIp5+0x18>)  sprintf(str, "%s", sSettings.sSnmp.managerIP4);  *len = strlen(str);}void GetManagerIp5(char *str, uint8_t *len){ 8027f1c:	4605      	mov	r5, r0 8027f1e:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sSnmp.managerIP5); 8027f20:	4904      	ldr	r1, [pc, #16]	; (8027f34 <GetManagerIp5+0x1c>) 8027f22:	f7ff fc3d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027f26:	4628      	mov	r0, r5 8027f28:	f7f9 ffa2 	bl	8021e70 <strlen> 8027f2c:	7020      	strb	r0, [r4, #0] 8027f2e:	bd38      	pop	{r3, r4, r5, pc} 8027f30:	2000ebb4 	.word	0x2000ebb4 8027f34:	08036d46 	.word	0x08036d4608027f38 <GetRDSIpStr>:/**  * @brief  Текущий IP адрес  */void GetRDSIpStr(char *str, uint8_t *len){ 8027f38:	b538      	push	{r3, r4, r5, lr}   sprintf(str, "%s", sSettings.sRADIUS.ServerIP); 8027f3a:	4a05      	ldr	r2, [pc, #20]	; (8027f50 <GetRDSIpStr+0x18>)/**  * @brief  Текущий IP адрес  */void GetRDSIpStr(char *str, uint8_t *len){ 8027f3c:	4605      	mov	r5, r0 8027f3e:	460c      	mov	r4, r1   sprintf(str, "%s", sSettings.sRADIUS.ServerIP); 8027f40:	4904      	ldr	r1, [pc, #16]	; (8027f54 <GetRDSIpStr+0x1c>) 8027f42:	f7ff fc2d 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027f46:	4628      	mov	r0, r5 8027f48:	f7f9 ff92 	bl	8021e70 <strlen> 8027f4c:	7020      	strb	r0, [r4, #0] 8027f4e:	bd38      	pop	{r3, r4, r5, pc} 8027f50:	2000ed00 	.word	0x2000ed00 8027f54:	08036d46 	.word	0x08036d4608027f58 <GetRDSPortStr>:/**  * @brief Текущий Порт  */void GetRDSPortStr(char *str, uint8_t *len){ 8027f58:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%d", sSettings.sRADIUS.port); 8027f5a:	4b06      	ldr	r3, [pc, #24]	; (8027f74 <GetRDSPortStr+0x1c>)/**  * @brief Текущий Порт  */void GetRDSPortStr(char *str, uint8_t *len){ 8027f5c:	4605      	mov	r5, r0 8027f5e:	460c      	mov	r4, r1  sprintf(str, "%d", sSettings.sRADIUS.port); 8027f60:	f8d3 23a0 	ldr.w	r2, [r3, #928]	; 0x3a0 8027f64:	4904      	ldr	r1, [pc, #16]	; (8027f78 <GetRDSPortStr+0x20>) 8027f66:	f7ff fc1b 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027f6a:	4628      	mov	r0, r5 8027f6c:	f7f9 ff80 	bl	8021e70 <strlen> 8027f70:	7020      	strb	r0, [r4, #0] 8027f72:	bd38      	pop	{r3, r4, r5, pc} 8027f74:	2000e984 	.word	0x2000e984 8027f78:	08036d34 	.word	0x08036d3408027f7c <GetRDSKeyAccesstStr>:/**  * @brief  Текущий Код access  */void GetRDSKeyAccesstStr(char *str, uint8_t *len){ 8027f7c:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%d", sSettings.sRADIUS.key_access); 8027f7e:	4b06      	ldr	r3, [pc, #24]	; (8027f98 <GetRDSKeyAccesstStr+0x1c>)/**  * @brief  Текущий Код access  */void GetRDSKeyAccesstStr(char *str, uint8_t *len){ 8027f80:	4605      	mov	r5, r0 8027f82:	460c      	mov	r4, r1  sprintf(str, "%d", sSettings.sRADIUS.key_access); 8027f84:	f8d3 23a4 	ldr.w	r2, [r3, #932]	; 0x3a4 8027f88:	4904      	ldr	r1, [pc, #16]	; (8027f9c <GetRDSKeyAccesstStr+0x20>) 8027f8a:	f7ff fc09 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027f8e:	4628      	mov	r0, r5 8027f90:	f7f9 ff6e 	bl	8021e70 <strlen> 8027f94:	7020      	strb	r0, [r4, #0] 8027f96:	bd38      	pop	{r3, r4, r5, pc} 8027f98:	2000e984 	.word	0x2000e984 8027f9c:	08036d34 	.word	0x08036d3408027fa0 <GetRDSPasswordkStr>:/**  * @brief  Текущая пароль RADIUS  */void GetRDSPasswordkStr(char *str, uint8_t *len){ 8027fa0:	b538      	push	{r3, r4, r5, lr}  sprintf(str, "%s", sSettings.sRADIUS.rds_password); 8027fa2:	4a05      	ldr	r2, [pc, #20]	; (8027fb8 <GetRDSPasswordkStr+0x18>)/**  * @brief  Текущая пароль RADIUS  */void GetRDSPasswordkStr(char *str, uint8_t *len){ 8027fa4:	4605      	mov	r5, r0 8027fa6:	460c      	mov	r4, r1  sprintf(str, "%s", sSettings.sRADIUS.rds_password); 8027fa8:	4904      	ldr	r1, [pc, #16]	; (8027fbc <GetRDSPasswordkStr+0x1c>) 8027faa:	f7ff fbf9 	bl	80277a0 <tfp_sprintf>  *len = strlen(str); 8027fae:	4628      	mov	r0, r5 8027fb0:	f7f9 ff5e 	bl	8021e70 <strlen> 8027fb4:	7020      	strb	r0, [r4, #0] 8027fb6:	bd38      	pop	{r3, r4, r5, pc} 8027fb8:	2000ed10 	.word	0x2000ed10 8027fbc:	08036d46 	.word	0x08036d4608027fc0 <GetRDSEnableStateStr>:/**  * @brief  Настройка вкл/ выкл RADIUS сервера  */void GetRDSEnableStateStr(char *str, uint8_t *len){    if (sSettings.sRADIUS.RDSEnable) 8027fc0:	4b05      	ldr	r3, [pc, #20]	; (8027fd8 <GetRDSEnableStateStr+0x18>) 8027fc2:	f893 339d 	ldrb.w	r3, [r3, #925]	; 0x39d 8027fc6:	b10b      	cbz	r3, 8027fcc <GetRDSEnableStateStr+0xc>      *str = '1'; 8027fc8:	2331      	movs	r3, #49	; 0x31 8027fca:	e000      	b.n	8027fce <GetRDSEnableStateStr+0xe>    else      *str = '0'; 8027fcc:	2330      	movs	r3, #48	; 0x30 8027fce:	7003      	strb	r3, [r0, #0]  *len = 1; 8027fd0:	2301      	movs	r3, #1 8027fd2:	700b      	strb	r3, [r1, #0] 8027fd4:	4770      	bx	lr 8027fd6:	bf00      	nop 8027fd8:	2000e984 	.word	0x2000e98408027fdc <GetWebReinitFlag>:/**  * @brief  Вернуть признак изменения сетевых параметров  */void GetWebReinitFlag(char *str, uint8_t *len){ 8027fdc:	b538      	push	{r3, r4, r5, lr}  if (sSettings.sFlags.netsettingsChanged) 8027fde:	4b08      	ldr	r3, [pc, #32]	; (8028000 <GetWebReinitFlag+0x24>) 8027fe0:	f893 32fc 	ldrb.w	r3, [r3, #764]	; 0x2fc/**  * @brief  Вернуть признак изменения сетевых параметров  */void GetWebReinitFlag(char *str, uint8_t *len){ 8027fe4:	460c      	mov	r4, r1 8027fe6:	4605      	mov	r5, r0  if (sSettings.sFlags.netsettingsChanged)  {    sprintf(str, "%s", "true"); 8027fe8:	4906      	ldr	r1, [pc, #24]	; (8028004 <GetWebReinitFlag+0x28>)/**  * @brief  Вернуть признак изменения сетевых параметров  */void GetWebReinitFlag(char *str, uint8_t *len){  if (sSettings.sFlags.netsettingsChanged) 8027fea:	b10b      	cbz	r3, 8027ff0 <GetWebReinitFlag+0x14>  {    sprintf(str, "%s", "true"); 8027fec:	4a06      	ldr	r2, [pc, #24]	; (8028008 <GetWebReinitFlag+0x2c>) 8027fee:	e000      	b.n	8027ff2 <GetWebReinitFlag+0x16>    *len = strlen(str);  }  else  {    sprintf(str, "%s", "false"); 8027ff0:	4a06      	ldr	r2, [pc, #24]	; (802800c <GetWebReinitFlag+0x30>) 8027ff2:	f7ff fbd5 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 8027ff6:	4628      	mov	r0, r5 8027ff8:	f7f9 ff3a 	bl	8021e70 <strlen> 8027ffc:	7020      	strb	r0, [r4, #0] 8027ffe:	bd38      	pop	{r3, r4, r5, pc} 8028000:	2000e984 	.word	0x2000e984 8028004:	08036d46 	.word	0x08036d46 8028008:	08036d68 	.word	0x08036d68 802800c:	08036d6d 	.word	0x08036d6d08028010 <SetLoadMode>:  * @brief  Установить признак обновления ПО.   */void SetLoadMode(void){  /* Set loadMode = 1 */  RTC_WriteBackupRegister(RTC_BKP_DR1, 1); 8028010:	2001      	movs	r0, #1/**  * @brief  Установить признак обновления ПО.   */void SetLoadMode(void){ 8028012:	b508      	push	{r3, lr}  /* Set loadMode = 1 */  RTC_WriteBackupRegister(RTC_BKP_DR1, 1); 8028014:	4601      	mov	r1, r0 8028016:	f7fd fd6b 	bl	8025af0 <RTC_WriteBackupRegister>  /* Set bootTry = 0 */  RTC_WriteBackupRegister(RTC_BKP_DR2, 0); 802801a:	2002      	movs	r0, #2 802801c:	2100      	movs	r1, #0} 802801e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}void SetLoadMode(void){  /* Set loadMode = 1 */  RTC_WriteBackupRegister(RTC_BKP_DR1, 1);  /* Set bootTry = 0 */  RTC_WriteBackupRegister(RTC_BKP_DR2, 0); 8028022:	f7fd bd65 	b.w	8025af0 <RTC_WriteBackupRegister> 8028026:	0000      	movs	r0, r008028028 <SetWebReinitFlag>:/**  * @brief  Установить признак изменения сетевых параметров  */void SetWebReinitFlag(bool value){  sSettings.sFlags.netsettingsChanged = value; 8028028:	4b01      	ldr	r3, [pc, #4]	; (8028030 <SetWebReinitFlag+0x8>) 802802a:	f883 02fc 	strb.w	r0, [r3, #764]	; 0x2fc 802802e:	4770      	bx	lr 8028030:	2000e984 	.word	0x2000e98408028034 <SetConfirmWebParamsFlag>:/**  * @brief  Установить флаг подтверждения сетевых настроек пользователем  */void SetConfirmWebParamsFlag(void){  fConfirmWebParams = true; 8028034:	4b01      	ldr	r3, [pc, #4]	; (802803c <SetConfirmWebParamsFlag+0x8>) 8028036:	2201      	movs	r2, #1 8028038:	701a      	strb	r2, [r3, #0] 802803a:	4770      	bx	lr 802803c:	20002934 	.word	0x2000293408028040 <SetIPStr>://                             Сетевые параметры/**  * @brief  IP адрес  */void SetIPStr(char *str){ 8028040:	4601      	mov	r1, r0  //strcpy(sSettings.sWebParams.ip, str);  strcpy(sSettings.sWebTempParams.ip, str);  8028042:	4801      	ldr	r0, [pc, #4]	; (8028048 <SetIPStr+0x8>) 8028044:	f7f9 beb6 	b.w	8021db4 <strcpy> 8028048:	2000e9b7 	.word	0x2000e9b70802804c <SetGatewayStr>:/**  * @brief  Шлюз  */void SetGatewayStr(char *str){ 802804c:	4601      	mov	r1, r0  //strcpy(sSettings.sWebParams.gate, str);  strcpy(sSettings.sWebTempParams.gate, str); 802804e:	4801      	ldr	r0, [pc, #4]	; (8028054 <SetGatewayStr+0x8>) 8028050:	f7f9 beb0 	b.w	8021db4 <strcpy> 8028054:	2000e9c7 	.word	0x2000e9c708028058 <SetMaskStr>:/**  * @brief  Текущая маска подсети  */void SetMaskStr(char *str){ 8028058:	4601      	mov	r1, r0  //strcpy(sSettings.sWebParams.mask, str);  strcpy(sSettings.sWebTempParams.mask, str); 802805a:	4801      	ldr	r0, [pc, #4]	; (8028060 <SetMaskStr+0x8>) 802805c:	f7f9 beaa 	b.w	8021db4 <strcpy> 8028060:	2000e9d7 	.word	0x2000e9d708028064 <SetDhcpStateStr>:/**  * @brief  Настройка DHCP  */void SetDhcpStateStr(char *str){ 8028064:	b508      	push	{r3, lr}  if (strncmp(str, "on", 2) == 0) 8028066:	4906      	ldr	r1, [pc, #24]	; (8028080 <SetDhcpStateStr+0x1c>) 8028068:	2202      	movs	r2, #2 802806a:	f7f9 ff63 	bl	8021f34 <strncmp> 802806e:	4b05      	ldr	r3, [pc, #20]	; (8028084 <SetDhcpStateStr+0x20>) 8028070:	b908      	cbnz	r0, 8028076 <SetDhcpStateStr+0x12>	//sSettings.sWebParams.dhcpEnable = 1;    sSettings.sWebTempParams.dhcpEnable = 1; 8028072:	2201      	movs	r2, #1 8028074:	e000      	b.n	8028078 <SetDhcpStateStr+0x14>  else	//sSettings.sWebParams.dhcpEnable = 0;    sSettings.sWebTempParams.dhcpEnable = 0; 8028076:	2200      	movs	r2, #0 8028078:	f883 2063 	strb.w	r2, [r3, #99]	; 0x63 802807c:	bd08      	pop	{r3, pc} 802807e:	bf00      	nop 8028080:	08036d73 	.word	0x08036d73 8028084:	2000e984 	.word	0x2000e98408028088 <SetReadCommunity>:/**  * @brief  Community для чтения  */void SetReadCommunity(char *str){ 8028088:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.readCommunity, str); 802808a:	4801      	ldr	r0, [pc, #4]	; (8028090 <SetReadCommunity+0x8>) 802808c:	f7f9 be92 	b.w	8021db4 <strcpy> 8028090:	2000ea88 	.word	0x2000ea8808028094 <SetWriteCommunity>:/**  * @brief  Community для записи  */void SetWriteCommunity(char *str){ 8028094:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.writeCommunity, str); 8028096:	4801      	ldr	r0, [pc, #4]	; (802809c <SetWriteCommunity+0x8>) 8028098:	f7f9 be8c 	b.w	8021db4 <strcpy> 802809c:	2000ea9c 	.word	0x2000ea9c080280a0 <SetManagerIp>:/**  * @brief  IP SNMP менеджера  */void SetManagerIp(char *str){ 80280a0:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.managerIP, str); 80280a2:	4c05      	ldr	r4, [pc, #20]	; (80280b8 <SetManagerIp+0x18>)/**  * @brief  IP SNMP менеджера  */void SetManagerIp(char *str){ 80280a4:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.managerIP, str); 80280a6:	4620      	mov	r0, r4 80280a8:	f7f9 fe84 	bl	8021db4 <strcpy>  SNMP_SetManagerIP(sSettings.sSnmp.managerIP); 80280ac:	4620      	mov	r0, r4} 80280ae:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  * @brief  IP SNMP менеджера  */void SetManagerIp(char *str){  strcpy(sSettings.sSnmp.managerIP, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP); 80280b2:	f00d bced 	b.w	8035a90 <SNMP_SetManagerIP> 80280b6:	bf00      	nop 80280b8:	2000eb64 	.word	0x2000eb64080280bc <SetManagerIp2>:}void SetManagerIp2(char *str){ 80280bc:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.managerIP2, str); 80280be:	4c05      	ldr	r4, [pc, #20]	; (80280d4 <SetManagerIp2+0x18>)  strcpy(sSettings.sSnmp.managerIP, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP);}void SetManagerIp2(char *str){ 80280c0:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.managerIP2, str); 80280c2:	4620      	mov	r0, r4 80280c4:	f7f9 fe76 	bl	8021db4 <strcpy>  SNMP_SetManagerIP(sSettings.sSnmp.managerIP2); 80280c8:	4620      	mov	r0, r4} 80280ca:	e8bd 4010 	ldmia.w	sp!, {r4, lr}}void SetManagerIp2(char *str){  strcpy(sSettings.sSnmp.managerIP2, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP2); 80280ce:	f00d bcdf 	b.w	8035a90 <SNMP_SetManagerIP> 80280d2:	bf00      	nop 80280d4:	2000eb78 	.word	0x2000eb78080280d8 <SetManagerIp3>:}void SetManagerIp3(char *str){ 80280d8:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.managerIP3, str); 80280da:	4c05      	ldr	r4, [pc, #20]	; (80280f0 <SetManagerIp3+0x18>)  strcpy(sSettings.sSnmp.managerIP2, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP2);}void SetManagerIp3(char *str){ 80280dc:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.managerIP3, str); 80280de:	4620      	mov	r0, r4 80280e0:	f7f9 fe68 	bl	8021db4 <strcpy>  SNMP_SetManagerIP(sSettings.sSnmp.managerIP3); 80280e4:	4620      	mov	r0, r4} 80280e6:	e8bd 4010 	ldmia.w	sp!, {r4, lr}}void SetManagerIp3(char *str){  strcpy(sSettings.sSnmp.managerIP3, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP3); 80280ea:	f00d bcd1 	b.w	8035a90 <SNMP_SetManagerIP> 80280ee:	bf00      	nop 80280f0:	2000eb8c 	.word	0x2000eb8c080280f4 <SetManagerIp4>:}void SetManagerIp4(char *str){ 80280f4:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.managerIP4, str); 80280f6:	4c05      	ldr	r4, [pc, #20]	; (802810c <SetManagerIp4+0x18>)  strcpy(sSettings.sSnmp.managerIP3, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP3);}void SetManagerIp4(char *str){ 80280f8:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.managerIP4, str); 80280fa:	4620      	mov	r0, r4 80280fc:	f7f9 fe5a 	bl	8021db4 <strcpy>  SNMP_SetManagerIP(sSettings.sSnmp.managerIP4); 8028100:	4620      	mov	r0, r4} 8028102:	e8bd 4010 	ldmia.w	sp!, {r4, lr}}void SetManagerIp4(char *str){  strcpy(sSettings.sSnmp.managerIP4, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP4); 8028106:	f00d bcc3 	b.w	8035a90 <SNMP_SetManagerIP> 802810a:	bf00      	nop 802810c:	2000eba0 	.word	0x2000eba008028110 <SetManagerIp5>:}void SetManagerIp5(char *str){ 8028110:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.managerIP5, str); 8028112:	4c05      	ldr	r4, [pc, #20]	; (8028128 <SetManagerIp5+0x18>)  strcpy(sSettings.sSnmp.managerIP4, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP4);}void SetManagerIp5(char *str){ 8028114:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.managerIP5, str); 8028116:	4620      	mov	r0, r4 8028118:	f7f9 fe4c 	bl	8021db4 <strcpy>  SNMP_SetManagerIP(sSettings.sSnmp.managerIP5); 802811c:	4620      	mov	r0, r4} 802811e:	e8bd 4010 	ldmia.w	sp!, {r4, lr}}void SetManagerIp5(char *str){  strcpy(sSettings.sSnmp.managerIP5, str);  SNMP_SetManagerIP(sSettings.sSnmp.managerIP5); 8028122:	f00d bcb5 	b.w	8035a90 <SNMP_SetManagerIP> 8028126:	bf00      	nop 8028128:	2000ebb4 	.word	0x2000ebb40802812c <SetOwner>:/**  * @brief  Установить владельца  */void SetOwner(char *str){ 802812c:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.sysContact, str); 802812e:	4c06      	ldr	r4, [pc, #24]	; (8028148 <SetOwner+0x1c>)/**  * @brief  Установить владельца  */void SetOwner(char *str){ 8028130:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.sysContact, str); 8028132:	4620      	mov	r0, r4 8028134:	f7f9 fe3e 	bl	8021db4 <strcpy>  SNMP_SetSysContact(sSettings.sSnmp.sysContact); 8028138:	4620      	mov	r0, r4 802813a:	f00d fc7f 	bl	8035a3c <SNMP_SetSysContact>  SNMP_SetObjDescr();} 802813e:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  */void SetOwner(char *str){  strcpy(sSettings.sSnmp.sysContact, str);  SNMP_SetSysContact(sSettings.sSnmp.sysContact);  SNMP_SetObjDescr(); 8028142:	f00d bc39 	b.w	80359b8 <SNMP_SetObjDescr> 8028146:	bf00      	nop 8028148:	2000eab0 	.word	0x2000eab00802814c <SetLocation>:/**  * @brief  Установить местоположение  */void SetLocation(char *str){ 802814c:	b510      	push	{r4, lr}  strcpy(sSettings.sSnmp.sysLocation, str); 802814e:	4c05      	ldr	r4, [pc, #20]	; (8028164 <SetLocation+0x18>)/**  * @brief  Установить местоположение  */void SetLocation(char *str){ 8028150:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.sysLocation, str); 8028152:	4620      	mov	r0, r4 8028154:	f7f9 fe2e 	bl	8021db4 <strcpy>  SNMP_SetSysLocation(sSettings.sSnmp.sysLocation); 8028158:	4620      	mov	r0, r4} 802815a:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  * @brief  Установить местоположение  */void SetLocation(char *str){  strcpy(sSettings.sSnmp.sysLocation, str);  SNMP_SetSysLocation(sSettings.sSnmp.sysLocation); 802815e:	f00d bc89 	b.w	8035a74 <SNMP_SetSysLocation> 8028162:	bf00      	nop 8028164:	2000eaf6 	.word	0x2000eaf608028168 <SetComment>:/**  * @brief  Установить комментарий  */void SetComment(char *str){ 8028168:	4601      	mov	r1, r0  strcpy(sSettings.sInfo.comments, str); 802816a:	4801      	ldr	r0, [pc, #4]	; (8028170 <SetComment+0x8>) 802816c:	f7f9 be22 	b.w	8021db4 <strcpy> 8028170:	2000ec12 	.word	0x2000ec1208028174 <SetRDSIpStr>://                             Сетевые параметры RADIUS сервера/**  * @brief  IP адрес  */void SetRDSIpStr(char *str){ 8028174:	4601      	mov	r1, r0  strcpy(sSettings.sRADIUS.ServerIP, str); 8028176:	4801      	ldr	r0, [pc, #4]	; (802817c <SetRDSIpStr+0x8>) 8028178:	f7f9 be1c 	b.w	8021db4 <strcpy> 802817c:	2000ed00 	.word	0x2000ed0008028180 <SetRDSPortStr>:/**  * @brief  Порт  */void SetRDSPortStr(char *str){ 8028180:	b508      	push	{r3, lr}	sSettings.sRADIUS.port = atoi(str); 8028182:	f7f9 fb7d 	bl	8021880 <atoi> 8028186:	4b02      	ldr	r3, [pc, #8]	; (8028190 <SetRDSPortStr+0x10>) 8028188:	f8c3 03a0 	str.w	r0, [r3, #928]	; 0x3a0 802818c:	bd08      	pop	{r3, pc} 802818e:	bf00      	nop 8028190:	2000e984 	.word	0x2000e98408028194 <SetRDSKeyAccesstStr>:/**  * @brief  Код access  */void SetRDSKeyAccesstStr(char *str){ 8028194:	b508      	push	{r3, lr}	sSettings.sRADIUS.key_access = atoi(str); 8028196:	f7f9 fb73 	bl	8021880 <atoi> 802819a:	4b02      	ldr	r3, [pc, #8]	; (80281a4 <SetRDSKeyAccesstStr+0x10>) 802819c:	f8c3 03a4 	str.w	r0, [r3, #932]	; 0x3a4 80281a0:	bd08      	pop	{r3, pc} 80281a2:	bf00      	nop 80281a4:	2000e984 	.word	0x2000e984080281a8 <SetRDSPasswordkStr>:/**  * @brief  пароль RADIUS  */void SetRDSPasswordkStr(char *str){ 80281a8:	4601      	mov	r1, r0  strcpy(sSettings.sRADIUS.rds_password, str); 80281aa:	4801      	ldr	r0, [pc, #4]	; (80281b0 <SetRDSPasswordkStr+0x8>) 80281ac:	f7f9 be02 	b.w	8021db4 <strcpy> 80281b0:	2000ed10 	.word	0x2000ed10080281b4 <SetRDSEnableStateStr>:/**  * @brief  Настройка вкл/ выкл RADIUS сервера  */void SetRDSEnableStateStr(char *str){ 80281b4:	b508      	push	{r3, lr}  if (strncmp(str, "on", 2) == 0) 80281b6:	4906      	ldr	r1, [pc, #24]	; (80281d0 <SetRDSEnableStateStr+0x1c>) 80281b8:	2202      	movs	r2, #2 80281ba:	f7f9 febb 	bl	8021f34 <strncmp> 80281be:	4b05      	ldr	r3, [pc, #20]	; (80281d4 <SetRDSEnableStateStr+0x20>) 80281c0:	b908      	cbnz	r0, 80281c6 <SetRDSEnableStateStr+0x12>	  sSettings.sRADIUS.RDSEnable = 1; 80281c2:	2201      	movs	r2, #1 80281c4:	e000      	b.n	80281c8 <SetRDSEnableStateStr+0x14>  else	  sSettings.sRADIUS.RDSEnable = 0; 80281c6:	2200      	movs	r2, #0 80281c8:	f883 239d 	strb.w	r2, [r3, #925]	; 0x39d 80281cc:	bd08      	pop	{r3, pc} 80281ce:	bf00      	nop 80281d0:	08036d73 	.word	0x08036d73 80281d4:	2000e984 	.word	0x2000e984080281d8 <SetDateStr>:/**  * @brief  Дата  */void SetDateStr(char *str){ 80281d8:	b510      	push	{r4, lr} 80281da:	b08c      	sub	sp, #48	; 0x30 80281dc:	4604      	mov	r4, r0	TM_RTC_t tmp_data;	char str_data[18];	char str_time[9];	uint8_t len;	memset(str_data, 0, 18); 80281de:	2100      	movs	r1, #0 80281e0:	2212      	movs	r2, #18 80281e2:	a807      	add	r0, sp, #28 80281e4:	f7f9 fc6c 	bl	8021ac0 <memset>	memset(str_time, 0, 9); 80281e8:	2100      	movs	r1, #0 80281ea:	2209      	movs	r2, #9 80281ec:	4668      	mov	r0, sp 80281ee:	f7f9 fc67 	bl	8021ac0 <memset>	str += 2;	strncpy(str_data, (str + 6), 2); 80281f2:	f104 0108 	add.w	r1, r4, #8 80281f6:	2202      	movs	r2, #2 80281f8:	a807      	add	r0, sp, #28 80281fa:	f7f9 fef1 	bl	8021fe0 <strncpy>	strncat(str_data, (str + 2), 4); 80281fe:	1d21      	adds	r1, r4, #4 8028200:	2204      	movs	r2, #4 8028202:	a807      	add	r0, sp, #28 8028204:	f7f9 fe64 	bl	8021ed0 <strncat>	strncat(str_data, str, 2); 8028208:	2202      	movs	r2, #2 802820a:	1ca1      	adds	r1, r4, #2 802820c:	a807      	add	r0, sp, #28 802820e:	f7f9 fe5f 	bl	8021ed0 <strncat>	TM_RTC_GetDateTime(&tmp_data, TM_RTC_Format_BIN); 8028212:	a803      	add	r0, sp, #12 8028214:	2100      	movs	r1, #0 8028216:	f7fe f937 	bl	8026488 <TM_RTC_GetDateTime>	sprintf(str_time, "-01-%02i:%02i", tmp_data.hours, tmp_data.minutes); 802821a:	f89d 2011 	ldrb.w	r2, [sp, #17] 802821e:	f89d 3010 	ldrb.w	r3, [sp, #16] 8028222:	4908      	ldr	r1, [pc, #32]	; (8028244 <SetDateStr+0x6c>) 8028224:	4668      	mov	r0, sp 8028226:	f7ff fabb 	bl	80277a0 <tfp_sprintf>	len = strlen(str_time); 802822a:	4668      	mov	r0, sp 802822c:	f7f9 fe20 	bl	8021e70 <strlen>	strncat(str_data, str_time, len); 8028230:	4669      	mov	r1, sp 8028232:	b2c2      	uxtb	r2, r0 8028234:	a807      	add	r0, sp, #28 8028236:	f7f9 fe4b 	bl	8021ed0 <strncat>	TM_RTC_SetDateTimeString(&str_data); 802823a:	a807      	add	r0, sp, #28 802823c:	f7fe f80a 	bl	8026254 <TM_RTC_SetDateTimeString>} 8028240:	b00c      	add	sp, #48	; 0x30 8028242:	bd10      	pop	{r4, pc} 8028244:	08036d76 	.word	0x08036d7608028248 <SetTimeStr>:/**  * @brief  Время  */void SetTimeStr(char *str){ 8028248:	b510      	push	{r4, lr} 802824a:	b090      	sub	sp, #64	; 0x40 802824c:	4604      	mov	r4, r0	TM_RTC_t tmp_data;	char str_data[18];	char str_date[14];	uint8_t len;	memset(str_data, 0, 18); 802824e:	2100      	movs	r1, #0 8028250:	2212      	movs	r2, #18 8028252:	a80b      	add	r0, sp, #44	; 0x2c 8028254:	f7f9 fc34 	bl	8021ac0 <memset>	memset(str_date, 0, 14); 8028258:	220e      	movs	r2, #14 802825a:	2100      	movs	r1, #0 802825c:	a803      	add	r0, sp, #12 802825e:	f7f9 fc2f 	bl	8021ac0 <memset>	TM_RTC_GetDateTime(&tmp_data, TM_RTC_Format_BIN); 8028262:	a807      	add	r0, sp, #28 8028264:	2100      	movs	r1, #0 8028266:	f7fe f90f 	bl	8026488 <TM_RTC_GetDateTime>	sprintf(str_date, "%02i-%02i-%02i-01-", tmp_data.date, tmp_data.month, tmp_data.year); 802826a:	f89d 1025 	ldrb.w	r1, [sp, #37]	; 0x25 802826e:	f89d 3024 	ldrb.w	r3, [sp, #36]	; 0x24 8028272:	f89d 2023 	ldrb.w	r2, [sp, #35]	; 0x23 8028276:	9100      	str	r1, [sp, #0] 8028278:	a803      	add	r0, sp, #12 802827a:	490a      	ldr	r1, [pc, #40]	; (80282a4 <SetTimeStr+0x5c>) 802827c:	f7ff fa90 	bl	80277a0 <tfp_sprintf>	len = strlen(str_date); 8028280:	a803      	add	r0, sp, #12 8028282:	f7f9 fdf5 	bl	8021e70 <strlen>	strncat(str_data, str_date, len); 8028286:	a903      	add	r1, sp, #12 8028288:	b2c2      	uxtb	r2, r0 802828a:	a80b      	add	r0, sp, #44	; 0x2c 802828c:	f7f9 fe20 	bl	8021ed0 <strncat>	strncat(str_data, str, 5); 8028290:	a80b      	add	r0, sp, #44	; 0x2c 8028292:	4621      	mov	r1, r4 8028294:	2205      	movs	r2, #5 8028296:	f7f9 fe1b 	bl	8021ed0 <strncat>	TM_RTC_SetDateTimeString(&str_data); 802829a:	a80b      	add	r0, sp, #44	; 0x2c 802829c:	f7fd ffda 	bl	8026254 <TM_RTC_SetDateTimeString>} 80282a0:	b010      	add	sp, #64	; 0x40 80282a2:	bd10      	pop	{r4, pc} 80282a4:	08036d84 	.word	0x08036d84080282a8 <SetSntpStateStr>:/**  * @brief  Состояние SNTP  */void SetSntpStateStr(char *str){ 80282a8:	b538      	push	{r3, r4, r5, lr}	bool old_sntpEnable = sSettings.sSNTP.sntpEnable; 80282aa:	4c0d      	ldr	r4, [pc, #52]	; (80282e0 <SetSntpStateStr+0x38>)  if (strncmp(str, "1", 1) == 0){ 80282ac:	490d      	ldr	r1, [pc, #52]	; (80282e4 <SetSntpStateStr+0x3c>)/**  * @brief  Состояние SNTP  */void SetSntpStateStr(char *str){	bool old_sntpEnable = sSettings.sSNTP.sntpEnable; 80282ae:	f894 5344 	ldrb.w	r5, [r4, #836]	; 0x344  if (strncmp(str, "1", 1) == 0){ 80282b2:	2201      	movs	r2, #1 80282b4:	f7f9 fe3e 	bl	8021f34 <strncmp> 80282b8:	b948      	cbnz	r0, 80282ce <SetSntpStateStr+0x26>	sSettings.sSNTP.sntpEnable = true; 80282ba:	2001      	movs	r0, #1 80282bc:	f884 0344 	strb.w	r0, [r4, #836]	; 0x344	if(old_sntpEnable != sSettings.sSNTP.sntpEnable){ 80282c0:	b965      	cbnz	r5, 80282dc <SetSntpStateStr+0x34>		SNTP_Enable(sSettings.sSNTP.sntpEnable); 80282c2:	f00d fccd 	bl	8035c60 <SNTP_Enable>  }  else{	sSettings.sSNTP.sntpEnable = false;	SNTP_Enable(sSettings.sSNTP.sntpEnable);  }} 80282c6:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}	bool old_sntpEnable = sSettings.sSNTP.sntpEnable;  if (strncmp(str, "1", 1) == 0){	sSettings.sSNTP.sntpEnable = true;	if(old_sntpEnable != sSettings.sSNTP.sntpEnable){		SNTP_Enable(sSettings.sSNTP.sntpEnable);		SNTP_Poll(); 80282ca:	f00d bd0b 	b.w	8035ce4 <SNTP_Poll>	}  }  else{	sSettings.sSNTP.sntpEnable = false; 80282ce:	2000      	movs	r0, #0 80282d0:	f884 0344 	strb.w	r0, [r4, #836]	; 0x344	SNTP_Enable(sSettings.sSNTP.sntpEnable);  }} 80282d4:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		SNTP_Poll();	}  }  else{	sSettings.sSNTP.sntpEnable = false;	SNTP_Enable(sSettings.sSNTP.sntpEnable); 80282d8:	f00d bcc2 	b.w	8035c60 <SNTP_Enable> 80282dc:	bd38      	pop	{r3, r4, r5, pc} 80282de:	bf00      	nop 80282e0:	2000e984 	.word	0x2000e984 80282e4:	08036e2f 	.word	0x08036e2f080282e8 <SetSntpServerIpStr>:/**  * @brief  IP адрес SNTP сервера  */void SetSntpServerIpStr(char *str){ 80282e8:	4601      	mov	r1, r0	strcpy(sSettings.sSNTP.ip, str); 80282ea:	4801      	ldr	r0, [pc, #4]	; (80282f0 <SetSntpServerIpStr+0x8>) 80282ec:	f7f9 bd62 	b.w	8021db4 <strcpy> 80282f0:	2000ecc9 	.word	0x2000ecc9080282f4 <SetSntpTimeZoneStr>:/**  * @brief  Часовой пояс контроллера  */void SetSntpTimeZoneStr(char *str){ 80282f4:	b570      	push	{r4, r5, r6, lr}  float newUtc;  newUtc = atof(str); 80282f6:	f7f9 fabf 	bl	8021878 <atof> 80282fa:	f7f8 fc23 	bl	8020b44 <__aeabi_d2f>  if (sSettings.sSNTP.timeZone > 0) 80282fe:	4b27      	ldr	r3, [pc, #156]	; (802839c <SetSntpTimeZoneStr+0xa8>) 8028300:	f8d3 4374 	ldr.w	r4, [r3, #884]	; 0x374  */void SetSntpTimeZoneStr(char *str){  float newUtc;  newUtc = atof(str); 8028304:	4606      	mov	r6, r0  if (sSettings.sSNTP.timeZone > 0) 8028306:	2100      	movs	r1, #0 8028308:	4620      	mov	r0, r4 802830a:	f7f8 fde5 	bl	8020ed8 <__aeabi_fcmpgt> 802830e:	b100      	cbz	r0, 8028312 <SetSntpTimeZoneStr+0x1e> 8028310:	e033      	b.n	802837a <SetSntpTimeZoneStr+0x86>	{	  TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);	}  }  else if (sSettings.sSNTP.timeZone < 0) 8028312:	4620      	mov	r0, r4 8028314:	2100      	movs	r1, #0 8028316:	f7f8 fdc1 	bl	8020e9c <__aeabi_fcmplt> 802831a:	2800      	cmp	r0, #0 802831c:	d032      	beq.n	8028384 <SetSntpTimeZoneStr+0x90>  {    if (newUtc >= 0) 802831e:	4630      	mov	r0, r6 8028320:	2100      	movs	r1, #0 8028322:	f7f8 fdcf 	bl	8020ec4 <__aeabi_fcmpge> 8028326:	b170      	cbz	r0, 8028346 <SetSntpTimeZoneStr+0x52>	{	  TM_RTC_Correction(newUtc + fabs(sSettings.sSNTP.timeZone)); 8028328:	4620      	mov	r0, r4 802832a:	f7f8 f8f5 	bl	8020518 <__aeabi_f2d> 802832e:	f7fc ffa9 	bl	8025284 <fabs> 8028332:	4604      	mov	r4, r0 8028334:	460d      	mov	r5, r1 8028336:	4630      	mov	r0, r6 8028338:	f7f8 f8ee 	bl	8020518 <__aeabi_f2d> 802833c:	4622      	mov	r2, r4 802833e:	462b      	mov	r3, r5 8028340:	f7f7 ff8c 	bl	802025c <__adddf3> 8028344:	e016      	b.n	8028374 <SetSntpTimeZoneStr+0x80>	}	else	{	  if (newUtc >= sSettings.sSNTP.timeZone) 8028346:	4630      	mov	r0, r6 8028348:	4621      	mov	r1, r4 802834a:	f7f8 fdbb 	bl	8020ec4 <__aeabi_fcmpge> 802834e:	b1a0      	cbz	r0, 802837a <SetSntpTimeZoneStr+0x86>	    TM_RTC_Correction(fabs(sSettings.sSNTP.timeZone) - fabs(newUtc)); 8028350:	4620      	mov	r0, r4 8028352:	f7f8 f8e1 	bl	8020518 <__aeabi_f2d> 8028356:	f7fc ff95 	bl	8025284 <fabs> 802835a:	4604      	mov	r4, r0 802835c:	4630      	mov	r0, r6 802835e:	460d      	mov	r5, r1 8028360:	f7f8 f8da 	bl	8020518 <__aeabi_f2d> 8028364:	f7fc ff8e 	bl	8025284 <fabs> 8028368:	4602      	mov	r2, r0 802836a:	460b      	mov	r3, r1 802836c:	4620      	mov	r0, r4 802836e:	4629      	mov	r1, r5 8028370:	f7f7 ff72 	bl	8020258 <__aeabi_dsub> 8028374:	f7f8 fbe6 	bl	8020b44 <__aeabi_d2f> 8028378:	e00a      	b.n	8028390 <SetSntpTimeZoneStr+0x9c>	  else		TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone); 802837a:	4630      	mov	r0, r6 802837c:	4621      	mov	r1, r4 802837e:	f7f8 fc35 	bl	8020bec <__aeabi_fsub> 8028382:	e005      	b.n	8028390 <SetSntpTimeZoneStr+0x9c>	}  }  else if (sSettings.sSNTP.timeZone == 0) 8028384:	4620      	mov	r0, r4 8028386:	2100      	movs	r1, #0 8028388:	f7f8 fd7e 	bl	8020e88 <__aeabi_fcmpeq> 802838c:	b110      	cbz	r0, 8028394 <SetSntpTimeZoneStr+0xa0>  {    TM_RTC_Correction(newUtc); 802838e:	4630      	mov	r0, r6 8028390:	f7fe f976 	bl	8026680 <TM_RTC_Correction>  }  sSettings.sSNTP.timeZone = newUtc; // atof(str); 8028394:	4b01      	ldr	r3, [pc, #4]	; (802839c <SetSntpTimeZoneStr+0xa8>) 8028396:	f8c3 6374 	str.w	r6, [r3, #884]	; 0x374 802839a:	bd70      	pop	{r4, r5, r6, pc} 802839c:	2000e984 	.word	0x2000e984080283a0 <SetDINTypeActStr>:/**  * @brief  Тип действий при срабатывание сухих контактов  */void SetDINTypeActStr(char *str, uint8_t num){ 80283a0:	b510      	push	{r4, lr} 80283a2:	460c      	mov	r4, r1	sSettings.sInOuts.din_type_act[num] = atoi(str); 80283a4:	f7f9 fa6c 	bl	8021880 <atoi> 80283a8:	4902      	ldr	r1, [pc, #8]	; (80283b4 <SetDINTypeActStr+0x14>) 80283aa:	1909      	adds	r1, r1, r4 80283ac:	f881 037a 	strb.w	r0, [r1, #890]	; 0x37a 80283b0:	bd10      	pop	{r4, pc} 80283b2:	bf00      	nop 80283b4:	2000e984 	.word	0x2000e984080283b8 <SetROStr>:/**  * @brief  */void SetROStr(char *str, uint8_t num){ 80283b8:	b510      	push	{r4, lr} 80283ba:	460c      	mov	r4, r1	set_state_douts((DOUT1+num), atoi(str)); 80283bc:	f7f9 fa60 	bl	8021880 <atoi> 80283c0:	1de3      	adds	r3, r4, #7 80283c2:	b2c1      	uxtb	r1, r0 80283c4:	b2d8      	uxtb	r0, r3} 80283c6:	e8bd 4010 	ldmia.w	sp!, {r4, lr}/**  * @brief  */void SetROStr(char *str, uint8_t num){	set_state_douts((DOUT1+num), atoi(str)); 80283ca:	f000 baff 	b.w	80289cc <set_state_douts>080283ce <SetROInt>:/**  * @brief  */void SetROInt(uint8_t val, uint8_t num){ 80283ce:	4603      	mov	r3, r0	set_state_douts((DOUT1+num), val); 80283d0:	3107      	adds	r1, #7 80283d2:	b2c8      	uxtb	r0, r1 80283d4:	4619      	mov	r1, r3 80283d6:	f000 baf9 	b.w	80289cc <set_state_douts> 80283da:	0000      	movs	r0, r0080283dc <SetROTypeActStr>:/**  * @brief  Источник срабатывания реле  */void SetROTypeActStr(char *str, uint8_t num){ 80283dc:	b510      	push	{r4, lr} 80283de:	460c      	mov	r4, r1	sSettings.sInOuts.ro_type_source[num] = atoi(str); 80283e0:	f7f9 fa4e 	bl	8021880 <atoi> 80283e4:	4b04      	ldr	r3, [pc, #16]	; (80283f8 <SetROTypeActStr+0x1c>) 80283e6:	191b      	adds	r3, r3, r4	SetROInt(0, num); 80283e8:	4621      	mov	r1, r4/**  * @brief  Источник срабатывания реле  */void SetROTypeActStr(char *str, uint8_t num){	sSettings.sInOuts.ro_type_source[num] = atoi(str); 80283ea:	f883 0378 	strb.w	r0, [r3, #888]	; 0x378	SetROInt(0, num); 80283ee:	2000      	movs	r0, #0} 80283f0:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  * @brief  Источник срабатывания реле  */void SetROTypeActStr(char *str, uint8_t num){	sSettings.sInOuts.ro_type_source[num] = atoi(str);	SetROInt(0, num); 80283f4:	f7ff bfeb 	b.w	80283ce <SetROInt> 80283f8:	2000e984 	.word	0x2000e984080283fc <SETTINGS_SetBootParamsDef>:/**  * @brief  Установить параметры обновления ПО по умолчанию  */void SETTINGS_SetBootParamsDef(void){  sSettings.bootParams.loadMode = 1; 80283fc:	4b02      	ldr	r3, [pc, #8]	; (8028408 <SETTINGS_SetBootParamsDef+0xc>) 80283fe:	2201      	movs	r2, #1 8028400:	701a      	strb	r2, [r3, #0]  sSettings.bootParams.bootTry = 0; 8028402:	2200      	movs	r2, #0 8028404:	705a      	strb	r2, [r3, #1] 8028406:	4770      	bx	lr 8028408:	2000e984 	.word	0x2000e9840802840c <SETTINGS_SetWebParamsDef>:/**  * @brief  Установить параметры сетевого подключения по умолчанию  */void SETTINGS_SetWebParamsDef(void){ 802840c:	b510      	push	{r4, lr}	  strcpy(sSettings.sWebParams.ip, "192.168.1.2"); 802840e:	4c09      	ldr	r4, [pc, #36]	; (8028434 <SETTINGS_SetWebParamsDef+0x28>) 8028410:	4909      	ldr	r1, [pc, #36]	; (8028438 <SETTINGS_SetWebParamsDef+0x2c>) 8028412:	4620      	mov	r0, r4 8028414:	f7f9 fcce 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebParams.gate, "192.168.1.1"); 8028418:	4908      	ldr	r1, [pc, #32]	; (802843c <SETTINGS_SetWebParamsDef+0x30>) 802841a:	f104 0010 	add.w	r0, r4, #16 802841e:	f7f9 fcc9 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebParams.mask, "255.255.255.0"); 8028422:	f104 0020 	add.w	r0, r4, #32 8028426:	4906      	ldr	r1, [pc, #24]	; (8028440 <SETTINGS_SetWebParamsDef+0x34>) 8028428:	f7f9 fcc4 	bl	8021db4 <strcpy>	  sSettings.sWebParams.dhcpEnable = 1; 802842c:	2201      	movs	r2, #1 802842e:	f884 2030 	strb.w	r2, [r4, #48]	; 0x30 8028432:	bd10      	pop	{r4, pc} 8028434:	2000e986 	.word	0x2000e986 8028438:	08036d97 	.word	0x08036d97 802843c:	08036da3 	.word	0x08036da3 8028440:	08036daf 	.word	0x08036daf08028444 <SETTINGS_SetTempWebParamsDef>:/**  * @brief  Установить временные параметры сетевого подключения по умолчанию  */void SETTINGS_SetTempWebParamsDef(void){ 8028444:	b510      	push	{r4, lr}	  strcpy(sSettings.sWebParams.ip, "192.168.1.2"); 8028446:	4c09      	ldr	r4, [pc, #36]	; (802846c <SETTINGS_SetTempWebParamsDef+0x28>) 8028448:	4909      	ldr	r1, [pc, #36]	; (8028470 <SETTINGS_SetTempWebParamsDef+0x2c>) 802844a:	4620      	mov	r0, r4 802844c:	f7f9 fcb2 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebParams.gate, "192.168.1.1"); 8028450:	4908      	ldr	r1, [pc, #32]	; (8028474 <SETTINGS_SetTempWebParamsDef+0x30>) 8028452:	f104 0010 	add.w	r0, r4, #16 8028456:	f7f9 fcad 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebParams.mask, "255.255.255.0"); 802845a:	f104 0020 	add.w	r0, r4, #32 802845e:	4906      	ldr	r1, [pc, #24]	; (8028478 <SETTINGS_SetTempWebParamsDef+0x34>) 8028460:	f7f9 fca8 	bl	8021db4 <strcpy>	  sSettings.sWebParams.dhcpEnable = 1; 8028464:	2201      	movs	r2, #1 8028466:	f884 2030 	strb.w	r2, [r4, #48]	; 0x30 802846a:	bd10      	pop	{r4, pc} 802846c:	2000e986 	.word	0x2000e986 8028470:	08036d97 	.word	0x08036d97 8028474:	08036da3 	.word	0x08036da3 8028478:	08036daf 	.word	0x08036daf0802847c <SETTINGS_SetSnmpDef>:/**  * @brief  Установить параметры SNMP по умолчанию  */void SETTINGS_SetSnmpDef(void){ 802847c:	b570      	push	{r4, r5, r6, lr}  strcpy(sSettings.sSnmp.sysDescr, ""); 802847e:	4c1e      	ldr	r4, [pc, #120]	; (80284f8 <SETTINGS_SetSnmpDef+0x7c>) 8028480:	4d1e      	ldr	r5, [pc, #120]	; (80284fc <SETTINGS_SetSnmpDef+0x80>)  strcpy(sSettings.sSnmp.readCommunity, "public"); 8028482:	4e1f      	ldr	r6, [pc, #124]	; (8028500 <SETTINGS_SetSnmpDef+0x84>)/**  * @brief  Установить параметры SNMP по умолчанию  */void SETTINGS_SetSnmpDef(void){  strcpy(sSettings.sSnmp.sysDescr, ""); 8028484:	4629      	mov	r1, r5 8028486:	4620      	mov	r0, r4 8028488:	f7f9 fc94 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.readCommunity, "public"); 802848c:	4631      	mov	r1, r6 802848e:	f104 00a0 	add.w	r0, r4, #160	; 0xa0 8028492:	f7f9 fc8f 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.writeCommunity, "public"); 8028496:	4631      	mov	r1, r6 8028498:	f104 00b4 	add.w	r0, r4, #180	; 0xb4 802849c:	f7f9 fc8a 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.sysContact, ""); 80284a0:	4629      	mov	r1, r5 80284a2:	f104 00c8 	add.w	r0, r4, #200	; 0xc8 80284a6:	f7f9 fc85 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.sysName, "BT-6701"); 80284aa:	f104 00fa 	add.w	r0, r4, #250	; 0xfa 80284ae:	4915      	ldr	r1, [pc, #84]	; (8028504 <SETTINGS_SetSnmpDef+0x88>) 80284b0:	f7f9 fc80 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.sysLocation, ""); 80284b4:	4629      	mov	r1, r5  strcpy(sSettings.sSnmp.managerIP, "0.0.0.0"); 80284b6:	4d14      	ldr	r5, [pc, #80]	; (8028508 <SETTINGS_SetSnmpDef+0x8c>)  strcpy(sSettings.sSnmp.sysDescr, "");  strcpy(sSettings.sSnmp.readCommunity, "public");  strcpy(sSettings.sSnmp.writeCommunity, "public");  strcpy(sSettings.sSnmp.sysContact, "");  strcpy(sSettings.sSnmp.sysName, "BT-6701");  strcpy(sSettings.sSnmp.sysLocation, ""); 80284b8:	f504 7087 	add.w	r0, r4, #270	; 0x10e 80284bc:	f7f9 fc7a 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.managerIP, "0.0.0.0"); 80284c0:	4629      	mov	r1, r5 80284c2:	f504 70be 	add.w	r0, r4, #380	; 0x17c 80284c6:	f7f9 fc75 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.managerIP2, "0.0.0.0"); 80284ca:	4629      	mov	r1, r5 80284cc:	f504 70c8 	add.w	r0, r4, #400	; 0x190 80284d0:	f7f9 fc70 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.managerIP3, "0.0.0.0"); 80284d4:	4629      	mov	r1, r5 80284d6:	f504 70d2 	add.w	r0, r4, #420	; 0x1a4 80284da:	f7f9 fc6b 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.managerIP4, "0.0.0.0"); 80284de:	4629      	mov	r1, r5 80284e0:	f504 70dc 	add.w	r0, r4, #440	; 0x1b8 80284e4:	f7f9 fc66 	bl	8021db4 <strcpy>  strcpy(sSettings.sSnmp.managerIP5, "0.0.0.0"); 80284e8:	f504 70e6 	add.w	r0, r4, #460	; 0x1cc 80284ec:	4629      	mov	r1, r5} 80284ee:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  strcpy(sSettings.sSnmp.sysLocation, "");  strcpy(sSettings.sSnmp.managerIP, "0.0.0.0");  strcpy(sSettings.sSnmp.managerIP2, "0.0.0.0");  strcpy(sSettings.sSnmp.managerIP3, "0.0.0.0");  strcpy(sSettings.sSnmp.managerIP4, "0.0.0.0");  strcpy(sSettings.sSnmp.managerIP5, "0.0.0.0"); 80284f2:	f7f9 bc5f 	b.w	8021db4 <strcpy> 80284f6:	bf00      	nop 80284f8:	2000e9e8 	.word	0x2000e9e8 80284fc:	0803b6a9 	.word	0x0803b6a9 8028500:	08036dbd 	.word	0x08036dbd 8028504:	08036dc4 	.word	0x08036dc4 8028508:	08036dcc 	.word	0x08036dcc0802850c <SETTINGS_SetInfoDef>:/**  * @brief  Установить Информацию об устройстве по умолчанию  */void SETTINGS_SetInfoDef(void){ 802850c:	b510      	push	{r4, lr}  strcpy(sSettings.sInfo.productionData, "08.07.2016");  802850e:	4c0b      	ldr	r4, [pc, #44]	; (802853c <SETTINGS_SetInfoDef+0x30>) 8028510:	490b      	ldr	r1, [pc, #44]	; (8028540 <SETTINGS_SetInfoDef+0x34>) 8028512:	4620      	mov	r0, r4 8028514:	f7f9 fc4e 	bl	8021db4 <strcpy>  //strcpy(sSettings.sInfo.mac, "EC-4C-4D-00-90-01");   strcpy(sSettings.sInfo.mac, "EC-4C-4D-00-00-0A"); 8028518:	f104 0028 	add.w	r0, r4, #40	; 0x28 802851c:	4909      	ldr	r1, [pc, #36]	; (8028544 <SETTINGS_SetInfoDef+0x38>) 802851e:	f7f9 fc49 	bl	8021db4 <strcpy>  strcpy(sSettings.sInfo.serialNumber, "KN-03-00001");  8028522:	f104 003a 	add.w	r0, r4, #58	; 0x3a 8028526:	4908      	ldr	r1, [pc, #32]	; (8028548 <SETTINGS_SetInfoDef+0x3c>) 8028528:	f7f9 fc44 	bl	8021db4 <strcpy>  strcpy(sSettings.sInfo.comments, "");  802852c:	4907      	ldr	r1, [pc, #28]	; (802854c <SETTINGS_SetInfoDef+0x40>) 802852e:	f104 004a 	add.w	r0, r4, #74	; 0x4a}   8028532:	e8bd 4010 	ldmia.w	sp!, {r4, lr}{  strcpy(sSettings.sInfo.productionData, "08.07.2016");   //strcpy(sSettings.sInfo.mac, "EC-4C-4D-00-90-01");   strcpy(sSettings.sInfo.mac, "EC-4C-4D-00-00-0A");  strcpy(sSettings.sInfo.serialNumber, "KN-03-00001");   strcpy(sSettings.sInfo.comments, "");  8028536:	f7f9 bc3d 	b.w	8021db4 <strcpy> 802853a:	bf00      	nop 802853c:	2000ebc8 	.word	0x2000ebc8 8028540:	08036dd4 	.word	0x08036dd4 8028544:	08036ddf 	.word	0x08036ddf 8028548:	08036df1 	.word	0x08036df1 802854c:	0803b6a9 	.word	0x0803b6a908028550 <SETTINGS_SetServiceDef>:/**  * @brief  Установить значение сервисных настроек по умолчанию  */void SETTINGS_SetServiceDef(void){ 8028550:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8028554:	4d13      	ldr	r5, [pc, #76]	; (80285a4 <SETTINGS_SetServiceDef+0x54>) 8028556:	2400      	movs	r4, #0}/**  * @brief  Установить значение сервисных настроек по умолчанию  */void SETTINGS_SetServiceDef(void) 8028558:	2717      	movs	r7, #23            strcpy(sSettings.sAuth[user_id].login, "admin");            strcpy(sSettings.sAuth[user_id].password, "12345");            break;        case 1:        default:        	sSettings.sAuth[user_id].level = USER; 802855a:	f04f 0801 	mov.w	r8, #1{    uint8_t user_id;    for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {        switch (user_id) { 802855e:	f014 03ff 	ands.w	r3, r4, #255	; 0xff 8028562:	d108      	bne.n	8028576 <SETTINGS_SetServiceDef+0x26>        /* First users in the system is always ADMIN.         * Others are USER */        case 0:            sSettings.sAuth[user_id].level = ADMIN;            strcpy(sSettings.sAuth[user_id].login, "admin"); 8028564:	4910      	ldr	r1, [pc, #64]	; (80285a8 <SETTINGS_SetServiceDef+0x58>) 8028566:	4811      	ldr	r0, [pc, #68]	; (80285ac <SETTINGS_SetServiceDef+0x5c>)    for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {        switch (user_id) {        /* First users in the system is always ADMIN.         * Others are USER */        case 0:            sSettings.sAuth[user_id].level = ADMIN; 8028568:	f885 3314 	strb.w	r3, [r5, #788]	; 0x314            strcpy(sSettings.sAuth[user_id].login, "admin"); 802856c:	f7f9 fc22 	bl	8021db4 <strcpy>            strcpy(sSettings.sAuth[user_id].password, "12345"); 8028570:	480f      	ldr	r0, [pc, #60]	; (80285b0 <SETTINGS_SetServiceDef+0x60>) 8028572:	4910      	ldr	r1, [pc, #64]	; (80285b4 <SETTINGS_SetServiceDef+0x64>) 8028574:	e00f      	b.n	8028596 <SETTINGS_SetServiceDef+0x46>}/**  * @brief  Установить значение сервисных настроек по умолчанию  */void SETTINGS_SetServiceDef(void) 8028576:	fb07 f604 	mul.w	r6, r7, r4 802857a:	19ab      	adds	r3, r5, r6            strcpy(sSettings.sAuth[user_id].password, "12345");            break;        case 1:        default:        	sSettings.sAuth[user_id].level = USER;            strcpy(sSettings.sAuth[user_id].login, "user"); 802857c:	f506 7044 	add.w	r0, r6, #784	; 0x310 8028580:	1828      	adds	r0, r5, r0 8028582:	490d      	ldr	r1, [pc, #52]	; (80285b8 <SETTINGS_SetServiceDef+0x68>)            strcpy(sSettings.sAuth[user_id].login, "admin");            strcpy(sSettings.sAuth[user_id].password, "12345");            break;        case 1:        default:        	sSettings.sAuth[user_id].level = USER; 8028584:	f883 8314 	strb.w	r8, [r3, #788]	; 0x314            strcpy(sSettings.sAuth[user_id].login, "user"); 8028588:	3005      	adds	r0, #5 802858a:	f7f9 fc13 	bl	8021db4 <strcpy>            strcpy(sSettings.sAuth[user_id].password, "1234"); 802858e:	19a8      	adds	r0, r5, r6 8028590:	490a      	ldr	r1, [pc, #40]	; (80285bc <SETTINGS_SetServiceDef+0x6c>) 8028592:	f500 7048 	add.w	r0, r0, #800	; 0x320 8028596:	3401      	adds	r4, #1 8028598:	f7f9 fc0c 	bl	8021db4 <strcpy>void SETTINGS_SetServiceDef(void){    uint8_t user_id;    for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) { 802859c:	2c02      	cmp	r4, #2 802859e:	d1de      	bne.n	802855e <SETTINGS_SetServiceDef+0xe>            strcpy(sSettings.sAuth[user_id].login, "user");            strcpy(sSettings.sAuth[user_id].password, "1234");            break;        }    }} 80285a0:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 80285a4:	2000e984 	.word	0x2000e984 80285a8:	08036dfd 	.word	0x08036dfd 80285ac:	2000ec99 	.word	0x2000ec99 80285b0:	2000eca4 	.word	0x2000eca4 80285b4:	08036e03 	.word	0x08036e03 80285b8:	08036e09 	.word	0x08036e09 80285bc:	08036e0e 	.word	0x08036e0e080285c0 <SETTINGS_SetSntpDef>:/**  * @brief  Установить параметры SNTP по умолчанию  */void SETTINGS_SetSntpDef(void){ 80285c0:	b510      	push	{r4, lr}  sSettings.sSNTP.sntpEnable = true; 80285c2:	4c08      	ldr	r4, [pc, #32]	; (80285e4 <SETTINGS_SetSntpDef+0x24>)  strcpy(sSettings.sSNTP.ip, "88.147.254.235"); 80285c4:	4908      	ldr	r1, [pc, #32]	; (80285e8 <SETTINGS_SetSntpDef+0x28>) 80285c6:	4809      	ldr	r0, [pc, #36]	; (80285ec <SETTINGS_SetSntpDef+0x2c>)/**  * @brief  Установить параметры SNTP по умолчанию  */void SETTINGS_SetSntpDef(void){  sSettings.sSNTP.sntpEnable = true; 80285c8:	2301      	movs	r3, #1 80285ca:	f884 3344 	strb.w	r3, [r4, #836]	; 0x344  strcpy(sSettings.sSNTP.ip, "88.147.254.235"); 80285ce:	f7f9 fbf1 	bl	8021db4 <strcpy>  sSettings.sSNTP.timeZone = 3.0; 80285d2:	4b07      	ldr	r3, [pc, #28]	; (80285f0 <SETTINGS_SetSntpDef+0x30>)  strcpy(sSettings.sSNTP.data, "none"); 80285d4:	4807      	ldr	r0, [pc, #28]	; (80285f4 <SETTINGS_SetSntpDef+0x34>) 80285d6:	4908      	ldr	r1, [pc, #32]	; (80285f8 <SETTINGS_SetSntpDef+0x38>)  */void SETTINGS_SetSntpDef(void){  sSettings.sSNTP.sntpEnable = true;  strcpy(sSettings.sSNTP.ip, "88.147.254.235");  sSettings.sSNTP.timeZone = 3.0; 80285d8:	f8c4 3374 	str.w	r3, [r4, #884]	; 0x374  strcpy(sSettings.sSNTP.data, "none");} 80285dc:	e8bd 4010 	ldmia.w	sp!, {r4, lr}void SETTINGS_SetSntpDef(void){  sSettings.sSNTP.sntpEnable = true;  strcpy(sSettings.sSNTP.ip, "88.147.254.235");  sSettings.sSNTP.timeZone = 3.0;  strcpy(sSettings.sSNTP.data, "none"); 80285e0:	f7f9 bbe8 	b.w	8021db4 <strcpy> 80285e4:	2000e984 	.word	0x2000e984 80285e8:	08036e13 	.word	0x08036e13 80285ec:	2000ecc9 	.word	0x2000ecc9 80285f0:	40400000 	.word	0x40400000 80285f4:	2000ecd9 	.word	0x2000ecd9 80285f8:	08036e22 	.word	0x08036e22080285fc <SETTINGS_SetINOUTSDef>:/**  * @brief  Установить параметры настроек сухих контактов / реле по умолчанию  */void SETTINGS_SetINOUTSDef(void){	sSettings.sInOuts.ro_type_source[0] = CRITICAL; 80285fc:	4b05      	ldr	r3, [pc, #20]	; (8028614 <SETTINGS_SetINOUTSDef+0x18>) 80285fe:	2201      	movs	r2, #1 8028600:	f883 2378 	strb.w	r2, [r3, #888]	; 0x378	sSettings.sInOuts.ro_type_source[1] = SNMP_SET; 8028604:	2203      	movs	r2, #3 8028606:	f883 2379 	strb.w	r2, [r3, #889]	; 0x379	sSettings.sInOuts.din_type_act[0] = SNMP_TRAP; 802860a:	2202      	movs	r2, #2 802860c:	f883 237a 	strb.w	r2, [r3, #890]	; 0x37a 8028610:	4770      	bx	lr 8028612:	bf00      	nop 8028614:	2000e984 	.word	0x2000e98408028618 <SETTINGS_SetRADIUSDef>:/**  * @brief  Установить параметры RADIUS по умолчанию  */void SETTINGS_SetRADIUSDef(void){ 8028618:	b510      	push	{r4, lr}  sSettings.sRADIUS.RDSEnable = true; 802861a:	4c0b      	ldr	r4, [pc, #44]	; (8028648 <SETTINGS_SetRADIUSDef+0x30>)  strcpy(sSettings.sRADIUS.ServerIP, "127.0.0.1"); 802861c:	490b      	ldr	r1, [pc, #44]	; (802864c <SETTINGS_SetRADIUSDef+0x34>)/**  * @brief  Установить параметры RADIUS по умолчанию  */void SETTINGS_SetRADIUSDef(void){  sSettings.sRADIUS.RDSEnable = true; 802861e:	2301      	movs	r3, #1  strcpy(sSettings.sRADIUS.ServerIP, "127.0.0.1"); 8028620:	f504 705f 	add.w	r0, r4, #892	; 0x37c/**  * @brief  Установить параметры RADIUS по умолчанию  */void SETTINGS_SetRADIUSDef(void){  sSettings.sRADIUS.RDSEnable = true; 8028624:	f884 339d 	strb.w	r3, [r4, #925]	; 0x39d  strcpy(sSettings.sRADIUS.ServerIP, "127.0.0.1"); 8028628:	f7f9 fbc4 	bl	8021db4 <strcpy>  sSettings.sRADIUS.port = 1227; 802862c:	f240 43cb 	movw	r3, #1227	; 0x4cb  sSettings.sRADIUS.key_access = 123;  strcpy(sSettings.sRADIUS.rds_password, "12345"); 8028630:	4907      	ldr	r1, [pc, #28]	; (8028650 <SETTINGS_SetRADIUSDef+0x38>)  */void SETTINGS_SetRADIUSDef(void){  sSettings.sRADIUS.RDSEnable = true;  strcpy(sSettings.sRADIUS.ServerIP, "127.0.0.1");  sSettings.sRADIUS.port = 1227; 8028632:	f8c4 33a0 	str.w	r3, [r4, #928]	; 0x3a0  sSettings.sRADIUS.key_access = 123;  strcpy(sSettings.sRADIUS.rds_password, "12345"); 8028636:	f504 7063 	add.w	r0, r4, #908	; 0x38cvoid SETTINGS_SetRADIUSDef(void){  sSettings.sRADIUS.RDSEnable = true;  strcpy(sSettings.sRADIUS.ServerIP, "127.0.0.1");  sSettings.sRADIUS.port = 1227;  sSettings.sRADIUS.key_access = 123; 802863a:	237b      	movs	r3, #123	; 0x7b 802863c:	f8c4 33a4 	str.w	r3, [r4, #932]	; 0x3a4  strcpy(sSettings.sRADIUS.rds_password, "12345");} 8028640:	e8bd 4010 	ldmia.w	sp!, {r4, lr}{  sSettings.sRADIUS.RDSEnable = true;  strcpy(sSettings.sRADIUS.ServerIP, "127.0.0.1");  sSettings.sRADIUS.port = 1227;  sSettings.sRADIUS.key_access = 123;  strcpy(sSettings.sRADIUS.rds_password, "12345"); 8028644:	f7f9 bbb6 	b.w	8021db4 <strcpy> 8028648:	2000e984 	.word	0x2000e984 802864c:	08036e27 	.word	0x08036e27 8028650:	08036e03 	.word	0x08036e0308028654 <SETTINGS_ReadFromFlash>:  */void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size){  uint32_t baseAddress = SETTINGS_SECTOR;    for (uint32_t i = 0; i < size; i++) 8028654:	2300      	movs	r3, #0 8028656:	e006      	b.n	8028666 <SETTINGS_ReadFromFlash+0x12>	*data++ = (*(uint32_t*)baseAddress++);; 8028658:	f103 6200 	add.w	r2, r3, #134217728	; 0x8000000 802865c:	f502 4280 	add.w	r2, r2, #16384	; 0x4000 8028660:	6812      	ldr	r2, [r2, #0] 8028662:	54c2      	strb	r2, [r0, r3]  */void SETTINGS_ReadFromFlash(uint8_t *data, uint32_t size){  uint32_t baseAddress = SETTINGS_SECTOR;    for (uint32_t i = 0; i < size; i++) 8028664:	3301      	adds	r3, #1 8028666:	428b      	cmp	r3, r1 8028668:	d1f6      	bne.n	8028658 <SETTINGS_ReadFromFlash+0x4>	*data++ = (*(uint32_t*)baseAddress++);;} 802866a:	4770      	bx	lr0802866c <SETTINGS_EraseFlashSector>:  */void SETTINGS_EraseFlashSector(void){  FLASH_Status status;  if ((status = FLASH_EraseSector(FLASH_Sector_1, VoltageRange_3)) != FLASH_COMPLETE) { 802866c:	2008      	movs	r0, #8 802866e:	2102      	movs	r1, #2 8028670:	f7fc beea 	b.w	8025448 <FLASH_EraseSector>08028674 <SETTINGS_GetCRC>:/**  * @brief    * @retval   */uint32_t SETTINGS_GetCRC(void){ 8028674:	b508      	push	{r3, lr}  CRC_ResetDR(); 8028676:	f7fc fe51 	bl	802531c <CRC_ResetDR>  return CRC_CalcBlockCRC((uint32_t*)&sSettings, sizeof(sSettings)/4); 802867a:	4803      	ldr	r0, [pc, #12]	; (8028688 <SETTINGS_GetCRC+0x14>) 802867c:	21ea      	movs	r1, #234	; 0xea} 802867e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  * @retval   */uint32_t SETTINGS_GetCRC(void){  CRC_ResetDR();  return CRC_CalcBlockCRC((uint32_t*)&sSettings, sizeof(sSettings)/4); 8028682:	f7fc be51 	b.w	8025328 <CRC_CalcBlockCRC> 8028686:	bf00      	nop 8028688:	2000e984 	.word	0x2000e9840802868c <SETTINGS_WriteToFlash>:/**  * @brief    */void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size){ 802868c:	e92d 4ff8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 8028690:	4606      	mov	r6, r0 8028692:	468a      	mov	sl, r1  uint32_t baseAddress = SETTINGS_SECTOR;  uint32_t checkCrc = 0;  uint32_t crc = SETTINGS_GetCRC(); 8028694:	f7ff ffee 	bl	8028674 <SETTINGS_GetCRC>/**  * @brief    */void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size){  uint32_t baseAddress = SETTINGS_SECTOR; 8028698:	4c17      	ldr	r4, [pc, #92]	; (80286f8 <SETTINGS_WriteToFlash+0x6c>)  uint32_t checkCrc = 0;  uint32_t crc = SETTINGS_GetCRC(); 802869a:	4680      	mov	r8, r0 802869c:	2703      	movs	r7, #3  FLASH_Status status;  for (uint8_t i = 0; i < 3; i++)  {		fAlarm = 0;	FLASH_Unlock(); 802869e:	f7fc fe53 	bl	8025348 <FLASH_Unlock> 80286a2:	4635      	mov	r5, r6	SETTINGS_EraseFlashSector(); 80286a4:	f7ff ffe2 	bl	802866c <SETTINGS_EraseFlashSector>}/**  * @brief    */void SETTINGS_WriteToFlash(uint8_t *data, uint32_t size) 80286a8:	eb04 0b0a 	add.w	fp, r4, sl	fAlarm = 0;	FLASH_Unlock();	SETTINGS_EraseFlashSector();	for (uint32_t i = 0; i < size; i++) 80286ac:	e00a      	b.n	80286c4 <SETTINGS_WriteToFlash+0x38>	if ((status = FLASH_ProgramByte(baseAddress++, *data++)) != FLASH_COMPLETE) { 80286ae:	f815 1b01 	ldrb.w	r1, [r5], #1 80286b2:	4620      	mov	r0, r4 80286b4:	f7fc fe8e 	bl	80253d4 <FLASH_ProgramByte> 80286b8:	f104 0901 	add.w	r9, r4, #1 80286bc:	2808      	cmp	r0, #8 80286be:	462e      	mov	r6, r5 80286c0:	464c      	mov	r4, r9 80286c2:	d102      	bne.n	80286ca <SETTINGS_WriteToFlash+0x3e>	fAlarm = 0;	FLASH_Unlock();	SETTINGS_EraseFlashSector();	for (uint32_t i = 0; i < size; i++) 80286c4:	455c      	cmp	r4, fp 80286c6:	462e      	mov	r6, r5 80286c8:	d1f1      	bne.n	80286ae <SETTINGS_WriteToFlash+0x22>	if ((status = FLASH_ProgramByte(baseAddress++, *data++)) != FLASH_COMPLETE) {		 DBG printf("FLASH_ProgramByte error: status = %d\r\n", status);		 break;	 }	if ((status = FLASH_ProgramWord((uint32_t)CRC_ADDRESS, crc)) != FLASH_COMPLETE) { 80286ca:	4641      	mov	r1, r8 80286cc:	480b      	ldr	r0, [pc, #44]	; (80286fc <SETTINGS_WriteToFlash+0x70>) 80286ce:	f7fc fe9d 	bl	802540c <FLASH_ProgramWord>		 DBG printf("FLASH_ProgramWord error: status = %d\r\n", status);	 }  	FLASH_Lock(); 80286d2:	f7fc fe47 	bl	8025364 <FLASH_Lock>	/* Считываем что записали */	SETTINGS_ReadFromFlash((uint8_t*)&sSettings, sizeof(sSettings)); 80286d6:	480a      	ldr	r0, [pc, #40]	; (8028700 <SETTINGS_WriteToFlash+0x74>) 80286d8:	f44f 716a 	mov.w	r1, #936	; 0x3a8 80286dc:	f7ff ffba 	bl	8028654 <SETTINGS_ReadFromFlash>		checkCrc = SETTINGS_GetCRC(); 80286e0:	f7ff ffc8 	bl	8028674 <SETTINGS_GetCRC>	/* Проверяем  CRC того что было записано */	if (checkCrc == crc) 80286e4:	4540      	cmp	r0, r8 80286e6:	d004      	beq.n	80286f2 <SETTINGS_WriteToFlash+0x66> 80286e8:	3f01      	subs	r7, #1  uint32_t checkCrc = 0;  uint32_t crc = SETTINGS_GetCRC();  bool fAlarm = 0;	  FLASH_Status status;  for (uint8_t i = 0; i < 3; i++) 80286ea:	f017 07ff 	ands.w	r7, r7, #255	; 0xff 80286ee:	d1d6      	bne.n	802869e <SETTINGS_WriteToFlash+0x12> 80286f0:	e7fe      	b.n	80286f0 <SETTINGS_WriteToFlash+0x64> 80286f2:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 80286f6:	bf00      	nop 80286f8:	08004000 	.word	0x08004000 80286fc:	08007f9c 	.word	0x08007f9c 8028700:	2000e984 	.word	0x2000e98408028704 <SETTINGS_GetCritSecCRC>:/**  * @brief  * @retval  */uint32_t SETTINGS_GetCritSecCRC(void){ 8028704:	b508      	push	{r3, lr}  CRC_ResetDR(); 8028706:	f7fc fe09 	bl	802531c <CRC_ResetDR>  uint32_t critsec_len = (uint32_t)((uint8_t *)(&sSettings.CritSecCRC) - (uint8_t *)&sSettings) / 4;  return CRC_CalcBlockCRC((uint32_t *)&sSettings, critsec_len); 802870a:	4803      	ldr	r0, [pc, #12]	; (8028718 <SETTINGS_GetCritSecCRC+0x14>) 802870c:	21c4      	movs	r1, #196	; 0xc4} 802870e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  */uint32_t SETTINGS_GetCritSecCRC(void){  CRC_ResetDR();  uint32_t critsec_len = (uint32_t)((uint8_t *)(&sSettings.CritSecCRC) - (uint8_t *)&sSettings) / 4;  return CRC_CalcBlockCRC((uint32_t *)&sSettings, critsec_len); 8028712:	f7fc be09 	b.w	8025328 <CRC_CalcBlockCRC> 8028716:	bf00      	nop 8028718:	2000e984 	.word	0x2000e9840802871c <SETTINGS_Save>:  /**  * @brief  Запись структуры настроек во flesh  */void SETTINGS_Save(void){ 802871c:	b508      	push	{r3, lr}  /* Calc critical section CRC and store to the settings structure */  sSettings.CritSecCRC = SETTINGS_GetCritSecCRC(); 802871e:	f7ff fff1 	bl	8028704 <SETTINGS_GetCritSecCRC> 8028722:	4b05      	ldr	r3, [pc, #20]	; (8028738 <SETTINGS_Save+0x1c>)  SETTINGS_WriteToFlash((uint8_t*)&sSettings, sizeof(sSettings)); 8028724:	f44f 716a 	mov.w	r1, #936	; 0x3a8  * @brief  Запись структуры настроек во flesh  */void SETTINGS_Save(void){  /* Calc critical section CRC and store to the settings structure */  sSettings.CritSecCRC = SETTINGS_GetCritSecCRC(); 8028728:	f8c3 0310 	str.w	r0, [r3, #784]	; 0x310  SETTINGS_WriteToFlash((uint8_t*)&sSettings, sizeof(sSettings)); 802872c:	4618      	mov	r0, r3} 802872e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}void SETTINGS_Save(void){  /* Calc critical section CRC and store to the settings structure */  sSettings.CritSecCRC = SETTINGS_GetCritSecCRC();  SETTINGS_WriteToFlash((uint8_t*)&sSettings, sizeof(sSettings)); 8028732:	f7ff bfab 	b.w	802868c <SETTINGS_WriteToFlash> 8028736:	bf00      	nop 8028738:	2000e984 	.word	0x2000e9840802873c <SETTINGS_SetDefaultDebug>:/**  * @brief  Установка настроек для отладки  */void SETTINGS_SetDefaultDebug(void){ 802873c:	b510      	push	{r4, lr}/**  * @brief  Установить флаги по умолчанию  */void SETTINGS_SetFlagsDef(void){  sSettings.sFlags.netsettingsChanged = false; 802873e:	4c0c      	ldr	r4, [pc, #48]	; (8028770 <SETTINGS_SetDefaultDebug+0x34>)/**  * @brief  Установка настроек для отладки  */void SETTINGS_SetDefaultDebug(void){  SETTINGS_SetWebParamsDef(); 8028740:	f7ff fe64 	bl	802840c <SETTINGS_SetWebParamsDef>  SETTINGS_SetTempWebParamsDef(); 8028744:	f7ff fe7e 	bl	8028444 <SETTINGS_SetTempWebParamsDef>  SETTINGS_SetSnmpDef(); 8028748:	f7ff fe98 	bl	802847c <SETTINGS_SetSnmpDef>  SETTINGS_SetBootParamsDef(); 802874c:	f7ff fe56 	bl	80283fc <SETTINGS_SetBootParamsDef>/**  * @brief  Установить флаги по умолчанию  */void SETTINGS_SetFlagsDef(void){  sSettings.sFlags.netsettingsChanged = false; 8028750:	2300      	movs	r3, #0 8028752:	f884 32fc 	strb.w	r3, [r4, #764]	; 0x2fc  SETTINGS_SetWebParamsDef();  SETTINGS_SetTempWebParamsDef();  SETTINGS_SetSnmpDef();  SETTINGS_SetBootParamsDef();  SETTINGS_SetFlagsDef();  SETTINGS_SetServiceDef(); 8028756:	f7ff fefb 	bl	8028550 <SETTINGS_SetServiceDef>  SETTINGS_SetSntpDef(); 802875a:	f7ff ff31 	bl	80285c0 <SETTINGS_SetSntpDef>  SETTINGS_SetINOUTSDef(); 802875e:	f7ff ff4d 	bl	80285fc <SETTINGS_SetINOUTSDef>  SETTINGS_SetRADIUSDef(); 8028762:	f7ff ff59 	bl	8028618 <SETTINGS_SetRADIUSDef>  //SETTINGS_SetInfoDef();    sSettings.CritSecCRC = SETTINGS_GetCritSecCRC(); 8028766:	f7ff ffcd 	bl	8028704 <SETTINGS_GetCritSecCRC> 802876a:	f8c4 0310 	str.w	r0, [r4, #784]	; 0x310 802876e:	bd10      	pop	{r4, pc} 8028770:	2000e984 	.word	0x2000e98408028774 <SETTINGS_SetAllDefault>:/**  * @brief  Сброс всех настроек в значения по умолчанию  */void SETTINGS_SetAllDefault(void){ 8028774:	b510      	push	{r4, lr}/**  * @brief  Установить флаги по умолчанию  */void SETTINGS_SetFlagsDef(void){  sSettings.sFlags.netsettingsChanged = false; 8028776:	4c0d      	ldr	r4, [pc, #52]	; (80287ac <SETTINGS_SetAllDefault+0x38>)/**  * @brief  Сброс всех настроек в значения по умолчанию  */void SETTINGS_SetAllDefault(void){  SETTINGS_SetBootParamsDef(); 8028778:	f7ff fe40 	bl	80283fc <SETTINGS_SetBootParamsDef>  SETTINGS_SetWebParamsDef(); 802877c:	f7ff fe46 	bl	802840c <SETTINGS_SetWebParamsDef>  SETTINGS_SetTempWebParamsDef(); 8028780:	f7ff fe60 	bl	8028444 <SETTINGS_SetTempWebParamsDef>  SETTINGS_SetSnmpDef(); 8028784:	f7ff fe7a 	bl	802847c <SETTINGS_SetSnmpDef>  SETTINGS_SetInfoDef(); 8028788:	f7ff fec0 	bl	802850c <SETTINGS_SetInfoDef>/**  * @brief  Установить флаги по умолчанию  */void SETTINGS_SetFlagsDef(void){  sSettings.sFlags.netsettingsChanged = false; 802878c:	2300      	movs	r3, #0 802878e:	f884 32fc 	strb.w	r3, [r4, #764]	; 0x2fc  SETTINGS_SetWebParamsDef();  SETTINGS_SetTempWebParamsDef();  SETTINGS_SetSnmpDef();  SETTINGS_SetInfoDef();  SETTINGS_SetFlagsDef();  SETTINGS_SetServiceDef(); 8028792:	f7ff fedd 	bl	8028550 <SETTINGS_SetServiceDef>  SETTINGS_SetSntpDef(); 8028796:	f7ff ff13 	bl	80285c0 <SETTINGS_SetSntpDef>  SETTINGS_SetINOUTSDef(); 802879a:	f7ff ff2f 	bl	80285fc <SETTINGS_SetINOUTSDef>  SETTINGS_SetRADIUSDef(); 802879e:	f7ff ff3b 	bl	8028618 <SETTINGS_SetRADIUSDef>    sSettings.CritSecCRC = SETTINGS_GetCritSecCRC(); 80287a2:	f7ff ffaf 	bl	8028704 <SETTINGS_GetCritSecCRC> 80287a6:	f8c4 0310 	str.w	r0, [r4, #784]	; 0x310 80287aa:	bd10      	pop	{r4, pc} 80287ac:	2000e984 	.word	0x2000e984080287b0 <SETTINGS_Load>:/**  * @brief  Загрузка структуры настроек из flesh  */void SETTINGS_Load(void){ 80287b0:	b510      	push	{r4, lr}  SETTINGS_ReadFromFlash((uint8_t*)&sSettings, sizeof(sSettings)); 80287b2:	4c09      	ldr	r4, [pc, #36]	; (80287d8 <SETTINGS_Load+0x28>) 80287b4:	f44f 716a 	mov.w	r1, #936	; 0x3a8 80287b8:	4620      	mov	r0, r4 80287ba:	f7ff ff4b 	bl	8028654 <SETTINGS_ReadFromFlash>  /* Проверка CRC критической секции сектора настроек.   * Если CRC не совпадает, скорее всего настройки отсутствуют,   * прошиваем значения по умолчанию */  uint32_t crc = SETTINGS_GetCritSecCRC(); 80287be:	f7ff ffa1 	bl	8028704 <SETTINGS_GetCritSecCRC>   if (sSettings.CritSecCRC != crc) { 80287c2:	f8d4 3310 	ldr.w	r3, [r4, #784]	; 0x310 80287c6:	4283      	cmp	r3, r0 80287c8:	d005      	beq.n	80287d6 <SETTINGS_Load+0x26>	   SETTINGS_SetAllDefault(); 80287ca:	f7ff ffd3 	bl	8028774 <SETTINGS_SetAllDefault>	   SETTINGS_Save();   }} 80287ce:	e8bd 4010 	ldmia.w	sp!, {r4, lr}   * прошиваем значения по умолчанию */  uint32_t crc = SETTINGS_GetCritSecCRC();   if (sSettings.CritSecCRC != crc) {	   SETTINGS_SetAllDefault();	   SETTINGS_Save(); 80287d2:	f7ff bfa3 	b.w	802871c <SETTINGS_Save> 80287d6:	bd10      	pop	{r4, pc} 80287d8:	2000e984 	.word	0x2000e984080287dc <SETTINGS_SetPartDefault>:/**  * @brief  Сброс всех настроек в значения по умолчанию кроме сетевых настроек  */void SETTINGS_SetPartDefault(void){ 80287dc:	b510      	push	{r4, lr}/**  * @brief  Установить флаги по умолчанию  */void SETTINGS_SetFlagsDef(void){  sSettings.sFlags.netsettingsChanged = false; 80287de:	4c0a      	ldr	r4, [pc, #40]	; (8028808 <SETTINGS_SetPartDefault+0x2c>)/**  * @brief  Сброс всех настроек в значения по умолчанию кроме сетевых настроек  */void SETTINGS_SetPartDefault(void){  SETTINGS_SetBootParamsDef(); 80287e0:	f7ff fe0c 	bl	80283fc <SETTINGS_SetBootParamsDef>  SETTINGS_SetSnmpDef(); 80287e4:	f7ff fe4a 	bl	802847c <SETTINGS_SetSnmpDef>/**  * @brief  Установить флаги по умолчанию  */void SETTINGS_SetFlagsDef(void){  sSettings.sFlags.netsettingsChanged = false; 80287e8:	2300      	movs	r3, #0 80287ea:	f884 32fc 	strb.w	r3, [r4, #764]	; 0x2fcvoid SETTINGS_SetPartDefault(void){  SETTINGS_SetBootParamsDef();  SETTINGS_SetSnmpDef();  SETTINGS_SetFlagsDef();  SETTINGS_SetServiceDef(); 80287ee:	f7ff feaf 	bl	8028550 <SETTINGS_SetServiceDef>  SETTINGS_SetSntpDef(); 80287f2:	f7ff fee5 	bl	80285c0 <SETTINGS_SetSntpDef>  SETTINGS_SetINOUTSDef(); 80287f6:	f7ff ff01 	bl	80285fc <SETTINGS_SetINOUTSDef>  SETTINGS_SetRADIUSDef(); 80287fa:	f7ff ff0d 	bl	8028618 <SETTINGS_SetRADIUSDef>    sSettings.CritSecCRC = SETTINGS_GetCritSecCRC(); 80287fe:	f7ff ff81 	bl	8028704 <SETTINGS_GetCritSecCRC> 8028802:	f8c4 0310 	str.w	r0, [r4, #784]	; 0x310 8028806:	bd10      	pop	{r4, pc} 8028808:	2000e984 	.word	0x2000e9840802880c <SETTINGS_GetMac>:/**  * @brief  Преобразует mac адрес строкового формата в массив uint8_t  * @param  mac - буфер для вывода mac адреса  */void SETTINGS_GetMac(uint8_t *mac){ 802880c:	b573      	push	{r0, r1, r4, r5, r6, lr}  char dummy[2];  char *macPtr = sSettings.sInfo.mac;	    for (uint8_t i = 0; i < 6; i++)  {    strncpy(dummy, macPtr+i*3, 2); 802880e:	4e0a      	ldr	r6, [pc, #40]	; (8028838 <SETTINGS_GetMac+0x2c>)/**  * @brief  Преобразует mac адрес строкового формата в массив uint8_t  * @param  mac - буфер для вывода mac адреса  */void SETTINGS_GetMac(uint8_t *mac) 8028810:	1e45      	subs	r5, r0, #1 8028812:	2400      	movs	r4, #0  char dummy[2];  char *macPtr = sSettings.sInfo.mac;	    for (uint8_t i = 0; i < 6; i++)  {    strncpy(dummy, macPtr+i*3, 2); 8028814:	1931      	adds	r1, r6, r4 8028816:	2202      	movs	r2, #2 8028818:	f501 711b 	add.w	r1, r1, #620	; 0x26c 802881c:	a801      	add	r0, sp, #4 802881e:	f7f9 fbdf 	bl	8021fe0 <strncpy>	mac[i] = (uint8_t)strtol(dummy, NULL, 16); 8028822:	2100      	movs	r1, #0 8028824:	2210      	movs	r2, #16 8028826:	a801      	add	r0, sp, #4 8028828:	f7fa ff10 	bl	802364c <strtol> 802882c:	3403      	adds	r4, #3void SETTINGS_GetMac(uint8_t *mac){  char dummy[2];  char *macPtr = sSettings.sInfo.mac;	    for (uint8_t i = 0; i < 6; i++) 802882e:	2c12      	cmp	r4, #18  {    strncpy(dummy, macPtr+i*3, 2);	mac[i] = (uint8_t)strtol(dummy, NULL, 16); 8028830:	f805 0f01 	strb.w	r0, [r5, #1]!void SETTINGS_GetMac(uint8_t *mac){  char dummy[2];  char *macPtr = sSettings.sInfo.mac;	    for (uint8_t i = 0; i < 6; i++) 8028834:	d1ee      	bne.n	8028814 <SETTINGS_GetMac+0x8>  {    strncpy(dummy, macPtr+i*3, 2);	mac[i] = (uint8_t)strtol(dummy, NULL, 16);  }} 8028836:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 8028838:	2000e984 	.word	0x2000e9840802883c <SETTINGS_SetProDate>:/**  * @brief  Установить дату производства  */void SETTINGS_SetProDate(char *proDate, uint8_t len){ 802883c:	b570      	push	{r4, r5, r6, lr}  memset(sSettings.sInfo.productionData, 0, 40); 802883e:	4c07      	ldr	r4, [pc, #28]	; (802885c <SETTINGS_SetProDate+0x20>)/**  * @brief  Установить дату производства  */void SETTINGS_SetProDate(char *proDate, uint8_t len){ 8028840:	4606      	mov	r6, r0 8028842:	460d      	mov	r5, r1  memset(sSettings.sInfo.productionData, 0, 40); 8028844:	2228      	movs	r2, #40	; 0x28 8028846:	2100      	movs	r1, #0 8028848:	4620      	mov	r0, r4 802884a:	f7f9 f939 	bl	8021ac0 <memset>  memcpy(sSettings.sInfo.productionData, proDate, len);  802884e:	4620      	mov	r0, r4 8028850:	4631      	mov	r1, r6 8028852:	462a      	mov	r2, r5} 8028854:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  * @brief  Установить дату производства  */void SETTINGS_SetProDate(char *proDate, uint8_t len){  memset(sSettings.sInfo.productionData, 0, 40);  memcpy(sSettings.sInfo.productionData, proDate, len);  8028858:	f7f9 b878 	b.w	802194c <memcpy> 802885c:	2000ebc8 	.word	0x2000ebc808028860 <LED_On>:/**  * @brief    */void LED_On(gpio_t pin){	gpio_set(pin, 1); 8028860:	2101      	movs	r1, #1 8028862:	f7fd bb65 	b.w	8025f30 <gpio_set>08028866 <LED_Off>:/**  * @brief    */void LED_Off(gpio_t pin){	gpio_set(pin, 0); 8028866:	2100      	movs	r1, #0 8028868:	f7fd bb62 	b.w	8025f30 <gpio_set>0802886c <LED_Init>:/**  * @brief    * @retval   */void LED_Init(void){ 802886c:	b508      	push	{r3, lr}  LED_Off(LED_INIT_R); 802886e:	2009      	movs	r0, #9 8028870:	f7ff fff9 	bl	8028866 <LED_Off>  LED_Off(LED_INIT_G); 8028874:	200a      	movs	r0, #10 8028876:	f7ff fff6 	bl	8028866 <LED_Off>  LED_Off(LED_MAJOR_R); 802887a:	200b      	movs	r0, #11 802887c:	f7ff fff3 	bl	8028866 <LED_Off>  LED_Off(LED_MINOR_G); 8028880:	200c      	movs	r0, #12 8028882:	f7ff fff0 	bl	8028866 <LED_Off>  LED_Off(LED_MINOR_R); 8028886:	200d      	movs	r0, #13} 8028888:	e8bd 4008 	ldmia.w	sp!, {r3, lr}{  LED_Off(LED_INIT_R);  LED_Off(LED_INIT_G);  LED_Off(LED_MAJOR_R);  LED_Off(LED_MINOR_G);  LED_Off(LED_MINOR_R); 802888c:	f7ff bfeb 	b.w	8028866 <LED_Off>08028890 <vTaskLedBlink>:/**  * @brief  Задача простой мигалки  */void vTaskLedBlink(void *arg){ 8028890:	b570      	push	{r4, r5, r6, lr}	uint8_t start_status = 0;	uint8_t start_status_old = 0;	start_status = (UPS.Status >> 7) & 0x01;  for (;;)   {	  start_status = (UPS.Status >> 7) & 0x01; 8028892:	4e0e      	ldr	r6, [pc, #56]	; (80288cc <vTaskLedBlink+0x3c>)		  	LED_Off(LED_INIT_R);		  LED_Toggle(LED_INIT_G);	  }	  start_status_old = start_status;    vTaskDelay(statusLedFreq); 8028894:	4d0e      	ldr	r5, [pc, #56]	; (80288d0 <vTaskLedBlink+0x40>)  * @brief  Задача простой мигалки  */void vTaskLedBlink(void *arg){	uint8_t start_status = 0;	uint8_t start_status_old = 0; 8028896:	2300      	movs	r3, #0	start_status = (UPS.Status >> 7) & 0x01;  for (;;)   {	  start_status = (UPS.Status >> 7) & 0x01; 8028898:	7cf4      	ldrb	r4, [r6, #19]	/* Просто отражает состояние контроллера - "живой" */	  if((UPS.Status >> 7) & 0x01){ 802889a:	09e4      	lsrs	r4, r4, #7 802889c:	d009      	beq.n	80288b2 <vTaskLedBlink+0x22>		  if(start_status_old != start_status) 802889e:	42a3      	cmp	r3, r4 80288a0:	d002      	beq.n	80288a8 <vTaskLedBlink+0x18>			  LED_Off(LED_INIT_G); 80288a2:	200a      	movs	r0, #10 80288a4:	f7ff ffdf 	bl	8028866 <LED_Off>/**  * @brief  Изменить состояние LED   */void LED_Toggle(gpio_t pin){	gpio_invert_output(pin); 80288a8:	200a      	movs	r0, #10 80288aa:	f7fd fbd5 	bl	8026058 <gpio_invert_output> 80288ae:	2009      	movs	r0, #9 80288b0:	e005      	b.n	80288be <vTaskLedBlink+0x2e>			  LED_Off(LED_INIT_G);		  LED_Toggle(LED_INIT_G);		  LED_Toggle(LED_INIT_R);	  }	  else{		  if(start_status_old != start_status) 80288b2:	42a3      	cmp	r3, r4 80288b4:	d002      	beq.n	80288bc <vTaskLedBlink+0x2c>		  	LED_Off(LED_INIT_R); 80288b6:	2009      	movs	r0, #9 80288b8:	f7ff ffd5 	bl	8028866 <LED_Off>/**  * @brief  Изменить состояние LED   */void LED_Toggle(gpio_t pin){	gpio_invert_output(pin); 80288bc:	200a      	movs	r0, #10 80288be:	f7fd fbcb 	bl	8026058 <gpio_invert_output>		  	LED_Off(LED_INIT_R);		  LED_Toggle(LED_INIT_G);	  }	  start_status_old = start_status;    vTaskDelay(statusLedFreq); 80288c2:	8828      	ldrh	r0, [r5, #0] 80288c4:	f001 faee 	bl	8029ea4 <vTaskDelay>	uint8_t start_status = 0;	uint8_t start_status_old = 0;	start_status = (UPS.Status >> 7) & 0x01;  for (;;)   {	  start_status = (UPS.Status >> 7) & 0x01; 80288c8:	4623      	mov	r3, r4		  LED_Toggle(LED_INIT_G);	  }	  start_status_old = start_status;    vTaskDelay(statusLedFreq);  } 80288ca:	e7e5      	b.n	8028898 <vTaskLedBlink+0x8> 80288cc:	2000e954 	.word	0x2000e954 80288d0:	200015aa 	.word	0x200015aa080288d4 <LED_Toggle>:/**  * @brief  Изменить состояние LED   */void LED_Toggle(gpio_t pin){	gpio_invert_output(pin); 80288d4:	f7fd bbc0 	b.w	8026058 <gpio_invert_output>080288d8 <LED_SetStatusLedFreq>:/**  * @brief    */void LED_SetStatusLedFreq(uint16_t freq){  statusLedFreq = freq; 80288d8:	4b01      	ldr	r3, [pc, #4]	; (80288e0 <LED_SetStatusLedFreq+0x8>) 80288da:	8018      	strh	r0, [r3, #0] 80288dc:	4770      	bx	lr 80288de:	bf00      	nop 80288e0:	200015aa 	.word	0x200015aa080288e4 <BUTTON_VoidHandler>:/**  * @brief  Заглушка  */void BUTTON_VoidHandler(void){ 80288e4:	4770      	bx	lr 80288e6:	0000      	movs	r0, r0080288e8 <BUTTON_DEF_DownHandler>:/**  * @brief  Хендлер кнопки DEFAULT. Сброс всех настроек, сохранение и перезагрузка  */void BUTTON_DEF_DownHandler(void){ 80288e8:	b508      	push	{r3, lr}  //taskENTER_CRITICAL();     SETTINGS_SetDefaultDebug(); 80288ea:	f7ff ff27 	bl	802873c <SETTINGS_SetDefaultDebug>  SETTINGS_Save(); 80288ee:	f7ff ff15 	bl	802871c <SETTINGS_Save>  vTaskDelay(1010); 80288f2:	f240 30f2 	movw	r0, #1010	; 0x3f2 80288f6:	f001 fad5 	bl	8029ea4 <vTaskDelay>    This function acts as a special kind of Data Memory Barrier.    It completes when all explicit memory accesses before this instruction complete. */__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void){  __ASM volatile ("dsb"); 80288fa:	f3bf 8f4f 	dsb	sy//static inline void NVIC_SystemReset(void){  __DSB();                                                     /* Ensure all outstanding memory accesses included                                                                  buffered write are completed before reset */  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | 80288fe:	4a05      	ldr	r2, [pc, #20]	; (8028914 <BUTTON_DEF_DownHandler+0x2c>) 8028900:	4b05      	ldr	r3, [pc, #20]	; (8028918 <BUTTON_DEF_DownHandler+0x30>) 8028902:	68d1      	ldr	r1, [r2, #12] 8028904:	f401 61e0 	and.w	r1, r1, #1792	; 0x700 8028908:	430b      	orrs	r3, r1__STATIC_INLINE void NVIC_SystemReset(void)//static inline void NVIC_SystemReset(void){  __DSB();                                                     /* Ensure all outstanding memory accesses included                                                                  buffered write are completed before reset */  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      | 802890a:	60d3      	str	r3, [r2, #12] 802890c:	f3bf 8f4f 	dsb	sy 8028910:	e7fe      	b.n	8028910 <BUTTON_DEF_DownHandler+0x28> 8028912:	bf00      	nop 8028914:	e000ed00 	.word	0xe000ed00 8028918:	05fa0004 	.word	0x05fa00040802891c <BUTTON_GetState>:/**  * @brief   Возвращает сотояние ключа  */BUTTON_STATE_t BUTTON_GetState(BUTTON_NO_FIX_t *button){  return (BUTTON_STATE_t)gpio_get(button->id_pin); 802891c:	7800      	ldrb	r0, [r0, #0] 802891e:	f7fd bbab 	b.w	8026078 <gpio_get> 8028922:	0000      	movs	r0, r008028924 <BUTTON_Init>:/**  * @brief    * @retval   */void BUTTON_Init(void) { 8028924:	b510      	push	{r4, lr}  defButton.id_pin			  = KEY_DEF; 8028926:	4c09      	ldr	r4, [pc, #36]	; (802894c <BUTTON_Init+0x28>) 8028928:	230f      	movs	r3, #15 802892a:	7023      	strb	r3, [r4, #0]  defButton.timeDelay         = 5; 802892c:	2305      	movs	r3, #5 802892e:	8063      	strh	r3, [r4, #2]  defButton.pressHandler      = BUTTON_VoidHandler; 8028930:	4b07      	ldr	r3, [pc, #28]	; (8028950 <BUTTON_Init+0x2c>) 8028932:	60a3      	str	r3, [r4, #8]  defButton.unpressHandler    = BUTTON_DEF_DownHandler; 8028934:	4b07      	ldr	r3, [pc, #28]	; (8028954 <BUTTON_Init+0x30>)  defButton.counterActivation = 0;  defButton.timeActivation    = 40; 8028936:	2228      	movs	r2, #40	; 0x28void BUTTON_Init(void) {  defButton.id_pin			  = KEY_DEF;  defButton.timeDelay         = 5;  defButton.pressHandler      = BUTTON_VoidHandler;  defButton.unpressHandler    = BUTTON_DEF_DownHandler; 8028938:	60e3      	str	r3, [r4, #12]  defButton.counterActivation = 0;  defButton.timeActivation    = 40;  defButton.fActivation       = false;      defButton.stateOld     = BUTTON_GetState(&defButton); 802893a:	4620      	mov	r0, r4{  defButton.id_pin			  = KEY_DEF;  defButton.timeDelay         = 5;  defButton.pressHandler      = BUTTON_VoidHandler;  defButton.unpressHandler    = BUTTON_DEF_DownHandler;  defButton.counterActivation = 0; 802893c:	2300      	movs	r3, #0 802893e:	6163      	str	r3, [r4, #20]  defButton.timeActivation    = 40; 8028940:	8322      	strh	r2, [r4, #24]  defButton.fActivation       = false; 8028942:	76a3      	strb	r3, [r4, #26]      defButton.stateOld     = BUTTON_GetState(&defButton); 8028944:	f7ff ffea 	bl	802891c <BUTTON_GetState> 8028948:	71a0      	strb	r0, [r4, #6] 802894a:	bd10      	pop	{r4, pc} 802894c:	2000ed2c 	.word	0x2000ed2c 8028950:	080288e5 	.word	0x080288e5 8028954:	080288e9 	.word	0x080288e908028958 <BUTTON_DellayHandler>:            время нажатия.  * @param *button: указатель на структуру типа BUTTON_NO_FIX  * @retval нет  */void BUTTON_DellayHandler(BUTTON_NO_FIX_t *button){ 8028958:	b510      	push	{r4, lr} 802895a:	4604      	mov	r4, r0  /* Кнопка нажата. Ведем отсчет времени удержания */  if (gpio_get(button->id_pin) == 0)  // определяем текущее (новое) состояние кнопки 802895c:	7800      	ldrb	r0, [r0, #0] 802895e:	f7fd fb8b 	bl	8026078 <gpio_get> 8028962:	6963      	ldr	r3, [r4, #20] 8028964:	b950      	cbnz	r0, 802897c <BUTTON_DellayHandler+0x24>  {  	button->counterActivation++;	button->fActivation = false;		/* Кнопка нажата более необходимого времени - начинаем чаще мигать диодом */	if (button->counterActivation > button->timeActivation) 8028966:	8b22      	ldrh	r2, [r4, #24]{  /* Кнопка нажата. Ведем отсчет времени удержания */  if (gpio_get(button->id_pin) == 0)  // определяем текущее (новое) состояние кнопки  {  	button->counterActivation++;	button->fActivation = false; 8028968:	76a0      	strb	r0, [r4, #26]void BUTTON_DellayHandler(BUTTON_NO_FIX_t *button){  /* Кнопка нажата. Ведем отсчет времени удержания */  if (gpio_get(button->id_pin) == 0)  // определяем текущее (новое) состояние кнопки  {  	button->counterActivation++; 802896a:	3301      	adds	r3, #1	button->fActivation = false;		/* Кнопка нажата более необходимого времени - начинаем чаще мигать диодом */	if (button->counterActivation > button->timeActivation) 802896c:	4293      	cmp	r3, r2void BUTTON_DellayHandler(BUTTON_NO_FIX_t *button){  /* Кнопка нажата. Ведем отсчет времени удержания */  if (gpio_get(button->id_pin) == 0)  // определяем текущее (новое) состояние кнопки  {  	button->counterActivation++; 802896e:	6163      	str	r3, [r4, #20]	button->fActivation = false;		/* Кнопка нажата более необходимого времени - начинаем чаще мигать диодом */	if (button->counterActivation > button->timeActivation) 8028970:	d914      	bls.n	802899c <BUTTON_DellayHandler+0x44>	  LED_SetStatusLedFreq(100); 8028972:	2064      	movs	r0, #100	; 0x64	}  	else	  button->counterActivation = 0;  }		} 8028974:	e8bd 4010 	ldmia.w	sp!, {r4, lr}	button->counterActivation++;	button->fActivation = false;		/* Кнопка нажата более необходимого времени - начинаем чаще мигать диодом */	if (button->counterActivation > button->timeActivation)	  LED_SetStatusLedFreq(100); 8028978:	f7ff bfae 	b.w	80288d8 <LED_SetStatusLedFreq>  }  /* Кнопку отжата. Если до этого она была нажата нужное время - вызываем хендлер */  else  {	if ((button->counterActivation > button->timeActivation)  802897c:	8b22      	ldrh	r2, [r4, #24] 802897e:	4293      	cmp	r3, r2 8028980:	d90a      	bls.n	8028998 <BUTTON_DellayHandler+0x40>	     && button->fActivation == false) 8028982:	7ea3      	ldrb	r3, [r4, #26] 8028984:	b943      	cbnz	r3, 8028998 <BUTTON_DellayHandler+0x40>	{  	  button->fActivation = true; 8028986:	2301      	movs	r3, #1 8028988:	76a3      	strb	r3, [r4, #26]	  LED_SetStatusLedFreq(1000); 802898a:	f44f 707a 	mov.w	r0, #1000	; 0x3e8 802898e:	f7ff ffa3 	bl	80288d8 <LED_SetStatusLedFreq>	  button->unpressHandler(); 8028992:	68e3      	ldr	r3, [r4, #12] 8028994:	4798      	blx	r3 8028996:	bd10      	pop	{r4, pc}	}  	else	  button->counterActivation = 0; 8028998:	2300      	movs	r3, #0 802899a:	6163      	str	r3, [r4, #20] 802899c:	bd10      	pop	{r4, pc} 802899e:	0000      	movs	r0, r0080289a0 <vTaskButtons>:/**  * @brief  Опрос кнопок  */void vTaskButtons(void *pvParameters) { 80289a0:	b508      	push	{r3, lr}  for (;;)   {	BUTTON_DellayHandler(&defButton); 80289a2:	4803      	ldr	r0, [pc, #12]	; (80289b0 <vTaskButtons+0x10>) 80289a4:	f7ff ffd8 	bl	8028958 <BUTTON_DellayHandler>	    vTaskDelay(100);  //20 80289a8:	2064      	movs	r0, #100	; 0x64 80289aa:	f001 fa7b 	bl	8029ea4 <vTaskDelay> 80289ae:	e7f8      	b.n	80289a2 <vTaskButtons+0x2> 80289b0:	2000ed2c 	.word	0x2000ed2c080289b4 <set_mode_jumper>:#include "gpio.h"bool value_jumper;void set_mode_jumper(void){ 80289b4:	b508      	push	{r3, lr}	value_jumper = gpio_get(MODE_JUMPER); 80289b6:	200e      	movs	r0, #14 80289b8:	f7fd fb5e 	bl	8026078 <gpio_get> 80289bc:	4b01      	ldr	r3, [pc, #4]	; (80289c4 <set_mode_jumper+0x10>) 80289be:	7018      	strb	r0, [r3, #0] 80289c0:	bd08      	pop	{r3, pc} 80289c2:	bf00      	nop 80289c4:	2000ed48 	.word	0x2000ed48080289c8 <get_state_din_outs>:/* data actuality mutexes */static SemaphoreHandle_t outputs_mutex, inputs_mutex;uint8_t get_state_din_outs(gpio_t pin) {	uint8_t res = 0;	res = gpio_get(pin); 80289c8:	f7fd bb56 	b.w	8026078 <gpio_get>080289cc <set_state_douts>:	return res;}void set_state_douts(gpio_t pin, uint8_t value){	gpio_set(pin, value); 80289cc:	3100      	adds	r1, #0 80289ce:	bf18      	it	ne 80289d0:	2101      	movne	r1, #1 80289d2:	f7fd baad 	b.w	8025f30 <gpio_set> 80289d6:	0000      	movs	r0, r0080289d8 <init_UPS_value>:		"F\r"};void init_UPS_value(void){ 80289d8:	b538      	push	{r3, r4, r5, lr}	UPS.Freq_in = 0; 80289da:	4c0d      	ldr	r4, [pc, #52]	; (8028a10 <init_UPS_value+0x38>)	UPS.VAC_in = 0;	UPS.VAC_out = 0;	UPS.Temp = 0;	UPS.Load = 0; 80289dc:	2500      	movs	r5, #0};void init_UPS_value(void){	UPS.Freq_in = 0; 80289de:	2300      	movs	r3, #0	UPS.SOC = 0;	UPS.work_time = 0;	UPS.Status = 0;	UPS.Present = false;	memset(UPS.model, 0, 11); 80289e0:	4629      	mov	r1, r5 80289e2:	220b      	movs	r2, #11 80289e4:	f104 0014 	add.w	r0, r4, #20};void init_UPS_value(void){	UPS.Freq_in = 0; 80289e8:	6023      	str	r3, [r4, #0]	UPS.VAC_in = 0; 80289ea:	6063      	str	r3, [r4, #4]	UPS.VAC_out = 0; 80289ec:	60a3      	str	r3, [r4, #8]	UPS.Temp = 0; 80289ee:	60e3      	str	r3, [r4, #12]	UPS.Load = 0; 80289f0:	7425      	strb	r5, [r4, #16]	UPS.SOC = 0; 80289f2:	7465      	strb	r5, [r4, #17]	UPS.work_time = 0; 80289f4:	74a5      	strb	r5, [r4, #18]	UPS.Status = 0; 80289f6:	74e5      	strb	r5, [r4, #19]	UPS.Present = false; 80289f8:	f884 502a 	strb.w	r5, [r4, #42]	; 0x2a	memset(UPS.model, 0, 11); 80289fc:	f7f9 f860 	bl	8021ac0 <memset>	memset(UPS.vertion, 0, 11); 8028a00:	f104 001f 	add.w	r0, r4, #31 8028a04:	4629      	mov	r1, r5 8028a06:	220b      	movs	r2, #11} 8028a08:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}	UPS.work_time = 0;	UPS.Status = 0;	UPS.Present = false;	memset(UPS.model, 0, 11);	memset(UPS.vertion, 0, 11); 8028a0c:	f7f9 b858 	b.w	8021ac0 <memset> 8028a10:	2000e954 	.word	0x2000e95408028a14 <send_MegaTec_cmd>:}void send_MegaTec_cmd(cmdMegaTecEnums_t command){ 8028a14:	b510      	push	{r4, lr}	if(command == ups_test_time){ 8028a16:	2803      	cmp	r0, #3	memset(UPS.model, 0, 11);	memset(UPS.vertion, 0, 11);}void send_MegaTec_cmd(cmdMegaTecEnums_t command){ 8028a18:	b086      	sub	sp, #24	if(command == ups_test_time){ 8028a1a:	d10d      	bne.n	8028a38 <send_MegaTec_cmd+0x24>		uint8_t req[10];		memset(req, 0, 10); 8028a1c:	2100      	movs	r1, #0 8028a1e:	220a      	movs	r2, #10 8028a20:	a803      	add	r0, sp, #12 8028a22:	f7f9 f84d 	bl	8021ac0 <memset>		sprintf(req, "%s%d\r", MegaTecCMD[command], TimeParam); 8028a26:	4b18      	ldr	r3, [pc, #96]	; (8028a88 <send_MegaTec_cmd+0x74>) 8028a28:	4918      	ldr	r1, [pc, #96]	; (8028a8c <send_MegaTec_cmd+0x78>) 8028a2a:	68da      	ldr	r2, [r3, #12] 8028a2c:	4b18      	ldr	r3, [pc, #96]	; (8028a90 <send_MegaTec_cmd+0x7c>) 8028a2e:	a803      	add	r0, sp, #12 8028a30:	881b      	ldrh	r3, [r3, #0] 8028a32:	f7fe feb5 	bl	80277a0 <tfp_sprintf> 8028a36:	e015      	b.n	8028a64 <send_MegaTec_cmd+0x50>		ups_send_block(req, strlen(req));	}	else if(command == ups_shutdown){ 8028a38:	2805      	cmp	r0, #5 8028a3a:	d022      	beq.n	8028a82 <send_MegaTec_cmd+0x6e>	}	else if(command == ups_shutdown_restore){ 8028a3c:	2806      	cmp	r0, #6 8028a3e:	4c12      	ldr	r4, [pc, #72]	; (8028a88 <send_MegaTec_cmd+0x74>) 8028a40:	d116      	bne.n	8028a70 <send_MegaTec_cmd+0x5c>		uint8_t req[10];		memset(req, 0, 10); 8028a42:	2100      	movs	r1, #0 8028a44:	220a      	movs	r2, #10 8028a46:	a803      	add	r0, sp, #12 8028a48:	f7f9 f83a 	bl	8021ac0 <memset>		sprintf(req, "%s.%d%s%d\r", MegaTecCMD[command-1], TimeParam, MegaTecCMD[command], TimeParam2); 8028a4c:	69a2      	ldr	r2, [r4, #24] 8028a4e:	4b10      	ldr	r3, [pc, #64]	; (8028a90 <send_MegaTec_cmd+0x7c>) 8028a50:	4910      	ldr	r1, [pc, #64]	; (8028a94 <send_MegaTec_cmd+0x80>) 8028a52:	881b      	ldrh	r3, [r3, #0] 8028a54:	9200      	str	r2, [sp, #0] 8028a56:	4a10      	ldr	r2, [pc, #64]	; (8028a98 <send_MegaTec_cmd+0x84>) 8028a58:	8812      	ldrh	r2, [r2, #0] 8028a5a:	9201      	str	r2, [sp, #4] 8028a5c:	a803      	add	r0, sp, #12 8028a5e:	6962      	ldr	r2, [r4, #20] 8028a60:	f7fe fe9e 	bl	80277a0 <tfp_sprintf>		ups_send_block(req, strlen(req)); 8028a64:	a803      	add	r0, sp, #12 8028a66:	f7f9 fa03 	bl	8021e70 <strlen> 8028a6a:	b2c1      	uxtb	r1, r0 8028a6c:	a803      	add	r0, sp, #12 8028a6e:	e006      	b.n	8028a7e <send_MegaTec_cmd+0x6a>	}	else{		ups_send_block(MegaTecCMD[command], strlen(MegaTecCMD[command])); 8028a70:	f854 4020 	ldr.w	r4, [r4, r0, lsl #2] 8028a74:	4620      	mov	r0, r4 8028a76:	f7f9 f9fb 	bl	8021e70 <strlen> 8028a7a:	b2c1      	uxtb	r1, r0 8028a7c:	4620      	mov	r0, r4 8028a7e:	f7fe f8fd 	bl	8026c7c <ups_send_block>	}} 8028a82:	b006      	add	sp, #24 8028a84:	bd10      	pop	{r4, pc} 8028a86:	bf00      	nop 8028a88:	200015b0 	.word	0x200015b0 8028a8c:	08036e3b 	.word	0x08036e3b 8028a90:	2000296c 	.word	0x2000296c 8028a94:	08036e36 	.word	0x08036e36 8028a98:	20002936 	.word	0x2000293608028a9c <ups_megatec_rx_pdu>:bool ups_megatec_rx_pdu(void){ 8028a9c:	b510      	push	{r4, lr}	int c = 0;	ups_pdu.len = 0; 8028a9e:	4c0e      	ldr	r4, [pc, #56]	; (8028ad8 <ups_megatec_rx_pdu+0x3c>) 8028aa0:	2000      	movs	r0, #0 8028aa2:	8660      	strh	r0, [r4, #50]	; 0x32	while ((ups_pdu.len < UPS_PDU_MAX_LEN) && (c != 0x0d)) { 8028aa4:	e00d      	b.n	8028ac2 <ups_megatec_rx_pdu+0x26>		c = ups_getchar(500);//portMAX_DELAY 8028aa6:	f44f 70fa 	mov.w	r0, #500	; 0x1f4 8028aaa:	f7fe f90b 	bl	8026cc4 <ups_getchar>		if(c < 0) 8028aae:	2800      	cmp	r0, #0 8028ab0:	da03      	bge.n	8028aba <ups_megatec_rx_pdu+0x1e>		{			ups_pdu.len = 0; 8028ab2:	4b09      	ldr	r3, [pc, #36]	; (8028ad8 <ups_megatec_rx_pdu+0x3c>) 8028ab4:	2200      	movs	r2, #0 8028ab6:	865a      	strh	r2, [r3, #50]	; 0x32			break; 8028ab8:	e008      	b.n	8028acc <ups_megatec_rx_pdu+0x30>		}		ups_pdu.data[ups_pdu.len++] = c; 8028aba:	8e63      	ldrh	r3, [r4, #50]	; 0x32 8028abc:	54e0      	strb	r0, [r4, r3] 8028abe:	3301      	adds	r3, #1 8028ac0:	8663      	strh	r3, [r4, #50]	; 0x32{	int c = 0;	ups_pdu.len = 0;	while ((ups_pdu.len < UPS_PDU_MAX_LEN) && (c != 0x0d)) { 8028ac2:	8e63      	ldrh	r3, [r4, #50]	; 0x32 8028ac4:	2b31      	cmp	r3, #49	; 0x31 8028ac6:	d801      	bhi.n	8028acc <ups_megatec_rx_pdu+0x30> 8028ac8:	280d      	cmp	r0, #13 8028aca:	d1ec      	bne.n	8028aa6 <ups_megatec_rx_pdu+0xa>			break;		}		ups_pdu.data[ups_pdu.len++] = c;	}	if (ups_pdu.len == 0) 8028acc:	4b02      	ldr	r3, [pc, #8]	; (8028ad8 <ups_megatec_rx_pdu+0x3c>) 8028ace:	8e58      	ldrh	r0, [r3, #50]	; 0x32		return false;	return true;} 8028ad0:	3000      	adds	r0, #0 8028ad2:	bf18      	it	ne 8028ad4:	2001      	movne	r0, #1 8028ad6:	bd10      	pop	{r4, pc} 8028ad8:	20002938 	.word	0x2000293808028adc <ups_status_response>:void ups_status_response(char *data){ 8028adc:	e92d 41ff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}	uint8_t i;	char *endValue;	char value[10];	uint8_t len = 0;	if(data[0] != '(') 8028ae0:	7803      	ldrb	r3, [r0, #0] 8028ae2:	2b28      	cmp	r3, #40	; 0x28 8028ae4:	f040 80c1 	bne.w	8028c6a <ups_status_response+0x18e>		return;	data++; 8028ae8:	1c44      	adds	r4, r0, #1	memset(value, 0, 10); 8028aea:	220a      	movs	r2, #10 8028aec:	2100      	movs	r1, #0 8028aee:	a801      	add	r0, sp, #4 8028af0:	f7f8 ffe6 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028af4:	4620      	mov	r0, r4 8028af6:	495e      	ldr	r1, [pc, #376]	; (8028c70 <ups_status_response+0x194>) 8028af8:	f7f9 faa4 	bl	8022044 <strpbrk>	len = endValue - data; 8028afc:	1b00      	subs	r0, r0, r4void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028afe:	b2c6      	uxtb	r6, r0	data++;	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028b00:	4632      	mov	r2, r6 8028b02:	4621      	mov	r1, r4 8028b04:	a801      	add	r0, sp, #4 8028b06:	f7f9 fa6b 	bl	8021fe0 <strncpy>	data += (len + 1);	UPS.VAC_in = atof(value); 8028b0a:	a801      	add	r0, sp, #4 8028b0c:	f7f8 feb4 	bl	8021878 <atof> 8028b10:	f7f8 f818 	bl	8020b44 <__aeabi_d2f>	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1); 8028b14:	3601      	adds	r6, #1 8028b16:	19a6      	adds	r6, r4, r6	UPS.VAC_in = atof(value); 8028b18:	4c56      	ldr	r4, [pc, #344]	; (8028c74 <ups_status_response+0x198>)	//TODO	memset(value, 0, 10); 8028b1a:	220a      	movs	r2, #10	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1);	UPS.VAC_in = atof(value); 8028b1c:	6060      	str	r0, [r4, #4]	//TODO	memset(value, 0, 10); 8028b1e:	2100      	movs	r1, #0 8028b20:	a801      	add	r0, sp, #4 8028b22:	f7f8 ffcd 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028b26:	4630      	mov	r0, r6 8028b28:	4951      	ldr	r1, [pc, #324]	; (8028c70 <ups_status_response+0x194>) 8028b2a:	f7f9 fa8b 	bl	8022044 <strpbrk>	len = endValue - data; 8028b2e:	1b80      	subs	r0, r0, r6void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028b30:	b2c5      	uxtb	r5, r0	//TODO	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028b32:	4631      	mov	r1, r6 8028b34:	462a      	mov	r2, r5 8028b36:	a801      	add	r0, sp, #4	data += (len + 1); 8028b38:	3501      	adds	r5, #1	//TODO	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028b3a:	f7f9 fa51 	bl	8021fe0 <strncpy>	data += (len + 1); 8028b3e:	1975      	adds	r5, r6, r5	memset(value, 0, 10); 8028b40:	220a      	movs	r2, #10 8028b42:	2100      	movs	r1, #0 8028b44:	a801      	add	r0, sp, #4 8028b46:	f7f8 ffbb 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028b4a:	4628      	mov	r0, r5 8028b4c:	4948      	ldr	r1, [pc, #288]	; (8028c70 <ups_status_response+0x194>) 8028b4e:	f7f9 fa79 	bl	8022044 <strpbrk>	len = endValue - data; 8028b52:	1b40      	subs	r0, r0, r5void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028b54:	fa5f f880 	uxtb.w	r8, r0	data += (len + 1);	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028b58:	4642      	mov	r2, r8 8028b5a:	4629      	mov	r1, r5 8028b5c:	a801      	add	r0, sp, #4 8028b5e:	f7f9 fa3f 	bl	8021fe0 <strncpy>	data += (len + 1);	UPS.VAC_out = atof(value); 8028b62:	a801      	add	r0, sp, #4 8028b64:	f7f8 fe88 	bl	8021878 <atof> 8028b68:	f7f7 ffec 	bl	8020b44 <__aeabi_d2f>	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1); 8028b6c:	f108 0801 	add.w	r8, r8, #1 8028b70:	44a8      	add	r8, r5	UPS.VAC_out = atof(value);	memset(value, 0, 10); 8028b72:	220a      	movs	r2, #10	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1);	UPS.VAC_out = atof(value); 8028b74:	60a0      	str	r0, [r4, #8]	memset(value, 0, 10); 8028b76:	2100      	movs	r1, #0 8028b78:	a801      	add	r0, sp, #4 8028b7a:	f7f8 ffa1 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028b7e:	493c      	ldr	r1, [pc, #240]	; (8028c70 <ups_status_response+0x194>) 8028b80:	4640      	mov	r0, r8 8028b82:	f7f9 fa5f 	bl	8022044 <strpbrk>	len = endValue - data; 8028b86:	ebc8 0000 	rsb	r0, r8, r0void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028b8a:	b2c7      	uxtb	r7, r0	UPS.VAC_out = atof(value);	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028b8c:	463a      	mov	r2, r7 8028b8e:	4641      	mov	r1, r8 8028b90:	a801      	add	r0, sp, #4 8028b92:	f7f9 fa25 	bl	8021fe0 <strncpy>	data += (len + 1);	UPS.Load = atoi(value); 8028b96:	a801      	add	r0, sp, #4 8028b98:	f7f8 fe72 	bl	8021880 <atoi>	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1); 8028b9c:	3701      	adds	r7, #1 8028b9e:	4447      	add	r7, r8	UPS.Load = atoi(value);	memset(value, 0, 10); 8028ba0:	220a      	movs	r2, #10	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1);	UPS.Load = atoi(value); 8028ba2:	7420      	strb	r0, [r4, #16]	memset(value, 0, 10); 8028ba4:	2100      	movs	r1, #0 8028ba6:	a801      	add	r0, sp, #4 8028ba8:	f7f8 ff8a 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028bac:	4930      	ldr	r1, [pc, #192]	; (8028c70 <ups_status_response+0x194>) 8028bae:	4638      	mov	r0, r7 8028bb0:	f7f9 fa48 	bl	8022044 <strpbrk>	len = endValue - data; 8028bb4:	1bc0      	subs	r0, r0, r7void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028bb6:	b2c6      	uxtb	r6, r0	UPS.Load = atoi(value);	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028bb8:	4632      	mov	r2, r6 8028bba:	4639      	mov	r1, r7 8028bbc:	a801      	add	r0, sp, #4 8028bbe:	f7f9 fa0f 	bl	8021fe0 <strncpy>	data += (len + 1);	UPS.Freq_in = atof(value); 8028bc2:	a801      	add	r0, sp, #4 8028bc4:	f7f8 fe58 	bl	8021878 <atof> 8028bc8:	f7f7 ffbc 	bl	8020b44 <__aeabi_d2f>	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1); 8028bcc:	3601      	adds	r6, #1 8028bce:	19be      	adds	r6, r7, r6	UPS.Freq_in = atof(value); 8028bd0:	6020      	str	r0, [r4, #0]	//TODO	memset(value, 0, 10); 8028bd2:	220a      	movs	r2, #10 8028bd4:	2100      	movs	r1, #0 8028bd6:	a801      	add	r0, sp, #4 8028bd8:	f7f8 ff72 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028bdc:	4630      	mov	r0, r6 8028bde:	4924      	ldr	r1, [pc, #144]	; (8028c70 <ups_status_response+0x194>) 8028be0:	f7f9 fa30 	bl	8022044 <strpbrk>	len = endValue - data; 8028be4:	1b80      	subs	r0, r0, r6void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028be6:	b2c5      	uxtb	r5, r0	//TODO	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028be8:	4631      	mov	r1, r6 8028bea:	462a      	mov	r2, r5 8028bec:	a801      	add	r0, sp, #4	data += (len + 1); 8028bee:	3501      	adds	r5, #1	//TODO	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028bf0:	f7f9 f9f6 	bl	8021fe0 <strncpy>	data += (len + 1); 8028bf4:	1975      	adds	r5, r6, r5	memset(value, 0, 10); 8028bf6:	220a      	movs	r2, #10 8028bf8:	2100      	movs	r1, #0 8028bfa:	a801      	add	r0, sp, #4 8028bfc:	f7f8 ff60 	bl	8021ac0 <memset>	endValue = strpbrk(data," "); 8028c00:	4628      	mov	r0, r5 8028c02:	491b      	ldr	r1, [pc, #108]	; (8028c70 <ups_status_response+0x194>) 8028c04:	f7f9 fa1e 	bl	8022044 <strpbrk>	len = endValue - data; 8028c08:	1b40      	subs	r0, r0, r5void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028c0a:	b2c6      	uxtb	r6, r0	data += (len + 1);	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len); 8028c0c:	4632      	mov	r2, r6 8028c0e:	4629      	mov	r1, r5 8028c10:	a801      	add	r0, sp, #4 8028c12:	f7f9 f9e5 	bl	8021fe0 <strncpy>	data += (len + 1);	UPS.Temp = atof(value); 8028c16:	a801      	add	r0, sp, #4 8028c18:	f7f8 fe2e 	bl	8021878 <atof> 8028c1c:	f7f7 ff92 	bl	8020b44 <__aeabi_d2f>	memset(value, 0, 10);	endValue = strpbrk(data," ");	len = endValue - data;	strncpy(value, data, len);	data += (len + 1); 8028c20:	3601      	adds	r6, #1 8028c22:	19ad      	adds	r5, r5, r6	UPS.Temp = atof(value); 8028c24:	60e0      	str	r0, [r4, #12]	memset(value, 0, 10); 8028c26:	220a      	movs	r2, #10 8028c28:	2100      	movs	r1, #0 8028c2a:	a801      	add	r0, sp, #4 8028c2c:	f7f8 ff48 	bl	8021ac0 <memset>	endValue = strpbrk(data,"\r"); 8028c30:	4911      	ldr	r1, [pc, #68]	; (8028c78 <ups_status_response+0x19c>) 8028c32:	4628      	mov	r0, r5 8028c34:	f7f9 fa06 	bl	8022044 <strpbrk>	len = endValue - data; 8028c38:	1b40      	subs	r0, r0, r5 8028c3a:	b2c4      	uxtb	r4, r0	strncpy(value, data, len); 8028c3c:	4629      	mov	r1, r5 8028c3e:	a801      	add	r0, sp, #4 8028c40:	4622      	mov	r2, r4 8028c42:	f7f9 f9cd 	bl	8021fe0 <strncpy>	uint8_t stat = 0;	for(i = 0; i < len; i ++) 8028c46:	2300      	movs	r3, #0	memset(value, 0, 10);	endValue = strpbrk(data,"\r");	len = endValue - data;	strncpy(value, data, len);	uint8_t stat = 0; 8028c48:	4619      	mov	r1, r3	for(i = 0; i < len; i ++) 8028c4a:	e009      	b.n	8028c60 <ups_status_response+0x184>	{		stat |= (value[i] - 0x30) << (7-i); 8028c4c:	aa01      	add	r2, sp, #4		return false;	return true;}void ups_status_response(char *data) 8028c4e:	f1c3 0007 	rsb	r0, r3, #7	len = endValue - data;	strncpy(value, data, len);	uint8_t stat = 0;	for(i = 0; i < len; i ++)	{		stat |= (value[i] - 0x30) << (7-i); 8028c52:	5c9a      	ldrb	r2, [r3, r2] 8028c54:	3a30      	subs	r2, #48	; 0x30 8028c56:	fa02 f200 	lsl.w	r2, r2, r0 8028c5a:	4311      	orrs	r1, r2 8028c5c:	b2c9      	uxtb	r1, r1 8028c5e:	3301      	adds	r3, #1	memset(value, 0, 10);	endValue = strpbrk(data,"\r");	len = endValue - data;	strncpy(value, data, len);	uint8_t stat = 0;	for(i = 0; i < len; i ++) 8028c60:	b2da      	uxtb	r2, r3 8028c62:	42a2      	cmp	r2, r4 8028c64:	d3f2      	bcc.n	8028c4c <ups_status_response+0x170>	{		stat |= (value[i] - 0x30) << (7-i);	}	UPS.Status = stat; 8028c66:	4b03      	ldr	r3, [pc, #12]	; (8028c74 <ups_status_response+0x198>) 8028c68:	74d9      	strb	r1, [r3, #19]} 8028c6a:	e8bd 81ff 	ldmia.w	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, pc} 8028c6e:	bf00      	nop 8028c70:	08036e41 	.word	0x08036e41 8028c74:	2000e954 	.word	0x2000e954 8028c78:	08041ec1 	.word	0x08041ec108028c7c <ups_info_response>:void ups_info_response(char *data){ 8028c7c:	b538      	push	{r3, r4, r5, lr}	uint8_t i = 0;	char *endValue;	uint8_t len = 0;	if(data[0] != '#') 8028c7e:	7803      	ldrb	r3, [r0, #0] 8028c80:	2b23      	cmp	r3, #35	; 0x23 8028c82:	d123      	bne.n	8028ccc <ups_info_response+0x50>		return;	data++;	data += 16; 8028c84:	3011      	adds	r0, #17	while(data[0] == ' '){ 8028c86:	4603      	mov	r3, r0 8028c88:	461c      	mov	r4, r3		stat |= (value[i] - 0x30) << (7-i);	}	UPS.Status = stat;}void ups_info_response(char *data) 8028c8a:	1a1a      	subs	r2, r3, r0	data++;	data += 16;	while(data[0] == ' '){ 8028c8c:	7821      	ldrb	r1, [r4, #0] 8028c8e:	3301      	adds	r3, #1 8028c90:	2920      	cmp	r1, #32		stat |= (value[i] - 0x30) << (7-i);	}	UPS.Status = stat;}void ups_info_response(char *data) 8028c92:	b2d2      	uxtb	r2, r2	data++;	data += 16;	while(data[0] == ' '){ 8028c94:	d0f8      	beq.n	8028c88 <ups_info_response+0xc>		data ++;		i ++;	}	if(i < 11){ 8028c96:	2a0a      	cmp	r2, #10 8028c98:	d80c      	bhi.n	8028cb4 <ups_info_response+0x38>		endValue = strpbrk(data," "); 8028c9a:	4620      	mov	r0, r4 8028c9c:	490c      	ldr	r1, [pc, #48]	; (8028cd0 <ups_info_response+0x54>) 8028c9e:	f7f9 f9d1 	bl	8022044 <strpbrk>		len = endValue - data; 8028ca2:	1b00      	subs	r0, r0, r4void ups_megatec_init(void) {	init_UPS_value();	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL);} 8028ca4:	b2c5      	uxtb	r5, r0		i ++;	}	if(i < 11){		endValue = strpbrk(data," ");		len = endValue - data;		strncpy(UPS.model, data, len); 8028ca6:	4621      	mov	r1, r4 8028ca8:	462a      	mov	r2, r5 8028caa:	480a      	ldr	r0, [pc, #40]	; (8028cd4 <ups_info_response+0x58>) 8028cac:	f7f9 f998 	bl	8021fe0 <strncpy>		data += (len + 1); 8028cb0:	3501      	adds	r5, #1 8028cb2:	1964      	adds	r4, r4, r5	}	endValue = strpbrk(data,"\r"); 8028cb4:	4620      	mov	r0, r4 8028cb6:	4908      	ldr	r1, [pc, #32]	; (8028cd8 <ups_info_response+0x5c>) 8028cb8:	f7f9 f9c4 	bl	8022044 <strpbrk>	len = endValue - data; 8028cbc:	1b02      	subs	r2, r0, r4	strncpy(UPS.vertion, data, len); 8028cbe:	4807      	ldr	r0, [pc, #28]	; (8028cdc <ups_info_response+0x60>) 8028cc0:	4621      	mov	r1, r4 8028cc2:	b2d2      	uxtb	r2, r2} 8028cc4:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		data += (len + 1);	}	endValue = strpbrk(data,"\r");	len = endValue - data;	strncpy(UPS.vertion, data, len); 8028cc8:	f7f9 b98a 	b.w	8021fe0 <strncpy> 8028ccc:	bd38      	pop	{r3, r4, r5, pc} 8028cce:	bf00      	nop 8028cd0:	08036e41 	.word	0x08036e41 8028cd4:	2000e968 	.word	0x2000e968 8028cd8:	08041ec1 	.word	0x08041ec1 8028cdc:	2000e973 	.word	0x2000e97308028ce0 <request_task>:	}	return -1;}void request_task(void){ 8028ce0:	b570      	push	{r4, r5, r6, lr}		for(;;)		{			if(megatec_send){ 8028ce2:	4c11      	ldr	r4, [pc, #68]	; (8028d28 <request_task+0x48>)				megatec_send= false; 8028ce4:	2500      	movs	r5, #0				send_MegaTec_cmd(ups_status_req);				if (ups_megatec_rx_pdu())					ups_megatec_process_pdu(ups_status_req);				megatec_send=true; 8028ce6:	2601      	movs	r6, #1void request_task(void){		for(;;)		{			if(megatec_send){ 8028ce8:	7823      	ldrb	r3, [r4, #0] 8028cea:	b153      	cbz	r3, 8028d02 <request_task+0x22>				megatec_send= false;				send_MegaTec_cmd(ups_status_req); 8028cec:	2000      	movs	r0, #0{		for(;;)		{			if(megatec_send){				megatec_send= false; 8028cee:	7025      	strb	r5, [r4, #0]				send_MegaTec_cmd(ups_status_req); 8028cf0:	f7ff fe90 	bl	8028a14 <send_MegaTec_cmd>				if (ups_megatec_rx_pdu()) 8028cf4:	f7ff fed2 	bl	8028a9c <ups_megatec_rx_pdu> 8028cf8:	b110      	cbz	r0, 8028d00 <request_task+0x20>void ups_megatec_process_pdu(cmdMegaTecEnums_t command){	switch(command)	{	case ups_status_req:		ups_status_response(ups_pdu.data); 8028cfa:	480c      	ldr	r0, [pc, #48]	; (8028d2c <request_task+0x4c>) 8028cfc:	f7ff feee 	bl	8028adc <ups_status_response>				megatec_send= false;				send_MegaTec_cmd(ups_status_req);				if (ups_megatec_rx_pdu())					ups_megatec_process_pdu(ups_status_req);				megatec_send=true; 8028d00:	7026      	strb	r6, [r4, #0]			}			//vTaskDelay(100);			if(megatec_send){ 8028d02:	7823      	ldrb	r3, [r4, #0] 8028d04:	b153      	cbz	r3, 8028d1c <request_task+0x3c>				megatec_send = false;				 send_MegaTec_cmd(ups_info); 8028d06:	2009      	movs	r0, #9				megatec_send=true;			}			//vTaskDelay(100);			if(megatec_send){				megatec_send = false; 8028d08:	7025      	strb	r5, [r4, #0]				 send_MegaTec_cmd(ups_info); 8028d0a:	f7ff fe83 	bl	8028a14 <send_MegaTec_cmd>				if (ups_megatec_rx_pdu()) 8028d0e:	f7ff fec5 	bl	8028a9c <ups_megatec_rx_pdu> 8028d12:	b110      	cbz	r0, 8028d1a <request_task+0x3a>	{	case ups_status_req:		ups_status_response(ups_pdu.data);		break;	case ups_info:		ups_info_response(ups_pdu.data); 8028d14:	4805      	ldr	r0, [pc, #20]	; (8028d2c <request_task+0x4c>) 8028d16:	f7ff ffb1 	bl	8028c7c <ups_info_response>			if(megatec_send){				megatec_send = false;				 send_MegaTec_cmd(ups_info);				if (ups_megatec_rx_pdu())					ups_megatec_process_pdu(ups_info);				megatec_send = true; 8028d1a:	7026      	strb	r6, [r4, #0]			}	        vTaskDelay(1000); 8028d1c:	f44f 707a 	mov.w	r0, #1000	; 0x3e8 8028d20:	f001 f8c0 	bl	8029ea4 <vTaskDelay>		} 8028d24:	e7e0      	b.n	8028ce8 <request_task+0x8> 8028d26:	bf00      	nop 8028d28:	200015ac 	.word	0x200015ac 8028d2c:	20002938 	.word	0x2000293808028d30 <ups_metac_service_pdu>:		break;	}}int ups_metac_service_pdu(cmdMegaTecEnums_t command){ 8028d30:	b570      	push	{r4, r5, r6, lr} 8028d32:	4606      	mov	r6, r0	while(!megatec_send) 8028d34:	4c14      	ldr	r4, [pc, #80]	; (8028d88 <ups_metac_service_pdu+0x58>) 8028d36:	e002      	b.n	8028d3e <ups_metac_service_pdu+0xe>	{		vTaskDelay(50); 8028d38:	2032      	movs	r0, #50	; 0x32 8028d3a:	f001 f8b3 	bl	8029ea4 <vTaskDelay>	}}int ups_metac_service_pdu(cmdMegaTecEnums_t command){	while(!megatec_send) 8028d3e:	7823      	ldrb	r3, [r4, #0] 8028d40:	4d11      	ldr	r5, [pc, #68]	; (8028d88 <ups_metac_service_pdu+0x58>) 8028d42:	2b00      	cmp	r3, #0 8028d44:	d0f8      	beq.n	8028d38 <ups_metac_service_pdu+0x8>	{		vTaskDelay(50);	}	megatec_send = false; 8028d46:	2300      	movs	r3, #0	send_MegaTec_cmd(command); 8028d48:	4630      	mov	r0, r6{	while(!megatec_send)	{		vTaskDelay(50);	}	megatec_send = false; 8028d4a:	702b      	strb	r3, [r5, #0]	send_MegaTec_cmd(command); 8028d4c:	f7ff fe62 	bl	8028a14 <send_MegaTec_cmd>	if (ups_megatec_rx_pdu()) 8028d50:	f7ff fea4 	bl	8028a9c <ups_megatec_rx_pdu> 8028d54:	b190      	cbz	r0, 8028d7c <ups_metac_service_pdu+0x4c>	{		megatec_send = true; 8028d56:	2401      	movs	r4, #1		if(strncmp(ups_pdu.data, "ACK", 3) == 0) 8028d58:	480c      	ldr	r0, [pc, #48]	; (8028d8c <ups_metac_service_pdu+0x5c>) 8028d5a:	490d      	ldr	r1, [pc, #52]	; (8028d90 <ups_metac_service_pdu+0x60>)	}	megatec_send = false;	send_MegaTec_cmd(command);	if (ups_megatec_rx_pdu())	{		megatec_send = true; 8028d5c:	702c      	strb	r4, [r5, #0]		if(strncmp(ups_pdu.data, "ACK", 3) == 0) 8028d5e:	2203      	movs	r2, #3 8028d60:	f7f9 f8e8 	bl	8021f34 <strncmp> 8028d64:	b168      	cbz	r0, 8028d82 <ups_metac_service_pdu+0x52>			return 1;		else if(strncmp(ups_pdu.data, "NCK", 3) == 0) 8028d66:	490b      	ldr	r1, [pc, #44]	; (8028d94 <ups_metac_service_pdu+0x64>) 8028d68:	4808      	ldr	r0, [pc, #32]	; (8028d8c <ups_metac_service_pdu+0x5c>) 8028d6a:	2203      	movs	r2, #3 8028d6c:	f7f9 f8e2 	bl	8021f34 <strncmp>			return 0; 8028d70:	2800      	cmp	r0, #0 8028d72:	bf14      	ite	ne 8028d74:	f04f 30ff 	movne.w	r0, #4294967295 8028d78:	2000      	moveq	r0, #0 8028d7a:	bd70      	pop	{r4, r5, r6, pc}	}	return -1; 8028d7c:	f04f 30ff 	mov.w	r0, #4294967295 8028d80:	bd70      	pop	{r4, r5, r6, pc}	send_MegaTec_cmd(command);	if (ups_megatec_rx_pdu())	{		megatec_send = true;		if(strncmp(ups_pdu.data, "ACK", 3) == 0)			return 1; 8028d82:	4620      	mov	r0, r4		else if(strncmp(ups_pdu.data, "NCK", 3) == 0)			return 0;	}	return -1;} 8028d84:	bd70      	pop	{r4, r5, r6, pc} 8028d86:	bf00      	nop 8028d88:	200015ac 	.word	0x200015ac 8028d8c:	20002938 	.word	0x20002938 8028d90:	08036e43 	.word	0x08036e43 8028d94:	08036e47 	.word	0x08036e4708028d98 <ups_megatec_init>:	        vTaskDelay(1000);		}}void ups_megatec_init(void) { 8028d98:	b51f      	push	{r0, r1, r2, r3, r4, lr}	init_UPS_value(); 8028d9a:	f7ff fe1d 	bl	80289d8 <init_UPS_value>	xTaskCreate(request_task, ( char * ) "request_task", configMINIMAL_STACK_SIZE * 2, NULL, tskIDLE_PRIORITY, NULL); 8028d9e:	2300      	movs	r3, #0 8028da0:	9300      	str	r3, [sp, #0] 8028da2:	9301      	str	r3, [sp, #4] 8028da4:	9302      	str	r3, [sp, #8] 8028da6:	9303      	str	r3, [sp, #12] 8028da8:	4903      	ldr	r1, [pc, #12]	; (8028db8 <ups_megatec_init+0x20>) 8028daa:	4804      	ldr	r0, [pc, #16]	; (8028dbc <ups_megatec_init+0x24>) 8028dac:	f44f 7280 	mov.w	r2, #256	; 0x100 8028db0:	f000 fdde 	bl	8029970 <xTaskGenericCreate>} 8028db4:	b005      	add	sp, #20 8028db6:	bd00      	pop	{pc} 8028db8:	08036e4b 	.word	0x08036e4b 8028dbc:	08028ce1 	.word	0x08028ce108028dc0 <rbuf32_init>:#define _size_w(n) sizeof(n) / sizeof(int)void rbuf32_init(rbuf_t *rbuf32, uint32_t *buffer, uint32_t size) {	rbuf32->buf_ptr = buffer;	rbuf32->size = size;	rbuf32->read_index = 0; 8028dc0:	2300      	movs	r3, #0#define _size_w(n) sizeof(n) / sizeof(int)void rbuf32_init(rbuf_t *rbuf32, uint32_t *buffer, uint32_t size) {	rbuf32->buf_ptr = buffer;	rbuf32->size = size; 8028dc2:	e880 0006 	stmia.w	r0, {r1, r2}	rbuf32->read_index = 0; 8028dc6:	6083      	str	r3, [r0, #8]	rbuf32->write_index = 0; 8028dc8:	60c3      	str	r3, [r0, #12] 8028dca:	4770      	bx	lr08028dcc <rbuf_isfull>:	return full_space;}bool rbuf_isfull(rbuf_t *rbuf) {	int r_tmp;	if (rbuf->write_index == (rbuf->size - 1)) { 8028dcc:	6842      	ldr	r2, [r0, #4] 8028dce:	68c3      	ldr	r3, [r0, #12] 8028dd0:	6880      	ldr	r0, [r0, #8] 8028dd2:	1e51      	subs	r1, r2, #1 8028dd4:	428b      	cmp	r3, r1		r_tmp = rbuf->read_index + rbuf->size; 8028dd6:	bf08      	it	eq 8028dd8:	1810      	addeq	r0, r2, r0	}	else		r_tmp = rbuf->read_index;	if (r_tmp - rbuf->write_index == 1) 8028dda:	1ac0      	subs	r0, r0, r3		return true;	else		return false;} 8028ddc:	1e42      	subs	r2, r0, #1 8028dde:	4250      	negs	r0, r2 8028de0:	4150      	adcs	r0, r2 8028de2:	4770      	bx	lr08028de4 <rbuf32_get>:	rbuf64->read_index = 0;	rbuf64->write_index = 0;}bool rbuf_isempty(rbuf_t *rbuf) {	if (rbuf->read_index == rbuf->write_index) 8028de4:	6883      	ldr	r3, [r0, #8] 8028de6:	68c2      	ldr	r2, [r0, #12] 8028de8:	4293      	cmp	r3, r2 8028dea:	d105      	bne.n	8028df8 <rbuf32_get+0x14> 8028dec:	e002      	b.n	8028df4 <rbuf32_get+0x10>	/* Check whether buffer is not empty */	if (!rbuf_isempty(rbuf32)) {		*data = rbuf32->buf_ptr[rbuf32->read_index++];		/* swap the read pointer */		if (rbuf32->read_index == (rbuf32->size))			rbuf32->read_index = 0; 8028dee:	2300      	movs	r3, #0 8028df0:	6083      	str	r3, [r0, #8] 8028df2:	e00a      	b.n	8028e0a <rbuf32_get+0x26>		return true;	}	else		return false; 8028df4:	2000      	movs	r0, #0 8028df6:	4770      	bx	lr}bool rbuf32_get(rbuf_t *rbuf32, uint32_t *data) {	/* Check whether buffer is not empty */	if (!rbuf_isempty(rbuf32)) {		*data = rbuf32->buf_ptr[rbuf32->read_index++]; 8028df8:	6802      	ldr	r2, [r0, #0] 8028dfa:	f852 2023 	ldr.w	r2, [r2, r3, lsl #2] 8028dfe:	600a      	str	r2, [r1, #0]		/* swap the read pointer */		if (rbuf32->read_index == (rbuf32->size)) 8028e00:	6842      	ldr	r2, [r0, #4]}bool rbuf32_get(rbuf_t *rbuf32, uint32_t *data) {	/* Check whether buffer is not empty */	if (!rbuf_isempty(rbuf32)) {		*data = rbuf32->buf_ptr[rbuf32->read_index++]; 8028e02:	3301      	adds	r3, #1		/* swap the read pointer */		if (rbuf32->read_index == (rbuf32->size)) 8028e04:	4293      	cmp	r3, r2}bool rbuf32_get(rbuf_t *rbuf32, uint32_t *data) {	/* Check whether buffer is not empty */	if (!rbuf_isempty(rbuf32)) {		*data = rbuf32->buf_ptr[rbuf32->read_index++]; 8028e06:	6083      	str	r3, [r0, #8]		/* swap the read pointer */		if (rbuf32->read_index == (rbuf32->size)) 8028e08:	d0f1      	beq.n	8028dee <rbuf32_get+0xa>			rbuf32->read_index = 0;		return true; 8028e0a:	2001      	movs	r0, #1	}	else		return false;} 8028e0c:	4770      	bx	lr08028e0e <rbuf32_put>:/* * Oldest data is overwriting when write_ptr reaches read_ptr - 1 (!). * For check use rbuf_isfull. */bool rbuf32_put(rbuf_t *rbuf32, uint32_t data) { 8028e0e:	b538      	push	{r3, r4, r5, lr} 8028e10:	4604      	mov	r4, r0 8028e12:	460d      	mov	r5, r1	if(!rbuf_isfull(rbuf32)) 8028e14:	f7ff ffda 	bl	8028dcc <rbuf_isfull> 8028e18:	b950      	cbnz	r0, 8028e30 <rbuf32_put+0x22>	{		rbuf32->buf_ptr[rbuf32->write_index++] = data; 8028e1a:	68e3      	ldr	r3, [r4, #12] 8028e1c:	6822      	ldr	r2, [r4, #0] 8028e1e:	f842 5023 	str.w	r5, [r2, r3, lsl #2]		/* swap the write pointer */		if (rbuf32->write_index == (rbuf32->size)) 8028e22:	6862      	ldr	r2, [r4, #4] */bool rbuf32_put(rbuf_t *rbuf32, uint32_t data) {	if(!rbuf_isfull(rbuf32))	{		rbuf32->buf_ptr[rbuf32->write_index++] = data; 8028e24:	3301      	adds	r3, #1		/* swap the write pointer */		if (rbuf32->write_index == (rbuf32->size)) 8028e26:	4293      	cmp	r3, r2 */bool rbuf32_put(rbuf_t *rbuf32, uint32_t data) {	if(!rbuf_isfull(rbuf32))	{		rbuf32->buf_ptr[rbuf32->write_index++] = data; 8028e28:	60e3      	str	r3, [r4, #12]		/* swap the write pointer */		if (rbuf32->write_index == (rbuf32->size)) 8028e2a:	d103      	bne.n	8028e34 <rbuf32_put+0x26>			rbuf32->write_index = 0; 8028e2c:	60e0      	str	r0, [r4, #12] 8028e2e:	e001      	b.n	8028e34 <rbuf32_put+0x26>		return true;	}	else		return false; 8028e30:	2000      	movs	r0, #0 8028e32:	bd38      	pop	{r3, r4, r5, pc}bool rbuf32_put(rbuf_t *rbuf32, uint32_t data) {	if(!rbuf_isfull(rbuf32))	{		rbuf32->buf_ptr[rbuf32->write_index++] = data;		/* swap the write pointer */		if (rbuf32->write_index == (rbuf32->size)) 8028e34:	2001      	movs	r0, #1			rbuf32->write_index = 0;		return true;	}	else		return false;} 8028e36:	bd38      	pop	{r3, r4, r5, pc}08028e38 <from_hex>:#include <ctype.h>#include <stdint.h>/* Converts a hex character to its integer value */char from_hex(char ch) {  return isdigit(ch) ? ch - '0' : tolower(ch) - 'a' + 10; 8028e38:	4b08      	ldr	r3, [pc, #32]	; (8028e5c <from_hex+0x24>) 8028e3a:	681b      	ldr	r3, [r3, #0] 8028e3c:	181b      	adds	r3, r3, r0 8028e3e:	785b      	ldrb	r3, [r3, #1] 8028e40:	f003 0204 	and.w	r2, r3, #4 8028e44:	b2d2      	uxtb	r2, r2 8028e46:	b10a      	cbz	r2, 8028e4c <from_hex+0x14> 8028e48:	3830      	subs	r0, #48	; 0x30 8028e4a:	e005      	b.n	8028e58 <from_hex+0x20> 8028e4c:	f003 0303 	and.w	r3, r3, #3 8028e50:	2b01      	cmp	r3, #1 8028e52:	bf08      	it	eq 8028e54:	3020      	addeq	r0, #32 8028e56:	3857      	subs	r0, #87	; 0x57 8028e58:	b2c0      	uxtb	r0, r0} 8028e5a:	4770      	bx	lr 8028e5c:	20000000 	.word	0x2000000008028e60 <url_decode>:  return buf;}/* Returns a url-decoded version of str *//* IMPORTANT:  be sure that outbuf is big enougth */char *url_decode(char *outbuf, uint32_t outlen, char *inbuf) { 8028e60:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 8028e64:	4607      	mov	r7, r0 8028e66:	460e      	mov	r6, r1  char *pstr = inbuf, *buf = outbuf, *pbuf = buf; 8028e68:	4604      	mov	r4, r0 8028e6a:	4615      	mov	r5, r2      if (pstr[1] && pstr[2]) {        *pbuf++ = from_hex(pstr[1]) << 4 | from_hex(pstr[2]);        pstr += 2;      }    } else if (*pstr == '+') {      *pbuf++ = ' '; 8028e6c:	f04f 0920 	mov.w	r9, #32/* Returns a url-decoded version of str *//* IMPORTANT:  be sure that outbuf is big enougth */char *url_decode(char *outbuf, uint32_t outlen, char *inbuf) {  char *pstr = inbuf, *buf = outbuf, *pbuf = buf;  while ((*pstr) && outlen > 1) { 8028e70:	e01e      	b.n	8028eb0 <url_decode+0x50>    if (*pstr == '%') { 8028e72:	2b25      	cmp	r3, #37	; 0x25 8028e74:	d112      	bne.n	8028e9c <url_decode+0x3c>      if (pstr[1] && pstr[2]) { 8028e76:	7868      	ldrb	r0, [r5, #1] 8028e78:	b1c0      	cbz	r0, 8028eac <url_decode+0x4c> 8028e7a:	f895 8002 	ldrb.w	r8, [r5, #2] 8028e7e:	f1b8 0f00 	cmp.w	r8, #0 8028e82:	d013      	beq.n	8028eac <url_decode+0x4c>        *pbuf++ = from_hex(pstr[1]) << 4 | from_hex(pstr[2]); 8028e84:	f7ff ffd8 	bl	8028e38 <from_hex> 8028e88:	4682      	mov	sl, r0 8028e8a:	4640      	mov	r0, r8 8028e8c:	f7ff ffd4 	bl	8028e38 <from_hex> 8028e90:	ea40 100a 	orr.w	r0, r0, sl, lsl #4 8028e94:	f804 0b01 	strb.w	r0, [r4], #1        pstr += 2; 8028e98:	3502      	adds	r5, #2 8028e9a:	e007      	b.n	8028eac <url_decode+0x4c>      }    } else if (*pstr == '+') { 8028e9c:	2b2b      	cmp	r3, #43	; 0x2b 8028e9e:	f104 0201 	add.w	r2, r4, #1      *pbuf++ = ' '; 8028ea2:	bf0c      	ite	eq 8028ea4:	f884 9000 	strbeq.w	r9, [r4]    } else {      *pbuf++ = *pstr; 8028ea8:	7023      	strbne	r3, [r4, #0] 8028eaa:	4614      	mov	r4, r2    }    pstr++; 8028eac:	3501      	adds	r5, #1    outlen--; 8028eae:	3e01      	subs	r6, #1/* Returns a url-decoded version of str *//* IMPORTANT:  be sure that outbuf is big enougth */char *url_decode(char *outbuf, uint32_t outlen, char *inbuf) {  char *pstr = inbuf, *buf = outbuf, *pbuf = buf;  while ((*pstr) && outlen > 1) { 8028eb0:	782b      	ldrb	r3, [r5, #0] 8028eb2:	b10b      	cbz	r3, 8028eb8 <url_decode+0x58> 8028eb4:	2e01      	cmp	r6, #1 8028eb6:	d8dc      	bhi.n	8028e72 <url_decode+0x12>      *pbuf++ = *pstr;    }    pstr++;    outlen--;  }  *pbuf = '\0'; 8028eb8:	2300      	movs	r3, #0 8028eba:	7023      	strb	r3, [r4, #0]  return buf;} 8028ebc:	4638      	mov	r0, r7 8028ebe:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 8028ec2:	0000      	movs	r0, r008028ec4 <UPS_DI0Monitor>:/**  * @brief  Мониторинг бита DI0 state  */void UPS_DI0Monitor(void){ 8028ec4:	b510      	push	{r4, lr}  static bool isValueRecv = false;  static uint8_t DI0OldState = 0;  uint8_t DI0StateCurrent;  DI0StateCurrent = get_state_din_outs(DIN1); 8028ec6:	2006      	movs	r0, #6 8028ec8:	f7ff fd7e 	bl	80289c8 <get_state_din_outs>  	if (!isValueRecv) { 8028ecc:	4a0e      	ldr	r2, [pc, #56]	; (8028f08 <UPS_DI0Monitor+0x44>) 8028ece:	4b0f      	ldr	r3, [pc, #60]	; (8028f0c <UPS_DI0Monitor+0x48>) 8028ed0:	7811      	ldrb	r1, [r2, #0]{  static bool isValueRecv = false;  static uint8_t DI0OldState = 0;  uint8_t DI0StateCurrent;  DI0StateCurrent = get_state_din_outs(DIN1); 8028ed2:	4604      	mov	r4, r0  	if (!isValueRecv) { 8028ed4:	b911      	cbnz	r1, 8028edc <UPS_DI0Monitor+0x18>	  isValueRecv = true; 8028ed6:	2101      	movs	r1, #1 8028ed8:	7011      	strb	r1, [r2, #0] 8028eda:	e012      	b.n	8028f02 <UPS_DI0Monitor+0x3e>	  DI0OldState = DI0StateCurrent;	  return;	}	if (DI0StateCurrent) 8028edc:	b110      	cbz	r0, 8028ee4 <UPS_DI0Monitor+0x20>	  flCriticalAlarm = true; 8028ede:	4a0c      	ldr	r2, [pc, #48]	; (8028f10 <UPS_DI0Monitor+0x4c>) 8028ee0:	2101      	movs	r1, #1 8028ee2:	7011      	strb	r1, [r2, #0]	// Значение параметра изменилось	if (DI0StateCurrent != DI0OldState) 8028ee4:	781b      	ldrb	r3, [r3, #0] 8028ee6:	42a3      	cmp	r3, r4 8028ee8:	d00a      	beq.n	8028f00 <UPS_DI0Monitor+0x3c>	{	  if(sSettings.sInOuts.din_type_act[0] == SNMP_TRAP) 8028eea:	4b0a      	ldr	r3, [pc, #40]	; (8028f14 <UPS_DI0Monitor+0x50>) 8028eec:	f893 337a 	ldrb.w	r3, [r3, #890]	; 0x37a 8028ef0:	2b02      	cmp	r3, #2 8028ef2:	d105      	bne.n	8028f00 <UPS_DI0Monitor+0x3c>	  {		  if (DI0StateCurrent) 8028ef4:	b10c      	cbz	r4, 8028efa <UPS_DI0Monitor+0x36>			SNMP_SendUserTrap(DI0_NORM); 8028ef6:	2005      	movs	r0, #5 8028ef8:	e000      	b.n	8028efc <UPS_DI0Monitor+0x38>		  else			SNMP_SendUserTrap(DI0_ALARM); 8028efa:	2006      	movs	r0, #6 8028efc:	f00c fd3c 	bl	8035978 <SNMP_SendUserTrap>	  }	}	DI0OldState = DI0StateCurrent; 8028f00:	4b02      	ldr	r3, [pc, #8]	; (8028f0c <UPS_DI0Monitor+0x48>) 8028f02:	701c      	strb	r4, [r3, #0] 8028f04:	bd10      	pop	{r4, pc} 8028f06:	bf00      	nop 8028f08:	20002977 	.word	0x20002977 8028f0c:	20002974 	.word	0x20002974 8028f10:	20002975 	.word	0x20002975 8028f14:	2000e984 	.word	0x2000e98408028f18 <UPS_CriticalAlarmMonitor>:  static uint8_t OldRO0type_Sourse = 0;  static uint8_t OldRO2type_Sourse = 0;  uint8_t CurrRO2type_Sourse = 0;  uint8_t CurrRO1type_Sourse = 0;  CurrRO1type_Sourse = sSettings.sInOuts.ro_type_source[0]; 8028f18:	4b24      	ldr	r3, [pc, #144]	; (8028fac <UPS_CriticalAlarmMonitor+0x94>)/**  * @brief  Мониторинг бита CriticalAlarm  */void UPS_CriticalAlarmMonitor(void){ 8028f1a:	b570      	push	{r4, r5, r6, lr}  static uint8_t OldRO0type_Sourse = 0;  static uint8_t OldRO2type_Sourse = 0;  uint8_t CurrRO2type_Sourse = 0;  uint8_t CurrRO1type_Sourse = 0;  CurrRO1type_Sourse = sSettings.sInOuts.ro_type_source[0]; 8028f1c:	f893 6378 	ldrb.w	r6, [r3, #888]	; 0x378  CurrRO2type_Sourse = sSettings.sInOuts.ro_type_source[1]; 8028f20:	f893 5379 	ldrb.w	r5, [r3, #889]	; 0x379  CriticalAlarmCurrent = flCriticalAlarm; 8028f24:	4b22      	ldr	r3, [pc, #136]	; (8028fb0 <UPS_CriticalAlarmMonitor+0x98>) 8028f26:	781c      	ldrb	r4, [r3, #0]  if (!isValueRecv) { 8028f28:	4b22      	ldr	r3, [pc, #136]	; (8028fb4 <UPS_CriticalAlarmMonitor+0x9c>) 8028f2a:	781a      	ldrb	r2, [r3, #0] 8028f2c:	b942      	cbnz	r2, 8028f40 <UPS_CriticalAlarmMonitor+0x28>	isValueRecv = true; 8028f2e:	2201      	movs	r2, #1 8028f30:	701a      	strb	r2, [r3, #0]	CriticalAlarmOldState = CriticalAlarmCurrent; 8028f32:	4b21      	ldr	r3, [pc, #132]	; (8028fb8 <UPS_CriticalAlarmMonitor+0xa0>) 8028f34:	701c      	strb	r4, [r3, #0]	OldRO0type_Sourse = CurrRO1type_Sourse; 8028f36:	4b21      	ldr	r3, [pc, #132]	; (8028fbc <UPS_CriticalAlarmMonitor+0xa4>) 8028f38:	701e      	strb	r6, [r3, #0]	OldRO2type_Sourse = CurrRO2type_Sourse; 8028f3a:	4b21      	ldr	r3, [pc, #132]	; (8028fc0 <UPS_CriticalAlarmMonitor+0xa8>) 8028f3c:	701d      	strb	r5, [r3, #0]	return; 8028f3e:	bd70      	pop	{r4, r5, r6, pc}  }  if(CriticalAlarmCurrent){ 8028f40:	b154      	cbz	r4, 8028f58 <UPS_CriticalAlarmMonitor+0x40>	  if (UPS.Present) 8028f42:	4b20      	ldr	r3, [pc, #128]	; (8028fc4 <UPS_CriticalAlarmMonitor+0xac>) 8028f44:	f893 302a 	ldrb.w	r3, [r3, #42]	; 0x2a		  LED_Toggle(LED_MAJOR_R); 8028f48:	200b      	movs	r0, #11	OldRO2type_Sourse = CurrRO2type_Sourse;	return;  }  if(CriticalAlarmCurrent){	  if (UPS.Present) 8028f4a:	b113      	cbz	r3, 8028f52 <UPS_CriticalAlarmMonitor+0x3a>		  LED_Toggle(LED_MAJOR_R); 8028f4c:	f7ff fcc2 	bl	80288d4 <LED_Toggle> 8028f50:	e005      	b.n	8028f5e <UPS_CriticalAlarmMonitor+0x46>	  else		  LED_On(LED_MAJOR_R); 8028f52:	f7ff fc85 	bl	8028860 <LED_On> 8028f56:	e002      	b.n	8028f5e <UPS_CriticalAlarmMonitor+0x46>  }  else{	  LED_Off(LED_MAJOR_R); 8028f58:	200b      	movs	r0, #11 8028f5a:	f7ff fc84 	bl	8028866 <LED_Off>  }  // Значение параметра изменилось  if (CriticalAlarmCurrent != CriticalAlarmOldState) 8028f5e:	4b16      	ldr	r3, [pc, #88]	; (8028fb8 <UPS_CriticalAlarmMonitor+0xa0>) 8028f60:	781b      	ldrb	r3, [r3, #0] 8028f62:	42a3      	cmp	r3, r4 8028f64:	d01a      	beq.n	8028f9c <UPS_CriticalAlarmMonitor+0x84>  {	  if(OldRO0type_Sourse == CRITICAL){ 8028f66:	4b15      	ldr	r3, [pc, #84]	; (8028fbc <UPS_CriticalAlarmMonitor+0xa4>) 8028f68:	7818      	ldrb	r0, [r3, #0] 8028f6a:	2801      	cmp	r0, #1 8028f6c:	d109      	bne.n	8028f82 <UPS_CriticalAlarmMonitor+0x6a>		  if(CriticalAlarmCurrent) 8028f6e:	b10c      	cbz	r4, 8028f74 <UPS_CriticalAlarmMonitor+0x5c>			  SetROInt(1, 0); 8028f70:	2100      	movs	r1, #0 8028f72:	e001      	b.n	8028f78 <UPS_CriticalAlarmMonitor+0x60>		  else			  SetROInt(0, 0); 8028f74:	4620      	mov	r0, r4 8028f76:	4621      	mov	r1, r4 8028f78:	f7ff fa29 	bl	80283ce <SetROInt>		  SNMP_SendUserTrap(DO0_TOGGLED); 8028f7c:	2007      	movs	r0, #7 8028f7e:	f00c fcfb 	bl	8035978 <SNMP_SendUserTrap>	  }	  if(OldRO2type_Sourse == CRITICAL){ 8028f82:	4b0f      	ldr	r3, [pc, #60]	; (8028fc0 <UPS_CriticalAlarmMonitor+0xa8>) 8028f84:	7819      	ldrb	r1, [r3, #0] 8028f86:	2901      	cmp	r1, #1 8028f88:	d108      	bne.n	8028f9c <UPS_CriticalAlarmMonitor+0x84>		  if(CriticalAlarmCurrent) 8028f8a:	b10c      	cbz	r4, 8028f90 <UPS_CriticalAlarmMonitor+0x78>			  SetROInt(1, 1); 8028f8c:	4608      	mov	r0, r1 8028f8e:	e000      	b.n	8028f92 <UPS_CriticalAlarmMonitor+0x7a>		  else			  SetROInt(0, 1); 8028f90:	4620      	mov	r0, r4 8028f92:	f7ff fa1c 	bl	80283ce <SetROInt>	  	  SNMP_SendUserTrap(DO1_TOGGLED); 8028f96:	2008      	movs	r0, #8 8028f98:	f00c fcee 	bl	8035978 <SNMP_SendUserTrap>			  SetROInt(0, 1);		  SNMP_SendUserTrap(DO1_TOGGLED);	  }  }  OldRO0type_Sourse = CurrRO1type_Sourse; 8028f9c:	4b07      	ldr	r3, [pc, #28]	; (8028fbc <UPS_CriticalAlarmMonitor+0xa4>) 8028f9e:	701e      	strb	r6, [r3, #0]  OldRO2type_Sourse = CurrRO2type_Sourse; 8028fa0:	4b07      	ldr	r3, [pc, #28]	; (8028fc0 <UPS_CriticalAlarmMonitor+0xa8>) 8028fa2:	701d      	strb	r5, [r3, #0]  CriticalAlarmOldState = CriticalAlarmCurrent; 8028fa4:	4b04      	ldr	r3, [pc, #16]	; (8028fb8 <UPS_CriticalAlarmMonitor+0xa0>) 8028fa6:	701c      	strb	r4, [r3, #0] 8028fa8:	bd70      	pop	{r4, r5, r6, pc} 8028faa:	bf00      	nop 8028fac:	2000e984 	.word	0x2000e984 8028fb0:	20002975 	.word	0x20002975 8028fb4:	2000297d 	.word	0x2000297d 8028fb8:	2000297e 	.word	0x2000297e 8028fbc:	20002976 	.word	0x20002976 8028fc0:	20002979 	.word	0x20002979 8028fc4:	2000e954 	.word	0x2000e95408028fc8 <UPS_NonCriticalAlarmMonitor>:  static uint8_t OldRO0type_Sourse = 0;  static uint8_t OldRO2type_Sourse = 0;  uint8_t CurrRO2type_Sourse = 0;  uint8_t CurrRO1type_Sourse = 0;  CurrRO1type_Sourse = sSettings.sInOuts.ro_type_source[0]; 8028fc8:	4b1b      	ldr	r3, [pc, #108]	; (8029038 <UPS_NonCriticalAlarmMonitor+0x70>)  CurrRO2type_Sourse = sSettings.sInOuts.ro_type_source[1];  NonCriticalAlarmCurrent = flNonCriticalAlarm;  if (!isValueRecv) { 8028fca:	491c      	ldr	r1, [pc, #112]	; (802903c <UPS_NonCriticalAlarmMonitor+0x74>) 8028fcc:	4a1c      	ldr	r2, [pc, #112]	; (8029040 <UPS_NonCriticalAlarmMonitor+0x78>) 8028fce:	7808      	ldrb	r0, [r1, #0]/**  * @brief  Мониторинг бита NonCriticalAlarm  */void UPS_NonCriticalAlarmMonitor(void){ 8028fd0:	b570      	push	{r4, r5, r6, lr}  static uint8_t OldRO0type_Sourse = 0;  static uint8_t OldRO2type_Sourse = 0;  uint8_t CurrRO2type_Sourse = 0;  uint8_t CurrRO1type_Sourse = 0;  CurrRO1type_Sourse = sSettings.sInOuts.ro_type_source[0]; 8028fd2:	f893 6378 	ldrb.w	r6, [r3, #888]	; 0x378  CurrRO2type_Sourse = sSettings.sInOuts.ro_type_source[1]; 8028fd6:	f893 5379 	ldrb.w	r5, [r3, #889]	; 0x379  NonCriticalAlarmCurrent = flNonCriticalAlarm; 8028fda:	4b1a      	ldr	r3, [pc, #104]	; (8029044 <UPS_NonCriticalAlarmMonitor+0x7c>) 8028fdc:	781c      	ldrb	r4, [r3, #0] 8028fde:	4b1a      	ldr	r3, [pc, #104]	; (8029048 <UPS_NonCriticalAlarmMonitor+0x80>)  if (!isValueRecv) { 8028fe0:	b930      	cbnz	r0, 8028ff0 <UPS_NonCriticalAlarmMonitor+0x28>	isValueRecv = true;	NonCriticalAlarmOldState = NonCriticalAlarmCurrent;	OldRO0type_Sourse = CurrRO1type_Sourse; 8028fe2:	701e      	strb	r6, [r3, #0]	OldRO2type_Sourse = CurrRO2type_Sourse; 8028fe4:	4b19      	ldr	r3, [pc, #100]	; (802904c <UPS_NonCriticalAlarmMonitor+0x84>)  CurrRO2type_Sourse = sSettings.sInOuts.ro_type_source[1];  NonCriticalAlarmCurrent = flNonCriticalAlarm;  if (!isValueRecv) {	isValueRecv = true;	NonCriticalAlarmOldState = NonCriticalAlarmCurrent; 8028fe6:	7014      	strb	r4, [r2, #0]  CurrRO1type_Sourse = sSettings.sInOuts.ro_type_source[0];  CurrRO2type_Sourse = sSettings.sInOuts.ro_type_source[1];  NonCriticalAlarmCurrent = flNonCriticalAlarm;  if (!isValueRecv) {	isValueRecv = true; 8028fe8:	2001      	movs	r0, #1 8028fea:	7008      	strb	r0, [r1, #0]	NonCriticalAlarmOldState = NonCriticalAlarmCurrent;	OldRO0type_Sourse = CurrRO1type_Sourse;	OldRO2type_Sourse = CurrRO2type_Sourse; 8028fec:	701d      	strb	r5, [r3, #0]	return; 8028fee:	bd70      	pop	{r4, r5, r6, pc}  }  // Значение параметра изменилось  if (NonCriticalAlarmCurrent != NonCriticalAlarmOldState) 8028ff0:	7812      	ldrb	r2, [r2, #0] 8028ff2:	42a2      	cmp	r2, r4 8028ff4:	d019      	beq.n	802902a <UPS_NonCriticalAlarmMonitor+0x62>  {	  if(OldRO0type_Sourse == CRITICAL){ 8028ff6:	7818      	ldrb	r0, [r3, #0] 8028ff8:	2801      	cmp	r0, #1 8028ffa:	d109      	bne.n	8029010 <UPS_NonCriticalAlarmMonitor+0x48>		  if(NonCriticalAlarmCurrent) 8028ffc:	b10c      	cbz	r4, 8029002 <UPS_NonCriticalAlarmMonitor+0x3a>			  SetROInt(1, 0); 8028ffe:	2100      	movs	r1, #0 8029000:	e001      	b.n	8029006 <UPS_NonCriticalAlarmMonitor+0x3e>		  else			  SetROInt(0, 0); 8029002:	4620      	mov	r0, r4 8029004:	4621      	mov	r1, r4 8029006:	f7ff f9e2 	bl	80283ce <SetROInt>		  SNMP_SendUserTrap(DO0_TOGGLED); 802900a:	2007      	movs	r0, #7 802900c:	f00c fcb4 	bl	8035978 <SNMP_SendUserTrap>	  }	  if(OldRO2type_Sourse == CRITICAL){ 8029010:	4b0e      	ldr	r3, [pc, #56]	; (802904c <UPS_NonCriticalAlarmMonitor+0x84>) 8029012:	7819      	ldrb	r1, [r3, #0] 8029014:	2901      	cmp	r1, #1 8029016:	d108      	bne.n	802902a <UPS_NonCriticalAlarmMonitor+0x62>		  if(NonCriticalAlarmCurrent) 8029018:	b10c      	cbz	r4, 802901e <UPS_NonCriticalAlarmMonitor+0x56>			  SetROInt(1, 1); 802901a:	4608      	mov	r0, r1 802901c:	e000      	b.n	8029020 <UPS_NonCriticalAlarmMonitor+0x58>		  else			  SetROInt(0, 1); 802901e:	4620      	mov	r0, r4 8029020:	f7ff f9d5 	bl	80283ce <SetROInt>	  	  SNMP_SendUserTrap(DO1_TOGGLED); 8029024:	2008      	movs	r0, #8 8029026:	f00c fca7 	bl	8035978 <SNMP_SendUserTrap>			  SetROInt(0, 1);		  SNMP_SendUserTrap(DO1_TOGGLED);	  }  }  OldRO0type_Sourse = CurrRO1type_Sourse; 802902a:	4b07      	ldr	r3, [pc, #28]	; (8029048 <UPS_NonCriticalAlarmMonitor+0x80>) 802902c:	701e      	strb	r6, [r3, #0]  OldRO2type_Sourse = CurrRO2type_Sourse; 802902e:	4b07      	ldr	r3, [pc, #28]	; (802904c <UPS_NonCriticalAlarmMonitor+0x84>) 8029030:	701d      	strb	r5, [r3, #0]  NonCriticalAlarmOldState = NonCriticalAlarmCurrent; 8029032:	4b03      	ldr	r3, [pc, #12]	; (8029040 <UPS_NonCriticalAlarmMonitor+0x78>) 8029034:	701c      	strb	r4, [r3, #0] 8029036:	bd70      	pop	{r4, r5, r6, pc} 8029038:	2000e984 	.word	0x2000e984 802903c:	20002980 	.word	0x20002980 8029040:	2000297f 	.word	0x2000297f 8029044:	2000297a 	.word	0x2000297a 8029048:	20002981 	.word	0x20002981 802904c:	20002970 	.word	0x2000297008029050 <UPS_LineFailMonitor>:/**  * @brief  Мониторинг бита LainFail  */void UPS_LineFailMonitor(void){ 8029050:	b538      	push	{r3, r4, r5, lr}  static bool isValueRecv = false;  static uint8_t lineFailOldState = 0;  uint8_t lineFailCurrent;    lineFailCurrent = (UPS.Status >> 7) & 0x01; 8029052:	4b0c      	ldr	r3, [pc, #48]	; (8029084 <UPS_LineFailMonitor+0x34>) 8029054:	4d0c      	ldr	r5, [pc, #48]	; (8029088 <UPS_LineFailMonitor+0x38>) 8029056:	7cdc      	ldrb	r4, [r3, #19]    if (!isValueRecv) { 8029058:	4b0c      	ldr	r3, [pc, #48]	; (802908c <UPS_LineFailMonitor+0x3c>) 802905a:	781a      	ldrb	r2, [r3, #0]{  static bool isValueRecv = false;  static uint8_t lineFailOldState = 0;  uint8_t lineFailCurrent;    lineFailCurrent = (UPS.Status >> 7) & 0x01; 802905c:	09e4      	lsrs	r4, r4, #7    if (!isValueRecv) { 802905e:	b912      	cbnz	r2, 8029066 <UPS_LineFailMonitor+0x16>    isValueRecv = true; 8029060:	2201      	movs	r2, #1 8029062:	701a      	strb	r2, [r3, #0] 8029064:	e00c      	b.n	8029080 <UPS_LineFailMonitor+0x30>    lineFailOldState = lineFailCurrent;    return;  }  if (lineFailCurrent) 8029066:	b114      	cbz	r4, 802906e <UPS_LineFailMonitor+0x1e>	  flCriticalAlarm = true; 8029068:	4b09      	ldr	r3, [pc, #36]	; (8029090 <UPS_LineFailMonitor+0x40>) 802906a:	2201      	movs	r2, #1 802906c:	701a      	strb	r2, [r3, #0]      // Значение параметра изменилось  if (lineFailCurrent != lineFailOldState) 802906e:	782b      	ldrb	r3, [r5, #0] 8029070:	42a3      	cmp	r3, r4 8029072:	d005      	beq.n	8029080 <UPS_LineFailMonitor+0x30>  {    if (lineFailCurrent) 8029074:	b10c      	cbz	r4, 802907a <UPS_LineFailMonitor+0x2a>      SNMP_SendUserTrap(LINE_ALARM); 8029076:	200b      	movs	r0, #11 8029078:	e000      	b.n	802907c <UPS_LineFailMonitor+0x2c>    else      SNMP_SendUserTrap(LINE_NORM); 802907a:	200c      	movs	r0, #12 802907c:	f00c fc7c 	bl	8035978 <SNMP_SendUserTrap>  }    lineFailOldState = lineFailCurrent; 8029080:	702c      	strb	r4, [r5, #0] 8029082:	bd38      	pop	{r3, r4, r5, pc} 8029084:	2000e954 	.word	0x2000e954 8029088:	2000297c 	.word	0x2000297c 802908c:	2000296f 	.word	0x2000296f 8029090:	20002975 	.word	0x2000297508029094 <UPS_LowBatMonitor>:/**  * @brief  Мониторинг бита LowBat    */void UPS_LowBatMonitor(void){ 8029094:	b538      	push	{r3, r4, r5, lr}  static bool isValueRecv = false;  static uint8_t lowBatOldState = 0;  uint8_t lowBatCurrent;  if((UPS.Status >> 7) & 0x01) 8029096:	4b0e      	ldr	r3, [pc, #56]	; (80290d0 <UPS_LowBatMonitor+0x3c>) 8029098:	4d0e      	ldr	r5, [pc, #56]	; (80290d4 <UPS_LowBatMonitor+0x40>) 802909a:	7cdb      	ldrb	r3, [r3, #19] 802909c:	09dc      	lsrs	r4, r3, #7	  lowBatCurrent = (UPS.Status >> 6) & 0x01; 802909e:	bf18      	it	ne 80290a0:	f3c3 1480 	ubfxne	r4, r3, #6, #1  else	  lowBatCurrent = 0;    if (!isValueRecv) { 80290a4:	4b0c      	ldr	r3, [pc, #48]	; (80290d8 <UPS_LowBatMonitor+0x44>) 80290a6:	781a      	ldrb	r2, [r3, #0] 80290a8:	b912      	cbnz	r2, 80290b0 <UPS_LowBatMonitor+0x1c>    isValueRecv = true; 80290aa:	2201      	movs	r2, #1 80290ac:	701a      	strb	r2, [r3, #0] 80290ae:	e00c      	b.n	80290ca <UPS_LowBatMonitor+0x36>    lowBatOldState = lowBatCurrent;    return;  }  if (lowBatCurrent) 80290b0:	b114      	cbz	r4, 80290b8 <UPS_LowBatMonitor+0x24>	  flNonCriticalAlarm = true; 80290b2:	4b0a      	ldr	r3, [pc, #40]	; (80290dc <UPS_LowBatMonitor+0x48>) 80290b4:	2201      	movs	r2, #1 80290b6:	701a      	strb	r2, [r3, #0]  // Значение параметра изменилось  if (lowBatCurrent != lowBatOldState) 80290b8:	782b      	ldrb	r3, [r5, #0] 80290ba:	42a3      	cmp	r3, r4 80290bc:	d005      	beq.n	80290ca <UPS_LowBatMonitor+0x36>  {    if (lowBatCurrent) 80290be:	b10c      	cbz	r4, 80290c4 <UPS_LowBatMonitor+0x30>      SNMP_SendUserTrap(LOW_BAT_ALARM); 80290c0:	200d      	movs	r0, #13 80290c2:	e000      	b.n	80290c6 <UPS_LowBatMonitor+0x32>    else      SNMP_SendUserTrap(LOW_BAT_NORM); 80290c4:	200e      	movs	r0, #14 80290c6:	f00c fc57 	bl	8035978 <SNMP_SendUserTrap>  }    lowBatOldState = lowBatCurrent; 80290ca:	702c      	strb	r4, [r5, #0] 80290cc:	bd38      	pop	{r3, r4, r5, pc} 80290ce:	bf00      	nop 80290d0:	2000e954 	.word	0x2000e954 80290d4:	2000296e 	.word	0x2000296e 80290d8:	20002971 	.word	0x20002971 80290dc:	2000297a 	.word	0x2000297a080290e0 <UPS_PowerMonitor>:/**  * @brief  Мониторинг нагрузки   */void UPS_PowerMonitor(void){ 80290e0:	b538      	push	{r3, r4, r5, lr}  float load;  static uint8_t stateCurrent = HYST_IDLE;      load = UPS.Load; 80290e2:	4b17      	ldr	r3, [pc, #92]	; (8029140 <UPS_PowerMonitor+0x60>) 80290e4:	7c18      	ldrb	r0, [r3, #16] 80290e6:	f7f7 fe33 	bl	8020d50 <__aeabi_ui2f>  /* Отслеживается переход через верхнюю границу */  if (load > UPS_LOAD) 80290ea:	4916      	ldr	r1, [pc, #88]	; (8029144 <UPS_PowerMonitor+0x64>)void UPS_PowerMonitor(void){  float load;  static uint8_t stateCurrent = HYST_IDLE;      load = UPS.Load; 80290ec:	4604      	mov	r4, r0  /* Отслеживается переход через верхнюю границу */  if (load > UPS_LOAD) 80290ee:	f7f7 fef3 	bl	8020ed8 <__aeabi_fcmpgt> 80290f2:	b170      	cbz	r0, 8029112 <UPS_PowerMonitor+0x32>  {	flCriticalAlarm = true; 80290f4:	4b14      	ldr	r3, [pc, #80]	; (8029148 <UPS_PowerMonitor+0x68>)    if (stateCurrent == HYST_IDLE) 80290f6:	4c15      	ldr	r4, [pc, #84]	; (802914c <UPS_PowerMonitor+0x6c>)  load = UPS.Load;  /* Отслеживается переход через верхнюю границу */  if (load > UPS_LOAD)  {	flCriticalAlarm = true; 80290f8:	2501      	movs	r5, #1 80290fa:	701d      	strb	r5, [r3, #0]    if (stateCurrent == HYST_IDLE) 80290fc:	7823      	ldrb	r3, [r4, #0] 80290fe:	b9f3      	cbnz	r3, 802913e <UPS_PowerMonitor+0x5e>	{      LED_On(LED_MINOR_R); 8029100:	200d      	movs	r0, #13 8029102:	f7ff fbad 	bl	8028860 <LED_On>      LED_On(LED_MINOR_G); 8029106:	200c      	movs	r0, #12 8029108:	f7ff fbaa 	bl	8028860 <LED_On>	  stateCurrent = HYST_UP; 802910c:	7025      	strb	r5, [r4, #0]      	  // Отправка трапа о завышении 	  SNMP_SendUserTrap(POWER_ALARM); 802910e:	200f      	movs	r0, #15 8029110:	e011      	b.n	8029136 <UPS_PowerMonitor+0x56>	}  }  /* Отслеживается нормализация */  else if (load < (UPS_LOAD - UPS_LOAD_HIST)) 8029112:	4620      	mov	r0, r4 8029114:	490e      	ldr	r1, [pc, #56]	; (8029150 <UPS_PowerMonitor+0x70>) 8029116:	f7f7 fec1 	bl	8020e9c <__aeabi_fcmplt> 802911a:	b180      	cbz	r0, 802913e <UPS_PowerMonitor+0x5e>  {    if (stateCurrent == HYST_UP) 802911c:	4c0b      	ldr	r4, [pc, #44]	; (802914c <UPS_PowerMonitor+0x6c>) 802911e:	7823      	ldrb	r3, [r4, #0] 8029120:	2b01      	cmp	r3, #1 8029122:	d10c      	bne.n	802913e <UPS_PowerMonitor+0x5e>	{    	LED_Off(LED_MINOR_R); 8029124:	200d      	movs	r0, #13 8029126:	f7ff fb9e 	bl	8028866 <LED_Off>    	LED_Off(LED_MINOR_G); 802912a:	200c      	movs	r0, #12 802912c:	f7ff fb9b 	bl	8028866 <LED_Off>	  stateCurrent = HYST_IDLE; 8029130:	2300      	movs	r3, #0 8029132:	7023      	strb	r3, [r4, #0]      	  // Отправка трапа о нормализации 	  SNMP_SendUserTrap(POWER_NORM); 8029134:	2010      	movs	r0, #16	}  }} 8029136:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}    	LED_Off(LED_MINOR_R);    	LED_Off(LED_MINOR_G);	  stateCurrent = HYST_IDLE;      	  // Отправка трапа о нормализации 	  SNMP_SendUserTrap(POWER_NORM); 802913a:	f00c bc1d 	b.w	8035978 <SNMP_SendUserTrap> 802913e:	bd38      	pop	{r3, r4, r5, pc} 8029140:	2000e954 	.word	0x2000e954 8029144:	41200000 	.word	0x41200000 8029148:	20002975 	.word	0x20002975 802914c:	20002983 	.word	0x20002983 8029150:	41100000 	.word	0x4110000008029154 <UPS_TemperatureMonitor>:void UPS_TemperatureMonitor(void){  float temperature;  static uint8_t stateCurrent = HYST_IDLE;      temperature = UPS.Temp; 8029154:	4b10      	ldr	r3, [pc, #64]	; (8029198 <UPS_TemperatureMonitor+0x44>)  /* Отслеживается переход через верхнюю границу */  if (temperature > UPS_TEMPERATURE) 8029156:	4911      	ldr	r1, [pc, #68]	; (802919c <UPS_TemperatureMonitor+0x48>)/**  * @brief  Мониторинг температуры   */void UPS_TemperatureMonitor(void){ 8029158:	b510      	push	{r4, lr}  float temperature;  static uint8_t stateCurrent = HYST_IDLE;      temperature = UPS.Temp; 802915a:	68dc      	ldr	r4, [r3, #12]  /* Отслеживается переход через верхнюю границу */  if (temperature > UPS_TEMPERATURE) 802915c:	4620      	mov	r0, r4 802915e:	f7f7 febb 	bl	8020ed8 <__aeabi_fcmpgt> 8029162:	b140      	cbz	r0, 8029176 <UPS_TemperatureMonitor+0x22>  {	flCriticalAlarm = true; 8029164:	4b0e      	ldr	r3, [pc, #56]	; (80291a0 <UPS_TemperatureMonitor+0x4c>) 8029166:	2201      	movs	r2, #1 8029168:	701a      	strb	r2, [r3, #0]    if (stateCurrent == HYST_IDLE) 802916a:	4b0e      	ldr	r3, [pc, #56]	; (80291a4 <UPS_TemperatureMonitor+0x50>) 802916c:	7819      	ldrb	r1, [r3, #0] 802916e:	b991      	cbnz	r1, 8029196 <UPS_TemperatureMonitor+0x42>	{	  stateCurrent = HYST_UP; 8029170:	701a      	strb	r2, [r3, #0]      	  // Отправка трапа о завышении 	  SNMP_SendUserTrap(BATTERY_TEMPERATURE_ALARM); 8029172:	200a      	movs	r0, #10 8029174:	e00b      	b.n	802918e <UPS_TemperatureMonitor+0x3a>	}  }  /* Отслеживается нормализация */  else if (temperature < (UPS_TEMPERATURE - UPS_TEMPERATURE_HIST)) 8029176:	4620      	mov	r0, r4 8029178:	490b      	ldr	r1, [pc, #44]	; (80291a8 <UPS_TemperatureMonitor+0x54>) 802917a:	f7f7 fe8f 	bl	8020e9c <__aeabi_fcmplt> 802917e:	b150      	cbz	r0, 8029196 <UPS_TemperatureMonitor+0x42>  {    if (stateCurrent == HYST_UP) 8029180:	4b08      	ldr	r3, [pc, #32]	; (80291a4 <UPS_TemperatureMonitor+0x50>) 8029182:	781a      	ldrb	r2, [r3, #0] 8029184:	2a01      	cmp	r2, #1 8029186:	d106      	bne.n	8029196 <UPS_TemperatureMonitor+0x42>	{	  stateCurrent = HYST_IDLE; 8029188:	2200      	movs	r2, #0 802918a:	701a      	strb	r2, [r3, #0]      	  // Отправка трапа о нормализации 	  SNMP_SendUserTrap(BATTERY_TEMPERATURE_NORM); 802918c:	2009      	movs	r0, #9	}  }} 802918e:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    if (stateCurrent == HYST_UP)	{	  stateCurrent = HYST_IDLE;      	  // Отправка трапа о нормализации 	  SNMP_SendUserTrap(BATTERY_TEMPERATURE_NORM); 8029192:	f00c bbf1 	b.w	8035978 <SNMP_SendUserTrap> 8029196:	bd10      	pop	{r4, pc} 8029198:	2000e954 	.word	0x2000e954 802919c:	41a00000 	.word	0x41a00000 80291a0:	20002975 	.word	0x20002975 80291a4:	2000297b 	.word	0x2000297b 80291a8:	41980000 	.word	0x41980000080291ac <UPS_ConnectMonitor>:/**  * @brief  Мониторинг параметра upsParams.connect  */void UPS_ConnectMonitor(void){ 80291ac:	b538      	push	{r3, r4, r5, lr}  static bool isValueRecv = false;  static uint8_t connectOldState = 0;  uint8_t connectCurrent;    connectCurrent = UPS.Present; 80291ae:	4b0c      	ldr	r3, [pc, #48]	; (80291e0 <UPS_ConnectMonitor+0x34>) 80291b0:	4d0c      	ldr	r5, [pc, #48]	; (80291e4 <UPS_ConnectMonitor+0x38>) 80291b2:	f893 402a 	ldrb.w	r4, [r3, #42]	; 0x2a    if (!isValueRecv) { 80291b6:	4b0c      	ldr	r3, [pc, #48]	; (80291e8 <UPS_ConnectMonitor+0x3c>) 80291b8:	781a      	ldrb	r2, [r3, #0] 80291ba:	b912      	cbnz	r2, 80291c2 <UPS_ConnectMonitor+0x16>    isValueRecv = true; 80291bc:	2201      	movs	r2, #1 80291be:	701a      	strb	r2, [r3, #0] 80291c0:	e00c      	b.n	80291dc <UPS_ConnectMonitor+0x30>    connectOldState = connectCurrent;    return;  }  if (connectCurrent) 80291c2:	b114      	cbz	r4, 80291ca <UPS_ConnectMonitor+0x1e>  	  flCriticalAlarm = true; 80291c4:	4b09      	ldr	r3, [pc, #36]	; (80291ec <UPS_ConnectMonitor+0x40>) 80291c6:	2201      	movs	r2, #1 80291c8:	701a      	strb	r2, [r3, #0]  // Значение параметра изменилось  if (connectCurrent != connectOldState) 80291ca:	782b      	ldrb	r3, [r5, #0] 80291cc:	42a3      	cmp	r3, r4 80291ce:	d005      	beq.n	80291dc <UPS_ConnectMonitor+0x30>  {    if (connectCurrent) 80291d0:	b10c      	cbz	r4, 80291d6 <UPS_ConnectMonitor+0x2a>      SNMP_SendUserTrap(CONNECT_MONITOR_NORM); 80291d2:	2012      	movs	r0, #18 80291d4:	e000      	b.n	80291d8 <UPS_ConnectMonitor+0x2c>    else      SNMP_SendUserTrap(CONNECT_MONITOR_ALARM); 80291d6:	2011      	movs	r0, #17 80291d8:	f00c fbce 	bl	8035978 <SNMP_SendUserTrap>  }    connectOldState = connectCurrent; 80291dc:	702c      	strb	r4, [r5, #0] 80291de:	bd38      	pop	{r3, r4, r5, pc} 80291e0:	2000e954 	.word	0x2000e954 80291e4:	20002982 	.word	0x20002982 80291e8:	20002978 	.word	0x20002978 80291ec:	20002975 	.word	0x20002975080291f0 <UPS_BatteryConnectMonitor>:/**  * @brief  Мониторинг параметра upsParams.connect  */void UPS_BatteryConnectMonitor(void){ 80291f0:	b538      	push	{r3, r4, r5, lr}  static bool isValueRecv = false;  static uint8_t AKBconnectOldState = 0;  uint8_t AKBconnectCurrent;  if(((UPS.Status >> 7) & 0x01) == 0) 80291f2:	4b0e      	ldr	r3, [pc, #56]	; (802922c <UPS_BatteryConnectMonitor+0x3c>) 80291f4:	4d0e      	ldr	r5, [pc, #56]	; (8029230 <UPS_BatteryConnectMonitor+0x40>) 80291f6:	7cdc      	ldrb	r4, [r3, #19] 80291f8:	09e3      	lsrs	r3, r4, #7	  AKBconnectCurrent = (UPS.Status >> 6) & 0x01;  else{	  AKBconnectCurrent = 0;  }  if (!isValueRecv) { 80291fa:	4b0e      	ldr	r3, [pc, #56]	; (8029234 <UPS_BatteryConnectMonitor+0x44>) 80291fc:	781a      	ldrb	r2, [r3, #0]  static bool isValueRecv = false;  static uint8_t AKBconnectOldState = 0;  uint8_t AKBconnectCurrent;  if(((UPS.Status >> 7) & 0x01) == 0)	  AKBconnectCurrent = (UPS.Status >> 6) & 0x01; 80291fe:	bf0c      	ite	eq 8029200:	f3c4 1480 	ubfxeq	r4, r4, #6, #1  else{	  AKBconnectCurrent = 0; 8029204:	2400      	movne	r4, #0  }  if (!isValueRecv) { 8029206:	b912      	cbnz	r2, 802920e <UPS_BatteryConnectMonitor+0x1e>    isValueRecv = true; 8029208:	2201      	movs	r2, #1 802920a:	701a      	strb	r2, [r3, #0] 802920c:	e00c      	b.n	8029228 <UPS_BatteryConnectMonitor+0x38>    AKBconnectOldState = AKBconnectCurrent;    return;  }  if (AKBconnectCurrent) 802920e:	b114      	cbz	r4, 8029216 <UPS_BatteryConnectMonitor+0x26>  	  flCriticalAlarm = true; 8029210:	4b09      	ldr	r3, [pc, #36]	; (8029238 <UPS_BatteryConnectMonitor+0x48>) 8029212:	2201      	movs	r2, #1 8029214:	701a      	strb	r2, [r3, #0]  // Значение параметра изменилось  if (AKBconnectCurrent != AKBconnectOldState) 8029216:	782b      	ldrb	r3, [r5, #0] 8029218:	42a3      	cmp	r3, r4 802921a:	d005      	beq.n	8029228 <UPS_BatteryConnectMonitor+0x38>  {    if (AKBconnectCurrent) 802921c:	b10c      	cbz	r4, 8029222 <UPS_BatteryConnectMonitor+0x32>      SNMP_SendUserTrap(BATTERY_CONNECT_NORM); 802921e:	2014      	movs	r0, #20 8029220:	e000      	b.n	8029224 <UPS_BatteryConnectMonitor+0x34>    else      SNMP_SendUserTrap(BATTERY_CONNECT_ALARM); 8029222:	2013      	movs	r0, #19 8029224:	f00c fba8 	bl	8035978 <SNMP_SendUserTrap>  }  AKBconnectOldState = AKBconnectCurrent; 8029228:	702c      	strb	r4, [r5, #0] 802922a:	bd38      	pop	{r3, r4, r5, pc} 802922c:	2000e954 	.word	0x2000e954 8029230:	20002972 	.word	0x20002972 8029234:	20002973 	.word	0x20002973 8029238:	20002975 	.word	0x200029750802923c <UPS_Monitor>:/**  * @brief  Задача мониторинга параметров UPS  */void UPS_Monitor(void *params){ 802923c:	b508      	push	{r3, lr}  for (;;)  {	  flCriticalAlarm = false; 802923e:	4e0e      	ldr	r6, [pc, #56]	; (8029278 <UPS_Monitor+0x3c>)	  flNonCriticalAlarm = false; 8029240:	4d0e      	ldr	r5, [pc, #56]	; (802927c <UPS_Monitor+0x40>)  */void UPS_Monitor(void *params){  for (;;)  {	  flCriticalAlarm = false; 8029242:	2400      	movs	r4, #0 8029244:	7034      	strb	r4, [r6, #0]	  flNonCriticalAlarm = false; 8029246:	702c      	strb	r4, [r5, #0]    // Проверяем флаг подключения UPS   //if (UPS.Present)    {      UPS_LineFailMonitor(); 8029248:	f7ff ff02 	bl	8029050 <UPS_LineFailMonitor>      UPS_LowBatMonitor();   802924c:	f7ff ff22 	bl	8029094 <UPS_LowBatMonitor>      UPS_PowerMonitor(); 8029250:	f7ff ff46 	bl	80290e0 <UPS_PowerMonitor>      UPS_TemperatureMonitor(); 8029254:	f7ff ff7e 	bl	8029154 <UPS_TemperatureMonitor>      UPS_BatteryConnectMonitor(); 8029258:	f7ff ffca 	bl	80291f0 <UPS_BatteryConnectMonitor>    }    UPS_ConnectMonitor(); 802925c:	f7ff ffa6 	bl	80291ac <UPS_ConnectMonitor>    UPS_DI0Monitor(); 8029260:	f7ff fe30 	bl	8028ec4 <UPS_DI0Monitor>    UPS_CriticalAlarmMonitor(); 8029264:	f7ff fe58 	bl	8028f18 <UPS_CriticalAlarmMonitor>    UPS_NonCriticalAlarmMonitor(); 8029268:	f7ff feae 	bl	8028fc8 <UPS_NonCriticalAlarmMonitor>          vTaskDelay(1000); 802926c:	f44f 707a 	mov.w	r0, #1000	; 0x3e8 8029270:	f000 fe18 	bl	8029ea4 <vTaskDelay> 8029274:	e7e6      	b.n	8029244 <UPS_Monitor+0x8> 8029276:	bf00      	nop 8029278:	20002975 	.word	0x20002975 802927c:	2000297a 	.word	0x2000297a08029280 <vListInitialise>:void vListInitialise( List_t * const pxList ){	/* The list structure contains a list item which is used to mark the	end of the list.  To initialise the list the list end is inserted	as the only list entry. */	pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd );			/*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */ 8029280:	f100 0308 	add.w	r3, r0, #8 8029284:	6043      	str	r3, [r0, #4]	/* The list end value is the highest possible value in the list to	ensure it remains at the end of the list. */	pxList->xListEnd.xItemValue = portMAX_DELAY; 8029286:	f04f 32ff 	mov.w	r2, #4294967295	/* The list end next and previous pointers point to itself so we know	when the list is empty. */	pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd );	/*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */ 802928a:	60c3      	str	r3, [r0, #12]	pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */ 802928c:	6103      	str	r3, [r0, #16]	pxList->uxNumberOfItems = ( UBaseType_t ) 0U; 802928e:	2300      	movs	r3, #0	as the only list entry. */	pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd );			/*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */	/* The list end value is the highest possible value in the list to	ensure it remains at the end of the list. */	pxList->xListEnd.xItemValue = portMAX_DELAY; 8029290:	6082      	str	r2, [r0, #8]	/* The list end next and previous pointers point to itself so we know	when the list is empty. */	pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd );	/*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */	pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd );/*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */	pxList->uxNumberOfItems = ( UBaseType_t ) 0U; 8029292:	6003      	str	r3, [r0, #0] 8029294:	4770      	bx	lr08029296 <vListInitialiseItem>:/*-----------------------------------------------------------*/void vListInitialiseItem( ListItem_t * const pxItem ){	/* Make sure the list item is not recorded as being on a list. */	pxItem->pvContainer = NULL; 8029296:	2300      	movs	r3, #0 8029298:	6103      	str	r3, [r0, #16] 802929a:	4770      	bx	lr0802929c <vListInsertEnd>:}/*-----------------------------------------------------------*/void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ){ListItem_t * const pxIndex = pxList->pxIndex; 802929c:	6843      	ldr	r3, [r0, #4]	pxNewListItem->pxPrevious = pxIndex->pxPrevious;	pxIndex->pxPrevious->pxNext = pxNewListItem;	pxIndex->pxPrevious = pxNewListItem;	/* Remember which list the item is in. */	pxNewListItem->pvContainer = ( void * ) pxList; 802929e:	6108      	str	r0, [r1, #16]	/* Insert a new list item into pxList, but rather than sort the list,	makes the new list item the last item to be removed by a call to	listGET_OWNER_OF_NEXT_ENTRY(). */	pxNewListItem->pxNext = pxIndex;	pxNewListItem->pxPrevious = pxIndex->pxPrevious; 80292a0:	689a      	ldr	r2, [r3, #8]	listTEST_LIST_ITEM_INTEGRITY( pxNewListItem );	/* Insert a new list item into pxList, but rather than sort the list,	makes the new list item the last item to be removed by a call to	listGET_OWNER_OF_NEXT_ENTRY(). */	pxNewListItem->pxNext = pxIndex; 80292a2:	604b      	str	r3, [r1, #4]	pxNewListItem->pxPrevious = pxIndex->pxPrevious; 80292a4:	608a      	str	r2, [r1, #8]	pxIndex->pxPrevious->pxNext = pxNewListItem; 80292a6:	689a      	ldr	r2, [r3, #8]	pxIndex->pxPrevious = pxNewListItem; 80292a8:	6099      	str	r1, [r3, #8]	/* Remember which list the item is in. */	pxNewListItem->pvContainer = ( void * ) pxList;	( pxList->uxNumberOfItems )++; 80292aa:	6803      	ldr	r3, [r0, #0]	/* Insert a new list item into pxList, but rather than sort the list,	makes the new list item the last item to be removed by a call to	listGET_OWNER_OF_NEXT_ENTRY(). */	pxNewListItem->pxNext = pxIndex;	pxNewListItem->pxPrevious = pxIndex->pxPrevious;	pxIndex->pxPrevious->pxNext = pxNewListItem; 80292ac:	6051      	str	r1, [r2, #4]	pxIndex->pxPrevious = pxNewListItem;	/* Remember which list the item is in. */	pxNewListItem->pvContainer = ( void * ) pxList;	( pxList->uxNumberOfItems )++; 80292ae:	3301      	adds	r3, #1 80292b0:	6003      	str	r3, [r0, #0] 80292b2:	4770      	bx	lr080292b4 <vListInsert>:/*-----------------------------------------------------------*/void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ){ListItem_t *pxIterator;const TickType_t xValueOfInsertion = pxNewListItem->xItemValue; 80292b4:	680a      	ldr	r2, [r1, #0]	new list item should be placed after it.  This ensures that TCB's which are	stored in ready lists (all of which have the same xItemValue value) get a	share of the CPU.  However, if the xItemValue is the same as the back marker	the iteration loop below will not end.  Therefore the value is checked	first, and the algorithm slightly modified if necessary. */	if( xValueOfInsertion == portMAX_DELAY ) 80292b6:	1c53      	adds	r3, r2, #1	( pxList->uxNumberOfItems )++;}/*-----------------------------------------------------------*/void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ){ 80292b8:	b530      	push	{r4, r5, lr}	new list item should be placed after it.  This ensures that TCB's which are	stored in ready lists (all of which have the same xItemValue value) get a	share of the CPU.  However, if the xItemValue is the same as the back marker	the iteration loop below will not end.  Therefore the value is checked	first, and the algorithm slightly modified if necessary. */	if( xValueOfInsertion == portMAX_DELAY ) 80292ba:	d101      	bne.n	80292c0 <vListInsert+0xc>	{		pxIterator = pxList->xListEnd.pxPrevious; 80292bc:	6903      	ldr	r3, [r0, #16] 80292be:	e007      	b.n	80292d0 <vListInsert+0x1c>			4) Using a queue or semaphore before it has been initialised or			   before the scheduler has been started (are interrupts firing			   before vTaskStartScheduler() has been called?).		**********************************************************************/		for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */ 80292c0:	f100 0308 	add.w	r3, r0, #8 80292c4:	e000      	b.n	80292c8 <vListInsert+0x14> 80292c6:	4623      	mov	r3, r4 80292c8:	685c      	ldr	r4, [r3, #4] 80292ca:	6825      	ldr	r5, [r4, #0] 80292cc:	4295      	cmp	r5, r2 80292ce:	d9fa      	bls.n	80292c6 <vListInsert+0x12>			/* There is nothing to do here, just iterating to the wanted			insertion position. */		}	}	pxNewListItem->pxNext = pxIterator->pxNext; 80292d0:	685a      	ldr	r2, [r3, #4]	pxNewListItem->pxPrevious = pxIterator;	pxIterator->pxNext = pxNewListItem;	/* Remember which list the item is in.  This allows fast removal of the	item later. */	pxNewListItem->pvContainer = ( void * ) pxList; 80292d2:	6108      	str	r0, [r1, #16]			/* There is nothing to do here, just iterating to the wanted			insertion position. */		}	}	pxNewListItem->pxNext = pxIterator->pxNext; 80292d4:	604a      	str	r2, [r1, #4]	pxNewListItem->pxNext->pxPrevious = pxNewListItem; 80292d6:	6091      	str	r1, [r2, #8]	pxNewListItem->pxPrevious = pxIterator;	pxIterator->pxNext = pxNewListItem; 80292d8:	6059      	str	r1, [r3, #4]		}	}	pxNewListItem->pxNext = pxIterator->pxNext;	pxNewListItem->pxNext->pxPrevious = pxNewListItem;	pxNewListItem->pxPrevious = pxIterator; 80292da:	608b      	str	r3, [r1, #8]	/* Remember which list the item is in.  This allows fast removal of the	item later. */	pxNewListItem->pvContainer = ( void * ) pxList;	( pxList->uxNumberOfItems )++; 80292dc:	6803      	ldr	r3, [r0, #0] 80292de:	3301      	adds	r3, #1 80292e0:	6003      	str	r3, [r0, #0] 80292e2:	bd30      	pop	{r4, r5, pc}080292e4 <uxListRemove>:{/* The list item knows which list it is in.  Obtain the list from the listitem. */List_t * const pxList = ( List_t * ) pxItemToRemove->pvContainer;	pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; 80292e4:	6841      	ldr	r1, [r0, #4] 80292e6:	6882      	ldr	r2, [r0, #8]UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ){/* The list item knows which list it is in.  Obtain the list from the listitem. */List_t * const pxList = ( List_t * ) pxItemToRemove->pvContainer; 80292e8:	6903      	ldr	r3, [r0, #16]	pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; 80292ea:	608a      	str	r2, [r1, #8]	pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; 80292ec:	6882      	ldr	r2, [r0, #8] 80292ee:	6051      	str	r1, [r2, #4]	/* Make sure the index is left pointing to a valid item. */	if( pxList->pxIndex == pxItemToRemove ) 80292f0:	6859      	ldr	r1, [r3, #4] 80292f2:	4281      	cmp	r1, r0	{		pxList->pxIndex = pxItemToRemove->pxPrevious; 80292f4:	bf08      	it	eq 80292f6:	605a      	streq	r2, [r3, #4]	else	{		mtCOVERAGE_TEST_MARKER();	}	pxItemToRemove->pvContainer = NULL; 80292f8:	2200      	movs	r2, #0 80292fa:	6102      	str	r2, [r0, #16]	( pxList->uxNumberOfItems )--; 80292fc:	6818      	ldr	r0, [r3, #0] 80292fe:	3801      	subs	r0, #1 8029300:	6018      	str	r0, [r3, #0]	return pxList->uxNumberOfItems;} 8029302:	4770      	bx	lr08029304 <prvUnlockQueue>:	}}/*-----------------------------------------------------------*/static void prvUnlockQueue( Queue_t * const pxQueue ){ 8029304:	b538      	push	{r3, r4, r5, lr} 8029306:	4604      	mov	r4, r0			{				/* Tasks that are removed from the event list will get added to				the pending ready list as the scheduler is still suspended. */				if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )				{					if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) 8029308:	f104 0524 	add.w	r5, r4, #36	; 0x24	/* The lock counts contains the number of extra data items placed or	removed from the queue while the queue was locked.  When a queue is	locked items can be added or removed, but the event lists cannot be	updated. */	taskENTER_CRITICAL(); 802930c:	f001 f9e0 	bl	802a6d0 <vPortEnterCritical>	{		/* See if data was added to the queue while it was locked. */		while( pxQueue->xTxLock > queueLOCKED_UNMODIFIED ) 8029310:	e00a      	b.n	8029328 <prvUnlockQueue+0x24>			}			#else /* configUSE_QUEUE_SETS */			{				/* Tasks that are removed from the event list will get added to				the pending ready list as the scheduler is still suspended. */				if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) 8029312:	6a63      	ldr	r3, [r4, #36]	; 0x24 8029314:	b15b      	cbz	r3, 802932e <prvUnlockQueue+0x2a>				{					if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) 8029316:	4628      	mov	r0, r5 8029318:	f000 fece 	bl	802a0b8 <xTaskRemoveFromEventList> 802931c:	b108      	cbz	r0, 8029322 <prvUnlockQueue+0x1e>					{						/* The task waiting has a higher priority so record that a						context	switch is required. */						vTaskMissedYield(); 802931e:	f000 ff45 	bl	802a1ac <vTaskMissedYield>					break;				}			}			#endif /* configUSE_QUEUE_SETS */			--( pxQueue->xTxLock ); 8029322:	6ca3      	ldr	r3, [r4, #72]	; 0x48 8029324:	3b01      	subs	r3, #1 8029326:	64a3      	str	r3, [r4, #72]	; 0x48	locked items can be added or removed, but the event lists cannot be	updated. */	taskENTER_CRITICAL();	{		/* See if data was added to the queue while it was locked. */		while( pxQueue->xTxLock > queueLOCKED_UNMODIFIED ) 8029328:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802932a:	2b00      	cmp	r3, #0 802932c:	dcf1      	bgt.n	8029312 <prvUnlockQueue+0xe>			#endif /* configUSE_QUEUE_SETS */			--( pxQueue->xTxLock );		}		pxQueue->xTxLock = queueUNLOCKED; 802932e:	f04f 33ff 	mov.w	r3, #4294967295 8029332:	64a3      	str	r3, [r4, #72]	; 0x48	}	taskEXIT_CRITICAL(); 8029334:	f001 f9f8 	bl	802a728 <vPortExitCritical>	{		while( pxQueue->xRxLock > queueLOCKED_UNMODIFIED )		{			if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )			{				if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) 8029338:	f104 0510 	add.w	r5, r4, #16		pxQueue->xTxLock = queueUNLOCKED;	}	taskEXIT_CRITICAL();	/* Do the same for the Rx lock. */	taskENTER_CRITICAL(); 802933c:	f001 f9c8 	bl	802a6d0 <vPortEnterCritical>	{		while( pxQueue->xRxLock > queueLOCKED_UNMODIFIED ) 8029340:	e00a      	b.n	8029358 <prvUnlockQueue+0x54>		{			if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) 8029342:	6923      	ldr	r3, [r4, #16] 8029344:	b15b      	cbz	r3, 802935e <prvUnlockQueue+0x5a>			{				if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) 8029346:	4628      	mov	r0, r5 8029348:	f000 feb6 	bl	802a0b8 <xTaskRemoveFromEventList> 802934c:	b108      	cbz	r0, 8029352 <prvUnlockQueue+0x4e>				{					vTaskMissedYield(); 802934e:	f000 ff2d 	bl	802a1ac <vTaskMissedYield>				else				{					mtCOVERAGE_TEST_MARKER();				}				--( pxQueue->xRxLock ); 8029352:	6c63      	ldr	r3, [r4, #68]	; 0x44 8029354:	3b01      	subs	r3, #1 8029356:	6463      	str	r3, [r4, #68]	; 0x44	taskEXIT_CRITICAL();	/* Do the same for the Rx lock. */	taskENTER_CRITICAL();	{		while( pxQueue->xRxLock > queueLOCKED_UNMODIFIED ) 8029358:	6c63      	ldr	r3, [r4, #68]	; 0x44 802935a:	2b00      	cmp	r3, #0 802935c:	dcf1      	bgt.n	8029342 <prvUnlockQueue+0x3e>			{				break;			}		}		pxQueue->xRxLock = queueUNLOCKED; 802935e:	f04f 33ff 	mov.w	r3, #4294967295 8029362:	6463      	str	r3, [r4, #68]	; 0x44	}	taskEXIT_CRITICAL();} 8029364:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}			}		}		pxQueue->xRxLock = queueUNLOCKED;	}	taskEXIT_CRITICAL(); 8029368:	f001 b9de 	b.w	802a728 <vPortExitCritical>0802936c <prvCopyDataFromQueue>:}/*-----------------------------------------------------------*/static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ){	if( pxQueue->uxItemSize != ( UBaseType_t ) 0 ) 802936c:	6c02      	ldr	r2, [r0, #64]	; 0x40	return xReturn;}/*-----------------------------------------------------------*/static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ){ 802936e:	b530      	push	{r4, r5, lr} 8029370:	4603      	mov	r3, r0	if( pxQueue->uxItemSize != ( UBaseType_t ) 0 ) 8029372:	b16a      	cbz	r2, 8029390 <prvCopyDataFromQueue+0x24>	{		pxQueue->u.pcReadFrom += pxQueue->uxItemSize; 8029374:	68c4      	ldr	r4, [r0, #12]		if( pxQueue->u.pcReadFrom >= pxQueue->pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */ 8029376:	6845      	ldr	r5, [r0, #4]static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ){	if( pxQueue->uxItemSize != ( UBaseType_t ) 0 )	{		pxQueue->u.pcReadFrom += pxQueue->uxItemSize; 8029378:	18a4      	adds	r4, r4, r2		if( pxQueue->u.pcReadFrom >= pxQueue->pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */ 802937a:	42ac      	cmp	r4, r5static void prvCopyDataFromQueue( Queue_t * const pxQueue, void * const pvBuffer ){	if( pxQueue->uxItemSize != ( UBaseType_t ) 0 )	{		pxQueue->u.pcReadFrom += pxQueue->uxItemSize; 802937c:	60c4      	str	r4, [r0, #12]		if( pxQueue->u.pcReadFrom >= pxQueue->pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */		{			pxQueue->u.pcReadFrom = pxQueue->pcHead; 802937e:	bf24      	itt	cs 8029380:	6804      	ldrcs	r4, [r0, #0] 8029382:	60c4      	strcs	r4, [r0, #12]		}		else		{			mtCOVERAGE_TEST_MARKER();		}		( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 MISRA exception as the casts are only redundant for some ports.  Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0. */ 8029384:	4608      	mov	r0, r1 8029386:	68d9      	ldr	r1, [r3, #12]	}} 8029388:	e8bd 4030 	ldmia.w	sp!, {r4, r5, lr}		}		else		{			mtCOVERAGE_TEST_MARKER();		}		( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 MISRA exception as the casts are only redundant for some ports.  Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0. */ 802938c:	f7f8 bade 	b.w	802194c <memcpy> 8029390:	bd30      	pop	{r4, r5, pc}08029392 <prvCopyDataToQueue>:#endif /* configUSE_TRACE_FACILITY *//*-----------------------------------------------------------*/static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ){ 8029392:	b538      	push	{r3, r4, r5, lr} 8029394:	4615      	mov	r5, r2BaseType_t xReturn = pdFALSE;	if( pxQueue->uxItemSize == ( UBaseType_t ) 0 ) 8029396:	6c02      	ldr	r2, [r0, #64]	; 0x40#endif /* configUSE_TRACE_FACILITY *//*-----------------------------------------------------------*/static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ){ 8029398:	4604      	mov	r4, r0BaseType_t xReturn = pdFALSE;	if( pxQueue->uxItemSize == ( UBaseType_t ) 0 ) 802939a:	b93a      	cbnz	r2, 80293ac <prvCopyDataToQueue+0x1a>	{		#if ( configUSE_MUTEXES == 1 )		{			if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) 802939c:	6805      	ldr	r5, [r0, #0] 802939e:	b105      	cbz	r5, 80293a2 <prvCopyDataToQueue+0x10> 80293a0:	e028      	b.n	80293f4 <prvCopyDataToQueue+0x62>			{				/* The mutex is no longer being held. */				xReturn = xTaskPriorityDisinherit( ( void * ) pxQueue->pxMutexHolder ); 80293a2:	6840      	ldr	r0, [r0, #4] 80293a4:	f000 ff64 	bl	802a270 <xTaskPriorityDisinherit>				pxQueue->pxMutexHolder = NULL; 80293a8:	6065      	str	r5, [r4, #4] 80293aa:	e024      	b.n	80293f6 <prvCopyDataToQueue+0x64>				mtCOVERAGE_TEST_MARKER();			}		}		#endif /* configUSE_MUTEXES */	}	else if( xPosition == queueSEND_TO_BACK ) 80293ac:	b96d      	cbnz	r5, 80293ca <prvCopyDataToQueue+0x38>	{		( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. */ 80293ae:	6880      	ldr	r0, [r0, #8] 80293b0:	f7f8 facc 	bl	802194c <memcpy>		pxQueue->pcWriteTo += pxQueue->uxItemSize; 80293b4:	68a2      	ldr	r2, [r4, #8] 80293b6:	6c23      	ldr	r3, [r4, #64]	; 0x40 80293b8:	18d3      	adds	r3, r2, r3		if( pxQueue->pcWriteTo >= pxQueue->pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ 80293ba:	6862      	ldr	r2, [r4, #4]		#endif /* configUSE_MUTEXES */	}	else if( xPosition == queueSEND_TO_BACK )	{		( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. */		pxQueue->pcWriteTo += pxQueue->uxItemSize; 80293bc:	60a3      	str	r3, [r4, #8]		if( pxQueue->pcWriteTo >= pxQueue->pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ 80293be:	4293      	cmp	r3, r2 80293c0:	d318      	bcc.n	80293f4 <prvCopyDataToQueue+0x62>		{			pxQueue->pcWriteTo = pxQueue->pcHead; 80293c2:	6823      	ldr	r3, [r4, #0]#endif /* configUSE_TRACE_FACILITY *//*-----------------------------------------------------------*/static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ){BaseType_t xReturn = pdFALSE; 80293c4:	4628      	mov	r0, r5	{		( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. */		pxQueue->pcWriteTo += pxQueue->uxItemSize;		if( pxQueue->pcWriteTo >= pxQueue->pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */		{			pxQueue->pcWriteTo = pxQueue->pcHead; 80293c6:	60a3      	str	r3, [r4, #8] 80293c8:	e015      	b.n	80293f6 <prvCopyDataToQueue+0x64>			mtCOVERAGE_TEST_MARKER();		}	}	else	{		( void ) memcpy( ( void * ) pxQueue->u.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 80293ca:	68c0      	ldr	r0, [r0, #12] 80293cc:	f7f8 fabe 	bl	802194c <memcpy>		pxQueue->u.pcReadFrom -= pxQueue->uxItemSize; 80293d0:	6c23      	ldr	r3, [r4, #64]	; 0x40 80293d2:	68e2      	ldr	r2, [r4, #12]		if( pxQueue->u.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ 80293d4:	6821      	ldr	r1, [r4, #0]		}	}	else	{		( void ) memcpy( ( void * ) pxQueue->u.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */		pxQueue->u.pcReadFrom -= pxQueue->uxItemSize; 80293d6:	425b      	negs	r3, r3 80293d8:	18d2      	adds	r2, r2, r3		if( pxQueue->u.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ 80293da:	428a      	cmp	r2, r1		}	}	else	{		( void ) memcpy( ( void * ) pxQueue->u.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */		pxQueue->u.pcReadFrom -= pxQueue->uxItemSize; 80293dc:	60e2      	str	r2, [r4, #12]		if( pxQueue->u.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ 80293de:	d202      	bcs.n	80293e6 <prvCopyDataToQueue+0x54>		{			pxQueue->u.pcReadFrom = ( pxQueue->pcTail - pxQueue->uxItemSize ); 80293e0:	6862      	ldr	r2, [r4, #4] 80293e2:	18d3      	adds	r3, r2, r3 80293e4:	60e3      	str	r3, [r4, #12]		else		{			mtCOVERAGE_TEST_MARKER();		}		if( xPosition == queueOVERWRITE ) 80293e6:	2d02      	cmp	r5, #2 80293e8:	d104      	bne.n	80293f4 <prvCopyDataToQueue+0x62>		{			if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) 80293ea:	6ba3      	ldr	r3, [r4, #56]	; 0x38 80293ec:	b113      	cbz	r3, 80293f4 <prvCopyDataToQueue+0x62>			{				/* An item is not being added but overwritten, so subtract				one from the recorded number of items in the queue so when				one is added again below the number of recorded items remains				correct. */				--( pxQueue->uxMessagesWaiting ); 80293ee:	6ba3      	ldr	r3, [r4, #56]	; 0x38 80293f0:	3b01      	subs	r3, #1 80293f2:	63a3      	str	r3, [r4, #56]	; 0x38#endif /* configUSE_TRACE_FACILITY *//*-----------------------------------------------------------*/static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ){BaseType_t xReturn = pdFALSE; 80293f4:	2000      	movs	r0, #0		{			mtCOVERAGE_TEST_MARKER();		}	}	++( pxQueue->uxMessagesWaiting ); 80293f6:	6ba3      	ldr	r3, [r4, #56]	; 0x38 80293f8:	3301      	adds	r3, #1 80293fa:	63a3      	str	r3, [r4, #56]	; 0x38	return xReturn;} 80293fc:	bd38      	pop	{r3, r4, r5, pc}080293fe <xQueueGenericReset>:	}														\	taskEXIT_CRITICAL()/*-----------------------------------------------------------*/BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ){ 80293fe:	b538      	push	{r3, r4, r5, lr} 8029400:	460d      	mov	r5, r1Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue ); 8029402:	4604      	mov	r4, r0 8029404:	b910      	cbnz	r0, 802940c <xQueueGenericReset+0xe> 8029406:	f001 f95b 	bl	802a6c0 <ulPortSetInterruptMask> 802940a:	e7fe      	b.n	802940a <xQueueGenericReset+0xc>	taskENTER_CRITICAL(); 802940c:	f001 f960 	bl	802a6d0 <vPortEnterCritical>	{		pxQueue->pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); 8029410:	6823      	ldr	r3, [r4, #0] 8029412:	6be0      	ldr	r0, [r4, #60]	; 0x3c 8029414:	6c22      	ldr	r2, [r4, #64]	; 0x40		pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;		pxQueue->pcWriteTo = pxQueue->pcHead; 8029416:	60a3      	str	r3, [r4, #8]	configASSERT( pxQueue );	taskENTER_CRITICAL();	{		pxQueue->pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); 8029418:	fb00 3102 	mla	r1, r0, r2, r3		pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;		pxQueue->pcWriteTo = pxQueue->pcHead;		pxQueue->u.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - ( UBaseType_t ) 1U ) * pxQueue->uxItemSize ); 802941c:	3801      	subs	r0, #1 802941e:	fb02 3300 	mla	r3, r2, r0, r3	configASSERT( pxQueue );	taskENTER_CRITICAL();	{		pxQueue->pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); 8029422:	6061      	str	r1, [r4, #4]		pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;		pxQueue->pcWriteTo = pxQueue->pcHead;		pxQueue->u.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - ( UBaseType_t ) 1U ) * pxQueue->uxItemSize ); 8029424:	60e3      	str	r3, [r4, #12]	configASSERT( pxQueue );	taskENTER_CRITICAL();	{		pxQueue->pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize );		pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U; 8029426:	2100      	movs	r1, #0		pxQueue->pcWriteTo = pxQueue->pcHead;		pxQueue->u.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - ( UBaseType_t ) 1U ) * pxQueue->uxItemSize );		pxQueue->xRxLock = queueUNLOCKED; 8029428:	f04f 33ff 	mov.w	r3, #4294967295	configASSERT( pxQueue );	taskENTER_CRITICAL();	{		pxQueue->pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize );		pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U; 802942c:	63a1      	str	r1, [r4, #56]	; 0x38		pxQueue->pcWriteTo = pxQueue->pcHead;		pxQueue->u.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - ( UBaseType_t ) 1U ) * pxQueue->uxItemSize );		pxQueue->xRxLock = queueUNLOCKED; 802942e:	6463      	str	r3, [r4, #68]	; 0x44		pxQueue->xTxLock = queueUNLOCKED; 8029430:	64a3      	str	r3, [r4, #72]	; 0x48		if( xNewQueue == pdFALSE ) 8029432:	b955      	cbnz	r5, 802944a <xQueueGenericReset+0x4c>			/* If there are tasks blocked waiting to read from the queue, then			the tasks will remain blocked as after this function exits the queue			will still be empty.  If there are tasks blocked waiting to write to			the queue, then one should be unblocked as after this function exits			it will be possible to write to it. */			if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) 8029434:	6923      	ldr	r3, [r4, #16] 8029436:	b183      	cbz	r3, 802945a <xQueueGenericReset+0x5c>			{				if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) == pdTRUE ) 8029438:	f104 0010 	add.w	r0, r4, #16 802943c:	f000 fe3c 	bl	802a0b8 <xTaskRemoveFromEventList> 8029440:	2801      	cmp	r0, #1 8029442:	d10a      	bne.n	802945a <xQueueGenericReset+0x5c>				{					queueYIELD_IF_USING_PREEMPTION(); 8029444:	f001 f930 	bl	802a6a8 <vPortYield> 8029448:	e007      	b.n	802945a <xQueueGenericReset+0x5c>			}		}		else		{			/* Ensure the event queues start in the correct state. */			vListInitialise( &( pxQueue->xTasksWaitingToSend ) ); 802944a:	f104 0010 	add.w	r0, r4, #16 802944e:	f7ff ff17 	bl	8029280 <vListInitialise>			vListInitialise( &( pxQueue->xTasksWaitingToReceive ) ); 8029452:	f104 0024 	add.w	r0, r4, #36	; 0x24 8029456:	f7ff ff13 	bl	8029280 <vListInitialise>		}	}	taskEXIT_CRITICAL(); 802945a:	f001 f965 	bl	802a728 <vPortExitCritical>	/* A value is returned for calling semantic consistency with previous	versions. */	return pdPASS;} 802945e:	2001      	movs	r0, #1 8029460:	bd38      	pop	{r3, r4, r5, pc}08029462 <xQueueGenericCreate>:/*-----------------------------------------------------------*/QueueHandle_t xQueueGenericCreate( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType ){ 8029462:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8029464:	460d      	mov	r5, r1 8029466:	4617      	mov	r7, r2	/* Remove compiler warnings about unused parameters should	configUSE_TRACE_FACILITY not be set to 1. */	( void ) ucQueueType;	configASSERT( uxQueueLength > ( UBaseType_t ) 0 ); 8029468:	4606      	mov	r6, r0 802946a:	b910      	cbnz	r0, 8029472 <xQueueGenericCreate+0x10> 802946c:	f001 f928 	bl	802a6c0 <ulPortSetInterruptMask> 8029470:	e7fe      	b.n	8029470 <xQueueGenericCreate+0xe>	if( uxItemSize == ( UBaseType_t ) 0 ) 8029472:	b111      	cbz	r1, 802947a <xQueueGenericCreate+0x18>	}	else	{		/* The queue is one byte longer than asked for to make wrap checking		easier/faster. */		xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ) + ( size_t ) 1; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 8029474:	4348      	muls	r0, r1 8029476:	3001      	adds	r0, #1 8029478:	e000      	b.n	802947c <xQueueGenericCreate+0x1a>	configASSERT( uxQueueLength > ( UBaseType_t ) 0 );	if( uxItemSize == ( UBaseType_t ) 0 )	{		/* There is not going to be a queue storage area. */		xQueueSizeInBytes = ( size_t ) 0; 802947a:	4608      	mov	r0, r1		easier/faster. */		xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ) + ( size_t ) 1; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */	}	/* Allocate the new queue structure and storage area. */	pcAllocatedBuffer = ( int8_t * ) pvPortMalloc( sizeof( Queue_t ) + xQueueSizeInBytes ); 802947c:	3054      	adds	r0, #84	; 0x54 802947e:	f001 fa35 	bl	802a8ec <pvPortMalloc>	if( pcAllocatedBuffer != NULL ) 8029482:	4604      	mov	r4, r0 8029484:	b138      	cbz	r0, 8029496 <xQueueGenericCreate+0x34>	{		pxNewQueue = ( Queue_t * ) pcAllocatedBuffer; /*lint !e826 MISRA The buffer cannot be to small because it was dimensioned by sizeof( Queue_t ) + xQueueSizeInBytes. */		if( uxItemSize == ( UBaseType_t ) 0 ) 8029486:	b90d      	cbnz	r5, 802948c <xQueueGenericCreate+0x2a>		{			/* No RAM was allocated for the queue storage area, but PC head			cannot be set to NULL because NULL is used as a key to say the queue			is used as a mutex.  Therefore just set pcHead to point to the queue			as a benign value that is known to be within the memory map. */			pxNewQueue->pcHead = ( int8_t * ) pxNewQueue; 8029488:	6020      	str	r0, [r4, #0] 802948a:	e007      	b.n	802949c <xQueueGenericCreate+0x3a>		}		else		{			/* Jump past the queue structure to find the location of the queue			storage area - adding the padding bytes to get a better alignment. */			pxNewQueue->pcHead = pcAllocatedBuffer + sizeof( Queue_t ); 802948c:	f100 0354 	add.w	r3, r0, #84	; 0x54 8029490:	6003      	str	r3, [r0, #0] 8029492:	e003      	b.n	802949c <xQueueGenericCreate+0x3a> 8029494:	e7fe      	b.n	8029494 <xQueueGenericCreate+0x32>	else	{		mtCOVERAGE_TEST_MARKER();	}	configASSERT( xReturn ); 8029496:	f001 f913 	bl	802a6c0 <ulPortSetInterruptMask> 802949a:	e7fb      	b.n	8029494 <xQueueGenericCreate+0x32>			pxNewQueue->pcHead = pcAllocatedBuffer + sizeof( Queue_t );		}		/* Initialise the queue members as described above where the queue type		is defined. */		pxNewQueue->uxLength = uxQueueLength; 802949c:	63e6      	str	r6, [r4, #60]	; 0x3c		pxNewQueue->uxItemSize = uxItemSize; 802949e:	6425      	str	r5, [r4, #64]	; 0x40		( void ) xQueueGenericReset( pxNewQueue, pdTRUE ); 80294a0:	4620      	mov	r0, r4 80294a2:	2101      	movs	r1, #1 80294a4:	f7ff ffab 	bl	80293fe <xQueueGenericReset>		#if ( configUSE_TRACE_FACILITY == 1 )		{			pxNewQueue->ucQueueType = ucQueueType; 80294a8:	f884 7050 	strb.w	r7, [r4, #80]	; 0x50	}	configASSERT( xReturn );	return xReturn;} 80294ac:	4620      	mov	r0, r4 80294ae:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}080294b0 <xQueueCreateCountingSemaphore>:/*-----------------------------------------------------------*/#if ( configUSE_COUNTING_SEMAPHORES == 1 )	QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount )	{ 80294b0:	b510      	push	{r4, lr} 80294b2:	460c      	mov	r4, r1	QueueHandle_t xHandle;		configASSERT( uxMaxCount != 0 ); 80294b4:	b910      	cbnz	r0, 80294bc <xQueueCreateCountingSemaphore+0xc> 80294b6:	f001 f903 	bl	802a6c0 <ulPortSetInterruptMask> 80294ba:	e7fe      	b.n	80294ba <xQueueCreateCountingSemaphore+0xa>		configASSERT( uxInitialCount <= uxMaxCount ); 80294bc:	4281      	cmp	r1, r0 80294be:	d902      	bls.n	80294c6 <xQueueCreateCountingSemaphore+0x16> 80294c0:	f001 f8fe 	bl	802a6c0 <ulPortSetInterruptMask> 80294c4:	e7fe      	b.n	80294c4 <xQueueCreateCountingSemaphore+0x14>		xHandle = xQueueGenericCreate( uxMaxCount, queueSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_COUNTING_SEMAPHORE ); 80294c6:	2100      	movs	r1, #0 80294c8:	2202      	movs	r2, #2 80294ca:	f7ff ffca 	bl	8029462 <xQueueGenericCreate>		if( xHandle != NULL ) 80294ce:	b110      	cbz	r0, 80294d6 <xQueueCreateCountingSemaphore+0x26>		{			( ( Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount; 80294d0:	6384      	str	r4, [r0, #56]	; 0x38 80294d2:	bd10      	pop	{r4, pc} 80294d4:	e7fe      	b.n	80294d4 <xQueueCreateCountingSemaphore+0x24>		else		{			traceCREATE_COUNTING_SEMAPHORE_FAILED();		}		configASSERT( xHandle ); 80294d6:	f001 f8f3 	bl	802a6c0 <ulPortSetInterruptMask> 80294da:	e7fb      	b.n	80294d4 <xQueueCreateCountingSemaphore+0x24>080294dc <xQueueGenericSend>:#endif /* configUSE_COUNTING_SEMAPHORES *//*-----------------------------------------------------------*/BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ){ 80294dc:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr} 80294e0:	b085      	sub	sp, #20 80294e2:	460f      	mov	r7, r1 80294e4:	9201      	str	r2, [sp, #4] 80294e6:	461d      	mov	r5, r3BaseType_t xEntryTimeSet = pdFALSE, xYieldRequired;TimeOut_t xTimeOut;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue ); 80294e8:	4604      	mov	r4, r0 80294ea:	b910      	cbnz	r0, 80294f2 <xQueueGenericSend+0x16> 80294ec:	f001 f8e8 	bl	802a6c0 <ulPortSetInterruptMask> 80294f0:	e7fe      	b.n	80294f0 <xQueueGenericSend+0x14>	configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); 80294f2:	2900      	cmp	r1, #0 80294f4:	d17b      	bne.n	80295ee <xQueueGenericSend+0x112> 80294f6:	6c03      	ldr	r3, [r0, #64]	; 0x40 80294f8:	2b00      	cmp	r3, #0 80294fa:	d078      	beq.n	80295ee <xQueueGenericSend+0x112> 80294fc:	e074      	b.n	80295e8 <xQueueGenericSend+0x10c> 80294fe:	e7fe      	b.n	80294fe <xQueueGenericSend+0x22>	configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); 8029500:	6be3      	ldr	r3, [r4, #60]	; 0x3c 8029502:	2b01      	cmp	r3, #1 8029504:	d176      	bne.n	80295f4 <xQueueGenericSend+0x118> 8029506:	e078      	b.n	80295fa <xQueueGenericSend+0x11e> 8029508:	e7fe      	b.n	8029508 <xQueueGenericSend+0x2c>	#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )	{		configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); 802950a:	9e01      	ldr	r6, [sp, #4] 802950c:	b126      	cbz	r6, 8029518 <xQueueGenericSend+0x3c> 802950e:	e079      	b.n	8029604 <xQueueGenericSend+0x128> 8029510:	e7fe      	b.n	8029510 <xQueueGenericSend+0x34> 8029512:	2601      	movs	r6, #1 8029514:	e002      	b.n	802951c <xQueueGenericSend+0x40> 8029516:	2600      	movs	r6, #0		/* Interrupts and other tasks can send to and receive from the queue		now the critical section has been exited. */		vTaskSuspendAll();		prvLockQueue( pxQueue ); 8029518:	f04f 0800 	mov.w	r8, #0	/* This function relaxes the coding standard somewhat to allow return	statements within the function itself.  This is done in the interest	of execution time efficiency. */	for( ;; )	{		taskENTER_CRITICAL(); 802951c:	f001 f8d8 	bl	802a6d0 <vPortEnterCritical>		{			/* Is there room on the queue now?  The running task must be			the highest priority task wanting to access the queue.  If			the head item in the queue is to be overwritten then it does			not matter if the queue is full. */			if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) 8029520:	6ba2      	ldr	r2, [r4, #56]	; 0x38 8029522:	6be3      	ldr	r3, [r4, #60]	; 0x3c 8029524:	429a      	cmp	r2, r3 8029526:	d301      	bcc.n	802952c <xQueueGenericSend+0x50> 8029528:	2d02      	cmp	r5, #2 802952a:	d115      	bne.n	8029558 <xQueueGenericSend+0x7c>			{				traceQUEUE_SEND( pxQueue );				xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); 802952c:	4620      	mov	r0, r4 802952e:	4639      	mov	r1, r7 8029530:	462a      	mov	r2, r5 8029532:	f7ff ff2e 	bl	8029392 <prvCopyDataToQueue>				}				#else /* configUSE_QUEUE_SETS */				{					/* If there was a task waiting for data to arrive on the					queue then unblock it now. */					if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) 8029536:	6a63      	ldr	r3, [r4, #36]	; 0x24 8029538:	b143      	cbz	r3, 802954c <xQueueGenericSend+0x70>					{						if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) == pdTRUE ) 802953a:	f104 0024 	add.w	r0, r4, #36	; 0x24 802953e:	f000 fdbb 	bl	802a0b8 <xTaskRemoveFromEventList> 8029542:	2801      	cmp	r0, #1 8029544:	d104      	bne.n	8029550 <xQueueGenericSend+0x74>						{							/* The unblocked task has a priority higher than							our own so yield immediately.  Yes it is ok to do							this from within the critical section - the kernel							takes care of that. */							queueYIELD_IF_USING_PREEMPTION(); 8029546:	f001 f8af 	bl	802a6a8 <vPortYield> 802954a:	e001      	b.n	8029550 <xQueueGenericSend+0x74>						else						{							mtCOVERAGE_TEST_MARKER();						}					}					else if( xYieldRequired != pdFALSE ) 802954c:	2800      	cmp	r0, #0 802954e:	d1fa      	bne.n	8029546 <xQueueGenericSend+0x6a>						mtCOVERAGE_TEST_MARKER();					}				}				#endif /* configUSE_QUEUE_SETS */				taskEXIT_CRITICAL(); 8029550:	f001 f8ea 	bl	802a728 <vPortExitCritical>				return pdPASS; 8029554:	2001      	movs	r0, #1 8029556:	e058      	b.n	802960a <xQueueGenericSend+0x12e>			}			else			{				if( xTicksToWait == ( TickType_t ) 0 ) 8029558:	f8dd 9004 	ldr.w	r9, [sp, #4] 802955c:	f1b9 0f00 	cmp.w	r9, #0 8029560:	d102      	bne.n	8029568 <xQueueGenericSend+0x8c>				{					/* The queue was full and no block time is specified (or					the block time has expired) so leave now. */					taskEXIT_CRITICAL(); 8029562:	f001 f8e1 	bl	802a728 <vPortExitCritical> 8029566:	e03d      	b.n	80295e4 <xQueueGenericSend+0x108>					/* Return to the original privilege level before exiting					the function. */					traceQUEUE_SEND_FAILED( pxQueue );					return errQUEUE_FULL;				}				else if( xEntryTimeSet == pdFALSE ) 8029568:	b916      	cbnz	r6, 8029570 <xQueueGenericSend+0x94>				{					/* The queue was full and a block time was specified so					configure the timeout structure. */					vTaskSetTimeOutState( &xTimeOut ); 802956a:	a802      	add	r0, sp, #8 802956c:	f000 fde0 	bl	802a130 <vTaskSetTimeOutState>					/* Entry time was already set. */					mtCOVERAGE_TEST_MARKER();				}			}		}		taskEXIT_CRITICAL(); 8029570:	f001 f8da 	bl	802a728 <vPortExitCritical>		/* Interrupts and other tasks can send to and receive from the queue		now the critical section has been exited. */		vTaskSuspendAll(); 8029574:	f000 fb5c 	bl	8029c30 <vTaskSuspendAll>		prvLockQueue( pxQueue ); 8029578:	f001 f8aa 	bl	802a6d0 <vPortEnterCritical> 802957c:	6c63      	ldr	r3, [r4, #68]	; 0x44 802957e:	3301      	adds	r3, #1 8029580:	bf08      	it	eq 8029582:	f8c4 8044 	streq.w	r8, [r4, #68]	; 0x44 8029586:	6ca3      	ldr	r3, [r4, #72]	; 0x48 8029588:	3301      	adds	r3, #1 802958a:	bf08      	it	eq 802958c:	f8c4 8048 	streq.w	r8, [r4, #72]	; 0x48 8029590:	f001 f8ca 	bl	802a728 <vPortExitCritical>		/* Update the timeout state to see if it has expired yet. */		if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) 8029594:	a802      	add	r0, sp, #8 8029596:	a901      	add	r1, sp, #4 8029598:	f000 fdda 	bl	802a150 <xTaskCheckForTimeOut> 802959c:	b9e8      	cbnz	r0, 80295da <xQueueGenericSend+0xfe>static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ){BaseType_t xReturn;	taskENTER_CRITICAL(); 802959e:	f001 f897 	bl	802a6d0 <vPortEnterCritical>	{		if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) 80295a2:	f8d4 9038 	ldr.w	r9, [r4, #56]	; 0x38 80295a6:	6be6      	ldr	r6, [r4, #60]	; 0x3c		else		{			xReturn = pdFALSE;		}	}	taskEXIT_CRITICAL(); 80295a8:	f001 f8be 	bl	802a728 <vPortExitCritical>		prvLockQueue( pxQueue );		/* Update the timeout state to see if it has expired yet. */		if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )		{			if( prvIsQueueFull( pxQueue ) != pdFALSE ) 80295ac:	45b1      	cmp	r9, r6 80295ae:	d10e      	bne.n	80295ce <xQueueGenericSend+0xf2>			{				traceBLOCKING_ON_QUEUE_SEND( pxQueue );				vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); 80295b0:	f104 0010 	add.w	r0, r4, #16 80295b4:	9901      	ldr	r1, [sp, #4] 80295b6:	f000 fd23 	bl	802a000 <vTaskPlaceOnEventList>				/* Unlocking the queue means queue events can effect the				event list.  It is possible	that interrupts occurring now				remove this task from the event	list again - but as the				scheduler is suspended the task will go onto the pending				ready last instead of the actual ready list. */				prvUnlockQueue( pxQueue ); 80295ba:	4620      	mov	r0, r4 80295bc:	f7ff fea2 	bl	8029304 <prvUnlockQueue>				/* Resuming the scheduler will move tasks from the pending				ready list into the ready list - so it is feasible that this				task is already in a ready list before it yields - in which				case the yield will not cause a context switch unless there				is also a higher priority task in the pending ready list. */				if( xTaskResumeAll() == pdFALSE ) 80295c0:	f000 fbd2 	bl	8029d68 <xTaskResumeAll> 80295c4:	2800      	cmp	r0, #0 80295c6:	d1a4      	bne.n	8029512 <xQueueGenericSend+0x36>				{					portYIELD_WITHIN_API(); 80295c8:	f001 f86e 	bl	802a6a8 <vPortYield> 80295cc:	e7a1      	b.n	8029512 <xQueueGenericSend+0x36>				}			}			else			{				/* Try again. */				prvUnlockQueue( pxQueue ); 80295ce:	4620      	mov	r0, r4 80295d0:	f7ff fe98 	bl	8029304 <prvUnlockQueue>				( void ) xTaskResumeAll(); 80295d4:	f000 fbc8 	bl	8029d68 <xTaskResumeAll> 80295d8:	e79b      	b.n	8029512 <xQueueGenericSend+0x36>			}		}		else		{			/* The timeout has expired. */			prvUnlockQueue( pxQueue ); 80295da:	4620      	mov	r0, r4 80295dc:	f7ff fe92 	bl	8029304 <prvUnlockQueue>			( void ) xTaskResumeAll(); 80295e0:	f000 fbc2 	bl	8029d68 <xTaskResumeAll>			/* Return to the original privilege level before exiting the			function. */			traceQUEUE_SEND_FAILED( pxQueue );			return errQUEUE_FULL; 80295e4:	2000      	movs	r0, #0 80295e6:	e010      	b.n	802960a <xQueueGenericSend+0x12e>BaseType_t xEntryTimeSet = pdFALSE, xYieldRequired;TimeOut_t xTimeOut;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue );	configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); 80295e8:	f001 f86a 	bl	802a6c0 <ulPortSetInterruptMask> 80295ec:	e787      	b.n	80294fe <xQueueGenericSend+0x22>	configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); 80295ee:	2d02      	cmp	r5, #2 80295f0:	d103      	bne.n	80295fa <xQueueGenericSend+0x11e> 80295f2:	e785      	b.n	8029500 <xQueueGenericSend+0x24> 80295f4:	f001 f864 	bl	802a6c0 <ulPortSetInterruptMask> 80295f8:	e786      	b.n	8029508 <xQueueGenericSend+0x2c>	#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )	{		configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); 80295fa:	f000 fddd 	bl	802a1b8 <xTaskGetSchedulerState> 80295fe:	2800      	cmp	r0, #0 8029600:	d189      	bne.n	8029516 <xQueueGenericSend+0x3a> 8029602:	e782      	b.n	802950a <xQueueGenericSend+0x2e> 8029604:	f001 f85c 	bl	802a6c0 <ulPortSetInterruptMask> 8029608:	e782      	b.n	8029510 <xQueueGenericSend+0x34>			function. */			traceQUEUE_SEND_FAILED( pxQueue );			return errQUEUE_FULL;		}	}} 802960a:	b005      	add	sp, #20 802960c:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc}08029610 <xQueueCreateMutex>:/*-----------------------------------------------------------*/#if ( configUSE_MUTEXES == 1 )	QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType )	{ 8029610:	b570      	push	{r4, r5, r6, lr} 8029612:	4606      	mov	r6, r0		/* Prevent compiler warnings about unused parameters if		configUSE_TRACE_FACILITY does not equal 1. */		( void ) ucQueueType;		/* Allocate the new queue structure. */		pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) ); 8029614:	2054      	movs	r0, #84	; 0x54 8029616:	f001 f969 	bl	802a8ec <pvPortMalloc>		if( pxNewQueue != NULL ) 802961a:	4604      	mov	r4, r0 802961c:	b108      	cbz	r0, 8029622 <xQueueCreateMutex+0x12> 802961e:	e003      	b.n	8029628 <xQueueCreateMutex+0x18> 8029620:	e7fe      	b.n	8029620 <xQueueCreateMutex+0x10>		else		{			traceCREATE_MUTEX_FAILED();		}		configASSERT( pxNewQueue ); 8029622:	f001 f84d 	bl	802a6c0 <ulPortSetInterruptMask> 8029626:	e7fb      	b.n	8029620 <xQueueCreateMutex+0x10>			/* Each mutex has a length of 1 (like a binary semaphore) and			an item size of 0 as nothing is actually copied into or out			of the mutex. */			pxNewQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;			pxNewQueue->uxLength = ( UBaseType_t ) 1U; 8029628:	2301      	movs	r3, #1		/* Allocate the new queue structure. */		pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) );		if( pxNewQueue != NULL )		{			/* Information required for priority inheritance. */			pxNewQueue->pxMutexHolder = NULL; 802962a:	2500      	movs	r5, #0			/* Each mutex has a length of 1 (like a binary semaphore) and			an item size of 0 as nothing is actually copied into or out			of the mutex. */			pxNewQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;			pxNewQueue->uxLength = ( UBaseType_t ) 1U; 802962c:	63c3      	str	r3, [r0, #60]	; 0x3c			pxNewQueue->uxItemSize = ( UBaseType_t ) 0U;			pxNewQueue->xRxLock = queueUNLOCKED; 802962e:	f04f 33ff 	mov.w	r3, #4294967295			pxNewQueue->u.pcReadFrom = NULL;			/* Each mutex has a length of 1 (like a binary semaphore) and			an item size of 0 as nothing is actually copied into or out			of the mutex. */			pxNewQueue->uxMessagesWaiting = ( UBaseType_t ) 0U; 8029632:	6385      	str	r5, [r0, #56]	; 0x38		/* Allocate the new queue structure. */		pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) );		if( pxNewQueue != NULL )		{			/* Information required for priority inheritance. */			pxNewQueue->pxMutexHolder = NULL; 8029634:	6045      	str	r5, [r0, #4]			an item size of 0 as nothing is actually copied into or out			of the mutex. */			pxNewQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;			pxNewQueue->uxLength = ( UBaseType_t ) 1U;			pxNewQueue->uxItemSize = ( UBaseType_t ) 0U;			pxNewQueue->xRxLock = queueUNLOCKED; 8029636:	6443      	str	r3, [r0, #68]	; 0x44		pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) );		if( pxNewQueue != NULL )		{			/* Information required for priority inheritance. */			pxNewQueue->pxMutexHolder = NULL;			pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX; 8029638:	6005      	str	r5, [r0, #0]			of the mutex. */			pxNewQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;			pxNewQueue->uxLength = ( UBaseType_t ) 1U;			pxNewQueue->uxItemSize = ( UBaseType_t ) 0U;			pxNewQueue->xRxLock = queueUNLOCKED;			pxNewQueue->xTxLock = queueUNLOCKED; 802963a:	6483      	str	r3, [r0, #72]	; 0x48			pxNewQueue->pxMutexHolder = NULL;			pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX;			/* Queues used as a mutex no data is actually copied into or out			of the queue. */			pxNewQueue->pcWriteTo = NULL; 802963c:	6085      	str	r5, [r0, #8]			pxNewQueue->u.pcReadFrom = NULL; 802963e:	60c5      	str	r5, [r0, #12]			/* Each mutex has a length of 1 (like a binary semaphore) and			an item size of 0 as nothing is actually copied into or out			of the mutex. */			pxNewQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;			pxNewQueue->uxLength = ( UBaseType_t ) 1U;			pxNewQueue->uxItemSize = ( UBaseType_t ) 0U; 8029640:	6405      	str	r5, [r0, #64]	; 0x40			pxNewQueue->xRxLock = queueUNLOCKED;			pxNewQueue->xTxLock = queueUNLOCKED;			#if ( configUSE_TRACE_FACILITY == 1 )			{				pxNewQueue->ucQueueType = ucQueueType; 8029642:	f880 6050 	strb.w	r6, [r0, #80]	; 0x50				pxNewQueue->pxQueueSetContainer = NULL;			}			#endif			/* Ensure the event queues start with the correct state. */			vListInitialise( &( pxNewQueue->xTasksWaitingToSend ) ); 8029646:	3010      	adds	r0, #16 8029648:	f7ff fe1a 	bl	8029280 <vListInitialise>			vListInitialise( &( pxNewQueue->xTasksWaitingToReceive ) ); 802964c:	f104 0024 	add.w	r0, r4, #36	; 0x24 8029650:	f7ff fe16 	bl	8029280 <vListInitialise>			traceCREATE_MUTEX( pxNewQueue );			/* Start with the semaphore in the expected state. */			( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK ); 8029654:	4620      	mov	r0, r4 8029656:	4629      	mov	r1, r5 8029658:	462a      	mov	r2, r5 802965a:	462b      	mov	r3, r5 802965c:	f7ff ff3e 	bl	80294dc <xQueueGenericSend>			traceCREATE_MUTEX_FAILED();		}		configASSERT( pxNewQueue );		return pxNewQueue;	} 8029660:	4620      	mov	r0, r4 8029662:	bd70      	pop	{r4, r5, r6, pc}08029664 <xQueueGenericSendFromISR>:#endif /* configUSE_ALTERNATIVE_API *//*-----------------------------------------------------------*/BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ){ 8029664:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8029668:	460f      	mov	r7, r1 802966a:	4616      	mov	r6, r2 802966c:	461d      	mov	r5, r3BaseType_t xReturn;UBaseType_t uxSavedInterruptStatus;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue ); 802966e:	4604      	mov	r4, r0 8029670:	b910      	cbnz	r0, 8029678 <xQueueGenericSendFromISR+0x14> 8029672:	f001 f825 	bl	802a6c0 <ulPortSetInterruptMask> 8029676:	e7fe      	b.n	8029676 <xQueueGenericSendFromISR+0x12>	configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); 8029678:	bb41      	cbnz	r1, 80296cc <xQueueGenericSendFromISR+0x68> 802967a:	6c03      	ldr	r3, [r0, #64]	; 0x40 802967c:	b333      	cbz	r3, 80296cc <xQueueGenericSendFromISR+0x68> 802967e:	e022      	b.n	80296c6 <xQueueGenericSendFromISR+0x62> 8029680:	e7fe      	b.n	8029680 <xQueueGenericSendFromISR+0x1c>	configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); 8029682:	6be3      	ldr	r3, [r4, #60]	; 0x3c 8029684:	2b01      	cmp	r3, #1 8029686:	d124      	bne.n	80296d2 <xQueueGenericSendFromISR+0x6e> 8029688:	e026      	b.n	80296d8 <xQueueGenericSendFromISR+0x74> 802968a:	e7fe      	b.n	802968a <xQueueGenericSendFromISR+0x26>	read, instead return a flag to say whether a context switch is required or	not (i.e. has a task with a higher priority than us been woken by this	post). */	uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();	{		if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) 802968c:	2d02      	cmp	r5, #2 802968e:	d118      	bne.n	80296c2 <xQueueGenericSendFromISR+0x5e>			/* A task can only have an inherited priority if it is a mutex			holder - and if there is a mutex holder then the mutex cannot be			given from an ISR.  Therefore, unlike the xQueueGenericGive()			function, there is no need to determine the need for priority			disinheritance here or to clear the mutex holder TCB member. */			( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); 8029690:	4620      	mov	r0, r4 8029692:	4639      	mov	r1, r7 8029694:	462a      	mov	r2, r5 8029696:	f7ff fe7c 	bl	8029392 <prvCopyDataToQueue>			/* The event list is not altered if the queue is locked.  This will			be done when the queue is unlocked later. */			if( pxQueue->xTxLock == queueUNLOCKED ) 802969a:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802969c:	3301      	adds	r3, #1 802969e:	d10b      	bne.n	80296b8 <xQueueGenericSendFromISR+0x54>						}					}				}				#else /* configUSE_QUEUE_SETS */				{					if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) 80296a0:	6a63      	ldr	r3, [r4, #36]	; 0x24 80296a2:	b903      	cbnz	r3, 80296a6 <xQueueGenericSendFromISR+0x42> 80296a4:	e00b      	b.n	80296be <xQueueGenericSendFromISR+0x5a>					{						if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) 80296a6:	f104 0024 	add.w	r0, r4, #36	; 0x24 80296aa:	f000 fd05 	bl	802a0b8 <xTaskRemoveFromEventList> 80296ae:	b130      	cbz	r0, 80296be <xQueueGenericSendFromISR+0x5a>						{							/* The task waiting has a higher priority so record that a							context	switch is required. */							if( pxHigherPriorityTaskWoken != NULL ) 80296b0:	b12e      	cbz	r6, 80296be <xQueueGenericSendFromISR+0x5a>							{								*pxHigherPriorityTaskWoken = pdTRUE; 80296b2:	2401      	movs	r4, #1 80296b4:	6034      	str	r4, [r6, #0] 80296b6:	e019      	b.n	80296ec <xQueueGenericSendFromISR+0x88>			}			else			{				/* Increment the lock count so the task that unlocks the queue				knows that data was posted while it was locked. */				++( pxQueue->xTxLock ); 80296b8:	6ca3      	ldr	r3, [r4, #72]	; 0x48 80296ba:	3301      	adds	r3, #1 80296bc:	64a3      	str	r3, [r4, #72]	; 0x48			}			xReturn = pdPASS; 80296be:	2401      	movs	r4, #1 80296c0:	e014      	b.n	80296ec <xQueueGenericSendFromISR+0x88>		}		else		{			traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue );			xReturn = errQUEUE_FULL; 80296c2:	2400      	movs	r4, #0 80296c4:	e012      	b.n	80296ec <xQueueGenericSendFromISR+0x88>BaseType_t xReturn;UBaseType_t uxSavedInterruptStatus;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue );	configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); 80296c6:	f000 fffb 	bl	802a6c0 <ulPortSetInterruptMask> 80296ca:	e7d9      	b.n	8029680 <xQueueGenericSendFromISR+0x1c>	configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); 80296cc:	2d02      	cmp	r5, #2 80296ce:	d103      	bne.n	80296d8 <xQueueGenericSendFromISR+0x74> 80296d0:	e7d7      	b.n	8029682 <xQueueGenericSendFromISR+0x1e> 80296d2:	f000 fff5 	bl	802a6c0 <ulPortSetInterruptMask> 80296d6:	e7d8      	b.n	802968a <xQueueGenericSendFromISR+0x26>	that have been assigned a priority at or (logically) below the maximum	system call	interrupt priority.  FreeRTOS maintains a separate interrupt	safe API to ensure interrupt entry is as fast and as simple as possible.	More information (albeit Cortex-M specific) is provided on the following	link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */	portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); 80296d8:	f001 f8c2 	bl	802a860 <vPortValidateInterruptPriority>	/* Similar to xQueueGenericSend, except without blocking if there is no room	in the queue.  Also don't directly wake a task that was blocked on a queue	read, instead return a flag to say whether a context switch is required or	not (i.e. has a task with a higher priority than us been woken by this	post). */	uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); 80296dc:	f000 fff0 	bl	802a6c0 <ulPortSetInterruptMask>	{		if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) 80296e0:	6ba2      	ldr	r2, [r4, #56]	; 0x38 80296e2:	6be3      	ldr	r3, [r4, #60]	; 0x3c 80296e4:	429a      	cmp	r2, r3	/* Similar to xQueueGenericSend, except without blocking if there is no room	in the queue.  Also don't directly wake a task that was blocked on a queue	read, instead return a flag to say whether a context switch is required or	not (i.e. has a task with a higher priority than us been woken by this	post). */	uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); 80296e6:	4680      	mov	r8, r0	{		if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) 80296e8:	d2d0      	bcs.n	802968c <xQueueGenericSendFromISR+0x28> 80296ea:	e7d1      	b.n	8029690 <xQueueGenericSendFromISR+0x2c>		{			traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue );			xReturn = errQUEUE_FULL;		}	}	portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); 80296ec:	4640      	mov	r0, r8 80296ee:	f001 f817 	bl	802a720 <vPortClearInterruptMask>	return xReturn;} 80296f2:	4620      	mov	r0, r4 80296f4:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}080296f8 <xQueueGiveFromISR>:/*-----------------------------------------------------------*/BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ){ 80296f8:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 80296fa:	460d      	mov	r5, r1BaseType_t xReturn;UBaseType_t uxSavedInterruptStatus;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue ); 80296fc:	4604      	mov	r4, r0 80296fe:	b910      	cbnz	r0, 8029706 <xQueueGiveFromISR+0xe> 8029700:	f000 ffde 	bl	802a6c0 <ulPortSetInterruptMask> 8029704:	e7fe      	b.n	8029704 <xQueueGiveFromISR+0xc>	/* xQueueGenericSendFromISR() should be used in the item size is not 0. */	configASSERT( pxQueue->uxItemSize == 0 ); 8029706:	6c06      	ldr	r6, [r0, #64]	; 0x40 8029708:	b116      	cbz	r6, 8029710 <xQueueGiveFromISR+0x18> 802970a:	f000 ffd9 	bl	802a6c0 <ulPortSetInterruptMask> 802970e:	e7fe      	b.n	802970e <xQueueGiveFromISR+0x16>	that have been assigned a priority at or (logically) below the maximum	system call	interrupt priority.  FreeRTOS maintains a separate interrupt	safe API to ensure interrupt entry is as fast and as simple as possible.	More information (albeit Cortex-M specific) is provided on the following	link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */	portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); 8029710:	f001 f8a6 	bl	802a860 <vPortValidateInterruptPriority>	/* Similar to xQueueGenericSendFromISR() but used with semaphores where the	item size is 0.  Don't directly wake a task that was blocked on a queue	read, instead return a flag to say whether a context switch is required or	not (i.e. has a task with a higher priority than us been woken by this	post). */	uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); 8029714:	f000 ffd4 	bl	802a6c0 <ulPortSetInterruptMask>	{		/* When the queue is used to implement a semaphore no data is ever		moved through the queue but it is still valid to see if the queue 'has		space'. */		if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) 8029718:	6ba2      	ldr	r2, [r4, #56]	; 0x38 802971a:	6be3      	ldr	r3, [r4, #60]	; 0x3c 802971c:	429a      	cmp	r2, r3	/* Similar to xQueueGenericSendFromISR() but used with semaphores where the	item size is 0.  Don't directly wake a task that was blocked on a queue	read, instead return a flag to say whether a context switch is required or	not (i.e. has a task with a higher priority than us been woken by this	post). */	uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); 802971e:	4607      	mov	r7, r0	{		/* When the queue is used to implement a semaphore no data is ever		moved through the queue but it is still valid to see if the queue 'has		space'. */		if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) 8029720:	d216      	bcs.n	8029750 <xQueueGiveFromISR+0x58>			holder - and if there is a mutex holder then the mutex cannot be			given from an ISR.  Therefore, unlike the xQueueGenericGive()			function, there is no need to determine the need for priority			disinheritance here or to clear the mutex holder TCB member. */			++( pxQueue->uxMessagesWaiting ); 8029722:	6ba3      	ldr	r3, [r4, #56]	; 0x38 8029724:	3301      	adds	r3, #1 8029726:	63a3      	str	r3, [r4, #56]	; 0x38			/* The event list is not altered if the queue is locked.  This will			be done when the queue is unlocked later. */			if( pxQueue->xTxLock == queueUNLOCKED ) 8029728:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802972a:	3301      	adds	r3, #1 802972c:	d10b      	bne.n	8029746 <xQueueGiveFromISR+0x4e>						}					}				}				#else /* configUSE_QUEUE_SETS */				{					if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) 802972e:	6a63      	ldr	r3, [r4, #36]	; 0x24 8029730:	b903      	cbnz	r3, 8029734 <xQueueGiveFromISR+0x3c> 8029732:	e00b      	b.n	802974c <xQueueGiveFromISR+0x54>					{						if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) 8029734:	f104 0024 	add.w	r0, r4, #36	; 0x24 8029738:	f000 fcbe 	bl	802a0b8 <xTaskRemoveFromEventList> 802973c:	b130      	cbz	r0, 802974c <xQueueGiveFromISR+0x54>						{							/* The task waiting has a higher priority so record that a							context	switch is required. */							if( pxHigherPriorityTaskWoken != NULL ) 802973e:	b12d      	cbz	r5, 802974c <xQueueGiveFromISR+0x54>							{								*pxHigherPriorityTaskWoken = pdTRUE; 8029740:	2401      	movs	r4, #1 8029742:	602c      	str	r4, [r5, #0] 8029744:	e005      	b.n	8029752 <xQueueGiveFromISR+0x5a>			}			else			{				/* Increment the lock count so the task that unlocks the queue				knows that data was posted while it was locked. */				++( pxQueue->xTxLock ); 8029746:	6ca3      	ldr	r3, [r4, #72]	; 0x48 8029748:	3301      	adds	r3, #1 802974a:	64a3      	str	r3, [r4, #72]	; 0x48			}			xReturn = pdPASS; 802974c:	2401      	movs	r4, #1 802974e:	e000      	b.n	8029752 <xQueueGiveFromISR+0x5a>		}		else		{			traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue );			xReturn = errQUEUE_FULL; 8029750:	4634      	mov	r4, r6		}	}	portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); 8029752:	4638      	mov	r0, r7 8029754:	f000 ffe4 	bl	802a720 <vPortClearInterruptMask>	return xReturn;} 8029758:	4620      	mov	r0, r4 802975a:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}0802975c <xQueueGenericReceive>:/*-----------------------------------------------------------*/BaseType_t xQueueGenericReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait, const BaseType_t xJustPeeking ){ 802975c:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr} 8029760:	b085      	sub	sp, #20 8029762:	460e      	mov	r6, r1 8029764:	9201      	str	r2, [sp, #4] 8029766:	4699      	mov	r9, r3BaseType_t xEntryTimeSet = pdFALSE;TimeOut_t xTimeOut;int8_t *pcOriginalReadPosition;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue ); 8029768:	4604      	mov	r4, r0 802976a:	b910      	cbnz	r0, 8029772 <xQueueGenericReceive+0x16> 802976c:	f000 ffa8 	bl	802a6c0 <ulPortSetInterruptMask> 8029770:	e7fe      	b.n	8029770 <xQueueGenericReceive+0x14>	configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); 8029772:	2900      	cmp	r1, #0 8029774:	f040 8089 	bne.w	802988a <xQueueGenericReceive+0x12e> 8029778:	6c03      	ldr	r3, [r0, #64]	; 0x40 802977a:	2b00      	cmp	r3, #0 802977c:	f000 8085 	beq.w	802988a <xQueueGenericReceive+0x12e> 8029780:	e080      	b.n	8029884 <xQueueGenericReceive+0x128> 8029782:	e7fe      	b.n	8029782 <xQueueGenericReceive+0x26>	#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )	{		configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); 8029784:	9d01      	ldr	r5, [sp, #4] 8029786:	b125      	cbz	r5, 8029792 <xQueueGenericReceive+0x36> 8029788:	e085      	b.n	8029896 <xQueueGenericReceive+0x13a> 802978a:	e7fe      	b.n	802978a <xQueueGenericReceive+0x2e> 802978c:	2501      	movs	r5, #1 802978e:	e001      	b.n	8029794 <xQueueGenericReceive+0x38> 8029790:	2500      	movs	r5, #0		/* Interrupts and other tasks can send to and receive from the queue		now the critical section has been exited. */		vTaskSuspendAll();		prvLockQueue( pxQueue ); 8029792:	2700      	movs	r7, #0	statements within the function itself.  This is done in the interest	of execution time efficiency. */	for( ;; )	{		taskENTER_CRITICAL(); 8029794:	f000 ff9c 	bl	802a6d0 <vPortEnterCritical>		{			/* Is there data in the queue now?  To be running the calling task			must be	the highest priority task wanting to access the queue. */			if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 ) 8029798:	6ba3      	ldr	r3, [r4, #56]	; 0x38 802979a:	b33b      	cbz	r3, 80297ec <xQueueGenericReceive+0x90>			{				/* Remember the read position in case the queue is only being				peeked. */				pcOriginalReadPosition = pxQueue->u.pcReadFrom;				prvCopyDataFromQueue( pxQueue, pvBuffer ); 802979c:	4620      	mov	r0, r4 802979e:	4631      	mov	r1, r6			must be	the highest priority task wanting to access the queue. */			if( pxQueue->uxMessagesWaiting > ( UBaseType_t ) 0 )			{				/* Remember the read position in case the queue is only being				peeked. */				pcOriginalReadPosition = pxQueue->u.pcReadFrom; 80297a0:	68e5      	ldr	r5, [r4, #12]				prvCopyDataFromQueue( pxQueue, pvBuffer ); 80297a2:	f7ff fde3 	bl	802936c <prvCopyDataFromQueue>				if( xJustPeeking == pdFALSE ) 80297a6:	f1b9 0f00 	cmp.w	r9, #0 80297aa:	d112      	bne.n	80297d2 <xQueueGenericReceive+0x76>				{					traceQUEUE_RECEIVE( pxQueue );					/* Actually removing data, not just peeking. */					--( pxQueue->uxMessagesWaiting ); 80297ac:	6ba3      	ldr	r3, [r4, #56]	; 0x38 80297ae:	3b01      	subs	r3, #1 80297b0:	63a3      	str	r3, [r4, #56]	; 0x38					#if ( configUSE_MUTEXES == 1 )					{						if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) 80297b2:	6823      	ldr	r3, [r4, #0] 80297b4:	b913      	cbnz	r3, 80297bc <xQueueGenericReceive+0x60>						{							/* Record the information required to implement							priority inheritance should it become necessary. */							pxQueue->pxMutexHolder = ( int8_t * ) pvTaskIncrementMutexHeldCount(); /*lint !e961 Cast is not redundant as TaskHandle_t is a typedef. */ 80297b6:	f000 fd99 	bl	802a2ec <pvTaskIncrementMutexHeldCount> 80297ba:	6060      	str	r0, [r4, #4]							mtCOVERAGE_TEST_MARKER();						}					}					#endif /* configUSE_MUTEXES */					if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) 80297bc:	6923      	ldr	r3, [r4, #16] 80297be:	b18b      	cbz	r3, 80297e4 <xQueueGenericReceive+0x88>					{						if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) == pdTRUE ) 80297c0:	f104 0010 	add.w	r0, r4, #16 80297c4:	f000 fc78 	bl	802a0b8 <xTaskRemoveFromEventList> 80297c8:	2801      	cmp	r0, #1 80297ca:	d10b      	bne.n	80297e4 <xQueueGenericReceive+0x88>						{							queueYIELD_IF_USING_PREEMPTION(); 80297cc:	f000 ff6c 	bl	802a6a8 <vPortYield> 80297d0:	e008      	b.n	80297e4 <xQueueGenericReceive+0x88>					pointer. */					pxQueue->u.pcReadFrom = pcOriginalReadPosition;					/* The data is being left in the queue, so see if there are					any other tasks waiting for the data. */					if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) 80297d2:	6a63      	ldr	r3, [r4, #36]	; 0x24				{					traceQUEUE_PEEK( pxQueue );					/* The data is not being removed, so reset the read					pointer. */					pxQueue->u.pcReadFrom = pcOriginalReadPosition; 80297d4:	60e5      	str	r5, [r4, #12]					/* The data is being left in the queue, so see if there are					any other tasks waiting for the data. */					if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) 80297d6:	b12b      	cbz	r3, 80297e4 <xQueueGenericReceive+0x88>					{						/* Tasks that are removed from the event list will get added to						the pending ready list as the scheduler is still suspended. */						if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) 80297d8:	f104 0024 	add.w	r0, r4, #36	; 0x24 80297dc:	f000 fc6c 	bl	802a0b8 <xTaskRemoveFromEventList> 80297e0:	2800      	cmp	r0, #0 80297e2:	d1f3      	bne.n	80297cc <xQueueGenericReceive+0x70>					{						mtCOVERAGE_TEST_MARKER();					}				}				taskEXIT_CRITICAL(); 80297e4:	f000 ffa0 	bl	802a728 <vPortExitCritical>				return pdPASS; 80297e8:	2001      	movs	r0, #1 80297ea:	e057      	b.n	802989c <xQueueGenericReceive+0x140>			}			else			{				if( xTicksToWait == ( TickType_t ) 0 ) 80297ec:	f8dd 8004 	ldr.w	r8, [sp, #4] 80297f0:	f1b8 0f00 	cmp.w	r8, #0 80297f4:	d102      	bne.n	80297fc <xQueueGenericReceive+0xa0>				{					/* The queue was empty and no block time is specified (or					the block time has expired) so leave now. */					taskEXIT_CRITICAL(); 80297f6:	f000 ff97 	bl	802a728 <vPortExitCritical> 80297fa:	e041      	b.n	8029880 <xQueueGenericReceive+0x124>					traceQUEUE_RECEIVE_FAILED( pxQueue );					return errQUEUE_EMPTY;				}				else if( xEntryTimeSet == pdFALSE ) 80297fc:	b915      	cbnz	r5, 8029804 <xQueueGenericReceive+0xa8>				{					/* The queue was empty and a block time was specified so					configure the timeout structure. */					vTaskSetTimeOutState( &xTimeOut ); 80297fe:	a802      	add	r0, sp, #8 8029800:	f000 fc96 	bl	802a130 <vTaskSetTimeOutState>					/* Entry time was already set. */					mtCOVERAGE_TEST_MARKER();				}			}		}		taskEXIT_CRITICAL(); 8029804:	f000 ff90 	bl	802a728 <vPortExitCritical>		/* Interrupts and other tasks can send to and receive from the queue		now the critical section has been exited. */		vTaskSuspendAll(); 8029808:	f000 fa12 	bl	8029c30 <vTaskSuspendAll>		prvLockQueue( pxQueue ); 802980c:	f000 ff60 	bl	802a6d0 <vPortEnterCritical> 8029810:	6c63      	ldr	r3, [r4, #68]	; 0x44 8029812:	3301      	adds	r3, #1 8029814:	bf08      	it	eq 8029816:	6467      	streq	r7, [r4, #68]	; 0x44 8029818:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802981a:	3301      	adds	r3, #1 802981c:	bf08      	it	eq 802981e:	64a7      	streq	r7, [r4, #72]	; 0x48 8029820:	f000 ff82 	bl	802a728 <vPortExitCritical>		/* Update the timeout state to see if it has expired yet. */		if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) 8029824:	a802      	add	r0, sp, #8 8029826:	a901      	add	r1, sp, #4 8029828:	f000 fc92 	bl	802a150 <xTaskCheckForTimeOut> 802982c:	bb18      	cbnz	r0, 8029876 <xQueueGenericReceive+0x11a>static BaseType_t prvIsQueueEmpty( const Queue_t *pxQueue ){BaseType_t xReturn;	taskENTER_CRITICAL(); 802982e:	f000 ff4f 	bl	802a6d0 <vPortEnterCritical>	{		if( pxQueue->uxMessagesWaiting == ( UBaseType_t )  0 ) 8029832:	6ba5      	ldr	r5, [r4, #56]	; 0x38		else		{			xReturn = pdFALSE;		}	}	taskEXIT_CRITICAL(); 8029834:	f000 ff78 	bl	802a728 <vPortExitCritical>		prvLockQueue( pxQueue );		/* Update the timeout state to see if it has expired yet. */		if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )		{			if( prvIsQueueEmpty( pxQueue ) != pdFALSE ) 8029838:	b9bd      	cbnz	r5, 802986a <xQueueGenericReceive+0x10e>			{				traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue );				#if ( configUSE_MUTEXES == 1 )				{					if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) 802983a:	6823      	ldr	r3, [r4, #0] 802983c:	b933      	cbnz	r3, 802984c <xQueueGenericReceive+0xf0>					{						taskENTER_CRITICAL(); 802983e:	f000 ff47 	bl	802a6d0 <vPortEnterCritical>						{							vTaskPriorityInherit( ( void * ) pxQueue->pxMutexHolder ); 8029842:	6860      	ldr	r0, [r4, #4] 8029844:	f000 fcc8 	bl	802a1d8 <vTaskPriorityInherit>						}						taskEXIT_CRITICAL(); 8029848:	f000 ff6e 	bl	802a728 <vPortExitCritical>						mtCOVERAGE_TEST_MARKER();					}				}				#endif				vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); 802984c:	f104 0024 	add.w	r0, r4, #36	; 0x24 8029850:	9901      	ldr	r1, [sp, #4] 8029852:	f000 fbd5 	bl	802a000 <vTaskPlaceOnEventList>				prvUnlockQueue( pxQueue ); 8029856:	4620      	mov	r0, r4 8029858:	f7ff fd54 	bl	8029304 <prvUnlockQueue>				if( xTaskResumeAll() == pdFALSE ) 802985c:	f000 fa84 	bl	8029d68 <xTaskResumeAll> 8029860:	2800      	cmp	r0, #0 8029862:	d193      	bne.n	802978c <xQueueGenericReceive+0x30>				{					portYIELD_WITHIN_API(); 8029864:	f000 ff20 	bl	802a6a8 <vPortYield> 8029868:	e790      	b.n	802978c <xQueueGenericReceive+0x30>				}			}			else			{				/* Try again. */				prvUnlockQueue( pxQueue ); 802986a:	4620      	mov	r0, r4 802986c:	f7ff fd4a 	bl	8029304 <prvUnlockQueue>				( void ) xTaskResumeAll(); 8029870:	f000 fa7a 	bl	8029d68 <xTaskResumeAll> 8029874:	e78a      	b.n	802978c <xQueueGenericReceive+0x30>			}		}		else		{			prvUnlockQueue( pxQueue ); 8029876:	4620      	mov	r0, r4 8029878:	f7ff fd44 	bl	8029304 <prvUnlockQueue>			( void ) xTaskResumeAll(); 802987c:	f000 fa74 	bl	8029d68 <xTaskResumeAll>			traceQUEUE_RECEIVE_FAILED( pxQueue );			return errQUEUE_EMPTY; 8029880:	2000      	movs	r0, #0 8029882:	e00b      	b.n	802989c <xQueueGenericReceive+0x140>TimeOut_t xTimeOut;int8_t *pcOriginalReadPosition;Queue_t * const pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue );	configASSERT( !( ( pvBuffer == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); 8029884:	f000 ff1c 	bl	802a6c0 <ulPortSetInterruptMask> 8029888:	e77b      	b.n	8029782 <xQueueGenericReceive+0x26>	#if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )	{		configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); 802988a:	f000 fc95 	bl	802a1b8 <xTaskGetSchedulerState> 802988e:	2800      	cmp	r0, #0 8029890:	f47f af7e 	bne.w	8029790 <xQueueGenericReceive+0x34> 8029894:	e776      	b.n	8029784 <xQueueGenericReceive+0x28> 8029896:	f000 ff13 	bl	802a6c0 <ulPortSetInterruptMask> 802989a:	e776      	b.n	802978a <xQueueGenericReceive+0x2e>			( void ) xTaskResumeAll();			traceQUEUE_RECEIVE_FAILED( pxQueue );			return errQUEUE_EMPTY;		}	}} 802989c:	b005      	add	sp, #20 802989e:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc}080298a2 <uxQueueSpacesAvailable>:	return uxReturn;} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. *//*-----------------------------------------------------------*/UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ){ 80298a2:	b510      	push	{r4, lr}UBaseType_t uxReturn;Queue_t *pxQueue;	pxQueue = ( Queue_t * ) xQueue;	configASSERT( pxQueue ); 80298a4:	4604      	mov	r4, r0 80298a6:	b910      	cbnz	r0, 80298ae <uxQueueSpacesAvailable+0xc> 80298a8:	f000 ff0a 	bl	802a6c0 <ulPortSetInterruptMask> 80298ac:	e7fe      	b.n	80298ac <uxQueueSpacesAvailable+0xa>	taskENTER_CRITICAL(); 80298ae:	f000 ff0f 	bl	802a6d0 <vPortEnterCritical>	{		uxReturn = pxQueue->uxLength - pxQueue->uxMessagesWaiting; 80298b2:	6ba3      	ldr	r3, [r4, #56]	; 0x38 80298b4:	6be4      	ldr	r4, [r4, #60]	; 0x3c 80298b6:	1ae4      	subs	r4, r4, r3	}	taskEXIT_CRITICAL(); 80298b8:	f000 ff36 	bl	802a728 <vPortExitCritical>	return uxReturn;} /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ 80298bc:	4620      	mov	r0, r4 80298be:	bd10      	pop	{r4, pc}080298c0 <vQueueWaitForMessageRestricted>:/*-----------------------------------------------------------*/#if ( configUSE_TIMERS == 1 )	void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait )	{ 80298c0:	b538      	push	{r3, r4, r5, lr} 80298c2:	4604      	mov	r4, r0 80298c4:	460d      	mov	r5, r1		will not actually cause the task to block, just place it on a blocked		list.  It will not block until the scheduler is unlocked - at which		time a yield will be performed.  If an item is added to the queue while		the queue is locked, and the calling task blocks on the queue, then the		calling task will be immediately unblocked when the queue is unlocked. */		prvLockQueue( pxQueue ); 80298c6:	f000 ff03 	bl	802a6d0 <vPortEnterCritical> 80298ca:	6c63      	ldr	r3, [r4, #68]	; 0x44 80298cc:	3301      	adds	r3, #1 80298ce:	d101      	bne.n	80298d4 <vQueueWaitForMessageRestricted+0x14> 80298d0:	2300      	movs	r3, #0 80298d2:	6463      	str	r3, [r4, #68]	; 0x44 80298d4:	6ca3      	ldr	r3, [r4, #72]	; 0x48 80298d6:	3301      	adds	r3, #1 80298d8:	d101      	bne.n	80298de <vQueueWaitForMessageRestricted+0x1e> 80298da:	2300      	movs	r3, #0 80298dc:	64a3      	str	r3, [r4, #72]	; 0x48 80298de:	f000 ff23 	bl	802a728 <vPortExitCritical>		if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0U ) 80298e2:	6ba3      	ldr	r3, [r4, #56]	; 0x38 80298e4:	b923      	cbnz	r3, 80298f0 <vQueueWaitForMessageRestricted+0x30>		{			/* There is nothing in the queue, block for the specified period. */			vTaskPlaceOnEventListRestricted( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); 80298e6:	f104 0024 	add.w	r0, r4, #36	; 0x24 80298ea:	4629      	mov	r1, r5 80298ec:	f000 fbbc 	bl	802a068 <vTaskPlaceOnEventListRestricted>		}		else		{			mtCOVERAGE_TEST_MARKER();		}		prvUnlockQueue( pxQueue ); 80298f0:	4620      	mov	r0, r4	} 80298f2:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		}		else		{			mtCOVERAGE_TEST_MARKER();		}		prvUnlockQueue( pxQueue ); 80298f6:	f7ff bd05 	b.w	8029304 <prvUnlockQueue> 80298fa:	0000      	movs	r0, r0080298fc <prvResetNextTaskUnblockTime>:static void prvResetNextTaskUnblockTime( void ){TCB_t *pxTCB;	if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) 80298fc:	4a06      	ldr	r2, [pc, #24]	; (8029918 <prvResetNextTaskUnblockTime+0x1c>) 80298fe:	6813      	ldr	r3, [r2, #0] 8029900:	6819      	ldr	r1, [r3, #0] 8029902:	4b06      	ldr	r3, [pc, #24]	; (802991c <prvResetNextTaskUnblockTime+0x20>) 8029904:	b911      	cbnz	r1, 802990c <prvResetNextTaskUnblockTime+0x10>		/* The new current delayed list is empty.  Set		xNextTaskUnblockTime to the maximum possible value so it is		extremely unlikely that the		if( xTickCount >= xNextTaskUnblockTime ) test will pass until		there is an item in the delayed list. */		xNextTaskUnblockTime = portMAX_DELAY; 8029906:	f04f 32ff 	mov.w	r2, #4294967295 802990a:	e003      	b.n	8029914 <prvResetNextTaskUnblockTime+0x18>	{		/* The new current delayed list is not empty, get the value of		the item at the head of the delayed list.  This is the time at		which the task at the head of the delayed list should be removed		from the Blocked state. */		( pxTCB ) = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); 802990c:	6812      	ldr	r2, [r2, #0] 802990e:	68d2      	ldr	r2, [r2, #12]		xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xGenericListItem ) ); 8029910:	68d2      	ldr	r2, [r2, #12] 8029912:	6852      	ldr	r2, [r2, #4] 8029914:	601a      	str	r2, [r3, #0] 8029916:	4770      	bx	lr 8029918:	20002988 	.word	0x20002988 802991c:	200015dc 	.word	0x200015dc08029920 <prvAddCurrentTaskToDelayedList>:/*-----------------------------------------------------------*/static void prvAddCurrentTaskToDelayedList( const TickType_t xTimeToWake ){	/* The list item will be inserted in wake time order. */	listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake ); 8029920:	4b0e      	ldr	r3, [pc, #56]	; (802995c <prvAddCurrentTaskToDelayedList+0x3c>) 8029922:	681a      	ldr	r2, [r3, #0]	#endif /* vTaskDelete */}/*-----------------------------------------------------------*/static void prvAddCurrentTaskToDelayedList( const TickType_t xTimeToWake ){ 8029924:	b510      	push	{r4, lr}	/* The list item will be inserted in wake time order. */	listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake ); 8029926:	6050      	str	r0, [r2, #4]	if( xTimeToWake < xTickCount ) 8029928:	4a0d      	ldr	r2, [pc, #52]	; (8029960 <prvAddCurrentTaskToDelayedList+0x40>) 802992a:	6812      	ldr	r2, [r2, #0] 802992c:	4290      	cmp	r0, r2	#endif /* vTaskDelete */}/*-----------------------------------------------------------*/static void prvAddCurrentTaskToDelayedList( const TickType_t xTimeToWake ){ 802992e:	4604      	mov	r4, r0	/* The list item will be inserted in wake time order. */	listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake );	if( xTimeToWake < xTickCount ) 8029930:	d207      	bcs.n	8029942 <prvAddCurrentTaskToDelayedList+0x22>	{		/* Wake time has overflowed.  Place this item in the overflow list. */		vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xGenericListItem ) ); 8029932:	4a0c      	ldr	r2, [pc, #48]	; (8029964 <prvAddCurrentTaskToDelayedList+0x44>) 8029934:	6810      	ldr	r0, [r2, #0] 8029936:	6819      	ldr	r1, [r3, #0] 8029938:	3104      	adds	r1, #4		else		{			mtCOVERAGE_TEST_MARKER();		}	}} 802993a:	e8bd 4010 	ldmia.w	sp!, {r4, lr}	listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake );	if( xTimeToWake < xTickCount )	{		/* Wake time has overflowed.  Place this item in the overflow list. */		vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xGenericListItem ) ); 802993e:	f7ff bcb9 	b.w	80292b4 <vListInsert>	}	else	{		/* The wake time has not overflowed, so the current block list is used. */		vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xGenericListItem ) ); 8029942:	4a09      	ldr	r2, [pc, #36]	; (8029968 <prvAddCurrentTaskToDelayedList+0x48>) 8029944:	6810      	ldr	r0, [r2, #0] 8029946:	6819      	ldr	r1, [r3, #0] 8029948:	3104      	adds	r1, #4 802994a:	f7ff fcb3 	bl	80292b4 <vListInsert>		/* If the task entering the blocked state was placed at the head of the		list of blocked tasks then xNextTaskUnblockTime needs to be updated		too. */		if( xTimeToWake < xNextTaskUnblockTime ) 802994e:	4b07      	ldr	r3, [pc, #28]	; (802996c <prvAddCurrentTaskToDelayedList+0x4c>) 8029950:	681a      	ldr	r2, [r3, #0] 8029952:	4294      	cmp	r4, r2		{			xNextTaskUnblockTime = xTimeToWake; 8029954:	bf38      	it	cc 8029956:	601c      	strcc	r4, [r3, #0] 8029958:	bd10      	pop	{r4, pc} 802995a:	bf00      	nop 802995c:	20002a38 	.word	0x20002a38 8029960:	20002a54 	.word	0x20002a54 8029964:	20002a58 	.word	0x20002a58 8029968:	20002988 	.word	0x20002988 802996c:	200015dc 	.word	0x200015dc08029970 <xTaskGenericCreate>:#endif/*-----------------------------------------------------------*/BaseType_t xTaskGenericCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, StackType_t * const puxStackBuffer, const MemoryRegion_t * const xRegions ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */{ 8029970:	e92d 4ff8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 8029974:	9d0a      	ldr	r5, [sp, #40]	; 0x28 8029976:	f8dd 802c 	ldr.w	r8, [sp, #44]	; 0x2c 802997a:	9e0c      	ldr	r6, [sp, #48]	; 0x30 802997c:	460f      	mov	r7, r1 802997e:	4693      	mov	fp, r2 8029980:	469a      	mov	sl, r3BaseType_t xReturn;TCB_t * pxNewTCB;StackType_t *pxTopOfStack;	configASSERT( pxTaskCode ); 8029982:	4681      	mov	r9, r0 8029984:	b910      	cbnz	r0, 802998c <xTaskGenericCreate+0x1c> 8029986:	f000 fe9b 	bl	802a6c0 <ulPortSetInterruptMask> 802998a:	e7fe      	b.n	802998a <xTaskGenericCreate+0x1a>	configASSERT( ( ( uxPriority & ( ~portPRIVILEGE_BIT ) ) < configMAX_PRIORITIES ) ); 802998c:	2d04      	cmp	r5, #4 802998e:	d902      	bls.n	8029996 <xTaskGenericCreate+0x26> 8029990:	f000 fe96 	bl	802a6c0 <ulPortSetInterruptMask> 8029994:	e7fe      	b.n	8029994 <xTaskGenericCreate+0x24>	#else /* portSTACK_GROWTH */	{	StackType_t *pxStack;		/* Allocate space for the stack used by the task being created. */		pxStack = ( StackType_t * ) pvPortMallocAligned( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ), puxStackBuffer ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 8029996:	b936      	cbnz	r6, 80299a6 <xTaskGenericCreate+0x36> 8029998:	0090      	lsls	r0, r2, #2 802999a:	f000 ffa7 	bl	802a8ec <pvPortMalloc>		if( pxStack != NULL ) 802999e:	4606      	mov	r6, r0 80299a0:	2800      	cmp	r0, #0 80299a2:	f000 809e 	beq.w	8029ae2 <xTaskGenericCreate+0x172>		{			/* Allocate space for the TCB.  Where the memory comes from depends			on the implementation of the port malloc function. */			pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); 80299a6:	205c      	movs	r0, #92	; 0x5c 80299a8:	f000 ffa0 	bl	802a8ec <pvPortMalloc>			if( pxNewTCB != NULL ) 80299ac:	4604      	mov	r4, r0 80299ae:	b178      	cbz	r0, 80299d0 <xTaskGenericCreate+0x60>			{				/* Store the stack location in the TCB. */				pxNewTCB->pxStack = pxStack; 80299b0:	6306      	str	r6, [r0, #48]	; 0x30	{		/* Avoid dependency on memset() if it is not required. */		#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )		{			/* Just to help debugging. */			( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) usStackDepth * sizeof( StackType_t ) ); 80299b2:	ea4f 028b 	mov.w	r2, fp, lsl #2 80299b6:	4630      	mov	r0, r6 80299b8:	21a5      	movs	r1, #165	; 0xa5 80299ba:	f7f8 f881 	bl	8021ac0 <memset>		stack grows from high memory to low (as per the 80x86) or vice versa.		portSTACK_GROWTH is used to make the result positive or negative as		required by the port. */		#if( portSTACK_GROWTH < 0 )		{			pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - ( uint16_t ) 1 ); 80299be:	6b23      	ldr	r3, [r4, #48]	; 0x30 80299c0:	f10b 3bff 	add.w	fp, fp, #4294967295 80299c4:	eb03 0b8b 	add.w	fp, r3, fp, lsl #2			pxTopOfStack = ( StackType_t * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ( portPOINTER_SIZE_TYPE ) ~portBYTE_ALIGNMENT_MASK  ) ); /*lint !e923 MISRA exception.  Avoiding casts between pointers and integers is not practical.  Size differences accounted for using portPOINTER_SIZE_TYPE type. */ 80299c8:	f02b 0b07 	bic.w	fp, fp, #7static void prvInitialiseTCBVariables( TCB_t * const pxTCB, const char * const pcName, UBaseType_t uxPriority, const MemoryRegion_t * const xRegions, const uint16_t usStackDepth ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */{UBaseType_t x;	/* Store the task name in the TCB. */	for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) 80299cc:	2600      	movs	r6, #0 80299ce:	e003      	b.n	80299d8 <xTaskGenericCreate+0x68>			}			else			{				/* The stack cannot be used as the TCB was not created.  Free it				again. */				vPortFree( pxStack ); 80299d0:	4630      	mov	r0, r6 80299d2:	f001 f811 	bl	802a9f8 <vPortFree> 80299d6:	e084      	b.n	8029ae2 <xTaskGenericCreate+0x172>	static char *prvWriteNameToBuffer( char *pcBuffer, const char *pcTaskName );#endif/*-----------------------------------------------------------*/BaseType_t xTaskGenericCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, StackType_t * const puxStackBuffer, const MemoryRegion_t * const xRegions ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */ 80299d8:	19a3      	adds	r3, r4, r6UBaseType_t x;	/* Store the task name in the TCB. */	for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ )	{		pxTCB->pcTaskName[ x ] = pcName[ x ]; 80299da:	5dba      	ldrb	r2, [r7, r6] 80299dc:	f883 2034 	strb.w	r2, [r3, #52]	; 0x34		/* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than		configMAX_TASK_NAME_LEN characters just in case the memory after the		string is not accessible (extremely unlikely). */		if( pcName[ x ] == 0x00 ) 80299e0:	5dbb      	ldrb	r3, [r7, r6] 80299e2:	b113      	cbz	r3, 80299ea <xTaskGenericCreate+0x7a>static void prvInitialiseTCBVariables( TCB_t * const pxTCB, const char * const pcName, UBaseType_t uxPriority, const MemoryRegion_t * const xRegions, const uint16_t usStackDepth ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */{UBaseType_t x;	/* Store the task name in the TCB. */	for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ ) 80299e4:	3601      	adds	r6, #1 80299e6:	2e10      	cmp	r6, #16 80299e8:	d1f6      	bne.n	80299d8 <xTaskGenericCreate+0x68>		}	}	/* Ensure the name string is terminated in the case that the string length	was greater or equal to configMAX_TASK_NAME_LEN. */	pxTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0'; 80299ea:	2600      	movs	r6, #0		pxTCB->uxBasePriority = uxPriority;		pxTCB->uxMutexesHeld = 0;	}	#endif /* configUSE_MUTEXES */	vListInitialiseItem( &( pxTCB->xGenericListItem ) ); 80299ec:	1d27      	adds	r7, r4, #4 80299ee:	4638      	mov	r0, r7		}	}	/* Ensure the name string is terminated in the case that the string length	was greater or equal to configMAX_TASK_NAME_LEN. */	pxTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0'; 80299f0:	f884 6043 	strb.w	r6, [r4, #67]	; 0x43	else	{		mtCOVERAGE_TEST_MARKER();	}	pxTCB->uxPriority = uxPriority; 80299f4:	62e5      	str	r5, [r4, #44]	; 0x2c	#if ( configUSE_MUTEXES == 1 )	{		pxTCB->uxBasePriority = uxPriority; 80299f6:	64e5      	str	r5, [r4, #76]	; 0x4c		pxTCB->uxMutexesHeld = 0; 80299f8:	6526      	str	r6, [r4, #80]	; 0x50	}	#endif /* configUSE_MUTEXES */	vListInitialiseItem( &( pxTCB->xGenericListItem ) ); 80299fa:	f7ff fc4c 	bl	8029296 <vListInitialiseItem>	vListInitialiseItem( &( pxTCB->xEventListItem ) ); 80299fe:	f104 0018 	add.w	r0, r4, #24 8029a02:	f7ff fc48 	bl	8029296 <vListInitialiseItem>	/* Set the pxTCB as a link back from the ListItem_t.  This is so we can get	back to	the containing TCB from a generic item in a list. */	listSET_LIST_ITEM_OWNER( &( pxTCB->xGenericListItem ), pxTCB );	/* Event lists are always in priority order. */	listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 8029a06:	f1c5 0305 	rsb	r3, r5, #5	}	#endif /* portUSING_MPU_WRAPPERS */	#if ( configUSE_TASK_NOTIFICATIONS == 1 )	{		pxTCB->ulNotifiedValue = 0; 8029a0a:	6566      	str	r6, [r4, #84]	; 0x54	vListInitialiseItem( &( pxTCB->xGenericListItem ) );	vListInitialiseItem( &( pxTCB->xEventListItem ) );	/* Set the pxTCB as a link back from the ListItem_t.  This is so we can get	back to	the containing TCB from a generic item in a list. */	listSET_LIST_ITEM_OWNER( &( pxTCB->xGenericListItem ), pxTCB ); 8029a0c:	6124      	str	r4, [r4, #16]	/* Event lists are always in priority order. */	listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 8029a0e:	61a3      	str	r3, [r4, #24]	listSET_LIST_ITEM_OWNER( &( pxTCB->xEventListItem ), pxTCB ); 8029a10:	6264      	str	r4, [r4, #36]	; 0x24	#endif /* portUSING_MPU_WRAPPERS */	#if ( configUSE_TASK_NOTIFICATIONS == 1 )	{		pxTCB->ulNotifiedValue = 0;		pxTCB->eNotifyState = eNotWaitingNotification; 8029a12:	f884 6058 	strb.w	r6, [r4, #88]	; 0x58		{			pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters, xRunPrivileged );		}		#else /* portUSING_MPU_WRAPPERS */		{			pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters ); 8029a16:	4658      	mov	r0, fp 8029a18:	4649      	mov	r1, r9 8029a1a:	4652      	mov	r2, sl 8029a1c:	f000 fe24 	bl	802a668 <pxPortInitialiseStack> 8029a20:	6020      	str	r0, [r4, #0]		}		#endif /* portUSING_MPU_WRAPPERS */		if( ( void * ) pxCreatedTask != NULL ) 8029a22:	f1b8 0f00 	cmp.w	r8, #0 8029a26:	d001      	beq.n	8029a2c <xTaskGenericCreate+0xbc>		{			/* Pass the TCB out - in an anonymous way.  The calling function/			task can use this as a handle to delete the task later if			required.*/			*pxCreatedTask = ( TaskHandle_t ) pxNewTCB; 8029a28:	f8c8 4000 	str.w	r4, [r8]			mtCOVERAGE_TEST_MARKER();		}		/* Ensure interrupts don't access the task lists while they are being		updated. */		taskENTER_CRITICAL(); 8029a2c:	f000 fe50 	bl	802a6d0 <vPortEnterCritical>		{			uxCurrentNumberOfTasks++; 8029a30:	4a2e      	ldr	r2, [pc, #184]	; (8029aec <xTaskGenericCreate+0x17c>) 8029a32:	6813      	ldr	r3, [r2, #0] 8029a34:	3301      	adds	r3, #1 8029a36:	6013      	str	r3, [r2, #0]			if( pxCurrentTCB == NULL ) 8029a38:	4b2d      	ldr	r3, [pc, #180]	; (8029af0 <xTaskGenericCreate+0x180>) 8029a3a:	681e      	ldr	r6, [r3, #0] 8029a3c:	bb36      	cbnz	r6, 8029a8c <xTaskGenericCreate+0x11c>			{				/* There are no other tasks, or all the other tasks are in				the suspended state - make this the current task. */				pxCurrentTCB =  pxNewTCB; 8029a3e:	601c      	str	r4, [r3, #0]				if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 ) 8029a40:	6813      	ldr	r3, [r2, #0] 8029a42:	2b01      	cmp	r3, #1 8029a44:	d12a      	bne.n	8029a9c <xTaskGenericCreate+0x12c>{UBaseType_t uxPriority;	for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ )	{		vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) ); 8029a46:	f8df 80d0 	ldr.w	r8, [pc, #208]	; 8029b18 <xTaskGenericCreate+0x1a8> 8029a4a:	f04f 0914 	mov.w	r9, #20 8029a4e:	fb09 8006 	mla	r0, r9, r6, r8static void prvInitialiseTaskLists( void ){UBaseType_t uxPriority;	for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) 8029a52:	3601      	adds	r6, #1	{		vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) ); 8029a54:	f7ff fc14 	bl	8029280 <vListInitialise>static void prvInitialiseTaskLists( void ){UBaseType_t uxPriority;	for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ ) 8029a58:	2e05      	cmp	r6, #5 8029a5a:	d1f8      	bne.n	8029a4e <xTaskGenericCreate+0xde>	{		vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) );	}	vListInitialise( &xDelayedTaskList1 ); 8029a5c:	f8df 80bc 	ldr.w	r8, [pc, #188]	; 8029b1c <xTaskGenericCreate+0x1ac>	vListInitialise( &xDelayedTaskList2 ); 8029a60:	4e24      	ldr	r6, [pc, #144]	; (8029af4 <xTaskGenericCreate+0x184>)	for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ )	{		vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) );	}	vListInitialise( &xDelayedTaskList1 ); 8029a62:	4640      	mov	r0, r8 8029a64:	f7ff fc0c 	bl	8029280 <vListInitialise>	vListInitialise( &xDelayedTaskList2 ); 8029a68:	4630      	mov	r0, r6 8029a6a:	f7ff fc09 	bl	8029280 <vListInitialise>	vListInitialise( &xPendingReadyList ); 8029a6e:	4822      	ldr	r0, [pc, #136]	; (8029af8 <xTaskGenericCreate+0x188>) 8029a70:	f7ff fc06 	bl	8029280 <vListInitialise>	#if ( INCLUDE_vTaskDelete == 1 )	{		vListInitialise( &xTasksWaitingTermination ); 8029a74:	4821      	ldr	r0, [pc, #132]	; (8029afc <xTaskGenericCreate+0x18c>) 8029a76:	f7ff fc03 	bl	8029280 <vListInitialise>	}	#endif /* INCLUDE_vTaskDelete */	#if ( INCLUDE_vTaskSuspend == 1 )	{		vListInitialise( &xSuspendedTaskList ); 8029a7a:	4821      	ldr	r0, [pc, #132]	; (8029b00 <xTaskGenericCreate+0x190>) 8029a7c:	f7ff fc00 	bl	8029280 <vListInitialise>	}	#endif /* INCLUDE_vTaskSuspend */	/* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList	using list2. */	pxDelayedTaskList = &xDelayedTaskList1; 8029a80:	4b20      	ldr	r3, [pc, #128]	; (8029b04 <xTaskGenericCreate+0x194>) 8029a82:	f8c3 8000 	str.w	r8, [r3]	pxOverflowDelayedTaskList = &xDelayedTaskList2; 8029a86:	4b20      	ldr	r3, [pc, #128]	; (8029b08 <xTaskGenericCreate+0x198>) 8029a88:	601e      	str	r6, [r3, #0] 8029a8a:	e007      	b.n	8029a9c <xTaskGenericCreate+0x12c>			else			{				/* If the scheduler is not already running, make this task the				current task if it is the highest priority task to be created				so far. */				if( xSchedulerRunning == pdFALSE ) 8029a8c:	4a1f      	ldr	r2, [pc, #124]	; (8029b0c <xTaskGenericCreate+0x19c>) 8029a8e:	6812      	ldr	r2, [r2, #0] 8029a90:	b922      	cbnz	r2, 8029a9c <xTaskGenericCreate+0x12c>				{					if( pxCurrentTCB->uxPriority <= uxPriority ) 8029a92:	681a      	ldr	r2, [r3, #0] 8029a94:	6ad2      	ldr	r2, [r2, #44]	; 0x2c 8029a96:	42aa      	cmp	r2, r5					{						pxCurrentTCB = pxNewTCB; 8029a98:	bf98      	it	ls 8029a9a:	601c      	strls	r4, [r3, #0]				{					mtCOVERAGE_TEST_MARKER();				}			}			uxTaskNumber++; 8029a9c:	4a1c      	ldr	r2, [pc, #112]	; (8029b10 <xTaskGenericCreate+0x1a0>) 8029a9e:	6813      	ldr	r3, [r2, #0] 8029aa0:	3301      	adds	r3, #1 8029aa2:	6013      	str	r3, [r2, #0]				pxNewTCB->uxTCBNumber = uxTaskNumber;			}			#endif /* configUSE_TRACE_FACILITY */			traceTASK_CREATE( pxNewTCB );			prvAddTaskToReadyList( pxNewTCB ); 8029aa4:	4a1b      	ldr	r2, [pc, #108]	; (8029b14 <xTaskGenericCreate+0x1a4>)			uxTaskNumber++;			#if ( configUSE_TRACE_FACILITY == 1 )			{				/* Add a counter into the TCB for tracing only. */				pxNewTCB->uxTCBNumber = uxTaskNumber; 8029aa6:	6463      	str	r3, [r4, #68]	; 0x44			}			#endif /* configUSE_TRACE_FACILITY */			traceTASK_CREATE( pxNewTCB );			prvAddTaskToReadyList( pxNewTCB ); 8029aa8:	6ae3      	ldr	r3, [r4, #44]	; 0x2c 8029aaa:	6811      	ldr	r1, [r2, #0] 8029aac:	2401      	movs	r4, #1 8029aae:	fa04 f003 	lsl.w	r0, r4, r3 8029ab2:	4301      	orrs	r1, r0 8029ab4:	6011      	str	r1, [r2, #0] 8029ab6:	4a18      	ldr	r2, [pc, #96]	; (8029b18 <xTaskGenericCreate+0x1a8>) 8029ab8:	2014      	movs	r0, #20 8029aba:	fb00 2003 	mla	r0, r0, r3, r2 8029abe:	4639      	mov	r1, r7 8029ac0:	f7ff fbec 	bl	802929c <vListInsertEnd>			xReturn = pdPASS;			portSETUP_TCB( pxNewTCB );		}		taskEXIT_CRITICAL(); 8029ac4:	f000 fe30 	bl	802a728 <vPortExitCritical>		traceTASK_CREATE_FAILED();	}	if( xReturn == pdPASS )	{		if( xSchedulerRunning != pdFALSE ) 8029ac8:	4b10      	ldr	r3, [pc, #64]	; (8029b0c <xTaskGenericCreate+0x19c>) 8029aca:	681b      	ldr	r3, [r3, #0] 8029acc:	b133      	cbz	r3, 8029adc <xTaskGenericCreate+0x16c>		{			/* If the created task is of a higher priority than the current task			then it should run now. */			if( pxCurrentTCB->uxPriority < uxPriority ) 8029ace:	4b08      	ldr	r3, [pc, #32]	; (8029af0 <xTaskGenericCreate+0x180>) 8029ad0:	681b      	ldr	r3, [r3, #0] 8029ad2:	6adb      	ldr	r3, [r3, #44]	; 0x2c 8029ad4:	42ab      	cmp	r3, r5 8029ad6:	d201      	bcs.n	8029adc <xTaskGenericCreate+0x16c>			{				taskYIELD_IF_USING_PREEMPTION(); 8029ad8:	f000 fde6 	bl	802a6a8 <vPortYield>			#endif /* configUSE_TRACE_FACILITY */			traceTASK_CREATE( pxNewTCB );			prvAddTaskToReadyList( pxNewTCB );			xReturn = pdPASS; 8029adc:	4620      	mov	r0, r4 8029ade:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}		}		taskEXIT_CRITICAL();	}	else	{		xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; 8029ae2:	f04f 30ff 	mov.w	r0, #4294967295			mtCOVERAGE_TEST_MARKER();		}	}	return xReturn;} 8029ae6:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 8029aea:	bf00      	nop 8029aec:	20002a60 	.word	0x20002a60 8029af0:	20002a38 	.word	0x20002a38 8029af4:	200029a8 	.word	0x200029a8 8029af8:	20002a3c 	.word	0x20002a3c 8029afc:	20002a24 	.word	0x20002a24 8029b00:	20002a64 	.word	0x20002a64 8029b04:	20002988 	.word	0x20002988 8029b08:	20002a58 	.word	0x20002a58 8029b0c:	2000298c 	.word	0x2000298c 8029b10:	20002a5c 	.word	0x20002a5c 8029b14:	20002a78 	.word	0x20002a78 8029b18:	200029c0 	.word	0x200029c0 8029b1c:	20002994 	.word	0x2000299408029b20 <vTaskDelete>:/*-----------------------------------------------------------*/#if ( INCLUDE_vTaskDelete == 1 )	void vTaskDelete( TaskHandle_t xTaskToDelete )	{ 8029b20:	b538      	push	{r3, r4, r5, lr} 8029b22:	4604      	mov	r4, r0	TCB_t *pxTCB;		taskENTER_CRITICAL(); 8029b24:	f000 fdd4 	bl	802a6d0 <vPortEnterCritical>		{			/* If null is passed in here then it is the calling task that is			being deleted. */			pxTCB = prvGetTCBFromHandle( xTaskToDelete ); 8029b28:	b90c      	cbnz	r4, 8029b2e <vTaskDelete+0xe> 8029b2a:	4b22      	ldr	r3, [pc, #136]	; (8029bb4 <vTaskDelete+0x94>) 8029b2c:	681c      	ldr	r4, [r3, #0]			/* Remove task from the ready list and place in the	termination list.			This will stop the task from be scheduled.  The idle task will check			the termination list and free up any memory allocated by the			scheduler for the TCB and stack. */			if( uxListRemove( &( pxTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 8029b2e:	1d25      	adds	r5, r4, #4 8029b30:	4628      	mov	r0, r5 8029b32:	f7ff fbd7 	bl	80292e4 <uxListRemove> 8029b36:	b968      	cbnz	r0, 8029b54 <vTaskDelete+0x34>			{				taskRESET_READY_PRIORITY( pxTCB->uxPriority ); 8029b38:	6ae2      	ldr	r2, [r4, #44]	; 0x2c 8029b3a:	491f      	ldr	r1, [pc, #124]	; (8029bb8 <vTaskDelete+0x98>) 8029b3c:	2314      	movs	r3, #20 8029b3e:	4353      	muls	r3, r2 8029b40:	58cb      	ldr	r3, [r1, r3] 8029b42:	b93b      	cbnz	r3, 8029b54 <vTaskDelete+0x34> 8029b44:	4b1d      	ldr	r3, [pc, #116]	; (8029bbc <vTaskDelete+0x9c>) 8029b46:	2001      	movs	r0, #1 8029b48:	6819      	ldr	r1, [r3, #0] 8029b4a:	fa00 f202 	lsl.w	r2, r0, r2 8029b4e:	ea21 0202 	bic.w	r2, r1, r2 8029b52:	601a      	str	r2, [r3, #0]			{				mtCOVERAGE_TEST_MARKER();			}			/* Is the task waiting on an event also? */			if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) 8029b54:	6aa3      	ldr	r3, [r4, #40]	; 0x28 8029b56:	b11b      	cbz	r3, 8029b60 <vTaskDelete+0x40>			{				( void ) uxListRemove( &( pxTCB->xEventListItem ) ); 8029b58:	f104 0018 	add.w	r0, r4, #24 8029b5c:	f7ff fbc2 	bl	80292e4 <uxListRemove>			else			{				mtCOVERAGE_TEST_MARKER();			}			vListInsertEnd( &xTasksWaitingTermination, &( pxTCB->xGenericListItem ) ); 8029b60:	4817      	ldr	r0, [pc, #92]	; (8029bc0 <vTaskDelete+0xa0>) 8029b62:	4629      	mov	r1, r5 8029b64:	f7ff fb9a 	bl	802929c <vListInsertEnd>			/* Increment the ucTasksDeleted variable so the idle task knows			there is a task that has been deleted and that it should therefore			check the xTasksWaitingTermination list. */			++uxTasksDeleted; 8029b68:	4b16      	ldr	r3, [pc, #88]	; (8029bc4 <vTaskDelete+0xa4>) 8029b6a:	681a      	ldr	r2, [r3, #0] 8029b6c:	3201      	adds	r2, #1 8029b6e:	601a      	str	r2, [r3, #0]			/* Increment the uxTaskNumberVariable also so kernel aware debuggers			can detect that the task lists need re-generating. */			uxTaskNumber++; 8029b70:	4b15      	ldr	r3, [pc, #84]	; (8029bc8 <vTaskDelete+0xa8>) 8029b72:	681a      	ldr	r2, [r3, #0] 8029b74:	3201      	adds	r2, #1 8029b76:	601a      	str	r2, [r3, #0]			traceTASK_DELETE( pxTCB );		}		taskEXIT_CRITICAL(); 8029b78:	f000 fdd6 	bl	802a728 <vPortExitCritical>		/* Force a reschedule if it is the currently running task that has just		been deleted. */		if( xSchedulerRunning != pdFALSE ) 8029b7c:	4b13      	ldr	r3, [pc, #76]	; (8029bcc <vTaskDelete+0xac>) 8029b7e:	681b      	ldr	r3, [r3, #0] 8029b80:	2b00      	cmp	r3, #0 8029b82:	d015      	beq.n	8029bb0 <vTaskDelete+0x90>		{			if( pxTCB == pxCurrentTCB ) 8029b84:	4b0b      	ldr	r3, [pc, #44]	; (8029bb4 <vTaskDelete+0x94>) 8029b86:	681b      	ldr	r3, [r3, #0] 8029b88:	429c      	cmp	r4, r3 8029b8a:	d109      	bne.n	8029ba0 <vTaskDelete+0x80>			{				configASSERT( uxSchedulerSuspended == 0 ); 8029b8c:	4b10      	ldr	r3, [pc, #64]	; (8029bd0 <vTaskDelete+0xb0>) 8029b8e:	681b      	ldr	r3, [r3, #0] 8029b90:	b113      	cbz	r3, 8029b98 <vTaskDelete+0x78> 8029b92:	f000 fd95 	bl	802a6c0 <ulPortSetInterruptMask> 8029b96:	e7fe      	b.n	8029b96 <vTaskDelete+0x76>					prvResetNextTaskUnblockTime();				}				taskEXIT_CRITICAL();			}		}	} 8029b98:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}				in which Windows specific clean up operations are performed,				after which it is not possible to yield away from this task -				hence xYieldPending is used to latch that a context switch is				required. */				portPRE_TASK_DELETE_HOOK( pxTCB, &xYieldPending );				portYIELD_WITHIN_API(); 8029b9c:	f000 bd84 	b.w	802a6a8 <vPortYield>			}			else			{				/* Reset the next expected unblock time in case it referred to				the task that has just been deleted. */				taskENTER_CRITICAL(); 8029ba0:	f000 fd96 	bl	802a6d0 <vPortEnterCritical>				{					prvResetNextTaskUnblockTime(); 8029ba4:	f7ff feaa 	bl	80298fc <prvResetNextTaskUnblockTime>				}				taskEXIT_CRITICAL();			}		}	} 8029ba8:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}				the task that has just been deleted. */				taskENTER_CRITICAL();				{					prvResetNextTaskUnblockTime();				}				taskEXIT_CRITICAL(); 8029bac:	f000 bdbc 	b.w	802a728 <vPortExitCritical> 8029bb0:	bd38      	pop	{r3, r4, r5, pc} 8029bb2:	bf00      	nop 8029bb4:	20002a38 	.word	0x20002a38 8029bb8:	200029c0 	.word	0x200029c0 8029bbc:	20002a78 	.word	0x20002a78 8029bc0:	20002a24 	.word	0x20002a24 8029bc4:	20002990 	.word	0x20002990 8029bc8:	20002a5c 	.word	0x20002a5c 8029bcc:	2000298c 	.word	0x2000298c 8029bd0:	20002a50 	.word	0x20002a5008029bd4 <vTaskStartScheduler>:#endif /* ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) *//*-----------------------------------------------------------*/void vTaskStartScheduler( void ){ 8029bd4:	b530      	push	{r4, r5, lr} 8029bd6:	b085      	sub	sp, #20		xReturn = xTaskCreate( prvIdleTask, "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), &xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */	}	#else	{		/* Create the idle task without storing its handle. */		xReturn = xTaskCreate( prvIdleTask, "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), NULL );  /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ 8029bd8:	2400      	movs	r4, #0 8029bda:	2280      	movs	r2, #128	; 0x80 8029bdc:	9400      	str	r4, [sp, #0] 8029bde:	9401      	str	r4, [sp, #4] 8029be0:	9402      	str	r4, [sp, #8] 8029be2:	9403      	str	r4, [sp, #12] 8029be4:	480e      	ldr	r0, [pc, #56]	; (8029c20 <vTaskStartScheduler+0x4c>) 8029be6:	490f      	ldr	r1, [pc, #60]	; (8029c24 <vTaskStartScheduler+0x50>) 8029be8:	4623      	mov	r3, r4 8029bea:	f7ff fec1 	bl	8029970 <xTaskGenericCreate>	}	#endif /* INCLUDE_xTaskGetIdleTaskHandle */	#if ( configUSE_TIMERS == 1 )	{		if( xReturn == pdPASS ) 8029bee:	2801      	cmp	r0, #1		xReturn = xTaskCreate( prvIdleTask, "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), &xIdleTaskHandle ); /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */	}	#else	{		/* Create the idle task without storing its handle. */		xReturn = xTaskCreate( prvIdleTask, "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, ( tskIDLE_PRIORITY | portPRIVILEGE_BIT ), NULL );  /*lint !e961 MISRA exception, justified as it is not a redundant explicit cast to all supported compilers. */ 8029bf0:	4605      	mov	r5, r0	}	#endif /* INCLUDE_xTaskGetIdleTaskHandle */	#if ( configUSE_TIMERS == 1 )	{		if( xReturn == pdPASS ) 8029bf2:	d10f      	bne.n	8029c14 <vTaskStartScheduler+0x40>		{			xReturn = xTimerCreateTimerTask(); 8029bf4:	f000 fbce 	bl	802a394 <xTimerCreateTimerTask>			mtCOVERAGE_TEST_MARKER();		}	}	#endif /* configUSE_TIMERS */	if( xReturn == pdPASS ) 8029bf8:	2801      	cmp	r0, #1	#if ( configUSE_TIMERS == 1 )	{		if( xReturn == pdPASS )		{			xReturn = xTimerCreateTimerTask(); 8029bfa:	4605      	mov	r5, r0			mtCOVERAGE_TEST_MARKER();		}	}	#endif /* configUSE_TIMERS */	if( xReturn == pdPASS ) 8029bfc:	d10a      	bne.n	8029c14 <vTaskStartScheduler+0x40>		/* Interrupts are turned off here, to ensure a tick does not occur		before or during the call to xPortStartScheduler().  The stacks of		the created tasks contain a status word with interrupts switched on		so interrupts will automatically get re-enabled when the first task		starts to run. */		portDISABLE_INTERRUPTS(); 8029bfe:	f000 fd5f 	bl	802a6c0 <ulPortSetInterruptMask>			structure specific to the task that will run first. */			_impure_ptr = &( pxCurrentTCB->xNewLib_reent );		}		#endif /* configUSE_NEWLIB_REENTRANT */		xSchedulerRunning = pdTRUE; 8029c02:	4b09      	ldr	r3, [pc, #36]	; (8029c28 <vTaskStartScheduler+0x54>) 8029c04:	601d      	str	r5, [r3, #0]		xTickCount = ( TickType_t ) 0U; 8029c06:	4b09      	ldr	r3, [pc, #36]	; (8029c2c <vTaskStartScheduler+0x58>) 8029c08:	601c      	str	r4, [r3, #0]		/* This line will only be reached if the kernel could not be started,		because there was not enough FreeRTOS heap to create the idle task		or the timer task. */		configASSERT( xReturn );	}} 8029c0a:	b005      	add	sp, #20 8029c0c:	e8bd 4030 	ldmia.w	sp!, {r4, r5, lr}		the run time counter time base. */		portCONFIGURE_TIMER_FOR_RUN_TIME_STATS();		/* Setting up the timer tick is hardware specific and thus in the		portable interface. */		if( xPortStartScheduler() != pdFALSE ) 8029c10:	f000 bde2 	b.w	802a7d8 <xPortStartScheduler>	else	{		/* This line will only be reached if the kernel could not be started,		because there was not enough FreeRTOS heap to create the idle task		or the timer task. */		configASSERT( xReturn ); 8029c14:	b915      	cbnz	r5, 8029c1c <vTaskStartScheduler+0x48> 8029c16:	f000 fd53 	bl	802a6c0 <ulPortSetInterruptMask> 8029c1a:	e7fe      	b.n	8029c1a <vTaskStartScheduler+0x46>	}} 8029c1c:	b005      	add	sp, #20 8029c1e:	bd30      	pop	{r4, r5, pc} 8029c20:	08029e41 	.word	0x08029e41 8029c24:	08036e76 	.word	0x08036e76 8029c28:	2000298c 	.word	0x2000298c 8029c2c:	20002a54 	.word	0x20002a5408029c30 <vTaskSuspendAll>:{	/* A critical section is not required as the variable is of type	BaseType_t.  Please read Richard Barry's reply in the following link to a	post in the FreeRTOS support forum before reporting this as a bug! -	http://goo.gl/wu4acr */	++uxSchedulerSuspended; 8029c30:	4b02      	ldr	r3, [pc, #8]	; (8029c3c <vTaskSuspendAll+0xc>) 8029c32:	681a      	ldr	r2, [r3, #0] 8029c34:	3201      	adds	r2, #1 8029c36:	601a      	str	r2, [r3, #0] 8029c38:	4770      	bx	lr 8029c3a:	bf00      	nop 8029c3c:	20002a50 	.word	0x20002a5008029c40 <xTaskGetTickCount>:TickType_t xTicks;	/* Critical section required if running on a 16 bit processor. */	portTICK_TYPE_ENTER_CRITICAL();	{		xTicks = xTickCount; 8029c40:	4b01      	ldr	r3, [pc, #4]	; (8029c48 <xTaskGetTickCount+0x8>) 8029c42:	6818      	ldr	r0, [r3, #0]	}	portTICK_TYPE_EXIT_CRITICAL();	return xTicks;} 8029c44:	4770      	bx	lr 8029c46:	bf00      	nop 8029c48:	20002a54 	.word	0x20002a5408029c4c <xTaskIncrementTick>:	/* Called by the portable layer each time a tick interrupt occurs.	Increments the tick then checks to see if the new tick value will cause any	tasks to be unblocked. */	traceTASK_INCREMENT_TICK( xTickCount );	if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) 8029c4c:	4b3b      	ldr	r3, [pc, #236]	; (8029d3c <xTaskIncrementTick+0xf0>) 8029c4e:	681b      	ldr	r3, [r3, #0]#endif /* configUSE_TICKLESS_IDLE *//*----------------------------------------------------------*/BaseType_t xTaskIncrementTick( void ){ 8029c50:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}	/* Called by the portable layer each time a tick interrupt occurs.	Increments the tick then checks to see if the new tick value will cause any	tasks to be unblocked. */	traceTASK_INCREMENT_TICK( xTickCount );	if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) 8029c54:	2b00      	cmp	r3, #0 8029c56:	d15b      	bne.n	8029d10 <xTaskIncrementTick+0xc4>	{		/* Increment the RTOS tick, switching the delayed and overflowed		delayed lists if it wraps to 0. */		++xTickCount; 8029c58:	4b39      	ldr	r3, [pc, #228]	; (8029d40 <xTaskIncrementTick+0xf4>) 8029c5a:	681a      	ldr	r2, [r3, #0] 8029c5c:	3201      	adds	r2, #1 8029c5e:	601a      	str	r2, [r3, #0]		{			/* Minor optimisation.  The tick count cannot change in this			block. */			const TickType_t xConstTickCount = xTickCount; 8029c60:	681e      	ldr	r6, [r3, #0]			if( xConstTickCount == ( TickType_t ) 0U ) 8029c62:	b98e      	cbnz	r6, 8029c88 <xTaskIncrementTick+0x3c>			{				taskSWITCH_DELAYED_LISTS(); 8029c64:	4b37      	ldr	r3, [pc, #220]	; (8029d44 <xTaskIncrementTick+0xf8>) 8029c66:	681a      	ldr	r2, [r3, #0] 8029c68:	6812      	ldr	r2, [r2, #0] 8029c6a:	b112      	cbz	r2, 8029c72 <xTaskIncrementTick+0x26> 8029c6c:	f000 fd28 	bl	802a6c0 <ulPortSetInterruptMask> 8029c70:	e7fe      	b.n	8029c70 <xTaskIncrementTick+0x24> 8029c72:	4a35      	ldr	r2, [pc, #212]	; (8029d48 <xTaskIncrementTick+0xfc>) 8029c74:	6819      	ldr	r1, [r3, #0] 8029c76:	6810      	ldr	r0, [r2, #0] 8029c78:	6018      	str	r0, [r3, #0] 8029c7a:	4b34      	ldr	r3, [pc, #208]	; (8029d4c <xTaskIncrementTick+0x100>) 8029c7c:	6011      	str	r1, [r2, #0] 8029c7e:	681a      	ldr	r2, [r3, #0] 8029c80:	3201      	adds	r2, #1 8029c82:	601a      	str	r2, [r3, #0] 8029c84:	f7ff fe3a 	bl	80298fc <prvResetNextTaskUnblockTime>			/* See if this tick has made a timeout expire.  Tasks are stored in			the	queue in the order of their wake time - meaning once one task			has been found whose block time has not expired there is no need to			look any further down the list. */			if( xConstTickCount >= xNextTaskUnblockTime ) 8029c88:	4b31      	ldr	r3, [pc, #196]	; (8029d50 <xTaskIncrementTick+0x104>) 8029c8a:	681b      	ldr	r3, [r3, #0] 8029c8c:	2400      	movs	r4, #0 8029c8e:	429e      	cmp	r6, r3 8029c90:	d200      	bcs.n	8029c94 <xTaskIncrementTick+0x48> 8029c92:	e032      	b.n	8029cfa <xTaskIncrementTick+0xae>			{				for( ;; )				{					if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) 8029c94:	4f2b      	ldr	r7, [pc, #172]	; (8029d44 <xTaskIncrementTick+0xf8>)							mtCOVERAGE_TEST_MARKER();						}						/* Place the unblocked task into the appropriate ready						list. */						prvAddTaskToReadyList( pxTCB ); 8029c96:	f8df 80cc 	ldr.w	r8, [pc, #204]	; 8029d64 <xTaskIncrementTick+0x118> 8029c9a:	f8df a0bc 	ldr.w	sl, [pc, #188]	; 8029d58 <xTaskIncrementTick+0x10c>			look any further down the list. */			if( xConstTickCount >= xNextTaskUnblockTime )			{				for( ;; )				{					if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) 8029c9e:	683b      	ldr	r3, [r7, #0] 8029ca0:	681b      	ldr	r3, [r3, #0] 8029ca2:	2b00      	cmp	r3, #0 8029ca4:	d13a      	bne.n	8029d1c <xTaskIncrementTick+0xd0>						/* The delayed list is empty.  Set xNextTaskUnblockTime						to the maximum possible value so it is extremely						unlikely that the						if( xTickCount >= xNextTaskUnblockTime ) test will pass						next time through. */						xNextTaskUnblockTime = portMAX_DELAY; 8029ca6:	4b2a      	ldr	r3, [pc, #168]	; (8029d50 <xTaskIncrementTick+0x104>) 8029ca8:	f04f 32ff 	mov.w	r2, #4294967295 8029cac:	601a      	str	r2, [r3, #0]						break; 8029cae:	e024      	b.n	8029cfa <xTaskIncrementTick+0xae>							/* It is not time to unblock this item yet, but the							item value is the time at which the task at the head							of the blocked list must be removed from the Blocked							state -	so record the item value in							xNextTaskUnblockTime. */							xNextTaskUnblockTime = xItemValue; 8029cb0:	4a27      	ldr	r2, [pc, #156]	; (8029d50 <xTaskIncrementTick+0x104>) 8029cb2:	6013      	str	r3, [r2, #0]							break; 8029cb4:	e021      	b.n	8029cfa <xTaskIncrementTick+0xae>						{							mtCOVERAGE_TEST_MARKER();						}						/* It is time to remove the item from the Blocked state. */						( void ) uxListRemove( &( pxTCB->xGenericListItem ) ); 8029cb6:	f105 0904 	add.w	r9, r5, #4 8029cba:	4648      	mov	r0, r9 8029cbc:	f7ff fb12 	bl	80292e4 <uxListRemove>						/* Is the task waiting on an event also?  If so remove						it from the event list. */						if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) 8029cc0:	6aab      	ldr	r3, [r5, #40]	; 0x28 8029cc2:	b11b      	cbz	r3, 8029ccc <xTaskIncrementTick+0x80>						{							( void ) uxListRemove( &( pxTCB->xEventListItem ) ); 8029cc4:	f105 0018 	add.w	r0, r5, #24 8029cc8:	f7ff fb0c 	bl	80292e4 <uxListRemove>							mtCOVERAGE_TEST_MARKER();						}						/* Place the unblocked task into the appropriate ready						list. */						prvAddTaskToReadyList( pxTCB ); 8029ccc:	6aeb      	ldr	r3, [r5, #44]	; 0x2c 8029cce:	f8d8 1000 	ldr.w	r1, [r8] 8029cd2:	2201      	movs	r2, #1 8029cd4:	fa02 f203 	lsl.w	r2, r2, r3 8029cd8:	2014      	movs	r0, #20 8029cda:	430a      	orrs	r2, r1 8029cdc:	fb00 a003 	mla	r0, r0, r3, sl 8029ce0:	4649      	mov	r1, r9 8029ce2:	f8c8 2000 	str.w	r2, [r8] 8029ce6:	f7ff fad9 	bl	802929c <vListInsertEnd>						{							/* Preemption is on, but a context switch should							only be performed if the unblocked task has a							priority that is equal to or higher than the							currently executing task. */							if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) 8029cea:	4b1a      	ldr	r3, [pc, #104]	; (8029d54 <xTaskIncrementTick+0x108>) 8029cec:	6aea      	ldr	r2, [r5, #44]	; 0x2c 8029cee:	681b      	ldr	r3, [r3, #0] 8029cf0:	6adb      	ldr	r3, [r3, #44]	; 0x2c							{								xSwitchRequired = pdTRUE; 8029cf2:	429a      	cmp	r2, r3 8029cf4:	bf28      	it	cs 8029cf6:	2401      	movcs	r4, #1 8029cf8:	e7d1      	b.n	8029c9e <xTaskIncrementTick+0x52>		/* Tasks of equal priority to the currently running task will share		processing time (time slice) if preemption is on, and the application		writer has not explicitly turned time slicing off. */		#if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) )		{			if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 ) 8029cfa:	4b16      	ldr	r3, [pc, #88]	; (8029d54 <xTaskIncrementTick+0x108>) 8029cfc:	681b      	ldr	r3, [r3, #0] 8029cfe:	6adb      	ldr	r3, [r3, #44]	; 0x2c 8029d00:	2214      	movs	r2, #20 8029d02:	4353      	muls	r3, r2 8029d04:	4a14      	ldr	r2, [pc, #80]	; (8029d58 <xTaskIncrementTick+0x10c>) 8029d06:	58d3      	ldr	r3, [r2, r3]			{				xSwitchRequired = pdTRUE; 8029d08:	2b01      	cmp	r3, #1 8029d0a:	bf88      	it	hi 8029d0c:	2401      	movhi	r4, #1 8029d0e:	e00c      	b.n	8029d2a <xTaskIncrementTick+0xde>		}		#endif /* configUSE_TICK_HOOK */	}	else	{		++uxPendedTicks; 8029d10:	4b12      	ldr	r3, [pc, #72]	; (8029d5c <xTaskIncrementTick+0x110>) 8029d12:	681a      	ldr	r2, [r3, #0] 8029d14:	3201      	adds	r2, #1 8029d16:	601a      	str	r2, [r3, #0]BaseType_t xTaskIncrementTick( void ){TCB_t * pxTCB;TickType_t xItemValue;BaseType_t xSwitchRequired = pdFALSE; 8029d18:	2400      	movs	r4, #0 8029d1a:	e006      	b.n	8029d2a <xTaskIncrementTick+0xde>					{						/* The delayed list is not empty, get the value of the						item at the head of the delayed list.  This is the time						at which the task at the head of the delayed list must						be removed from the Blocked state. */						pxTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); 8029d1c:	683b      	ldr	r3, [r7, #0] 8029d1e:	68db      	ldr	r3, [r3, #12] 8029d20:	68dd      	ldr	r5, [r3, #12]						xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xGenericListItem ) ); 8029d22:	686b      	ldr	r3, [r5, #4]						if( xConstTickCount < xItemValue ) 8029d24:	429e      	cmp	r6, r3 8029d26:	d2c6      	bcs.n	8029cb6 <xTaskIncrementTick+0x6a> 8029d28:	e7c2      	b.n	8029cb0 <xTaskIncrementTick+0x64>		#endif	}	#if ( configUSE_PREEMPTION == 1 )	{		if( xYieldPending != pdFALSE ) 8029d2a:	4b0d      	ldr	r3, [pc, #52]	; (8029d60 <xTaskIncrementTick+0x114>) 8029d2c:	681b      	ldr	r3, [r3, #0]		{			xSwitchRequired = pdTRUE; 8029d2e:	2b00      	cmp	r3, #0 8029d30:	bf18      	it	ne 8029d32:	2401      	movne	r4, #1		}	}	#endif /* configUSE_PREEMPTION */	return xSwitchRequired;} 8029d34:	4620      	mov	r0, r4 8029d36:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 8029d3a:	bf00      	nop 8029d3c:	20002a50 	.word	0x20002a50 8029d40:	20002a54 	.word	0x20002a54 8029d44:	20002988 	.word	0x20002988 8029d48:	20002a58 	.word	0x20002a58 8029d4c:	20002984 	.word	0x20002984 8029d50:	200015dc 	.word	0x200015dc 8029d54:	20002a38 	.word	0x20002a38 8029d58:	200029c0 	.word	0x200029c0 8029d5c:	200029bc 	.word	0x200029bc 8029d60:	20002a7c 	.word	0x20002a7c 8029d64:	20002a78 	.word	0x20002a7808029d68 <xTaskResumeAll>:#endif /* configUSE_TICKLESS_IDLE *//*----------------------------------------------------------*/BaseType_t xTaskResumeAll( void ){ 8029d68:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}TCB_t *pxTCB;BaseType_t xAlreadyYielded = pdFALSE;	/* If uxSchedulerSuspended is zero then this function does not match a	previous call to vTaskSuspendAll(). */	configASSERT( uxSchedulerSuspended ); 8029d6c:	4c2c      	ldr	r4, [pc, #176]	; (8029e20 <xTaskResumeAll+0xb8>) 8029d6e:	6823      	ldr	r3, [r4, #0] 8029d70:	b913      	cbnz	r3, 8029d78 <xTaskResumeAll+0x10> 8029d72:	f000 fca5 	bl	802a6c0 <ulPortSetInterruptMask> 8029d76:	e7fe      	b.n	8029d76 <xTaskResumeAll+0xe>	/* It is possible that an ISR caused a task to be removed from an event	list while the scheduler was suspended.  If this was the case then the	removed task will have been added to the xPendingReadyList.  Once the	scheduler has been resumed it is safe to move all the pending ready	tasks from this list into their appropriate ready list. */	taskENTER_CRITICAL(); 8029d78:	f000 fcaa 	bl	802a6d0 <vPortEnterCritical>	{		--uxSchedulerSuspended; 8029d7c:	6823      	ldr	r3, [r4, #0] 8029d7e:	3b01      	subs	r3, #1 8029d80:	6023      	str	r3, [r4, #0]		if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) 8029d82:	6823      	ldr	r3, [r4, #0] 8029d84:	b10b      	cbz	r3, 8029d8a <xTaskResumeAll+0x22>/*----------------------------------------------------------*/BaseType_t xTaskResumeAll( void ){TCB_t *pxTCB;BaseType_t xAlreadyYielded = pdFALSE; 8029d86:	2400      	movs	r4, #0 8029d88:	e044      	b.n	8029e14 <xTaskResumeAll+0xac>	{		--uxSchedulerSuspended;		if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )		{			if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U ) 8029d8a:	4b26      	ldr	r3, [pc, #152]	; (8029e24 <xTaskResumeAll+0xbc>) 8029d8c:	681b      	ldr	r3, [r3, #0] 8029d8e:	bb0b      	cbnz	r3, 8029dd4 <xTaskResumeAll+0x6c> 8029d90:	e7f9      	b.n	8029d86 <xTaskResumeAll+0x1e>			{				/* Move any readied tasks from the pending list into the				appropriate ready list. */				while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )				{					pxTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); 8029d92:	68f3      	ldr	r3, [r6, #12] 8029d94:	68dc      	ldr	r4, [r3, #12]					( void ) uxListRemove( &( pxTCB->xEventListItem ) );					( void ) uxListRemove( &( pxTCB->xGenericListItem ) ); 8029d96:	f104 0804 	add.w	r8, r4, #4				/* Move any readied tasks from the pending list into the				appropriate ready list. */				while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )				{					pxTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) );					( void ) uxListRemove( &( pxTCB->xEventListItem ) ); 8029d9a:	f104 0018 	add.w	r0, r4, #24 8029d9e:	f7ff faa1 	bl	80292e4 <uxListRemove>					( void ) uxListRemove( &( pxTCB->xGenericListItem ) ); 8029da2:	4640      	mov	r0, r8 8029da4:	f7ff fa9e 	bl	80292e4 <uxListRemove>					prvAddTaskToReadyList( pxTCB ); 8029da8:	6ae3      	ldr	r3, [r4, #44]	; 0x2c 8029daa:	682a      	ldr	r2, [r5, #0] 8029dac:	2701      	movs	r7, #1 8029dae:	fa07 f103 	lsl.w	r1, r7, r3 8029db2:	2014      	movs	r0, #20 8029db4:	430a      	orrs	r2, r1 8029db6:	fb00 9003 	mla	r0, r0, r3, r9 8029dba:	4641      	mov	r1, r8 8029dbc:	602a      	str	r2, [r5, #0] 8029dbe:	f7ff fa6d 	bl	802929c <vListInsertEnd>					/* If the moved task has a priority higher than the current					task then a yield must be performed. */					if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) 8029dc2:	4b19      	ldr	r3, [pc, #100]	; (8029e28 <xTaskResumeAll+0xc0>) 8029dc4:	6ae2      	ldr	r2, [r4, #44]	; 0x2c 8029dc6:	681b      	ldr	r3, [r3, #0] 8029dc8:	6adb      	ldr	r3, [r3, #44]	; 0x2c 8029dca:	429a      	cmp	r2, r3 8029dcc:	d306      	bcc.n	8029ddc <xTaskResumeAll+0x74>					{						xYieldPending = pdTRUE; 8029dce:	4b17      	ldr	r3, [pc, #92]	; (8029e2c <xTaskResumeAll+0xc4>) 8029dd0:	601f      	str	r7, [r3, #0] 8029dd2:	e003      	b.n	8029ddc <xTaskResumeAll+0x74>		{			if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U )			{				/* Move any readied tasks from the pending list into the				appropriate ready list. */				while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) 8029dd4:	4e16      	ldr	r6, [pc, #88]	; (8029e30 <xTaskResumeAll+0xc8>)				{					pxTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) );					( void ) uxListRemove( &( pxTCB->xEventListItem ) );					( void ) uxListRemove( &( pxTCB->xGenericListItem ) );					prvAddTaskToReadyList( pxTCB ); 8029dd6:	4d17      	ldr	r5, [pc, #92]	; (8029e34 <xTaskResumeAll+0xcc>) 8029dd8:	f8df 9060 	ldr.w	r9, [pc, #96]	; 8029e3c <xTaskResumeAll+0xd4>		{			if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U )			{				/* Move any readied tasks from the pending list into the				appropriate ready list. */				while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) 8029ddc:	6833      	ldr	r3, [r6, #0] 8029dde:	2b00      	cmp	r3, #0 8029de0:	d1d7      	bne.n	8029d92 <xTaskResumeAll+0x2a>				/* If any ticks occurred while the scheduler was suspended then				they should be processed now.  This ensures the tick count does				not	slip, and that any delayed tasks are resumed at the correct				time. */				if( uxPendedTicks > ( UBaseType_t ) 0U ) 8029de2:	4c15      	ldr	r4, [pc, #84]	; (8029e38 <xTaskResumeAll+0xd0>) 8029de4:	6823      	ldr	r3, [r4, #0] 8029de6:	b96b      	cbnz	r3, 8029e04 <xTaskResumeAll+0x9c>				else				{					mtCOVERAGE_TEST_MARKER();				}				if( xYieldPending == pdTRUE ) 8029de8:	4b10      	ldr	r3, [pc, #64]	; (8029e2c <xTaskResumeAll+0xc4>) 8029dea:	681c      	ldr	r4, [r3, #0] 8029dec:	2c01      	cmp	r4, #1 8029dee:	d1ca      	bne.n	8029d86 <xTaskResumeAll+0x1e> 8029df0:	e00e      	b.n	8029e10 <xTaskResumeAll+0xa8>				time. */				if( uxPendedTicks > ( UBaseType_t ) 0U )				{					while( uxPendedTicks > ( UBaseType_t ) 0U )					{						if( xTaskIncrementTick() != pdFALSE ) 8029df2:	f7ff ff2b 	bl	8029c4c <xTaskIncrementTick> 8029df6:	b108      	cbz	r0, 8029dfc <xTaskResumeAll+0x94>						{							xYieldPending = pdTRUE; 8029df8:	2301      	movs	r3, #1 8029dfa:	6033      	str	r3, [r6, #0]						}						else						{							mtCOVERAGE_TEST_MARKER();						}						--uxPendedTicks; 8029dfc:	682b      	ldr	r3, [r5, #0] 8029dfe:	3b01      	subs	r3, #1 8029e00:	602b      	str	r3, [r5, #0] 8029e02:	e001      	b.n	8029e08 <xTaskResumeAll+0xa0>				{					while( uxPendedTicks > ( UBaseType_t ) 0U )					{						if( xTaskIncrementTick() != pdFALSE )						{							xYieldPending = pdTRUE; 8029e04:	4e09      	ldr	r6, [pc, #36]	; (8029e2c <xTaskResumeAll+0xc4>) 8029e06:	4625      	mov	r5, r4				they should be processed now.  This ensures the tick count does				not	slip, and that any delayed tasks are resumed at the correct				time. */				if( uxPendedTicks > ( UBaseType_t ) 0U )				{					while( uxPendedTicks > ( UBaseType_t ) 0U ) 8029e08:	6823      	ldr	r3, [r4, #0] 8029e0a:	2b00      	cmp	r3, #0 8029e0c:	d1f1      	bne.n	8029df2 <xTaskResumeAll+0x8a> 8029e0e:	e7eb      	b.n	8029de8 <xTaskResumeAll+0x80>					#if( configUSE_PREEMPTION != 0 )					{						xAlreadyYielded = pdTRUE;					}					#endif					taskYIELD_IF_USING_PREEMPTION(); 8029e10:	f000 fc4a 	bl	802a6a8 <vPortYield>		else		{			mtCOVERAGE_TEST_MARKER();		}	}	taskEXIT_CRITICAL(); 8029e14:	f000 fc88 	bl	802a728 <vPortExitCritical>	return xAlreadyYielded;} 8029e18:	4620      	mov	r0, r4 8029e1a:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 8029e1e:	bf00      	nop 8029e20:	20002a50 	.word	0x20002a50 8029e24:	20002a60 	.word	0x20002a60 8029e28:	20002a38 	.word	0x20002a38 8029e2c:	20002a7c 	.word	0x20002a7c 8029e30:	20002a3c 	.word	0x20002a3c 8029e34:	20002a78 	.word	0x20002a78 8029e38:	200029bc 	.word	0x200029bc 8029e3c:	200029c0 	.word	0x200029c008029e40 <prvIdleTask>: * * void prvIdleTask( void *pvParameters ); * */static portTASK_FUNCTION( prvIdleTask, pvParameters ){ 8029e40:	b5f8      	push	{r3, r4, r5, r6, r7, lr}	{		BaseType_t xListIsEmpty;		/* ucTasksDeleted is used to prevent vTaskSuspendAll() being called		too often in the idle task. */		while( uxTasksDeleted > ( UBaseType_t ) 0U ) 8029e42:	4c14      	ldr	r4, [pc, #80]	; (8029e94 <prvIdleTask+0x54>)		{			vTaskSuspendAll();			{				xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination ); 8029e44:	4e14      	ldr	r6, [pc, #80]	; (8029e98 <prvIdleTask+0x58>)				taskENTER_CRITICAL();				{					pxTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) );					( void ) uxListRemove( &( pxTCB->xGenericListItem ) );					--uxCurrentNumberOfTasks; 8029e46:	4f15      	ldr	r7, [pc, #84]	; (8029e9c <prvIdleTask+0x5c>)	{		BaseType_t xListIsEmpty;		/* ucTasksDeleted is used to prevent vTaskSuspendAll() being called		too often in the idle task. */		while( uxTasksDeleted > ( UBaseType_t ) 0U ) 8029e48:	6823      	ldr	r3, [r4, #0] 8029e4a:	b1e3      	cbz	r3, 8029e86 <prvIdleTask+0x46>		{			vTaskSuspendAll(); 8029e4c:	f7ff fef0 	bl	8029c30 <vTaskSuspendAll>			{				xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination ); 8029e50:	6835      	ldr	r5, [r6, #0]			}			( void ) xTaskResumeAll(); 8029e52:	f7ff ff89 	bl	8029d68 <xTaskResumeAll>			if( xListIsEmpty == pdFALSE ) 8029e56:	2d00      	cmp	r5, #0 8029e58:	d0f6      	beq.n	8029e48 <prvIdleTask+0x8>			{				TCB_t *pxTCB;				taskENTER_CRITICAL(); 8029e5a:	f000 fc39 	bl	802a6d0 <vPortEnterCritical>				{					pxTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); 8029e5e:	68f3      	ldr	r3, [r6, #12] 8029e60:	68dd      	ldr	r5, [r3, #12]					( void ) uxListRemove( &( pxTCB->xGenericListItem ) ); 8029e62:	1d28      	adds	r0, r5, #4 8029e64:	f7ff fa3e 	bl	80292e4 <uxListRemove>					--uxCurrentNumberOfTasks; 8029e68:	683b      	ldr	r3, [r7, #0] 8029e6a:	3b01      	subs	r3, #1 8029e6c:	603b      	str	r3, [r7, #0]					--uxTasksDeleted; 8029e6e:	6823      	ldr	r3, [r4, #0] 8029e70:	3b01      	subs	r3, #1 8029e72:	6023      	str	r3, [r4, #0]				}				taskEXIT_CRITICAL(); 8029e74:	f000 fc58 	bl	802a728 <vPortExitCritical>				vPortFreeAligned( pxTCB->pxStack );			}		}		#else		{			vPortFreeAligned( pxTCB->pxStack ); 8029e78:	6b28      	ldr	r0, [r5, #48]	; 0x30 8029e7a:	f000 fdbd 	bl	802a9f8 <vPortFree>		}		#endif		vPortFree( pxTCB ); 8029e7e:	4628      	mov	r0, r5 8029e80:	f000 fdba 	bl	802a9f8 <vPortFree> 8029e84:	e7e0      	b.n	8029e48 <prvIdleTask+0x8>			A critical region is not required here as we are just reading from			the list, and an occasional incorrect value will not matter.  If			the ready list at the idle priority contains more than one task			then a task other than the idle task is ready to execute. */			if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( UBaseType_t ) 1 ) 8029e86:	4b06      	ldr	r3, [pc, #24]	; (8029ea0 <prvIdleTask+0x60>) 8029e88:	681b      	ldr	r3, [r3, #0] 8029e8a:	2b01      	cmp	r3, #1 8029e8c:	d9dc      	bls.n	8029e48 <prvIdleTask+0x8>			{				taskYIELD(); 8029e8e:	f000 fc0b 	bl	802a6a8 <vPortYield> 8029e92:	e7d9      	b.n	8029e48 <prvIdleTask+0x8> 8029e94:	20002990 	.word	0x20002990 8029e98:	20002a24 	.word	0x20002a24 8029e9c:	20002a60 	.word	0x20002a60 8029ea0:	200029c0 	.word	0x200029c008029ea4 <vTaskDelay>:/*-----------------------------------------------------------*/#if ( INCLUDE_vTaskDelay == 1 )	void vTaskDelay( const TickType_t xTicksToDelay )	{ 8029ea4:	b538      	push	{r3, r4, r5, lr}	TickType_t xTimeToWake;	BaseType_t xAlreadyYielded = pdFALSE;		/* A delay time of zero just forces a reschedule. */		if( xTicksToDelay > ( TickType_t ) 0U ) 8029ea6:	4604      	mov	r4, r0 8029ea8:	b918      	cbnz	r0, 8029eb2 <vTaskDelay+0xe>		}		else		{			mtCOVERAGE_TEST_MARKER();		}	} 8029eaa:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		/* Force a reschedule if xTaskResumeAll has not already done so, we may		have put ourselves to sleep. */		if( xAlreadyYielded == pdFALSE )		{			portYIELD_WITHIN_API(); 8029eae:	f000 bbfb 	b.w	802a6a8 <vPortYield>		/* A delay time of zero just forces a reschedule. */		if( xTicksToDelay > ( TickType_t ) 0U )		{			configASSERT( uxSchedulerSuspended == 0 ); 8029eb2:	4b11      	ldr	r3, [pc, #68]	; (8029ef8 <vTaskDelay+0x54>) 8029eb4:	681b      	ldr	r3, [r3, #0] 8029eb6:	b113      	cbz	r3, 8029ebe <vTaskDelay+0x1a> 8029eb8:	f000 fc02 	bl	802a6c0 <ulPortSetInterruptMask> 8029ebc:	e7fe      	b.n	8029ebc <vTaskDelay+0x18>			vTaskSuspendAll(); 8029ebe:	f7ff feb7 	bl	8029c30 <vTaskSuspendAll>				This task cannot be in an event list as it is the currently				executing task. */				/* Calculate the time to wake - this may overflow but this is				not a problem. */				xTimeToWake = xTickCount + xTicksToDelay; 8029ec2:	4b0e      	ldr	r3, [pc, #56]	; (8029efc <vTaskDelay+0x58>) 8029ec4:	681d      	ldr	r5, [r3, #0] 8029ec6:	1965      	adds	r5, r4, r5				/* We must remove ourselves from the ready list before adding				ourselves to the blocked list as the same list item is used for				both lists. */				if( uxListRemove( &( pxCurrentTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 8029ec8:	4c0d      	ldr	r4, [pc, #52]	; (8029f00 <vTaskDelay+0x5c>) 8029eca:	6820      	ldr	r0, [r4, #0] 8029ecc:	3004      	adds	r0, #4 8029ece:	f7ff fa09 	bl	80292e4 <uxListRemove> 8029ed2:	b948      	cbnz	r0, 8029ee8 <vTaskDelay+0x44>				{					/* The current task must be in a ready list, so there is					no need to check, and the port reset macro can be called					directly. */					portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); 8029ed4:	4b0b      	ldr	r3, [pc, #44]	; (8029f04 <vTaskDelay+0x60>) 8029ed6:	6819      	ldr	r1, [r3, #0] 8029ed8:	6822      	ldr	r2, [r4, #0] 8029eda:	6ad2      	ldr	r2, [r2, #44]	; 0x2c 8029edc:	2001      	movs	r0, #1 8029ede:	fa00 f202 	lsl.w	r2, r0, r2 8029ee2:	ea21 0202 	bic.w	r2, r1, r2 8029ee6:	601a      	str	r2, [r3, #0]				}				else				{					mtCOVERAGE_TEST_MARKER();				}				prvAddCurrentTaskToDelayedList( xTimeToWake ); 8029ee8:	4628      	mov	r0, r5 8029eea:	f7ff fd19 	bl	8029920 <prvAddCurrentTaskToDelayedList>			}			xAlreadyYielded = xTaskResumeAll(); 8029eee:	f7ff ff3b 	bl	8029d68 <xTaskResumeAll>			mtCOVERAGE_TEST_MARKER();		}		/* Force a reschedule if xTaskResumeAll has not already done so, we may		have put ourselves to sleep. */		if( xAlreadyYielded == pdFALSE ) 8029ef2:	2800      	cmp	r0, #0 8029ef4:	d0d9      	beq.n	8029eaa <vTaskDelay+0x6>		}		else		{			mtCOVERAGE_TEST_MARKER();		}	} 8029ef6:	bd38      	pop	{r3, r4, r5, pc} 8029ef8:	20002a50 	.word	0x20002a50 8029efc:	20002a54 	.word	0x20002a54 8029f00:	20002a38 	.word	0x20002a38 8029f04:	20002a78 	.word	0x20002a7808029f08 <vTaskDelayUntil>:/*-----------------------------------------------------------*/#if ( INCLUDE_vTaskDelayUntil == 1 )	void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement )	{ 8029f08:	b570      	push	{r4, r5, r6, lr} 8029f0a:	460c      	mov	r4, r1	TickType_t xTimeToWake;	BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE;		configASSERT( pxPreviousWakeTime ); 8029f0c:	4605      	mov	r5, r0 8029f0e:	b910      	cbnz	r0, 8029f16 <vTaskDelayUntil+0xe> 8029f10:	f000 fbd6 	bl	802a6c0 <ulPortSetInterruptMask> 8029f14:	e7fe      	b.n	8029f14 <vTaskDelayUntil+0xc>		configASSERT( ( xTimeIncrement > 0U ) ); 8029f16:	b911      	cbnz	r1, 8029f1e <vTaskDelayUntil+0x16> 8029f18:	f000 fbd2 	bl	802a6c0 <ulPortSetInterruptMask> 8029f1c:	e7fe      	b.n	8029f1c <vTaskDelayUntil+0x14>		configASSERT( uxSchedulerSuspended == 0 ); 8029f1e:	4b1c      	ldr	r3, [pc, #112]	; (8029f90 <vTaskDelayUntil+0x88>) 8029f20:	681e      	ldr	r6, [r3, #0] 8029f22:	b116      	cbz	r6, 8029f2a <vTaskDelayUntil+0x22> 8029f24:	f000 fbcc 	bl	802a6c0 <ulPortSetInterruptMask> 8029f28:	e7fe      	b.n	8029f28 <vTaskDelayUntil+0x20>		vTaskSuspendAll(); 8029f2a:	f7ff fe81 	bl	8029c30 <vTaskSuspendAll>		{			/* Minor optimisation.  The tick count cannot change in this			block. */			const TickType_t xConstTickCount = xTickCount; 8029f2e:	4b19      	ldr	r3, [pc, #100]	; (8029f94 <vTaskDelayUntil+0x8c>)			/* Generate the tick time at which the task wants to wake. */			xTimeToWake = *pxPreviousWakeTime + xTimeIncrement; 8029f30:	682a      	ldr	r2, [r5, #0]		vTaskSuspendAll();		{			/* Minor optimisation.  The tick count cannot change in this			block. */			const TickType_t xConstTickCount = xTickCount; 8029f32:	6818      	ldr	r0, [r3, #0]			/* Generate the tick time at which the task wants to wake. */			xTimeToWake = *pxPreviousWakeTime + xTimeIncrement;			if( xConstTickCount < *pxPreviousWakeTime ) 8029f34:	4290      	cmp	r0, r2			/* Minor optimisation.  The tick count cannot change in this			block. */			const TickType_t xConstTickCount = xTickCount;			/* Generate the tick time at which the task wants to wake. */			xTimeToWake = *pxPreviousWakeTime + xTimeIncrement; 8029f36:	4414      	add	r4, r2			if( xConstTickCount < *pxPreviousWakeTime ) 8029f38:	d202      	bcs.n	8029f40 <vTaskDelayUntil+0x38>				/* The tick count has overflowed since this function was				lasted called.  In this case the only time we should ever				actually delay is if the wake time has also	overflowed,				and the wake time is greater than the tick time.  When this				is the case it is as if neither time had overflowed. */				if( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xConstTickCount ) ) 8029f3a:	4294      	cmp	r4, r2 8029f3c:	d207      	bcs.n	8029f4e <vTaskDelayUntil+0x46> 8029f3e:	e001      	b.n	8029f44 <vTaskDelayUntil+0x3c>			else			{				/* The tick time has not overflowed.  In this case we will				delay if either the wake time has overflowed, and/or the				tick time is less than the wake time. */				if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xConstTickCount ) ) 8029f40:	4294      	cmp	r4, r2 8029f42:	d306      	bcc.n	8029f52 <vTaskDelayUntil+0x4a> 8029f44:	4284      	cmp	r4, r0 8029f46:	bf94      	ite	ls 8029f48:	2300      	movls	r3, #0 8029f4a:	2301      	movhi	r3, #1 8029f4c:	e002      	b.n	8029f54 <vTaskDelayUntil+0x4c>#if ( INCLUDE_vTaskDelayUntil == 1 )	void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement )	{	TickType_t xTimeToWake;	BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE; 8029f4e:	4633      	mov	r3, r6 8029f50:	e000      	b.n	8029f54 <vTaskDelayUntil+0x4c>				/* The tick time has not overflowed.  In this case we will				delay if either the wake time has overflowed, and/or the				tick time is less than the wake time. */				if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xConstTickCount ) )				{					xShouldDelay = pdTRUE; 8029f52:	2301      	movs	r3, #1					mtCOVERAGE_TEST_MARKER();				}			}			/* Update the wake time ready for the next call. */			*pxPreviousWakeTime = xTimeToWake; 8029f54:	602c      	str	r4, [r5, #0]			if( xShouldDelay != pdFALSE ) 8029f56:	b193      	cbz	r3, 8029f7e <vTaskDelayUntil+0x76>			{				traceTASK_DELAY_UNTIL();				/* Remove the task from the ready list before adding it to the				blocked list as the same list item is used for both lists. */				if( uxListRemove( &( pxCurrentTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 8029f58:	4d0f      	ldr	r5, [pc, #60]	; (8029f98 <vTaskDelayUntil+0x90>) 8029f5a:	6828      	ldr	r0, [r5, #0] 8029f5c:	3004      	adds	r0, #4 8029f5e:	f7ff f9c1 	bl	80292e4 <uxListRemove> 8029f62:	b948      	cbnz	r0, 8029f78 <vTaskDelayUntil+0x70>				{					/* The current task must be in a ready list, so there is					no need to check, and the port reset macro can be called					directly. */					portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); 8029f64:	4b0d      	ldr	r3, [pc, #52]	; (8029f9c <vTaskDelayUntil+0x94>) 8029f66:	6819      	ldr	r1, [r3, #0] 8029f68:	682a      	ldr	r2, [r5, #0] 8029f6a:	6ad2      	ldr	r2, [r2, #44]	; 0x2c 8029f6c:	2001      	movs	r0, #1 8029f6e:	fa00 f202 	lsl.w	r2, r0, r2 8029f72:	ea21 0202 	bic.w	r2, r1, r2 8029f76:	601a      	str	r2, [r3, #0]				else				{					mtCOVERAGE_TEST_MARKER();				}				prvAddCurrentTaskToDelayedList( xTimeToWake ); 8029f78:	4620      	mov	r0, r4 8029f7a:	f7ff fcd1 	bl	8029920 <prvAddCurrentTaskToDelayedList>			else			{				mtCOVERAGE_TEST_MARKER();			}		}		xAlreadyYielded = xTaskResumeAll(); 8029f7e:	f7ff fef3 	bl	8029d68 <xTaskResumeAll>		/* Force a reschedule if xTaskResumeAll has not already done so, we may		have put ourselves to sleep. */		if( xAlreadyYielded == pdFALSE ) 8029f82:	b918      	cbnz	r0, 8029f8c <vTaskDelayUntil+0x84>		}		else		{			mtCOVERAGE_TEST_MARKER();		}	} 8029f84:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}		/* Force a reschedule if xTaskResumeAll has not already done so, we may		have put ourselves to sleep. */		if( xAlreadyYielded == pdFALSE )		{			portYIELD_WITHIN_API(); 8029f88:	f000 bb8e 	b.w	802a6a8 <vPortYield> 8029f8c:	bd70      	pop	{r4, r5, r6, pc} 8029f8e:	bf00      	nop 8029f90:	20002a50 	.word	0x20002a50 8029f94:	20002a54 	.word	0x20002a54 8029f98:	20002a38 	.word	0x20002a38 8029f9c:	20002a78 	.word	0x20002a7808029fa0 <vTaskSwitchContext>:#endif /* configUSE_APPLICATION_TASK_TAG *//*-----------------------------------------------------------*/void vTaskSwitchContext( void ){ 8029fa0:	b508      	push	{r3, lr}	if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) 8029fa2:	4b12      	ldr	r3, [pc, #72]	; (8029fec <vTaskSwitchContext+0x4c>) 8029fa4:	681a      	ldr	r2, [r3, #0] 8029fa6:	4b12      	ldr	r3, [pc, #72]	; (8029ff0 <vTaskSwitchContext+0x50>) 8029fa8:	b10a      	cbz	r2, 8029fae <vTaskSwitchContext+0xe>	{		/* The scheduler is currently suspended - do not allow a context		switch. */		xYieldPending = pdTRUE; 8029faa:	2201      	movs	r2, #1 8029fac:	e01c      	b.n	8029fe8 <vTaskSwitchContext+0x48>	}	else	{		xYieldPending = pdFALSE; 8029fae:	601a      	str	r2, [r3, #0]		taskFIRST_CHECK_FOR_STACK_OVERFLOW();		taskSECOND_CHECK_FOR_STACK_OVERFLOW();		/* Select a new task to run using either the generic C or port		optimised asm code. */		taskSELECT_HIGHEST_PRIORITY_TASK(); 8029fb0:	4b10      	ldr	r3, [pc, #64]	; (8029ff4 <vTaskSwitchContext+0x54>) 8029fb2:	681a      	ldr	r2, [r3, #0]	/* Generic helper function. */	__attribute__( ( always_inline ) ) static inline uint8_t ucPortCountLeadingZeros( uint32_t ulBitmap )	{	uint8_t ucReturn;		__asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) ); 8029fb4:	fab2 f282 	clz	r2, r2 8029fb8:	b2d2      	uxtb	r2, r2 8029fba:	2314      	movs	r3, #20 8029fbc:	f1c2 021f 	rsb	r2, r2, #31 8029fc0:	490d      	ldr	r1, [pc, #52]	; (8029ff8 <vTaskSwitchContext+0x58>) 8029fc2:	435a      	muls	r2, r3 8029fc4:	188b      	adds	r3, r1, r2 8029fc6:	588a      	ldr	r2, [r1, r2] 8029fc8:	b912      	cbnz	r2, 8029fd0 <vTaskSwitchContext+0x30> 8029fca:	f000 fb79 	bl	802a6c0 <ulPortSetInterruptMask> 8029fce:	e7fe      	b.n	8029fce <vTaskSwitchContext+0x2e> 8029fd0:	685a      	ldr	r2, [r3, #4] 8029fd2:	6852      	ldr	r2, [r2, #4] 8029fd4:	f103 0108 	add.w	r1, r3, #8 8029fd8:	428a      	cmp	r2, r1 8029fda:	605a      	str	r2, [r3, #4] 8029fdc:	bf04      	itt	eq 8029fde:	6852      	ldreq	r2, [r2, #4] 8029fe0:	605a      	streq	r2, [r3, #4] 8029fe2:	685b      	ldr	r3, [r3, #4] 8029fe4:	68da      	ldr	r2, [r3, #12] 8029fe6:	4b05      	ldr	r3, [pc, #20]	; (8029ffc <vTaskSwitchContext+0x5c>) 8029fe8:	601a      	str	r2, [r3, #0] 8029fea:	bd08      	pop	{r3, pc} 8029fec:	20002a50 	.word	0x20002a50 8029ff0:	20002a7c 	.word	0x20002a7c 8029ff4:	20002a78 	.word	0x20002a78 8029ff8:	200029c0 	.word	0x200029c0 8029ffc:	20002a38 	.word	0x20002a380802a000 <vTaskPlaceOnEventList>:	}}/*-----------------------------------------------------------*/void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ){ 802a000:	b538      	push	{r3, r4, r5, lr} 802a002:	460d      	mov	r5, r1TickType_t xTimeToWake;	configASSERT( pxEventList ); 802a004:	b910      	cbnz	r0, 802a00c <vTaskPlaceOnEventList+0xc> 802a006:	f000 fb5b 	bl	802a6c0 <ulPortSetInterruptMask> 802a00a:	e7fe      	b.n	802a00a <vTaskPlaceOnEventList+0xa>	/* Place the event list item of the TCB in the appropriate event list.	This is placed in the list in priority order so the highest priority task	is the first to be woken by the event.  The queue that contains the event	list is locked, preventing simultaneous access from interrupts. */	vListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) ); 802a00c:	4c12      	ldr	r4, [pc, #72]	; (802a058 <vTaskPlaceOnEventList+0x58>) 802a00e:	6821      	ldr	r1, [r4, #0] 802a010:	3118      	adds	r1, #24 802a012:	f7ff f94f 	bl	80292b4 <vListInsert>	/* The task must be removed from from the ready list before it is added to	the blocked list as the same list item is used for both lists.  Exclusive	access to the ready lists guaranteed because the scheduler is locked. */	if( uxListRemove( &( pxCurrentTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 802a016:	6820      	ldr	r0, [r4, #0] 802a018:	3004      	adds	r0, #4 802a01a:	f7ff f963 	bl	80292e4 <uxListRemove> 802a01e:	b948      	cbnz	r0, 802a034 <vTaskPlaceOnEventList+0x34>	{		/* The current task must be in a ready list, so there is no need to		check, and the port reset macro can be called directly. */		portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); 802a020:	4b0e      	ldr	r3, [pc, #56]	; (802a05c <vTaskPlaceOnEventList+0x5c>) 802a022:	6819      	ldr	r1, [r3, #0] 802a024:	6822      	ldr	r2, [r4, #0] 802a026:	6ad2      	ldr	r2, [r2, #44]	; 0x2c 802a028:	2001      	movs	r0, #1 802a02a:	fa00 f202 	lsl.w	r2, r0, r2 802a02e:	ea21 0202 	bic.w	r2, r1, r2 802a032:	601a      	str	r2, [r3, #0]		mtCOVERAGE_TEST_MARKER();	}	#if ( INCLUDE_vTaskSuspend == 1 )	{		if( xTicksToWait == portMAX_DELAY ) 802a034:	1c69      	adds	r1, r5, #1 802a036:	d107      	bne.n	802a048 <vTaskPlaceOnEventList+0x48>		{			/* Add the task to the suspended task list instead of a delayed task			list to ensure the task is not woken by a timing event.  It will			block indefinitely. */			vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xGenericListItem ) ); 802a038:	4b07      	ldr	r3, [pc, #28]	; (802a058 <vTaskPlaceOnEventList+0x58>) 802a03a:	4809      	ldr	r0, [pc, #36]	; (802a060 <vTaskPlaceOnEventList+0x60>) 802a03c:	6819      	ldr	r1, [r3, #0] 802a03e:	3104      	adds	r1, #4			will handle it. */			xTimeToWake = xTickCount + xTicksToWait;			prvAddCurrentTaskToDelayedList( xTimeToWake );	}	#endif /* INCLUDE_vTaskSuspend */} 802a040:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		if( xTicksToWait == portMAX_DELAY )		{			/* Add the task to the suspended task list instead of a delayed task			list to ensure the task is not woken by a timing event.  It will			block indefinitely. */			vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xGenericListItem ) ); 802a044:	f7ff b92a 	b.w	802929c <vListInsertEnd>		else		{			/* Calculate the time at which the task should be woken if the event			does not occur.  This may overflow but this doesn't matter, the			scheduler will handle it. */			xTimeToWake = xTickCount + xTicksToWait; 802a048:	4b06      	ldr	r3, [pc, #24]	; (802a064 <vTaskPlaceOnEventList+0x64>) 802a04a:	6818      	ldr	r0, [r3, #0]			prvAddCurrentTaskToDelayedList( xTimeToWake ); 802a04c:	1828      	adds	r0, r5, r0			will handle it. */			xTimeToWake = xTickCount + xTicksToWait;			prvAddCurrentTaskToDelayedList( xTimeToWake );	}	#endif /* INCLUDE_vTaskSuspend */} 802a04e:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		{			/* Calculate the time at which the task should be woken if the event			does not occur.  This may overflow but this doesn't matter, the			scheduler will handle it. */			xTimeToWake = xTickCount + xTicksToWait;			prvAddCurrentTaskToDelayedList( xTimeToWake ); 802a052:	f7ff bc65 	b.w	8029920 <prvAddCurrentTaskToDelayedList> 802a056:	bf00      	nop 802a058:	20002a38 	.word	0x20002a38 802a05c:	20002a78 	.word	0x20002a78 802a060:	20002a64 	.word	0x20002a64 802a064:	20002a54 	.word	0x20002a540802a068 <vTaskPlaceOnEventListRestricted>:/*-----------------------------------------------------------*/#if configUSE_TIMERS == 1	void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, const TickType_t xTicksToWait )	{ 802a068:	b538      	push	{r3, r4, r5, lr} 802a06a:	460d      	mov	r5, r1	TickType_t xTimeToWake;		configASSERT( pxEventList ); 802a06c:	b910      	cbnz	r0, 802a074 <vTaskPlaceOnEventListRestricted+0xc> 802a06e:	f000 fb27 	bl	802a6c0 <ulPortSetInterruptMask> 802a072:	e7fe      	b.n	802a072 <vTaskPlaceOnEventListRestricted+0xa>		/* Place the event list item of the TCB in the appropriate event list.		In this case it is assume that this is the only task that is going to		be waiting on this event list, so the faster vListInsertEnd() function		can be used in place of vListInsert. */		vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) ); 802a074:	4c0d      	ldr	r4, [pc, #52]	; (802a0ac <vTaskPlaceOnEventListRestricted+0x44>) 802a076:	6821      	ldr	r1, [r4, #0] 802a078:	3118      	adds	r1, #24 802a07a:	f7ff f90f 	bl	802929c <vListInsertEnd>		/* We must remove this task from the ready list before adding it to the		blocked list as the same list item is used for both lists.  This		function is called form a critical section. */		if( uxListRemove( &( pxCurrentTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 802a07e:	6820      	ldr	r0, [r4, #0] 802a080:	3004      	adds	r0, #4 802a082:	f7ff f92f 	bl	80292e4 <uxListRemove> 802a086:	b948      	cbnz	r0, 802a09c <vTaskPlaceOnEventListRestricted+0x34>		{			/* The current task must be in a ready list, so there is no need to			check, and the port reset macro can be called directly. */			portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); 802a088:	4b09      	ldr	r3, [pc, #36]	; (802a0b0 <vTaskPlaceOnEventListRestricted+0x48>) 802a08a:	6819      	ldr	r1, [r3, #0] 802a08c:	6822      	ldr	r2, [r4, #0] 802a08e:	6ad2      	ldr	r2, [r2, #44]	; 0x2c 802a090:	2001      	movs	r0, #1 802a092:	fa00 f202 	lsl.w	r2, r0, r2 802a096:	ea21 0202 	bic.w	r2, r1, r2 802a09a:	601a      	str	r2, [r3, #0]			mtCOVERAGE_TEST_MARKER();		}		/* Calculate the time at which the task should be woken if the event does		not occur.  This may overflow but this doesn't matter. */		xTimeToWake = xTickCount + xTicksToWait; 802a09c:	4b05      	ldr	r3, [pc, #20]	; (802a0b4 <vTaskPlaceOnEventListRestricted+0x4c>) 802a09e:	6818      	ldr	r0, [r3, #0]		traceTASK_DELAY_UNTIL();		prvAddCurrentTaskToDelayedList( xTimeToWake ); 802a0a0:	1828      	adds	r0, r5, r0	} 802a0a2:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}		/* Calculate the time at which the task should be woken if the event does		not occur.  This may overflow but this doesn't matter. */		xTimeToWake = xTickCount + xTicksToWait;		traceTASK_DELAY_UNTIL();		prvAddCurrentTaskToDelayedList( xTimeToWake ); 802a0a6:	f7ff bc3b 	b.w	8029920 <prvAddCurrentTaskToDelayedList> 802a0aa:	bf00      	nop 802a0ac:	20002a38 	.word	0x20002a38 802a0b0:	20002a78 	.word	0x20002a78 802a0b4:	20002a54 	.word	0x20002a540802a0b8 <xTaskRemoveFromEventList>:#endif /* configUSE_TIMERS *//*-----------------------------------------------------------*/BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ){ 802a0b8:	b538      	push	{r3, r4, r5, lr}	get called - the lock count on the queue will get modified instead.  This	means exclusive access to the event list is guaranteed here.	This function assumes that a check has already been made to ensure that	pxEventList is not empty. */	pxUnblockedTCB = ( TCB_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); 802a0ba:	68c3      	ldr	r3, [r0, #12] 802a0bc:	68dc      	ldr	r4, [r3, #12]	configASSERT( pxUnblockedTCB ); 802a0be:	b914      	cbnz	r4, 802a0c6 <xTaskRemoveFromEventList+0xe> 802a0c0:	f000 fafe 	bl	802a6c0 <ulPortSetInterruptMask> 802a0c4:	e7fe      	b.n	802a0c4 <xTaskRemoveFromEventList+0xc>	( void ) uxListRemove( &( pxUnblockedTCB->xEventListItem ) ); 802a0c6:	f104 0518 	add.w	r5, r4, #24 802a0ca:	4628      	mov	r0, r5 802a0cc:	f7ff f90a 	bl	80292e4 <uxListRemove>	if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) 802a0d0:	4b11      	ldr	r3, [pc, #68]	; (802a118 <xTaskRemoveFromEventList+0x60>) 802a0d2:	681b      	ldr	r3, [r3, #0] 802a0d4:	b983      	cbnz	r3, 802a0f8 <xTaskRemoveFromEventList+0x40>	{		( void ) uxListRemove( &( pxUnblockedTCB->xGenericListItem ) ); 802a0d6:	1d25      	adds	r5, r4, #4 802a0d8:	4628      	mov	r0, r5 802a0da:	f7ff f903 	bl	80292e4 <uxListRemove>		prvAddTaskToReadyList( pxUnblockedTCB ); 802a0de:	4a0f      	ldr	r2, [pc, #60]	; (802a11c <xTaskRemoveFromEventList+0x64>) 802a0e0:	6ae3      	ldr	r3, [r4, #44]	; 0x2c 802a0e2:	6810      	ldr	r0, [r2, #0] 802a0e4:	2101      	movs	r1, #1 802a0e6:	fa01 f103 	lsl.w	r1, r1, r3 802a0ea:	4301      	orrs	r1, r0 802a0ec:	6011      	str	r1, [r2, #0] 802a0ee:	4a0c      	ldr	r2, [pc, #48]	; (802a120 <xTaskRemoveFromEventList+0x68>) 802a0f0:	2014      	movs	r0, #20 802a0f2:	fb00 2003 	mla	r0, r0, r3, r2 802a0f6:	e000      	b.n	802a0fa <xTaskRemoveFromEventList+0x42>	}	else	{		/* The delayed and ready lists cannot be accessed, so hold this task		pending until the scheduler is resumed. */		vListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) ); 802a0f8:	480a      	ldr	r0, [pc, #40]	; (802a124 <xTaskRemoveFromEventList+0x6c>) 802a0fa:	4629      	mov	r1, r5 802a0fc:	f7ff f8ce 	bl	802929c <vListInsertEnd>	}	if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) 802a100:	4b09      	ldr	r3, [pc, #36]	; (802a128 <xTaskRemoveFromEventList+0x70>) 802a102:	6ae2      	ldr	r2, [r4, #44]	; 0x2c 802a104:	681b      	ldr	r3, [r3, #0] 802a106:	6adb      	ldr	r3, [r3, #44]	; 0x2c 802a108:	429a      	cmp	r2, r3 802a10a:	d903      	bls.n	802a114 <xTaskRemoveFromEventList+0x5c>		it should force a context switch now. */		xReturn = pdTRUE;		/* Mark that a yield is pending in case the user is not using the		"xHigherPriorityTaskWoken" parameter to an ISR safe FreeRTOS function. */		xYieldPending = pdTRUE; 802a10c:	4b07      	ldr	r3, [pc, #28]	; (802a12c <xTaskRemoveFromEventList+0x74>) 802a10e:	2001      	movs	r0, #1 802a110:	6018      	str	r0, [r3, #0] 802a112:	bd38      	pop	{r3, r4, r5, pc}	}	else	{		xReturn = pdFALSE; 802a114:	2000      	movs	r0, #0		prvResetNextTaskUnblockTime();	}	#endif	return xReturn;} 802a116:	bd38      	pop	{r3, r4, r5, pc} 802a118:	20002a50 	.word	0x20002a50 802a11c:	20002a78 	.word	0x20002a78 802a120:	200029c0 	.word	0x200029c0 802a124:	20002a3c 	.word	0x20002a3c 802a128:	20002a38 	.word	0x20002a38 802a12c:	20002a7c 	.word	0x20002a7c0802a130 <vTaskSetTimeOutState>:	return xReturn;}/*-----------------------------------------------------------*/void vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ){ 802a130:	b508      	push	{r3, lr}	configASSERT( pxTimeOut ); 802a132:	b910      	cbnz	r0, 802a13a <vTaskSetTimeOutState+0xa> 802a134:	f000 fac4 	bl	802a6c0 <ulPortSetInterruptMask> 802a138:	e7fe      	b.n	802a138 <vTaskSetTimeOutState+0x8>	pxTimeOut->xOverflowCount = xNumOfOverflows; 802a13a:	4b03      	ldr	r3, [pc, #12]	; (802a148 <vTaskSetTimeOutState+0x18>) 802a13c:	681b      	ldr	r3, [r3, #0] 802a13e:	6003      	str	r3, [r0, #0]	pxTimeOut->xTimeOnEntering = xTickCount; 802a140:	4b02      	ldr	r3, [pc, #8]	; (802a14c <vTaskSetTimeOutState+0x1c>) 802a142:	681b      	ldr	r3, [r3, #0] 802a144:	6043      	str	r3, [r0, #4] 802a146:	bd08      	pop	{r3, pc} 802a148:	20002984 	.word	0x20002984 802a14c:	20002a54 	.word	0x20002a540802a150 <xTaskCheckForTimeOut>:}/*-----------------------------------------------------------*/BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ){ 802a150:	b538      	push	{r3, r4, r5, lr} 802a152:	460d      	mov	r5, r1BaseType_t xReturn;	configASSERT( pxTimeOut ); 802a154:	4604      	mov	r4, r0 802a156:	b910      	cbnz	r0, 802a15e <xTaskCheckForTimeOut+0xe> 802a158:	f000 fab2 	bl	802a6c0 <ulPortSetInterruptMask> 802a15c:	e7fe      	b.n	802a15c <xTaskCheckForTimeOut+0xc>	configASSERT( pxTicksToWait ); 802a15e:	b911      	cbnz	r1, 802a166 <xTaskCheckForTimeOut+0x16> 802a160:	f000 faae 	bl	802a6c0 <ulPortSetInterruptMask> 802a164:	e7fe      	b.n	802a164 <xTaskCheckForTimeOut+0x14>	taskENTER_CRITICAL(); 802a166:	f000 fab3 	bl	802a6d0 <vPortEnterCritical>	{		/* Minor optimisation.  The tick count cannot change in this block. */		const TickType_t xConstTickCount = xTickCount; 802a16a:	4b0e      	ldr	r3, [pc, #56]	; (802a1a4 <xTaskCheckForTimeOut+0x54>) 802a16c:	681a      	ldr	r2, [r3, #0]		#if ( INCLUDE_vTaskSuspend == 1 )			/* If INCLUDE_vTaskSuspend is set to 1 and the block time specified is			the maximum block time then the task should block indefinitely, and			therefore never time out. */			if( *pxTicksToWait == portMAX_DELAY ) 802a16e:	682b      	ldr	r3, [r5, #0] 802a170:	1c59      	adds	r1, r3, #1 802a172:	d010      	beq.n	802a196 <xTaskCheckForTimeOut+0x46>				xReturn = pdFALSE;			}			else /* We are not blocking indefinitely, perform the checks below. */		#endif		if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */ 802a174:	490c      	ldr	r1, [pc, #48]	; (802a1a8 <xTaskCheckForTimeOut+0x58>) 802a176:	6808      	ldr	r0, [r1, #0] 802a178:	6821      	ldr	r1, [r4, #0] 802a17a:	4288      	cmp	r0, r1 802a17c:	6861      	ldr	r1, [r4, #4] 802a17e:	d001      	beq.n	802a184 <xTaskCheckForTimeOut+0x34> 802a180:	428a      	cmp	r2, r1 802a182:	d20a      	bcs.n	802a19a <xTaskCheckForTimeOut+0x4a>			was called, but has also overflowed since vTaskSetTimeOut() was called.			It must have wrapped all the way around and gone past us again. This			passed since vTaskSetTimeout() was called. */			xReturn = pdTRUE;		}		else if( ( xConstTickCount - pxTimeOut->xTimeOnEntering ) < *pxTicksToWait ) 802a184:	1a50      	subs	r0, r2, r1 802a186:	4298      	cmp	r0, r3 802a188:	d207      	bcs.n	802a19a <xTaskCheckForTimeOut+0x4a>		{			/* Not a genuine timeout. Adjust parameters for time remaining. */			*pxTicksToWait -= ( xConstTickCount -  pxTimeOut->xTimeOnEntering ); 802a18a:	1a8a      	subs	r2, r1, r2 802a18c:	18d3      	adds	r3, r2, r3 802a18e:	602b      	str	r3, [r5, #0]			vTaskSetTimeOutState( pxTimeOut ); 802a190:	4620      	mov	r0, r4 802a192:	f7ff ffcd 	bl	802a130 <vTaskSetTimeOutState>			/* If INCLUDE_vTaskSuspend is set to 1 and the block time specified is			the maximum block time then the task should block indefinitely, and			therefore never time out. */			if( *pxTicksToWait == portMAX_DELAY )			{				xReturn = pdFALSE; 802a196:	2400      	movs	r4, #0 802a198:	e000      	b.n	802a19c <xTaskCheckForTimeOut+0x4c>		{			/* The tick count is greater than the time at which vTaskSetTimeout()			was called, but has also overflowed since vTaskSetTimeOut() was called.			It must have wrapped all the way around and gone past us again. This			passed since vTaskSetTimeout() was called. */			xReturn = pdTRUE; 802a19a:	2401      	movs	r4, #1		else		{			xReturn = pdTRUE;		}	}	taskEXIT_CRITICAL(); 802a19c:	f000 fac4 	bl	802a728 <vPortExitCritical>	return xReturn;} 802a1a0:	4620      	mov	r0, r4 802a1a2:	bd38      	pop	{r3, r4, r5, pc} 802a1a4:	20002a54 	.word	0x20002a54 802a1a8:	20002984 	.word	0x200029840802a1ac <vTaskMissedYield>:/*-----------------------------------------------------------*/void vTaskMissedYield( void ){	xYieldPending = pdTRUE; 802a1ac:	4b01      	ldr	r3, [pc, #4]	; (802a1b4 <vTaskMissedYield+0x8>) 802a1ae:	2201      	movs	r2, #1 802a1b0:	601a      	str	r2, [r3, #0] 802a1b2:	4770      	bx	lr 802a1b4:	20002a7c 	.word	0x20002a7c0802a1b8 <xTaskGetSchedulerState>:	BaseType_t xTaskGetSchedulerState( void )	{	BaseType_t xReturn;		if( xSchedulerRunning == pdFALSE ) 802a1b8:	4b05      	ldr	r3, [pc, #20]	; (802a1d0 <xTaskGetSchedulerState+0x18>) 802a1ba:	681b      	ldr	r3, [r3, #0] 802a1bc:	b133      	cbz	r3, 802a1cc <xTaskGetSchedulerState+0x14>		{			xReturn = taskSCHEDULER_NOT_STARTED;		}		else		{			if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) 802a1be:	4b05      	ldr	r3, [pc, #20]	; (802a1d4 <xTaskGetSchedulerState+0x1c>) 802a1c0:	6818      	ldr	r0, [r3, #0]			{				xReturn = taskSCHEDULER_RUNNING; 802a1c2:	2800      	cmp	r0, #0 802a1c4:	bf0c      	ite	eq 802a1c6:	2002      	moveq	r0, #2 802a1c8:	2000      	movne	r0, #0 802a1ca:	4770      	bx	lr	{	BaseType_t xReturn;		if( xSchedulerRunning == pdFALSE )		{			xReturn = taskSCHEDULER_NOT_STARTED; 802a1cc:	2001      	movs	r0, #1				xReturn = taskSCHEDULER_SUSPENDED;			}		}		return xReturn;	} 802a1ce:	4770      	bx	lr 802a1d0:	2000298c 	.word	0x2000298c 802a1d4:	20002a50 	.word	0x20002a500802a1d8 <vTaskPriorityInherit>:/*-----------------------------------------------------------*/#if ( configUSE_MUTEXES == 1 )	void vTaskPriorityInherit( TaskHandle_t const pxMutexHolder )	{ 802a1d8:	b5f8      	push	{r3, r4, r5, r6, r7, lr}	TCB_t * const pxTCB = ( TCB_t * ) pxMutexHolder;		/* If the mutex was given back by an interrupt while the queue was		locked then the mutex holder might now be NULL. */		if( pxMutexHolder != NULL ) 802a1da:	4604      	mov	r4, r0 802a1dc:	2800      	cmp	r0, #0 802a1de:	d040      	beq.n	802a262 <vTaskPriorityInherit+0x8a>		{			if( pxTCB->uxPriority < pxCurrentTCB->uxPriority ) 802a1e0:	4a20      	ldr	r2, [pc, #128]	; (802a264 <vTaskPriorityInherit+0x8c>) 802a1e2:	6ac3      	ldr	r3, [r0, #44]	; 0x2c 802a1e4:	6811      	ldr	r1, [r2, #0] 802a1e6:	6ac9      	ldr	r1, [r1, #44]	; 0x2c 802a1e8:	428b      	cmp	r3, r1 802a1ea:	d23a      	bcs.n	802a262 <vTaskPriorityInherit+0x8a>			{				/* Adjust the mutex holder state to account for its new				priority.  Only reset the event list item value if the value is				not	being used for anything else. */				if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL ) 802a1ec:	6981      	ldr	r1, [r0, #24] 802a1ee:	2900      	cmp	r1, #0 802a1f0:	db04      	blt.n	802a1fc <vTaskPriorityInherit+0x24>				{					listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 802a1f2:	6812      	ldr	r2, [r2, #0] 802a1f4:	6ad2      	ldr	r2, [r2, #44]	; 0x2c 802a1f6:	f1c2 0205 	rsb	r2, r2, #5 802a1fa:	6182      	str	r2, [r0, #24]					mtCOVERAGE_TEST_MARKER();				}				/* If the task being modified is in the ready state it will need to				be moved into a new list. */				if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxTCB->uxPriority ] ), &( pxTCB->xGenericListItem ) ) != pdFALSE ) 802a1fc:	4e1a      	ldr	r6, [pc, #104]	; (802a268 <vTaskPriorityInherit+0x90>) 802a1fe:	6962      	ldr	r2, [r4, #20] 802a200:	2714      	movs	r7, #20 802a202:	fb07 6303 	mla	r3, r7, r3, r6 802a206:	429a      	cmp	r2, r3 802a208:	d127      	bne.n	802a25a <vTaskPriorityInherit+0x82> 802a20a:	e01f      	b.n	802a24c <vTaskPriorityInherit+0x74>				{					if( uxListRemove( &( pxTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 )					{						taskRESET_READY_PRIORITY( pxTCB->uxPriority ); 802a20c:	6ae2      	ldr	r2, [r4, #44]	; 0x2c 802a20e:	4357      	muls	r7, r2 802a210:	59f3      	ldr	r3, [r6, r7] 802a212:	b93b      	cbnz	r3, 802a224 <vTaskPriorityInherit+0x4c> 802a214:	4b15      	ldr	r3, [pc, #84]	; (802a26c <vTaskPriorityInherit+0x94>) 802a216:	2001      	movs	r0, #1 802a218:	6819      	ldr	r1, [r3, #0] 802a21a:	fa00 f202 	lsl.w	r2, r0, r2 802a21e:	ea21 0202 	bic.w	r2, r1, r2 802a222:	601a      	str	r2, [r3, #0]					{						mtCOVERAGE_TEST_MARKER();					}					/* Inherit the priority before being moved into the new list. */					pxTCB->uxPriority = pxCurrentTCB->uxPriority; 802a224:	4b0f      	ldr	r3, [pc, #60]	; (802a264 <vTaskPriorityInherit+0x8c>)					prvAddTaskToReadyList( pxTCB ); 802a226:	4a11      	ldr	r2, [pc, #68]	; (802a26c <vTaskPriorityInherit+0x94>)					{						mtCOVERAGE_TEST_MARKER();					}					/* Inherit the priority before being moved into the new list. */					pxTCB->uxPriority = pxCurrentTCB->uxPriority; 802a228:	681b      	ldr	r3, [r3, #0]					prvAddTaskToReadyList( pxTCB ); 802a22a:	6810      	ldr	r0, [r2, #0]					{						mtCOVERAGE_TEST_MARKER();					}					/* Inherit the priority before being moved into the new list. */					pxTCB->uxPriority = pxCurrentTCB->uxPriority; 802a22c:	6adb      	ldr	r3, [r3, #44]	; 0x2c					prvAddTaskToReadyList( pxTCB ); 802a22e:	2101      	movs	r1, #1 802a230:	fa01 f103 	lsl.w	r1, r1, r3 802a234:	4301      	orrs	r1, r0 802a236:	6011      	str	r1, [r2, #0] 802a238:	4a0b      	ldr	r2, [pc, #44]	; (802a268 <vTaskPriorityInherit+0x90>)					{						mtCOVERAGE_TEST_MARKER();					}					/* Inherit the priority before being moved into the new list. */					pxTCB->uxPriority = pxCurrentTCB->uxPriority; 802a23a:	62e3      	str	r3, [r4, #44]	; 0x2c					prvAddTaskToReadyList( pxTCB ); 802a23c:	2014      	movs	r0, #20 802a23e:	fb00 2003 	mla	r0, r0, r3, r2 802a242:	4629      	mov	r1, r5		}		else		{			mtCOVERAGE_TEST_MARKER();		}	} 802a244:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}						mtCOVERAGE_TEST_MARKER();					}					/* Inherit the priority before being moved into the new list. */					pxTCB->uxPriority = pxCurrentTCB->uxPriority;					prvAddTaskToReadyList( pxTCB ); 802a248:	f7ff b828 	b.w	802929c <vListInsertEnd>				/* If the task being modified is in the ready state it will need to				be moved into a new list. */				if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxTCB->uxPriority ] ), &( pxTCB->xGenericListItem ) ) != pdFALSE )				{					if( uxListRemove( &( pxTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 802a24c:	1d25      	adds	r5, r4, #4 802a24e:	4628      	mov	r0, r5 802a250:	f7ff f848 	bl	80292e4 <uxListRemove> 802a254:	2800      	cmp	r0, #0 802a256:	d0d9      	beq.n	802a20c <vTaskPriorityInherit+0x34> 802a258:	e7e4      	b.n	802a224 <vTaskPriorityInherit+0x4c>					prvAddTaskToReadyList( pxTCB );				}				else				{					/* Just inherit the priority. */					pxTCB->uxPriority = pxCurrentTCB->uxPriority; 802a25a:	4b02      	ldr	r3, [pc, #8]	; (802a264 <vTaskPriorityInherit+0x8c>) 802a25c:	681b      	ldr	r3, [r3, #0] 802a25e:	6adb      	ldr	r3, [r3, #44]	; 0x2c 802a260:	62e3      	str	r3, [r4, #44]	; 0x2c 802a262:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802a264:	20002a38 	.word	0x20002a38 802a268:	200029c0 	.word	0x200029c0 802a26c:	20002a78 	.word	0x20002a780802a270 <xTaskPriorityDisinherit>:/*-----------------------------------------------------------*/#if ( configUSE_MUTEXES == 1 )	BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder )	{ 802a270:	b538      	push	{r3, r4, r5, lr}	TCB_t * const pxTCB = ( TCB_t * ) pxMutexHolder;	BaseType_t xReturn = pdFALSE;		if( pxMutexHolder != NULL ) 802a272:	4604      	mov	r4, r0 802a274:	b908      	cbnz	r0, 802a27a <xTaskPriorityDisinherit+0xa>#if ( configUSE_MUTEXES == 1 )	BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder )	{	TCB_t * const pxTCB = ( TCB_t * ) pxMutexHolder;	BaseType_t xReturn = pdFALSE; 802a276:	2000      	movs	r0, #0 802a278:	bd38      	pop	{r3, r4, r5, pc}		if( pxMutexHolder != NULL )		{			configASSERT( pxTCB->uxMutexesHeld ); 802a27a:	6d03      	ldr	r3, [r0, #80]	; 0x50 802a27c:	b913      	cbnz	r3, 802a284 <xTaskPriorityDisinherit+0x14> 802a27e:	f000 fa1f 	bl	802a6c0 <ulPortSetInterruptMask> 802a282:	e7fe      	b.n	802a282 <xTaskPriorityDisinherit+0x12>			( pxTCB->uxMutexesHeld )--;			if( pxTCB->uxPriority != pxTCB->uxBasePriority ) 802a284:	6ac1      	ldr	r1, [r0, #44]	; 0x2c 802a286:	6cc2      	ldr	r2, [r0, #76]	; 0x4c	BaseType_t xReturn = pdFALSE;		if( pxMutexHolder != NULL )		{			configASSERT( pxTCB->uxMutexesHeld );			( pxTCB->uxMutexesHeld )--; 802a288:	3b01      	subs	r3, #1			if( pxTCB->uxPriority != pxTCB->uxBasePriority ) 802a28a:	4291      	cmp	r1, r2	BaseType_t xReturn = pdFALSE;		if( pxMutexHolder != NULL )		{			configASSERT( pxTCB->uxMutexesHeld );			( pxTCB->uxMutexesHeld )--; 802a28c:	6503      	str	r3, [r0, #80]	; 0x50			if( pxTCB->uxPriority != pxTCB->uxBasePriority ) 802a28e:	d0f2      	beq.n	802a276 <xTaskPriorityDisinherit+0x6>			{				/* Only disinherit if no other mutexes are held. */				if( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 ) 802a290:	2b00      	cmp	r3, #0 802a292:	d1f0      	bne.n	802a276 <xTaskPriorityDisinherit+0x6>					/* A task can only have an inhertied priority if it holds					the mutex.  If the mutex is held by a task then it cannot be					given from an interrupt, and if a mutex is given by the					holding	task then it must be the running state task.  Remove					the	holding task from the ready	list. */					if( uxListRemove( &( pxTCB->xGenericListItem ) ) == ( UBaseType_t ) 0 ) 802a294:	1d05      	adds	r5, r0, #4 802a296:	4628      	mov	r0, r5 802a298:	f7ff f824 	bl	80292e4 <uxListRemove> 802a29c:	b968      	cbnz	r0, 802a2ba <xTaskPriorityDisinherit+0x4a>					{						taskRESET_READY_PRIORITY( pxTCB->uxPriority ); 802a29e:	6ae2      	ldr	r2, [r4, #44]	; 0x2c 802a2a0:	4910      	ldr	r1, [pc, #64]	; (802a2e4 <xTaskPriorityDisinherit+0x74>) 802a2a2:	2314      	movs	r3, #20 802a2a4:	4353      	muls	r3, r2 802a2a6:	58cb      	ldr	r3, [r1, r3] 802a2a8:	b93b      	cbnz	r3, 802a2ba <xTaskPriorityDisinherit+0x4a> 802a2aa:	4b0f      	ldr	r3, [pc, #60]	; (802a2e8 <xTaskPriorityDisinherit+0x78>) 802a2ac:	2001      	movs	r0, #1 802a2ae:	6819      	ldr	r1, [r3, #0] 802a2b0:	fa00 f202 	lsl.w	r2, r0, r2 802a2b4:	ea21 0202 	bic.w	r2, r1, r2 802a2b8:	601a      	str	r2, [r3, #0]					}					/* Disinherit the priority before adding the task into the					new	ready list. */					traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority );					pxTCB->uxPriority = pxTCB->uxBasePriority; 802a2ba:	6ce3      	ldr	r3, [r4, #76]	; 0x4c					/* Reset the event list item value.  It cannot be in use for					any other purpose if this task is running, and it must be					running to give back the mutex. */					listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ 802a2bc:	f1c3 0205 	rsb	r2, r3, #5 802a2c0:	61a2      	str	r2, [r4, #24]					prvAddTaskToReadyList( pxTCB ); 802a2c2:	4a09      	ldr	r2, [pc, #36]	; (802a2e8 <xTaskPriorityDisinherit+0x78>)					}					/* Disinherit the priority before adding the task into the					new	ready list. */					traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority );					pxTCB->uxPriority = pxTCB->uxBasePriority; 802a2c4:	62e3      	str	r3, [r4, #44]	; 0x2c					/* Reset the event list item value.  It cannot be in use for					any other purpose if this task is running, and it must be					running to give back the mutex. */					listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */					prvAddTaskToReadyList( pxTCB ); 802a2c6:	6811      	ldr	r1, [r2, #0] 802a2c8:	2401      	movs	r4, #1 802a2ca:	fa04 f003 	lsl.w	r0, r4, r3 802a2ce:	4301      	orrs	r1, r0 802a2d0:	6011      	str	r1, [r2, #0] 802a2d2:	4a04      	ldr	r2, [pc, #16]	; (802a2e4 <xTaskPriorityDisinherit+0x74>) 802a2d4:	2014      	movs	r0, #20 802a2d6:	fb00 2003 	mla	r0, r0, r3, r2 802a2da:	4629      	mov	r1, r5 802a2dc:	f7fe ffde 	bl	802929c <vListInsertEnd>					in an order different to that in which they were taken.					If a context switch did not occur when the first mutex was					returned, even if a task was waiting on it, then a context					switch should occur when the last mutex is returned whether					a task is waiting on it or not. */					xReturn = pdTRUE; 802a2e0:	4620      	mov	r0, r4		{			mtCOVERAGE_TEST_MARKER();		}		return xReturn;	} 802a2e2:	bd38      	pop	{r3, r4, r5, pc} 802a2e4:	200029c0 	.word	0x200029c0 802a2e8:	20002a78 	.word	0x20002a780802a2ec <pvTaskIncrementMutexHeldCount>:	void *pvTaskIncrementMutexHeldCount( void )	{		/* If xSemaphoreCreateMutex() is called before any tasks have been created		then pxCurrentTCB will be NULL. */		if( pxCurrentTCB != NULL ) 802a2ec:	4b04      	ldr	r3, [pc, #16]	; (802a300 <pvTaskIncrementMutexHeldCount+0x14>) 802a2ee:	681a      	ldr	r2, [r3, #0] 802a2f0:	b11a      	cbz	r2, 802a2fa <pvTaskIncrementMutexHeldCount+0xe>		{			( pxCurrentTCB->uxMutexesHeld )++; 802a2f2:	681a      	ldr	r2, [r3, #0] 802a2f4:	6d11      	ldr	r1, [r2, #80]	; 0x50 802a2f6:	3101      	adds	r1, #1 802a2f8:	6511      	str	r1, [r2, #80]	; 0x50		}		return pxCurrentTCB; 802a2fa:	6818      	ldr	r0, [r3, #0]	} 802a2fc:	4770      	bx	lr 802a2fe:	bf00      	nop 802a300:	20002a38 	.word	0x20002a380802a304 <prvCheckForValidListAndQueue>:	pxOverflowTimerList = pxTemp;}/*-----------------------------------------------------------*/static void prvCheckForValidListAndQueue( void ){ 802a304:	b5f8      	push	{r3, r4, r5, r6, r7, lr}	/* Check that the list from which active timers are referenced, and the	queue used to communicate with the timer service, have been	initialised. */	taskENTER_CRITICAL();	{		if( xTimerQueue == NULL ) 802a306:	4c0f      	ldr	r4, [pc, #60]	; (802a344 <prvCheckForValidListAndQueue+0x40>)static void prvCheckForValidListAndQueue( void ){	/* Check that the list from which active timers are referenced, and the	queue used to communicate with the timer service, have been	initialised. */	taskENTER_CRITICAL(); 802a308:	f000 f9e2 	bl	802a6d0 <vPortEnterCritical>	{		if( xTimerQueue == NULL ) 802a30c:	6825      	ldr	r5, [r4, #0] 802a30e:	b9ad      	cbnz	r5, 802a33c <prvCheckForValidListAndQueue+0x38>		{			vListInitialise( &xActiveTimerList1 ); 802a310:	4f0d      	ldr	r7, [pc, #52]	; (802a348 <prvCheckForValidListAndQueue+0x44>)			vListInitialise( &xActiveTimerList2 ); 802a312:	4e0e      	ldr	r6, [pc, #56]	; (802a34c <prvCheckForValidListAndQueue+0x48>)	initialised. */	taskENTER_CRITICAL();	{		if( xTimerQueue == NULL )		{			vListInitialise( &xActiveTimerList1 ); 802a314:	4638      	mov	r0, r7 802a316:	f7fe ffb3 	bl	8029280 <vListInitialise>			vListInitialise( &xActiveTimerList2 ); 802a31a:	4630      	mov	r0, r6 802a31c:	f7fe ffb0 	bl	8029280 <vListInitialise>			pxCurrentTimerList = &xActiveTimerList1; 802a320:	4b0b      	ldr	r3, [pc, #44]	; (802a350 <prvCheckForValidListAndQueue+0x4c>) 802a322:	601f      	str	r7, [r3, #0]			pxOverflowTimerList = &xActiveTimerList2; 802a324:	4b0b      	ldr	r3, [pc, #44]	; (802a354 <prvCheckForValidListAndQueue+0x50>)			xTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) ); 802a326:	200a      	movs	r0, #10 802a328:	210c      	movs	r1, #12 802a32a:	462a      	mov	r2, r5		if( xTimerQueue == NULL )		{			vListInitialise( &xActiveTimerList1 );			vListInitialise( &xActiveTimerList2 );			pxCurrentTimerList = &xActiveTimerList1;			pxOverflowTimerList = &xActiveTimerList2; 802a32c:	601e      	str	r6, [r3, #0]			xTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) ); 802a32e:	f7ff f898 	bl	8029462 <xQueueGenericCreate> 802a332:	6020      	str	r0, [r4, #0]			configASSERT( xTimerQueue ); 802a334:	b910      	cbnz	r0, 802a33c <prvCheckForValidListAndQueue+0x38> 802a336:	f000 f9c3 	bl	802a6c0 <ulPortSetInterruptMask> 802a33a:	e7fe      	b.n	802a33a <prvCheckForValidListAndQueue+0x36>		{			mtCOVERAGE_TEST_MARKER();		}	}	taskEXIT_CRITICAL();} 802a33c:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}		else		{			mtCOVERAGE_TEST_MARKER();		}	}	taskEXIT_CRITICAL(); 802a340:	f000 b9f2 	b.w	802a728 <vPortExitCritical> 802a344:	20002ab0 	.word	0x20002ab0 802a348:	20002a84 	.word	0x20002a84 802a34c:	20002a98 	.word	0x20002a98 802a350:	20002a80 	.word	0x20002a80 802a354:	20002ab4 	.word	0x20002ab40802a358 <prvInsertTimerInActiveList>:	return xTimeNow;}/*-----------------------------------------------------------*/static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ){ 802a358:	b510      	push	{r4, lr} 802a35a:	4604      	mov	r4, r0BaseType_t xProcessTimerNow = pdFALSE;	listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime );	listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer );	if( xNextExpiryTime <= xTimeNow ) 802a35c:	4291      	cmp	r1, r2static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ){BaseType_t xProcessTimerNow = pdFALSE;	listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime ); 802a35e:	6041      	str	r1, [r0, #4]	listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); 802a360:	6120      	str	r0, [r4, #16]	if( xNextExpiryTime <= xTimeNow ) 802a362:	d805      	bhi.n	802a370 <prvInsertTimerInActiveList+0x18>	{		/* Has the expiry time elapsed between the command to start/reset a		timer was issued, and the time the command was processed? */		if( ( xTimeNow - xCommandTime ) >= pxTimer->xTimerPeriodInTicks ) 802a364:	6981      	ldr	r1, [r0, #24] 802a366:	1ad2      	subs	r2, r2, r3 802a368:	428a      	cmp	r2, r1 802a36a:	d20c      	bcs.n	802a386 <prvInsertTimerInActiveList+0x2e>			processed actually exceeds the timers period.  */			xProcessTimerNow = pdTRUE;		}		else		{			vListInsert( pxOverflowTimerList, &( pxTimer->xTimerListItem ) ); 802a36c:	4b07      	ldr	r3, [pc, #28]	; (802a38c <prvInsertTimerInActiveList+0x34>) 802a36e:	e004      	b.n	802a37a <prvInsertTimerInActiveList+0x22>		}	}	else	{		if( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) ) 802a370:	429a      	cmp	r2, r3 802a372:	d201      	bcs.n	802a378 <prvInsertTimerInActiveList+0x20> 802a374:	4299      	cmp	r1, r3 802a376:	d206      	bcs.n	802a386 <prvInsertTimerInActiveList+0x2e>			its expiry time and should be processed immediately. */			xProcessTimerNow = pdTRUE;		}		else		{			vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); 802a378:	4b05      	ldr	r3, [pc, #20]	; (802a390 <prvInsertTimerInActiveList+0x38>) 802a37a:	6818      	ldr	r0, [r3, #0] 802a37c:	1d21      	adds	r1, r4, #4 802a37e:	f7fe ff99 	bl	80292b4 <vListInsert>}/*-----------------------------------------------------------*/static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime ){BaseType_t xProcessTimerNow = pdFALSE; 802a382:	2000      	movs	r0, #0 802a384:	bd10      	pop	{r4, pc}		timer was issued, and the time the command was processed? */		if( ( xTimeNow - xCommandTime ) >= pxTimer->xTimerPeriodInTicks )		{			/* The time between a command being issued and the command being			processed actually exceeds the timers period.  */			xProcessTimerNow = pdTRUE; 802a386:	2001      	movs	r0, #1			vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) );		}	}	return xProcessTimerNow;} 802a388:	bd10      	pop	{r4, pc} 802a38a:	bf00      	nop 802a38c:	20002ab4 	.word	0x20002ab4 802a390:	20002a80 	.word	0x20002a800802a394 <xTimerCreateTimerTask>:static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty ) PRIVILEGED_FUNCTION;/*-----------------------------------------------------------*/BaseType_t xTimerCreateTimerTask( void ){ 802a394:	b51f      	push	{r0, r1, r2, r3, r4, lr}	/* This function is called when the scheduler is started if	configUSE_TIMERS is set to 1.  Check that the infrastructure used by the	timer service task has been created/initialised.  If timers have already	been created then the initialisation will already have been performed. */	prvCheckForValidListAndQueue(); 802a396:	f7ff ffb5 	bl	802a304 <prvCheckForValidListAndQueue>	if( xTimerQueue != NULL ) 802a39a:	4b0b      	ldr	r3, [pc, #44]	; (802a3c8 <xTimerCreateTimerTask+0x34>) 802a39c:	681b      	ldr	r3, [r3, #0] 802a39e:	b913      	cbnz	r3, 802a3a6 <xTimerCreateTimerTask+0x12>	else	{		mtCOVERAGE_TEST_MARKER();	}	configASSERT( xReturn ); 802a3a0:	f000 f98e 	bl	802a6c0 <ulPortSetInterruptMask> 802a3a4:	e00d      	b.n	802a3c2 <xTimerCreateTimerTask+0x2e>			xReturn = xTaskCreate( prvTimerTask, "Tmr Svc", ( uint16_t ) configTIMER_TASK_STACK_DEPTH, NULL, ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, &xTimerTaskHandle );		}		#else		{			/* Create the timer task without storing its handle. */			xReturn = xTaskCreate( prvTimerTask, "Tmr Svc", ( uint16_t ) configTIMER_TASK_STACK_DEPTH, NULL, ( ( UBaseType_t ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, NULL); 802a3a6:	2302      	movs	r3, #2 802a3a8:	9300      	str	r3, [sp, #0] 802a3aa:	2300      	movs	r3, #0 802a3ac:	9301      	str	r3, [sp, #4] 802a3ae:	9302      	str	r3, [sp, #8] 802a3b0:	9303      	str	r3, [sp, #12] 802a3b2:	4806      	ldr	r0, [pc, #24]	; (802a3cc <xTimerCreateTimerTask+0x38>) 802a3b4:	4906      	ldr	r1, [pc, #24]	; (802a3d0 <xTimerCreateTimerTask+0x3c>) 802a3b6:	f44f 7280 	mov.w	r2, #256	; 0x100 802a3ba:	f7ff fad9 	bl	8029970 <xTaskGenericCreate>	else	{		mtCOVERAGE_TEST_MARKER();	}	configASSERT( xReturn ); 802a3be:	b908      	cbnz	r0, 802a3c4 <xTimerCreateTimerTask+0x30> 802a3c0:	e7ee      	b.n	802a3a0 <xTimerCreateTimerTask+0xc> 802a3c2:	e7fe      	b.n	802a3c2 <xTimerCreateTimerTask+0x2e>	return xReturn;} 802a3c4:	b005      	add	sp, #20 802a3c6:	bd00      	pop	{pc} 802a3c8:	20002ab0 	.word	0x20002ab0 802a3cc:	0802a4cd 	.word	0x0802a4cd 802a3d0:	08036e8a 	.word	0x08036e8a0802a3d4 <xTimerCreate>:/*-----------------------------------------------------------*/TimerHandle_t xTimerCreate( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */{ 802a3d4:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802a3d8:	4680      	mov	r8, r0 802a3da:	4617      	mov	r7, r2 802a3dc:	461e      	mov	r6, r3Timer_t *pxNewTimer;	/* Allocate the timer structure. */	if( xTimerPeriodInTicks == ( TickType_t ) 0U ) 802a3de:	460d      	mov	r5, r1 802a3e0:	b191      	cbz	r1, 802a408 <xTimerCreate+0x34>	{		pxNewTimer = NULL;	}	else	{		pxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); 802a3e2:	202c      	movs	r0, #44	; 0x2c 802a3e4:	f000 fa82 	bl	802a8ec <pvPortMalloc>		if( pxNewTimer != NULL ) 802a3e8:	4604      	mov	r4, r0 802a3ea:	b180      	cbz	r0, 802a40e <xTimerCreate+0x3a>		{			/* Ensure the infrastructure used by the timer service task has been			created/initialised. */			prvCheckForValidListAndQueue(); 802a3ec:	f7ff ff8a 	bl	802a304 <prvCheckForValidListAndQueue>			/* Initialise the timer structure members using the function parameters. */			pxNewTimer->pcTimerName = pcTimerName;			pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks;			pxNewTimer->uxAutoReload = uxAutoReload;			pxNewTimer->pvTimerID = pvTimerID;			pxNewTimer->pxCallbackFunction = pxCallbackFunction; 802a3f0:	9b06      	ldr	r3, [sp, #24]			/* Ensure the infrastructure used by the timer service task has been			created/initialised. */			prvCheckForValidListAndQueue();			/* Initialise the timer structure members using the function parameters. */			pxNewTimer->pcTimerName = pcTimerName; 802a3f2:	f8c4 8000 	str.w	r8, [r4]			pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks; 802a3f6:	61a5      	str	r5, [r4, #24]			pxNewTimer->uxAutoReload = uxAutoReload; 802a3f8:	61e7      	str	r7, [r4, #28]			pxNewTimer->pvTimerID = pvTimerID; 802a3fa:	6226      	str	r6, [r4, #32]			pxNewTimer->pxCallbackFunction = pxCallbackFunction; 802a3fc:	6263      	str	r3, [r4, #36]	; 0x24			vListInitialiseItem( &( pxNewTimer->xTimerListItem ) ); 802a3fe:	1d20      	adds	r0, r4, #4 802a400:	f7fe ff49 	bl	8029296 <vListInitialiseItem> 802a404:	e003      	b.n	802a40e <xTimerCreate+0x3a> 802a406:	e7fe      	b.n	802a406 <xTimerCreate+0x32>			traceTIMER_CREATE_FAILED();		}	}	/* 0 is not a valid value for xTimerPeriodInTicks. */	configASSERT( ( xTimerPeriodInTicks > 0 ) ); 802a408:	f000 f95a 	bl	802a6c0 <ulPortSetInterruptMask> 802a40c:	e7fb      	b.n	802a406 <xTimerCreate+0x32>	return ( TimerHandle_t ) pxNewTimer;} 802a40e:	4620      	mov	r0, r4 802a410:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}0802a414 <xTimerGenericCommand>:/*-----------------------------------------------------------*/BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ){ 802a414:	b530      	push	{r4, r5, lr}BaseType_t xReturn = pdFAIL;DaemonTaskMessage_t xMessage;	/* Send a message to the timer service task to perform a particular action	on a particular timer definition. */	if( xTimerQueue != NULL ) 802a416:	4c0f      	ldr	r4, [pc, #60]	; (802a454 <xTimerGenericCommand+0x40>)	return ( TimerHandle_t ) pxNewTimer;}/*-----------------------------------------------------------*/BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ){ 802a418:	4605      	mov	r5, r0BaseType_t xReturn = pdFAIL;DaemonTaskMessage_t xMessage;	/* Send a message to the timer service task to perform a particular action	on a particular timer definition. */	if( xTimerQueue != NULL ) 802a41a:	6820      	ldr	r0, [r4, #0]	return ( TimerHandle_t ) pxNewTimer;}/*-----------------------------------------------------------*/BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ){ 802a41c:	b085      	sub	sp, #20BaseType_t xReturn = pdFAIL;DaemonTaskMessage_t xMessage;	/* Send a message to the timer service task to perform a particular action	on a particular timer definition. */	if( xTimerQueue != NULL ) 802a41e:	b1b8      	cbz	r0, 802a450 <xTimerGenericCommand+0x3c>		/* Send a command to the timer service task to start the xTimer timer. */		xMessage.xMessageID = xCommandID;		xMessage.u.xTimerParameters.xMessageValue = xOptionalValue;		xMessage.u.xTimerParameters.pxTimer = ( Timer_t * ) xTimer;		if( xCommandID < tmrFIRST_FROM_ISR_COMMAND ) 802a420:	2905      	cmp	r1, #5	/* Send a message to the timer service task to perform a particular action	on a particular timer definition. */	if( xTimerQueue != NULL )	{		/* Send a command to the timer service task to start the xTimer timer. */		xMessage.xMessageID = xCommandID; 802a422:	9101      	str	r1, [sp, #4]		xMessage.u.xTimerParameters.xMessageValue = xOptionalValue; 802a424:	9202      	str	r2, [sp, #8]		xMessage.u.xTimerParameters.pxTimer = ( Timer_t * ) xTimer; 802a426:	9503      	str	r5, [sp, #12]		if( xCommandID < tmrFIRST_FROM_ISR_COMMAND ) 802a428:	dc0d      	bgt.n	802a446 <xTimerGenericCommand+0x32>		{			if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING ) 802a42a:	f7ff fec5 	bl	802a1b8 <xTaskGetSchedulerState> 802a42e:	2802      	cmp	r0, #2			{				xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); 802a430:	a901      	add	r1, sp, #4 802a432:	6820      	ldr	r0, [r4, #0]		xMessage.u.xTimerParameters.xMessageValue = xOptionalValue;		xMessage.u.xTimerParameters.pxTimer = ( Timer_t * ) xTimer;		if( xCommandID < tmrFIRST_FROM_ISR_COMMAND )		{			if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING ) 802a434:	d102      	bne.n	802a43c <xTimerGenericCommand+0x28>			{				xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait ); 802a436:	9a08      	ldr	r2, [sp, #32] 802a438:	2300      	movs	r3, #0 802a43a:	e001      	b.n	802a440 <xTimerGenericCommand+0x2c>			}			else			{				xReturn = xQueueSendToBack( xTimerQueue, &xMessage, tmrNO_DELAY ); 802a43c:	2200      	movs	r2, #0 802a43e:	4613      	mov	r3, r2 802a440:	f7ff f84c 	bl	80294dc <xQueueGenericSend> 802a444:	e004      	b.n	802a450 <xTimerGenericCommand+0x3c>			}		}		else		{			xReturn = xQueueSendToBackFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken ); 802a446:	461a      	mov	r2, r3 802a448:	a901      	add	r1, sp, #4 802a44a:	2300      	movs	r3, #0 802a44c:	f7ff f90a 	bl	8029664 <xQueueGenericSendFromISR>	{		mtCOVERAGE_TEST_MARKER();	}	return xReturn;} 802a450:	b005      	add	sp, #20 802a452:	bd30      	pop	{r4, r5, pc} 802a454:	20002ab0 	.word	0x20002ab00802a458 <prvSwitchTimerLists>:	}}/*-----------------------------------------------------------*/static void prvSwitchTimerLists( void ){ 802a458:	e92d 41f3 	stmdb	sp!, {r0, r1, r4, r5, r6, r7, r8, lr}	/* The tick count has overflowed.  The timer lists must be switched.	If there are any timers still referenced from the current timer list	then they must have expired and should be processed before the lists	are switched. */	while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) 802a45c:	4e19      	ldr	r6, [pc, #100]	; (802a4c4 <prvSwitchTimerLists+0x6c>)				listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer );				vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) );			}			else			{				xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); 802a45e:	f04f 0800 	mov.w	r8, #0 802a462:	e023      	b.n	802a4ac <prvSwitchTimerLists+0x54>	If there are any timers still referenced from the current timer list	then they must have expired and should be processed before the lists	are switched. */	while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE )	{		xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); 802a464:	68db      	ldr	r3, [r3, #12]		/* Remove the timer from the list. */		pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); 802a466:	68dc      	ldr	r4, [r3, #12]	If there are any timers still referenced from the current timer list	then they must have expired and should be processed before the lists	are switched. */	while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE )	{		xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); 802a468:	681d      	ldr	r5, [r3, #0]		/* Remove the timer from the list. */		pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList );		( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); 802a46a:	1d27      	adds	r7, r4, #4 802a46c:	4638      	mov	r0, r7 802a46e:	f7fe ff39 	bl	80292e4 <uxListRemove>		traceTIMER_EXPIRED( pxTimer );		/* Execute its callback, then send a command to restart the timer if		it is an auto-reload timer.  It cannot be restarted here as the lists		have not yet been switched. */		pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); 802a472:	6a63      	ldr	r3, [r4, #36]	; 0x24 802a474:	4620      	mov	r0, r4 802a476:	4798      	blx	r3		if( pxTimer->uxAutoReload == ( UBaseType_t ) pdTRUE ) 802a478:	69e3      	ldr	r3, [r4, #28] 802a47a:	2b01      	cmp	r3, #1 802a47c:	d116      	bne.n	802a4ac <prvSwitchTimerLists+0x54>			the timer going into the same timer list then it has already expired			and the timer should be re-inserted into the current list so it is			processed again within this loop.  Otherwise a command should be sent			to restart the timer to ensure it is only inserted into a list after			the lists have been swapped. */			xReloadTime = ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ); 802a47e:	69a3      	ldr	r3, [r4, #24] 802a480:	18eb      	adds	r3, r5, r3			if( xReloadTime > xNextExpireTime ) 802a482:	42ab      	cmp	r3, r5 802a484:	d906      	bls.n	802a494 <prvSwitchTimerLists+0x3c>			{				listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xReloadTime ); 802a486:	6063      	str	r3, [r4, #4]				listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); 802a488:	6124      	str	r4, [r4, #16]				vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); 802a48a:	6830      	ldr	r0, [r6, #0] 802a48c:	4639      	mov	r1, r7 802a48e:	f7fe ff11 	bl	80292b4 <vListInsert> 802a492:	e00b      	b.n	802a4ac <prvSwitchTimerLists+0x54>			}			else			{				xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); 802a494:	2100      	movs	r1, #0 802a496:	f8cd 8000 	str.w	r8, [sp] 802a49a:	4620      	mov	r0, r4 802a49c:	462a      	mov	r2, r5 802a49e:	460b      	mov	r3, r1 802a4a0:	f7ff ffb8 	bl	802a414 <xTimerGenericCommand>				configASSERT( xResult ); 802a4a4:	b910      	cbnz	r0, 802a4ac <prvSwitchTimerLists+0x54> 802a4a6:	f000 f90b 	bl	802a6c0 <ulPortSetInterruptMask> 802a4aa:	e7fe      	b.n	802a4aa <prvSwitchTimerLists+0x52>	/* The tick count has overflowed.  The timer lists must be switched.	If there are any timers still referenced from the current timer list	then they must have expired and should be processed before the lists	are switched. */	while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) 802a4ac:	6833      	ldr	r3, [r6, #0] 802a4ae:	681a      	ldr	r2, [r3, #0] 802a4b0:	2a00      	cmp	r2, #0 802a4b2:	d1d7      	bne.n	802a464 <prvSwitchTimerLists+0xc>			mtCOVERAGE_TEST_MARKER();		}	}	pxTemp = pxCurrentTimerList;	pxCurrentTimerList = pxOverflowTimerList; 802a4b4:	4a04      	ldr	r2, [pc, #16]	; (802a4c8 <prvSwitchTimerLists+0x70>) 802a4b6:	4803      	ldr	r0, [pc, #12]	; (802a4c4 <prvSwitchTimerLists+0x6c>) 802a4b8:	6811      	ldr	r1, [r2, #0]	pxOverflowTimerList = pxTemp; 802a4ba:	6013      	str	r3, [r2, #0]			mtCOVERAGE_TEST_MARKER();		}	}	pxTemp = pxCurrentTimerList;	pxCurrentTimerList = pxOverflowTimerList; 802a4bc:	6001      	str	r1, [r0, #0]	pxOverflowTimerList = pxTemp;} 802a4be:	e8bd 81fc 	ldmia.w	sp!, {r2, r3, r4, r5, r6, r7, r8, pc} 802a4c2:	bf00      	nop 802a4c4:	20002a80 	.word	0x20002a80 802a4c8:	20002ab4 	.word	0x20002ab40802a4cc <prvTimerTask>:	pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );}/*-----------------------------------------------------------*/static void prvTimerTask( void *pvParameters ){ 802a4cc:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr}TickType_t xTimeNow;PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */	xTimeNow = xTaskGetTickCount();	if( xTimeNow < xLastTime ) 802a4d0:	f8df 816c 	ldr.w	r8, [pc, #364]	; 802a640 <prvTimerTask+0x174>	pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );}/*-----------------------------------------------------------*/static void prvTimerTask( void *pvParameters ){ 802a4d4:	b087      	sub	sp, #28 802a4d6:	46c1      	mov	r9, r8	the timer with the nearest expiry time will expire.  If there are no	active timers then just set the next expire time to 0.  That will cause	this task to unblock when the tick count overflows, at which point the	timer lists will be switched and the next expiry time can be	re-assessed.  */	*pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList ); 802a4d8:	4b57      	ldr	r3, [pc, #348]	; (802a638 <prvTimerTask+0x16c>) 802a4da:	681b      	ldr	r3, [r3, #0] 802a4dc:	681f      	ldr	r7, [r3, #0] 802a4de:	f1d7 0701 	rsbs	r7, r7, #1 802a4e2:	bf38      	it	cc 802a4e4:	2700      	movcc	r7, #0	if( *pxListWasEmpty == pdFALSE ) 802a4e6:	b917      	cbnz	r7, 802a4ee <prvTimerTask+0x22>	{		xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList ); 802a4e8:	68db      	ldr	r3, [r3, #12] 802a4ea:	681d      	ldr	r5, [r3, #0] 802a4ec:	e000      	b.n	802a4f0 <prvTimerTask+0x24>	}	else	{		/* Ensure the task unblocks when the tick count rolls over. */		xNextExpireTime = ( TickType_t ) 0U; 802a4ee:	2500      	movs	r5, #0static void prvProcessTimerOrBlockTask( const TickType_t xNextExpireTime, const BaseType_t xListWasEmpty ){TickType_t xTimeNow;BaseType_t xTimerListsWereSwitched;	vTaskSuspendAll(); 802a4f0:	f7ff fb9e 	bl	8029c30 <vTaskSuspendAll>static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ){TickType_t xTimeNow;PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */	xTimeNow = xTaskGetTickCount(); 802a4f4:	f7ff fba4 	bl	8029c40 <xTaskGetTickCount>	if( xTimeNow < xLastTime ) 802a4f8:	f8d8 3000 	ldr.w	r3, [r8] 802a4fc:	4298      	cmp	r0, r3static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ){TickType_t xTimeNow;PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */	xTimeNow = xTaskGetTickCount(); 802a4fe:	4606      	mov	r6, r0	if( xTimeNow < xLastTime ) 802a500:	d203      	bcs.n	802a50a <prvTimerTask+0x3e>	{		prvSwitchTimerLists(); 802a502:	f7ff ffa9 	bl	802a458 <prvSwitchTimerLists>		*pxTimerListsWereSwitched = pdTRUE; 802a506:	2301      	movs	r3, #1 802a508:	e000      	b.n	802a50c <prvTimerTask+0x40>	}	else	{		*pxTimerListsWereSwitched = pdFALSE; 802a50a:	2300      	movs	r3, #0	}	xLastTime = xTimeNow; 802a50c:	f8c9 6000 	str.w	r6, [r9]		has expired or not.  If obtaining the time causes the lists to switch		then don't process this timer as any timers that remained in the list		when the lists were switched will have been processed within the		prvSampleTimeNow() function. */		xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched );		if( xTimerListsWereSwitched == pdFALSE ) 802a510:	2b00      	cmp	r3, #0 802a512:	d132      	bne.n	802a57a <prvTimerTask+0xae>		{			/* The tick count has not overflowed, has the timer expired? */			if( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) ) 802a514:	bb2f      	cbnz	r7, 802a562 <prvTimerTask+0x96> 802a516:	42b5      	cmp	r5, r6 802a518:	d823      	bhi.n	802a562 <prvTimerTask+0x96>			{				( void ) xTaskResumeAll(); 802a51a:	f7ff fc25 	bl	8029d68 <xTaskResumeAll>/*-----------------------------------------------------------*/static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ){BaseType_t xResult;Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); 802a51e:	4b46      	ldr	r3, [pc, #280]	; (802a638 <prvTimerTask+0x16c>) 802a520:	681b      	ldr	r3, [r3, #0] 802a522:	68db      	ldr	r3, [r3, #12] 802a524:	68dc      	ldr	r4, [r3, #12]	/* Remove the timer from the list of active timers.  A check has already	been performed to ensure the list is not empty. */	( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); 802a526:	1d20      	adds	r0, r4, #4 802a528:	f7fe fedc 	bl	80292e4 <uxListRemove>	traceTIMER_EXPIRED( pxTimer );	/* If the timer is an auto reload timer then calculate the next	expiry time and re-insert the timer in the list of active timers. */	if( pxTimer->uxAutoReload == ( UBaseType_t ) pdTRUE ) 802a52c:	69e3      	ldr	r3, [r4, #28] 802a52e:	2b01      	cmp	r3, #1 802a530:	d113      	bne.n	802a55a <prvTimerTask+0x8e>	{		/* The timer is inserted into a list using a time relative to anything		other than the current time.  It will therefore be inserted into the		correct list relative to the time this task thinks it is now. */		if( prvInsertTimerInActiveList( pxTimer, ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xNextExpireTime ) == pdTRUE ) 802a532:	69a1      	ldr	r1, [r4, #24] 802a534:	4620      	mov	r0, r4 802a536:	1869      	adds	r1, r5, r1 802a538:	4632      	mov	r2, r6 802a53a:	462b      	mov	r3, r5 802a53c:	f7ff ff0c 	bl	802a358 <prvInsertTimerInActiveList> 802a540:	2801      	cmp	r0, #1 802a542:	d10a      	bne.n	802a55a <prvTimerTask+0x8e>		{			/* The timer expired before it was added to the active timer			list.  Reload it now.  */			xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); 802a544:	9700      	str	r7, [sp, #0] 802a546:	4620      	mov	r0, r4 802a548:	4639      	mov	r1, r7 802a54a:	462a      	mov	r2, r5 802a54c:	463b      	mov	r3, r7 802a54e:	f7ff ff61 	bl	802a414 <xTimerGenericCommand>			configASSERT( xResult ); 802a552:	b910      	cbnz	r0, 802a55a <prvTimerTask+0x8e> 802a554:	f000 f8b4 	bl	802a6c0 <ulPortSetInterruptMask> 802a558:	e7fe      	b.n	802a558 <prvTimerTask+0x8c>	{		mtCOVERAGE_TEST_MARKER();	}	/* Call the timer callback. */	pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); 802a55a:	6a63      	ldr	r3, [r4, #36]	; 0x24 802a55c:	4620      	mov	r0, r4 802a55e:	4798      	blx	r3 802a560:	e05f      	b.n	802a622 <prvTimerTask+0x156>				time has not been reached yet.  This task should therefore				block to wait for the next expire time or a command to be				received - whichever comes first.  The following line cannot				be reached unless xNextExpireTime > xTimeNow, except in the				case when the current timer list is empty. */				vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ) ); 802a562:	4b36      	ldr	r3, [pc, #216]	; (802a63c <prvTimerTask+0x170>) 802a564:	1ba9      	subs	r1, r5, r6 802a566:	6818      	ldr	r0, [r3, #0] 802a568:	f7ff f9aa 	bl	80298c0 <vQueueWaitForMessageRestricted>				if( xTaskResumeAll() == pdFALSE ) 802a56c:	f7ff fbfc 	bl	8029d68 <xTaskResumeAll> 802a570:	2800      	cmp	r0, #0 802a572:	d156      	bne.n	802a622 <prvTimerTask+0x156>				{					/* Yield to wait for either a command to arrive, or the					block time to expire.  If a command arrived between the					critical section being exited and this yield then the yield					will not cause the task to block. */					portYIELD_WITHIN_API(); 802a574:	f000 f898 	bl	802a6a8 <vPortYield> 802a578:	e053      	b.n	802a622 <prvTimerTask+0x156>				}			}		}		else		{			( void ) xTaskResumeAll(); 802a57a:	f7ff fbf5 	bl	8029d68 <xTaskResumeAll> 802a57e:	e050      	b.n	802a622 <prvTimerTask+0x156>		}		#endif /* INCLUDE_xTimerPendFunctionCall */		/* Commands that are positive are timer commands rather than pended		function calls. */		if( xMessage.xMessageID >= ( BaseType_t ) 0 ) 802a580:	9b03      	ldr	r3, [sp, #12] 802a582:	2b00      	cmp	r3, #0 802a584:	db4e      	blt.n	802a624 <prvTimerTask+0x158>		{			/* The messages uses the xTimerParameters member to work on a			software timer. */			pxTimer = xMessage.u.xTimerParameters.pxTimer; 802a586:	9c05      	ldr	r4, [sp, #20]			if( listIS_CONTAINED_WITHIN( NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE ) 802a588:	6963      	ldr	r3, [r4, #20] 802a58a:	b113      	cbz	r3, 802a592 <prvTimerTask+0xc6>			{				/* The timer is in a list, remove it. */				( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); 802a58c:	1d20      	adds	r0, r4, #4 802a58e:	f7fe fea9 	bl	80292e4 <uxListRemove>static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ){TickType_t xTimeNow;PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */	xTimeNow = xTaskGetTickCount(); 802a592:	f7ff fb55 	bl	8029c40 <xTaskGetTickCount>	if( xTimeNow < xLastTime ) 802a596:	f8d8 3000 	ldr.w	r3, [r8] 802a59a:	4298      	cmp	r0, r3static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ){TickType_t xTimeNow;PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*lint !e956 Variable is only accessible to one task. */	xTimeNow = xTaskGetTickCount(); 802a59c:	4605      	mov	r5, r0	if( xTimeNow < xLastTime ) 802a59e:	d201      	bcs.n	802a5a4 <prvTimerTask+0xd8>	{		prvSwitchTimerLists(); 802a5a0:	f7ff ff5a 	bl	802a458 <prvSwitchTimerLists>			possibility of a higher priority task adding a message to the message			queue with a time that is ahead of the timer daemon task (because it			pre-empted the timer daemon task after the xTimeNow value was set). */			xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched );			switch( xMessage.xMessageID ) 802a5a4:	9b03      	ldr	r3, [sp, #12]	else	{		*pxTimerListsWereSwitched = pdFALSE;	}	xLastTime = xTimeNow; 802a5a6:	f8c9 5000 	str.w	r5, [r9]			possibility of a higher priority task adding a message to the message			queue with a time that is ahead of the timer daemon task (because it			pre-empted the timer daemon task after the xTimeNow value was set). */			xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched );			switch( xMessage.xMessageID ) 802a5aa:	2b09      	cmp	r3, #9 802a5ac:	d83a      	bhi.n	802a624 <prvTimerTask+0x158> 802a5ae:	f04f 6204 	mov.w	r2, #138412032	; 0x8400000 802a5b2:	409a      	lsls	r2, r3 802a5b4:	d424      	bmi.n	802a600 <prvTimerTask+0x134> 802a5b6:	f04f 4263 	mov.w	r2, #3808428032	; 0xe3000000 802a5ba:	409a      	lsls	r2, r3 802a5bc:	d404      	bmi.n	802a5c8 <prvTimerTask+0xfc> 802a5be:	f04f 6280 	mov.w	r2, #67108864	; 0x4000000 802a5c2:	409a      	lsls	r2, r3 802a5c4:	d429      	bmi.n	802a61a <prvTimerTask+0x14e> 802a5c6:	e02d      	b.n	802a624 <prvTimerTask+0x158>			    case tmrCOMMAND_START_FROM_ISR :			    case tmrCOMMAND_RESET :			    case tmrCOMMAND_RESET_FROM_ISR :				case tmrCOMMAND_START_DONT_TRACE :					/* Start or restart a timer. */					if( prvInsertTimerInActiveList( pxTimer,  xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) == pdTRUE ) 802a5c8:	9b04      	ldr	r3, [sp, #16] 802a5ca:	69a1      	ldr	r1, [r4, #24] 802a5cc:	4620      	mov	r0, r4 802a5ce:	1859      	adds	r1, r3, r1 802a5d0:	462a      	mov	r2, r5 802a5d2:	f7ff fec1 	bl	802a358 <prvInsertTimerInActiveList> 802a5d6:	2801      	cmp	r0, #1 802a5d8:	d124      	bne.n	802a624 <prvTimerTask+0x158>					{						/* The timer expired before it was added to the active						timer list.  Process it now. */						pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer ); 802a5da:	6a63      	ldr	r3, [r4, #36]	; 0x24 802a5dc:	4620      	mov	r0, r4 802a5de:	4798      	blx	r3						traceTIMER_EXPIRED( pxTimer );						if( pxTimer->uxAutoReload == ( UBaseType_t ) pdTRUE ) 802a5e0:	69e3      	ldr	r3, [r4, #28] 802a5e2:	2b01      	cmp	r3, #1 802a5e4:	d11e      	bne.n	802a624 <prvTimerTask+0x158>						{							xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY ); 802a5e6:	69a2      	ldr	r2, [r4, #24] 802a5e8:	9b04      	ldr	r3, [sp, #16] 802a5ea:	2100      	movs	r1, #0 802a5ec:	18d2      	adds	r2, r2, r3 802a5ee:	9100      	str	r1, [sp, #0] 802a5f0:	4620      	mov	r0, r4 802a5f2:	460b      	mov	r3, r1 802a5f4:	f7ff ff0e 	bl	802a414 <xTimerGenericCommand>							configASSERT( xResult ); 802a5f8:	b9a0      	cbnz	r0, 802a624 <prvTimerTask+0x158> 802a5fa:	f000 f861 	bl	802a6c0 <ulPortSetInterruptMask> 802a5fe:	e7fe      	b.n	802a5fe <prvTimerTask+0x132>					There is nothing to do here. */					break;				case tmrCOMMAND_CHANGE_PERIOD :				case tmrCOMMAND_CHANGE_PERIOD_FROM_ISR :					pxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue; 802a600:	9904      	ldr	r1, [sp, #16] 802a602:	61a1      	str	r1, [r4, #24]					configASSERT( ( pxTimer->xTimerPeriodInTicks > 0 ) ); 802a604:	b911      	cbnz	r1, 802a60c <prvTimerTask+0x140> 802a606:	f000 f85b 	bl	802a6c0 <ulPortSetInterruptMask> 802a60a:	e7fe      	b.n	802a60a <prvTimerTask+0x13e>					longer or shorter than the old one.  The command time is					therefore set to the current time, and as the period cannot be					zero the next expiry time can only be in the future, meaning					(unlike for the xTimerStart() case above) there is no fail case					that needs to be handled here. */					( void ) prvInsertTimerInActiveList( pxTimer, ( xTimeNow + pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow ); 802a60c:	4620      	mov	r0, r4 802a60e:	1869      	adds	r1, r5, r1 802a610:	462a      	mov	r2, r5 802a612:	462b      	mov	r3, r5 802a614:	f7ff fea0 	bl	802a358 <prvInsertTimerInActiveList> 802a618:	e004      	b.n	802a624 <prvTimerTask+0x158>					break;				case tmrCOMMAND_DELETE :					/* The timer has already been removed from the active list,					just free up the memory. */					vPortFree( pxTimer ); 802a61a:	4620      	mov	r0, r4 802a61c:	f000 f9ec 	bl	802a9f8 <vPortFree> 802a620:	e000      	b.n	802a624 <prvTimerTask+0x158>DaemonTaskMessage_t xMessage;Timer_t *pxTimer;BaseType_t xTimerListsWereSwitched, xResult;TickType_t xTimeNow;	while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */ 802a622:	4e06      	ldr	r6, [pc, #24]	; (802a63c <prvTimerTask+0x170>) 802a624:	2200      	movs	r2, #0 802a626:	6830      	ldr	r0, [r6, #0] 802a628:	a903      	add	r1, sp, #12 802a62a:	4613      	mov	r3, r2 802a62c:	f7ff f896 	bl	802975c <xQueueGenericReceive> 802a630:	2800      	cmp	r0, #0 802a632:	d1a5      	bne.n	802a580 <prvTimerTask+0xb4> 802a634:	e750      	b.n	802a4d8 <prvTimerTask+0xc> 802a636:	bf00      	nop 802a638:	20002a80 	.word	0x20002a80 802a63c:	20002ab0 	.word	0x20002ab0 802a640:	20002aac 	.word	0x20002aac0802a644 <pvTimerGetTimerID>:void *pvTimerGetTimerID( const TimerHandle_t xTimer ){Timer_t * const pxTimer = ( Timer_t * ) xTimer;	return pxTimer->pvTimerID;} 802a644:	6a00      	ldr	r0, [r0, #32] 802a646:	4770      	bx	lr0802a648 <prvPortStartFirstTask>:}/*-----------------------------------------------------------*/static void prvPortStartFirstTask( void ){	__asm volatile( 802a648:	4806      	ldr	r0, [pc, #24]	; (802a664 <prvPortStartFirstTask+0x1c>) 802a64a:	6800      	ldr	r0, [r0, #0] 802a64c:	6800      	ldr	r0, [r0, #0] 802a64e:	f380 8808 	msr	MSP, r0 802a652:	b662      	cpsie	i 802a654:	b661      	cpsie	f 802a656:	f3bf 8f4f 	dsb	sy 802a65a:	f3bf 8f6f 	isb	sy 802a65e:	df00      	svc	0 802a660:	bf00      	nop 802a662:	0000      	.short	0x0000 802a664:	e000ed08 	.word	0xe000ed080802a668 <pxPortInitialiseStack>:StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ){	/* Simulate the stack frame as it would be created by a context switch	interrupt. */	pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */	*pxTopOfStack = portINITIAL_XPSR;	/* xPSR */ 802a668:	f04f 7380 	mov.w	r3, #16777216	; 0x1000000	pxTopOfStack--;	*pxTopOfStack = ( StackType_t ) pxCode;	/* PC */ 802a66c:	e900 000a 	stmdb	r0, {r1, r3}	pxTopOfStack--;	*pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;	/* LR */ 802a670:	4b03      	ldr	r3, [pc, #12]	; (802a680 <pxPortInitialiseStack+0x18>)	pxTopOfStack -= 5;	/* R12, R3, R2 and R1. */	*pxTopOfStack = ( StackType_t ) pvParameters;	/* R0 */ 802a672:	f840 2c20 	str.w	r2, [r0, #-32]	pxTopOfStack--; /* Offset added to account for the way the MCU uses the stack on entry/exit of interrupts. */	*pxTopOfStack = portINITIAL_XPSR;	/* xPSR */	pxTopOfStack--;	*pxTopOfStack = ( StackType_t ) pxCode;	/* PC */	pxTopOfStack--;	*pxTopOfStack = ( StackType_t ) portTASK_RETURN_ADDRESS;	/* LR */ 802a676:	f840 3c0c 	str.w	r3, [r0, #-12]	pxTopOfStack -= 5;	/* R12, R3, R2 and R1. */	*pxTopOfStack = ( StackType_t ) pvParameters;	/* R0 */	pxTopOfStack -= 8;	/* R11, R10, R9, R8, R7, R6, R5 and R4. */	return pxTopOfStack;} 802a67a:	3840      	subs	r0, #64	; 0x40 802a67c:	4770      	bx	lr 802a67e:	bf00      	nop 802a680:	0802a705 	.word	0x0802a7050802a684 <SVC_Handler>:}/*-----------------------------------------------------------*/void vPortSVCHandler( void ){	__asm volatile ( 802a684:	4b07      	ldr	r3, [pc, #28]	; (802a6a4 <pxCurrentTCBConst2>) 802a686:	6819      	ldr	r1, [r3, #0] 802a688:	6808      	ldr	r0, [r1, #0] 802a68a:	e8b0 0ff0 	ldmia.w	r0!, {r4, r5, r6, r7, r8, r9, sl, fp} 802a68e:	f380 8809 	msr	PSP, r0 802a692:	f3bf 8f6f 	isb	sy 802a696:	f04f 0000 	mov.w	r0, #0 802a69a:	f380 8811 	msr	BASEPRI, r0 802a69e:	f04e 0e0d 	orr.w	lr, lr, #13 802a6a2:	4770      	bx	lr0802a6a4 <pxCurrentTCBConst2>: 802a6a4:	20002a38 	.word	0x20002a380802a6a8 <vPortYield>:/*-----------------------------------------------------------*/void vPortYield( void ){	/* Set a PendSV to request a context switch. */	portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; 802a6a8:	4b04      	ldr	r3, [pc, #16]	; (802a6bc <vPortYield+0x14>) 802a6aa:	f04f 5280 	mov.w	r2, #268435456	; 0x10000000 802a6ae:	601a      	str	r2, [r3, #0]	/* Barriers are normally not required but do ensure the code is completely	within the specified behaviour for the architecture. */	__asm volatile( "dsb" ); 802a6b0:	f3bf 8f4f 	dsb	sy	__asm volatile( "isb" ); 802a6b4:	f3bf 8f6f 	isb	sy 802a6b8:	4770      	bx	lr 802a6ba:	bf00      	nop 802a6bc:	e000ed04 	.word	0xe000ed040802a6c0 <ulPortSetInterruptMask>:}/*-----------------------------------------------------------*/__attribute__(( naked )) uint32_t ulPortSetInterruptMask( void ){	__asm volatile														\ 802a6c0:	f3ef 8011 	mrs	r0, BASEPRI 802a6c4:	f04f 0150 	mov.w	r1, #80	; 0x50 802a6c8:	f381 8811 	msr	BASEPRI, r1 802a6cc:	4770      	bx	lr	);	/* This return will not be reached but is necessary to prevent compiler	warnings. */	return 0;} 802a6ce:	2000      	movs	r0, #00802a6d0 <vPortEnterCritical>:	__asm volatile( "isb" );}/*-----------------------------------------------------------*/void vPortEnterCritical( void ){ 802a6d0:	b508      	push	{r3, lr}	portDISABLE_INTERRUPTS(); 802a6d2:	f7ff fff5 	bl	802a6c0 <ulPortSetInterruptMask>	uxCriticalNesting++; 802a6d6:	4a09      	ldr	r2, [pc, #36]	; (802a6fc <vPortEnterCritical+0x2c>) 802a6d8:	6813      	ldr	r3, [r2, #0] 802a6da:	3301      	adds	r3, #1 802a6dc:	6013      	str	r3, [r2, #0]	__asm volatile( "dsb" ); 802a6de:	f3bf 8f4f 	dsb	sy	__asm volatile( "isb" ); 802a6e2:	f3bf 8f6f 	isb	sy	/* This is not the interrupt safe version of the enter critical function so	assert() if it is being called from an interrupt context.  Only API 	functions that end in "FromISR" can be used in an interrupt.  Only assert if	the critical nesting count is 1 to protect against recursive calls if the	assert function also uses a critical section. */	if( uxCriticalNesting == 1 ) 802a6e6:	2b01      	cmp	r3, #1 802a6e8:	d107      	bne.n	802a6fa <vPortEnterCritical+0x2a>	{		configASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 ); 802a6ea:	4b05      	ldr	r3, [pc, #20]	; (802a700 <vPortEnterCritical+0x30>) 802a6ec:	681b      	ldr	r3, [r3, #0] 802a6ee:	f013 0fff 	tst.w	r3, #255	; 0xff 802a6f2:	d002      	beq.n	802a6fa <vPortEnterCritical+0x2a> 802a6f4:	f7ff ffe4 	bl	802a6c0 <ulPortSetInterruptMask> 802a6f8:	e7fe      	b.n	802a6f8 <vPortEnterCritical+0x28> 802a6fa:	bd08      	pop	{r3, pc} 802a6fc:	200015e0 	.word	0x200015e0 802a700:	e000ed04 	.word	0xe000ed040802a704 <prvTaskExitError>:	return pxTopOfStack;}/*-----------------------------------------------------------*/static void prvTaskExitError( void ){ 802a704:	b508      	push	{r3, lr}	its caller as there is nothing to return to.  If a task wants to exit it	should instead call vTaskDelete( NULL ).	Artificially force an assert() to be triggered if configASSERT() is	defined, then stop here so application writers can catch the error. */	configASSERT( uxCriticalNesting == ~0UL ); 802a706:	4b05      	ldr	r3, [pc, #20]	; (802a71c <prvTaskExitError+0x18>) 802a708:	681b      	ldr	r3, [r3, #0] 802a70a:	3301      	adds	r3, #1 802a70c:	d002      	beq.n	802a714 <prvTaskExitError+0x10> 802a70e:	f7ff ffd7 	bl	802a6c0 <ulPortSetInterruptMask> 802a712:	e7fe      	b.n	802a712 <prvTaskExitError+0xe>	portDISABLE_INTERRUPTS(); 802a714:	f7ff ffd4 	bl	802a6c0 <ulPortSetInterruptMask> 802a718:	e7fe      	b.n	802a718 <prvTaskExitError+0x14> 802a71a:	bf00      	nop 802a71c:	200015e0 	.word	0x200015e00802a720 <vPortClearInterruptMask>:}/*-----------------------------------------------------------*/__attribute__(( naked )) void vPortClearInterruptMask( uint32_t ulNewMaskValue ){	__asm volatile													\ 802a720:	f380 8811 	msr	BASEPRI, r0 802a724:	4770      	bx	lr 802a726:	0000      	movs	r0, r00802a728 <vPortExitCritical>:	}}/*-----------------------------------------------------------*/void vPortExitCritical( void ){ 802a728:	b508      	push	{r3, lr}	configASSERT( uxCriticalNesting ); 802a72a:	4b07      	ldr	r3, [pc, #28]	; (802a748 <vPortExitCritical+0x20>) 802a72c:	6818      	ldr	r0, [r3, #0] 802a72e:	b910      	cbnz	r0, 802a736 <vPortExitCritical+0xe> 802a730:	f7ff ffc6 	bl	802a6c0 <ulPortSetInterruptMask> 802a734:	e7fe      	b.n	802a734 <vPortExitCritical+0xc>	uxCriticalNesting--; 802a736:	3801      	subs	r0, #1 802a738:	6018      	str	r0, [r3, #0]	if( uxCriticalNesting == 0 ) 802a73a:	b918      	cbnz	r0, 802a744 <vPortExitCritical+0x1c>	{		portENABLE_INTERRUPTS();	}} 802a73c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}{	configASSERT( uxCriticalNesting );	uxCriticalNesting--;	if( uxCriticalNesting == 0 )	{		portENABLE_INTERRUPTS(); 802a740:	f7ff bfee 	b.w	802a720 <vPortClearInterruptMask> 802a744:	bd08      	pop	{r3, pc} 802a746:	bf00      	nop 802a748:	200015e0 	.word	0x200015e00802a74c <PendSV_Handler>:void xPortPendSVHandler( void ){	/* This is a naked function. */	__asm volatile 802a74c:	f3ef 8009 	mrs	r0, PSP 802a750:	f3bf 8f6f 	isb	sy 802a754:	4b0d      	ldr	r3, [pc, #52]	; (802a78c <pxCurrentTCBConst>) 802a756:	681a      	ldr	r2, [r3, #0] 802a758:	e920 0ff0 	stmdb	r0!, {r4, r5, r6, r7, r8, r9, sl, fp} 802a75c:	6010      	str	r0, [r2, #0] 802a75e:	e92d 4008 	stmdb	sp!, {r3, lr} 802a762:	f04f 0050 	mov.w	r0, #80	; 0x50 802a766:	f380 8811 	msr	BASEPRI, r0 802a76a:	f7ff fc19 	bl	8029fa0 <vTaskSwitchContext> 802a76e:	f04f 0000 	mov.w	r0, #0 802a772:	f380 8811 	msr	BASEPRI, r0 802a776:	e8bd 4008 	ldmia.w	sp!, {r3, lr} 802a77a:	6819      	ldr	r1, [r3, #0] 802a77c:	6808      	ldr	r0, [r1, #0] 802a77e:	e8b0 0ff0 	ldmia.w	r0!, {r4, r5, r6, r7, r8, r9, sl, fp} 802a782:	f380 8809 	msr	PSP, r0 802a786:	f3bf 8f6f 	isb	sy 802a78a:	4770      	bx	lr0802a78c <pxCurrentTCBConst>: 802a78c:	20002a38 	.word	0x20002a380802a790 <SysTick_Handler>:	);}/*-----------------------------------------------------------*/void xPortSysTickHandler( void ){ 802a790:	b508      	push	{r3, lr}	/* The SysTick runs at the lowest interrupt priority, so when this interrupt	executes all interrupts must be unmasked.  There is therefore no need to	save and then restore the interrupt mask value as its value is already	known. */	( void ) portSET_INTERRUPT_MASK_FROM_ISR(); 802a792:	f7ff ff95 	bl	802a6c0 <ulPortSetInterruptMask>	{		/* Increment the RTOS tick. */		if( xTaskIncrementTick() != pdFALSE ) 802a796:	f7ff fa59 	bl	8029c4c <xTaskIncrementTick> 802a79a:	b118      	cbz	r0, 802a7a4 <SysTick_Handler+0x14>		{			/* A context switch is required.  Context switching is performed in			the PendSV interrupt.  Pend the PendSV interrupt. */			portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; 802a79c:	4b04      	ldr	r3, [pc, #16]	; (802a7b0 <SysTick_Handler+0x20>) 802a79e:	f04f 5280 	mov.w	r2, #268435456	; 0x10000000 802a7a2:	601a      	str	r2, [r3, #0]		}	}	portCLEAR_INTERRUPT_MASK_FROM_ISR( 0 ); 802a7a4:	2000      	movs	r0, #0} 802a7a6:	e8bd 4008 	ldmia.w	sp!, {r3, lr}			/* A context switch is required.  Context switching is performed in			the PendSV interrupt.  Pend the PendSV interrupt. */			portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;		}	}	portCLEAR_INTERRUPT_MASK_FROM_ISR( 0 ); 802a7aa:	f7ff bfb9 	b.w	802a720 <vPortClearInterruptMask> 802a7ae:	bf00      	nop 802a7b0:	e000ed04 	.word	0xe000ed040802a7b4 <vPortSetupTimerInterrupt>:		ulStoppedTimerCompensation = portMISSED_COUNTS_FACTOR / ( configCPU_CLOCK_HZ / configSYSTICK_CLOCK_HZ );	}	#endif /* configUSE_TICKLESS_IDLE */	/* Configure SysTick to interrupt at the requested rate. */	portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; 802a7b4:	4b06      	ldr	r3, [pc, #24]	; (802a7d0 <vPortSetupTimerInterrupt+0x1c>) 802a7b6:	681a      	ldr	r2, [r3, #0] 802a7b8:	f44f 737a 	mov.w	r3, #1000	; 0x3e8 802a7bc:	fbb2 f2f3 	udiv	r2, r2, r3 802a7c0:	4b04      	ldr	r3, [pc, #16]	; (802a7d4 <vPortSetupTimerInterrupt+0x20>) 802a7c2:	3a01      	subs	r2, #1 802a7c4:	601a      	str	r2, [r3, #0]	portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT ); 802a7c6:	2207      	movs	r2, #7 802a7c8:	f843 2c04 	str.w	r2, [r3, #-4] 802a7cc:	4770      	bx	lr 802a7ce:	bf00      	nop 802a7d0:	200005bc 	.word	0x200005bc 802a7d4:	e000e014 	.word	0xe000e0140802a7d8 <xPortStartScheduler>:/* * See header file for description. */BaseType_t xPortStartScheduler( void ){ 802a7d8:	b507      	push	{r0, r1, r2, lr}		functions can be called.  ISR safe functions are those that end in		"FromISR".  FreeRTOS maintains separate thread and ISR API functions to		ensure interrupt entry is as fast and simple as possible.		Save the interrupt priority value that is about to be clobbered. */		ulOriginalPriority = *pucFirstUserPriorityRegister; 802a7da:	4b1d      	ldr	r3, [pc, #116]	; (802a850 <xPortStartScheduler+0x78>) 802a7dc:	781a      	ldrb	r2, [r3, #0] 802a7de:	9201      	str	r2, [sp, #4]		/* Determine the number of priority bits available.  First write to all		possible bits. */		*pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE; 802a7e0:	22ff      	movs	r2, #255	; 0xff 802a7e2:	701a      	strb	r2, [r3, #0]		/* Read the value back to see how many bits stuck. */		ucMaxPriorityValue = *pucFirstUserPriorityRegister; 802a7e4:	781b      	ldrb	r3, [r3, #0] 802a7e6:	f88d 3003 	strb.w	r3, [sp, #3]		/* Use the same mask on the maximum system call priority. */		ucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue; 802a7ea:	f89d 2003 	ldrb.w	r2, [sp, #3] 802a7ee:	4b19      	ldr	r3, [pc, #100]	; (802a854 <xPortStartScheduler+0x7c>) 802a7f0:	f002 0250 	and.w	r2, r2, #80	; 0x50 802a7f4:	701a      	strb	r2, [r3, #0]		/* Calculate the maximum acceptable priority group value for the number		of bits read back. */		ulMaxPRIGROUPValue = portMAX_PRIGROUP_BITS; 802a7f6:	4a18      	ldr	r2, [pc, #96]	; (802a858 <xPortStartScheduler+0x80>) 802a7f8:	2307      	movs	r3, #7 802a7fa:	6013      	str	r3, [r2, #0]		while( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE ) 802a7fc:	e005      	b.n	802a80a <xPortStartScheduler+0x32>		{			ulMaxPRIGROUPValue--;			ucMaxPriorityValue <<= ( uint8_t ) 0x01; 802a7fe:	f89d 3003 	ldrb.w	r3, [sp, #3] 802a802:	005b      	lsls	r3, r3, #1 802a804:	f88d 3003 	strb.w	r3, [sp, #3] 802a808:	460b      	mov	r3, r1		ucMaxSysCallPriority = configMAX_SYSCALL_INTERRUPT_PRIORITY & ucMaxPriorityValue;		/* Calculate the maximum acceptable priority group value for the number		of bits read back. */		ulMaxPRIGROUPValue = portMAX_PRIGROUP_BITS;		while( ( ucMaxPriorityValue & portTOP_BIT_OF_BYTE ) == portTOP_BIT_OF_BYTE ) 802a80a:	f89d 2003 	ldrb.w	r2, [sp, #3] 802a80e:	1e59      	subs	r1, r3, #1 802a810:	0612      	lsls	r2, r2, #24 802a812:	d4f4      	bmi.n	802a7fe <xPortStartScheduler+0x26>		}		/* Shift the priority group value back to its position within the AIRCR		register. */		ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT;		ulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK; 802a814:	4a10      	ldr	r2, [pc, #64]	; (802a858 <xPortStartScheduler+0x80>)			ucMaxPriorityValue <<= ( uint8_t ) 0x01;		}		/* Shift the priority group value back to its position within the AIRCR		register. */		ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT; 802a816:	021b      	lsls	r3, r3, #8		ulMaxPRIGROUPValue &= portPRIORITY_GROUP_MASK; 802a818:	f403 63e0 	and.w	r3, r3, #1792	; 0x700 802a81c:	6013      	str	r3, [r2, #0]		/* Restore the clobbered interrupt priority register to its original		value. */		*pucFirstUserPriorityRegister = ulOriginalPriority; 802a81e:	4b0c      	ldr	r3, [pc, #48]	; (802a850 <xPortStartScheduler+0x78>) 802a820:	9a01      	ldr	r2, [sp, #4] 802a822:	701a      	strb	r2, [r3, #0]	}	#endif /* conifgASSERT_DEFINED */	/* Make PendSV and SysTick the lowest priority interrupts. */	portNVIC_SYSPRI2_REG |= portNVIC_PENDSV_PRI; 802a824:	f8d3 2920 	ldr.w	r2, [r3, #2336]	; 0x920 802a828:	f442 0270 	orr.w	r2, r2, #15728640	; 0xf00000 802a82c:	f8c3 2920 	str.w	r2, [r3, #2336]	; 0x920	portNVIC_SYSPRI2_REG |= portNVIC_SYSTICK_PRI; 802a830:	f8d3 2920 	ldr.w	r2, [r3, #2336]	; 0x920 802a834:	f042 4270 	orr.w	r2, r2, #4026531840	; 0xf0000000 802a838:	f8c3 2920 	str.w	r2, [r3, #2336]	; 0x920	/* Start the timer that generates the tick ISR.  Interrupts are disabled	here already. */	vPortSetupTimerInterrupt(); 802a83c:	f7ff ffba 	bl	802a7b4 <vPortSetupTimerInterrupt>	/* Initialise the critical nesting count ready for the first task. */	uxCriticalNesting = 0; 802a840:	4b06      	ldr	r3, [pc, #24]	; (802a85c <xPortStartScheduler+0x84>) 802a842:	2200      	movs	r2, #0 802a844:	601a      	str	r2, [r3, #0]	/* Start the first task. */	prvPortStartFirstTask(); 802a846:	f7ff feff 	bl	802a648 <prvPortStartFirstTask>	/* Should never get here as the tasks will now be executing!  Call the task	exit error function to prevent compiler warnings about a static function	not being called in the case that the application writer overrides this	functionality by defining configTASK_RETURN_ADDRESS. */	prvTaskExitError(); 802a84a:	f7ff ff5b 	bl	802a704 <prvTaskExitError> 802a84e:	bf00      	nop 802a850:	e000e400 	.word	0xe000e400 802a854:	20002ab8 	.word	0x20002ab8 802a858:	20002abc 	.word	0x20002abc 802a85c:	200015e0 	.word	0x200015e00802a860 <vPortValidateInterruptPriority>:/*-----------------------------------------------------------*/#if( configASSERT_DEFINED == 1 )	void vPortValidateInterruptPriority( void )	{ 802a860:	b508      	push	{r3, lr}	uint32_t ulCurrentInterrupt;	uint8_t ucCurrentPriority;		/* Obtain the number of the currently executing interrupt. */		__asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) ); 802a862:	f3ef 8305 	mrs	r3, IPSR		/* Is the interrupt number a user defined interrupt? */		if( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER ) 802a866:	2b0f      	cmp	r3, #15 802a868:	d908      	bls.n	802a87c <vPortValidateInterruptPriority+0x1c>		{			/* Look up the interrupt's priority. */			ucCurrentPriority = pcInterruptPriorityRegisters[ ulCurrentInterrupt ]; 802a86a:	4a0a      	ldr	r2, [pc, #40]	; (802a894 <vPortValidateInterruptPriority+0x34>) 802a86c:	5c9b      	ldrb	r3, [r3, r2]			interrupt entry is as fast and simple as possible.			The following links provide detailed information:			http://www.freertos.org/RTOS-Cortex-M3-M4.html			http://www.freertos.org/FAQHelp.html */			configASSERT( ucCurrentPriority >= ucMaxSysCallPriority ); 802a86e:	4a0a      	ldr	r2, [pc, #40]	; (802a898 <vPortValidateInterruptPriority+0x38>) 802a870:	7812      	ldrb	r2, [r2, #0] 802a872:	429a      	cmp	r2, r3 802a874:	d902      	bls.n	802a87c <vPortValidateInterruptPriority+0x1c> 802a876:	f7ff ff23 	bl	802a6c0 <ulPortSetInterruptMask> 802a87a:	e7fe      	b.n	802a87a <vPortValidateInterruptPriority+0x1a>		configuration then the correct setting can be achieved on all Cortex-M		devices by calling NVIC_SetPriorityGrouping( 0 ); before starting the		scheduler.  Note however that some vendor specific peripheral libraries		assume a non-zero priority group setting, in which cases using a value		of zero will result in unpredicable behaviour. */		configASSERT( ( portAIRCR_REG & portPRIORITY_GROUP_MASK ) <= ulMaxPRIGROUPValue ); 802a87c:	4b07      	ldr	r3, [pc, #28]	; (802a89c <vPortValidateInterruptPriority+0x3c>) 802a87e:	681a      	ldr	r2, [r3, #0] 802a880:	4b07      	ldr	r3, [pc, #28]	; (802a8a0 <vPortValidateInterruptPriority+0x40>) 802a882:	681b      	ldr	r3, [r3, #0] 802a884:	f402 62e0 	and.w	r2, r2, #1792	; 0x700 802a888:	429a      	cmp	r2, r3 802a88a:	d902      	bls.n	802a892 <vPortValidateInterruptPriority+0x32> 802a88c:	f7ff ff18 	bl	802a6c0 <ulPortSetInterruptMask> 802a890:	e7fe      	b.n	802a890 <vPortValidateInterruptPriority+0x30> 802a892:	bd08      	pop	{r3, pc} 802a894:	e000e3f0 	.word	0xe000e3f0 802a898:	20002ab8 	.word	0x20002ab8 802a89c:	e000ed0c 	.word	0xe000ed0c 802a8a0:	20002abc 	.word	0x20002abc0802a8a4 <prvInsertBlockIntoFreeList>:	xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 );}/*-----------------------------------------------------------*/static void prvInsertBlockIntoFreeList( BlockLink_t *pxBlockToInsert ){ 802a8a4:	b510      	push	{r4, lr}BlockLink_t *pxIterator;uint8_t *puc;	/* Iterate through the list until a block is found that has a higher address	than the block being inserted. */	for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock ) 802a8a6:	4b0f      	ldr	r3, [pc, #60]	; (802a8e4 <prvInsertBlockIntoFreeList+0x40>) 802a8a8:	e000      	b.n	802a8ac <prvInsertBlockIntoFreeList+0x8> 802a8aa:	4613      	mov	r3, r2 802a8ac:	681a      	ldr	r2, [r3, #0] 802a8ae:	4282      	cmp	r2, r0 802a8b0:	d3fb      	bcc.n	802a8aa <prvInsertBlockIntoFreeList+0x6>	}	/* Do the block being inserted, and the block it is being inserted after	make a contiguous block of memory? */	puc = ( uint8_t * ) pxIterator;	if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert ) 802a8b2:	6859      	ldr	r1, [r3, #4] 802a8b4:	185c      	adds	r4, r3, r1 802a8b6:	4284      	cmp	r4, r0 802a8b8:	d103      	bne.n	802a8c2 <prvInsertBlockIntoFreeList+0x1e>	{		pxIterator->xBlockSize += pxBlockToInsert->xBlockSize; 802a8ba:	6840      	ldr	r0, [r0, #4] 802a8bc:	1841      	adds	r1, r0, r1 802a8be:	6059      	str	r1, [r3, #4] 802a8c0:	4618      	mov	r0, r3	}	/* Do the block being inserted, and the block it is being inserted before	make a contiguous block of memory? */	puc = ( uint8_t * ) pxBlockToInsert;	if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock ) 802a8c2:	6841      	ldr	r1, [r0, #4] 802a8c4:	1844      	adds	r4, r0, r1 802a8c6:	4294      	cmp	r4, r2 802a8c8:	d106      	bne.n	802a8d8 <prvInsertBlockIntoFreeList+0x34>	{		if( pxIterator->pxNextFreeBlock != pxEnd ) 802a8ca:	4c07      	ldr	r4, [pc, #28]	; (802a8e8 <prvInsertBlockIntoFreeList+0x44>) 802a8cc:	6824      	ldr	r4, [r4, #0] 802a8ce:	42a2      	cmp	r2, r4 802a8d0:	d002      	beq.n	802a8d8 <prvInsertBlockIntoFreeList+0x34>		{			/* Form one big block from the two blocks. */			pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize;			pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock; 802a8d2:	ca14      	ldmia	r2, {r2, r4}	if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock )	{		if( pxIterator->pxNextFreeBlock != pxEnd )		{			/* Form one big block from the two blocks. */			pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize; 802a8d4:	1861      	adds	r1, r4, r1 802a8d6:	6041      	str	r1, [r0, #4]	/* If the block being inserted plugged a gab, so was merged with the block	before and the block after, then it's pxNextFreeBlock pointer will have	already been set, and should not be set here as that would make it point	to itself. */	if( pxIterator != pxBlockToInsert ) 802a8d8:	4283      	cmp	r3, r0			pxBlockToInsert->pxNextFreeBlock = pxEnd;		}	}	else	{		pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; 802a8da:	6002      	str	r2, [r0, #0]	before and the block after, then it's pxNextFreeBlock pointer will have	already been set, and should not be set here as that would make it point	to itself. */	if( pxIterator != pxBlockToInsert )	{		pxIterator->pxNextFreeBlock = pxBlockToInsert; 802a8dc:	bf18      	it	ne 802a8de:	6018      	strne	r0, [r3, #0] 802a8e0:	bd10      	pop	{r4, pc} 802a8e2:	bf00      	nop 802a8e4:	20002ac8 	.word	0x20002ac8 802a8e8:	20002ac4 	.word	0x20002ac40802a8ec <pvPortMalloc>:static size_t xBlockAllocatedBit = 0;/*-----------------------------------------------------------*/void *pvPortMalloc( size_t xWantedSize ){ 802a8ec:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 802a8ee:	4605      	mov	r5, r0BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink;void *pvReturn = NULL;	vTaskSuspendAll(); 802a8f0:	f7ff f99e 	bl	8029c30 <vTaskSuspendAll>	{		/* If this is the first call to malloc then the heap will require		initialisation to setup the list of free blocks. */		if( pxEnd == NULL ) 802a8f4:	4b3a      	ldr	r3, [pc, #232]	; (802a9e0 <pvPortMalloc+0xf4>) 802a8f6:	681b      	ldr	r3, [r3, #0] 802a8f8:	bb1b      	cbnz	r3, 802a942 <pvPortMalloc+0x56>uint8_t *pucAlignedHeap;uint32_t ulAddress;size_t xTotalHeapSize = configTOTAL_HEAP_SIZE;	/* Ensure the heap starts on a correctly aligned boundary. */	ulAddress = ( uint32_t ) ucHeap; 802a8fa:	4a3a      	ldr	r2, [pc, #232]	; (802a9e4 <pvPortMalloc+0xf8>)	if( ( ulAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) 802a8fc:	0756      	lsls	r6, r2, #29 802a8fe:	d007      	beq.n	802a910 <pvPortMalloc+0x24>	{		ulAddress += ( portBYTE_ALIGNMENT - 1 ); 802a900:	1dd3      	adds	r3, r2, #7		ulAddress &= ~portBYTE_ALIGNMENT_MASK; 802a902:	f023 0307 	bic.w	r3, r3, #7		xTotalHeapSize -= ulAddress - ( uint32_t ) ucHeap; 802a906:	f502 4270 	add.w	r2, r2, #61440	; 0xf000 802a90a:	1ad1      	subs	r1, r2, r3	ulAddress = ( uint32_t ) ucHeap;	if( ( ulAddress & portBYTE_ALIGNMENT_MASK ) != 0 )	{		ulAddress += ( portBYTE_ALIGNMENT - 1 );		ulAddress &= ~portBYTE_ALIGNMENT_MASK; 802a90c:	461a      	mov	r2, r3 802a90e:	e001      	b.n	802a914 <pvPortMalloc+0x28>static void prvHeapInit( void ){BlockLink_t *pxFirstFreeBlock;uint8_t *pucAlignedHeap;uint32_t ulAddress;size_t xTotalHeapSize = configTOTAL_HEAP_SIZE; 802a910:	f44f 4170 	mov.w	r1, #61440	; 0xf000	xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap;	xStart.xBlockSize = ( size_t ) 0;	/* pxEnd is used to mark the end of the list of free blocks and is inserted	at the end of the heap space. */	ulAddress = ( ( uint32_t ) pucAlignedHeap ) + xTotalHeapSize; 802a914:	1851      	adds	r1, r2, r1	ulAddress -= xHeapStructSize; 802a916:	3908      	subs	r1, #8	ulAddress &= ~portBYTE_ALIGNMENT_MASK; 802a918:	f021 0107 	bic.w	r1, r1, #7	pucAlignedHeap = ( uint8_t * ) ulAddress;	/* xStart is used to hold a pointer to the first item in the list of free	blocks.  The void cast is used to prevent compiler warnings. */	xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap; 802a91c:	4832      	ldr	r0, [pc, #200]	; (802a9e8 <pvPortMalloc+0xfc>)	xStart.xBlockSize = ( size_t ) 0; 802a91e:	2300      	movs	r3, #0 802a920:	e880 000c 	stmia.w	r0, {r2, r3}	ulAddress = ( ( uint32_t ) pucAlignedHeap ) + xTotalHeapSize;	ulAddress -= xHeapStructSize;	ulAddress &= ~portBYTE_ALIGNMENT_MASK;	pxEnd = ( void * ) ulAddress;	pxEnd->xBlockSize = 0;	pxEnd->pxNextFreeBlock = NULL; 802a924:	600b      	str	r3, [r1, #0]	at the end of the heap space. */	ulAddress = ( ( uint32_t ) pucAlignedHeap ) + xTotalHeapSize;	ulAddress -= xHeapStructSize;	ulAddress &= ~portBYTE_ALIGNMENT_MASK;	pxEnd = ( void * ) ulAddress;	pxEnd->xBlockSize = 0; 802a926:	604b      	str	r3, [r1, #4]	pxEnd->pxNextFreeBlock = NULL;	/* To start with there is a single free block that is sized to take up the	entire heap space, minus the space taken by pxEnd. */	pxFirstFreeBlock = ( void * ) pucAlignedHeap;	pxFirstFreeBlock->xBlockSize = ulAddress - ( uint32_t ) pxFirstFreeBlock; 802a928:	1a8b      	subs	r3, r1, r2	pxFirstFreeBlock->pxNextFreeBlock = pxEnd; 802a92a:	e882 000a 	stmia.w	r2, {r1, r3}	/* Only one block exists - and it covers the entire usable heap space. */	xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; 802a92e:	4a2f      	ldr	r2, [pc, #188]	; (802a9ec <pvPortMalloc+0x100>)	/* pxEnd is used to mark the end of the list of free blocks and is inserted	at the end of the heap space. */	ulAddress = ( ( uint32_t ) pucAlignedHeap ) + xTotalHeapSize;	ulAddress -= xHeapStructSize;	ulAddress &= ~portBYTE_ALIGNMENT_MASK;	pxEnd = ( void * ) ulAddress; 802a930:	482b      	ldr	r0, [pc, #172]	; (802a9e0 <pvPortMalloc+0xf4>)	pxFirstFreeBlock = ( void * ) pucAlignedHeap;	pxFirstFreeBlock->xBlockSize = ulAddress - ( uint32_t ) pxFirstFreeBlock;	pxFirstFreeBlock->pxNextFreeBlock = pxEnd;	/* Only one block exists - and it covers the entire usable heap space. */	xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; 802a932:	6013      	str	r3, [r2, #0]	xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; 802a934:	4a2e      	ldr	r2, [pc, #184]	; (802a9f0 <pvPortMalloc+0x104>)	/* pxEnd is used to mark the end of the list of free blocks and is inserted	at the end of the heap space. */	ulAddress = ( ( uint32_t ) pucAlignedHeap ) + xTotalHeapSize;	ulAddress -= xHeapStructSize;	ulAddress &= ~portBYTE_ALIGNMENT_MASK;	pxEnd = ( void * ) ulAddress; 802a936:	6001      	str	r1, [r0, #0]	pxFirstFreeBlock->xBlockSize = ulAddress - ( uint32_t ) pxFirstFreeBlock;	pxFirstFreeBlock->pxNextFreeBlock = pxEnd;	/* Only one block exists - and it covers the entire usable heap space. */	xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize;	xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize; 802a938:	6013      	str	r3, [r2, #0]	/* Work out the position of the top bit in a size_t variable. */	xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 ); 802a93a:	4b2e      	ldr	r3, [pc, #184]	; (802a9f4 <pvPortMalloc+0x108>) 802a93c:	f04f 4200 	mov.w	r2, #2147483648	; 0x80000000 802a940:	601a      	str	r2, [r3, #0]		/* Check the requested block size is not so large that the top bit is		set.  The top bit of the block size member of the BlockLink_t structure		is used to determine who owns the block - the application or the		kernel, so it must be free. */		if( ( xWantedSize & xBlockAllocatedBit ) == 0 ) 802a942:	4b2c      	ldr	r3, [pc, #176]	; (802a9f4 <pvPortMalloc+0x108>) 802a944:	681e      	ldr	r6, [r3, #0] 802a946:	4235      	tst	r5, r6 802a948:	d140      	bne.n	802a9cc <pvPortMalloc+0xe0>		{			/* The wanted size is increased so it can contain a BlockLink_t			structure in addition to the requested amount of bytes. */			if( xWantedSize > 0 ) 802a94a:	2d00      	cmp	r5, #0 802a94c:	d03f      	beq.n	802a9ce <pvPortMalloc+0xe2>			{				xWantedSize += xHeapStructSize; 802a94e:	f105 0308 	add.w	r3, r5, #8				/* Ensure that blocks are always aligned to the required number				of bytes. */				if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 ) 802a952:	0758      	lsls	r0, r3, #29				{					/* Byte alignment required. */					xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ); 802a954:	bf1c      	itt	ne 802a956:	f023 0307 	bicne.w	r3, r3, #7 802a95a:	3308      	addne	r3, #8			else			{				mtCOVERAGE_TEST_MARKER();			}			if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) ) 802a95c:	2b00      	cmp	r3, #0 802a95e:	d033      	beq.n	802a9c8 <pvPortMalloc+0xdc> 802a960:	4a23      	ldr	r2, [pc, #140]	; (802a9f0 <pvPortMalloc+0x104>) 802a962:	6817      	ldr	r7, [r2, #0] 802a964:	42bb      	cmp	r3, r7 802a966:	d831      	bhi.n	802a9cc <pvPortMalloc+0xe0>			{				/* Traverse the list from the start	(lowest address) block until				one	of adequate size is found. */				pxPreviousBlock = &xStart;				pxBlock = xStart.pxNextFreeBlock; 802a968:	4a1f      	ldr	r2, [pc, #124]	; (802a9e8 <pvPortMalloc+0xfc>) 802a96a:	6814      	ldr	r4, [r2, #0]				while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) 802a96c:	e001      	b.n	802a972 <pvPortMalloc+0x86> 802a96e:	4622      	mov	r2, r4				{					pxPreviousBlock = pxBlock;					pxBlock = pxBlock->pxNextFreeBlock; 802a970:	4604      	mov	r4, r0			{				/* Traverse the list from the start	(lowest address) block until				one	of adequate size is found. */				pxPreviousBlock = &xStart;				pxBlock = xStart.pxNextFreeBlock;				while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) 802a972:	6861      	ldr	r1, [r4, #4] 802a974:	4299      	cmp	r1, r3 802a976:	d304      	bcc.n	802a982 <pvPortMalloc+0x96>					pxBlock = pxBlock->pxNextFreeBlock;				}				/* If the end marker was reached then a block of adequate size				was	not found. */				if( pxBlock != pxEnd ) 802a978:	4819      	ldr	r0, [pc, #100]	; (802a9e0 <pvPortMalloc+0xf4>) 802a97a:	6800      	ldr	r0, [r0, #0] 802a97c:	4284      	cmp	r4, r0 802a97e:	d104      	bne.n	802a98a <pvPortMalloc+0x9e> 802a980:	e024      	b.n	802a9cc <pvPortMalloc+0xe0>			{				/* Traverse the list from the start	(lowest address) block until				one	of adequate size is found. */				pxPreviousBlock = &xStart;				pxBlock = xStart.pxNextFreeBlock;				while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) ) 802a982:	6820      	ldr	r0, [r4, #0] 802a984:	2800      	cmp	r0, #0 802a986:	d1f2      	bne.n	802a96e <pvPortMalloc+0x82> 802a988:	e7f6      	b.n	802a978 <pvPortMalloc+0x8c>					BlockLink_t structure at its start. */					pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize );					/* This block is being returned for use so must be taken out					of the list of free blocks. */					pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; 802a98a:	6820      	ldr	r0, [r4, #0]				was	not found. */				if( pxBlock != pxEnd )				{					/* Return the memory space pointed to - jumping over the					BlockLink_t structure at its start. */					pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); 802a98c:	6815      	ldr	r5, [r2, #0]					/* This block is being returned for use so must be taken out					of the list of free blocks. */					pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; 802a98e:	6010      	str	r0, [r2, #0]					/* If the block is larger than required it can be split into					two. */					if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) 802a990:	1aca      	subs	r2, r1, r3				was	not found. */				if( pxBlock != pxEnd )				{					/* Return the memory space pointed to - jumping over the					BlockLink_t structure at its start. */					pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize ); 802a992:	3508      	adds	r5, #8					of the list of free blocks. */					pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;					/* If the block is larger than required it can be split into					two. */					if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) 802a994:	2a10      	cmp	r2, #16 802a996:	d909      	bls.n	802a9ac <pvPortMalloc+0xc0>					{						/* This block is to be split into two.  Create a new						block following the number of bytes requested. The void						cast is used to prevent byte alignment warnings from the						compiler. */						pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize ); 802a998:	18e0      	adds	r0, r4, r3						configASSERT( ( ( ( uint32_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 ); 802a99a:	0741      	lsls	r1, r0, #29 802a99c:	d002      	beq.n	802a9a4 <pvPortMalloc+0xb8> 802a99e:	f7ff fe8f 	bl	802a6c0 <ulPortSetInterruptMask> 802a9a2:	e7fe      	b.n	802a9a2 <pvPortMalloc+0xb6>						/* Calculate the sizes of two blocks split from the						single block. */						pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; 802a9a4:	6042      	str	r2, [r0, #4]						pxBlock->xBlockSize = xWantedSize; 802a9a6:	6063      	str	r3, [r4, #4]						/* Insert the new block into the list of free blocks. */						prvInsertBlockIntoFreeList( ( pxNewBlockLink ) ); 802a9a8:	f7ff ff7c 	bl	802a8a4 <prvInsertBlockIntoFreeList>					else					{						mtCOVERAGE_TEST_MARKER();					}					xFreeBytesRemaining -= pxBlock->xBlockSize; 802a9ac:	6862      	ldr	r2, [r4, #4] 802a9ae:	4910      	ldr	r1, [pc, #64]	; (802a9f0 <pvPortMalloc+0x104>) 802a9b0:	1abb      	subs	r3, r7, r2 802a9b2:	600b      	str	r3, [r1, #0]					if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining ) 802a9b4:	490d      	ldr	r1, [pc, #52]	; (802a9ec <pvPortMalloc+0x100>) 802a9b6:	6808      	ldr	r0, [r1, #0] 802a9b8:	4283      	cmp	r3, r0					{						xMinimumEverFreeBytesRemaining = xFreeBytesRemaining; 802a9ba:	bf38      	it	cc 802a9bc:	600b      	strcc	r3, [r1, #0]						mtCOVERAGE_TEST_MARKER();					}					/* The block is being returned - it is allocated and owned					by the application and has no "next" block. */					pxBlock->xBlockSize |= xBlockAllocatedBit; 802a9be:	4316      	orrs	r6, r2					pxBlock->pxNextFreeBlock = NULL; 802a9c0:	2300      	movs	r3, #0 802a9c2:	e884 0048 	stmia.w	r4, {r3, r6} 802a9c6:	e002      	b.n	802a9ce <pvPortMalloc+0xe2>/*-----------------------------------------------------------*/void *pvPortMalloc( size_t xWantedSize ){BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink;void *pvReturn = NULL; 802a9c8:	461d      	mov	r5, r3 802a9ca:	e000      	b.n	802a9ce <pvPortMalloc+0xe2> 802a9cc:	2500      	movs	r5, #0			mtCOVERAGE_TEST_MARKER();		}		traceMALLOC( pvReturn, xWantedSize );	}	( void ) xTaskResumeAll(); 802a9ce:	f7ff f9cb 	bl	8029d68 <xTaskResumeAll>			mtCOVERAGE_TEST_MARKER();		}	}	#endif	configASSERT( ( ( ( uint32_t ) pvReturn ) & portBYTE_ALIGNMENT_MASK ) == 0 ); 802a9d2:	076b      	lsls	r3, r5, #29 802a9d4:	d002      	beq.n	802a9dc <pvPortMalloc+0xf0> 802a9d6:	f7ff fe73 	bl	802a6c0 <ulPortSetInterruptMask> 802a9da:	e7fe      	b.n	802a9da <pvPortMalloc+0xee>	return pvReturn;} 802a9dc:	4628      	mov	r0, r5 802a9de:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802a9e0:	20002ac4 	.word	0x20002ac4 802a9e4:	10000000 	.word	0x10000000 802a9e8:	20002ac8 	.word	0x20002ac8 802a9ec:	20002ad0 	.word	0x20002ad0 802a9f0:	20002ac0 	.word	0x20002ac0 802a9f4:	20002ad4 	.word	0x20002ad40802a9f8 <vPortFree>:/*-----------------------------------------------------------*/void vPortFree( void *pv ){ 802a9f8:	b510      	push	{r4, lr}uint8_t *puc = ( uint8_t * ) pv;BlockLink_t *pxLink;	if( pv != NULL ) 802a9fa:	4604      	mov	r4, r0 802a9fc:	b310      	cbz	r0, 802aa44 <vPortFree+0x4c>		/* This casting is to keep the compiler from issuing warnings. */		pxLink = ( void * ) puc;		/* Check the block is actually allocated. */		configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 ); 802a9fe:	4a12      	ldr	r2, [pc, #72]	; (802aa48 <vPortFree+0x50>) 802aa00:	f850 3c04 	ldr.w	r3, [r0, #-4] 802aa04:	6812      	ldr	r2, [r2, #0] 802aa06:	421a      	tst	r2, r3 802aa08:	d102      	bne.n	802aa10 <vPortFree+0x18> 802aa0a:	f7ff fe59 	bl	802a6c0 <ulPortSetInterruptMask> 802aa0e:	e7fe      	b.n	802aa0e <vPortFree+0x16>		configASSERT( pxLink->pxNextFreeBlock == NULL ); 802aa10:	f850 1c08 	ldr.w	r1, [r0, #-8] 802aa14:	b111      	cbz	r1, 802aa1c <vPortFree+0x24> 802aa16:	f7ff fe53 	bl	802a6c0 <ulPortSetInterruptMask> 802aa1a:	e7fe      	b.n	802aa1a <vPortFree+0x22>		{			if( pxLink->pxNextFreeBlock == NULL )			{				/* The block is being returned to the heap - it is no longer				allocated. */				pxLink->xBlockSize &= ~xBlockAllocatedBit; 802aa1c:	ea23 0302 	bic.w	r3, r3, r2 802aa20:	f840 3c04 	str.w	r3, [r0, #-4]				vTaskSuspendAll(); 802aa24:	f7ff f904 	bl	8029c30 <vTaskSuspendAll>				{					/* Add this block to the list of free blocks. */					xFreeBytesRemaining += pxLink->xBlockSize; 802aa28:	4b08      	ldr	r3, [pc, #32]	; (802aa4c <vPortFree+0x54>) 802aa2a:	f854 1c04 	ldr.w	r1, [r4, #-4] 802aa2e:	681a      	ldr	r2, [r3, #0]					traceFREE( pv, pxLink->xBlockSize );					prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); 802aa30:	f1a4 0008 	sub.w	r0, r4, #8				pxLink->xBlockSize &= ~xBlockAllocatedBit;				vTaskSuspendAll();				{					/* Add this block to the list of free blocks. */					xFreeBytesRemaining += pxLink->xBlockSize; 802aa34:	188a      	adds	r2, r1, r2 802aa36:	601a      	str	r2, [r3, #0]					traceFREE( pv, pxLink->xBlockSize );					prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) ); 802aa38:	f7ff ff34 	bl	802a8a4 <prvInsertBlockIntoFreeList>		else		{			mtCOVERAGE_TEST_MARKER();		}	}} 802aa3c:	e8bd 4010 	ldmia.w	sp!, {r4, lr}					/* Add this block to the list of free blocks. */					xFreeBytesRemaining += pxLink->xBlockSize;					traceFREE( pv, pxLink->xBlockSize );					prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) );				}				( void ) xTaskResumeAll(); 802aa40:	f7ff b992 	b.w	8029d68 <xTaskResumeAll> 802aa44:	bd10      	pop	{r4, pc} 802aa46:	bf00      	nop 802aa48:	20002ad4 	.word	0x20002ad4 802aa4c:	20002ac0 	.word	0x20002ac00802aa50 <HTTP_UpdateUserLoginTime>:/**  * @brief Обновление времени последней активности пользователя  */static void HTTP_UpdateUserLoginTime(uint8_t user_id){    xTimerStart(users[user_id].LogoutTimer, 0); 802aa50:	4b07      	ldr	r3, [pc, #28]	; (802aa70 <HTTP_UpdateUserLoginTime+0x20>) 802aa52:	2214      	movs	r2, #20/**  * @brief Обновление времени последней активности пользователя  */static void HTTP_UpdateUserLoginTime(uint8_t user_id){ 802aa54:	b513      	push	{r0, r1, r4, lr}    xTimerStart(users[user_id].LogoutTimer, 0); 802aa56:	fb02 3000 	mla	r0, r2, r0, r3 802aa5a:	6904      	ldr	r4, [r0, #16] 802aa5c:	f7ff f8f0 	bl	8029c40 <xTaskGetTickCount> 802aa60:	2300      	movs	r3, #0 802aa62:	4602      	mov	r2, r0 802aa64:	9300      	str	r3, [sp, #0] 802aa66:	4620      	mov	r0, r4 802aa68:	2101      	movs	r1, #1 802aa6a:	f7ff fcd3 	bl	802a414 <xTimerGenericCommand>} 802aa6e:	bd1c      	pop	{r2, r3, r4, pc} 802aa70:	2000fbfc 	.word	0x2000fbfc0802aa74 <fs_open>:  * @param  name : pointer to a file name  * @param  file : pointer to a fs_file structure    * @retval  1 if success, 0 if fail  */static int fs_open(char *name, struct fs_file *file){ 802aa74:	b570      	push	{r4, r5, r6, lr}  struct fsdata_file_noconst *f;  for (f = (struct fsdata_file_noconst *)FS_ROOT; f != NULL; f = (struct fsdata_file_noconst *)f->next) 802aa76:	4c09      	ldr	r4, [pc, #36]	; (802aa9c <fs_open+0x28>)  * @param  name : pointer to a file name  * @param  file : pointer to a fs_file structure    * @retval  1 if success, 0 if fail  */static int fs_open(char *name, struct fs_file *file){ 802aa78:	4606      	mov	r6, r0 802aa7a:	460d      	mov	r5, r1  struct fsdata_file_noconst *f;  for (f = (struct fsdata_file_noconst *)FS_ROOT; f != NULL; f = (struct fsdata_file_noconst *)f->next)  {    if (!strcmp(name, f->name)) 802aa7c:	4630      	mov	r0, r6 802aa7e:	6861      	ldr	r1, [r4, #4] 802aa80:	f7f7 f8aa 	bl	8021bd8 <strcmp> 802aa84:	b928      	cbnz	r0, 802aa92 <fs_open+0x1e>    {      file->data = f->data; 802aa86:	68a3      	ldr	r3, [r4, #8] 802aa88:	602b      	str	r3, [r5, #0]      file->len = f->len; 802aa8a:	68e3      	ldr	r3, [r4, #12]      return 1; 802aa8c:	2001      	movs	r0, #1  for (f = (struct fsdata_file_noconst *)FS_ROOT; f != NULL; f = (struct fsdata_file_noconst *)f->next)  {    if (!strcmp(name, f->name))    {      file->data = f->data;      file->len = f->len; 802aa8e:	606b      	str	r3, [r5, #4]      return 1; 802aa90:	bd70      	pop	{r4, r5, r6, pc}  */static int fs_open(char *name, struct fs_file *file){  struct fsdata_file_noconst *f;  for (f = (struct fsdata_file_noconst *)FS_ROOT; f != NULL; f = (struct fsdata_file_noconst *)f->next) 802aa92:	6824      	ldr	r4, [r4, #0] 802aa94:	2c00      	cmp	r4, #0 802aa96:	d1f1      	bne.n	802aa7c <fs_open+0x8>      file->data = f->data;      file->len = f->len;      return 1;    }  }  return 0; 802aa98:	4620      	mov	r0, r4} 802aa9a:	bd70      	pop	{r4, r5, r6, pc} 802aa9c:	0803e24c 	.word	0x0803e24c0802aaa0 <http_accept>:  * @param  pcb: pointer to a tcp_pcb structure  * ¶m  err: Lwip stack error code  * @retval err  */static err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err){ 802aaa0:	b538      	push	{r3, r4, r5, lr}  struct http_state *hs;  /* Allocate memory for the structure that holds the state of the connection */  hs = mem_malloc(sizeof(struct http_state)); 802aaa2:	2008      	movs	r0, #8  * @param  pcb: pointer to a tcp_pcb structure  * ¶m  err: Lwip stack error code  * @retval err  */static err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err){ 802aaa4:	460c      	mov	r4, r1  struct http_state *hs;  /* Allocate memory for the structure that holds the state of the connection */  hs = mem_malloc(sizeof(struct http_state)); 802aaa6:	f002 fe3b 	bl	802d720 <mem_malloc>  if (hs == NULL) 802aaaa:	4601      	mov	r1, r0 802aaac:	b1a0      	cbz	r0, 802aad8 <http_accept+0x38>  {    return ERR_MEM;  }  /* Initialize the structure. */  hs->file = NULL; 802aaae:	2500      	movs	r5, #0 802aab0:	6005      	str	r5, [r0, #0]  hs->left = 0; 802aab2:	6045      	str	r5, [r0, #4]  /* Tell TCP that this is the structure we wish to be passed for our     callbacks. */  tcp_arg(pcb, hs); 802aab4:	4620      	mov	r0, r4 802aab6:	f003 faa1 	bl	802dffc <tcp_arg>  /* Tell TCP that we wish to be informed of incoming data by a call     to the http_recv() function. */  tcp_recv(pcb, http_recv); 802aaba:	4620      	mov	r0, r4 802aabc:	4908      	ldr	r1, [pc, #32]	; (802aae0 <http_accept+0x40>) 802aabe:	f003 fa9f 	bl	802e000 <tcp_recv>  tcp_err(pcb, conn_err); 802aac2:	4620      	mov	r0, r4 802aac4:	4907      	ldr	r1, [pc, #28]	; (802aae4 <http_accept+0x44>) 802aac6:	f003 fa9f 	bl	802e008 <tcp_err>  tcp_poll(pcb, http_poll, 10); 802aaca:	4620      	mov	r0, r4 802aacc:	4906      	ldr	r1, [pc, #24]	; (802aae8 <http_accept+0x48>) 802aace:	220a      	movs	r2, #10 802aad0:	f003 fa9f 	bl	802e012 <tcp_poll>  return ERR_OK; 802aad4:	4628      	mov	r0, r5 802aad6:	e000      	b.n	802aada <http_accept+0x3a>  /* Allocate memory for the structure that holds the state of the connection */  hs = mem_malloc(sizeof(struct http_state));  if (hs == NULL)  {    return ERR_MEM; 802aad8:	20ff      	movs	r0, #255	; 0xff  tcp_err(pcb, conn_err);  tcp_poll(pcb, http_poll, 10);  return ERR_OK;} 802aada:	b240      	sxtb	r0, r0 802aadc:	bd38      	pop	{r3, r4, r5, pc} 802aade:	bf00      	nop 802aae0:	0802b7e1 	.word	0x0802b7e1 802aae4:	0802ab2f 	.word	0x0802ab2f 802aae8:	0802ab17 	.word	0x0802ab170802aaec <send_data>:  * @param pcb: pointer to a tcp_pcb struct  * @param hs: pointer to a http_state struct  * @retval none  */static void send_data(struct tcp_pcb *pcb, struct http_state *hs){ 802aaec:	b538      	push	{r3, r4, r5, lr}  err_t err;  u16_t len;  /* We cannot send more data than space available in the send     buffer */  if (tcp_sndbuf(pcb) < hs->left) 802aaee:	684b      	ldr	r3, [r1, #4] 802aaf0:	f8b0 5066 	ldrh.w	r5, [r0, #102]	; 0x66 802aaf4:	429d      	cmp	r5, r3  {    len = tcp_sndbuf(pcb);  }  else  {    len = hs->left; 802aaf6:	bf28      	it	cs 802aaf8:	b29d      	uxthcs	r5, r3  * @param pcb: pointer to a tcp_pcb struct  * @param hs: pointer to a http_state struct  * @retval none  */static void send_data(struct tcp_pcb *pcb, struct http_state *hs){ 802aafa:	460c      	mov	r4, r1  }  else  {    len = hs->left;  }  err = tcp_write(pcb, hs->file, len, 0); 802aafc:	462a      	mov	r2, r5 802aafe:	6809      	ldr	r1, [r1, #0] 802ab00:	2300      	movs	r3, #0 802ab02:	f004 fde0 	bl	802f6c6 <tcp_write>  if (err == ERR_OK) 802ab06:	b928      	cbnz	r0, 802ab14 <send_data+0x28>  {    hs->file += len; 802ab08:	6823      	ldr	r3, [r4, #0] 802ab0a:	195b      	adds	r3, r3, r5 802ab0c:	6023      	str	r3, [r4, #0]    hs->left -= len; 802ab0e:	6863      	ldr	r3, [r4, #4] 802ab10:	1b5d      	subs	r5, r3, r5 802ab12:	6065      	str	r5, [r4, #4] 802ab14:	bd38      	pop	{r3, r4, r5, pc}0802ab16 <http_poll>:  * @param arg: pointer to an argument to be passed to callback function  * @param pcb: pointer on tcp_pcb structure  * @retval err_t  */static err_t http_poll(void *arg, struct tcp_pcb *pcb){ 802ab16:	b508      	push	{r3, lr}  if (arg == NULL) 802ab18:	4603      	mov	r3, r0  {    tcp_close(pcb); 802ab1a:	4608      	mov	r0, r1  * @param pcb: pointer on tcp_pcb structure  * @retval err_t  */static err_t http_poll(void *arg, struct tcp_pcb *pcb){  if (arg == NULL) 802ab1c:	b913      	cbnz	r3, 802ab24 <http_poll+0xe>  {    tcp_close(pcb); 802ab1e:	f003 fd0b 	bl	802e538 <tcp_close> 802ab22:	e002      	b.n	802ab2a <http_poll+0x14>  }  else  {    send_data(pcb, (struct http_state *)arg); 802ab24:	4619      	mov	r1, r3 802ab26:	f7ff ffe1 	bl	802aaec <send_data>  }  return ERR_OK;} 802ab2a:	2000      	movs	r0, #0 802ab2c:	bd08      	pop	{r3, pc}0802ab2e <conn_err>:static void conn_err(void *arg, err_t err){  struct http_state *hs;  hs = arg;  mem_free(hs); 802ab2e:	f002 bd2f 	b.w	802d590 <mem_free>0802ab32 <close_conn>:  * @param  pcb: pointer to a tcp_pcb struct  * @param  hs: pointer to a http_state struct  * @retval  */static void close_conn(struct tcp_pcb *pcb, struct http_state *hs){ 802ab32:	b538      	push	{r3, r4, r5, lr} 802ab34:	4604      	mov	r4, r0 802ab36:	460d      	mov	r5, r1  tcp_arg(pcb, NULL); 802ab38:	2100      	movs	r1, #0 802ab3a:	f003 fa5f 	bl	802dffc <tcp_arg>  tcp_sent(pcb, NULL); 802ab3e:	4620      	mov	r0, r4 802ab40:	2100      	movs	r1, #0 802ab42:	f003 fa5f 	bl	802e004 <tcp_sent>  tcp_recv(pcb, NULL); 802ab46:	4620      	mov	r0, r4 802ab48:	2100      	movs	r1, #0 802ab4a:	f003 fa59 	bl	802e000 <tcp_recv>  mem_free(hs); 802ab4e:	4628      	mov	r0, r5 802ab50:	f002 fd1e 	bl	802d590 <mem_free>  tcp_close(pcb); 802ab54:	4620      	mov	r0, r4} 802ab56:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}{  tcp_arg(pcb, NULL);  tcp_sent(pcb, NULL);  tcp_recv(pcb, NULL);  mem_free(hs);  tcp_close(pcb); 802ab5a:	f003 bced 	b.w	802e538 <tcp_close>0802ab5e <http_sent>:  * @param pcb: pointer on tcp_pcb structure  * @param len  * @retval err : LwIP error code  */static err_t http_sent(void *arg, struct tcp_pcb *pcb, u16_t len){ 802ab5e:	b508      	push	{r3, lr} 802ab60:	4603      	mov	r3, r0 802ab62:	4608      	mov	r0, r1  struct http_state *hs;  hs = arg;  if (hs->left > 0) 802ab64:	685a      	ldr	r2, [r3, #4]  {    send_data(pcb, hs); 802ab66:	4619      	mov	r1, r3{  struct http_state *hs;  hs = arg;  if (hs->left > 0) 802ab68:	b112      	cbz	r2, 802ab70 <http_sent+0x12>  {    send_data(pcb, hs); 802ab6a:	f7ff ffbf 	bl	802aaec <send_data> 802ab6e:	e001      	b.n	802ab74 <http_sent+0x16>  }  else  {    close_conn(pcb, hs);       802ab70:	f7ff ffdf 	bl	802ab32 <close_conn>  }  return ERR_OK;} 802ab74:	2000      	movs	r0, #0 802ab76:	bd08      	pop	{r3, pc}0802ab78 <LogoutTimerCallback>:}/**  * @brief >Callback таймера логаута пользователя  */void LogoutTimerCallback(TimerHandle_t pxTimer) { 802ab78:	b51f      	push	{r0, r1, r2, r3, r4, lr}    uint8_t user_id = (uint8_t)pvTimerGetTimerID( pxTimer ); 802ab7a:	f7ff fd63 	bl	802a644 <pvTimerGetTimerID> 802ab7e:	4604      	mov	r4, r0static void HTTP_ForceUserLogout(uint8_t user_id){    char cookie[MAX_WEB_COOKIE_LEN];    /* Flush user cookie by random value */    sprintf(cookie, "%X", (unsigned int)GetRandomNumber()); 802ab80:	f7fb faa4 	bl	80260cc <GetRandomNumber> 802ab84:	4906      	ldr	r1, [pc, #24]	; (802aba0 <LogoutTimerCallback+0x28>) 802ab86:	4602      	mov	r2, r0 802ab88:	4668      	mov	r0, sp 802ab8a:	f7fc fe09 	bl	80277a0 <tfp_sprintf>/**  * @brief Установка Cookie пользователя  */static void HTTP_SetUserCookie(char *str, uint8_t user_id){    strcpy(users[user_id].cookie, str); 802ab8e:	4b05      	ldr	r3, [pc, #20]	; (802aba4 <LogoutTimerCallback+0x2c>) 802ab90:	b2e0      	uxtb	r0, r4 802ab92:	2214      	movs	r2, #20 802ab94:	fb00 3002 	mla	r0, r0, r2, r3 802ab98:	4669      	mov	r1, sp 802ab9a:	f7f7 f90b 	bl	8021db4 <strcpy>  */void LogoutTimerCallback(TimerHandle_t pxTimer) {    uint8_t user_id = (uint8_t)pvTimerGetTimerID( pxTimer );    HTTP_ForceUserLogout(user_id);} 802ab9e:	bd1f      	pop	{r0, r1, r2, r3, r4, pc} 802aba0:	0803b0c8 	.word	0x0803b0c8 802aba4:	2000fbfc 	.word	0x2000fbfc0802aba8 <HTTP_Init>:  * @brief  Initialize the HTTP server (start its thread)   * @param  none  * @retval None  */void HTTP_Init(){ 802aba8:	b5f0      	push	{r4, r5, r6, r7, lr} 802abaa:	b087      	sub	sp, #28	char buf[MAX_WEB_COOKIE_LEN];	  uint8_t user_id;  //sys_thread_new("HTTP", http_server_netconn_thread, NULL, 3000, 2);  struct tcp_pcb *pcb;  /*create new pcb*/  pcb = tcp_new(); 802abac:	f003 fdf2 	bl	802e794 <tcp_new>  /* bind HTTP traffic to pcb */  tcp_bind(pcb, IP_ADDR_ANY, 80); 802abb0:	2250      	movs	r2, #80	; 0x50	char buf[MAX_WEB_COOKIE_LEN];	  uint8_t user_id;  //sys_thread_new("HTTP", http_server_netconn_thread, NULL, 3000, 2);  struct tcp_pcb *pcb;  /*create new pcb*/  pcb = tcp_new(); 802abb2:	4604      	mov	r4, r0  /* bind HTTP traffic to pcb */  tcp_bind(pcb, IP_ADDR_ANY, 80); 802abb4:	4913      	ldr	r1, [pc, #76]	; (802ac04 <HTTP_Init+0x5c>)/**  * @brief Установка Cookie пользователя  */static void HTTP_SetUserCookie(char *str, uint8_t user_id){    strcpy(users[user_id].cookie, str); 802abb6:	4f14      	ldr	r7, [pc, #80]	; (802ac08 <HTTP_Init+0x60>)     sprintf(buf, "%X", (unsigned int)GetRandomNumber());     HTTP_SetUserCookie(buf, user_id);     /* Create user logout timers */     users[user_id].LogoutTimer =             xTimerCreate("LogoutTmr", WEB_LOGOUT_TIME, pdFALSE, ( void * ) user_id, LogoutTimerCallback); 802abb8:	4e14      	ldr	r6, [pc, #80]	; (802ac0c <HTTP_Init+0x64>)  //sys_thread_new("HTTP", http_server_netconn_thread, NULL, 3000, 2);  struct tcp_pcb *pcb;  /*create new pcb*/  pcb = tcp_new();  /* bind HTTP traffic to pcb */  tcp_bind(pcb, IP_ADDR_ANY, 80); 802abba:	f003 f94d 	bl	802de58 <tcp_bind>  /* start listening on port 80 */  pcb = tcp_listen(pcb); 802abbe:	4620      	mov	r0, r4 802abc0:	21ff      	movs	r1, #255	; 0xff 802abc2:	f003 f981 	bl	802dec8 <tcp_listen_with_backlog>  /* define callback function for TCP connection setup */  tcp_accept(pcb, http_accept); 802abc6:	4912      	ldr	r1, [pc, #72]	; (802ac10 <HTTP_Init+0x68>) 802abc8:	f003 fa21 	bl	802e00e <tcp_accept> 802abcc:	2400      	movs	r4, #0  for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {     /* Flush user cookie by random value */     sprintf(buf, "%X", (unsigned int)GetRandomNumber()); 802abce:	f7fb fa7d 	bl	80260cc <GetRandomNumber>/**  * @brief Установка Cookie пользователя  */static void HTTP_SetUserCookie(char *str, uint8_t user_id){    strcpy(users[user_id].cookie, str); 802abd2:	2514      	movs	r5, #20  pcb = tcp_listen(pcb);  /* define callback function for TCP connection setup */  tcp_accept(pcb, http_accept);  for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {     /* Flush user cookie by random value */     sprintf(buf, "%X", (unsigned int)GetRandomNumber()); 802abd4:	4602      	mov	r2, r0/**  * @brief Установка Cookie пользователя  */static void HTTP_SetUserCookie(char *str, uint8_t user_id){    strcpy(users[user_id].cookie, str); 802abd6:	fb05 7504 	mla	r5, r5, r4, r7  pcb = tcp_listen(pcb);  /* define callback function for TCP connection setup */  tcp_accept(pcb, http_accept);  for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {     /* Flush user cookie by random value */     sprintf(buf, "%X", (unsigned int)GetRandomNumber()); 802abda:	490e      	ldr	r1, [pc, #56]	; (802ac14 <HTTP_Init+0x6c>) 802abdc:	a802      	add	r0, sp, #8 802abde:	f7fc fddf 	bl	80277a0 <tfp_sprintf>/**  * @brief Установка Cookie пользователя  */static void HTTP_SetUserCookie(char *str, uint8_t user_id){    strcpy(users[user_id].cookie, str); 802abe2:	a902      	add	r1, sp, #8 802abe4:	4628      	mov	r0, r5 802abe6:	f7f7 f8e5 	bl	8021db4 <strcpy>     sprintf(buf, "%X", (unsigned int)GetRandomNumber());     HTTP_SetUserCookie(buf, user_id);     /* Create user logout timers */     users[user_id].LogoutTimer =             xTimerCreate("LogoutTmr", WEB_LOGOUT_TIME, pdFALSE, ( void * ) user_id, LogoutTimerCallback); 802abea:	2200      	movs	r2, #0 802abec:	4623      	mov	r3, r4 802abee:	9600      	str	r6, [sp, #0] 802abf0:	4809      	ldr	r0, [pc, #36]	; (802ac18 <HTTP_Init+0x70>) 802abf2:	490a      	ldr	r1, [pc, #40]	; (802ac1c <HTTP_Init+0x74>) 802abf4:	f7ff fbee 	bl	802a3d4 <xTimerCreate> 802abf8:	3401      	adds	r4, #1  tcp_bind(pcb, IP_ADDR_ANY, 80);  /* start listening on port 80 */  pcb = tcp_listen(pcb);  /* define callback function for TCP connection setup */  tcp_accept(pcb, http_accept);  for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) { 802abfa:	2c02      	cmp	r4, #2     /* Flush user cookie by random value */     sprintf(buf, "%X", (unsigned int)GetRandomNumber());     HTTP_SetUserCookie(buf, user_id);     /* Create user logout timers */     users[user_id].LogoutTimer = 802abfc:	6128      	str	r0, [r5, #16]  tcp_bind(pcb, IP_ADDR_ANY, 80);  /* start listening on port 80 */  pcb = tcp_listen(pcb);  /* define callback function for TCP connection setup */  tcp_accept(pcb, http_accept);  for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) { 802abfe:	d1e6      	bne.n	802abce <HTTP_Init+0x26>     /* Create user logout timers */     users[user_id].LogoutTimer =             xTimerCreate("LogoutTmr", WEB_LOGOUT_TIME, pdFALSE, ( void * ) user_id, LogoutTimerCallback);   }} 802ac00:	b007      	add	sp, #28 802ac02:	bdf0      	pop	{r4, r5, r6, r7, pc} 802ac04:	080413b4 	.word	0x080413b4 802ac08:	2000fbfc 	.word	0x2000fbfc 802ac0c:	0802ab79 	.word	0x0802ab79 802ac10:	0802aaa1 	.word	0x0802aaa1 802ac14:	0803b0c8 	.word	0x0803b0c8 802ac18:	0803b0cb 	.word	0x0803b0cb 802ac1c:	001b7740 	.word	0x001b77400802ac20 <HTTP_UPSTest>:/**  * @brief  Запуск/останов теста UPS  */void HTTP_UPSTest(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802ac20:	b570      	push	{r4, r5, r6, lr} 802ac22:	b08a      	sub	sp, #40	; 0x28 802ac24:	4606      	mov	r6, r0 802ac26:	460c      	mov	r4, r1	  char *valueLen = 0;	  char tempValue[20];	  char tempValue2[20];	  int8_t res = 0;	  memset(tempValue, 0, 20); 802ac28:	2214      	movs	r2, #20 802ac2a:	2100      	movs	r1, #0 802ac2c:	4668      	mov	r0, sp/**  * @brief  Запуск/останов теста UPS  */void HTTP_UPSTest(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802ac2e:	461d      	mov	r5, r3	  char *valueLen = 0;	  char tempValue[20];	  char tempValue2[20];	  int8_t res = 0;	  memset(tempValue, 0, 20); 802ac30:	f7f6 ff46 	bl	8021ac0 <memset>	  memset(tempValue2, 0, 20); 802ac34:	2214      	movs	r2, #20 802ac36:	2100      	movs	r1, #0 802ac38:	a805      	add	r0, sp, #20 802ac3a:	f7f6 ff41 	bl	8021ac0 <memset>	  strcpy(bufOut, HTTP_200_OK); 802ac3e:	492e      	ldr	r1, [pc, #184]	; (802acf8 <HTTP_UPSTest+0xd8>) 802ac40:	4620      	mov	r0, r4 802ac42:	f7f7 f8b7 	bl	8021db4 <strcpy>	  value = strstr(bufIn, "func"); 802ac46:	4630      	mov	r0, r6 802ac48:	492c      	ldr	r1, [pc, #176]	; (802acfc <HTTP_UPSTest+0xdc>) 802ac4a:	f7f7 fb91 	bl	8022370 <strstr>	  valueLen = strpbrk(value, ":"); 802ac4e:	492c      	ldr	r1, [pc, #176]	; (802ad00 <HTTP_UPSTest+0xe0>) 802ac50:	f7f7 f9f8 	bl	8022044 <strpbrk> 802ac54:	4606      	mov	r6, r0	  strncpy(tempValue, (valueLen+1), (strlen(valueLen)-2)); 802ac56:	f7f7 f90b 	bl	8021e70 <strlen> 802ac5a:	1c71      	adds	r1, r6, #1 802ac5c:	1e82      	subs	r2, r0, #2 802ac5e:	4668      	mov	r0, sp 802ac60:	f7f7 f9be 	bl	8021fe0 <strncpy>	  if (strcmp(tempValue, "\"stop\"") == 0){ 802ac64:	4668      	mov	r0, sp 802ac66:	4927      	ldr	r1, [pc, #156]	; (802ad04 <HTTP_UPSTest+0xe4>) 802ac68:	f7f6 ffb6 	bl	8021bd8 <strcmp> 802ac6c:	b978      	cbnz	r0, 802ac8e <HTTP_UPSTest+0x6e>		  res = ups_metac_service_pdu(ups_cancel_test); 802ac6e:	2008      	movs	r0, #8 802ac70:	f7fe f85e 	bl	8028d30 <ups_metac_service_pdu> 802ac74:	b2c6      	uxtb	r6, r0		  if(res == 1 || res == 0) 802ac76:	2e01      	cmp	r6, #1 802ac78:	d803      	bhi.n	802ac82 <HTTP_UPSTest+0x62>			  strcat(bufOut, "Тест остановлен!"); 802ac7a:	4620      	mov	r0, r4 802ac7c:	4922      	ldr	r1, [pc, #136]	; (802ad08 <HTTP_UPSTest+0xe8>) 802ac7e:	f7f6 ff85 	bl	8021b8c <strcat>		  if(res == -1) 802ac82:	b276      	sxtb	r6, r6 802ac84:	1c72      	adds	r2, r6, #1 802ac86:	d131      	bne.n	802acec <HTTP_UPSTest+0xcc>			  strcat(bufOut, "Тест не удалось остановить!"); 802ac88:	4620      	mov	r0, r4 802ac8a:	4920      	ldr	r1, [pc, #128]	; (802ad0c <HTTP_UPSTest+0xec>) 802ac8c:	e02c      	b.n	802ace8 <HTTP_UPSTest+0xc8>		  *lenBufOut = strlen(bufOut);	  }	  else if (strcmp(tempValue, "\"discharge\"") == 0){ 802ac8e:	4668      	mov	r0, sp 802ac90:	491f      	ldr	r1, [pc, #124]	; (802ad10 <HTTP_UPSTest+0xf0>) 802ac92:	f7f6 ffa1 	bl	8021bd8 <strcmp> 802ac96:	b908      	cbnz	r0, 802ac9c <HTTP_UPSTest+0x7c>		  res = ups_metac_service_pdu(ups_test_low_bat); 802ac98:	2002      	movs	r0, #2 802ac9a:	e017      	b.n	802accc <HTTP_UPSTest+0xac>			  strcat(bufOut, "Тест запущен!");		  if(res == -1)			  strcat(bufOut, "Тест не удалось запустить!");		  *lenBufOut = strlen(bufOut);	  }	  else if (strncmp(tempValue, "\"time\"", 6) == 0){ 802ac9c:	4668      	mov	r0, sp 802ac9e:	491d      	ldr	r1, [pc, #116]	; (802ad14 <HTTP_UPSTest+0xf4>) 802aca0:	2206      	movs	r2, #6 802aca2:	f7f7 f947 	bl	8021f34 <strncmp> 802aca6:	bb28      	cbnz	r0, 802acf4 <HTTP_UPSTest+0xd4>		  valueLen = strpbrk(tempValue, ":"); 802aca8:	4915      	ldr	r1, [pc, #84]	; (802ad00 <HTTP_UPSTest+0xe0>) 802acaa:	4668      	mov	r0, sp 802acac:	f7f7 f9ca 	bl	8022044 <strpbrk> 802acb0:	4606      	mov	r6, r0		  strncpy(tempValue2, (valueLen+2), (strlen(valueLen)-2)); 802acb2:	f7f7 f8dd 	bl	8021e70 <strlen> 802acb6:	1cb1      	adds	r1, r6, #2 802acb8:	1e82      	subs	r2, r0, #2 802acba:	a805      	add	r0, sp, #20 802acbc:	f7f7 f990 	bl	8021fe0 <strncpy>		  TimeParam = atoi(tempValue2); 802acc0:	a805      	add	r0, sp, #20 802acc2:	f7f6 fddd 	bl	8021880 <atoi> 802acc6:	4b14      	ldr	r3, [pc, #80]	; (802ad18 <HTTP_UPSTest+0xf8>) 802acc8:	8018      	strh	r0, [r3, #0]		  res = ups_metac_service_pdu(ups_test_time); 802acca:	2003      	movs	r0, #3 802accc:	f7fe f830 	bl	8028d30 <ups_metac_service_pdu> 802acd0:	b2c6      	uxtb	r6, r0		  if(res == 1 || res == 0) 802acd2:	2e01      	cmp	r6, #1 802acd4:	d803      	bhi.n	802acde <HTTP_UPSTest+0xbe>			  strcat(bufOut, "Тест запущен!"); 802acd6:	4620      	mov	r0, r4 802acd8:	4910      	ldr	r1, [pc, #64]	; (802ad1c <HTTP_UPSTest+0xfc>) 802acda:	f7f6 ff57 	bl	8021b8c <strcat>		  if(res == -1) 802acde:	b276      	sxtb	r6, r6 802ace0:	1c73      	adds	r3, r6, #1 802ace2:	d103      	bne.n	802acec <HTTP_UPSTest+0xcc>			  strcat(bufOut, "Тест не удалось запустить!"); 802ace4:	490e      	ldr	r1, [pc, #56]	; (802ad20 <HTTP_UPSTest+0x100>) 802ace6:	4620      	mov	r0, r4 802ace8:	f7f6 ff50 	bl	8021b8c <strcat>		  *lenBufOut = strlen(bufOut); 802acec:	4620      	mov	r0, r4 802acee:	f7f7 f8bf 	bl	8021e70 <strlen> 802acf2:	8028      	strh	r0, [r5, #0]	  }} 802acf4:	b00a      	add	sp, #40	; 0x28 802acf6:	bd70      	pop	{r4, r5, r6, pc} 802acf8:	0803e20d 	.word	0x0803e20d 802acfc:	0803b0d5 	.word	0x0803b0d5 802ad00:	0804123b 	.word	0x0804123b 802ad04:	0803b0da 	.word	0x0803b0da 802ad08:	0803b0e1 	.word	0x0803b0e1 802ad0c:	0803b100 	.word	0x0803b100 802ad10:	0803b133 	.word	0x0803b133 802ad14:	0803b189 	.word	0x0803b189 802ad18:	2000296c 	.word	0x2000296c 802ad1c:	0803b13f 	.word	0x0803b13f 802ad20:	0803b158 	.word	0x0803b1580802ad24 <HTTP_UPSshutdown>:/**  * @brief  Выклюение UPS  */void HTTP_UPSshutdown(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802ad24:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802ad28:	b09a      	sub	sp, #104	; 0x68	  char *valueLenEnd = 0;	  char tempValue[50];	  char tempValue2[50];	  int8_t res = 0;	  memset(tempValue, 0, 50); 802ad2a:	2232      	movs	r2, #50	; 0x32/**  * @brief  Выклюение UPS  */void HTTP_UPSshutdown(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802ad2c:	4605      	mov	r5, r0 802ad2e:	460c      	mov	r4, r1	  char *valueLenEnd = 0;	  char tempValue[50];	  char tempValue2[50];	  int8_t res = 0;	  memset(tempValue, 0, 50); 802ad30:	4668      	mov	r0, sp 802ad32:	2100      	movs	r1, #0/**  * @brief  Выклюение UPS  */void HTTP_UPSshutdown(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802ad34:	461e      	mov	r6, r3	  char *valueLenEnd = 0;	  char tempValue[50];	  char tempValue2[50];	  int8_t res = 0;	  memset(tempValue, 0, 50); 802ad36:	f7f6 fec3 	bl	8021ac0 <memset>	  strcpy(bufOut, HTTP_200_OK); 802ad3a:	4940      	ldr	r1, [pc, #256]	; (802ae3c <HTTP_UPSshutdown+0x118>) 802ad3c:	4620      	mov	r0, r4 802ad3e:	f7f7 f839 	bl	8021db4 <strcpy>	  value = strstr(bufIn, "func"); 802ad42:	4628      	mov	r0, r5 802ad44:	493e      	ldr	r1, [pc, #248]	; (802ae40 <HTTP_UPSshutdown+0x11c>) 802ad46:	f7f7 fb13 	bl	8022370 <strstr>	  valueLen = strpbrk(value, ":"); 802ad4a:	493e      	ldr	r1, [pc, #248]	; (802ae44 <HTTP_UPSshutdown+0x120>) 802ad4c:	f7f7 f97a 	bl	8022044 <strpbrk> 802ad50:	4605      	mov	r5, r0	  strncpy(tempValue, (valueLen+1), (strlen(valueLen)-2)); 802ad52:	f7f7 f88d 	bl	8021e70 <strlen> 802ad56:	1c69      	adds	r1, r5, #1 802ad58:	1e82      	subs	r2, r0, #2 802ad5a:	4668      	mov	r0, sp 802ad5c:	f7f7 f940 	bl	8021fe0 <strncpy>	  if (strcmp(tempValue, "\"cancel\"") == 0){ 802ad60:	4668      	mov	r0, sp 802ad62:	4939      	ldr	r1, [pc, #228]	; (802ae48 <HTTP_UPSshutdown+0x124>) 802ad64:	f7f6 ff38 	bl	8021bd8 <strcmp> 802ad68:	b978      	cbnz	r0, 802ad8a <HTTP_UPSshutdown+0x66>		  res = ups_metac_service_pdu(ups_cancel_shut_down); 802ad6a:	2007      	movs	r0, #7 802ad6c:	f7fd ffe0 	bl	8028d30 <ups_metac_service_pdu> 802ad70:	b2c5      	uxtb	r5, r0		  if(res == 1 || res == 0) 802ad72:	2d01      	cmp	r5, #1 802ad74:	d803      	bhi.n	802ad7e <HTTP_UPSshutdown+0x5a>			  strcat(bufOut, "Выключение ИБП отменено!"); 802ad76:	4620      	mov	r0, r4 802ad78:	4934      	ldr	r1, [pc, #208]	; (802ae4c <HTTP_UPSshutdown+0x128>) 802ad7a:	f7f6 ff07 	bl	8021b8c <strcat>		  if(res == -1) 802ad7e:	b26d      	sxtb	r5, r5 802ad80:	1c68      	adds	r0, r5, #1 802ad82:	d154      	bne.n	802ae2e <HTTP_UPSshutdown+0x10a>			  strcat(bufOut, "Выключение ИБП не удалось отменить!"); 802ad84:	4620      	mov	r0, r4 802ad86:	4932      	ldr	r1, [pc, #200]	; (802ae50 <HTTP_UPSshutdown+0x12c>) 802ad88:	e04f      	b.n	802ae2a <HTTP_UPSshutdown+0x106>		  *lenBufOut = strlen(bufOut);	  }	  else if (strncmp(tempValue, "\"off\"", 5) == 0){ 802ad8a:	4668      	mov	r0, sp 802ad8c:	4931      	ldr	r1, [pc, #196]	; (802ae54 <HTTP_UPSshutdown+0x130>) 802ad8e:	2205      	movs	r2, #5 802ad90:	f7f7 f8d0 	bl	8021f34 <strncmp> 802ad94:	4605      	mov	r5, r0 802ad96:	2800      	cmp	r0, #0 802ad98:	d14d      	bne.n	802ae36 <HTTP_UPSshutdown+0x112>		  value = strstr(tempValue, "after"); 802ad9a:	492f      	ldr	r1, [pc, #188]	; (802ae58 <HTTP_UPSshutdown+0x134>) 802ad9c:	4668      	mov	r0, sp 802ad9e:	f7f7 fae7 	bl	8022370 <strstr>		  valueLen = strpbrk(value, ":"); 802ada2:	4928      	ldr	r1, [pc, #160]	; (802ae44 <HTTP_UPSshutdown+0x120>)		  if(res == -1)			  strcat(bufOut, "Выключение ИБП не удалось отменить!");		  *lenBufOut = strlen(bufOut);	  }	  else if (strncmp(tempValue, "\"off\"", 5) == 0){		  value = strstr(tempValue, "after"); 802ada4:	4680      	mov	r8, r0		  valueLen = strpbrk(value, ":"); 802ada6:	f7f7 f94d 	bl	8022044 <strpbrk>		  valueLenEnd = strpbrk(value, ","); 802adaa:	492c      	ldr	r1, [pc, #176]	; (802ae5c <HTTP_UPSshutdown+0x138>)			  strcat(bufOut, "Выключение ИБП не удалось отменить!");		  *lenBufOut = strlen(bufOut);	  }	  else if (strncmp(tempValue, "\"off\"", 5) == 0){		  value = strstr(tempValue, "after");		  valueLen = strpbrk(value, ":"); 802adac:	4607      	mov	r7, r0		  valueLenEnd = strpbrk(value, ","); 802adae:	4640      	mov	r0, r8 802adb0:	f7f7 f948 	bl	8022044 <strpbrk>		  memset(tempValue2, 0, 50); 802adb4:	4629      	mov	r1, r5 802adb6:	2232      	movs	r2, #50	; 0x32		  *lenBufOut = strlen(bufOut);	  }	  else if (strncmp(tempValue, "\"off\"", 5) == 0){		  value = strstr(tempValue, "after");		  valueLen = strpbrk(value, ":");		  valueLenEnd = strpbrk(value, ","); 802adb8:	4680      	mov	r8, r0		  memset(tempValue2, 0, 50); 802adba:	a80d      	add	r0, sp, #52	; 0x34 802adbc:	f7f6 fe80 	bl	8021ac0 <memset>		  strncpy(tempValue2, (valueLen+2), (valueLenEnd - valueLen - 2)); 802adc0:	ebc7 0208 	rsb	r2, r7, r8 802adc4:	3a02      	subs	r2, #2 802adc6:	1cb9      	adds	r1, r7, #2 802adc8:	a80d      	add	r0, sp, #52	; 0x34 802adca:	f7f7 f909 	bl	8021fe0 <strncpy>		  TimeParam = atoi(tempValue2); 802adce:	a80d      	add	r0, sp, #52	; 0x34 802add0:	f7f6 fd56 	bl	8021880 <atoi> 802add4:	4b22      	ldr	r3, [pc, #136]	; (802ae60 <HTTP_UPSshutdown+0x13c>)		  value = strstr(tempValue, "to"); 802add6:	4923      	ldr	r1, [pc, #140]	; (802ae64 <HTTP_UPSshutdown+0x140>)		  value = strstr(tempValue, "after");		  valueLen = strpbrk(value, ":");		  valueLenEnd = strpbrk(value, ",");		  memset(tempValue2, 0, 50);		  strncpy(tempValue2, (valueLen+2), (valueLenEnd - valueLen - 2));		  TimeParam = atoi(tempValue2); 802add8:	8018      	strh	r0, [r3, #0]		  value = strstr(tempValue, "to"); 802adda:	4668      	mov	r0, sp 802addc:	f7f7 fac8 	bl	8022370 <strstr>		  valueLen = strpbrk(value, ":"); 802ade0:	4918      	ldr	r1, [pc, #96]	; (802ae44 <HTTP_UPSshutdown+0x120>) 802ade2:	f7f7 f92f 	bl	8022044 <strpbrk>		  memset(tempValue2, 0, 50); 802ade6:	4629      	mov	r1, r5 802ade8:	2232      	movs	r2, #50	; 0x32		  valueLenEnd = strpbrk(value, ",");		  memset(tempValue2, 0, 50);		  strncpy(tempValue2, (valueLen+2), (valueLenEnd - valueLen - 2));		  TimeParam = atoi(tempValue2);		  value = strstr(tempValue, "to");		  valueLen = strpbrk(value, ":"); 802adea:	4607      	mov	r7, r0		  memset(tempValue2, 0, 50); 802adec:	a80d      	add	r0, sp, #52	; 0x34 802adee:	f7f6 fe67 	bl	8021ac0 <memset>		  strncpy(tempValue2, (valueLen+2), (strlen(valueLen) - 2)); 802adf2:	4638      	mov	r0, r7 802adf4:	f7f7 f83c 	bl	8021e70 <strlen> 802adf8:	1cb9      	adds	r1, r7, #2 802adfa:	1e82      	subs	r2, r0, #2 802adfc:	a80d      	add	r0, sp, #52	; 0x34 802adfe:	f7f7 f8ef 	bl	8021fe0 <strncpy>		  TimeParam2 = atoi(tempValue2); 802ae02:	a80d      	add	r0, sp, #52	; 0x34 802ae04:	f7f6 fd3c 	bl	8021880 <atoi> 802ae08:	4b17      	ldr	r3, [pc, #92]	; (802ae68 <HTTP_UPSshutdown+0x144>) 802ae0a:	8018      	strh	r0, [r3, #0]		  res = ups_metac_service_pdu(ups_shutdown_restore); 802ae0c:	2006      	movs	r0, #6 802ae0e:	f7fd ff8f 	bl	8028d30 <ups_metac_service_pdu> 802ae12:	b2c5      	uxtb	r5, r0		  if(res == 1 || res == 0) 802ae14:	2d01      	cmp	r5, #1 802ae16:	d803      	bhi.n	802ae20 <HTTP_UPSshutdown+0xfc>			  strcat(bufOut, "Перезагрузка ИБП!"); 802ae18:	4620      	mov	r0, r4 802ae1a:	4914      	ldr	r1, [pc, #80]	; (802ae6c <HTTP_UPSshutdown+0x148>) 802ae1c:	f7f6 feb6 	bl	8021b8c <strcat>		  if(res == -1) 802ae20:	b26d      	sxtb	r5, r5 802ae22:	1c69      	adds	r1, r5, #1 802ae24:	d103      	bne.n	802ae2e <HTTP_UPSshutdown+0x10a>			  strcat(bufOut, "Отмена перезагрузки ИБП!"); 802ae26:	4912      	ldr	r1, [pc, #72]	; (802ae70 <HTTP_UPSshutdown+0x14c>) 802ae28:	4620      	mov	r0, r4 802ae2a:	f7f6 feaf 	bl	8021b8c <strcat>		  *lenBufOut = strlen(bufOut); 802ae2e:	4620      	mov	r0, r4 802ae30:	f7f7 f81e 	bl	8021e70 <strlen> 802ae34:	8030      	strh	r0, [r6, #0]	  }} 802ae36:	b01a      	add	sp, #104	; 0x68 802ae38:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802ae3c:	0803e20d 	.word	0x0803e20d 802ae40:	0803b0d5 	.word	0x0803b0d5 802ae44:	0804123b 	.word	0x0804123b 802ae48:	0803b190 	.word	0x0803b190 802ae4c:	0803b199 	.word	0x0803b199 802ae50:	0803b1c7 	.word	0x0803b1c7 802ae54:	0803b209 	.word	0x0803b209 802ae58:	0803b20f 	.word	0x0803b20f 802ae5c:	0803b215 	.word	0x0803b215 802ae60:	2000296c 	.word	0x2000296c 802ae64:	0803b217 	.word	0x0803b217 802ae68:	20002936 	.word	0x20002936 802ae6c:	0803b21a 	.word	0x0803b21a 802ae70:	0803b23b 	.word	0x0803b23b0802ae74 <HTTP_ConfirmBootPwd>:/**  * @brief  Проверка пароля для перехода в режим bootloader  * @retval None  */void HTTP_ConfirmBootPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802ae74:	b500      	push	{lr} 802ae76:	b093      	sub	sp, #76	; 0x4c 802ae78:	4601      	mov	r1, r0  char tempStr[50];  strncpy(tempStr, bufIn, 50); 802ae7a:	2232      	movs	r2, #50	; 0x32 802ae7c:	a805      	add	r0, sp, #20 802ae7e:	f7f7 f8af 	bl	8021fe0 <strncpy>  char value[20];  uint8_t valueLen;    memset(value, 0, 20); 802ae82:	4668      	mov	r0, sp 802ae84:	2100      	movs	r1, #0 802ae86:	2214      	movs	r2, #20 802ae88:	f7f6 fe1a 	bl	8021ac0 <memset>	//if (strcmp(BOOTLOADER_PASWORD, value) == 0)	{  	 // *bufOut = '1';	  /* Запускаем задачу отложенной перезагрузки. Контроллер должен успеть       отправить ответ серверу о статусе пароля */	  HTTP_StartResetTask(true);  802ae8c:	2001      	movs	r0, #1 802ae8e:	f001 fc17 	bl	802c6c0 <HTTP_StartResetTask>/*	else	  *bufOut = '0';*/		//*lenBufOut = 1;  }} 802ae92:	b013      	add	sp, #76	; 0x4c 802ae94:	bd00      	pop	{pc} 802ae96:	0000      	movs	r0, r00802ae98 <GetParamValue>:/**  * @brief    * @retval None  */uint8_t GetParamValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen){ 802ae98:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802ae9c:	4690      	mov	r8, r2 802ae9e:	461f      	mov	r7, r3  char *beginValue = 0;  char *endValue = 0;  int  len = 0;  char *strPtr = 0;    strPtr = strstr(inStr, paramName); 802aea0:	f7f7 fa66 	bl	8022370 <strstr>    if (strPtr != 0) 802aea4:	4605      	mov	r5, r0 802aea6:	b1e0      	cbz	r0, 802aee2 <GetParamValue+0x4a>  {    beginValue = strpbrk(strPtr,"="); 802aea8:	490f      	ldr	r1, [pc, #60]	; (802aee8 <GetParamValue+0x50>) 802aeaa:	f7f7 f8cb 	bl	8022044 <strpbrk>    endValue = strpbrk(strPtr,"&"); 802aeae:	490f      	ldr	r1, [pc, #60]	; (802aeec <GetParamValue+0x54>)    strPtr = strstr(inStr, paramName);    if (strPtr != 0)  {    beginValue = strpbrk(strPtr,"="); 802aeb0:	4606      	mov	r6, r0    endValue = strpbrk(strPtr,"&"); 802aeb2:	4628      	mov	r0, r5 802aeb4:	f7f7 f8c6 	bl	8022044 <strpbrk>    if (endValue == 0) 802aeb8:	4604      	mov	r4, r0 802aeba:	b920      	cbnz	r0, 802aec6 <GetParamValue+0x2e>      endValue = strpbrk(strPtr," "); 802aebc:	4628      	mov	r0, r5 802aebe:	490c      	ldr	r1, [pc, #48]	; (802aef0 <GetParamValue+0x58>) 802aec0:	f7f7 f8c0 	bl	8022044 <strpbrk> 802aec4:	4604      	mov	r4, r0    len = endValue - beginValue - 1; 802aec6:	1ba5      	subs	r5, r4, r6 802aec8:	3d01      	subs	r5, #1    strncpy(paramValue, beginValue + 1, len); 802aeca:	4640      	mov	r0, r8 802aecc:	1c71      	adds	r1, r6, #1 802aece:	462a      	mov	r2, r5 802aed0:	f7f7 f886 	bl	8021fe0 <strncpy>    *endValue = '0'; 802aed4:	2330      	movs	r3, #48	; 0x30 802aed6:	7023      	strb	r3, [r4, #0]    *beginValue = '0';	*paramLen = len;	return 1; 802aed8:	2001      	movs	r0, #1    if (endValue == 0)      endValue = strpbrk(strPtr," ");    len = endValue - beginValue - 1;    strncpy(paramValue, beginValue + 1, len);    *endValue = '0';    *beginValue = '0'; 802aeda:	7033      	strb	r3, [r6, #0]	*paramLen = len; 802aedc:	703d      	strb	r5, [r7, #0]	return 1; 802aede:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}  }  else  {		*paramLen = 0; 802aee2:	7038      	strb	r0, [r7, #0]	return 0;  }} 802aee4:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802aee8:	0803b425 	.word	0x0803b425 802aeec:	0803b269 	.word	0x0803b269 802aef0:	08036e41 	.word	0x08036e410802aef4 <HTTP_ConfirmWebPwd>:/**  * @brief  Проверка пароля для входа в Web  * @retval None  */int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802aef4:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802aef8:	b0a8      	sub	sp, #160	; 0xa0 802aefa:	4604      	mov	r4, r0	  char *strPtr = 0;	  char WebPassword[MAX_WEB_PASSWD_LEN];	  char WebLogin[MAX_WEB_LOGIN_LEN];	  char buf[40];	  memset(login, 0, 20); 802aefc:	2214      	movs	r2, #20/**  * @brief  Проверка пароля для входа в Web  * @retval None  */int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802aefe:	460d      	mov	r5, r1	  char *strPtr = 0;	  char WebPassword[MAX_WEB_PASSWD_LEN];	  char WebLogin[MAX_WEB_LOGIN_LEN];	  char buf[40];	  memset(login, 0, 20); 802af00:	a807      	add	r0, sp, #28 802af02:	2100      	movs	r1, #0/**  * @brief  Проверка пароля для входа в Web  * @retval None  */int HTTP_ConfirmWebPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802af04:	4698      	mov	r8, r3	  char *strPtr = 0;	  char WebPassword[MAX_WEB_PASSWD_LEN];	  char WebLogin[MAX_WEB_LOGIN_LEN];	  char buf[40];	  memset(login, 0, 20); 802af06:	f7f6 fddb 	bl	8021ac0 <memset>	  memset(password, 0, 20); 802af0a:	2100      	movs	r1, #0 802af0c:	2214      	movs	r2, #20 802af0e:	a80c      	add	r0, sp, #48	; 0x30 802af10:	f7f6 fdd6 	bl	8021ac0 <memset>	  memset(tempStr, 0, 50); 802af14:	2100      	movs	r1, #0 802af16:	2232      	movs	r2, #50	; 0x32 802af18:	a81b      	add	r0, sp, #108	; 0x6c 802af1a:	f7f6 fdd1 	bl	8021ac0 <memset>	  /* Get first 50 bytes of string */	  strncpy(tempStr, bufIn, 49); 802af1e:	2231      	movs	r2, #49	; 0x31 802af20:	4621      	mov	r1, r4 802af22:	a81b      	add	r0, sp, #108	; 0x6c 802af24:	f7f7 f85c 	bl	8021fe0 <strncpy>	  /* Add " " to the string in order GetParamValue() can be able to parse the param */	  strcat(tempStr, " ");	  if (GetParamValue(tempStr, "login=", login, &valueLen) && 802af28:	f10d 0603 	add.w	r6, sp, #3	  /* Get first 50 bytes of string */	  strncpy(tempStr, bufIn, 49);	  /* Add " " to the string in order GetParamValue() can be able to parse the param */	  strcat(tempStr, " "); 802af2c:	4941      	ldr	r1, [pc, #260]	; (802b034 <HTTP_ConfirmWebPwd+0x140>) 802af2e:	a81b      	add	r0, sp, #108	; 0x6c 802af30:	f7f6 fe2c 	bl	8021b8c <strcat>	  if (GetParamValue(tempStr, "login=", login, &valueLen) && 802af34:	a81b      	add	r0, sp, #108	; 0x6c 802af36:	4940      	ldr	r1, [pc, #256]	; (802b038 <HTTP_ConfirmWebPwd+0x144>) 802af38:	aa07      	add	r2, sp, #28 802af3a:	4633      	mov	r3, r6 802af3c:	f7ff ffac 	bl	802ae98 <GetParamValue> 802af40:	b920      	cbnz	r0, 802af4c <HTTP_ConfirmWebPwd+0x58>      }    }    /* No valid login and pass found */    /* TODO replace global flag with user-pass-cookie*/    Authenticated = false; 802af42:	4b3e      	ldr	r3, [pc, #248]	; (802b03c <HTTP_ConfirmWebPwd+0x148>) 802af44:	2200      	movs	r2, #0 802af46:	701a      	strb	r2, [r3, #0]    /* Wrong login or pass, return */    return SEND_REQUIRED_NO; 802af48:	2001      	movs	r0, #1 802af4a:	e06f      	b.n	802b02c <HTTP_ConfirmWebPwd+0x138>	  /* Add " " to the string in order GetParamValue() can be able to parse the param */	  strcat(tempStr, " ");	  if (GetParamValue(tempStr, "login=", login, &valueLen) &&	      GetParamValue(tempStr, "password=", password, &valueLen)) 802af4c:	a81b      	add	r0, sp, #108	; 0x6c 802af4e:	493c      	ldr	r1, [pc, #240]	; (802b040 <HTTP_ConfirmWebPwd+0x14c>) 802af50:	aa0c      	add	r2, sp, #48	; 0x30 802af52:	4633      	mov	r3, r6 802af54:	f7ff ffa0 	bl	802ae98 <GetParamValue>	  strncpy(tempStr, bufIn, 49);	  /* Add " " to the string in order GetParamValue() can be able to parse the param */	  strcat(tempStr, " ");	  if (GetParamValue(tempStr, "login=", login, &valueLen) && 802af58:	2800      	cmp	r0, #0 802af5a:	d0f2      	beq.n	802af42 <HTTP_ConfirmWebPwd+0x4e> 802af5c:	2400      	movs	r4, #0	      GetParamValue(tempStr, "password=", password, &valueLen))	  {	      for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {	        GetUserLogin(user_id, WebLogin, &valueLen); 802af5e:	4637      	mov	r7, r6 802af60:	4620      	mov	r0, r4 802af62:	a904      	add	r1, sp, #16 802af64:	463a      	mov	r2, r7 802af66:	f7fc feeb 	bl	8027d40 <GetUserLogin>	        GetUserPassword(user_id, WebPassword, &valueLen); 802af6a:	4620      	mov	r0, r4 802af6c:	a901      	add	r1, sp, #4 802af6e:	463a      	mov	r2, r7 802af70:	f7fc fefc 	bl	8027d6c <GetUserPassword>	        /* Check login and password */	        if ((strncmp(WebLogin, login, MAX_WEB_LOGIN_LEN) == 0) && 802af74:	a804      	add	r0, sp, #16 802af76:	a907      	add	r1, sp, #28 802af78:	220b      	movs	r2, #11 802af7a:	f7f6 ffdb 	bl	8021f34 <strncmp> 802af7e:	2800      	cmp	r0, #0 802af80:	d14f      	bne.n	802b022 <HTTP_ConfirmWebPwd+0x12e>	            (strncmp(WebPassword, password, MAX_WEB_PASSWD_LEN) == 0)) { 802af82:	a801      	add	r0, sp, #4 802af84:	a90c      	add	r1, sp, #48	; 0x30 802af86:	220b      	movs	r2, #11 802af88:	f7f6 ffd4 	bl	8021f34 <strncmp>	        GetUserLogin(user_id, WebLogin, &valueLen);	        GetUserPassword(user_id, WebPassword, &valueLen);	        /* Check login and password */	        if ((strncmp(WebLogin, login, MAX_WEB_LOGIN_LEN) == 0) && 802af8c:	4606      	mov	r6, r0 802af8e:	2800      	cmp	r0, #0 802af90:	d147      	bne.n	802b022 <HTTP_ConfirmWebPwd+0x12e>	            if (user_id >= 1) {	            }            /* TODO replace global flag with user-pass-cookie */            Authenticated = true; 802af92:	4b2a      	ldr	r3, [pc, #168]	; (802b03c <HTTP_ConfirmWebPwd+0x148>) 802af94:	2201      	movs	r2, #1 802af96:	701a      	strb	r2, [r3, #0]            /* Generate cookie */            sprintf(tempStr, "%X", (unsigned int)GetRandomNumber()); 802af98:	f7fb f898 	bl	80260cc <GetRandomNumber> 802af9c:	4929      	ldr	r1, [pc, #164]	; (802b044 <HTTP_ConfirmWebPwd+0x150>) 802af9e:	4602      	mov	r2, r0 802afa0:	a81b      	add	r0, sp, #108	; 0x6c 802afa2:	f7fc fbfd 	bl	80277a0 <tfp_sprintf>/**  * @brief Установка Cookie пользователя  */static void HTTP_SetUserCookie(char *str, uint8_t user_id){    strcpy(users[user_id].cookie, str); 802afa6:	4b28      	ldr	r3, [pc, #160]	; (802b048 <HTTP_ConfirmWebPwd+0x154>) 802afa8:	2014      	movs	r0, #20 802afaa:	fb00 3004 	mla	r0, r0, r4, r3 802afae:	a91b      	add	r1, sp, #108	; 0x6c 802afb0:	f7f6 ff00 	bl	8021db4 <strcpy>            sprintf(tempStr, "%X", (unsigned int)GetRandomNumber());            /* Set users cookie */            HTTP_SetUserCookie(tempStr, user_id);            HTTP_UpdateUserLoginTime(user_id); 802afb4:	4620      	mov	r0, r4 802afb6:	f7ff fd4b 	bl	802aa50 <HTTP_UpdateUserLoginTime>            /* Send login and cookie back */            strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\nSet-Cookie: uname="); 802afba:	4924      	ldr	r1, [pc, #144]	; (802b04c <HTTP_ConfirmWebPwd+0x158>) 802afbc:	4628      	mov	r0, r5 802afbe:	f7f6 fef9 	bl	8021db4 <strcpy>            strcat(bufOut, WebLogin); 802afc2:	a904      	add	r1, sp, #16 802afc4:	4628      	mov	r0, r5 802afc6:	f7f6 fde1 	bl	8021b8c <strcat>            strcat(bufOut, "\r\nSet-Cookie: id="); 802afca:	4921      	ldr	r1, [pc, #132]	; (802b050 <HTTP_ConfirmWebPwd+0x15c>) 802afcc:	4628      	mov	r0, r5 802afce:	f7f6 fddd 	bl	8021b8c <strcat>            strcat(bufOut, tempStr); 802afd2:	a91b      	add	r1, sp, #108	; 0x6c 802afd4:	4628      	mov	r0, r5 802afd6:	f7f6 fdd9 	bl	8021b8c <strcat>            sprintf(tempStr, "%d", user_id); 802afda:	4622      	mov	r2, r4 802afdc:	491d      	ldr	r1, [pc, #116]	; (802b054 <HTTP_ConfirmWebPwd+0x160>) 802afde:	a81b      	add	r0, sp, #108	; 0x6c 802afe0:	f7fc fbde 	bl	80277a0 <tfp_sprintf>            strcat(bufOut, "\r\nSet-Cookie: role="); 802afe4:	491c      	ldr	r1, [pc, #112]	; (802b058 <HTTP_ConfirmWebPwd+0x164>) 802afe6:	4628      	mov	r0, r5 802afe8:	f7f6 fdd0 	bl	8021b8c <strcat>            strcat(bufOut, tempStr); 802afec:	a91b      	add	r1, sp, #108	; 0x6c 802afee:	4628      	mov	r0, r5 802aff0:	f7f6 fdcc 	bl	8021b8c <strcat>            strcat(bufOut, "\r\n\r\n"); 802aff4:	4919      	ldr	r1, [pc, #100]	; (802b05c <HTTP_ConfirmWebPwd+0x168>) 802aff6:	4628      	mov	r0, r5 802aff8:	f7f6 fdc8 	bl	8021b8c <strcat>            strcat(bufOut,"<!DOCTYPE html><html lang=""><head><meta http-equiv=\"refresh\" content=\"0;url=/index.html\"/></head></html>\r\n\r\n"); 802affc:	4918      	ldr	r1, [pc, #96]	; (802b060 <HTTP_ConfirmWebPwd+0x16c>) 802affe:	4628      	mov	r0, r5 802b000:	f7f6 fdc4 	bl	8021b8c <strcat>            *lenBufOut = strlen(bufOut); 802b004:	4628      	mov	r0, r5 802b006:	f7f6 ff33 	bl	8021e70 <strlen>            switch (user_id) {                case 0:                    snprintf(buf, sizeof(buf), "Администратор");                    break;                case 1:                    snprintf(buf, sizeof(buf), "Пользователь"); 802b00a:	2128      	movs	r1, #40	; 0x28            strcat(bufOut, "\r\n\r\n");            strcat(bufOut,"<!DOCTYPE html><html lang=""><head><meta http-equiv=\"refresh\" content=\"0;url=/index.html\"/></head></html>\r\n\r\n");            *lenBufOut = strlen(bufOut);            switch (user_id) { 802b00c:	2c01      	cmp	r4, #1            strcat(bufOut, "\r\nSet-Cookie: role=");            strcat(bufOut, tempStr);            strcat(bufOut, "\r\n\r\n");            strcat(bufOut,"<!DOCTYPE html><html lang=""><head><meta http-equiv=\"refresh\" content=\"0;url=/index.html\"/></head></html>\r\n\r\n");            *lenBufOut = strlen(bufOut); 802b00e:	f8a8 0000 	strh.w	r0, [r8]            switch (user_id) {                case 0:                    snprintf(buf, sizeof(buf), "Администратор"); 802b012:	bf14      	ite	ne 802b014:	4a13      	ldrne	r2, [pc, #76]	; (802b064 <HTTP_ConfirmWebPwd+0x170>)                    break;                case 1:                    snprintf(buf, sizeof(buf), "Пользователь"); 802b016:	4a14      	ldreq	r2, [pc, #80]	; (802b068 <HTTP_ConfirmWebPwd+0x174>) 802b018:	a811      	add	r0, sp, #68	; 0x44 802b01a:	f7fc fba3 	bl	8027764 <tfp_snprintf>                    break;            }            /* Запускаем задачу-таймер логаута. */            /* TODO отправить ответ серверу о статусе пароля */            return SEND_REQUIRED_YES; 802b01e:	4630      	mov	r0, r6                case 0:                    snprintf(buf, sizeof(buf), "Администратор");                    break;                case 1:                    snprintf(buf, sizeof(buf), "Пользователь");                    break; 802b020:	e004      	b.n	802b02c <HTTP_ConfirmWebPwd+0x138>	  strcat(tempStr, " ");	  if (GetParamValue(tempStr, "login=", login, &valueLen) &&	      GetParamValue(tempStr, "password=", password, &valueLen))	  {	      for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) { 802b022:	3401      	adds	r4, #1 802b024:	b2e4      	uxtb	r4, r4 802b026:	2c02      	cmp	r4, #2 802b028:	d08b      	beq.n	802af42 <HTTP_ConfirmWebPwd+0x4e> 802b02a:	e799      	b.n	802af60 <HTTP_ConfirmWebPwd+0x6c>    /* TODO replace global flag with user-pass-cookie*/    Authenticated = false;    /* Wrong login or pass, return */    return SEND_REQUIRED_NO;} 802b02c:	b028      	add	sp, #160	; 0xa0 802b02e:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802b032:	bf00      	nop 802b034:	08036e41 	.word	0x08036e41 802b038:	0803b26b 	.word	0x0803b26b 802b03c:	20002ad9 	.word	0x20002ad9 802b040:	0803b272 	.word	0x0803b272 802b044:	0803b0c8 	.word	0x0803b0c8 802b048:	2000fbfc 	.word	0x2000fbfc 802b04c:	0803b27c 	.word	0x0803b27c 802b050:	0803b2b8 	.word	0x0803b2b8 802b054:	08036d34 	.word	0x08036d34 802b058:	0803b2ca 	.word	0x0803b2ca 802b05c:	0803b6a5 	.word	0x0803b6a5 802b060:	0803b2de 	.word	0x0803b2de 802b064:	0803b34a 	.word	0x0803b34a 802b068:	0803b365 	.word	0x0803b3650802b06c <HTTP_SetSettings>:/**  * @brief    * @retval None  */void HTTP_SetSettings(char *buf, uint16_t lenBuf){ 802b06c:	b530      	push	{r4, r5, lr}  uint8_t valueLen = 0; 802b06e:	2500      	movs	r5, #0/**  * @brief    * @retval None  */void HTTP_SetSettings(char *buf, uint16_t lenBuf){ 802b070:	b0a3      	sub	sp, #140	; 0x8c 802b072:	4604      	mov	r4, r0  //printf(buf);    //ClearParamString(buf);    memset(value, 0, len); 802b074:	2240      	movs	r2, #64	; 0x40 802b076:	4629      	mov	r1, r5 802b078:	a802      	add	r0, sp, #8  * @brief    * @retval None  */void HTTP_SetSettings(char *buf, uint16_t lenBuf){  uint8_t valueLen = 0; 802b07a:	f88d 5007 	strb.w	r5, [sp, #7]  //printf(buf);    //ClearParamString(buf);    memset(value, 0, len); 802b07e:	f7f6 fd1f 	bl	8021ac0 <memset>  memset(str, 0, MAX_WEB_PARAM_LEN); 802b082:	2240      	movs	r2, #64	; 0x40 802b084:	4629      	mov	r1, r5 802b086:	a812      	add	r0, sp, #72	; 0x48 802b088:	f7f6 fd1a 	bl	8021ac0 <memset>    /* SNMP */  GetParamValue(buf, "read_community=", value, &valueLen); 802b08c:	f10d 0307 	add.w	r3, sp, #7 802b090:	49a5      	ldr	r1, [pc, #660]	; (802b328 <HTTP_SetSettings+0x2bc>) 802b092:	aa02      	add	r2, sp, #8 802b094:	4620      	mov	r0, r4 802b096:	f7ff feff 	bl	802ae98 <GetParamValue>  SetReadCommunity(value); 802b09a:	a802      	add	r0, sp, #8 802b09c:	f7fc fff4 	bl	8028088 <SetReadCommunity>  memset(value, 0, len); 802b0a0:	2240      	movs	r2, #64	; 0x40 802b0a2:	4629      	mov	r1, r5 802b0a4:	a802      	add	r0, sp, #8 802b0a6:	f7f6 fd0b 	bl	8021ac0 <memset>    GetParamValue(buf, "write_community=", value, &valueLen); 802b0aa:	f10d 0307 	add.w	r3, sp, #7 802b0ae:	499f      	ldr	r1, [pc, #636]	; (802b32c <HTTP_SetSettings+0x2c0>) 802b0b0:	aa02      	add	r2, sp, #8 802b0b2:	4620      	mov	r0, r4 802b0b4:	f7ff fef0 	bl	802ae98 <GetParamValue>  SetWriteCommunity(value); 802b0b8:	a802      	add	r0, sp, #8 802b0ba:	f7fc ffeb 	bl	8028094 <SetWriteCommunity>  memset(value, 0, len); 802b0be:	2240      	movs	r2, #64	; 0x40 802b0c0:	4629      	mov	r1, r5 802b0c2:	a802      	add	r0, sp, #8 802b0c4:	f7f6 fcfc 	bl	8021ac0 <memset>        GetParamValue(buf, "managerIP=", value, &valueLen); 802b0c8:	f10d 0307 	add.w	r3, sp, #7 802b0cc:	4998      	ldr	r1, [pc, #608]	; (802b330 <HTTP_SetSettings+0x2c4>) 802b0ce:	aa02      	add	r2, sp, #8 802b0d0:	4620      	mov	r0, r4 802b0d2:	f7ff fee1 	bl	802ae98 <GetParamValue>  SetManagerIp(value); 802b0d6:	a802      	add	r0, sp, #8 802b0d8:	f7fc ffe2 	bl	80280a0 <SetManagerIp>  memset(value, 0, len); 802b0dc:	2240      	movs	r2, #64	; 0x40 802b0de:	4629      	mov	r1, r5 802b0e0:	a802      	add	r0, sp, #8 802b0e2:	f7f6 fced 	bl	8021ac0 <memset>  GetParamValue(buf, "managerIP2=", value, &valueLen); 802b0e6:	f10d 0307 	add.w	r3, sp, #7 802b0ea:	4992      	ldr	r1, [pc, #584]	; (802b334 <HTTP_SetSettings+0x2c8>) 802b0ec:	aa02      	add	r2, sp, #8 802b0ee:	4620      	mov	r0, r4 802b0f0:	f7ff fed2 	bl	802ae98 <GetParamValue>  SetManagerIp2(value); 802b0f4:	a802      	add	r0, sp, #8 802b0f6:	f7fc ffe1 	bl	80280bc <SetManagerIp2>  memset(value, 0, len); 802b0fa:	2240      	movs	r2, #64	; 0x40 802b0fc:	4629      	mov	r1, r5 802b0fe:	a802      	add	r0, sp, #8 802b100:	f7f6 fcde 	bl	8021ac0 <memset>  GetParamValue(buf, "managerIP3=", value, &valueLen); 802b104:	f10d 0307 	add.w	r3, sp, #7 802b108:	498b      	ldr	r1, [pc, #556]	; (802b338 <HTTP_SetSettings+0x2cc>) 802b10a:	aa02      	add	r2, sp, #8 802b10c:	4620      	mov	r0, r4 802b10e:	f7ff fec3 	bl	802ae98 <GetParamValue>  SetManagerIp3(value); 802b112:	a802      	add	r0, sp, #8 802b114:	f7fc ffe0 	bl	80280d8 <SetManagerIp3>  memset(value, 0, len); 802b118:	2240      	movs	r2, #64	; 0x40 802b11a:	4629      	mov	r1, r5 802b11c:	a802      	add	r0, sp, #8 802b11e:	f7f6 fccf 	bl	8021ac0 <memset>    GetParamValue(buf, "managerIP4=", value, &valueLen); 802b122:	f10d 0307 	add.w	r3, sp, #7 802b126:	4985      	ldr	r1, [pc, #532]	; (802b33c <HTTP_SetSettings+0x2d0>) 802b128:	aa02      	add	r2, sp, #8 802b12a:	4620      	mov	r0, r4 802b12c:	f7ff feb4 	bl	802ae98 <GetParamValue>  SetManagerIp4(value); 802b130:	a802      	add	r0, sp, #8 802b132:	f7fc ffdf 	bl	80280f4 <SetManagerIp4>  memset(value, 0, len); 802b136:	2240      	movs	r2, #64	; 0x40 802b138:	4629      	mov	r1, r5 802b13a:	a802      	add	r0, sp, #8 802b13c:	f7f6 fcc0 	bl	8021ac0 <memset>  GetParamValue(buf, "managerIP5=", value, &valueLen); 802b140:	f10d 0307 	add.w	r3, sp, #7 802b144:	497e      	ldr	r1, [pc, #504]	; (802b340 <HTTP_SetSettings+0x2d4>) 802b146:	aa02      	add	r2, sp, #8 802b148:	4620      	mov	r0, r4 802b14a:	f7ff fea5 	bl	802ae98 <GetParamValue>  SetManagerIp5(value); 802b14e:	a802      	add	r0, sp, #8 802b150:	f7fc ffde 	bl	8028110 <SetManagerIp5>  memset(value, 0, len); 802b154:	2240      	movs	r2, #64	; 0x40 802b156:	4629      	mov	r1, r5 802b158:	a802      	add	r0, sp, #8 802b15a:	f7f6 fcb1 	bl	8021ac0 <memset>  /* Сетевые параметры */  GetParamValue(buf, "dhcp=", value, &valueLen); 802b15e:	4979      	ldr	r1, [pc, #484]	; (802b344 <HTTP_SetSettings+0x2d8>) 802b160:	aa02      	add	r2, sp, #8 802b162:	f10d 0307 	add.w	r3, sp, #7 802b166:	4620      	mov	r0, r4 802b168:	f7ff fe96 	bl	802ae98 <GetParamValue>  SetDhcpStateStr(value); 802b16c:	a802      	add	r0, sp, #8 802b16e:	f7fc ff79 	bl	8028064 <SetDhcpStateStr>    if (strncmp(value, "on", 2) != 0)  // Если dhcp off устанавливаем параметры 802b172:	a802      	add	r0, sp, #8 802b174:	4974      	ldr	r1, [pc, #464]	; (802b348 <HTTP_SetSettings+0x2dc>) 802b176:	2202      	movs	r2, #2 802b178:	f7f6 fedc 	bl	8021f34 <strncmp> 802b17c:	2800      	cmp	r0, #0 802b17e:	d031      	beq.n	802b1e4 <HTTP_SetSettings+0x178>  {    memset(value, 0, len); 802b180:	4629      	mov	r1, r5 802b182:	2240      	movs	r2, #64	; 0x40 802b184:	a802      	add	r0, sp, #8 802b186:	f7f6 fc9b 	bl	8021ac0 <memset>    GetParamValue(buf, "ipaddr=", value, &valueLen); 802b18a:	f10d 0307 	add.w	r3, sp, #7 802b18e:	496f      	ldr	r1, [pc, #444]	; (802b34c <HTTP_SetSettings+0x2e0>) 802b190:	aa02      	add	r2, sp, #8 802b192:	4620      	mov	r0, r4 802b194:	f7ff fe80 	bl	802ae98 <GetParamValue>    SetIPStr(value); 802b198:	a802      	add	r0, sp, #8 802b19a:	f7fc ff51 	bl	8028040 <SetIPStr>    memset(value, 0, len); 802b19e:	4629      	mov	r1, r5 802b1a0:	2240      	movs	r2, #64	; 0x40 802b1a2:	a802      	add	r0, sp, #8 802b1a4:	f7f6 fc8c 	bl	8021ac0 <memset>      GetParamValue(buf, "gw=", value, &valueLen); 802b1a8:	f10d 0307 	add.w	r3, sp, #7 802b1ac:	4968      	ldr	r1, [pc, #416]	; (802b350 <HTTP_SetSettings+0x2e4>) 802b1ae:	aa02      	add	r2, sp, #8 802b1b0:	4620      	mov	r0, r4 802b1b2:	f7ff fe71 	bl	802ae98 <GetParamValue>    SetGatewayStr(value); 802b1b6:	a802      	add	r0, sp, #8 802b1b8:	f7fc ff48 	bl	802804c <SetGatewayStr>    memset(value, 0, len); 802b1bc:	4629      	mov	r1, r5 802b1be:	2240      	movs	r2, #64	; 0x40 802b1c0:	a802      	add	r0, sp, #8 802b1c2:	f7f6 fc7d 	bl	8021ac0 <memset>      GetParamValue(buf, "mask=", value, &valueLen); 802b1c6:	4963      	ldr	r1, [pc, #396]	; (802b354 <HTTP_SetSettings+0x2e8>) 802b1c8:	aa02      	add	r2, sp, #8 802b1ca:	f10d 0307 	add.w	r3, sp, #7 802b1ce:	4620      	mov	r0, r4 802b1d0:	f7ff fe62 	bl	802ae98 <GetParamValue>    SetMaskStr(value); 802b1d4:	a802      	add	r0, sp, #8 802b1d6:	f7fc ff3f 	bl	8028058 <SetMaskStr>    memset(value, 0, len); 802b1da:	a802      	add	r0, sp, #8 802b1dc:	4629      	mov	r1, r5 802b1de:	2240      	movs	r2, #64	; 0x40 802b1e0:	f7f6 fc6e 	bl	8021ac0 <memset>  }  memset(value, 0, len);   802b1e4:	2100      	movs	r1, #0 802b1e6:	2240      	movs	r2, #64	; 0x40 802b1e8:	a802      	add	r0, sp, #8 802b1ea:	f7f6 fc69 	bl	8021ac0 <memset>  /* параметры RADIUS*/  GetParamValue(buf, "rs_enabled=", value, &valueLen); 802b1ee:	f10d 0307 	add.w	r3, sp, #7 802b1f2:	4959      	ldr	r1, [pc, #356]	; (802b358 <HTTP_SetSettings+0x2ec>) 802b1f4:	aa02      	add	r2, sp, #8 802b1f6:	4620      	mov	r0, r4 802b1f8:	f7ff fe4e 	bl	802ae98 <GetParamValue>  SetRDSEnableStateStr(value); 802b1fc:	a802      	add	r0, sp, #8 802b1fe:	f7fc ffd9 	bl	80281b4 <SetRDSEnableStateStr>	memset(value, 0, len); 802b202:	2100      	movs	r1, #0 802b204:	2240      	movs	r2, #64	; 0x40 802b206:	a802      	add	r0, sp, #8 802b208:	f7f6 fc5a 	bl	8021ac0 <memset>	GetParamValue(buf, "rs_server=", value, &valueLen); 802b20c:	f10d 0307 	add.w	r3, sp, #7 802b210:	4952      	ldr	r1, [pc, #328]	; (802b35c <HTTP_SetSettings+0x2f0>) 802b212:	aa02      	add	r2, sp, #8 802b214:	4620      	mov	r0, r4 802b216:	f7ff fe3f 	bl	802ae98 <GetParamValue>	SetRDSIpStr(value); 802b21a:	a802      	add	r0, sp, #8 802b21c:	f7fc ffaa 	bl	8028174 <SetRDSIpStr>	memset(value, 0, len); 802b220:	2100      	movs	r1, #0 802b222:	2240      	movs	r2, #64	; 0x40 802b224:	a802      	add	r0, sp, #8 802b226:	f7f6 fc4b 	bl	8021ac0 <memset>	GetParamValue(buf, "rs_port=", value, &valueLen); 802b22a:	f10d 0307 	add.w	r3, sp, #7 802b22e:	494c      	ldr	r1, [pc, #304]	; (802b360 <HTTP_SetSettings+0x2f4>) 802b230:	aa02      	add	r2, sp, #8 802b232:	4620      	mov	r0, r4 802b234:	f7ff fe30 	bl	802ae98 <GetParamValue>	SetRDSPortStr(value); 802b238:	a802      	add	r0, sp, #8 802b23a:	f7fc ffa1 	bl	8028180 <SetRDSPortStr>	memset(value, 0, len); 802b23e:	2100      	movs	r1, #0 802b240:	2240      	movs	r2, #64	; 0x40 802b242:	a802      	add	r0, sp, #8 802b244:	f7f6 fc3c 	bl	8021ac0 <memset>	GetParamValue(buf, "rs_pwd=", value, &valueLen); 802b248:	f10d 0307 	add.w	r3, sp, #7 802b24c:	4945      	ldr	r1, [pc, #276]	; (802b364 <HTTP_SetSettings+0x2f8>) 802b24e:	aa02      	add	r2, sp, #8 802b250:	4620      	mov	r0, r4 802b252:	f7ff fe21 	bl	802ae98 <GetParamValue>	SetRDSPasswordkStr(value); 802b256:	a802      	add	r0, sp, #8 802b258:	f7fc ffa6 	bl	80281a8 <SetRDSPasswordkStr>	memset(value, 0, len); 802b25c:	2100      	movs	r1, #0 802b25e:	2240      	movs	r2, #64	; 0x40 802b260:	a802      	add	r0, sp, #8 802b262:	f7f6 fc2d 	bl	8021ac0 <memset>	GetParamValue(buf, "rs_key=", value, &valueLen); 802b266:	f10d 0307 	add.w	r3, sp, #7 802b26a:	493f      	ldr	r1, [pc, #252]	; (802b368 <HTTP_SetSettings+0x2fc>) 802b26c:	aa02      	add	r2, sp, #8 802b26e:	4620      	mov	r0, r4 802b270:	f7ff fe12 	bl	802ae98 <GetParamValue>	SetRDSKeyAccesstStr(value); 802b274:	a802      	add	r0, sp, #8 802b276:	f7fc ff8d 	bl	8028194 <SetRDSKeyAccesstStr>	memset(value, 0, len); 802b27a:	2100      	movs	r1, #0 802b27c:	2240      	movs	r2, #64	; 0x40 802b27e:	a802      	add	r0, sp, #8 802b280:	f7f6 fc1e 	bl	8021ac0 <memset>  // Параметры реле и сухих контактов  GetParamValue(buf, "di1=", value, &valueLen); 802b284:	f10d 0307 	add.w	r3, sp, #7 802b288:	aa02      	add	r2, sp, #8 802b28a:	4938      	ldr	r1, [pc, #224]	; (802b36c <HTTP_SetSettings+0x300>) 802b28c:	4620      	mov	r0, r4 802b28e:	f7ff fe03 	bl	802ae98 <GetParamValue>  SetDINTypeActStr(value, 0); 802b292:	2100      	movs	r1, #0 802b294:	a802      	add	r0, sp, #8 802b296:	f7fd f883 	bl	80283a0 <SetDINTypeActStr>  memset(value, 0, len); 802b29a:	2100      	movs	r1, #0 802b29c:	2240      	movs	r2, #64	; 0x40 802b29e:	a802      	add	r0, sp, #8 802b2a0:	f7f6 fc0e 	bl	8021ac0 <memset>  GetParamValue(buf, "ro1=", value, &valueLen); 802b2a4:	f10d 0307 	add.w	r3, sp, #7 802b2a8:	aa02      	add	r2, sp, #8 802b2aa:	4931      	ldr	r1, [pc, #196]	; (802b370 <HTTP_SetSettings+0x304>) 802b2ac:	4620      	mov	r0, r4 802b2ae:	f7ff fdf3 	bl	802ae98 <GetParamValue>  SetROTypeActStr(value, 0); 802b2b2:	a802      	add	r0, sp, #8 802b2b4:	2100      	movs	r1, #0 802b2b6:	f7fd f891 	bl	80283dc <SetROTypeActStr>  memset(value, 0, len); 802b2ba:	2100      	movs	r1, #0 802b2bc:	2240      	movs	r2, #64	; 0x40 802b2be:	a802      	add	r0, sp, #8 802b2c0:	f7f6 fbfe 	bl	8021ac0 <memset>  GetParamValue(buf, "ro2=", value, &valueLen); 802b2c4:	f10d 0307 	add.w	r3, sp, #7 802b2c8:	aa02      	add	r2, sp, #8 802b2ca:	492a      	ldr	r1, [pc, #168]	; (802b374 <HTTP_SetSettings+0x308>) 802b2cc:	4620      	mov	r0, r4 802b2ce:	f7ff fde3 	bl	802ae98 <GetParamValue>  SetROTypeActStr(value, 1); 802b2d2:	a802      	add	r0, sp, #8 802b2d4:	2101      	movs	r1, #1 802b2d6:	f7fd f881 	bl	80283dc <SetROTypeActStr>  memset(value, 0, len); 802b2da:	2100      	movs	r1, #0 802b2dc:	2240      	movs	r2, #64	; 0x40 802b2de:	a802      	add	r0, sp, #8 802b2e0:	f7f6 fbee 	bl	8021ac0 <memset>  // Параметры даты и времени  GetParamValue(buf, "ntp=", value, &valueLen); 802b2e4:	4924      	ldr	r1, [pc, #144]	; (802b378 <HTTP_SetSettings+0x30c>) 802b2e6:	aa02      	add	r2, sp, #8 802b2e8:	f10d 0307 	add.w	r3, sp, #7 802b2ec:	4620      	mov	r0, r4 802b2ee:	f7ff fdd3 	bl	802ae98 <GetParamValue>  SetSntpStateStr(value); 802b2f2:	a802      	add	r0, sp, #8 802b2f4:	f7fc ffd8 	bl	80282a8 <SetSntpStateStr>  if (strncmp(value, "1", 1) == 0)  // Если ntp on устанавливаем параметры 802b2f8:	a802      	add	r0, sp, #8 802b2fa:	4920      	ldr	r1, [pc, #128]	; (802b37c <HTTP_SetSettings+0x310>) 802b2fc:	2201      	movs	r2, #1 802b2fe:	f7f6 fe19 	bl	8021f34 <strncmp> 802b302:	4605      	mov	r5, r0  {    memset(value, 0, len); 802b304:	a802      	add	r0, sp, #8  // Параметры даты и времени  GetParamValue(buf, "ntp=", value, &valueLen);  SetSntpStateStr(value);  if (strncmp(value, "1", 1) == 0)  // Если ntp on устанавливаем параметры 802b306:	2d00      	cmp	r5, #0 802b308:	d13c      	bne.n	802b384 <HTTP_SetSettings+0x318>  {    memset(value, 0, len); 802b30a:	4629      	mov	r1, r5 802b30c:	2240      	movs	r2, #64	; 0x40 802b30e:	f7f6 fbd7 	bl	8021ac0 <memset>    GetParamValue(buf, "ntpservip=", value, &valueLen); 802b312:	4620      	mov	r0, r4 802b314:	491a      	ldr	r1, [pc, #104]	; (802b380 <HTTP_SetSettings+0x314>) 802b316:	aa02      	add	r2, sp, #8 802b318:	f10d 0307 	add.w	r3, sp, #7 802b31c:	f7ff fdbc 	bl	802ae98 <GetParamValue>    SetSntpServerIpStr(value); 802b320:	a802      	add	r0, sp, #8 802b322:	f7fc ffe1 	bl	80282e8 <SetSntpServerIpStr> 802b326:	e051      	b.n	802b3cc <HTTP_SetSettings+0x360> 802b328:	0803b37e 	.word	0x0803b37e 802b32c:	0803b38e 	.word	0x0803b38e 802b330:	0803b39f 	.word	0x0803b39f 802b334:	0803b3aa 	.word	0x0803b3aa 802b338:	0803b3b6 	.word	0x0803b3b6 802b33c:	0803b3c2 	.word	0x0803b3c2 802b340:	0803b3ce 	.word	0x0803b3ce 802b344:	0803b3da 	.word	0x0803b3da 802b348:	08036d73 	.word	0x08036d73 802b34c:	0803b3e0 	.word	0x0803b3e0 802b350:	0803b3e8 	.word	0x0803b3e8 802b354:	0803b3ec 	.word	0x0803b3ec 802b358:	0803b3f2 	.word	0x0803b3f2 802b35c:	0803b3fe 	.word	0x0803b3fe 802b360:	0803b409 	.word	0x0803b409 802b364:	0803b412 	.word	0x0803b412 802b368:	0803b41a 	.word	0x0803b41a 802b36c:	0803b422 	.word	0x0803b422 802b370:	0803b427 	.word	0x0803b427 802b374:	0803b42c 	.word	0x0803b42c 802b378:	0803b431 	.word	0x0803b431 802b37c:	08036e2f 	.word	0x08036e2f 802b380:	0803b436 	.word	0x0803b436    memset(value, 0, len);  }  else if (strncmp(value, "0", 1) == 0){ 802b384:	4929      	ldr	r1, [pc, #164]	; (802b42c <HTTP_SetSettings+0x3c0>) 802b386:	2201      	movs	r2, #1 802b388:	f7f6 fdd4 	bl	8021f34 <strncmp> 802b38c:	4605      	mov	r5, r0 802b38e:	bb10      	cbnz	r0, 802b3d6 <HTTP_SetSettings+0x36a>      GetParamValue(buf, "date=", value, &valueLen); 802b390:	f10d 0307 	add.w	r3, sp, #7 802b394:	4926      	ldr	r1, [pc, #152]	; (802b430 <HTTP_SetSettings+0x3c4>) 802b396:	aa02      	add	r2, sp, #8 802b398:	4620      	mov	r0, r4 802b39a:	f7ff fd7d 	bl	802ae98 <GetParamValue>      SetDateStr(value); 802b39e:	a802      	add	r0, sp, #8 802b3a0:	f7fc ff1a 	bl	80281d8 <SetDateStr>      memset(value, 0, len); 802b3a4:	4629      	mov	r1, r5 802b3a6:	2240      	movs	r2, #64	; 0x40 802b3a8:	a802      	add	r0, sp, #8 802b3aa:	f7f6 fb89 	bl	8021ac0 <memset>      GetParamValue(buf, "time=", value, &valueLen); 802b3ae:	4921      	ldr	r1, [pc, #132]	; (802b434 <HTTP_SetSettings+0x3c8>) 802b3b0:	aa02      	add	r2, sp, #8 802b3b2:	f10d 0307 	add.w	r3, sp, #7 802b3b6:	4620      	mov	r0, r4 802b3b8:	f7ff fd6e 	bl	802ae98 <GetParamValue>      url_decode(str, sizeof(str), value); 802b3bc:	a812      	add	r0, sp, #72	; 0x48 802b3be:	2140      	movs	r1, #64	; 0x40 802b3c0:	aa02      	add	r2, sp, #8 802b3c2:	f7fd fd4d 	bl	8028e60 <url_decode>      SetTimeStr(str); 802b3c6:	a812      	add	r0, sp, #72	; 0x48 802b3c8:	f7fc ff3e 	bl	8028248 <SetTimeStr>      memset(value, 0, len); 802b3cc:	a802      	add	r0, sp, #8 802b3ce:	4629      	mov	r1, r5 802b3d0:	2240      	movs	r2, #64	; 0x40 802b3d2:	f7f6 fb75 	bl	8021ac0 <memset>  }  GetParamValue(buf, "utc=", value, &valueLen); 802b3d6:	4918      	ldr	r1, [pc, #96]	; (802b438 <HTTP_SetSettings+0x3cc>) 802b3d8:	aa02      	add	r2, sp, #8 802b3da:	f10d 0307 	add.w	r3, sp, #7 802b3de:	4620      	mov	r0, r4 802b3e0:	f7ff fd5a 	bl	802ae98 <GetParamValue>  SetSntpTimeZoneStr(value); 802b3e4:	a802      	add	r0, sp, #8 802b3e6:	f7fc ff85 	bl	80282f4 <SetSntpTimeZoneStr>  memset(value, 0, len); 802b3ea:	2100      	movs	r1, #0 802b3ec:	2240      	movs	r2, #64	; 0x40 802b3ee:	a802      	add	r0, sp, #8 802b3f0:	f7f6 fb66 	bl	8021ac0 <memset>    /* Если параметры WEB изменились выставляем флаг, сохраняем настройки и перезагружаемся */  if (GetStateWebReinit() == true) 802b3f4:	f00a f978 	bl	80356e8 <GetStateWebReinit> 802b3f8:	b1a0      	cbz	r0, 802b424 <HTTP_SetSettings+0x3b8>  {		SetWebReinitFlag(true); 802b3fa:	2001      	movs	r0, #1 802b3fc:	f7fc fe14 	bl	8028028 <SetWebReinitFlag>	HTTP_SaveSettings(); 802b400:	f001 f955 	bl	802c6ae <HTTP_SaveSettings>    /* Блокируем управление ключем на тау секунд*/    //IO_KeyBlockOn();    vTaskDelay(1010); 802b404:	f240 30f2 	movw	r0, #1010	; 0x3f2 802b408:	f7fe fd4c 	bl	8029ea4 <vTaskDelay> 802b40c:	f3bf 8f4f 	dsb	sy                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | 802b410:	4a0a      	ldr	r2, [pc, #40]	; (802b43c <HTTP_SetSettings+0x3d0>) 802b412:	4b0b      	ldr	r3, [pc, #44]	; (802b440 <HTTP_SetSettings+0x3d4>) 802b414:	68d1      	ldr	r1, [r2, #12] 802b416:	f401 61e0 	and.w	r1, r1, #1792	; 0x700 802b41a:	430b      	orrs	r3, r1__STATIC_INLINE void NVIC_SystemReset(void)//static inline void NVIC_SystemReset(void){  __DSB();                                                     /* Ensure all outstanding memory accesses included                                                                  buffered write are completed before reset */  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      | 802b41c:	60d3      	str	r3, [r2, #12] 802b41e:	f3bf 8f4f 	dsb	sy 802b422:	e7fe      	b.n	802b422 <HTTP_SetSettings+0x3b6>	NVIC_SystemReset();  }	    HTTP_SaveSettings(); 802b424:	f001 f943 	bl	802c6ae <HTTP_SaveSettings>} 802b428:	b023      	add	sp, #140	; 0x8c 802b42a:	bd30      	pop	{r4, r5, pc} 802b42c:	08036dd2 	.word	0x08036dd2 802b430:	0803b458 	.word	0x0803b458 802b434:	0803b441 	.word	0x0803b441 802b438:	0803b447 	.word	0x0803b447 802b43c:	e000ed00 	.word	0xe000ed00 802b440:	05fa0004 	.word	0x05fa00040802b444 <HTTP_SettingsPage>:/**  * @brief    * @retval None  */int HTTP_SettingsPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b444:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802b448:	4606      	mov	r6, r0 802b44a:	b088      	sub	sp, #32 802b44c:	460c      	mov	r4, r1 802b44e:	4690      	mov	r8, r2  char tempStr[30];  strncpy(tempStr, bufIn, 30); 802b450:	4631      	mov	r1, r6 802b452:	221e      	movs	r2, #30 802b454:	4668      	mov	r0, sp/**  * @brief    * @retval None  */int HTTP_SettingsPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b456:	461f      	mov	r7, r3  char tempStr[30];  strncpy(tempStr, bufIn, 30); 802b458:	f7f6 fdc2 	bl	8021fe0 <strncpy>    /* В запросе нет параметров, нужно формировать JSON ответ */  if (strpbrk(tempStr,"?") == 0) 802b45c:	4668      	mov	r0, sp 802b45e:	490e      	ldr	r1, [pc, #56]	; (802b498 <HTTP_SettingsPage+0x54>) 802b460:	f7f6 fdf0 	bl	8022044 <strpbrk> 802b464:	4605      	mov	r5, r0 802b466:	b970      	cbnz	r0, 802b486 <HTTP_SettingsPage+0x42>  {	memset(bufOut, 0, SEND_BUF_MAX_LEN); 802b468:	4629      	mov	r1, r5 802b46a:	f44f 62fa 	mov.w	r2, #2000	; 0x7d0 802b46e:	4620      	mov	r0, r4 802b470:	f7f6 fb26 	bl	8021ac0 <memset>		HTTP_GetSettings(bufOut); 802b474:	4620      	mov	r0, r4 802b476:	f000 fe53 	bl	802c120 <HTTP_GetSettings>	    //printf(bufOut);        *lenBufOut = strlen(bufOut); 802b47a:	4620      	mov	r0, r4 802b47c:	f7f6 fcf8 	bl	8021e70 <strlen> 802b480:	8038      	strh	r0, [r7, #0]		return SEND_REQUIRED_YES; 802b482:	4628      	mov	r0, r5 802b484:	e004      	b.n	802b490 <HTTP_SettingsPage+0x4c>  }  /* В запросе есть параметры, нужно парсить и сохранять настройки */  else  {	HTTP_SetSettings(bufIn, lenBufIn); 802b486:	4630      	mov	r0, r6 802b488:	4641      	mov	r1, r8 802b48a:	f7ff fdef 	bl	802b06c <HTTP_SetSettings>	    return SEND_REQUIRED_NO; 802b48e:	2001      	movs	r0, #1  }} 802b490:	b008      	add	sp, #32 802b492:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802b496:	bf00      	nop 802b498:	0803b44c 	.word	0x0803b44c0802b49c <GetCookieValue>:/**  * @brief    * @retval None  */uint8_t GetCookieValue(char *inStr, char *paramName, char *paramValue, uint8_t *paramLen){ 802b49c:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802b4a0:	4690      	mov	r8, r2 802b4a2:	461f      	mov	r7, r3  char *beginValue = 0;  char *endValue = 0;  int  len = 0;  char *strPtr = 0;  strPtr = strstr(inStr, paramName); 802b4a4:	f7f6 ff64 	bl	8022370 <strstr>  if (strPtr != 0) 802b4a8:	4605      	mov	r5, r0 802b4aa:	b1e0      	cbz	r0, 802b4e6 <GetCookieValue+0x4a>  {    beginValue = strpbrk(strPtr,"="); 802b4ac:	490f      	ldr	r1, [pc, #60]	; (802b4ec <GetCookieValue+0x50>) 802b4ae:	f7f6 fdc9 	bl	8022044 <strpbrk>    endValue = strpbrk(strPtr,";"); 802b4b2:	490f      	ldr	r1, [pc, #60]	; (802b4f0 <GetCookieValue+0x54>)  strPtr = strstr(inStr, paramName);  if (strPtr != 0)  {    beginValue = strpbrk(strPtr,"="); 802b4b4:	4606      	mov	r6, r0    endValue = strpbrk(strPtr,";"); 802b4b6:	4628      	mov	r0, r5 802b4b8:	f7f6 fdc4 	bl	8022044 <strpbrk>    if (endValue == 0) 802b4bc:	4604      	mov	r4, r0 802b4be:	b920      	cbnz	r0, 802b4ca <GetCookieValue+0x2e>      endValue = strpbrk(strPtr,"\n"); 802b4c0:	4628      	mov	r0, r5 802b4c2:	490c      	ldr	r1, [pc, #48]	; (802b4f4 <GetCookieValue+0x58>) 802b4c4:	f7f6 fdbe 	bl	8022044 <strpbrk> 802b4c8:	4604      	mov	r4, r0    len = endValue - beginValue - 1; 802b4ca:	1ba5      	subs	r5, r4, r6 802b4cc:	3d01      	subs	r5, #1    strncpy(paramValue, beginValue + 1, len); 802b4ce:	4640      	mov	r0, r8 802b4d0:	1c71      	adds	r1, r6, #1 802b4d2:	462a      	mov	r2, r5 802b4d4:	f7f6 fd84 	bl	8021fe0 <strncpy>    *endValue = '0'; 802b4d8:	2330      	movs	r3, #48	; 0x30 802b4da:	7023      	strb	r3, [r4, #0]    *beginValue = '0';    *paramLen = len;    return 1; 802b4dc:	2001      	movs	r0, #1    if (endValue == 0)      endValue = strpbrk(strPtr,"\n");    len = endValue - beginValue - 1;    strncpy(paramValue, beginValue + 1, len);    *endValue = '0';    *beginValue = '0'; 802b4de:	7033      	strb	r3, [r6, #0]    *paramLen = len; 802b4e0:	703d      	strb	r5, [r7, #0]    return 1; 802b4e2:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}  }  else  {    *paramLen = 0; 802b4e6:	7038      	strb	r0, [r7, #0]    return 0;  }} 802b4e8:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802b4ec:	0803b425 	.word	0x0803b425 802b4f0:	0803b44e 	.word	0x0803b44e 802b4f4:	0803b6a8 	.word	0x0803b6a80802b4f8 <ClearParamString>:  }}*/void ClearParamString(char *inBuf){ 802b4f8:	b510      	push	{r4, lr}  uint16_t len;  char *str;    str = strstr(inBuf, "HTTP"); 802b4fa:	4908      	ldr	r1, [pc, #32]	; (802b51c <ClearParamString+0x24>)  }}*/void ClearParamString(char *inBuf){ 802b4fc:	4604      	mov	r4, r0  uint16_t len;  char *str;    str = strstr(inBuf, "HTTP"); 802b4fe:	f7f6 ff37 	bl	8022370 <strstr>    if (str != 0) 802b502:	b148      	cbz	r0, 802b518 <ClearParamString+0x20>  {    len = str - inBuf; 802b504:	1b02      	subs	r2, r0, r4	memset(str, 0, RECIVE_BUF_MAX_LEN - len - 1); 802b506:	b292      	uxth	r2, r2 802b508:	f5c2 62bb 	rsb	r2, r2, #1496	; 0x5d8 802b50c:	2100      	movs	r1, #0 802b50e:	3203      	adds	r2, #3  }} 802b510:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  str = strstr(inBuf, "HTTP");    if (str != 0)  {    len = str - inBuf;	memset(str, 0, RECIVE_BUF_MAX_LEN - len - 1); 802b514:	f7f6 bad4 	b.w	8021ac0 <memset> 802b518:	bd10      	pop	{r4, pc} 802b51a:	bf00      	nop 802b51c:	0803b450 	.word	0x0803b4500802b520 <HTTP_Prodate>:/**  * @brief  Установка даты производства  */// TODO Убрать заглушку!void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b520:	b5f0      	push	{r4, r5, r6, r7, lr}  uint8_t valueLen = 0; 802b522:	2500      	movs	r5, #0/**  * @brief  Установка даты производства  */// TODO Убрать заглушку!void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b524:	b087      	sub	sp, #28 802b526:	4606      	mov	r6, r0 802b528:	460c      	mov	r4, r1  uint8_t valueLen = 0;  char value[20];    memset(bufOut, 0, SEND_BUF_MAX_LEN); 802b52a:	f44f 62fa 	mov.w	r2, #2000	; 0x7d0 802b52e:	4608      	mov	r0, r1 802b530:	4629      	mov	r1, r5/**  * @brief  Установка даты производства  */// TODO Убрать заглушку!void HTTP_Prodate(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b532:	461f      	mov	r7, r3  uint8_t valueLen = 0; 802b534:	f88d 5003 	strb.w	r5, [sp, #3]  char value[20];    memset(bufOut, 0, SEND_BUF_MAX_LEN); 802b538:	f7f6 fac2 	bl	8021ac0 <memset>    ClearParamString(bufIn); 802b53c:	4630      	mov	r0, r6 802b53e:	f7ff ffdb 	bl	802b4f8 <ClearParamString>    memset(value, 0, 20); 802b542:	4629      	mov	r1, r5 802b544:	2214      	movs	r2, #20 802b546:	a801      	add	r0, sp, #4 802b548:	f7f6 faba 	bl	8021ac0 <memset>  GetParamValue(bufIn, "prodate=", value, &valueLen); 802b54c:	aa01      	add	r2, sp, #4 802b54e:	f10d 0303 	add.w	r3, sp, #3 802b552:	490b      	ldr	r1, [pc, #44]	; (802b580 <HTTP_Prodate+0x60>) 802b554:	4630      	mov	r0, r6 802b556:	f7ff fc9f 	bl	802ae98 <GetParamValue>  printf(value);  printf("\r\n");  */    /* Устанавливаем дату производства */  SETTINGS_SetProDate(value, valueLen); 802b55a:	f89d 1003 	ldrb.w	r1, [sp, #3] 802b55e:	a801      	add	r0, sp, #4 802b560:	f7fd f96c 	bl	802883c <SETTINGS_SetProDate>    /* Устанавливаем дату следующей профилактики +1 год */  RTC_SetProfTime(value); 802b564:	a801      	add	r0, sp, #4 802b566:	f7fb f8eb 	bl	8026740 <RTC_SetProfTime>    /* Пока отправляем true */  strcpy(bufOut, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\nTrue"); 802b56a:	4906      	ldr	r1, [pc, #24]	; (802b584 <HTTP_Prodate+0x64>) 802b56c:	4620      	mov	r0, r4 802b56e:	f7f6 fc21 	bl	8021db4 <strcpy>  *lenBufOut = strlen(bufOut); 802b572:	4620      	mov	r0, r4 802b574:	f7f6 fc7c 	bl	8021e70 <strlen> 802b578:	8038      	strh	r0, [r7, #0]   // TEST_SetServerFlag();} 802b57a:	b007      	add	sp, #28 802b57c:	bdf0      	pop	{r4, r5, r6, r7, pc} 802b57e:	bf00      	nop 802b580:	0803b455 	.word	0x0803b455 802b584:	0803b45e 	.word	0x0803b45e0802b588 <HTTP_ReplaceSimbol>:  * @param  *str - входная строка  * @param  sim1 - символ который надо заменить  * @param  sim2 - символ на который надо заменить  */void HTTP_ReplaceSimbol(char *str, char sim1, char sim2){ 802b588:	b570      	push	{r4, r5, r6, lr} 802b58a:	4604      	mov	r4, r0 802b58c:	460d      	mov	r5, r1 802b58e:	4616      	mov	r6, r2  uint16_t len = strlen(str); 802b590:	f7f6 fc6e 	bl	8021e70 <strlen>    for (uint16_t i = 0; i < len; i++) 802b594:	4623      	mov	r3, r4  * @param  sim1 - символ который надо заменить  * @param  sim2 - символ на который надо заменить  */void HTTP_ReplaceSimbol(char *str, char sim1, char sim2){  uint16_t len = strlen(str); 802b596:	b280      	uxth	r0, r0    for (uint16_t i = 0; i < len; i++) 802b598:	e005      	b.n	802b5a6 <HTTP_ReplaceSimbol+0x1e>  {    if (*str == sim1) 802b59a:	f813 2b01 	ldrb.w	r2, [r3], #1 802b59e:	42aa      	cmp	r2, r5	  *str = sim2; 802b5a0:	bf08      	it	eq 802b5a2:	f803 6c01 	strbeq.w	r6, [r3, #-1]  */void HTTP_ReplaceSimbol(char *str, char sim1, char sim2){  uint16_t len = strlen(str);    for (uint16_t i = 0; i < len; i++) 802b5a6:	1b1a      	subs	r2, r3, r4 802b5a8:	b292      	uxth	r2, r2 802b5aa:	4282      	cmp	r2, r0 802b5ac:	d3f5      	bcc.n	802b59a <HTTP_ReplaceSimbol+0x12>  {    if (*str == sim1)	  *str = sim2;	str++;  }} 802b5ae:	bd70      	pop	{r4, r5, r6, pc}0802b5b0 <HTTP_SetInfo>:/**  * @brief    * @retval None  */void HTTP_SetInfo(char *buf, uint16_t lenBuf){ 802b5b0:	b530      	push	{r4, r5, lr} 802b5b2:	b09f      	sub	sp, #124	; 0x7c  uint8_t valueLen = 0; 802b5b4:	2400      	movs	r4, #0/**  * @brief    * @retval None  */void HTTP_SetInfo(char *buf, uint16_t lenBuf){ 802b5b6:	4605      	mov	r5, r0  uint8_t valueLen = 0; 802b5b8:	f88d 4007 	strb.w	r4, [sp, #7]  const uint8_t len = 110;  char value[110];  ClearParamString(buf); 802b5bc:	f7ff ff9c 	bl	802b4f8 <ClearParamString>    memset(value, 0, len); 802b5c0:	4621      	mov	r1, r4 802b5c2:	226e      	movs	r2, #110	; 0x6e 802b5c4:	a802      	add	r0, sp, #8 802b5c6:	f7f6 fa7b 	bl	8021ac0 <memset>    /* Владелец */  GetParamValue(buf, "owner=", value, &valueLen); 802b5ca:	f10d 0307 	add.w	r3, sp, #7 802b5ce:	aa02      	add	r2, sp, #8 802b5d0:	4628      	mov	r0, r5 802b5d2:	491e      	ldr	r1, [pc, #120]	; (802b64c <HTTP_SetInfo+0x9c>) 802b5d4:	f7ff fc60 	bl	802ae98 <GetParamValue>  HTTP_ReplaceSimbol(value, '+', ' '); 802b5d8:	212b      	movs	r1, #43	; 0x2b 802b5da:	2220      	movs	r2, #32 802b5dc:	a802      	add	r0, sp, #8 802b5de:	f7ff ffd3 	bl	802b588 <HTTP_ReplaceSimbol>  SetOwner(value); 802b5e2:	a802      	add	r0, sp, #8 802b5e4:	f7fc fda2 	bl	802812c <SetOwner>  memset(value, 0, len); 802b5e8:	4621      	mov	r1, r4 802b5ea:	226e      	movs	r2, #110	; 0x6e 802b5ec:	a802      	add	r0, sp, #8 802b5ee:	f7f6 fa67 	bl	8021ac0 <memset>    /* Владелец */  GetParamValue(buf, "sysLocation=", value, &valueLen); 802b5f2:	f10d 0307 	add.w	r3, sp, #7 802b5f6:	aa02      	add	r2, sp, #8 802b5f8:	4628      	mov	r0, r5 802b5fa:	4915      	ldr	r1, [pc, #84]	; (802b650 <HTTP_SetInfo+0xa0>) 802b5fc:	f7ff fc4c 	bl	802ae98 <GetParamValue>  HTTP_ReplaceSimbol(value, '+', ' '); 802b600:	212b      	movs	r1, #43	; 0x2b 802b602:	2220      	movs	r2, #32 802b604:	a802      	add	r0, sp, #8 802b606:	f7ff ffbf 	bl	802b588 <HTTP_ReplaceSimbol>  SetLocation(value); 802b60a:	a802      	add	r0, sp, #8 802b60c:	f7fc fd9e 	bl	802814c <SetLocation>  memset(value, 0, len); 802b610:	4621      	mov	r1, r4 802b612:	226e      	movs	r2, #110	; 0x6e 802b614:	a802      	add	r0, sp, #8 802b616:	f7f6 fa53 	bl	8021ac0 <memset>    /* Комментарий */  GetParamValue(buf, "comment=", value, &valueLen); 802b61a:	f10d 0307 	add.w	r3, sp, #7 802b61e:	aa02      	add	r2, sp, #8 802b620:	4628      	mov	r0, r5 802b622:	490c      	ldr	r1, [pc, #48]	; (802b654 <HTTP_SetInfo+0xa4>) 802b624:	f7ff fc38 	bl	802ae98 <GetParamValue>  HTTP_ReplaceSimbol(value, '+', ' '); 802b628:	212b      	movs	r1, #43	; 0x2b 802b62a:	2220      	movs	r2, #32 802b62c:	a802      	add	r0, sp, #8 802b62e:	f7ff ffab 	bl	802b588 <HTTP_ReplaceSimbol>  SetComment(value); 802b632:	a802      	add	r0, sp, #8 802b634:	f7fc fd98 	bl	8028168 <SetComment>  memset(value, 0, len); 802b638:	4621      	mov	r1, r4 802b63a:	226e      	movs	r2, #110	; 0x6e 802b63c:	a802      	add	r0, sp, #8 802b63e:	f7f6 fa3f 	bl	8021ac0 <memset>   HTTP_SaveSettings(); 802b642:	f001 f834 	bl	802c6ae <HTTP_SaveSettings>} 802b646:	b01f      	add	sp, #124	; 0x7c 802b648:	bd30      	pop	{r4, r5, pc} 802b64a:	bf00      	nop 802b64c:	0803b48e 	.word	0x0803b48e 802b650:	0803b495 	.word	0x0803b495 802b654:	0803b4a2 	.word	0x0803b4a20802b658 <HTTP_InfoPage>:/**  * @brief    * @retval None  */int HTTP_InfoPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b658:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802b65c:	4606      	mov	r6, r0 802b65e:	b088      	sub	sp, #32 802b660:	460c      	mov	r4, r1 802b662:	4690      	mov	r8, r2  char tempStr[30];  strncpy(tempStr, bufIn, 30); 802b664:	4631      	mov	r1, r6 802b666:	221e      	movs	r2, #30 802b668:	4668      	mov	r0, sp/**  * @brief    * @retval None  */int HTTP_InfoPage(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b66a:	461f      	mov	r7, r3  char tempStr[30];  strncpy(tempStr, bufIn, 30); 802b66c:	f7f6 fcb8 	bl	8021fe0 <strncpy>    /* В запросе нет параметров, нужно формировать JSON ответ */  if (strpbrk(tempStr,"?") == 0) 802b670:	4668      	mov	r0, sp 802b672:	490e      	ldr	r1, [pc, #56]	; (802b6ac <HTTP_InfoPage+0x54>) 802b674:	f7f6 fce6 	bl	8022044 <strpbrk> 802b678:	4605      	mov	r5, r0 802b67a:	b970      	cbnz	r0, 802b69a <HTTP_InfoPage+0x42>  {	memset(bufOut, 0, SEND_BUF_MAX_LEN); 802b67c:	4629      	mov	r1, r5 802b67e:	f44f 62fa 	mov.w	r2, #2000	; 0x7d0 802b682:	4620      	mov	r0, r4 802b684:	f7f6 fa1c 	bl	8021ac0 <memset>		HTTP_GetInfo(bufOut); 802b688:	4620      	mov	r0, r4 802b68a:	f000 ff2b 	bl	802c4e4 <HTTP_GetInfo>		    *lenBufOut = strlen(bufOut); 802b68e:	4620      	mov	r0, r4 802b690:	f7f6 fbee 	bl	8021e70 <strlen> 802b694:	8038      	strh	r0, [r7, #0]		return SEND_REQUIRED_YES; 802b696:	4628      	mov	r0, r5 802b698:	e004      	b.n	802b6a4 <HTTP_InfoPage+0x4c>  }  /* В запросе есть параметры, нужно парсить и сохранять настройки */  else  {	HTTP_SetInfo(bufIn, lenBufIn); 802b69a:	4630      	mov	r0, r6 802b69c:	4641      	mov	r1, r8 802b69e:	f7ff ff87 	bl	802b5b0 <HTTP_SetInfo>	return SEND_REQUIRED_NO; 802b6a2:	2001      	movs	r0, #1/*		HTTP_SetSettings(bufIn, lenBufIn);    return SEND_REQUIRED_NO;*/	  }}   802b6a4:	b008      	add	sp, #32 802b6a6:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802b6aa:	bf00      	nop 802b6ac:	0803b44c 	.word	0x0803b44c0802b6b0 <HTTP_ChangeUserPwd>:/**  * @brief  Смена пароля пользователя  * @retval None  */int HTTP_ChangeUserPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b6b0:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802b6b4:	b0b0      	sub	sp, #192	; 0xc0 802b6b6:	4605      	mov	r5, r0 802b6b8:	460c      	mov	r4, r1    uint8_t valueLen, valueLen2, user_id;    char WebLogin[MAX_WEB_LOGIN_LEN];    (void)lenBufIn;    memset(login, 0, 20); 802b6ba:	2214      	movs	r2, #20 802b6bc:	2100      	movs	r1, #0 802b6be:	a80a      	add	r0, sp, #40	; 0x28/**  * @brief  Смена пароля пользователя  * @retval None  */int HTTP_ChangeUserPwd(char *bufIn, char *bufOut, uint16_t lenBufIn, uint16_t *lenBufOut){ 802b6c0:	461e      	mov	r6, r3    uint8_t valueLen, valueLen2, user_id;    char WebLogin[MAX_WEB_LOGIN_LEN];    (void)lenBufIn;    memset(login, 0, 20); 802b6c2:	f7f6 f9fd 	bl	8021ac0 <memset>    memset(password, 0, 20); 802b6c6:	2100      	movs	r1, #0 802b6c8:	2214      	movs	r2, #20 802b6ca:	a80f      	add	r0, sp, #60	; 0x3c 802b6cc:	f7f6 f9f8 	bl	8021ac0 <memset>    memset(tempStr, 0, 50);    memset(value, 0, 20); 802b6d0:	af05      	add	r7, sp, #20    (void)lenBufIn;    memset(login, 0, 20);    memset(password, 0, 20);    memset(tempStr, 0, 50); 802b6d2:	2100      	movs	r1, #0 802b6d4:	2232      	movs	r2, #50	; 0x32 802b6d6:	a814      	add	r0, sp, #80	; 0x50 802b6d8:	f7f6 f9f2 	bl	8021ac0 <memset>    memset(value, 0, 20); 802b6dc:	2100      	movs	r1, #0 802b6de:	2214      	movs	r2, #20 802b6e0:	4638      	mov	r0, r7 802b6e2:	f7f6 f9ed 	bl	8021ac0 <memset>    ClearParamString(bufIn); 802b6e6:	4628      	mov	r0, r5 802b6e8:	f7ff ff06 	bl	802b4f8 <ClearParamString>    strncpy(tempStr, bufIn, 110); 802b6ec:	226e      	movs	r2, #110	; 0x6e 802b6ee:	4629      	mov	r1, r5 802b6f0:	a814      	add	r0, sp, #80	; 0x50 802b6f2:	f7f6 fc75 	bl	8021fe0 <strncpy>    strcpy(bufOut, HTTP_200_OK);    if (GetParamValue(tempStr, "username=", login, &valueLen) && 802b6f6:	f10d 0806 	add.w	r8, sp, #6    ClearParamString(bufIn);    strncpy(tempStr, bufIn, 110);    strcpy(bufOut, HTTP_200_OK); 802b6fa:	4931      	ldr	r1, [pc, #196]	; (802b7c0 <HTTP_ChangeUserPwd+0x110>) 802b6fc:	4620      	mov	r0, r4 802b6fe:	f7f6 fb59 	bl	8021db4 <strcpy>    if (GetParamValue(tempStr, "username=", login, &valueLen) && 802b702:	a814      	add	r0, sp, #80	; 0x50 802b704:	492f      	ldr	r1, [pc, #188]	; (802b7c4 <HTTP_ChangeUserPwd+0x114>) 802b706:	aa0a      	add	r2, sp, #40	; 0x28 802b708:	4643      	mov	r3, r8 802b70a:	f7ff fbc5 	bl	802ae98 <GetParamValue> 802b70e:	2800      	cmp	r0, #0 802b710:	d04a      	beq.n	802b7a8 <HTTP_ChangeUserPwd+0xf8>        GetParamValue(tempStr, "oldpass=", password, &valueLen)) 802b712:	a814      	add	r0, sp, #80	; 0x50 802b714:	492c      	ldr	r1, [pc, #176]	; (802b7c8 <HTTP_ChangeUserPwd+0x118>) 802b716:	aa0f      	add	r2, sp, #60	; 0x3c 802b718:	4643      	mov	r3, r8 802b71a:	f7ff fbbd 	bl	802ae98 <GetParamValue>    strncpy(tempStr, bufIn, 110);    strcpy(bufOut, HTTP_200_OK);    if (GetParamValue(tempStr, "username=", login, &valueLen) && 802b71e:	2800      	cmp	r0, #0 802b720:	d042      	beq.n	802b7a8 <HTTP_ChangeUserPwd+0xf8> 802b722:	2500      	movs	r5, #0        GetParamValue(tempStr, "oldpass=", password, &valueLen))    {          for (user_id = 0; user_id < MAX_WEB_USERS; user_id++)          {        	  memset(value, 0, 20); 802b724:	2100      	movs	r1, #0 802b726:	2214      	movs	r2, #20 802b728:	4638      	mov	r0, r7 802b72a:	f7f6 f9c9 	bl	8021ac0 <memset>			  memset(WebLogin, 0, MAX_WEB_LOGIN_LEN); 802b72e:	2100      	movs	r1, #0 802b730:	220b      	movs	r2, #11 802b732:	a802      	add	r0, sp, #8 802b734:	f7f6 f9c4 	bl	8021ac0 <memset>			 GetUserLogin(user_id, WebLogin, &valueLen); 802b738:	4628      	mov	r0, r5 802b73a:	a902      	add	r1, sp, #8 802b73c:	4642      	mov	r2, r8 802b73e:	f7fc faff 	bl	8027d40 <GetUserLogin>			 GetUserPassword(user_id, value, &valueLen2); 802b742:	4628      	mov	r0, r5 802b744:	4639      	mov	r1, r7 802b746:	f10d 0207 	add.w	r2, sp, #7 802b74a:	f7fc fb0f 	bl	8027d6c <GetUserPassword>			 /* Check login and password */			 if ((strncmp(WebLogin, login, MAX_WEB_LOGIN_LEN) == 0) && 802b74e:	a802      	add	r0, sp, #8 802b750:	a90a      	add	r1, sp, #40	; 0x28 802b752:	220b      	movs	r2, #11 802b754:	f7f6 fbee 	bl	8021f34 <strncmp> 802b758:	b9f8      	cbnz	r0, 802b79a <HTTP_ChangeUserPwd+0xea>				 (memcmp(password, value, 11) == 0)) 802b75a:	4639      	mov	r1, r7 802b75c:	a80f      	add	r0, sp, #60	; 0x3c 802b75e:	220b      	movs	r2, #11 802b760:	f7f6 f8c2 	bl	80218e8 <memcmp>        	  memset(value, 0, 20);			  memset(WebLogin, 0, MAX_WEB_LOGIN_LEN);			 GetUserLogin(user_id, WebLogin, &valueLen);			 GetUserPassword(user_id, value, &valueLen2);			 /* Check login and password */			 if ((strncmp(WebLogin, login, MAX_WEB_LOGIN_LEN) == 0) && 802b764:	4601      	mov	r1, r0 802b766:	b9c0      	cbnz	r0, 802b79a <HTTP_ChangeUserPwd+0xea>				 (memcmp(password, value, 11) == 0))			 {				 memset(password, 0, 20); 802b768:	2214      	movs	r2, #20 802b76a:	a80f      	add	r0, sp, #60	; 0x3c 802b76c:	f7f6 f9a8 	bl	8021ac0 <memset>				 if (GetParamValue(tempStr, "newpass=", password, &valueLen)) 802b770:	a814      	add	r0, sp, #80	; 0x50 802b772:	4916      	ldr	r1, [pc, #88]	; (802b7cc <HTTP_ChangeUserPwd+0x11c>) 802b774:	aa0f      	add	r2, sp, #60	; 0x3c 802b776:	4643      	mov	r3, r8 802b778:	f7ff fb8e 	bl	802ae98 <GetParamValue> 802b77c:	b1a0      	cbz	r0, 802b7a8 <HTTP_ChangeUserPwd+0xf8>				 {					 memcpy(sSettings.sAuth[user_id].password, password, 11); 802b77e:	4b14      	ldr	r3, [pc, #80]	; (802b7d0 <HTTP_ChangeUserPwd+0x120>) 802b780:	2217      	movs	r2, #23 802b782:	fb02 3005 	mla	r0, r2, r5, r3 802b786:	a90f      	add	r1, sp, #60	; 0x3c 802b788:	220b      	movs	r2, #11 802b78a:	3008      	adds	r0, #8 802b78c:	f7f6 f8de 	bl	802194c <memcpy>					 HTTP_SaveSettings(); 802b790:	f000 ff8d 	bl	802c6ae <HTTP_SaveSettings>					 strcat(bufOut, "Пароль успешно изменён"); 802b794:	4620      	mov	r0, r4 802b796:	490f      	ldr	r1, [pc, #60]	; (802b7d4 <HTTP_ChangeUserPwd+0x124>) 802b798:	e008      	b.n	802b7ac <HTTP_ChangeUserPwd+0xfc>    strcpy(bufOut, HTTP_200_OK);    if (GetParamValue(tempStr, "username=", login, &valueLen) &&        GetParamValue(tempStr, "oldpass=", password, &valueLen))    {          for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) 802b79a:	3501      	adds	r5, #1 802b79c:	b2ed      	uxtb	r5, r5 802b79e:	2d02      	cmp	r5, #2 802b7a0:	d1c0      	bne.n	802b724 <HTTP_ChangeUserPwd+0x74>					  *lenBufOut = strlen(bufOut);					  return SEND_REQUIRED_YES;				 }			 }          }          strcat(bufOut, "Введён неверный пароль!"); 802b7a2:	4620      	mov	r0, r4 802b7a4:	490c      	ldr	r1, [pc, #48]	; (802b7d8 <HTTP_ChangeUserPwd+0x128>) 802b7a6:	e001      	b.n	802b7ac <HTTP_ChangeUserPwd+0xfc>          *lenBufOut = strlen(bufOut);          return SEND_REQUIRED_YES;  }  else {      strcat(bufOut, "Введены некорректные данные!"); 802b7a8:	490c      	ldr	r1, [pc, #48]	; (802b7dc <HTTP_ChangeUserPwd+0x12c>) 802b7aa:	4620      	mov	r0, r4 802b7ac:	f7f6 f9ee 	bl	8021b8c <strcat>      *lenBufOut = strlen(bufOut); 802b7b0:	4620      	mov	r0, r4 802b7b2:	f7f6 fb5d 	bl	8021e70 <strlen> 802b7b6:	8030      	strh	r0, [r6, #0]      return SEND_REQUIRED_YES;  }} 802b7b8:	2000      	movs	r0, #0 802b7ba:	b030      	add	sp, #192	; 0xc0 802b7bc:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802b7c0:	0803e20d 	.word	0x0803e20d 802b7c4:	0803b4ab 	.word	0x0803b4ab 802b7c8:	0803b4b5 	.word	0x0803b4b5 802b7cc:	0803b4be 	.word	0x0803b4be 802b7d0:	2000ec9c 	.word	0x2000ec9c 802b7d4:	0803b4c7 	.word	0x0803b4c7 802b7d8:	0803b528 	.word	0x0803b528 802b7dc:	0803b4f2 	.word	0x0803b4f20802b7e0 <http_recv>:  * @param p: pointer to a packet buffer  * @param err: LwIP error code  * @retval err  */static err_t http_recv(void *arg, struct tcp_pcb *pcb,  struct pbuf *p, err_t err){ 802b7e0:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 802b7e4:	b09d      	sub	sp, #116	; 0x74 802b7e6:	4617      	mov	r7, r2  struct http_state *hs;  char CookieBuf[50];  char *CookiePtr = NULL;  char name[MAX_WEB_COOKIE_LEN];  char id[MAX_WEB_COOKIE_LEN];  uint8_t nameLen = 0, idLen = 0; 802b7e8:	2200      	movs	r2, #0  * @param p: pointer to a packet buffer  * @param err: LwIP error code  * @retval err  */static err_t http_recv(void *arg, struct tcp_pcb *pcb,  struct pbuf *p, err_t err){ 802b7ea:	4604      	mov	r4, r0 802b7ec:	460d      	mov	r5, r1  struct http_state *hs;  char CookieBuf[50];  char *CookiePtr = NULL;  char name[MAX_WEB_COOKIE_LEN];  char id[MAX_WEB_COOKIE_LEN];  uint8_t nameLen = 0, idLen = 0; 802b7ee:	f88d 200a 	strb.w	r2, [sp, #10] 802b7f2:	f88d 200b 	strb.w	r2, [sp, #11]  struct fs_file file = {0, 0}; 802b7f6:	9205      	str	r2, [sp, #20] 802b7f8:	9206      	str	r2, [sp, #24]    hs = arg;  if (err == ERR_OK && p != NULL) 802b7fa:	2b00      	cmp	r3, #0 802b7fc:	f040 8330 	bne.w	802be60 <http_recv+0x680>  {    tcp_recved(pcb, p->tot_len); 802b800:	4608      	mov	r0, r1  uint8_t nameLen = 0, idLen = 0;  struct fs_file file = {0, 0};    hs = arg;  if (err == ERR_OK && p != NULL) 802b802:	2f00      	cmp	r7, #0 802b804:	f000 8329 	beq.w	802be5a <http_recv+0x67a>  {    tcp_recved(pcb, p->tot_len); 802b808:	8939      	ldrh	r1, [r7, #8] 802b80a:	f002 fbc5 	bl	802df98 <tcp_recved>  	if (hs->file == NULL) 802b80e:	f8d4 8000 	ldr.w	r8, [r4] 802b812:	f1b8 0f00 	cmp.w	r8, #0 802b816:	f040 831c 	bne.w	802be52 <http_recv+0x672>	  printLen = p->tot_len;	  memcpy(printBuf, p->payload , printLen);	  printf(printBuf);*/	  	  receivedBufLen = p->tot_len;	  memcpy(receiveBuf, p->payload , receivedBufLen); 802b81a:	f8df a2fc 	ldr.w	sl, [pc, #764]	; 802bb18 <http_recv+0x338>  {    tcp_recved(pcb, p->tot_len);  	if (hs->file == NULL)    {      data = p->payload; 802b81e:	687e      	ldr	r6, [r7, #4]/*	  	  printLen = p->tot_len;	  memcpy(printBuf, p->payload , printLen);	  printf(printBuf);*/	  	  receivedBufLen = p->tot_len; 802b820:	893a      	ldrh	r2, [r7, #8] 802b822:	f8df 92f0 	ldr.w	r9, [pc, #752]	; 802bb14 <http_recv+0x334>	  memcpy(receiveBuf, p->payload , receivedBufLen); 802b826:	4650      	mov	r0, sl 802b828:	4631      	mov	r1, r6/*	  	  printLen = p->tot_len;	  memcpy(printBuf, p->payload , printLen);	  printf(printBuf);*/	  	  receivedBufLen = p->tot_len; 802b82a:	f8a9 2000 	strh.w	r2, [r9]	  memcpy(receiveBuf, p->payload , receivedBufLen); 802b82e:	f7f6 f88d 	bl	802194c <memcpy>	  receiveBuf[receivedBufLen] = '\0'; 802b832:	f8b9 3000 	ldrh.w	r3, [r9]	 // printf("receive %s \r\n", receiveBuf);	  /* Get cookie "uname" value */	  CookiePtr = strstr(receiveBuf, "uname="); 802b836:	49a7      	ldr	r1, [pc, #668]	; (802bad4 <http_recv+0x2f4>)	  printf(printBuf);*/	  	  receivedBufLen = p->tot_len;	  memcpy(receiveBuf, p->payload , receivedBufLen);	  receiveBuf[receivedBufLen] = '\0'; 802b838:	f80a 8003 	strb.w	r8, [sl, r3]	 // printf("receive %s \r\n", receiveBuf);	  /* Get cookie "uname" value */	  CookiePtr = strstr(receiveBuf, "uname="); 802b83c:	4650      	mov	r0, sl 802b83e:	f7f6 fd97 	bl	8022370 <strstr>	  strncpy(CookieBuf, CookiePtr, 50); 802b842:	f10d 093c 	add.w	r9, sp, #60	; 0x3c	  memcpy(receiveBuf, p->payload , receivedBufLen);	  receiveBuf[receivedBufLen] = '\0';	 // printf("receive %s \r\n", receiveBuf);	  /* Get cookie "uname" value */	  CookiePtr = strstr(receiveBuf, "uname="); 802b846:	4601      	mov	r1, r0	  strncpy(CookieBuf, CookiePtr, 50); 802b848:	2232      	movs	r2, #50	; 0x32 802b84a:	4648      	mov	r0, r9 802b84c:	f7f6 fbc8 	bl	8021fe0 <strncpy>	  //printf("********CookieBuf1= %s\r\n", CookieBuf);	  memset(name, 0, MAX_WEB_COOKIE_LEN); 802b850:	4641      	mov	r1, r8 802b852:	2210      	movs	r2, #16 802b854:	a807      	add	r0, sp, #28 802b856:	f7f6 f933 	bl	8021ac0 <memset>	  GetCookieValue(CookieBuf, "uname=", name, &nameLen); 802b85a:	f10d 030a 	add.w	r3, sp, #10 802b85e:	aa07      	add	r2, sp, #28 802b860:	499c      	ldr	r1, [pc, #624]	; (802bad4 <http_recv+0x2f4>) 802b862:	4648      	mov	r0, r9 802b864:	f7ff fe1a 	bl	802b49c <GetCookieValue>	  //printf("********CookieBuf2= %s\r\n", CookieBuf);	  //printf("********uname= %s\r\n", name);	   /* Get cookie "id" value */	   CookiePtr = strstr(receiveBuf, "id="); 802b868:	4650      	mov	r0, sl 802b86a:	499b      	ldr	r1, [pc, #620]	; (802bad8 <http_recv+0x2f8>) 802b86c:	f7f6 fd80 	bl	8022370 <strstr>	   strncpy(CookieBuf, CookiePtr, 50);	   //printf("********CookieBuf1= %s\r\n", CookieBuf);	   memset(id, 0, MAX_WEB_COOKIE_LEN); 802b870:	f10d 0b2c 	add.w	fp, sp, #44	; 0x2c	  GetCookieValue(CookieBuf, "uname=", name, &nameLen);	  //printf("********CookieBuf2= %s\r\n", CookieBuf);	  //printf("********uname= %s\r\n", name);	   /* Get cookie "id" value */	   CookiePtr = strstr(receiveBuf, "id="); 802b874:	4601      	mov	r1, r0	   strncpy(CookieBuf, CookiePtr, 50); 802b876:	2232      	movs	r2, #50	; 0x32 802b878:	4648      	mov	r0, r9 802b87a:	f7f6 fbb1 	bl	8021fe0 <strncpy>	   //printf("********CookieBuf1= %s\r\n", CookieBuf);	   memset(id, 0, MAX_WEB_COOKIE_LEN); 802b87e:	4641      	mov	r1, r8 802b880:	2210      	movs	r2, #16 802b882:	4658      	mov	r0, fp 802b884:	f7f6 f91c 	bl	8021ac0 <memset>	   GetCookieValue(CookieBuf, "id=", id, &idLen); 802b888:	465a      	mov	r2, fp 802b88a:	f10d 030b 	add.w	r3, sp, #11 802b88e:	4648      	mov	r0, r9 802b890:	4991      	ldr	r1, [pc, #580]	; (802bad8 <http_recv+0x2f8>) 802b892:	f7ff fe03 	bl	802b49c <GetCookieValue>	   /* Id of currently logged-in user */	   uint8_t user_id;	   /* Level of currently logged-in user */	   seclevel = 0xFF; 802b896:	4b91      	ldr	r3, [pc, #580]	; (802badc <http_recv+0x2fc>) 802b898:	22ff      	movs	r2, #255	; 0xff 802b89a:	701a      	strb	r2, [r3, #0]/**  * @brief Чтение Cookie пользователя  */static void HTTP_GetUserCookie(uint8_t user_id, char *str, uint8_t *len){    sprintf(str, "%s", users[user_id].cookie); 802b89c:	4b90      	ldr	r3, [pc, #576]	; (802bae0 <http_recv+0x300>)	   uint8_t user_id;	   /* Level of currently logged-in user */	   seclevel = 0xFF;	   for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {		   HTTP_GetUserCookie(user_id, CookieBuf, &idLen); 802b89e:	46ca      	mov	sl, r9/**  * @brief Чтение Cookie пользователя  */static void HTTP_GetUserCookie(uint8_t user_id, char *str, uint8_t *len){    sprintf(str, "%s", users[user_id].cookie); 802b8a0:	2214      	movs	r2, #20 802b8a2:	fb02 3208 	mla	r2, r2, r8, r3 802b8a6:	498f      	ldr	r1, [pc, #572]	; (802bae4 <http_recv+0x304>) 802b8a8:	9301      	str	r3, [sp, #4] 802b8aa:	4650      	mov	r0, sl 802b8ac:	f7fb ff78 	bl	80277a0 <tfp_sprintf>    *len = strlen(str); 802b8b0:	4650      	mov	r0, sl 802b8b2:	f7f6 fadd 	bl	8021e70 <strlen> 802b8b6:	4602      	mov	r2, r0 802b8b8:	f88d 000b 	strb.w	r0, [sp, #11]	   /* Level of currently logged-in user */	   seclevel = 0xFF;	   for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {		   HTTP_GetUserCookie(user_id, CookieBuf, &idLen);		   if (strncmp(id, CookieBuf, idLen) == 0 ) { 802b8bc:	b2d2      	uxtb	r2, r2 802b8be:	4658      	mov	r0, fp 802b8c0:	4651      	mov	r1, sl 802b8c2:	f7f6 fb37 	bl	8021f34 <strncmp> 802b8c6:	fa5f f988 	uxtb.w	r9, r8 802b8ca:	4a87      	ldr	r2, [pc, #540]	; (802bae8 <http_recv+0x308>) 802b8cc:	9b01      	ldr	r3, [sp, #4] 802b8ce:	b940      	cbnz	r0, 802b8e2 <http_recv+0x102>			   GetUserLevelInt(user_id, &seclevel); 802b8d0:	4648      	mov	r0, r9 802b8d2:	4982      	ldr	r1, [pc, #520]	; (802badc <http_recv+0x2fc>) 802b8d4:	9201      	str	r2, [sp, #4] 802b8d6:	f7fc fa5f 	bl	8027d98 <GetUserLevelInt>			   Authenticated = true; 802b8da:	9a01      	ldr	r2, [sp, #4] 802b8dc:	2301      	movs	r3, #1 802b8de:	7013      	strb	r3, [r2, #0]			   break; 802b8e0:	e00a      	b.n	802b8f8 <http_recv+0x118>		   }		   Authenticated = false; 802b8e2:	2100      	movs	r1, #0 802b8e4:	7011      	strb	r1, [r2, #0] 802b8e6:	f108 0801 	add.w	r8, r8, #1		   seclevel = 0xFF; 802b8ea:	4a7c      	ldr	r2, [pc, #496]	; (802badc <http_recv+0x2fc>) 802b8ec:	21ff      	movs	r1, #255	; 0xff	   /* Id of currently logged-in user */	   uint8_t user_id;	   /* Level of currently logged-in user */	   seclevel = 0xFF;	   for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) { 802b8ee:	f1b8 0f02 	cmp.w	r8, #2			   GetUserLevelInt(user_id, &seclevel);			   Authenticated = true;			   break;		   }		   Authenticated = false;		   seclevel = 0xFF; 802b8f2:	7011      	strb	r1, [r2, #0]	   /* Id of currently logged-in user */	   uint8_t user_id;	   /* Level of currently logged-in user */	   seclevel = 0xFF;	   for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) { 802b8f4:	d1d4      	bne.n	802b8a0 <http_recv+0xc0> 802b8f6:	46c1      	mov	r9, r8		   }		   Authenticated = false;		   seclevel = 0xFF;	   }	   if ( Authenticated == false ) 802b8f8:	4b7b      	ldr	r3, [pc, #492]	; (802bae8 <http_recv+0x308>)	  {		  if (strncmp(data, "GET /main.css", 13) == 0) // + 802b8fa:	497c      	ldr	r1, [pc, #496]	; (802baec <http_recv+0x30c>)		   }		   Authenticated = false;		   seclevel = 0xFF;	   }	   if ( Authenticated == false ) 802b8fc:	781b      	ldrb	r3, [r3, #0]	  {		  if (strncmp(data, "GET /main.css", 13) == 0) // + 802b8fe:	4630      	mov	r0, r6 802b900:	220d      	movs	r2, #13		   }		   Authenticated = false;		   seclevel = 0xFF;	   }	   if ( Authenticated == false ) 802b902:	2b00      	cmp	r3, #0 802b904:	f040 812e 	bne.w	802bb64 <http_recv+0x384>	  {		  if (strncmp(data, "GET /main.css", 13) == 0) // + 802b908:	f7f6 fb14 	bl	8021f34 <strncmp> 802b90c:	b900      	cbnz	r0, 802b910 <http_recv+0x130> 802b90e:	e12c      	b.n	802bb6a <http_recv+0x38a>			 hs->file = file.data;			 hs->left = file.len;			 send_data(pcb, hs);			 tcp_sent(pcb, http_sent);		  }		  else if (strncmp(data, "GET /rotek.png", 14) == 0) // + 802b910:	4630      	mov	r0, r6 802b912:	4977      	ldr	r1, [pc, #476]	; (802baf0 <http_recv+0x310>) 802b914:	220e      	movs	r2, #14 802b916:	f7f6 fb0d 	bl	8021f34 <strncmp> 802b91a:	b900      	cbnz	r0, 802b91e <http_recv+0x13e> 802b91c:	e12d      	b.n	802bb7a <http_recv+0x39a>			 hs->file = file.data;			 hs->left = file.len;			 send_data(pcb, hs);			 tcp_sent(pcb, http_sent);		  }		else if (strncmp(data, "GET /favicon.ico", 16) == 0) // ? 802b91e:	4630      	mov	r0, r6 802b920:	4974      	ldr	r1, [pc, #464]	; (802baf4 <http_recv+0x314>) 802b922:	2210      	movs	r2, #16 802b924:	f7f6 fb06 	bl	8021f34 <strncmp> 802b928:	b900      	cbnz	r0, 802b92c <http_recv+0x14c> 802b92a:	e12e      	b.n	802bb8a <http_recv+0x3aa>			 hs->file = file.data;			 hs->left = file.len;			 send_data(pcb, hs);			 tcp_sent(pcb, http_sent);		}		else if (strncmp(data, "GET /role.js", 12) == 0) 802b92c:	4630      	mov	r0, r6 802b92e:	4972      	ldr	r1, [pc, #456]	; (802baf8 <http_recv+0x318>) 802b930:	220c      	movs	r2, #12 802b932:	f7f6 faff 	bl	8021f34 <strncmp> 802b936:	b900      	cbnz	r0, 802b93a <http_recv+0x15a> 802b938:	e137      	b.n	802bbaa <http_recv+0x3ca>		  hs->left = file.len;		  send_data(pcb, hs);		  tcp_sent(pcb, http_sent);		}		  else if ((strncmp(data, "POST /login.cgi", 15) == 0) || (log_post_reqn > 0)) 802b93a:	4630      	mov	r0, r6 802b93c:	496f      	ldr	r1, [pc, #444]	; (802bafc <http_recv+0x31c>) 802b93e:	220f      	movs	r2, #15 802b940:	f7f6 faf8 	bl	8021f34 <strncmp> 802b944:	b120      	cbz	r0, 802b950 <http_recv+0x170> 802b946:	4b6e      	ldr	r3, [pc, #440]	; (802bb00 <http_recv+0x320>) 802b948:	681b      	ldr	r3, [r3, #0] 802b94a:	2b00      	cmp	r3, #0 802b94c:	f000 80a8 	beq.w	802baa0 <http_recv+0x2c0>{  uint32_t i=0,size=0, S=1;  int32_t j=0;  char sizestring[6], *ptr;  ContentLengthOffset =0; 802b950:	4a6c      	ldr	r2, [pc, #432]	; (802bb04 <http_recv+0x324>)			  uint32_t i, offset = 0, req_data_received = 0;			  //printf("request 1: %d\r\n", receivedBufLen);			  /* parse packet for Content-length field */			  post_data_count = Parse_Content_Length(data, p->tot_len); 802b952:	f8b7 9008 	ldrh.w	r9, [r7, #8]{  uint32_t i=0,size=0, S=1;  int32_t j=0;  char sizestring[6], *ptr;  ContentLengthOffset =0; 802b956:	2300      	movs	r3, #0 802b958:	6013      	str	r3, [r2, #0]  /* find Content-Length data in packet buffer */  for (i=0;i<len;i++) 802b95a:	4698      	mov	r8, r3 802b95c:	e00d      	b.n	802b97a <http_recv+0x19a>  {    if (strncmp ((char*)(data+i), Content_Length, 16)==0) 802b95e:	eb06 0008 	add.w	r0, r6, r8 802b962:	4969      	ldr	r1, [pc, #420]	; (802bb08 <http_recv+0x328>) 802b964:	2210      	movs	r2, #16 802b966:	f7f6 fae5 	bl	8021f34 <strncmp> 802b96a:	b920      	cbnz	r0, 802b976 <http_recv+0x196>    {      ContentLengthOffset = i+16; 802b96c:	4b65      	ldr	r3, [pc, #404]	; (802bb04 <http_recv+0x324>) 802b96e:	f108 0210 	add.w	r2, r8, #16 802b972:	601a      	str	r2, [r3, #0] 802b974:	e003      	b.n	802b97e <http_recv+0x19e>  char sizestring[6], *ptr;  ContentLengthOffset =0;  /* find Content-Length data in packet buffer */  for (i=0;i<len;i++) 802b976:	f108 0801 	add.w	r8, r8, #1 802b97a:	45c8      	cmp	r8, r9 802b97c:	d3ef      	bcc.n	802b95e <http_recv+0x17e>      ContentLengthOffset = i+16;      break;    }  }  /* read Content-Length value */  if (ContentLengthOffset) 802b97e:	4b61      	ldr	r3, [pc, #388]	; (802bb04 <http_recv+0x324>) 802b980:	681a      	ldr	r2, [r3, #0] 802b982:	4618      	mov	r0, r3 802b984:	b90a      	cbnz	r2, 802b98a <http_recv+0x1aa>  * @param  len  : buffer length  * @retval size : Content_length in numeric format  */static uint32_t Parse_Content_Length(char *data, uint32_t len){  uint32_t i=0,size=0, S=1; 802b986:	2200      	movs	r2, #0 802b988:	e023      	b.n	802b9d2 <http_recv+0x1f2>  }  /* read Content-Length value */  if (ContentLengthOffset)  {    i=0;    ptr = (char*)(data + ContentLengthOffset); 802b98a:	eb06 0c02 	add.w	ip, r6, r2    }  }  /* read Content-Length value */  if (ContentLengthOffset)  {    i=0; 802b98e:	2300      	movs	r3, #0 802b990:	e004      	b.n	802b99c <http_recv+0x1bc>    ptr = (char*)(data + ContentLengthOffset);    while(*(ptr+i)!=0x0d)    {      sizestring[i] = *(ptr+i); 802b992:	f10d 0e0c 	add.w	lr, sp, #12 802b996:	f803 100e 	strb.w	r1, [r3, lr]      i++; 802b99a:	3301      	adds	r3, #1  /* read Content-Length value */  if (ContentLengthOffset)  {    i=0;    ptr = (char*)(data + ContentLengthOffset);    while(*(ptr+i)!=0x0d) 802b99c:	f81c 1003 	ldrb.w	r1, [ip, r3] 802b9a0:	290d      	cmp	r1, #13 802b9a2:	eb03 0e02 	add.w	lr, r3, r2 802b9a6:	d1f4      	bne.n	802b992 <http_recv+0x1b2> 802b9a8:	f8c0 e000 	str.w	lr, [r0]    {      sizestring[i] = *(ptr+i);      i++;      ContentLengthOffset++;    }    if (i>0) 802b9ac:	2b00      	cmp	r3, #0 802b9ae:	d0ea      	beq.n	802b986 <http_recv+0x1a6>    {      /* transform string data into numeric format */      for(j=i-1;j>=0;j--) 802b9b0:	3b01      	subs	r3, #1  * @param  len  : buffer length  * @retval size : Content_length in numeric format  */static uint32_t Parse_Content_Length(char *data, uint32_t len){  uint32_t i=0,size=0, S=1; 802b9b2:	2101      	movs	r1, #1 802b9b4:	2200      	movs	r2, #0    {      /* transform string data into numeric format */      for(j=i-1;j>=0;j--)      {        size += (sizestring[j]-0x30)*S;        S=S*10; 802b9b6:	200a      	movs	r0, #10 802b9b8:	e009      	b.n	802b9ce <http_recv+0x1ee>    if (i>0)    {      /* transform string data into numeric format */      for(j=i-1;j>=0;j--)      {        size += (sizestring[j]-0x30)*S; 802b9ba:	f10d 0e0c 	add.w	lr, sp, #12 802b9be:	f813 e00e 	ldrb.w	lr, [r3, lr] 802b9c2:	f1ae 0e30 	sub.w	lr, lr, #48	; 0x30 802b9c6:	fb01 220e 	mla	r2, r1, lr, r2      ContentLengthOffset++;    }    if (i>0)    {      /* transform string data into numeric format */      for(j=i-1;j>=0;j--) 802b9ca:	3b01      	subs	r3, #1      {        size += (sizestring[j]-0x30)*S;        S=S*10; 802b9cc:	4341      	muls	r1, r0      ContentLengthOffset++;    }    if (i>0)    {      /* transform string data into numeric format */      for(j=i-1;j>=0;j--) 802b9ce:	2b00      	cmp	r3, #0 802b9d0:	daf3      	bge.n	802b9ba <http_recv+0x1da>			  uint32_t i, offset = 0, req_data_received = 0;			  //printf("request 1: %d\r\n", receivedBufLen);			  /* parse packet for Content-length field */			  post_data_count = Parse_Content_Length(data, p->tot_len); 802b9d2:	f8df 8150 	ldr.w	r8, [pc, #336]	; 802bb24 <http_recv+0x344>			  //printf("Content-length: %d\r\n", (int)post_data_count);			  if (post_data_count < MAX_POST_REQ_LEN) { 802b9d6:	2aff      	cmp	r2, #255	; 0xff			  uint32_t i, offset = 0, req_data_received = 0;			  //printf("request 1: %d\r\n", receivedBufLen);			  /* parse packet for Content-length field */			  post_data_count = Parse_Content_Length(data, p->tot_len); 802b9d8:	f8c8 2000 	str.w	r2, [r8]			  //printf("Content-length: %d\r\n", (int)post_data_count);			  if (post_data_count < MAX_POST_REQ_LEN) { 802b9dc:	d857      	bhi.n	802ba8e <http_recv+0x2ae>				  memset(post_req_data, 0, MAX_POST_REQ_LEN); 802b9de:	484b      	ldr	r0, [pc, #300]	; (802bb0c <http_recv+0x32c>)					/* parse packet for "\r\n\r\n" */					for (i = 0; i < receivedBufLen; i++) 802b9e0:	f8df 9130 	ldr.w	r9, [pc, #304]	; 802bb14 <http_recv+0x334>			  post_data_count = Parse_Content_Length(data, p->tot_len);			  //printf("Content-length: %d\r\n", (int)post_data_count);			  if (post_data_count < MAX_POST_REQ_LEN) {				  memset(post_req_data, 0, MAX_POST_REQ_LEN); 802b9e4:	2100      	movs	r1, #0 802b9e6:	f44f 7280 	mov.w	r2, #256	; 0x100 802b9ea:	f7f6 f869 	bl	8021ac0 <memset>					/* parse packet for "\r\n\r\n" */					for (i = 0; i < receivedBufLen; i++) 802b9ee:	f04f 0800 	mov.w	r8, #0 802b9f2:	e00b      	b.n	802ba0c <http_recv+0x22c>					{						if (strncmp ((char*)(data+i), "\r\n\r\n", 4) == 0) 802b9f4:	eb06 0008 	add.w	r0, r6, r8 802b9f8:	4945      	ldr	r1, [pc, #276]	; (802bb10 <http_recv+0x330>) 802b9fa:	2204      	movs	r2, #4 802b9fc:	f7f6 fa9a 	bl	8021f34 <strncmp> 802ba00:	b910      	cbnz	r0, 802ba08 <http_recv+0x228>						{							offset = i+4; 802ba02:	f108 0804 	add.w	r8, r8, #4							//printf("offset: %d\r\n", (int)offset);							break; 802ba06:	e007      	b.n	802ba18 <http_recv+0x238>			  if (post_data_count < MAX_POST_REQ_LEN) {				  memset(post_req_data, 0, MAX_POST_REQ_LEN);					/* parse packet for "\r\n\r\n" */					for (i = 0; i < receivedBufLen; i++) 802ba08:	f108 0801 	add.w	r8, r8, #1 802ba0c:	f8b9 3000 	ldrh.w	r3, [r9] 802ba10:	4598      	cmp	r8, r3 802ba12:	d3ef      	bcc.n	802b9f4 <http_recv+0x214>		  tcp_sent(pcb, http_sent);		}		  else if ((strncmp(data, "POST /login.cgi", 15) == 0) || (log_post_reqn > 0))			{			  uint32_t i, offset = 0, req_data_received = 0; 802ba14:	f04f 0800 	mov.w	r8, #0							//printf("offset: %d\r\n", (int)offset);							break;						}					}					req_data_received = receivedBufLen - offset; 802ba18:	4b3e      	ldr	r3, [pc, #248]	; (802bb14 <http_recv+0x334>) 802ba1a:	f8b3 a000 	ldrh.w	sl, [r3] 802ba1e:	ebc8 0a0a 	rsb	sl, r8, sl					//printf("req data received: %d\r\n", (int)req_data_received);					/* Check if "\r\n\r\n" was found */					if (offset != 0) { 802ba22:	f1b8 0f00 	cmp.w	r8, #0 802ba26:	d015      	beq.n	802ba54 <http_recv+0x274>						/* if data was splited in two packets */						if (req_data_received < post_data_count) { 802ba28:	f8df 90f8 	ldr.w	r9, [pc, #248]	; 802bb24 <http_recv+0x344>							/* Copy request data to buffer */							snprintf(post_req_data, req_data_received, "%s", receiveBuf); 802ba2c:	4837      	ldr	r0, [pc, #220]	; (802bb0c <http_recv+0x32c>)					/* Check if "\r\n\r\n" was found */					if (offset != 0) {						/* if data was splited in two packets */						if (req_data_received < post_data_count) { 802ba2e:	f8d9 2000 	ldr.w	r2, [r9] 802ba32:	4592      	cmp	sl, r2 802ba34:	d20b      	bcs.n	802ba4e <http_recv+0x26e>							/* Copy request data to buffer */							snprintf(post_req_data, req_data_received, "%s", receiveBuf); 802ba36:	4b38      	ldr	r3, [pc, #224]	; (802bb18 <http_recv+0x338>) 802ba38:	4a2a      	ldr	r2, [pc, #168]	; (802bae4 <http_recv+0x304>) 802ba3a:	4651      	mov	r1, sl 802ba3c:	f7fb fe92 	bl	8027764 <tfp_snprintf>							//printf("copied: %d\r\n", (int)req_data_received);							post_data_count -= req_data_received; 802ba40:	f8d9 3000 	ldr.w	r3, [r9] 802ba44:	ebca 0303 	rsb	r3, sl, r3 802ba48:	f8c9 3000 	str.w	r3, [r9] 802ba4c:	e201      	b.n	802be52 <http_recv+0x672>						}						/* if data received completely */						else {							strncat(post_req_data, (char *)(data + offset), post_data_count); 802ba4e:	eb06 0108 	add.w	r1, r6, r8 802ba52:	e02b      	b.n	802baac <http_recv+0x2cc>					/* request was fragmented before "\r\n\r\n" */					else {						//printf("no data found!\r\n");						/* wait next packet */						log_post_reqn++; 802ba54:	4e2a      	ldr	r6, [pc, #168]	; (802bb00 <http_recv+0x320>) 802ba56:	6833      	ldr	r3, [r6, #0] 802ba58:	3301      	adds	r3, #1						/* wait max 2 requests */						if (log_post_reqn > 1) { 802ba5a:	2b01      	cmp	r3, #1					/* request was fragmented before "\r\n\r\n" */					else {						//printf("no data found!\r\n");						/* wait next packet */						log_post_reqn++; 802ba5c:	6033      	str	r3, [r6, #0]						/* wait max 2 requests */						if (log_post_reqn > 1) { 802ba5e:	f240 81f8 	bls.w	802be52 <http_recv+0x672>							/* Redirect to login page */							fs_open("/login.html", &file); 802ba62:	a905      	add	r1, sp, #20 802ba64:	482d      	ldr	r0, [pc, #180]	; (802bb1c <http_recv+0x33c>) 802ba66:	f7ff f805 	bl	802aa74 <fs_open>							hs->file = file.data; 802ba6a:	9b05      	ldr	r3, [sp, #20] 802ba6c:	6023      	str	r3, [r4, #0]							hs->left = file.len; 802ba6e:	9b06      	ldr	r3, [sp, #24]							send_data(pcb, hs); 802ba70:	4628      	mov	r0, r5						/* wait max 2 requests */						if (log_post_reqn > 1) {							/* Redirect to login page */							fs_open("/login.html", &file);							hs->file = file.data;							hs->left = file.len; 802ba72:	6063      	str	r3, [r4, #4]							send_data(pcb, hs); 802ba74:	4621      	mov	r1, r4 802ba76:	f7ff f839 	bl	802aaec <send_data>							tcp_sent(pcb, http_sent); 802ba7a:	4628      	mov	r0, r5 802ba7c:	4928      	ldr	r1, [pc, #160]	; (802bb20 <http_recv+0x340>) 802ba7e:	f002 fac1 	bl	802e004 <tcp_sent>								/* End reqest */							post_data_count = 0; 802ba82:	4b28      	ldr	r3, [pc, #160]	; (802bb24 <http_recv+0x344>)							log_post_reqn = 0; 802ba84:	f8c6 8000 	str.w	r8, [r6]							hs->left = file.len;							send_data(pcb, hs);							tcp_sent(pcb, http_sent);								/* End reqest */							post_data_count = 0; 802ba88:	f8c3 8000 	str.w	r8, [r3] 802ba8c:	e1e1      	b.n	802be52 <http_recv+0x672>							log_post_reqn = 0;						}					}			  }			  else {				  printf("Too long POST request!\r\n"); 802ba8e:	4826      	ldr	r0, [pc, #152]	; (802bb28 <http_recv+0x348>) 802ba90:	f7fb fe3a 	bl	8027708 <tfp_printf>				  /* Ignore request */				  post_data_count = 0;				  log_post_reqn = 0; 802ba94:	4a1a      	ldr	r2, [pc, #104]	; (802bb00 <http_recv+0x320>)					}			  }			  else {				  printf("Too long POST request!\r\n");				  /* Ignore request */				  post_data_count = 0; 802ba96:	2300      	movs	r3, #0 802ba98:	f8c8 3000 	str.w	r3, [r8]				  log_post_reqn = 0; 802ba9c:	6013      	str	r3, [r2, #0] 802ba9e:	e05f      	b.n	802bb60 <http_recv+0x380>					hs->left = file.len;					send_data(pcb, hs);					tcp_sent(pcb, http_sent);			  }			}			  else if (post_data_count > 0) 802baa0:	4b20      	ldr	r3, [pc, #128]	; (802bb24 <http_recv+0x344>) 802baa2:	681a      	ldr	r2, [r3, #0] 802baa4:	2a00      	cmp	r2, #0 802baa6:	d05b      	beq.n	802bb60 <http_recv+0x380>				{				  strncat(post_req_data, data, post_data_count); 802baa8:	4818      	ldr	r0, [pc, #96]	; (802bb0c <http_recv+0x32c>) 802baaa:	4631      	mov	r1, r6 802baac:	f7f6 fa10 	bl	8021ed0 <strncat>				  //printf("copied: %d\r\n", (int)post_data_count);				  //printf("post_req_data: %s\r\n", post_req_data);				  if (HTTP_ConfirmWebPwd(post_req_data, sendBuf, strlen(post_req_data), &sendBufLoadLen) == SEND_REQUIRED_YES) { 802bab0:	4816      	ldr	r0, [pc, #88]	; (802bb0c <http_recv+0x32c>) 802bab2:	f8df 807c 	ldr.w	r8, [pc, #124]	; 802bb30 <http_recv+0x350> 802bab6:	4e1d      	ldr	r6, [pc, #116]	; (802bb2c <http_recv+0x34c>) 802bab8:	f7f6 f9da 	bl	8021e70 <strlen> 802babc:	4641      	mov	r1, r8 802babe:	b282      	uxth	r2, r0 802bac0:	4633      	mov	r3, r6 802bac2:	4812      	ldr	r0, [pc, #72]	; (802bb0c <http_recv+0x32c>) 802bac4:	f7ff fa16 	bl	802aef4 <HTTP_ConfirmWebPwd> 802bac8:	bba0      	cbnz	r0, 802bb34 <http_recv+0x354>						hs->file = sendBuf; 802baca:	f8c4 8000 	str.w	r8, [r4]						hs->left = sendBufLoadLen; 802bace:	8833      	ldrh	r3, [r6, #0] 802bad0:	e037      	b.n	802bb42 <http_recv+0x362> 802bad2:	bf00      	nop 802bad4:	0803b2b1 	.word	0x0803b2b1 802bad8:	0803b2c6 	.word	0x0803b2c6 802badc:	200015e4 	.word	0x200015e4 802bae0:	2000fbfc 	.word	0x2000fbfc 802bae4:	08036d46 	.word	0x08036d46 802bae8:	20002ad9 	.word	0x20002ad9 802baec:	0803b554 	.word	0x0803b554 802baf0:	0803b562 	.word	0x0803b562 802baf4:	0803b571 	.word	0x0803b571 802baf8:	0803b582 	.word	0x0803b582 802bafc:	0803b58f 	.word	0x0803b58f 802bb00:	2000fbf8 	.word	0x2000fbf8 802bb04:	20002adc 	.word	0x20002adc 802bb08:	0803b064 	.word	0x0803b064 802bb0c:	2000faf8 	.word	0x2000faf8 802bb10:	0803b6a5 	.word	0x0803b6a5 802bb14:	20002ae2 	.word	0x20002ae2 802bb18:	2000f51c 	.word	0x2000f51c 802bb1c:	0803b59f 	.word	0x0803b59f 802bb20:	0802ab5f 	.word	0x0802ab5f 802bb24:	2000fc24 	.word	0x2000fc24 802bb28:	0803b5ab 	.word	0x0803b5ab 802bb2c:	20002ae0 	.word	0x20002ae0 802bb30:	2000ed4c 	.word	0x2000ed4c						tcp_sent(pcb, http_sent);				  }				  else {					  /* Redirect to login page */					  fs_open("/login.html", &file); 802bb34:	488e      	ldr	r0, [pc, #568]	; (802bd70 <http_recv+0x590>) 802bb36:	a905      	add	r1, sp, #20 802bb38:	f7fe ff9c 	bl	802aa74 <fs_open>					  hs->file = file.data; 802bb3c:	9b05      	ldr	r3, [sp, #20] 802bb3e:	6023      	str	r3, [r4, #0]					  hs->left = file.len; 802bb40:	9b06      	ldr	r3, [sp, #24] 802bb42:	6063      	str	r3, [r4, #4]					  send_data(pcb, hs); 802bb44:	4628      	mov	r0, r5 802bb46:	4621      	mov	r1, r4 802bb48:	f7fe ffd0 	bl	802aaec <send_data>					  tcp_sent(pcb, http_sent); 802bb4c:	4628      	mov	r0, r5 802bb4e:	4989      	ldr	r1, [pc, #548]	; (802bd74 <http_recv+0x594>) 802bb50:	f002 fa58 	bl	802e004 <tcp_sent>				  }				  /* End reqest */				  post_data_count = 0; 802bb54:	4a88      	ldr	r2, [pc, #544]	; (802bd78 <http_recv+0x598>) 802bb56:	2300      	movs	r3, #0 802bb58:	6013      	str	r3, [r2, #0]				  log_post_reqn = 0; 802bb5a:	4a88      	ldr	r2, [pc, #544]	; (802bd7c <http_recv+0x59c>) 802bb5c:	6013      	str	r3, [r2, #0] 802bb5e:	e178      	b.n	802be52 <http_recv+0x672>				}		  else		  {			  fs_open("/login.html", &file); 802bb60:	4883      	ldr	r0, [pc, #524]	; (802bd70 <http_recv+0x590>) 802bb62:	e167      	b.n	802be34 <http_recv+0x654>	  }	  else if ( Authenticated == true ) {	  if (strncmp(data, "GET /main.css", 13) == 0) // + 802bb64:	f7f6 f9e6 	bl	8021f34 <strncmp> 802bb68:	b908      	cbnz	r0, 802bb6e <http_recv+0x38e>	  {	    fs_open("/main.css", &file); 802bb6a:	4885      	ldr	r0, [pc, #532]	; (802bd80 <http_recv+0x5a0>) 802bb6c:	e162      	b.n	802be34 <http_recv+0x654>        hs->file = file.data;        hs->left = file.len;        send_data(pcb, hs);        tcp_sent(pcb, http_sent);	  }	  else if (strncmp(data, "GET /rotek.png", 14) == 0) // + 802bb6e:	4630      	mov	r0, r6 802bb70:	4984      	ldr	r1, [pc, #528]	; (802bd84 <http_recv+0x5a4>) 802bb72:	220e      	movs	r2, #14 802bb74:	f7f6 f9de 	bl	8021f34 <strncmp> 802bb78:	b908      	cbnz	r0, 802bb7e <http_recv+0x39e>	  {	    fs_open("/rotek.png", &file); 802bb7a:	4883      	ldr	r0, [pc, #524]	; (802bd88 <http_recv+0x5a8>) 802bb7c:	e15a      	b.n	802be34 <http_recv+0x654>        hs->file = file.data;        hs->left = file.len;        send_data(pcb, hs);        tcp_sent(pcb, http_sent);	  }      else if (strncmp(data, "GET /favicon.ico", 16) == 0) // ?                  802bb7e:	4630      	mov	r0, r6 802bb80:	4982      	ldr	r1, [pc, #520]	; (802bd8c <http_recv+0x5ac>) 802bb82:	2210      	movs	r2, #16 802bb84:	f7f6 f9d6 	bl	8021f34 <strncmp> 802bb88:	b908      	cbnz	r0, 802bb8e <http_recv+0x3ae>      {                                                                             fs_open("/favicon.ico", &file);                                      802bb8a:	4881      	ldr	r0, [pc, #516]	; (802bd90 <http_recv+0x5b0>) 802bb8c:	e152      	b.n	802be34 <http_recv+0x654>        hs->file = file.data;                                                       hs->left = file.len;                                                        send_data(pcb, hs);                                                         tcp_sent(pcb, http_sent);                                                 }	  else if (strncmp(data, "GET /main.js", 12) == 0) // + 802bb8e:	4630      	mov	r0, r6 802bb90:	4980      	ldr	r1, [pc, #512]	; (802bd94 <http_recv+0x5b4>) 802bb92:	220c      	movs	r2, #12 802bb94:	f7f6 f9ce 	bl	8021f34 <strncmp> 802bb98:	b908      	cbnz	r0, 802bb9e <http_recv+0x3be>	  {	    fs_open("/main.js", &file); 802bb9a:	487f      	ldr	r0, [pc, #508]	; (802bd98 <http_recv+0x5b8>) 802bb9c:	e14a      	b.n	802be34 <http_recv+0x654>        hs->left = file.len;        send_data(pcb, hs);        tcp_sent(pcb, http_sent);			  }	  else if (strncmp(data, "GET /role.js", 12) == 0) 802bb9e:	4630      	mov	r0, r6 802bba0:	497e      	ldr	r1, [pc, #504]	; (802bd9c <http_recv+0x5bc>) 802bba2:	220c      	movs	r2, #12 802bba4:	f7f6 f9c6 	bl	8021f34 <strncmp> 802bba8:	b908      	cbnz	r0, 802bbae <http_recv+0x3ce>	  {		fs_open("/role.js", &file); 802bbaa:	487d      	ldr	r0, [pc, #500]	; (802bda0 <http_recv+0x5c0>) 802bbac:	e142      	b.n	802be34 <http_recv+0x654>		hs->left = file.len;		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  else if (strncmp(data, "GET /settings.html", 18) == 0) // + 802bbae:	4630      	mov	r0, r6 802bbb0:	497c      	ldr	r1, [pc, #496]	; (802bda4 <http_recv+0x5c4>) 802bbb2:	2212      	movs	r2, #18 802bbb4:	f7f6 f9be 	bl	8021f34 <strncmp> 802bbb8:	b918      	cbnz	r0, 802bbc2 <http_recv+0x3e2>	  {		HTTP_UpdateUserLoginTime(user_id); 802bbba:	4648      	mov	r0, r9 802bbbc:	f7fe ff48 	bl	802aa50 <HTTP_UpdateUserLoginTime> 802bbc0:	e09c      	b.n	802bcfc <http_recv+0x51c>        hs->file = file.data;        hs->left = file.len;        send_data(pcb, hs);        tcp_sent(pcb, http_sent);	  }	  else if (strncmp(data, "GET /info.html", 14) == 0) // + 802bbc2:	4630      	mov	r0, r6 802bbc4:	4978      	ldr	r1, [pc, #480]	; (802bda8 <http_recv+0x5c8>) 802bbc6:	220e      	movs	r2, #14 802bbc8:	f7f6 f9b4 	bl	8021f34 <strncmp> 802bbcc:	b918      	cbnz	r0, 802bbd6 <http_recv+0x3f6>	  {		HTTP_UpdateUserLoginTime(user_id); 802bbce:	4648      	mov	r0, r9 802bbd0:	f7fe ff3e 	bl	802aa50 <HTTP_UpdateUserLoginTime> 802bbd4:	e064      	b.n	802bca0 <http_recv+0x4c0>        hs->file = file.data;        hs->left = file.len;        send_data(pcb, hs);        tcp_sent(pcb, http_sent);	  }	  else if (strncmp(data, "GET /getJson.cgi", 16) == 0) // + 802bbd6:	4630      	mov	r0, r6 802bbd8:	4974      	ldr	r1, [pc, #464]	; (802bdac <http_recv+0x5cc>) 802bbda:	2210      	movs	r2, #16 802bbdc:	f7f6 f9aa 	bl	8021f34 <strncmp> 802bbe0:	b940      	cbnz	r0, 802bbf4 <http_recv+0x414>	  {		HTTP_GetParamsPage1(sendBuf); 802bbe2:	4e73      	ldr	r6, [pc, #460]	; (802bdb0 <http_recv+0x5d0>) 802bbe4:	4630      	mov	r0, r6 802bbe6:	f000 f971 	bl	802becc <HTTP_GetParamsPage1>		hs->file = sendBuf; 802bbea:	6026      	str	r6, [r4, #0]        hs->left = strlen(sendBuf); 802bbec:	4630      	mov	r0, r6 802bbee:	f7f6 f93f 	bl	8021e70 <strlen> 802bbf2:	e041      	b.n	802bc78 <http_recv+0x498>		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  	  else if (strncmp(data, "GET /settings.cgi", 17) == 0) // + 802bbf4:	4630      	mov	r0, r6 802bbf6:	496f      	ldr	r1, [pc, #444]	; (802bdb4 <http_recv+0x5d4>) 802bbf8:	2211      	movs	r2, #17 802bbfa:	f7f6 f99b 	bl	8021f34 <strncmp> 802bbfe:	b980      	cbnz	r0, 802bc22 <http_recv+0x442>	  {		SET_PAGE = SET_PAGE_PAGE2; 802bc00:	4b6d      	ldr	r3, [pc, #436]	; (802bdb8 <http_recv+0x5d8>)				if (HTTP_SettingsPage(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen) == SEND_REQUIRED_YES) 802bc02:	f8df 81ac 	ldr.w	r8, [pc, #428]	; 802bdb0 <http_recv+0x5d0> 802bc06:	4e6d      	ldr	r6, [pc, #436]	; (802bdbc <http_recv+0x5dc>) 802bc08:	486d      	ldr	r0, [pc, #436]	; (802bdc0 <http_recv+0x5e0>)		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  	  else if (strncmp(data, "GET /settings.cgi", 17) == 0) // +	  {		SET_PAGE = SET_PAGE_PAGE2; 802bc0a:	2202      	movs	r2, #2 802bc0c:	701a      	strb	r2, [r3, #0]				if (HTTP_SettingsPage(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen) == SEND_REQUIRED_YES) 802bc0e:	4b6d      	ldr	r3, [pc, #436]	; (802bdc4 <http_recv+0x5e4>) 802bc10:	4641      	mov	r1, r8 802bc12:	881a      	ldrh	r2, [r3, #0] 802bc14:	4633      	mov	r3, r6 802bc16:	f7ff fc15 	bl	802b444 <HTTP_SettingsPage> 802bc1a:	2800      	cmp	r0, #0 802bc1c:	f040 8119 	bne.w	802be52 <http_recv+0x672> 802bc20:	e100      	b.n	802be24 <http_recv+0x644>          hs->left = file.len;          send_data(pcb, hs);          tcp_sent(pcb, http_sent);		}*/	  }	  else if (strncmp(data, "POST /settings.cgi", 18) == 0) 802bc22:	4630      	mov	r0, r6 802bc24:	4968      	ldr	r1, [pc, #416]	; (802bdc8 <http_recv+0x5e8>) 802bc26:	2212      	movs	r2, #18 802bc28:	f7f6 f984 	bl	8021f34 <strncmp> 802bc2c:	4680      	mov	r8, r0 802bc2e:	bb28      	cbnz	r0, 802bc7c <http_recv+0x49c>	  {		  strncat(&receiveBuf,  " ", 1); 802bc30:	2201      	movs	r2, #1 802bc32:	4966      	ldr	r1, [pc, #408]	; (802bdcc <http_recv+0x5ec>) 802bc34:	4862      	ldr	r0, [pc, #392]	; (802bdc0 <http_recv+0x5e0>)		  HTTP_SetSettings(receiveBuf, receivedBufLen);		  memset(sendBuf, 0, SEND_BUF_MAX_LEN); 802bc36:	4e5e      	ldr	r6, [pc, #376]	; (802bdb0 <http_recv+0x5d0>)          tcp_sent(pcb, http_sent);		}*/	  }	  else if (strncmp(data, "POST /settings.cgi", 18) == 0)	  {		  strncat(&receiveBuf,  " ", 1); 802bc38:	f7f6 f94a 	bl	8021ed0 <strncat>		  HTTP_SetSettings(receiveBuf, receivedBufLen); 802bc3c:	4b61      	ldr	r3, [pc, #388]	; (802bdc4 <http_recv+0x5e4>) 802bc3e:	4860      	ldr	r0, [pc, #384]	; (802bdc0 <http_recv+0x5e0>) 802bc40:	8819      	ldrh	r1, [r3, #0] 802bc42:	f7ff fa13 	bl	802b06c <HTTP_SetSettings>		  memset(sendBuf, 0, SEND_BUF_MAX_LEN); 802bc46:	f44f 62fa 	mov.w	r2, #2000	; 0x7d0 802bc4a:	4641      	mov	r1, r8 802bc4c:	4630      	mov	r0, r6 802bc4e:	f7f5 ff37 	bl	8021ac0 <memset>		  strcpy(sendBuf, "HTTP/1.1 200 OK\r\n"); 802bc52:	495f      	ldr	r1, [pc, #380]	; (802bdd0 <http_recv+0x5f0>) 802bc54:	4630      	mov	r0, r6 802bc56:	f7f6 f8ad 	bl	8021db4 <strcpy>		  strcat(sendBuf, "\r\n\r\n"); 802bc5a:	495e      	ldr	r1, [pc, #376]	; (802bdd4 <http_recv+0x5f4>) 802bc5c:	4630      	mov	r0, r6 802bc5e:	f7f5 ff95 	bl	8021b8c <strcat>		  strcat(sendBuf,"<!DOCTYPE html><html lang=""><head><meta http-equiv=\"refresh\" content=\"0;url=/settings.html\"/></head></html>\r\n\r\n"); 802bc62:	495d      	ldr	r1, [pc, #372]	; (802bdd8 <http_recv+0x5f8>) 802bc64:	4630      	mov	r0, r6 802bc66:	f7f5 ff91 	bl	8021b8c <strcat>		  sendBufLoadLen = strlen(sendBuf); 802bc6a:	4630      	mov	r0, r6 802bc6c:	f7f6 f900 	bl	8021e70 <strlen> 802bc70:	4b52      	ldr	r3, [pc, #328]	; (802bdbc <http_recv+0x5dc>) 802bc72:	8018      	strh	r0, [r3, #0]		  hs->file = sendBuf; 802bc74:	6026      	str	r6, [r4, #0]		  hs->left = sendBufLoadLen; 802bc76:	b280      	uxth	r0, r0 802bc78:	6060      	str	r0, [r4, #4] 802bc7a:	e0e2      	b.n	802be42 <http_recv+0x662>		  send_data(pcb, hs);		  tcp_sent(pcb, http_sent);	  }	  else if (strncmp(data, "GET /info.cgi", 13) == 0) // + 802bc7c:	4630      	mov	r0, r6 802bc7e:	4957      	ldr	r1, [pc, #348]	; (802bddc <http_recv+0x5fc>) 802bc80:	220d      	movs	r2, #13 802bc82:	f7f6 f957 	bl	8021f34 <strncmp> 802bc86:	b968      	cbnz	r0, 802bca4 <http_recv+0x4c4>	  {			if (HTTP_InfoPage(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen) == SEND_REQUIRED_YES) 802bc88:	4b4e      	ldr	r3, [pc, #312]	; (802bdc4 <http_recv+0x5e4>) 802bc8a:	f8df 8124 	ldr.w	r8, [pc, #292]	; 802bdb0 <http_recv+0x5d0> 802bc8e:	4e4b      	ldr	r6, [pc, #300]	; (802bdbc <http_recv+0x5dc>) 802bc90:	881a      	ldrh	r2, [r3, #0] 802bc92:	484b      	ldr	r0, [pc, #300]	; (802bdc0 <http_recv+0x5e0>) 802bc94:	4641      	mov	r1, r8 802bc96:	4633      	mov	r3, r6 802bc98:	f7ff fcde 	bl	802b658 <HTTP_InfoPage> 802bc9c:	b900      	cbnz	r0, 802bca0 <http_recv+0x4c0> 802bc9e:	e0c1      	b.n	802be24 <http_recv+0x644>			  send_data(pcb, hs);			  tcp_sent(pcb, http_sent);			}			else			{			  fs_open("/info.html", &file); 802bca0:	484f      	ldr	r0, [pc, #316]	; (802bde0 <http_recv+0x600>) 802bca2:	e0c7      	b.n	802be34 <http_recv+0x654>			  send_data(pcb, hs);			  tcp_sent(pcb, http_sent);			}	  }	  /* Тест  АКБ ИБП */	  else if (strncmp(data, "POST /bat_test.cgi", 18) == 0) 802bca4:	4630      	mov	r0, r6 802bca6:	494f      	ldr	r1, [pc, #316]	; (802bde4 <http_recv+0x604>) 802bca8:	2212      	movs	r2, #18 802bcaa:	f7f6 f943 	bl	8021f34 <strncmp> 802bcae:	b950      	cbnz	r0, 802bcc6 <http_recv+0x4e6>	  {		HTTP_UPSTest(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen); 802bcb0:	f8df 80fc 	ldr.w	r8, [pc, #252]	; 802bdb0 <http_recv+0x5d0> 802bcb4:	4e41      	ldr	r6, [pc, #260]	; (802bdbc <http_recv+0x5dc>) 802bcb6:	4b43      	ldr	r3, [pc, #268]	; (802bdc4 <http_recv+0x5e4>) 802bcb8:	4841      	ldr	r0, [pc, #260]	; (802bdc0 <http_recv+0x5e0>) 802bcba:	881a      	ldrh	r2, [r3, #0] 802bcbc:	4641      	mov	r1, r8 802bcbe:	4633      	mov	r3, r6 802bcc0:	f7fe ffae 	bl	802ac20 <HTTP_UPSTest> 802bcc4:	e0ae      	b.n	802be24 <http_recv+0x644>		hs->left = sendBufLoadLen;		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  /* Выключение ИБП */	  else if (strncmp(data, "POST /ups_power.cgi", 19) == 0) 802bcc6:	4630      	mov	r0, r6 802bcc8:	4947      	ldr	r1, [pc, #284]	; (802bde8 <http_recv+0x608>) 802bcca:	2213      	movs	r2, #19 802bccc:	f7f6 f932 	bl	8021f34 <strncmp> 802bcd0:	b950      	cbnz	r0, 802bce8 <http_recv+0x508>	  {		HTTP_UPSshutdown(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen); 802bcd2:	f8df 80dc 	ldr.w	r8, [pc, #220]	; 802bdb0 <http_recv+0x5d0> 802bcd6:	4e39      	ldr	r6, [pc, #228]	; (802bdbc <http_recv+0x5dc>) 802bcd8:	4b3a      	ldr	r3, [pc, #232]	; (802bdc4 <http_recv+0x5e4>) 802bcda:	4839      	ldr	r0, [pc, #228]	; (802bdc0 <http_recv+0x5e0>) 802bcdc:	881a      	ldrh	r2, [r3, #0] 802bcde:	4641      	mov	r1, r8 802bce0:	4633      	mov	r3, r6 802bce2:	f7ff f81f 	bl	802ad24 <HTTP_UPSshutdown> 802bce6:	e09d      	b.n	802be24 <http_recv+0x644>		hs->left = sendBufLoadLen;		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  /* Сброс настроек и сохранине */	  else if (strncmp(data, "GET /reset.cgi", 14) == 0) 802bce8:	4630      	mov	r0, r6 802bcea:	4940      	ldr	r1, [pc, #256]	; (802bdec <http_recv+0x60c>) 802bcec:	220e      	movs	r2, #14 802bcee:	f7f6 f921 	bl	8021f34 <strncmp> 802bcf2:	b928      	cbnz	r0, 802bd00 <http_recv+0x520>	  {		HTTP_ResetSettings(); 802bcf4:	f000 fcd4 	bl	802c6a0 <HTTP_ResetSettings>		HTTP_SaveSettings(); 802bcf8:	f000 fcd9 	bl	802c6ae <HTTP_SaveSettings>		fs_open("/settings.html", &file); 802bcfc:	483c      	ldr	r0, [pc, #240]	; (802bdf0 <http_recv+0x610>) 802bcfe:	e099      	b.n	802be34 <http_recv+0x654>		hs->left = file.len;		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  /* Перезагрузка контроллера */	  else if (strncmp(data, "GET /reboot.cgi", 15) == 0) 802bd00:	4630      	mov	r0, r6 802bd02:	493c      	ldr	r1, [pc, #240]	; (802bdf4 <http_recv+0x614>) 802bd04:	220f      	movs	r2, #15 802bd06:	f7f6 f915 	bl	8021f34 <strncmp> 802bd0a:	b910      	cbnz	r0, 802bd12 <http_recv+0x532>	  {		HTTP_Reboot(); 802bd0c:	f000 fcd1 	bl	802c6b2 <HTTP_Reboot> 802bd10:	e09f      	b.n	802be52 <http_recv+0x672>	  }	  /* Подтверждение новых сетевых настроек */	  else if (strncmp(data, "GET /confirm.cgi", 16) == 0) 802bd12:	4630      	mov	r0, r6 802bd14:	4938      	ldr	r1, [pc, #224]	; (802bdf8 <http_recv+0x618>) 802bd16:	2210      	movs	r2, #16 802bd18:	f7f6 f90c 	bl	8021f34 <strncmp> 802bd1c:	b920      	cbnz	r0, 802bd28 <http_recv+0x548>	  {		SetWebReinitFlag(false); 802bd1e:	f7fc f983 	bl	8028028 <SetWebReinitFlag>		SetConfirmWebParamsFlag(); 802bd22:	f7fc f987 	bl	8028034 <SetConfirmWebParamsFlag> 802bd26:	e084      	b.n	802be32 <http_recv+0x652>		hs->left = file.len;		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  /* Проверка пароля, переход в bootloader */	  else if (strncmp(data, "POST /fw_update.cgi", 18) == 0) 802bd28:	4630      	mov	r0, r6 802bd2a:	4934      	ldr	r1, [pc, #208]	; (802bdfc <http_recv+0x61c>) 802bd2c:	2212      	movs	r2, #18 802bd2e:	f7f6 f901 	bl	8021f34 <strncmp> 802bd32:	b950      	cbnz	r0, 802bd4a <http_recv+0x56a>	  {		HTTP_ConfirmBootPwd(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen); 802bd34:	f8df 8078 	ldr.w	r8, [pc, #120]	; 802bdb0 <http_recv+0x5d0> 802bd38:	4e20      	ldr	r6, [pc, #128]	; (802bdbc <http_recv+0x5dc>) 802bd3a:	4b22      	ldr	r3, [pc, #136]	; (802bdc4 <http_recv+0x5e4>) 802bd3c:	4820      	ldr	r0, [pc, #128]	; (802bdc0 <http_recv+0x5e0>) 802bd3e:	881a      	ldrh	r2, [r3, #0] 802bd40:	4641      	mov	r1, r8 802bd42:	4633      	mov	r3, r6 802bd44:	f7ff f896 	bl	802ae74 <HTTP_ConfirmBootPwd> 802bd48:	e06c      	b.n	802be24 <http_recv+0x644>		hs->left = sendBufLoadLen;		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  /* Смена пароля пользователя */	  else if (strncmp(data, "POST /changepwd.cgi", 19) == 0) 802bd4a:	4630      	mov	r0, r6 802bd4c:	492c      	ldr	r1, [pc, #176]	; (802be00 <http_recv+0x620>) 802bd4e:	2213      	movs	r2, #19 802bd50:	f7f6 f8f0 	bl	8021f34 <strncmp> 802bd54:	2800      	cmp	r0, #0 802bd56:	d155      	bne.n	802be04 <http_recv+0x624>	  {		  HTTP_ChangeUserPwd(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen); 802bd58:	f8df 8054 	ldr.w	r8, [pc, #84]	; 802bdb0 <http_recv+0x5d0> 802bd5c:	4e17      	ldr	r6, [pc, #92]	; (802bdbc <http_recv+0x5dc>) 802bd5e:	4b19      	ldr	r3, [pc, #100]	; (802bdc4 <http_recv+0x5e4>) 802bd60:	4817      	ldr	r0, [pc, #92]	; (802bdc0 <http_recv+0x5e0>) 802bd62:	881a      	ldrh	r2, [r3, #0] 802bd64:	4641      	mov	r1, r8 802bd66:	4633      	mov	r3, r6 802bd68:	f7ff fca2 	bl	802b6b0 <HTTP_ChangeUserPwd> 802bd6c:	e05a      	b.n	802be24 <http_recv+0x644> 802bd6e:	bf00      	nop 802bd70:	0803b59f 	.word	0x0803b59f 802bd74:	0802ab5f 	.word	0x0802ab5f 802bd78:	2000fc24 	.word	0x2000fc24 802bd7c:	2000fbf8 	.word	0x2000fbf8 802bd80:	0803b558 	.word	0x0803b558 802bd84:	0803b562 	.word	0x0803b562 802bd88:	0803b566 	.word	0x0803b566 802bd8c:	0803b571 	.word	0x0803b571 802bd90:	0803b575 	.word	0x0803b575 802bd94:	0803b5c4 	.word	0x0803b5c4 802bd98:	0803b5c8 	.word	0x0803b5c8 802bd9c:	0803b582 	.word	0x0803b582 802bda0:	0803b586 	.word	0x0803b586 802bda4:	0803b5d1 	.word	0x0803b5d1 802bda8:	0803b5e4 	.word	0x0803b5e4 802bdac:	0803b5f3 	.word	0x0803b5f3 802bdb0:	2000ed4c 	.word	0x2000ed4c 802bdb4:	0803b604 	.word	0x0803b604 802bdb8:	20002ad8 	.word	0x20002ad8 802bdbc:	20002ae0 	.word	0x20002ae0 802bdc0:	2000f51c 	.word	0x2000f51c 802bdc4:	20002ae2 	.word	0x20002ae2 802bdc8:	0803b616 	.word	0x0803b616 802bdcc:	08036e41 	.word	0x08036e41 802bdd0:	0803b629 	.word	0x0803b629 802bdd4:	0803b6a5 	.word	0x0803b6a5 802bdd8:	0803b63b 	.word	0x0803b63b 802bddc:	0803b6aa 	.word	0x0803b6aa 802bde0:	0803b5e8 	.word	0x0803b5e8 802bde4:	0803b6b8 	.word	0x0803b6b8 802bde8:	0803b6cb 	.word	0x0803b6cb 802bdec:	0803b6df 	.word	0x0803b6df 802bdf0:	0803b5d5 	.word	0x0803b5d5 802bdf4:	0803b6ee 	.word	0x0803b6ee 802bdf8:	0803b6fe 	.word	0x0803b6fe 802bdfc:	0803b71b 	.word	0x0803b71b 802be00:	0803b72f 	.word	0x0803b72f		  hs->left = sendBufLoadLen;		  send_data(pcb, hs);		  tcp_sent(pcb, http_sent);	  }	  // На производстве	  else if (strncmp(data, "GET /setProdate.cgi", 19) == 0) 802be04:	4630      	mov	r0, r6 802be06:	4918      	ldr	r1, [pc, #96]	; (802be68 <http_recv+0x688>) 802be08:	2213      	movs	r2, #19 802be0a:	f7f6 f893 	bl	8021f34 <strncmp> 802be0e:	b968      	cbnz	r0, 802be2c <http_recv+0x64c>	  {		HTTP_Prodate(receiveBuf, sendBuf, receivedBufLen, &sendBufLoadLen); 802be10:	4b16      	ldr	r3, [pc, #88]	; (802be6c <http_recv+0x68c>) 802be12:	f8df 806c 	ldr.w	r8, [pc, #108]	; 802be80 <http_recv+0x6a0> 802be16:	4e16      	ldr	r6, [pc, #88]	; (802be70 <http_recv+0x690>) 802be18:	881a      	ldrh	r2, [r3, #0] 802be1a:	4816      	ldr	r0, [pc, #88]	; (802be74 <http_recv+0x694>) 802be1c:	4641      	mov	r1, r8 802be1e:	4633      	mov	r3, r6 802be20:	f7ff fb7e 	bl	802b520 <HTTP_Prodate>		hs->file = sendBuf; 802be24:	f8c4 8000 	str.w	r8, [r4]		hs->left = sendBufLoadLen; 802be28:	8833      	ldrh	r3, [r6, #0] 802be2a:	e009      	b.n	802be40 <http_recv+0x660>		send_data(pcb, hs);		tcp_sent(pcb, http_sent);	  }	  else	  {		HTTP_UpdateUserLoginTime(user_id); 802be2c:	4648      	mov	r0, r9 802be2e:	f7fe fe0f 	bl	802aa50 <HTTP_UpdateUserLoginTime>		fs_open("/index.html", &file); // + 802be32:	4811      	ldr	r0, [pc, #68]	; (802be78 <http_recv+0x698>) 802be34:	a905      	add	r1, sp, #20 802be36:	f7fe fe1d 	bl	802aa74 <fs_open>		hs->file = file.data; 802be3a:	9b05      	ldr	r3, [sp, #20] 802be3c:	6023      	str	r3, [r4, #0]		hs->left = file.len; 802be3e:	9b06      	ldr	r3, [sp, #24] 802be40:	6063      	str	r3, [r4, #4]		send_data(pcb, hs); 802be42:	4628      	mov	r0, r5 802be44:	4621      	mov	r1, r4 802be46:	f7fe fe51 	bl	802aaec <send_data>		tcp_sent(pcb, http_sent); 802be4a:	4628      	mov	r0, r5 802be4c:	490b      	ldr	r1, [pc, #44]	; (802be7c <http_recv+0x69c>) 802be4e:	f002 f8d9 	bl	802e004 <tcp_sent>	  }	}    }    pbuf_free(p); 802be52:	4638      	mov	r0, r7 802be54:	f001 fe0e 	bl	802da74 <pbuf_free>    close_conn(pcb,hs); 802be58:	4628      	mov	r0, r5  }  if (err == ERR_OK && p == NULL)  {    close_conn(pcb, hs); 802be5a:	4621      	mov	r1, r4 802be5c:	f7fe fe69 	bl	802ab32 <close_conn>  }  return ERR_OK;}  802be60:	2000      	movs	r0, #0 802be62:	b01d      	add	sp, #116	; 0x74 802be64:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802be68:	0803b743 	.word	0x0803b743 802be6c:	20002ae2 	.word	0x20002ae2 802be70:	20002ae0 	.word	0x20002ae0 802be74:	2000f51c 	.word	0x2000f51c 802be78:	0803b70f 	.word	0x0803b70f 802be7c:	0802ab5f 	.word	0x0802ab5f 802be80:	2000ed4c 	.word	0x2000ed4c0802be84 <NVIC_SystemReset>: 802be84:	f3bf 8f4f 	dsb	sy                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | 802be88:	4a04      	ldr	r2, [pc, #16]	; (802be9c <NVIC_SystemReset+0x18>) 802be8a:	4b05      	ldr	r3, [pc, #20]	; (802bea0 <NVIC_SystemReset+0x1c>) 802be8c:	68d1      	ldr	r1, [r2, #12] 802be8e:	f401 61e0 	and.w	r1, r1, #1792	; 0x700 802be92:	430b      	orrs	r3, r1__STATIC_INLINE void NVIC_SystemReset(void)//static inline void NVIC_SystemReset(void){  __DSB();                                                     /* Ensure all outstanding memory accesses included                                                                  buffered write are completed before reset */  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      | 802be94:	60d3      	str	r3, [r2, #12] 802be96:	f3bf 8f4f 	dsb	sy 802be9a:	e7fe      	b.n	802be9a <NVIC_SystemReset+0x16> 802be9c:	e000ed00 	.word	0xe000ed00 802bea0:	05fa0004 	.word	0x05fa00040802bea4 <vTaskReboot>:/**  * @brief    */void vTaskReboot(void * pvParameters){ 802bea4:	b508      	push	{r3, lr}    for (;;)  {	mode = *(bool*)pvParameters;		if (mode) 802bea6:	7803      	ldrb	r3, [r0, #0] 802bea8:	b133      	cbz	r3, 802beb8 <vTaskReboot+0x14>	{	  SetLoadMode(); 802beaa:	f7fc f8b1 	bl	8028010 <SetLoadMode>  */void HTTP_SaveSettings(void){//  taskENTER_CRITICAL();    SETTINGS_Save(); 802beae:	f7fc fc35 	bl	802871c <SETTINGS_Save>		if (mode)	{	  SetLoadMode();	  HTTP_SaveSettings();	  SNMP_SendUserTrap(FW_VERSION_UPDATE); 802beb2:	2001      	movs	r0, #1 802beb4:	f009 fd60 	bl	8035978 <SNMP_SendUserTrap>      vTaskDelay(1010);	  NVIC_SystemReset();	}  	else	{	  vTaskDelay(1000); 802beb8:	f44f 707a 	mov.w	r0, #1000	; 0x3e8 802bebc:	f7fd fff2 	bl	8029ea4 <vTaskDelay>      /* Блокируем управление ключем на тау секунд*/      //IO_KeyBlockOn();      vTaskDelay(1010); 802bec0:	f240 30f2 	movw	r0, #1010	; 0x3f2 802bec4:	f7fd ffee 	bl	8029ea4 <vTaskDelay>	  NVIC_SystemReset(); 802bec8:	f7ff ffdc 	bl	802be84 <NVIC_SystemReset>0802becc <HTTP_GetParamsPage1>:/**  * @brief  Возвращяет строку с настройками на первой странице  * @retval None  */void HTTP_GetParamsPage1(char *buf){ 802becc:	b510      	push	{r4, lr}  char str[40];  uint8_t len;  memset(buf, 0, 1000); 802bece:	f44f 727a 	mov.w	r2, #1000	; 0x3e8/**  * @brief  Возвращяет строку с настройками на первой странице  * @retval None  */void HTTP_GetParamsPage1(char *buf){ 802bed2:	b08c      	sub	sp, #48	; 0x30 802bed4:	4604      	mov	r4, r0  char str[40];  uint8_t len;  memset(buf, 0, 1000); 802bed6:	2100      	movs	r1, #0 802bed8:	f7f5 fdf2 	bl	8021ac0 <memset>    // Headers для поддержки saffari   strcpy(buf, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n"); 802bedc:	4620      	mov	r0, r4 802bede:	497e      	ldr	r1, [pc, #504]	; (802c0d8 <HTTP_GetParamsPage1+0x20c>) 802bee0:	f7f5 ff68 	bl	8021db4 <strcpy>    // Параметры UPS    GetInputVoltageStr(str, &len); 802bee4:	a802      	add	r0, sp, #8 802bee6:	f10d 0107 	add.w	r1, sp, #7 802beea:	f7fb fc9b 	bl	8027824 <GetInputVoltageStr>  strcat(buf, "{\"AC\":\""); 802beee:	4620      	mov	r0, r4 802bef0:	497a      	ldr	r1, [pc, #488]	; (802c0dc <HTTP_GetParamsPage1+0x210>) 802bef2:	f7f5 fe4b 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bef6:	f89d 2007 	ldrb.w	r2, [sp, #7] 802befa:	a902      	add	r1, sp, #8 802befc:	4620      	mov	r0, r4 802befe:	f7f5 ffe7 	bl	8021ed0 <strncat>    GetOutputVoltageStr(str, &len); 802bf02:	a802      	add	r0, sp, #8 802bf04:	f10d 0107 	add.w	r1, sp, #7 802bf08:	f7fb fca2 	bl	8027850 <GetOutputVoltageStr>  strcat(buf, "\",\"DC\":\""); 802bf0c:	4620      	mov	r0, r4 802bf0e:	4974      	ldr	r1, [pc, #464]	; (802c0e0 <HTTP_GetParamsPage1+0x214>) 802bf10:	f7f5 fe3c 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bf14:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bf18:	a902      	add	r1, sp, #8 802bf1a:	4620      	mov	r0, r4 802bf1c:	f7f5 ffd8 	bl	8021ed0 <strncat>    GetInputFreqStr(str, &len); 802bf20:	a802      	add	r0, sp, #8 802bf22:	f10d 0107 	add.w	r1, sp, #7 802bf26:	f7fb fc51 	bl	80277cc <GetInputFreqStr>  strcat(buf, "\",\"in_freq\":\""); 802bf2a:	4620      	mov	r0, r4 802bf2c:	496d      	ldr	r1, [pc, #436]	; (802c0e4 <HTTP_GetParamsPage1+0x218>) 802bf2e:	f7f5 fe2d 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bf32:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bf36:	a902      	add	r1, sp, #8 802bf38:	4620      	mov	r0, r4 802bf3a:	f7f5 ffc9 	bl	8021ed0 <strncat>    GetOutputFreqStr(str, &len); 802bf3e:	a802      	add	r0, sp, #8 802bf40:	f10d 0107 	add.w	r1, sp, #7 802bf44:	f7fb fc58 	bl	80277f8 <GetOutputFreqStr>  strcat(buf, "\",\"out_freq\":\""); 802bf48:	4620      	mov	r0, r4 802bf4a:	4967      	ldr	r1, [pc, #412]	; (802c0e8 <HTTP_GetParamsPage1+0x21c>) 802bf4c:	f7f5 fe1e 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bf50:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bf54:	a902      	add	r1, sp, #8 802bf56:	4620      	mov	r0, r4 802bf58:	f7f5 ffba 	bl	8021ed0 <strncat>    GetPowerStr(str, &len); 802bf5c:	a802      	add	r0, sp, #8 802bf5e:	f10d 0107 	add.w	r1, sp, #7 802bf62:	f7fb fc8b 	bl	802787c <GetPowerStr>  strcat(buf, "\",\"pwr\":\""); 802bf66:	4620      	mov	r0, r4 802bf68:	4960      	ldr	r1, [pc, #384]	; (802c0ec <HTTP_GetParamsPage1+0x220>) 802bf6a:	f7f5 fe0f 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bf6e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bf72:	a902      	add	r1, sp, #8 802bf74:	4620      	mov	r0, r4 802bf76:	f7f5 ffab 	bl	8021ed0 <strncat>    GetLineFailBitStr(str, &len); 802bf7a:	a802      	add	r0, sp, #8 802bf7c:	f10d 0107 	add.w	r1, sp, #7 802bf80:	f7fb fc1a 	bl	80277b8 <GetLineFailBitStr>  strcat(buf, "\",\"line_fail\":\""); 802bf84:	4620      	mov	r0, r4 802bf86:	495a      	ldr	r1, [pc, #360]	; (802c0f0 <HTTP_GetParamsPage1+0x224>) 802bf88:	f7f5 fe00 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bf8c:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bf90:	a902      	add	r1, sp, #8 802bf92:	4620      	mov	r0, r4 802bf94:	f7f5 ff9c 	bl	8021ed0 <strncat>    GetLowBatteryBitStr(str, &len); 802bf98:	a802      	add	r0, sp, #8 802bf9a:	f10d 0107 	add.w	r1, sp, #7 802bf9e:	f7fb fc10 	bl	80277c2 <GetLowBatteryBitStr>  strcat(buf, "\",\"low_battery\":\""); 802bfa2:	4620      	mov	r0, r4 802bfa4:	4953      	ldr	r1, [pc, #332]	; (802c0f4 <HTTP_GetParamsPage1+0x228>) 802bfa6:	f7f5 fdf1 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bfaa:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bfae:	a902      	add	r1, sp, #8 802bfb0:	4620      	mov	r0, r4 802bfb2:	f7f5 ff8d 	bl	8021ed0 <strncat>    GetBatCapacityStr(str, &len); 802bfb6:	a802      	add	r0, sp, #8 802bfb8:	f10d 0107 	add.w	r1, sp, #7 802bfbc:	f7fb fc70 	bl	80278a0 <GetBatCapacityStr>  strcat(buf, "\",\"bat_cap\":\""); 802bfc0:	4620      	mov	r0, r4 802bfc2:	494d      	ldr	r1, [pc, #308]	; (802c0f8 <HTTP_GetParamsPage1+0x22c>) 802bfc4:	f7f5 fde2 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bfc8:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bfcc:	a902      	add	r1, sp, #8 802bfce:	4620      	mov	r0, r4 802bfd0:	f7f5 ff7e 	bl	8021ed0 <strncat>    GetInternalTempStr(str, &len); 802bfd4:	a802      	add	r0, sp, #8 802bfd6:	f10d 0107 	add.w	r1, sp, #7 802bfda:	f7fb fc85 	bl	80278e8 <GetInternalTempStr>  strcat(buf, "\",\"inner_temp\":\""); 802bfde:	4620      	mov	r0, r4 802bfe0:	4946      	ldr	r1, [pc, #280]	; (802c0fc <HTTP_GetParamsPage1+0x230>) 802bfe2:	f7f5 fdd3 	bl	8021b8c <strcat>  strncat(buf, str, len); 802bfe6:	f89d 2007 	ldrb.w	r2, [sp, #7] 802bfea:	a902      	add	r1, sp, #8 802bfec:	4620      	mov	r0, r4 802bfee:	f7f5 ff6f 	bl	8021ed0 <strncat>    GetRuntimeStr(str, &len); 802bff2:	a802      	add	r0, sp, #8 802bff4:	f10d 0107 	add.w	r1, sp, #7 802bff8:	f7fb fc64 	bl	80278c4 <GetRuntimeStr>  strcat(buf, "\",\"bat_time_left\":\""); 802bffc:	4620      	mov	r0, r4 802bffe:	4940      	ldr	r1, [pc, #256]	; (802c100 <HTTP_GetParamsPage1+0x234>) 802c000:	f7f5 fdc4 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c004:	a902      	add	r1, sp, #8 802c006:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c00a:	4620      	mov	r0, r4 802c00c:	f7f5 ff60 	bl	8021ed0 <strncat>    GetDINStatusStr(str, &len, 0); 802c010:	2200      	movs	r2, #0 802c012:	a802      	add	r0, sp, #8 802c014:	f10d 0107 	add.w	r1, sp, #7 802c018:	f7fb fd46 	bl	8027aa8 <GetDINStatusStr>  strcat(buf, "\",\"di1\":\""); 802c01c:	4620      	mov	r0, r4 802c01e:	4939      	ldr	r1, [pc, #228]	; (802c104 <HTTP_GetParamsPage1+0x238>) 802c020:	f7f5 fdb4 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c024:	a902      	add	r1, sp, #8 802c026:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c02a:	4620      	mov	r0, r4 802c02c:	f7f5 ff50 	bl	8021ed0 <strncat>    GetDOUTStatusStr(str, &len, 0); 802c030:	2200      	movs	r2, #0 802c032:	a802      	add	r0, sp, #8 802c034:	f10d 0107 	add.w	r1, sp, #7 802c038:	f7fb fd70 	bl	8027b1c <GetDOUTStatusStr>  strcat(buf, "\",\"ro1\":\""); 802c03c:	4620      	mov	r0, r4 802c03e:	4932      	ldr	r1, [pc, #200]	; (802c108 <HTTP_GetParamsPage1+0x23c>) 802c040:	f7f5 fda4 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c044:	a902      	add	r1, sp, #8 802c046:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c04a:	4620      	mov	r0, r4 802c04c:	f7f5 ff40 	bl	8021ed0 <strncat>    GetDOUTStatusStr(str, &len, 1); 802c050:	2201      	movs	r2, #1 802c052:	a802      	add	r0, sp, #8 802c054:	f10d 0107 	add.w	r1, sp, #7 802c058:	f7fb fd60 	bl	8027b1c <GetDOUTStatusStr>  strcat(buf, "\",\"ro2\":\""); 802c05c:	4620      	mov	r0, r4 802c05e:	492b      	ldr	r1, [pc, #172]	; (802c10c <HTTP_GetParamsPage1+0x240>) 802c060:	f7f5 fd94 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c064:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c068:	a902      	add	r1, sp, #8 802c06a:	4620      	mov	r0, r4 802c06c:	f7f5 ff30 	bl	8021ed0 <strncat>    // Мониторинг    // load_monitor (нагрузка, 0 - норма, 1 - fail)    // temp_monitor (внутренняя температура, 0 - норма, 1 - fail)    // connect_monitor (связь с UPSом, 0 - норма, 1 - fail)  GetConnectMonitorStr(str, &len); 802c070:	a802      	add	r0, sp, #8 802c072:	f10d 0107 	add.w	r1, sp, #7 802c076:	f7fb fc4d 	bl	8027914 <GetConnectMonitorStr>  strcat(buf, "\",\"connect_monitor\":\""); 802c07a:	4620      	mov	r0, r4 802c07c:	4924      	ldr	r1, [pc, #144]	; (802c110 <HTTP_GetParamsPage1+0x244>) 802c07e:	f7f5 fd85 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c082:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c086:	a902      	add	r1, sp, #8 802c088:	4620      	mov	r0, r4 802c08a:	f7f5 ff21 	bl	8021ed0 <strncat>    GetAlarmStr(str, &len); 802c08e:	a802      	add	r0, sp, #8 802c090:	f10d 0107 	add.w	r1, sp, #7 802c094:	f7fb fc44 	bl	8027920 <GetAlarmStr>  strcat(buf, "\",\"alarm\":\""); 802c098:	4620      	mov	r0, r4 802c09a:	491e      	ldr	r1, [pc, #120]	; (802c114 <HTTP_GetParamsPage1+0x248>) 802c09c:	f7f5 fd76 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c0a0:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c0a4:	a902      	add	r1, sp, #8 802c0a6:	4620      	mov	r0, r4 802c0a8:	f7f5 ff12 	bl	8021ed0 <strncat>  // Признак изменения сетевых настроек   GetWebReinitFlag(str, &len); 802c0ac:	a802      	add	r0, sp, #8 802c0ae:	f10d 0107 	add.w	r1, sp, #7 802c0b2:	f7fb ff93 	bl	8027fdc <GetWebReinitFlag>  strcat(buf, "\",\"netsettings_changed\":\""); 802c0b6:	4620      	mov	r0, r4 802c0b8:	4917      	ldr	r1, [pc, #92]	; (802c118 <HTTP_GetParamsPage1+0x24c>) 802c0ba:	f7f5 fd67 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c0be:	a902      	add	r1, sp, #8 802c0c0:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c0c4:	4620      	mov	r0, r4 802c0c6:	f7f5 ff03 	bl	8021ed0 <strncat>  strncat(buf, "\"}", 2); 802c0ca:	4620      	mov	r0, r4 802c0cc:	4913      	ldr	r1, [pc, #76]	; (802c11c <HTTP_GetParamsPage1+0x250>) 802c0ce:	2202      	movs	r2, #2 802c0d0:	f7f5 fefe 	bl	8021ed0 <strncat>    //printf(buf);} 802c0d4:	b00c      	add	sp, #48	; 0x30 802c0d6:	bd10      	pop	{r4, pc} 802c0d8:	08041037 	.word	0x08041037 802c0dc:	08041063 	.word	0x08041063 802c0e0:	0804106b 	.word	0x0804106b 802c0e4:	08041074 	.word	0x08041074 802c0e8:	08041082 	.word	0x08041082 802c0ec:	08041091 	.word	0x08041091 802c0f0:	0804109b 	.word	0x0804109b 802c0f4:	080410ab 	.word	0x080410ab 802c0f8:	080410bd 	.word	0x080410bd 802c0fc:	080410cb 	.word	0x080410cb 802c100:	080410dc 	.word	0x080410dc 802c104:	080410f0 	.word	0x080410f0 802c108:	080410fa 	.word	0x080410fa 802c10c:	08041104 	.word	0x08041104 802c110:	0804110e 	.word	0x0804110e 802c114:	08041124 	.word	0x08041124 802c118:	08041130 	.word	0x08041130 802c11c:	0804114a 	.word	0x0804114a0802c120 <HTTP_GetSettings>:/**  * @brief  Возвращяет строку с настройками на второй странице  * @retval None  */void HTTP_GetSettings(char *buf){ 802c120:	b510      	push	{r4, lr}  char str[30];  uint8_t len;     /* Headers для поддержки saffari */  strcpy(buf, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n"); 802c122:	49bf      	ldr	r1, [pc, #764]	; (802c420 <HTTP_GetSettings+0x300>)/**  * @brief  Возвращяет строку с настройками на второй странице  * @retval None  */void HTTP_GetSettings(char *buf){ 802c124:	b08a      	sub	sp, #40	; 0x28 802c126:	4604      	mov	r4, r0  char str[30];  uint8_t len;     /* Headers для поддержки saffari */  strcpy(buf, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n"); 802c128:	f7f5 fe44 	bl	8021db4 <strcpy>    /* SNMP */  GetReadCommunity(str, &len);   802c12c:	a802      	add	r0, sp, #8 802c12e:	f10d 0107 	add.w	r1, sp, #7 802c132:	f7fb fe91 	bl	8027e58 <GetReadCommunity>  strcat(buf, "{\"read_community\":\""); 802c136:	4620      	mov	r0, r4 802c138:	49ba      	ldr	r1, [pc, #744]	; (802c424 <HTTP_GetSettings+0x304>) 802c13a:	f7f5 fd27 	bl	8021b8c <strcat>  strncat(buf, str, len);	 802c13e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c142:	a902      	add	r1, sp, #8 802c144:	4620      	mov	r0, r4 802c146:	f7f5 fec3 	bl	8021ed0 <strncat>    GetWriteCommunity(str, &len);   802c14a:	a802      	add	r0, sp, #8 802c14c:	f10d 0107 	add.w	r1, sp, #7 802c150:	f7fb fe92 	bl	8027e78 <GetWriteCommunity>  strcat(buf, "\",\"write_community\":\""); 802c154:	4620      	mov	r0, r4 802c156:	49b4      	ldr	r1, [pc, #720]	; (802c428 <HTTP_GetSettings+0x308>) 802c158:	f7f5 fd18 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c15c:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c160:	a902      	add	r1, sp, #8 802c162:	4620      	mov	r0, r4 802c164:	f7f5 feb4 	bl	8021ed0 <strncat>    GetManagerIp(str, &len);   802c168:	a802      	add	r0, sp, #8 802c16a:	f10d 0107 	add.w	r1, sp, #7 802c16e:	f7fb fe93 	bl	8027e98 <GetManagerIp>  strcat(buf, "\",\"managerIP\":\""); 802c172:	4620      	mov	r0, r4 802c174:	49ad      	ldr	r1, [pc, #692]	; (802c42c <HTTP_GetSettings+0x30c>) 802c176:	f7f5 fd09 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c17a:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c17e:	a902      	add	r1, sp, #8 802c180:	4620      	mov	r0, r4 802c182:	f7f5 fea5 	bl	8021ed0 <strncat>    GetManagerIp2(str, &len);   802c186:	a802      	add	r0, sp, #8 802c188:	f10d 0107 	add.w	r1, sp, #7 802c18c:	f7fb fe94 	bl	8027eb8 <GetManagerIp2>  strcat(buf, "\",\"managerIP2\":\""); 802c190:	4620      	mov	r0, r4 802c192:	49a7      	ldr	r1, [pc, #668]	; (802c430 <HTTP_GetSettings+0x310>) 802c194:	f7f5 fcfa 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c198:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c19c:	a902      	add	r1, sp, #8 802c19e:	4620      	mov	r0, r4 802c1a0:	f7f5 fe96 	bl	8021ed0 <strncat>    GetManagerIp3(str, &len);   802c1a4:	a802      	add	r0, sp, #8 802c1a6:	f10d 0107 	add.w	r1, sp, #7 802c1aa:	f7fb fe95 	bl	8027ed8 <GetManagerIp3>  strcat(buf, "\",\"managerIP3\":\""); 802c1ae:	4620      	mov	r0, r4 802c1b0:	49a0      	ldr	r1, [pc, #640]	; (802c434 <HTTP_GetSettings+0x314>) 802c1b2:	f7f5 fceb 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c1b6:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c1ba:	a902      	add	r1, sp, #8 802c1bc:	4620      	mov	r0, r4 802c1be:	f7f5 fe87 	bl	8021ed0 <strncat>  GetManagerIp4(str, &len); 802c1c2:	a802      	add	r0, sp, #8 802c1c4:	f10d 0107 	add.w	r1, sp, #7 802c1c8:	f7fb fe96 	bl	8027ef8 <GetManagerIp4>  strcat(buf, "\",\"managerIP4\":\""); 802c1cc:	4620      	mov	r0, r4 802c1ce:	499a      	ldr	r1, [pc, #616]	; (802c438 <HTTP_GetSettings+0x318>) 802c1d0:	f7f5 fcdc 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c1d4:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c1d8:	a902      	add	r1, sp, #8 802c1da:	4620      	mov	r0, r4 802c1dc:	f7f5 fe78 	bl	8021ed0 <strncat>  GetManagerIp5(str, &len); 802c1e0:	a802      	add	r0, sp, #8 802c1e2:	f10d 0107 	add.w	r1, sp, #7 802c1e6:	f7fb fe97 	bl	8027f18 <GetManagerIp5>  strcat(buf, "\",\"managerIP5\":\""); 802c1ea:	4620      	mov	r0, r4 802c1ec:	4993      	ldr	r1, [pc, #588]	; (802c43c <HTTP_GetSettings+0x31c>) 802c1ee:	f7f5 fccd 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c1f2:	a902      	add	r1, sp, #8 802c1f4:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c1f8:	4620      	mov	r0, r4 802c1fa:	f7f5 fe69 	bl	8021ed0 <strncat>  /*Параметры реле и сухих контактов*/  GetDINTypeActStr(str, &len, 0); 802c1fe:	2200      	movs	r2, #0 802c200:	a802      	add	r0, sp, #8 802c202:	f10d 0107 	add.w	r1, sp, #7 802c206:	f7fb fc3b 	bl	8027a80 <GetDINTypeActStr>  strcat(buf, "\",\"di1\":\""); 802c20a:	4620      	mov	r0, r4 802c20c:	498c      	ldr	r1, [pc, #560]	; (802c440 <HTTP_GetSettings+0x320>) 802c20e:	f7f5 fcbd 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c212:	a902      	add	r1, sp, #8 802c214:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c218:	4620      	mov	r0, r4 802c21a:	f7f5 fe59 	bl	8021ed0 <strncat>  GetROTypeActStr(str, &len, 0); 802c21e:	2200      	movs	r2, #0 802c220:	a802      	add	r0, sp, #8 802c222:	f10d 0107 	add.w	r1, sp, #7 802c226:	f7fb fc65 	bl	8027af4 <GetROTypeActStr>  strcat(buf, "\",\"ro1\":\""); 802c22a:	4620      	mov	r0, r4 802c22c:	4985      	ldr	r1, [pc, #532]	; (802c444 <HTTP_GetSettings+0x324>) 802c22e:	f7f5 fcad 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c232:	a902      	add	r1, sp, #8 802c234:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c238:	4620      	mov	r0, r4 802c23a:	f7f5 fe49 	bl	8021ed0 <strncat>  GetROTypeActStr(str, &len, 1); 802c23e:	2201      	movs	r2, #1 802c240:	a802      	add	r0, sp, #8 802c242:	f10d 0107 	add.w	r1, sp, #7 802c246:	f7fb fc55 	bl	8027af4 <GetROTypeActStr>  strcat(buf, "\",\"ro2\":\""); 802c24a:	4620      	mov	r0, r4 802c24c:	497e      	ldr	r1, [pc, #504]	; (802c448 <HTTP_GetSettings+0x328>) 802c24e:	f7f5 fc9d 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c252:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c256:	a902      	add	r1, sp, #8 802c258:	4620      	mov	r0, r4 802c25a:	f7f5 fe39 	bl	8021ed0 <strncat>	  /* WEB */  GetIpStr(str, &len);   802c25e:	a802      	add	r0, sp, #8 802c260:	f10d 0107 	add.w	r1, sp, #7 802c264:	f7fb fda2 	bl	8027dac <GetIpStr>  strcat(buf, "\",\"ipaddr\":\""); 802c268:	4620      	mov	r0, r4 802c26a:	4978      	ldr	r1, [pc, #480]	; (802c44c <HTTP_GetSettings+0x32c>) 802c26c:	f7f5 fc8e 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c270:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c274:	a902      	add	r1, sp, #8 802c276:	4620      	mov	r0, r4 802c278:	f7f5 fe2a 	bl	8021ed0 <strncat>    GetGatewayStr(str, &len);   802c27c:	a802      	add	r0, sp, #8 802c27e:	f10d 0107 	add.w	r1, sp, #7 802c282:	f7fb fda9 	bl	8027dd8 <GetGatewayStr>  strcat(buf, "\",\"gw\":\""); 802c286:	4620      	mov	r0, r4 802c288:	4971      	ldr	r1, [pc, #452]	; (802c450 <HTTP_GetSettings+0x330>) 802c28a:	f7f5 fc7f 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c28e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c292:	a902      	add	r1, sp, #8 802c294:	4620      	mov	r0, r4 802c296:	f7f5 fe1b 	bl	8021ed0 <strncat>    GetMaskStr(str, &len);   802c29a:	a802      	add	r0, sp, #8 802c29c:	f10d 0107 	add.w	r1, sp, #7 802c2a0:	f7fb fdb0 	bl	8027e04 <GetMaskStr>  strcat(buf, "\",\"mask\":\""); 802c2a4:	4620      	mov	r0, r4 802c2a6:	496b      	ldr	r1, [pc, #428]	; (802c454 <HTTP_GetSettings+0x334>) 802c2a8:	f7f5 fc70 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c2ac:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c2b0:	a902      	add	r1, sp, #8 802c2b2:	4620      	mov	r0, r4 802c2b4:	f7f5 fe0c 	bl	8021ed0 <strncat>    GetDhcpStateStr(str, &len);   802c2b8:	a802      	add	r0, sp, #8 802c2ba:	f10d 0107 	add.w	r1, sp, #7 802c2be:	f7fb fdb7 	bl	8027e30 <GetDhcpStateStr>  strcat(buf, "\",\"dhcp\":"); 802c2c2:	4620      	mov	r0, r4 802c2c4:	4964      	ldr	r1, [pc, #400]	; (802c458 <HTTP_GetSettings+0x338>) 802c2c6:	f7f5 fc61 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c2ca:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c2ce:	a902      	add	r1, sp, #8 802c2d0:	4620      	mov	r0, r4 802c2d2:	f7f5 fdfd 	bl	8021ed0 <strncat>  /* RADIUS */  GetRDSIpStr(str, &len); 802c2d6:	a802      	add	r0, sp, #8 802c2d8:	f10d 0107 	add.w	r1, sp, #7 802c2dc:	f7fb fe2c 	bl	8027f38 <GetRDSIpStr>  strcat(buf, ",\"rs_server\":\""); 802c2e0:	4620      	mov	r0, r4 802c2e2:	495e      	ldr	r1, [pc, #376]	; (802c45c <HTTP_GetSettings+0x33c>) 802c2e4:	f7f5 fc52 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c2e8:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c2ec:	a902      	add	r1, sp, #8 802c2ee:	4620      	mov	r0, r4 802c2f0:	f7f5 fdee 	bl	8021ed0 <strncat>  GetRDSPortStr(str, &len); 802c2f4:	a802      	add	r0, sp, #8 802c2f6:	f10d 0107 	add.w	r1, sp, #7 802c2fa:	f7fb fe2d 	bl	8027f58 <GetRDSPortStr>  strcat(buf, "\",\"rs_port\":\""); 802c2fe:	4620      	mov	r0, r4 802c300:	4957      	ldr	r1, [pc, #348]	; (802c460 <HTTP_GetSettings+0x340>) 802c302:	f7f5 fc43 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c306:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c30a:	a902      	add	r1, sp, #8 802c30c:	4620      	mov	r0, r4 802c30e:	f7f5 fddf 	bl	8021ed0 <strncat>  GetRDSPasswordkStr(str, &len); 802c312:	a802      	add	r0, sp, #8 802c314:	f10d 0107 	add.w	r1, sp, #7 802c318:	f7fb fe42 	bl	8027fa0 <GetRDSPasswordkStr>  strcat(buf, "\",\"rs_pwd\":\""); 802c31c:	4620      	mov	r0, r4 802c31e:	4951      	ldr	r1, [pc, #324]	; (802c464 <HTTP_GetSettings+0x344>) 802c320:	f7f5 fc34 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c324:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c328:	a902      	add	r1, sp, #8 802c32a:	4620      	mov	r0, r4 802c32c:	f7f5 fdd0 	bl	8021ed0 <strncat>  GetRDSKeyAccesstStr(str, &len); 802c330:	a802      	add	r0, sp, #8 802c332:	f10d 0107 	add.w	r1, sp, #7 802c336:	f7fb fe21 	bl	8027f7c <GetRDSKeyAccesstStr>  strcat(buf, "\",\"rs_key\":\""); 802c33a:	4620      	mov	r0, r4 802c33c:	494a      	ldr	r1, [pc, #296]	; (802c468 <HTTP_GetSettings+0x348>) 802c33e:	f7f5 fc25 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c342:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c346:	a902      	add	r1, sp, #8 802c348:	4620      	mov	r0, r4 802c34a:	f7f5 fdc1 	bl	8021ed0 <strncat>  GetRDSEnableStateStr(str, &len); 802c34e:	a802      	add	r0, sp, #8 802c350:	f10d 0107 	add.w	r1, sp, #7 802c354:	f7fb fe34 	bl	8027fc0 <GetRDSEnableStateStr>  strcat(buf, "\",\"rs_enabled\":"); 802c358:	4620      	mov	r0, r4 802c35a:	4944      	ldr	r1, [pc, #272]	; (802c46c <HTTP_GetSettings+0x34c>) 802c35c:	f7f5 fc16 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c360:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c364:	a902      	add	r1, sp, #8 802c366:	4620      	mov	r0, r4 802c368:	f7f5 fdb2 	bl	8021ed0 <strncat>  /* Параметры даты и времени */  GetDateStr(str, &len); 802c36c:	a802      	add	r0, sp, #8 802c36e:	f10d 0107 	add.w	r1, sp, #7 802c372:	f7fb fae7 	bl	8027944 <GetDateStr>  strcat(buf, ",\"date\":\""); 802c376:	4620      	mov	r0, r4 802c378:	493d      	ldr	r1, [pc, #244]	; (802c470 <HTTP_GetSettings+0x350>) 802c37a:	f7f5 fc07 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c37e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c382:	a902      	add	r1, sp, #8 802c384:	4620      	mov	r0, r4 802c386:	f7f5 fda3 	bl	8021ed0 <strncat>  GetTimeStr(str, &len); 802c38a:	a802      	add	r0, sp, #8 802c38c:	f10d 0107 	add.w	r1, sp, #7 802c390:	f7fb faf6 	bl	8027980 <GetTimeStr>  strcat(buf, "\",\"time\":\""); 802c394:	4620      	mov	r0, r4 802c396:	4937      	ldr	r1, [pc, #220]	; (802c474 <HTTP_GetSettings+0x354>) 802c398:	f7f5 fbf8 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c39c:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c3a0:	a902      	add	r1, sp, #8 802c3a2:	4620      	mov	r0, r4 802c3a4:	f7f5 fd94 	bl	8021ed0 <strncat>  /* Параметры SNTP */  GetSntpStateStr(str, &len); 802c3a8:	a802      	add	r0, sp, #8 802c3aa:	f10d 0107 	add.w	r1, sp, #7 802c3ae:	f7fb fb15 	bl	80279dc <GetSntpStateStr>  strcat(buf, "\",\"ntp\":\""); 802c3b2:	4620      	mov	r0, r4 802c3b4:	4930      	ldr	r1, [pc, #192]	; (802c478 <HTTP_GetSettings+0x358>) 802c3b6:	f7f5 fbe9 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c3ba:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c3be:	a902      	add	r1, sp, #8 802c3c0:	4620      	mov	r0, r4 802c3c2:	f7f5 fd85 	bl	8021ed0 <strncat>  GetSntpServerIpStr(str, &len); 802c3c6:	a802      	add	r0, sp, #8 802c3c8:	f10d 0107 	add.w	r1, sp, #7 802c3cc:	f7fb fb20 	bl	8027a10 <GetSntpServerIpStr>  strcat(buf, "\",\"ntpservip\":\""); 802c3d0:	4620      	mov	r0, r4 802c3d2:	492a      	ldr	r1, [pc, #168]	; (802c47c <HTTP_GetSettings+0x35c>) 802c3d4:	f7f5 fbda 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c3d8:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c3dc:	a902      	add	r1, sp, #8 802c3de:	4620      	mov	r0, r4 802c3e0:	f7f5 fd76 	bl	8021ed0 <strncat>  GetSntpTimeZoneStr(str, &len); 802c3e4:	a802      	add	r0, sp, #8 802c3e6:	f10d 0107 	add.w	r1, sp, #7 802c3ea:	f7fb fb21 	bl	8027a30 <GetSntpTimeZoneStr>  strcat(buf, "\",\"utc\":\""); 802c3ee:	4620      	mov	r0, r4 802c3f0:	4923      	ldr	r1, [pc, #140]	; (802c480 <HTTP_GetSettings+0x360>) 802c3f2:	f7f5 fbcb 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c3f6:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c3fa:	a902      	add	r1, sp, #8 802c3fc:	4620      	mov	r0, r4 802c3fe:	f7f5 fd67 	bl	8021ed0 <strncat>  GetUnixTimeStr(str, &len); 802c402:	a802      	add	r0, sp, #8 802c404:	f10d 0107 	add.w	r1, sp, #7 802c408:	f7fb fad2 	bl	80279b0 <GetUnixTimeStr>   strcat(buf, "\",\"utm\":\""); 802c40c:	4620      	mov	r0, r4 802c40e:	491d      	ldr	r1, [pc, #116]	; (802c484 <HTTP_GetSettings+0x364>) 802c410:	f7f5 fbbc 	bl	8021b8c <strcat>   strncat(buf, str, len); 802c414:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c418:	a902      	add	r1, sp, #8 802c41a:	4620      	mov	r0, r4 802c41c:	e034      	b.n	802c488 <HTTP_GetSettings+0x368> 802c41e:	bf00      	nop 802c420:	08041037 	.word	0x08041037 802c424:	0804114d 	.word	0x0804114d 802c428:	08041161 	.word	0x08041161 802c42c:	08041177 	.word	0x08041177 802c430:	08041187 	.word	0x08041187 802c434:	08041198 	.word	0x08041198 802c438:	080411a9 	.word	0x080411a9 802c43c:	080411ba 	.word	0x080411ba 802c440:	080410f0 	.word	0x080410f0 802c444:	080410fa 	.word	0x080410fa 802c448:	08041104 	.word	0x08041104 802c44c:	080411cb 	.word	0x080411cb 802c450:	080411d8 	.word	0x080411d8 802c454:	080411e1 	.word	0x080411e1 802c458:	080411ec 	.word	0x080411ec 802c45c:	080411f6 	.word	0x080411f6 802c460:	08041205 	.word	0x08041205 802c464:	08041213 	.word	0x08041213 802c468:	08041220 	.word	0x08041220 802c46c:	0804122d 	.word	0x0804122d 802c470:	0804123d 	.word	0x0804123d 802c474:	08041247 	.word	0x08041247 802c478:	08041252 	.word	0x08041252 802c47c:	0804125c 	.word	0x0804125c 802c480:	0804126c 	.word	0x0804126c 802c484:	08041276 	.word	0x08041276 802c488:	f7f5 fd22 	bl	8021ed0 <strncat>  GetSntpLastDataStr(str, &len); 802c48c:	a802      	add	r0, sp, #8 802c48e:	f10d 0107 	add.w	r1, sp, #7 802c492:	f7fb fae5 	bl	8027a60 <GetSntpLastDataStr>  strcat(buf, "\",\"lastsynctime\":\""); 802c496:	4620      	mov	r0, r4 802c498:	490f      	ldr	r1, [pc, #60]	; (802c4d8 <HTTP_GetSettings+0x3b8>) 802c49a:	f7f5 fb77 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c49e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c4a2:	a902      	add	r1, sp, #8 802c4a4:	4620      	mov	r0, r4 802c4a6:	f7f5 fd13 	bl	8021ed0 <strncat>   /* Признак изменения сетевых настроек */   GetWebReinitFlag(str, &len); 802c4aa:	a802      	add	r0, sp, #8 802c4ac:	f10d 0107 	add.w	r1, sp, #7 802c4b0:	f7fb fd94 	bl	8027fdc <GetWebReinitFlag>  strcat(buf, "\",\"netsettings_changed\":\""); 802c4b4:	4620      	mov	r0, r4 802c4b6:	4909      	ldr	r1, [pc, #36]	; (802c4dc <HTTP_GetSettings+0x3bc>) 802c4b8:	f7f5 fb68 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c4bc:	a902      	add	r1, sp, #8 802c4be:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c4c2:	4620      	mov	r0, r4 802c4c4:	f7f5 fd04 	bl	8021ed0 <strncat>    strncat(buf, "\"}", 2); 802c4c8:	4620      	mov	r0, r4 802c4ca:	4905      	ldr	r1, [pc, #20]	; (802c4e0 <HTTP_GetSettings+0x3c0>) 802c4cc:	2202      	movs	r2, #2 802c4ce:	f7f5 fcff 	bl	8021ed0 <strncat>    //printf(buf);} 802c4d2:	b00a      	add	sp, #40	; 0x28 802c4d4:	bd10      	pop	{r4, pc} 802c4d6:	bf00      	nop 802c4d8:	08041280 	.word	0x08041280 802c4dc:	08041130 	.word	0x08041130 802c4e0:	0804114a 	.word	0x0804114a0802c4e4 <HTTP_GetInfo>:  * @brief  Возвращяет строку с информацией об устройстве  * @retval None  */// TODO Согласовать максимальную длину строкvoid HTTP_GetInfo(char *buf){ 802c4e4:	b510      	push	{r4, lr}  char str[40];  uint8_t len;    /* Headers для поддержки saffari */  strcpy(buf, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n"); 802c4e6:	4960      	ldr	r1, [pc, #384]	; (802c668 <HTTP_GetInfo+0x184>)  * @brief  Возвращяет строку с информацией об устройстве  * @retval None  */// TODO Согласовать максимальную длину строкvoid HTTP_GetInfo(char *buf){ 802c4e8:	b08c      	sub	sp, #48	; 0x30 802c4ea:	4604      	mov	r4, r0  char str[40];  uint8_t len;    /* Headers для поддержки saffari */  strcpy(buf, "HTTP/1.0 200 OK\r\nContent-Type:text/html\r\n\r\n"); 802c4ec:	f7f5 fc62 	bl	8021db4 <strcpy>    GetWorkTimeStr(str, &len);   802c4f0:	a802      	add	r0, sp, #8 802c4f2:	f10d 0107 	add.w	r1, sp, #7 802c4f6:	f7fb fb49 	bl	8027b8c <GetWorkTimeStr>  strcat(buf, "{\"uptime\":\""); 802c4fa:	4620      	mov	r0, r4 802c4fc:	495b      	ldr	r1, [pc, #364]	; (802c66c <HTTP_GetInfo+0x188>) 802c4fe:	f7f5 fb45 	bl	8021b8c <strcat>  strncat(buf, str, len);	 802c502:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c506:	a902      	add	r1, sp, #8 802c508:	4620      	mov	r0, r4 802c50a:	f7f5 fce1 	bl	8021ed0 <strncat>    GetModelStr(str, &len);   802c50e:	a802      	add	r0, sp, #8 802c510:	f10d 0107 	add.w	r1, sp, #7 802c514:	f7fb fb60 	bl	8027bd8 <GetModelStr>  strcat(buf, "\",\"model\":\""); 802c518:	4620      	mov	r0, r4 802c51a:	4955      	ldr	r1, [pc, #340]	; (802c670 <HTTP_GetInfo+0x18c>) 802c51c:	f7f5 fb36 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c520:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c524:	a902      	add	r1, sp, #8 802c526:	4620      	mov	r0, r4 802c528:	f7f5 fcd2 	bl	8021ed0 <strncat>    GetProductionDataStr(str, &len);   802c52c:	a802      	add	r0, sp, #8 802c52e:	f10d 0107 	add.w	r1, sp, #7 802c532:	f7fb fb63 	bl	8027bfc <GetProductionDataStr>  strcat(buf, "\",\"prodate\":\""); 802c536:	4620      	mov	r0, r4 802c538:	494e      	ldr	r1, [pc, #312]	; (802c674 <HTTP_GetInfo+0x190>) 802c53a:	f7f5 fb27 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c53e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c542:	a902      	add	r1, sp, #8 802c544:	4620      	mov	r0, r4 802c546:	f7f5 fcc3 	bl	8021ed0 <strncat>    GetVersionStr(str, &len);   802c54a:	a802      	add	r0, sp, #8 802c54c:	f10d 0107 	add.w	r1, sp, #7 802c550:	f7fb fb66 	bl	8027c20 <GetVersionStr>  strcat(buf, "\",\"fwversion\":\""); 802c554:	4620      	mov	r0, r4 802c556:	4948      	ldr	r1, [pc, #288]	; (802c678 <HTTP_GetInfo+0x194>) 802c558:	f7f5 fb18 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c55c:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c560:	a902      	add	r1, sp, #8 802c562:	4620      	mov	r0, r4 802c564:	f7f5 fcb4 	bl	8021ed0 <strncat>    GetMacStr(str, &len);   802c568:	a802      	add	r0, sp, #8 802c56a:	f10d 0107 	add.w	r1, sp, #7 802c56e:	f7fb fb69 	bl	8027c44 <GetMacStr>  strcat(buf, "\",\"macaddr\":\""); 802c572:	4620      	mov	r0, r4 802c574:	4941      	ldr	r1, [pc, #260]	; (802c67c <HTTP_GetInfo+0x198>) 802c576:	f7f5 fb09 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c57a:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c57e:	a902      	add	r1, sp, #8 802c580:	4620      	mov	r0, r4 802c582:	f7f5 fca5 	bl	8021ed0 <strncat>    GetSerialNumberStr(str, &len);   802c586:	a802      	add	r0, sp, #8 802c588:	f10d 0107 	add.w	r1, sp, #7 802c58c:	f7fb fb6c 	bl	8027c68 <GetSerialNumberStr>  strcat(buf, "\",\"serno\":\""); 802c590:	4620      	mov	r0, r4 802c592:	493b      	ldr	r1, [pc, #236]	; (802c680 <HTTP_GetInfo+0x19c>) 802c594:	f7f5 fafa 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c598:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c59c:	a902      	add	r1, sp, #8 802c59e:	4620      	mov	r0, r4 802c5a0:	f7f5 fc96 	bl	8021ed0 <strncat>    GetOwnerStr(str, &len);   802c5a4:	a802      	add	r0, sp, #8 802c5a6:	f10d 0107 	add.w	r1, sp, #7 802c5aa:	f7fb fb6f 	bl	8027c8c <GetOwnerStr>  strcat(buf, "\",\"owner\":\""); 802c5ae:	4620      	mov	r0, r4 802c5b0:	4934      	ldr	r1, [pc, #208]	; (802c684 <HTTP_GetInfo+0x1a0>) 802c5b2:	f7f5 faeb 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c5b6:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c5ba:	a902      	add	r1, sp, #8 802c5bc:	4620      	mov	r0, r4 802c5be:	f7f5 fc87 	bl	8021ed0 <strncat>    GetLocationStr(str, &len);   802c5c2:	a802      	add	r0, sp, #8 802c5c4:	f10d 0107 	add.w	r1, sp, #7 802c5c8:	f7fb fb72 	bl	8027cb0 <GetLocationStr>  strcat(buf, "\",\"sysLocation\":\""); 802c5cc:	4620      	mov	r0, r4 802c5ce:	492e      	ldr	r1, [pc, #184]	; (802c688 <HTTP_GetInfo+0x1a4>) 802c5d0:	f7f5 fadc 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c5d4:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c5d8:	a902      	add	r1, sp, #8 802c5da:	4620      	mov	r0, r4 802c5dc:	f7f5 fc78 	bl	8021ed0 <strncat>    GetCommentsStr(str, &len);   802c5e0:	a802      	add	r0, sp, #8 802c5e2:	f10d 0107 	add.w	r1, sp, #7 802c5e6:	f7fb fb75 	bl	8027cd4 <GetCommentsStr>  strcat(buf, "\",\"comment\":\""); 802c5ea:	4620      	mov	r0, r4 802c5ec:	4927      	ldr	r1, [pc, #156]	; (802c68c <HTTP_GetInfo+0x1a8>) 802c5ee:	f7f5 facd 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c5f2:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c5f6:	a902      	add	r1, sp, #8 802c5f8:	4620      	mov	r0, r4 802c5fa:	f7f5 fc69 	bl	8021ed0 <strncat>  GetUPSModelStr(str, &len); 802c5fe:	a802      	add	r0, sp, #8 802c600:	f10d 0107 	add.w	r1, sp, #7 802c604:	f7fb fb78 	bl	8027cf8 <GetUPSModelStr>  strcat(buf, "\",\"ups_model\":\""); 802c608:	4620      	mov	r0, r4 802c60a:	4921      	ldr	r1, [pc, #132]	; (802c690 <HTTP_GetInfo+0x1ac>) 802c60c:	f7f5 fabe 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c610:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c614:	a902      	add	r1, sp, #8 802c616:	4620      	mov	r0, r4 802c618:	f7f5 fc5a 	bl	8021ed0 <strncat>  GetUPSVersionStr(str, &len); 802c61c:	a802      	add	r0, sp, #8 802c61e:	f10d 0107 	add.w	r1, sp, #7 802c622:	f7fb fb7b 	bl	8027d1c <GetUPSVersionStr>  strcat(buf, "\",\"ups_fwversion\":\""); 802c626:	4620      	mov	r0, r4 802c628:	491a      	ldr	r1, [pc, #104]	; (802c694 <HTTP_GetInfo+0x1b0>) 802c62a:	f7f5 faaf 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c62e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c632:	a902      	add	r1, sp, #8 802c634:	4620      	mov	r0, r4 802c636:	f7f5 fc4b 	bl	8021ed0 <strncat>   /* Признак изменения сетевых настроек */   GetWebReinitFlag(str, &len); 802c63a:	a802      	add	r0, sp, #8 802c63c:	f10d 0107 	add.w	r1, sp, #7 802c640:	f7fb fccc 	bl	8027fdc <GetWebReinitFlag>  strcat(buf, "\",\"netsettings_changed\":\""); 802c644:	4620      	mov	r0, r4 802c646:	4914      	ldr	r1, [pc, #80]	; (802c698 <HTTP_GetInfo+0x1b4>) 802c648:	f7f5 faa0 	bl	8021b8c <strcat>  strncat(buf, str, len); 802c64c:	a902      	add	r1, sp, #8 802c64e:	f89d 2007 	ldrb.w	r2, [sp, #7] 802c652:	4620      	mov	r0, r4 802c654:	f7f5 fc3c 	bl	8021ed0 <strncat>    strncat(buf, "\"}", 2); 802c658:	4620      	mov	r0, r4 802c65a:	4910      	ldr	r1, [pc, #64]	; (802c69c <HTTP_GetInfo+0x1b8>) 802c65c:	2202      	movs	r2, #2 802c65e:	f7f5 fc37 	bl	8021ed0 <strncat>  } 802c662:	b00c      	add	sp, #48	; 0x30 802c664:	bd10      	pop	{r4, pc} 802c666:	bf00      	nop 802c668:	08041037 	.word	0x08041037 802c66c:	08041293 	.word	0x08041293 802c670:	0804129f 	.word	0x0804129f 802c674:	080412ab 	.word	0x080412ab 802c678:	080412b9 	.word	0x080412b9 802c67c:	080412c9 	.word	0x080412c9 802c680:	080412d7 	.word	0x080412d7 802c684:	080412e3 	.word	0x080412e3 802c688:	080412ef 	.word	0x080412ef 802c68c:	08041301 	.word	0x08041301 802c690:	0804130f 	.word	0x0804130f 802c694:	0804131f 	.word	0x0804131f 802c698:	08041130 	.word	0x08041130 802c69c:	0804114a 	.word	0x0804114a0802c6a0 <HTTP_ResetSettings>:/**  * @brief  Сброс настроек (всё кроме сетевых параметров)  */void HTTP_ResetSettings(void){ 802c6a0:	b508      	push	{r3, lr}  //taskENTER_CRITICAL();      SETTINGS_SetPartDefault(); 802c6a2:	f7fc f89b 	bl	80287dc <SETTINGS_SetPartDefault>  SETTINGS_Save();	    //taskEXIT_CRITICAL();} 802c6a6:	e8bd 4008 	ldmia.w	sp!, {r3, lr}void HTTP_ResetSettings(void){  //taskENTER_CRITICAL();      SETTINGS_SetPartDefault();  SETTINGS_Save(); 802c6aa:	f7fc b837 	b.w	802871c <SETTINGS_Save>0802c6ae <HTTP_SaveSettings>:  */void HTTP_SaveSettings(void){//  taskENTER_CRITICAL();    SETTINGS_Save(); 802c6ae:	f7fc b835 	b.w	802871c <SETTINGS_Save>0802c6b2 <HTTP_Reboot>:/**  * @brief  Перезагрузка контроллера  */void HTTP_Reboot(void){ 802c6b2:	b508      	push	{r3, lr}  vTaskDelay(1010); 802c6b4:	f240 30f2 	movw	r0, #1010	; 0x3f2 802c6b8:	f7fd fbf4 	bl	8029ea4 <vTaskDelay>  NVIC_SystemReset(); 802c6bc:	f7ff fbe2 	bl	802be84 <NVIC_SystemReset>0802c6c0 <HTTP_StartResetTask>:  *        bootloader и перезаписаны настройки  *  *        false - обычная перезагрузка   */void HTTP_StartResetTask(bool fBootMode){ 802c6c0:	b51f      	push	{r0, r1, r2, r3, r4, lr}  static bool temp;   temp = fBootMode; 802c6c2:	4b07      	ldr	r3, [pc, #28]	; (802c6e0 <HTTP_StartResetTask+0x20>)  xTaskCreate(vTaskReboot, "RebootTask", configMINIMAL_STACK_SIZE,  802c6c4:	4907      	ldr	r1, [pc, #28]	; (802c6e4 <HTTP_StartResetTask+0x24>)  */void HTTP_StartResetTask(bool fBootMode){  static bool temp;   temp = fBootMode; 802c6c6:	7018      	strb	r0, [r3, #0]  xTaskCreate(vTaskReboot, "RebootTask", configMINIMAL_STACK_SIZE,  802c6c8:	2200      	movs	r2, #0 802c6ca:	9200      	str	r2, [sp, #0] 802c6cc:	9201      	str	r2, [sp, #4] 802c6ce:	9202      	str	r2, [sp, #8] 802c6d0:	9203      	str	r2, [sp, #12] 802c6d2:	4805      	ldr	r0, [pc, #20]	; (802c6e8 <HTTP_StartResetTask+0x28>) 802c6d4:	2280      	movs	r2, #128	; 0x80 802c6d6:	f7fd f94b 	bl	8029970 <xTaskGenericCreate>			  (void*)&temp, tskIDLE_PRIORITY, NULL);} 802c6da:	b005      	add	sp, #20 802c6dc:	bd00      	pop	{pc} 802c6de:	bf00      	nop 802c6e0:	20002ae4 	.word	0x20002ae4 802c6e4:	08041333 	.word	0x08041333 802c6e8:	0802bea5 	.word	0x0802bea50802c6ec <tcpip_thread>:tcpip_thread(void *arg){  struct tcpip_msg *msg;  LWIP_UNUSED_ARG(arg);  if (tcpip_init_done != NULL) { 802c6ec:	4b1e      	ldr	r3, [pc, #120]	; (802c768 <tcpip_thread+0x7c>) 802c6ee:	681b      	ldr	r3, [r3, #0] * * @param arg unused argument */static voidtcpip_thread(void *arg){ 802c6f0:	b507      	push	{r0, r1, r2, lr}  struct tcpip_msg *msg;  LWIP_UNUSED_ARG(arg);  if (tcpip_init_done != NULL) { 802c6f2:	b113      	cbz	r3, 802c6fa <tcpip_thread+0xe>    tcpip_init_done(tcpip_init_done_arg); 802c6f4:	4a1d      	ldr	r2, [pc, #116]	; (802c76c <tcpip_thread+0x80>) 802c6f6:	6810      	ldr	r0, [r2, #0] 802c6f8:	4798      	blx	r3  LOCK_TCPIP_CORE();  while (1) {                          /* MAIN Loop */    UNLOCK_TCPIP_CORE();    LWIP_TCPIP_THREAD_ALIVE();    /* wait for a message, timeouts are processed while waiting */    sys_timeouts_mbox_fetch(&mbox, (void **)&msg); 802c6fa:	481d      	ldr	r0, [pc, #116]	; (802c770 <tcpip_thread+0x84>) 802c6fc:	a901      	add	r1, sp, #4 802c6fe:	f003 fd0d 	bl	803011c <sys_timeouts_mbox_fetch>    LOCK_TCPIP_CORE();    switch (msg->type) { 802c702:	9b01      	ldr	r3, [sp, #4] 802c704:	781a      	ldrb	r2, [r3, #0] 802c706:	2a05      	cmp	r2, #5 802c708:	d8f7      	bhi.n	802c6fa <tcpip_thread+0xe> 802c70a:	e8df f002 	tbb	[pc, r2] 802c70e:	0703      	.short	0x0703 802c710:	28201b15 	.word	0x28201b15#if LWIP_NETCONN    case TCPIP_MSG_API:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: API message %p\n", (void *)msg));      msg->msg.apimsg->function(&(msg->msg.apimsg->msg)); 802c714:	6898      	ldr	r0, [r3, #8] 802c716:	6803      	ldr	r3, [r0, #0] 802c718:	3004      	adds	r0, #4 802c71a:	e7ed      	b.n	802c6f8 <tcpip_thread+0xc>#if !LWIP_TCPIP_CORE_LOCKING_INPUT    case TCPIP_MSG_INPKT:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: PACKET %p\n", (void *)msg));#if LWIP_ETHERNET      if (msg->msg.inp.netif->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) { 802c71c:	68d9      	ldr	r1, [r3, #12]        ethernet_input(msg->msg.inp.p, msg->msg.inp.netif); 802c71e:	6898      	ldr	r0, [r3, #8]#if !LWIP_TCPIP_CORE_LOCKING_INPUT    case TCPIP_MSG_INPKT:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: PACKET %p\n", (void *)msg));#if LWIP_ETHERNET      if (msg->msg.inp.netif->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) { 802c720:	f891 202d 	ldrb.w	r2, [r1, #45]	; 0x2d 802c724:	f012 0f60 	tst.w	r2, #96	; 0x60 802c728:	d002      	beq.n	802c730 <tcpip_thread+0x44>        ethernet_input(msg->msg.inp.p, msg->msg.inp.netif); 802c72a:	f008 fb73 	bl	8034e14 <ethernet_input> 802c72e:	e001      	b.n	802c734 <tcpip_thread+0x48>      } else#endif /* LWIP_ETHERNET */      {        ip_input(msg->msg.inp.p, msg->msg.inp.netif); 802c730:	f004 f94e 	bl	80309d0 <ip_input>      }      memp_free(MEMP_TCPIP_MSG_INPKT, msg); 802c734:	2008      	movs	r0, #8 802c736:	e00e      	b.n	802c756 <tcpip_thread+0x6a>#endif /* LWIP_NETIF_API */#if LWIP_TCPIP_TIMEOUT    case TCPIP_MSG_TIMEOUT:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: TIMEOUT %p\n", (void *)msg));      sys_timeout(msg->msg.tmo.msecs, msg->msg.tmo.h, msg->msg.tmo.arg); 802c738:	f103 0008 	add.w	r0, r3, #8 802c73c:	c807      	ldmia	r0, {r0, r1, r2} 802c73e:	f003 fc1f 	bl	802ff80 <sys_timeout> 802c742:	e007      	b.n	802c754 <tcpip_thread+0x68>      memp_free(MEMP_TCPIP_MSG_API, msg);      break;    case TCPIP_MSG_UNTIMEOUT:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: UNTIMEOUT %p\n", (void *)msg));      sys_untimeout(msg->msg.tmo.h, msg->msg.tmo.arg); 802c744:	68d8      	ldr	r0, [r3, #12] 802c746:	6919      	ldr	r1, [r3, #16] 802c748:	f003 fcc4 	bl	80300d4 <sys_untimeout> 802c74c:	e002      	b.n	802c754 <tcpip_thread+0x68>      break;#endif /* LWIP_TCPIP_TIMEOUT */    case TCPIP_MSG_CALLBACK:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: CALLBACK %p\n", (void *)msg));      msg->msg.cb.function(msg->msg.cb.ctx); 802c74e:	689a      	ldr	r2, [r3, #8] 802c750:	68d8      	ldr	r0, [r3, #12] 802c752:	4790      	blx	r2      memp_free(MEMP_TCPIP_MSG_API, msg); 802c754:	2007      	movs	r0, #7 802c756:	9901      	ldr	r1, [sp, #4] 802c758:	f001 f882 	bl	802d860 <memp_free>      break; 802c75c:	e7cd      	b.n	802c6fa <tcpip_thread+0xe>    case TCPIP_MSG_CALLBACK_STATIC:      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: CALLBACK_STATIC %p\n", (void *)msg));      msg->msg.cb.function(msg->msg.cb.ctx); 802c75e:	689a      	ldr	r2, [r3, #8] 802c760:	68d8      	ldr	r0, [r3, #12] 802c762:	4790      	blx	r2      break; 802c764:	e7c9      	b.n	802c6fa <tcpip_thread+0xe> 802c766:	bf00      	nop 802c768:	20002af0 	.word	0x20002af0 802c76c:	20002aec 	.word	0x20002aec 802c770:	20002ae8 	.word	0x20002ae80802c774 <tcpip_input>: *          NETIF_FLAG_ETHERNET flags) * @param inp the network interface on which the packet was received */err_ttcpip_input(struct pbuf *p, struct netif *inp){ 802c774:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  UNLOCK_TCPIP_CORE();  return ret;#else /* LWIP_TCPIP_CORE_LOCKING_INPUT */  struct tcpip_msg *msg;  if (!sys_mbox_valid(&mbox)) { 802c776:	4d0e      	ldr	r5, [pc, #56]	; (802c7b0 <tcpip_input+0x3c>) 802c778:	682b      	ldr	r3, [r5, #0] *          NETIF_FLAG_ETHERNET flags) * @param inp the network interface on which the packet was received */err_ttcpip_input(struct pbuf *p, struct netif *inp){ 802c77a:	4606      	mov	r6, r0 802c77c:	460f      	mov	r7, r1  UNLOCK_TCPIP_CORE();  return ret;#else /* LWIP_TCPIP_CORE_LOCKING_INPUT */  struct tcpip_msg *msg;  if (!sys_mbox_valid(&mbox)) { 802c77e:	b193      	cbz	r3, 802c7a6 <tcpip_input+0x32>    return ERR_VAL;  }  msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_INPKT); 802c780:	2008      	movs	r0, #8 802c782:	f001 f857 	bl	802d834 <memp_malloc>  if (msg == NULL) { 802c786:	4604      	mov	r4, r0 802c788:	b178      	cbz	r0, 802c7aa <tcpip_input+0x36>    return ERR_MEM;  }  msg->type = TCPIP_MSG_INPKT; 802c78a:	2301      	movs	r3, #1 802c78c:	7003      	strb	r3, [r0, #0]  msg->msg.inp.p = p; 802c78e:	6086      	str	r6, [r0, #8]  msg->msg.inp.netif = inp; 802c790:	60c7      	str	r7, [r0, #12]  if (sys_mbox_trypost(&mbox, msg) != ERR_OK) { 802c792:	4621      	mov	r1, r4 802c794:	4628      	mov	r0, r5 802c796:	f008 fd8b 	bl	80352b0 <sys_mbox_trypost> 802c79a:	b138      	cbz	r0, 802c7ac <tcpip_input+0x38>    memp_free(MEMP_TCPIP_MSG_INPKT, msg); 802c79c:	2008      	movs	r0, #8 802c79e:	4621      	mov	r1, r4 802c7a0:	f001 f85e 	bl	802d860 <memp_free> 802c7a4:	e001      	b.n	802c7aa <tcpip_input+0x36>  return ret;#else /* LWIP_TCPIP_CORE_LOCKING_INPUT */  struct tcpip_msg *msg;  if (!sys_mbox_valid(&mbox)) {    return ERR_VAL; 802c7a6:	20fa      	movs	r0, #250	; 0xfa 802c7a8:	e000      	b.n	802c7ac <tcpip_input+0x38>  }  msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_INPKT);  if (msg == NULL) {    return ERR_MEM; 802c7aa:	20ff      	movs	r0, #255	; 0xff    memp_free(MEMP_TCPIP_MSG_INPKT, msg);    return ERR_MEM;  }  return ERR_OK;#endif /* LWIP_TCPIP_CORE_LOCKING_INPUT */} 802c7ac:	b240      	sxtb	r0, r0 802c7ae:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802c7b0:	20002ae8 	.word	0x20002ae80802c7b4 <tcpip_init>: * @param initfunc a function to call when tcpip_thread is running and finished initializing * @param arg argument to pass to initfunc */voidtcpip_init(tcpip_init_done_fn initfunc, void *arg){ 802c7b4:	b537      	push	{r0, r1, r2, r4, r5, lr} 802c7b6:	4604      	mov	r4, r0 802c7b8:	460d      	mov	r5, r1  lwip_init(); 802c7ba:	f000 feb3 	bl	802d524 <lwip_init>  tcpip_init_done = initfunc; 802c7be:	4b09      	ldr	r3, [pc, #36]	; (802c7e4 <tcpip_init+0x30>)  tcpip_init_done_arg = arg;  if(sys_mbox_new(&mbox, TCPIP_MBOX_SIZE) != ERR_OK) { 802c7c0:	4809      	ldr	r0, [pc, #36]	; (802c7e8 <tcpip_init+0x34>)voidtcpip_init(tcpip_init_done_fn initfunc, void *arg){  lwip_init();  tcpip_init_done = initfunc; 802c7c2:	601c      	str	r4, [r3, #0]  tcpip_init_done_arg = arg; 802c7c4:	4b09      	ldr	r3, [pc, #36]	; (802c7ec <tcpip_init+0x38>)  if(sys_mbox_new(&mbox, TCPIP_MBOX_SIZE) != ERR_OK) { 802c7c6:	2132      	movs	r1, #50	; 0x32tcpip_init(tcpip_init_done_fn initfunc, void *arg){  lwip_init();  tcpip_init_done = initfunc;  tcpip_init_done_arg = arg; 802c7c8:	601d      	str	r5, [r3, #0]  if(sys_mbox_new(&mbox, TCPIP_MBOX_SIZE) != ERR_OK) { 802c7ca:	f008 fd63 	bl	8035294 <sys_mbox_new>  if(sys_mutex_new(&lock_tcpip_core) != ERR_OK) {    LWIP_ASSERT("failed to create lock_tcpip_core", 0);  }#endif /* LWIP_TCPIP_CORE_LOCKING */  sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO); 802c7ce:	2303      	movs	r3, #3 802c7d0:	9300      	str	r3, [sp, #0] 802c7d2:	4907      	ldr	r1, [pc, #28]	; (802c7f0 <tcpip_init+0x3c>) 802c7d4:	4807      	ldr	r0, [pc, #28]	; (802c7f4 <tcpip_init+0x40>) 802c7d6:	2200      	movs	r2, #0 802c7d8:	f44f 73c8 	mov.w	r3, #400	; 0x190 802c7dc:	f008 fdd9 	bl	8035392 <sys_thread_new>} 802c7e0:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 802c7e2:	bf00      	nop 802c7e4:	20002af0 	.word	0x20002af0 802c7e8:	20002ae8 	.word	0x20002ae8 802c7ec:	20002aec 	.word	0x20002aec 802c7f0:	0802c6ed 	.word	0x0802c6ed 802c7f4:	0804133e 	.word	0x0804133e0802c7f8 <lwip_htons>: * @return n in network byte order */u16_tlwip_htons(u16_t n){  return ((n & 0xff) << 8) | ((n & 0xff00) >> 8); 802c7f8:	0a03      	lsrs	r3, r0, #8 802c7fa:	ea43 2000 	orr.w	r0, r3, r0, lsl #8} 802c7fe:	b280      	uxth	r0, r0 802c800:	4770      	bx	lr0802c802 <lwip_ntohs>: * @return n in network byte order */u16_tlwip_htons(u16_t n){  return ((n & 0xff) << 8) | ((n & 0xff00) >> 8); 802c802:	0a03      	lsrs	r3, r0, #8 802c804:	ea43 2000 	orr.w	r0, r3, r0, lsl #8 */u16_tlwip_ntohs(u16_t n){  return lwip_htons(n);} 802c808:	b280      	uxth	r0, r0 802c80a:	4770      	bx	lr0802c80c <lwip_htonl>:{  return ((n & 0xff) << 24) |    ((n & 0xff00) << 8) |    ((n & 0xff0000UL) >> 8) |    ((n & 0xff000000UL) >> 24);} 802c80c:	ba00      	rev	r0, r0 802c80e:	4770      	bx	lr0802c810 <lwip_ntohl>: * @return n in host byte order */u32_tlwip_ntohl(u32_t n){  return lwip_htonl(n); 802c810:	f7ff bffc 	b.w	802c80c <lwip_htonl>0802c814 <dhcp_set_state>: * If the state changed, reset the number of tries. */static voiddhcp_set_state(struct dhcp *dhcp, u8_t new_state){  if (new_state != dhcp->state) { 802c814:	7b03      	ldrb	r3, [r0, #12] 802c816:	428b      	cmp	r3, r1 802c818:	d003      	beq.n	802c822 <dhcp_set_state+0xe>    dhcp->state = new_state;    dhcp->tries = 0; 802c81a:	2300      	movs	r3, #0 */static voiddhcp_set_state(struct dhcp *dhcp, u8_t new_state){  if (new_state != dhcp->state) {    dhcp->state = new_state; 802c81c:	7301      	strb	r1, [r0, #12]    dhcp->tries = 0; 802c81e:	7343      	strb	r3, [r0, #13]    dhcp->request_timeout = 0; 802c820:	8343      	strh	r3, [r0, #26] 802c822:	4770      	bx	lr0802c824 <dhcp_option>: */static voiddhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len){  LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = option_type; 802c824:	8b03      	ldrh	r3, [r0, #24] * DHCP message. * */static voiddhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len){ 802c826:	b510      	push	{r4, lr}  LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = option_type; 802c828:	6944      	ldr	r4, [r0, #20] 802c82a:	18e4      	adds	r4, r4, r3 802c82c:	f884 10f0 	strb.w	r1, [r4, #240]	; 0xf0  dhcp->msg_out->options[dhcp->options_out_len++] = option_len; 802c830:	6941      	ldr	r1, [r0, #20] */static voiddhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len){  LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = option_type; 802c832:	1c5c      	adds	r4, r3, #1  dhcp->msg_out->options[dhcp->options_out_len++] = option_len; 802c834:	fa11 f184 	uxtah	r1, r1, r4 802c838:	3302      	adds	r3, #2 802c83a:	f881 20f0 	strb.w	r2, [r1, #240]	; 0xf0 802c83e:	8303      	strh	r3, [r0, #24] 802c840:	bd10      	pop	{r4, pc}0802c842 <dhcp_option_byte>: */static voiddhcp_option_byte(struct dhcp *dhcp, u8_t value){  LWIP_ASSERT("dhcp_option_byte: dhcp->options_out_len < DHCP_OPTIONS_LEN", dhcp->options_out_len < DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = value; 802c842:	8b03      	ldrh	r3, [r0, #24] 802c844:	6942      	ldr	r2, [r0, #20] 802c846:	18d2      	adds	r2, r2, r3 802c848:	3301      	adds	r3, #1 802c84a:	f882 10f0 	strb.w	r1, [r2, #240]	; 0xf0 802c84e:	8303      	strh	r3, [r0, #24] 802c850:	4770      	bx	lr0802c852 <dhcp_option_short>:static voiddhcp_option_short(struct dhcp *dhcp, u16_t value){  LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8); 802c852:	8b03      	ldrh	r3, [r0, #24] 802c854:	6942      	ldr	r2, [r0, #20] 802c856:	18d2      	adds	r2, r2, r3  dhcp->msg_out->options[dhcp->options_out_len++] = value;}static voiddhcp_option_short(struct dhcp *dhcp, u16_t value){ 802c858:	b510      	push	{r4, lr}  LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8); 802c85a:	0a0c      	lsrs	r4, r1, #8 802c85c:	f882 40f0 	strb.w	r4, [r2, #240]	; 0xf0  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU); 802c860:	6942      	ldr	r2, [r0, #20]static voiddhcp_option_short(struct dhcp *dhcp, u16_t value){  LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8); 802c862:	1c5c      	adds	r4, r3, #1  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU); 802c864:	fa12 f284 	uxtah	r2, r2, r4 802c868:	3302      	adds	r3, #2 802c86a:	f882 10f0 	strb.w	r1, [r2, #240]	; 0xf0 802c86e:	8303      	strh	r3, [r0, #24] 802c870:	bd10      	pop	{r4, pc}0802c872 <dhcp_option_long>:static voiddhcp_option_long(struct dhcp *dhcp, u32_t value){  LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); 802c872:	8b03      	ldrh	r3, [r0, #24] 802c874:	6942      	ldr	r2, [r0, #20] 802c876:	18d2      	adds	r2, r2, r3  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU);}static voiddhcp_option_long(struct dhcp *dhcp, u32_t value){ 802c878:	b510      	push	{r4, lr}  LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); 802c87a:	0e0c      	lsrs	r4, r1, #24 802c87c:	f882 40f0 	strb.w	r4, [r2, #240]	; 0xf0  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); 802c880:	6942      	ldr	r2, [r0, #20]static voiddhcp_option_long(struct dhcp *dhcp, u32_t value){  LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); 802c882:	1c5c      	adds	r4, r3, #1  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); 802c884:	fa12 f284 	uxtah	r2, r2, r4 802c888:	f3c1 4407 	ubfx	r4, r1, #16, #8 802c88c:	f882 40f0 	strb.w	r4, [r2, #240]	; 0xf0  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); 802c890:	6942      	ldr	r2, [r0, #20]static voiddhcp_option_long(struct dhcp *dhcp, u32_t value){  LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); 802c892:	1c9c      	adds	r4, r3, #2  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); 802c894:	fa12 f284 	uxtah	r2, r2, r4 802c898:	f3c1 2407 	ubfx	r4, r1, #8, #8 802c89c:	f882 40f0 	strb.w	r4, [r2, #240]	; 0xf0  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x000000ffUL)); 802c8a0:	6942      	ldr	r2, [r0, #20]dhcp_option_long(struct dhcp *dhcp, u32_t value){  LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16);  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); 802c8a2:	1cdc      	adds	r4, r3, #3  dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x000000ffUL)); 802c8a4:	fa12 f284 	uxtah	r2, r2, r4 802c8a8:	3304      	adds	r3, #4 802c8aa:	f882 10f0 	strb.w	r1, [r2, #240]	; 0xf0 802c8ae:	8303      	strh	r3, [r0, #24] 802c8b0:	bd10      	pop	{r4, pc}0802c8b2 <dhcp_option_trailer>: * @param dhcp DHCP state structure */static voiddhcp_option_trailer(struct dhcp *dhcp){  LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;); 802c8b2:	b190      	cbz	r0, 802c8da <dhcp_option_trailer+0x28>  LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL);  LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END; 802c8b4:	8b03      	ldrh	r3, [r0, #24] 802c8b6:	6942      	ldr	r2, [r0, #20] 802c8b8:	18d2      	adds	r2, r2, r3 802c8ba:	21ff      	movs	r1, #255	; 0xff 802c8bc:	3301      	adds	r3, #1 802c8be:	f882 10f0 	strb.w	r1, [r2, #240]	; 0xf0 802c8c2:	8303      	strh	r3, [r0, #24]  /* packet is too small, or not 4 byte aligned? */  while (((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) &&         (dhcp->options_out_len < DHCP_OPTIONS_LEN)) {    /* add a fill/padding byte */    dhcp->msg_out->options[dhcp->options_out_len++] = 0; 802c8c4:	2100      	movs	r1, #0  LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;);  LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL);  LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END;  /* packet is too small, or not 4 byte aligned? */  while (((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) && 802c8c6:	e005      	b.n	802c8d4 <dhcp_option_trailer+0x22>         (dhcp->options_out_len < DHCP_OPTIONS_LEN)) {    /* add a fill/padding byte */    dhcp->msg_out->options[dhcp->options_out_len++] = 0; 802c8c8:	6942      	ldr	r2, [r0, #20] 802c8ca:	18d2      	adds	r2, r2, r3 802c8cc:	3301      	adds	r3, #1 802c8ce:	f882 10f0 	strb.w	r1, [r2, #240]	; 0xf0 802c8d2:	8303      	strh	r3, [r0, #24]  LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;);  LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL);  LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN);  dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END;  /* packet is too small, or not 4 byte aligned? */  while (((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) && 802c8d4:	8b03      	ldrh	r3, [r0, #24] 802c8d6:	2b43      	cmp	r3, #67	; 0x43 802c8d8:	d9f6      	bls.n	802c8c8 <dhcp_option_trailer+0x16> 802c8da:	4770      	bx	lr0802c8dc <dhcp_create_msg>: * @param dhcp dhcp control struct * @param message_type message type of the request */static err_tdhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type){ 802c8dc:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802c8e0:	460c      	mov	r4, r1 802c8e2:	4617      	mov	r7, r2  if (!xid_initialised) {    xid = DHCP_GLOBAL_XID;    xid_initialised = !xid_initialised;  }#endif  LWIP_ERROR("dhcp_create_msg: netif != NULL", (netif != NULL), return ERR_ARG;); 802c8e4:	4606      	mov	r6, r0 802c8e6:	2800      	cmp	r0, #0 802c8e8:	f000 808e 	beq.w	802ca08 <dhcp_create_msg+0x12c>  LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); 802c8ec:	2900      	cmp	r1, #0 802c8ee:	f000 808d 	beq.w	802ca0c <dhcp_create_msg+0x130>  LWIP_ASSERT("dhcp_create_msg: dhcp->p_out == NULL", dhcp->p_out == NULL);  LWIP_ASSERT("dhcp_create_msg: dhcp->msg_out == NULL", dhcp->msg_out == NULL);  dhcp->p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM); 802c8f2:	2000      	movs	r0, #0 802c8f4:	f44f 719a 	mov.w	r1, #308	; 0x134 802c8f8:	4602      	mov	r2, r0 802c8fa:	f001 f908 	bl	802db0e <pbuf_alloc> 802c8fe:	6120      	str	r0, [r4, #16]  if (dhcp->p_out == NULL) { 802c900:	2800      	cmp	r0, #0 802c902:	f000 8085 	beq.w	802ca10 <dhcp_create_msg+0x134>  }  LWIP_ASSERT("dhcp_create_msg: check that first pbuf can hold struct dhcp_msg",           (dhcp->p_out->len >= sizeof(struct dhcp_msg)));  /* reuse transaction identifier in retransmissions */  if (dhcp->tries == 0) { 802c906:	7b62      	ldrb	r2, [r4, #13] 802c908:	4b43      	ldr	r3, [pc, #268]	; (802ca18 <dhcp_create_msg+0x13c>) 802c90a:	b912      	cbnz	r2, 802c912 <dhcp_create_msg+0x36>#if DHCP_CREATE_RAND_XID && defined(LWIP_RAND)    xid = LWIP_RAND();#else /* DHCP_CREATE_RAND_XID && defined(LWIP_RAND) */    xid++; 802c90c:	681a      	ldr	r2, [r3, #0] 802c90e:	3201      	adds	r2, #1 802c910:	601a      	str	r2, [r3, #0]#endif /* DHCP_CREATE_RAND_XID && defined(LWIP_RAND) */  }  dhcp->xid = xid; 802c912:	681b      	ldr	r3, [r3, #0]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,              ("transaction id xid(%"X32_F")\n", xid));  dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload; 802c914:	6842      	ldr	r2, [r0, #4]    xid = LWIP_RAND();#else /* DHCP_CREATE_RAND_XID && defined(LWIP_RAND) */    xid++;#endif /* DHCP_CREATE_RAND_XID && defined(LWIP_RAND) */  }  dhcp->xid = xid; 802c916:	6023      	str	r3, [r4, #0]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,              ("transaction id xid(%"X32_F")\n", xid));  dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload;  dhcp->msg_out->op = DHCP_BOOTREQUEST; 802c918:	2301      	movs	r3, #1  }  dhcp->xid = xid;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE,              ("transaction id xid(%"X32_F")\n", xid));  dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload; 802c91a:	6162      	str	r2, [r4, #20]  dhcp->msg_out->op = DHCP_BOOTREQUEST; 802c91c:	7013      	strb	r3, [r2, #0]  /* TODO: make link layer independent */  dhcp->msg_out->htype = DHCP_HTYPE_ETH; 802c91e:	6962      	ldr	r2, [r4, #20] 802c920:	7053      	strb	r3, [r2, #1]  dhcp->msg_out->hlen = netif->hwaddr_len; 802c922:	6963      	ldr	r3, [r4, #20] 802c924:	f896 2026 	ldrb.w	r2, [r6, #38]	; 0x26 802c928:	709a      	strb	r2, [r3, #2]  dhcp->msg_out->hops = 0; 802c92a:	6963      	ldr	r3, [r4, #20] 802c92c:	2500      	movs	r5, #0 802c92e:	70dd      	strb	r5, [r3, #3]  dhcp->msg_out->xid = htonl(dhcp->xid); 802c930:	6820      	ldr	r0, [r4, #0] 802c932:	f8d4 8014 	ldr.w	r8, [r4, #20] 802c936:	f7ff ff69 	bl	802c80c <lwip_htonl> 802c93a:	f8c8 0004 	str.w	r0, [r8, #4]  dhcp->msg_out->secs = 0; 802c93e:	6963      	ldr	r3, [r4, #20]  /* we don't need the broadcast flag since we can receive unicast traffic     before being fully configured! */  dhcp->msg_out->flags = 0;  ip_addr_set_zero(&dhcp->msg_out->ciaddr);  /* set ciaddr to netif->ip_addr based on message_type and state */  if ((message_type == DHCP_INFORM) || (message_type == DHCP_DECLINE) || 802c940:	2f08      	cmp	r7, #8  /* TODO: make link layer independent */  dhcp->msg_out->htype = DHCP_HTYPE_ETH;  dhcp->msg_out->hlen = netif->hwaddr_len;  dhcp->msg_out->hops = 0;  dhcp->msg_out->xid = htonl(dhcp->xid);  dhcp->msg_out->secs = 0; 802c942:	721d      	strb	r5, [r3, #8] 802c944:	725d      	strb	r5, [r3, #9]  /* we don't need the broadcast flag since we can receive unicast traffic     before being fully configured! */  dhcp->msg_out->flags = 0; 802c946:	729d      	strb	r5, [r3, #10] 802c948:	72dd      	strb	r5, [r3, #11]  ip_addr_set_zero(&dhcp->msg_out->ciaddr); 802c94a:	731d      	strb	r5, [r3, #12] 802c94c:	735d      	strb	r5, [r3, #13] 802c94e:	739d      	strb	r5, [r3, #14] 802c950:	73dd      	strb	r5, [r3, #15]  /* set ciaddr to netif->ip_addr based on message_type and state */  if ((message_type == DHCP_INFORM) || (message_type == DHCP_DECLINE) || 802c952:	d007      	beq.n	802c964 <dhcp_create_msg+0x88> 802c954:	2f04      	cmp	r7, #4 802c956:	d005      	beq.n	802c964 <dhcp_create_msg+0x88> 802c958:	2f03      	cmp	r7, #3 802c95a:	d105      	bne.n	802c968 <dhcp_create_msg+0x8c>      ((message_type == DHCP_REQUEST) && /* DHCP_BOUND not used for sending! */       ((dhcp->state==DHCP_RENEWING) || dhcp->state==DHCP_REBINDING))) { 802c95c:	7b22      	ldrb	r2, [r4, #12]     before being fully configured! */  dhcp->msg_out->flags = 0;  ip_addr_set_zero(&dhcp->msg_out->ciaddr);  /* set ciaddr to netif->ip_addr based on message_type and state */  if ((message_type == DHCP_INFORM) || (message_type == DHCP_DECLINE) ||      ((message_type == DHCP_REQUEST) && /* DHCP_BOUND not used for sending! */ 802c95e:	3a04      	subs	r2, #4 802c960:	2a01      	cmp	r2, #1 802c962:	d801      	bhi.n	802c968 <dhcp_create_msg+0x8c>       ((dhcp->state==DHCP_RENEWING) || dhcp->state==DHCP_REBINDING))) {    ip_addr_copy(dhcp->msg_out->ciaddr, netif->ip_addr); 802c964:	6872      	ldr	r2, [r6, #4] 802c966:	60da      	str	r2, [r3, #12]  }  ip_addr_set_zero(&dhcp->msg_out->yiaddr); 802c968:	2500      	movs	r5, #0 802c96a:	741d      	strb	r5, [r3, #16] 802c96c:	745d      	strb	r5, [r3, #17] 802c96e:	749d      	strb	r5, [r3, #18] 802c970:	74dd      	strb	r5, [r3, #19]  ip_addr_set_zero(&dhcp->msg_out->siaddr); 802c972:	751d      	strb	r5, [r3, #20] 802c974:	755d      	strb	r5, [r3, #21] 802c976:	759d      	strb	r5, [r3, #22] 802c978:	75dd      	strb	r5, [r3, #23]  ip_addr_set_zero(&dhcp->msg_out->giaddr); 802c97a:	761d      	strb	r5, [r3, #24] 802c97c:	765d      	strb	r5, [r3, #25] 802c97e:	769d      	strb	r5, [r3, #26] 802c980:	76dd      	strb	r5, [r3, #27]  for (i = 0; i < DHCP_CHADDR_LEN; i++) {    /* copy netif hardware address, pad with zeroes */    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/; 802c982:	f896 1026 	ldrb.w	r1, [r6, #38]	; 0x26 802c986:	6962      	ldr	r2, [r4, #20] 802c988:	b2ab      	uxth	r3, r5 802c98a:	4299      	cmp	r1, r3 * @param netif the netif under DHCP control * @param dhcp dhcp control struct * @param message_type message type of the request */static err_tdhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type) 802c98c:	bf88      	it	hi 802c98e:	1973      	addhi	r3, r6, r5  ip_addr_set_zero(&dhcp->msg_out->yiaddr);  ip_addr_set_zero(&dhcp->msg_out->siaddr);  ip_addr_set_zero(&dhcp->msg_out->giaddr);  for (i = 0; i < DHCP_CHADDR_LEN; i++) {    /* copy netif hardware address, pad with zeroes */    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/; 802c990:	442a      	add	r2, r5 802c992:	bf8c      	ite	hi 802c994:	f893 3027 	ldrbhi.w	r3, [r3, #39]	; 0x27 802c998:	2300      	movls	r3, #0 802c99a:	3501      	adds	r5, #1    ip_addr_copy(dhcp->msg_out->ciaddr, netif->ip_addr);  }  ip_addr_set_zero(&dhcp->msg_out->yiaddr);  ip_addr_set_zero(&dhcp->msg_out->siaddr);  ip_addr_set_zero(&dhcp->msg_out->giaddr);  for (i = 0; i < DHCP_CHADDR_LEN; i++) { 802c99c:	2d10      	cmp	r5, #16    /* copy netif hardware address, pad with zeroes */    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/; 802c99e:	7713      	strb	r3, [r2, #28]    ip_addr_copy(dhcp->msg_out->ciaddr, netif->ip_addr);  }  ip_addr_set_zero(&dhcp->msg_out->yiaddr);  ip_addr_set_zero(&dhcp->msg_out->siaddr);  ip_addr_set_zero(&dhcp->msg_out->giaddr);  for (i = 0; i < DHCP_CHADDR_LEN; i++) { 802c9a0:	d1ef      	bne.n	802c982 <dhcp_create_msg+0xa6> 802c9a2:	2300      	movs	r3, #0    /* copy netif hardware address, pad with zeroes */    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;  }  for (i = 0; i < DHCP_SNAME_LEN; i++) {    dhcp->msg_out->sname[i] = 0; 802c9a4:	4619      	mov	r1, r3 802c9a6:	6962      	ldr	r2, [r4, #20] 802c9a8:	18d2      	adds	r2, r2, r3 802c9aa:	3301      	adds	r3, #1  ip_addr_set_zero(&dhcp->msg_out->giaddr);  for (i = 0; i < DHCP_CHADDR_LEN; i++) {    /* copy netif hardware address, pad with zeroes */    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;  }  for (i = 0; i < DHCP_SNAME_LEN; i++) { 802c9ac:	2b40      	cmp	r3, #64	; 0x40    dhcp->msg_out->sname[i] = 0; 802c9ae:	f882 102c 	strb.w	r1, [r2, #44]	; 0x2c  ip_addr_set_zero(&dhcp->msg_out->giaddr);  for (i = 0; i < DHCP_CHADDR_LEN; i++) {    /* copy netif hardware address, pad with zeroes */    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;  }  for (i = 0; i < DHCP_SNAME_LEN; i++) { 802c9b2:	d1f8      	bne.n	802c9a6 <dhcp_create_msg+0xca> 802c9b4:	2200      	movs	r2, #0    dhcp->msg_out->sname[i] = 0;  }  for (i = 0; i < DHCP_FILE_LEN; i++) {    dhcp->msg_out->file[i] = 0; 802c9b6:	4610      	mov	r0, r2 802c9b8:	6963      	ldr	r3, [r4, #20] 802c9ba:	1899      	adds	r1, r3, r2 802c9bc:	3201      	adds	r2, #1 802c9be:	2300      	movs	r3, #0    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;  }  for (i = 0; i < DHCP_SNAME_LEN; i++) {    dhcp->msg_out->sname[i] = 0;  }  for (i = 0; i < DHCP_FILE_LEN; i++) { 802c9c0:	2a80      	cmp	r2, #128	; 0x80    dhcp->msg_out->file[i] = 0; 802c9c2:	f881 006c 	strb.w	r0, [r1, #108]	; 0x6c    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;  }  for (i = 0; i < DHCP_SNAME_LEN; i++) {    dhcp->msg_out->sname[i] = 0;  }  for (i = 0; i < DHCP_FILE_LEN; i++) { 802c9c6:	d1f7      	bne.n	802c9b8 <dhcp_create_msg+0xdc>    dhcp->msg_out->file[i] = 0;  }  dhcp->msg_out->cookie = PP_HTONL(DHCP_MAGIC_COOKIE); 802c9c8:	6962      	ldr	r2, [r4, #20] 802c9ca:	f06f 007d 	mvn.w	r0, #125	; 0x7d 802c9ce:	2163      	movs	r1, #99	; 0x63 802c9d0:	f882 00ed 	strb.w	r0, [r2, #237]	; 0xed 802c9d4:	2053      	movs	r0, #83	; 0x53 802c9d6:	f882 10ec 	strb.w	r1, [r2, #236]	; 0xec 802c9da:	f882 00ee 	strb.w	r0, [r2, #238]	; 0xee 802c9de:	f882 10ef 	strb.w	r1, [r2, #239]	; 0xef  dhcp->options_out_len = 0; 802c9e2:	8323      	strh	r3, [r4, #24]  /* fill options field with an incrementing array (for debugging purposes) */  for (i = 0; i < DHCP_OPTIONS_LEN; i++) {    dhcp->msg_out->options[i] = (u8_t)i; /* for debugging only, no matter if truncated */ 802c9e4:	6962      	ldr	r2, [r4, #20] 802c9e6:	18d2      	adds	r2, r2, r3 802c9e8:	f882 30f0 	strb.w	r3, [r2, #240]	; 0xf0 802c9ec:	3301      	adds	r3, #1    dhcp->msg_out->file[i] = 0;  }  dhcp->msg_out->cookie = PP_HTONL(DHCP_MAGIC_COOKIE);  dhcp->options_out_len = 0;  /* fill options field with an incrementing array (for debugging purposes) */  for (i = 0; i < DHCP_OPTIONS_LEN; i++) { 802c9ee:	2b44      	cmp	r3, #68	; 0x44 802c9f0:	d1f8      	bne.n	802c9e4 <dhcp_create_msg+0x108>    dhcp->msg_out->options[i] = (u8_t)i; /* for debugging only, no matter if truncated */  }  /* Add option MESSAGE_TYPE */  dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); 802c9f2:	4620      	mov	r0, r4 802c9f4:	2135      	movs	r1, #53	; 0x35 802c9f6:	2201      	movs	r2, #1 802c9f8:	f7ff ff14 	bl	802c824 <dhcp_option>  dhcp_option_byte(dhcp, message_type); 802c9fc:	4620      	mov	r0, r4 802c9fe:	4639      	mov	r1, r7 802ca00:	f7ff ff1f 	bl	802c842 <dhcp_option_byte>  return ERR_OK; 802ca04:	2000      	movs	r0, #0 802ca06:	e004      	b.n	802ca12 <dhcp_create_msg+0x136>  if (!xid_initialised) {    xid = DHCP_GLOBAL_XID;    xid_initialised = !xid_initialised;  }#endif  LWIP_ERROR("dhcp_create_msg: netif != NULL", (netif != NULL), return ERR_ARG;); 802ca08:	20f2      	movs	r0, #242	; 0xf2 802ca0a:	e002      	b.n	802ca12 <dhcp_create_msg+0x136>  LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); 802ca0c:	20fa      	movs	r0, #250	; 0xfa 802ca0e:	e000      	b.n	802ca12 <dhcp_create_msg+0x136>  LWIP_ASSERT("dhcp_create_msg: dhcp->msg_out == NULL", dhcp->msg_out == NULL);  dhcp->p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM);  if (dhcp->p_out == NULL) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,      ("dhcp_create_msg(): could not allocate pbuf\n"));    return ERR_MEM; 802ca10:	20ff      	movs	r0, #255	; 0xff  }  /* Add option MESSAGE_TYPE */  dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);  dhcp_option_byte(dhcp, message_type);  return ERR_OK;} 802ca12:	b240      	sxtb	r0, r0 802ca14:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802ca18:	200015e8 	.word	0x200015e80802ca1c <dhcp_delete_msg>: * * @param dhcp the dhcp struct to free the request from */static voiddhcp_delete_msg(struct dhcp *dhcp){ 802ca1c:	b510      	push	{r4, lr}  LWIP_ERROR("dhcp_delete_msg: dhcp != NULL", (dhcp != NULL), return;); 802ca1e:	4604      	mov	r4, r0 802ca20:	b130      	cbz	r0, 802ca30 <dhcp_delete_msg+0x14>  LWIP_ASSERT("dhcp_delete_msg: dhcp->p_out != NULL", dhcp->p_out != NULL);  LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL);  if (dhcp->p_out != NULL) { 802ca22:	6900      	ldr	r0, [r0, #16] 802ca24:	b108      	cbz	r0, 802ca2a <dhcp_delete_msg+0xe>    pbuf_free(dhcp->p_out); 802ca26:	f001 f825 	bl	802da74 <pbuf_free>  }  dhcp->p_out = NULL; 802ca2a:	2300      	movs	r3, #0 802ca2c:	6123      	str	r3, [r4, #16]  dhcp->msg_out = NULL; 802ca2e:	6163      	str	r3, [r4, #20] 802ca30:	bd10      	pop	{r4, pc} 802ca32:	0000      	movs	r0, r00802ca34 <dhcp_discover>: * * @param netif the netif under DHCP control */static err_tdhcp_discover(struct netif *netif){ 802ca34:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct dhcp *dhcp = netif->dhcp; 802ca36:	6a04      	ldr	r4, [r0, #32]  err_t result = ERR_OK;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n"));  ip_addr_set_any(&dhcp->offered_ip_addr); 802ca38:	2300      	movs	r3, #0 * * @param netif the netif under DHCP control */static err_tdhcp_discover(struct netif *netif){ 802ca3a:	4605      	mov	r5, r0  struct dhcp *dhcp = netif->dhcp;  err_t result = ERR_OK;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n"));  ip_addr_set_any(&dhcp->offered_ip_addr); 802ca3c:	6263      	str	r3, [r4, #36]	; 0x24  dhcp_set_state(dhcp, DHCP_SELECTING); 802ca3e:	4620      	mov	r0, r4 802ca40:	2106      	movs	r1, #6 802ca42:	f7ff fee7 	bl	802c814 <dhcp_set_state>  /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_DISCOVER); 802ca46:	4628      	mov	r0, r5 802ca48:	4621      	mov	r1, r4 802ca4a:	2201      	movs	r2, #1 802ca4c:	f7ff ff46 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802ca50:	4606      	mov	r6, r0 802ca52:	2800      	cmp	r0, #0 802ca54:	d130      	bne.n	802cab8 <dhcp_discover+0x84>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: making request\n"));    dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); 802ca56:	2202      	movs	r2, #2 802ca58:	4620      	mov	r0, r4 802ca5a:	2139      	movs	r1, #57	; 0x39 802ca5c:	f7ff fee2 	bl	802c824 <dhcp_option>    dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); 802ca60:	4620      	mov	r0, r4 802ca62:	8ca9      	ldrh	r1, [r5, #36]	; 0x24 802ca64:	f7ff fef5 	bl	802c852 <dhcp_option_short>    dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); 802ca68:	2204      	movs	r2, #4 802ca6a:	4620      	mov	r0, r4 802ca6c:	2137      	movs	r1, #55	; 0x37 802ca6e:	f7ff fed9 	bl	802c824 <dhcp_option>    dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); 802ca72:	4620      	mov	r0, r4 802ca74:	2101      	movs	r1, #1 802ca76:	f7ff fee4 	bl	802c842 <dhcp_option_byte>    dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); 802ca7a:	4620      	mov	r0, r4 802ca7c:	2103      	movs	r1, #3 802ca7e:	f7ff fee0 	bl	802c842 <dhcp_option_byte>    dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); 802ca82:	4620      	mov	r0, r4 802ca84:	211c      	movs	r1, #28 802ca86:	f7ff fedc 	bl	802c842 <dhcp_option_byte>    dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); 802ca8a:	2106      	movs	r1, #6 802ca8c:	4620      	mov	r0, r4 802ca8e:	f7ff fed8 	bl	802c842 <dhcp_option_byte>    dhcp_option_trailer(dhcp); 802ca92:	4620      	mov	r0, r4 802ca94:	f7ff ff0d 	bl	802c8b2 <dhcp_option_trailer>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: realloc()ing\n"));    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802ca98:	8b21      	ldrh	r1, [r4, #24] 802ca9a:	6920      	ldr	r0, [r4, #16] 802ca9c:	31f0      	adds	r1, #240	; 0xf0 802ca9e:	b289      	uxth	r1, r1 802caa0:	f001 f80f 	bl	802dac2 <pbuf_realloc>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, DHCP_SERVER_PORT)\n"));    udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); 802caa4:	9500      	str	r5, [sp, #0] 802caa6:	6860      	ldr	r0, [r4, #4] 802caa8:	6921      	ldr	r1, [r4, #16] 802caaa:	4a0f      	ldr	r2, [pc, #60]	; (802cae8 <dhcp_discover+0xb4>) 802caac:	2343      	movs	r3, #67	; 0x43 802caae:	f003 fc81 	bl	80303b4 <udp_sendto_if>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: deleting()ing\n"));    dhcp_delete_msg(dhcp); 802cab2:	4620      	mov	r0, r4 802cab4:	f7ff ffb2 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n"));  }  dhcp->tries++; 802cab8:	7b63      	ldrb	r3, [r4, #13] 802caba:	3301      	adds	r3, #1 802cabc:	b2db      	uxtb	r3, r3  if(dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) {    dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON;    autoip_start(netif);  }#endif /* LWIP_DHCP_AUTOIP_COOP */  msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; 802cabe:	2b05      	cmp	r3, #5 802cac0:	bf98      	it	ls 802cac2:	f44f 727a 	movls.w	r2, #1000	; 0x3e8    dhcp_delete_msg(dhcp);    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n"));  }  dhcp->tries++; 802cac6:	7363      	strb	r3, [r4, #13]  if(dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) {    dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON;    autoip_start(netif);  }#endif /* LWIP_DHCP_AUTOIP_COOP */  msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; 802cac8:	bf9a      	itte	ls 802caca:	fa02 f303 	lslls.w	r3, r2, r3 802cace:	b29b      	uxthls	r3, r3 802cad0:	f64e 2360 	movwhi	r3, #60000	; 0xea60  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802cad4:	f44f 72fa 	mov.w	r2, #500	; 0x1f4 802cad8:	f203 13f3 	addw	r3, r3, #499	; 0x1f3 802cadc:	fb93 f3f2 	sdiv	r3, r3, r2 802cae0:	8363      	strh	r3, [r4, #26]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs));  return result;} 802cae2:	4630      	mov	r0, r6 802cae4:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 802cae6:	bf00      	nop 802cae8:	080413b0 	.word	0x080413b00802caec <dhcp_rebind>: * * @param netif network interface which must rebind with a DHCP server */static err_tdhcp_rebind(struct netif *netif){ 802caec:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct dhcp *dhcp = netif->dhcp; 802caee:	6a04      	ldr	r4, [r0, #32] * * @param netif network interface which must rebind with a DHCP server */static err_tdhcp_rebind(struct netif *netif){ 802caf0:	4605      	mov	r5, r0  struct dhcp *dhcp = netif->dhcp;  err_t result;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind()\n"));  dhcp_set_state(dhcp, DHCP_REBINDING); 802caf2:	2104      	movs	r1, #4 802caf4:	4620      	mov	r0, r4 802caf6:	f7ff fe8d 	bl	802c814 <dhcp_set_state>  /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); 802cafa:	4628      	mov	r0, r5 802cafc:	4621      	mov	r1, r4 802cafe:	2203      	movs	r2, #3 802cb00:	f7ff feec 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802cb04:	4606      	mov	r6, r0 802cb06:	b9d8      	cbnz	r0, 802cb40 <dhcp_rebind+0x54>    dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); 802cb08:	2202      	movs	r2, #2 802cb0a:	4620      	mov	r0, r4 802cb0c:	2139      	movs	r1, #57	; 0x39 802cb0e:	f7ff fe89 	bl	802c824 <dhcp_option>    dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); 802cb12:	8ca9      	ldrh	r1, [r5, #36]	; 0x24 802cb14:	4620      	mov	r0, r4 802cb16:	f7ff fe9c 	bl	802c852 <dhcp_option_short>    dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4);    dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr));#endif    dhcp_option_trailer(dhcp); 802cb1a:	4620      	mov	r0, r4 802cb1c:	f7ff fec9 	bl	802c8b2 <dhcp_option_trailer>    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802cb20:	8b21      	ldrh	r1, [r4, #24] 802cb22:	6920      	ldr	r0, [r4, #16] 802cb24:	31f0      	adds	r1, #240	; 0xf0 802cb26:	b289      	uxth	r1, r1 802cb28:	f000 ffcb 	bl	802dac2 <pbuf_realloc>    /* broadcast to server */    udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); 802cb2c:	9500      	str	r5, [sp, #0] 802cb2e:	6860      	ldr	r0, [r4, #4] 802cb30:	6921      	ldr	r1, [r4, #16] 802cb32:	4a0e      	ldr	r2, [pc, #56]	; (802cb6c <dhcp_rebind+0x80>) 802cb34:	2343      	movs	r3, #67	; 0x43 802cb36:	f003 fc3d 	bl	80303b4 <udp_sendto_if>    dhcp_delete_msg(dhcp); 802cb3a:	4620      	mov	r0, r4 802cb3c:	f7ff ff6e 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n"));  }  dhcp->tries++; 802cb40:	7b63      	ldrb	r3, [r4, #13] 802cb42:	3301      	adds	r3, #1 802cb44:	b2db      	uxtb	r3, r3  msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; 802cb46:	2b09      	cmp	r3, #9    dhcp_delete_msg(dhcp);    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n"));  }  dhcp->tries++; 802cb48:	7363      	strb	r3, [r4, #13]  msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; 802cb4a:	d804      	bhi.n	802cb56 <dhcp_rebind+0x6a> 802cb4c:	f44f 727a 	mov.w	r2, #1000	; 0x3e8 802cb50:	4353      	muls	r3, r2 802cb52:	b29b      	uxth	r3, r3 802cb54:	e001      	b.n	802cb5a <dhcp_rebind+0x6e> 802cb56:	f242 7310 	movw	r3, #10000	; 0x2710  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802cb5a:	f44f 72fa 	mov.w	r2, #500	; 0x1f4 802cb5e:	f203 13f3 	addw	r3, r3, #499	; 0x1f3 802cb62:	fb93 f3f2 	sdiv	r3, r3, r2 802cb66:	8363      	strh	r3, [r4, #26]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind(): set request timeout %"U16_F" msecs\n", msecs));  return result;} 802cb68:	4630      	mov	r0, r6 802cb6a:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 802cb6c:	080413b0 	.word	0x080413b00802cb70 <dhcp_reboot>: * * @param netif network interface which must reboot */static err_tdhcp_reboot(struct netif *netif){ 802cb70:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct dhcp *dhcp = netif->dhcp; 802cb72:	6a04      	ldr	r4, [r0, #32] * * @param netif network interface which must reboot */static err_tdhcp_reboot(struct netif *netif){ 802cb74:	4605      	mov	r5, r0  struct dhcp *dhcp = netif->dhcp;  err_t result;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot()\n"));  dhcp_set_state(dhcp, DHCP_REBOOTING); 802cb76:	2103      	movs	r1, #3 802cb78:	4620      	mov	r0, r4 802cb7a:	f7ff fe4b 	bl	802c814 <dhcp_set_state>  /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); 802cb7e:	4628      	mov	r0, r5 802cb80:	4621      	mov	r1, r4 802cb82:	2203      	movs	r2, #3 802cb84:	f7ff feaa 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802cb88:	4606      	mov	r6, r0 802cb8a:	bb40      	cbnz	r0, 802cbde <dhcp_reboot+0x6e>    dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); 802cb8c:	2202      	movs	r2, #2 802cb8e:	4620      	mov	r0, r4 802cb90:	2139      	movs	r1, #57	; 0x39 802cb92:	f7ff fe47 	bl	802c824 <dhcp_option>    dhcp_option_short(dhcp, 576); 802cb96:	4620      	mov	r0, r4 802cb98:	f44f 7110 	mov.w	r1, #576	; 0x240 802cb9c:	f7ff fe59 	bl	802c852 <dhcp_option_short>    dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); 802cba0:	2204      	movs	r2, #4 802cba2:	2132      	movs	r1, #50	; 0x32 802cba4:	4620      	mov	r0, r4 802cba6:	f7ff fe3d 	bl	802c824 <dhcp_option>    dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); 802cbaa:	6a60      	ldr	r0, [r4, #36]	; 0x24 802cbac:	f7ff fe30 	bl	802c810 <lwip_ntohl> 802cbb0:	4601      	mov	r1, r0 802cbb2:	4620      	mov	r0, r4 802cbb4:	f7ff fe5d 	bl	802c872 <dhcp_option_long>    dhcp_option_trailer(dhcp); 802cbb8:	4620      	mov	r0, r4 802cbba:	f7ff fe7a 	bl	802c8b2 <dhcp_option_trailer>    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802cbbe:	8b21      	ldrh	r1, [r4, #24] 802cbc0:	6920      	ldr	r0, [r4, #16] 802cbc2:	31f0      	adds	r1, #240	; 0xf0 802cbc4:	b289      	uxth	r1, r1 802cbc6:	f000 ff7c 	bl	802dac2 <pbuf_realloc>    /* broadcast to server */    udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); 802cbca:	9500      	str	r5, [sp, #0] 802cbcc:	6860      	ldr	r0, [r4, #4] 802cbce:	6921      	ldr	r1, [r4, #16] 802cbd0:	4a0e      	ldr	r2, [pc, #56]	; (802cc0c <dhcp_reboot+0x9c>) 802cbd2:	2343      	movs	r3, #67	; 0x43 802cbd4:	f003 fbee 	bl	80303b4 <udp_sendto_if>    dhcp_delete_msg(dhcp); 802cbd8:	4620      	mov	r0, r4 802cbda:	f7ff ff1f 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n"));  }  dhcp->tries++; 802cbde:	7b63      	ldrb	r3, [r4, #13] 802cbe0:	3301      	adds	r3, #1 802cbe2:	b2db      	uxtb	r3, r3  msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; 802cbe4:	2b09      	cmp	r3, #9    dhcp_delete_msg(dhcp);    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n"));  }  dhcp->tries++; 802cbe6:	7363      	strb	r3, [r4, #13]  msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; 802cbe8:	d804      	bhi.n	802cbf4 <dhcp_reboot+0x84> 802cbea:	f44f 727a 	mov.w	r2, #1000	; 0x3e8 802cbee:	4353      	muls	r3, r2 802cbf0:	b29b      	uxth	r3, r3 802cbf2:	e001      	b.n	802cbf8 <dhcp_reboot+0x88> 802cbf4:	f242 7310 	movw	r3, #10000	; 0x2710  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802cbf8:	f44f 72fa 	mov.w	r2, #500	; 0x1f4 802cbfc:	f203 13f3 	addw	r3, r3, #499	; 0x1f3 802cc00:	fb93 f3f2 	sdiv	r3, r3, r2 802cc04:	8363      	strh	r3, [r4, #26]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot(): set request timeout %"U16_F" msecs\n", msecs));  return result;} 802cc06:	4630      	mov	r0, r6 802cc08:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 802cc0a:	bf00      	nop 802cc0c:	080413b0 	.word	0x080413b00802cc10 <dhcp_select>: * @param netif the netif under DHCP control * @return lwIP specific error (see error.h) */static err_tdhcp_select(struct netif *netif){ 802cc10:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct dhcp *dhcp = netif->dhcp; 802cc12:	6a04      	ldr	r4, [r0, #32] * @param netif the netif under DHCP control * @return lwIP specific error (see error.h) */static err_tdhcp_select(struct netif *netif){ 802cc14:	4605      	mov	r5, r0  struct dhcp *dhcp = netif->dhcp;  err_t result;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_select(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  dhcp_set_state(dhcp, DHCP_REQUESTING); 802cc16:	2101      	movs	r1, #1 802cc18:	4620      	mov	r0, r4 802cc1a:	f7ff fdfb 	bl	802c814 <dhcp_set_state>  /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); 802cc1e:	4628      	mov	r0, r5 802cc20:	4621      	mov	r1, r4 802cc22:	2203      	movs	r2, #3 802cc24:	f7ff fe5a 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802cc28:	4606      	mov	r6, r0 802cc2a:	2800      	cmp	r0, #0 802cc2c:	d148      	bne.n	802ccc0 <dhcp_select+0xb0>    dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); 802cc2e:	2202      	movs	r2, #2 802cc30:	4620      	mov	r0, r4 802cc32:	2139      	movs	r1, #57	; 0x39 802cc34:	f7ff fdf6 	bl	802c824 <dhcp_option>    dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); 802cc38:	4620      	mov	r0, r4 802cc3a:	8ca9      	ldrh	r1, [r5, #36]	; 0x24 802cc3c:	f7ff fe09 	bl	802c852 <dhcp_option_short>    /* MUST request the offered IP address */    dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); 802cc40:	2204      	movs	r2, #4 802cc42:	2132      	movs	r1, #50	; 0x32 802cc44:	4620      	mov	r0, r4 802cc46:	f7ff fded 	bl	802c824 <dhcp_option>    dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); 802cc4a:	6a60      	ldr	r0, [r4, #36]	; 0x24 802cc4c:	f7ff fde0 	bl	802c810 <lwip_ntohl> 802cc50:	4601      	mov	r1, r0 802cc52:	4620      	mov	r0, r4 802cc54:	f7ff fe0d 	bl	802c872 <dhcp_option_long>    dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); 802cc58:	2204      	movs	r2, #4 802cc5a:	2136      	movs	r1, #54	; 0x36 802cc5c:	4620      	mov	r0, r4 802cc5e:	f7ff fde1 	bl	802c824 <dhcp_option>    dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->server_ip_addr))); 802cc62:	6a20      	ldr	r0, [r4, #32] 802cc64:	f7ff fdd4 	bl	802c810 <lwip_ntohl> 802cc68:	4601      	mov	r1, r0 802cc6a:	4620      	mov	r0, r4 802cc6c:	f7ff fe01 	bl	802c872 <dhcp_option_long>    dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); 802cc70:	2204      	movs	r2, #4 802cc72:	4620      	mov	r0, r4 802cc74:	2137      	movs	r1, #55	; 0x37 802cc76:	f7ff fdd5 	bl	802c824 <dhcp_option>    dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); 802cc7a:	4620      	mov	r0, r4 802cc7c:	2101      	movs	r1, #1 802cc7e:	f7ff fde0 	bl	802c842 <dhcp_option_byte>    dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); 802cc82:	4620      	mov	r0, r4 802cc84:	2103      	movs	r1, #3 802cc86:	f7ff fddc 	bl	802c842 <dhcp_option_byte>    dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); 802cc8a:	4620      	mov	r0, r4 802cc8c:	211c      	movs	r1, #28 802cc8e:	f7ff fdd8 	bl	802c842 <dhcp_option_byte>    dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); 802cc92:	2106      	movs	r1, #6 802cc94:	4620      	mov	r0, r4 802cc96:	f7ff fdd4 	bl	802c842 <dhcp_option_byte>#if LWIP_NETIF_HOSTNAME    dhcp_option_hostname(dhcp, netif);#endif /* LWIP_NETIF_HOSTNAME */    dhcp_option_trailer(dhcp); 802cc9a:	4620      	mov	r0, r4 802cc9c:	f7ff fe09 	bl	802c8b2 <dhcp_option_trailer>    /* shrink the pbuf to the actual content length */    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802cca0:	8b21      	ldrh	r1, [r4, #24] 802cca2:	6920      	ldr	r0, [r4, #16] 802cca4:	31f0      	adds	r1, #240	; 0xf0 802cca6:	b289      	uxth	r1, r1 802cca8:	f000 ff0b 	bl	802dac2 <pbuf_realloc>    /* send broadcast to any DHCP server */    udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); 802ccac:	9500      	str	r5, [sp, #0] 802ccae:	6860      	ldr	r0, [r4, #4] 802ccb0:	6921      	ldr	r1, [r4, #16] 802ccb2:	4a0f      	ldr	r2, [pc, #60]	; (802ccf0 <dhcp_select+0xe0>) 802ccb4:	2343      	movs	r3, #67	; 0x43 802ccb6:	f003 fb7d 	bl	80303b4 <udp_sendto_if>    dhcp_delete_msg(dhcp); 802ccba:	4620      	mov	r0, r4 802ccbc:	f7ff feae 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n"));  }  dhcp->tries++; 802ccc0:	7b63      	ldrb	r3, [r4, #13] 802ccc2:	3301      	adds	r3, #1 802ccc4:	b2db      	uxtb	r3, r3  msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; 802ccc6:	2b05      	cmp	r3, #5 802ccc8:	bf98      	it	ls 802ccca:	f44f 727a 	movls.w	r2, #1000	; 0x3e8    dhcp_delete_msg(dhcp);    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n"));  }  dhcp->tries++; 802ccce:	7363      	strb	r3, [r4, #13]  msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; 802ccd0:	bf9a      	itte	ls 802ccd2:	fa02 f303 	lslls.w	r3, r2, r3 802ccd6:	b29b      	uxthls	r3, r3 802ccd8:	f64e 2360 	movwhi	r3, #60000	; 0xea60  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802ccdc:	f44f 72fa 	mov.w	r2, #500	; 0x1f4 802cce0:	f203 13f3 	addw	r3, r3, #499	; 0x1f3 802cce4:	fb93 f3f2 	sdiv	r3, r3, r2 802cce8:	8363      	strh	r3, [r4, #26]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs));  return result;} 802ccea:	4630      	mov	r0, r6 802ccec:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 802ccee:	bf00      	nop 802ccf0:	080413b0 	.word	0x080413b00802ccf4 <dhcp_check>: * * @param netif the netif under DHCP control */static voiddhcp_check(struct netif *netif){ 802ccf4:	b538      	push	{r3, r4, r5, lr}  struct dhcp *dhcp = netif->dhcp; 802ccf6:	6a04      	ldr	r4, [r0, #32] * * @param netif the netif under DHCP control */static voiddhcp_check(struct netif *netif){ 802ccf8:	4605      	mov	r5, r0  struct dhcp *dhcp = netif->dhcp;  err_t result;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_check(netif=%p) %c%c\n", (void *)netif, (s16_t)netif->name[0],    (s16_t)netif->name[1]));  dhcp_set_state(dhcp, DHCP_CHECKING); 802ccfa:	2108      	movs	r1, #8 802ccfc:	4620      	mov	r0, r4 802ccfe:	f7ff fd89 	bl	802c814 <dhcp_set_state>  /* create an ARP query for the offered IP address, expecting that no host     responds, as the IP address should not be in use. */  result = etharp_query(netif, &dhcp->offered_ip_addr, NULL); 802cd02:	4628      	mov	r0, r5 802cd04:	f104 0124 	add.w	r1, r4, #36	; 0x24 802cd08:	2200      	movs	r2, #0 802cd0a:	f007 ff63 	bl	8034bd4 <etharp_query>  if (result != ERR_OK) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_check: could not perform ARP query\n"));  }  dhcp->tries++; 802cd0e:	7b63      	ldrb	r3, [r4, #13] 802cd10:	3301      	adds	r3, #1 802cd12:	7363      	strb	r3, [r4, #13]  msecs = 500;  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802cd14:	2301      	movs	r3, #1 802cd16:	8363      	strh	r3, [r4, #26] 802cd18:	bd38      	pop	{r3, r4, r5, pc}0802cd1a <dhcp_bind>: * * @param netif network interface to bind to the offered address */static voiddhcp_bind(struct netif *netif){ 802cd1a:	b537      	push	{r0, r1, r2, r4, r5, lr}  u32_t timeout;  struct dhcp *dhcp;  ip_addr_t sn_mask, gw_addr;  LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;); 802cd1c:	4605      	mov	r5, r0 802cd1e:	2800      	cmp	r0, #0 802cd20:	d059      	beq.n	802cdd6 <dhcp_bind+0xbc>  dhcp = netif->dhcp; 802cd22:	6a04      	ldr	r4, [r0, #32]  LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;); 802cd24:	2c00      	cmp	r4, #0 802cd26:	d056      	beq.n	802cdd6 <dhcp_bind+0xbc>  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* temporary DHCP lease? */  if (dhcp->offered_t1_renew != 0xffffffffUL) { 802cd28:	6b63      	ldr	r3, [r4, #52]	; 0x34 802cd2a:	1c58      	adds	r0, r3, #1 802cd2c:	d00d      	beq.n	802cd4a <dhcp_bind+0x30>    /* set renewal period timer */    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t1 renewal timer %"U32_F" secs\n", dhcp->offered_t1_renew));    timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; 802cd2e:	223c      	movs	r2, #60	; 0x3c 802cd30:	331e      	adds	r3, #30 802cd32:	fbb3 f3f2 	udiv	r3, r3, r2    if(timeout > 0xffff) {      timeout = 0xffff;    }    dhcp->t1_timeout = (u16_t)timeout; 802cd36:	f64f 72ff 	movw	r2, #65535	; 0xffff 802cd3a:	4293      	cmp	r3, r2 802cd3c:	bf28      	it	cs 802cd3e:	4613      	movcs	r3, r2 802cd40:	b29b      	uxth	r3, r3 802cd42:	83a3      	strh	r3, [r4, #28]    if (dhcp->t1_timeout == 0) { 802cd44:	b90b      	cbnz	r3, 802cd4a <dhcp_bind+0x30>      dhcp->t1_timeout = 1; 802cd46:	2301      	movs	r3, #1 802cd48:	83a3      	strh	r3, [r4, #28]    }    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t1_renew*1000));  }  /* set renewal period timer */  if (dhcp->offered_t2_rebind != 0xffffffffUL) { 802cd4a:	6ba3      	ldr	r3, [r4, #56]	; 0x38 802cd4c:	1c59      	adds	r1, r3, #1 802cd4e:	d00d      	beq.n	802cd6c <dhcp_bind+0x52>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t2 rebind timer %"U32_F" secs\n", dhcp->offered_t2_rebind));    timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; 802cd50:	223c      	movs	r2, #60	; 0x3c 802cd52:	331e      	adds	r3, #30 802cd54:	fbb3 f3f2 	udiv	r3, r3, r2    if(timeout > 0xffff) {      timeout = 0xffff;    }    dhcp->t2_timeout = (u16_t)timeout; 802cd58:	f64f 72ff 	movw	r2, #65535	; 0xffff 802cd5c:	4293      	cmp	r3, r2 802cd5e:	bf28      	it	cs 802cd60:	4613      	movcs	r3, r2 802cd62:	b29b      	uxth	r3, r3 802cd64:	83e3      	strh	r3, [r4, #30]    if (dhcp->t2_timeout == 0) { 802cd66:	b90b      	cbnz	r3, 802cd6c <dhcp_bind+0x52>      dhcp->t2_timeout = 1; 802cd68:	2301      	movs	r3, #1 802cd6a:	83e3      	strh	r3, [r4, #30]    }    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind*1000));  }  /* If we have sub 1 minute lease, t2 and t1 will kick in at the same time. */  if ((dhcp->t1_timeout >= dhcp->t2_timeout) && (dhcp->t2_timeout > 0)) { 802cd6c:	8be3      	ldrh	r3, [r4, #30] 802cd6e:	8ba2      	ldrh	r2, [r4, #28] 802cd70:	429a      	cmp	r2, r3 802cd72:	d302      	bcc.n	802cd7a <dhcp_bind+0x60> 802cd74:	b10b      	cbz	r3, 802cd7a <dhcp_bind+0x60>    dhcp->t1_timeout = 0; 802cd76:	2300      	movs	r3, #0 802cd78:	83a3      	strh	r3, [r4, #28]  }  if (dhcp->subnet_mask_given) { 802cd7a:	7ba3      	ldrb	r3, [r4, #14] 802cd7c:	b10b      	cbz	r3, 802cd82 <dhcp_bind+0x68>    /* copy offered network mask */    ip_addr_copy(sn_mask, dhcp->offered_sn_mask); 802cd7e:	6aa3      	ldr	r3, [r4, #40]	; 0x28 802cd80:	e00b      	b.n	802cd9a <dhcp_bind+0x80>  } else {    /* subnet mask not given, choose a safe subnet mask given the network class */    u8_t first_octet = ip4_addr1(&dhcp->offered_ip_addr); 802cd82:	f894 3024 	ldrb.w	r3, [r4, #36]	; 0x24    if (first_octet <= 127) { 802cd86:	061a      	lsls	r2, r3, #24 802cd88:	d401      	bmi.n	802cd8e <dhcp_bind+0x74>      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xff000000UL)); 802cd8a:	23ff      	movs	r3, #255	; 0xff 802cd8c:	e005      	b.n	802cd9a <dhcp_bind+0x80>    } else if (first_octet >= 192) { 802cd8e:	2bbf      	cmp	r3, #191	; 0xbf      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffffff00UL)); 802cd90:	bf8c      	ite	hi 802cd92:	f06f 437f 	mvnhi.w	r3, #4278190080	; 0xff000000    } else {      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffff0000UL)); 802cd96:	f64f 73ff 	movwls	r3, #65535	; 0xffff 802cd9a:	9300      	str	r3, [sp, #0]    }  }  ip_addr_copy(gw_addr, dhcp->offered_gw_addr); 802cd9c:	6ae3      	ldr	r3, [r4, #44]	; 0x2c 802cd9e:	9301      	str	r3, [sp, #4]  /* gateway address not given? */  if (ip_addr_isany(&gw_addr)) { 802cda0:	b92b      	cbnz	r3, 802cdae <dhcp_bind+0x94>    /* copy network address */    ip_addr_get_network(&gw_addr, &dhcp->offered_ip_addr, &sn_mask); 802cda2:	6a63      	ldr	r3, [r4, #36]	; 0x24 802cda4:	9a00      	ldr	r2, [sp, #0] 802cda6:	4013      	ands	r3, r2    /* use first host address on network as gateway */    ip4_addr_set_u32(&gw_addr, ip4_addr_get_u32(&gw_addr) | PP_HTONL(0x00000001UL)); 802cda8:	f043 7380 	orr.w	r3, r3, #16777216	; 0x1000000 802cdac:	9301      	str	r3, [sp, #4]  }#endif /* LWIP_DHCP_AUTOIP_COOP */  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): IP: 0x%08"X32_F"\n",    ip4_addr_get_u32(&dhcp->offered_ip_addr)));  netif_set_ipaddr(netif, &dhcp->offered_ip_addr); 802cdae:	4628      	mov	r0, r5 802cdb0:	f104 0124 	add.w	r1, r4, #36	; 0x24 802cdb4:	f000 fd6a 	bl	802d88c <netif_set_ipaddr>  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): SN: 0x%08"X32_F"\n",    ip4_addr_get_u32(&sn_mask)));  netif_set_netmask(netif, &sn_mask); 802cdb8:	4628      	mov	r0, r5 802cdba:	4669      	mov	r1, sp 802cdbc:	f000 fda6 	bl	802d90c <netif_set_netmask>  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): GW: 0x%08"X32_F"\n",    ip4_addr_get_u32(&gw_addr)));  netif_set_gw(netif, &gw_addr); 802cdc0:	a901      	add	r1, sp, #4 802cdc2:	4628      	mov	r0, r5 802cdc4:	f000 fd9e 	bl	802d904 <netif_set_gw>  /* bring the interface up */  netif_set_up(netif); 802cdc8:	4628      	mov	r0, r5 802cdca:	f000 fdf5 	bl	802d9b8 <netif_set_up>  /* netif is now bound to DHCP leased address */  dhcp_set_state(dhcp, DHCP_BOUND); 802cdce:	4620      	mov	r0, r4 802cdd0:	210a      	movs	r1, #10 802cdd2:	f7ff fd1f 	bl	802c814 <dhcp_set_state>} 802cdd6:	bd3e      	pop	{r1, r2, r3, r4, r5, pc}0802cdd8 <dhcp_recv>:/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ 802cdd8:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 802cddc:	4692      	mov	sl, r2 802cdde:	b08b      	sub	sp, #44	; 0x2c  LWIP_UNUSED_ARG(addr);  LWIP_UNUSED_ARG(port);  LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL);  if (p->len < DHCP_MIN_REPLY_LEN) { 802cde0:	f8ba 300a 	ldrh.w	r3, [sl, #10] */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){  struct netif *netif = (struct netif *)arg;  struct dhcp *dhcp = netif->dhcp; 802cde4:	f8d0 8020 	ldr.w	r8, [r0, #32]  struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload; 802cde8:	6852      	ldr	r2, [r2, #4]  LWIP_UNUSED_ARG(addr);  LWIP_UNUSED_ARG(port);  LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL);  if (p->len < DHCP_MIN_REPLY_LEN) { 802cdea:	2b2b      	cmp	r3, #43	; 0x2b/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ 802cdec:	4605      	mov	r5, r0  LWIP_UNUSED_ARG(addr);  LWIP_UNUSED_ARG(port);  LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL);  if (p->len < DHCP_MIN_REPLY_LEN) { 802cdee:	f240 81b8 	bls.w	802d162 <dhcp_recv+0x38a>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP reply message or pbuf too short\n"));    goto free_pbuf_and_return;  }  if (reply_msg->op != DHCP_BOOTREPLY) { 802cdf2:	7813      	ldrb	r3, [r2, #0] 802cdf4:	2b02      	cmp	r3, #2 802cdf6:	f040 81b4 	bne.w	802d162 <dhcp_recv+0x38a>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op));    goto free_pbuf_and_return;  }  /* iterate through hardware address and match against DHCP message */  for (i = 0; i < netif->hwaddr_len; i++) { 802cdfa:	f890 1026 	ldrb.w	r1, [r0, #38]	; 0x26 802cdfe:	2300      	movs	r3, #0 802ce00:	e008      	b.n	802ce14 <dhcp_recv+0x3c>/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) 802ce02:	18e8      	adds	r0, r5, r3 802ce04:	3301      	adds	r3, #1 802ce06:	18d4      	adds	r4, r2, r3    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op));    goto free_pbuf_and_return;  }  /* iterate through hardware address and match against DHCP message */  for (i = 0; i < netif->hwaddr_len; i++) {    if (netif->hwaddr[i] != reply_msg->chaddr[i]) { 802ce08:	f890 0027 	ldrb.w	r0, [r0, #39]	; 0x27 802ce0c:	7ee4      	ldrb	r4, [r4, #27] 802ce0e:	4284      	cmp	r4, r0 802ce10:	f040 81a7 	bne.w	802d162 <dhcp_recv+0x38a>  if (reply_msg->op != DHCP_BOOTREPLY) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op));    goto free_pbuf_and_return;  }  /* iterate through hardware address and match against DHCP message */  for (i = 0; i < netif->hwaddr_len; i++) { 802ce14:	b2d8      	uxtb	r0, r3 802ce16:	4288      	cmp	r0, r1 802ce18:	d3f3      	bcc.n	802ce02 <dhcp_recv+0x2a>        (u16_t)i, (u16_t)netif->hwaddr[i], (u16_t)i, (u16_t)reply_msg->chaddr[i]));      goto free_pbuf_and_return;    }  }  /* match transaction ID against what we expected */  if (ntohl(reply_msg->xid) != dhcp->xid) { 802ce1a:	6850      	ldr	r0, [r2, #4] 802ce1c:	f7ff fcf8 	bl	802c810 <lwip_ntohl> 802ce20:	f8d8 3000 	ldr.w	r3, [r8] 802ce24:	4298      	cmp	r0, r3 802ce26:	f040 819c 	bne.w	802d162 <dhcp_recv+0x38a>  struct pbuf *q;  int parse_file_as_options = 0;  int parse_sname_as_options = 0;  /* clear received options */  dhcp_clear_all_options(dhcp); 802ce2a:	2100      	movs	r1, #0 802ce2c:	220a      	movs	r2, #10 802ce2e:	489d      	ldr	r0, [pc, #628]	; (802d0a4 <dhcp_recv+0x2cc>) 802ce30:	f7f4 fe46 	bl	8021ac0 <memset>  /* check that beginning of dhcp_msg (up to and including chaddr) is in first pbuf */  if (p->len < DHCP_SNAME_OFS) { 802ce34:	f8ba 300a 	ldrh.w	r3, [sl, #10] 802ce38:	2b2b      	cmp	r3, #43	; 0x2b 802ce3a:	f240 8192 	bls.w	802d162 <dhcp_recv+0x38a>    return ERR_BUF;  }  dhcp->msg_in = (struct dhcp_msg *)p->payload; 802ce3e:	f8da 3004 	ldr.w	r3, [sl, #4]  /* parse options */  /* start with options field */  options_idx = DHCP_OPTIONS_OFS;  /* parse options to the end of the received packet */  options_idx_max = p->tot_len; 802ce42:	f8ba 9008 	ldrh.w	r9, [sl, #8]  dhcp_clear_all_options(dhcp);  /* check that beginning of dhcp_msg (up to and including chaddr) is in first pbuf */  if (p->len < DHCP_SNAME_OFS) {    return ERR_BUF;  }  dhcp->msg_in = (struct dhcp_msg *)p->payload; 802ce46:	f8c8 3008 	str.w	r3, [r8, #8]  u16_t offset_max;  u16_t options_idx;  u16_t options_idx_max;  struct pbuf *q;  int parse_file_as_options = 0;  int parse_sname_as_options = 0; 802ce4a:	f04f 0b00 	mov.w	fp, #0#endif /* LWIP_DHCP_BOOTP_FILE */  /* parse options */  /* start with options field */  options_idx = DHCP_OPTIONS_OFS; 802ce4e:	22f0      	movs	r2, #240	; 0xf0 802ce50:	e004      	b.n	802ce5c <dhcp_recv+0x84>    parse_file_as_options = 0;    options_idx = DHCP_FILE_OFS;    options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN;    goto again;  } else if (parse_sname_as_options) {    parse_sname_as_options = 0; 802ce52:	f04f 0b00 	mov.w	fp, #0    options_idx = DHCP_SNAME_OFS;    options_idx_max = DHCP_SNAME_OFS + DHCP_SNAME_LEN; 802ce56:	f04f 096c 	mov.w	r9, #108	; 0x6c    options_idx = DHCP_FILE_OFS;    options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN;    goto again;  } else if (parse_sname_as_options) {    parse_sname_as_options = 0;    options_idx = DHCP_SNAME_OFS; 802ce5a:	222c      	movs	r2, #44	; 0x2c#endif /* LWIP_DHCP_BOOTP_FILE */  /* parse options */  /* start with options field */  options_idx = DHCP_OPTIONS_OFS; 802ce5c:	4657      	mov	r7, sl 802ce5e:	e009      	b.n	802ce74 <dhcp_recv+0x9c>again:  q = p;  while((q != NULL) && (options_idx >= q->len)) {    options_idx -= q->len;    options_idx_max -= q->len;    q = q->next; 802ce60:	683f      	ldr	r7, [r7, #0]  /* parse options to the end of the received packet */  options_idx_max = p->tot_len;again:  q = p;  while((q != NULL) && (options_idx >= q->len)) {    options_idx -= q->len; 802ce62:	1ad2      	subs	r2, r2, r3    options_idx_max -= q->len; 802ce64:	ebc3 0909 	rsb	r9, r3, r9  /* parse options to the end of the received packet */  options_idx_max = p->tot_len;again:  q = p;  while((q != NULL) && (options_idx >= q->len)) {    options_idx -= q->len; 802ce68:	b292      	uxth	r2, r2    options_idx_max -= q->len; 802ce6a:	fa1f f989 	uxth.w	r9, r9  options_idx = DHCP_OPTIONS_OFS;  /* parse options to the end of the received packet */  options_idx_max = p->tot_len;again:  q = p;  while((q != NULL) && (options_idx >= q->len)) { 802ce6e:	2f00      	cmp	r7, #0 802ce70:	f000 8177 	beq.w	802d162 <dhcp_recv+0x38a> 802ce74:	897b      	ldrh	r3, [r7, #10] 802ce76:	429a      	cmp	r2, r3 802ce78:	d2f2      	bcs.n	802ce60 <dhcp_recv+0x88>  if (q == NULL) {    return ERR_BUF;  }  offset = options_idx;  offset_max = options_idx_max;  options = (u8_t*)q->payload; 802ce7a:	6878      	ldr	r0, [r7, #4] 802ce7c:	9003      	str	r0, [sp, #12] 802ce7e:	e0db      	b.n	802d038 <dhcp_recv+0x260>    u8_t len;    u8_t decode_len = 0;    int decode_idx = -1;    u16_t val_offset = offset + 2;    /* len byte might be in the next pbuf */    if (offset + 1 < q->len) { 802ce80:	897b      	ldrh	r3, [r7, #10] 802ce82:	1c50      	adds	r0, r2, #1 802ce84:	4298      	cmp	r0, r3 802ce86:	da03      	bge.n	802ce90 <dhcp_recv+0xb8>      len = options[offset + 1]; 802ce88:	9803      	ldr	r0, [sp, #12] 802ce8a:	1883      	adds	r3, r0, r2 802ce8c:	785b      	ldrb	r3, [r3, #1] 802ce8e:	e003      	b.n	802ce98 <dhcp_recv+0xc0>    } else {      len = (q->next != NULL ? ((u8_t*)q->next->payload)[0] : 0); 802ce90:	683b      	ldr	r3, [r7, #0] 802ce92:	b10b      	cbz	r3, 802ce98 <dhcp_recv+0xc0> 802ce94:	685b      	ldr	r3, [r3, #4] 802ce96:	781b      	ldrb	r3, [r3, #0]    }    /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */    decode_len = len;    switch(op) { 802ce98:	2933      	cmp	r1, #51	; 0x33 802ce9a:	d038      	beq.n	802cf0e <dhcp_recv+0x136> 802ce9c:	d807      	bhi.n	802ceae <dhcp_recv+0xd6> 802ce9e:	2901      	cmp	r1, #1 802cea0:	d019      	beq.n	802ced6 <dhcp_recv+0xfe> 802cea2:	d311      	bcc.n	802cec8 <dhcp_recv+0xf0> 802cea4:	2903      	cmp	r1, #3 802cea6:	d01d      	beq.n	802cee4 <dhcp_recv+0x10c> 802cea8:	2906      	cmp	r1, #6 802ceaa:	d155      	bne.n	802cf58 <dhcp_recv+0x180> 802ceac:	e021      	b.n	802cef2 <dhcp_recv+0x11a> 802ceae:	2936      	cmp	r1, #54	; 0x36 802ceb0:	d03d      	beq.n	802cf2e <dhcp_recv+0x156> 802ceb2:	d804      	bhi.n	802cebe <dhcp_recv+0xe6> 802ceb4:	2934      	cmp	r1, #52	; 0x34 802ceb6:	d031      	beq.n	802cf1c <dhcp_recv+0x144> 802ceb8:	2935      	cmp	r1, #53	; 0x35 802ceba:	d14d      	bne.n	802cf58 <dhcp_recv+0x180> 802cebc:	e035      	b.n	802cf2a <dhcp_recv+0x152> 802cebe:	293a      	cmp	r1, #58	; 0x3a 802cec0:	d03c      	beq.n	802cf3c <dhcp_recv+0x164> 802cec2:	293b      	cmp	r1, #59	; 0x3b 802cec4:	d148      	bne.n	802cf58 <dhcp_recv+0x180> 802cec6:	e040      	b.n	802cf4a <dhcp_recv+0x172>      /* case(DHCP_OPTION_END): handled above */      case(DHCP_OPTION_PAD):        /* special option: no len encoded */        decode_len = len = 0;        /* will be increased below */        offset--; 802cec8:	1e51      	subs	r1, r2, #1    decode_len = len;    switch(op) {      /* case(DHCP_OPTION_END): handled above */      case(DHCP_OPTION_PAD):        /* special option: no len encoded */        decode_len = len = 0; 802ceca:	2300      	movs	r3, #0        /* will be increased below */        offset--; 802cecc:	b289      	uxth	r1, r1  /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */  while((q != NULL) && (options[offset] != DHCP_OPTION_END) && (offset < offset_max)) {    u8_t op = options[offset];    u8_t len;    u8_t decode_len = 0;    int decode_idx = -1; 802cece:	f04f 34ff 	mov.w	r4, #4294967295    decode_len = len;    switch(op) {      /* case(DHCP_OPTION_END): handled above */      case(DHCP_OPTION_PAD):        /* special option: no len encoded */        decode_len = len = 0; 802ced2:	461e      	mov	r6, r3 802ced4:	e044      	b.n	802cf60 <dhcp_recv+0x188>        /* will be increased below */        offset--;        break;      case(DHCP_OPTION_SUBNET_MASK):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); 802ced6:	2b04      	cmp	r3, #4 802ced8:	f040 8143 	bne.w	802d162 <dhcp_recv+0x38a> 802cedc:	461e      	mov	r6, r3 802cede:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_SUBNET_MASK; 802cee0:	2406      	movs	r4, #6 802cee2:	e03d      	b.n	802cf60 <dhcp_recv+0x188>        break;      case(DHCP_OPTION_ROUTER):        decode_len = 4; /* only copy the first given router */        LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;); 802cee4:	2b03      	cmp	r3, #3 802cee6:	f240 813c 	bls.w	802d162 <dhcp_recv+0x38a> 802ceea:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_ROUTER; 802ceec:	2407      	movs	r4, #7      case(DHCP_OPTION_SUBNET_MASK):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);        decode_idx = DHCP_OPTION_IDX_SUBNET_MASK;        break;      case(DHCP_OPTION_ROUTER):        decode_len = 4; /* only copy the first given router */ 802ceee:	2604      	movs	r6, #4 802cef0:	e036      	b.n	802cf60 <dhcp_recv+0x188>        LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;);        decode_idx = DHCP_OPTION_IDX_ROUTER;        break;      case(DHCP_OPTION_DNS_SERVER):        /* special case: there might be more than one server */        LWIP_ERROR("len % 4 == 0", len % 4 == 0, return ERR_VAL;); 802cef2:	0799      	lsls	r1, r3, #30 802cef4:	f040 8135 	bne.w	802d162 <dhcp_recv+0x38a>        /* limit number of DNS servers */        decode_len = LWIP_MIN(len, 4 * DNS_MAX_SERVERS); 802cef8:	2b08      	cmp	r3, #8 802cefa:	bf34      	ite	cc 802cefc:	461e      	movcc	r6, r3 802cefe:	2608      	movcs	r6, #8 802cf00:	b2f6      	uxtb	r6, r6        LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;); 802cf02:	42b3      	cmp	r3, r6 802cf04:	f0c0 812d 	bcc.w	802d162 <dhcp_recv+0x38a> 802cf08:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_DNS_SERVER; 802cf0a:	2408      	movs	r4, #8 802cf0c:	e028      	b.n	802cf60 <dhcp_recv+0x188>        break;      case(DHCP_OPTION_LEASE_TIME):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); 802cf0e:	2b04      	cmp	r3, #4 802cf10:	f040 8127 	bne.w	802d162 <dhcp_recv+0x38a> 802cf14:	461e      	mov	r6, r3 802cf16:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_LEASE_TIME; 802cf18:	2403      	movs	r4, #3 802cf1a:	e021      	b.n	802cf60 <dhcp_recv+0x188>        break;      case(DHCP_OPTION_OVERLOAD):        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;); 802cf1c:	2b01      	cmp	r3, #1 802cf1e:	f040 8120 	bne.w	802d162 <dhcp_recv+0x38a> 802cf22:	461e      	mov	r6, r3 802cf24:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_OVERLOAD; 802cf26:	2400      	movs	r4, #0 802cf28:	e01a      	b.n	802cf60 <dhcp_recv+0x188>        break;      case(DHCP_OPTION_MESSAGE_TYPE):        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;); 802cf2a:	2b01      	cmp	r3, #1 802cf2c:	e007      	b.n	802cf3e <dhcp_recv+0x166>        decode_idx = DHCP_OPTION_IDX_MSG_TYPE;        break;      case(DHCP_OPTION_SERVER_ID):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); 802cf2e:	2b04      	cmp	r3, #4 802cf30:	f040 8117 	bne.w	802d162 <dhcp_recv+0x38a> 802cf34:	461e      	mov	r6, r3 802cf36:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_SERVER_ID; 802cf38:	2402      	movs	r4, #2 802cf3a:	e011      	b.n	802cf60 <dhcp_recv+0x188>        break;      case(DHCP_OPTION_T1):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); 802cf3c:	2b04      	cmp	r3, #4 802cf3e:	f040 8110 	bne.w	802d162 <dhcp_recv+0x38a> 802cf42:	461e      	mov	r6, r3 802cf44:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_T1; 802cf46:	461c      	mov	r4, r3 802cf48:	e00a      	b.n	802cf60 <dhcp_recv+0x188>        break;      case(DHCP_OPTION_T2):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;); 802cf4a:	2b04      	cmp	r3, #4 802cf4c:	f040 8109 	bne.w	802d162 <dhcp_recv+0x38a> 802cf50:	461e      	mov	r6, r3 802cf52:	4611      	mov	r1, r2        decode_idx = DHCP_OPTION_IDX_T2; 802cf54:	2405      	movs	r4, #5 802cf56:	e003      	b.n	802cf60 <dhcp_recv+0x188>    } else {      len = (q->next != NULL ? ((u8_t*)q->next->payload)[0] : 0);    }    /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */    decode_len = len;    switch(op) { 802cf58:	4611      	mov	r1, r2  /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */  while((q != NULL) && (options[offset] != DHCP_OPTION_END) && (offset < offset_max)) {    u8_t op = options[offset];    u8_t len;    u8_t decode_len = 0;    int decode_idx = -1; 802cf5a:	f04f 34ff 	mov.w	r4, #4294967295      case(DHCP_OPTION_T2):        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);        decode_idx = DHCP_OPTION_IDX_T2;        break;      default:        decode_len = 0; 802cf5e:	2600      	movs	r6, #0        LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", op));        break;    }    offset += len + 2; 802cf60:	3102      	adds	r1, #2 802cf62:	fa13 f381 	uxtah	r3, r3, r1 802cf66:	b29b      	uxth	r3, r3 802cf68:	9301      	str	r3, [sp, #4]    if (decode_len > 0) { 802cf6a:	2e00      	cmp	r6, #0 802cf6c:	d04f      	beq.n	802d00e <dhcp_recv+0x236>  while((q != NULL) && (options[offset] != DHCP_OPTION_END) && (offset < offset_max)) {    u8_t op = options[offset];    u8_t len;    u8_t decode_len = 0;    int decode_idx = -1;    u16_t val_offset = offset + 2; 802cf6e:	3202      	adds	r2, #2 802cf70:	b292      	uxth	r2, r2        LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", op));        break;    }    offset += len + 2;    if (decode_len > 0) {      u32_t value = 0; 802cf72:	a90a      	add	r1, sp, #40	; 0x28  while((q != NULL) && (options[offset] != DHCP_OPTION_END) && (offset < offset_max)) {    u8_t op = options[offset];    u8_t len;    u8_t decode_len = 0;    int decode_idx = -1;    u16_t val_offset = offset + 2; 802cf74:	9205      	str	r2, [sp, #20]        LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", op));        break;    }    offset += len + 2;    if (decode_len > 0) {      u32_t value = 0; 802cf76:	2300      	movs	r3, #0/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) 802cf78:	4a4b      	ldr	r2, [pc, #300]	; (802d0a8 <dhcp_recv+0x2d0>)        LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", op));        break;    }    offset += len + 2;    if (decode_len > 0) {      u32_t value = 0; 802cf7a:	f841 3d04 	str.w	r3, [r1, #-4]!/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) 802cf7e:	eb02 0284 	add.w	r2, r2, r4, lsl #2        LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", op));        break;    }    offset += len + 2;    if (decode_len > 0) {      u32_t value = 0; 802cf82:	9104      	str	r1, [sp, #16]/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) 802cf84:	9206      	str	r2, [sp, #24] 802cf86:	9302      	str	r3, [sp, #8] 802cf88:	9805      	ldr	r0, [sp, #20] 802cf8a:	9902      	ldr	r1, [sp, #8]    if (decode_len > 0) {      u32_t value = 0;      u16_t copy_len;decode_next:      LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX);      if (!dhcp_option_given(dhcp, decode_idx)) { 802cf8c:	4a45      	ldr	r2, [pc, #276]	; (802d0a4 <dhcp_recv+0x2cc>)/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) 802cf8e:	1843      	adds	r3, r0, r1    if (decode_len > 0) {      u32_t value = 0;      u16_t copy_len;decode_next:      LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX);      if (!dhcp_option_given(dhcp, decode_idx)) { 802cf90:	4844      	ldr	r0, [pc, #272]	; (802d0a4 <dhcp_recv+0x2cc>) 802cf92:	18a2      	adds	r2, r4, r2 802cf94:	9207      	str	r2, [sp, #28] 802cf96:	5c22      	ldrb	r2, [r4, r0]/** * If an incoming DHCP message is in response to us, then trigger the state machine */static voiddhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) 802cf98:	ebc1 0c06 	rsb	ip, r1, r6 802cf9c:	b29b      	uxth	r3, r3 802cf9e:	fa5f fc8c 	uxtb.w	ip, ip    if (decode_len > 0) {      u32_t value = 0;      u16_t copy_len;decode_next:      LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX);      if (!dhcp_option_given(dhcp, decode_idx)) { 802cfa2:	2a00      	cmp	r2, #0 802cfa4:	d133      	bne.n	802d00e <dhcp_recv+0x236>        copy_len = LWIP_MIN(decode_len, 4);        pbuf_copy_partial(q, &value, copy_len, val_offset); 802cfa6:	f1bc 0f03 	cmp.w	ip, #3 802cfaa:	bf94      	ite	ls 802cfac:	4662      	movls	r2, ip 802cfae:	2204      	movhi	r2, #4 802cfb0:	4638      	mov	r0, r7 802cfb2:	9904      	ldr	r1, [sp, #16] 802cfb4:	f8cd c000 	str.w	ip, [sp] 802cfb8:	f000 feaa 	bl	802dd10 <pbuf_copy_partial>        if (decode_len > 4) { 802cfbc:	f8dd c000 	ldr.w	ip, [sp] 802cfc0:	f1bc 0f04 	cmp.w	ip, #4 802cfc4:	d90f      	bls.n	802cfe6 <dhcp_recv+0x20e>          /* decode more than one u32_t */          LWIP_ERROR("decode_len % 4 == 0", decode_len % 4 == 0, return ERR_VAL;); 802cfc6:	f01c 0f03 	tst.w	ip, #3 802cfca:	f040 80ca 	bne.w	802d162 <dhcp_recv+0x38a>          dhcp_got_option(dhcp, decode_idx); 802cfce:	9907      	ldr	r1, [sp, #28]          dhcp_set_option_value(dhcp, decode_idx, htonl(value)); 802cfd0:	9809      	ldr	r0, [sp, #36]	; 0x24        copy_len = LWIP_MIN(decode_len, 4);        pbuf_copy_partial(q, &value, copy_len, val_offset);        if (decode_len > 4) {          /* decode more than one u32_t */          LWIP_ERROR("decode_len % 4 == 0", decode_len % 4 == 0, return ERR_VAL;);          dhcp_got_option(dhcp, decode_idx); 802cfd2:	2201      	movs	r2, #1 802cfd4:	700a      	strb	r2, [r1, #0]          dhcp_set_option_value(dhcp, decode_idx, htonl(value)); 802cfd6:	f7ff fc19 	bl	802c80c <lwip_htonl> 802cfda:	9b02      	ldr	r3, [sp, #8] 802cfdc:	9906      	ldr	r1, [sp, #24]          decode_len -= 4;          val_offset += 4;          decode_idx++; 802cfde:	3401      	adds	r4, #1        pbuf_copy_partial(q, &value, copy_len, val_offset);        if (decode_len > 4) {          /* decode more than one u32_t */          LWIP_ERROR("decode_len % 4 == 0", decode_len % 4 == 0, return ERR_VAL;);          dhcp_got_option(dhcp, decode_idx);          dhcp_set_option_value(dhcp, decode_idx, htonl(value)); 802cfe0:	50c8      	str	r0, [r1, r3] 802cfe2:	3304      	adds	r3, #4 802cfe4:	e7cf      	b.n	802cf86 <dhcp_recv+0x1ae>          decode_len -= 4;          val_offset += 4;          decode_idx++;          goto decode_next;        } else if (decode_len == 4) { 802cfe6:	d104      	bne.n	802cff2 <dhcp_recv+0x21a>          value = ntohl(value); 802cfe8:	9809      	ldr	r0, [sp, #36]	; 0x24 802cfea:	f7ff fc11 	bl	802c810 <lwip_ntohl> 802cfee:	9009      	str	r0, [sp, #36]	; 0x24 802cff0:	e006      	b.n	802d000 <dhcp_recv+0x228>        } else {          LWIP_ERROR("invalid decode_len", decode_len == 1, return ERR_VAL;); 802cff2:	f1bc 0f01 	cmp.w	ip, #1 802cff6:	f040 80b4 	bne.w	802d162 <dhcp_recv+0x38a>          value = ((u8_t*)&value)[0]; 802cffa:	f89d 3024 	ldrb.w	r3, [sp, #36]	; 0x24 802cffe:	9309      	str	r3, [sp, #36]	; 0x24        }        dhcp_got_option(dhcp, decode_idx); 802d000:	4a28      	ldr	r2, [pc, #160]	; (802d0a4 <dhcp_recv+0x2cc>)        dhcp_set_option_value(dhcp, decode_idx, value); 802d002:	4829      	ldr	r0, [pc, #164]	; (802d0a8 <dhcp_recv+0x2d0>)          value = ntohl(value);        } else {          LWIP_ERROR("invalid decode_len", decode_len == 1, return ERR_VAL;);          value = ((u8_t*)&value)[0];        }        dhcp_got_option(dhcp, decode_idx); 802d004:	2301      	movs	r3, #1 802d006:	5513      	strb	r3, [r2, r4]        dhcp_set_option_value(dhcp, decode_idx, value); 802d008:	9b09      	ldr	r3, [sp, #36]	; 0x24 802d00a:	f840 3024 	str.w	r3, [r0, r4, lsl #2]      }    }    if (offset >= q->len) { 802d00e:	897b      	ldrh	r3, [r7, #10] 802d010:	9901      	ldr	r1, [sp, #4] 802d012:	4299      	cmp	r1, r3 802d014:	d30f      	bcc.n	802d036 <dhcp_recv+0x25e>      offset -= q->len; 802d016:	1aca      	subs	r2, r1, r3      offset_max -= q->len; 802d018:	ebc3 0909 	rsb	r9, r3, r9        dhcp_got_option(dhcp, decode_idx);        dhcp_set_option_value(dhcp, decode_idx, value);      }    }    if (offset >= q->len) {      offset -= q->len; 802d01c:	b292      	uxth	r2, r2      offset_max -= q->len; 802d01e:	fa1f f989 	uxth.w	r9, r9      if ((offset < offset_max) && offset_max) { 802d022:	454a      	cmp	r2, r9        dhcp_got_option(dhcp, decode_idx);        dhcp_set_option_value(dhcp, decode_idx, value);      }    }    if (offset >= q->len) {      offset -= q->len; 802d024:	9201      	str	r2, [sp, #4]      offset_max -= q->len;      if ((offset < offset_max) && offset_max) { 802d026:	d303      	bcc.n	802d030 <dhcp_recv+0x258>        break;      }    }  }  /* is this an overloaded message? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) { 802d028:	4a1e      	ldr	r2, [pc, #120]	; (802d0a4 <dhcp_recv+0x2cc>) 802d02a:	7813      	ldrb	r3, [r2, #0] 802d02c:	b963      	cbnz	r3, 802d048 <dhcp_recv+0x270> 802d02e:	e09f      	b.n	802d170 <dhcp_recv+0x398>    }    if (offset >= q->len) {      offset -= q->len;      offset_max -= q->len;      if ((offset < offset_max) && offset_max) {        q = q->next; 802d030:	683f      	ldr	r7, [r7, #0]        LWIP_ASSERT("next pbuf was null", q);        options = (u8_t*)q->payload; 802d032:	687b      	ldr	r3, [r7, #4] 802d034:	9303      	str	r3, [sp, #12]      u32_t value = 0;      u16_t copy_len;decode_next:      LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX);      if (!dhcp_option_given(dhcp, decode_idx)) {        copy_len = LWIP_MIN(decode_len, 4); 802d036:	9a01      	ldr	r2, [sp, #4]  }  offset = options_idx;  offset_max = options_idx_max;  options = (u8_t*)q->payload;  /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */  while((q != NULL) && (options[offset] != DHCP_OPTION_END) && (offset < offset_max)) { 802d038:	9803      	ldr	r0, [sp, #12] 802d03a:	5c81      	ldrb	r1, [r0, r2] 802d03c:	29ff      	cmp	r1, #255	; 0xff 802d03e:	d0f3      	beq.n	802d028 <dhcp_recv+0x250> 802d040:	454a      	cmp	r2, r9 802d042:	f4ff af1d 	bcc.w	802ce80 <dhcp_recv+0xa8> 802d046:	e7ef      	b.n	802d028 <dhcp_recv+0x250>      }    }  }  /* is this an overloaded message? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) {    u32_t overload = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_OVERLOAD); 802d048:	4b17      	ldr	r3, [pc, #92]	; (802d0a8 <dhcp_recv+0x2d0>)    dhcp_clear_option(dhcp, DHCP_OPTION_IDX_OVERLOAD); 802d04a:	4916      	ldr	r1, [pc, #88]	; (802d0a4 <dhcp_recv+0x2cc>)      }    }  }  /* is this an overloaded message? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) {    u32_t overload = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_OVERLOAD); 802d04c:	681b      	ldr	r3, [r3, #0]    dhcp_clear_option(dhcp, DHCP_OPTION_IDX_OVERLOAD); 802d04e:	2200      	movs	r2, #0    if (overload == DHCP_OVERLOAD_FILE) { 802d050:	2b01      	cmp	r3, #1    }  }  /* is this an overloaded message? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) {    u32_t overload = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_OVERLOAD);    dhcp_clear_option(dhcp, DHCP_OPTION_IDX_OVERLOAD); 802d052:	700a      	strb	r2, [r1, #0]    if (overload == DHCP_OVERLOAD_FILE) { 802d054:	f000 8093 	beq.w	802d17e <dhcp_recv+0x3a6>      parse_file_as_options = 1;      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n"));    } else if (overload == DHCP_OVERLOAD_SNAME) { 802d058:	2b02      	cmp	r3, #2 802d05a:	f43f aefa 	beq.w	802ce52 <dhcp_recv+0x7a>      parse_sname_as_options = 1;      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n"));    } else if (overload == DHCP_OVERLOAD_SNAME_FILE) { 802d05e:	2b03      	cmp	r3, #3 802d060:	f040 8086 	bne.w	802d170 <dhcp_recv+0x398> 802d064:	e089      	b.n	802d17a <dhcp_recv+0x3a2>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP_OPTION_MESSAGE_TYPE option not found\n"));    goto free_pbuf_and_return;  }  /* read DHCP message type */  msg_type = (u8_t)dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_MSG_TYPE); 802d066:	4a10      	ldr	r2, [pc, #64]	; (802d0a8 <dhcp_recv+0x2d0>) 802d068:	7911      	ldrb	r1, [r2, #4]  /* message type is DHCP ACK? */  if (msg_type == DHCP_ACK) { 802d06a:	2905      	cmp	r1, #5 802d06c:	d140      	bne.n	802d0f0 <dhcp_recv+0x318>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_ACK received\n"));    /* in requesting state? */    if (dhcp->state == DHCP_REQUESTING) { 802d06e:	f898 100c 	ldrb.w	r1, [r8, #12] 802d072:	2901      	cmp	r1, #1 802d074:	d135      	bne.n	802d0e2 <dhcp_recv+0x30a> * @param netif the netif under DHCP control */static voiddhcp_handle_ack(struct netif *netif){  struct dhcp *dhcp = netif->dhcp; 802d076:	6a2c      	ldr	r4, [r5, #32]#if LWIP_DHCP_BOOTP_FILE  ip_addr_set_zero(&dhcp->offered_si_addr);#endif /* LWIP_DHCP_BOOTP_FILE */  /* lease time given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_LEASE_TIME)) { 802d078:	78db      	ldrb	r3, [r3, #3]#if LWIP_DNS  u8_t n;#endif /* LWIP_DNS */  /* clear options we might not get from the ACK */  ip_addr_set_zero(&dhcp->offered_sn_mask); 802d07a:	f8c4 b028 	str.w	fp, [r4, #40]	; 0x28  ip_addr_set_zero(&dhcp->offered_gw_addr); 802d07e:	f8c4 b02c 	str.w	fp, [r4, #44]	; 0x2c#if LWIP_DHCP_BOOTP_FILE  ip_addr_set_zero(&dhcp->offered_si_addr);#endif /* LWIP_DHCP_BOOTP_FILE */  /* lease time given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_LEASE_TIME)) { 802d082:	b10b      	cbz	r3, 802d088 <dhcp_recv+0x2b0>    /* remember offered lease time */    dhcp->offered_t0_lease = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_LEASE_TIME); 802d084:	68d3      	ldr	r3, [r2, #12] 802d086:	6323      	str	r3, [r4, #48]	; 0x30  }  /* renewal period given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T1)) { 802d088:	4b06      	ldr	r3, [pc, #24]	; (802d0a4 <dhcp_recv+0x2cc>) 802d08a:	791a      	ldrb	r2, [r3, #4] 802d08c:	b112      	cbz	r2, 802d094 <dhcp_recv+0x2bc>    /* remember given renewal period */    dhcp->offered_t1_renew = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T1); 802d08e:	4a06      	ldr	r2, [pc, #24]	; (802d0a8 <dhcp_recv+0x2d0>) 802d090:	6912      	ldr	r2, [r2, #16] 802d092:	e001      	b.n	802d098 <dhcp_recv+0x2c0>  } else {    /* calculate safe periods for renewal */    dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2; 802d094:	6b22      	ldr	r2, [r4, #48]	; 0x30 802d096:	0852      	lsrs	r2, r2, #1  }  /* renewal period given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T2)) { 802d098:	795b      	ldrb	r3, [r3, #5]  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T1)) {    /* remember given renewal period */    dhcp->offered_t1_renew = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T1);  } else {    /* calculate safe periods for renewal */    dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2; 802d09a:	6362      	str	r2, [r4, #52]	; 0x34  }  /* renewal period given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T2)) { 802d09c:	b133      	cbz	r3, 802d0ac <dhcp_recv+0x2d4>    /* remember given rebind period */    dhcp->offered_t2_rebind = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T2); 802d09e:	4b02      	ldr	r3, [pc, #8]	; (802d0a8 <dhcp_recv+0x2d0>) 802d0a0:	695b      	ldr	r3, [r3, #20] 802d0a2:	e004      	b.n	802d0ae <dhcp_recv+0x2d6> 802d0a4:	2000fc28 	.word	0x2000fc28 802d0a8:	2000fc34 	.word	0x2000fc34  } else {    /* calculate safe periods for rebinding */    dhcp->offered_t2_rebind = dhcp->offered_t0_lease; 802d0ac:	6b23      	ldr	r3, [r4, #48]	; 0x30 802d0ae:	63a3      	str	r3, [r4, #56]	; 0x38  }  /* (y)our internet address */  ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); 802d0b0:	68a3      	ldr	r3, [r4, #8]     boot file name copied in dhcp_parse_reply if not overloaded */  ip_addr_copy(dhcp->offered_si_addr, dhcp->msg_in->siaddr);#endif /* LWIP_DHCP_BOOTP_FILE */  /* subnet mask given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)) { 802d0b2:	4a39      	ldr	r2, [pc, #228]	; (802d198 <dhcp_recv+0x3c0>)    /* calculate safe periods for rebinding */    dhcp->offered_t2_rebind = dhcp->offered_t0_lease;  }  /* (y)our internet address */  ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); 802d0b4:	691b      	ldr	r3, [r3, #16] 802d0b6:	6263      	str	r3, [r4, #36]	; 0x24     boot file name copied in dhcp_parse_reply if not overloaded */  ip_addr_copy(dhcp->offered_si_addr, dhcp->msg_in->siaddr);#endif /* LWIP_DHCP_BOOTP_FILE */  /* subnet mask given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)) { 802d0b8:	7993      	ldrb	r3, [r2, #6] 802d0ba:	4616      	mov	r6, r2 802d0bc:	b12b      	cbz	r3, 802d0ca <dhcp_recv+0x2f2>    /* remember given subnet mask */    ip4_addr_set_u32(&dhcp->offered_sn_mask, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SUBNET_MASK))); 802d0be:	4b37      	ldr	r3, [pc, #220]	; (802d19c <dhcp_recv+0x3c4>) 802d0c0:	6998      	ldr	r0, [r3, #24] 802d0c2:	f7ff fba3 	bl	802c80c <lwip_htonl>    dhcp->subnet_mask_given = 1; 802d0c6:	2301      	movs	r3, #1#endif /* LWIP_DHCP_BOOTP_FILE */  /* subnet mask given? */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)) {    /* remember given subnet mask */    ip4_addr_set_u32(&dhcp->offered_sn_mask, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SUBNET_MASK))); 802d0c8:	62a0      	str	r0, [r4, #40]	; 0x28    dhcp->subnet_mask_given = 1;  } else {    dhcp->subnet_mask_given = 0; 802d0ca:	73a3      	strb	r3, [r4, #14]  }  /* gateway router */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_ROUTER)) { 802d0cc:	79f3      	ldrb	r3, [r6, #7] 802d0ce:	b123      	cbz	r3, 802d0da <dhcp_recv+0x302>    ip4_addr_set_u32(&dhcp->offered_gw_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_ROUTER))); 802d0d0:	4b32      	ldr	r3, [pc, #200]	; (802d19c <dhcp_recv+0x3c4>) 802d0d2:	69d8      	ldr	r0, [r3, #28] 802d0d4:	f7ff fb9a 	bl	802c80c <lwip_htonl> 802d0d8:	62e0      	str	r0, [r4, #44]	; 0x2c    /* in requesting state? */    if (dhcp->state == DHCP_REQUESTING) {      dhcp_handle_ack(netif);#if DHCP_DOES_ARP_CHECK      /* check if the acknowledged lease address is already in use */      dhcp_check(netif); 802d0da:	4628      	mov	r0, r5 802d0dc:	f7ff fe0a 	bl	802ccf4 <dhcp_check> 802d0e0:	e03f      	b.n	802d162 <dhcp_recv+0x38a>      /* bind interface to the acknowledged lease address */      dhcp_bind(netif);#endif    }    /* already bound to the given lease address? */    else if ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING)) { 802d0e2:	3903      	subs	r1, #3 802d0e4:	2902      	cmp	r1, #2 802d0e6:	d83c      	bhi.n	802d162 <dhcp_recv+0x38a>      dhcp_bind(netif); 802d0e8:	4628      	mov	r0, r5 802d0ea:	f7ff fe16 	bl	802cd1a <dhcp_bind> 802d0ee:	e038      	b.n	802d162 <dhcp_recv+0x38a>    }  }  /* received a DHCP_NAK in appropriate state? */  else if ((msg_type == DHCP_NAK) && 802d0f0:	2906      	cmp	r1, #6 802d0f2:	d121      	bne.n	802d138 <dhcp_recv+0x360> 802d0f4:	f898 300c 	ldrb.w	r3, [r8, #12] 802d0f8:	2b05      	cmp	r3, #5 802d0fa:	d832      	bhi.n	802d162 <dhcp_recv+0x38a> 802d0fc:	f998 300c 	ldrsb.w	r3, [r8, #12] 802d100:	f04f 42b8 	mov.w	r2, #1543503872	; 0x5c000000 802d104:	409a      	lsls	r2, r3 802d106:	d52c      	bpl.n	802d162 <dhcp_recv+0x38a>{  struct dhcp *dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n",     (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* Set the interface down since the address must no longer be used, as per RFC2131 */  netif_set_down(netif); 802d108:	4628      	mov	r0, r5 * @param netif the netif under DHCP control */static voiddhcp_handle_nak(struct netif *netif){  struct dhcp *dhcp = netif->dhcp; 802d10a:	6a2c      	ldr	r4, [r5, #32]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n",     (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* Set the interface down since the address must no longer be used, as per RFC2131 */  netif_set_down(netif); 802d10c:	f000 fc6e 	bl	802d9ec <netif_set_down>  /* remove IP address from interface */  netif_set_ipaddr(netif, IP_ADDR_ANY); 802d110:	4628      	mov	r0, r5 802d112:	4923      	ldr	r1, [pc, #140]	; (802d1a0 <dhcp_recv+0x3c8>) 802d114:	f000 fbba 	bl	802d88c <netif_set_ipaddr>  netif_set_gw(netif, IP_ADDR_ANY); 802d118:	4628      	mov	r0, r5 802d11a:	4921      	ldr	r1, [pc, #132]	; (802d1a0 <dhcp_recv+0x3c8>) 802d11c:	f000 fbf2 	bl	802d904 <netif_set_gw>  netif_set_netmask(netif, IP_ADDR_ANY);  802d120:	4628      	mov	r0, r5 802d122:	491f      	ldr	r1, [pc, #124]	; (802d1a0 <dhcp_recv+0x3c8>) 802d124:	f000 fbf2 	bl	802d90c <netif_set_netmask>  /* Change to a defined state */  dhcp_set_state(dhcp, DHCP_BACKING_OFF); 802d128:	4620      	mov	r0, r4 802d12a:	210c      	movs	r1, #12 802d12c:	f7ff fb72 	bl	802c814 <dhcp_set_state>  /* We can immediately restart discovery */  dhcp_discover(netif); 802d130:	4628      	mov	r0, r5 802d132:	f7ff fc7f 	bl	802ca34 <dhcp_discover> 802d136:	e014      	b.n	802d162 <dhcp_recv+0x38a>     (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING  ))) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_NAK received\n"));    dhcp_handle_nak(netif);  }  /* received a DHCP_OFFER in DHCP_SELECTING state? */  else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_SELECTING)) { 802d138:	2902      	cmp	r1, #2 802d13a:	d112      	bne.n	802d162 <dhcp_recv+0x38a> 802d13c:	f898 100c 	ldrb.w	r1, [r8, #12] 802d140:	2906      	cmp	r1, #6 802d142:	d10e      	bne.n	802d162 <dhcp_recv+0x38a>{  struct dhcp *dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n",    (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* obtain the server address */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) { 802d144:	789b      	ldrb	r3, [r3, #2]    dhcp_handle_nak(netif);  }  /* received a DHCP_OFFER in DHCP_SELECTING state? */  else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_SELECTING)) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_OFFER received in DHCP_SELECTING state\n"));    dhcp->request_timeout = 0; 802d146:	f8a8 b01a 	strh.w	fp, [r8, #26] * @param netif the netif under DHCP control */static voiddhcp_handle_offer(struct netif *netif){  struct dhcp *dhcp = netif->dhcp; 802d14a:	6a2c      	ldr	r4, [r5, #32]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n",    (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* obtain the server address */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) { 802d14c:	b14b      	cbz	r3, 802d162 <dhcp_recv+0x38a>    ip4_addr_set_u32(&dhcp->server_ip_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SERVER_ID))); 802d14e:	6890      	ldr	r0, [r2, #8] 802d150:	f7ff fb5c 	bl	802c80c <lwip_htonl>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n",      ip4_addr_get_u32(&dhcp->server_ip_addr)));    /* remember offered address */    ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); 802d154:	68a3      	ldr	r3, [r4, #8]  struct dhcp *dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n",    (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* obtain the server address */  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) {    ip4_addr_set_u32(&dhcp->server_ip_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SERVER_ID))); 802d156:	6220      	str	r0, [r4, #32]    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n",      ip4_addr_get_u32(&dhcp->server_ip_addr)));    /* remember offered address */    ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); 802d158:	691b      	ldr	r3, [r3, #16]    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n",      ip4_addr_get_u32(&dhcp->offered_ip_addr)));    dhcp_select(netif); 802d15a:	4628      	mov	r0, r5  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) {    ip4_addr_set_u32(&dhcp->server_ip_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SERVER_ID)));    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n",      ip4_addr_get_u32(&dhcp->server_ip_addr)));    /* remember offered address */    ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); 802d15c:	6263      	str	r3, [r4, #36]	; 0x24    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n",      ip4_addr_get_u32(&dhcp->offered_ip_addr)));    dhcp_select(netif); 802d15e:	f7ff fd57 	bl	802cc10 <dhcp_select>    dhcp->request_timeout = 0;    /* remember offered lease */    dhcp_handle_offer(netif);  }free_pbuf_and_return:  dhcp->msg_in = NULL; 802d162:	2300      	movs	r3, #0 802d164:	f8c8 3008 	str.w	r3, [r8, #8]  pbuf_free(p); 802d168:	4650      	mov	r0, sl 802d16a:	f000 fc83 	bl	802da74 <pbuf_free> 802d16e:	e010      	b.n	802d192 <dhcp_recv+0x3ba>    /* if both are overloaded, parse file first and then sname (RFC 2131 ch. 4.1) */    parse_file_as_options = 0;    options_idx = DHCP_FILE_OFS;    options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN;    goto again;  } else if (parse_sname_as_options) { 802d170:	f1bb 0f00 	cmp.w	fp, #0 802d174:	f47f ae6d 	bne.w	802ce52 <dhcp_recv+0x7a> 802d178:	e005      	b.n	802d186 <dhcp_recv+0x3ae>      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n"));    } else if (overload == DHCP_OVERLOAD_SNAME) {      parse_sname_as_options = 1;      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n"));    } else if (overload == DHCP_OVERLOAD_SNAME_FILE) {      parse_sname_as_options = 1; 802d17a:	f04f 0b01 	mov.w	fp, #1  }  if (parse_file_as_options) {    /* if both are overloaded, parse file first and then sname (RFC 2131 ch. 4.1) */    parse_file_as_options = 0;    options_idx = DHCP_FILE_OFS;    options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN; 802d17e:	f04f 09ec 	mov.w	r9, #236	; 0xec#endif /* LWIP_DHCP_BOOTP_FILE */  }  if (parse_file_as_options) {    /* if both are overloaded, parse file first and then sname (RFC 2131 ch. 4.1) */    parse_file_as_options = 0;    options_idx = DHCP_FILE_OFS; 802d182:	226c      	movs	r2, #108	; 0x6c 802d184:	e66a      	b.n	802ce5c <dhcp_recv+0x84>    goto free_pbuf_and_return;  }  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("searching DHCP_OPTION_MESSAGE_TYPE\n"));  /* obtain pointer to DHCP message type */  if (!dhcp_option_given(dhcp, DHCP_OPTION_IDX_MSG_TYPE)) { 802d186:	4b04      	ldr	r3, [pc, #16]	; (802d198 <dhcp_recv+0x3c0>) 802d188:	785a      	ldrb	r2, [r3, #1] 802d18a:	2a00      	cmp	r2, #0 802d18c:	f47f af6b 	bne.w	802d066 <dhcp_recv+0x28e> 802d190:	e7e7      	b.n	802d162 <dhcp_recv+0x38a>    dhcp_handle_offer(netif);  }free_pbuf_and_return:  dhcp->msg_in = NULL;  pbuf_free(p);} 802d192:	b00b      	add	sp, #44	; 0x2c 802d194:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802d198:	2000fc28 	.word	0x2000fc28 802d19c:	2000fc34 	.word	0x2000fc34 802d1a0:	080413b4 	.word	0x080413b40802d1a4 <dhcp_arp_reply>: * * @param netif the network interface on which the reply was received * @param addr The IP address we received a reply from */void dhcp_arp_reply(struct netif *netif, ip_addr_t *addr){ 802d1a4:	b537      	push	{r0, r1, r2, r4, r5, lr}  LWIP_ERROR("netif != NULL", (netif != NULL), return;); 802d1a6:	4605      	mov	r5, r0 802d1a8:	2800      	cmp	r0, #0 802d1aa:	d037      	beq.n	802d21c <dhcp_arp_reply+0x78>  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_arp_reply()\n"));  /* is a DHCP client doing an ARP check? */  if ((netif->dhcp != NULL) && (netif->dhcp->state == DHCP_CHECKING)) { 802d1ac:	6a04      	ldr	r4, [r0, #32] 802d1ae:	2c00      	cmp	r4, #0 802d1b0:	d034      	beq.n	802d21c <dhcp_arp_reply+0x78> 802d1b2:	7b23      	ldrb	r3, [r4, #12] 802d1b4:	2b08      	cmp	r3, #8 802d1b6:	d131      	bne.n	802d21c <dhcp_arp_reply+0x78>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_arp_reply(): CHECKING, arp reply for 0x%08"X32_F"\n",      ip4_addr_get_u32(addr)));    /* did a host respond with the address we       were offered by the DHCP server? */    if (ip_addr_cmp(addr, &netif->dhcp->offered_ip_addr)) { 802d1b8:	680a      	ldr	r2, [r1, #0] 802d1ba:	6a63      	ldr	r3, [r4, #36]	; 0x24 802d1bc:	429a      	cmp	r2, r3 802d1be:	d12d      	bne.n	802d21c <dhcp_arp_reply+0x78>{  struct dhcp *dhcp = netif->dhcp;  err_t result = ERR_OK;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline()\n"));  dhcp_set_state(dhcp, DHCP_BACKING_OFF); 802d1c0:	4620      	mov	r0, r4 802d1c2:	210c      	movs	r1, #12 802d1c4:	f7ff fb26 	bl	802c814 <dhcp_set_state>  /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_DECLINE); 802d1c8:	4628      	mov	r0, r5 802d1ca:	4621      	mov	r1, r4 802d1cc:	2204      	movs	r2, #4 802d1ce:	f7ff fb85 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802d1d2:	b9f0      	cbnz	r0, 802d212 <dhcp_arp_reply+0x6e>    dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); 802d1d4:	2204      	movs	r2, #4 802d1d6:	2132      	movs	r1, #50	; 0x32 802d1d8:	4620      	mov	r0, r4 802d1da:	f7ff fb23 	bl	802c824 <dhcp_option>    dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); 802d1de:	6a60      	ldr	r0, [r4, #36]	; 0x24 802d1e0:	f7ff fb16 	bl	802c810 <lwip_ntohl> 802d1e4:	4601      	mov	r1, r0 802d1e6:	4620      	mov	r0, r4 802d1e8:	f7ff fb43 	bl	802c872 <dhcp_option_long>    dhcp_option_trailer(dhcp); 802d1ec:	4620      	mov	r0, r4 802d1ee:	f7ff fb60 	bl	802c8b2 <dhcp_option_trailer>    /* resize pbuf to reflect true size of options */    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802d1f2:	8b21      	ldrh	r1, [r4, #24] 802d1f4:	6920      	ldr	r0, [r4, #16] 802d1f6:	31f0      	adds	r1, #240	; 0xf0 802d1f8:	b289      	uxth	r1, r1 802d1fa:	f000 fc62 	bl	802dac2 <pbuf_realloc>    /* per section 4.4.4, broadcast DECLINE messages */    udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); 802d1fe:	9500      	str	r5, [sp, #0] 802d200:	6860      	ldr	r0, [r4, #4] 802d202:	6921      	ldr	r1, [r4, #16] 802d204:	4a06      	ldr	r2, [pc, #24]	; (802d220 <dhcp_arp_reply+0x7c>) 802d206:	2343      	movs	r3, #67	; 0x43 802d208:	f003 f8d4 	bl	80303b4 <udp_sendto_if>    dhcp_delete_msg(dhcp); 802d20c:	4620      	mov	r0, r4 802d20e:	f7ff fc05 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_decline: BACKING OFF\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,      ("dhcp_decline: could not allocate DHCP request\n"));  }  dhcp->tries++; 802d212:	7b63      	ldrb	r3, [r4, #13] 802d214:	3301      	adds	r3, #1 802d216:	7363      	strb	r3, [r4, #13]  msecs = 10*1000;  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802d218:	2314      	movs	r3, #20 802d21a:	8363      	strh	r3, [r4, #26]      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING,        ("dhcp_arp_reply(): arp reply matched with offered address, declining\n"));      dhcp_decline(netif);    }  }} 802d21c:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 802d21e:	bf00      	nop 802d220:	080413b0 	.word	0x080413b00802d224 <dhcp_renew>: * * @param netif network interface which must renew its lease */err_tdhcp_renew(struct netif *netif){ 802d224:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct dhcp *dhcp = netif->dhcp; 802d226:	6a04      	ldr	r4, [r0, #32] * * @param netif network interface which must renew its lease */err_tdhcp_renew(struct netif *netif){ 802d228:	4605      	mov	r5, r0  struct dhcp *dhcp = netif->dhcp;  err_t result;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_renew()\n"));  dhcp_set_state(dhcp, DHCP_RENEWING); 802d22a:	2105      	movs	r1, #5 802d22c:	4620      	mov	r0, r4 802d22e:	f7ff faf1 	bl	802c814 <dhcp_set_state>  /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); 802d232:	4628      	mov	r0, r5 802d234:	4621      	mov	r1, r4 802d236:	2203      	movs	r2, #3 802d238:	f7ff fb50 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802d23c:	4606      	mov	r6, r0 802d23e:	b9e0      	cbnz	r0, 802d27a <dhcp_renew+0x56>    dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); 802d240:	2202      	movs	r2, #2 802d242:	4620      	mov	r0, r4 802d244:	2139      	movs	r1, #57	; 0x39 802d246:	f7ff faed 	bl	802c824 <dhcp_option>    dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); 802d24a:	8ca9      	ldrh	r1, [r5, #36]	; 0x24 802d24c:	4620      	mov	r0, r4 802d24e:	f7ff fb00 	bl	802c852 <dhcp_option_short>#if LWIP_NETIF_HOSTNAME    dhcp_option_hostname(dhcp, netif);#endif /* LWIP_NETIF_HOSTNAME */    /* append DHCP message trailer */    dhcp_option_trailer(dhcp); 802d252:	4620      	mov	r0, r4 802d254:	f7ff fb2d 	bl	802c8b2 <dhcp_option_trailer>    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802d258:	8b21      	ldrh	r1, [r4, #24] 802d25a:	6920      	ldr	r0, [r4, #16] 802d25c:	31f0      	adds	r1, #240	; 0xf0 802d25e:	b289      	uxth	r1, r1 802d260:	f000 fc2f 	bl	802dac2 <pbuf_realloc>    udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); 802d264:	9500      	str	r5, [sp, #0] 802d266:	6860      	ldr	r0, [r4, #4] 802d268:	6921      	ldr	r1, [r4, #16] 802d26a:	f104 0220 	add.w	r2, r4, #32 802d26e:	2343      	movs	r3, #67	; 0x43 802d270:	f003 f8a0 	bl	80303b4 <udp_sendto_if>    dhcp_delete_msg(dhcp); 802d274:	4620      	mov	r0, r4 802d276:	f7ff fbd1 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n"));  }  dhcp->tries++; 802d27a:	7b63      	ldrb	r3, [r4, #13] 802d27c:	3301      	adds	r3, #1 802d27e:	b2db      	uxtb	r3, r3  /* back-off on retries, but to a maximum of 20 seconds */  msecs = dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000; 802d280:	2b09      	cmp	r3, #9    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n"));  }  dhcp->tries++; 802d282:	7363      	strb	r3, [r4, #13]  /* back-off on retries, but to a maximum of 20 seconds */  msecs = dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000; 802d284:	d804      	bhi.n	802d290 <dhcp_renew+0x6c> 802d286:	f44f 62fa 	mov.w	r2, #2000	; 0x7d0 802d28a:	4353      	muls	r3, r2 802d28c:	b29b      	uxth	r3, r3 802d28e:	e001      	b.n	802d294 <dhcp_renew+0x70> 802d290:	f644 6320 	movw	r3, #20000	; 0x4e20  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802d294:	f44f 72fa 	mov.w	r2, #500	; 0x1f4 802d298:	f203 13f3 	addw	r3, r3, #499	; 0x1f3 802d29c:	fb93 f3f2 	sdiv	r3, r3, r2 802d2a0:	8363      	strh	r3, [r4, #26]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew(): set request timeout %"U16_F" msecs\n", msecs));  return result;} 802d2a2:	4630      	mov	r0, r6 802d2a4:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 802d2a6:	0000      	movs	r0, r00802d2a8 <dhcp_coarse_tmr>:/** * The DHCP timer that checks for lease renewal/rebind timeouts. */voiddhcp_coarse_tmr(){ 802d2a8:	b538      	push	{r3, r4, r5, lr}  struct netif *netif = netif_list; 802d2aa:	4b15      	ldr	r3, [pc, #84]	; (802d300 <dhcp_coarse_tmr+0x58>) 802d2ac:	4d15      	ldr	r5, [pc, #84]	; (802d304 <dhcp_coarse_tmr+0x5c>) 802d2ae:	681c      	ldr	r4, [r3, #0]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n"));  /* iterate through all network interfaces */  while (netif != NULL) { 802d2b0:	e023      	b.n	802d2fa <dhcp_coarse_tmr+0x52>    /* only act on DHCP configured interfaces */    if (netif->dhcp != NULL) { 802d2b2:	6a23      	ldr	r3, [r4, #32] 802d2b4:	b303      	cbz	r3, 802d2f8 <dhcp_coarse_tmr+0x50>      /* timer is active (non zero), and triggers (zeroes) now? */      if (netif->dhcp->t2_timeout-- == 1) { 802d2b6:	8bda      	ldrh	r2, [r3, #30] 802d2b8:	1e51      	subs	r1, r2, #1 802d2ba:	2a01      	cmp	r2, #1 802d2bc:	83d9      	strh	r1, [r3, #30] 802d2be:	d10b      	bne.n	802d2d8 <dhcp_coarse_tmr+0x30> 802d2c0:	7b1a      	ldrb	r2, [r3, #12] 802d2c2:	2a0a      	cmp	r2, #10 802d2c4:	d818      	bhi.n	802d2f8 <dhcp_coarse_tmr+0x50> 802d2c6:	f993 300c 	ldrsb.w	r3, [r3, #12] 802d2ca:	fa15 f303 	lsls.w	r3, r5, r3 802d2ce:	d513      	bpl.n	802d2f8 <dhcp_coarse_tmr+0x50>    /* just retry to rebind */    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,                ("dhcp_t2_timeout(): must rebind\n"));    /* This slightly different to RFC2131: DHCPREQUEST will be sent from state       DHCP_REBINDING, not DHCP_BOUND */    dhcp_rebind(netif); 802d2d0:	4620      	mov	r0, r4 802d2d2:	f7ff fc0b 	bl	802caec <dhcp_rebind> 802d2d6:	e00f      	b.n	802d2f8 <dhcp_coarse_tmr+0x50>      if (netif->dhcp->t2_timeout-- == 1) {        LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t2 timeout\n"));        /* this clients' rebind timeout triggered */        dhcp_t2_timeout(netif);      /* timer is active (non zero), and triggers (zeroes) now */      } else if (netif->dhcp->t1_timeout-- == 1) { 802d2d8:	8b9a      	ldrh	r2, [r3, #28] 802d2da:	1e51      	subs	r1, r2, #1 802d2dc:	2a01      	cmp	r2, #1 802d2de:	8399      	strh	r1, [r3, #28] 802d2e0:	d10a      	bne.n	802d2f8 <dhcp_coarse_tmr+0x50> 802d2e2:	7b1a      	ldrb	r2, [r3, #12] 802d2e4:	2a0a      	cmp	r2, #10 802d2e6:	d807      	bhi.n	802d2f8 <dhcp_coarse_tmr+0x50> 802d2e8:	f993 300c 	ldrsb.w	r3, [r3, #12] 802d2ec:	fa15 f303 	lsls.w	r3, r5, r3 802d2f0:	d502      	bpl.n	802d2f8 <dhcp_coarse_tmr+0x50>     * eventually time-out if renew tries fail. */    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,                ("dhcp_t1_timeout(): must renew\n"));    /* This slightly different to RFC2131: DHCPREQUEST will be sent from state       DHCP_RENEWING, not DHCP_BOUND */    dhcp_renew(netif); 802d2f2:	4620      	mov	r0, r4 802d2f4:	f7ff ff96 	bl	802d224 <dhcp_renew>        /* this clients' renewal timeout triggered */        dhcp_t1_timeout(netif);      }    }    /* proceed to next netif */    netif = netif->next; 802d2f8:	6824      	ldr	r4, [r4, #0]dhcp_coarse_tmr(){  struct netif *netif = netif_list;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n"));  /* iterate through all network interfaces */  while (netif != NULL) { 802d2fa:	2c00      	cmp	r4, #0 802d2fc:	d1d9      	bne.n	802d2b2 <dhcp_coarse_tmr+0xa>      }    }    /* proceed to next netif */    netif = netif->next;  }} 802d2fe:	bd38      	pop	{r3, r4, r5, pc} 802d300:	20011070 	.word	0x20011070 802d304:	44200000 	.word	0x442000000802d308 <dhcp_release>: * * @param netif network interface which must release its lease */err_tdhcp_release(struct netif *netif){ 802d308:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct dhcp *dhcp = netif->dhcp; 802d30a:	6a04      	ldr	r4, [r0, #32] * * @param netif network interface which must release its lease */err_tdhcp_release(struct netif *netif){ 802d30c:	4605      	mov	r5, r0  err_t result;  u16_t msecs;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release()\n"));  /* idle DHCP client */  dhcp_set_state(dhcp, DHCP_OFF); 802d30e:	2100      	movs	r1, #0 802d310:	4620      	mov	r0, r4 802d312:	f7ff fa7f 	bl	802c814 <dhcp_set_state>  /* clean old DHCP offer */  ip_addr_set_zero(&dhcp->server_ip_addr); 802d316:	2300      	movs	r3, #0 802d318:	6223      	str	r3, [r4, #32]  ip_addr_set_zero(&dhcp->offered_ip_addr); 802d31a:	6263      	str	r3, [r4, #36]	; 0x24  ip_addr_set_zero(&dhcp->offered_sn_mask); 802d31c:	62a3      	str	r3, [r4, #40]	; 0x28  ip_addr_set_zero(&dhcp->offered_gw_addr); 802d31e:	62e3      	str	r3, [r4, #44]	; 0x2c#if LWIP_DHCP_BOOTP_FILE  ip_addr_set_zero(&dhcp->offered_si_addr);#endif /* LWIP_DHCP_BOOTP_FILE */  dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0; 802d320:	63a3      	str	r3, [r4, #56]	; 0x38 802d322:	6363      	str	r3, [r4, #52]	; 0x34 802d324:	6323      	str	r3, [r4, #48]	; 0x30    /* create and initialize the DHCP message header */  result = dhcp_create_msg(netif, dhcp, DHCP_RELEASE); 802d326:	4628      	mov	r0, r5 802d328:	4621      	mov	r1, r4 802d32a:	2207      	movs	r2, #7 802d32c:	f7ff fad6 	bl	802c8dc <dhcp_create_msg>  if (result == ERR_OK) { 802d330:	4606      	mov	r6, r0 802d332:	b998      	cbnz	r0, 802d35c <dhcp_release+0x54>    dhcp_option_trailer(dhcp); 802d334:	4620      	mov	r0, r4 802d336:	f7ff fabc 	bl	802c8b2 <dhcp_option_trailer>    pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); 802d33a:	8b21      	ldrh	r1, [r4, #24] 802d33c:	6920      	ldr	r0, [r4, #16] 802d33e:	31f0      	adds	r1, #240	; 0xf0 802d340:	b289      	uxth	r1, r1 802d342:	f000 fbbe 	bl	802dac2 <pbuf_realloc>    udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); 802d346:	9500      	str	r5, [sp, #0] 802d348:	6860      	ldr	r0, [r4, #4] 802d34a:	6921      	ldr	r1, [r4, #16] 802d34c:	f104 0220 	add.w	r2, r4, #32 802d350:	2343      	movs	r3, #67	; 0x43 802d352:	f003 f82f 	bl	80303b4 <udp_sendto_if>    dhcp_delete_msg(dhcp); 802d356:	4620      	mov	r0, r4 802d358:	f7ff fb60 	bl	802ca1c <dhcp_delete_msg>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release: RELEASED, DHCP_OFF\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n"));  }  dhcp->tries++; 802d35c:	7b63      	ldrb	r3, [r4, #13] 802d35e:	3301      	adds	r3, #1 802d360:	b2db      	uxtb	r3, r3  msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; 802d362:	2b09      	cmp	r3, #9    dhcp_delete_msg(dhcp);    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release: RELEASED, DHCP_OFF\n"));  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n"));  }  dhcp->tries++; 802d364:	7363      	strb	r3, [r4, #13]  msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; 802d366:	d804      	bhi.n	802d372 <dhcp_release+0x6a> 802d368:	f44f 727a 	mov.w	r2, #1000	; 0x3e8 802d36c:	4353      	muls	r3, r2 802d36e:	b29b      	uxth	r3, r3 802d370:	e001      	b.n	802d376 <dhcp_release+0x6e> 802d372:	f242 7310 	movw	r3, #10000	; 0x2710  dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; 802d376:	f44f 72fa 	mov.w	r2, #500	; 0x1f4 802d37a:	f203 13f3 	addw	r3, r3, #499	; 0x1f3 802d37e:	fb93 f3f2 	sdiv	r3, r3, r2 802d382:	8363      	strh	r3, [r4, #26]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release(): set request timeout %"U16_F" msecs\n", msecs));  /* bring the interface down */  netif_set_down(netif); 802d384:	4628      	mov	r0, r5 802d386:	f000 fb31 	bl	802d9ec <netif_set_down>  /* remove IP address from interface */  netif_set_ipaddr(netif, IP_ADDR_ANY); 802d38a:	4628      	mov	r0, r5 802d38c:	4906      	ldr	r1, [pc, #24]	; (802d3a8 <dhcp_release+0xa0>) 802d38e:	f000 fa7d 	bl	802d88c <netif_set_ipaddr>  netif_set_gw(netif, IP_ADDR_ANY); 802d392:	4628      	mov	r0, r5 802d394:	4904      	ldr	r1, [pc, #16]	; (802d3a8 <dhcp_release+0xa0>) 802d396:	f000 fab5 	bl	802d904 <netif_set_gw>  netif_set_netmask(netif, IP_ADDR_ANY); 802d39a:	4628      	mov	r0, r5 802d39c:	4902      	ldr	r1, [pc, #8]	; (802d3a8 <dhcp_release+0xa0>) 802d39e:	f000 fab5 	bl	802d90c <netif_set_netmask>    return result;} 802d3a2:	4630      	mov	r0, r6 802d3a4:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 802d3a6:	bf00      	nop 802d3a8:	080413b4 	.word	0x080413b40802d3ac <dhcp_fine_tmr>: * A DHCP server is expected to respond within a short period of time. * This timer checks whether an outstanding DHCP request is timed out. */voiddhcp_fine_tmr(){ 802d3ac:	b538      	push	{r3, r4, r5, lr}  struct netif *netif = netif_list; 802d3ae:	4b26      	ldr	r3, [pc, #152]	; (802d448 <dhcp_fine_tmr+0x9c>)      /* timer is active (non zero), and is about to trigger now */            if (netif->dhcp->request_timeout > 1) {        netif->dhcp->request_timeout--;      }      else if (netif->dhcp->request_timeout == 1) {        netif->dhcp->request_timeout--; 802d3b0:	2500      	movs	r5, #0 * This timer checks whether an outstanding DHCP request is timed out. */voiddhcp_fine_tmr(){  struct netif *netif = netif_list; 802d3b2:	681c      	ldr	r4, [r3, #0]  /* loop through netif's */  while (netif != NULL) { 802d3b4:	e044      	b.n	802d440 <dhcp_fine_tmr+0x94>    /* only act on DHCP configured interfaces */    if (netif->dhcp != NULL) { 802d3b6:	6a23      	ldr	r3, [r4, #32] 802d3b8:	2b00      	cmp	r3, #0 802d3ba:	d040      	beq.n	802d43e <dhcp_fine_tmr+0x92>      /* timer is active (non zero), and is about to trigger now */            if (netif->dhcp->request_timeout > 1) { 802d3bc:	8b5a      	ldrh	r2, [r3, #26] 802d3be:	2a01      	cmp	r2, #1 802d3c0:	d902      	bls.n	802d3c8 <dhcp_fine_tmr+0x1c>        netif->dhcp->request_timeout--; 802d3c2:	3a01      	subs	r2, #1 802d3c4:	835a      	strh	r2, [r3, #26] 802d3c6:	e03a      	b.n	802d43e <dhcp_fine_tmr+0x92>      }      else if (netif->dhcp->request_timeout == 1) { 802d3c8:	d139      	bne.n	802d43e <dhcp_fine_tmr+0x92>dhcp_timeout(struct netif *netif){  struct dhcp *dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n"));  /* back-off period has passed, or server selection timed out */  if ((dhcp->state == DHCP_BACKING_OFF) || (dhcp->state == DHCP_SELECTING)) { 802d3ca:	7b1a      	ldrb	r2, [r3, #12]      /* timer is active (non zero), and is about to trigger now */            if (netif->dhcp->request_timeout > 1) {        netif->dhcp->request_timeout--;      }      else if (netif->dhcp->request_timeout == 1) {        netif->dhcp->request_timeout--; 802d3cc:	835d      	strh	r5, [r3, #26]dhcp_timeout(struct netif *netif){  struct dhcp *dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n"));  /* back-off period has passed, or server selection timed out */  if ((dhcp->state == DHCP_BACKING_OFF) || (dhcp->state == DHCP_SELECTING)) { 802d3ce:	2a0c      	cmp	r2, #12 802d3d0:	d028      	beq.n	802d424 <dhcp_fine_tmr+0x78> 802d3d2:	2a06      	cmp	r2, #6 802d3d4:	d100      	bne.n	802d3d8 <dhcp_fine_tmr+0x2c> 802d3d6:	e025      	b.n	802d424 <dhcp_fine_tmr+0x78>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n"));    dhcp_discover(netif);  /* receiving the requested lease timed out */  } else if (dhcp->state == DHCP_REQUESTING) { 802d3d8:	2a01      	cmp	r2, #1 802d3da:	d106      	bne.n	802d3ea <dhcp_fine_tmr+0x3e>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, DHCP request timed out\n"));    if (dhcp->tries <= 5) { 802d3dc:	7b5b      	ldrb	r3, [r3, #13] 802d3de:	2b05      	cmp	r3, #5      dhcp_select(netif); 802d3e0:	4620      	mov	r0, r4    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n"));    dhcp_discover(netif);  /* receiving the requested lease timed out */  } else if (dhcp->state == DHCP_REQUESTING) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, DHCP request timed out\n"));    if (dhcp->tries <= 5) { 802d3e2:	d81d      	bhi.n	802d420 <dhcp_fine_tmr+0x74>      dhcp_select(netif); 802d3e4:	f7ff fc14 	bl	802cc10 <dhcp_select> 802d3e8:	e029      	b.n	802d43e <dhcp_fine_tmr+0x92>      dhcp_release(netif);      dhcp_discover(netif);    }#if DHCP_DOES_ARP_CHECK  /* received no ARP reply for the offered address (which is good) */  } else if (dhcp->state == DHCP_CHECKING) { 802d3ea:	2a08      	cmp	r2, #8 802d3ec:	d109      	bne.n	802d402 <dhcp_fine_tmr+0x56>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): CHECKING, ARP request timed out\n"));    if (dhcp->tries <= 1) { 802d3ee:	7b5b      	ldrb	r3, [r3, #13] 802d3f0:	2b01      	cmp	r3, #1      dhcp_check(netif); 802d3f2:	4620      	mov	r0, r4    }#if DHCP_DOES_ARP_CHECK  /* received no ARP reply for the offered address (which is good) */  } else if (dhcp->state == DHCP_CHECKING) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): CHECKING, ARP request timed out\n"));    if (dhcp->tries <= 1) { 802d3f4:	d802      	bhi.n	802d3fc <dhcp_fine_tmr+0x50>      dhcp_check(netif); 802d3f6:	f7ff fc7d 	bl	802ccf4 <dhcp_check> 802d3fa:	e020      	b.n	802d43e <dhcp_fine_tmr+0x92>    /* no ARP replies on the offered address,       looks like the IP address is indeed free */    } else {      /* bind the interface to the offered address */      dhcp_bind(netif); 802d3fc:	f7ff fc8d 	bl	802cd1a <dhcp_bind> 802d400:	e01d      	b.n	802d43e <dhcp_fine_tmr+0x92>    }#endif /* DHCP_DOES_ARP_CHECK */  }  /* did not get response to renew request? */  else if (dhcp->state == DHCP_RENEWING) { 802d402:	2a05      	cmp	r2, #5 802d404:	d103      	bne.n	802d40e <dhcp_fine_tmr+0x62>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RENEWING, DHCP request timed out\n"));    /* just retry renewal */    /* note that the rebind timer will eventually time-out if renew does not work */    dhcp_renew(netif); 802d406:	4620      	mov	r0, r4 802d408:	f7ff ff0c 	bl	802d224 <dhcp_renew> 802d40c:	e017      	b.n	802d43e <dhcp_fine_tmr+0x92>  /* did not get response to rebind request? */  } else if (dhcp->state == DHCP_REBINDING) { 802d40e:	2a04      	cmp	r2, #4 802d410:	d10a      	bne.n	802d428 <dhcp_fine_tmr+0x7c>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REBINDING, DHCP request timed out\n"));    if (dhcp->tries <= 8) { 802d412:	7b5b      	ldrb	r3, [r3, #13] 802d414:	2b08      	cmp	r3, #8      dhcp_rebind(netif); 802d416:	4620      	mov	r0, r4    /* note that the rebind timer will eventually time-out if renew does not work */    dhcp_renew(netif);  /* did not get response to rebind request? */  } else if (dhcp->state == DHCP_REBINDING) {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REBINDING, DHCP request timed out\n"));    if (dhcp->tries <= 8) { 802d418:	d802      	bhi.n	802d420 <dhcp_fine_tmr+0x74>      dhcp_rebind(netif); 802d41a:	f7ff fb67 	bl	802caec <dhcp_rebind> 802d41e:	e00e      	b.n	802d43e <dhcp_fine_tmr+0x92>    } else {      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RELEASING, DISCOVERING\n"));      dhcp_release(netif); 802d420:	f7ff ff72 	bl	802d308 <dhcp_release>      dhcp_discover(netif); 802d424:	4620      	mov	r0, r4 802d426:	e008      	b.n	802d43a <dhcp_fine_tmr+0x8e>    }  } else if (dhcp->state == DHCP_REBOOTING) { 802d428:	2a03      	cmp	r2, #3 802d42a:	d108      	bne.n	802d43e <dhcp_fine_tmr+0x92>    if (dhcp->tries < REBOOT_TRIES) { 802d42c:	7b5b      	ldrb	r3, [r3, #13] 802d42e:	2b01      	cmp	r3, #1      dhcp_reboot(netif); 802d430:	4620      	mov	r0, r4      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RELEASING, DISCOVERING\n"));      dhcp_release(netif);      dhcp_discover(netif);    }  } else if (dhcp->state == DHCP_REBOOTING) {    if (dhcp->tries < REBOOT_TRIES) { 802d432:	d802      	bhi.n	802d43a <dhcp_fine_tmr+0x8e>      dhcp_reboot(netif); 802d434:	f7ff fb9c 	bl	802cb70 <dhcp_reboot> 802d438:	e001      	b.n	802d43e <dhcp_fine_tmr+0x92>    } else {      dhcp_discover(netif); 802d43a:	f7ff fafb 	bl	802ca34 <dhcp_discover>        /* this client's request timeout triggered */        dhcp_timeout(netif);      }    }    /* proceed to next network interface */    netif = netif->next; 802d43e:	6824      	ldr	r4, [r4, #0]voiddhcp_fine_tmr(){  struct netif *netif = netif_list;  /* loop through netif's */  while (netif != NULL) { 802d440:	2c00      	cmp	r4, #0 802d442:	d1b8      	bne.n	802d3b6 <dhcp_fine_tmr+0xa>      }    }    /* proceed to next network interface */    netif = netif->next;  }} 802d444:	bd38      	pop	{r3, r4, r5, pc} 802d446:	bf00      	nop 802d448:	20011070 	.word	0x200110700802d44c <dhcp_stop>: * * @param netif The network interface to stop DHCP on */voiddhcp_stop(struct netif *netif){ 802d44c:	b510      	push	{r4, lr}  struct dhcp *dhcp;  LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;); 802d44e:	b198      	cbz	r0, 802d478 <dhcp_stop+0x2c>  dhcp = netif->dhcp;  /* Remove the flag that says this netif is handled by DHCP. */  netif->flags &= ~NETIF_FLAG_DHCP; 802d450:	f890 302d 	ldrb.w	r3, [r0, #45]	; 0x2dvoiddhcp_stop(struct netif *netif){  struct dhcp *dhcp;  LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;);  dhcp = netif->dhcp; 802d454:	6a04      	ldr	r4, [r0, #32]  /* Remove the flag that says this netif is handled by DHCP. */  netif->flags &= ~NETIF_FLAG_DHCP; 802d456:	f023 0308 	bic.w	r3, r3, #8 802d45a:	f880 302d 	strb.w	r3, [r0, #45]	; 0x2d  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_stop()\n"));  /* netif is DHCP configured? */  if (dhcp != NULL) { 802d45e:	b15c      	cbz	r4, 802d478 <dhcp_stop+0x2c>      autoip_stop(netif);      dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF;    }#endif /* LWIP_DHCP_AUTOIP_COOP */    if (dhcp->pcb != NULL) { 802d460:	6860      	ldr	r0, [r4, #4] 802d462:	b118      	cbz	r0, 802d46c <dhcp_stop+0x20>      udp_remove(dhcp->pcb); 802d464:	f003 f852 	bl	803050c <udp_remove>      dhcp->pcb = NULL; 802d468:	2300      	movs	r3, #0 802d46a:	6063      	str	r3, [r4, #4]    }    LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL);    dhcp_set_state(dhcp, DHCP_OFF); 802d46c:	4620      	mov	r0, r4 802d46e:	2100      	movs	r1, #0  }} 802d470:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    if (dhcp->pcb != NULL) {      udp_remove(dhcp->pcb);      dhcp->pcb = NULL;    }    LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL);    dhcp_set_state(dhcp, DHCP_OFF); 802d474:	f7ff b9ce 	b.w	802c814 <dhcp_set_state> 802d478:	bd10      	pop	{r4, pc} 802d47a:	0000      	movs	r0, r00802d47c <dhcp_start>: * - ERR_OK - No error * - ERR_MEM - Out of memory */err_tdhcp_start(struct netif *netif){ 802d47c:	b538      	push	{r3, r4, r5, lr}  struct dhcp *dhcp;  err_t result = ERR_OK;  LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;); 802d47e:	4604      	mov	r4, r0 802d480:	b908      	cbnz	r0, 802d486 <dhcp_start+0xa> 802d482:	20f2      	movs	r0, #242	; 0xf2 802d484:	e047      	b.n	802d516 <dhcp_start+0x9a>  dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* Remove the flag that says this netif is handled by DHCP,     it is set when we succeeded starting. */  netif->flags &= ~NETIF_FLAG_DHCP; 802d486:	f890 302d 	ldrb.w	r3, [r0, #45]	; 0x2d{  struct dhcp *dhcp;  err_t result = ERR_OK;  LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;);  dhcp = netif->dhcp; 802d48a:	6a05      	ldr	r5, [r0, #32]  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* Remove the flag that says this netif is handled by DHCP,     it is set when we succeeded starting. */  netif->flags &= ~NETIF_FLAG_DHCP; 802d48c:	f023 0208 	bic.w	r2, r3, #8  /* check hwtype of the netif */  if ((netif->flags & NETIF_FLAG_ETHARP) == 0) { 802d490:	f003 0320 	and.w	r3, r3, #32 802d494:	b2db      	uxtb	r3, r3  LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;);  dhcp = netif->dhcp;  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));  /* Remove the flag that says this netif is handled by DHCP,     it is set when we succeeded starting. */  netif->flags &= ~NETIF_FLAG_DHCP; 802d496:	f880 202d 	strb.w	r2, [r0, #45]	; 0x2d  /* check hwtype of the netif */  if ((netif->flags & NETIF_FLAG_ETHARP) == 0) { 802d49a:	2b00      	cmp	r3, #0 802d49c:	d0f1      	beq.n	802d482 <dhcp_start+0x6>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): No ETHARP netif\n"));    return ERR_ARG;  }  /* check MTU of the netif */  if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) { 802d49e:	8c83      	ldrh	r3, [r0, #36]	; 0x24 802d4a0:	f5b3 7f10 	cmp.w	r3, #576	; 0x240 802d4a4:	d200      	bcs.n	802d4a8 <dhcp_start+0x2c> 802d4a6:	e02e      	b.n	802d506 <dhcp_start+0x8a>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): Cannot use this netif with DHCP: MTU is too small\n"));    return ERR_MEM;  }  /* no DHCP client attached yet? */  if (dhcp == NULL) { 802d4a8:	b935      	cbnz	r5, 802d4b8 <dhcp_start+0x3c>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting new DHCP client\n"));    dhcp = (struct dhcp *)mem_malloc(sizeof(struct dhcp)); 802d4aa:	203c      	movs	r0, #60	; 0x3c 802d4ac:	f000 f938 	bl	802d720 <mem_malloc>    if (dhcp == NULL) { 802d4b0:	4605      	mov	r5, r0 802d4b2:	b340      	cbz	r0, 802d506 <dhcp_start+0x8a>      LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not allocate dhcp\n"));      return ERR_MEM;    }    /* store this dhcp client in the netif */    netif->dhcp = dhcp; 802d4b4:	6220      	str	r0, [r4, #32] 802d4b6:	e003      	b.n	802d4c0 <dhcp_start+0x44>    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): allocated dhcp"));  /* already has DHCP client attached */  } else {    LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(): restarting DHCP configuration\n"));    if (dhcp->pcb != NULL) { 802d4b8:	6868      	ldr	r0, [r5, #4] 802d4ba:	b108      	cbz	r0, 802d4c0 <dhcp_start+0x44>      udp_remove(dhcp->pcb); 802d4bc:	f003 f826 	bl	803050c <udp_remove>    LWIP_ASSERT("pbuf p_out wasn't freed", dhcp->p_out == NULL);    LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL );  }      /* clear data structure */  memset(dhcp, 0, sizeof(struct dhcp)); 802d4c0:	2100      	movs	r1, #0 802d4c2:	223c      	movs	r2, #60	; 0x3c 802d4c4:	4628      	mov	r0, r5 802d4c6:	f7f4 fafb 	bl	8021ac0 <memset>  /* dhcp_set_state(&dhcp, DHCP_OFF); */  /* allocate UDP PCB */  dhcp->pcb = udp_new(); 802d4ca:	f003 f83b 	bl	8030544 <udp_new> 802d4ce:	6068      	str	r0, [r5, #4]  if (dhcp->pcb == NULL) { 802d4d0:	b1c8      	cbz	r0, 802d506 <dhcp_start+0x8a>    LWIP_DEBUGF(DHCP_DEBUG  | LWIP_DBG_TRACE, ("dhcp_start(): could not obtain pcb\n"));    return ERR_MEM;  }  ip_set_option(dhcp->pcb, SOF_BROADCAST); 802d4d2:	7a03      	ldrb	r3, [r0, #8]  /* set up local and remote port for the pcb */  udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); 802d4d4:	4911      	ldr	r1, [pc, #68]	; (802d51c <dhcp_start+0xa0>)  dhcp->pcb = udp_new();  if (dhcp->pcb == NULL) {    LWIP_DEBUGF(DHCP_DEBUG  | LWIP_DBG_TRACE, ("dhcp_start(): could not obtain pcb\n"));    return ERR_MEM;  }  ip_set_option(dhcp->pcb, SOF_BROADCAST); 802d4d6:	f043 0320 	orr.w	r3, r3, #32 802d4da:	7203      	strb	r3, [r0, #8]  /* set up local and remote port for the pcb */  udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); 802d4dc:	2244      	movs	r2, #68	; 0x44 802d4de:	6868      	ldr	r0, [r5, #4] 802d4e0:	f002 ff18 	bl	8030314 <udp_bind>  udp_connect(dhcp->pcb, IP_ADDR_ANY, DHCP_SERVER_PORT); 802d4e4:	490d      	ldr	r1, [pc, #52]	; (802d51c <dhcp_start+0xa0>) 802d4e6:	6868      	ldr	r0, [r5, #4] 802d4e8:	2243      	movs	r2, #67	; 0x43 802d4ea:	f002 ffdd 	bl	80304a8 <udp_connect>  /* set up the recv callback and argument */  udp_recv(dhcp->pcb, dhcp_recv, netif); 802d4ee:	6868      	ldr	r0, [r5, #4] 802d4f0:	490b      	ldr	r1, [pc, #44]	; (802d520 <dhcp_start+0xa4>) 802d4f2:	4622      	mov	r2, r4 802d4f4:	f003 f806 	bl	8030504 <udp_recv>  LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting DHCP configuration\n"));  /* (re)start the DHCP negotiation */  result = dhcp_discover(netif); 802d4f8:	4620      	mov	r0, r4 802d4fa:	f7ff fa9b 	bl	802ca34 <dhcp_discover>  if (result != ERR_OK) { 802d4fe:	b120      	cbz	r0, 802d50a <dhcp_start+0x8e>    /* free resources allocated above */    dhcp_stop(netif); 802d500:	4620      	mov	r0, r4 802d502:	f7ff ffa3 	bl	802d44c <dhcp_stop>    return ERR_MEM; 802d506:	20ff      	movs	r0, #255	; 0xff 802d508:	e005      	b.n	802d516 <dhcp_start+0x9a>  }  /* Set the flag that says this netif is handled by DHCP. */  netif->flags |= NETIF_FLAG_DHCP; 802d50a:	f894 302d 	ldrb.w	r3, [r4, #45]	; 0x2d 802d50e:	f043 0308 	orr.w	r3, r3, #8 802d512:	f884 302d 	strb.w	r3, [r4, #45]	; 0x2d  return result;} 802d516:	b240      	sxtb	r0, r0 802d518:	bd38      	pop	{r3, r4, r5, pc} 802d51a:	bf00      	nop 802d51c:	080413b4 	.word	0x080413b4 802d520:	0802cdd9 	.word	0x0802cdd90802d524 <lwip_init>:/** * Perform Sanity check of user-configurable values, and initialize all modules. */voidlwip_init(void){ 802d524:	b508      	push	{r3, lr}  /* Modules initialization */  stats_init();#if !NO_SYS  sys_init(); 802d526:	f007 ff31 	bl	803538c <sys_init>#endif /* !NO_SYS */  mem_init(); 802d52a:	f000 f80f 	bl	802d54c <mem_init>  memp_init(); 802d52e:	f000 f95b 	bl	802d7e8 <memp_init>  pbuf_init();  netif_init(); 802d532:	f000 f9a9 	bl	802d888 <netif_init>#endif /* LWIP_ARP */#if LWIP_RAW  raw_init();#endif /* LWIP_RAW */#if LWIP_UDP  udp_init(); 802d536:	f002 fe27 	bl	8030188 <udp_init>#endif /* LWIP_UDP */#if LWIP_TCP  tcp_init(); 802d53a:	f000 fc8b 	bl	802de54 <tcp_init>#endif /* LWIP_TCP */#if LWIP_SNMP  snmp_init(); 802d53e:	f005 fde1 	bl	8033104 <snmp_init>#endif /* LWIP_DNS */#if LWIP_TIMERS  sys_timeouts_init();#endif /* LWIP_TIMERS */} 802d542:	e8bd 4008 	ldmia.w	sp!, {r3, lr}#if LWIP_DNS  dns_init();#endif /* LWIP_DNS */#if LWIP_TIMERS  sys_timeouts_init(); 802d546:	f002 bd49 	b.w	802ffdc <sys_timeouts_init> 802d54a:	0000      	movs	r0, r00802d54c <mem_init>:  LWIP_ASSERT("Sanity check alignment",    (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT-1)) == 0);  /* align the heap */  ram = (u8_t *)LWIP_MEM_ALIGN(LWIP_RAM_HEAP_POINTER); 802d54c:	4b0b      	ldr	r3, [pc, #44]	; (802d57c <mem_init+0x30>) 802d54e:	4a0c      	ldr	r2, [pc, #48]	; (802d580 <mem_init+0x34>)  mem = (struct mem *)(void *)ram;  mem->next = MEM_SIZE_ALIGNED;  mem->prev = 0;  mem->used = 0;  /* initialize the end of the heap */  ram_end = (struct mem *)(void *)&ram[MEM_SIZE_ALIGNED]; 802d550:	480c      	ldr	r0, [pc, #48]	; (802d584 <mem_init+0x38>)  LWIP_ASSERT("Sanity check alignment",    (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT-1)) == 0);  /* align the heap */  ram = (u8_t *)LWIP_MEM_ALIGN(LWIP_RAM_HEAP_POINTER); 802d552:	f023 0303 	bic.w	r3, r3, #3 802d556:	6013      	str	r3, [r2, #0]  /* initialize the start of the heap */  mem = (struct mem *)(void *)ram;  mem->next = MEM_SIZE_ALIGNED; 802d558:	f44f 51a0 	mov.w	r1, #5120	; 0x1400  mem->prev = 0; 802d55c:	2200      	movs	r2, #0 802d55e:	805a      	strh	r2, [r3, #2]  mem->used = 0; 802d560:	711a      	strb	r2, [r3, #4]  /* initialize the end of the heap */  ram_end = (struct mem *)(void *)&ram[MEM_SIZE_ALIGNED]; 802d562:	185a      	adds	r2, r3, r1 802d564:	6002      	str	r2, [r0, #0]  ram_end->used = 1; 802d566:	2001      	movs	r0, #1 802d568:	7110      	strb	r0, [r2, #4]  ram_end->next = MEM_SIZE_ALIGNED;  ram_end->prev = MEM_SIZE_ALIGNED; 802d56a:	8051      	strh	r1, [r2, #2]  /* align the heap */  ram = (u8_t *)LWIP_MEM_ALIGN(LWIP_RAM_HEAP_POINTER);  /* initialize the start of the heap */  mem = (struct mem *)(void *)ram;  mem->next = MEM_SIZE_ALIGNED; 802d56c:	8019      	strh	r1, [r3, #0]  /* initialize the lowest-free pointer to the start of the heap */  lfree = (struct mem *)(void *)ram;  MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED);  if(sys_mutex_new(&mem_mutex) != ERR_OK) { 802d56e:	4806      	ldr	r0, [pc, #24]	; (802d588 <mem_init+0x3c>)  mem->prev = 0;  mem->used = 0;  /* initialize the end of the heap */  ram_end = (struct mem *)(void *)&ram[MEM_SIZE_ALIGNED];  ram_end->used = 1;  ram_end->next = MEM_SIZE_ALIGNED; 802d570:	8011      	strh	r1, [r2, #0]  ram_end->prev = MEM_SIZE_ALIGNED;  /* initialize the lowest-free pointer to the start of the heap */  lfree = (struct mem *)(void *)ram; 802d572:	4a06      	ldr	r2, [pc, #24]	; (802d58c <mem_init+0x40>) 802d574:	6013      	str	r3, [r2, #0]  MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED);  if(sys_mutex_new(&mem_mutex) != ERR_OK) { 802d576:	f007 beeb 	b.w	8035350 <sys_mutex_new> 802d57a:	bf00      	nop 802d57c:	2000fc5f 	.word	0x2000fc5f 802d580:	20002b00 	.word	0x20002b00 802d584:	20002af8 	.word	0x20002af8 802d588:	20002afc 	.word	0x20002afc 802d58c:	20002af4 	.word	0x20002af40802d590 <mem_free>: * @param rmem is the data portion of a struct mem as returned by a previous *             call to mem_malloc() */voidmem_free(void *rmem){ 802d590:	b570      	push	{r4, r5, r6, lr}  struct mem *mem;  LWIP_MEM_FREE_DECL_PROTECT();  if (rmem == NULL) { 802d592:	4604      	mov	r4, r0 802d594:	2800      	cmp	r0, #0 802d596:	d04c      	beq.n	802d632 <mem_free+0xa2>  LWIP_ASSERT("mem_free: sanity check alignment", (((mem_ptr_t)rmem) & (MEM_ALIGNMENT-1)) == 0);  LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram &&    (u8_t *)rmem < (u8_t *)ram_end);  if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { 802d598:	4b26      	ldr	r3, [pc, #152]	; (802d634 <mem_free+0xa4>) 802d59a:	681b      	ldr	r3, [r3, #0] 802d59c:	4298      	cmp	r0, r3 802d59e:	d303      	bcc.n	802d5a8 <mem_free+0x18> 802d5a0:	4b25      	ldr	r3, [pc, #148]	; (802d638 <mem_free+0xa8>) 802d5a2:	681b      	ldr	r3, [r3, #0] 802d5a4:	4298      	cmp	r0, r3 802d5a6:	d305      	bcc.n	802d5b4 <mem_free+0x24>    SYS_ARCH_DECL_PROTECT(lev);    LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n"));    /* protect mem stats from concurrent access */    SYS_ARCH_PROTECT(lev); 802d5a8:	f007 ff0a 	bl	80353c0 <sys_arch_protect>  plug_holes(mem);#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT  mem_free_count = 1;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_FREE_UNPROTECT();} 802d5ac:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}    SYS_ARCH_DECL_PROTECT(lev);    LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n"));    /* protect mem stats from concurrent access */    SYS_ARCH_PROTECT(lev);    MEM_STATS_INC(illegal);    SYS_ARCH_UNPROTECT(lev); 802d5b0:	f007 bf10 	b.w	80353d4 <sys_arch_unprotect>    return;  }  /* protect the heap from concurrent access */  LWIP_MEM_FREE_PROTECT(); 802d5b4:	4821      	ldr	r0, [pc, #132]	; (802d63c <mem_free+0xac>) 802d5b6:	f007 fed7 	bl	8035368 <sys_mutex_lock>  /* Get the corresponding struct mem ... */  mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM);  /* ... which has to be in a used state ... */  LWIP_ASSERT("mem_free: mem->used", mem->used);  /* ... and is now unused. */  mem->used = 0; 802d5ba:	2300      	movs	r3, #0 802d5bc:	f804 3c04 	strb.w	r3, [r4, #-4]  if (mem < lfree) { 802d5c0:	4b1f      	ldr	r3, [pc, #124]	; (802d640 <mem_free+0xb0>)  LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0);  /* plug hole forward */  LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED);  nmem = (struct mem *)(void *)&ram[mem->next]; 802d5c2:	f834 0c08 	ldrh.w	r0, [r4, #-8]  /* ... which has to be in a used state ... */  LWIP_ASSERT("mem_free: mem->used", mem->used);  /* ... and is now unused. */  mem->used = 0;  if (mem < lfree) { 802d5c6:	6819      	ldr	r1, [r3, #0]    return;  }  /* protect the heap from concurrent access */  LWIP_MEM_FREE_PROTECT();  /* Get the corresponding struct mem ... */  mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); 802d5c8:	f1a4 0208 	sub.w	r2, r4, #8  /* ... which has to be in a used state ... */  LWIP_ASSERT("mem_free: mem->used", mem->used);  /* ... and is now unused. */  mem->used = 0;  if (mem < lfree) { 802d5cc:	428a      	cmp	r2, r1    /* the newly freed struct is now the lowest */    lfree = mem; 802d5ce:	bf38      	it	cc 802d5d0:	601a      	strcc	r2, [r3, #0]  LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0);  /* plug hole forward */  LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED);  nmem = (struct mem *)(void *)&ram[mem->next]; 802d5d2:	4b18      	ldr	r3, [pc, #96]	; (802d634 <mem_free+0xa4>) 802d5d4:	681b      	ldr	r3, [r3, #0] 802d5d6:	1819      	adds	r1, r3, r0  if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { 802d5d8:	428a      	cmp	r2, r1 802d5da:	d011      	beq.n	802d600 <mem_free+0x70> 802d5dc:	790d      	ldrb	r5, [r1, #4] 802d5de:	b97d      	cbnz	r5, 802d600 <mem_free+0x70> 802d5e0:	4d15      	ldr	r5, [pc, #84]	; (802d638 <mem_free+0xa8>) 802d5e2:	682d      	ldr	r5, [r5, #0] 802d5e4:	42a9      	cmp	r1, r5 802d5e6:	d00b      	beq.n	802d600 <mem_free+0x70>    /* if mem->next is unused and not end of ram, combine mem and mem->next */    if (lfree == nmem) { 802d5e8:	4d15      	ldr	r5, [pc, #84]	; (802d640 <mem_free+0xb0>) 802d5ea:	682e      	ldr	r6, [r5, #0] 802d5ec:	428e      	cmp	r6, r1      lfree = mem;    }    mem->next = nmem->next; 802d5ee:	5a19      	ldrh	r1, [r3, r0]  nmem = (struct mem *)(void *)&ram[mem->next];  if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) {    /* if mem->next is unused and not end of ram, combine mem and mem->next */    if (lfree == nmem) {      lfree = mem; 802d5f0:	bf08      	it	eq 802d5f2:	602a      	streq	r2, [r5, #0]    }    mem->next = nmem->next; 802d5f4:	f824 1c08 	strh.w	r1, [r4, #-8]    ((struct mem *)(void *)&ram[nmem->next])->prev = (mem_size_t)((u8_t *)mem - ram); 802d5f8:	5a19      	ldrh	r1, [r3, r0] 802d5fa:	1859      	adds	r1, r3, r1 802d5fc:	1ad0      	subs	r0, r2, r3 802d5fe:	8048      	strh	r0, [r1, #2]  }  /* plug hole backward */  pmem = (struct mem *)(void *)&ram[mem->prev]; 802d600:	f834 0c06 	ldrh.w	r0, [r4, #-6] 802d604:	1819      	adds	r1, r3, r0  if (pmem != mem && pmem->used == 0) { 802d606:	4291      	cmp	r1, r2 802d608:	d00e      	beq.n	802d628 <mem_free+0x98> 802d60a:	790d      	ldrb	r5, [r1, #4] 802d60c:	b965      	cbnz	r5, 802d628 <mem_free+0x98>    /* if mem->prev is unused, combine mem and mem->prev */    if (lfree == mem) { 802d60e:	4d0c      	ldr	r5, [pc, #48]	; (802d640 <mem_free+0xb0>) 802d610:	682e      	ldr	r6, [r5, #0] 802d612:	4296      	cmp	r6, r2      lfree = pmem;    }    pmem->next = mem->next; 802d614:	f834 2c08 	ldrh.w	r2, [r4, #-8]  /* plug hole backward */  pmem = (struct mem *)(void *)&ram[mem->prev];  if (pmem != mem && pmem->used == 0) {    /* if mem->prev is unused, combine mem and mem->prev */    if (lfree == mem) {      lfree = pmem; 802d618:	bf08      	it	eq 802d61a:	6029      	streq	r1, [r5, #0]    }    pmem->next = mem->next; 802d61c:	521a      	strh	r2, [r3, r0]    ((struct mem *)(void *)&ram[mem->next])->prev = (mem_size_t)((u8_t *)pmem - ram); 802d61e:	f834 2c08 	ldrh.w	r2, [r4, #-8] 802d622:	189a      	adds	r2, r3, r2 802d624:	1acb      	subs	r3, r1, r3 802d626:	8053      	strh	r3, [r2, #2]  /* finally, see if prev or next are free also */  plug_holes(mem);#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT  mem_free_count = 1;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_FREE_UNPROTECT(); 802d628:	4804      	ldr	r0, [pc, #16]	; (802d63c <mem_free+0xac>)} 802d62a:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  /* finally, see if prev or next are free also */  plug_holes(mem);#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT  mem_free_count = 1;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_FREE_UNPROTECT(); 802d62e:	f007 bea7 	b.w	8035380 <sys_mutex_unlock> 802d632:	bd70      	pop	{r4, r5, r6, pc} 802d634:	20002b00 	.word	0x20002b00 802d638:	20002af8 	.word	0x20002af8 802d63c:	20002afc 	.word	0x20002afc 802d640:	20002af4 	.word	0x20002af40802d644 <mem_trim>: *         or NULL if newsize is > old size, in which case rmem is NOT touched *         or freed! */void *mem_trim(void *rmem, mem_size_t newsize){ 802d644:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}  /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */  LWIP_MEM_FREE_DECL_PROTECT();  /* Expand the size of the allocated memory region so that we can     adjust for alignment. */  newsize = LWIP_MEM_ALIGN_SIZE(newsize); 802d648:	3103      	adds	r1, #3 802d64a:	f64f 75fc 	movw	r5, #65532	; 0xfffc 802d64e:	400d      	ands	r5, r1  if(newsize < MIN_SIZE_ALIGNED) { 802d650:	2d0b      	cmp	r5, #11 *         or NULL if newsize is > old size, in which case rmem is NOT touched *         or freed! */void *mem_trim(void *rmem, mem_size_t newsize){ 802d652:	4604      	mov	r4, r0  /* Expand the size of the allocated memory region so that we can     adjust for alignment. */  newsize = LWIP_MEM_ALIGN_SIZE(newsize);  if(newsize < MIN_SIZE_ALIGNED) { 802d654:	d903      	bls.n	802d65e <mem_trim+0x1a>    /* every data block must be at least MIN_SIZE_ALIGNED long */    newsize = MIN_SIZE_ALIGNED;  }  if (newsize > MEM_SIZE_ALIGNED) { 802d656:	f5b5 5fa0 	cmp.w	r5, #5120	; 0x1400 802d65a:	d901      	bls.n	802d660 <mem_trim+0x1c> 802d65c:	e053      	b.n	802d706 <mem_trim+0xc2>     adjust for alignment. */  newsize = LWIP_MEM_ALIGN_SIZE(newsize);  if(newsize < MIN_SIZE_ALIGNED) {    /* every data block must be at least MIN_SIZE_ALIGNED long */    newsize = MIN_SIZE_ALIGNED; 802d65e:	250c      	movs	r5, #12  }  LWIP_ASSERT("mem_trim: legal memory", (u8_t *)rmem >= (u8_t *)ram &&   (u8_t *)rmem < (u8_t *)ram_end);  if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { 802d660:	f8df 80b8 	ldr.w	r8, [pc, #184]	; 802d71c <mem_trim+0xd8> 802d664:	f8d8 3000 	ldr.w	r3, [r8] 802d668:	429c      	cmp	r4, r3 802d66a:	d303      	bcc.n	802d674 <mem_trim+0x30> 802d66c:	4a28      	ldr	r2, [pc, #160]	; (802d710 <mem_trim+0xcc>) 802d66e:	6812      	ldr	r2, [r2, #0] 802d670:	4294      	cmp	r4, r2 802d672:	d304      	bcc.n	802d67e <mem_trim+0x3a>    SYS_ARCH_DECL_PROTECT(lev);    LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_trim: illegal memory\n"));    /* protect mem stats from concurrent access */    SYS_ARCH_PROTECT(lev); 802d674:	f007 fea4 	bl	80353c0 <sys_arch_protect>    MEM_STATS_INC(illegal);    SYS_ARCH_UNPROTECT(lev); 802d678:	f007 feac 	bl	80353d4 <sys_arch_unprotect>    return rmem; 802d67c:	e044      	b.n	802d708 <mem_trim+0xc4>  }  /* Get the corresponding struct mem ... */  mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); 802d67e:	f1a4 0608 	sub.w	r6, r4, #8  /* ... and its offset pointer */  ptr = (mem_size_t)((u8_t *)mem - ram);  size = mem->next - ptr - SIZEOF_STRUCT_MEM; 802d682:	f834 7c08 	ldrh.w	r7, [r4, #-8]    return rmem;  }  /* Get the corresponding struct mem ... */  mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM);  /* ... and its offset pointer */  ptr = (mem_size_t)((u8_t *)mem - ram); 802d686:	1af6      	subs	r6, r6, r3  size = mem->next - ptr - SIZEOF_STRUCT_MEM; 802d688:	3f08      	subs	r7, #8    return rmem;  }  /* Get the corresponding struct mem ... */  mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM);  /* ... and its offset pointer */  ptr = (mem_size_t)((u8_t *)mem - ram); 802d68a:	b2b6      	uxth	r6, r6  size = mem->next - ptr - SIZEOF_STRUCT_MEM; 802d68c:	1bbf      	subs	r7, r7, r6 802d68e:	b2bf      	uxth	r7, r7  LWIP_ASSERT("mem_trim can only shrink memory", newsize <= size);  if (newsize > size) { 802d690:	42bd      	cmp	r5, r7 802d692:	d838      	bhi.n	802d706 <mem_trim+0xc2>    /* not supported */    return NULL;  }  if (newsize == size) { 802d694:	d038      	beq.n	802d708 <mem_trim+0xc4>    /* No change in size, simply return */    return rmem;  }  /* protect the heap from concurrent access */  LWIP_MEM_FREE_PROTECT(); 802d696:	481f      	ldr	r0, [pc, #124]	; (802d714 <mem_trim+0xd0>) 802d698:	f007 fe66 	bl	8035368 <sys_mutex_lock>  mem2 = (struct mem *)(void *)&ram[mem->next]; 802d69c:	f8d8 3000 	ldr.w	r3, [r8] 802d6a0:	f834 1c08 	ldrh.w	r1, [r4, #-8] 802d6a4:	185a      	adds	r2, r3, r1  if(mem2->used == 0) { 802d6a6:	7910      	ldrb	r0, [r2, #4] 802d6a8:	b978      	cbnz	r0, 802d6ca <mem_trim+0x86>    /* The next struct is unused, we can simply move it at little */    mem_size_t next;    /* remember the old next pointer */    next = mem2->next; 802d6aa:	5a5f      	ldrh	r7, [r3, r1]    /* create new struct mem which is moved directly after the shrinked mem */    ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; 802d6ac:	f106 0108 	add.w	r1, r6, #8 802d6b0:	186d      	adds	r5, r5, r1    if (lfree == mem2) { 802d6b2:	4919      	ldr	r1, [pc, #100]	; (802d718 <mem_trim+0xd4>) 802d6b4:	6808      	ldr	r0, [r1, #0]    /* The next struct is unused, we can simply move it at little */    mem_size_t next;    /* remember the old next pointer */    next = mem2->next;    /* create new struct mem which is moved directly after the shrinked mem */    ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; 802d6b6:	b2ad      	uxth	r5, r5    if (lfree == mem2) { 802d6b8:	4290      	cmp	r0, r2 802d6ba:	eb03 0205 	add.w	r2, r3, r5      lfree = (struct mem *)(void *)&ram[ptr2]; 802d6be:	bf08      	it	eq 802d6c0:	600a      	streq	r2, [r1, #0]    }    mem2 = (struct mem *)(void *)&ram[ptr2];    mem2->used = 0; 802d6c2:	2100      	movs	r1, #0 802d6c4:	7111      	strb	r1, [r2, #4]    /* restore the next pointer */    mem2->next = next; 802d6c6:	535f      	strh	r7, [r3, r5] 802d6c8:	e010      	b.n	802d6ec <mem_trim+0xa8>    if (mem2->next != MEM_SIZE_ALIGNED) {      ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2;    }    MEM_STATS_DEC_USED(used, (size - newsize));    /* no need to plug holes, we've already done that */  } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) { 802d6ca:	f105 0214 	add.w	r2, r5, #20 802d6ce:	42ba      	cmp	r2, r7 802d6d0:	d815      	bhi.n	802d6fe <mem_trim+0xba>     * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty     *       region that couldn't hold data, but when mem->next gets freed,     *       the 2 regions would be combined, resulting in more free memory */    ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize;    mem2 = (struct mem *)(void *)&ram[ptr2];    if (mem2 < lfree) { 802d6d2:	4811      	ldr	r0, [pc, #68]	; (802d718 <mem_trim+0xd4>)     * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem     * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED').     * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty     *       region that couldn't hold data, but when mem->next gets freed,     *       the 2 regions would be combined, resulting in more free memory */    ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; 802d6d4:	f106 0208 	add.w	r2, r6, #8 802d6d8:	18ad      	adds	r5, r5, r2    mem2 = (struct mem *)(void *)&ram[ptr2];    if (mem2 < lfree) { 802d6da:	6807      	ldr	r7, [r0, #0]     * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem     * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED').     * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty     *       region that couldn't hold data, but when mem->next gets freed,     *       the 2 regions would be combined, resulting in more free memory */    ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; 802d6dc:	b2ad      	uxth	r5, r5    mem2 = (struct mem *)(void *)&ram[ptr2]; 802d6de:	195a      	adds	r2, r3, r5    if (mem2 < lfree) { 802d6e0:	42ba      	cmp	r2, r7      lfree = mem2; 802d6e2:	bf38      	it	cc 802d6e4:	6002      	strcc	r2, [r0, #0]    }    mem2->used = 0;    mem2->next = mem->next; 802d6e6:	5359      	strh	r1, [r3, r5]    ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize;    mem2 = (struct mem *)(void *)&ram[ptr2];    if (mem2 < lfree) {      lfree = mem2;    }    mem2->used = 0; 802d6e8:	2000      	movs	r0, #0 802d6ea:	7110      	strb	r0, [r2, #4]    mem2->next = mem->next;    mem2->prev = ptr; 802d6ec:	8056      	strh	r6, [r2, #2]    mem->next = ptr2; 802d6ee:	f824 5c08 	strh.w	r5, [r4, #-8]    if (mem2->next != MEM_SIZE_ALIGNED) { 802d6f2:	5b5a      	ldrh	r2, [r3, r5] 802d6f4:	f5b2 5fa0 	cmp.w	r2, #5120	; 0x1400      ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2; 802d6f8:	bf1c      	itt	ne 802d6fa:	189b      	addne	r3, r3, r2 802d6fc:	805d      	strhne	r5, [r3, #2]    -> the remaining space stays unused since it is too small  } */#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT  mem_free_count = 1;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_FREE_UNPROTECT(); 802d6fe:	4805      	ldr	r0, [pc, #20]	; (802d714 <mem_trim+0xd0>) 802d700:	f007 fe3e 	bl	8035380 <sys_mutex_unlock>  return rmem; 802d704:	e000      	b.n	802d708 <mem_trim+0xc4>    /* every data block must be at least MIN_SIZE_ALIGNED long */    newsize = MIN_SIZE_ALIGNED;  }  if (newsize > MEM_SIZE_ALIGNED) {    return NULL; 802d706:	2400      	movs	r4, #0#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT  mem_free_count = 1;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_FREE_UNPROTECT();  return rmem;} 802d708:	4620      	mov	r0, r4 802d70a:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802d70e:	bf00      	nop 802d710:	20002af8 	.word	0x20002af8 802d714:	20002afc 	.word	0x20002afc 802d718:	20002af4 	.word	0x20002af4 802d71c:	20002b00 	.word	0x20002b000802d720 <mem_malloc>: * * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). */void *mem_malloc(mem_size_t size){ 802d720:	b5f8      	push	{r3, r4, r5, r6, r7, lr}#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT  u8_t local_mem_free_count = 0;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_ALLOC_DECL_PROTECT();  if (size == 0) { 802d722:	2800      	cmp	r0, #0 802d724:	d056      	beq.n	802d7d4 <mem_malloc+0xb4>    return NULL;  }  /* Expand the size of the allocated memory region so that we can     adjust for alignment. */  size = LWIP_MEM_ALIGN_SIZE(size); 802d726:	3003      	adds	r0, #3 802d728:	f64f 74fc 	movw	r4, #65532	; 0xfffc 802d72c:	4004      	ands	r4, r0  if(size < MIN_SIZE_ALIGNED) { 802d72e:	2c0b      	cmp	r4, #11 802d730:	d903      	bls.n	802d73a <mem_malloc+0x1a>    /* every data block must be at least MIN_SIZE_ALIGNED long */    size = MIN_SIZE_ALIGNED;  }  if (size > MEM_SIZE_ALIGNED) { 802d732:	f5b4 5fa0 	cmp.w	r4, #5120	; 0x1400 802d736:	d901      	bls.n	802d73c <mem_malloc+0x1c> 802d738:	e04b      	b.n	802d7d2 <mem_malloc+0xb2>     adjust for alignment. */  size = LWIP_MEM_ALIGN_SIZE(size);  if(size < MIN_SIZE_ALIGNED) {    /* every data block must be at least MIN_SIZE_ALIGNED long */    size = MIN_SIZE_ALIGNED; 802d73a:	240c      	movs	r4, #12  if (size > MEM_SIZE_ALIGNED) {    return NULL;  }  /* protect the heap from concurrent access */  sys_mutex_lock(&mem_mutex); 802d73c:	4826      	ldr	r0, [pc, #152]	; (802d7d8 <mem_malloc+0xb8>) 802d73e:	f007 fe13 	bl	8035368 <sys_mutex_lock>#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */    /* Scan through the heap searching for a free block that is big enough,     * beginning with the lowest free block.     */    for (ptr = (mem_size_t)((u8_t *)lfree - ram); ptr < MEM_SIZE_ALIGNED - size; 802d742:	4b26      	ldr	r3, [pc, #152]	; (802d7dc <mem_malloc+0xbc>) 802d744:	6819      	ldr	r1, [r3, #0] 802d746:	4b26      	ldr	r3, [pc, #152]	; (802d7e0 <mem_malloc+0xc0>) 802d748:	681a      	ldr	r2, [r3, #0] 802d74a:	1a8b      	subs	r3, r1, r2 802d74c:	b29b      	uxth	r3, r3 802d74e:	f5c4 5ea0 	rsb	lr, r4, #5120	; 0x1400 802d752:	e039      	b.n	802d7c8 <mem_malloc+0xa8>         ptr = ((struct mem *)(void *)&ram[ptr])->next) {      mem = (struct mem *)(void *)&ram[ptr]; 802d754:	18d5      	adds	r5, r2, r3        local_mem_free_count = 1;        break;      }#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */      if ((!mem->used) && 802d756:	792f      	ldrb	r7, [r5, #4] 802d758:	2f00      	cmp	r7, #0 802d75a:	d134      	bne.n	802d7c6 <mem_malloc+0xa6>          (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) { 802d75c:	5ad6      	ldrh	r6, [r2, r3] 802d75e:	f1a6 0008 	sub.w	r0, r6, #8 802d762:	1ac0      	subs	r0, r0, r3        local_mem_free_count = 1;        break;      }#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */      if ((!mem->used) && 802d764:	42a0      	cmp	r0, r4 802d766:	d32e      	bcc.n	802d7c6 <mem_malloc+0xa6>          (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) {        /* mem is not used and at least perfect fit is possible:         * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */        if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) { 802d768:	f104 0e14 	add.w	lr, r4, #20 802d76c:	4570      	cmp	r0, lr 802d76e:	d310      	bcc.n	802d792 <mem_malloc+0x72>           * struct mem would fit in but no data between mem2 and mem2->next           * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty           *       region that couldn't hold data, but when mem->next gets freed,           *       the 2 regions would be combined, resulting in more free memory           */          ptr2 = ptr + SIZEOF_STRUCT_MEM + size; 802d770:	3408      	adds	r4, #8 802d772:	191c      	adds	r4, r3, r4 802d774:	b2a4      	uxth	r4, r4          /* create mem2 struct */          mem2 = (struct mem *)(void *)&ram[ptr2]; 802d776:	1910      	adds	r0, r2, r4          mem2->used = 0;          mem2->next = mem->next; 802d778:	5316      	strh	r6, [r2, r4]          mem2->prev = ptr; 802d77a:	8043      	strh	r3, [r0, #2]          /* and insert it between mem and mem->next */          mem->next = ptr2; 802d77c:	802c      	strh	r4, [r5, #0]          mem->used = 1; 802d77e:	2301      	movs	r3, #1           *       the 2 regions would be combined, resulting in more free memory           */          ptr2 = ptr + SIZEOF_STRUCT_MEM + size;          /* create mem2 struct */          mem2 = (struct mem *)(void *)&ram[ptr2];          mem2->used = 0; 802d780:	7107      	strb	r7, [r0, #4]          mem2->next = mem->next;          mem2->prev = ptr;          /* and insert it between mem and mem->next */          mem->next = ptr2;          mem->used = 1; 802d782:	712b      	strb	r3, [r5, #4]          if (mem2->next != MEM_SIZE_ALIGNED) { 802d784:	5b13      	ldrh	r3, [r2, r4] 802d786:	f5b3 5fa0 	cmp.w	r3, #5120	; 0x1400 802d78a:	d004      	beq.n	802d796 <mem_malloc+0x76>            ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2; 802d78c:	18d2      	adds	r2, r2, r3 802d78e:	8054      	strh	r4, [r2, #2] 802d790:	e001      	b.n	802d796 <mem_malloc+0x76>           * take care of this).           * -> near fit or excact fit: do not split, no mem2 creation           * also can't move mem->next directly behind mem, since mem->next           * will always be used at this point!           */          mem->used = 1; 802d792:	2301      	movs	r3, #1 802d794:	712b      	strb	r3, [r5, #4]          MEM_STATS_INC_USED(used, mem->next - (mem_size_t)((u8_t *)mem - ram));        }#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXTmem_malloc_adjust_lfree:#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */        if (mem == lfree) { 802d796:	428d      	cmp	r5, r1 802d798:	d10f      	bne.n	802d7ba <mem_malloc+0x9a>          struct mem *cur = lfree;          /* Find next free block after mem and update lowest free pointer */          while (cur->used && cur != ram_end) { 802d79a:	4b12      	ldr	r3, [pc, #72]	; (802d7e4 <mem_malloc+0xc4>) 802d79c:	681a      	ldr	r2, [r3, #0]              /* If mem_free or mem_trim have run, we have to restart since they                 could have altered our current struct mem or lfree. */              goto mem_malloc_adjust_lfree;            }#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */            cur = (struct mem *)(void *)&ram[cur->next]; 802d79e:	4b10      	ldr	r3, [pc, #64]	; (802d7e0 <mem_malloc+0xc0>) 802d7a0:	6819      	ldr	r1, [r3, #0] 802d7a2:	462b      	mov	r3, r5 802d7a4:	e001      	b.n	802d7aa <mem_malloc+0x8a> 802d7a6:	881b      	ldrh	r3, [r3, #0] 802d7a8:	18cb      	adds	r3, r1, r3mem_malloc_adjust_lfree:#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */        if (mem == lfree) {          struct mem *cur = lfree;          /* Find next free block after mem and update lowest free pointer */          while (cur->used && cur != ram_end) { 802d7aa:	7918      	ldrb	r0, [r3, #4] 802d7ac:	b910      	cbnz	r0, 802d7b4 <mem_malloc+0x94>              goto mem_malloc_adjust_lfree;            }#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */            cur = (struct mem *)(void *)&ram[cur->next];          }          lfree = cur; 802d7ae:	4a0b      	ldr	r2, [pc, #44]	; (802d7dc <mem_malloc+0xbc>) 802d7b0:	6013      	str	r3, [r2, #0] 802d7b2:	e002      	b.n	802d7ba <mem_malloc+0x9a>mem_malloc_adjust_lfree:#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */        if (mem == lfree) {          struct mem *cur = lfree;          /* Find next free block after mem and update lowest free pointer */          while (cur->used && cur != ram_end) { 802d7b4:	4293      	cmp	r3, r2 802d7b6:	d1f6      	bne.n	802d7a6 <mem_malloc+0x86> 802d7b8:	e7f9      	b.n	802d7ae <mem_malloc+0x8e>          }          lfree = cur;          LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used)));        }        LWIP_MEM_ALLOC_UNPROTECT();        sys_mutex_unlock(&mem_mutex); 802d7ba:	4807      	ldr	r0, [pc, #28]	; (802d7d8 <mem_malloc+0xb8>) 802d7bc:	f007 fde0 	bl	8035380 <sys_mutex_unlock>        LWIP_ASSERT("mem_malloc: allocated memory properly aligned.",         ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0);        LWIP_ASSERT("mem_malloc: sanity check alignment",          (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0);        return (u8_t *)mem + SIZEOF_STRUCT_MEM; 802d7c0:	f105 0008 	add.w	r0, r5, #8 802d7c4:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}    /* Scan through the heap searching for a free block that is big enough,     * beginning with the lowest free block.     */    for (ptr = (mem_size_t)((u8_t *)lfree - ram); ptr < MEM_SIZE_ALIGNED - size;         ptr = ((struct mem *)(void *)&ram[ptr])->next) { 802d7c6:	882b      	ldrh	r3, [r5, #0]#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */    /* Scan through the heap searching for a free block that is big enough,     * beginning with the lowest free block.     */    for (ptr = (mem_size_t)((u8_t *)lfree - ram); ptr < MEM_SIZE_ALIGNED - size; 802d7c8:	4573      	cmp	r3, lr 802d7ca:	dbc3      	blt.n	802d754 <mem_malloc+0x34>  } while(local_mem_free_count != 0);#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size));  MEM_STATS_INC(err);  LWIP_MEM_ALLOC_UNPROTECT();  sys_mutex_unlock(&mem_mutex); 802d7cc:	4802      	ldr	r0, [pc, #8]	; (802d7d8 <mem_malloc+0xb8>) 802d7ce:	f007 fdd7 	bl	8035380 <sys_mutex_unlock>  u8_t local_mem_free_count = 0;#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */  LWIP_MEM_ALLOC_DECL_PROTECT();  if (size == 0) {    return NULL; 802d7d2:	2000      	movs	r0, #0  LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size));  MEM_STATS_INC(err);  LWIP_MEM_ALLOC_UNPROTECT();  sys_mutex_unlock(&mem_mutex);  return NULL;} 802d7d4:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802d7d6:	bf00      	nop 802d7d8:	20002afc 	.word	0x20002afc 802d7dc:	20002af4 	.word	0x20002af4 802d7e0:	20002b00 	.word	0x20002b00 802d7e4:	20002af8 	.word	0x20002af80802d7e8 <memp_init>:    MEMP_STATS_AVAIL(err, i, 0);    MEMP_STATS_AVAIL(avail, i, memp_num[i]);  }#if !MEMP_SEPARATE_POOLS  memp = (struct memp *)LWIP_MEM_ALIGN(memp_memory); 802d7e8:	4a0e      	ldr	r2, [pc, #56]	; (802d824 <memp_init+0x3c>) 802d7ea:	490f      	ldr	r1, [pc, #60]	; (802d828 <memp_init+0x40>) *  * Carves out memp_memory into linked lists for each pool-type. */voidmemp_init(void){ 802d7ec:	b5f0      	push	{r4, r5, r6, r7, lr}    MEMP_STATS_AVAIL(err, i, 0);    MEMP_STATS_AVAIL(avail, i, memp_num[i]);  }#if !MEMP_SEPARATE_POOLS  memp = (struct memp *)LWIP_MEM_ALIGN(memp_memory); 802d7ee:	2300      	movs	r3, #0    memp_tab[i] = NULL;#if MEMP_SEPARATE_POOLS    memp = (struct memp*)memp_bases[i];#endif /* MEMP_SEPARATE_POOLS */    /* create a linked list of memp elements */    for (j = 0; j < memp_num[i]; ++j) { 802d7f0:	4e0e      	ldr	r6, [pc, #56]	; (802d82c <memp_init+0x44>)      memp->next = memp_tab[i];      memp_tab[i] = memp;      memp = (struct memp *)(void *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i] 802d7f2:	4f0f      	ldr	r7, [pc, #60]	; (802d830 <memp_init+0x48>)    MEMP_STATS_AVAIL(err, i, 0);    MEMP_STATS_AVAIL(avail, i, memp_num[i]);  }#if !MEMP_SEPARATE_POOLS  memp = (struct memp *)LWIP_MEM_ALIGN(memp_memory); 802d7f4:	f022 0203 	bic.w	r2, r2, #3#endif /* !MEMP_SEPARATE_POOLS */  /* for every pool: */  for (i = 0; i < MEMP_MAX; ++i) {    memp_tab[i] = NULL; 802d7f8:	461d      	mov	r5, r3 802d7fa:	f841 5b04 	str.w	r5, [r1], #4#if MEMP_SEPARATE_POOLS    memp = (struct memp*)memp_bases[i];#endif /* MEMP_SEPARATE_POOLS */    /* create a linked list of memp elements */    for (j = 0; j < memp_num[i]; ++j) { 802d7fe:	f833 c006 	ldrh.w	ip, [r3, r6] 802d802:	2000      	movs	r0, #0 802d804:	e008      	b.n	802d818 <memp_init+0x30>      memp->next = memp_tab[i]; 802d806:	f851 4c04 	ldr.w	r4, [r1, #-4] 802d80a:	6014      	str	r4, [r2, #0]      memp_tab[i] = memp;      memp = (struct memp *)(void *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i] 802d80c:	5bdc      	ldrh	r4, [r3, r7]    memp = (struct memp*)memp_bases[i];#endif /* MEMP_SEPARATE_POOLS */    /* create a linked list of memp elements */    for (j = 0; j < memp_num[i]; ++j) {      memp->next = memp_tab[i];      memp_tab[i] = memp; 802d80e:	f841 2c04 	str.w	r2, [r1, #-4]    memp_tab[i] = NULL;#if MEMP_SEPARATE_POOLS    memp = (struct memp*)memp_bases[i];#endif /* MEMP_SEPARATE_POOLS */    /* create a linked list of memp elements */    for (j = 0; j < memp_num[i]; ++j) { 802d812:	3001      	adds	r0, #1      memp->next = memp_tab[i];      memp_tab[i] = memp;      memp = (struct memp *)(void *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i] 802d814:	1912      	adds	r2, r2, r4    memp_tab[i] = NULL;#if MEMP_SEPARATE_POOLS    memp = (struct memp*)memp_bases[i];#endif /* MEMP_SEPARATE_POOLS */    /* create a linked list of memp elements */    for (j = 0; j < memp_num[i]; ++j) { 802d816:	b280      	uxth	r0, r0 802d818:	4560      	cmp	r0, ip 802d81a:	d1f4      	bne.n	802d806 <memp_init+0x1e> 802d81c:	3302      	adds	r3, #2#if !MEMP_SEPARATE_POOLS  memp = (struct memp *)LWIP_MEM_ALIGN(memp_memory);#endif /* !MEMP_SEPARATE_POOLS */  /* for every pool: */  for (i = 0; i < MEMP_MAX; ++i) { 802d81e:	2b20      	cmp	r3, #32 802d820:	d1eb      	bne.n	802d7fa <memp_init+0x12>#if MEMP_OVERFLOW_CHECK  memp_overflow_init();  /* check everything a first time to see if it worked */  memp_overflow_check_all();#endif /* MEMP_OVERFLOW_CHECK */} 802d822:	bdf0      	pop	{r4, r5, r6, r7, pc} 802d824:	20002b07 	.word	0x20002b07 802d828:	2000e144 	.word	0x2000e144 802d82c:	0804134c 	.word	0x0804134c 802d830:	0804136c 	.word	0x0804136c0802d834 <memp_malloc>:#endif{  struct memp *memp;  SYS_ARCH_DECL_PROTECT(old_level);   LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); 802d834:	280f      	cmp	r0, #15#if !MEMP_OVERFLOW_CHECKmemp_malloc(memp_t type)#elsememp_malloc_fn(memp_t type, const char* file, const int line)#endif{ 802d836:	b538      	push	{r3, r4, r5, lr} 802d838:	4605      	mov	r5, r0  struct memp *memp;  SYS_ARCH_DECL_PROTECT(old_level);   LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); 802d83a:	d80b      	bhi.n	802d854 <memp_malloc+0x20>  SYS_ARCH_PROTECT(old_level); 802d83c:	f007 fdc0 	bl	80353c0 <sys_arch_protect>#if MEMP_OVERFLOW_CHECK >= 2  memp_overflow_check_all();#endif /* MEMP_OVERFLOW_CHECK >= 2 */  memp = memp_tab[type]; 802d840:	4b06      	ldr	r3, [pc, #24]	; (802d85c <memp_malloc+0x28>) 802d842:	f853 4025 	ldr.w	r4, [r3, r5, lsl #2]    if (memp != NULL) { 802d846:	b114      	cbz	r4, 802d84e <memp_malloc+0x1a>    memp_tab[type] = memp->next; 802d848:	6822      	ldr	r2, [r4, #0] 802d84a:	f843 2025 	str.w	r2, [r3, r5, lsl #2]  } else {    LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", memp_desc[type]));    MEMP_STATS_INC(err, type);  }  SYS_ARCH_UNPROTECT(old_level); 802d84e:	f007 fdc1 	bl	80353d4 <sys_arch_unprotect>  return memp; 802d852:	e000      	b.n	802d856 <memp_malloc+0x22>#endif{  struct memp *memp;  SYS_ARCH_DECL_PROTECT(old_level);   LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); 802d854:	2400      	movs	r4, #0  }  SYS_ARCH_UNPROTECT(old_level);  return memp;} 802d856:	4620      	mov	r0, r4 802d858:	bd38      	pop	{r3, r4, r5, pc} 802d85a:	bf00      	nop 802d85c:	2000e144 	.word	0x2000e1440802d860 <memp_free>: * @param type the pool where to put mem * @param mem the memp element to free */voidmemp_free(memp_t type, void *mem){ 802d860:	b538      	push	{r3, r4, r5, lr} 802d862:	4605      	mov	r5, r0  struct memp *memp;  SYS_ARCH_DECL_PROTECT(old_level);  if (mem == NULL) { 802d864:	460c      	mov	r4, r1 802d866:	b159      	cbz	r1, 802d880 <memp_free+0x20>  LWIP_ASSERT("memp_free: mem properly aligned",                ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0);  memp = (struct memp *)(void *)((u8_t*)mem - MEMP_SIZE);  SYS_ARCH_PROTECT(old_level); 802d868:	f007 fdaa 	bl	80353c0 <sys_arch_protect>#endif /* MEMP_OVERFLOW_CHECK >= 2 */#endif /* MEMP_OVERFLOW_CHECK */  MEMP_STATS_DEC(used, type);     memp->next = memp_tab[type];  802d86c:	4b05      	ldr	r3, [pc, #20]	; (802d884 <memp_free+0x24>) 802d86e:	f853 2025 	ldr.w	r2, [r3, r5, lsl #2] 802d872:	6022      	str	r2, [r4, #0]  memp_tab[type] = memp; 802d874:	f843 4025 	str.w	r4, [r3, r5, lsl #2]#if MEMP_SANITY_CHECK  LWIP_ASSERT("memp sanity", memp_sanity());#endif /* MEMP_SANITY_CHECK */  SYS_ARCH_UNPROTECT(old_level);} 802d878:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}#if MEMP_SANITY_CHECK  LWIP_ASSERT("memp sanity", memp_sanity());#endif /* MEMP_SANITY_CHECK */  SYS_ARCH_UNPROTECT(old_level); 802d87c:	f007 bdaa 	b.w	80353d4 <sys_arch_unprotect> 802d880:	bd38      	pop	{r3, r4, r5, pc} 802d882:	bf00      	nop 802d884:	2000e144 	.word	0x2000e1440802d888 <netif_init>:}#endif /* LWIP_HAVE_LOOPIF */voidnetif_init(void){ 802d888:	4770      	bx	lr 802d88a:	0000      	movs	r0, r00802d88c <netif_set_ipaddr>: * @note call netif_set_addr() if you also want to change netmask and * default gateway */voidnetif_set_ipaddr(struct netif *netif, ip_addr_t *ipaddr){ 802d88c:	b570      	push	{r4, r5, r6, lr} 802d88e:	4604      	mov	r4, r0#if LWIP_TCP  struct tcp_pcb *pcb;  struct tcp_pcb_listen *lpcb;  /* address is actually being changed? */  if (ipaddr && (ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) { 802d890:	460d      	mov	r5, r1 802d892:	b941      	cbnz	r1, 802d8a6 <netif_set_ipaddr+0x1a>        ip_addr_set(&(lpcb->local_ip), ipaddr);      }    }  }#endif  snmp_delete_ipaddridx_tree(netif); 802d894:	4620      	mov	r0, r4 802d896:	f004 fdb5 	bl	8032404 <snmp_delete_ipaddridx_tree>  snmp_delete_iprteidx_tree(0,netif); 802d89a:	2000      	movs	r0, #0 802d89c:	4621      	mov	r1, r4 802d89e:	f004 fe47 	bl	8032530 <snmp_delete_iprteidx_tree>  /* set new IP address to netif */  ip_addr_set(&(netif->ip_addr), ipaddr); 802d8a2:	b9fd      	cbnz	r5, 802d8e4 <netif_set_ipaddr+0x58> 802d8a4:	e01f      	b.n	802d8e6 <netif_set_ipaddr+0x5a>#if LWIP_TCP  struct tcp_pcb *pcb;  struct tcp_pcb_listen *lpcb;  /* address is actually being changed? */  if (ipaddr && (ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) { 802d8a6:	680a      	ldr	r2, [r1, #0] 802d8a8:	6843      	ldr	r3, [r0, #4] 802d8aa:	429a      	cmp	r2, r3 802d8ac:	d0f2      	beq.n	802d894 <netif_set_ipaddr+0x8>    /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */    LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n"));    pcb = tcp_active_pcbs; 802d8ae:	4b13      	ldr	r3, [pc, #76]	; (802d8fc <netif_set_ipaddr+0x70>) 802d8b0:	6818      	ldr	r0, [r3, #0]    while (pcb != NULL) { 802d8b2:	e007      	b.n	802d8c4 <netif_set_ipaddr+0x38>      /* PCB bound to current local interface address? */      if (ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr)) 802d8b4:	6802      	ldr	r2, [r0, #0] 802d8b6:	6863      	ldr	r3, [r4, #4] 802d8b8:	68c6      	ldr	r6, [r0, #12] 802d8ba:	429a      	cmp	r2, r3 802d8bc:	d101      	bne.n	802d8c2 <netif_set_ipaddr+0x36>#endif /* LWIP_AUTOIP */        ) {        /* this connection must be aborted */        struct tcp_pcb *next = pcb->next;        LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb));        tcp_abort(pcb); 802d8be:	f000 fd89 	bl	802e3d4 <tcp_abort>        pcb = next;      } else {        pcb = pcb->next; 802d8c2:	4630      	mov	r0, r6  /* address is actually being changed? */  if (ipaddr && (ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) {    /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */    LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n"));    pcb = tcp_active_pcbs;    while (pcb != NULL) { 802d8c4:	2800      	cmp	r0, #0 802d8c6:	d1f5      	bne.n	802d8b4 <netif_set_ipaddr+0x28>        pcb = next;      } else {        pcb = pcb->next;      }    }    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { 802d8c8:	4b0d      	ldr	r3, [pc, #52]	; (802d900 <netif_set_ipaddr+0x74>) 802d8ca:	681b      	ldr	r3, [r3, #0] 802d8cc:	e007      	b.n	802d8de <netif_set_ipaddr+0x52>      /* PCB bound to current local interface address? */      if ((!(ip_addr_isany(&(lpcb->local_ip)))) && 802d8ce:	681a      	ldr	r2, [r3, #0] 802d8d0:	b122      	cbz	r2, 802d8dc <netif_set_ipaddr+0x50> 802d8d2:	6861      	ldr	r1, [r4, #4] 802d8d4:	428a      	cmp	r2, r1          (ip_addr_cmp(&(lpcb->local_ip), &(netif->ip_addr)))) {        /* The PCB is listening to the old ipaddr and         * is set to listen to the new one instead */        ip_addr_set(&(lpcb->local_ip), ipaddr); 802d8d6:	bf04      	itt	eq 802d8d8:	682a      	ldreq	r2, [r5, #0] 802d8da:	601a      	streq	r2, [r3, #0]        pcb = next;      } else {        pcb = pcb->next;      }    }    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { 802d8dc:	68db      	ldr	r3, [r3, #12] 802d8de:	2b00      	cmp	r3, #0 802d8e0:	d1f5      	bne.n	802d8ce <netif_set_ipaddr+0x42> 802d8e2:	e7d7      	b.n	802d894 <netif_set_ipaddr+0x8>  }#endif  snmp_delete_ipaddridx_tree(netif);  snmp_delete_iprteidx_tree(0,netif);  /* set new IP address to netif */  ip_addr_set(&(netif->ip_addr), ipaddr); 802d8e4:	682d      	ldr	r5, [r5, #0]  snmp_insert_ipaddridx_tree(netif); 802d8e6:	4620      	mov	r0, r4  }#endif  snmp_delete_ipaddridx_tree(netif);  snmp_delete_iprteidx_tree(0,netif);  /* set new IP address to netif */  ip_addr_set(&(netif->ip_addr), ipaddr); 802d8e8:	6065      	str	r5, [r4, #4]  snmp_insert_ipaddridx_tree(netif); 802d8ea:	f004 fd49 	bl	8032380 <snmp_insert_ipaddridx_tree>  snmp_insert_iprteidx_tree(0,netif); 802d8ee:	2000      	movs	r0, #0 802d8f0:	4621      	mov	r1, r4    netif->name[0], netif->name[1],    ip4_addr1_16(&netif->ip_addr),    ip4_addr2_16(&netif->ip_addr),    ip4_addr3_16(&netif->ip_addr),    ip4_addr4_16(&netif->ip_addr)));} 802d8f2:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}  snmp_delete_ipaddridx_tree(netif);  snmp_delete_iprteidx_tree(0,netif);  /* set new IP address to netif */  ip_addr_set(&(netif->ip_addr), ipaddr);  snmp_insert_ipaddridx_tree(netif);  snmp_insert_iprteidx_tree(0,netif); 802d8f6:	f004 bdcf 	b.w	8032498 <snmp_insert_iprteidx_tree> 802d8fa:	bf00      	nop 802d8fc:	2001107c 	.word	0x2001107c 802d900:	20011084 	.word	0x200110840802d904 <netif_set_gw>: * @note call netif_set_addr() if you also want to change ip address and netmask */voidnetif_set_gw(struct netif *netif, ip_addr_t *gw){  ip_addr_set(&(netif->gw), gw); 802d904:	b101      	cbz	r1, 802d908 <netif_set_gw+0x4> 802d906:	6809      	ldr	r1, [r1, #0] 802d908:	60c1      	str	r1, [r0, #12] 802d90a:	4770      	bx	lr0802d90c <netif_set_netmask>: * @note call netif_set_addr() if you also want to change ip address and * default gateway */voidnetif_set_netmask(struct netif *netif, ip_addr_t *netmask){ 802d90c:	b538      	push	{r3, r4, r5, lr} 802d90e:	4604      	mov	r4, r0 802d910:	460d      	mov	r5, r1  snmp_delete_iprteidx_tree(0, netif); 802d912:	2000      	movs	r0, #0 802d914:	4621      	mov	r1, r4 802d916:	f004 fe0b 	bl	8032530 <snmp_delete_iprteidx_tree>  /* set new netmask to netif */  ip_addr_set(&(netif->netmask), netmask); 802d91a:	b105      	cbz	r5, 802d91e <netif_set_netmask+0x12> 802d91c:	682d      	ldr	r5, [r5, #0]  snmp_insert_iprteidx_tree(0, netif); 802d91e:	2000      	movs	r0, #0 802d920:	4621      	mov	r1, r4voidnetif_set_netmask(struct netif *netif, ip_addr_t *netmask){  snmp_delete_iprteidx_tree(0, netif);  /* set new netmask to netif */  ip_addr_set(&(netif->netmask), netmask); 802d922:	60a5      	str	r5, [r4, #8]    netif->name[0], netif->name[1],    ip4_addr1_16(&netif->netmask),    ip4_addr2_16(&netif->netmask),    ip4_addr3_16(&netif->netmask),    ip4_addr4_16(&netif->netmask)));} 802d924:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}netif_set_netmask(struct netif *netif, ip_addr_t *netmask){  snmp_delete_iprteidx_tree(0, netif);  /* set new netmask to netif */  ip_addr_set(&(netif->netmask), netmask);  snmp_insert_iprteidx_tree(0, netif); 802d928:	f004 bdb6 	b.w	8032498 <snmp_insert_iprteidx_tree>0802d92c <netif_set_addr>: * @param gw the new default gateway */voidnetif_set_addr(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask,    ip_addr_t *gw){ 802d92c:	b570      	push	{r4, r5, r6, lr} 802d92e:	4605      	mov	r5, r0 802d930:	4616      	mov	r6, r2 802d932:	461c      	mov	r4, r3  netif_set_ipaddr(netif, ipaddr); 802d934:	f7ff ffaa 	bl	802d88c <netif_set_ipaddr>  netif_set_netmask(netif, netmask); 802d938:	4628      	mov	r0, r5 802d93a:	4631      	mov	r1, r6 802d93c:	f7ff ffe6 	bl	802d90c <netif_set_netmask> * @note call netif_set_addr() if you also want to change ip address and netmask */voidnetif_set_gw(struct netif *netif, ip_addr_t *gw){  ip_addr_set(&(netif->gw), gw); 802d940:	b104      	cbz	r4, 802d944 <netif_set_addr+0x18> 802d942:	6824      	ldr	r4, [r4, #0] 802d944:	60ec      	str	r4, [r5, #12] 802d946:	bd70      	pop	{r4, r5, r6, pc}0802d948 <netif_add>: * @return netif, or NULL if failed. */struct netif *netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask,  ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input){ 802d948:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  netif->loop_first = NULL;  netif->loop_last = NULL;#endif /* ENABLE_LOOPBACK */  /* remember netif specific state information data */  netif->state = state; 802d94a:	9e06      	ldr	r6, [sp, #24] 802d94c:	61c6      	str	r6, [r0, #28]  netif->num = netif_num++; 802d94e:	4e10      	ldr	r6, [pc, #64]	; (802d990 <netif_add+0x48>) 802d950:	7837      	ldrb	r7, [r6, #0] 802d952:	f880 7030 	strb.w	r7, [r0, #48]	; 0x30 802d956:	3701      	adds	r7, #1 802d958:	7037      	strb	r7, [r6, #0]  netif->input = input; 802d95a:	9e08      	ldr	r6, [sp, #32]{  LWIP_ASSERT("No init function given", init != NULL);  /* reset new interface configuration state */  ip_addr_set_zero(&netif->ip_addr); 802d95c:	2500      	movs	r5, #0 * @return netif, or NULL if failed. */struct netif *netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask,  ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input){ 802d95e:	4604      	mov	r4, r0  LWIP_ASSERT("No init function given", init != NULL);  /* reset new interface configuration state */  ip_addr_set_zero(&netif->ip_addr); 802d960:	6045      	str	r5, [r0, #4]  ip_addr_set_zero(&netif->netmask); 802d962:	6085      	str	r5, [r0, #8]  ip_addr_set_zero(&netif->gw); 802d964:	60c5      	str	r5, [r0, #12]  netif->flags = 0; 802d966:	f880 502d 	strb.w	r5, [r0, #45]	; 0x2d#if LWIP_DHCP  /* netif not under DHCP control by default */  netif->dhcp = NULL; 802d96a:	6205      	str	r5, [r0, #32]#endif /* ENABLE_LOOPBACK */  /* remember netif specific state information data */  netif->state = state;  netif->num = netif_num++;  netif->input = input; 802d96c:	6106      	str	r6, [r0, #16]  NETIF_SET_HWADDRHINT(netif, NULL);#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS  netif->loop_cnt_current = 0;#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */  netif_set_addr(netif, ipaddr, netmask, gw); 802d96e:	f7ff ffdd 	bl	802d92c <netif_set_addr>  /* call user specified initialization function for netif */  if (init(netif) != ERR_OK) { 802d972:	4620      	mov	r0, r4 802d974:	9b07      	ldr	r3, [sp, #28] 802d976:	4798      	blx	r3 802d978:	b930      	cbnz	r0, 802d988 <netif_add+0x40>    return NULL;  }  /* add this netif to the list */  netif->next = netif_list; 802d97a:	4b06      	ldr	r3, [pc, #24]	; (802d994 <netif_add+0x4c>) 802d97c:	681a      	ldr	r2, [r3, #0] 802d97e:	6022      	str	r2, [r4, #0]  netif_list = netif; 802d980:	601c      	str	r4, [r3, #0]  snmp_inc_iflist(); 802d982:	f004 fbe1 	bl	8032148 <snmp_inc_iflist>  LWIP_DEBUGF(NETIF_DEBUG, (" netmask "));  ip_addr_debug_print(NETIF_DEBUG, netmask);  LWIP_DEBUGF(NETIF_DEBUG, (" gw "));  ip_addr_debug_print(NETIF_DEBUG, gw);  LWIP_DEBUGF(NETIF_DEBUG, ("\n"));  return netif; 802d986:	e000      	b.n	802d98a <netif_add+0x42>  netif_set_addr(netif, ipaddr, netmask, gw);  /* call user specified initialization function for netif */  if (init(netif) != ERR_OK) {    return NULL; 802d988:	462c      	mov	r4, r5  ip_addr_debug_print(NETIF_DEBUG, netmask);  LWIP_DEBUGF(NETIF_DEBUG, (" gw "));  ip_addr_debug_print(NETIF_DEBUG, gw);  LWIP_DEBUGF(NETIF_DEBUG, ("\n"));  return netif;} 802d98a:	4620      	mov	r0, r4 802d98c:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802d98e:	bf00      	nop 802d990:	2000e184 	.word	0x2000e184 802d994:	20011070 	.word	0x200110700802d998 <netif_set_default>: * * @param netif the default network interface */voidnetif_set_default(struct netif *netif){ 802d998:	b510      	push	{r4, lr}  if (netif == NULL) { 802d99a:	4604      	mov	r4, r0    /* remove default route */    snmp_delete_iprteidx_tree(1, netif); 802d99c:	4621      	mov	r1, r4 802d99e:	2001      	movs	r0, #1 * @param netif the default network interface */voidnetif_set_default(struct netif *netif){  if (netif == NULL) { 802d9a0:	b914      	cbnz	r4, 802d9a8 <netif_set_default+0x10>    /* remove default route */    snmp_delete_iprteidx_tree(1, netif); 802d9a2:	f004 fdc5 	bl	8032530 <snmp_delete_iprteidx_tree> 802d9a6:	e001      	b.n	802d9ac <netif_set_default+0x14>  } else {    /* install default route */    snmp_insert_iprteidx_tree(1, netif); 802d9a8:	f004 fd76 	bl	8032498 <snmp_insert_iprteidx_tree>  }  netif_default = netif; 802d9ac:	4b01      	ldr	r3, [pc, #4]	; (802d9b4 <netif_set_default+0x1c>) 802d9ae:	601c      	str	r4, [r3, #0] 802d9b0:	bd10      	pop	{r4, pc} 802d9b2:	bf00      	nop 802d9b4:	20011074 	.word	0x200110740802d9b8 <netif_set_up>: * up once configured. *  * @see dhcp_start() */ void netif_set_up(struct netif *netif){ 802d9b8:	b510      	push	{r4, lr}  if (!(netif->flags & NETIF_FLAG_UP)) { 802d9ba:	f890 302d 	ldrb.w	r3, [r0, #45]	; 0x2d 802d9be:	07da      	lsls	r2, r3, #31 * up once configured. *  * @see dhcp_start() */ void netif_set_up(struct netif *netif){ 802d9c0:	4604      	mov	r4, r0  if (!(netif->flags & NETIF_FLAG_UP)) { 802d9c2:	d412      	bmi.n	802d9ea <netif_set_up+0x32>    netif->flags |= NETIF_FLAG_UP; 802d9c4:	f043 0301 	orr.w	r3, r3, #1 802d9c8:	f880 302d 	strb.w	r3, [r0, #45]	; 0x2d    #if LWIP_SNMP    snmp_get_sysuptime(&netif->ts); 802d9cc:	3038      	adds	r0, #56	; 0x38 802d9ce:	f004 fb55 	bl	803207c <snmp_get_sysuptime> * @note: Enabling DHCP on a down interface will make it come * up once configured. *  * @see dhcp_start() */ void netif_set_up(struct netif *netif) 802d9d2:	f894 302d 	ldrb.w	r3, [r4, #45]	; 0x2d    NETIF_STATUS_CALLBACK(netif);    if (netif->flags & NETIF_FLAG_LINK_UP) {#if LWIP_ARP      /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */       if (netif->flags & (NETIF_FLAG_ETHARP)) { 802d9d6:	f003 0330 	and.w	r3, r3, #48	; 0x30 802d9da:	2b30      	cmp	r3, #48	; 0x30 802d9dc:	d105      	bne.n	802d9ea <netif_set_up+0x32>        etharp_gratuitous(netif); 802d9de:	4620      	mov	r0, r4 802d9e0:	1d21      	adds	r1, r4, #4        igmp_report_groups( netif);      }#endif /* LWIP_IGMP */    }  }} 802d9e2:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    if (netif->flags & NETIF_FLAG_LINK_UP) {#if LWIP_ARP      /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */       if (netif->flags & (NETIF_FLAG_ETHARP)) {        etharp_gratuitous(netif); 802d9e6:	f007 b89f 	b.w	8034b28 <etharp_request> 802d9ea:	bd10      	pop	{r4, pc}0802d9ec <netif_set_down>: * up once configured. *  * @see dhcp_start() */ void netif_set_down(struct netif *netif){ 802d9ec:	b510      	push	{r4, lr}  if (netif->flags & NETIF_FLAG_UP) { 802d9ee:	f890 302d 	ldrb.w	r3, [r0, #45]	; 0x2d 802d9f2:	07d9      	lsls	r1, r3, #31 * up once configured. *  * @see dhcp_start() */ void netif_set_down(struct netif *netif){ 802d9f4:	4604      	mov	r4, r0  if (netif->flags & NETIF_FLAG_UP) { 802d9f6:	d511      	bpl.n	802da1c <netif_set_down+0x30>    netif->flags &= ~NETIF_FLAG_UP; 802d9f8:	f023 0301 	bic.w	r3, r3, #1 802d9fc:	f880 302d 	strb.w	r3, [r0, #45]	; 0x2d#if LWIP_SNMP    snmp_get_sysuptime(&netif->ts); 802da00:	3038      	adds	r0, #56	; 0x38 802da02:	f004 fb3b 	bl	803207c <snmp_get_sysuptime>#endif#if LWIP_ARP    if (netif->flags & NETIF_FLAG_ETHARP) { 802da06:	f894 302d 	ldrb.w	r3, [r4, #45]	; 0x2d 802da0a:	f003 0320 	and.w	r3, r3, #32 802da0e:	b2db      	uxtb	r3, r3 802da10:	b123      	cbz	r3, 802da1c <netif_set_down+0x30>      etharp_cleanup_netif(netif); 802da12:	4620      	mov	r0, r4    }#endif /* LWIP_ARP */    NETIF_STATUS_CALLBACK(netif);  }} 802da14:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    snmp_get_sysuptime(&netif->ts);#endif#if LWIP_ARP    if (netif->flags & NETIF_FLAG_ETHARP) {      etharp_cleanup_netif(netif); 802da18:	f007 b856 	b.w	8034ac8 <etharp_cleanup_netif> 802da1c:	bd10      	pop	{r4, pc}0802da1e <pbuf_header>: * @return non-zero on failure, zero on success. * */u8_tpbuf_header(struct pbuf *p, s16_t header_size_increment){ 802da1e:	b510      	push	{r4, lr}  u16_t type;  void *payload;  u16_t increment_magnitude;  LWIP_ASSERT("p != NULL", p != NULL);  if ((header_size_increment == 0) || (p == NULL)) { 802da20:	b321      	cbz	r1, 802da6c <pbuf_header+0x4e> 802da22:	b330      	cbz	r0, 802da72 <pbuf_header+0x54>    return 0;  }   if (header_size_increment < 0){ 802da24:	2900      	cmp	r1, #0 802da26:	da05      	bge.n	802da34 <pbuf_header+0x16>    increment_magnitude = -header_size_increment; 802da28:	424b      	negs	r3, r1    /* Check that we aren't going to move off the end of the pbuf */    LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); 802da2a:	8942      	ldrh	r2, [r0, #10]  if ((header_size_increment == 0) || (p == NULL)) {    return 0;  }   if (header_size_increment < 0){    increment_magnitude = -header_size_increment; 802da2c:	b29b      	uxth	r3, r3    /* Check that we aren't going to move off the end of the pbuf */    LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); 802da2e:	429a      	cmp	r2, r3 802da30:	d201      	bcs.n	802da36 <pbuf_header+0x18> 802da32:	e01d      	b.n	802da70 <pbuf_header+0x52>  } else {    increment_magnitude = header_size_increment; 802da34:	b28b      	uxth	r3, r1    LWIP_ASSERT("p->payload - increment_magnitude >= p + SIZEOF_STRUCT_PBUF",                (u8_t *)p->payload - increment_magnitude >= (u8_t *)p + SIZEOF_STRUCT_PBUF);#endif  }  type = p->type; 802da36:	7b02      	ldrb	r2, [r0, #12]  /* remember current payload pointer */  payload = p->payload; 802da38:	6844      	ldr	r4, [r0, #4]  /* pbuf types containing payloads? */  if (type == PBUF_RAM || type == PBUF_POOL) { 802da3a:	b10a      	cbz	r2, 802da40 <pbuf_header+0x22> 802da3c:	2a03      	cmp	r2, #3 802da3e:	d105      	bne.n	802da4c <pbuf_header+0x2e>    /* set new payload pointer */    p->payload = (u8_t *)p->payload - header_size_increment; 802da40:	1a64      	subs	r4, r4, r1    /* boundary check fails? */    if ((u8_t *)p->payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) { 802da42:	f100 0310 	add.w	r3, r0, #16 802da46:	429c      	cmp	r4, r3 802da48:	d312      	bcc.n	802da70 <pbuf_header+0x52> 802da4a:	e008      	b.n	802da5e <pbuf_header+0x40>      p->payload = payload;      /* bail out unsuccesfully */      return 1;    }  /* pbuf types refering to external payloads? */  } else if (type == PBUF_REF || type == PBUF_ROM) { 802da4c:	3a01      	subs	r2, #1 802da4e:	2a01      	cmp	r2, #1 802da50:	d80e      	bhi.n	802da70 <pbuf_header+0x52>    /* hide a header in the payload? */    if ((header_size_increment < 0) && (increment_magnitude <= p->len)) { 802da52:	2900      	cmp	r1, #0 802da54:	da0c      	bge.n	802da70 <pbuf_header+0x52> 802da56:	8942      	ldrh	r2, [r0, #10] 802da58:	429a      	cmp	r2, r3 802da5a:	d309      	bcc.n	802da70 <pbuf_header+0x52>      /* increase payload pointer */      p->payload = (u8_t *)p->payload - header_size_increment; 802da5c:	1a64      	subs	r4, r4, r1    /* Unknown type */    LWIP_ASSERT("bad pbuf type", 0);    return 1;  }  /* modify pbuf length fields */  p->len += header_size_increment; 802da5e:	8943      	ldrh	r3, [r0, #10]  /* pbuf types refering to external payloads? */  } else if (type == PBUF_REF || type == PBUF_ROM) {    /* hide a header in the payload? */    if ((header_size_increment < 0) && (increment_magnitude <= p->len)) {      /* increase payload pointer */      p->payload = (u8_t *)p->payload - header_size_increment; 802da60:	6044      	str	r4, [r0, #4]    /* Unknown type */    LWIP_ASSERT("bad pbuf type", 0);    return 1;  }  /* modify pbuf length fields */  p->len += header_size_increment; 802da62:	18cb      	adds	r3, r1, r3 802da64:	8143      	strh	r3, [r0, #10]  p->tot_len += header_size_increment; 802da66:	8903      	ldrh	r3, [r0, #8] 802da68:	18c9      	adds	r1, r1, r3 802da6a:	8101      	strh	r1, [r0, #8]  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_header: old %p new %p (%"S16_F")\n",    (void *)payload, (void *)p->payload, header_size_increment));  return 0; 802da6c:	2000      	movs	r0, #0 802da6e:	bd10      	pop	{r4, pc}  }   if (header_size_increment < 0){    increment_magnitude = -header_size_increment;    /* Check that we aren't going to move off the end of the pbuf */    LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); 802da70:	2001      	movs	r0, #1  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_header: old %p new %p (%"S16_F")\n",    (void *)payload, (void *)p->payload, header_size_increment));  return 0;} 802da72:	bd10      	pop	{r4, pc}0802da74 <pbuf_free>: * 1->1->1 becomes ....... * */u8_tpbuf_free(struct pbuf *p){ 802da74:	b570      	push	{r4, r5, r6, lr}  u16_t type;  struct pbuf *q;  u8_t count;  if (p == NULL) { 802da76:	4604      	mov	r4, r0 802da78:	b300      	cbz	r0, 802dabc <pbuf_free+0x48> 802da7a:	2500      	movs	r5, #0    u16_t ref;    SYS_ARCH_DECL_PROTECT(old_level);    /* Since decrementing ref cannot be guaranteed to be a single machine operation     * we must protect it. We put the new ref into a local variable to prevent     * further protection. */    SYS_ARCH_PROTECT(old_level); 802da7c:	f007 fca0 	bl	80353c0 <sys_arch_protect>    /* all pbufs in a chain are referenced at least once */    LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0);    /* decrease reference count (number of pointers to pbuf) */    ref = --(p->ref); 802da80:	89e6      	ldrh	r6, [r4, #14] 802da82:	3e01      	subs	r6, #1 802da84:	b2b6      	uxth	r6, r6 802da86:	81e6      	strh	r6, [r4, #14]    SYS_ARCH_UNPROTECT(old_level); 802da88:	f007 fca4 	bl	80353d4 <sys_arch_unprotect>    /* this pbuf is no longer referenced to? */    if (ref == 0) { 802da8c:	b9be      	cbnz	r6, 802dabe <pbuf_free+0x4a>      /* remember next pbuf in chain for next iteration */      q = p->next;      LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p));      type = p->type; 802da8e:	7b23      	ldrb	r3, [r4, #12]    ref = --(p->ref);    SYS_ARCH_UNPROTECT(old_level);    /* this pbuf is no longer referenced to? */    if (ref == 0) {      /* remember next pbuf in chain for next iteration */      q = p->next; 802da90:	6826      	ldr	r6, [r4, #0]        pc->custom_free_function(p);      } else#endif /* LWIP_SUPPORT_CUSTOM_PBUF */      {        /* is this a pbuf from the pool? */        if (type == PBUF_POOL) { 802da92:	2b03      	cmp	r3, #3 802da94:	d101      	bne.n	802da9a <pbuf_free+0x26>          memp_free(MEMP_PBUF_POOL, p); 802da96:	200f      	movs	r0, #15 802da98:	e003      	b.n	802daa2 <pbuf_free+0x2e>        /* is this a ROM or RAM referencing pbuf? */        } else if (type == PBUF_ROM || type == PBUF_REF) { 802da9a:	3b01      	subs	r3, #1 802da9c:	2b01      	cmp	r3, #1 802da9e:	d804      	bhi.n	802daaa <pbuf_free+0x36>          memp_free(MEMP_PBUF, p); 802daa0:	200e      	movs	r0, #14 802daa2:	4621      	mov	r1, r4 802daa4:	f7ff fedc 	bl	802d860 <memp_free> 802daa8:	e002      	b.n	802dab0 <pbuf_free+0x3c>        /* type == PBUF_RAM */        } else {          mem_free(p); 802daaa:	4620      	mov	r0, r4 802daac:	f7ff fd70 	bl	802d590 <mem_free>        }      }      count++; 802dab0:	3501      	adds	r5, #1 802dab2:	b2ed      	uxtb	r5, r5    p->type == PBUF_REF || p->type == PBUF_POOL);  count = 0;  /* de-allocate all consecutive pbufs from the head of the chain that   * obtain a zero reference count after decrementing*/  while (p != NULL) { 802dab4:	4634      	mov	r4, r6 802dab6:	2e00      	cmp	r6, #0 802dab8:	d1e0      	bne.n	802da7c <pbuf_free+0x8> 802daba:	e000      	b.n	802dabe <pbuf_free+0x4a>  if (p == NULL) {    LWIP_ASSERT("p != NULL", p != NULL);    /* if assertions are disabled, proceed with debug output */    LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS,      ("pbuf_free(p == NULL) was called.\n"));    return 0; 802dabc:	4605      	mov	r5, r0    }  }  PERF_STOP("pbuf_free");  /* return number of de-allocated pbufs */  return count;} 802dabe:	4628      	mov	r0, r5 802dac0:	bd70      	pop	{r4, r5, r6, pc}0802dac2 <pbuf_realloc>: * * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain). */voidpbuf_realloc(struct pbuf *p, u16_t new_len){ 802dac2:	b538      	push	{r3, r4, r5, lr}              p->type == PBUF_ROM ||              p->type == PBUF_RAM ||              p->type == PBUF_REF);  /* desired length larger than current length? */  if (new_len >= p->tot_len) { 802dac4:	8903      	ldrh	r3, [r0, #8] 802dac6:	4299      	cmp	r1, r3 802dac8:	d220      	bcs.n	802db0c <pbuf_realloc+0x4a>    return;  }  /* the pbuf chain grows by (new_len - p->tot_len) bytes   * (which may be negative in case of shrinking) */  grow = new_len - p->tot_len; 802daca:	1aca      	subs	r2, r1, r3  /* first, step over any pbufs that should remain in the chain */  rem_len = new_len;  q = p;  /* should this pbuf be kept? */  while (rem_len > q->len) { 802dacc:	460d      	mov	r5, r1 802dace:	4604      	mov	r4, r0 802dad0:	e005      	b.n	802dade <pbuf_realloc+0x1c>    /* decrease remaining length by pbuf length */    rem_len -= q->len; 802dad2:	1aed      	subs	r5, r5, r3    /* decrease total length indicator */    LWIP_ASSERT("grow < max_u16_t", grow < 0xffff);    q->tot_len += (u16_t)grow; 802dad4:	8923      	ldrh	r3, [r4, #8] 802dad6:	18d3      	adds	r3, r2, r3 802dad8:	8123      	strh	r3, [r4, #8]    /* proceed to next pbuf in chain */    q = q->next; 802dada:	6824      	ldr	r4, [r4, #0]  rem_len = new_len;  q = p;  /* should this pbuf be kept? */  while (rem_len > q->len) {    /* decrease remaining length by pbuf length */    rem_len -= q->len; 802dadc:	b2ad      	uxth	r5, r5  /* first, step over any pbufs that should remain in the chain */  rem_len = new_len;  q = p;  /* should this pbuf be kept? */  while (rem_len > q->len) { 802dade:	8963      	ldrh	r3, [r4, #10] 802dae0:	429d      	cmp	r5, r3 802dae2:	d8f6      	bhi.n	802dad2 <pbuf_realloc+0x10>  /* we have now reached the new last pbuf (in q) */  /* rem_len == desired length for pbuf q */  /* shrink allocated memory for PBUF_RAM */  /* (other types merely adjust their length fields */  if ((q->type == PBUF_RAM) && (rem_len != q->len)) { 802dae4:	7b22      	ldrb	r2, [r4, #12] 802dae6:	b94a      	cbnz	r2, 802dafc <pbuf_realloc+0x3a> 802dae8:	429d      	cmp	r5, r3 802daea:	d007      	beq.n	802dafc <pbuf_realloc+0x3a>    /* reallocate and adjust the length of the pbuf that will be split */    q = (struct pbuf *)mem_trim(q, (u16_t)((u8_t *)q->payload - (u8_t *)q) + rem_len); 802daec:	6863      	ldr	r3, [r4, #4] 802daee:	1b1b      	subs	r3, r3, r4 802daf0:	18e9      	adds	r1, r5, r3 802daf2:	4620      	mov	r0, r4 802daf4:	b289      	uxth	r1, r1 802daf6:	f7ff fda5 	bl	802d644 <mem_trim> 802dafa:	4604      	mov	r4, r0  /* adjust length fields for new last pbuf */  q->len = rem_len;  q->tot_len = q->len;  /* any remaining pbufs in chain? */  if (q->next != NULL) { 802dafc:	6820      	ldr	r0, [r4, #0]    /* reallocate and adjust the length of the pbuf that will be split */    q = (struct pbuf *)mem_trim(q, (u16_t)((u8_t *)q->payload - (u8_t *)q) + rem_len);    LWIP_ASSERT("mem_trim returned q == NULL", q != NULL);  }  /* adjust length fields for new last pbuf */  q->len = rem_len; 802dafe:	8165      	strh	r5, [r4, #10]  q->tot_len = q->len; 802db00:	8125      	strh	r5, [r4, #8]  /* any remaining pbufs in chain? */  if (q->next != NULL) { 802db02:	b108      	cbz	r0, 802db08 <pbuf_realloc+0x46>    /* free remaining pbufs in chain */    pbuf_free(q->next); 802db04:	f7ff ffb6 	bl	802da74 <pbuf_free>  }  /* q is last packet in chain */  q->next = NULL; 802db08:	2300      	movs	r3, #0 802db0a:	6023      	str	r3, [r4, #0] 802db0c:	bd38      	pop	{r3, r4, r5, pc}0802db0e <pbuf_alloc>: * @return the allocated pbuf. If multiple pbufs where allocated, this * is the first pbuf of a pbuf chain. */struct pbuf *pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type){ 802db0e:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 802db12:	460d      	mov	r5, r1 802db14:	4617      	mov	r7, r2  u16_t offset;  s32_t rem_len; /* remaining length */  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length));  /* determine header offset */  switch (layer) { 802db16:	2803      	cmp	r0, #3 802db18:	d87c      	bhi.n	802dc14 <pbuf_alloc+0x106> 802db1a:	e8df f000 	tbb	[pc, r0] 802db1e:	0802      	.short	0x0802 802db20:	0604      	.short	0x0604  case PBUF_TRANSPORT:    /* add room for transport (often TCP) layer header */    offset = PBUF_LINK_HLEN + PBUF_IP_HLEN + PBUF_TRANSPORT_HLEN; 802db22:	2636      	movs	r6, #54	; 0x36 802db24:	e004      	b.n	802db30 <pbuf_alloc+0x22>    /* add room for IP layer header */    offset = PBUF_LINK_HLEN + PBUF_IP_HLEN;    break;  case PBUF_LINK:    /* add room for link layer header */    offset = PBUF_LINK_HLEN; 802db26:	260e      	movs	r6, #14    break; 802db28:	e002      	b.n	802db30 <pbuf_alloc+0x22>  case PBUF_RAW:    offset = 0; 802db2a:	2600      	movs	r6, #0    break; 802db2c:	e000      	b.n	802db30 <pbuf_alloc+0x22>    /* add room for transport (often TCP) layer header */    offset = PBUF_LINK_HLEN + PBUF_IP_HLEN + PBUF_TRANSPORT_HLEN;    break;  case PBUF_IP:    /* add room for IP layer header */    offset = PBUF_LINK_HLEN + PBUF_IP_HLEN; 802db2e:	2622      	movs	r6, #34	; 0x22  default:    LWIP_ASSERT("pbuf_alloc: bad pbuf layer", 0);    return NULL;  }  switch (type) { 802db30:	2f03      	cmp	r7, #3 802db32:	d86f      	bhi.n	802dc14 <pbuf_alloc+0x106> 802db34:	e8df f007 	tbb	[pc, r7] 802db38:	025e5e46 	.word	0x025e5e46  case PBUF_POOL:    /* allocate head of pbuf chain into p */    p = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL); 802db3c:	200f      	movs	r0, #15 802db3e:	f7ff fe79 	bl	802d834 <memp_malloc>    LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p));    if (p == NULL) { 802db42:	4604      	mov	r4, r0 802db44:	b900      	cbnz	r0, 802db48 <pbuf_alloc+0x3a> 802db46:	e065      	b.n	802dc14 <pbuf_alloc+0x106>    }    p->type = type;    p->next = NULL;    /* make the payload pointer point 'offset' bytes into pbuf data memory */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); 802db48:	1982      	adds	r2, r0, r6    LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned",            ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);    /* the total length of the pbuf chain is the requested size */    p->tot_len = length;    /* set the length of the first pbuf in the chain */    p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); 802db4a:	3603      	adds	r6, #3 802db4c:	f026 0603 	bic.w	r6, r6, #3    }    p->type = type;    p->next = NULL;    /* make the payload pointer point 'offset' bytes into pbuf data memory */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); 802db50:	3213      	adds	r2, #19    LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned",            ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);    /* the total length of the pbuf chain is the requested size */    p->tot_len = length;    /* set the length of the first pbuf in the chain */    p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); 802db52:	f5c6 66c0 	rsb	r6, r6, #1536	; 0x600    LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p));    if (p == NULL) {      PBUF_POOL_IS_EMPTY();      return NULL;    }    p->type = type; 802db56:	2303      	movs	r3, #3    p->next = NULL;    /* make the payload pointer point 'offset' bytes into pbuf data memory */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); 802db58:	f022 0203 	bic.w	r2, r2, #3    LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned",            ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);    /* the total length of the pbuf chain is the requested size */    p->tot_len = length;    /* set the length of the first pbuf in the chain */    p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); 802db5c:	3604      	adds	r6, #4 802db5e:	42ae      	cmp	r6, r5 802db60:	bfa8      	it	ge 802db62:	462e      	movge	r6, r5    LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p));    if (p == NULL) {      PBUF_POOL_IS_EMPTY();      return NULL;    }    p->type = type; 802db64:	7303      	strb	r3, [r0, #12]    p->next = NULL;    /* make the payload pointer point 'offset' bytes into pbuf data memory */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); 802db66:	6042      	str	r2, [r0, #4]    if (p == NULL) {      PBUF_POOL_IS_EMPTY();      return NULL;    }    p->type = type;    p->next = NULL; 802db68:	2300      	movs	r3, #0                ((u8_t*)p->payload + p->len <=                 (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED));    LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT",      (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 );    /* set reference count (needed here in case we fail) */    p->ref = 1; 802db6a:	2201      	movs	r2, #1    LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned",            ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);    /* the total length of the pbuf chain is the requested size */    p->tot_len = length;    /* set the length of the first pbuf in the chain */    p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); 802db6c:	8146      	strh	r6, [r0, #10]    if (p == NULL) {      PBUF_POOL_IS_EMPTY();      return NULL;    }    p->type = type;    p->next = NULL; 802db6e:	6003      	str	r3, [r0, #0]    /* make the payload pointer point 'offset' bytes into pbuf data memory */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset)));    LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned",            ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0);    /* the total length of the pbuf chain is the requested size */    p->tot_len = length; 802db70:	8105      	strh	r5, [r0, #8]                ((u8_t*)p->payload + p->len <=                 (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED));    LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT",      (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 );    /* set reference count (needed here in case we fail) */    p->ref = 1; 802db72:	81c2      	strh	r2, [r0, #14]    /* now allocate the tail of the pbuf chain */    /* remember first pbuf for linkage in next iteration */    r = p;    /* remaining length to be allocated */    rem_len = length - p->len; 802db74:	1bae      	subs	r6, r5, r6    /* any remaining pbufs to be allocated? */    while (rem_len > 0) { 802db76:	4607      	mov	r7, r0 802db78:	4698      	mov	r8, r3      r->next = q;      /* set total length of this pbuf and next in chain */      LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff);      q->tot_len = (u16_t)rem_len;      /* this pbuf length is pool size, unless smaller sized tail */      q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED); 802db7a:	f240 6903 	movw	r9, #1539	; 0x603 802db7e:	f240 6a04 	movw	sl, #1540	; 0x604    /* remember first pbuf for linkage in next iteration */    r = p;    /* remaining length to be allocated */    rem_len = length - p->len;    /* any remaining pbufs to be allocated? */    while (rem_len > 0) { 802db82:	e01c      	b.n	802dbbe <pbuf_alloc+0xb0>      q = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL); 802db84:	200f      	movs	r0, #15 802db86:	f7ff fe55 	bl	802d834 <memp_malloc>      if (q == NULL) { 802db8a:	4605      	mov	r5, r0 802db8c:	b918      	cbnz	r0, 802db96 <pbuf_alloc+0x88>        PBUF_POOL_IS_EMPTY();        /* free chain so far allocated */        pbuf_free(p); 802db8e:	4620      	mov	r0, r4 802db90:	f7ff ff70 	bl	802da74 <pbuf_free> 802db94:	e03e      	b.n	802dc14 <pbuf_alloc+0x106>        /* bail out unsuccesfully */        return NULL;      }      q->type = type; 802db96:	2303      	movs	r3, #3      /* set total length of this pbuf and next in chain */      LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff);      q->tot_len = (u16_t)rem_len;      /* this pbuf length is pool size, unless smaller sized tail */      q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED);      q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF); 802db98:	f100 0210 	add.w	r2, r0, #16        /* free chain so far allocated */        pbuf_free(p);        /* bail out unsuccesfully */        return NULL;      }      q->type = type; 802db9c:	7303      	strb	r3, [r0, #12]      q->next = NULL;      /* make previous pbuf point to this pbuf */      r->next = q;      /* set total length of this pbuf and next in chain */      LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff);      q->tot_len = (u16_t)rem_len; 802db9e:	b2b3      	uxth	r3, r6 802dba0:	8103      	strh	r3, [r0, #8]      /* this pbuf length is pool size, unless smaller sized tail */      q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED);      q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF); 802dba2:	6042      	str	r2, [r0, #4]      r->next = q;      /* set total length of this pbuf and next in chain */      LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff);      q->tot_len = (u16_t)rem_len;      /* this pbuf length is pool size, unless smaller sized tail */      q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED); 802dba4:	454b      	cmp	r3, r9 802dba6:	bf88      	it	hi 802dba8:	4653      	movhi	r3, sl      LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned",              ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0);      LWIP_ASSERT("check p->payload + p->len does not overflow pbuf",                  ((u8_t*)p->payload + p->len <=                   (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED));      q->ref = 1; 802dbaa:	2201      	movs	r2, #1        /* bail out unsuccesfully */        return NULL;      }      q->type = type;      q->flags = 0;      q->next = NULL; 802dbac:	f8c0 8000 	str.w	r8, [r0]        pbuf_free(p);        /* bail out unsuccesfully */        return NULL;      }      q->type = type;      q->flags = 0; 802dbb0:	f880 800d 	strb.w	r8, [r0, #13]      q->next = NULL;      /* make previous pbuf point to this pbuf */      r->next = q; 802dbb4:	6038      	str	r0, [r7, #0]      /* set total length of this pbuf and next in chain */      LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff);      q->tot_len = (u16_t)rem_len;      /* this pbuf length is pool size, unless smaller sized tail */      q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED); 802dbb6:	8143      	strh	r3, [r0, #10]      LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned",              ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0);      LWIP_ASSERT("check p->payload + p->len does not overflow pbuf",                  ((u8_t*)p->payload + p->len <=                   (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED));      q->ref = 1; 802dbb8:	81c2      	strh	r2, [r0, #14]      /* calculate remaining length to be allocated */      rem_len -= q->len; 802dbba:	1af6      	subs	r6, r6, r3 802dbbc:	4607      	mov	r7, r0    /* remember first pbuf for linkage in next iteration */    r = p;    /* remaining length to be allocated */    rem_len = length - p->len;    /* any remaining pbufs to be allocated? */    while (rem_len > 0) { 802dbbe:	2e00      	cmp	r6, #0 802dbc0:	dce0      	bgt.n	802db84 <pbuf_alloc+0x76> 802dbc2:	e022      	b.n	802dc0a <pbuf_alloc+0xfc>    /*r->next = NULL;*/    break;  case PBUF_RAM:    /* If pbuf is to be allocated in RAM, allocate memory for it. */    p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length)); 802dbc4:	f106 0013 	add.w	r0, r6, #19 802dbc8:	1ceb      	adds	r3, r5, #3 802dbca:	f023 0303 	bic.w	r3, r3, #3 802dbce:	f020 0003 	bic.w	r0, r0, #3 802dbd2:	18c0      	adds	r0, r0, r3 802dbd4:	b280      	uxth	r0, r0 802dbd6:	f7ff fda3 	bl	802d720 <mem_malloc>    if (p == NULL) { 802dbda:	4604      	mov	r4, r0 802dbdc:	b1d0      	cbz	r0, 802dc14 <pbuf_alloc+0x106>      return NULL;    }    /* Set up internal structure of the pbuf. */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)); 802dbde:	1986      	adds	r6, r0, r6 802dbe0:	3613      	adds	r6, #19    p->len = p->tot_len = length;    p->next = NULL; 802dbe2:	2300      	movs	r3, #0    p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length));    if (p == NULL) {      return NULL;    }    /* Set up internal structure of the pbuf. */    p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)); 802dbe4:	f026 0603 	bic.w	r6, r6, #3 802dbe8:	6046      	str	r6, [r0, #4]    p->len = p->tot_len = length; 802dbea:	8105      	strh	r5, [r0, #8] 802dbec:	8145      	strh	r5, [r0, #10]    p->next = NULL; 802dbee:	6003      	str	r3, [r0, #0]    p->type = type; 802dbf0:	7303      	strb	r3, [r0, #12] 802dbf2:	e00a      	b.n	802dc0a <pbuf_alloc+0xfc>  /* pbuf references existing (non-volatile static constant) ROM payload? */  case PBUF_ROM:  /* pbuf references existing (externally allocated) RAM payload? */  case PBUF_REF:    /* only allocate memory for the pbuf structure */    p = (struct pbuf *)memp_malloc(MEMP_PBUF); 802dbf4:	200e      	movs	r0, #14 802dbf6:	f7ff fe1d 	bl	802d834 <memp_malloc>    if (p == NULL) { 802dbfa:	4604      	mov	r4, r0 802dbfc:	b150      	cbz	r0, 802dc14 <pbuf_alloc+0x106>                  ("pbuf_alloc: Could not allocate MEMP_PBUF for PBUF_%s.\n",                  (type == PBUF_ROM) ? "ROM" : "REF"));      return NULL;    }    /* caller must set this field properly, afterwards */    p->payload = NULL; 802dbfe:	2300      	movs	r3, #0 802dc00:	6043      	str	r3, [r0, #4]    p->len = p->tot_len = length; 802dc02:	8105      	strh	r5, [r0, #8] 802dc04:	8145      	strh	r5, [r0, #10]    p->next = NULL; 802dc06:	6003      	str	r3, [r0, #0]    p->type = type; 802dc08:	7307      	strb	r7, [r0, #12]  default:    LWIP_ASSERT("pbuf_alloc: erroneous type", 0);    return NULL;  }  /* set reference count */  p->ref = 1; 802dc0a:	2301      	movs	r3, #1 802dc0c:	81e3      	strh	r3, [r4, #14]  /* set flags */  p->flags = 0; 802dc0e:	2300      	movs	r3, #0 802dc10:	7363      	strb	r3, [r4, #13]  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p));  return p; 802dc12:	e000      	b.n	802dc16 <pbuf_alloc+0x108>    p->next = NULL;    p->type = type;    break;  default:    LWIP_ASSERT("pbuf_alloc: erroneous type", 0);    return NULL; 802dc14:	2400      	movs	r4, #0  p->ref = 1;  /* set flags */  p->flags = 0;  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p));  return p;} 802dc16:	4620      	mov	r0, r4 802dc18:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}0802dc1c <pbuf_clen>: * @return the number of pbufs in a chain */u8_tpbuf_clen(struct pbuf *p){ 802dc1c:	4603      	mov	r3, r0  u8_t len;  len = 0; 802dc1e:	2000      	movs	r0, #0  while (p != NULL) { 802dc20:	e002      	b.n	802dc28 <pbuf_clen+0xc>    ++len; 802dc22:	3001      	adds	r0, #1    p = p->next; 802dc24:	681b      	ldr	r3, [r3, #0]{  u8_t len;  len = 0;  while (p != NULL) {    ++len; 802dc26:	b2c0      	uxtb	r0, r0pbuf_clen(struct pbuf *p){  u8_t len;  len = 0;  while (p != NULL) { 802dc28:	2b00      	cmp	r3, #0 802dc2a:	d1fa      	bne.n	802dc22 <pbuf_clen+0x6>    ++len;    p = p->next;  }  return len;} 802dc2c:	4770      	bx	lr0802dc2e <pbuf_ref>: * @param p pbuf to increase reference counter of * */voidpbuf_ref(struct pbuf *p){ 802dc2e:	b510      	push	{r4, lr}  SYS_ARCH_DECL_PROTECT(old_level);  /* pbuf given? */  if (p != NULL) { 802dc30:	4604      	mov	r4, r0 802dc32:	b140      	cbz	r0, 802dc46 <pbuf_ref+0x18>    SYS_ARCH_PROTECT(old_level); 802dc34:	f007 fbc4 	bl	80353c0 <sys_arch_protect>    ++(p->ref); 802dc38:	89e3      	ldrh	r3, [r4, #14] 802dc3a:	3301      	adds	r3, #1 802dc3c:	81e3      	strh	r3, [r4, #14]    SYS_ARCH_UNPROTECT(old_level);  }} 802dc3e:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  SYS_ARCH_DECL_PROTECT(old_level);  /* pbuf given? */  if (p != NULL) {    SYS_ARCH_PROTECT(old_level);    ++(p->ref);    SYS_ARCH_UNPROTECT(old_level); 802dc42:	f007 bbc7 	b.w	80353d4 <sys_arch_unprotect> 802dc46:	bd10      	pop	{r4, pc}0802dc48 <pbuf_cat>: * @see pbuf_chain() */voidpbuf_cat(struct pbuf *h, struct pbuf *t){ 802dc48:	b510      	push	{r4, lr}  struct pbuf *p;  LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)", 802dc4a:	b168      	cbz	r0, 802dc68 <pbuf_cat+0x20> 802dc4c:	b161      	cbz	r1, 802dc68 <pbuf_cat+0x20> 802dc4e:	e003      	b.n	802dc58 <pbuf_cat+0x10>             ((h != NULL) && (t != NULL)), return;);  /* proceed to last pbuf of chain */  for (p = h; p->next != NULL; p = p->next) {    /* add total length of second chain to all totals of first chain */    p->tot_len += t->tot_len; 802dc50:	8904      	ldrh	r4, [r0, #8] 802dc52:	191b      	adds	r3, r3, r4 802dc54:	8103      	strh	r3, [r0, #8]  LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)",             ((h != NULL) && (t != NULL)), return;);  /* proceed to last pbuf of chain */  for (p = h; p->next != NULL; p = p->next) { 802dc56:	4610      	mov	r0, r2 802dc58:	6802      	ldr	r2, [r0, #0] 802dc5a:	890b      	ldrh	r3, [r1, #8] 802dc5c:	2a00      	cmp	r2, #0 802dc5e:	d1f7      	bne.n	802dc50 <pbuf_cat+0x8>  }  /* { p is last pbuf of first h chain, p->next == NULL } */  LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len);  LWIP_ASSERT("p->next == NULL", p->next == NULL);  /* add total length of second chain to last pbuf total of first chain */  p->tot_len += t->tot_len; 802dc60:	8902      	ldrh	r2, [r0, #8]  /* chain last pbuf of head (p) with first of tail (t) */  p->next = t; 802dc62:	6001      	str	r1, [r0, #0]  }  /* { p is last pbuf of first h chain, p->next == NULL } */  LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len);  LWIP_ASSERT("p->next == NULL", p->next == NULL);  /* add total length of second chain to last pbuf total of first chain */  p->tot_len += t->tot_len; 802dc64:	189b      	adds	r3, r3, r2 802dc66:	8103      	strh	r3, [r0, #8] 802dc68:	bd10      	pop	{r4, pc}0802dc6a <pbuf_chain>: * The ->ref field of the first pbuf of the tail chain is adjusted. * */voidpbuf_chain(struct pbuf *h, struct pbuf *t){ 802dc6a:	b510      	push	{r4, lr} 802dc6c:	460c      	mov	r4, r1  pbuf_cat(h, t); 802dc6e:	f7ff ffeb 	bl	802dc48 <pbuf_cat>  /* t is now referenced by h */  pbuf_ref(t); 802dc72:	4620      	mov	r0, r4  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t));} 802dc74:	e8bd 4010 	ldmia.w	sp!, {r4, lr}voidpbuf_chain(struct pbuf *h, struct pbuf *t){  pbuf_cat(h, t);  /* t is now referenced by h */  pbuf_ref(t); 802dc78:	f7ff bfd9 	b.w	802dc2e <pbuf_ref>0802dc7c <pbuf_copy>: *         ERR_ARG if one of the pbufs is NULL or p_to is not big *                 enough to hold p_from */err_tpbuf_copy(struct pbuf *p_to, struct pbuf *p_from){ 802dc7c:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 802dc80:	460c      	mov	r4, r1  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n",    (void*)p_to, (void*)p_from));  /* is the target big enough to hold the source? */  LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) && 802dc82:	4605      	mov	r5, r0 802dc84:	b908      	cbnz	r0, 802dc8a <pbuf_copy+0xe> 802dc86:	20f2      	movs	r0, #242	; 0xf2 802dc88:	e03f      	b.n	802dd0a <pbuf_copy+0x8e> 802dc8a:	2900      	cmp	r1, #0 802dc8c:	d0fb      	beq.n	802dc86 <pbuf_copy+0xa> 802dc8e:	8902      	ldrh	r2, [r0, #8] 802dc90:	890b      	ldrh	r3, [r1, #8] 802dc92:	429a      	cmp	r2, r3 802dc94:	d3f7      	bcc.n	802dc86 <pbuf_copy+0xa> 802dc96:	2600      	movs	r6, #0 802dc98:	4637      	mov	r7, r6  /* iterate through pbuf chain */  do  {    /* copy one part of the original chain */    if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { 802dc9a:	f8b4 800a 	ldrh.w	r8, [r4, #10] 802dc9e:	896b      	ldrh	r3, [r5, #10]      len = p_from->len - offset_from;    } else {      /* current p_from does not fit into current p_to */      len = p_to->len - offset_to;    }    MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len); 802dca0:	6861      	ldr	r1, [r4, #4] 802dca2:	6868      	ldr	r0, [r5, #4]  /* iterate through pbuf chain */  do  {    /* copy one part of the original chain */    if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { 802dca4:	ebc6 0808 	rsb	r8, r6, r8 802dca8:	1bdb      	subs	r3, r3, r7 802dcaa:	4543      	cmp	r3, r8      /* complete current p_from fits into current p_to */      len = p_from->len - offset_from;    } else {      /* current p_from does not fit into current p_to */      len = p_to->len - offset_to; 802dcac:	bfb4      	ite	lt 802dcae:	fa1f f883 	uxthlt.w	r8, r3  do  {    /* copy one part of the original chain */    if ((p_to->len - offset_to) >= (p_from->len - offset_from)) {      /* complete current p_from fits into current p_to */      len = p_from->len - offset_from; 802dcb2:	fa1f f888 	uxthge.w	r8, r8    } else {      /* current p_from does not fit into current p_to */      len = p_to->len - offset_to;    }    MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len); 802dcb6:	19c0      	adds	r0, r0, r7 802dcb8:	1989      	adds	r1, r1, r6 802dcba:	4642      	mov	r2, r8 802dcbc:	f7f3 fe46 	bl	802194c <memcpy>    offset_to += len;    offset_from += len; 802dcc0:	4446      	add	r6, r8    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);    LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);    if (offset_from >= p_from->len) { 802dcc2:	8963      	ldrh	r3, [r4, #10]      /* current p_from does not fit into current p_to */      len = p_to->len - offset_to;    }    MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len);    offset_to += len;    offset_from += len; 802dcc4:	b2b6      	uxth	r6, r6    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);    LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);    if (offset_from >= p_from->len) { 802dcc6:	42b3      	cmp	r3, r6    } else {      /* current p_from does not fit into current p_to */      len = p_to->len - offset_to;    }    MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len);    offset_to += len; 802dcc8:	4447      	add	r7, r8    if (offset_from >= p_from->len) {      /* on to next p_from (if any) */      offset_from = 0;      p_from = p_from->next;    }    if (offset_to == p_to->len) { 802dcca:	896b      	ldrh	r3, [r5, #10]    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);    LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);    if (offset_from >= p_from->len) {      /* on to next p_from (if any) */      offset_from = 0;      p_from = p_from->next; 802dccc:	bf98      	it	ls 802dcce:	6824      	ldrls	r4, [r4, #0]    } else {      /* current p_from does not fit into current p_to */      len = p_to->len - offset_to;    }    MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len);    offset_to += len; 802dcd0:	b2bf      	uxth	r7, r7    offset_from += len;    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);    LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);    if (offset_from >= p_from->len) {      /* on to next p_from (if any) */      offset_from = 0; 802dcd2:	bf98      	it	ls 802dcd4:	2600      	movls	r6, #0      p_from = p_from->next;    }    if (offset_to == p_to->len) { 802dcd6:	42bb      	cmp	r3, r7 802dcd8:	d105      	bne.n	802dce6 <pbuf_copy+0x6a>      /* on to next p_to (if any) */      offset_to = 0;      p_to = p_to->next; 802dcda:	682d      	ldr	r5, [r5, #0]      LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL) , return ERR_ARG;); 802dcdc:	b915      	cbnz	r5, 802dce4 <pbuf_copy+0x68> 802dcde:	2c00      	cmp	r4, #0 802dce0:	d1d1      	bne.n	802dc86 <pbuf_copy+0xa> 802dce2:	e00f      	b.n	802dd04 <pbuf_copy+0x88>      offset_from = 0;      p_from = p_from->next;    }    if (offset_to == p_to->len) {      /* on to next p_to (if any) */      offset_to = 0; 802dce4:	2700      	movs	r7, #0      p_to = p_to->next;      LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL) , return ERR_ARG;);    }    if((p_from != NULL) && (p_from->len == p_from->tot_len)) { 802dce6:	b12c      	cbz	r4, 802dcf4 <pbuf_copy+0x78> 802dce8:	8962      	ldrh	r2, [r4, #10] 802dcea:	8923      	ldrh	r3, [r4, #8] 802dcec:	429a      	cmp	r2, r3 802dcee:	d101      	bne.n	802dcf4 <pbuf_copy+0x78>      /* don't copy more than one packet! */      LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", 802dcf0:	6823      	ldr	r3, [r4, #0] 802dcf2:	b94b      	cbnz	r3, 802dd08 <pbuf_copy+0x8c>                 (p_from->next == NULL), return ERR_VAL;);    }    if((p_to != NULL) && (p_to->len == p_to->tot_len)) { 802dcf4:	896a      	ldrh	r2, [r5, #10] 802dcf6:	892b      	ldrh	r3, [r5, #8] 802dcf8:	429a      	cmp	r2, r3 802dcfa:	d101      	bne.n	802dd00 <pbuf_copy+0x84>      /* don't copy more than one packet! */      LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", 802dcfc:	682b      	ldr	r3, [r5, #0] 802dcfe:	b91b      	cbnz	r3, 802dd08 <pbuf_copy+0x8c>                  (p_to->next == NULL), return ERR_VAL;);    }  } while (p_from); 802dd00:	2c00      	cmp	r4, #0 802dd02:	d1ca      	bne.n	802dc9a <pbuf_copy+0x1e>  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n"));  return ERR_OK; 802dd04:	4620      	mov	r0, r4 802dd06:	e000      	b.n	802dd0a <pbuf_copy+0x8e>      LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL) , return ERR_ARG;);    }    if((p_from != NULL) && (p_from->len == p_from->tot_len)) {      /* don't copy more than one packet! */      LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", 802dd08:	20fa      	movs	r0, #250	; 0xfa                  (p_to->next == NULL), return ERR_VAL;);    }  } while (p_from);  LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n"));  return ERR_OK;} 802dd0a:	b240      	sxtb	r0, r0 802dd0c:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}0802dd10 <pbuf_copy_partial>: * @param offset offset into the packet buffer from where to begin copying len bytes * @return the number of bytes copied, or 0 on failure */u16_tpbuf_copy_partial(struct pbuf *buf, void *dataptr, u16_t len, u16_t offset){ 802dd10:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 802dd14:	4688      	mov	r8, r1 802dd16:	4616      	mov	r6, r2  struct pbuf *p;  u16_t left;  u16_t buf_copy_len;  u16_t copied_total = 0;  LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); 802dd18:	b328      	cbz	r0, 802dd66 <pbuf_copy_partial+0x56>  LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;); 802dd1a:	b331      	cbz	r1, 802dd6a <pbuf_copy_partial+0x5a> 802dd1c:	2400      	movs	r4, #0 802dd1e:	4605      	mov	r5, r0 802dd20:	46a1      	mov	r9, r4 802dd22:	e01c      	b.n	802dd5e <pbuf_copy_partial+0x4e>    return 0;  }  /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */  for(p = buf; len != 0 && p != NULL; p = p->next) {    if ((offset != 0) && (offset >= p->len)) { 802dd24:	b12b      	cbz	r3, 802dd32 <pbuf_copy_partial+0x22> 802dd26:	896a      	ldrh	r2, [r5, #10] 802dd28:	4293      	cmp	r3, r2 802dd2a:	d302      	bcc.n	802dd32 <pbuf_copy_partial+0x22>      /* don't copy from this buffer -> on to the next */      offset -= p->len; 802dd2c:	1a9b      	subs	r3, r3, r2 802dd2e:	b29b      	uxth	r3, r3 802dd30:	e014      	b.n	802dd5c <pbuf_copy_partial+0x4c>    } else {      /* copy from this buffer. maybe only partially. */      buf_copy_len = p->len - offset; 802dd32:	896f      	ldrh	r7, [r5, #10]      if (buf_copy_len > len)          buf_copy_len = len;      /* copy the necessary parts of the buffer */      MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len); 802dd34:	6869      	ldr	r1, [r5, #4]    if ((offset != 0) && (offset >= p->len)) {      /* don't copy from this buffer -> on to the next */      offset -= p->len;    } else {      /* copy from this buffer. maybe only partially. */      buf_copy_len = p->len - offset; 802dd36:	1aff      	subs	r7, r7, r3 802dd38:	b2bf      	uxth	r7, r7 802dd3a:	42b7      	cmp	r7, r6 802dd3c:	bf28      	it	cs 802dd3e:	4637      	movcs	r7, r6      if (buf_copy_len > len)          buf_copy_len = len;      /* copy the necessary parts of the buffer */      MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len); 802dd40:	eb08 0009 	add.w	r0, r8, r9 802dd44:	18c9      	adds	r1, r1, r3 802dd46:	463a      	mov	r2, r7      copied_total += buf_copy_len; 802dd48:	193c      	adds	r4, r7, r4      left += buf_copy_len; 802dd4a:	44b9      	add	r9, r7      len -= buf_copy_len; 802dd4c:	1bf6      	subs	r6, r6, r7      /* copy from this buffer. maybe only partially. */      buf_copy_len = p->len - offset;      if (buf_copy_len > len)          buf_copy_len = len;      /* copy the necessary parts of the buffer */      MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len); 802dd4e:	f7f3 fdfd 	bl	802194c <memcpy>      copied_total += buf_copy_len; 802dd52:	b2a4      	uxth	r4, r4      left += buf_copy_len; 802dd54:	fa1f f989 	uxth.w	r9, r9      len -= buf_copy_len; 802dd58:	b2b6      	uxth	r6, r6      offset = 0; 802dd5a:	2300      	movs	r3, #0  if((buf == NULL) || (dataptr == NULL)) {    return 0;  }  /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */  for(p = buf; len != 0 && p != NULL; p = p->next) { 802dd5c:	682d      	ldr	r5, [r5, #0] 802dd5e:	b12e      	cbz	r6, 802dd6c <pbuf_copy_partial+0x5c> 802dd60:	2d00      	cmp	r5, #0 802dd62:	d1df      	bne.n	802dd24 <pbuf_copy_partial+0x14> 802dd64:	e002      	b.n	802dd6c <pbuf_copy_partial+0x5c>  struct pbuf *p;  u16_t left;  u16_t buf_copy_len;  u16_t copied_total = 0;  LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); 802dd66:	4604      	mov	r4, r0 802dd68:	e000      	b.n	802dd6c <pbuf_copy_partial+0x5c> 802dd6a:	460c      	mov	r4, r1      len -= buf_copy_len;      offset = 0;    }  }  return copied_total;} 802dd6c:	4620      	mov	r0, r4 802dd6e:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 802dd72:	0000      	movs	r0, r00802dd74 <raw_input>: *           caller). * */u8_traw_input(struct pbuf *p, struct netif *inp){ 802dd74:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}  u8_t eaten = 0;  LWIP_UNUSED_ARG(inp);  iphdr = (struct ip_hdr *)p->payload;  proto = IPH_PROTO(iphdr); 802dd78:	6843      	ldr	r3, [r0, #4]  /* loop through all raw pcbs until the packet is eaten by one */  /* this allows multiple pcbs to match against the packet by design */  while ((eaten == 0) && (pcb != NULL)) {    if ((pcb->protocol == proto) &&        (ip_addr_isany(&pcb->local_ip) ||         ip_addr_cmp(&(pcb->local_ip), ¤t_iphdr_dest))) { 802dd7a:	f8df a074 	ldr.w	sl, [pc, #116]	; 802ddf0 <raw_input+0x7c>  u8_t eaten = 0;  LWIP_UNUSED_ARG(inp);  iphdr = (struct ip_hdr *)p->payload;  proto = IPH_PROTO(iphdr); 802dd7e:	f893 9009 	ldrb.w	r9, [r3, #9]  prev = NULL;  pcb = raw_pcbs; 802dd82:	4b19      	ldr	r3, [pc, #100]	; (802dde8 <raw_input+0x74>) *           caller). * */u8_traw_input(struct pbuf *p, struct netif *inp){ 802dd84:	4606      	mov	r6, r0  iphdr = (struct ip_hdr *)p->payload;  proto = IPH_PROTO(iphdr);  prev = NULL;  pcb = raw_pcbs; 802dd86:	681c      	ldr	r4, [r3, #0]  LWIP_UNUSED_ARG(inp);  iphdr = (struct ip_hdr *)p->payload;  proto = IPH_PROTO(iphdr);  prev = NULL; 802dd88:	2500      	movs	r5, #0            eaten = 1;            if (prev != NULL) {            /* move the pcb to the front of raw_pcbs so that is               found faster next time */              prev->next = pcb->next;              pcb->next = raw_pcbs; 802dd8a:	4698      	mov	r8, r3 802dd8c:	e023      	b.n	802ddd6 <raw_input+0x62>  prev = NULL;  pcb = raw_pcbs;  /* loop through all raw pcbs until the packet is eaten by one */  /* this allows multiple pcbs to match against the packet by design */  while ((eaten == 0) && (pcb != NULL)) {    if ((pcb->protocol == proto) && 802dd8e:	7c23      	ldrb	r3, [r4, #16] 802dd90:	454b      	cmp	r3, r9 802dd92:	d118      	bne.n	802ddc6 <raw_input+0x52>        (ip_addr_isany(&pcb->local_ip) || 802dd94:	6823      	ldr	r3, [r4, #0] 802dd96:	b11b      	cbz	r3, 802dda0 <raw_input+0x2c> 802dd98:	f8da 2000 	ldr.w	r2, [sl] 802dd9c:	4293      	cmp	r3, r2 802dd9e:	d112      	bne.n	802ddc6 <raw_input+0x52>      /* broadcast filter? */      if (ip_get_option(pcb, SOF_BROADCAST) || !ip_addr_isbroadcast(¤t_iphdr_dest, inp))#endif /* IP_SOF_BROADCAST_RECV */      {        /* receive callback function available? */        if (pcb->recv != NULL) { 802dda0:	6967      	ldr	r7, [r4, #20] 802dda2:	b187      	cbz	r7, 802ddc6 <raw_input+0x52>          /* the receive callback function did not eat the packet? */          if (pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr()) != 0) { 802dda4:	69a0      	ldr	r0, [r4, #24] 802dda6:	4b11      	ldr	r3, [pc, #68]	; (802ddec <raw_input+0x78>) 802dda8:	4621      	mov	r1, r4 802ddaa:	4632      	mov	r2, r6 802ddac:	47b8      	blx	r7 802ddae:	b150      	cbz	r0, 802ddc6 <raw_input+0x52>            /* receive function ate the packet */            p = NULL;            eaten = 1;            if (prev != NULL) { 802ddb0:	b15d      	cbz	r5, 802ddca <raw_input+0x56>            /* move the pcb to the front of raw_pcbs so that is               found faster next time */              prev->next = pcb->next; 802ddb2:	68e3      	ldr	r3, [r4, #12] 802ddb4:	60eb      	str	r3, [r5, #12]              pcb->next = raw_pcbs; 802ddb6:	f8d8 3000 	ldr.w	r3, [r8]              raw_pcbs = pcb; 802ddba:	f8c8 4000 	str.w	r4, [r8]            eaten = 1;            if (prev != NULL) {            /* move the pcb to the front of raw_pcbs so that is               found faster next time */              prev->next = pcb->next;              pcb->next = raw_pcbs; 802ddbe:	60e3      	str	r3, [r4, #12]        /* receive callback function available? */        if (pcb->recv != NULL) {          /* the receive callback function did not eat the packet? */          if (pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr()) != 0) {            /* receive function ate the packet */            p = NULL; 802ddc0:	2600      	movs	r6, #0            eaten = 1; 802ddc2:	2301      	movs	r3, #1 802ddc4:	e003      	b.n	802ddce <raw_input+0x5a>  pcb = raw_pcbs;  /* loop through all raw pcbs until the packet is eaten by one */  /* this allows multiple pcbs to match against the packet by design */  while ((eaten == 0) && (pcb != NULL)) {    if ((pcb->protocol == proto) &&        (ip_addr_isany(&pcb->local_ip) || 802ddc6:	2300      	movs	r3, #0 802ddc8:	e001      	b.n	802ddce <raw_input+0x5a>        if (pcb->recv != NULL) {          /* the receive callback function did not eat the packet? */          if (pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr()) != 0) {            /* receive function ate the packet */            p = NULL;            eaten = 1; 802ddca:	2301      	movs	r3, #1        /* receive callback function available? */        if (pcb->recv != NULL) {          /* the receive callback function did not eat the packet? */          if (pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr()) != 0) {            /* receive function ate the packet */            p = NULL; 802ddcc:	462e      	mov	r6, r5        /* no receive callback function was set for this raw PCB */      }      /* drop the packet */    }    prev = pcb;    pcb = pcb->next; 802ddce:	68e2      	ldr	r2, [r4, #12] 802ddd0:	4625      	mov	r5, r4  prev = NULL;  pcb = raw_pcbs;  /* loop through all raw pcbs until the packet is eaten by one */  /* this allows multiple pcbs to match against the packet by design */  while ((eaten == 0) && (pcb != NULL)) { 802ddd2:	b92b      	cbnz	r3, 802dde0 <raw_input+0x6c>        /* no receive callback function was set for this raw PCB */      }      /* drop the packet */    }    prev = pcb;    pcb = pcb->next; 802ddd4:	4614      	mov	r4, r2  prev = NULL;  pcb = raw_pcbs;  /* loop through all raw pcbs until the packet is eaten by one */  /* this allows multiple pcbs to match against the packet by design */  while ((eaten == 0) && (pcb != NULL)) { 802ddd6:	2c00      	cmp	r4, #0 802ddd8:	d1d9      	bne.n	802dd8e <raw_input+0x1a> 802ddda:	4620      	mov	r0, r4 802dddc:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 802dde0:	2001      	movs	r0, #1    }    prev = pcb;    pcb = pcb->next;  }  return eaten;} 802dde2:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 802dde6:	bf00      	nop 802dde8:	2000e188 	.word	0x2000e188 802ddec:	2001109c 	.word	0x2001109c 802ddf0:	200110a4 	.word	0x200110a40802ddf4 <tcp_accept_null>:  LWIP_UNUSED_ARG(arg);  LWIP_UNUSED_ARG(pcb);  LWIP_UNUSED_ARG(err);  return ERR_ABRT;} 802ddf4:	f06f 0009 	mvn.w	r0, #9 802ddf8:	4770      	bx	lr 802ddfa:	0000      	movs	r0, r00802ddfc <tcp_new_port>: * * @return a new (free) local TCP port number */static u16_ttcp_new_port(void){ 802ddfc:	4b13      	ldr	r3, [pc, #76]	; (802de4c <tcp_new_port+0x50>) 802ddfe:	b570      	push	{r4, r5, r6, lr} 802de00:	8818      	ldrh	r0, [r3, #0]  if (tcp_port++ == TCP_LOCAL_PORT_RANGE_END) {    tcp_port = TCP_LOCAL_PORT_RANGE_START;  }  /* Check all PCB lists. */  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) {    for(pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) { 802de02:	4d13      	ldr	r5, [pc, #76]	; (802de50 <tcp_new_port+0x54>) * * @return a new (free) local TCP port number */static u16_ttcp_new_port(void){ 802de04:	f44f 4280 	mov.w	r2, #16384	; 0x4000  u8_t i;  u16_t n = 0;  struct tcp_pcb *pcb;  again:  if (tcp_port++ == TCP_LOCAL_PORT_RANGE_END) { 802de08:	f64f 74ff 	movw	r4, #65535	; 0xffff 802de0c:	42a0      	cmp	r0, r4 802de0e:	d002      	beq.n	802de16 <tcp_new_port+0x1a> 802de10:	3001      	adds	r0, #1 802de12:	b280      	uxth	r0, r0 802de14:	e001      	b.n	802de1a <tcp_new_port+0x1e>    tcp_port = TCP_LOCAL_PORT_RANGE_START; 802de16:	f44f 4040 	mov.w	r0, #49152	; 0xc000 802de1a:	2300      	movs	r3, #0  }  /* Check all PCB lists. */  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) {    for(pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) { 802de1c:	5959      	ldr	r1, [r3, r5] 802de1e:	6809      	ldr	r1, [r1, #0] 802de20:	e00b      	b.n	802de3a <tcp_new_port+0x3e>      if (pcb->local_port == tcp_port) { 802de22:	8b4e      	ldrh	r6, [r1, #26] 802de24:	4286      	cmp	r6, r0 802de26:	d107      	bne.n	802de38 <tcp_new_port+0x3c> 802de28:	3a01      	subs	r2, #1 802de2a:	b292      	uxth	r2, r2        if (++n > (TCP_LOCAL_PORT_RANGE_END - TCP_LOCAL_PORT_RANGE_START)) { 802de2c:	2a00      	cmp	r2, #0 802de2e:	d1ed      	bne.n	802de0c <tcp_new_port+0x10> 802de30:	4b06      	ldr	r3, [pc, #24]	; (802de4c <tcp_new_port+0x50>) 802de32:	8018      	strh	r0, [r3, #0]          return 0; 802de34:	4610      	mov	r0, r2 802de36:	bd70      	pop	{r4, r5, r6, pc}  if (tcp_port++ == TCP_LOCAL_PORT_RANGE_END) {    tcp_port = TCP_LOCAL_PORT_RANGE_START;  }  /* Check all PCB lists. */  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) {    for(pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) { 802de38:	68c9      	ldr	r1, [r1, #12] 802de3a:	2900      	cmp	r1, #0 802de3c:	d1f1      	bne.n	802de22 <tcp_new_port+0x26> 802de3e:	3304      	adds	r3, #4again:  if (tcp_port++ == TCP_LOCAL_PORT_RANGE_END) {    tcp_port = TCP_LOCAL_PORT_RANGE_START;  }  /* Check all PCB lists. */  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) { 802de40:	2b10      	cmp	r3, #16 802de42:	d1eb      	bne.n	802de1c <tcp_new_port+0x20> 802de44:	4b01      	ldr	r3, [pc, #4]	; (802de4c <tcp_new_port+0x50>) 802de46:	8018      	strh	r0, [r3, #0]        goto again;      }    }  }  return tcp_port;} 802de48:	bd70      	pop	{r4, r5, r6, pc} 802de4a:	bf00      	nop 802de4c:	200015f0 	.word	0x200015f0 802de50:	0804138c 	.word	0x0804138c0802de54 <tcp_init>:/** * Initialize this module. */voidtcp_init(void){ 802de54:	4770      	bx	lr 802de56:	0000      	movs	r0, r00802de58 <tcp_bind>: *         ERR_VAL if bind failed because the PCB is not in a valid state *         ERR_OK if bound */err_ttcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 802de58:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  int i;  int max_pcb_list = NUM_TCP_PCB_LISTS;  struct tcp_pcb *cpcb;  LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_VAL); 802de5a:	7e03      	ldrb	r3, [r0, #24] *         ERR_VAL if bind failed because the PCB is not in a valid state *         ERR_OK if bound */err_ttcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 802de5c:	4604      	mov	r4, r0 802de5e:	460d      	mov	r5, r1  int i;  int max_pcb_list = NUM_TCP_PCB_LISTS;  struct tcp_pcb *cpcb;  LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_VAL); 802de60:	bb33      	cbnz	r3, 802deb0 <tcp_bind+0x58>  if (ip_get_option(pcb, SOF_REUSEADDR)) {    max_pcb_list = NUM_TCP_PCB_LISTS_NO_TIME_WAIT;  }#endif /* SO_REUSE */  if (port == 0) { 802de62:	b91a      	cbnz	r2, 802de6c <tcp_bind+0x14>    port = tcp_new_port(); 802de64:	f7ff ffca 	bl	802ddfc <tcp_new_port>    if (port == 0) { 802de68:	4602      	mov	r2, r0 802de6a:	b318      	cbz	r0, 802deb4 <tcp_bind+0x5c>    }  }  /* Check if the address already is in use (on all lists) */  for (i = 0; i < max_pcb_list; i++) {    for(cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) { 802de6c:	4f14      	ldr	r7, [pc, #80]	; (802dec0 <tcp_bind+0x68>) *         ERR_VAL if bind failed because the PCB is not in a valid state *         ERR_OK if bound */err_ttcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 802de6e:	2100      	movs	r1, #0    }  }  /* Check if the address already is in use (on all lists) */  for (i = 0; i < max_pcb_list; i++) {    for(cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) { 802de70:	59cb      	ldr	r3, [r1, r7] 802de72:	681b      	ldr	r3, [r3, #0] 802de74:	e00a      	b.n	802de8c <tcp_bind+0x34>      if (cpcb->local_port == port) { 802de76:	8b58      	ldrh	r0, [r3, #26] 802de78:	4290      	cmp	r0, r2 802de7a:	d106      	bne.n	802de8a <tcp_bind+0x32>           tcp_connect. */        if (!ip_get_option(pcb, SOF_REUSEADDR) ||            !ip_get_option(cpcb, SOF_REUSEADDR))#endif /* SO_REUSE */        {          if (ip_addr_isany(&(cpcb->local_ip)) || 802de7c:	681e      	ldr	r6, [r3, #0] 802de7e:	b1de      	cbz	r6, 802deb8 <tcp_bind+0x60> 802de80:	b1d5      	cbz	r5, 802deb8 <tcp_bind+0x60>              ip_addr_isany(ipaddr) || 802de82:	6828      	ldr	r0, [r5, #0] 802de84:	b1c0      	cbz	r0, 802deb8 <tcp_bind+0x60> 802de86:	4286      	cmp	r6, r0 802de88:	d016      	beq.n	802deb8 <tcp_bind+0x60>    }  }  /* Check if the address already is in use (on all lists) */  for (i = 0; i < max_pcb_list; i++) {    for(cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) { 802de8a:	68db      	ldr	r3, [r3, #12] 802de8c:	2b00      	cmp	r3, #0 802de8e:	d1f2      	bne.n	802de76 <tcp_bind+0x1e> 802de90:	3104      	adds	r1, #4      return ERR_BUF;    }  }  /* Check if the address already is in use (on all lists) */  for (i = 0; i < max_pcb_list; i++) { 802de92:	2910      	cmp	r1, #16 802de94:	d1ec      	bne.n	802de70 <tcp_bind+0x18>        }      }    }  }  if (!ip_addr_isany(ipaddr)) { 802de96:	b115      	cbz	r5, 802de9e <tcp_bind+0x46> 802de98:	682b      	ldr	r3, [r5, #0] 802de9a:	b103      	cbz	r3, 802de9e <tcp_bind+0x46>    pcb->local_ip = *ipaddr; 802de9c:	6023      	str	r3, [r4, #0]  }  pcb->local_port = port;  TCP_REG(&tcp_bound_pcbs, pcb); 802de9e:	4b09      	ldr	r3, [pc, #36]	; (802dec4 <tcp_bind+0x6c>)  }  if (!ip_addr_isany(ipaddr)) {    pcb->local_ip = *ipaddr;  }  pcb->local_port = port; 802dea0:	8362      	strh	r2, [r4, #26]  TCP_REG(&tcp_bound_pcbs, pcb); 802dea2:	681a      	ldr	r2, [r3, #0] 802dea4:	601c      	str	r4, [r3, #0] 802dea6:	60e2      	str	r2, [r4, #12] 802dea8:	f002 f8de 	bl	8030068 <tcp_timer_needed>  LWIP_DEBUGF(TCP_DEBUG, ("tcp_bind: bind to port %"U16_F"\n", port));  return ERR_OK; 802deac:	2000      	movs	r0, #0 802deae:	e004      	b.n	802deba <tcp_bind+0x62>{  int i;  int max_pcb_list = NUM_TCP_PCB_LISTS;  struct tcp_pcb *cpcb;  LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_VAL); 802deb0:	20fa      	movs	r0, #250	; 0xfa 802deb2:	e002      	b.n	802deba <tcp_bind+0x62>#endif /* SO_REUSE */  if (port == 0) {    port = tcp_new_port();    if (port == 0) {      return ERR_BUF; 802deb4:	20fe      	movs	r0, #254	; 0xfe 802deb6:	e000      	b.n	802deba <tcp_bind+0x62>#endif /* SO_REUSE */        {          if (ip_addr_isany(&(cpcb->local_ip)) ||              ip_addr_isany(ipaddr) ||              ip_addr_cmp(&(cpcb->local_ip), ipaddr)) {            return ERR_USE; 802deb8:	20f8      	movs	r0, #248	; 0xf8  }  pcb->local_port = port;  TCP_REG(&tcp_bound_pcbs, pcb);  LWIP_DEBUGF(TCP_DEBUG, ("tcp_bind: bind to port %"U16_F"\n", port));  return ERR_OK;} 802deba:	b240      	sxtb	r0, r0 802debc:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802debe:	bf00      	nop 802dec0:	0804138c 	.word	0x0804138c 802dec4:	2001108c 	.word	0x2001108c0802dec8 <tcp_listen_with_backlog>: *       called like this: *             tpcb = tcp_listen(tpcb); */struct tcp_pcb *tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog){ 802dec8:	b538      	push	{r3, r4, r5, lr}  struct tcp_pcb_listen *lpcb;  LWIP_UNUSED_ARG(backlog);  LWIP_ERROR("tcp_listen: pcb already connected", pcb->state == CLOSED, return NULL); 802deca:	7e03      	ldrb	r3, [r0, #24] *       called like this: *             tpcb = tcp_listen(tpcb); */struct tcp_pcb *tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog){ 802decc:	4604      	mov	r4, r0  struct tcp_pcb_listen *lpcb;  LWIP_UNUSED_ARG(backlog);  LWIP_ERROR("tcp_listen: pcb already connected", pcb->state == CLOSED, return NULL); 802dece:	b10b      	cbz	r3, 802ded4 <tcp_listen_with_backlog+0xc> 802ded0:	2000      	movs	r0, #0 802ded2:	bd38      	pop	{r3, r4, r5, pc}        }      }    }  }#endif /* SO_REUSE */  lpcb = (struct tcp_pcb_listen *)memp_malloc(MEMP_TCP_PCB_LISTEN); 802ded4:	2003      	movs	r0, #3 802ded6:	f7ff fcad 	bl	802d834 <memp_malloc>  if (lpcb == NULL) { 802deda:	4605      	mov	r5, r0 802dedc:	2800      	cmp	r0, #0 802dede:	d0f7      	beq.n	802ded0 <tcp_listen_with_backlog+0x8>    return NULL;  }  lpcb->callback_arg = pcb->callback_arg; 802dee0:	6923      	ldr	r3, [r4, #16] 802dee2:	6103      	str	r3, [r0, #16]  lpcb->local_port = pcb->local_port; 802dee4:	8b63      	ldrh	r3, [r4, #26] 802dee6:	8343      	strh	r3, [r0, #26]  lpcb->state = LISTEN; 802dee8:	2301      	movs	r3, #1 802deea:	7603      	strb	r3, [r0, #24]  lpcb->prio = pcb->prio; 802deec:	7e63      	ldrb	r3, [r4, #25] 802deee:	7643      	strb	r3, [r0, #25]  lpcb->so_options = pcb->so_options;  ip_set_option(lpcb, SOF_ACCEPTCONN); 802def0:	7a23      	ldrb	r3, [r4, #8] 802def2:	f043 0302 	orr.w	r3, r3, #2 802def6:	7203      	strb	r3, [r0, #8]  lpcb->ttl = pcb->ttl; 802def8:	7aa3      	ldrb	r3, [r4, #10] 802defa:	7283      	strb	r3, [r0, #10]  lpcb->tos = pcb->tos; 802defc:	7a63      	ldrb	r3, [r4, #9] 802defe:	7243      	strb	r3, [r0, #9]  ip_addr_copy(lpcb->local_ip, pcb->local_ip); 802df00:	6823      	ldr	r3, [r4, #0] 802df02:	6003      	str	r3, [r0, #0]  if (pcb->local_port != 0) { 802df04:	8b63      	ldrh	r3, [r4, #26] 802df06:	b1ab      	cbz	r3, 802df34 <tcp_listen_with_backlog+0x6c>    TCP_RMV(&tcp_bound_pcbs, pcb); 802df08:	4a11      	ldr	r2, [pc, #68]	; (802df50 <tcp_listen_with_backlog+0x88>) 802df0a:	6813      	ldr	r3, [r2, #0] 802df0c:	42a3      	cmp	r3, r4 802df0e:	d101      	bne.n	802df14 <tcp_listen_with_backlog+0x4c> 802df10:	68e3      	ldr	r3, [r4, #12] 802df12:	e00c      	b.n	802df2e <tcp_listen_with_backlog+0x66> 802df14:	4a0f      	ldr	r2, [pc, #60]	; (802df54 <tcp_listen_with_backlog+0x8c>) 802df16:	6013      	str	r3, [r2, #0] 802df18:	e007      	b.n	802df2a <tcp_listen_with_backlog+0x62> 802df1a:	68d9      	ldr	r1, [r3, #12] 802df1c:	42a1      	cmp	r1, r4 802df1e:	d103      	bne.n	802df28 <tcp_listen_with_backlog+0x60> 802df20:	6013      	str	r3, [r2, #0] 802df22:	68e2      	ldr	r2, [r4, #12] 802df24:	60da      	str	r2, [r3, #12] 802df26:	e003      	b.n	802df30 <tcp_listen_with_backlog+0x68> 802df28:	460b      	mov	r3, r1 802df2a:	2b00      	cmp	r3, #0 802df2c:	d1f5      	bne.n	802df1a <tcp_listen_with_backlog+0x52> 802df2e:	6013      	str	r3, [r2, #0] 802df30:	2300      	movs	r3, #0 802df32:	60e3      	str	r3, [r4, #12]  }  memp_free(MEMP_TCP_PCB, pcb); 802df34:	2002      	movs	r0, #2 802df36:	4621      	mov	r1, r4 802df38:	f7ff fc92 	bl	802d860 <memp_free>#if LWIP_CALLBACK_API  lpcb->accept = tcp_accept_null; 802df3c:	4b06      	ldr	r3, [pc, #24]	; (802df58 <tcp_listen_with_backlog+0x90>) 802df3e:	616b      	str	r3, [r5, #20]#endif /* LWIP_CALLBACK_API */#if TCP_LISTEN_BACKLOG  lpcb->accepts_pending = 0;  lpcb->backlog = (backlog ? backlog : 1);#endif /* TCP_LISTEN_BACKLOG */  TCP_REG(&tcp_listen_pcbs.pcbs, (struct tcp_pcb *)lpcb); 802df40:	4b06      	ldr	r3, [pc, #24]	; (802df5c <tcp_listen_with_backlog+0x94>) 802df42:	681a      	ldr	r2, [r3, #0] 802df44:	601d      	str	r5, [r3, #0] 802df46:	60ea      	str	r2, [r5, #12] 802df48:	f002 f88e 	bl	8030068 <tcp_timer_needed>  return (struct tcp_pcb *)lpcb; 802df4c:	4628      	mov	r0, r5} 802df4e:	bd38      	pop	{r3, r4, r5, pc} 802df50:	2001108c 	.word	0x2001108c 802df54:	20011088 	.word	0x20011088 802df58:	0802ddf5 	.word	0x0802ddf5 802df5c:	20011084 	.word	0x200110840802df60 <tcp_update_rcv_ann_wnd>: * * Returns how much extra window would be advertised if we sent an * update now. */u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb){ 802df60:	b530      	push	{r4, r5, lr}  u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd;  if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { 802df62:	6b01      	ldr	r1, [r0, #48]	; 0x30 * Returns how much extra window would be advertised if we sent an * update now. */u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb){  u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; 802df64:	8d84      	ldrh	r4, [r0, #44]	; 0x2c  if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { 802df66:	8ec5      	ldrh	r5, [r0, #54]	; 0x36 * Returns how much extra window would be advertised if we sent an * update now. */u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb){  u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; 802df68:	6a82      	ldr	r2, [r0, #40]	; 0x28 * * Returns how much extra window would be advertised if we sent an * update now. */u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb){ 802df6a:	4603      	mov	r3, r0  u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd;  if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { 802df6c:	f640 3068 	movw	r0, #2920	; 0xb68 802df70:	4285      	cmp	r5, r0 802df72:	bf28      	it	cs 802df74:	4605      	movcs	r5, r0 * Returns how much extra window would be advertised if we sent an * update now. */u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb){  u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; 802df76:	1a60      	subs	r0, r4, r1  if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { 802df78:	1880      	adds	r0, r0, r2 802df7a:	1b45      	subs	r5, r0, r5 802df7c:	2d00      	cmp	r5, #0 802df7e:	db01      	blt.n	802df84 <tcp_update_rcv_ann_wnd+0x24>    /* we can advertise more window */    pcb->rcv_ann_wnd = pcb->rcv_wnd; 802df80:	85dc      	strh	r4, [r3, #46]	; 0x2e    return new_right_edge - pcb->rcv_ann_right_edge; 802df82:	bd30      	pop	{r4, r5, pc}  } else {    if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) { 802df84:	1a50      	subs	r0, r2, r1 802df86:	2800      	cmp	r0, #0 802df88:	f04f 0000 	mov.w	r0, #0 802df8c:	dd01      	ble.n	802df92 <tcp_update_rcv_ann_wnd+0x32>      /* Can happen due to other end sending out of advertised window,       * but within actual available (but not yet advertised) window */      pcb->rcv_ann_wnd = 0; 802df8e:	85d8      	strh	r0, [r3, #46]	; 0x2e 802df90:	bd30      	pop	{r4, r5, pc}    } else {      /* keep the right edge of window constant */      u32_t new_rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt; 802df92:	1a8a      	subs	r2, r1, r2      LWIP_ASSERT("new_rcv_ann_wnd <= 0xffff", new_rcv_ann_wnd <= 0xffff);      pcb->rcv_ann_wnd = (u16_t)new_rcv_ann_wnd; 802df94:	85da      	strh	r2, [r3, #46]	; 0x2e    }    return 0;  }} 802df96:	bd30      	pop	{r4, r5, pc}0802df98 <tcp_recved>:  LWIP_ASSERT("don't call tcp_recved for listen-pcbs",    pcb->state != LISTEN);  LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n",              len <= 0xffff - pcb->rcv_wnd );  pcb->rcv_wnd += len; 802df98:	8d83      	ldrh	r3, [r0, #44]	; 0x2c 802df9a:	18c9      	adds	r1, r1, r3 802df9c:	b289      	uxth	r1, r1  if (pcb->rcv_wnd > TCP_WND) { 802df9e:	f241 63d0 	movw	r3, #5840	; 0x16d0 802dfa2:	4299      	cmp	r1, r3 * @param pcb the tcp_pcb for which data is read * @param len the amount of bytes that have been read by the application */voidtcp_recved(struct tcp_pcb *pcb, u16_t len){ 802dfa4:	b510      	push	{r4, lr}  LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n",              len <= 0xffff - pcb->rcv_wnd );  pcb->rcv_wnd += len;  if (pcb->rcv_wnd > TCP_WND) {    pcb->rcv_wnd = TCP_WND; 802dfa6:	bf8c      	ite	hi 802dfa8:	8583      	strhhi	r3, [r0, #44]	; 0x2c  LWIP_ASSERT("don't call tcp_recved for listen-pcbs",    pcb->state != LISTEN);  LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n",              len <= 0xffff - pcb->rcv_wnd );  pcb->rcv_wnd += len; 802dfaa:	8581      	strhls	r1, [r0, #44]	; 0x2c * @param pcb the tcp_pcb for which data is read * @param len the amount of bytes that have been read by the application */voidtcp_recved(struct tcp_pcb *pcb, u16_t len){ 802dfac:	4604      	mov	r4, r0  pcb->rcv_wnd += len;  if (pcb->rcv_wnd > TCP_WND) {    pcb->rcv_wnd = TCP_WND;  }  wnd_inflation = tcp_update_rcv_ann_wnd(pcb); 802dfae:	f7ff ffd7 	bl	802df60 <tcp_update_rcv_ann_wnd>  /* If the change in the right edge of window is significant (default   * watermark is TCP_WND/4), then send an explicit update now.   * Otherwise wait for a packet to be sent in the normal course of   * events (or more window to be available later) */  if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) { 802dfb2:	f240 53b3 	movw	r3, #1459	; 0x5b3 802dfb6:	4298      	cmp	r0, r3 802dfb8:	dd08      	ble.n	802dfcc <tcp_recved+0x34>    tcp_ack_now(pcb); 802dfba:	7fa3      	ldrb	r3, [r4, #30]    tcp_output(pcb); 802dfbc:	4620      	mov	r0, r4  /* If the change in the right edge of window is significant (default   * watermark is TCP_WND/4), then send an explicit update now.   * Otherwise wait for a packet to be sent in the normal course of   * events (or more window to be available later) */  if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) {    tcp_ack_now(pcb); 802dfbe:	f043 0302 	orr.w	r3, r3, #2 802dfc2:	77a3      	strb	r3, [r4, #30]    tcp_output(pcb);  }  LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n",         len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd));} 802dfc4:	e8bd 4010 	ldmia.w	sp!, {r4, lr}   * watermark is TCP_WND/4), then send an explicit update now.   * Otherwise wait for a packet to be sent in the normal course of   * events (or more window to be available later) */  if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) {    tcp_ack_now(pcb);    tcp_output(pcb); 802dfc8:	f001 bd90 	b.w	802faec <tcp_output> 802dfcc:	bd10      	pop	{r4, pc}0802dfce <tcp_seg_free>: * * @param seg single tcp_seg to free */voidtcp_seg_free(struct tcp_seg *seg){ 802dfce:	b510      	push	{r4, lr}  if (seg != NULL) { 802dfd0:	4604      	mov	r4, r0 802dfd2:	b148      	cbz	r0, 802dfe8 <tcp_seg_free+0x1a>    if (seg->p != NULL) { 802dfd4:	6840      	ldr	r0, [r0, #4] 802dfd6:	b108      	cbz	r0, 802dfdc <tcp_seg_free+0xe>      pbuf_free(seg->p); 802dfd8:	f7ff fd4c 	bl	802da74 <pbuf_free>#if TCP_DEBUG      seg->p = NULL;#endif /* TCP_DEBUG */    }    memp_free(MEMP_TCP_SEG, seg); 802dfdc:	2004      	movs	r0, #4 802dfde:	4621      	mov	r1, r4  }} 802dfe0:	e8bd 4010 	ldmia.w	sp!, {r4, lr}      pbuf_free(seg->p);#if TCP_DEBUG      seg->p = NULL;#endif /* TCP_DEBUG */    }    memp_free(MEMP_TCP_SEG, seg); 802dfe4:	f7ff bc3c 	b.w	802d860 <memp_free> 802dfe8:	bd10      	pop	{r4, pc}0802dfea <tcp_segs_free>: * * @param seg tcp_seg list of TCP segments to free */voidtcp_segs_free(struct tcp_seg *seg){ 802dfea:	b510      	push	{r4, lr}  while (seg != NULL) { 802dfec:	e003      	b.n	802dff6 <tcp_segs_free+0xc>    struct tcp_seg *next = seg->next; 802dfee:	6804      	ldr	r4, [r0, #0]    tcp_seg_free(seg); 802dff0:	f7ff ffed 	bl	802dfce <tcp_seg_free>    seg = next; 802dff4:	4620      	mov	r0, r4 * @param seg tcp_seg list of TCP segments to free */voidtcp_segs_free(struct tcp_seg *seg){  while (seg != NULL) { 802dff6:	2800      	cmp	r0, #0 802dff8:	d1f9      	bne.n	802dfee <tcp_segs_free+0x4>    struct tcp_seg *next = seg->next;    tcp_seg_free(seg);    seg = next;  }} 802dffa:	bd10      	pop	{r4, pc}0802dffc <tcp_arg>:voidtcp_arg(struct tcp_pcb *pcb, void *arg){  /* This function is allowed to be called for both listen pcbs and     connection pcbs. */  pcb->callback_arg = arg; 802dffc:	6101      	str	r1, [r0, #16] 802dffe:	4770      	bx	lr0802e000 <tcp_recv>: */ voidtcp_recv(struct tcp_pcb *pcb, tcp_recv_fn recv){  LWIP_ASSERT("invalid socket state for recv callback", pcb->state != LISTEN);  pcb->recv = recv; 802e000:	67c1      	str	r1, [r0, #124]	; 0x7c 802e002:	4770      	bx	lr0802e004 <tcp_sent>: */ voidtcp_sent(struct tcp_pcb *pcb, tcp_sent_fn sent){  LWIP_ASSERT("invalid socket state for sent callback", pcb->state != LISTEN);  pcb->sent = sent; 802e004:	6781      	str	r1, [r0, #120]	; 0x78 802e006:	4770      	bx	lr0802e008 <tcp_err>: */ voidtcp_err(struct tcp_pcb *pcb, tcp_err_fn err){  LWIP_ASSERT("invalid socket state for err callback", pcb->state != LISTEN);  pcb->errf = err; 802e008:	f8c0 1088 	str.w	r1, [r0, #136]	; 0x88 802e00c:	4770      	bx	lr0802e00e <tcp_accept>:voidtcp_accept(struct tcp_pcb *pcb, tcp_accept_fn accept){  /* This function is allowed to be called for both listen pcbs and     connection pcbs. */  pcb->accept = accept; 802e00e:	6141      	str	r1, [r0, #20] 802e010:	4770      	bx	lr0802e012 <tcp_poll>:voidtcp_poll(struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval){  LWIP_ASSERT("invalid socket state for poll", pcb->state != LISTEN);#if LWIP_CALLBACK_API  pcb->poll = poll; 802e012:	f8c0 1084 	str.w	r1, [r0, #132]	; 0x84#else /* LWIP_CALLBACK_API */    LWIP_UNUSED_ARG(poll);#endif /* LWIP_CALLBACK_API */    pcb->pollinterval = interval; 802e016:	f880 2020 	strb.w	r2, [r0, #32] 802e01a:	4770      	bx	lr0802e01c <tcp_pcb_purge>: * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! */voidtcp_pcb_purge(struct tcp_pcb *pcb){  if (pcb->state != CLOSED && 802e01c:	7e03      	ldrb	r3, [r0, #24] * * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! */voidtcp_pcb_purge(struct tcp_pcb *pcb){ 802e01e:	b510      	push	{r4, lr} 802e020:	4604      	mov	r4, r0  if (pcb->state != CLOSED && 802e022:	b1bb      	cbz	r3, 802e054 <tcp_pcb_purge+0x38> 802e024:	2b0a      	cmp	r3, #10 802e026:	d015      	beq.n	802e054 <tcp_pcb_purge+0x38>     pcb->state != TIME_WAIT && 802e028:	2b01      	cmp	r3, #1 802e02a:	d013      	beq.n	802e054 <tcp_pcb_purge+0x38>      }    }#endif /* TCP_LISTEN_BACKLOG */    if (pcb->refused_data != NULL) { 802e02c:	6f40      	ldr	r0, [r0, #116]	; 0x74 802e02e:	b118      	cbz	r0, 802e038 <tcp_pcb_purge+0x1c>      LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n"));      pbuf_free(pcb->refused_data); 802e030:	f7ff fd20 	bl	802da74 <pbuf_free>      pcb->refused_data = NULL; 802e034:	2300      	movs	r3, #0 802e036:	6763      	str	r3, [r4, #116]	; 0x74    pcb->ooseq = NULL;#endif /* TCP_QUEUE_OOSEQ */    /* Stop the retransmission timer as it will expect data on unacked       queue if it fires */    pcb->rtime = -1; 802e038:	f64f 73ff 	movw	r3, #65535	; 0xffff 802e03c:	86a3      	strh	r3, [r4, #52]	; 0x34    tcp_segs_free(pcb->unsent); 802e03e:	6ee0      	ldr	r0, [r4, #108]	; 0x6c 802e040:	f7ff ffd3 	bl	802dfea <tcp_segs_free>    tcp_segs_free(pcb->unacked); 802e044:	6f20      	ldr	r0, [r4, #112]	; 0x70 802e046:	f7ff ffd0 	bl	802dfea <tcp_segs_free>    pcb->unacked = pcb->unsent = NULL; 802e04a:	2300      	movs	r3, #0 802e04c:	66e3      	str	r3, [r4, #108]	; 0x6c 802e04e:	6723      	str	r3, [r4, #112]	; 0x70#if TCP_OVERSIZE    pcb->unsent_oversize = 0; 802e050:	f8a4 306a 	strh.w	r3, [r4, #106]	; 0x6a 802e054:	bd10      	pop	{r4, pc} 802e056:	0000      	movs	r0, r00802e058 <tcp_slowtmr>:  u8_t pcb_reset;       /* flag if a RST should be sent when removing */  err_t err;  err = ERR_OK;  ++tcp_ticks; 802e058:	4b9c      	ldr	r3, [pc, #624]	; (802e2cc <tcp_slowtmr+0x274>) * * Automatically called from tcp_tmr(). */voidtcp_slowtmr(void){ 802e05a:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}  u8_t pcb_reset;       /* flag if a RST should be sent when removing */  err_t err;  err = ERR_OK;  ++tcp_ticks; 802e05e:	681a      	ldr	r2, [r3, #0]      err_arg = pcb->callback_arg;      pcb2 = pcb;      pcb = pcb->next;      memp_free(MEMP_TCP_PCB, pcb2);      tcp_active_pcbs_changed = 0; 802e060:	f8df 8284 	ldr.w	r8, [pc, #644]	; 802e2e8 <tcp_slowtmr+0x290>  u8_t pcb_reset;       /* flag if a RST should be sent when removing */  err_t err;  err = ERR_OK;  ++tcp_ticks; 802e064:	3201      	adds	r2, #1 802e066:	601a      	str	r2, [r3, #0]  ++tcp_timer_ctr; 802e068:	4b99      	ldr	r3, [pc, #612]	; (802e2d0 <tcp_slowtmr+0x278>) 802e06a:	781a      	ldrb	r2, [r3, #0] 802e06c:	3201      	adds	r2, #1 802e06e:	701a      	strb	r2, [r3, #0] 802e070:	46c1      	mov	r9, r8tcp_slowtmr_start:  /* Steps through all of the active PCBs. */  prev = NULL;  pcb = tcp_active_pcbs; 802e072:	4b98      	ldr	r3, [pc, #608]	; (802e2d4 <tcp_slowtmr+0x27c>)  while (pcb != NULL) {    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n"));    LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);    LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);    LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);    if (pcb->last_timer == tcp_timer_ctr) { 802e074:	f8df a258 	ldr.w	sl, [pc, #600]	; 802e2d0 <tcp_slowtmr+0x278>  ++tcp_timer_ctr;tcp_slowtmr_start:  /* Steps through all of the active PCBs. */  prev = NULL;  pcb = tcp_active_pcbs; 802e078:	681c      	ldr	r4, [r3, #0]  ++tcp_ticks;  ++tcp_timer_ctr;tcp_slowtmr_start:  /* Steps through all of the active PCBs. */  prev = NULL; 802e07a:	2600      	movs	r6, #0  pcb = tcp_active_pcbs;  if (pcb == NULL) {    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n"));  }  while (pcb != NULL) { 802e07c:	e0ff      	b.n	802e27e <tcp_slowtmr+0x226>    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n"));    LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);    LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);    LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);    if (pcb->last_timer == tcp_timer_ctr) { 802e07e:	f89a 3000 	ldrb.w	r3, [sl] 802e082:	f894 2021 	ldrb.w	r2, [r4, #33]	; 0x21 802e086:	429a      	cmp	r2, r3 802e088:	d101      	bne.n	802e08e <tcp_slowtmr+0x36>      /* skip this pcb, we have already processed it */      pcb = pcb->next; 802e08a:	68e7      	ldr	r7, [r4, #12]      continue; 802e08c:	e0f6      	b.n	802e27c <tcp_slowtmr+0x224>    pcb->last_timer = tcp_timer_ctr;    pcb_remove = 0;    pcb_reset = 0;    if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) { 802e08e:	7e21      	ldrb	r1, [r4, #24]    if (pcb->last_timer == tcp_timer_ctr) {      /* skip this pcb, we have already processed it */      pcb = pcb->next;      continue;    }    pcb->last_timer = tcp_timer_ctr; 802e090:	f884 3021 	strb.w	r3, [r4, #33]	; 0x21    pcb_remove = 0;    pcb_reset = 0;    if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) { 802e094:	2902      	cmp	r1, #2 802e096:	f894 2046 	ldrb.w	r2, [r4, #70]	; 0x46 802e09a:	d101      	bne.n	802e0a0 <tcp_slowtmr+0x48> 802e09c:	2a06      	cmp	r2, #6 802e09e:	d051      	beq.n	802e144 <tcp_slowtmr+0xec>      ++pcb_remove;      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n"));    }    else if (pcb->nrtx == TCP_MAXRTX) { 802e0a0:	2a0c      	cmp	r2, #12 802e0a2:	d04f      	beq.n	802e144 <tcp_slowtmr+0xec>      ++pcb_remove;      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));    } else {      if (pcb->persist_backoff > 0) { 802e0a4:	f894 3091 	ldrb.w	r3, [r4, #145]	; 0x91 802e0a8:	b1c3      	cbz	r3, 802e0dc <tcp_slowtmr+0x84>        /* If snd_wnd is zero, use persist timer to send 1 byte probes         * instead of using the standard retransmission mechanism. */        pcb->persist_cnt++;        if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { 802e0aa:	498b      	ldr	r1, [pc, #556]	; (802e2d8 <tcp_slowtmr+0x280>)      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));    } else {      if (pcb->persist_backoff > 0) {        /* If snd_wnd is zero, use persist timer to send 1 byte probes         * instead of using the standard retransmission mechanism. */        pcb->persist_cnt++; 802e0ac:	f894 2090 	ldrb.w	r2, [r4, #144]	; 0x90        if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { 802e0b0:	18c9      	adds	r1, r1, r3      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));    } else {      if (pcb->persist_backoff > 0) {        /* If snd_wnd is zero, use persist timer to send 1 byte probes         * instead of using the standard retransmission mechanism. */        pcb->persist_cnt++; 802e0b2:	3201      	adds	r2, #1        if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { 802e0b4:	f811 1c01 	ldrb.w	r1, [r1, #-1]      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));    } else {      if (pcb->persist_backoff > 0) {        /* If snd_wnd is zero, use persist timer to send 1 byte probes         * instead of using the standard retransmission mechanism. */        pcb->persist_cnt++; 802e0b8:	b2d2      	uxtb	r2, r2        if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { 802e0ba:	4291      	cmp	r1, r2      LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n"));    } else {      if (pcb->persist_backoff > 0) {        /* If snd_wnd is zero, use persist timer to send 1 byte probes         * instead of using the standard retransmission mechanism. */        pcb->persist_cnt++; 802e0bc:	f884 2090 	strb.w	r2, [r4, #144]	; 0x90        if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { 802e0c0:	d900      	bls.n	802e0c4 <tcp_slowtmr+0x6c> 802e0c2:	e03d      	b.n	802e140 <tcp_slowtmr+0xe8>          pcb->persist_cnt = 0; 802e0c4:	2200      	movs	r2, #0          if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { 802e0c6:	2b06      	cmp	r3, #6      if (pcb->persist_backoff > 0) {        /* If snd_wnd is zero, use persist timer to send 1 byte probes         * instead of using the standard retransmission mechanism. */        pcb->persist_cnt++;        if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) {          pcb->persist_cnt = 0; 802e0c8:	f884 2090 	strb.w	r2, [r4, #144]	; 0x90          if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { 802e0cc:	d802      	bhi.n	802e0d4 <tcp_slowtmr+0x7c>            pcb->persist_backoff++; 802e0ce:	3301      	adds	r3, #1 802e0d0:	f884 3091 	strb.w	r3, [r4, #145]	; 0x91          }          tcp_zero_window_probe(pcb); 802e0d4:	4620      	mov	r0, r4 802e0d6:	f001 ff04 	bl	802fee2 <tcp_zero_window_probe> 802e0da:	e031      	b.n	802e140 <tcp_slowtmr+0xe8>        }      } else {        /* Increase the retransmission timer if it is running */        if(pcb->rtime >= 0) { 802e0dc:	8ea3      	ldrh	r3, [r4, #52]	; 0x34 802e0de:	0418      	lsls	r0, r3, #16 802e0e0:	d401      	bmi.n	802e0e6 <tcp_slowtmr+0x8e>          ++pcb->rtime; 802e0e2:	3301      	adds	r3, #1 802e0e4:	86a3      	strh	r3, [r4, #52]	; 0x34        }        if (pcb->unacked != NULL && pcb->rtime >= pcb->rto) { 802e0e6:	6f23      	ldr	r3, [r4, #112]	; 0x70 802e0e8:	b353      	cbz	r3, 802e140 <tcp_slowtmr+0xe8> 802e0ea:	f9b4 0034 	ldrsh.w	r0, [r4, #52]	; 0x34 802e0ee:	f9b4 3044 	ldrsh.w	r3, [r4, #68]	; 0x44 802e0f2:	4298      	cmp	r0, r3 802e0f4:	db24      	blt.n	802e140 <tcp_slowtmr+0xe8>                                      " pcb->rto %"S16_F"\n",                                      pcb->rtime, pcb->rto));          /* Double retransmission time-out unless we are trying to           * connect to somebody (i.e., we are in SYN_SENT). */          if (pcb->state != SYN_SENT) { 802e0f6:	2902      	cmp	r1, #2 802e0f8:	d00b      	beq.n	802e112 <tcp_slowtmr+0xba>            pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx]; 802e0fa:	f9b4 1040 	ldrsh.w	r1, [r4, #64]	; 0x40 802e0fe:	f9b4 3042 	ldrsh.w	r3, [r4, #66]	; 0x42 802e102:	eb03 03e1 	add.w	r3, r3, r1, asr #3 802e106:	4975      	ldr	r1, [pc, #468]	; (802e2dc <tcp_slowtmr+0x284>) 802e108:	5c8a      	ldrb	r2, [r1, r2] 802e10a:	fa03 f302 	lsl.w	r3, r3, r2 802e10e:	f8a4 3044 	strh.w	r3, [r4, #68]	; 0x44          }          /* Reset the retransmission timer. */          pcb->rtime = 0; 802e112:	2300      	movs	r3, #0          /* Reduce congestion window and ssthresh. */          eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); 802e114:	f8b4 104c 	ldrh.w	r1, [r4, #76]	; 0x4c          if (pcb->state != SYN_SENT) {            pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx];          }          /* Reset the retransmission timer. */          pcb->rtime = 0; 802e118:	86a3      	strh	r3, [r4, #52]	; 0x34          /* Reduce congestion window and ssthresh. */          eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); 802e11a:	f8b4 3060 	ldrh.w	r3, [r4, #96]	; 0x60          pcb->ssthresh = eff_wnd >> 1; 802e11e:	4299      	cmp	r1, r3 802e120:	bf28      	it	cs 802e122:	4619      	movcs	r1, r3          if (pcb->ssthresh < (pcb->mss << 1)) { 802e124:	8ee3      	ldrh	r3, [r4, #54]	; 0x36          /* Reset the retransmission timer. */          pcb->rtime = 0;          /* Reduce congestion window and ssthresh. */          eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);          pcb->ssthresh = eff_wnd >> 1; 802e126:	0849      	lsrs	r1, r1, #1          if (pcb->ssthresh < (pcb->mss << 1)) { 802e128:	005a      	lsls	r2, r3, #1 802e12a:	4291      	cmp	r1, r2          /* Reset the retransmission timer. */          pcb->rtime = 0;          /* Reduce congestion window and ssthresh. */          eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);          pcb->ssthresh = eff_wnd >> 1; 802e12c:	f8a4 104e 	strh.w	r1, [r4, #78]	; 0x4e          if (pcb->ssthresh < (pcb->mss << 1)) {            pcb->ssthresh = (pcb->mss << 1);          }          pcb->cwnd = pcb->mss; 802e130:	f8a4 304c 	strh.w	r3, [r4, #76]	; 0x4c          /* Reduce congestion window and ssthresh. */          eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);          pcb->ssthresh = eff_wnd >> 1;          if (pcb->ssthresh < (pcb->mss << 1)) {            pcb->ssthresh = (pcb->mss << 1); 802e134:	bfb8      	it	lt 802e136:	f8a4 204e 	strhlt.w	r2, [r4, #78]	; 0x4e                                       " ssthresh %"U16_F"\n",                                       pcb->cwnd, pcb->ssthresh));           /* The following needs to be called AFTER cwnd is set to one             mss - STJ */          tcp_rexmit_rto(pcb); 802e13a:	4620      	mov	r0, r4 802e13c:	f001 fe40 	bl	802fdc0 <tcp_rexmit_rto>      pcb = pcb->next;      continue;    }    pcb->last_timer = tcp_timer_ctr;    pcb_remove = 0; 802e140:	2500      	movs	r5, #0 802e142:	e000      	b.n	802e146 <tcp_slowtmr+0xee>    pcb_reset = 0;    if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) {      ++pcb_remove; 802e144:	2501      	movs	r5, #1          tcp_rexmit_rto(pcb);        }      }    }    /* Check if this PCB has stayed too long in FIN-WAIT-2 */    if (pcb->state == FIN_WAIT_2) { 802e146:	7e23      	ldrb	r3, [r4, #24] 802e148:	2b06      	cmp	r3, #6 802e14a:	d10c      	bne.n	802e166 <tcp_slowtmr+0x10e>      /* If this PCB is in FIN_WAIT_2 because of SHUT_WR don't let it time out. */      if (pcb->flags & TF_RXCLOSED) { 802e14c:	7fa2      	ldrb	r2, [r4, #30] 802e14e:	f002 0210 	and.w	r2, r2, #16 802e152:	b2d2      	uxtb	r2, r2 802e154:	b13a      	cbz	r2, 802e166 <tcp_slowtmr+0x10e>        /* PCB was fully closed (either through close() or SHUT_RDWR):           normal FIN-WAIT timeout handling. */        if ((u32_t)(tcp_ticks - pcb->tmr) > 802e156:	4a5d      	ldr	r2, [pc, #372]	; (802e2cc <tcp_slowtmr+0x274>) 802e158:	6811      	ldr	r1, [r2, #0] 802e15a:	6a62      	ldr	r2, [r4, #36]	; 0x24 802e15c:	1a8a      	subs	r2, r1, r2 802e15e:	2a28      	cmp	r2, #40	; 0x28 802e160:	d901      	bls.n	802e166 <tcp_slowtmr+0x10e>            TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) {          ++pcb_remove; 802e162:	3501      	adds	r5, #1 802e164:	b2ed      	uxtb	r5, r5        }      }    }    /* Check if KEEPALIVE should be sent */    if(ip_get_option(pcb, SOF_KEEPALIVE) && 802e166:	7a27      	ldrb	r7, [r4, #8] 802e168:	f007 0708 	and.w	r7, r7, #8 802e16c:	b2ff      	uxtb	r7, r7 802e16e:	b34f      	cbz	r7, 802e1c4 <tcp_slowtmr+0x16c> 802e170:	2b04      	cmp	r3, #4 802e172:	d001      	beq.n	802e178 <tcp_slowtmr+0x120>       ((pcb->state == ESTABLISHED) || 802e174:	2b07      	cmp	r3, #7 802e176:	d124      	bne.n	802e1c2 <tcp_slowtmr+0x16a>        (pcb->state == CLOSE_WAIT))) {      if((u32_t)(tcp_ticks - pcb->tmr) > 802e178:	4b54      	ldr	r3, [pc, #336]	; (802e2cc <tcp_slowtmr+0x274>)         (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) 802e17a:	f8d4 008c 	ldr.w	r0, [r4, #140]	; 0x8c    /* Check if KEEPALIVE should be sent */    if(ip_get_option(pcb, SOF_KEEPALIVE) &&       ((pcb->state == ESTABLISHED) ||        (pcb->state == CLOSE_WAIT))) {      if((u32_t)(tcp_ticks - pcb->tmr) > 802e17e:	681a      	ldr	r2, [r3, #0] 802e180:	6a63      	ldr	r3, [r4, #36]	; 0x24 802e182:	1ad2      	subs	r2, r2, r3         (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) 802e184:	f500 2324 	add.w	r3, r0, #671744	; 0xa4000 802e188:	f603 43b8 	addw	r3, r3, #3256	; 0xcb8 802e18c:	f44f 71fa 	mov.w	r1, #500	; 0x1f4 802e190:	fbb3 f3f1 	udiv	r3, r3, r1    /* Check if KEEPALIVE should be sent */    if(ip_get_option(pcb, SOF_KEEPALIVE) &&       ((pcb->state == ESTABLISHED) ||        (pcb->state == CLOSE_WAIT))) {      if((u32_t)(tcp_ticks - pcb->tmr) > 802e194:	429a      	cmp	r2, r3 802e196:	d903      	bls.n	802e1a0 <tcp_slowtmr+0x148>      {        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to %"U16_F".%"U16_F".%"U16_F".%"U16_F".\n",                                ip4_addr1_16(&pcb->remote_ip), ip4_addr2_16(&pcb->remote_ip),                                ip4_addr3_16(&pcb->remote_ip), ip4_addr4_16(&pcb->remote_ip)));                ++pcb_remove; 802e198:	3501      	adds	r5, #1 802e19a:	b2ed      	uxtb	r5, r5        ++pcb_reset; 802e19c:	2701      	movs	r7, #1 802e19e:	e011      	b.n	802e1c4 <tcp_slowtmr+0x16c>      }      else if((u32_t)(tcp_ticks - pcb->tmr) >               (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb)) 802e1a0:	f894 3092 	ldrb.w	r3, [r4, #146]	; 0x92 802e1a4:	4f4e      	ldr	r7, [pc, #312]	; (802e2e0 <tcp_slowtmr+0x288>) 802e1a6:	fb07 0003 	mla	r0, r7, r3, r0              / TCP_SLOW_INTERVAL) 802e1aa:	fbb0 f1f1 	udiv	r1, r0, r1                                ip4_addr3_16(&pcb->remote_ip), ip4_addr4_16(&pcb->remote_ip)));                ++pcb_remove;        ++pcb_reset;      }      else if((u32_t)(tcp_ticks - pcb->tmr) >  802e1ae:	428a      	cmp	r2, r1 802e1b0:	d907      	bls.n	802e1c2 <tcp_slowtmr+0x16a>              (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb))              / TCP_SLOW_INTERVAL)      {        tcp_keepalive(pcb); 802e1b2:	4620      	mov	r0, r4 802e1b4:	f001 fe76 	bl	802fea4 <tcp_keepalive>        pcb->keep_cnt_sent++; 802e1b8:	f894 3092 	ldrb.w	r3, [r4, #146]	; 0x92 802e1bc:	3301      	adds	r3, #1 802e1be:	f884 3092 	strb.w	r3, [r4, #146]	; 0x92      continue;    }    pcb->last_timer = tcp_timer_ctr;    pcb_remove = 0;    pcb_reset = 0; 802e1c2:	2700      	movs	r7, #0      LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n"));    }#endif /* TCP_QUEUE_OOSEQ */    /* Check if this PCB has stayed too long in SYN-RCVD */    if (pcb->state == SYN_RCVD) { 802e1c4:	7e23      	ldrb	r3, [r4, #24] 802e1c6:	2b03      	cmp	r3, #3 802e1c8:	d108      	bne.n	802e1dc <tcp_slowtmr+0x184>      if ((u32_t)(tcp_ticks - pcb->tmr) > 802e1ca:	4b40      	ldr	r3, [pc, #256]	; (802e2cc <tcp_slowtmr+0x274>) 802e1cc:	681a      	ldr	r2, [r3, #0] 802e1ce:	6a63      	ldr	r3, [r4, #36]	; 0x24 802e1d0:	1ad3      	subs	r3, r2, r3 802e1d2:	2b28      	cmp	r3, #40	; 0x28 802e1d4:	d90a      	bls.n	802e1ec <tcp_slowtmr+0x194>          TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) {        ++pcb_remove; 802e1d6:	3501      	adds	r5, #1 802e1d8:	b2ed      	uxtb	r5, r5 802e1da:	e007      	b.n	802e1ec <tcp_slowtmr+0x194>        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n"));      }    }    /* Check if this PCB has stayed too long in LAST-ACK */    if (pcb->state == LAST_ACK) { 802e1dc:	2b09      	cmp	r3, #9 802e1de:	d105      	bne.n	802e1ec <tcp_slowtmr+0x194>      if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { 802e1e0:	4b3a      	ldr	r3, [pc, #232]	; (802e2cc <tcp_slowtmr+0x274>) 802e1e2:	681a      	ldr	r2, [r3, #0] 802e1e4:	6a63      	ldr	r3, [r4, #36]	; 0x24 802e1e6:	1ad3      	subs	r3, r2, r3 802e1e8:	2bf0      	cmp	r3, #240	; 0xf0 802e1ea:	d800      	bhi.n	802e1ee <tcp_slowtmr+0x196>        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n"));      }    }    /* If the PCB should be removed, do it. */    if (pcb_remove) { 802e1ec:	b345      	cbz	r5, 802e240 <tcp_slowtmr+0x1e8>      struct tcp_pcb *pcb2;      tcp_err_fn err_fn;      void *err_arg;      tcp_pcb_purge(pcb); 802e1ee:	4620      	mov	r0, r4 802e1f0:	f7ff ff14 	bl	802e01c <tcp_pcb_purge> 802e1f4:	68e3      	ldr	r3, [r4, #12]      /* Remove PCB from tcp_active_pcbs list. */      if (prev != NULL) { 802e1f6:	b10e      	cbz	r6, 802e1fc <tcp_slowtmr+0x1a4>        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs);        prev->next = pcb->next; 802e1f8:	60f3      	str	r3, [r6, #12] 802e1fa:	e001      	b.n	802e200 <tcp_slowtmr+0x1a8>      } else {        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb);        tcp_active_pcbs = pcb->next; 802e1fc:	4a35      	ldr	r2, [pc, #212]	; (802e2d4 <tcp_slowtmr+0x27c>) 802e1fe:	6013      	str	r3, [r2, #0]      }      if (pcb_reset) { 802e200:	b14f      	cbz	r7, 802e216 <tcp_slowtmr+0x1be>        tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, 802e202:	8b63      	ldrh	r3, [r4, #26] 802e204:	9300      	str	r3, [sp, #0] 802e206:	8ba3      	ldrh	r3, [r4, #28] 802e208:	9301      	str	r3, [sp, #4] 802e20a:	6d20      	ldr	r0, [r4, #80]	; 0x50 802e20c:	6aa1      	ldr	r1, [r4, #40]	; 0x28 802e20e:	4622      	mov	r2, r4 802e210:	1d23      	adds	r3, r4, #4 802e212:	f001 fd8f 	bl	802fd34 <tcp_rst>          pcb->local_port, pcb->remote_port);      }      err_fn = pcb->errf; 802e216:	f8d4 5088 	ldr.w	r5, [r4, #136]	; 0x88      err_arg = pcb->callback_arg; 802e21a:	f8d4 b010 	ldr.w	fp, [r4, #16]      pcb2 = pcb;      pcb = pcb->next; 802e21e:	68e7      	ldr	r7, [r4, #12]      memp_free(MEMP_TCP_PCB, pcb2); 802e220:	2002      	movs	r0, #2 802e222:	4621      	mov	r1, r4 802e224:	f7ff fb1c 	bl	802d860 <memp_free>      tcp_active_pcbs_changed = 0; 802e228:	2300      	movs	r3, #0 802e22a:	f888 3000 	strb.w	r3, [r8]      TCP_EVENT_ERR(err_fn, err_arg, ERR_ABRT); 802e22e:	b11d      	cbz	r5, 802e238 <tcp_slowtmr+0x1e0> 802e230:	4658      	mov	r0, fp 802e232:	f06f 0109 	mvn.w	r1, #9 802e236:	47a8      	blx	r5      if (tcp_active_pcbs_changed) { 802e238:	f899 3000 	ldrb.w	r3, [r9] 802e23c:	b1f3      	cbz	r3, 802e27c <tcp_slowtmr+0x224> 802e23e:	e718      	b.n	802e072 <tcp_slowtmr+0x1a>      /* get the 'next' element now and work with 'prev' below (in case of abort) */      prev = pcb;      pcb = pcb->next;      /* We check if we should poll the connection. */      ++prev->polltmr; 802e240:	7fe3      	ldrb	r3, [r4, #31]      if (prev->polltmr >= prev->pollinterval) { 802e242:	f894 2020 	ldrb.w	r2, [r4, #32]        goto tcp_slowtmr_start;      }    } else {      /* get the 'next' element now and work with 'prev' below (in case of abort) */      prev = pcb;      pcb = pcb->next; 802e246:	68e7      	ldr	r7, [r4, #12]      /* We check if we should poll the connection. */      ++prev->polltmr; 802e248:	3301      	adds	r3, #1 802e24a:	b2db      	uxtb	r3, r3      if (prev->polltmr >= prev->pollinterval) { 802e24c:	429a      	cmp	r2, r3      /* get the 'next' element now and work with 'prev' below (in case of abort) */      prev = pcb;      pcb = pcb->next;      /* We check if we should poll the connection. */      ++prev->polltmr; 802e24e:	77e3      	strb	r3, [r4, #31]      if (prev->polltmr >= prev->pollinterval) { 802e250:	d813      	bhi.n	802e27a <tcp_slowtmr+0x222>        prev->polltmr = 0;        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n"));        tcp_active_pcbs_changed = 0;        TCP_EVENT_POLL(prev, err); 802e252:	f8d4 3084 	ldr.w	r3, [r4, #132]	; 0x84      pcb = pcb->next;      /* We check if we should poll the connection. */      ++prev->polltmr;      if (prev->polltmr >= prev->pollinterval) {        prev->polltmr = 0; 802e256:	77e5      	strb	r5, [r4, #31]        LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n"));        tcp_active_pcbs_changed = 0; 802e258:	f888 5000 	strb.w	r5, [r8]        TCP_EVENT_POLL(prev, err); 802e25c:	b11b      	cbz	r3, 802e266 <tcp_slowtmr+0x20e> 802e25e:	6920      	ldr	r0, [r4, #16] 802e260:	4621      	mov	r1, r4 802e262:	4798      	blx	r3 802e264:	e000      	b.n	802e268 <tcp_slowtmr+0x210> 802e266:	4628      	mov	r0, r5        if (tcp_active_pcbs_changed) { 802e268:	f899 3000 	ldrb.w	r3, [r9] 802e26c:	2b00      	cmp	r3, #0 802e26e:	f47f af00 	bne.w	802e072 <tcp_slowtmr+0x1a>          goto tcp_slowtmr_start;        }        /* if err == ERR_ABRT, 'prev' is already deallocated */        if (err == ERR_OK) { 802e272:	b910      	cbnz	r0, 802e27a <tcp_slowtmr+0x222>          tcp_output(prev); 802e274:	4620      	mov	r0, r4 802e276:	f001 fc39 	bl	802faec <tcp_output>        TCP_EVENT_POLL(prev, err);        if (tcp_active_pcbs_changed) {          goto tcp_slowtmr_start;        }        /* if err == ERR_ABRT, 'prev' is already deallocated */        if (err == ERR_OK) { 802e27a:	4626      	mov	r6, r4      prev = pcb;      pcb = pcb->next;      /* We check if we should poll the connection. */      ++prev->polltmr;      if (prev->polltmr >= prev->pollinterval) { 802e27c:	463c      	mov	r4, r7  prev = NULL;  pcb = tcp_active_pcbs;  if (pcb == NULL) {    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n"));  }  while (pcb != NULL) { 802e27e:	2c00      	cmp	r4, #0 802e280:	f47f aefd 	bne.w	802e07e <tcp_slowtmr+0x26>  }    /* Steps through all of the TIME-WAIT PCBs. */  prev = NULL;  pcb = tcp_tw_pcbs; 802e284:	4b17      	ldr	r3, [pc, #92]	; (802e2e4 <tcp_slowtmr+0x28c>)  while (pcb != NULL) {    LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);    pcb_remove = 0;    /* Check if this PCB has stayed long enough in TIME-WAIT */    if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { 802e286:	4e11      	ldr	r6, [pc, #68]	; (802e2cc <tcp_slowtmr+0x274>)  }    /* Steps through all of the TIME-WAIT PCBs. */  prev = NULL;  pcb = tcp_tw_pcbs; 802e288:	681d      	ldr	r5, [r3, #0]        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);        prev->next = pcb->next;      } else {        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);        tcp_tw_pcbs = pcb->next; 802e28a:	461f      	mov	r7, r3    /* Steps through all of the TIME-WAIT PCBs. */  prev = NULL;  pcb = tcp_tw_pcbs;  while (pcb != NULL) { 802e28c:	e00f      	b.n	802e2ae <tcp_slowtmr+0x256>    LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);    pcb_remove = 0;    /* Check if this PCB has stayed long enough in TIME-WAIT */    if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { 802e28e:	6832      	ldr	r2, [r6, #0] 802e290:	6a6b      	ldr	r3, [r5, #36]	; 0x24 802e292:	1ad3      	subs	r3, r2, r3 802e294:	2bf0      	cmp	r3, #240	; 0xf0 802e296:	d810      	bhi.n	802e2ba <tcp_slowtmr+0x262> 802e298:	e00c      	b.n	802e2b4 <tcp_slowtmr+0x25c>      struct tcp_pcb *pcb2;      tcp_pcb_purge(pcb);      /* Remove PCB from tcp_tw_pcbs list. */      if (prev != NULL) {        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);        prev->next = pcb->next; 802e29a:	60e2      	str	r2, [r4, #12] 802e29c:	e000      	b.n	802e2a0 <tcp_slowtmr+0x248>      } else {        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);        tcp_tw_pcbs = pcb->next; 802e29e:	603a      	str	r2, [r7, #0]      }      pcb2 = pcb;      pcb = pcb->next;      memp_free(MEMP_TCP_PCB, pcb2); 802e2a0:	4629      	mov	r1, r5 802e2a2:	2002      	movs	r0, #2        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);        tcp_tw_pcbs = pcb->next;      }      pcb2 = pcb;      pcb = pcb->next; 802e2a4:	f8d5 800c 	ldr.w	r8, [r5, #12]      memp_free(MEMP_TCP_PCB, pcb2); 802e2a8:	f7ff fada 	bl	802d860 <memp_free>        /* This PCB was the first. */        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);        tcp_tw_pcbs = pcb->next;      }      pcb2 = pcb;      pcb = pcb->next; 802e2ac:	4645      	mov	r5, r8    /* Steps through all of the TIME-WAIT PCBs. */  prev = NULL;  pcb = tcp_tw_pcbs;  while (pcb != NULL) { 802e2ae:	2d00      	cmp	r5, #0 802e2b0:	d1ed      	bne.n	802e28e <tcp_slowtmr+0x236> 802e2b2:	e009      	b.n	802e2c8 <tcp_slowtmr+0x270>      pcb2 = pcb;      pcb = pcb->next;      memp_free(MEMP_TCP_PCB, pcb2);    } else {      prev = pcb;      pcb = pcb->next; 802e2b4:	462c      	mov	r4, r5 802e2b6:	68ed      	ldr	r5, [r5, #12] 802e2b8:	e7f9      	b.n	802e2ae <tcp_slowtmr+0x256>    /* If the PCB should be removed, do it. */    if (pcb_remove) {      struct tcp_pcb *pcb2;      tcp_pcb_purge(pcb); 802e2ba:	4628      	mov	r0, r5 802e2bc:	f7ff feae 	bl	802e01c <tcp_pcb_purge> 802e2c0:	68ea      	ldr	r2, [r5, #12]      /* Remove PCB from tcp_tw_pcbs list. */      if (prev != NULL) { 802e2c2:	2c00      	cmp	r4, #0 802e2c4:	d1e9      	bne.n	802e29a <tcp_slowtmr+0x242> 802e2c6:	e7ea      	b.n	802e29e <tcp_slowtmr+0x246>    } else {      prev = pcb;      pcb = pcb->next;    }  }} 802e2c8:	e8bd 8ffe 	ldmia.w	sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 802e2cc:	20011080 	.word	0x20011080 802e2d0:	2000e18d 	.word	0x2000e18d 802e2d4:	2001107c 	.word	0x2001107c 802e2d8:	080413a9 	.word	0x080413a9 802e2dc:	0804139c 	.word	0x0804139c 802e2e0:	000124f8 	.word	0x000124f8 802e2e4:	20011090 	.word	0x20011090 802e2e8:	20011078 	.word	0x200110780802e2ec <tcp_pcb_remove>: * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! */voidtcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb){  TCP_RMV(pcblist, pcb); 802e2ec:	6803      	ldr	r3, [r0, #0] 802e2ee:	428b      	cmp	r3, r1 * @param pcblist PCB list to purge. * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! */voidtcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb){ 802e2f0:	b510      	push	{r4, lr} 802e2f2:	460c      	mov	r4, r1  TCP_RMV(pcblist, pcb); 802e2f4:	d102      	bne.n	802e2fc <tcp_pcb_remove+0x10> 802e2f6:	68cb      	ldr	r3, [r1, #12] 802e2f8:	6003      	str	r3, [r0, #0] 802e2fa:	e00d      	b.n	802e318 <tcp_pcb_remove+0x2c> 802e2fc:	4a11      	ldr	r2, [pc, #68]	; (802e344 <tcp_pcb_remove+0x58>) 802e2fe:	6013      	str	r3, [r2, #0] 802e300:	e007      	b.n	802e312 <tcp_pcb_remove+0x26> 802e302:	68d9      	ldr	r1, [r3, #12] 802e304:	42a1      	cmp	r1, r4 802e306:	d103      	bne.n	802e310 <tcp_pcb_remove+0x24> 802e308:	6013      	str	r3, [r2, #0] 802e30a:	68e2      	ldr	r2, [r4, #12] 802e30c:	60da      	str	r2, [r3, #12] 802e30e:	e003      	b.n	802e318 <tcp_pcb_remove+0x2c> 802e310:	460b      	mov	r3, r1 802e312:	2b00      	cmp	r3, #0 802e314:	d1f5      	bne.n	802e302 <tcp_pcb_remove+0x16> 802e316:	6013      	str	r3, [r2, #0] 802e318:	2300      	movs	r3, #0 802e31a:	60e3      	str	r3, [r4, #12]  tcp_pcb_purge(pcb); 802e31c:	4620      	mov	r0, r4 802e31e:	f7ff fe7d 	bl	802e01c <tcp_pcb_purge>    /* if there is an outstanding delayed ACKs, send it */  if (pcb->state != TIME_WAIT && 802e322:	7e23      	ldrb	r3, [r4, #24] 802e324:	2b0a      	cmp	r3, #10 802e326:	d00a      	beq.n	802e33e <tcp_pcb_remove+0x52> 802e328:	2b01      	cmp	r3, #1 802e32a:	d008      	beq.n	802e33e <tcp_pcb_remove+0x52>     pcb->state != LISTEN &&     pcb->flags & TF_ACK_DELAY) { 802e32c:	7fa3      	ldrb	r3, [r4, #30]  tcp_pcb_purge(pcb);    /* if there is an outstanding delayed ACKs, send it */  if (pcb->state != TIME_WAIT &&     pcb->state != LISTEN && 802e32e:	07da      	lsls	r2, r3, #31 802e330:	d505      	bpl.n	802e33e <tcp_pcb_remove+0x52>     pcb->flags & TF_ACK_DELAY) {    pcb->flags |= TF_ACK_NOW; 802e332:	f043 0302 	orr.w	r3, r3, #2 802e336:	77a3      	strb	r3, [r4, #30]    tcp_output(pcb); 802e338:	4620      	mov	r0, r4 802e33a:	f001 fbd7 	bl	802faec <tcp_output>#if TCP_QUEUE_OOSEQ    LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL);#endif /* TCP_QUEUE_OOSEQ */  }  pcb->state = CLOSED; 802e33e:	2300      	movs	r3, #0 802e340:	7623      	strb	r3, [r4, #24] 802e342:	bd10      	pop	{r4, pc} 802e344:	20011088 	.word	0x200110880802e348 <tcp_abandon>:  LWIP_ASSERT("don't call tcp_abort/tcp_abandon for listen-pcbs",    pcb->state != LISTEN);  /* Figure out on which TCP PCB list we are, and remove us. If we     are in an active state, call the receive function associated with     the PCB with a NULL argument, and send an RST to the remote end. */  if (pcb->state == TIME_WAIT) { 802e348:	7e03      	ldrb	r3, [r0, #24] 802e34a:	2b0a      	cmp	r3, #10 * @param pcb the tcp_pcb to abort * @param reset boolean to indicate whether a reset should be sent */voidtcp_abandon(struct tcp_pcb *pcb, int reset){ 802e34c:	e92d 43f7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr} 802e350:	4604      	mov	r4, r0 802e352:	4689      	mov	r9, r1  LWIP_ASSERT("don't call tcp_abort/tcp_abandon for listen-pcbs",    pcb->state != LISTEN);  /* Figure out on which TCP PCB list we are, and remove us. If we     are in an active state, call the receive function associated with     the PCB with a NULL argument, and send an RST to the remote end. */  if (pcb->state == TIME_WAIT) { 802e354:	d10a      	bne.n	802e36c <tcp_abandon+0x24>    tcp_pcb_remove(&tcp_tw_pcbs, pcb); 802e356:	4621      	mov	r1, r4 802e358:	481b      	ldr	r0, [pc, #108]	; (802e3c8 <tcp_abandon+0x80>) 802e35a:	f7ff ffc7 	bl	802e2ec <tcp_pcb_remove>    memp_free(MEMP_TCP_PCB, pcb); 802e35e:	2002      	movs	r0, #2 802e360:	4621      	mov	r1, r4      tcp_rst(seqno, ackno, &pcb->local_ip, &pcb->remote_ip, pcb->local_port, pcb->remote_port);    }    memp_free(MEMP_TCP_PCB, pcb);    TCP_EVENT_ERR(errf, errf_arg, ERR_ABRT);  }} 802e362:	b003      	add	sp, #12 802e364:	e8bd 43f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, lr}  /* Figure out on which TCP PCB list we are, and remove us. If we     are in an active state, call the receive function associated with     the PCB with a NULL argument, and send an RST to the remote end. */  if (pcb->state == TIME_WAIT) {    tcp_pcb_remove(&tcp_tw_pcbs, pcb);    memp_free(MEMP_TCP_PCB, pcb); 802e368:	f7ff ba7a 	b.w	802d860 <memp_free>  } else {    seqno = pcb->snd_nxt; 802e36c:	f8d0 8050 	ldr.w	r8, [r0, #80]	; 0x50    ackno = pcb->rcv_nxt; 802e370:	6a87      	ldr	r7, [r0, #40]	; 0x28#if LWIP_CALLBACK_API    errf = pcb->errf; 802e372:	f8d0 5088 	ldr.w	r5, [r0, #136]	; 0x88#endif /* LWIP_CALLBACK_API */    errf_arg = pcb->callback_arg; 802e376:	6906      	ldr	r6, [r0, #16]    TCP_PCB_REMOVE_ACTIVE(pcb); 802e378:	4814      	ldr	r0, [pc, #80]	; (802e3cc <tcp_abandon+0x84>) 802e37a:	4621      	mov	r1, r4 802e37c:	f7ff ffb6 	bl	802e2ec <tcp_pcb_remove> 802e380:	4b13      	ldr	r3, [pc, #76]	; (802e3d0 <tcp_abandon+0x88>)    if (pcb->unacked != NULL) { 802e382:	6f20      	ldr	r0, [r4, #112]	; 0x70    ackno = pcb->rcv_nxt;#if LWIP_CALLBACK_API    errf = pcb->errf;#endif /* LWIP_CALLBACK_API */    errf_arg = pcb->callback_arg;    TCP_PCB_REMOVE_ACTIVE(pcb); 802e384:	2201      	movs	r2, #1 802e386:	701a      	strb	r2, [r3, #0]    if (pcb->unacked != NULL) { 802e388:	b108      	cbz	r0, 802e38e <tcp_abandon+0x46>      tcp_segs_free(pcb->unacked); 802e38a:	f7ff fe2e 	bl	802dfea <tcp_segs_free>    }    if (pcb->unsent != NULL) { 802e38e:	6ee0      	ldr	r0, [r4, #108]	; 0x6c 802e390:	b108      	cbz	r0, 802e396 <tcp_abandon+0x4e>      tcp_segs_free(pcb->unsent); 802e392:	f7ff fe2a 	bl	802dfea <tcp_segs_free>#if TCP_QUEUE_OOSEQ        if (pcb->ooseq != NULL) {      tcp_segs_free(pcb->ooseq);    }#endif /* TCP_QUEUE_OOSEQ */    if (reset) { 802e396:	f1b9 0f00 	cmp.w	r9, #0 802e39a:	d009      	beq.n	802e3b0 <tcp_abandon+0x68>      LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n"));      tcp_rst(seqno, ackno, &pcb->local_ip, &pcb->remote_ip, pcb->local_port, pcb->remote_port); 802e39c:	8b63      	ldrh	r3, [r4, #26] 802e39e:	9300      	str	r3, [sp, #0] 802e3a0:	8ba3      	ldrh	r3, [r4, #28] 802e3a2:	4640      	mov	r0, r8 802e3a4:	9301      	str	r3, [sp, #4] 802e3a6:	4639      	mov	r1, r7 802e3a8:	4622      	mov	r2, r4 802e3aa:	1d23      	adds	r3, r4, #4 802e3ac:	f001 fcc2 	bl	802fd34 <tcp_rst>    }    memp_free(MEMP_TCP_PCB, pcb); 802e3b0:	2002      	movs	r0, #2 802e3b2:	4621      	mov	r1, r4 802e3b4:	f7ff fa54 	bl	802d860 <memp_free>    TCP_EVENT_ERR(errf, errf_arg, ERR_ABRT); 802e3b8:	b11d      	cbz	r5, 802e3c2 <tcp_abandon+0x7a> 802e3ba:	4630      	mov	r0, r6 802e3bc:	f06f 0109 	mvn.w	r1, #9 802e3c0:	47a8      	blx	r5  }} 802e3c2:	b003      	add	sp, #12 802e3c4:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc} 802e3c8:	20011090 	.word	0x20011090 802e3cc:	2001107c 	.word	0x2001107c 802e3d0:	20011078 	.word	0x200110780802e3d4 <tcp_abort>: * @param pcb the tcp pcb to abort */voidtcp_abort(struct tcp_pcb *pcb){  tcp_abandon(pcb, 1); 802e3d4:	2101      	movs	r1, #1 802e3d6:	f7ff bfb7 	b.w	802e348 <tcp_abandon> 802e3da:	0000      	movs	r0, r00802e3dc <tcp_close_shutdown>: * @return ERR_OK if connection has been closed *         another err_t if closing failed and pcb is not freed */static err_ttcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data){ 802e3dc:	b537      	push	{r0, r1, r2, r4, r5, lr} 802e3de:	4604      	mov	r4, r0  err_t err;  if (rst_on_unacked_data && ((pcb->state == ESTABLISHED) || (pcb->state == CLOSE_WAIT))) { 802e3e0:	2900      	cmp	r1, #0 802e3e2:	d043      	beq.n	802e46c <tcp_close_shutdown+0x90> 802e3e4:	7e03      	ldrb	r3, [r0, #24] 802e3e6:	2b04      	cmp	r3, #4 802e3e8:	d001      	beq.n	802e3ee <tcp_close_shutdown+0x12> 802e3ea:	2b07      	cmp	r3, #7 802e3ec:	d13e      	bne.n	802e46c <tcp_close_shutdown+0x90>    if ((pcb->refused_data != NULL) || (pcb->rcv_wnd != TCP_WND)) { 802e3ee:	6f63      	ldr	r3, [r4, #116]	; 0x74 802e3f0:	b923      	cbnz	r3, 802e3fc <tcp_close_shutdown+0x20> 802e3f2:	8da2      	ldrh	r2, [r4, #44]	; 0x2c 802e3f4:	f241 63d0 	movw	r3, #5840	; 0x16d0 802e3f8:	429a      	cmp	r2, r3 802e3fa:	d037      	beq.n	802e46c <tcp_close_shutdown+0x90>         side about this. */      LWIP_ASSERT("pcb->flags & TF_RXCLOSED", pcb->flags & TF_RXCLOSED);      /* don't call tcp_abort here: we must not deallocate the pcb since         that might not be expected when calling tcp_close */      tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, 802e3fc:	8b63      	ldrh	r3, [r4, #26] 802e3fe:	6d20      	ldr	r0, [r4, #80]	; 0x50 802e400:	9300      	str	r3, [sp, #0] 802e402:	8ba3      	ldrh	r3, [r4, #28] 802e404:	6aa1      	ldr	r1, [r4, #40]	; 0x28 802e406:	9301      	str	r3, [sp, #4] 802e408:	4622      	mov	r2, r4 802e40a:	1d23      	adds	r3, r4, #4 802e40c:	f001 fc92 	bl	802fd34 <tcp_rst>        pcb->local_port, pcb->remote_port);      tcp_pcb_purge(pcb); 802e410:	4620      	mov	r0, r4 802e412:	f7ff fe03 	bl	802e01c <tcp_pcb_purge>      TCP_RMV_ACTIVE(pcb); 802e416:	4a42      	ldr	r2, [pc, #264]	; (802e520 <tcp_close_shutdown+0x144>) 802e418:	6813      	ldr	r3, [r2, #0] 802e41a:	42a3      	cmp	r3, r4 802e41c:	d101      	bne.n	802e422 <tcp_close_shutdown+0x46> 802e41e:	68e3      	ldr	r3, [r4, #12] 802e420:	e00c      	b.n	802e43c <tcp_close_shutdown+0x60> 802e422:	4a40      	ldr	r2, [pc, #256]	; (802e524 <tcp_close_shutdown+0x148>) 802e424:	6013      	str	r3, [r2, #0] 802e426:	e007      	b.n	802e438 <tcp_close_shutdown+0x5c> 802e428:	68d9      	ldr	r1, [r3, #12] 802e42a:	42a1      	cmp	r1, r4 802e42c:	d103      	bne.n	802e436 <tcp_close_shutdown+0x5a> 802e42e:	6013      	str	r3, [r2, #0] 802e430:	68e2      	ldr	r2, [r4, #12] 802e432:	60da      	str	r2, [r3, #12] 802e434:	e003      	b.n	802e43e <tcp_close_shutdown+0x62> 802e436:	460b      	mov	r3, r1 802e438:	2b00      	cmp	r3, #0 802e43a:	d1f5      	bne.n	802e428 <tcp_close_shutdown+0x4c> 802e43c:	6013      	str	r3, [r2, #0] 802e43e:	4b3a      	ldr	r3, [pc, #232]	; (802e528 <tcp_close_shutdown+0x14c>) 802e440:	2201      	movs	r2, #1 802e442:	701a      	strb	r2, [r3, #0]      if (pcb->state == ESTABLISHED) { 802e444:	7e23      	ldrb	r3, [r4, #24]         that might not be expected when calling tcp_close */      tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip,        pcb->local_port, pcb->remote_port);      tcp_pcb_purge(pcb);      TCP_RMV_ACTIVE(pcb); 802e446:	2500      	movs	r5, #0      if (pcb->state == ESTABLISHED) { 802e448:	2b04      	cmp	r3, #4         that might not be expected when calling tcp_close */      tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip,        pcb->local_port, pcb->remote_port);      tcp_pcb_purge(pcb);      TCP_RMV_ACTIVE(pcb); 802e44a:	60e5      	str	r5, [r4, #12]      if (pcb->state == ESTABLISHED) { 802e44c:	d108      	bne.n	802e460 <tcp_close_shutdown+0x84>        /* move to TIME_WAIT since we close actively */        pcb->state = TIME_WAIT; 802e44e:	230a      	movs	r3, #10 802e450:	7623      	strb	r3, [r4, #24]        TCP_REG(&tcp_tw_pcbs, pcb); 802e452:	4b36      	ldr	r3, [pc, #216]	; (802e52c <tcp_close_shutdown+0x150>) 802e454:	681a      	ldr	r2, [r3, #0] 802e456:	601c      	str	r4, [r3, #0] 802e458:	60e2      	str	r2, [r4, #12] 802e45a:	f001 fe05 	bl	8030068 <tcp_timer_needed> 802e45e:	e003      	b.n	802e468 <tcp_close_shutdown+0x8c>      } else {        /* CLOSE_WAIT: deallocate the pcb since we already sent a RST for it */        memp_free(MEMP_TCP_PCB, pcb); 802e460:	2002      	movs	r0, #2 802e462:	4621      	mov	r1, r4 802e464:	f7ff f9fc 	bl	802d860 <memp_free>      }      return ERR_OK; 802e468:	4628      	mov	r0, r5 802e46a:	e051      	b.n	802e510 <tcp_close_shutdown+0x134>    }  }  switch (pcb->state) { 802e46c:	7e23      	ldrb	r3, [r4, #24] 802e46e:	2b07      	cmp	r3, #7 802e470:	d853      	bhi.n	802e51a <tcp_close_shutdown+0x13e> 802e472:	e8df f003 	tbb	[pc, r3] 802e476:	1e04      	.short	0x1e04 802e478:	523c3527 	.word	0x523c3527 802e47c:	4452      	.short	0x4452     * Calling tcp_close() with a pcb that has already been closed, (i.e. twice)     * or for a pcb that has been used and then entered the CLOSED state      * is erroneous, but this should never happen as the pcb has in those cases     * been freed, and so any remaining handles are bogus. */    err = ERR_OK;    if (pcb->local_port != 0) { 802e47e:	8b63      	ldrh	r3, [r4, #26] 802e480:	b1ab      	cbz	r3, 802e4ae <tcp_close_shutdown+0xd2>      TCP_RMV(&tcp_bound_pcbs, pcb); 802e482:	4a2b      	ldr	r2, [pc, #172]	; (802e530 <tcp_close_shutdown+0x154>) 802e484:	6813      	ldr	r3, [r2, #0] 802e486:	42a3      	cmp	r3, r4 802e488:	d101      	bne.n	802e48e <tcp_close_shutdown+0xb2> 802e48a:	68e3      	ldr	r3, [r4, #12] 802e48c:	e00c      	b.n	802e4a8 <tcp_close_shutdown+0xcc> 802e48e:	4a25      	ldr	r2, [pc, #148]	; (802e524 <tcp_close_shutdown+0x148>) 802e490:	6013      	str	r3, [r2, #0] 802e492:	e007      	b.n	802e4a4 <tcp_close_shutdown+0xc8> 802e494:	68d9      	ldr	r1, [r3, #12] 802e496:	42a1      	cmp	r1, r4 802e498:	d103      	bne.n	802e4a2 <tcp_close_shutdown+0xc6> 802e49a:	6013      	str	r3, [r2, #0] 802e49c:	68e2      	ldr	r2, [r4, #12] 802e49e:	60da      	str	r2, [r3, #12] 802e4a0:	e003      	b.n	802e4aa <tcp_close_shutdown+0xce> 802e4a2:	460b      	mov	r3, r1 802e4a4:	2b00      	cmp	r3, #0 802e4a6:	d1f5      	bne.n	802e494 <tcp_close_shutdown+0xb8> 802e4a8:	6013      	str	r3, [r2, #0] 802e4aa:	2300      	movs	r3, #0 802e4ac:	60e3      	str	r3, [r4, #12]    }    memp_free(MEMP_TCP_PCB, pcb); 802e4ae:	2002      	movs	r0, #2 802e4b0:	e004      	b.n	802e4bc <tcp_close_shutdown+0xe0>    pcb = NULL;    break;  case LISTEN:    err = ERR_OK;    tcp_pcb_remove(&tcp_listen_pcbs.pcbs, pcb); 802e4b2:	4820      	ldr	r0, [pc, #128]	; (802e534 <tcp_close_shutdown+0x158>) 802e4b4:	4621      	mov	r1, r4 802e4b6:	f7ff ff19 	bl	802e2ec <tcp_pcb_remove>    memp_free(MEMP_TCP_PCB_LISTEN, pcb); 802e4ba:	2003      	movs	r0, #3 802e4bc:	4621      	mov	r1, r4 802e4be:	f7ff f9cf 	bl	802d860 <memp_free>    pcb = NULL;    break; 802e4c2:	e02a      	b.n	802e51a <tcp_close_shutdown+0x13e>  case SYN_SENT:    err = ERR_OK;    TCP_PCB_REMOVE_ACTIVE(pcb); 802e4c4:	4621      	mov	r1, r4 802e4c6:	4816      	ldr	r0, [pc, #88]	; (802e520 <tcp_close_shutdown+0x144>) 802e4c8:	f7ff ff10 	bl	802e2ec <tcp_pcb_remove> 802e4cc:	4b16      	ldr	r3, [pc, #88]	; (802e528 <tcp_close_shutdown+0x14c>) 802e4ce:	2201      	movs	r2, #1    memp_free(MEMP_TCP_PCB, pcb); 802e4d0:	2002      	movs	r0, #2 802e4d2:	4621      	mov	r1, r4    memp_free(MEMP_TCP_PCB_LISTEN, pcb);    pcb = NULL;    break;  case SYN_SENT:    err = ERR_OK;    TCP_PCB_REMOVE_ACTIVE(pcb); 802e4d4:	701a      	strb	r2, [r3, #0]    memp_free(MEMP_TCP_PCB, pcb); 802e4d6:	f7ff f9c3 	bl	802d860 <memp_free>    pcb = NULL;    snmp_inc_tcpattemptfails(); 802e4da:	f004 f8af 	bl	803263c <snmp_inc_tcpattemptfails>    break; 802e4de:	e01c      	b.n	802e51a <tcp_close_shutdown+0x13e>  case SYN_RCVD:    err = tcp_send_fin(pcb); 802e4e0:	4620      	mov	r0, r4 802e4e2:	f001 fabe 	bl	802fa62 <tcp_send_fin>    if (err == ERR_OK) { 802e4e6:	b998      	cbnz	r0, 802e510 <tcp_close_shutdown+0x134>      snmp_inc_tcpattemptfails(); 802e4e8:	f004 f8a8 	bl	803263c <snmp_inc_tcpattemptfails> 802e4ec:	e005      	b.n	802e4fa <tcp_close_shutdown+0x11e>      pcb->state = FIN_WAIT_1;    }    break;  case ESTABLISHED:    err = tcp_send_fin(pcb); 802e4ee:	4620      	mov	r0, r4 802e4f0:	f001 fab7 	bl	802fa62 <tcp_send_fin>    if (err == ERR_OK) { 802e4f4:	b960      	cbnz	r0, 802e510 <tcp_close_shutdown+0x134>      snmp_inc_tcpestabresets(); 802e4f6:	f004 f8a9 	bl	803264c <snmp_inc_tcpestabresets>      pcb->state = FIN_WAIT_1; 802e4fa:	2305      	movs	r3, #5 802e4fc:	e006      	b.n	802e50c <tcp_close_shutdown+0x130>    }    break;  case CLOSE_WAIT:    err = tcp_send_fin(pcb); 802e4fe:	4620      	mov	r0, r4 802e500:	f001 faaf 	bl	802fa62 <tcp_send_fin>    if (err == ERR_OK) { 802e504:	b920      	cbnz	r0, 802e510 <tcp_close_shutdown+0x134>      snmp_inc_tcpestabresets(); 802e506:	f004 f8a1 	bl	803264c <snmp_inc_tcpestabresets>      pcb->state = LAST_ACK; 802e50a:	2309      	movs	r3, #9 802e50c:	7623      	strb	r3, [r4, #24] 802e50e:	e001      	b.n	802e514 <tcp_close_shutdown+0x138> 802e510:	b240      	sxtb	r0, r0 802e512:	e004      	b.n	802e51e <tcp_close_shutdown+0x142>       returns (unsent data is sent from tcp timer functions, also), we don't care       for the return value of tcp_output for now. */    /* @todo: When implementing SO_LINGER, this must be changed somehow:       If SOF_LINGER is set, the data should be sent and acked before close returns.       This can only be valid for sequential APIs, not for the raw API. */    tcp_output(pcb); 802e514:	4620      	mov	r0, r4 802e516:	f001 fae9 	bl	802faec <tcp_output> 802e51a:	2000      	movs	r0, #0 802e51c:	e7f8      	b.n	802e510 <tcp_close_shutdown+0x134>  }  return err;} 802e51e:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 802e520:	2001107c 	.word	0x2001107c 802e524:	20011088 	.word	0x20011088 802e528:	20011078 	.word	0x20011078 802e52c:	20011090 	.word	0x20011090 802e530:	2001108c 	.word	0x2001108c 802e534:	20011084 	.word	0x200110840802e538 <tcp_close>:#if TCP_DEBUG  LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in "));  tcp_debug_print_state(pcb->state);#endif /* TCP_DEBUG */  if (pcb->state != LISTEN) { 802e538:	7e03      	ldrb	r3, [r0, #24] 802e53a:	2b01      	cmp	r3, #1 802e53c:	d003      	beq.n	802e546 <tcp_close+0xe>    /* Set a flag not to receive any more data... */    pcb->flags |= TF_RXCLOSED; 802e53e:	7f83      	ldrb	r3, [r0, #30] 802e540:	f043 0310 	orr.w	r3, r3, #16 802e544:	7783      	strb	r3, [r0, #30]  }  /* ... and close */  return tcp_close_shutdown(pcb, 1); 802e546:	2101      	movs	r1, #1 802e548:	f7ff bf48 	b.w	802e3dc <tcp_close_shutdown>0802e54c <tcp_recv_null>: * Default receive callback that is called if the user didn't register * a recv callback for the pcb. */err_ttcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err){ 802e54c:	b510      	push	{r4, lr} 802e54e:	4608      	mov	r0, r1  LWIP_UNUSED_ARG(arg);  if (p != NULL) { 802e550:	4614      	mov	r4, r2 802e552:	b132      	cbz	r2, 802e562 <tcp_recv_null+0x16>    tcp_recved(pcb, p->tot_len); 802e554:	8911      	ldrh	r1, [r2, #8] 802e556:	f7ff fd1f 	bl	802df98 <tcp_recved>    pbuf_free(p); 802e55a:	4620      	mov	r0, r4 802e55c:	f7ff fa8a 	bl	802da74 <pbuf_free> 802e560:	e004      	b.n	802e56c <tcp_recv_null+0x20>  } else if (err == ERR_OK) { 802e562:	b91b      	cbnz	r3, 802e56c <tcp_recv_null+0x20>    return tcp_close(pcb);  }  return ERR_OK;} 802e564:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  LWIP_UNUSED_ARG(arg);  if (p != NULL) {    tcp_recved(pcb, p->tot_len);    pbuf_free(p);  } else if (err == ERR_OK) {    return tcp_close(pcb); 802e568:	f7ff bfe6 	b.w	802e538 <tcp_close>  }  return ERR_OK;} 802e56c:	2000      	movs	r0, #0 802e56e:	bd10      	pop	{r4, pc}0802e570 <tcp_process_refused_data>:}/** Pass pcb->refused_data to the recv callback */err_ttcp_process_refused_data(struct tcp_pcb *pcb){ 802e570:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  err_t err;  u8_t refused_flags = pcb->refused_data->flags; 802e572:	6f45      	ldr	r5, [r0, #116]	; 0x74     closes the pcb */  struct pbuf *refused_data = pcb->refused_data;  pcb->refused_data = NULL;  /* Notify again application with data previously received. */  LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n"));  TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err); 802e574:	6fc6      	ldr	r6, [r0, #124]	; 0x7c/** Pass pcb->refused_data to the recv callback */err_ttcp_process_refused_data(struct tcp_pcb *pcb){  err_t err;  u8_t refused_flags = pcb->refused_data->flags; 802e576:	7b6f      	ldrb	r7, [r5, #13]  /* set pcb->refused_data to NULL in case the callback frees it and then     closes the pcb */  struct pbuf *refused_data = pcb->refused_data;  pcb->refused_data = NULL; 802e578:	2300      	movs	r3, #0}/** Pass pcb->refused_data to the recv callback */err_ttcp_process_refused_data(struct tcp_pcb *pcb){ 802e57a:	4604      	mov	r4, r0  err_t err;  u8_t refused_flags = pcb->refused_data->flags;  /* set pcb->refused_data to NULL in case the callback frees it and then     closes the pcb */  struct pbuf *refused_data = pcb->refused_data;  pcb->refused_data = NULL; 802e57c:	6743      	str	r3, [r0, #116]	; 0x74  /* Notify again application with data previously received. */  LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n"));  TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err); 802e57e:	b126      	cbz	r6, 802e58a <tcp_process_refused_data+0x1a> 802e580:	4621      	mov	r1, r4 802e582:	462a      	mov	r2, r5 802e584:	6900      	ldr	r0, [r0, #16] 802e586:	47b0      	blx	r6 802e588:	e005      	b.n	802e596 <tcp_process_refused_data+0x26> 802e58a:	4630      	mov	r0, r6 802e58c:	4621      	mov	r1, r4 802e58e:	462a      	mov	r2, r5 802e590:	4633      	mov	r3, r6 802e592:	f7ff ffdb 	bl	802e54c <tcp_recv_null>  if (err == ERR_OK) { 802e596:	b9b0      	cbnz	r0, 802e5c6 <tcp_process_refused_data+0x56>    /* did refused_data include a FIN? */    if (refused_flags & PBUF_FLAG_TCP_FIN) { 802e598:	f007 0720 	and.w	r7, r7, #32 802e59c:	b2ff      	uxtb	r7, r7 802e59e:	b1bf      	cbz	r7, 802e5d0 <tcp_process_refused_data+0x60>      /* correct rcv_wnd as the application won't call tcp_recved()         for the FIN's seqno */      if (pcb->rcv_wnd != TCP_WND) { 802e5a0:	8da3      	ldrh	r3, [r4, #44]	; 0x2c 802e5a2:	f241 62d0 	movw	r2, #5840	; 0x16d0 802e5a6:	4293      	cmp	r3, r2 802e5a8:	d001      	beq.n	802e5ae <tcp_process_refused_data+0x3e>        pcb->rcv_wnd++; 802e5aa:	3301      	adds	r3, #1 802e5ac:	85a3      	strh	r3, [r4, #44]	; 0x2c      }      TCP_EVENT_CLOSED(pcb, err); 802e5ae:	6fe5      	ldr	r5, [r4, #124]	; 0x7c 802e5b0:	b905      	cbnz	r5, 802e5b4 <tcp_process_refused_data+0x44> 802e5b2:	e00c      	b.n	802e5ce <tcp_process_refused_data+0x5e> 802e5b4:	2200      	movs	r2, #0 802e5b6:	6920      	ldr	r0, [r4, #16] 802e5b8:	4621      	mov	r1, r4 802e5ba:	4613      	mov	r3, r2 802e5bc:	47a8      	blx	r5      if (err == ERR_ABRT) { 802e5be:	300a      	adds	r0, #10 802e5c0:	d105      	bne.n	802e5ce <tcp_process_refused_data+0x5e>        return ERR_ABRT; 802e5c2:	20f6      	movs	r0, #246	; 0xf6 802e5c4:	e004      	b.n	802e5d0 <tcp_process_refused_data+0x60>      }    }  } else if (err == ERR_ABRT) { 802e5c6:	b240      	sxtb	r0, r0 802e5c8:	300a      	adds	r0, #10 802e5ca:	d0fa      	beq.n	802e5c2 <tcp_process_refused_data+0x52>       segment contains data). */    LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n"));    return ERR_ABRT;  } else {    /* data is still refused, pbuf is still valid (go on for ACK-only packets) */    pcb->refused_data = refused_data; 802e5cc:	6765      	str	r5, [r4, #116]	; 0x74  }  return ERR_OK; 802e5ce:	2000      	movs	r0, #0} 802e5d0:	b240      	sxtb	r0, r0 802e5d2:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}0802e5d4 <tcp_fasttmr>: * * Automatically called from tcp_tmr(). */voidtcp_fasttmr(void){ 802e5d4:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}  struct tcp_pcb *pcb;  ++tcp_timer_ctr; 802e5d8:	4b18      	ldr	r3, [pc, #96]	; (802e63c <tcp_fasttmr+0x68>)tcp_fasttmr_start:  pcb = tcp_active_pcbs; 802e5da:	4f19      	ldr	r7, [pc, #100]	; (802e640 <tcp_fasttmr+0x6c>)voidtcp_fasttmr(void){  struct tcp_pcb *pcb;  ++tcp_timer_ctr; 802e5dc:	781a      	ldrb	r2, [r3, #0] 802e5de:	3201      	adds	r2, #1 802e5e0:	701a      	strb	r2, [r3, #0]tcp_fasttmr_start:  pcb = tcp_active_pcbs;  while(pcb != NULL) {    if (pcb->last_timer != tcp_timer_ctr) { 802e5e2:	4698      	mov	r8, r3  struct tcp_pcb *pcb;  ++tcp_timer_ctr;tcp_fasttmr_start:  pcb = tcp_active_pcbs; 802e5e4:	683c      	ldr	r4, [r7, #0]      next = pcb->next;      /* If there is data which was previously "refused" by upper layer */      if (pcb->refused_data != NULL) {        tcp_active_pcbs_changed = 0; 802e5e6:	4d17      	ldr	r5, [pc, #92]	; (802e644 <tcp_fasttmr+0x70>) 802e5e8:	2600      	movs	r6, #0  ++tcp_timer_ctr;tcp_fasttmr_start:  pcb = tcp_active_pcbs;  while(pcb != NULL) { 802e5ea:	e022      	b.n	802e632 <tcp_fasttmr+0x5e>    if (pcb->last_timer != tcp_timer_ctr) { 802e5ec:	f898 2000 	ldrb.w	r2, [r8] 802e5f0:	f894 3021 	ldrb.w	r3, [r4, #33]	; 0x21 802e5f4:	4293      	cmp	r3, r2 802e5f6:	d020      	beq.n	802e63a <tcp_fasttmr+0x66>      struct tcp_pcb *next;      pcb->last_timer = tcp_timer_ctr; 802e5f8:	f884 2021 	strb.w	r2, [r4, #33]	; 0x21      /* send delayed ACKs */      if (pcb->flags & TF_ACK_DELAY) { 802e5fc:	7fa2      	ldrb	r2, [r4, #30] 802e5fe:	07d1      	lsls	r1, r2, #31 802e600:	d509      	bpl.n	802e616 <tcp_fasttmr+0x42>        LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));        tcp_ack_now(pcb); 802e602:	f042 0202 	orr.w	r2, r2, #2 802e606:	77a2      	strb	r2, [r4, #30]        tcp_output(pcb); 802e608:	4620      	mov	r0, r4 802e60a:	f001 fa6f 	bl	802faec <tcp_output>        pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); 802e60e:	7fa3      	ldrb	r3, [r4, #30] 802e610:	f023 0303 	bic.w	r3, r3, #3 802e614:	77a3      	strb	r3, [r4, #30]      }      next = pcb->next;      /* If there is data which was previously "refused" by upper layer */      if (pcb->refused_data != NULL) { 802e616:	6f63      	ldr	r3, [r4, #116]	; 0x74        tcp_ack_now(pcb);        tcp_output(pcb);        pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);      }      next = pcb->next; 802e618:	f8d4 900c 	ldr.w	r9, [r4, #12]      /* If there is data which was previously "refused" by upper layer */      if (pcb->refused_data != NULL) { 802e61c:	b90b      	cbnz	r3, 802e622 <tcp_fasttmr+0x4e> 802e61e:	464c      	mov	r4, r9 802e620:	e007      	b.n	802e632 <tcp_fasttmr+0x5e>        tcp_active_pcbs_changed = 0;        tcp_process_refused_data(pcb); 802e622:	4620      	mov	r0, r4      next = pcb->next;      /* If there is data which was previously "refused" by upper layer */      if (pcb->refused_data != NULL) {        tcp_active_pcbs_changed = 0; 802e624:	702e      	strb	r6, [r5, #0]        tcp_process_refused_data(pcb); 802e626:	f7ff ffa3 	bl	802e570 <tcp_process_refused_data>        if (tcp_active_pcbs_changed) { 802e62a:	782b      	ldrb	r3, [r5, #0] 802e62c:	2b00      	cmp	r3, #0 802e62e:	d1d9      	bne.n	802e5e4 <tcp_fasttmr+0x10> 802e630:	e7f5      	b.n	802e61e <tcp_fasttmr+0x4a>  ++tcp_timer_ctr;tcp_fasttmr_start:  pcb = tcp_active_pcbs;  while(pcb != NULL) { 802e632:	2c00      	cmp	r4, #0 802e634:	d1da      	bne.n	802e5ec <tcp_fasttmr+0x18> 802e636:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 802e63a:	e7fe      	b.n	802e63a <tcp_fasttmr+0x66> 802e63c:	2000e18d 	.word	0x2000e18d 802e640:	2001107c 	.word	0x2001107c 802e644:	20011078 	.word	0x200110780802e648 <tcp_tmr>:/** * Called periodically to dispatch TCP timers. */voidtcp_tmr(void){ 802e648:	b508      	push	{r3, lr}  /* Call tcp_fasttmr() every 250 ms */  tcp_fasttmr(); 802e64a:	f7ff ffc3 	bl	802e5d4 <tcp_fasttmr>  if (++tcp_timer & 1) { 802e64e:	4a06      	ldr	r2, [pc, #24]	; (802e668 <tcp_tmr+0x20>) 802e650:	7813      	ldrb	r3, [r2, #0] 802e652:	3301      	adds	r3, #1 802e654:	b2db      	uxtb	r3, r3 802e656:	07d8      	lsls	r0, r3, #31 802e658:	7013      	strb	r3, [r2, #0] 802e65a:	d503      	bpl.n	802e664 <tcp_tmr+0x1c>    /* Call tcp_tmr() every 500 ms, i.e., every other timer       tcp_tmr() is called. */    tcp_slowtmr();  }} 802e65c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  tcp_fasttmr();  if (++tcp_timer & 1) {    /* Call tcp_tmr() every 500 ms, i.e., every other timer       tcp_tmr() is called. */    tcp_slowtmr(); 802e660:	f7ff bcfa 	b.w	802e058 <tcp_slowtmr> 802e664:	bd08      	pop	{r3, pc} 802e666:	bf00      	nop 802e668:	2000e18c 	.word	0x2000e18c0802e66c <tcp_next_iss>:u32_ttcp_next_iss(void){  static u32_t iss = 6510;    iss += tcp_ticks;       /* XXX */ 802e66c:	4b03      	ldr	r3, [pc, #12]	; (802e67c <tcp_next_iss+0x10>) 802e66e:	4a04      	ldr	r2, [pc, #16]	; (802e680 <tcp_next_iss+0x14>) 802e670:	6810      	ldr	r0, [r2, #0] 802e672:	681a      	ldr	r2, [r3, #0] 802e674:	1880      	adds	r0, r0, r2 802e676:	6018      	str	r0, [r3, #0]  return iss;} 802e678:	4770      	bx	lr 802e67a:	bf00      	nop 802e67c:	200015ec 	.word	0x200015ec 802e680:	20011080 	.word	0x200110800802e684 <tcp_alloc>: * @param prio priority for the new pcb * @return a new tcp_pcb that initially is in state CLOSED */struct tcp_pcb *tcp_alloc(u8_t prio){ 802e684:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 802e686:	4605      	mov	r5, r0  struct tcp_pcb *pcb;  u32_t iss;    pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); 802e688:	2002      	movs	r0, #2 802e68a:	f7ff f8d3 	bl	802d834 <memp_malloc>  if (pcb == NULL) { 802e68e:	4604      	mov	r4, r0 802e690:	2800      	cmp	r0, #0 802e692:	d136      	bne.n	802e702 <tcp_alloc+0x7e>  u32_t inactivity;  inactivity = 0;  inactive = NULL;  /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */  for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { 802e694:	4b39      	ldr	r3, [pc, #228]	; (802e77c <tcp_alloc+0xf8>)    if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { 802e696:	4a3a      	ldr	r2, [pc, #232]	; (802e780 <tcp_alloc+0xfc>)  u32_t inactivity;  inactivity = 0;  inactive = NULL;  /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */  for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { 802e698:	681b      	ldr	r3, [r3, #0]    if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { 802e69a:	6811      	ldr	r1, [r2, #0] 802e69c:	e007      	b.n	802e6ae <tcp_alloc+0x2a> 802e69e:	6a5a      	ldr	r2, [r3, #36]	; 0x24 802e6a0:	1a8a      	subs	r2, r1, r2 802e6a2:	42a2      	cmp	r2, r4 802e6a4:	bf34      	ite	cc 802e6a6:	4622      	movcc	r2, r4 802e6a8:	4618      	movcs	r0, r3  u32_t inactivity;  inactivity = 0;  inactive = NULL;  /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */  for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { 802e6aa:	68db      	ldr	r3, [r3, #12] 802e6ac:	4614      	mov	r4, r2 802e6ae:	2b00      	cmp	r3, #0 802e6b0:	d1f5      	bne.n	802e69e <tcp_alloc+0x1a>    if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {      inactivity = tcp_ticks - pcb->tmr;      inactive = pcb;    }  }  if (inactive != NULL) { 802e6b2:	b108      	cbz	r0, 802e6b8 <tcp_alloc+0x34>    LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n",           (void *)inactive, inactivity));    tcp_abort(inactive); 802e6b4:	f7ff fe8e 	bl	802e3d4 <tcp_abort>  if (pcb == NULL) {    /* Try killing oldest connection in TIME-WAIT. */    LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n"));    tcp_kill_timewait();    /* Try to allocate a tcp_pcb again. */    pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); 802e6b8:	2002      	movs	r0, #2 802e6ba:	f7ff f8bb 	bl	802d834 <memp_malloc>    if (pcb == NULL) { 802e6be:	4604      	mov	r4, r0 802e6c0:	b9f8      	cbnz	r0, 802e702 <tcp_alloc+0x7e>  inactivity = 0;  inactive = NULL;  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {    if (pcb->prio <= prio &&       pcb->prio <= mprio &&       (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { 802e6c2:	4a2f      	ldr	r2, [pc, #188]	; (802e780 <tcp_alloc+0xfc>)  mprio = TCP_PRIO_MAX;    /* We kill the oldest active connection that has lower priority than prio. */  inactivity = 0;  inactive = NULL;  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802e6c4:	4b2f      	ldr	r3, [pc, #188]	; (802e784 <tcp_alloc+0x100>)    if (pcb->prio <= prio &&       pcb->prio <= mprio &&       (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { 802e6c6:	6817      	ldr	r7, [r2, #0]  mprio = TCP_PRIO_MAX;    /* We kill the oldest active connection that has lower priority than prio. */  inactivity = 0;  inactive = NULL;  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802e6c8:	681b      	ldr	r3, [r3, #0]  struct tcp_pcb *pcb, *inactive;  u32_t inactivity;  u8_t mprio;  mprio = TCP_PRIO_MAX; 802e6ca:	207f      	movs	r0, #127	; 0x7f    /* We kill the oldest active connection that has lower priority than prio. */  inactivity = 0;  inactive = NULL; 802e6cc:	4622      	mov	r2, r4 802e6ce:	e00c      	b.n	802e6ea <tcp_alloc+0x66>  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {    if (pcb->prio <= prio && 802e6d0:	7e59      	ldrb	r1, [r3, #25] 802e6d2:	42a9      	cmp	r1, r5 802e6d4:	d808      	bhi.n	802e6e8 <tcp_alloc+0x64> 802e6d6:	4281      	cmp	r1, r0 802e6d8:	d806      	bhi.n	802e6e8 <tcp_alloc+0x64>       pcb->prio <= mprio &&       (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { 802e6da:	6a5e      	ldr	r6, [r3, #36]	; 0x24 802e6dc:	1bbe      	subs	r6, r7, r6  /* We kill the oldest active connection that has lower priority than prio. */  inactivity = 0;  inactive = NULL;  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {    if (pcb->prio <= prio &&       pcb->prio <= mprio && 802e6de:	42a6      	cmp	r6, r4 802e6e0:	d302      	bcc.n	802e6e8 <tcp_alloc+0x64> 802e6e2:	4608      	mov	r0, r1 802e6e4:	4634      	mov	r4, r6 802e6e6:	461a      	mov	r2, r3  mprio = TCP_PRIO_MAX;    /* We kill the oldest active connection that has lower priority than prio. */  inactivity = 0;  inactive = NULL;  for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802e6e8:	68db      	ldr	r3, [r3, #12] 802e6ea:	2b00      	cmp	r3, #0 802e6ec:	d1f0      	bne.n	802e6d0 <tcp_alloc+0x4c>      inactivity = tcp_ticks - pcb->tmr;      inactive = pcb;      mprio = pcb->prio;    }  }  if (inactive != NULL) { 802e6ee:	b112      	cbz	r2, 802e6f6 <tcp_alloc+0x72>    LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n",           (void *)inactive, inactivity));    tcp_abort(inactive); 802e6f0:	4610      	mov	r0, r2 802e6f2:	f7ff fe6f 	bl	802e3d4 <tcp_abort>    if (pcb == NULL) {      /* Try killing active connections with lower priority than the new one. */      LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing connection with prio lower than %d\n", prio));      tcp_kill_prio(prio);      /* Try to allocate a tcp_pcb again. */      pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); 802e6f6:	2002      	movs	r0, #2 802e6f8:	f7ff f89c 	bl	802d834 <memp_malloc>    if (pcb != NULL) {      /* adjust err stats: timewait PCB was freed above */      MEMP_STATS_DEC(err, MEMP_TCP_PCB);    }  }  if (pcb != NULL) { 802e6fc:	4604      	mov	r4, r0 802e6fe:	2800      	cmp	r0, #0 802e700:	d039      	beq.n	802e776 <tcp_alloc+0xf2>    memset(pcb, 0, sizeof(struct tcp_pcb)); 802e702:	2100      	movs	r1, #0 802e704:	2294      	movs	r2, #148	; 0x94 802e706:	4620      	mov	r0, r4 802e708:	f7f3 f9da 	bl	8021ac0 <memset>    pcb->prio = prio;    pcb->snd_buf = TCP_SND_BUF;    pcb->snd_queuelen = 0;    pcb->rcv_wnd = TCP_WND; 802e70c:	f241 62d0 	movw	r2, #5840	; 0x16d0    }  }  if (pcb != NULL) {    memset(pcb, 0, sizeof(struct tcp_pcb));    pcb->prio = prio;    pcb->snd_buf = TCP_SND_BUF; 802e710:	f246 63a8 	movw	r3, #26280	; 0x66a8 802e714:	f8a4 3066 	strh.w	r3, [r4, #102]	; 0x66    pcb->snd_queuelen = 0;    pcb->rcv_wnd = TCP_WND; 802e718:	85a2      	strh	r2, [r4, #44]	; 0x2c  }  if (pcb != NULL) {    memset(pcb, 0, sizeof(struct tcp_pcb));    pcb->prio = prio;    pcb->snd_buf = TCP_SND_BUF;    pcb->snd_queuelen = 0; 802e71a:	2300      	movs	r3, #0    pcb->rcv_wnd = TCP_WND;    pcb->rcv_ann_wnd = TCP_WND; 802e71c:	85e2      	strh	r2, [r4, #46]	; 0x2e    pcb->tos = 0;    pcb->ttl = TCP_TTL; 802e71e:	22ff      	movs	r2, #255	; 0xff      MEMP_STATS_DEC(err, MEMP_TCP_PCB);    }  }  if (pcb != NULL) {    memset(pcb, 0, sizeof(struct tcp_pcb));    pcb->prio = prio; 802e720:	7665      	strb	r5, [r4, #25]    pcb->snd_buf = TCP_SND_BUF;    pcb->snd_queuelen = 0; 802e722:	f8a4 3068 	strh.w	r3, [r4, #104]	; 0x68 802e726:	461d      	mov	r5, r3    pcb->rcv_wnd = TCP_WND;    pcb->rcv_ann_wnd = TCP_WND;    pcb->tos = 0; 802e728:	7263      	strb	r3, [r4, #9]    pcb->ttl = TCP_TTL; 802e72a:	72a2      	strb	r2, [r4, #10]    /* As initial send MSS, we use TCP_MSS but limit it to 536.       The send MSS is updated when an MSS option is received. */    pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;    pcb->rto = 3000 / TCP_SLOW_INTERVAL;    pcb->sa = 0; 802e72c:	f8a4 3040 	strh.w	r3, [r4, #64]	; 0x40    pcb->rcv_ann_wnd = TCP_WND;    pcb->tos = 0;    pcb->ttl = TCP_TTL;    /* As initial send MSS, we use TCP_MSS but limit it to 536.       The send MSS is updated when an MSS option is received. */    pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; 802e730:	f44f 7206 	mov.w	r2, #536	; 0x218    pcb->rto = 3000 / TCP_SLOW_INTERVAL;    pcb->sa = 0;    pcb->sv = 3000 / TCP_SLOW_INTERVAL;    pcb->rtime = -1; 802e734:	f64f 73ff 	movw	r3, #65535	; 0xffff    pcb->rcv_ann_wnd = TCP_WND;    pcb->tos = 0;    pcb->ttl = TCP_TTL;    /* As initial send MSS, we use TCP_MSS but limit it to 536.       The send MSS is updated when an MSS option is received. */    pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; 802e738:	86e2      	strh	r2, [r4, #54]	; 0x36    pcb->rto = 3000 / TCP_SLOW_INTERVAL;    pcb->sa = 0;    pcb->sv = 3000 / TCP_SLOW_INTERVAL;    pcb->rtime = -1; 802e73a:	86a3      	strh	r3, [r4, #52]	; 0x34    pcb->tos = 0;    pcb->ttl = TCP_TTL;    /* As initial send MSS, we use TCP_MSS but limit it to 536.       The send MSS is updated when an MSS option is received. */    pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;    pcb->rto = 3000 / TCP_SLOW_INTERVAL; 802e73c:	2206      	movs	r2, #6    pcb->sa = 0;    pcb->sv = 3000 / TCP_SLOW_INTERVAL;    pcb->rtime = -1;    pcb->cwnd = 1; 802e73e:	2301      	movs	r3, #1 802e740:	f8a4 304c 	strh.w	r3, [r4, #76]	; 0x4c    pcb->tos = 0;    pcb->ttl = TCP_TTL;    /* As initial send MSS, we use TCP_MSS but limit it to 536.       The send MSS is updated when an MSS option is received. */    pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;    pcb->rto = 3000 / TCP_SLOW_INTERVAL; 802e744:	f8a4 2044 	strh.w	r2, [r4, #68]	; 0x44    pcb->sa = 0;    pcb->sv = 3000 / TCP_SLOW_INTERVAL; 802e748:	f8a4 2042 	strh.w	r2, [r4, #66]	; 0x42    pcb->rtime = -1;    pcb->cwnd = 1;    iss = tcp_next_iss(); 802e74c:	f7ff ff8e 	bl	802e66c <tcp_next_iss>    pcb->snd_wl2 = iss;    pcb->snd_nxt = iss;    pcb->lastack = iss;    pcb->snd_lbb = iss;       pcb->tmr = tcp_ticks; 802e750:	4b0b      	ldr	r3, [pc, #44]	; (802e780 <tcp_alloc+0xfc>)    pcb->sa = 0;    pcb->sv = 3000 / TCP_SLOW_INTERVAL;    pcb->rtime = -1;    pcb->cwnd = 1;    iss = tcp_next_iss();    pcb->snd_wl2 = iss; 802e752:	65a0      	str	r0, [r4, #88]	; 0x58    pcb->snd_nxt = iss;    pcb->lastack = iss;    pcb->snd_lbb = iss;       pcb->tmr = tcp_ticks; 802e754:	681b      	ldr	r3, [r3, #0]    pcb->sv = 3000 / TCP_SLOW_INTERVAL;    pcb->rtime = -1;    pcb->cwnd = 1;    iss = tcp_next_iss();    pcb->snd_wl2 = iss;    pcb->snd_nxt = iss; 802e756:	6520      	str	r0, [r4, #80]	; 0x50    pcb->lastack = iss;    pcb->snd_lbb = iss;       pcb->tmr = tcp_ticks; 802e758:	6263      	str	r3, [r4, #36]	; 0x24    pcb->last_timer = tcp_timer_ctr; 802e75a:	4b0b      	ldr	r3, [pc, #44]	; (802e788 <tcp_alloc+0x104>)    pcb->rtime = -1;    pcb->cwnd = 1;    iss = tcp_next_iss();    pcb->snd_wl2 = iss;    pcb->snd_nxt = iss;    pcb->lastack = iss; 802e75c:	64a0      	str	r0, [r4, #72]	; 0x48    pcb->snd_lbb = iss;       pcb->tmr = tcp_ticks;    pcb->last_timer = tcp_timer_ctr; 802e75e:	781b      	ldrb	r3, [r3, #0]    pcb->cwnd = 1;    iss = tcp_next_iss();    pcb->snd_wl2 = iss;    pcb->snd_nxt = iss;    pcb->lastack = iss;    pcb->snd_lbb = iss;    802e760:	65e0      	str	r0, [r4, #92]	; 0x5c    pcb->tmr = tcp_ticks;    pcb->last_timer = tcp_timer_ctr; 802e762:	f884 3021 	strb.w	r3, [r4, #33]	; 0x21    pcb->polltmr = 0;#if LWIP_CALLBACK_API    pcb->recv = tcp_recv_null; 802e766:	4b09      	ldr	r3, [pc, #36]	; (802e78c <tcp_alloc+0x108>)    pcb->lastack = iss;    pcb->snd_lbb = iss;       pcb->tmr = tcp_ticks;    pcb->last_timer = tcp_timer_ctr;    pcb->polltmr = 0; 802e768:	77e5      	strb	r5, [r4, #31]#if LWIP_CALLBACK_API    pcb->recv = tcp_recv_null; 802e76a:	67e3      	str	r3, [r4, #124]	; 0x7c#endif /* LWIP_CALLBACK_API */          /* Init KEEPALIVE timer */    pcb->keep_idle  = TCP_KEEPIDLE_DEFAULT; 802e76c:	4b08      	ldr	r3, [pc, #32]	; (802e790 <tcp_alloc+0x10c>)#if LWIP_TCP_KEEPALIVE    pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT;    pcb->keep_cnt   = TCP_KEEPCNT_DEFAULT;#endif /* LWIP_TCP_KEEPALIVE */    pcb->keep_cnt_sent = 0; 802e76e:	f884 5092 	strb.w	r5, [r4, #146]	; 0x92#if LWIP_CALLBACK_API    pcb->recv = tcp_recv_null;#endif /* LWIP_CALLBACK_API */          /* Init KEEPALIVE timer */    pcb->keep_idle  = TCP_KEEPIDLE_DEFAULT; 802e772:	f8c4 308c 	str.w	r3, [r4, #140]	; 0x8c#endif /* LWIP_TCP_KEEPALIVE */    pcb->keep_cnt_sent = 0;  }  return pcb;} 802e776:	4620      	mov	r0, r4 802e778:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802e77a:	bf00      	nop 802e77c:	20011090 	.word	0x20011090 802e780:	20011080 	.word	0x20011080 802e784:	2001107c 	.word	0x2001107c 802e788:	2000e18d 	.word	0x2000e18d 802e78c:	0802e54d 	.word	0x0802e54d 802e790:	006ddd00 	.word	0x006ddd000802e794 <tcp_new>: * @return a new tcp_pcb that initially is in state CLOSED */struct tcp_pcb *tcp_new(void){  return tcp_alloc(TCP_PRIO_NORMAL); 802e794:	2040      	movs	r0, #64	; 0x40 802e796:	f7ff bf75 	b.w	802e684 <tcp_alloc>0802e79a <tcp_eff_send_mss>: * by using ip_route to determin the netif used to send to the address and * calculating the minimum of TCP_MSS and that netif's mtu (if set). */u16_ttcp_eff_send_mss(u16_t sendmss, ip_addr_t *addr){ 802e79a:	b510      	push	{r4, lr} 802e79c:	4604      	mov	r4, r0  u16_t mss_s;  struct netif *outif;  outif = ip_route(addr); 802e79e:	4608      	mov	r0, r1 802e7a0:	f002 f8f2 	bl	8030988 <ip_route>  if ((outif != NULL) && (outif->mtu != 0)) { 802e7a4:	b130      	cbz	r0, 802e7b4 <tcp_eff_send_mss+0x1a> 802e7a6:	8c83      	ldrh	r3, [r0, #36]	; 0x24 802e7a8:	b123      	cbz	r3, 802e7b4 <tcp_eff_send_mss+0x1a>    mss_s = outif->mtu - IP_HLEN - TCP_HLEN; 802e7aa:	3b28      	subs	r3, #40	; 0x28    /* RFC 1122, chap 4.2.2.6:     * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize     * We correct for TCP options in tcp_write(), and don't support IP options.     */    sendmss = LWIP_MIN(sendmss, mss_s); 802e7ac:	b29b      	uxth	r3, r3 802e7ae:	429c      	cmp	r4, r3 802e7b0:	bf28      	it	cs 802e7b2:	461c      	movcs	r4, r3  }  return sendmss;} 802e7b4:	4620      	mov	r0, r4 802e7b6:	bd10      	pop	{r4, pc}0802e7b8 <tcp_parseopt>: * * @param pcb the tcp_pcb for which a segment arrived */static voidtcp_parseopt(struct tcp_pcb *pcb){ 802e7b8:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  u8_t *opts, opt;#if LWIP_TCP_TIMESTAMPS  u32_t tsval;#endif  opts = (u8_t *)tcphdr + TCP_HLEN; 802e7ba:	4d1e      	ldr	r5, [pc, #120]	; (802e834 <tcp_parseopt+0x7c>) 802e7bc:	682c      	ldr	r4, [r5, #0] * * @param pcb the tcp_pcb for which a segment arrived */static voidtcp_parseopt(struct tcp_pcb *pcb){ 802e7be:	4606      	mov	r6, r0#endif  opts = (u8_t *)tcphdr + TCP_HLEN;  /* Parse the TCP MSS option, if present. */  if(TCPH_HDRLEN(tcphdr) > 0x5) { 802e7c0:	89a0      	ldrh	r0, [r4, #12] 802e7c2:	f7fe f81e 	bl	802c802 <lwip_ntohs> 802e7c6:	f3c0 300f 	ubfx	r0, r0, #12, #16 802e7ca:	2805      	cmp	r0, #5 802e7cc:	d931      	bls.n	802e832 <tcp_parseopt+0x7a>    max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2; 802e7ce:	682b      	ldr	r3, [r5, #0] 802e7d0:	8998      	ldrh	r0, [r3, #12] 802e7d2:	f7fe f816 	bl	802c802 <lwip_ntohs> 802e7d6:	0b00      	lsrs	r0, r0, #12 802e7d8:	1f41      	subs	r1, r0, #5 802e7da:	0089      	lsls	r1, r1, #2  u8_t *opts, opt;#if LWIP_TCP_TIMESTAMPS  u32_t tsval;#endif  opts = (u8_t *)tcphdr + TCP_HLEN; 802e7dc:	3414      	adds	r4, #20  /* Parse the TCP MSS option, if present. */  if(TCPH_HDRLEN(tcphdr) > 0x5) {    max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2; 802e7de:	b289      	uxth	r1, r1    for (c = 0; c < max_c; ) { 802e7e0:	2300      	movs	r3, #0          return;        }        /* An MSS option with the right option length. */        mss = (opts[c + 2] << 8) | opts[c + 3];        /* Limit the mss to the configured TCP_MSS and prevent division by zero */        pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; 802e7e2:	f240 50b3 	movw	r0, #1459	; 0x5b3 802e7e6:	f240 55b4 	movw	r5, #1460	; 0x5b4  opts = (u8_t *)tcphdr + TCP_HLEN;  /* Parse the TCP MSS option, if present. */  if(TCPH_HDRLEN(tcphdr) > 0x5) {    max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2;    for (c = 0; c < max_c; ) { 802e7ea:	e020      	b.n	802e82e <tcp_parseopt+0x76>      opt = opts[c];      switch (opt) { 802e7ec:	5ce2      	ldrb	r2, [r4, r3] 802e7ee:	2a01      	cmp	r2, #1 802e7f0:	d005      	beq.n	802e7fe <tcp_parseopt+0x46> 802e7f2:	d31e      	bcc.n	802e832 <tcp_parseopt+0x7a> 802e7f4:	2a02      	cmp	r2, #2 802e7f6:	eb04 0203 	add.w	r2, r4, r3 802e7fa:	d114      	bne.n	802e826 <tcp_parseopt+0x6e> 802e7fc:	e001      	b.n	802e802 <tcp_parseopt+0x4a>        /* End of options. */        LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n"));        return;      case 0x01:        /* NOP option. */        ++c; 802e7fe:	3301      	adds	r3, #1 802e800:	e014      	b.n	802e82c <tcp_parseopt+0x74>        LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n"));        break;      case 0x02:        LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n"));        if (opts[c + 1] != 0x04 || c + 0x04 > max_c) { 802e802:	7857      	ldrb	r7, [r2, #1] 802e804:	2f04      	cmp	r7, #4 802e806:	d114      	bne.n	802e832 <tcp_parseopt+0x7a> 802e808:	1cdf      	adds	r7, r3, #3 802e80a:	428f      	cmp	r7, r1 802e80c:	da11      	bge.n	802e832 <tcp_parseopt+0x7a>          /* Bad length */          LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n"));          return;        }        /* An MSS option with the right option length. */        mss = (opts[c + 2] << 8) | opts[c + 3]; 802e80e:	7897      	ldrb	r7, [r2, #2] 802e810:	78d2      	ldrb	r2, [r2, #3] 802e812:	ea42 2207 	orr.w	r2, r2, r7, lsl #8        /* Limit the mss to the configured TCP_MSS and prevent division by zero */        pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; 802e816:	1e57      	subs	r7, r2, #1 802e818:	b2bf      	uxth	r7, r7 802e81a:	4287      	cmp	r7, r0 802e81c:	bf88      	it	hi 802e81e:	462a      	movhi	r2, r5 802e820:	86f2      	strh	r2, [r6, #54]	; 0x36        /* Advance to next option */        c += 0x04; 802e822:	3304      	adds	r3, #4 802e824:	e002      	b.n	802e82c <tcp_parseopt+0x74>        c += 0x0A;        break;#endif      default:        LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n"));        if (opts[c + 1] == 0) { 802e826:	7852      	ldrb	r2, [r2, #1] 802e828:	b11a      	cbz	r2, 802e832 <tcp_parseopt+0x7a>             and we don't process them further. */          return;        }        /* All other options have a length field, so that we easily           can skip past them. */        c += opts[c + 1]; 802e82a:	18d3      	adds	r3, r2, r3 802e82c:	b29b      	uxth	r3, r3  opts = (u8_t *)tcphdr + TCP_HLEN;  /* Parse the TCP MSS option, if present. */  if(TCPH_HDRLEN(tcphdr) > 0x5) {    max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2;    for (c = 0; c < max_c; ) { 802e82e:	428b      	cmp	r3, r1 802e830:	d3dc      	bcc.n	802e7ec <tcp_parseopt+0x34> 802e832:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 802e834:	2000e190 	.word	0x2000e1900802e838 <tcp_receive>: * * Called from tcp_process(). */static voidtcp_receive(struct tcp_pcb *pcb){ 802e838:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}  u16_t ooseq_qlen;#endif /* TCP_OOSEQ_MAX_BYTES || TCP_OOSEQ_MAX_PBUFS */  LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);  if (flags & TCP_ACK) { 802e83c:	4ba0      	ldr	r3, [pc, #640]	; (802eac0 <tcp_receive+0x288>) 802e83e:	781b      	ldrb	r3, [r3, #0] 802e840:	f003 0310 	and.w	r3, r3, #16 802e844:	b2db      	uxtb	r3, r3 * * Called from tcp_process(). */static voidtcp_receive(struct tcp_pcb *pcb){ 802e846:	4604      	mov	r4, r0  u16_t ooseq_qlen;#endif /* TCP_OOSEQ_MAX_BYTES || TCP_OOSEQ_MAX_PBUFS */  LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);  if (flags & TCP_ACK) { 802e848:	2b00      	cmp	r3, #0 802e84a:	f000 816b 	beq.w	802eb24 <tcp_receive+0x2ec>    right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;    /* Update window. */    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || 802e84e:	4a9d      	ldr	r2, [pc, #628]	; (802eac4 <tcp_receive+0x28c>) 802e850:	6d43      	ldr	r3, [r0, #84]	; 0x54 802e852:	6812      	ldr	r2, [r2, #0]#endif /* TCP_OOSEQ_MAX_BYTES || TCP_OOSEQ_MAX_PBUFS */  LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);  if (flags & TCP_ACK) {    right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; 802e854:	f8b0 5060 	ldrh.w	r5, [r0, #96]	; 0x60 802e858:	6d81      	ldr	r1, [r0, #88]	; 0x58    /* Update window. */    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || 802e85a:	1a98      	subs	r0, r3, r2 802e85c:	2800      	cmp	r0, #0 802e85e:	db0e      	blt.n	802e87e <tcp_receive+0x46> 802e860:	4293      	cmp	r3, r2 802e862:	4b99      	ldr	r3, [pc, #612]	; (802eac8 <tcp_receive+0x290>) 802e864:	d103      	bne.n	802e86e <tcp_receive+0x36>       (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || 802e866:	6818      	ldr	r0, [r3, #0] 802e868:	1a08      	subs	r0, r1, r0 802e86a:	2800      	cmp	r0, #0 802e86c:	db07      	blt.n	802e87e <tcp_receive+0x46> 802e86e:	681b      	ldr	r3, [r3, #0] 802e870:	4299      	cmp	r1, r3 802e872:	d11f      	bne.n	802e8b4 <tcp_receive+0x7c>       (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) { 802e874:	4b95      	ldr	r3, [pc, #596]	; (802eacc <tcp_receive+0x294>) 802e876:	681b      	ldr	r3, [r3, #0] 802e878:	89db      	ldrh	r3, [r3, #14] 802e87a:	42ab      	cmp	r3, r5 802e87c:	d91a      	bls.n	802e8b4 <tcp_receive+0x7c>      pcb->snd_wnd = tcphdr->wnd; 802e87e:	4b93      	ldr	r3, [pc, #588]	; (802eacc <tcp_receive+0x294>)      /* keep track of the biggest window announced by the remote host to calculate         the maximum segment size */      if (pcb->snd_wnd_max < tcphdr->wnd) { 802e880:	f8b4 6062 	ldrh.w	r6, [r4, #98]	; 0x62    /* Update window. */    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) ||       (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) ||       (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) {      pcb->snd_wnd = tcphdr->wnd; 802e884:	681b      	ldr	r3, [r3, #0] 802e886:	89d8      	ldrh	r0, [r3, #14]      /* keep track of the biggest window announced by the remote host to calculate         the maximum segment size */      if (pcb->snd_wnd_max < tcphdr->wnd) {        pcb->snd_wnd_max = tcphdr->wnd;      }      pcb->snd_wl1 = seqno; 802e888:	6562      	str	r2, [r4, #84]	; 0x54      pcb->snd_wl2 = ackno; 802e88a:	4a8f      	ldr	r2, [pc, #572]	; (802eac8 <tcp_receive+0x290>)    /* Update window. */    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) ||       (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) ||       (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) {      pcb->snd_wnd = tcphdr->wnd; 802e88c:	f8a4 0060 	strh.w	r0, [r4, #96]	; 0x60         the maximum segment size */      if (pcb->snd_wnd_max < tcphdr->wnd) {        pcb->snd_wnd_max = tcphdr->wnd;      }      pcb->snd_wl1 = seqno;      pcb->snd_wl2 = ackno; 802e890:	6812      	ldr	r2, [r2, #0]       (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) ||       (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) {      pcb->snd_wnd = tcphdr->wnd;      /* keep track of the biggest window announced by the remote host to calculate         the maximum segment size */      if (pcb->snd_wnd_max < tcphdr->wnd) { 802e892:	4286      	cmp	r6, r0        pcb->snd_wnd_max = tcphdr->wnd;      }      pcb->snd_wl1 = seqno;      pcb->snd_wl2 = ackno; 802e894:	65a2      	str	r2, [r4, #88]	; 0x58       (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) {      pcb->snd_wnd = tcphdr->wnd;      /* keep track of the biggest window announced by the remote host to calculate         the maximum segment size */      if (pcb->snd_wnd_max < tcphdr->wnd) {        pcb->snd_wnd_max = tcphdr->wnd; 802e896:	bf38      	it	cc 802e898:	f8a4 0062 	strhcc.w	r0, [r4, #98]	; 0x62 802e89c:	f894 2091 	ldrb.w	r2, [r4, #145]	; 0x91      }      pcb->snd_wl1 = seqno;      pcb->snd_wl2 = ackno;      if (pcb->snd_wnd == 0) { 802e8a0:	b920      	cbnz	r0, 802e8ac <tcp_receive+0x74>        if (pcb->persist_backoff == 0) { 802e8a2:	b93a      	cbnz	r2, 802e8b4 <tcp_receive+0x7c>          /* start persist timer */          pcb->persist_cnt = 0; 802e8a4:	f884 0090 	strb.w	r0, [r4, #144]	; 0x90          pcb->persist_backoff = 1; 802e8a8:	2301      	movs	r3, #1 802e8aa:	e001      	b.n	802e8b0 <tcp_receive+0x78>        }      } else if (pcb->persist_backoff > 0) { 802e8ac:	b112      	cbz	r2, 802e8b4 <tcp_receive+0x7c>        /* stop persist timer */          pcb->persist_backoff = 0; 802e8ae:	2300      	movs	r3, #0 802e8b0:	f884 3091 	strb.w	r3, [r4, #145]	; 0x91     * If it only passes 1, should reset dupack counter     *     */    /* Clause 1 */    if (TCP_SEQ_LEQ(ackno, pcb->lastack)) { 802e8b4:	4b84      	ldr	r3, [pc, #528]	; (802eac8 <tcp_receive+0x290>) 802e8b6:	6ca2      	ldr	r2, [r4, #72]	; 0x48 802e8b8:	681b      	ldr	r3, [r3, #0] 802e8ba:	1a98      	subs	r0, r3, r2 802e8bc:	2800      	cmp	r0, #0 802e8be:	dc34      	bgt.n	802e92a <tcp_receive+0xf2>      pcb->acked = 0; 802e8c0:	2000      	movs	r0, #0 802e8c2:	f8a4 0064 	strh.w	r0, [r4, #100]	; 0x64      /* Clause 2 */      if (tcplen == 0) { 802e8c6:	4882      	ldr	r0, [pc, #520]	; (802ead0 <tcp_receive+0x298>) 802e8c8:	8800      	ldrh	r0, [r0, #0] 802e8ca:	2800      	cmp	r0, #0 802e8cc:	f040 81f4 	bne.w	802ecb8 <tcp_receive+0x480>        /* Clause 3 */        if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){ 802e8d0:	f8b4 6060 	ldrh.w	r6, [r4, #96]	; 0x60 802e8d4:	6da0      	ldr	r0, [r4, #88]	; 0x58#endif /* TCP_OOSEQ_MAX_BYTES || TCP_OOSEQ_MAX_PBUFS */  LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);  if (flags & TCP_ACK) {    right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; 802e8d6:	1869      	adds	r1, r5, r1    if (TCP_SEQ_LEQ(ackno, pcb->lastack)) {      pcb->acked = 0;      /* Clause 2 */      if (tcplen == 0) {        /* Clause 3 */        if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){ 802e8d8:	1830      	adds	r0, r6, r0 802e8da:	4288      	cmp	r0, r1 802e8dc:	f040 81ec 	bne.w	802ecb8 <tcp_receive+0x480>          /* Clause 4 */          if (pcb->rtime >= 0) { 802e8e0:	f9b4 1034 	ldrsh.w	r1, [r4, #52]	; 0x34 802e8e4:	2900      	cmp	r1, #0 802e8e6:	f2c0 81e7 	blt.w	802ecb8 <tcp_receive+0x480>            /* Clause 5 */            if (pcb->lastack == ackno) { 802e8ea:	429a      	cmp	r2, r3 802e8ec:	f040 81e4 	bne.w	802ecb8 <tcp_receive+0x480>              found_dupack = 1;              if ((u8_t)(pcb->dupacks + 1) > pcb->dupacks) { 802e8f0:	f894 2047 	ldrb.w	r2, [r4, #71]	; 0x47 802e8f4:	1c53      	adds	r3, r2, #1 802e8f6:	b2db      	uxtb	r3, r3 802e8f8:	4293      	cmp	r3, r2                ++pcb->dupacks; 802e8fa:	bf88      	it	hi 802e8fc:	f884 3047 	strbhi.w	r3, [r4, #71]	; 0x47              }              if (pcb->dupacks > 3) { 802e900:	f894 3047 	ldrb.w	r3, [r4, #71]	; 0x47 802e904:	2b03      	cmp	r3, #3 802e906:	d90a      	bls.n	802e91e <tcp_receive+0xe6>                /* Inflate the congestion window, but not if it means that                   the value overflows. */                if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { 802e908:	f8b4 204c 	ldrh.w	r2, [r4, #76]	; 0x4c 802e90c:	8ee3      	ldrh	r3, [r4, #54]	; 0x36 802e90e:	18d3      	adds	r3, r2, r3 802e910:	b29b      	uxth	r3, r3 802e912:	4293      	cmp	r3, r2 802e914:	f240 80b2 	bls.w	802ea7c <tcp_receive+0x244>                  pcb->cwnd += pcb->mss; 802e918:	f8a4 304c 	strh.w	r3, [r4, #76]	; 0x4c 802e91c:	e0ae      	b.n	802ea7c <tcp_receive+0x244>                }              } else if (pcb->dupacks == 3) { 802e91e:	f040 80ad 	bne.w	802ea7c <tcp_receive+0x244>                /* Do fast retransmit */                tcp_rexmit_fast(pcb); 802e922:	4620      	mov	r0, r4 802e924:	f001 fa92 	bl	802fe4c <tcp_rexmit_fast> 802e928:	e0a8      	b.n	802ea7c <tcp_receive+0x244>      /* If Clause (1) or more is true, but not a duplicate ack, reset       * count of consecutive duplicate acks */      if (!found_dupack) {        pcb->dupacks = 0;      }    } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)){ 802e92a:	43d1      	mvns	r1, r2 802e92c:	42d9      	cmn	r1, r3 802e92e:	d47e      	bmi.n	802ea2e <tcp_receive+0x1f6> 802e930:	6d21      	ldr	r1, [r4, #80]	; 0x50 802e932:	1a59      	subs	r1, r3, r1 802e934:	2900      	cmp	r1, #0 802e936:	dc7a      	bgt.n	802ea2e <tcp_receive+0x1f6>      /* We come here when the ACK acknowledges new data. */      /* Reset the "IN Fast Retransmit" flag, since we are no longer         in fast retransmit. Also reset the congestion window to the         slow start threshold. */      if (pcb->flags & TF_INFR) { 802e938:	7fa1      	ldrb	r1, [r4, #30] 802e93a:	f001 0004 	and.w	r0, r1, #4 802e93e:	b2c0      	uxtb	r0, r0 802e940:	b130      	cbz	r0, 802e950 <tcp_receive+0x118>        pcb->flags &= ~TF_INFR; 802e942:	f021 0104 	bic.w	r1, r1, #4 802e946:	77a1      	strb	r1, [r4, #30]        pcb->cwnd = pcb->ssthresh; 802e948:	f8b4 104e 	ldrh.w	r1, [r4, #78]	; 0x4e 802e94c:	f8a4 104c 	strh.w	r1, [r4, #76]	; 0x4c      /* Reset the number of retransmissions. */      pcb->nrtx = 0;      /* Reset the retransmission time-out. */      pcb->rto = (pcb->sa >> 3) + pcb->sv; 802e950:	f9b4 5040 	ldrsh.w	r5, [r4, #64]	; 0x40 802e954:	f8b4 0042 	ldrh.w	r0, [r4, #66]	; 0x42      pcb->snd_buf += pcb->acked;      /* Reset the fast retransmit variables. */      pcb->dupacks = 0;      pcb->lastack = ackno; 802e958:	64a3      	str	r3, [r4, #72]	; 0x48      /* Reset the number of retransmissions. */      pcb->nrtx = 0;      /* Reset the retransmission time-out. */      pcb->rto = (pcb->sa >> 3) + pcb->sv; 802e95a:	eb00 00e5 	add.w	r0, r0, r5, asr #3      /* Update the send buffer space. Diff between the two can never exceed 64K? */      pcb->acked = (u16_t)(ackno - pcb->lastack); 802e95e:	1a9a      	subs	r2, r3, r2      /* Reset the number of retransmissions. */      pcb->nrtx = 0;      /* Reset the retransmission time-out. */      pcb->rto = (pcb->sa >> 3) + pcb->sv; 802e960:	f8a4 0044 	strh.w	r0, [r4, #68]	; 0x44      pcb->dupacks = 0;      pcb->lastack = ackno;      /* Update the congestion control variables (cwnd and         ssthresh). */      if (pcb->state >= ESTABLISHED) { 802e964:	7e23      	ldrb	r3, [r4, #24]      pcb->rto = (pcb->sa >> 3) + pcb->sv;      /* Update the send buffer space. Diff between the two can never exceed 64K? */      pcb->acked = (u16_t)(ackno - pcb->lastack);      pcb->snd_buf += pcb->acked; 802e966:	f8b4 0066 	ldrh.w	r0, [r4, #102]	; 0x66      /* Reset the retransmission time-out. */      pcb->rto = (pcb->sa >> 3) + pcb->sv;      /* Update the send buffer space. Diff between the two can never exceed 64K? */      pcb->acked = (u16_t)(ackno - pcb->lastack); 802e96a:	f8a4 2064 	strh.w	r2, [r4, #100]	; 0x64        pcb->flags &= ~TF_INFR;        pcb->cwnd = pcb->ssthresh;      }      /* Reset the number of retransmissions. */      pcb->nrtx = 0; 802e96e:	2100      	movs	r1, #0      pcb->rto = (pcb->sa >> 3) + pcb->sv;      /* Update the send buffer space. Diff between the two can never exceed 64K? */      pcb->acked = (u16_t)(ackno - pcb->lastack);      pcb->snd_buf += pcb->acked; 802e970:	1812      	adds	r2, r2, r0      pcb->dupacks = 0;      pcb->lastack = ackno;      /* Update the congestion control variables (cwnd and         ssthresh). */      if (pcb->state >= ESTABLISHED) { 802e972:	2b03      	cmp	r3, #3        pcb->flags &= ~TF_INFR;        pcb->cwnd = pcb->ssthresh;      }      /* Reset the number of retransmissions. */      pcb->nrtx = 0; 802e974:	f884 1046 	strb.w	r1, [r4, #70]	; 0x46      pcb->rto = (pcb->sa >> 3) + pcb->sv;      /* Update the send buffer space. Diff between the two can never exceed 64K? */      pcb->acked = (u16_t)(ackno - pcb->lastack);      pcb->snd_buf += pcb->acked; 802e978:	f8a4 2066 	strh.w	r2, [r4, #102]	; 0x66      /* Reset the fast retransmit variables. */      pcb->dupacks = 0; 802e97c:	f884 1047 	strb.w	r1, [r4, #71]	; 0x47      pcb->lastack = ackno;      /* Update the congestion control variables (cwnd and         ssthresh). */      if (pcb->state >= ESTABLISHED) { 802e980:	d931      	bls.n	802e9e6 <tcp_receive+0x1ae>        if (pcb->cwnd < pcb->ssthresh) { 802e982:	f8b4 204e 	ldrh.w	r2, [r4, #78]	; 0x4e 802e986:	f8b4 304c 	ldrh.w	r3, [r4, #76]	; 0x4c 802e98a:	429a      	cmp	r2, r3          if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { 802e98c:	8ee2      	ldrh	r2, [r4, #54]	; 0x36      pcb->lastack = ackno;      /* Update the congestion control variables (cwnd and         ssthresh). */      if (pcb->state >= ESTABLISHED) {        if (pcb->cwnd < pcb->ssthresh) { 802e98e:	d900      	bls.n	802e992 <tcp_receive+0x15a> 802e990:	e002      	b.n	802e998 <tcp_receive+0x160>          if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) {            pcb->cwnd += pcb->mss;          }          LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"U16_F"\n", pcb->cwnd));        } else {          u16_t new_cwnd = (pcb->cwnd + pcb->mss * pcb->mss / pcb->cwnd); 802e992:	4352      	muls	r2, r2 802e994:	fb92 f2f3 	sdiv	r2, r2, r3 802e998:	189a      	adds	r2, r3, r2 802e99a:	b292      	uxth	r2, r2          if (new_cwnd > pcb->cwnd) { 802e99c:	429a      	cmp	r2, r3 802e99e:	d922      	bls.n	802e9e6 <tcp_receive+0x1ae>            pcb->cwnd = new_cwnd; 802e9a0:	f8a4 204c 	strh.w	r2, [r4, #76]	; 0x4c 802e9a4:	e01f      	b.n	802e9e6 <tcp_receive+0x1ae>        LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unacked\n",                                      ntohl(pcb->unacked->tcphdr->seqno),                                      ntohl(pcb->unacked->tcphdr->seqno) +                                      TCP_TCPLEN(pcb->unacked)));        next = pcb->unacked; 802e9a6:	6f25      	ldr	r5, [r4, #112]	; 0x70        pcb->unacked = pcb->unacked->next; 802e9a8:	682b      	ldr	r3, [r5, #0]        LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen));        LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); 802e9aa:	6868      	ldr	r0, [r5, #4]                                      ntohl(pcb->unacked->tcphdr->seqno),                                      ntohl(pcb->unacked->tcphdr->seqno) +                                      TCP_TCPLEN(pcb->unacked)));        next = pcb->unacked;        pcb->unacked = pcb->unacked->next; 802e9ac:	6723      	str	r3, [r4, #112]	; 0x70        LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen));        LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); 802e9ae:	f7ff f935 	bl	802dc1c <pbuf_clen>        /* Prevent ACK for FIN to generate a sent event */        if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { 802e9b2:	f8b4 3064 	ldrh.w	r3, [r4, #100]	; 0x64 802e9b6:	b153      	cbz	r3, 802e9ce <tcp_receive+0x196> 802e9b8:	68eb      	ldr	r3, [r5, #12] 802e9ba:	8998      	ldrh	r0, [r3, #12] 802e9bc:	f7fd ff21 	bl	802c802 <lwip_ntohs> 802e9c0:	07c3      	lsls	r3, r0, #31 802e9c2:	d504      	bpl.n	802e9ce <tcp_receive+0x196>          pcb->acked--; 802e9c4:	f8b4 3064 	ldrh.w	r3, [r4, #100]	; 0x64 802e9c8:	3b01      	subs	r3, #1 802e9ca:	f8a4 3064 	strh.w	r3, [r4, #100]	; 0x64        }        pcb->snd_queuelen -= pbuf_clen(next->p); 802e9ce:	6868      	ldr	r0, [r5, #4] 802e9d0:	f8b4 7068 	ldrh.w	r7, [r4, #104]	; 0x68 802e9d4:	f7ff f922 	bl	802dc1c <pbuf_clen> 802e9d8:	1a38      	subs	r0, r7, r0 802e9da:	f8a4 0068 	strh.w	r0, [r4, #104]	; 0x68        tcp_seg_free(next); 802e9de:	4628      	mov	r0, r5 802e9e0:	f7ff faf5 	bl	802dfce <tcp_seg_free> 802e9e4:	e000      	b.n	802e9e8 <tcp_receive+0x1b0>                                    ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0));      /* Remove segment from the unacknowledged list if the incoming         ACK acknowlegdes them. */      while (pcb->unacked != NULL &&             TCP_SEQ_LEQ(ntohl(pcb->unacked->tcphdr->seqno) + 802e9e6:	4e38      	ldr	r6, [pc, #224]	; (802eac8 <tcp_receive+0x290>)                                    pcb->unacked != NULL?                                    ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0));      /* Remove segment from the unacknowledged list if the incoming         ACK acknowlegdes them. */      while (pcb->unacked != NULL && 802e9e8:	6f23      	ldr	r3, [r4, #112]	; 0x70 802e9ea:	b91b      	cbnz	r3, 802e9f4 <tcp_receive+0x1bc>        }      }      /* If there's nothing left to acknowledge, stop the retransmit         timer, otherwise reset it to start again */      if(pcb->unacked == NULL) 802e9ec:	6f22      	ldr	r2, [r4, #112]	; 0x70 802e9ee:	2300      	movs	r3, #0 802e9f0:	b9d2      	cbnz	r2, 802ea28 <tcp_receive+0x1f0> 802e9f2:	e015      	b.n	802ea20 <tcp_receive+0x1e8>                                    ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0));      /* Remove segment from the unacknowledged list if the incoming         ACK acknowlegdes them. */      while (pcb->unacked != NULL &&             TCP_SEQ_LEQ(ntohl(pcb->unacked->tcphdr->seqno) + 802e9f4:	68db      	ldr	r3, [r3, #12] 802e9f6:	6858      	ldr	r0, [r3, #4] 802e9f8:	f7fd ff0a 	bl	802c810 <lwip_ntohl> 802e9fc:	6f23      	ldr	r3, [r4, #112]	; 0x70 802e9fe:	891d      	ldrh	r5, [r3, #8] 802ea00:	68db      	ldr	r3, [r3, #12] 802ea02:	4607      	mov	r7, r0 802ea04:	8998      	ldrh	r0, [r3, #12] 802ea06:	f7fd fefc 	bl	802c802 <lwip_ntohs> 802ea0a:	6833      	ldr	r3, [r6, #0] 802ea0c:	f010 0003 	ands.w	r0, r0, #3 802ea10:	bf18      	it	ne 802ea12:	2001      	movne	r0, #1 802ea14:	1afb      	subs	r3, r7, r3 802ea16:	1828      	adds	r0, r5, r0 802ea18:	181b      	adds	r3, r3, r0                                    pcb->unacked != NULL?                                    ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0));      /* Remove segment from the unacknowledged list if the incoming         ACK acknowlegdes them. */      while (pcb->unacked != NULL && 802ea1a:	2b00      	cmp	r3, #0 802ea1c:	ddc3      	ble.n	802e9a6 <tcp_receive+0x16e> 802ea1e:	e7e5      	b.n	802e9ec <tcp_receive+0x1b4>      }      /* If there's nothing left to acknowledge, stop the retransmit         timer, otherwise reset it to start again */      if(pcb->unacked == NULL)        pcb->rtime = -1; 802ea20:	f64f 72ff 	movw	r2, #65535	; 0xffff 802ea24:	86a2      	strh	r2, [r4, #52]	; 0x34 802ea26:	e000      	b.n	802ea2a <tcp_receive+0x1f2>      else        pcb->rtime = 0; 802ea28:	86a3      	strh	r3, [r4, #52]	; 0x34      pcb->polltmr = 0; 802ea2a:	77e3      	strb	r3, [r4, #31] 802ea2c:	e026      	b.n	802ea7c <tcp_receive+0x244>    } else {      /* Fix bug bug #21582: out of sequence ACK, didn't really ack anything */      pcb->acked = 0; 802ea2e:	2300      	movs	r3, #0 802ea30:	f8a4 3064 	strh.w	r3, [r4, #100]	; 0x64 802ea34:	e022      	b.n	802ea7c <tcp_receive+0x244>                           TCP_TCPLEN(pcb->unsent), pcb->snd_nxt)) {      LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unsent\n",                                    ntohl(pcb->unsent->tcphdr->seqno), ntohl(pcb->unsent->tcphdr->seqno) +                                    TCP_TCPLEN(pcb->unsent)));      next = pcb->unsent; 802ea36:	6ee5      	ldr	r5, [r4, #108]	; 0x6c      pcb->unsent = pcb->unsent->next; 802ea38:	682b      	ldr	r3, [r5, #0] 802ea3a:	66e3      	str	r3, [r4, #108]	; 0x6c#if TCP_OVERSIZE      if (pcb->unsent == NULL) { 802ea3c:	b90b      	cbnz	r3, 802ea42 <tcp_receive+0x20a>        pcb->unsent_oversize = 0; 802ea3e:	f8a4 306a 	strh.w	r3, [r4, #106]	; 0x6a      }#endif /* TCP_OVERSIZE */       LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen));      LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); 802ea42:	6868      	ldr	r0, [r5, #4] 802ea44:	f7ff f8ea 	bl	802dc1c <pbuf_clen>      /* Prevent ACK for FIN to generate a sent event */      if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { 802ea48:	f8b4 3064 	ldrh.w	r3, [r4, #100]	; 0x64 802ea4c:	b153      	cbz	r3, 802ea64 <tcp_receive+0x22c> 802ea4e:	68eb      	ldr	r3, [r5, #12] 802ea50:	8998      	ldrh	r0, [r3, #12] 802ea52:	f7fd fed6 	bl	802c802 <lwip_ntohs> 802ea56:	07c7      	lsls	r7, r0, #31 802ea58:	d504      	bpl.n	802ea64 <tcp_receive+0x22c>        pcb->acked--; 802ea5a:	f8b4 3064 	ldrh.w	r3, [r4, #100]	; 0x64 802ea5e:	3b01      	subs	r3, #1 802ea60:	f8a4 3064 	strh.w	r3, [r4, #100]	; 0x64      }      pcb->snd_queuelen -= pbuf_clen(next->p); 802ea64:	6868      	ldr	r0, [r5, #4] 802ea66:	f8b4 7068 	ldrh.w	r7, [r4, #104]	; 0x68 802ea6a:	f7ff f8d7 	bl	802dc1c <pbuf_clen> 802ea6e:	1a38      	subs	r0, r7, r0 802ea70:	f8a4 0068 	strh.w	r0, [r4, #104]	; 0x68      tcp_seg_free(next); 802ea74:	4628      	mov	r0, r5 802ea76:	f7ff faaa 	bl	802dfce <tcp_seg_free> 802ea7a:	e000      	b.n	802ea7e <tcp_receive+0x246>       strange since an "unsent" segment shouldn't be acked. The       rationale is that lwIP puts all outstanding segments on the       ->unsent list after a retransmission, so these segments may       in fact have been sent once. */    while (pcb->unsent != NULL &&           TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) +  802ea7c:	4e12      	ldr	r6, [pc, #72]	; (802eac8 <tcp_receive+0x290>)       on the list are acknowledged by the ACK. This may seem       strange since an "unsent" segment shouldn't be acked. The       rationale is that lwIP puts all outstanding segments on the       ->unsent list after a retransmission, so these segments may       in fact have been sent once. */    while (pcb->unsent != NULL && 802ea7e:	6ee3      	ldr	r3, [r4, #108]	; 0x6c 802ea80:	b913      	cbnz	r3, 802ea88 <tcp_receive+0x250>                                pcb->rttest, pcb->rtseq, ackno));    /* RTT estimation calculations. This is done by checking if the       incoming segment acknowledges the segment we use to take a       round-trip time measurement. */    if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { 802ea82:	6ba3      	ldr	r3, [r4, #56]	; 0x38 802ea84:	bb33      	cbnz	r3, 802ead4 <tcp_receive+0x29c> 802ea86:	e04d      	b.n	802eb24 <tcp_receive+0x2ec>       strange since an "unsent" segment shouldn't be acked. The       rationale is that lwIP puts all outstanding segments on the       ->unsent list after a retransmission, so these segments may       in fact have been sent once. */    while (pcb->unsent != NULL &&           TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) +  802ea88:	68db      	ldr	r3, [r3, #12] 802ea8a:	6835      	ldr	r5, [r6, #0] 802ea8c:	6858      	ldr	r0, [r3, #4] 802ea8e:	f7fd febf 	bl	802c810 <lwip_ntohl> 802ea92:	6ee3      	ldr	r3, [r4, #108]	; 0x6c 802ea94:	891f      	ldrh	r7, [r3, #8] 802ea96:	68db      	ldr	r3, [r3, #12] 802ea98:	4680      	mov	r8, r0 802ea9a:	8998      	ldrh	r0, [r3, #12] 802ea9c:	f7fd feb1 	bl	802c802 <lwip_ntohs> 802eaa0:	f010 0003 	ands.w	r0, r0, #3 802eaa4:	bf18      	it	ne 802eaa6:	2001      	movne	r0, #1 802eaa8:	ebc8 0505 	rsb	r5, r8, r5 802eaac:	1838      	adds	r0, r7, r0 802eaae:	1a2d      	subs	r5, r5, r0       on the list are acknowledged by the ACK. This may seem       strange since an "unsent" segment shouldn't be acked. The       rationale is that lwIP puts all outstanding segments on the       ->unsent list after a retransmission, so these segments may       in fact have been sent once. */    while (pcb->unsent != NULL && 802eab0:	2d00      	cmp	r5, #0 802eab2:	dbe6      	blt.n	802ea82 <tcp_receive+0x24a>           TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) +  802eab4:	6832      	ldr	r2, [r6, #0] 802eab6:	6d23      	ldr	r3, [r4, #80]	; 0x50 802eab8:	1ad3      	subs	r3, r2, r3 802eaba:	2b00      	cmp	r3, #0 802eabc:	ddbb      	ble.n	802ea36 <tcp_receive+0x1fe> 802eabe:	e7e0      	b.n	802ea82 <tcp_receive+0x24a> 802eac0:	2000e1a0 	.word	0x2000e1a0 802eac4:	2000e194 	.word	0x2000e194 802eac8:	2000e19c 	.word	0x2000e19c 802eacc:	2000e190 	.word	0x2000e190 802ead0:	2000e198 	.word	0x2000e198                                pcb->rttest, pcb->rtseq, ackno));    /* RTT estimation calculations. This is done by checking if the       incoming segment acknowledges the segment we use to take a       round-trip time measurement. */    if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { 802ead4:	497b      	ldr	r1, [pc, #492]	; (802ecc4 <tcp_receive+0x48c>) 802ead6:	6be2      	ldr	r2, [r4, #60]	; 0x3c 802ead8:	6809      	ldr	r1, [r1, #0] 802eada:	1a52      	subs	r2, r2, r1 802eadc:	2a00      	cmp	r2, #0 802eade:	da21      	bge.n	802eb24 <tcp_receive+0x2ec>      /* diff between this shouldn't exceed 32K since this are tcp timer ticks         and a round-trip shouldn't be that long... */      m = (s16_t)(tcp_ticks - pcb->rttest); 802eae0:	4a79      	ldr	r2, [pc, #484]	; (802ecc8 <tcp_receive+0x490>)      LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n",                                  m, m * TCP_SLOW_INTERVAL));      /* This is taken directly from VJs original code in his paper */      m = m - (pcb->sa >> 3); 802eae2:	f8b4 1040 	ldrh.w	r1, [r4, #64]	; 0x40       incoming segment acknowledges the segment we use to take a       round-trip time measurement. */    if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) {      /* diff between this shouldn't exceed 32K since this are tcp timer ticks         and a round-trip shouldn't be that long... */      m = (s16_t)(tcp_ticks - pcb->rttest); 802eae6:	6812      	ldr	r2, [r2, #0]      LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n",                                  m, m * TCP_SLOW_INTERVAL));      /* This is taken directly from VJs original code in his paper */      m = m - (pcb->sa >> 3); 802eae8:	f341 00cc 	sbfx	r0, r1, #3, #13       incoming segment acknowledges the segment we use to take a       round-trip time measurement. */    if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) {      /* diff between this shouldn't exceed 32K since this are tcp timer ticks         and a round-trip shouldn't be that long... */      m = (s16_t)(tcp_ticks - pcb->rttest); 802eaec:	1ad2      	subs	r2, r2, r3      LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n",                                  m, m * TCP_SLOW_INTERVAL));      /* This is taken directly from VJs original code in his paper */      m = m - (pcb->sa >> 3); 802eaee:	1a12      	subs	r2, r2, r0 802eaf0:	b292      	uxth	r2, r2 802eaf2:	b293      	uxth	r3, r2      pcb->sa += m; 802eaf4:	1851      	adds	r1, r2, r1 802eaf6:	b289      	uxth	r1, r1      if (m < 0) { 802eaf8:	0418      	lsls	r0, r3, #16      LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n",                                  m, m * TCP_SLOW_INTERVAL));      /* This is taken directly from VJs original code in his paper */      m = m - (pcb->sa >> 3);      pcb->sa += m; 802eafa:	f8a4 1040 	strh.w	r1, [r4, #64]	; 0x40      if (m < 0) { 802eafe:	d501      	bpl.n	802eb04 <tcp_receive+0x2cc>        m = -m; 802eb00:	4253      	negs	r3, r2 802eb02:	b29b      	uxth	r3, r3      }      m = m - (pcb->sv >> 2); 802eb04:	f8b4 2042 	ldrh.w	r2, [r4, #66]	; 0x42 802eb08:	f342 008d 	sbfx	r0, r2, #2, #14 802eb0c:	1a12      	subs	r2, r2, r0      pcb->sv += m; 802eb0e:	18d3      	adds	r3, r2, r3 802eb10:	b29b      	uxth	r3, r3      pcb->rto = (pcb->sa >> 3) + pcb->sv; 802eb12:	f341 01cc 	sbfx	r1, r1, #3, #13      pcb->sa += m;      if (m < 0) {        m = -m;      }      m = m - (pcb->sv >> 2);      pcb->sv += m; 802eb16:	f8a4 3042 	strh.w	r3, [r4, #66]	; 0x42      pcb->rto = (pcb->sa >> 3) + pcb->sv; 802eb1a:	185b      	adds	r3, r3, r1 802eb1c:	f8a4 3044 	strh.w	r3, [r4, #68]	; 0x44      LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n",                                  pcb->rto, pcb->rto * TCP_SLOW_INTERVAL));      pcb->rttest = 0; 802eb20:	2300      	movs	r3, #0 802eb22:	63a3      	str	r3, [r4, #56]	; 0x38  /* If the incoming segment contains data, we must process it     further unless the pcb already received a FIN.     (RFC 793, chapeter 3.9, "SEGMENT ARRIVES" in states CLOSE-WAIT, CLOSING,     LAST-ACK and TIME-WAIT: "Ignore the segment text.") */  if ((tcplen > 0) && (pcb->state < CLOSE_WAIT)) { 802eb24:	4b69      	ldr	r3, [pc, #420]	; (802eccc <tcp_receive+0x494>) 802eb26:	4a6a      	ldr	r2, [pc, #424]	; (802ecd0 <tcp_receive+0x498>) 802eb28:	8818      	ldrh	r0, [r3, #0] 802eb2a:	2800      	cmp	r0, #0 802eb2c:	f000 80b3 	beq.w	802ec96 <tcp_receive+0x45e> 802eb30:	7e23      	ldrb	r3, [r4, #24] 802eb32:	2b06      	cmp	r3, #6 802eb34:	f200 80af 	bhi.w	802ec96 <tcp_receive+0x45e>       this if the sequence number of the incoming segment is less       than rcv_nxt, and the sequence number plus the length of the       segment is larger than rcv_nxt. */    /*    if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){          if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/    if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)){ 802eb38:	6811      	ldr	r1, [r2, #0] 802eb3a:	6aa3      	ldr	r3, [r4, #40]	; 0x28 802eb3c:	43ca      	mvns	r2, r1 802eb3e:	42da      	cmn	r2, r3 802eb40:	d425      	bmi.n	802eb8e <tcp_receive+0x356> 802eb42:	1c5a      	adds	r2, r3, #1 802eb44:	1a52      	subs	r2, r2, r1 802eb46:	1a10      	subs	r0, r2, r0 802eb48:	2800      	cmp	r0, #0 802eb4a:	dc20      	bgt.n	802eb8e <tcp_receive+0x356>         After we are done with adjusting the pbuf pointers we must         adjust the ->data pointer in the seg and the segment         length.*/      off = pcb->rcv_nxt - seqno; 802eb4c:	1a59      	subs	r1, r3, r1      p = inseg.p; 802eb4e:	4b61      	ldr	r3, [pc, #388]	; (802ecd4 <tcp_receive+0x49c>) 802eb50:	6858      	ldr	r0, [r3, #4]      LWIP_ASSERT("inseg.p != NULL", inseg.p);      LWIP_ASSERT("insane offset!", (off < 0x7fff));      if (inseg.p->len < off) { 802eb52:	8943      	ldrh	r3, [r0, #10] 802eb54:	428b      	cmp	r3, r1 802eb56:	da0a      	bge.n	802eb6e <tcp_receive+0x336>        LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));        new_tot_len = (u16_t)(inseg.p->tot_len - off); 802eb58:	8902      	ldrh	r2, [r0, #8]          off -= p->len;          /* KJM following line changed (with addition of new_tot_len var)             to fix bug #9076             inseg.p->tot_len -= p->len; */          p->tot_len = new_tot_len;          p->len = 0; 802eb5a:	2500      	movs	r5, #0      p = inseg.p;      LWIP_ASSERT("inseg.p != NULL", inseg.p);      LWIP_ASSERT("insane offset!", (off < 0x7fff));      if (inseg.p->len < off) {        LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));        new_tot_len = (u16_t)(inseg.p->tot_len - off); 802eb5c:	1a52      	subs	r2, r2, r1        while (p->len < off) { 802eb5e:	e003      	b.n	802eb68 <tcp_receive+0x330>          off -= p->len;          /* KJM following line changed (with addition of new_tot_len var)             to fix bug #9076             inseg.p->tot_len -= p->len; */          p->tot_len = new_tot_len; 802eb60:	8102      	strh	r2, [r0, #8]          p->len = 0; 802eb62:	8145      	strh	r5, [r0, #10]          p = p->next; 802eb64:	6800      	ldr	r0, [r0, #0]      LWIP_ASSERT("insane offset!", (off < 0x7fff));      if (inseg.p->len < off) {        LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));        new_tot_len = (u16_t)(inseg.p->tot_len - off);        while (p->len < off) {          off -= p->len; 802eb66:	1ac9      	subs	r1, r1, r3      LWIP_ASSERT("inseg.p != NULL", inseg.p);      LWIP_ASSERT("insane offset!", (off < 0x7fff));      if (inseg.p->len < off) {        LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));        new_tot_len = (u16_t)(inseg.p->tot_len - off);        while (p->len < off) { 802eb68:	8943      	ldrh	r3, [r0, #10] 802eb6a:	428b      	cmp	r3, r1 802eb6c:	dbf8      	blt.n	802eb60 <tcp_receive+0x328>        if(pbuf_header(p, (s16_t)-off)) {          /* Do we need to cope with this failing?  Assert for now */          LWIP_ASSERT("pbuf_header failed", 0);        }      } else {        if(pbuf_header(inseg.p, (s16_t)-off)) { 802eb6e:	4249      	negs	r1, r1 802eb70:	b209      	sxth	r1, r1 802eb72:	f7fe ff54 	bl	802da1e <pbuf_header>          /* Do we need to cope with this failing?  Assert for now */          LWIP_ASSERT("pbuf_header failed", 0);        }      }      inseg.len -= (u16_t)(pcb->rcv_nxt - seqno); 802eb76:	4a57      	ldr	r2, [pc, #348]	; (802ecd4 <tcp_receive+0x49c>) 802eb78:	4955      	ldr	r1, [pc, #340]	; (802ecd0 <tcp_receive+0x498>) 802eb7a:	8915      	ldrh	r5, [r2, #8] 802eb7c:	6808      	ldr	r0, [r1, #0] 802eb7e:	6aa3      	ldr	r3, [r4, #40]	; 0x28 802eb80:	1940      	adds	r0, r0, r5 802eb82:	1ac0      	subs	r0, r0, r3 802eb84:	8110      	strh	r0, [r2, #8]      inseg.tcphdr->seqno = seqno = pcb->rcv_nxt; 802eb86:	68d2      	ldr	r2, [r2, #12] 802eb88:	600b      	str	r3, [r1, #0] 802eb8a:	6053      	str	r3, [r2, #4] 802eb8c:	e006      	b.n	802eb9c <tcp_receive+0x364>    }    else {      if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ 802eb8e:	1ac9      	subs	r1, r1, r3 802eb90:	2900      	cmp	r1, #0 802eb92:	da03      	bge.n	802eb9c <tcp_receive+0x364>        /* the whole segment is < rcv_nxt */        /* must be a duplicate of a packet that has already been correctly handled */        LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno));        tcp_ack_now(pcb); 802eb94:	7fa3      	ldrb	r3, [r4, #30] 802eb96:	f043 0302 	orr.w	r3, r3, #2 802eb9a:	77a3      	strb	r3, [r4, #30]    }    /* The sequence number must be within the window (above rcv_nxt       and below rcv_nxt + rcv_wnd) in order to be further       processed. */    if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,  802eb9c:	4b4c      	ldr	r3, [pc, #304]	; (802ecd0 <tcp_receive+0x498>) 802eb9e:	6aa2      	ldr	r2, [r4, #40]	; 0x28 802eba0:	681b      	ldr	r3, [r3, #0] 802eba2:	1a99      	subs	r1, r3, r2 802eba4:	2900      	cmp	r1, #0 802eba6:	db71      	blt.n	802ec8c <tcp_receive+0x454> 802eba8:	1c59      	adds	r1, r3, #1 802ebaa:	8da0      	ldrh	r0, [r4, #44]	; 0x2c 802ebac:	1a89      	subs	r1, r1, r2 802ebae:	1a09      	subs	r1, r1, r0 802ebb0:	2900      	cmp	r1, #0 802ebb2:	dc6b      	bgt.n	802ec8c <tcp_receive+0x454>                        pcb->rcv_nxt + pcb->rcv_wnd - 1)){      if (pcb->rcv_nxt == seqno) { 802ebb4:	429a      	cmp	r2, r3 802ebb6:	d169      	bne.n	802ec8c <tcp_receive+0x454>        /* The incoming segment is the next in sequence. We check if           we have to trim the end of the segment and update rcv_nxt           and pass the data to the application. */        tcplen = TCP_TCPLEN(&inseg); 802ebb8:	4d46      	ldr	r5, [pc, #280]	; (802ecd4 <tcp_receive+0x49c>) 802ebba:	68eb      	ldr	r3, [r5, #12] 802ebbc:	892e      	ldrh	r6, [r5, #8] 802ebbe:	8998      	ldrh	r0, [r3, #12] 802ebc0:	f7fd fe1f 	bl	802c802 <lwip_ntohs> 802ebc4:	f010 0003 	ands.w	r0, r0, #3 802ebc8:	bf18      	it	ne 802ebca:	2001      	movne	r0, #1 802ebcc:	4b3f      	ldr	r3, [pc, #252]	; (802eccc <tcp_receive+0x494>) 802ebce:	1830      	adds	r0, r6, r0 802ebd0:	b280      	uxth	r0, r0 802ebd2:	8018      	strh	r0, [r3, #0]        if (tcplen > pcb->rcv_wnd) { 802ebd4:	8da3      	ldrh	r3, [r4, #44]	; 0x2c 802ebd6:	4283      	cmp	r3, r0 802ebd8:	d230      	bcs.n	802ec3c <tcp_receive+0x404>          LWIP_DEBUGF(TCP_INPUT_DEBUG,                       ("tcp_receive: other end overran receive window"                       "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n",                       seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd));          if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { 802ebda:	68eb      	ldr	r3, [r5, #12] 802ebdc:	8998      	ldrh	r0, [r3, #12] 802ebde:	f7fd fe10 	bl	802c802 <lwip_ntohs> 802ebe2:	07c0      	lsls	r0, r0, #31 802ebe4:	d50c      	bpl.n	802ec00 <tcp_receive+0x3c8>            /* Must remove the FIN from the header as we're trimming              * that byte of sequence-space from the packet */            TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) &~ TCP_FIN); 802ebe6:	68ed      	ldr	r5, [r5, #12] 802ebe8:	89ae      	ldrh	r6, [r5, #12] 802ebea:	4630      	mov	r0, r6 802ebec:	f7fd fe09 	bl	802c802 <lwip_ntohs> 802ebf0:	f000 003e 	and.w	r0, r0, #62	; 0x3e 802ebf4:	f7fd fe00 	bl	802c7f8 <lwip_htons> 802ebf8:	f426 567c 	bic.w	r6, r6, #16128	; 0x3f00 802ebfc:	4330      	orrs	r0, r6 802ebfe:	81a8      	strh	r0, [r5, #12]          }          /* Adjust length of segment to fit in the window. */          inseg.len = pcb->rcv_wnd; 802ec00:	8da3      	ldrh	r3, [r4, #44]	; 0x2c 802ec02:	4d34      	ldr	r5, [pc, #208]	; (802ecd4 <tcp_receive+0x49c>) 802ec04:	812b      	strh	r3, [r5, #8]          if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { 802ec06:	68eb      	ldr	r3, [r5, #12] 802ec08:	8998      	ldrh	r0, [r3, #12] 802ec0a:	f7fd fdfa 	bl	802c802 <lwip_ntohs> 802ec0e:	f000 0002 	and.w	r0, r0, #2 802ec12:	b280      	uxth	r0, r0 802ec14:	b110      	cbz	r0, 802ec1c <tcp_receive+0x3e4>            inseg.len -= 1; 802ec16:	892b      	ldrh	r3, [r5, #8] 802ec18:	3b01      	subs	r3, #1 802ec1a:	812b      	strh	r3, [r5, #8]          }          pbuf_realloc(inseg.p, inseg.len); 802ec1c:	6868      	ldr	r0, [r5, #4] 802ec1e:	8929      	ldrh	r1, [r5, #8] 802ec20:	f7fe ff4f 	bl	802dac2 <pbuf_realloc>          tcplen = TCP_TCPLEN(&inseg); 802ec24:	68eb      	ldr	r3, [r5, #12] 802ec26:	892e      	ldrh	r6, [r5, #8] 802ec28:	8998      	ldrh	r0, [r3, #12] 802ec2a:	f7fd fdea 	bl	802c802 <lwip_ntohs> 802ec2e:	f010 0003 	ands.w	r0, r0, #3 802ec32:	bf18      	it	ne 802ec34:	2001      	movne	r0, #1 802ec36:	4b25      	ldr	r3, [pc, #148]	; (802eccc <tcp_receive+0x494>) 802ec38:	1830      	adds	r0, r6, r0 802ec3a:	8018      	strh	r0, [r3, #0]            pcb->ooseq = next;          }        }#endif /* TCP_QUEUE_OOSEQ */        pcb->rcv_nxt = seqno + tcplen; 802ec3c:	4b23      	ldr	r3, [pc, #140]	; (802eccc <tcp_receive+0x494>) 802ec3e:	4a24      	ldr	r2, [pc, #144]	; (802ecd0 <tcp_receive+0x498>) 802ec40:	881b      	ldrh	r3, [r3, #0] 802ec42:	6812      	ldr	r2, [r2, #0] 802ec44:	189a      	adds	r2, r3, r2 802ec46:	62a2      	str	r2, [r4, #40]	; 0x28        /* Update the receiver's (our) window. */        LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen);        pcb->rcv_wnd -= tcplen; 802ec48:	8da2      	ldrh	r2, [r4, #44]	; 0x2c 802ec4a:	1ad3      	subs	r3, r2, r3 802ec4c:	85a3      	strh	r3, [r4, #44]	; 0x2c        tcp_update_rcv_ann_wnd(pcb); 802ec4e:	4620      	mov	r0, r4 802ec50:	f7ff f986 	bl	802df60 <tcp_update_rcv_ann_wnd>           chains its data on this pbuf as well.           If the segment was a FIN, we set the TF_GOT_FIN flag that will           be used to indicate to the application that the remote side has           closed its end of the connection. */        if (inseg.p->tot_len > 0) { 802ec54:	4b1f      	ldr	r3, [pc, #124]	; (802ecd4 <tcp_receive+0x49c>) 802ec56:	685a      	ldr	r2, [r3, #4] 802ec58:	8911      	ldrh	r1, [r2, #8] 802ec5a:	b119      	cbz	r1, 802ec64 <tcp_receive+0x42c>          recv_data = inseg.p; 802ec5c:	491e      	ldr	r1, [pc, #120]	; (802ecd8 <tcp_receive+0x4a0>) 802ec5e:	600a      	str	r2, [r1, #0]          /* Since this pbuf now is the responsibility of the             application, we delete our reference to it so that we won't             (mistakingly) deallocate it. */          inseg.p = NULL; 802ec60:	2200      	movs	r2, #0 802ec62:	605a      	str	r2, [r3, #4]        }        if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { 802ec64:	68db      	ldr	r3, [r3, #12] 802ec66:	8998      	ldrh	r0, [r3, #12] 802ec68:	f7fd fdcb 	bl	802c802 <lwip_ntohs> 802ec6c:	07c1      	lsls	r1, r0, #31 802ec6e:	d504      	bpl.n	802ec7a <tcp_receive+0x442>          LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n"));          recv_flags |= TF_GOT_FIN; 802ec70:	4b1a      	ldr	r3, [pc, #104]	; (802ecdc <tcp_receive+0x4a4>) 802ec72:	781a      	ldrb	r2, [r3, #0] 802ec74:	f042 0220 	orr.w	r2, r2, #32 802ec78:	701a      	strb	r2, [r3, #0]        }#endif /* TCP_QUEUE_OOSEQ */        /* Acknowledge the segment(s). */        tcp_ack(pcb); 802ec7a:	7fa3      	ldrb	r3, [r4, #30] 802ec7c:	07da      	lsls	r2, r3, #31 802ec7e:	d502      	bpl.n	802ec86 <tcp_receive+0x44e> 802ec80:	f023 0301 	bic.w	r3, r3, #1 802ec84:	e013      	b.n	802ecae <tcp_receive+0x476> 802ec86:	f043 0301 	orr.w	r3, r3, #1 802ec8a:	e012      	b.n	802ecb2 <tcp_receive+0x47a>      } else {        /* We get here if the incoming segment is out-of-sequence. */        tcp_send_empty_ack(pcb); 802ec8c:	4620      	mov	r0, r4      TCP_SEQ_GEQ(seqno, pcb->rcv_nxt + pcb->rcv_wnd)) {*/    if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd-1)){      tcp_ack_now(pcb);    }  }} 802ec8e:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}        /* Acknowledge the segment(s). */        tcp_ack(pcb);      } else {        /* We get here if the incoming segment is out-of-sequence. */        tcp_send_empty_ack(pcb); 802ec92:	f000 bf09 	b.w	802faa8 <tcp_send_empty_ack>  } else {    /* Segments with length 0 is taken care of here. Segments that       fall out of the window are ACKed. */    /*if (TCP_SEQ_GT(pcb->rcv_nxt, seqno) ||      TCP_SEQ_GEQ(seqno, pcb->rcv_nxt + pcb->rcv_wnd)) {*/    if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd-1)){ 802ec96:	6812      	ldr	r2, [r2, #0] 802ec98:	6aa3      	ldr	r3, [r4, #40]	; 0x28 802ec9a:	1ad1      	subs	r1, r2, r3 802ec9c:	2900      	cmp	r1, #0 802ec9e:	db05      	blt.n	802ecac <tcp_receive+0x474> 802eca0:	3201      	adds	r2, #1 802eca2:	8da1      	ldrh	r1, [r4, #44]	; 0x2c 802eca4:	1ad3      	subs	r3, r2, r3 802eca6:	1a5b      	subs	r3, r3, r1 802eca8:	2b00      	cmp	r3, #0 802ecaa:	dd09      	ble.n	802ecc0 <tcp_receive+0x488>      tcp_ack_now(pcb); 802ecac:	7fa3      	ldrb	r3, [r4, #30] 802ecae:	f043 0302 	orr.w	r3, r3, #2 802ecb2:	77a3      	strb	r3, [r4, #30] 802ecb4:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}        }      }      /* If Clause (1) or more is true, but not a duplicate ack, reset       * count of consecutive duplicate acks */      if (!found_dupack) {        pcb->dupacks = 0; 802ecb8:	2300      	movs	r3, #0 802ecba:	f884 3047 	strb.w	r3, [r4, #71]	; 0x47 802ecbe:	e6dd      	b.n	802ea7c <tcp_receive+0x244> 802ecc0:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802ecc4:	2000e19c 	.word	0x2000e19c 802ecc8:	20011080 	.word	0x20011080 802eccc:	2000e198 	.word	0x2000e198 802ecd0:	2000e194 	.word	0x2000e194 802ecd4:	2000e1ac 	.word	0x2000e1ac 802ecd8:	2000e1a4 	.word	0x2000e1a4 802ecdc:	2000e1a1 	.word	0x2000e1a10802ece0 <tcp_input>: * @param p received TCP segment to process (p->payload pointing to the IP header) * @param inp network interface on which this segment was received */voidtcp_input(struct pbuf *p, struct netif *inp){ 802ece0:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 802ece4:	4606      	mov	r6, r0 802ece6:	460f      	mov	r7, r1  err_t err;  PERF_START;  TCP_STATS_INC(tcp.recv);  snmp_inc_tcpinsegs(); 802ece8:	f003 fcb8 	bl	803265c <snmp_inc_tcpinsegs>  iphdr = (struct ip_hdr *)p->payload; 802ecec:	6873      	ldr	r3, [r6, #4] 802ecee:	4aa7      	ldr	r2, [pc, #668]	; (802ef8c <tcp_input+0x2ac>)  tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4); 802ecf0:	4ca7      	ldr	r4, [pc, #668]	; (802ef90 <tcp_input+0x2b0>)  PERF_START;  TCP_STATS_INC(tcp.recv);  snmp_inc_tcpinsegs();  iphdr = (struct ip_hdr *)p->payload; 802ecf2:	6013      	str	r3, [r2, #0]  tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4); 802ecf4:	781a      	ldrb	r2, [r3, #0] 802ecf6:	f002 020f 	and.w	r2, r2, #15#if TCP_INPUT_DEBUG  tcp_debug_print(tcphdr);#endif  /* remove header from payload */  if (pbuf_header(p, -((s16_t)(IPH_HL(iphdr) * 4))) || (p->tot_len < sizeof(struct tcp_hdr))) { 802ecfa:	0091      	lsls	r1, r2, #2  TCP_STATS_INC(tcp.recv);  snmp_inc_tcpinsegs();  iphdr = (struct ip_hdr *)p->payload;  tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4); 802ecfc:	eb03 0382 	add.w	r3, r3, r2, lsl #2#if TCP_INPUT_DEBUG  tcp_debug_print(tcphdr);#endif  /* remove header from payload */  if (pbuf_header(p, -((s16_t)(IPH_HL(iphdr) * 4))) || (p->tot_len < sizeof(struct tcp_hdr))) { 802ed00:	4630      	mov	r0, r6 802ed02:	4249      	negs	r1, r1  TCP_STATS_INC(tcp.recv);  snmp_inc_tcpinsegs();  iphdr = (struct ip_hdr *)p->payload;  tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4); 802ed04:	6023      	str	r3, [r4, #0]#if TCP_INPUT_DEBUG  tcp_debug_print(tcphdr);#endif  /* remove header from payload */  if (pbuf_header(p, -((s16_t)(IPH_HL(iphdr) * 4))) || (p->tot_len < sizeof(struct tcp_hdr))) { 802ed06:	f7fe fe8a 	bl	802da1e <pbuf_header> 802ed0a:	2800      	cmp	r0, #0 802ed0c:	f040 83ce 	bne.w	802f4ac <tcp_input+0x7cc> 802ed10:	8933      	ldrh	r3, [r6, #8] 802ed12:	2b13      	cmp	r3, #19 802ed14:	f240 83ca 	bls.w	802f4ac <tcp_input+0x7cc>    TCP_STATS_INC(tcp.lenerr);    goto dropped;  }  /* Don't even process incoming broadcasts/multicasts. */  if (ip_addr_isbroadcast(¤t_iphdr_dest, inp) || 802ed18:	4d9e      	ldr	r5, [pc, #632]	; (802ef94 <tcp_input+0x2b4>) 802ed1a:	4639      	mov	r1, r7 802ed1c:	6828      	ldr	r0, [r5, #0] 802ed1e:	f001 fd43 	bl	80307a8 <ip4_addr_isbroadcast> 802ed22:	2800      	cmp	r0, #0 802ed24:	f040 83c2 	bne.w	802f4ac <tcp_input+0x7cc>      ip_addr_ismulticast(¤t_iphdr_dest)) { 802ed28:	682b      	ldr	r3, [r5, #0] 802ed2a:	f003 03f0 	and.w	r3, r3, #240	; 0xf0    TCP_STATS_INC(tcp.lenerr);    goto dropped;  }  /* Don't even process incoming broadcasts/multicasts. */  if (ip_addr_isbroadcast(¤t_iphdr_dest, inp) || 802ed2e:	2be0      	cmp	r3, #224	; 0xe0 802ed30:	f000 83bc 	beq.w	802f4ac <tcp_input+0x7cc>  }#endif  /* Move the payload pointer in the pbuf so that it points to the     TCP data instead of the TCP header. */  hdrlen = TCPH_HDRLEN(tcphdr); 802ed34:	6823      	ldr	r3, [r4, #0] 802ed36:	8998      	ldrh	r0, [r3, #12] 802ed38:	f7fd fd63 	bl	802c802 <lwip_ntohs>  if(pbuf_header(p, -(hdrlen * 4))){ 802ed3c:	f06f 0103 	mvn.w	r1, #3 802ed40:	f3c0 3307 	ubfx	r3, r0, #12, #8 802ed44:	4359      	muls	r1, r3 802ed46:	4630      	mov	r0, r6 802ed48:	f7fe fe69 	bl	802da1e <pbuf_header> 802ed4c:	4683      	mov	fp, r0 802ed4e:	2800      	cmp	r0, #0 802ed50:	f040 83ac 	bne.w	802f4ac <tcp_input+0x7cc>    TCP_STATS_INC(tcp.lenerr);    goto dropped;  }  /* Convert fields in TCP header to host byte order. */  tcphdr->src = ntohs(tcphdr->src); 802ed54:	6827      	ldr	r7, [r4, #0] 802ed56:	8838      	ldrh	r0, [r7, #0] 802ed58:	f7fd fd53 	bl	802c802 <lwip_ntohs> 802ed5c:	8038      	strh	r0, [r7, #0]  tcphdr->dest = ntohs(tcphdr->dest); 802ed5e:	6827      	ldr	r7, [r4, #0] 802ed60:	8878      	ldrh	r0, [r7, #2] 802ed62:	f7fd fd4e 	bl	802c802 <lwip_ntohs> 802ed66:	8078      	strh	r0, [r7, #2]  seqno = tcphdr->seqno = ntohl(tcphdr->seqno); 802ed68:	6827      	ldr	r7, [r4, #0] 802ed6a:	6878      	ldr	r0, [r7, #4] 802ed6c:	f7fd fd50 	bl	802c810 <lwip_ntohl> 802ed70:	4b89      	ldr	r3, [pc, #548]	; (802ef98 <tcp_input+0x2b8>) 802ed72:	6078      	str	r0, [r7, #4]  ackno = tcphdr->ackno = ntohl(tcphdr->ackno); 802ed74:	6827      	ldr	r7, [r4, #0]  }  /* Convert fields in TCP header to host byte order. */  tcphdr->src = ntohs(tcphdr->src);  tcphdr->dest = ntohs(tcphdr->dest);  seqno = tcphdr->seqno = ntohl(tcphdr->seqno); 802ed76:	6018      	str	r0, [r3, #0]  ackno = tcphdr->ackno = ntohl(tcphdr->ackno); 802ed78:	68b8      	ldr	r0, [r7, #8] 802ed7a:	f7fd fd49 	bl	802c810 <lwip_ntohl> 802ed7e:	4b87      	ldr	r3, [pc, #540]	; (802ef9c <tcp_input+0x2bc>) 802ed80:	60b8      	str	r0, [r7, #8]  tcphdr->wnd = ntohs(tcphdr->wnd); 802ed82:	6827      	ldr	r7, [r4, #0]  /* Convert fields in TCP header to host byte order. */  tcphdr->src = ntohs(tcphdr->src);  tcphdr->dest = ntohs(tcphdr->dest);  seqno = tcphdr->seqno = ntohl(tcphdr->seqno);  ackno = tcphdr->ackno = ntohl(tcphdr->ackno); 802ed84:	6018      	str	r0, [r3, #0]  tcphdr->wnd = ntohs(tcphdr->wnd); 802ed86:	89f8      	ldrh	r0, [r7, #14] 802ed88:	f7fd fd3b 	bl	802c802 <lwip_ntohs> 802ed8c:	81f8      	strh	r0, [r7, #14]  flags = TCPH_FLAGS(tcphdr); 802ed8e:	6823      	ldr	r3, [r4, #0] 802ed90:	8998      	ldrh	r0, [r3, #12] 802ed92:	f7fd fd36 	bl	802c802 <lwip_ntohs> 802ed96:	4b82      	ldr	r3, [pc, #520]	; (802efa0 <tcp_input+0x2c0>)  tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); 802ed98:	f8b6 8008 	ldrh.w	r8, [r6, #8]    for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {    LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);    LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);    LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);    if (pcb->remote_port == tcphdr->src && 802ed9c:	6827      	ldr	r7, [r4, #0]  seqno = tcphdr->seqno = ntohl(tcphdr->seqno);  ackno = tcphdr->ackno = ntohl(tcphdr->ackno);  tcphdr->wnd = ntohs(tcphdr->wnd);  flags = TCPH_FLAGS(tcphdr);  tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); 802ed9e:	f010 0c03 	ands.w	ip, r0, #3  tcphdr->dest = ntohs(tcphdr->dest);  seqno = tcphdr->seqno = ntohl(tcphdr->seqno);  ackno = tcphdr->ackno = ntohl(tcphdr->ackno);  tcphdr->wnd = ntohs(tcphdr->wnd);  flags = TCPH_FLAGS(tcphdr); 802eda2:	f000 013f 	and.w	r1, r0, #63	; 0x3f  tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); 802eda6:	bf18      	it	ne 802eda8:	f04f 0c01 	movne.w	ip, #1  tcphdr->dest = ntohs(tcphdr->dest);  seqno = tcphdr->seqno = ntohl(tcphdr->seqno);  ackno = tcphdr->ackno = ntohl(tcphdr->ackno);  tcphdr->wnd = ntohs(tcphdr->wnd);  flags = TCPH_FLAGS(tcphdr); 802edac:	7019      	strb	r1, [r3, #0]  tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); 802edae:	44c4      	add	ip, r8 802edb0:	4b7c      	ldr	r3, [pc, #496]	; (802efa4 <tcp_input+0x2c4>)    LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);    LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);    if (pcb->remote_port == tcphdr->src &&       pcb->local_port == tcphdr->dest &&       ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src) &&       ip_addr_cmp(&(pcb->local_ip), ¤t_iphdr_dest)) { 802edb2:	6829      	ldr	r1, [r5, #0]  seqno = tcphdr->seqno = ntohl(tcphdr->seqno);  ackno = tcphdr->ackno = ntohl(tcphdr->ackno);  tcphdr->wnd = ntohs(tcphdr->wnd);  flags = TCPH_FLAGS(tcphdr);  tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); 802edb4:	fa1f fc8c 	uxth.w	ip, ip 802edb8:	f8a3 c000 	strh.w	ip, [r3]  /* Demultiplex an incoming segment. First, we check if it is destined     for an active connection. */  prev = NULL;    for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802edbc:	4b7a      	ldr	r3, [pc, #488]	; (802efa8 <tcp_input+0x2c8>) 802edbe:	f8d3 a000 	ldr.w	sl, [r3]    LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);    LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);    LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);    if (pcb->remote_port == tcphdr->src &&       pcb->local_port == tcphdr->dest &&       ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src) && 802edc2:	4b7a      	ldr	r3, [pc, #488]	; (802efac <tcp_input+0x2cc>)  tcphdr->dest = ntohs(tcphdr->dest);  seqno = tcphdr->seqno = ntohl(tcphdr->seqno);  ackno = tcphdr->ackno = ntohl(tcphdr->ackno);  tcphdr->wnd = ntohs(tcphdr->wnd);  flags = TCPH_FLAGS(tcphdr); 802edc4:	4602      	mov	r2, r0    LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);    LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);    LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);    if (pcb->remote_port == tcphdr->src &&       pcb->local_port == tcphdr->dest &&       ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src) && 802edc6:	f8d3 9000 	ldr.w	r9, [r3]  /* Demultiplex an incoming segment. First, we check if it is destined     for an active connection. */  prev = NULL;    for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802edca:	4654      	mov	r4, sl  flags = TCPH_FLAGS(tcphdr);  tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0);  /* Demultiplex an incoming segment. First, we check if it is destined     for an active connection. */  prev = NULL; 802edcc:	4658      	mov	r0, fp    for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802edce:	e019      	b.n	802ee04 <tcp_input+0x124>    LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);    LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);    LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);    if (pcb->remote_port == tcphdr->src && 802edd0:	8ba5      	ldrh	r5, [r4, #28] 802edd2:	883b      	ldrh	r3, [r7, #0] 802edd4:	429d      	cmp	r5, r3 802edd6:	d113      	bne.n	802ee00 <tcp_input+0x120> 802edd8:	8b65      	ldrh	r5, [r4, #26] 802edda:	887b      	ldrh	r3, [r7, #2] 802eddc:	429d      	cmp	r5, r3 802edde:	d10f      	bne.n	802ee00 <tcp_input+0x120>       pcb->local_port == tcphdr->dest && 802ede0:	6863      	ldr	r3, [r4, #4] 802ede2:	454b      	cmp	r3, r9 802ede4:	d10c      	bne.n	802ee00 <tcp_input+0x120>       ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src) && 802ede6:	6823      	ldr	r3, [r4, #0] 802ede8:	428b      	cmp	r3, r1 802edea:	d109      	bne.n	802ee00 <tcp_input+0x120>      /* Move this PCB to the front of the list so that subsequent         lookups will be faster (we exploit locality in TCP segment         arrivals). */      LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb);      if (prev != NULL) { 802edec:	2800      	cmp	r0, #0 802edee:	f000 8382 	beq.w	802f4f6 <tcp_input+0x816>        prev->next = pcb->next; 802edf2:	68e3      	ldr	r3, [r4, #12] 802edf4:	60c3      	str	r3, [r0, #12]        pcb->next = tcp_active_pcbs;        tcp_active_pcbs = pcb; 802edf6:	4b6c      	ldr	r3, [pc, #432]	; (802efa8 <tcp_input+0x2c8>)         lookups will be faster (we exploit locality in TCP segment         arrivals). */      LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb);      if (prev != NULL) {        prev->next = pcb->next;        pcb->next = tcp_active_pcbs; 802edf8:	f8c4 a00c 	str.w	sl, [r4, #12]        tcp_active_pcbs = pcb; 802edfc:	601c      	str	r4, [r3, #0] 802edfe:	e37a      	b.n	802f4f6 <tcp_input+0x816> 802ee00:	4620      	mov	r0, r4  /* Demultiplex an incoming segment. First, we check if it is destined     for an active connection. */  prev = NULL;    for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { 802ee02:	68e4      	ldr	r4, [r4, #12] 802ee04:	2c00      	cmp	r4, #0 802ee06:	d1e3      	bne.n	802edd0 <tcp_input+0xf0> 802ee08:	e372      	b.n	802f4f0 <tcp_input+0x810>  if (pcb == NULL) {    /* If it did not go to an active connection, we check the connections       in the TIME-WAIT state. */    for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {      LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);      if (pcb->remote_port == tcphdr->src && 802ee0a:	8b98      	ldrh	r0, [r3, #28] 802ee0c:	883c      	ldrh	r4, [r7, #0] 802ee0e:	4284      	cmp	r4, r0 802ee10:	d130      	bne.n	802ee74 <tcp_input+0x194>         pcb->local_port == tcphdr->dest && 802ee12:	8b58      	ldrh	r0, [r3, #26]  if (pcb == NULL) {    /* If it did not go to an active connection, we check the connections       in the TIME-WAIT state. */    for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {      LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);      if (pcb->remote_port == tcphdr->src && 802ee14:	887d      	ldrh	r5, [r7, #2] 802ee16:	4285      	cmp	r5, r0 802ee18:	d12c      	bne.n	802ee74 <tcp_input+0x194>         pcb->local_port == tcphdr->dest && 802ee1a:	6858      	ldr	r0, [r3, #4] 802ee1c:	4548      	cmp	r0, r9 802ee1e:	d129      	bne.n	802ee74 <tcp_input+0x194>         ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src) && 802ee20:	6818      	ldr	r0, [r3, #0] 802ee22:	4288      	cmp	r0, r1 802ee24:	d126      	bne.n	802ee74 <tcp_input+0x194>  /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */  /* RFC 793 3.9 Event Processing - Segment Arrives:   * - first check sequence number - we skip that one in TIME_WAIT (always   *   acceptable since we only send ACKs)   * - second check the RST bit (... return) */  if (flags & TCP_RST)  { 802ee26:	f002 0104 	and.w	r1, r2, #4 802ee2a:	b2c9      	uxtb	r1, r1 802ee2c:	2900      	cmp	r1, #0 802ee2e:	f040 833f 	bne.w	802f4b0 <tcp_input+0x7d0>    return ERR_OK;  }  /* - fourth, check the SYN bit, */  if (flags & TCP_SYN) { 802ee32:	f002 0102 	and.w	r1, r2, #2 802ee36:	b2c9      	uxtb	r1, r1 802ee38:	b159      	cbz	r1, 802ee52 <tcp_input+0x172>    /* If an incoming segment is not acceptable, an acknowledgment       should be sent in reply */    if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt+pcb->rcv_wnd)) { 802ee3a:	4a57      	ldr	r2, [pc, #348]	; (802ef98 <tcp_input+0x2b8>) 802ee3c:	6811      	ldr	r1, [r2, #0] 802ee3e:	6a9a      	ldr	r2, [r3, #40]	; 0x28 802ee40:	1a8a      	subs	r2, r1, r2 802ee42:	d40b      	bmi.n	802ee5c <tcp_input+0x17c> 802ee44:	8d98      	ldrh	r0, [r3, #44]	; 0x2c 802ee46:	1a12      	subs	r2, r2, r0 802ee48:	2a00      	cmp	r2, #0 802ee4a:	dc07      	bgt.n	802ee5c <tcp_input+0x17c>      /* If the SYN is in the window it is an error, send a reset */      tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(), 802ee4c:	9500      	str	r5, [sp, #0] 802ee4e:	9401      	str	r4, [sp, #4] 802ee50:	e041      	b.n	802eed6 <tcp_input+0x1f6>        tcphdr->dest, tcphdr->src);      return ERR_OK;    }  } else if (flags & TCP_FIN) { 802ee52:	07d2      	lsls	r2, r2, #31 802ee54:	d502      	bpl.n	802ee5c <tcp_input+0x17c>    /* - eighth, check the FIN bit: Remain in the TIME-WAIT state.         Restart the 2 MSL time-wait timeout.*/    pcb->tmr = tcp_ticks; 802ee56:	4a56      	ldr	r2, [pc, #344]	; (802efb0 <tcp_input+0x2d0>) 802ee58:	6812      	ldr	r2, [r2, #0] 802ee5a:	625a      	str	r2, [r3, #36]	; 0x24  }  if ((tcplen > 0))  { 802ee5c:	f1bc 0f00 	cmp.w	ip, #0 802ee60:	f000 8326 	beq.w	802f4b0 <tcp_input+0x7d0>    /* Acknowledge data, FIN or out-of-window SYN */    pcb->flags |= TF_ACK_NOW; 802ee64:	7f9a      	ldrb	r2, [r3, #30] 802ee66:	f042 0202 	orr.w	r2, r2, #2 802ee6a:	779a      	strb	r2, [r3, #30]    return tcp_output(pcb); 802ee6c:	4618      	mov	r0, r3 802ee6e:	f000 fe3d 	bl	802faec <tcp_output> 802ee72:	e31d      	b.n	802f4b0 <tcp_input+0x7d0>  }  if (pcb == NULL) {    /* If it did not go to an active connection, we check the connections       in the TIME-WAIT state. */    for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { 802ee74:	68db      	ldr	r3, [r3, #12] 802ee76:	2b00      	cmp	r3, #0 802ee78:	d1c7      	bne.n	802ee0a <tcp_input+0x12a>    }    /* Finally, if we still did not get a match, we check all PCBs that       are LISTENing for incoming connections. */    prev = NULL;    for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { 802ee7a:	484e      	ldr	r0, [pc, #312]	; (802efb4 <tcp_input+0x2d4>) 802ee7c:	6804      	ldr	r4, [r0, #0] 802ee7e:	4625      	mov	r5, r4 802ee80:	e00f      	b.n	802eea2 <tcp_input+0x1c2>      if (lpcb->local_port == tcphdr->dest) { 802ee82:	8b68      	ldrh	r0, [r5, #26] 802ee84:	f8b7 8002 	ldrh.w	r8, [r7, #2] 802ee88:	4580      	cmp	r8, r0 802ee8a:	d108      	bne.n	802ee9e <tcp_input+0x1be>          /* found an ANY-match */          lpcb_any = lpcb;          lpcb_prev = prev;        }#else /* SO_REUSE */        if (ip_addr_cmp(&(lpcb->local_ip), ¤t_iphdr_dest) || 802ee8c:	f8d5 8000 	ldr.w	r8, [r5] 802ee90:	4588      	cmp	r8, r1 802ee92:	f000 8342 	beq.w	802f51a <tcp_input+0x83a>            ip_addr_isany(&(lpcb->local_ip))) { 802ee96:	f1b8 0f00 	cmp.w	r8, #0 802ee9a:	f000 833e 	beq.w	802f51a <tcp_input+0x83a> 802ee9e:	462b      	mov	r3, r5    }    /* Finally, if we still did not get a match, we check all PCBs that       are LISTENing for incoming connections. */    prev = NULL;    for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { 802eea0:	68ed      	ldr	r5, [r5, #12] 802eea2:	2d00      	cmp	r5, #0 802eea4:	d1ed      	bne.n	802ee82 <tcp_input+0x1a2> 802eea6:	e33c      	b.n	802f522 <tcp_input+0x842>    if (lpcb != NULL) {      /* Move this PCB to the front of the list so that subsequent         lookups will be faster (we exploit locality in TCP segment         arrivals). */      if (prev != NULL) {        ((struct tcp_pcb_listen *)prev)->next = lpcb->next; 802eea8:	68e9      	ldr	r1, [r5, #12] 802eeaa:	60d9      	str	r1, [r3, #12]              /* our successor is the remainder of the listening list */        lpcb->next = tcp_listen_pcbs.listen_pcbs;              /* put this listening pcb at the head of the listening list */        tcp_listen_pcbs.listen_pcbs = lpcb; 802eeac:	4b41      	ldr	r3, [pc, #260]	; (802efb4 <tcp_input+0x2d4>)         lookups will be faster (we exploit locality in TCP segment         arrivals). */      if (prev != NULL) {        ((struct tcp_pcb_listen *)prev)->next = lpcb->next;              /* our successor is the remainder of the listening list */        lpcb->next = tcp_listen_pcbs.listen_pcbs; 802eeae:	60ec      	str	r4, [r5, #12]              /* put this listening pcb at the head of the listening list */        tcp_listen_pcbs.listen_pcbs = lpcb; 802eeb0:	601d      	str	r5, [r3, #0]tcp_listen_input(struct tcp_pcb_listen *pcb){  struct tcp_pcb *npcb;  err_t rc;  if (flags & TCP_RST) { 802eeb2:	f002 0304 	and.w	r3, r2, #4 802eeb6:	b2db      	uxtb	r3, r3 802eeb8:	2b00      	cmp	r3, #0 802eeba:	f040 82f9 	bne.w	802f4b0 <tcp_input+0x7d0>    return ERR_OK;  }  /* In the LISTEN state, we check for incoming SYN segments,     creates a new PCB, and responds with a SYN|ACK. */  if (flags & TCP_ACK) { 802eebe:	f002 0810 	and.w	r8, r2, #16 802eec2:	fa5f f888 	uxtb.w	r8, r8 802eec6:	f1b8 0f00 	cmp.w	r8, #0 802eeca:	d00c      	beq.n	802eee6 <tcp_input+0x206>    /* For incoming segments with the ACK flag set, respond with a       RST. */    LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n"));    tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), 802eecc:	4b32      	ldr	r3, [pc, #200]	; (802ef98 <tcp_input+0x2b8>) 802eece:	6819      	ldr	r1, [r3, #0] 802eed0:	9000      	str	r0, [sp, #0] 802eed2:	883b      	ldrh	r3, [r7, #0] 802eed4:	9301      	str	r3, [sp, #4] 802eed6:	4b31      	ldr	r3, [pc, #196]	; (802ef9c <tcp_input+0x2bc>) 802eed8:	6818      	ldr	r0, [r3, #0] 802eeda:	4461      	add	r1, ip 802eedc:	4a2d      	ldr	r2, [pc, #180]	; (802ef94 <tcp_input+0x2b4>) 802eede:	4b33      	ldr	r3, [pc, #204]	; (802efac <tcp_input+0x2cc>) 802eee0:	f000 ff28 	bl	802fd34 <tcp_rst> 802eee4:	e2e4      	b.n	802f4b0 <tcp_input+0x7d0>      ip_current_src_addr(), tcphdr->dest, tcphdr->src);  } else if (flags & TCP_SYN) { 802eee6:	f002 0202 	and.w	r2, r2, #2 802eeea:	b2d2      	uxtb	r2, r2 802eeec:	2a00      	cmp	r2, #0 802eeee:	f000 82df 	beq.w	802f4b0 <tcp_input+0x7d0>    if (pcb->accepts_pending >= pcb->backlog) {      LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: listen backlog exceeded for port %"U16_F"\n", tcphdr->dest));      return ERR_ABRT;    }#endif /* TCP_LISTEN_BACKLOG */    npcb = tcp_alloc(pcb->prio); 802eef2:	7e68      	ldrb	r0, [r5, #25] 802eef4:	f7ff fbc6 	bl	802e684 <tcp_alloc>    /* If a new PCB could not be created (probably due to lack of memory),       we don't do anything, but rely on the sender will retransmit the       SYN at a time when we have more memory available. */    if (npcb == NULL) { 802eef8:	4604      	mov	r4, r0 802eefa:	2800      	cmp	r0, #0 802eefc:	f000 82d8 	beq.w	802f4b0 <tcp_input+0x7d0>    }#if TCP_LISTEN_BACKLOG    pcb->accepts_pending++;#endif /* TCP_LISTEN_BACKLOG */    /* Set up the new PCB. */    ip_addr_copy(npcb->local_ip, current_iphdr_dest); 802ef00:	4b24      	ldr	r3, [pc, #144]	; (802ef94 <tcp_input+0x2b4>) 802ef02:	681b      	ldr	r3, [r3, #0] 802ef04:	6003      	str	r3, [r0, #0]    npcb->local_port = pcb->local_port; 802ef06:	8b6b      	ldrh	r3, [r5, #26] 802ef08:	8343      	strh	r3, [r0, #26]    ip_addr_copy(npcb->remote_ip, current_iphdr_src); 802ef0a:	4b28      	ldr	r3, [pc, #160]	; (802efac <tcp_input+0x2cc>) 802ef0c:	681b      	ldr	r3, [r3, #0] 802ef0e:	6043      	str	r3, [r0, #4]    npcb->remote_port = tcphdr->src; 802ef10:	4b1f      	ldr	r3, [pc, #124]	; (802ef90 <tcp_input+0x2b0>) 802ef12:	681b      	ldr	r3, [r3, #0] 802ef14:	7859      	ldrb	r1, [r3, #1] 802ef16:	781a      	ldrb	r2, [r3, #0] 802ef18:	ea42 2201 	orr.w	r2, r2, r1, lsl #8 802ef1c:	8382      	strh	r2, [r0, #28]    npcb->state = SYN_RCVD; 802ef1e:	2203      	movs	r2, #3 802ef20:	7602      	strb	r2, [r0, #24]    npcb->rcv_nxt = seqno + 1; 802ef22:	4a1d      	ldr	r2, [pc, #116]	; (802ef98 <tcp_input+0x2b8>) 802ef24:	6812      	ldr	r2, [r2, #0] 802ef26:	1c51      	adds	r1, r2, #1 802ef28:	6281      	str	r1, [r0, #40]	; 0x28    npcb->rcv_ann_right_edge = npcb->rcv_nxt; 802ef2a:	6301      	str	r1, [r0, #48]	; 0x30    npcb->snd_wnd = tcphdr->wnd; 802ef2c:	89db      	ldrh	r3, [r3, #14] 802ef2e:	f8a0 3060 	strh.w	r3, [r0, #96]	; 0x60    npcb->snd_wnd_max = tcphdr->wnd; 802ef32:	f8a0 3062 	strh.w	r3, [r0, #98]	; 0x62    npcb->ssthresh = npcb->snd_wnd; 802ef36:	f8a0 304e 	strh.w	r3, [r0, #78]	; 0x4e    npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */    npcb->callback_arg = pcb->callback_arg; 802ef3a:	692b      	ldr	r3, [r5, #16] 802ef3c:	6103      	str	r3, [r0, #16]#if LWIP_CALLBACK_API    npcb->accept = pcb->accept; 802ef3e:	696b      	ldr	r3, [r5, #20]    npcb->rcv_nxt = seqno + 1;    npcb->rcv_ann_right_edge = npcb->rcv_nxt;    npcb->snd_wnd = tcphdr->wnd;    npcb->snd_wnd_max = tcphdr->wnd;    npcb->ssthresh = npcb->snd_wnd;    npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */ 802ef40:	3a01      	subs	r2, #1 802ef42:	6542      	str	r2, [r0, #84]	; 0x54    npcb->callback_arg = pcb->callback_arg;#if LWIP_CALLBACK_API    npcb->accept = pcb->accept; 802ef44:	6143      	str	r3, [r0, #20]#endif /* LWIP_CALLBACK_API */    /* inherit socket options */    npcb->so_options = pcb->so_options & SOF_INHERITED; 802ef46:	7a2b      	ldrb	r3, [r5, #8] 802ef48:	f023 0373 	bic.w	r3, r3, #115	; 0x73 802ef4c:	7203      	strb	r3, [r0, #8]    /* Register the new PCB so that we can begin receiving segments       for it. */    TCP_REG_ACTIVE(npcb); 802ef4e:	4b16      	ldr	r3, [pc, #88]	; (802efa8 <tcp_input+0x2c8>) 802ef50:	681a      	ldr	r2, [r3, #0] 802ef52:	6018      	str	r0, [r3, #0] 802ef54:	60c2      	str	r2, [r0, #12] 802ef56:	f001 f887 	bl	8030068 <tcp_timer_needed> 802ef5a:	4b17      	ldr	r3, [pc, #92]	; (802efb8 <tcp_input+0x2d8>) 802ef5c:	2201      	movs	r2, #1    /* Parse any options in the SYN. */    tcp_parseopt(npcb); 802ef5e:	4620      	mov	r0, r4#endif /* LWIP_CALLBACK_API */    /* inherit socket options */    npcb->so_options = pcb->so_options & SOF_INHERITED;    /* Register the new PCB so that we can begin receiving segments       for it. */    TCP_REG_ACTIVE(npcb); 802ef60:	701a      	strb	r2, [r3, #0]    /* Parse any options in the SYN. */    tcp_parseopt(npcb); 802ef62:	f7ff fc29 	bl	802e7b8 <tcp_parseopt>#if TCP_CALCULATE_EFF_SEND_MSS    npcb->mss = tcp_eff_send_mss(npcb->mss, &(npcb->remote_ip)); 802ef66:	1d21      	adds	r1, r4, #4 802ef68:	8ee0      	ldrh	r0, [r4, #54]	; 0x36 802ef6a:	f7ff fc16 	bl	802e79a <tcp_eff_send_mss> 802ef6e:	86e0      	strh	r0, [r4, #54]	; 0x36#endif /* TCP_CALCULATE_EFF_SEND_MSS */    snmp_inc_tcppassiveopens(); 802ef70:	f003 fb5c 	bl	803262c <snmp_inc_tcppassiveopens>    /* Send a SYN|ACK together with the MSS option. */    rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK); 802ef74:	4620      	mov	r0, r4 802ef76:	2112      	movs	r1, #18 802ef78:	f000 fd28 	bl	802f9cc <tcp_enqueue_flags>    if (rc != ERR_OK) { 802ef7c:	b120      	cbz	r0, 802ef88 <tcp_input+0x2a8>      tcp_abandon(npcb, 0); 802ef7e:	4620      	mov	r0, r4 802ef80:	4641      	mov	r1, r8 802ef82:	f7ff f9e1 	bl	802e348 <tcp_abandon> 802ef86:	e293      	b.n	802f4b0 <tcp_input+0x7d0>      return rc;    }    return tcp_output(npcb); 802ef88:	4620      	mov	r0, r4 802ef8a:	e770      	b.n	802ee6e <tcp_input+0x18e> 802ef8c:	2000e1a8 	.word	0x2000e1a8 802ef90:	2000e190 	.word	0x2000e190 802ef94:	200110a4 	.word	0x200110a4 802ef98:	2000e194 	.word	0x2000e194 802ef9c:	2000e19c 	.word	0x2000e19c 802efa0:	2000e1a0 	.word	0x2000e1a0 802efa4:	2000e198 	.word	0x2000e198 802efa8:	2001107c 	.word	0x2001107c 802efac:	2001109c 	.word	0x2001109c 802efb0:	20011080 	.word	0x20011080 802efb4:	20011084 	.word	0x20011084 802efb8:	20011078 	.word	0x20011078    recv_data = NULL;    recv_flags = 0;    if (flags & TCP_PSH) {      p->flags |= PBUF_FLAG_PUSH; 802efbc:	7b73      	ldrb	r3, [r6, #13] 802efbe:	f043 0301 	orr.w	r3, r3, #1 802efc2:	7373      	strb	r3, [r6, #13]    }    /* If there is data which was previously "refused" by upper layer */    if (pcb->refused_data != NULL) { 802efc4:	6f63      	ldr	r3, [r4, #116]	; 0x74 802efc6:	b163      	cbz	r3, 802efe2 <tcp_input+0x302>      if ((tcp_process_refused_data(pcb) == ERR_ABRT) || 802efc8:	4620      	mov	r0, r4 802efca:	f7ff fad1 	bl	802e570 <tcp_process_refused_data> 802efce:	300a      	adds	r0, #10 802efd0:	d004      	beq.n	802efdc <tcp_input+0x2fc> 802efd2:	6f63      	ldr	r3, [r4, #116]	; 0x74 802efd4:	b12b      	cbz	r3, 802efe2 <tcp_input+0x302>        ((pcb->refused_data != NULL) && (tcplen > 0))) { 802efd6:	4b9f      	ldr	r3, [pc, #636]	; (802f254 <tcp_input+0x574>) 802efd8:	881b      	ldrh	r3, [r3, #0] 802efda:	b113      	cbz	r3, 802efe2 <tcp_input+0x302>        /* pcb has been aborted or refused data is still refused and the new           segment contains data */        TCP_STATS_INC(tcp.drop);        snmp_inc_tcpinerrs(); 802efdc:	f003 fb56 	bl	803268c <snmp_inc_tcpinerrs>        goto aborted; 802efe0:	e249      	b.n	802f476 <tcp_input+0x796>      }    }    tcp_input_pcb = pcb; 802efe2:	4b9d      	ldr	r3, [pc, #628]	; (802f258 <tcp_input+0x578>) 802efe4:	601c      	str	r4, [r3, #0]  err_t err;  err = ERR_OK;  /* Process incoming RST segments. */  if (flags & TCP_RST) { 802efe6:	4b9d      	ldr	r3, [pc, #628]	; (802f25c <tcp_input+0x57c>) 802efe8:	781b      	ldrb	r3, [r3, #0] 802efea:	f003 0204 	and.w	r2, r3, #4 802efee:	b2d2      	uxtb	r2, r2 802eff0:	b1aa      	cbz	r2, 802f01e <tcp_input+0x33e>    /* First, determine if the reset is acceptable. */    if (pcb->state == SYN_SENT) { 802eff2:	7e23      	ldrb	r3, [r4, #24] 802eff4:	2b02      	cmp	r3, #2 802eff6:	d106      	bne.n	802f006 <tcp_input+0x326>      if (ackno == pcb->snd_nxt) { 802eff8:	4b99      	ldr	r3, [pc, #612]	; (802f260 <tcp_input+0x580>) 802effa:	681a      	ldr	r2, [r3, #0] 802effc:	6d23      	ldr	r3, [r4, #80]	; 0x50 802effe:	429a      	cmp	r2, r3 802f000:	f040 82a1 	bne.w	802f546 <tcp_input+0x866> 802f004:	e296      	b.n	802f534 <tcp_input+0x854>        acceptable = 1;      }    } else {      if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,  802f006:	4b97      	ldr	r3, [pc, #604]	; (802f264 <tcp_input+0x584>) 802f008:	681a      	ldr	r2, [r3, #0] 802f00a:	6aa3      	ldr	r3, [r4, #40]	; 0x28 802f00c:	1ad3      	subs	r3, r2, r3 802f00e:	f100 829a 	bmi.w	802f546 <tcp_input+0x866> 802f012:	8da1      	ldrh	r1, [r4, #44]	; 0x2c 802f014:	1a5b      	subs	r3, r3, r1 802f016:	2b00      	cmp	r3, #0 802f018:	f300 8295 	bgt.w	802f546 <tcp_input+0x866> 802f01c:	e28a      	b.n	802f534 <tcp_input+0x854>       seqno, pcb->rcv_nxt));      return ERR_OK;    }  }  if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) {  802f01e:	f003 0302 	and.w	r3, r3, #2 802f022:	b2db      	uxtb	r3, r3 802f024:	b123      	cbz	r3, 802f030 <tcp_input+0x350> 802f026:	7e23      	ldrb	r3, [r4, #24] 802f028:	3b02      	subs	r3, #2 802f02a:	2b01      	cmp	r3, #1 802f02c:	d900      	bls.n	802f030 <tcp_input+0x350> 802f02e:	e06b      	b.n	802f108 <tcp_input+0x428>    /* Cope with new connection attempt after remote end crashed */    tcp_ack_now(pcb);    return ERR_OK;  }    if ((pcb->flags & TF_RXCLOSED) == 0) { 802f030:	7fa3      	ldrb	r3, [r4, #30] 802f032:	f003 0310 	and.w	r3, r3, #16 802f036:	b2db      	uxtb	r3, r3 802f038:	b913      	cbnz	r3, 802f040 <tcp_input+0x360>    /* Update the PCB (in)activity timer unless rx is closed (see tcp_shutdown) */    pcb->tmr = tcp_ticks; 802f03a:	4b8b      	ldr	r3, [pc, #556]	; (802f268 <tcp_input+0x588>) 802f03c:	681b      	ldr	r3, [r3, #0] 802f03e:	6263      	str	r3, [r4, #36]	; 0x24  }  pcb->keep_cnt_sent = 0; 802f040:	2300      	movs	r3, #0 802f042:	f884 3092 	strb.w	r3, [r4, #146]	; 0x92  tcp_parseopt(pcb); 802f046:	4620      	mov	r0, r4 802f048:	f7ff fbb6 	bl	802e7b8 <tcp_parseopt>  /* Do different things depending on the TCP state. */  switch (pcb->state) { 802f04c:	7e23      	ldrb	r3, [r4, #24] 802f04e:	3b02      	subs	r3, #2 802f050:	2b07      	cmp	r3, #7 802f052:	f200 8278 	bhi.w	802f546 <tcp_input+0x866> 802f056:	e8df f013 	tbh	[pc, r3, lsl #1] 802f05a:	0008      	.short	0x0008 802f05c:	00c90077 	.word	0x00c90077 802f060:	013000da 	.word	0x013000da 802f064:	015200c9 	.word	0x015200c9 802f068:	0186      	.short	0x0186  case SYN_SENT:    LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno,     pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno)));    /* received SYN ACK with expected sequence number? */    if ((flags & TCP_ACK) && (flags & TCP_SYN) 802f06a:	4b7c      	ldr	r3, [pc, #496]	; (802f25c <tcp_input+0x57c>) 802f06c:	781b      	ldrb	r3, [r3, #0] 802f06e:	f003 0312 	and.w	r3, r3, #18 802f072:	2b12      	cmp	r3, #18 802f074:	d153      	bne.n	802f11e <tcp_input+0x43e>        && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) { 802f076:	6f23      	ldr	r3, [r4, #112]	; 0x70 802f078:	4d79      	ldr	r5, [pc, #484]	; (802f260 <tcp_input+0x580>) 802f07a:	68db      	ldr	r3, [r3, #12] 802f07c:	682e      	ldr	r6, [r5, #0] 802f07e:	6858      	ldr	r0, [r3, #4] 802f080:	f7fd fbc6 	bl	802c810 <lwip_ntohl> 802f084:	3001      	adds	r0, #1 802f086:	4286      	cmp	r6, r0 802f088:	d149      	bne.n	802f11e <tcp_input+0x43e>      pcb->snd_buf++; 802f08a:	f8b4 3066 	ldrh.w	r3, [r4, #102]	; 0x66      pcb->snd_wnd_max = tcphdr->wnd;      pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */      pcb->state = ESTABLISHED;#if TCP_CALCULATE_EFF_SEND_MSS      pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip)); 802f08e:	8ee0      	ldrh	r0, [r4, #54]	; 0x36    LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno,     pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno)));    /* received SYN ACK with expected sequence number? */    if ((flags & TCP_ACK) && (flags & TCP_SYN)        && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) {      pcb->snd_buf++; 802f090:	3301      	adds	r3, #1 802f092:	f8a4 3066 	strh.w	r3, [r4, #102]	; 0x66      pcb->rcv_nxt = seqno + 1; 802f096:	4b73      	ldr	r3, [pc, #460]	; (802f264 <tcp_input+0x584>) 802f098:	681b      	ldr	r3, [r3, #0] 802f09a:	1c5a      	adds	r2, r3, #1 802f09c:	62a2      	str	r2, [r4, #40]	; 0x28      pcb->rcv_ann_right_edge = pcb->rcv_nxt; 802f09e:	6322      	str	r2, [r4, #48]	; 0x30      pcb->lastack = ackno; 802f0a0:	682a      	ldr	r2, [r5, #0] 802f0a2:	64a2      	str	r2, [r4, #72]	; 0x48      pcb->snd_wnd = tcphdr->wnd; 802f0a4:	4a71      	ldr	r2, [pc, #452]	; (802f26c <tcp_input+0x58c>) 802f0a6:	6812      	ldr	r2, [r2, #0]      pcb->snd_wnd_max = tcphdr->wnd;      pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ 802f0a8:	3b01      	subs	r3, #1        && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) {      pcb->snd_buf++;      pcb->rcv_nxt = seqno + 1;      pcb->rcv_ann_right_edge = pcb->rcv_nxt;      pcb->lastack = ackno;      pcb->snd_wnd = tcphdr->wnd; 802f0aa:	89d2      	ldrh	r2, [r2, #14]      pcb->snd_wnd_max = tcphdr->wnd;      pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ 802f0ac:	6563      	str	r3, [r4, #84]	; 0x54      pcb->state = ESTABLISHED; 802f0ae:	2304      	movs	r3, #4 802f0b0:	7623      	strb	r3, [r4, #24]#if TCP_CALCULATE_EFF_SEND_MSS      pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip)); 802f0b2:	18e1      	adds	r1, r4, r3        && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) {      pcb->snd_buf++;      pcb->rcv_nxt = seqno + 1;      pcb->rcv_ann_right_edge = pcb->rcv_nxt;      pcb->lastack = ackno;      pcb->snd_wnd = tcphdr->wnd; 802f0b4:	f8a4 2060 	strh.w	r2, [r4, #96]	; 0x60      pcb->snd_wnd_max = tcphdr->wnd; 802f0b8:	f8a4 2062 	strh.w	r2, [r4, #98]	; 0x62      pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */      pcb->state = ESTABLISHED;#if TCP_CALCULATE_EFF_SEND_MSS      pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip)); 802f0bc:	f7ff fb6d 	bl	802e79a <tcp_eff_send_mss>#endif /* TCP_CALCULATE_EFF_SEND_MSS */      /* Set ssthresh again after changing pcb->mss (already set in tcp_connect       * but for the default value of pcb->mss) */      pcb->ssthresh = pcb->mss * 10; 802f0c0:	230a      	movs	r3, #10 802f0c2:	4343      	muls	r3, r0 802f0c4:	f8a4 304e 	strh.w	r3, [r4, #78]	; 0x4e      pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss); 802f0c8:	f8b4 304c 	ldrh.w	r3, [r4, #76]	; 0x4c      pcb->snd_wnd_max = tcphdr->wnd;      pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */      pcb->state = ESTABLISHED;#if TCP_CALCULATE_EFF_SEND_MSS      pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip)); 802f0cc:	86e0      	strh	r0, [r4, #54]	; 0x36      /* Set ssthresh again after changing pcb->mss (already set in tcp_connect       * but for the default value of pcb->mss) */      pcb->ssthresh = pcb->mss * 10;      pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss); 802f0ce:	2b01      	cmp	r3, #1 802f0d0:	d101      	bne.n	802f0d6 <tcp_input+0x3f6> 802f0d2:	0040      	lsls	r0, r0, #1 802f0d4:	b280      	uxth	r0, r0      LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0));      --pcb->snd_queuelen; 802f0d6:	f8b4 3068 	ldrh.w	r3, [r4, #104]	; 0x68      /* Set ssthresh again after changing pcb->mss (already set in tcp_connect       * but for the default value of pcb->mss) */      pcb->ssthresh = pcb->mss * 10;      pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss); 802f0da:	f8a4 004c 	strh.w	r0, [r4, #76]	; 0x4c      LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0));      --pcb->snd_queuelen;      LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"U16_F"\n", (u16_t)pcb->snd_queuelen));      rseg = pcb->unacked; 802f0de:	6f20      	ldr	r0, [r4, #112]	; 0x70       * but for the default value of pcb->mss) */      pcb->ssthresh = pcb->mss * 10;      pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss);      LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0));      --pcb->snd_queuelen; 802f0e0:	3b01      	subs	r3, #1 802f0e2:	f8a4 3068 	strh.w	r3, [r4, #104]	; 0x68      LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"U16_F"\n", (u16_t)pcb->snd_queuelen));      rseg = pcb->unacked;      pcb->unacked = rseg->next; 802f0e6:	6803      	ldr	r3, [r0, #0] 802f0e8:	6723      	str	r3, [r4, #112]	; 0x70      tcp_seg_free(rseg); 802f0ea:	f7fe ff70 	bl	802dfce <tcp_seg_free>      /* If there's nothing left to acknowledge, stop the retransmit         timer, otherwise reset it to start again */      if(pcb->unacked == NULL) 802f0ee:	6f23      	ldr	r3, [r4, #112]	; 0x70 802f0f0:	b91b      	cbnz	r3, 802f0fa <tcp_input+0x41a>        pcb->rtime = -1; 802f0f2:	f64f 73ff 	movw	r3, #65535	; 0xffff 802f0f6:	86a3      	strh	r3, [r4, #52]	; 0x34 802f0f8:	e003      	b.n	802f102 <tcp_input+0x422>      else {        pcb->rtime = 0; 802f0fa:	2300      	movs	r3, #0 802f0fc:	86a3      	strh	r3, [r4, #52]	; 0x34        pcb->nrtx = 0; 802f0fe:	f884 3046 	strb.w	r3, [r4, #70]	; 0x46      }      /* Call the user specified function to call when sucessfully       * connected. */      TCP_EVENT_CONNECTED(pcb, ERR_OK, err); 802f102:	f8d4 3080 	ldr.w	r3, [r4, #128]	; 0x80 802f106:	b91b      	cbnz	r3, 802f110 <tcp_input+0x430>      if (err == ERR_ABRT) {        return ERR_ABRT;      }      tcp_ack_now(pcb); 802f108:	7fa3      	ldrb	r3, [r4, #30] 802f10a:	f043 0302 	orr.w	r3, r3, #2 802f10e:	e219      	b.n	802f544 <tcp_input+0x864>        pcb->nrtx = 0;      }      /* Call the user specified function to call when sucessfully       * connected. */      TCP_EVENT_CONNECTED(pcb, ERR_OK, err); 802f110:	2200      	movs	r2, #0 802f112:	6920      	ldr	r0, [r4, #16] 802f114:	4621      	mov	r1, r4 802f116:	4798      	blx	r3      if (err == ERR_ABRT) { 802f118:	300a      	adds	r0, #10 802f11a:	d1f5      	bne.n	802f108 <tcp_input+0x428> 802f11c:	e1ab      	b.n	802f476 <tcp_input+0x796>        return ERR_ABRT;      }      tcp_ack_now(pcb);    }    /* received ACK? possibly a half-open connection */    else if (flags & TCP_ACK) { 802f11e:	4b4f      	ldr	r3, [pc, #316]	; (802f25c <tcp_input+0x57c>) 802f120:	781b      	ldrb	r3, [r3, #0] 802f122:	f003 0310 	and.w	r3, r3, #16 802f126:	b2db      	uxtb	r3, r3 802f128:	2b00      	cmp	r3, #0 802f12a:	f000 820c 	beq.w	802f546 <tcp_input+0x866>      /* send a RST to bring the other side in a non-synchronized state. */      tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(),        tcphdr->dest, tcphdr->src); 802f12e:	4b4f      	ldr	r3, [pc, #316]	; (802f26c <tcp_input+0x58c>)      tcp_ack_now(pcb);    }    /* received ACK? possibly a half-open connection */    else if (flags & TCP_ACK) {      /* send a RST to bring the other side in a non-synchronized state. */      tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(), 802f130:	4a48      	ldr	r2, [pc, #288]	; (802f254 <tcp_input+0x574>)        tcphdr->dest, tcphdr->src); 802f132:	681b      	ldr	r3, [r3, #0]      tcp_ack_now(pcb);    }    /* received ACK? possibly a half-open connection */    else if (flags & TCP_ACK) {      /* send a RST to bring the other side in a non-synchronized state. */      tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(), 802f134:	8811      	ldrh	r1, [r2, #0] 802f136:	8858      	ldrh	r0, [r3, #2] 802f138:	4a4a      	ldr	r2, [pc, #296]	; (802f264 <tcp_input+0x584>) 802f13a:	6812      	ldr	r2, [r2, #0] 802f13c:	9000      	str	r0, [sp, #0] 802f13e:	881b      	ldrh	r3, [r3, #0] 802f140:	9301      	str	r3, [sp, #4] 802f142:	4b47      	ldr	r3, [pc, #284]	; (802f260 <tcp_input+0x580>) 802f144:	6818      	ldr	r0, [r3, #0] 802f146:	e03a      	b.n	802f1be <tcp_input+0x4de>        tcphdr->dest, tcphdr->src);    }    break;  case SYN_RCVD:    if (flags & TCP_ACK) { 802f148:	4b44      	ldr	r3, [pc, #272]	; (802f25c <tcp_input+0x57c>) 802f14a:	781b      	ldrb	r3, [r3, #0] 802f14c:	f003 0210 	and.w	r2, r3, #16 802f150:	b2d2      	uxtb	r2, r2 802f152:	2a00      	cmp	r2, #0 802f154:	d039      	beq.n	802f1ca <tcp_input+0x4ea>      /* expected ACK number? */      if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)) { 802f156:	4b42      	ldr	r3, [pc, #264]	; (802f260 <tcp_input+0x580>) 802f158:	6818      	ldr	r0, [r3, #0] 802f15a:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802f15c:	43db      	mvns	r3, r3 802f15e:	42c3      	cmn	r3, r0 802f160:	d423      	bmi.n	802f1aa <tcp_input+0x4ca> 802f162:	6d23      	ldr	r3, [r4, #80]	; 0x50 802f164:	1ac3      	subs	r3, r0, r3 802f166:	2b00      	cmp	r3, #0 802f168:	dc1f      	bgt.n	802f1aa <tcp_input+0x4ca>        u16_t old_cwnd;        pcb->state = ESTABLISHED; 802f16a:	2304      	movs	r3, #4 802f16c:	7623      	strb	r3, [r4, #24]        LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));#if LWIP_CALLBACK_API        LWIP_ASSERT("pcb->accept != NULL", pcb->accept != NULL);#endif        /* Call the accept function. */        TCP_EVENT_ACCEPT(pcb, ERR_OK, err); 802f16e:	6963      	ldr	r3, [r4, #20] 802f170:	b903      	cbnz	r3, 802f174 <tcp_input+0x494> 802f172:	e147      	b.n	802f404 <tcp_input+0x724> 802f174:	6920      	ldr	r0, [r4, #16] 802f176:	4621      	mov	r1, r4 802f178:	2200      	movs	r2, #0 802f17a:	4798      	blx	r3        if (err != ERR_OK) { 802f17c:	b118      	cbz	r0, 802f186 <tcp_input+0x4a6>          /* If the accept function returns with an error, we abort           * the connection. */          /* Already aborted? */          if (err != ERR_ABRT) { 802f17e:	300a      	adds	r0, #10 802f180:	f040 8140 	bne.w	802f404 <tcp_input+0x724> 802f184:	e177      	b.n	802f476 <tcp_input+0x796>          return ERR_ABRT;        }        old_cwnd = pcb->cwnd;        /* If there was any data contained within this ACK,         * we'd better pass it on to the application as well. */        tcp_receive(pcb); 802f186:	4620      	mov	r0, r4          if (err != ERR_ABRT) {            tcp_abort(pcb);          }          return ERR_ABRT;        }        old_cwnd = pcb->cwnd; 802f188:	f8b4 504c 	ldrh.w	r5, [r4, #76]	; 0x4c        /* If there was any data contained within this ACK,         * we'd better pass it on to the application as well. */        tcp_receive(pcb); 802f18c:	f7ff fb54 	bl	802e838 <tcp_receive>        /* Prevent ACK for SYN to generate a sent event */        if (pcb->acked != 0) { 802f190:	f8b4 3064 	ldrh.w	r3, [r4, #100]	; 0x64 802f194:	b113      	cbz	r3, 802f19c <tcp_input+0x4bc>          pcb->acked--; 802f196:	3b01      	subs	r3, #1 802f198:	f8a4 3064 	strh.w	r3, [r4, #100]	; 0x64        }        pcb->cwnd = ((old_cwnd == 1) ? (pcb->mss * 2) : pcb->mss); 802f19c:	8ee3      	ldrh	r3, [r4, #54]	; 0x36 802f19e:	2d01      	cmp	r5, #1 802f1a0:	bf08      	it	eq 802f1a2:	005b      	lsleq	r3, r3, #1 802f1a4:	f8a4 304c 	strh.w	r3, [r4, #76]	; 0x4c 802f1a8:	e023      	b.n	802f1f2 <tcp_input+0x512>          pcb->state = CLOSE_WAIT;        }      } else {        /* incorrect ACK number, send RST */        tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(),                tcphdr->dest, tcphdr->src); 802f1aa:	4b30      	ldr	r3, [pc, #192]	; (802f26c <tcp_input+0x58c>)          tcp_ack_now(pcb);          pcb->state = CLOSE_WAIT;        }      } else {        /* incorrect ACK number, send RST */        tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(), 802f1ac:	4a29      	ldr	r2, [pc, #164]	; (802f254 <tcp_input+0x574>)                tcphdr->dest, tcphdr->src); 802f1ae:	681b      	ldr	r3, [r3, #0]          tcp_ack_now(pcb);          pcb->state = CLOSE_WAIT;        }      } else {        /* incorrect ACK number, send RST */        tcp_rst(ackno, seqno + tcplen, ip_current_dest_addr(), ip_current_src_addr(), 802f1b0:	8811      	ldrh	r1, [r2, #0] 802f1b2:	885d      	ldrh	r5, [r3, #2] 802f1b4:	4a2b      	ldr	r2, [pc, #172]	; (802f264 <tcp_input+0x584>) 802f1b6:	6812      	ldr	r2, [r2, #0] 802f1b8:	9500      	str	r5, [sp, #0] 802f1ba:	881b      	ldrh	r3, [r3, #0] 802f1bc:	9301      	str	r3, [sp, #4] 802f1be:	1889      	adds	r1, r1, r2 802f1c0:	4b2b      	ldr	r3, [pc, #172]	; (802f270 <tcp_input+0x590>) 802f1c2:	4a2c      	ldr	r2, [pc, #176]	; (802f274 <tcp_input+0x594>) 802f1c4:	f000 fdb6 	bl	802fd34 <tcp_rst> 802f1c8:	e1bd      	b.n	802f546 <tcp_input+0x866>                tcphdr->dest, tcphdr->src);      }    } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { 802f1ca:	f003 0302 	and.w	r3, r3, #2 802f1ce:	b2db      	uxtb	r3, r3 802f1d0:	2b00      	cmp	r3, #0 802f1d2:	f000 81b8 	beq.w	802f546 <tcp_input+0x866> 802f1d6:	4a23      	ldr	r2, [pc, #140]	; (802f264 <tcp_input+0x584>) 802f1d8:	6aa3      	ldr	r3, [r4, #40]	; 0x28 802f1da:	6812      	ldr	r2, [r2, #0] 802f1dc:	3b01      	subs	r3, #1 802f1de:	429a      	cmp	r2, r3 802f1e0:	f040 81b1 	bne.w	802f546 <tcp_input+0x866>      /* Looks like another copy of the SYN - retransmit our SYN-ACK */      tcp_rexmit(pcb); 802f1e4:	4620      	mov	r0, r4 802f1e6:	f000 fe03 	bl	802fdf0 <tcp_rexmit> 802f1ea:	e1ac      	b.n	802f546 <tcp_input+0x866>    }    break;  case CLOSE_WAIT:    /* FALLTHROUGH */  case ESTABLISHED:    tcp_receive(pcb); 802f1ec:	4620      	mov	r0, r4 802f1ee:	f7ff fb23 	bl	802e838 <tcp_receive>    if (recv_flags & TF_GOT_FIN) { /* passive close */ 802f1f2:	4b21      	ldr	r3, [pc, #132]	; (802f278 <tcp_input+0x598>) 802f1f4:	781b      	ldrb	r3, [r3, #0] 802f1f6:	f003 0320 	and.w	r3, r3, #32 802f1fa:	b2db      	uxtb	r3, r3 802f1fc:	2b00      	cmp	r3, #0 802f1fe:	f000 81a2 	beq.w	802f546 <tcp_input+0x866>      tcp_ack_now(pcb); 802f202:	7fa3      	ldrb	r3, [r4, #30] 802f204:	f043 0302 	orr.w	r3, r3, #2 802f208:	77a3      	strb	r3, [r4, #30]      pcb->state = CLOSE_WAIT; 802f20a:	2307      	movs	r3, #7 802f20c:	e053      	b.n	802f2b6 <tcp_input+0x5d6>    }    break;  case FIN_WAIT_1:    tcp_receive(pcb); 802f20e:	4620      	mov	r0, r4 802f210:	f7ff fb12 	bl	802e838 <tcp_receive>    if (recv_flags & TF_GOT_FIN) { 802f214:	4b18      	ldr	r3, [pc, #96]	; (802f278 <tcp_input+0x598>) 802f216:	781a      	ldrb	r2, [r3, #0] 802f218:	4b10      	ldr	r3, [pc, #64]	; (802f25c <tcp_input+0x57c>)      if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 802f21a:	781b      	ldrb	r3, [r3, #0]      pcb->state = CLOSE_WAIT;    }    break;  case FIN_WAIT_1:    tcp_receive(pcb);    if (recv_flags & TF_GOT_FIN) { 802f21c:	f002 0220 	and.w	r2, r2, #32      if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 802f220:	f003 0310 	and.w	r3, r3, #16      pcb->state = CLOSE_WAIT;    }    break;  case FIN_WAIT_1:    tcp_receive(pcb);    if (recv_flags & TF_GOT_FIN) { 802f224:	b2d2      	uxtb	r2, r2      if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 802f226:	b2db      	uxtb	r3, r3      pcb->state = CLOSE_WAIT;    }    break;  case FIN_WAIT_1:    tcp_receive(pcb);    if (recv_flags & TF_GOT_FIN) { 802f228:	2a00      	cmp	r2, #0 802f22a:	d03a      	beq.n	802f2a2 <tcp_input+0x5c2>      if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 802f22c:	2b00      	cmp	r3, #0 802f22e:	d032      	beq.n	802f296 <tcp_input+0x5b6> 802f230:	4b0b      	ldr	r3, [pc, #44]	; (802f260 <tcp_input+0x580>) 802f232:	681a      	ldr	r2, [r3, #0] 802f234:	6d23      	ldr	r3, [r4, #80]	; 0x50 802f236:	429a      	cmp	r2, r3 802f238:	d12d      	bne.n	802f296 <tcp_input+0x5b6>        LWIP_DEBUGF(TCP_DEBUG,          ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));        tcp_ack_now(pcb); 802f23a:	7fa3      	ldrb	r3, [r4, #30] 802f23c:	f043 0302 	orr.w	r3, r3, #2 802f240:	77a3      	strb	r3, [r4, #30]        tcp_pcb_purge(pcb); 802f242:	4620      	mov	r0, r4 802f244:	f7fe feea 	bl	802e01c <tcp_pcb_purge>        TCP_RMV_ACTIVE(pcb); 802f248:	4a0c      	ldr	r2, [pc, #48]	; (802f27c <tcp_input+0x59c>) 802f24a:	6813      	ldr	r3, [r2, #0] 802f24c:	42a3      	cmp	r3, r4 802f24e:	d117      	bne.n	802f280 <tcp_input+0x5a0> 802f250:	e06d      	b.n	802f32e <tcp_input+0x64e> 802f252:	bf00      	nop 802f254:	2000e198 	.word	0x2000e198 802f258:	20011094 	.word	0x20011094 802f25c:	2000e1a0 	.word	0x2000e1a0 802f260:	2000e19c 	.word	0x2000e19c 802f264:	2000e194 	.word	0x2000e194 802f268:	20011080 	.word	0x20011080 802f26c:	2000e190 	.word	0x2000e190 802f270:	2001109c 	.word	0x2001109c 802f274:	200110a4 	.word	0x200110a4 802f278:	2000e1a1 	.word	0x2000e1a1 802f27c:	2001107c 	.word	0x2001107c 802f280:	4a8e      	ldr	r2, [pc, #568]	; (802f4bc <tcp_input+0x7dc>) 802f282:	6013      	str	r3, [r2, #0] 802f284:	e004      	b.n	802f290 <tcp_input+0x5b0> 802f286:	68d9      	ldr	r1, [r3, #12] 802f288:	42a1      	cmp	r1, r4 802f28a:	d100      	bne.n	802f28e <tcp_input+0x5ae> 802f28c:	e057      	b.n	802f33e <tcp_input+0x65e> 802f28e:	460b      	mov	r3, r1 802f290:	2b00      	cmp	r3, #0 802f292:	d1f8      	bne.n	802f286 <tcp_input+0x5a6> 802f294:	e05a      	b.n	802f34c <tcp_input+0x66c>        pcb->state = TIME_WAIT;        TCP_REG(&tcp_tw_pcbs, pcb);      } else {        tcp_ack_now(pcb); 802f296:	7fa3      	ldrb	r3, [r4, #30] 802f298:	f043 0302 	orr.w	r3, r3, #2 802f29c:	77a3      	strb	r3, [r4, #30]        pcb->state = CLOSING; 802f29e:	2308      	movs	r3, #8 802f2a0:	e009      	b.n	802f2b6 <tcp_input+0x5d6>      }    } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { 802f2a2:	2b00      	cmp	r3, #0 802f2a4:	f000 814f 	beq.w	802f546 <tcp_input+0x866> 802f2a8:	4b85      	ldr	r3, [pc, #532]	; (802f4c0 <tcp_input+0x7e0>) 802f2aa:	681a      	ldr	r2, [r3, #0] 802f2ac:	6d23      	ldr	r3, [r4, #80]	; 0x50 802f2ae:	429a      	cmp	r2, r3 802f2b0:	f040 8149 	bne.w	802f546 <tcp_input+0x866>      pcb->state = FIN_WAIT_2; 802f2b4:	2306      	movs	r3, #6 802f2b6:	7623      	strb	r3, [r4, #24] 802f2b8:	e145      	b.n	802f546 <tcp_input+0x866>    }    break;  case FIN_WAIT_2:    tcp_receive(pcb); 802f2ba:	4620      	mov	r0, r4 802f2bc:	f7ff fabc 	bl	802e838 <tcp_receive>    if (recv_flags & TF_GOT_FIN) { 802f2c0:	4b80      	ldr	r3, [pc, #512]	; (802f4c4 <tcp_input+0x7e4>) 802f2c2:	781b      	ldrb	r3, [r3, #0] 802f2c4:	f003 0320 	and.w	r3, r3, #32 802f2c8:	b2db      	uxtb	r3, r3 802f2ca:	2b00      	cmp	r3, #0 802f2cc:	f000 813b 	beq.w	802f546 <tcp_input+0x866>      LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));      tcp_ack_now(pcb); 802f2d0:	7fa3      	ldrb	r3, [r4, #30] 802f2d2:	f043 0302 	orr.w	r3, r3, #2 802f2d6:	77a3      	strb	r3, [r4, #30]      tcp_pcb_purge(pcb); 802f2d8:	4620      	mov	r0, r4 802f2da:	f7fe fe9f 	bl	802e01c <tcp_pcb_purge>      TCP_RMV_ACTIVE(pcb); 802f2de:	4a7a      	ldr	r2, [pc, #488]	; (802f4c8 <tcp_input+0x7e8>) 802f2e0:	6813      	ldr	r3, [r2, #0] 802f2e2:	42a3      	cmp	r3, r4 802f2e4:	d100      	bne.n	802f2e8 <tcp_input+0x608> 802f2e6:	e022      	b.n	802f32e <tcp_input+0x64e> 802f2e8:	4a74      	ldr	r2, [pc, #464]	; (802f4bc <tcp_input+0x7dc>) 802f2ea:	6013      	str	r3, [r2, #0] 802f2ec:	e004      	b.n	802f2f8 <tcp_input+0x618> 802f2ee:	68d9      	ldr	r1, [r3, #12] 802f2f0:	42a1      	cmp	r1, r4 802f2f2:	d100      	bne.n	802f2f6 <tcp_input+0x616> 802f2f4:	e023      	b.n	802f33e <tcp_input+0x65e> 802f2f6:	460b      	mov	r3, r1 802f2f8:	2b00      	cmp	r3, #0 802f2fa:	d1f8      	bne.n	802f2ee <tcp_input+0x60e> 802f2fc:	e026      	b.n	802f34c <tcp_input+0x66c>      pcb->state = TIME_WAIT;      TCP_REG(&tcp_tw_pcbs, pcb);    }    break;  case CLOSING:    tcp_receive(pcb); 802f2fe:	4620      	mov	r0, r4 802f300:	f7ff fa9a 	bl	802e838 <tcp_receive>    if (flags & TCP_ACK && ackno == pcb->snd_nxt) { 802f304:	4b71      	ldr	r3, [pc, #452]	; (802f4cc <tcp_input+0x7ec>) 802f306:	781b      	ldrb	r3, [r3, #0] 802f308:	f003 0310 	and.w	r3, r3, #16 802f30c:	b2db      	uxtb	r3, r3 802f30e:	2b00      	cmp	r3, #0 802f310:	f000 8119 	beq.w	802f546 <tcp_input+0x866> 802f314:	4b6a      	ldr	r3, [pc, #424]	; (802f4c0 <tcp_input+0x7e0>) 802f316:	681a      	ldr	r2, [r3, #0] 802f318:	6d23      	ldr	r3, [r4, #80]	; 0x50 802f31a:	429a      	cmp	r2, r3 802f31c:	f040 8113 	bne.w	802f546 <tcp_input+0x866>      LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));      tcp_pcb_purge(pcb); 802f320:	4620      	mov	r0, r4 802f322:	f7fe fe7b 	bl	802e01c <tcp_pcb_purge>      TCP_RMV_ACTIVE(pcb); 802f326:	4a68      	ldr	r2, [pc, #416]	; (802f4c8 <tcp_input+0x7e8>) 802f328:	6813      	ldr	r3, [r2, #0] 802f32a:	42a3      	cmp	r3, r4 802f32c:	d101      	bne.n	802f332 <tcp_input+0x652> 802f32e:	68e3      	ldr	r3, [r4, #12] 802f330:	e00c      	b.n	802f34c <tcp_input+0x66c> 802f332:	4a62      	ldr	r2, [pc, #392]	; (802f4bc <tcp_input+0x7dc>) 802f334:	6013      	str	r3, [r2, #0] 802f336:	e007      	b.n	802f348 <tcp_input+0x668> 802f338:	68d9      	ldr	r1, [r3, #12] 802f33a:	42a1      	cmp	r1, r4 802f33c:	d103      	bne.n	802f346 <tcp_input+0x666> 802f33e:	6013      	str	r3, [r2, #0] 802f340:	68e2      	ldr	r2, [r4, #12] 802f342:	60da      	str	r2, [r3, #12] 802f344:	e003      	b.n	802f34e <tcp_input+0x66e> 802f346:	460b      	mov	r3, r1 802f348:	2b00      	cmp	r3, #0 802f34a:	d1f5      	bne.n	802f338 <tcp_input+0x658> 802f34c:	6013      	str	r3, [r2, #0] 802f34e:	4b60      	ldr	r3, [pc, #384]	; (802f4d0 <tcp_input+0x7f0>) 802f350:	2201      	movs	r2, #1 802f352:	701a      	strb	r2, [r3, #0]      pcb->state = TIME_WAIT; 802f354:	230a      	movs	r3, #10 802f356:	7623      	strb	r3, [r4, #24]      TCP_REG(&tcp_tw_pcbs, pcb); 802f358:	4b5e      	ldr	r3, [pc, #376]	; (802f4d4 <tcp_input+0x7f4>) 802f35a:	681a      	ldr	r2, [r3, #0] 802f35c:	601c      	str	r4, [r3, #0] 802f35e:	60e2      	str	r2, [r4, #12] 802f360:	f000 fe82 	bl	8030068 <tcp_timer_needed> 802f364:	e0ef      	b.n	802f546 <tcp_input+0x866>    }    break;  case LAST_ACK:    tcp_receive(pcb); 802f366:	4620      	mov	r0, r4 802f368:	f7ff fa66 	bl	802e838 <tcp_receive>    if (flags & TCP_ACK && ackno == pcb->snd_nxt) { 802f36c:	4b57      	ldr	r3, [pc, #348]	; (802f4cc <tcp_input+0x7ec>) 802f36e:	781b      	ldrb	r3, [r3, #0] 802f370:	f003 0310 	and.w	r3, r3, #16 802f374:	b2db      	uxtb	r3, r3 802f376:	2b00      	cmp	r3, #0 802f378:	f000 80e5 	beq.w	802f546 <tcp_input+0x866> 802f37c:	4b50      	ldr	r3, [pc, #320]	; (802f4c0 <tcp_input+0x7e0>) 802f37e:	681a      	ldr	r2, [r3, #0] 802f380:	6d23      	ldr	r3, [r4, #80]	; 0x50 802f382:	429a      	cmp	r2, r3 802f384:	f040 80df 	bne.w	802f546 <tcp_input+0x866>      LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));      /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */      recv_flags |= TF_CLOSED; 802f388:	4b4e      	ldr	r3, [pc, #312]	; (802f4c4 <tcp_input+0x7e4>) 802f38a:	781a      	ldrb	r2, [r3, #0] 802f38c:	f042 0210 	orr.w	r2, r2, #16 802f390:	701a      	strb	r2, [r3, #0] 802f392:	e0d8      	b.n	802f546 <tcp_input+0x866>      if (recv_flags & TF_RESET) {        /* TF_RESET means that the connection was reset by the other           end. We then call the error callback to inform the           application that the connection is dead before we           deallocate the PCB. */        TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_RST); 802f394:	f8d4 3088 	ldr.w	r3, [r4, #136]	; 0x88 802f398:	b19b      	cbz	r3, 802f3c2 <tcp_input+0x6e2> 802f39a:	6920      	ldr	r0, [r4, #16] 802f39c:	f06f 010a 	mvn.w	r1, #10 802f3a0:	e00e      	b.n	802f3c0 <tcp_input+0x6e0>        tcp_pcb_remove(&tcp_active_pcbs, pcb);        memp_free(MEMP_TCP_PCB, pcb);      } else if (recv_flags & TF_CLOSED) { 802f3a2:	f003 0310 	and.w	r3, r3, #16 802f3a6:	b2db      	uxtb	r3, r3 802f3a8:	b1a3      	cbz	r3, 802f3d4 <tcp_input+0x6f4>        /* The connection has been closed and we will deallocate the           PCB. */        if (!(pcb->flags & TF_RXCLOSED)) { 802f3aa:	7fa3      	ldrb	r3, [r4, #30] 802f3ac:	f003 0310 	and.w	r3, r3, #16 802f3b0:	b2db      	uxtb	r3, r3 802f3b2:	b933      	cbnz	r3, 802f3c2 <tcp_input+0x6e2>          /* Connection closed although the application has only shut down the             tx side: call the PCB's err callback and indicate the closure to             ensure the application doesn't continue using the PCB. */          TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_CLSD); 802f3b4:	f8d4 3088 	ldr.w	r3, [r4, #136]	; 0x88 802f3b8:	b11b      	cbz	r3, 802f3c2 <tcp_input+0x6e2> 802f3ba:	6920      	ldr	r0, [r4, #16] 802f3bc:	f06f 010b 	mvn.w	r1, #11 802f3c0:	4798      	blx	r3        }        tcp_pcb_remove(&tcp_active_pcbs, pcb); 802f3c2:	4621      	mov	r1, r4 802f3c4:	4840      	ldr	r0, [pc, #256]	; (802f4c8 <tcp_input+0x7e8>) 802f3c6:	f7fe ff91 	bl	802e2ec <tcp_pcb_remove>        memp_free(MEMP_TCP_PCB, pcb); 802f3ca:	2002      	movs	r0, #2 802f3cc:	4621      	mov	r1, r4 802f3ce:	f7fe fa47 	bl	802d860 <memp_free> 802f3d2:	e050      	b.n	802f476 <tcp_input+0x796>      } else {        err = ERR_OK;        /* If the application has registered a "sent" function to be           called when new send buffer space is available, we call it           now. */        if (pcb->acked > 0) { 802f3d4:	f8b4 2064 	ldrh.w	r2, [r4, #100]	; 0x64 802f3d8:	b91a      	cbnz	r2, 802f3e2 <tcp_input+0x702>          if (err == ERR_ABRT) {            goto aborted;          }        }        if (recv_data != NULL) { 802f3da:	4b3f      	ldr	r3, [pc, #252]	; (802f4d8 <tcp_input+0x7f8>) 802f3dc:	681a      	ldr	r2, [r3, #0] 802f3de:	b94a      	cbnz	r2, 802f3f4 <tcp_input+0x714> 802f3e0:	e026      	b.n	802f430 <tcp_input+0x750>        err = ERR_OK;        /* If the application has registered a "sent" function to be           called when new send buffer space is available, we call it           now. */        if (pcb->acked > 0) {          TCP_EVENT_SENT(pcb, pcb->acked, err); 802f3e2:	6fa3      	ldr	r3, [r4, #120]	; 0x78 802f3e4:	2b00      	cmp	r3, #0 802f3e6:	d0f8      	beq.n	802f3da <tcp_input+0x6fa> 802f3e8:	6920      	ldr	r0, [r4, #16] 802f3ea:	4621      	mov	r1, r4 802f3ec:	4798      	blx	r3          if (err == ERR_ABRT) { 802f3ee:	300a      	adds	r0, #10 802f3f0:	d1f3      	bne.n	802f3da <tcp_input+0x6fa> 802f3f2:	e040      	b.n	802f476 <tcp_input+0x796>          }        }        if (recv_data != NULL) {          LWIP_ASSERT("pcb->refused_data == NULL", pcb->refused_data == NULL);          if (pcb->flags & TF_RXCLOSED) { 802f3f4:	7fa3      	ldrb	r3, [r4, #30] 802f3f6:	f003 0310 	and.w	r3, r3, #16 802f3fa:	b2db      	uxtb	r3, r3 802f3fc:	b133      	cbz	r3, 802f40c <tcp_input+0x72c>            /* received data although already closed -> abort (send RST) to               notify the remote host that not all data has been processed */            pbuf_free(recv_data); 802f3fe:	4610      	mov	r0, r2 802f400:	f7fe fb38 	bl	802da74 <pbuf_free>            tcp_abort(pcb); 802f404:	4620      	mov	r0, r4 802f406:	f7fe ffe5 	bl	802e3d4 <tcp_abort>            goto aborted; 802f40a:	e034      	b.n	802f476 <tcp_input+0x796>          }          /* Notify application that data has been received. */          TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); 802f40c:	6fe5      	ldr	r5, [r4, #124]	; 0x7c 802f40e:	b11d      	cbz	r5, 802f418 <tcp_input+0x738> 802f410:	6920      	ldr	r0, [r4, #16] 802f412:	4621      	mov	r1, r4 802f414:	47a8      	blx	r5 802f416:	e004      	b.n	802f422 <tcp_input+0x742> 802f418:	4628      	mov	r0, r5 802f41a:	4621      	mov	r1, r4 802f41c:	462b      	mov	r3, r5 802f41e:	f7ff f895 	bl	802e54c <tcp_recv_null>          if (err == ERR_ABRT) { 802f422:	b243      	sxtb	r3, r0 802f424:	330a      	adds	r3, #10 802f426:	d026      	beq.n	802f476 <tcp_input+0x796>            goto aborted;          }          /* If the upper layer can't receive this data, store it */          if (err != ERR_OK) { 802f428:	b110      	cbz	r0, 802f430 <tcp_input+0x750>            pcb->refused_data = recv_data; 802f42a:	4b2b      	ldr	r3, [pc, #172]	; (802f4d8 <tcp_input+0x7f8>) 802f42c:	681b      	ldr	r3, [r3, #0] 802f42e:	6763      	str	r3, [r4, #116]	; 0x74          }        }        /* If a FIN segment was received, we call the callback           function with a NULL buffer to indicate EOF. */        if (recv_flags & TF_GOT_FIN) { 802f430:	4b24      	ldr	r3, [pc, #144]	; (802f4c4 <tcp_input+0x7e4>) 802f432:	781b      	ldrb	r3, [r3, #0] 802f434:	f003 0320 	and.w	r3, r3, #32 802f438:	b2db      	uxtb	r3, r3 802f43a:	b1b3      	cbz	r3, 802f46a <tcp_input+0x78a>          if (pcb->refused_data != NULL) { 802f43c:	6f63      	ldr	r3, [r4, #116]	; 0x74 802f43e:	b123      	cbz	r3, 802f44a <tcp_input+0x76a>            /* Delay this if we have refused data. */            pcb->refused_data->flags |= PBUF_FLAG_TCP_FIN; 802f440:	7b5a      	ldrb	r2, [r3, #13] 802f442:	f042 0220 	orr.w	r2, r2, #32 802f446:	735a      	strb	r2, [r3, #13] 802f448:	e00f      	b.n	802f46a <tcp_input+0x78a>          } else {            /* correct rcv_wnd as the application won't call tcp_recved()               for the FIN's seqno */            if (pcb->rcv_wnd != TCP_WND) { 802f44a:	8da3      	ldrh	r3, [r4, #44]	; 0x2c 802f44c:	f241 62d0 	movw	r2, #5840	; 0x16d0 802f450:	4293      	cmp	r3, r2 802f452:	d001      	beq.n	802f458 <tcp_input+0x778>              pcb->rcv_wnd++; 802f454:	3301      	adds	r3, #1 802f456:	85a3      	strh	r3, [r4, #44]	; 0x2c            }            TCP_EVENT_CLOSED(pcb, err); 802f458:	6fe5      	ldr	r5, [r4, #124]	; 0x7c 802f45a:	b135      	cbz	r5, 802f46a <tcp_input+0x78a> 802f45c:	2200      	movs	r2, #0 802f45e:	6920      	ldr	r0, [r4, #16] 802f460:	4621      	mov	r1, r4 802f462:	4613      	mov	r3, r2 802f464:	47a8      	blx	r5            if (err == ERR_ABRT) { 802f466:	300a      	adds	r0, #10 802f468:	d005      	beq.n	802f476 <tcp_input+0x796>              goto aborted;            }          }        }        tcp_input_pcb = NULL; 802f46a:	4b1c      	ldr	r3, [pc, #112]	; (802f4dc <tcp_input+0x7fc>) 802f46c:	2200      	movs	r2, #0        /* Try to send something out. */        tcp_output(pcb); 802f46e:	4620      	mov	r0, r4              goto aborted;            }          }        }        tcp_input_pcb = NULL; 802f470:	601a      	str	r2, [r3, #0]        /* Try to send something out. */        tcp_output(pcb); 802f472:	f000 fb3b 	bl	802faec <tcp_output>      }    }    /* Jump target if pcb has been aborted in a callback (by calling tcp_abort()).       Below this line, 'pcb' may not be dereferenced! */aborted:    tcp_input_pcb = NULL; 802f476:	4b19      	ldr	r3, [pc, #100]	; (802f4dc <tcp_input+0x7fc>)    recv_data = NULL;    /* give up our reference to inseg.p */    if (inseg.p != NULL) 802f478:	4d19      	ldr	r5, [pc, #100]	; (802f4e0 <tcp_input+0x800>)      }    }    /* Jump target if pcb has been aborted in a callback (by calling tcp_abort()).       Below this line, 'pcb' may not be dereferenced! */aborted:    tcp_input_pcb = NULL; 802f47a:	2400      	movs	r4, #0 802f47c:	601c      	str	r4, [r3, #0]    recv_data = NULL;    /* give up our reference to inseg.p */    if (inseg.p != NULL) 802f47e:	6868      	ldr	r0, [r5, #4]    }    /* Jump target if pcb has been aborted in a callback (by calling tcp_abort()).       Below this line, 'pcb' may not be dereferenced! */aborted:    tcp_input_pcb = NULL;    recv_data = NULL; 802f480:	4b15      	ldr	r3, [pc, #84]	; (802f4d8 <tcp_input+0x7f8>) 802f482:	601c      	str	r4, [r3, #0]    /* give up our reference to inseg.p */    if (inseg.p != NULL) 802f484:	2800      	cmp	r0, #0 802f486:	d067      	beq.n	802f558 <tcp_input+0x878>    {      pbuf_free(inseg.p); 802f488:	f7fe faf4 	bl	802da74 <pbuf_free>      inseg.p = NULL; 802f48c:	606c      	str	r4, [r5, #4] 802f48e:	e063      	b.n	802f558 <tcp_input+0x878>    if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) {      TCP_STATS_INC(tcp.proterr);      TCP_STATS_INC(tcp.drop);      tcp_rst(ackno, seqno + tcplen,        ip_current_dest_addr(), ip_current_src_addr(),        tcphdr->dest, tcphdr->src); 802f490:	4b14      	ldr	r3, [pc, #80]	; (802f4e4 <tcp_input+0x804>)       sender. */    LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n"));    if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) {      TCP_STATS_INC(tcp.proterr);      TCP_STATS_INC(tcp.drop);      tcp_rst(ackno, seqno + tcplen, 802f492:	4a15      	ldr	r2, [pc, #84]	; (802f4e8 <tcp_input+0x808>)        ip_current_dest_addr(), ip_current_src_addr(),        tcphdr->dest, tcphdr->src); 802f494:	681b      	ldr	r3, [r3, #0]       sender. */    LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n"));    if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) {      TCP_STATS_INC(tcp.proterr);      TCP_STATS_INC(tcp.drop);      tcp_rst(ackno, seqno + tcplen, 802f496:	8811      	ldrh	r1, [r2, #0] 802f498:	8858      	ldrh	r0, [r3, #2] 802f49a:	4a14      	ldr	r2, [pc, #80]	; (802f4ec <tcp_input+0x80c>) 802f49c:	6812      	ldr	r2, [r2, #0] 802f49e:	9000      	str	r0, [sp, #0] 802f4a0:	881b      	ldrh	r3, [r3, #0] 802f4a2:	9301      	str	r3, [sp, #4] 802f4a4:	4b06      	ldr	r3, [pc, #24]	; (802f4c0 <tcp_input+0x7e0>) 802f4a6:	1889      	adds	r1, r1, r2 802f4a8:	6818      	ldr	r0, [r3, #0] 802f4aa:	e517      	b.n	802eedc <tcp_input+0x1fc>  LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane());  PERF_STOP("tcp_input");  return;dropped:  TCP_STATS_INC(tcp.drop);  snmp_inc_tcpinerrs(); 802f4ac:	f003 f8ee 	bl	803268c <snmp_inc_tcpinerrs>  pbuf_free(p); 802f4b0:	4630      	mov	r0, r6} 802f4b2:	b003      	add	sp, #12 802f4b4:	e8bd 4ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}  PERF_STOP("tcp_input");  return;dropped:  TCP_STATS_INC(tcp.drop);  snmp_inc_tcpinerrs();  pbuf_free(p); 802f4b8:	f7fe badc 	b.w	802da74 <pbuf_free> 802f4bc:	20011088 	.word	0x20011088 802f4c0:	2000e19c 	.word	0x2000e19c 802f4c4:	2000e1a1 	.word	0x2000e1a1 802f4c8:	2001107c 	.word	0x2001107c 802f4cc:	2000e1a0 	.word	0x2000e1a0 802f4d0:	20011078 	.word	0x20011078 802f4d4:	20011090 	.word	0x20011090 802f4d8:	2000e1a4 	.word	0x2000e1a4 802f4dc:	20011094 	.word	0x20011094 802f4e0:	2000e1ac 	.word	0x2000e1ac 802f4e4:	2000e190 	.word	0x2000e190 802f4e8:	2000e198 	.word	0x2000e198 802f4ec:	2000e194 	.word	0x2000e194  }  if (pcb == NULL) {    /* If it did not go to an active connection, we check the connections       in the TIME-WAIT state. */    for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { 802f4f0:	4b1b      	ldr	r3, [pc, #108]	; (802f560 <tcp_input+0x880>) 802f4f2:	681b      	ldr	r3, [r3, #0] 802f4f4:	e4bf      	b.n	802ee76 <tcp_input+0x196>    tcp_debug_print_state(pcb->state);#endif /* TCP_DEBUG */#endif /* TCP_INPUT_DEBUG */    /* Set up a tcp_seg structure. */    inseg.next = NULL; 802f4f6:	4b1b      	ldr	r3, [pc, #108]	; (802f564 <tcp_input+0x884>) 802f4f8:	2100      	movs	r1, #0 802f4fa:	6019      	str	r1, [r3, #0]    inseg.len = p->tot_len; 802f4fc:	f8a3 8008 	strh.w	r8, [r3, #8]    inseg.p = p; 802f500:	605e      	str	r6, [r3, #4]    inseg.tcphdr = tcphdr; 802f502:	60df      	str	r7, [r3, #12]    recv_data = NULL; 802f504:	4b18      	ldr	r3, [pc, #96]	; (802f568 <tcp_input+0x888>)    recv_flags = 0;    if (flags & TCP_PSH) { 802f506:	f002 0208 	and.w	r2, r2, #8    inseg.next = NULL;    inseg.len = p->tot_len;    inseg.p = p;    inseg.tcphdr = tcphdr;    recv_data = NULL; 802f50a:	6019      	str	r1, [r3, #0]    recv_flags = 0; 802f50c:	4b17      	ldr	r3, [pc, #92]	; (802f56c <tcp_input+0x88c>)    if (flags & TCP_PSH) { 802f50e:	b2d2      	uxtb	r2, r2    inseg.len = p->tot_len;    inseg.p = p;    inseg.tcphdr = tcphdr;    recv_data = NULL;    recv_flags = 0; 802f510:	7019      	strb	r1, [r3, #0]    if (flags & TCP_PSH) { 802f512:	2a00      	cmp	r2, #0 802f514:	f47f ad52 	bne.w	802efbc <tcp_input+0x2dc> 802f518:	e554      	b.n	802efc4 <tcp_input+0x2e4>#endif /* SO_REUSE */    if (lpcb != NULL) {      /* Move this PCB to the front of the list so that subsequent         lookups will be faster (we exploit locality in TCP segment         arrivals). */      if (prev != NULL) { 802f51a:	2b00      	cmp	r3, #0 802f51c:	f47f acc4 	bne.w	802eea8 <tcp_input+0x1c8> 802f520:	e4c7      	b.n	802eeb2 <tcp_input+0x1d2>  } else {    /* If no matching PCB was found, send a TCP RST (reset) to the       sender. */    LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n"));    if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { 802f522:	89b8      	ldrh	r0, [r7, #12] 802f524:	f7fd f96d 	bl	802c802 <lwip_ntohs> 802f528:	f000 0004 	and.w	r0, r0, #4 802f52c:	b280      	uxth	r0, r0 802f52e:	2800      	cmp	r0, #0 802f530:	d1be      	bne.n	802f4b0 <tcp_input+0x7d0> 802f532:	e7ad      	b.n	802f490 <tcp_input+0x7b0>    }    if (acceptable) {      LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n"));      LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED);      recv_flags |= TF_RESET; 802f534:	4b0d      	ldr	r3, [pc, #52]	; (802f56c <tcp_input+0x88c>) 802f536:	781a      	ldrb	r2, [r3, #0] 802f538:	f042 0208 	orr.w	r2, r2, #8 802f53c:	701a      	strb	r2, [r3, #0]      pcb->flags &= ~TF_ACK_DELAY; 802f53e:	7fa3      	ldrb	r3, [r4, #30] 802f540:	f023 0301 	bic.w	r3, r3, #1 802f544:	77a3      	strb	r3, [r4, #30]    tcp_input_pcb = pcb;    err = tcp_process(pcb);    /* A return value of ERR_ABRT means that tcp_abort() was called       and that the pcb has been freed. If so, we don't do anything. */    if (err != ERR_ABRT) {      if (recv_flags & TF_RESET) { 802f546:	4b09      	ldr	r3, [pc, #36]	; (802f56c <tcp_input+0x88c>) 802f548:	781b      	ldrb	r3, [r3, #0] 802f54a:	f003 0208 	and.w	r2, r3, #8 802f54e:	b2d2      	uxtb	r2, r2 802f550:	2a00      	cmp	r2, #0 802f552:	f47f af1f 	bne.w	802f394 <tcp_input+0x6b4> 802f556:	e724      	b.n	802f3a2 <tcp_input+0x6c2>  return;dropped:  TCP_STATS_INC(tcp.drop);  snmp_inc_tcpinerrs();  pbuf_free(p);} 802f558:	b003      	add	sp, #12 802f55a:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802f55e:	bf00      	nop 802f560:	20011090 	.word	0x20011090 802f564:	2000e1ac 	.word	0x2000e1ac 802f568:	2000e1a4 	.word	0x2000e1a4 802f56c:	2000e1a1 	.word	0x2000e1a10802f570 <tcp_pbuf_prealloc>:#if TCP_OVERSIZEstatic struct pbuf *tcp_pbuf_prealloc(pbuf_layer layer, u16_t length, u16_t max_length,                  u16_t *oversize, struct tcp_pcb *pcb, u8_t apiflags,                  u8_t first_seg){ 802f570:	b570      	push	{r4, r5, r6, lr}  LWIP_UNUSED_ARG(apiflags);  LWIP_UNUSED_ARG(first_seg);  /* always create MSS-sized pbufs */  alloc = max_length;#else /* LWIP_NETIF_TX_SINGLE_PBUF */  if (length < max_length) { 802f572:	4291      	cmp	r1, r2#if TCP_OVERSIZEstatic struct pbuf *tcp_pbuf_prealloc(pbuf_layer layer, u16_t length, u16_t max_length,                  u16_t *oversize, struct tcp_pcb *pcb, u8_t apiflags,                  u8_t first_seg){ 802f574:	460c      	mov	r4, r1 802f576:	461e      	mov	r6, r3 802f578:	9d04      	ldr	r5, [sp, #16]  LWIP_UNUSED_ARG(apiflags);  LWIP_UNUSED_ARG(first_seg);  /* always create MSS-sized pbufs */  alloc = max_length;#else /* LWIP_NETIF_TX_SINGLE_PBUF */  if (length < max_length) { 802f57a:	d21a      	bcs.n	802f5b2 <tcp_pbuf_prealloc+0x42>     *     * Did the user set TCP_WRITE_FLAG_MORE?     *     * Will the Nagle algorithm defer transmission of this segment?     */    if ((apiflags & TCP_WRITE_FLAG_MORE) || 802f57c:	f89d 3014 	ldrb.w	r3, [sp, #20] 802f580:	f003 0302 	and.w	r3, r3, #2 802f584:	b2db      	uxtb	r3, r3 802f586:	b95b      	cbnz	r3, 802f5a0 <tcp_pbuf_prealloc+0x30>        (!(pcb->flags & TF_NODELAY) && 802f588:	7fab      	ldrb	r3, [r5, #30]     *     * Did the user set TCP_WRITE_FLAG_MORE?     *     * Will the Nagle algorithm defer transmission of this segment?     */    if ((apiflags & TCP_WRITE_FLAG_MORE) || 802f58a:	f003 0340 	and.w	r3, r3, #64	; 0x40 802f58e:	b2db      	uxtb	r3, r3 802f590:	b97b      	cbnz	r3, 802f5b2 <tcp_pbuf_prealloc+0x42>        (!(pcb->flags & TF_NODELAY) && 802f592:	f89d 3018 	ldrb.w	r3, [sp, #24] 802f596:	b11b      	cbz	r3, 802f5a0 <tcp_pbuf_prealloc+0x30>         (!first_seg || 802f598:	6ee9      	ldr	r1, [r5, #108]	; 0x6c 802f59a:	b909      	cbnz	r1, 802f5a0 <tcp_pbuf_prealloc+0x30>          pcb->unsent != NULL || 802f59c:	6f2b      	ldr	r3, [r5, #112]	; 0x70 802f59e:	b143      	cbz	r3, 802f5b2 <tcp_pbuf_prealloc+0x42>          pcb->unacked != NULL))) {      alloc = LWIP_MIN(max_length, LWIP_MEM_ALIGN_SIZE(length + TCP_OVERSIZE)); 802f5a0:	f204 51b7 	addw	r1, r4, #1463	; 0x5b7 802f5a4:	f021 0103 	bic.w	r1, r1, #3 802f5a8:	4291      	cmp	r1, r2 802f5aa:	bfa8      	it	ge 802f5ac:	4611      	movge	r1, r2 802f5ae:	b289      	uxth	r1, r1 802f5b0:	e000      	b.n	802f5b4 <tcp_pbuf_prealloc+0x44>     * Will the Nagle algorithm defer transmission of this segment?     */    if ((apiflags & TCP_WRITE_FLAG_MORE) ||        (!(pcb->flags & TF_NODELAY) &&         (!first_seg ||          pcb->unsent != NULL || 802f5b2:	4621      	mov	r1, r4          pcb->unacked != NULL))) {      alloc = LWIP_MIN(max_length, LWIP_MEM_ALIGN_SIZE(length + TCP_OVERSIZE));    }  }#endif /* LWIP_NETIF_TX_SINGLE_PBUF */  p = pbuf_alloc(layer, alloc, PBUF_RAM); 802f5b4:	2200      	movs	r2, #0 802f5b6:	f7fe faaa 	bl	802db0e <pbuf_alloc>  if (p == NULL) { 802f5ba:	b120      	cbz	r0, 802f5c6 <tcp_pbuf_prealloc+0x56>    return NULL;  }  LWIP_ASSERT("need unchained pbuf", p->next == NULL);  *oversize = p->len - length; 802f5bc:	8943      	ldrh	r3, [r0, #10] 802f5be:	1b1b      	subs	r3, r3, r4 802f5c0:	8033      	strh	r3, [r6, #0]  /* trim p->len to the currently used size */  p->len = p->tot_len = length; 802f5c2:	8104      	strh	r4, [r0, #8] 802f5c4:	8144      	strh	r4, [r0, #10]  return p;} 802f5c6:	bd70      	pop	{r4, r5, r6, pc}0802f5c8 <tcp_create_segment>: * The TCP header is filled in except ackno and wnd. * p is freed on failure. */static struct tcp_seg *tcp_create_segment(struct tcp_pcb *pcb, struct pbuf *p, u8_t flags, u32_t seqno, u8_t optflags){ 802f5c8:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 802f5cc:	f89d 6020 	ldrb.w	r6, [sp, #32]  struct tcp_seg *seg;  u8_t optlen = LWIP_TCP_OPT_LENGTH(optflags); 802f5d0:	f006 0702 	and.w	r7, r6, #2 802f5d4:	f016 0f01 	tst.w	r6, #1 802f5d8:	b2ff      	uxtb	r7, r7 * The TCP header is filled in except ackno and wnd. * p is freed on failure. */static struct tcp_seg *tcp_create_segment(struct tcp_pcb *pcb, struct pbuf *p, u8_t flags, u32_t seqno, u8_t optflags){ 802f5da:	4680      	mov	r8, r0 802f5dc:	469a      	mov	sl, r3  struct tcp_seg *seg;  u8_t optlen = LWIP_TCP_OPT_LENGTH(optflags); 802f5de:	bf0c      	ite	eq 802f5e0:	2300      	moveq	r3, #0 802f5e2:	2304      	movne	r3, #4 802f5e4:	2f00      	cmp	r7, #0 802f5e6:	bf14      	ite	ne 802f5e8:	270c      	movne	r7, #12 802f5ea:	2700      	moveq	r7, #0  if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) { 802f5ec:	2004      	movs	r0, #4 * The TCP header is filled in except ackno and wnd. * p is freed on failure. */static struct tcp_seg *tcp_create_segment(struct tcp_pcb *pcb, struct pbuf *p, u8_t flags, u32_t seqno, u8_t optflags){ 802f5ee:	460d      	mov	r5, r1 802f5f0:	4691      	mov	r9, r2  struct tcp_seg *seg;  u8_t optlen = LWIP_TCP_OPT_LENGTH(optflags); 802f5f2:	18ff      	adds	r7, r7, r3  if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) { 802f5f4:	f7fe f91e 	bl	802d834 <memp_malloc> 802f5f8:	4604      	mov	r4, r0 802f5fa:	b918      	cbnz	r0, 802f604 <tcp_create_segment+0x3c>    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_create_segment: no memory.\n"));    pbuf_free(p); 802f5fc:	4628      	mov	r0, r5 802f5fe:	f7fe fa39 	bl	802da74 <pbuf_free>    return NULL; 802f602:	e030      	b.n	802f666 <tcp_create_segment+0x9e>  }  seg->flags = optflags; 802f604:	7286      	strb	r6, [r0, #10]  seg->next = NULL;  seg->p = p;  seg->len = p->tot_len - optlen; 802f606:	892b      	ldrh	r3, [r5, #8]    pbuf_free(p);    return NULL;  }  seg->flags = optflags;  seg->next = NULL;  seg->p = p; 802f608:	6045      	str	r5, [r0, #4]  seg->len = p->tot_len - optlen; 802f60a:	1bdb      	subs	r3, r3, r7    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_create_segment: no memory.\n"));    pbuf_free(p);    return NULL;  }  seg->flags = optflags;  seg->next = NULL; 802f60c:	2600      	movs	r6, #0 802f60e:	6006      	str	r6, [r0, #0]  seg->p = p;  seg->len = p->tot_len - optlen; 802f610:	8103      	strh	r3, [r0, #8]  LWIP_ASSERT("invalid optflags passed: TF_SEG_DATA_CHECKSUMMED",              (optflags & TF_SEG_DATA_CHECKSUMMED) == 0);#endif /* TCP_CHECKSUM_ON_COPY */  /* build TCP header */  if (pbuf_header(p, TCP_HLEN)) { 802f612:	2114      	movs	r1, #20 802f614:	4628      	mov	r0, r5 802f616:	f7fe fa02 	bl	802da1e <pbuf_header> 802f61a:	4605      	mov	r5, r0 802f61c:	b120      	cbz	r0, 802f628 <tcp_create_segment+0x60>    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_create_segment: no room for TCP header in pbuf.\n"));    TCP_STATS_INC(tcp.err);    tcp_seg_free(seg); 802f61e:	4620      	mov	r0, r4 802f620:	f7fe fcd5 	bl	802dfce <tcp_seg_free>    return NULL; 802f624:	4634      	mov	r4, r6 802f626:	e01e      	b.n	802f666 <tcp_create_segment+0x9e>  }  seg->tcphdr = (struct tcp_hdr *)seg->p->payload; 802f628:	6863      	ldr	r3, [r4, #4]  seg->tcphdr->src = htons(pcb->local_port); 802f62a:	f8b8 001a 	ldrh.w	r0, [r8, #26]    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_create_segment: no room for TCP header in pbuf.\n"));    TCP_STATS_INC(tcp.err);    tcp_seg_free(seg);    return NULL;  }  seg->tcphdr = (struct tcp_hdr *)seg->p->payload; 802f62e:	685e      	ldr	r6, [r3, #4] 802f630:	60e6      	str	r6, [r4, #12]  seg->tcphdr->src = htons(pcb->local_port); 802f632:	f7fd f8e1 	bl	802c7f8 <lwip_htons> 802f636:	8030      	strh	r0, [r6, #0]  seg->tcphdr->dest = htons(pcb->remote_port); 802f638:	f8b8 001c 	ldrh.w	r0, [r8, #28] 802f63c:	68e6      	ldr	r6, [r4, #12] 802f63e:	f7fd f8db 	bl	802c7f8 <lwip_htons> 802f642:	8070      	strh	r0, [r6, #2]  seg->tcphdr->seqno = htonl(seqno); 802f644:	4650      	mov	r0, sl 802f646:	68e6      	ldr	r6, [r4, #12] 802f648:	f7fd f8e0 	bl	802c80c <lwip_htonl>  /* ackno is set in tcp_output */  TCPH_HDRLEN_FLAGS_SET(seg->tcphdr, (5 + optlen / 4), flags); 802f64c:	02bf      	lsls	r7, r7, #10    return NULL;  }  seg->tcphdr = (struct tcp_hdr *)seg->p->payload;  seg->tcphdr->src = htons(pcb->local_port);  seg->tcphdr->dest = htons(pcb->remote_port);  seg->tcphdr->seqno = htonl(seqno); 802f64e:	6070      	str	r0, [r6, #4]  /* ackno is set in tcp_output */  TCPH_HDRLEN_FLAGS_SET(seg->tcphdr, (5 + optlen / 4), flags); 802f650:	f507 40a0 	add.w	r0, r7, #20480	; 0x5000 802f654:	ea40 0009 	orr.w	r0, r0, r9 802f658:	68e6      	ldr	r6, [r4, #12] 802f65a:	f7fd f8cd 	bl	802c7f8 <lwip_htons> 802f65e:	81b0      	strh	r0, [r6, #12]  /* wnd and chksum are set in tcp_output */  seg->tcphdr->urgp = 0; 802f660:	68e3      	ldr	r3, [r4, #12] 802f662:	749d      	strb	r5, [r3, #18] 802f664:	74dd      	strb	r5, [r3, #19]  return seg;}  802f666:	4620      	mov	r0, r4 802f668:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}0802f66c <tcp_output_alloc_header.constprop.0>:static struct pbuf *tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen,                      u32_t seqno_be /* already in network byte order */){  struct tcp_hdr *tcphdr;  struct pbuf *p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM); 802f66c:	3114      	adds	r1, #20 * @param datalen length of tcp data to reserve in pbuf * @param seqno_be seqno in network byte order (big-endian) * @return pbuf with p->payload being the tcp_hdr */static struct pbuf *tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen, 802f66e:	b5f8      	push	{r3, r4, r5, r6, r7, lr}                      u32_t seqno_be /* already in network byte order */){  struct tcp_hdr *tcphdr;  struct pbuf *p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM); 802f670:	b289      	uxth	r1, r1 * @param datalen length of tcp data to reserve in pbuf * @param seqno_be seqno in network byte order (big-endian) * @return pbuf with p->payload being the tcp_hdr */static struct pbuf *tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen, 802f672:	4605      	mov	r5, r0 802f674:	4617      	mov	r7, r2                      u32_t seqno_be /* already in network byte order */){  struct tcp_hdr *tcphdr;  struct pbuf *p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM); 802f676:	2001      	movs	r0, #1 802f678:	2200      	movs	r2, #0 802f67a:	f7fe fa48 	bl	802db0e <pbuf_alloc>  if (p != NULL) { 802f67e:	4606      	mov	r6, r0 802f680:	b1f8      	cbz	r0, 802f6c2 <tcp_output_alloc_header.constprop.0+0x56>    LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",                 (p->len >= TCP_HLEN + optlen));    tcphdr = (struct tcp_hdr *)p->payload; 802f682:	6844      	ldr	r4, [r0, #4]    tcphdr->src = htons(pcb->local_port); 802f684:	8b68      	ldrh	r0, [r5, #26] 802f686:	f7fd f8b7 	bl	802c7f8 <lwip_htons> 802f68a:	8020      	strh	r0, [r4, #0]    tcphdr->dest = htons(pcb->remote_port); 802f68c:	8ba8      	ldrh	r0, [r5, #28] 802f68e:	f7fd f8b3 	bl	802c7f8 <lwip_htons>    tcphdr->seqno = seqno_be; 802f692:	6067      	str	r7, [r4, #4]  if (p != NULL) {    LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",                 (p->len >= TCP_HLEN + optlen));    tcphdr = (struct tcp_hdr *)p->payload;    tcphdr->src = htons(pcb->local_port);    tcphdr->dest = htons(pcb->remote_port); 802f694:	8060      	strh	r0, [r4, #2]    tcphdr->seqno = seqno_be;    tcphdr->ackno = htonl(pcb->rcv_nxt); 802f696:	6aa8      	ldr	r0, [r5, #40]	; 0x28 802f698:	f7fd f8b8 	bl	802c80c <lwip_htonl> 802f69c:	60a0      	str	r0, [r4, #8]    TCPH_HDRLEN_FLAGS_SET(tcphdr, (5 + optlen / 4), TCP_ACK); 802f69e:	f245 0010 	movw	r0, #20496	; 0x5010 802f6a2:	f7fd f8a9 	bl	802c7f8 <lwip_htons> 802f6a6:	81a0      	strh	r0, [r4, #12]    tcphdr->wnd = htons(pcb->rcv_ann_wnd); 802f6a8:	8de8      	ldrh	r0, [r5, #46]	; 0x2e 802f6aa:	f7fd f8a5 	bl	802c7f8 <lwip_htons>    tcphdr->chksum = 0; 802f6ae:	2300      	movs	r3, #0    tcphdr->src = htons(pcb->local_port);    tcphdr->dest = htons(pcb->remote_port);    tcphdr->seqno = seqno_be;    tcphdr->ackno = htonl(pcb->rcv_nxt);    TCPH_HDRLEN_FLAGS_SET(tcphdr, (5 + optlen / 4), TCP_ACK);    tcphdr->wnd = htons(pcb->rcv_ann_wnd); 802f6b0:	81e0      	strh	r0, [r4, #14]    tcphdr->chksum = 0; 802f6b2:	7423      	strb	r3, [r4, #16] 802f6b4:	7463      	strb	r3, [r4, #17]    tcphdr->urgp = 0; 802f6b6:	74a3      	strb	r3, [r4, #18] 802f6b8:	74e3      	strb	r3, [r4, #19]    /* If we're sending a packet, update the announced right window edge */    pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; 802f6ba:	8dea      	ldrh	r2, [r5, #46]	; 0x2e 802f6bc:	6aab      	ldr	r3, [r5, #40]	; 0x28 802f6be:	18d3      	adds	r3, r2, r3 802f6c0:	632b      	str	r3, [r5, #48]	; 0x30  }  return p;} 802f6c2:	4630      	mov	r0, r6 802f6c4:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}0802f6c6 <tcp_write>: * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, * @return ERR_OK if enqueued, another err_t on error */err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){ 802f6c6:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 802f6ca:	b08f      	sub	sp, #60	; 0x3c 802f6cc:	4691      	mov	r9, r2 802f6ce:	9307      	str	r3, [sp, #28]  u16_t pos = 0; /* position in 'arg' data */  u16_t queuelen;  u8_t optlen = 0;  u8_t optflags = 0;#if TCP_OVERSIZE  u16_t oversize = 0; 802f6d0:	2300      	movs	r3, #0 802f6d2:	f8ad 3036 	strh.w	r3, [sp, #54]	; 0x36 * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, * @return ERR_OK if enqueued, another err_t on error */err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){ 802f6d6:	4604      	mov	r4, r0  u8_t concat_chksum_swapped = 0;  u16_t concat_chksummed = 0;#endif /* TCP_CHECKSUM_ON_COPY */  err_t err;  /* don't allocate segments bigger than half the maximum window we ever received */  u16_t mss_local = LWIP_MIN(pcb->mss, pcb->snd_wnd_max/2); 802f6d8:	f8b0 2062 	ldrh.w	r2, [r0, #98]	; 0x62 802f6dc:	8ec3      	ldrh	r3, [r0, #54]	; 0x36  apiflags |= TCP_WRITE_FLAG_COPY;#endif /* LWIP_NETIF_TX_SINGLE_PBUF */  LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n",    (void *)pcb, arg, len, (u16_t)apiflags));  LWIP_ERROR("tcp_write: arg == NULL (programmer violates API)",  802f6de:	9106      	str	r1, [sp, #24] 802f6e0:	2900      	cmp	r1, #0 802f6e2:	f000 8168 	beq.w	802f9b6 <tcp_write+0x2f0> 802f6e6:	7e01      	ldrb	r1, [r0, #24] 802f6e8:	2907      	cmp	r1, #7 802f6ea:	f200 8166 	bhi.w	802f9ba <tcp_write+0x2f4> 802f6ee:	f990 1018 	ldrsb.w	r1, [r0, #24] 802f6f2:	f04f 5064 	mov.w	r0, #956301312	; 0x39000000 802f6f6:	4088      	lsls	r0, r1 802f6f8:	f140 815f 	bpl.w	802f9ba <tcp_write+0x2f4>      (pcb->state != CLOSE_WAIT) &&      (pcb->state != SYN_SENT) &&      (pcb->state != SYN_RCVD)) {    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n"));    return ERR_CONN;  } else if (len == 0) { 802f6fc:	f1b9 0f00 	cmp.w	r9, #0 802f700:	d00d      	beq.n	802f71e <tcp_write+0x58>    return ERR_OK;  }  /* fail on too much data */  if (len > pcb->snd_buf) { 802f702:	f8b4 1066 	ldrh.w	r1, [r4, #102]	; 0x66 802f706:	4549      	cmp	r1, r9 802f708:	d200      	bcs.n	802f70c <tcp_write+0x46> 802f70a:	e003      	b.n	802f714 <tcp_write+0x4e>  LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_write: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen));  /* If total number of pbufs on the unsent/unacked queues exceeds the   * configured maximum, return an error */  /* check for configured max queuelen and possible overflow */  if ((pcb->snd_queuelen >= TCP_SND_QUEUELEN) || (pcb->snd_queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { 802f70c:	f8b4 1068 	ldrh.w	r1, [r4, #104]	; 0x68 802f710:	2947      	cmp	r1, #71	; 0x47 802f712:	d904      	bls.n	802f71e <tcp_write+0x58>    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_write: too long queue %"U16_F" (max %"U16_F")\n",      pcb->snd_queuelen, TCP_SND_QUEUELEN));    TCP_STATS_INC(tcp.memerr);    pcb->flags |= TF_NAGLEMEMERR; 802f714:	7fa3      	ldrb	r3, [r4, #30] 802f716:	f063 037f 	orn	r3, r3, #127	; 0x7f 802f71a:	77a3      	strb	r3, [r4, #30] 802f71c:	e151      	b.n	802f9c2 <tcp_write+0x2fc>  u8_t concat_chksum_swapped = 0;  u16_t concat_chksummed = 0;#endif /* TCP_CHECKSUM_ON_COPY */  err_t err;  /* don't allocate segments bigger than half the maximum window we ever received */  u16_t mss_local = LWIP_MIN(pcb->mss, pcb->snd_wnd_max/2); 802f71e:	0852      	lsrs	r2, r2, #1   *   * pos records progress as data is segmented.   */  /* Find the tail of the unsent queue. */  if (pcb->unsent != NULL) { 802f720:	6ee6      	ldr	r6, [r4, #108]	; 0x6c  err = tcp_write_checks(pcb, len);  if (err != ERR_OK) {    return err;  }  queuelen = pcb->snd_queuelen; 802f722:	f8b4 b068 	ldrh.w	fp, [r4, #104]	; 0x68  u8_t concat_chksum_swapped = 0;  u16_t concat_chksummed = 0;#endif /* TCP_CHECKSUM_ON_COPY */  err_t err;  /* don't allocate segments bigger than half the maximum window we ever received */  u16_t mss_local = LWIP_MIN(pcb->mss, pcb->snd_wnd_max/2); 802f726:	429a      	cmp	r2, r3 802f728:	bf28      	it	cs 802f72a:	461a      	movcs	r2, r3 802f72c:	920a      	str	r2, [sp, #40]	; 0x28   *   * pos records progress as data is segmented.   */  /* Find the tail of the unsent queue. */  if (pcb->unsent != NULL) { 802f72e:	b90e      	cbnz	r6, 802f734 <tcp_write+0x6e> 802f730:	e066      	b.n	802f800 <tcp_write+0x13a>    u16_t space;    u16_t unsent_optlen;    /* @todo: this could be sped up by keeping last_unsent in the pcb */    for (last_unsent = pcb->unsent; last_unsent->next != NULL;         last_unsent = last_unsent->next); 802f732:	461e      	mov	r6, r3  if (pcb->unsent != NULL) {    u16_t space;    u16_t unsent_optlen;    /* @todo: this could be sped up by keeping last_unsent in the pcb */    for (last_unsent = pcb->unsent; last_unsent->next != NULL; 802f734:	6833      	ldr	r3, [r6, #0] 802f736:	2b00      	cmp	r3, #0 802f738:	d1fb      	bne.n	802f732 <tcp_write+0x6c>         last_unsent = last_unsent->next);    /* Usable space at the end of the last unsent segment */    unsent_optlen = LWIP_TCP_OPT_LENGTH(last_unsent->flags); 802f73a:	7ab3      	ldrb	r3, [r6, #10]    space = mss_local - (last_unsent->len + unsent_optlen); 802f73c:	8937      	ldrh	r7, [r6, #8]    /* @todo: this could be sped up by keeping last_unsent in the pcb */    for (last_unsent = pcb->unsent; last_unsent->next != NULL;         last_unsent = last_unsent->next);    /* Usable space at the end of the last unsent segment */    unsent_optlen = LWIP_TCP_OPT_LENGTH(last_unsent->flags); 802f73e:	980a      	ldr	r0, [sp, #40]	; 0x28#if TCP_OVERSIZE_DBGCHECK    /* check that pcb->unsent_oversize matches last_unsent->unsent_oversize */    LWIP_ASSERT("unsent_oversize mismatch (pcb vs. last_unsent)",                pcb->unsent_oversize == last_unsent->oversize_left);#endif /* TCP_OVERSIZE_DBGCHECK */    oversize = pcb->unsent_oversize; 802f740:	f8b4 506a 	ldrh.w	r5, [r4, #106]	; 0x6a    /* @todo: this could be sped up by keeping last_unsent in the pcb */    for (last_unsent = pcb->unsent; last_unsent->next != NULL;         last_unsent = last_unsent->next);    /* Usable space at the end of the last unsent segment */    unsent_optlen = LWIP_TCP_OPT_LENGTH(last_unsent->flags); 802f744:	f013 0f01 	tst.w	r3, #1 802f748:	f003 0302 	and.w	r3, r3, #2 802f74c:	bf0c      	ite	eq 802f74e:	2100      	moveq	r1, #0 802f750:	2104      	movne	r1, #4 802f752:	b2db      	uxtb	r3, r3 802f754:	1bc2      	subs	r2, r0, r7 802f756:	2b00      	cmp	r3, #0 802f758:	bf14      	ite	ne 802f75a:	230c      	movne	r3, #12 802f75c:	2300      	moveq	r3, #0    space = mss_local - (last_unsent->len + unsent_optlen); 802f75e:	1a52      	subs	r2, r2, r1 802f760:	1ad2      	subs	r2, r2, r3 802f762:	b292      	uxth	r2, r2    /* check that pcb->unsent_oversize matches last_unsent->unsent_oversize */    LWIP_ASSERT("unsent_oversize mismatch (pcb vs. last_unsent)",                pcb->unsent_oversize == last_unsent->oversize_left);#endif /* TCP_OVERSIZE_DBGCHECK */    oversize = pcb->unsent_oversize;    if (oversize > 0) { 802f764:	b91d      	cbnz	r5, 802f76e <tcp_write+0xa8>#if TCP_OVERSIZE_DBGCHECK    /* check that pcb->unsent_oversize matches last_unsent->unsent_oversize */    LWIP_ASSERT("unsent_oversize mismatch (pcb vs. last_unsent)",                pcb->unsent_oversize == last_unsent->oversize_left);#endif /* TCP_OVERSIZE_DBGCHECK */    oversize = pcb->unsent_oversize; 802f766:	f8ad 5036 	strh.w	r5, [sp, #54]	; 0x36 */err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){  struct pbuf *concat_p = NULL;  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL; 802f76a:	462b      	mov	r3, r5 802f76c:	e00a      	b.n	802f784 <tcp_write+0xbe>#endif /* TCP_OVERSIZE_DBGCHECK */    oversize = pcb->unsent_oversize;    if (oversize > 0) {      LWIP_ASSERT("inconsistent oversize vs. space", oversize_used <= space);      seg = last_unsent;      oversize_used = oversize < len ? oversize : len; 802f76e:	45a9      	cmp	r9, r5 802f770:	bf34      	ite	cc 802f772:	464b      	movcc	r3, r9 802f774:	462b      	movcs	r3, r5      pos += oversize_used;      oversize -= oversize_used; 802f776:	1aed      	subs	r5, r5, r3      space -= oversize_used; 802f778:	1ad2      	subs	r2, r2, r3    if (oversize > 0) {      LWIP_ASSERT("inconsistent oversize vs. space", oversize_used <= space);      seg = last_unsent;      oversize_used = oversize < len ? oversize : len;      pos += oversize_used;      oversize -= oversize_used; 802f77a:	f8ad 5036 	strh.w	r5, [sp, #54]	; 0x36      space -= oversize_used; 802f77e:	b292      	uxth	r2, r2    oversize = pcb->unsent_oversize;    if (oversize > 0) {      LWIP_ASSERT("inconsistent oversize vs. space", oversize_used <= space);      seg = last_unsent;      oversize_used = oversize < len ? oversize : len;      pos += oversize_used; 802f780:	461d      	mov	r5, r3      oversize -= oversize_used;      space -= oversize_used; 802f782:	4633      	mov	r3, r6     *     * We don't extend segments containing SYN/FIN flags or options     * (len==0). The new pbuf is kept in concat_p and pbuf_cat'ed at     * the end.     */    if ((pos < len) && (space > 0) && (last_unsent->len > 0)) { 802f784:	454d      	cmp	r5, r9 802f786:	d23f      	bcs.n	802f808 <tcp_write+0x142> 802f788:	2a00      	cmp	r2, #0 802f78a:	d03d      	beq.n	802f808 <tcp_write+0x142> 802f78c:	2f00      	cmp	r7, #0 802f78e:	d03e      	beq.n	802f80e <tcp_write+0x148>      seg = last_unsent;      /* Create a pbuf with a copy or reference to seglen bytes. We       * can use PBUF_RAW here since the data appears in the middle of       * a segment. A header will never be prepended. */      if (apiflags & TCP_WRITE_FLAG_COPY) { 802f790:	9907      	ldr	r1, [sp, #28]     * We don't extend segments containing SYN/FIN flags or options     * (len==0). The new pbuf is kept in concat_p and pbuf_cat'ed at     * the end.     */    if ((pos < len) && (space > 0) && (last_unsent->len > 0)) {      u16_t seglen = space < len - pos ? space : len - pos; 802f792:	ebc5 0a09 	rsb	sl, r5, r9 802f796:	4592      	cmp	sl, r2 802f798:	bfa8      	it	ge 802f79a:	4692      	movge	sl, r2      seg = last_unsent;      /* Create a pbuf with a copy or reference to seglen bytes. We       * can use PBUF_RAW here since the data appears in the middle of       * a segment. A header will never be prepended. */      if (apiflags & TCP_WRITE_FLAG_COPY) { 802f79c:	07cb      	lsls	r3, r1, #31     * We don't extend segments containing SYN/FIN flags or options     * (len==0). The new pbuf is kept in concat_p and pbuf_cat'ed at     * the end.     */    if ((pos < len) && (space > 0) && (last_unsent->len > 0)) {      u16_t seglen = space < len - pos ? space : len - pos; 802f79e:	fa1f f88a 	uxth.w	r8, sl      seg = last_unsent;      /* Create a pbuf with a copy or reference to seglen bytes. We       * can use PBUF_RAW here since the data appears in the middle of       * a segment. A header will never be prepended. */      if (apiflags & TCP_WRITE_FLAG_COPY) { 802f7a2:	d514      	bpl.n	802f7ce <tcp_write+0x108>        /* Data is copied */        if ((concat_p = tcp_pbuf_prealloc(PBUF_RAW, seglen, space, &oversize, pcb, apiflags, 1)) == NULL) { 802f7a4:	2301      	movs	r3, #1 802f7a6:	9101      	str	r1, [sp, #4] 802f7a8:	9302      	str	r3, [sp, #8] 802f7aa:	9400      	str	r4, [sp, #0] 802f7ac:	2003      	movs	r0, #3 802f7ae:	4641      	mov	r1, r8 802f7b0:	f10d 0336 	add.w	r3, sp, #54	; 0x36 802f7b4:	f7ff fedc 	bl	802f570 <tcp_pbuf_prealloc> 802f7b8:	4607      	mov	r7, r0 802f7ba:	2800      	cmp	r0, #0 802f7bc:	f000 80e9 	beq.w	802f992 <tcp_write+0x2cc>          goto memerr;        }#if TCP_OVERSIZE_DBGCHECK        last_unsent->oversize_left += oversize;#endif /* TCP_OVERSIZE_DBGCHECK */        TCP_DATA_COPY2(concat_p->payload, (u8_t*)arg + pos, seglen, &concat_chksum, &concat_chksum_swapped); 802f7c0:	9a06      	ldr	r2, [sp, #24] 802f7c2:	6840      	ldr	r0, [r0, #4] 802f7c4:	1951      	adds	r1, r2, r5 802f7c6:	4642      	mov	r2, r8 802f7c8:	f7f2 f8c0 	bl	802194c <memcpy> 802f7cc:	e00b      	b.n	802f7e6 <tcp_write+0x120>#if TCP_CHECKSUM_ON_COPY        concat_chksummed += seglen;#endif /* TCP_CHECKSUM_ON_COPY */      } else {        /* Data is not copied */        if ((concat_p = pbuf_alloc(PBUF_RAW, seglen, PBUF_ROM)) == NULL) { 802f7ce:	2003      	movs	r0, #3 802f7d0:	4641      	mov	r1, r8 802f7d2:	2201      	movs	r2, #1 802f7d4:	f7fe f99b 	bl	802db0e <pbuf_alloc> 802f7d8:	4607      	mov	r7, r0 802f7da:	2800      	cmp	r0, #0 802f7dc:	f000 80d9 	beq.w	802f992 <tcp_write+0x2cc>        tcp_seg_add_chksum(~inet_chksum((u8_t*)arg + pos, seglen), seglen,          &concat_chksum, &concat_chksum_swapped);        concat_chksummed += seglen;#endif /* TCP_CHECKSUM_ON_COPY */        /* reference the non-volatile payload data */        concat_p->payload = (u8_t*)arg + pos; 802f7e0:	9806      	ldr	r0, [sp, #24] 802f7e2:	1943      	adds	r3, r0, r5 802f7e4:	607b      	str	r3, [r7, #4]      }      pos += seglen;      queuelen += pbuf_clen(concat_p); 802f7e6:	4638      	mov	r0, r7 802f7e8:	f7fe fa18 	bl	802dc1c <pbuf_clen>#endif /* TCP_CHECKSUM_ON_COPY */        /* reference the non-volatile payload data */        concat_p->payload = (u8_t*)arg + pos;      }      pos += seglen; 802f7ec:	44a8      	add	r8, r5 802f7ee:	fa1f f888 	uxth.w	r8, r8      queuelen += pbuf_clen(concat_p); 802f7f2:	4458      	add	r0, fp 802f7f4:	46aa      	mov	sl, r5 802f7f6:	fa1f fb80 	uxth.w	fp, r0#endif /* TCP_CHECKSUM_ON_COPY */        /* reference the non-volatile payload data */        concat_p->payload = (u8_t*)arg + pos;      }      pos += seglen; 802f7fa:	4645      	mov	r5, r8      queuelen += pbuf_clen(concat_p); 802f7fc:	4633      	mov	r3, r6 802f7fe:	e007      	b.n	802f810 <tcp_write+0x14a>  u16_t queuelen;  u8_t optlen = 0;  u8_t optflags = 0;#if TCP_OVERSIZE  u16_t oversize = 0;  u16_t oversize_used = 0; 802f800:	46b2      	mov	sl, r6err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){  struct pbuf *concat_p = NULL;  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL;  u16_t pos = 0; /* position in 'arg' data */ 802f802:	4635      	mov	r5, r6 */err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){  struct pbuf *concat_p = NULL;  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL; 802f804:	4633      	mov	r3, r6 802f806:	e000      	b.n	802f80a <tcp_write+0x144>     *     * We don't extend segments containing SYN/FIN flags or options     * (len==0). The new pbuf is kept in concat_p and pbuf_cat'ed at     * the end.     */    if ((pos < len) && (space > 0) && (last_unsent->len > 0)) { 802f808:	46aa      	mov	sl, r5 * @return ERR_OK if enqueued, another err_t on error */err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){  struct pbuf *concat_p = NULL; 802f80a:	2700      	movs	r7, #0 802f80c:	e000      	b.n	802f810 <tcp_write+0x14a>     *     * We don't extend segments containing SYN/FIN flags or options     * (len==0). The new pbuf is kept in concat_p and pbuf_cat'ed at     * the end.     */    if ((pos < len) && (space > 0) && (last_unsent->len > 0)) { 802f80e:	46aa      	mov	sl, r5#if TCP_CHECKSUM_ON_COPY    u16_t chksum = 0;    u8_t chksum_swapped = 0;#endif /* TCP_CHECKSUM_ON_COPY */    if (apiflags & TCP_WRITE_FLAG_COPY) { 802f810:	9907      	ldr	r1, [sp, #28]    seg->chksum_swapped = chksum_swapped;    seg->flags |= TF_SEG_DATA_CHECKSUMMED;#endif /* TCP_CHECKSUM_ON_COPY */    /* first segment of to-be-queued data? */    if (queue == NULL) { 802f812:	f04f 0800 	mov.w	r8, #0#if TCP_CHECKSUM_ON_COPY    u16_t chksum = 0;    u8_t chksum_swapped = 0;#endif /* TCP_CHECKSUM_ON_COPY */    if (apiflags & TCP_WRITE_FLAG_COPY) { 802f816:	f001 0101 	and.w	r1, r1, #1    seg->chksum_swapped = chksum_swapped;    seg->flags |= TF_SEG_DATA_CHECKSUMMED;#endif /* TCP_CHECKSUM_ON_COPY */    /* first segment of to-be-queued data? */    if (queue == NULL) { 802f81a:	f8cd 802c 	str.w	r8, [sp, #44]	; 0x2c#if TCP_CHECKSUM_ON_COPY    u16_t chksum = 0;    u8_t chksum_swapped = 0;#endif /* TCP_CHECKSUM_ON_COPY */    if (apiflags & TCP_WRITE_FLAG_COPY) { 802f81e:	9108      	str	r1, [sp, #32] 802f820:	e068      	b.n	802f8f4 <tcp_write+0x22e>   * The new segments are chained together in the local 'queue'   * variable, ready to be appended to pcb->unsent.   */  while (pos < len) {    struct pbuf *p;    u16_t left = len - pos; 802f822:	ebc5 0309 	rsb	r3, r5, r9    u16_t max_len = mss_local - optlen;    u16_t seglen = left > max_len ? max_len : left; 802f826:	9a0a      	ldr	r2, [sp, #40]	; 0x28 802f828:	b29b      	uxth	r3, r3 802f82a:	4293      	cmp	r3, r2 802f82c:	bf38      	it	cc 802f82e:	461a      	movcc	r2, r3#if TCP_CHECKSUM_ON_COPY    u16_t chksum = 0;    u8_t chksum_swapped = 0;#endif /* TCP_CHECKSUM_ON_COPY */    if (apiflags & TCP_WRITE_FLAG_COPY) { 802f830:	9b08      	ldr	r3, [sp, #32]   */  while (pos < len) {    struct pbuf *p;    u16_t left = len - pos;    u16_t max_len = mss_local - optlen;    u16_t seglen = left > max_len ? max_len : left; 802f832:	9209      	str	r2, [sp, #36]	; 0x24#if TCP_CHECKSUM_ON_COPY    u16_t chksum = 0;    u8_t chksum_swapped = 0;#endif /* TCP_CHECKSUM_ON_COPY */    if (apiflags & TCP_WRITE_FLAG_COPY) { 802f834:	b1db      	cbz	r3, 802f86e <tcp_write+0x1a8>      /* If copy is set, memory should be allocated and data copied       * into pbuf */      if ((p = tcp_pbuf_prealloc(PBUF_TRANSPORT, seglen + optlen, mss_local, &oversize, pcb, apiflags, queue == NULL)) == NULL) { 802f836:	f1d8 0301 	rsbs	r3, r8, #1 802f83a:	9807      	ldr	r0, [sp, #28] 802f83c:	9400      	str	r4, [sp, #0] 802f83e:	bf38      	it	cc 802f840:	2300      	movcc	r3, #0 802f842:	9001      	str	r0, [sp, #4] 802f844:	9302      	str	r3, [sp, #8] 802f846:	4611      	mov	r1, r2 802f848:	2000      	movs	r0, #0 802f84a:	9a0a      	ldr	r2, [sp, #40]	; 0x28 802f84c:	f10d 0336 	add.w	r3, sp, #54	; 0x36 802f850:	f7ff fe8e 	bl	802f570 <tcp_pbuf_prealloc> 802f854:	4684      	mov	ip, r0 802f856:	2800      	cmp	r0, #0 802f858:	f000 809e 	beq.w	802f998 <tcp_write+0x2d2>        LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write : could not allocate memory for pbuf copy size %"U16_F"\n", seglen));        goto memerr;      }      LWIP_ASSERT("tcp_write: check that first pbuf can hold the complete seglen",                  (p->len >= seglen));      TCP_DATA_COPY2((char *)p->payload + optlen, (u8_t*)arg + pos, seglen, &chksum, &chksum_swapped); 802f85c:	9a06      	ldr	r2, [sp, #24] 802f85e:	6840      	ldr	r0, [r0, #4] 802f860:	f8cd c014 	str.w	ip, [sp, #20] 802f864:	1951      	adds	r1, r2, r5 802f866:	9a09      	ldr	r2, [sp, #36]	; 0x24 802f868:	f7f2 f870 	bl	802194c <memcpy> 802f86c:	e019      	b.n	802f8a2 <tcp_write+0x1dc>       */      struct pbuf *p2;#if TCP_OVERSIZE      LWIP_ASSERT("oversize == 0", oversize == 0);#endif /* TCP_OVERSIZE */      if ((p2 = pbuf_alloc(PBUF_TRANSPORT, seglen, PBUF_ROM)) == NULL) { 802f86e:	9808      	ldr	r0, [sp, #32] 802f870:	9909      	ldr	r1, [sp, #36]	; 0x24 802f872:	2201      	movs	r2, #1 802f874:	f7fe f94b 	bl	802db0e <pbuf_alloc> 802f878:	4603      	mov	r3, r0 802f87a:	2800      	cmp	r0, #0 802f87c:	f000 808c 	beq.w	802f998 <tcp_write+0x2d2>#if TCP_CHECKSUM_ON_COPY      /* calculate the checksum of nocopy-data */      chksum = ~inet_chksum((u8_t*)arg + pos, seglen);#endif /* TCP_CHECKSUM_ON_COPY */      /* reference the non-volatile payload data */      p2->payload = (u8_t*)arg + pos; 802f880:	9806      	ldr	r0, [sp, #24] 802f882:	1942      	adds	r2, r0, r5      /* Second, allocate a pbuf for the headers. */      if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { 802f884:	9808      	ldr	r0, [sp, #32]#if TCP_CHECKSUM_ON_COPY      /* calculate the checksum of nocopy-data */      chksum = ~inet_chksum((u8_t*)arg + pos, seglen);#endif /* TCP_CHECKSUM_ON_COPY */      /* reference the non-volatile payload data */      p2->payload = (u8_t*)arg + pos; 802f886:	605a      	str	r2, [r3, #4]      /* Second, allocate a pbuf for the headers. */      if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { 802f888:	4601      	mov	r1, r0 802f88a:	4602      	mov	r2, r0 802f88c:	9305      	str	r3, [sp, #20] 802f88e:	f7fe f93e 	bl	802db0e <pbuf_alloc> 802f892:	9b05      	ldr	r3, [sp, #20] 802f894:	b908      	cbnz	r0, 802f89a <tcp_write+0x1d4>        /* If allocation fails, we have to deallocate the data pbuf as         * well. */        pbuf_free(p2); 802f896:	4618      	mov	r0, r3 802f898:	e013      	b.n	802f8c2 <tcp_write+0x1fc>        LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write: could not allocate memory for header pbuf\n"));        goto memerr;      }      /* Concatenate the headers and data pbufs together. */      pbuf_cat(p/*header*/, p2/*data*/); 802f89a:	4619      	mov	r1, r3 802f89c:	9005      	str	r0, [sp, #20] 802f89e:	f7fe f9d3 	bl	802dc48 <pbuf_cat> 802f8a2:	f8dd c014 	ldr.w	ip, [sp, #20]    }    queuelen += pbuf_clen(p); 802f8a6:	4660      	mov	r0, ip 802f8a8:	f8cd c014 	str.w	ip, [sp, #20] 802f8ac:	f7fe f9b6 	bl	802dc1c <pbuf_clen> 802f8b0:	4458      	add	r0, fp 802f8b2:	fa1f fb80 	uxth.w	fp, r0    /* Now that there are more segments queued, we check again if the     * length of the queue exceeds the configured maximum or     * overflows. */    if ((queuelen > TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { 802f8b6:	f1bb 0f48 	cmp.w	fp, #72	; 0x48 802f8ba:	f8dd c014 	ldr.w	ip, [sp, #20] 802f8be:	d903      	bls.n	802f8c8 <tcp_write+0x202>      LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write: queue too long %"U16_F" (%"U16_F")\n", queuelen, TCP_SND_QUEUELEN));      pbuf_free(p); 802f8c0:	4660      	mov	r0, ip 802f8c2:	f7fe f8d7 	bl	802da74 <pbuf_free>      goto memerr; 802f8c6:	e067      	b.n	802f998 <tcp_write+0x2d2>    }    if ((seg = tcp_create_segment(pcb, p, 0, pcb->snd_lbb + pos, optflags)) == NULL) { 802f8c8:	6de3      	ldr	r3, [r4, #92]	; 0x5c 802f8ca:	2200      	movs	r2, #0 802f8cc:	18eb      	adds	r3, r5, r3 802f8ce:	9200      	str	r2, [sp, #0] 802f8d0:	4620      	mov	r0, r4 802f8d2:	4661      	mov	r1, ip 802f8d4:	f7ff fe78 	bl	802f5c8 <tcp_create_segment> 802f8d8:	4603      	mov	r3, r0 802f8da:	2800      	cmp	r0, #0 802f8dc:	d05c      	beq.n	802f998 <tcp_write+0x2d2>    seg->chksum_swapped = chksum_swapped;    seg->flags |= TF_SEG_DATA_CHECKSUMMED;#endif /* TCP_CHECKSUM_ON_COPY */    /* first segment of to-be-queued data? */    if (queue == NULL) { 802f8de:	f1b8 0f00 	cmp.w	r8, #0 802f8e2:	d002      	beq.n	802f8ea <tcp_write+0x224>      queue = seg;    } else {      /* Attach the segment to the end of the queued segments */      LWIP_ASSERT("prev_seg != NULL", prev_seg != NULL);      prev_seg->next = seg; 802f8e4:	990b      	ldr	r1, [sp, #44]	; 0x2c 802f8e6:	6008      	str	r0, [r1, #0] 802f8e8:	e000      	b.n	802f8ec <tcp_write+0x226>    seg->chksum_swapped = chksum_swapped;    seg->flags |= TF_SEG_DATA_CHECKSUMMED;#endif /* TCP_CHECKSUM_ON_COPY */    /* first segment of to-be-queued data? */    if (queue == NULL) { 802f8ea:	4680      	mov	r8, r0    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_write: queueing %"U32_F":%"U32_F"\n",      ntohl(seg->tcphdr->seqno),      ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg)));    pos += seglen; 802f8ec:	9a09      	ldr	r2, [sp, #36]	; 0x24 802f8ee:	930b      	str	r3, [sp, #44]	; 0x2c 802f8f0:	1955      	adds	r5, r2, r5 802f8f2:	b2ad      	uxth	r5, r5   * Phase 3: Create new segments.   *   * The new segments are chained together in the local 'queue'   * variable, ready to be appended to pcb->unsent.   */  while (pos < len) { 802f8f4:	454d      	cmp	r5, r9 802f8f6:	d394      	bcc.n	802f822 <tcp_write+0x15c>  /*   * Phase 1: If data has been added to the preallocated tail of   * last_unsent, we update the length fields of the pbuf chain.   */#if TCP_OVERSIZE  if (oversize_used > 0) { 802f8f8:	f1ba 0f00 	cmp.w	sl, #0 802f8fc:	d019      	beq.n	802f932 <tcp_write+0x26c>    struct pbuf *p;    /* Bump tot_len of whole chain, len of tail */    for (p = last_unsent->p; p; p = p->next) { 802f8fe:	6875      	ldr	r5, [r6, #4] 802f900:	e011      	b.n	802f926 <tcp_write+0x260>      p->tot_len += oversize_used; 802f902:	892a      	ldrh	r2, [r5, #8] 802f904:	4452      	add	r2, sl 802f906:	812a      	strh	r2, [r5, #8]      if (p->next == NULL) { 802f908:	682a      	ldr	r2, [r5, #0] 802f90a:	b95a      	cbnz	r2, 802f924 <tcp_write+0x25e>        TCP_DATA_COPY((char *)p->payload + p->len, arg, oversize_used, last_unsent); 802f90c:	686a      	ldr	r2, [r5, #4] 802f90e:	8968      	ldrh	r0, [r5, #10] 802f910:	9906      	ldr	r1, [sp, #24] 802f912:	9305      	str	r3, [sp, #20] 802f914:	1810      	adds	r0, r2, r0 802f916:	4652      	mov	r2, sl 802f918:	f7f2 f818 	bl	802194c <memcpy>        p->len += oversize_used; 802f91c:	896a      	ldrh	r2, [r5, #10] 802f91e:	9b05      	ldr	r3, [sp, #20] 802f920:	4452      	add	r2, sl 802f922:	816a      	strh	r2, [r5, #10]   */#if TCP_OVERSIZE  if (oversize_used > 0) {    struct pbuf *p;    /* Bump tot_len of whole chain, len of tail */    for (p = last_unsent->p; p; p = p->next) { 802f924:	682d      	ldr	r5, [r5, #0] 802f926:	2d00      	cmp	r5, #0 802f928:	d1eb      	bne.n	802f902 <tcp_write+0x23c>      if (p->next == NULL) {        TCP_DATA_COPY((char *)p->payload + p->len, arg, oversize_used, last_unsent);        p->len += oversize_used;      }    }    last_unsent->len += oversize_used; 802f92a:	8932      	ldrh	r2, [r6, #8] 802f92c:	4492      	add	sl, r2 802f92e:	f8a6 a008 	strh.w	sl, [r6, #8]    LWIP_ASSERT("last_unsent->oversize_left >= oversize_used",                last_unsent->oversize_left >= oversize_used);    last_unsent->oversize_left -= oversize_used;#endif /* TCP_OVERSIZE_DBGCHECK */  }  pcb->unsent_oversize = oversize; 802f932:	f8bd 2036 	ldrh.w	r2, [sp, #54]	; 0x36 802f936:	f8a4 206a 	strh.w	r2, [r4, #106]	; 0x6a#endif /* TCP_OVERSIZE */  /*   * Phase 2: concat_p can be concatenated onto last_unsent->p   */  if (concat_p != NULL) { 802f93a:	b157      	cbz	r7, 802f952 <tcp_write+0x28c>    LWIP_ASSERT("tcp_write: cannot concatenate when pcb->unsent is empty",      (last_unsent != NULL));    pbuf_cat(last_unsent->p, concat_p); 802f93c:	6870      	ldr	r0, [r6, #4] 802f93e:	9305      	str	r3, [sp, #20] 802f940:	4639      	mov	r1, r7 802f942:	f7fe f981 	bl	802dc48 <pbuf_cat>    last_unsent->len += concat_p->tot_len; 802f946:	8939      	ldrh	r1, [r7, #8] 802f948:	8932      	ldrh	r2, [r6, #8] 802f94a:	9b05      	ldr	r3, [sp, #20] 802f94c:	188a      	adds	r2, r1, r2 802f94e:	8132      	strh	r2, [r6, #8] 802f950:	e003      	b.n	802f95a <tcp_write+0x294>  /*   * Phase 3: Append queue to pcb->unsent. Queue may be NULL, but that   * is harmless   */  if (last_unsent == NULL) { 802f952:	b916      	cbnz	r6, 802f95a <tcp_write+0x294>    pcb->unsent = queue; 802f954:	f8c4 806c 	str.w	r8, [r4, #108]	; 0x6c 802f958:	e001      	b.n	802f95e <tcp_write+0x298>  } else {    last_unsent->next = queue; 802f95a:	f8c6 8000 	str.w	r8, [r6]  }  /*   * Finally update the pcb state.   */  pcb->snd_lbb += len; 802f95e:	6de2      	ldr	r2, [r4, #92]	; 0x5c  pcb->snd_buf -= len;  pcb->snd_queuelen = queuelen; 802f960:	f8a4 b068 	strh.w	fp, [r4, #104]	; 0x68  }  /*   * Finally update the pcb state.   */  pcb->snd_lbb += len; 802f964:	444a      	add	r2, r9 802f966:	65e2      	str	r2, [r4, #92]	; 0x5c  pcb->snd_buf -= len; 802f968:	f8b4 2066 	ldrh.w	r2, [r4, #102]	; 0x66 802f96c:	ebc9 0902 	rsb	r9, r9, r2 802f970:	f8a4 9066 	strh.w	r9, [r4, #102]	; 0x66    LWIP_ASSERT("tcp_write: valid queue length",                pcb->unacked != NULL || pcb->unsent != NULL);  }  /* Set the PSH flag in the last segment that we enqueued. */  if (seg != NULL && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE)==0)) { 802f974:	b333      	cbz	r3, 802f9c4 <tcp_write+0x2fe> 802f976:	68dc      	ldr	r4, [r3, #12] 802f978:	b30c      	cbz	r4, 802f9be <tcp_write+0x2f8> 802f97a:	9b07      	ldr	r3, [sp, #28] 802f97c:	f003 0502 	and.w	r5, r3, #2 802f980:	b2ed      	uxtb	r5, r5 802f982:	b9e5      	cbnz	r5, 802f9be <tcp_write+0x2f8>    TCPH_SET_FLAG(seg->tcphdr, TCP_PSH); 802f984:	2008      	movs	r0, #8 802f986:	89a6      	ldrh	r6, [r4, #12] 802f988:	f7fc ff36 	bl	802c7f8 <lwip_htons> 802f98c:	4330      	orrs	r0, r6 802f98e:	81a0      	strh	r0, [r4, #12] 802f990:	e015      	b.n	802f9be <tcp_write+0x2f8> */err_ttcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags){  struct pbuf *concat_p = NULL;  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL; 802f992:	f04f 0800 	mov.w	r8, #0 802f996:	4647      	mov	r7, r8    TCPH_SET_FLAG(seg->tcphdr, TCP_PSH);  }  return ERR_OK;memerr:  pcb->flags |= TF_NAGLEMEMERR; 802f998:	7fa3      	ldrb	r3, [r4, #30] 802f99a:	f063 037f 	orn	r3, r3, #127	; 0x7f 802f99e:	77a3      	strb	r3, [r4, #30]  TCP_STATS_INC(tcp.memerr);  if (concat_p != NULL) { 802f9a0:	b117      	cbz	r7, 802f9a8 <tcp_write+0x2e2>    pbuf_free(concat_p); 802f9a2:	4638      	mov	r0, r7 802f9a4:	f7fe f866 	bl	802da74 <pbuf_free>  }  if (queue != NULL) { 802f9a8:	f1b8 0f00 	cmp.w	r8, #0 802f9ac:	d009      	beq.n	802f9c2 <tcp_write+0x2fc>    tcp_segs_free(queue); 802f9ae:	4640      	mov	r0, r8 802f9b0:	f7fe fb1b 	bl	802dfea <tcp_segs_free> 802f9b4:	e005      	b.n	802f9c2 <tcp_write+0x2fc>  apiflags |= TCP_WRITE_FLAG_COPY;#endif /* LWIP_NETIF_TX_SINGLE_PBUF */  LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n",    (void *)pcb, arg, len, (u16_t)apiflags));  LWIP_ERROR("tcp_write: arg == NULL (programmer violates API)",  802f9b6:	23f2      	movs	r3, #242	; 0xf2 802f9b8:	e004      	b.n	802f9c4 <tcp_write+0x2fe>  if ((pcb->state != ESTABLISHED) &&      (pcb->state != CLOSE_WAIT) &&      (pcb->state != SYN_SENT) &&      (pcb->state != SYN_RCVD)) {    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n"));    return ERR_CONN; 802f9ba:	23f3      	movs	r3, #243	; 0xf3 802f9bc:	e002      	b.n	802f9c4 <tcp_write+0x2fe>  /* Set the PSH flag in the last segment that we enqueued. */  if (seg != NULL && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE)==0)) {    TCPH_SET_FLAG(seg->tcphdr, TCP_PSH);  }  return ERR_OK; 802f9be:	2300      	movs	r3, #0 802f9c0:	e000      	b.n	802f9c4 <tcp_write+0x2fe>  if (pcb->snd_queuelen != 0) {    LWIP_ASSERT("tcp_write: valid queue length", pcb->unacked != NULL ||      pcb->unsent != NULL);  }  LWIP_DEBUGF(TCP_QLEN_DEBUG | LWIP_DBG_STATE, ("tcp_write: %"S16_F" (with mem err)\n", pcb->snd_queuelen));  return ERR_MEM; 802f9c2:	23ff      	movs	r3, #255	; 0xff 802f9c4:	b258      	sxtb	r0, r3} 802f9c6:	b00f      	add	sp, #60	; 0x3c 802f9c8:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}0802f9cc <tcp_enqueue_flags>:  LWIP_ASSERT("tcp_enqueue_flags: need either TCP_SYN or TCP_FIN in flags (programmer violates API)",              (flags & (TCP_SYN | TCP_FIN)) != 0);  /* check for configured max queuelen and possible overflow */  if ((pcb->snd_queuelen >= TCP_SND_QUEUELEN) || (pcb->snd_queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { 802f9cc:	f8b0 3068 	ldrh.w	r3, [r0, #104]	; 0x68 802f9d0:	2b47      	cmp	r3, #71	; 0x47 * @param optdata pointer to TCP options, or NULL. * @param optlen length of TCP options in bytes. */err_ttcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags){ 802f9d2:	b573      	push	{r0, r1, r4, r5, r6, lr} 802f9d4:	4604      	mov	r4, r0 802f9d6:	460d      	mov	r5, r1  LWIP_ASSERT("tcp_enqueue_flags: need either TCP_SYN or TCP_FIN in flags (programmer violates API)",              (flags & (TCP_SYN | TCP_FIN)) != 0);  /* check for configured max queuelen and possible overflow */  if ((pcb->snd_queuelen >= TCP_SND_QUEUELEN) || (pcb->snd_queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { 802f9d8:	d900      	bls.n	802f9dc <tcp_enqueue_flags+0x10> 802f9da:	e014      	b.n	802fa06 <tcp_enqueue_flags+0x3a>  /* tcp_enqueue_flags is always called with either SYN or FIN in flags.   * We need one available snd_buf byte to do that.   * This means we can't send FIN while snd_buf==0. A better fix would be to   * not include SYN and FIN sequence numbers in the snd_buf count. */  if (pcb->snd_buf == 0) { 802f9dc:	f8b0 3066 	ldrh.w	r3, [r0, #102]	; 0x66err_ttcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags){  struct pbuf *p;  struct tcp_seg *seg;  u8_t optflags = 0; 802f9e0:	f3c1 0640 	ubfx	r6, r1, #1, #1#if LWIP_TCP_TIMESTAMPS  if ((pcb->flags & TF_TIMESTAMP)) {    optflags |= TF_SEG_OPTS_TS;  }#endif /* LWIP_TCP_TIMESTAMPS */  optlen = LWIP_TCP_OPT_LENGTH(optflags); 802f9e4:	00b1      	lsls	r1, r6, #2  /* tcp_enqueue_flags is always called with either SYN or FIN in flags.   * We need one available snd_buf byte to do that.   * This means we can't send FIN while snd_buf==0. A better fix would be to   * not include SYN and FIN sequence numbers in the snd_buf count. */  if (pcb->snd_buf == 0) { 802f9e6:	2b00      	cmp	r3, #0 802f9e8:	d038      	beq.n	802fa5c <tcp_enqueue_flags+0x90>    TCP_STATS_INC(tcp.memerr);    return ERR_MEM;  }  /* Allocate pbuf with room for TCP header + options */  if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { 802f9ea:	2000      	movs	r0, #0 802f9ec:	4602      	mov	r2, r0 802f9ee:	f7fe f88e 	bl	802db0e <pbuf_alloc> 802f9f2:	4601      	mov	r1, r0 802f9f4:	b900      	cbnz	r0, 802f9f8 <tcp_enqueue_flags+0x2c> 802f9f6:	e006      	b.n	802fa06 <tcp_enqueue_flags+0x3a>  }  LWIP_ASSERT("tcp_enqueue_flags: check that first pbuf can hold optlen",              (p->len >= optlen));  /* Allocate memory for tcp_seg, and fill in fields. */  if ((seg = tcp_create_segment(pcb, p, flags, pcb->snd_lbb, optflags)) == NULL) { 802f9f8:	9600      	str	r6, [sp, #0] 802f9fa:	4620      	mov	r0, r4 802f9fc:	462a      	mov	r2, r5 802f9fe:	6de3      	ldr	r3, [r4, #92]	; 0x5c 802fa00:	f7ff fde2 	bl	802f5c8 <tcp_create_segment> 802fa04:	b920      	cbnz	r0, 802fa10 <tcp_enqueue_flags+0x44>    pcb->flags |= TF_NAGLEMEMERR; 802fa06:	7fa3      	ldrb	r3, [r4, #30] 802fa08:	f063 037f 	orn	r3, r3, #127	; 0x7f 802fa0c:	77a3      	strb	r3, [r4, #30] 802fa0e:	e025      	b.n	802fa5c <tcp_enqueue_flags+0x90>               ntohl(seg->tcphdr->seqno),               ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg),               (u16_t)flags));  /* Now append seg to pcb->unsent queue */  if (pcb->unsent == NULL) { 802fa10:	6ee3      	ldr	r3, [r4, #108]	; 0x6c 802fa12:	b913      	cbnz	r3, 802fa1a <tcp_enqueue_flags+0x4e>    pcb->unsent = seg; 802fa14:	66e0      	str	r0, [r4, #108]	; 0x6c 802fa16:	e004      	b.n	802fa22 <tcp_enqueue_flags+0x56>  } else {    struct tcp_seg *useg;    for (useg = pcb->unsent; useg->next != NULL; useg = useg->next); 802fa18:	4613      	mov	r3, r2 802fa1a:	681a      	ldr	r2, [r3, #0] 802fa1c:	2a00      	cmp	r2, #0 802fa1e:	d1fb      	bne.n	802fa18 <tcp_enqueue_flags+0x4c>    useg->next = seg; 802fa20:	6018      	str	r0, [r3, #0]  }#if TCP_OVERSIZE  /* The new unsent tail has no space */  pcb->unsent_oversize = 0; 802fa22:	2300      	movs	r3, #0#endif /* TCP_OVERSIZE */  /* SYN and FIN bump the sequence number */  if ((flags & TCP_SYN) || (flags & TCP_FIN)) { 802fa24:	07a9      	lsls	r1, r5, #30    for (useg = pcb->unsent; useg->next != NULL; useg = useg->next);    useg->next = seg;  }#if TCP_OVERSIZE  /* The new unsent tail has no space */  pcb->unsent_oversize = 0; 802fa26:	f8a4 306a 	strh.w	r3, [r4, #106]	; 0x6a#endif /* TCP_OVERSIZE */  /* SYN and FIN bump the sequence number */  if ((flags & TCP_SYN) || (flags & TCP_FIN)) { 802fa2a:	d007      	beq.n	802fa3c <tcp_enqueue_flags+0x70>    pcb->snd_lbb++; 802fa2c:	6de3      	ldr	r3, [r4, #92]	; 0x5c 802fa2e:	3301      	adds	r3, #1 802fa30:	65e3      	str	r3, [r4, #92]	; 0x5c    /* optlen does not influence snd_buf */    pcb->snd_buf--; 802fa32:	f8b4 3066 	ldrh.w	r3, [r4, #102]	; 0x66 802fa36:	3b01      	subs	r3, #1 802fa38:	f8a4 3066 	strh.w	r3, [r4, #102]	; 0x66  }  if (flags & TCP_FIN) { 802fa3c:	07ea      	lsls	r2, r5, #31 802fa3e:	d503      	bpl.n	802fa48 <tcp_enqueue_flags+0x7c>    pcb->flags |= TF_FIN; 802fa40:	7fa3      	ldrb	r3, [r4, #30] 802fa42:	f043 0320 	orr.w	r3, r3, #32 802fa46:	77a3      	strb	r3, [r4, #30]  }  /* update number of segments on the queues */  pcb->snd_queuelen += pbuf_clen(seg->p); 802fa48:	6840      	ldr	r0, [r0, #4] 802fa4a:	f8b4 5068 	ldrh.w	r5, [r4, #104]	; 0x68 802fa4e:	f7fe f8e5 	bl	802dc1c <pbuf_clen> 802fa52:	1940      	adds	r0, r0, r5 802fa54:	f8a4 0068 	strh.w	r0, [r4, #104]	; 0x68  if (pcb->snd_queuelen != 0) {    LWIP_ASSERT("tcp_enqueue_flags: invalid queue length",      pcb->unacked != NULL || pcb->unsent != NULL);  }  return ERR_OK; 802fa58:	2000      	movs	r0, #0 802fa5a:	e000      	b.n	802fa5e <tcp_enqueue_flags+0x92>   * This means we can't send FIN while snd_buf==0. A better fix would be to   * not include SYN and FIN sequence numbers in the snd_buf count. */  if (pcb->snd_buf == 0) {    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_enqueue_flags: no send buffer available\n"));    TCP_STATS_INC(tcp.memerr);    return ERR_MEM; 802fa5c:	20ff      	movs	r0, #255	; 0xff    LWIP_ASSERT("tcp_enqueue_flags: invalid queue length",      pcb->unacked != NULL || pcb->unsent != NULL);  }  return ERR_OK;} 802fa5e:	b240      	sxtb	r0, r0 802fa60:	bd7c      	pop	{r2, r3, r4, r5, r6, pc}0802fa62 <tcp_send_fin>: * @param pcb the tcp_pcb over which to send a segment * @return ERR_OK if sent, another err_t otherwise */err_ttcp_send_fin(struct tcp_pcb *pcb){ 802fa62:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  /* first, try to add the fin to the last unsent segment */  if (pcb->unsent != NULL) { 802fa64:	6ec4      	ldr	r4, [r0, #108]	; 0x6c * @param pcb the tcp_pcb over which to send a segment * @return ERR_OK if sent, another err_t otherwise */err_ttcp_send_fin(struct tcp_pcb *pcb){ 802fa66:	4605      	mov	r5, r0  /* first, try to add the fin to the last unsent segment */  if (pcb->unsent != NULL) { 802fa68:	b90c      	cbnz	r4, 802fa6e <tcp_send_fin+0xc> 802fa6a:	e00a      	b.n	802fa82 <tcp_send_fin+0x20>    struct tcp_seg *last_unsent;    for (last_unsent = pcb->unsent; last_unsent->next != NULL;         last_unsent = last_unsent->next); 802fa6c:	461c      	mov	r4, r3tcp_send_fin(struct tcp_pcb *pcb){  /* first, try to add the fin to the last unsent segment */  if (pcb->unsent != NULL) {    struct tcp_seg *last_unsent;    for (last_unsent = pcb->unsent; last_unsent->next != NULL; 802fa6e:	6823      	ldr	r3, [r4, #0] 802fa70:	2b00      	cmp	r3, #0 802fa72:	d1fb      	bne.n	802fa6c <tcp_send_fin+0xa>         last_unsent = last_unsent->next);    if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) { 802fa74:	68e3      	ldr	r3, [r4, #12] 802fa76:	8998      	ldrh	r0, [r3, #12] 802fa78:	f7fc fec3 	bl	802c802 <lwip_ntohs> 802fa7c:	f010 0607 	ands.w	r6, r0, #7 802fa80:	d005      	beq.n	802fa8e <tcp_send_fin+0x2c>      pcb->flags |= TF_FIN;      return ERR_OK;    }  }  /* no data, no length, flags, copy=1, no optdata */  return tcp_enqueue_flags(pcb, TCP_FIN); 802fa82:	4628      	mov	r0, r5 802fa84:	2101      	movs	r1, #1} 802fa86:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}      pcb->flags |= TF_FIN;      return ERR_OK;    }  }  /* no data, no length, flags, copy=1, no optdata */  return tcp_enqueue_flags(pcb, TCP_FIN); 802fa8a:	f7ff bf9f 	b.w	802f9cc <tcp_enqueue_flags>    for (last_unsent = pcb->unsent; last_unsent->next != NULL;         last_unsent = last_unsent->next);    if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) {      /* no SYN/FIN/RST flag in the header, we can add the FIN flag */      TCPH_SET_FLAG(last_unsent->tcphdr, TCP_FIN); 802fa8e:	68e4      	ldr	r4, [r4, #12] 802fa90:	2001      	movs	r0, #1 802fa92:	89a7      	ldrh	r7, [r4, #12] 802fa94:	f7fc feb0 	bl	802c7f8 <lwip_htons> 802fa98:	4338      	orrs	r0, r7 802fa9a:	81a0      	strh	r0, [r4, #12]      pcb->flags |= TF_FIN; 802fa9c:	7fab      	ldrb	r3, [r5, #30] 802fa9e:	f043 0320 	orr.w	r3, r3, #32 802faa2:	77ab      	strb	r3, [r5, #30]      return ERR_OK;    }  }  /* no data, no length, flags, copy=1, no optdata */  return tcp_enqueue_flags(pcb, TCP_FIN);} 802faa4:	4630      	mov	r0, r6 802faa6:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}0802faa8 <tcp_send_empty_ack>: * * @param pcb Protocol control block for the TCP connection to send the ACK */err_ttcp_send_empty_ack(struct tcp_pcb *pcb){ 802faa8:	b537      	push	{r0, r1, r2, r4, r5, lr} 802faaa:	4604      	mov	r4, r0  if (pcb->flags & TF_TIMESTAMP) {    optlen = LWIP_TCP_OPT_LENGTH(TF_SEG_OPTS_TS);  }#endif  p = tcp_output_alloc_header(pcb, optlen, 0, htonl(pcb->snd_nxt)); 802faac:	6d00      	ldr	r0, [r0, #80]	; 0x50 802faae:	f7fc fead 	bl	802c80c <lwip_htonl> 802fab2:	2100      	movs	r1, #0 802fab4:	4602      	mov	r2, r0 802fab6:	4620      	mov	r0, r4 802fab8:	f7ff fdd8 	bl	802f66c <tcp_output_alloc_header.constprop.0>  if (p == NULL) { 802fabc:	4605      	mov	r5, r0 802fabe:	b188      	cbz	r0, 802fae4 <tcp_send_empty_ack+0x3c>  }  tcphdr = (struct tcp_hdr *)p->payload;  LWIP_DEBUGF(TCP_OUTPUT_DEBUG,               ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt));  /* remove ACK flags from the PCB, as we send an empty ACK now */  pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); 802fac0:	7fa3      	ldrb	r3, [r4, #30]#endif#if LWIP_NETIF_HWADDRHINT  ip_output_hinted(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,      IP_PROTO_TCP, &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, 802fac2:	7a62      	ldrb	r2, [r4, #9]  }  tcphdr = (struct tcp_hdr *)p->payload;  LWIP_DEBUGF(TCP_OUTPUT_DEBUG,               ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt));  /* remove ACK flags from the PCB, as we send an empty ACK now */  pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); 802fac4:	f023 0303 	bic.w	r3, r3, #3#endif#if LWIP_NETIF_HWADDRHINT  ip_output_hinted(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,      IP_PROTO_TCP, &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, 802fac8:	9200      	str	r2, [sp, #0] 802faca:	2206      	movs	r2, #6  }  tcphdr = (struct tcp_hdr *)p->payload;  LWIP_DEBUGF(TCP_OUTPUT_DEBUG,               ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt));  /* remove ACK flags from the PCB, as we send an empty ACK now */  pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); 802facc:	77a3      	strb	r3, [r4, #30]#endif#if LWIP_NETIF_HWADDRHINT  ip_output_hinted(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,      IP_PROTO_TCP, &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, 802face:	9201      	str	r2, [sp, #4] 802fad0:	7aa3      	ldrb	r3, [r4, #10] 802fad2:	4621      	mov	r1, r4 802fad4:	1d22      	adds	r2, r4, #4 802fad6:	f001 f8ab 	bl	8030c30 <ip_output>      IP_PROTO_TCP);#endif /* LWIP_NETIF_HWADDRHINT*/  pbuf_free(p); 802fada:	4628      	mov	r0, r5 802fadc:	f7fd ffca 	bl	802da74 <pbuf_free>  return ERR_OK; 802fae0:	2000      	movs	r0, #0 802fae2:	e000      	b.n	802fae6 <tcp_send_empty_ack+0x3e>#endif  p = tcp_output_alloc_header(pcb, optlen, 0, htonl(pcb->snd_nxt));  if (p == NULL) {    LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n"));    return ERR_BUF; 802fae4:	20fe      	movs	r0, #254	; 0xfe      IP_PROTO_TCP);#endif /* LWIP_NETIF_HWADDRHINT*/  pbuf_free(p);  return ERR_OK;} 802fae6:	b240      	sxtb	r0, r0 802fae8:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 802faea:	0000      	movs	r0, r00802faec <tcp_output>:  /* First, check if we are invoked by the TCP input processing     code. If so, we do not output anything. Instead, we rely on the     input processing code to call us when input processing is done     with. */  if (tcp_input_pcb == pcb) { 802faec:	4b8f      	ldr	r3, [pc, #572]	; (802fd2c <tcp_output+0x240>) 802faee:	681b      	ldr	r3, [r3, #0] 802faf0:	4283      	cmp	r3, r0 * @return ERR_OK if data has been sent or nothing to send *         another err_t on error */err_ttcp_output(struct tcp_pcb *pcb){ 802faf2:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 802faf6:	4604      	mov	r4, r0  /* First, check if we are invoked by the TCP input processing     code. If so, we do not output anything. Instead, we rely on the     input processing code to call us when input processing is done     with. */  if (tcp_input_pcb == pcb) { 802faf8:	f000 8113 	beq.w	802fd22 <tcp_output+0x236>    return ERR_OK;  }  wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); 802fafc:	f8b0 304c 	ldrh.w	r3, [r0, #76]	; 0x4c 802fb00:	f8b0 9060 	ldrh.w	r9, [r0, #96]	; 0x60  seg = pcb->unsent; 802fb04:	6ec5      	ldr	r5, [r0, #108]	; 0x6c     with. */  if (tcp_input_pcb == pcb) {    return ERR_OK;  }  wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); 802fb06:	4599      	cmp	r9, r3 802fb08:	bf28      	it	cs 802fb0a:	4699      	movcs	r9, r3   * because the ->unsent queue is empty or because the window does   * not allow it), construct an empty ACK segment and send it.   *   * If data is to be sent, we will just piggyback the ACK (see below).   */  if (pcb->flags & TF_ACK_NOW && 802fb0c:	7f83      	ldrb	r3, [r0, #30] 802fb0e:	f003 0302 	and.w	r3, r3, #2 802fb12:	b2db      	uxtb	r3, r3 802fb14:	b183      	cbz	r3, 802fb38 <tcp_output+0x4c> 802fb16:	b92d      	cbnz	r5, 802fb24 <tcp_output+0x38>     (seg == NULL ||      ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) {     return tcp_send_empty_ack(pcb); 802fb18:	4620      	mov	r0, r4  }#endif /* TCP_OVERSIZE */  pcb->flags &= ~TF_NAGLEMEMERR;  return ERR_OK;} 802fb1a:	b003      	add	sp, #12 802fb1c:	e8bd 4ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}   * If data is to be sent, we will just piggyback the ACK (see below).   */  if (pcb->flags & TF_ACK_NOW &&     (seg == NULL ||      ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) {     return tcp_send_empty_ack(pcb); 802fb20:	f7ff bfc2 	b.w	802faa8 <tcp_send_empty_ack>   *   * If data is to be sent, we will just piggyback the ACK (see below).   */  if (pcb->flags & TF_ACK_NOW &&     (seg == NULL ||      ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) { 802fb24:	68eb      	ldr	r3, [r5, #12] 802fb26:	6858      	ldr	r0, [r3, #4] 802fb28:	f7fc fe72 	bl	802c810 <lwip_ntohl> 802fb2c:	892a      	ldrh	r2, [r5, #8] 802fb2e:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802fb30:	1ad3      	subs	r3, r2, r3 802fb32:	1818      	adds	r0, r3, r0   * not allow it), construct an empty ACK segment and send it.   *   * If data is to be sent, we will just piggyback the ACK (see below).   */  if (pcb->flags & TF_ACK_NOW &&     (seg == NULL || 802fb34:	4548      	cmp	r0, r9 802fb36:	d8ef      	bhi.n	802fb18 <tcp_output+0x2c>      ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) {     return tcp_send_empty_ack(pcb);  }  /* useg should point to last segment on unacked queue */  useg = pcb->unacked; 802fb38:	6f26      	ldr	r6, [r4, #112]	; 0x70  if (useg != NULL) { 802fb3a:	b90e      	cbnz	r6, 802fb40 <tcp_output+0x54> 802fb3c:	e0d1      	b.n	802fce2 <tcp_output+0x1f6>    for (; useg->next != NULL; useg = useg->next); 802fb3e:	461e      	mov	r6, r3 802fb40:	6833      	ldr	r3, [r6, #0] 802fb42:	2b00      	cmp	r3, #0 802fb44:	d1fb      	bne.n	802fb3e <tcp_output+0x52> 802fb46:	e0cc      	b.n	802fce2 <tcp_output+0x1f6>  }#endif /* TCP_CWND_DEBUG */  /* data available and window allows it to be sent? */  while (seg != NULL &&         ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) {    LWIP_ASSERT("RST not expected here!",  802fb48:	68eb      	ldr	r3, [r5, #12] 802fb4a:	8998      	ldrh	r0, [r3, #12] 802fb4c:	f7fc fe59 	bl	802c802 <lwip_ntohs>     * - if tcp_write had a memory error before (prevent delayed ACK timeout) or     * - if FIN was already enqueued for this PCB (SYN is always alone in a segment -     *   either seg->next != NULL or pcb->unacked == NULL;     *   RST is no sent using tcp_write/tcp_output.     */    if((tcp_do_output_nagle(pcb) == 0) && 802fb50:	6f23      	ldr	r3, [r4, #112]	; 0x70 802fb52:	b19b      	cbz	r3, 802fb7c <tcp_output+0x90> 802fb54:	7fa2      	ldrb	r2, [r4, #30] 802fb56:	f012 0f44 	tst.w	r2, #68	; 0x44 802fb5a:	d10f      	bne.n	802fb7c <tcp_output+0x90> 802fb5c:	6ee3      	ldr	r3, [r4, #108]	; 0x6c 802fb5e:	b12b      	cbz	r3, 802fb6c <tcp_output+0x80> 802fb60:	6819      	ldr	r1, [r3, #0] 802fb62:	b959      	cbnz	r1, 802fb7c <tcp_output+0x90> 802fb64:	8919      	ldrh	r1, [r3, #8] 802fb66:	8ee3      	ldrh	r3, [r4, #54]	; 0x36 802fb68:	4299      	cmp	r1, r3 802fb6a:	d207      	bcs.n	802fb7c <tcp_output+0x90> 802fb6c:	f8b4 3066 	ldrh.w	r3, [r4, #102]	; 0x66 802fb70:	b123      	cbz	r3, 802fb7c <tcp_output+0x90> 802fb72:	f8b4 3068 	ldrh.w	r3, [r4, #104]	; 0x68 802fb76:	2b47      	cmp	r3, #71	; 0x47 802fb78:	f240 80ce 	bls.w	802fd18 <tcp_output+0x22c>                            pcb->lastack,                            ntohl(seg->tcphdr->seqno), pcb->lastack, i));    ++i;#endif /* TCP_CWND_DEBUG */    pcb->unsent = seg->next; 802fb7c:	682b      	ldr	r3, [r5, #0] 802fb7e:	66e3      	str	r3, [r4, #108]	; 0x6c    if (pcb->state != SYN_SENT) { 802fb80:	7e23      	ldrb	r3, [r4, #24] 802fb82:	2b02      	cmp	r3, #2 802fb84:	d00c      	beq.n	802fba0 <tcp_output+0xb4>      TCPH_SET_FLAG(seg->tcphdr, TCP_ACK); 802fb86:	68ef      	ldr	r7, [r5, #12] 802fb88:	2010      	movs	r0, #16 802fb8a:	f8b7 b00c 	ldrh.w	fp, [r7, #12] 802fb8e:	f7fc fe33 	bl	802c7f8 <lwip_htons> 802fb92:	ea40 000b 	orr.w	r0, r0, fp 802fb96:	81b8      	strh	r0, [r7, #12]      pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); 802fb98:	7fa3      	ldrb	r3, [r4, #30] 802fb9a:	f023 0303 	bic.w	r3, r3, #3 802fb9e:	77a3      	strb	r3, [r4, #30]  u16_t len;  struct netif *netif;  u32_t *opts;  /** @bug Exclude retransmitted segments from this count. */  snmp_inc_tcpoutsegs(); 802fba0:	f002 fd64 	bl	803266c <snmp_inc_tcpoutsegs>  /* The TCP header has already been constructed, but the ackno and   wnd fields remain. */  seg->tcphdr->ackno = htonl(pcb->rcv_nxt); 802fba4:	6aa0      	ldr	r0, [r4, #40]	; 0x28 802fba6:	68ef      	ldr	r7, [r5, #12] 802fba8:	f7fc fe30 	bl	802c80c <lwip_htonl> 802fbac:	60b8      	str	r0, [r7, #8]  /* advertise our receive window size in this TCP segment */  seg->tcphdr->wnd = htons(pcb->rcv_ann_wnd); 802fbae:	8de0      	ldrh	r0, [r4, #46]	; 0x2e 802fbb0:	68ef      	ldr	r7, [r5, #12] 802fbb2:	f7fc fe21 	bl	802c7f8 <lwip_htons> 802fbb6:	81f8      	strh	r0, [r7, #14]  pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; 802fbb8:	8de2      	ldrh	r2, [r4, #46]	; 0x2e 802fbba:	6aa3      	ldr	r3, [r4, #40]	; 0x28  /* Add any requested options.  NB MSS option is only set on SYN     packets, so ignore it here */  opts = (u32_t *)(void *)(seg->tcphdr + 1); 802fbbc:	68ef      	ldr	r7, [r5, #12]  seg->tcphdr->ackno = htonl(pcb->rcv_nxt);  /* advertise our receive window size in this TCP segment */  seg->tcphdr->wnd = htons(pcb->rcv_ann_wnd);  pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; 802fbbe:	18d3      	adds	r3, r2, r3 802fbc0:	6323      	str	r3, [r4, #48]	; 0x30  /* Add any requested options.  NB MSS option is only set on SYN     packets, so ignore it here */  opts = (u32_t *)(void *)(seg->tcphdr + 1);  if (seg->flags & TF_SEG_OPTS_MSS) { 802fbc2:	7aab      	ldrb	r3, [r5, #10] 802fbc4:	07d8      	lsls	r0, r3, #31 802fbc6:	d509      	bpl.n	802fbdc <tcp_output+0xf0>    u16_t mss;#if TCP_CALCULATE_EFF_SEND_MSS    mss = tcp_eff_send_mss(TCP_MSS, &pcb->remote_ip); 802fbc8:	4641      	mov	r1, r8 802fbca:	f240 50b4 	movw	r0, #1460	; 0x5b4 802fbce:	f7fe fde4 	bl	802e79a <tcp_eff_send_mss>#else /* TCP_CALCULATE_EFF_SEND_MSS */    mss = TCP_MSS;#endif /* TCP_CALCULATE_EFF_SEND_MSS */    *opts = TCP_BUILD_MSS_OPTION(mss); 802fbd2:	f040 7001 	orr.w	r0, r0, #33816576	; 0x2040000 802fbd6:	f7fc fe19 	bl	802c80c <lwip_htonl> 802fbda:	6178      	str	r0, [r7, #20]  }#endif  /* Set retransmission timer running if it is not currently enabled      This must be set before checking the route. */  if (pcb->rtime == -1) { 802fbdc:	f9b4 3034 	ldrsh.w	r3, [r4, #52]	; 0x34 802fbe0:	3301      	adds	r3, #1 802fbe2:	d101      	bne.n	802fbe8 <tcp_output+0xfc>    pcb->rtime = 0; 802fbe4:	2300      	movs	r3, #0 802fbe6:	86a3      	strh	r3, [r4, #52]	; 0x34  }  /* If we don't have a local IP address, we get one by     calling ip_route(). */  if (ip_addr_isany(&(pcb->local_ip))) { 802fbe8:	6823      	ldr	r3, [r4, #0] 802fbea:	b92b      	cbnz	r3, 802fbf8 <tcp_output+0x10c>    netif = ip_route(&(pcb->remote_ip)); 802fbec:	4640      	mov	r0, r8 802fbee:	f000 fecb 	bl	8030988 <ip_route>    if (netif == NULL) { 802fbf2:	b310      	cbz	r0, 802fc3a <tcp_output+0x14e>      return;    }    ip_addr_copy(pcb->local_ip, netif->ip_addr); 802fbf4:	6843      	ldr	r3, [r0, #4] 802fbf6:	6023      	str	r3, [r4, #0]  }  if (pcb->rttest == 0) { 802fbf8:	6ba3      	ldr	r3, [r4, #56]	; 0x38 802fbfa:	b93b      	cbnz	r3, 802fc0c <tcp_output+0x120>    pcb->rttest = tcp_ticks; 802fbfc:	f8da 3000 	ldr.w	r3, [sl] 802fc00:	63a3      	str	r3, [r4, #56]	; 0x38    pcb->rtseq = ntohl(seg->tcphdr->seqno); 802fc02:	68eb      	ldr	r3, [r5, #12] 802fc04:	6858      	ldr	r0, [r3, #4] 802fc06:	f7fc fe03 	bl	802c810 <lwip_ntohl> 802fc0a:	63e0      	str	r0, [r4, #60]	; 0x3c  }  LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n",          htonl(seg->tcphdr->seqno), htonl(seg->tcphdr->seqno) +          seg->len));  len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); 802fc0c:	6868      	ldr	r0, [r5, #4] 802fc0e:	68eb      	ldr	r3, [r5, #12] 802fc10:	6842      	ldr	r2, [r0, #4]  seg->p->len -= len; 802fc12:	8941      	ldrh	r1, [r0, #10]  seg->p->tot_len -= len;  seg->p->payload = seg->tcphdr; 802fc14:	6043      	str	r3, [r0, #4]  }  LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n",          htonl(seg->tcphdr->seqno), htonl(seg->tcphdr->seqno) +          seg->len));  len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); 802fc16:	1a9a      	subs	r2, r3, r2  seg->p->len -= len; 802fc18:	1a89      	subs	r1, r1, r2 802fc1a:	8141      	strh	r1, [r0, #10]  seg->p->tot_len -= len; 802fc1c:	8901      	ldrh	r1, [r0, #8] 802fc1e:	1a8a      	subs	r2, r1, r2 802fc20:	8102      	strh	r2, [r0, #8]  seg->p->payload = seg->tcphdr;  seg->tcphdr->chksum = 0; 802fc22:	2200      	movs	r2, #0 802fc24:	741a      	strb	r2, [r3, #16] 802fc26:	745a      	strb	r2, [r3, #17]#if LWIP_NETIF_HWADDRHINT  ip_output_hinted(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos,      IP_PROTO_TCP, &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, 802fc28:	7a62      	ldrb	r2, [r4, #9] 802fc2a:	7aa3      	ldrb	r3, [r4, #10] 802fc2c:	9200      	str	r2, [sp, #0] 802fc2e:	2206      	movs	r2, #6 802fc30:	9201      	str	r2, [sp, #4] 802fc32:	4621      	mov	r1, r4 802fc34:	4642      	mov	r2, r8 802fc36:	f000 fffb 	bl	8030c30 <ip_output>      TCPH_SET_FLAG(seg->tcphdr, TCP_ACK);      pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);    }    tcp_output_segment(seg, pcb);    snd_nxt = ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); 802fc3a:	68eb      	ldr	r3, [r5, #12] 802fc3c:	6858      	ldr	r0, [r3, #4] 802fc3e:	f7fc fde7 	bl	802c810 <lwip_ntohl> 802fc42:	68ea      	ldr	r2, [r5, #12] 802fc44:	f8b5 b008 	ldrh.w	fp, [r5, #8] 802fc48:	4607      	mov	r7, r0 802fc4a:	8990      	ldrh	r0, [r2, #12] 802fc4c:	f7fc fdd9 	bl	802c802 <lwip_ntohs> 802fc50:	f010 0003 	ands.w	r0, r0, #3 802fc54:	bf18      	it	ne 802fc56:	2001      	movne	r0, #1    if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { 802fc58:	6d22      	ldr	r2, [r4, #80]	; 0x50      TCPH_SET_FLAG(seg->tcphdr, TCP_ACK);      pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW);    }    tcp_output_segment(seg, pcb);    snd_nxt = ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); 802fc5a:	eb0b 0300 	add.w	r3, fp, r0 802fc5e:	19db      	adds	r3, r3, r7    if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { 802fc60:	1ad2      	subs	r2, r2, r3 802fc62:	2a00      	cmp	r2, #0      pcb->snd_nxt = snd_nxt; 802fc64:	bfb8      	it	lt 802fc66:	6523      	strlt	r3, [r4, #80]	; 0x50    }    /* put segment on unacknowledged list if length > 0 */    if (TCP_TCPLEN(seg) > 0) { 802fc68:	68eb      	ldr	r3, [r5, #12] 802fc6a:	892f      	ldrh	r7, [r5, #8] 802fc6c:	8998      	ldrh	r0, [r3, #12] 802fc6e:	f7fc fdc8 	bl	802c802 <lwip_ntohs> 802fc72:	f010 0003 	ands.w	r0, r0, #3 802fc76:	bf18      	it	ne 802fc78:	2001      	movne	r0, #1 802fc7a:	1838      	adds	r0, r7, r0 802fc7c:	b360      	cbz	r0, 802fcd8 <tcp_output+0x1ec>      seg->next = NULL; 802fc7e:	2300      	movs	r3, #0 802fc80:	602b      	str	r3, [r5, #0]      /* unacked list is empty? */      if (pcb->unacked == NULL) { 802fc82:	6f23      	ldr	r3, [r4, #112]	; 0x70 802fc84:	b90b      	cbnz	r3, 802fc8a <tcp_output+0x19e>        pcb->unacked = seg; 802fc86:	6725      	str	r5, [r4, #112]	; 0x70 802fc88:	e024      	b.n	802fcd4 <tcp_output+0x1e8>      /* unacked list is not empty? */      } else {        /* In the case of fast retransmit, the packet should not go to the tail         * of the unacked queue, but rather somewhere before it. We need to check for         * this case. -STJ Jul 27, 2004 */        if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))) { 802fc8a:	68eb      	ldr	r3, [r5, #12] 802fc8c:	6858      	ldr	r0, [r3, #4] 802fc8e:	f7fc fdbf 	bl	802c810 <lwip_ntohl> 802fc92:	68f3      	ldr	r3, [r6, #12] 802fc94:	4607      	mov	r7, r0 802fc96:	6858      	ldr	r0, [r3, #4] 802fc98:	f7fc fdba 	bl	802c810 <lwip_ntohl> 802fc9c:	1a38      	subs	r0, r7, r0 802fc9e:	2800      	cmp	r0, #0 802fca0:	da17      	bge.n	802fcd2 <tcp_output+0x1e6>          /* add segment to before tail of unacked list, keeping the list sorted */          struct tcp_seg **cur_seg = &(pcb->unacked); 802fca2:	f104 0770 	add.w	r7, r4, #112	; 0x70          while (*cur_seg && 802fca6:	e000      	b.n	802fcaa <tcp_output+0x1be>            TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) {              cur_seg = &((*cur_seg)->next ); 802fca8:	683f      	ldr	r7, [r7, #0]         * of the unacked queue, but rather somewhere before it. We need to check for         * this case. -STJ Jul 27, 2004 */        if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))) {          /* add segment to before tail of unacked list, keeping the list sorted */          struct tcp_seg **cur_seg = &(pcb->unacked);          while (*cur_seg && 802fcaa:	683b      	ldr	r3, [r7, #0] 802fcac:	b91b      	cbnz	r3, 802fcb6 <tcp_output+0x1ca>            TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) {              cur_seg = &((*cur_seg)->next );          }          seg->next = (*cur_seg); 802fcae:	683b      	ldr	r3, [r7, #0] 802fcb0:	602b      	str	r3, [r5, #0]          (*cur_seg) = seg; 802fcb2:	603d      	str	r5, [r7, #0] 802fcb4:	e013      	b.n	802fcde <tcp_output+0x1f2>         * this case. -STJ Jul 27, 2004 */        if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))) {          /* add segment to before tail of unacked list, keeping the list sorted */          struct tcp_seg **cur_seg = &(pcb->unacked);          while (*cur_seg &&            TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { 802fcb6:	68db      	ldr	r3, [r3, #12] 802fcb8:	6858      	ldr	r0, [r3, #4] 802fcba:	f7fc fda9 	bl	802c810 <lwip_ntohl> 802fcbe:	68eb      	ldr	r3, [r5, #12] 802fcc0:	4683      	mov	fp, r0 802fcc2:	6858      	ldr	r0, [r3, #4] 802fcc4:	f7fc fda4 	bl	802c810 <lwip_ntohl> 802fcc8:	ebc0 000b 	rsb	r0, r0, fp         * of the unacked queue, but rather somewhere before it. We need to check for         * this case. -STJ Jul 27, 2004 */        if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))) {          /* add segment to before tail of unacked list, keeping the list sorted */          struct tcp_seg **cur_seg = &(pcb->unacked);          while (*cur_seg && 802fccc:	2800      	cmp	r0, #0 802fcce:	dbeb      	blt.n	802fca8 <tcp_output+0x1bc> 802fcd0:	e7ed      	b.n	802fcae <tcp_output+0x1c2>          }          seg->next = (*cur_seg);          (*cur_seg) = seg;        } else {          /* add segment to tail of unacked list */          useg->next = seg; 802fcd2:	6035      	str	r5, [r6, #0] 802fcd4:	462e      	mov	r6, r5 802fcd6:	e002      	b.n	802fcde <tcp_output+0x1f2>          useg = useg->next;        }      }    /* do not queue empty segments on the unacked list */    } else {      tcp_seg_free(seg); 802fcd8:	4628      	mov	r0, r5 802fcda:	f7fe f978 	bl	802dfce <tcp_seg_free>    }    seg = pcb->unsent; 802fcde:	6ee5      	ldr	r5, [r4, #108]	; 0x6c 802fce0:	e003      	b.n	802fcea <tcp_output+0x1fe>    }    ip_addr_copy(pcb->local_ip, netif->ip_addr);  }  if (pcb->rttest == 0) {    pcb->rttest = tcp_ticks; 802fce2:	f8df a04c 	ldr.w	sl, [pc, #76]	; 802fd30 <tcp_output+0x244>     packets, so ignore it here */  opts = (u32_t *)(void *)(seg->tcphdr + 1);  if (seg->flags & TF_SEG_OPTS_MSS) {    u16_t mss;#if TCP_CALCULATE_EFF_SEND_MSS    mss = tcp_eff_send_mss(TCP_MSS, &pcb->remote_ip); 802fce6:	f104 0804 	add.w	r8, r4, #4                 ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len,                 ntohl(seg->tcphdr->seqno), pcb->lastack));  }#endif /* TCP_CWND_DEBUG */  /* data available and window allows it to be sent? */  while (seg != NULL && 802fcea:	b915      	cbnz	r5, 802fcf2 <tcp_output+0x206>      tcp_seg_free(seg);    }    seg = pcb->unsent;  }#if TCP_OVERSIZE  if (pcb->unsent == NULL) { 802fcec:	6ee3      	ldr	r3, [r4, #108]	; 0x6c 802fcee:	b973      	cbnz	r3, 802fd0e <tcp_output+0x222> 802fcf0:	e00b      	b.n	802fd0a <tcp_output+0x21e>                 ntohl(seg->tcphdr->seqno), pcb->lastack));  }#endif /* TCP_CWND_DEBUG */  /* data available and window allows it to be sent? */  while (seg != NULL &&         ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { 802fcf2:	68eb      	ldr	r3, [r5, #12] 802fcf4:	6858      	ldr	r0, [r3, #4] 802fcf6:	f7fc fd8b 	bl	802c810 <lwip_ntohl> 802fcfa:	892a      	ldrh	r2, [r5, #8] 802fcfc:	6ca3      	ldr	r3, [r4, #72]	; 0x48 802fcfe:	1ad3      	subs	r3, r2, r3 802fd00:	1818      	adds	r0, r3, r0                 ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len,                 ntohl(seg->tcphdr->seqno), pcb->lastack));  }#endif /* TCP_CWND_DEBUG */  /* data available and window allows it to be sent? */  while (seg != NULL && 802fd02:	4548      	cmp	r0, r9 802fd04:	f67f af20 	bls.w	802fb48 <tcp_output+0x5c> 802fd08:	e7f0      	b.n	802fcec <tcp_output+0x200>    seg = pcb->unsent;  }#if TCP_OVERSIZE  if (pcb->unsent == NULL) {    /* last unsent has been removed, reset unsent_oversize */    pcb->unsent_oversize = 0; 802fd0a:	f8a4 306a 	strh.w	r3, [r4, #106]	; 0x6a  }#endif /* TCP_OVERSIZE */  pcb->flags &= ~TF_NAGLEMEMERR; 802fd0e:	7fa3      	ldrb	r3, [r4, #30] 802fd10:	f003 037f 	and.w	r3, r3, #127	; 0x7f 802fd14:	77a3      	strb	r3, [r4, #30]  return ERR_OK; 802fd16:	e004      	b.n	802fd22 <tcp_output+0x236>     * - if tcp_write had a memory error before (prevent delayed ACK timeout) or     * - if FIN was already enqueued for this PCB (SYN is always alone in a segment -     *   either seg->next != NULL or pcb->unacked == NULL;     *   RST is no sent using tcp_write/tcp_output.     */    if((tcp_do_output_nagle(pcb) == 0) && 802fd18:	f012 0fa0 	tst.w	r2, #160	; 0xa0 802fd1c:	f47f af2e 	bne.w	802fb7c <tcp_output+0x90> 802fd20:	e7e4      	b.n	802fcec <tcp_output+0x200>  }#endif /* TCP_OVERSIZE */  pcb->flags &= ~TF_NAGLEMEMERR;  return ERR_OK;} 802fd22:	2000      	movs	r0, #0 802fd24:	b003      	add	sp, #12 802fd26:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 802fd2a:	bf00      	nop 802fd2c:	20011094 	.word	0x20011094 802fd30:	20011080 	.word	0x200110800802fd34 <tcp_rst>: */voidtcp_rst(u32_t seqno, u32_t ackno,  ip_addr_t *local_ip, ip_addr_t *remote_ip,  u16_t local_port, u16_t remote_port){ 802fd34:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr} 802fd38:	4681      	mov	r9, r0 802fd3a:	460d      	mov	r5, r1 802fd3c:	4690      	mov	r8, r2  struct pbuf *p;  struct tcp_hdr *tcphdr;  p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); 802fd3e:	2001      	movs	r0, #1 802fd40:	2114      	movs	r1, #20 802fd42:	2200      	movs	r2, #0 */voidtcp_rst(u32_t seqno, u32_t ackno,  ip_addr_t *local_ip, ip_addr_t *remote_ip,  u16_t local_port, u16_t remote_port){ 802fd44:	461f      	mov	r7, r3 802fd46:	f8bd b030 	ldrh.w	fp, [sp, #48]	; 0x30 802fd4a:	f8bd a034 	ldrh.w	sl, [sp, #52]	; 0x34  struct pbuf *p;  struct tcp_hdr *tcphdr;  p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); 802fd4e:	f7fd fede 	bl	802db0e <pbuf_alloc>  if (p == NULL) { 802fd52:	4606      	mov	r6, r0 802fd54:	2800      	cmp	r0, #0 802fd56:	d030      	beq.n	802fdba <tcp_rst+0x86>      return;  }  LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",              (p->len >= sizeof(struct tcp_hdr)));  tcphdr = (struct tcp_hdr *)p->payload; 802fd58:	6844      	ldr	r4, [r0, #4]  tcphdr->src = htons(local_port); 802fd5a:	4658      	mov	r0, fp 802fd5c:	f7fc fd4c 	bl	802c7f8 <lwip_htons> 802fd60:	8020      	strh	r0, [r4, #0]  tcphdr->dest = htons(remote_port); 802fd62:	4650      	mov	r0, sl 802fd64:	f7fc fd48 	bl	802c7f8 <lwip_htons> 802fd68:	8060      	strh	r0, [r4, #2]  tcphdr->seqno = htonl(seqno); 802fd6a:	4648      	mov	r0, r9 802fd6c:	f7fc fd4e 	bl	802c80c <lwip_htonl> 802fd70:	6060      	str	r0, [r4, #4]  tcphdr->ackno = htonl(ackno); 802fd72:	4628      	mov	r0, r5 802fd74:	f7fc fd4a 	bl	802c80c <lwip_htonl> 802fd78:	60a0      	str	r0, [r4, #8]  TCPH_HDRLEN_FLAGS_SET(tcphdr, TCP_HLEN/4, TCP_RST | TCP_ACK); 802fd7a:	f245 0014 	movw	r0, #20500	; 0x5014 802fd7e:	f7fc fd3b 	bl	802c7f8 <lwip_htons>  tcphdr->wnd = PP_HTONS(TCP_WND); 802fd82:	2316      	movs	r3, #22 802fd84:	2500      	movs	r5, #0 802fd86:	73a3      	strb	r3, [r4, #14] 802fd88:	f06f 032f 	mvn.w	r3, #47	; 0x2f  tcphdr = (struct tcp_hdr *)p->payload;  tcphdr->src = htons(local_port);  tcphdr->dest = htons(remote_port);  tcphdr->seqno = htonl(seqno);  tcphdr->ackno = htonl(ackno);  TCPH_HDRLEN_FLAGS_SET(tcphdr, TCP_HLEN/4, TCP_RST | TCP_ACK); 802fd8c:	81a0      	strh	r0, [r4, #12]  tcphdr->wnd = PP_HTONS(TCP_WND); 802fd8e:	73e3      	strb	r3, [r4, #15]  tcphdr->chksum = 0; 802fd90:	7425      	strb	r5, [r4, #16] 802fd92:	7465      	strb	r5, [r4, #17]  tcphdr->urgp = 0; 802fd94:	74a5      	strb	r5, [r4, #18] 802fd96:	74e5      	strb	r5, [r4, #19]#if CHECKSUM_GEN_TCP  tcphdr->chksum = inet_chksum_pseudo(p, local_ip, remote_ip,              IP_PROTO_TCP, p->tot_len);#endif  TCP_STATS_INC(tcp.xmit);  snmp_inc_tcpoutrsts(); 802fd98:	f002 fc80 	bl	803269c <snmp_inc_tcpoutrsts>   /* Send output with hardcoded TTL since we have no access to the pcb */  ip_output(p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP); 802fd9c:	2306      	movs	r3, #6 802fd9e:	9301      	str	r3, [sp, #4] 802fda0:	9500      	str	r5, [sp, #0] 802fda2:	4630      	mov	r0, r6 802fda4:	4641      	mov	r1, r8 802fda6:	463a      	mov	r2, r7 802fda8:	23ff      	movs	r3, #255	; 0xff 802fdaa:	f000 ff41 	bl	8030c30 <ip_output>  pbuf_free(p); 802fdae:	4630      	mov	r0, r6  LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno));} 802fdb0:	b003      	add	sp, #12 802fdb2:	e8bd 4ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}#endif  TCP_STATS_INC(tcp.xmit);  snmp_inc_tcpoutrsts();   /* Send output with hardcoded TTL since we have no access to the pcb */  ip_output(p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP);  pbuf_free(p); 802fdb6:	f7fd be5d 	b.w	802da74 <pbuf_free>  LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno));} 802fdba:	b003      	add	sp, #12 802fdbc:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}0802fdc0 <tcp_rexmit_rto>:voidtcp_rexmit_rto(struct tcp_pcb *pcb){  struct tcp_seg *seg;  if (pcb->unacked == NULL) { 802fdc0:	6f02      	ldr	r2, [r0, #112]	; 0x70 * * @param pcb the tcp_pcb for which to re-enqueue all unacked segments */voidtcp_rexmit_rto(struct tcp_pcb *pcb){ 802fdc2:	b510      	push	{r4, lr}  struct tcp_seg *seg;  if (pcb->unacked == NULL) { 802fdc4:	b19a      	cbz	r2, 802fdee <tcp_rexmit_rto+0x2e> 802fdc6:	4611      	mov	r1, r2 802fdc8:	e000      	b.n	802fdcc <tcp_rexmit_rto+0xc>    return;  }  /* Move all unacked segments to the head of the unsent queue */  for (seg = pcb->unacked; seg->next != NULL; seg = seg->next); 802fdca:	4619      	mov	r1, r3 802fdcc:	680b      	ldr	r3, [r1, #0] 802fdce:	2b00      	cmp	r3, #0 802fdd0:	d1fb      	bne.n	802fdca <tcp_rexmit_rto+0xa>  /* concatenate unsent queue after unacked queue */  seg->next = pcb->unsent; 802fdd2:	6ec4      	ldr	r4, [r0, #108]	; 0x6c 802fdd4:	600c      	str	r4, [r1, #0]  /* unsent queue is the concatenated queue (of unacked, unsent) */  pcb->unsent = pcb->unacked; 802fdd6:	66c2      	str	r2, [r0, #108]	; 0x6c  /* unacked queue is now empty */  pcb->unacked = NULL;  /* last unsent hasn't changed, no need to reset unsent_oversize */  /* increment number of retransmissions */  ++pcb->nrtx; 802fdd8:	f890 2046 	ldrb.w	r2, [r0, #70]	; 0x46  /* concatenate unsent queue after unacked queue */  seg->next = pcb->unsent;  /* unsent queue is the concatenated queue (of unacked, unsent) */  pcb->unsent = pcb->unacked;  /* unacked queue is now empty */  pcb->unacked = NULL; 802fddc:	6703      	str	r3, [r0, #112]	; 0x70  /* last unsent hasn't changed, no need to reset unsent_oversize */  /* increment number of retransmissions */  ++pcb->nrtx; 802fdde:	3201      	adds	r2, #1 802fde0:	f880 2046 	strb.w	r2, [r0, #70]	; 0x46  /* Don't take any RTT measurements after retransmitting. */  pcb->rttest = 0; 802fde4:	6383      	str	r3, [r0, #56]	; 0x38  /* Do the actual retransmission */  tcp_output(pcb);} 802fde6:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  /* Don't take any RTT measurements after retransmitting. */  pcb->rttest = 0;  /* Do the actual retransmission */  tcp_output(pcb); 802fdea:	f7ff be7f 	b.w	802faec <tcp_output> 802fdee:	bd10      	pop	{r4, pc}0802fdf0 <tcp_rexmit>: * * @param pcb the tcp_pcb for which to retransmit the first unacked segment */voidtcp_rexmit(struct tcp_pcb *pcb){ 802fdf0:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  struct tcp_seg *seg;  struct tcp_seg **cur_seg;  if (pcb->unacked == NULL) { 802fdf2:	6f05      	ldr	r5, [r0, #112]	; 0x70 * * @param pcb the tcp_pcb for which to retransmit the first unacked segment */voidtcp_rexmit(struct tcp_pcb *pcb){ 802fdf4:	4604      	mov	r4, r0  struct tcp_seg *seg;  struct tcp_seg **cur_seg;  if (pcb->unacked == NULL) { 802fdf6:	2d00      	cmp	r5, #0 802fdf8:	d027      	beq.n	802fe4a <tcp_rexmit+0x5a>  }  /* Move the first unacked segment to the unsent queue */  /* Keep the unsent queue sorted. */  seg = pcb->unacked;  pcb->unacked = seg->next; 802fdfa:	682b      	ldr	r3, [r5, #0]  cur_seg = &(pcb->unsent); 802fdfc:	f100 066c 	add.w	r6, r0, #108	; 0x6c  }  /* Move the first unacked segment to the unsent queue */  /* Keep the unsent queue sorted. */  seg = pcb->unacked;  pcb->unacked = seg->next; 802fe00:	6703      	str	r3, [r0, #112]	; 0x70  cur_seg = &(pcb->unsent);  while (*cur_seg && 802fe02:	e000      	b.n	802fe06 <tcp_rexmit+0x16>    TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) {      cur_seg = &((*cur_seg)->next ); 802fe04:	6836      	ldr	r6, [r6, #0]  /* Keep the unsent queue sorted. */  seg = pcb->unacked;  pcb->unacked = seg->next;  cur_seg = &(pcb->unsent);  while (*cur_seg && 802fe06:	6833      	ldr	r3, [r6, #0] 802fe08:	b92b      	cbnz	r3, 802fe16 <tcp_rexmit+0x26>    TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) {      cur_seg = &((*cur_seg)->next );  }  seg->next = *cur_seg; 802fe0a:	6833      	ldr	r3, [r6, #0] 802fe0c:	602b      	str	r3, [r5, #0]  *cur_seg = seg; 802fe0e:	6035      	str	r5, [r6, #0]#if TCP_OVERSIZE  if (seg->next == NULL) { 802fe10:	682b      	ldr	r3, [r5, #0] 802fe12:	b97b      	cbnz	r3, 802fe34 <tcp_rexmit+0x44> 802fe14:	e00c      	b.n	802fe30 <tcp_rexmit+0x40>  seg = pcb->unacked;  pcb->unacked = seg->next;  cur_seg = &(pcb->unsent);  while (*cur_seg &&    TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { 802fe16:	68db      	ldr	r3, [r3, #12] 802fe18:	6858      	ldr	r0, [r3, #4] 802fe1a:	f7fc fcf9 	bl	802c810 <lwip_ntohl> 802fe1e:	68eb      	ldr	r3, [r5, #12] 802fe20:	4607      	mov	r7, r0 802fe22:	6858      	ldr	r0, [r3, #4] 802fe24:	f7fc fcf4 	bl	802c810 <lwip_ntohl> 802fe28:	1a38      	subs	r0, r7, r0  /* Keep the unsent queue sorted. */  seg = pcb->unacked;  pcb->unacked = seg->next;  cur_seg = &(pcb->unsent);  while (*cur_seg && 802fe2a:	2800      	cmp	r0, #0 802fe2c:	dbea      	blt.n	802fe04 <tcp_rexmit+0x14> 802fe2e:	e7ec      	b.n	802fe0a <tcp_rexmit+0x1a>  seg->next = *cur_seg;  *cur_seg = seg;#if TCP_OVERSIZE  if (seg->next == NULL) {    /* the retransmitted segment is last in unsent, so reset unsent_oversize */    pcb->unsent_oversize = 0; 802fe30:	f8a4 306a 	strh.w	r3, [r4, #106]	; 0x6a  }#endif /* TCP_OVERSIZE */  ++pcb->nrtx; 802fe34:	f894 3046 	ldrb.w	r3, [r4, #70]	; 0x46 802fe38:	3301      	adds	r3, #1 802fe3a:	f884 3046 	strb.w	r3, [r4, #70]	; 0x46  /* Don't take any rtt measurements after retransmitting. */  pcb->rttest = 0; 802fe3e:	2300      	movs	r3, #0 802fe40:	63a3      	str	r3, [r4, #56]	; 0x38  /* Do the actual retransmission. */  snmp_inc_tcpretranssegs();  /* No need to call tcp_output: we are always called from tcp_input()     and thus tcp_output directly returns. */} 802fe42:	e8bd 40f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, lr}  /* Don't take any rtt measurements after retransmitting. */  pcb->rttest = 0;  /* Do the actual retransmission. */  snmp_inc_tcpretranssegs(); 802fe46:	f002 bc19 	b.w	803267c <snmp_inc_tcpretranssegs> 802fe4a:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}0802fe4c <tcp_rexmit_fast>: * @param pcb the tcp_pcb for which to retransmit the first unacked segment */void tcp_rexmit_fast(struct tcp_pcb *pcb){  if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { 802fe4c:	6f03      	ldr	r3, [r0, #112]	; 0x70 * * @param pcb the tcp_pcb for which to retransmit the first unacked segment */void tcp_rexmit_fast(struct tcp_pcb *pcb){ 802fe4e:	b510      	push	{r4, lr} 802fe50:	4604      	mov	r4, r0  if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { 802fe52:	b333      	cbz	r3, 802fea2 <tcp_rexmit_fast+0x56> 802fe54:	7f83      	ldrb	r3, [r0, #30] 802fe56:	f003 0304 	and.w	r3, r3, #4 802fe5a:	b2db      	uxtb	r3, r3 802fe5c:	bb0b      	cbnz	r3, 802fea2 <tcp_rexmit_fast+0x56>    LWIP_DEBUGF(TCP_FR_DEBUG,                 ("tcp_receive: dupacks %"U16_F" (%"U32_F                 "), fast retransmit %"U32_F"\n",                 (u16_t)pcb->dupacks, pcb->lastack,                 ntohl(pcb->unacked->tcphdr->seqno)));    tcp_rexmit(pcb); 802fe5e:	f7ff ffc7 	bl	802fdf0 <tcp_rexmit>    /* Set ssthresh to half of the minimum of the current     * cwnd and the advertised window */    if (pcb->cwnd > pcb->snd_wnd) { 802fe62:	f8b4 304c 	ldrh.w	r3, [r4, #76]	; 0x4c 802fe66:	f8b4 2060 	ldrh.w	r2, [r4, #96]	; 0x60 802fe6a:	4293      	cmp	r3, r2 802fe6c:	d903      	bls.n	802fe76 <tcp_rexmit_fast+0x2a>      pcb->ssthresh = pcb->snd_wnd / 2; 802fe6e:	0852      	lsrs	r2, r2, #1 802fe70:	f8a4 204e 	strh.w	r2, [r4, #78]	; 0x4e 802fe74:	e002      	b.n	802fe7c <tcp_rexmit_fast+0x30>    } else {      pcb->ssthresh = pcb->cwnd / 2; 802fe76:	085b      	lsrs	r3, r3, #1 802fe78:	f8a4 304e 	strh.w	r3, [r4, #78]	; 0x4e    }        /* The minimum value for ssthresh should be 2 MSS */    if (pcb->ssthresh < 2*pcb->mss) { 802fe7c:	8ee3      	ldrh	r3, [r4, #54]	; 0x36 802fe7e:	f8b4 104e 	ldrh.w	r1, [r4, #78]	; 0x4e 802fe82:	005a      	lsls	r2, r3, #1 802fe84:	4291      	cmp	r1, r2      LWIP_DEBUGF(TCP_FR_DEBUG,                   ("tcp_receive: The minimum value for ssthresh %"U16_F                   " should be min 2 mss %"U16_F"...\n",                   pcb->ssthresh, 2*pcb->mss));      pcb->ssthresh = 2*pcb->mss; 802fe86:	bfb8      	it	lt 802fe88:	f8a4 204e 	strhlt.w	r2, [r4, #78]	; 0x4e    }        pcb->cwnd = pcb->ssthresh + 3 * pcb->mss; 802fe8c:	f8b4 204e 	ldrh.w	r2, [r4, #78]	; 0x4e 802fe90:	2103      	movs	r1, #3 802fe92:	fb01 2303 	mla	r3, r1, r3, r2 802fe96:	f8a4 304c 	strh.w	r3, [r4, #76]	; 0x4c    pcb->flags |= TF_INFR; 802fe9a:	7fa3      	ldrb	r3, [r4, #30] 802fe9c:	f043 0304 	orr.w	r3, r3, #4 802fea0:	77a3      	strb	r3, [r4, #30] 802fea2:	bd10      	pop	{r4, pc}0802fea4 <tcp_keepalive>: * * @param pcb the tcp_pcb for which to send a keepalive packet */voidtcp_keepalive(struct tcp_pcb *pcb){ 802fea4:	b537      	push	{r0, r1, r2, r4, r5, lr} 802fea6:	4604      	mov	r4, r0                          ip4_addr3_16(&pcb->remote_ip), ip4_addr4_16(&pcb->remote_ip)));  LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F"   pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",                           tcp_ticks, pcb->tmr, pcb->keep_cnt_sent));     p = tcp_output_alloc_header(pcb, 0, 0, htonl(pcb->snd_nxt - 1)); 802fea8:	6d00      	ldr	r0, [r0, #80]	; 0x50 802feaa:	3801      	subs	r0, #1 802feac:	f7fc fcae 	bl	802c80c <lwip_htonl> 802feb0:	2100      	movs	r1, #0 802feb2:	4602      	mov	r2, r0 802feb4:	4620      	mov	r0, r4 802feb6:	f7ff fbd9 	bl	802f66c <tcp_output_alloc_header.constprop.0>  if(p == NULL) { 802feba:	4605      	mov	r5, r0 802febc:	b178      	cbz	r0, 802fede <tcp_keepalive+0x3a>  /* Send output to IP */#if LWIP_NETIF_HWADDRHINT  ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP,    &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); 802febe:	2200      	movs	r2, #0 802fec0:	f04f 0e06 	mov.w	lr, #6 802fec4:	e88d 4004 	stmia.w	sp, {r2, lr} 802fec8:	7aa3      	ldrb	r3, [r4, #10] 802feca:	4621      	mov	r1, r4 802fecc:	1d22      	adds	r2, r4, #4 802fece:	f000 feaf 	bl	8030c30 <ip_output>#endif /* LWIP_NETIF_HWADDRHINT*/  pbuf_free(p); 802fed2:	4628      	mov	r0, r5  LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F".\n",                          pcb->snd_nxt - 1, pcb->rcv_nxt));} 802fed4:	b003      	add	sp, #12 802fed6:	e8bd 4030 	ldmia.w	sp!, {r4, r5, lr}    &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP);#endif /* LWIP_NETIF_HWADDRHINT*/  pbuf_free(p); 802feda:	f7fd bdcb 	b.w	802da74 <pbuf_free>  LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F".\n",                          pcb->snd_nxt - 1, pcb->rcv_nxt));} 802fede:	b003      	add	sp, #12 802fee0:	bd30      	pop	{r4, r5, pc}0802fee2 <tcp_zero_window_probe>: * * @param pcb the tcp_pcb for which to send a zero-window probe packet */voidtcp_zero_window_probe(struct tcp_pcb *pcb){ 802fee2:	e92d 41f3 	stmdb	sp!, {r0, r1, r4, r5, r6, r7, r8, lr}  LWIP_DEBUGF(TCP_DEBUG,               ("tcp_zero_window_probe: tcp_ticks %"U32_F               "   pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",                tcp_ticks, pcb->tmr, pcb->keep_cnt_sent));  seg = pcb->unacked; 802fee6:	6f04      	ldr	r4, [r0, #112]	; 0x70 * * @param pcb the tcp_pcb for which to send a zero-window probe packet */voidtcp_zero_window_probe(struct tcp_pcb *pcb){ 802fee8:	4605      	mov	r5, r0               "   pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",                tcp_ticks, pcb->tmr, pcb->keep_cnt_sent));  seg = pcb->unacked;  if(seg == NULL) { 802feea:	b914      	cbnz	r4, 802fef2 <tcp_zero_window_probe+0x10>    seg = pcb->unsent; 802feec:	6ec4      	ldr	r4, [r0, #108]	; 0x6c  }  if(seg == NULL) { 802feee:	2c00      	cmp	r4, #0 802fef0:	d042      	beq.n	802ff78 <tcp_zero_window_probe+0x96>    return;  }  is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); 802fef2:	68e3      	ldr	r3, [r4, #12] 802fef4:	8998      	ldrh	r0, [r3, #12] 802fef6:	f7fc fc84 	bl	802c802 <lwip_ntohs> 802fefa:	f010 0001 	ands.w	r0, r0, #1 802fefe:	d005      	beq.n	802ff0c <tcp_zero_window_probe+0x2a> 802ff00:	8921      	ldrh	r1, [r4, #8] 802ff02:	f1d1 0101 	rsbs	r1, r1, #1 802ff06:	bf38      	it	cc 802ff08:	2100      	movcc	r1, #0 802ff0a:	e000      	b.n	802ff0e <tcp_zero_window_probe+0x2c> 802ff0c:	4601      	mov	r1, r0  /* we want to send one seqno: either FIN or data (no options) */  len = is_fin ? 0 : 1;  p = tcp_output_alloc_header(pcb, 0, len, seg->tcphdr->seqno); 802ff0e:	68e3      	ldr	r3, [r4, #12]  }  if(seg == NULL) {    return;  }  is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); 802ff10:	fa5f f881 	uxtb.w	r8, r1  /* we want to send one seqno: either FIN or data (no options) */  len = is_fin ? 0 : 1;  p = tcp_output_alloc_header(pcb, 0, len, seg->tcphdr->seqno); 802ff14:	4628      	mov	r0, r5 802ff16:	f081 0101 	eor.w	r1, r1, #1 802ff1a:	685a      	ldr	r2, [r3, #4] 802ff1c:	f7ff fba6 	bl	802f66c <tcp_output_alloc_header.constprop.0>  if(p == NULL) { 802ff20:	4606      	mov	r6, r0 802ff22:	2800      	cmp	r0, #0 802ff24:	d028      	beq.n	802ff78 <tcp_zero_window_probe+0x96>    LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n"));    return;  }  tcphdr = (struct tcp_hdr *)p->payload; 802ff26:	6847      	ldr	r7, [r0, #4]  if (is_fin) { 802ff28:	f1b8 0f00 	cmp.w	r8, #0 802ff2c:	d009      	beq.n	802ff42 <tcp_zero_window_probe+0x60>    /* FIN segment, no data */    TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN); 802ff2e:	89bc      	ldrh	r4, [r7, #12] 802ff30:	2011      	movs	r0, #17 802ff32:	f7fc fc61 	bl	802c7f8 <lwip_htons> 802ff36:	f424 547c 	bic.w	r4, r4, #16128	; 0x3f00 802ff3a:	b2a4      	uxth	r4, r4 802ff3c:	4320      	orrs	r0, r4 802ff3e:	81b8      	strh	r0, [r7, #12] 802ff40:	e009      	b.n	802ff56 <tcp_zero_window_probe+0x74>    /* Data segment, copy in one byte from the head of the unacked queue */    char *d = ((char *)p->payload + TCP_HLEN);    /* Depending on whether the segment has already been sent (unacked) or not       (unsent), seg->p->payload points to the IP header or TCP header.       Ensure we copy the first TCP data byte: */    pbuf_copy_partial(seg->p, d, 1, seg->p->tot_len - seg->len); 802ff42:	6860      	ldr	r0, [r4, #4] 802ff44:	8923      	ldrh	r3, [r4, #8] 802ff46:	8902      	ldrh	r2, [r0, #8] 802ff48:	1ad3      	subs	r3, r2, r3 802ff4a:	f107 0114 	add.w	r1, r7, #20 802ff4e:	2201      	movs	r2, #1 802ff50:	b29b      	uxth	r3, r3 802ff52:	f7fd fedd 	bl	802dd10 <pbuf_copy_partial>  /* Send output to IP */#if LWIP_NETIF_HWADDRHINT  ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP,    &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); 802ff56:	2200      	movs	r2, #0 802ff58:	f04f 0c06 	mov.w	ip, #6 802ff5c:	e88d 1004 	stmia.w	sp, {r2, ip} 802ff60:	7aab      	ldrb	r3, [r5, #10] 802ff62:	4630      	mov	r0, r6 802ff64:	4629      	mov	r1, r5 802ff66:	1d2a      	adds	r2, r5, #4 802ff68:	f000 fe62 	bl	8030c30 <ip_output>#endif /* LWIP_NETIF_HWADDRHINT*/  pbuf_free(p); 802ff6c:	4630      	mov	r0, r6  LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F                          " ackno %"U32_F".\n",                          pcb->snd_nxt - 1, pcb->rcv_nxt));} 802ff6e:	b002      	add	sp, #8 802ff70:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}    &(pcb->addr_hint));#else /* LWIP_NETIF_HWADDRHINT*/  ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP);#endif /* LWIP_NETIF_HWADDRHINT*/  pbuf_free(p); 802ff74:	f7fd bd7e 	b.w	802da74 <pbuf_free>  LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F                          " ackno %"U32_F".\n",                          pcb->snd_nxt - 1, pcb->rcv_nxt));} 802ff78:	b002      	add	sp, #8 802ff7a:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 802ff7e:	0000      	movs	r0, r00802ff80 <sys_timeout>:sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name)#else /* LWIP_DEBUG_TIMERNAMES */voidsys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg)#endif /* LWIP_DEBUG_TIMERNAMES */{ 802ff80:	b570      	push	{r4, r5, r6, lr} 802ff82:	4604      	mov	r4, r0  struct sys_timeo *timeout, *t;  timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT); 802ff84:	2009      	movs	r0, #9sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name)#else /* LWIP_DEBUG_TIMERNAMES */voidsys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg)#endif /* LWIP_DEBUG_TIMERNAMES */{ 802ff86:	460d      	mov	r5, r1 802ff88:	4616      	mov	r6, r2  struct sys_timeo *timeout, *t;  timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT); 802ff8a:	f7fd fc53 	bl	802d834 <memp_malloc>  if (timeout == NULL) { 802ff8e:	4603      	mov	r3, r0 802ff90:	b308      	cbz	r0, 802ffd6 <sys_timeout+0x56>  timeout->handler_name = handler_name;  LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p msecs=%"U32_F" handler=%s arg=%p\n",    (void *)timeout, msecs, handler_name, (void *)arg));#endif /* LWIP_DEBUG_TIMERNAMES */  if (next_timeout == NULL) { 802ff92:	4911      	ldr	r1, [pc, #68]	; (802ffd8 <sys_timeout+0x58>)  timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT);  if (timeout == NULL) {    LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL);    return;  }  timeout->next = NULL; 802ff94:	2200      	movs	r2, #0  timeout->h = handler;  timeout->arg = arg;  timeout->time = msecs; 802ff96:	e880 0074 	stmia.w	r0, {r2, r4, r5, r6}  timeout->handler_name = handler_name;  LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p msecs=%"U32_F" handler=%s arg=%p\n",    (void *)timeout, msecs, handler_name, (void *)arg));#endif /* LWIP_DEBUG_TIMERNAMES */  if (next_timeout == NULL) { 802ff9a:	680a      	ldr	r2, [r1, #0] 802ff9c:	b902      	cbnz	r2, 802ffa0 <sys_timeout+0x20> 802ff9e:	e005      	b.n	802ffac <sys_timeout+0x2c>    next_timeout = timeout;    return;  }  if (next_timeout->time > msecs) { 802ffa0:	6850      	ldr	r0, [r2, #4] 802ffa2:	42a0      	cmp	r0, r4 802ffa4:	d90c      	bls.n	802ffc0 <sys_timeout+0x40>    next_timeout->time -= msecs; 802ffa6:	1b04      	subs	r4, r0, r4 802ffa8:	6054      	str	r4, [r2, #4]    timeout->next = next_timeout; 802ffaa:	601a      	str	r2, [r3, #0]    next_timeout = timeout; 802ffac:	600b      	str	r3, [r1, #0] 802ffae:	bd70      	pop	{r4, r5, r6, pc}  } else {    for(t = next_timeout; t != NULL; t = t->next) {      timeout->time -= t->time;      if (t->next == NULL || t->next->time > timeout->time) { 802ffb0:	684c      	ldr	r4, [r1, #4] 802ffb2:	4284      	cmp	r4, r0 802ffb4:	d80c      	bhi.n	802ffd0 <sys_timeout+0x50> 802ffb6:	460a      	mov	r2, r1 802ffb8:	e002      	b.n	802ffc0 <sys_timeout+0x40>        if (t->next != NULL) {          t->next->time -= timeout->time;        }        timeout->next = t->next; 802ffba:	6019      	str	r1, [r3, #0]        t->next = timeout; 802ffbc:	6013      	str	r3, [r2, #0]        break; 802ffbe:	bd70      	pop	{r4, r5, r6, pc}    next_timeout->time -= msecs;    timeout->next = next_timeout;    next_timeout = timeout;  } else {    for(t = next_timeout; t != NULL; t = t->next) {      timeout->time -= t->time; 802ffc0:	6851      	ldr	r1, [r2, #4] 802ffc2:	6858      	ldr	r0, [r3, #4] 802ffc4:	1a40      	subs	r0, r0, r1      if (t->next == NULL || t->next->time > timeout->time) { 802ffc6:	6811      	ldr	r1, [r2, #0]    next_timeout->time -= msecs;    timeout->next = next_timeout;    next_timeout = timeout;  } else {    for(t = next_timeout; t != NULL; t = t->next) {      timeout->time -= t->time; 802ffc8:	6058      	str	r0, [r3, #4]      if (t->next == NULL || t->next->time > timeout->time) { 802ffca:	2900      	cmp	r1, #0 802ffcc:	d1f0      	bne.n	802ffb0 <sys_timeout+0x30> 802ffce:	e7f4      	b.n	802ffba <sys_timeout+0x3a>        if (t->next != NULL) {          t->next->time -= timeout->time; 802ffd0:	1a20      	subs	r0, r4, r0 802ffd2:	6048      	str	r0, [r1, #4] 802ffd4:	e7f1      	b.n	802ffba <sys_timeout+0x3a> 802ffd6:	bd70      	pop	{r4, r5, r6, pc} 802ffd8:	2000e1c0 	.word	0x2000e1c00802ffdc <sys_timeouts_init>:}#endif /* LWIP_DNS *//** Initialize this module */void sys_timeouts_init(void){ 802ffdc:	b508      	push	{r3, lr}#if IP_REASSEMBLY  sys_timeout(IP_TMR_INTERVAL, ip_reass_timer, NULL);#endif /* IP_REASSEMBLY */#if LWIP_ARP  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); 802ffde:	2200      	movs	r2, #0 802ffe0:	f241 3088 	movw	r0, #5000	; 0x1388 802ffe4:	4908      	ldr	r1, [pc, #32]	; (8030008 <sys_timeouts_init+0x2c>) 802ffe6:	f7ff ffcb 	bl	802ff80 <sys_timeout>#endif /* LWIP_ARP */#if LWIP_DHCP  sys_timeout(DHCP_COARSE_TIMER_MSECS, dhcp_timer_coarse, NULL); 802ffea:	2200      	movs	r2, #0 802ffec:	f64e 2060 	movw	r0, #60000	; 0xea60 802fff0:	4906      	ldr	r1, [pc, #24]	; (803000c <sys_timeouts_init+0x30>) 802fff2:	f7ff ffc5 	bl	802ff80 <sys_timeout>  sys_timeout(DHCP_FINE_TIMER_MSECS, dhcp_timer_fine, NULL); 802fff6:	4906      	ldr	r1, [pc, #24]	; (8030010 <sys_timeouts_init+0x34>) 802fff8:	f44f 70fa 	mov.w	r0, #500	; 0x1f4 802fffc:	2200      	movs	r2, #0#if NO_SYS  /* Initialise timestamp for sys_check_timeouts */  timeouts_last_time = sys_now();#endif} 802fffe:	e8bd 4008 	ldmia.w	sp!, {r3, lr}#if LWIP_ARP  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL);#endif /* LWIP_ARP */#if LWIP_DHCP  sys_timeout(DHCP_COARSE_TIMER_MSECS, dhcp_timer_coarse, NULL);  sys_timeout(DHCP_FINE_TIMER_MSECS, dhcp_timer_fine, NULL); 8030002:	f7ff bfbd 	b.w	802ff80 <sys_timeout> 8030006:	bf00      	nop 8030008:	0803004d 	.word	0x0803004d 803000c:	08030031 	.word	0x08030031 8030010:	08030015 	.word	0x0803001508030014 <dhcp_timer_fine>: * * @param arg unused argument */static voiddhcp_timer_fine(void *arg){ 8030014:	b508      	push	{r3, lr}  LWIP_UNUSED_ARG(arg);  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dhcp_fine_tmr()\n"));  dhcp_fine_tmr(); 8030016:	f7fd f9c9 	bl	802d3ac <dhcp_fine_tmr>  sys_timeout(DHCP_FINE_TIMER_MSECS, dhcp_timer_fine, NULL); 803001a:	4904      	ldr	r1, [pc, #16]	; (803002c <dhcp_timer_fine+0x18>) 803001c:	f44f 70fa 	mov.w	r0, #500	; 0x1f4 8030020:	2200      	movs	r2, #0} 8030022:	e8bd 4008 	ldmia.w	sp!, {r3, lr}dhcp_timer_fine(void *arg){  LWIP_UNUSED_ARG(arg);  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dhcp_fine_tmr()\n"));  dhcp_fine_tmr();  sys_timeout(DHCP_FINE_TIMER_MSECS, dhcp_timer_fine, NULL); 8030026:	f7ff bfab 	b.w	802ff80 <sys_timeout> 803002a:	bf00      	nop 803002c:	08030015 	.word	0x0803001508030030 <dhcp_timer_coarse>: * * @param arg unused argument */static voiddhcp_timer_coarse(void *arg){ 8030030:	b508      	push	{r3, lr}  LWIP_UNUSED_ARG(arg);  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dhcp_coarse_tmr()\n"));  dhcp_coarse_tmr(); 8030032:	f7fd f939 	bl	802d2a8 <dhcp_coarse_tmr>  sys_timeout(DHCP_COARSE_TIMER_MSECS, dhcp_timer_coarse, NULL); 8030036:	4904      	ldr	r1, [pc, #16]	; (8030048 <dhcp_timer_coarse+0x18>) 8030038:	f64e 2060 	movw	r0, #60000	; 0xea60 803003c:	2200      	movs	r2, #0} 803003e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}dhcp_timer_coarse(void *arg){  LWIP_UNUSED_ARG(arg);  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dhcp_coarse_tmr()\n"));  dhcp_coarse_tmr();  sys_timeout(DHCP_COARSE_TIMER_MSECS, dhcp_timer_coarse, NULL); 8030042:	f7ff bf9d 	b.w	802ff80 <sys_timeout> 8030046:	bf00      	nop 8030048:	08030031 	.word	0x080300310803004c <arp_timer>: * * @param arg unused argument */static voidarp_timer(void *arg){ 803004c:	b508      	push	{r3, lr}  LWIP_UNUSED_ARG(arg);  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: etharp_tmr()\n"));  etharp_tmr(); 803004e:	f004 fd1d 	bl	8034a8c <etharp_tmr>  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); 8030052:	4904      	ldr	r1, [pc, #16]	; (8030064 <arp_timer+0x18>) 8030054:	f241 3088 	movw	r0, #5000	; 0x1388 8030058:	2200      	movs	r2, #0} 803005a:	e8bd 4008 	ldmia.w	sp!, {r3, lr}arp_timer(void *arg){  LWIP_UNUSED_ARG(arg);  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: etharp_tmr()\n"));  etharp_tmr();  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); 803005e:	f7ff bf8f 	b.w	802ff80 <sys_timeout> 8030062:	bf00      	nop 8030064:	0803004d 	.word	0x0803004d08030068 <tcp_timer_needed>: */voidtcp_timer_needed(void){  /* timer is off but needed again? */  if (!tcpip_tcp_timer_active && (tcp_active_pcbs || tcp_tw_pcbs)) { 8030068:	4b08      	ldr	r3, [pc, #32]	; (803008c <tcp_timer_needed+0x24>) 803006a:	681b      	ldr	r3, [r3, #0] 803006c:	b96b      	cbnz	r3, 803008a <tcp_timer_needed+0x22> 803006e:	4b08      	ldr	r3, [pc, #32]	; (8030090 <tcp_timer_needed+0x28>) 8030070:	681b      	ldr	r3, [r3, #0] 8030072:	b913      	cbnz	r3, 803007a <tcp_timer_needed+0x12> 8030074:	4b07      	ldr	r3, [pc, #28]	; (8030094 <tcp_timer_needed+0x2c>) 8030076:	681b      	ldr	r3, [r3, #0] 8030078:	b13b      	cbz	r3, 803008a <tcp_timer_needed+0x22>    /* enable and start timer */    tcpip_tcp_timer_active = 1; 803007a:	4b04      	ldr	r3, [pc, #16]	; (803008c <tcp_timer_needed+0x24>)    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); 803007c:	4906      	ldr	r1, [pc, #24]	; (8030098 <tcp_timer_needed+0x30>)tcp_timer_needed(void){  /* timer is off but needed again? */  if (!tcpip_tcp_timer_active && (tcp_active_pcbs || tcp_tw_pcbs)) {    /* enable and start timer */    tcpip_tcp_timer_active = 1; 803007e:	2201      	movs	r2, #1 8030080:	601a      	str	r2, [r3, #0]    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); 8030082:	20fa      	movs	r0, #250	; 0xfa 8030084:	2200      	movs	r2, #0 8030086:	f7ff bf7b 	b.w	802ff80 <sys_timeout> 803008a:	4770      	bx	lr 803008c:	2000e1bc 	.word	0x2000e1bc 8030090:	2001107c 	.word	0x2001107c 8030094:	20011090 	.word	0x20011090 8030098:	0803009d 	.word	0x0803009d0803009c <tcpip_tcp_timer>: * * @param arg unused argument */static voidtcpip_tcp_timer(void *arg){ 803009c:	b508      	push	{r3, lr}  LWIP_UNUSED_ARG(arg);  /* call TCP timer handler */  tcp_tmr(); 803009e:	f7fe fad3 	bl	802e648 <tcp_tmr>  /* timer still needed? */  if (tcp_active_pcbs || tcp_tw_pcbs) { 80300a2:	4b08      	ldr	r3, [pc, #32]	; (80300c4 <tcpip_tcp_timer+0x28>) 80300a4:	681b      	ldr	r3, [r3, #0] 80300a6:	b913      	cbnz	r3, 80300ae <tcpip_tcp_timer+0x12> 80300a8:	4b07      	ldr	r3, [pc, #28]	; (80300c8 <tcpip_tcp_timer+0x2c>) 80300aa:	681b      	ldr	r3, [r3, #0] 80300ac:	b133      	cbz	r3, 80300bc <tcpip_tcp_timer+0x20>    /* restart timer */    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); 80300ae:	4907      	ldr	r1, [pc, #28]	; (80300cc <tcpip_tcp_timer+0x30>) 80300b0:	20fa      	movs	r0, #250	; 0xfa 80300b2:	2200      	movs	r2, #0  } else {    /* disable timer */    tcpip_tcp_timer_active = 0;  }} 80300b4:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  /* call TCP timer handler */  tcp_tmr();  /* timer still needed? */  if (tcp_active_pcbs || tcp_tw_pcbs) {    /* restart timer */    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); 80300b8:	f7ff bf62 	b.w	802ff80 <sys_timeout>  } else {    /* disable timer */    tcpip_tcp_timer_active = 0; 80300bc:	4a04      	ldr	r2, [pc, #16]	; (80300d0 <tcpip_tcp_timer+0x34>) 80300be:	6013      	str	r3, [r2, #0] 80300c0:	bd08      	pop	{r3, pc} 80300c2:	bf00      	nop 80300c4:	2001107c 	.word	0x2001107c 80300c8:	20011090 	.word	0x20011090 80300cc:	0803009d 	.word	0x0803009d 80300d0:	2000e1bc 	.word	0x2000e1bc080300d4 <sys_untimeout>:voidsys_untimeout(sys_timeout_handler handler, void *arg){  struct sys_timeo *prev_t, *t;  if (next_timeout == NULL) { 80300d4:	4b10      	ldr	r3, [pc, #64]	; (8030118 <sys_untimeout+0x44>) 80300d6:	681b      	ldr	r3, [r3, #0] * @param handler callback function that would be called by the timeout * @param arg callback argument that would be passed to handler*/voidsys_untimeout(sys_timeout_handler handler, void *arg){ 80300d8:	b510      	push	{r4, lr}  struct sys_timeo *prev_t, *t;  if (next_timeout == NULL) { 80300da:	b1e3      	cbz	r3, 8030116 <sys_untimeout+0x42> 80300dc:	2200      	movs	r2, #0 80300de:	e000      	b.n	80300e2 <sys_untimeout+0xe>    return;  }  for (t = next_timeout, prev_t = NULL; t != NULL; prev_t = t, t = t->next) { 80300e0:	4623      	mov	r3, r4    if ((t->h == handler) && (t->arg == arg)) { 80300e2:	689c      	ldr	r4, [r3, #8] 80300e4:	4284      	cmp	r4, r0 80300e6:	d112      	bne.n	803010e <sys_untimeout+0x3a> 80300e8:	68dc      	ldr	r4, [r3, #12] 80300ea:	428c      	cmp	r4, r1 80300ec:	d10f      	bne.n	803010e <sys_untimeout+0x3a> 80300ee:	6819      	ldr	r1, [r3, #0]      /* We have a match */      /* Unlink from previous in list */      if (prev_t == NULL) { 80300f0:	b902      	cbnz	r2, 80300f4 <sys_untimeout+0x20>        next_timeout = t->next; 80300f2:	4a09      	ldr	r2, [pc, #36]	; (8030118 <sys_untimeout+0x44>)      } else {        prev_t->next = t->next; 80300f4:	6011      	str	r1, [r2, #0]      }      /* If not the last one, add time of this one back to next */      if (t->next != NULL) { 80300f6:	681a      	ldr	r2, [r3, #0] 80300f8:	b11a      	cbz	r2, 8030102 <sys_untimeout+0x2e>        t->next->time += t->time; 80300fa:	6850      	ldr	r0, [r2, #4] 80300fc:	6859      	ldr	r1, [r3, #4] 80300fe:	1841      	adds	r1, r0, r1 8030100:	6051      	str	r1, [r2, #4]      }      memp_free(MEMP_SYS_TIMEOUT, t); 8030102:	2009      	movs	r0, #9 8030104:	4619      	mov	r1, r3      return;    }  }  return;} 8030106:	e8bd 4010 	ldmia.w	sp!, {r4, lr}      }      /* If not the last one, add time of this one back to next */      if (t->next != NULL) {        t->next->time += t->time;      }      memp_free(MEMP_SYS_TIMEOUT, t); 803010a:	f7fd bba9 	b.w	802d860 <memp_free>  if (next_timeout == NULL) {    return;  }  for (t = next_timeout, prev_t = NULL; t != NULL; prev_t = t, t = t->next) { 803010e:	681c      	ldr	r4, [r3, #0] 8030110:	461a      	mov	r2, r3 8030112:	2c00      	cmp	r4, #0 8030114:	d1e4      	bne.n	80300e0 <sys_untimeout+0xc> 8030116:	bd10      	pop	{r4, pc} 8030118:	2000e1c0 	.word	0x2000e1c00803011c <sys_timeouts_mbox_fetch>: * @param mbox the mbox to fetch the message from * @param msg the place to store the message */voidsys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg){ 803011c:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}  struct sys_timeo *tmptimeout;  sys_timeout_handler handler;  void *arg; again:  if (!next_timeout) { 8030120:	4e18      	ldr	r6, [pc, #96]	; (8030184 <sys_timeouts_mbox_fetch+0x68>) * @param mbox the mbox to fetch the message from * @param msg the place to store the message */voidsys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg){ 8030122:	4604      	mov	r4, r0 8030124:	460d      	mov	r5, r1 8030126:	4637      	mov	r7, r6  struct sys_timeo *tmptimeout;  sys_timeout_handler handler;  void *arg; again:  if (!next_timeout) { 8030128:	6832      	ldr	r2, [r6, #0] 803012a:	b92a      	cbnz	r2, 8030138 <sys_timeouts_mbox_fetch+0x1c>    time_needed = sys_arch_mbox_fetch(mbox, msg, 0); 803012c:	4620      	mov	r0, r4 803012e:	4629      	mov	r1, r5      } else {        next_timeout->time = 0;      }    }  }} 8030130:	e8bd 43f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}  sys_timeout_handler handler;  void *arg; again:  if (!next_timeout) {    time_needed = sys_arch_mbox_fetch(mbox, msg, 0); 8030134:	f005 b8d6 	b.w	80352e4 <sys_arch_mbox_fetch>  } else {    if (next_timeout->time > 0) { 8030138:	6852      	ldr	r2, [r2, #4] 803013a:	b96a      	cbnz	r2, 8030158 <sys_timeouts_mbox_fetch+0x3c>    if (time_needed == SYS_ARCH_TIMEOUT) {      /* If time == SYS_ARCH_TIMEOUT, a timeout occured before a message         could be fetched. We should now call the timeout handler and         deallocate the memory allocated for the timeout. */      tmptimeout = next_timeout; 803013c:	6839      	ldr	r1, [r7, #0]      next_timeout = tmptimeout->next; 803013e:	680a      	ldr	r2, [r1, #0]      handler = tmptimeout->h; 8030140:	f8d1 8008 	ldr.w	r8, [r1, #8]    if (time_needed == SYS_ARCH_TIMEOUT) {      /* If time == SYS_ARCH_TIMEOUT, a timeout occured before a message         could be fetched. We should now call the timeout handler and         deallocate the memory allocated for the timeout. */      tmptimeout = next_timeout;      next_timeout = tmptimeout->next; 8030144:	603a      	str	r2, [r7, #0]      if (handler != NULL) {        LWIP_DEBUGF(TIMERS_DEBUG, ("stmf calling h=%s arg=%p\n",          tmptimeout->handler_name, arg));      }#endif /* LWIP_DEBUG_TIMERNAMES */      memp_free(MEMP_SYS_TIMEOUT, tmptimeout); 8030146:	2009      	movs	r0, #9         could be fetched. We should now call the timeout handler and         deallocate the memory allocated for the timeout. */      tmptimeout = next_timeout;      next_timeout = tmptimeout->next;      handler = tmptimeout->h;      arg = tmptimeout->arg; 8030148:	f8d1 900c 	ldr.w	r9, [r1, #12]      if (handler != NULL) {        LWIP_DEBUGF(TIMERS_DEBUG, ("stmf calling h=%s arg=%p\n",          tmptimeout->handler_name, arg));      }#endif /* LWIP_DEBUG_TIMERNAMES */      memp_free(MEMP_SYS_TIMEOUT, tmptimeout); 803014c:	f7fd fb88 	bl	802d860 <memp_free>      if (handler != NULL) { 8030150:	f1b8 0f00 	cmp.w	r8, #0 8030154:	d0e8      	beq.n	8030128 <sys_timeouts_mbox_fetch+0xc> 8030156:	e006      	b.n	8030166 <sys_timeouts_mbox_fetch+0x4a> again:  if (!next_timeout) {    time_needed = sys_arch_mbox_fetch(mbox, msg, 0);  } else {    if (next_timeout->time > 0) {      time_needed = sys_arch_mbox_fetch(mbox, msg, next_timeout->time); 8030158:	4620      	mov	r0, r4 803015a:	4629      	mov	r1, r5 803015c:	f005 f8c2 	bl	80352e4 <sys_arch_mbox_fetch>    } else {      time_needed = SYS_ARCH_TIMEOUT;    }    if (time_needed == SYS_ARCH_TIMEOUT) { 8030160:	1c43      	adds	r3, r0, #1 8030162:	d0eb      	beq.n	803013c <sys_timeouts_mbox_fetch+0x20> 8030164:	e002      	b.n	803016c <sys_timeouts_mbox_fetch+0x50>      memp_free(MEMP_SYS_TIMEOUT, tmptimeout);      if (handler != NULL) {        /* For LWIP_TCPIP_CORE_LOCKING, lock the core before calling the           timeout handler function. */        LOCK_TCPIP_CORE();        handler(arg); 8030166:	4648      	mov	r0, r9 8030168:	47c0      	blx	r8 803016a:	e7dd      	b.n	8030128 <sys_timeouts_mbox_fetch+0xc>      goto again;    } else {      /* If time != SYS_ARCH_TIMEOUT, a message was received before the timeout         occured. The time variable is set to the number of         milliseconds we waited for the message. */      if (time_needed < next_timeout->time) { 803016c:	4b05      	ldr	r3, [pc, #20]	; (8030184 <sys_timeouts_mbox_fetch+0x68>) 803016e:	681b      	ldr	r3, [r3, #0] 8030170:	6859      	ldr	r1, [r3, #4] 8030172:	4288      	cmp	r0, r1        next_timeout->time -= time_needed; 8030174:	bf34      	ite	cc 8030176:	ebc0 0201 	rsbcc	r2, r0, r1      } else {        next_timeout->time = 0; 803017a:	2200      	movcs	r2, #0 803017c:	605a      	str	r2, [r3, #4] 803017e:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 8030182:	bf00      	nop 8030184:	2000e1c0 	.word	0x2000e1c008030188 <udp_init>:/** * Initialize this module. */voidudp_init(void){ 8030188:	4770      	bx	lr 803018a:	0000      	movs	r0, r00803018c <udp_input>: * @param inp network interface on which the datagram was received. * */voidudp_input(struct pbuf *p, struct netif *inp){ 803018c:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}  PERF_START;  UDP_STATS_INC(udp.recv);  iphdr = (struct ip_hdr *)p->payload; 8030190:	f8d0 9004 	ldr.w	r9, [r0, #4]  /* Check minimum length (IP header + UDP header)   * and move payload pointer to UDP header */  if (p->tot_len < (IPH_HL(iphdr) * 4 + UDP_HLEN) || pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4))) { 8030194:	8903      	ldrh	r3, [r0, #8] * @param inp network interface on which the datagram was received. * */voidudp_input(struct pbuf *p, struct netif *inp){ 8030196:	460e      	mov	r6, r1  iphdr = (struct ip_hdr *)p->payload;  /* Check minimum length (IP header + UDP header)   * and move payload pointer to UDP header */  if (p->tot_len < (IPH_HL(iphdr) * 4 + UDP_HLEN) || pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4))) { 8030198:	f899 1000 	ldrb.w	r1, [r9] 803019c:	f001 010f 	and.w	r1, r1, #15 80301a0:	1c8a      	adds	r2, r1, #2 80301a2:	ebb3 0f82 	cmp.w	r3, r2, lsl #2 * @param inp network interface on which the datagram was received. * */voidudp_input(struct pbuf *p, struct netif *inp){ 80301a6:	b085      	sub	sp, #20 80301a8:	4605      	mov	r5, r0  iphdr = (struct ip_hdr *)p->payload;  /* Check minimum length (IP header + UDP header)   * and move payload pointer to UDP header */  if (p->tot_len < (IPH_HL(iphdr) * 4 + UDP_HLEN) || pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4))) { 80301aa:	db05      	blt.n	80301b8 <udp_input+0x2c> 80301ac:	0089      	lsls	r1, r1, #2 80301ae:	4249      	negs	r1, r1 80301b0:	f7fd fc35 	bl	802da1e <pbuf_header> 80301b4:	4683      	mov	fp, r0 80301b6:	b110      	cbz	r0, 80301be <udp_input+0x32>    /* drop short packets */    LWIP_DEBUGF(UDP_DEBUG,                ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len));    UDP_STATS_INC(udp.lenerr);    UDP_STATS_INC(udp.drop);    snmp_inc_udpinerrors(); 80301b8:	f002 fa88 	bl	80326cc <snmp_inc_udpinerrors> 80301bc:	e096      	b.n	80302ec <udp_input+0x160>  }  udphdr = (struct udp_hdr *)p->payload;  /* is broadcast packet ? */  broadcast = ip_addr_isbroadcast(¤t_iphdr_dest, inp); 80301be:	f8df a150 	ldr.w	sl, [pc, #336]	; 8030310 <udp_input+0x184>    snmp_inc_udpinerrors();    pbuf_free(p);    goto end;  }  udphdr = (struct udp_hdr *)p->payload; 80301c2:	686c      	ldr	r4, [r5, #4]  /* is broadcast packet ? */  broadcast = ip_addr_isbroadcast(¤t_iphdr_dest, inp); 80301c4:	f8da 0000 	ldr.w	r0, [sl] 80301c8:	4631      	mov	r1, r6 80301ca:	f000 faed 	bl	80307a8 <ip4_addr_isbroadcast> 80301ce:	4680      	mov	r8, r0  LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len));  /* convert src and dest ports to host byte order */  src = ntohs(udphdr->src); 80301d0:	8820      	ldrh	r0, [r4, #0] 80301d2:	f7fc fb16 	bl	802c802 <lwip_ntohs> 80301d6:	4607      	mov	r7, r0  dest = ntohs(udphdr->dest); 80301d8:	8860      	ldrh	r0, [r4, #2] 80301da:	f7fc fb12 	bl	802c802 <lwip_ntohs>#if LWIP_DHCP  pcb = NULL;  /* when LWIP_DHCP is active, packets to DHCP_CLIENT_PORT may only be processed by     the dhcp module, no other UDP pcb may use the local UDP port DHCP_CLIENT_PORT */  if (dest == DHCP_CLIENT_PORT) { 80301de:	2844      	cmp	r0, #68	; 0x44 80301e0:	d10f      	bne.n	8030202 <udp_input+0x76>    /* all packets for DHCP_CLIENT_PORT not coming from DHCP_SERVER_PORT are dropped! */    if (src == DHCP_SERVER_PORT) { 80301e2:	2f43      	cmp	r7, #67	; 0x43 80301e4:	d14f      	bne.n	8030286 <udp_input+0xfa>      if ((inp->dhcp != NULL) && (inp->dhcp->pcb != NULL)) { 80301e6:	6a33      	ldr	r3, [r6, #32] 80301e8:	2b00      	cmp	r3, #0 80301ea:	d04c      	beq.n	8030286 <udp_input+0xfa> 80301ec:	685c      	ldr	r4, [r3, #4] 80301ee:	2c00      	cmp	r4, #0 80301f0:	d049      	beq.n	8030286 <udp_input+0xfa>        /* accept the packe if            (- broadcast or directed to us) -> DHCP is link-layer-addressed, local ip is always ANY!           - inp->dhcp->pcb->remote == ANY or iphdr->src */        if ((ip_addr_isany(&inp->dhcp->pcb->remote_ip) || 80301f2:	6863      	ldr	r3, [r4, #4] 80301f4:	2b00      	cmp	r3, #0 80301f6:	d04e      	beq.n	8030296 <udp_input+0x10a>           ip_addr_cmp(&(inp->dhcp->pcb->remote_ip), ¤t_iphdr_src))) { 80301f8:	4a43      	ldr	r2, [pc, #268]	; (8030308 <udp_input+0x17c>)    if (src == DHCP_SERVER_PORT) {      if ((inp->dhcp != NULL) && (inp->dhcp->pcb != NULL)) {        /* accept the packe if            (- broadcast or directed to us) -> DHCP is link-layer-addressed, local ip is always ANY!           - inp->dhcp->pcb->remote == ANY or iphdr->src */        if ((ip_addr_isany(&inp->dhcp->pcb->remote_ip) || 80301fa:	6812      	ldr	r2, [r2, #0] 80301fc:	4293      	cmp	r3, r2 80301fe:	d142      	bne.n	8030286 <udp_input+0xfa> 8030200:	e049      	b.n	8030296 <udp_input+0x10a>    uncon_pcb = NULL;    /* Iterate through the UDP pcb list for a matching pcb.     * 'Perfect match' pcbs (connected to the remote port & ip address) are     * preferred. If no perfect match is found, the first unconnected pcb that     * matches the local port and ip address gets the datagram. */    for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 8030202:	4b42      	ldr	r3, [pc, #264]	; (803030c <udp_input+0x180>)      /* compare PCB local addr+port to UDP destination addr+port */      if (pcb->local_port == dest) {        if (           (!broadcast && ip_addr_isany(&pcb->local_ip)) ||           ip_addr_cmp(&(pcb->local_ip), ¤t_iphdr_dest) || 8030204:	f8da a000 	ldr.w	sl, [sl]    uncon_pcb = NULL;    /* Iterate through the UDP pcb list for a matching pcb.     * 'Perfect match' pcbs (connected to the remote port & ip address) are     * preferred. If no perfect match is found, the first unconnected pcb that     * matches the local port and ip address gets the datagram. */    for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 8030208:	f8d3 c000 	ldr.w	ip, [r3]      }      /* compare PCB remote addr+port to UDP source addr+port */      if ((local_match != 0) &&          (pcb->remote_port == src) &&          (ip_addr_isany(&pcb->remote_ip) ||           ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src))) { 803020c:	4b3e      	ldr	r3, [pc, #248]	; (8030308 <udp_input+0x17c>) 803020e:	681b      	ldr	r3, [r3, #0]    uncon_pcb = NULL;    /* Iterate through the UDP pcb list for a matching pcb.     * 'Perfect match' pcbs (connected to the remote port & ip address) are     * preferred. If no perfect match is found, the first unconnected pcb that     * matches the local port and ip address gets the datagram. */    for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 8030210:	4664      	mov	r4, ip      }      /* compare PCB remote addr+port to UDP source addr+port */      if ((local_match != 0) &&          (pcb->remote_port == src) &&          (ip_addr_isany(&pcb->remote_ip) ||           ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src))) { 8030212:	9303      	str	r3, [sp, #12]      }    }  } else#endif /* LWIP_DHCP */  {    prev = NULL; 8030214:	4659      	mov	r1, fp    local_match = 0;    uncon_pcb = NULL; 8030216:	465b      	mov	r3, fp    /* Iterate through the UDP pcb list for a matching pcb.     * 'Perfect match' pcbs (connected to the remote port & ip address) are     * preferred. If no perfect match is found, the first unconnected pcb that     * matches the local port and ip address gets the datagram. */    for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 8030218:	e032      	b.n	8030280 <udp_input+0xf4>                   ip4_addr3_16(&pcb->local_ip), ip4_addr4_16(&pcb->local_ip), pcb->local_port,                   ip4_addr1_16(&pcb->remote_ip), ip4_addr2_16(&pcb->remote_ip),                   ip4_addr3_16(&pcb->remote_ip), ip4_addr4_16(&pcb->remote_ip), pcb->remote_port));      /* compare PCB local addr+port to UDP destination addr+port */      if (pcb->local_port == dest) { 803021a:	8a62      	ldrh	r2, [r4, #18] 803021c:	4282      	cmp	r2, r0 803021e:	d12d      	bne.n	803027c <udp_input+0xf0> 8030220:	6822      	ldr	r2, [r4, #0]        if ( 8030222:	f1b8 0f00 	cmp.w	r8, #0 8030226:	d100      	bne.n	803022a <udp_input+0x9e>           (!broadcast && ip_addr_isany(&pcb->local_ip)) || 8030228:	b15a      	cbz	r2, 8030242 <udp_input+0xb6> 803022a:	4552      	cmp	r2, sl 803022c:	d009      	beq.n	8030242 <udp_input+0xb6>           ip_addr_cmp(&(pcb->local_ip), ¤t_iphdr_dest) || 803022e:	f1b8 0f00 	cmp.w	r8, #0 8030232:	d023      	beq.n	803027c <udp_input+0xf0>            (broadcast && ip_get_option(pcb, SOF_BROADCAST) &&             (ip_addr_isany(&pcb->local_ip) ||              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) {#else /* IP_SOF_BROADCAST_RECV */            (broadcast &&             (ip_addr_isany(&pcb->local_ip) || 8030234:	b12a      	cbz	r2, 8030242 <udp_input+0xb6>              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) { 8030236:	ea8a 0b02 	eor.w	fp, sl, r2 803023a:	68b2      	ldr	r2, [r6, #8]            (broadcast && ip_get_option(pcb, SOF_BROADCAST) &&             (ip_addr_isany(&pcb->local_ip) ||              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) {#else /* IP_SOF_BROADCAST_RECV */            (broadcast &&             (ip_addr_isany(&pcb->local_ip) || 803023c:	ea1b 0f02 	tst.w	fp, r2 8030240:	d11c      	bne.n	803027c <udp_input+0xf0>              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) {#endif /* IP_SOF_BROADCAST_RECV */           local_match = 1;          if ((uncon_pcb == NULL) &&  8030242:	2b00      	cmp	r3, #0 8030244:	d158      	bne.n	80302f8 <udp_input+0x16c>              ((pcb->flags & UDP_FLAGS_CONNECTED) == 0)) { 8030246:	7c23      	ldrb	r3, [r4, #16]            (broadcast &&             (ip_addr_isany(&pcb->local_ip) ||              ip_addr_netcmp(&pcb->local_ip, ip_current_dest_addr(), &inp->netmask)))) {#endif /* IP_SOF_BROADCAST_RECV */           local_match = 1;          if ((uncon_pcb == NULL) &&  8030248:	f003 0304 	and.w	r3, r3, #4 803024c:	b2db      	uxtb	r3, r3 803024e:	2b00      	cmp	r3, #0 8030250:	bf0c      	ite	eq 8030252:	4623      	moveq	r3, r4 8030254:	2300      	movne	r3, #0 8030256:	e04f      	b.n	80302f8 <udp_input+0x16c>        }      }      /* compare PCB remote addr+port to UDP source addr+port */      if ((local_match != 0) &&          (pcb->remote_port == src) &&          (ip_addr_isany(&pcb->remote_ip) || 8030258:	f8d4 b004 	ldr.w	fp, [r4, #4] 803025c:	f1bb 0f00 	cmp.w	fp, #0 8030260:	d101      	bne.n	8030266 <udp_input+0xda>           ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src))) {        /* the first fully matching PCB */        if (prev != NULL) { 8030262:	b921      	cbnz	r1, 803026e <udp_input+0xe2> 8030264:	e017      	b.n	8030296 <udp_input+0x10a>        }      }      /* compare PCB remote addr+port to UDP source addr+port */      if ((local_match != 0) &&          (pcb->remote_port == src) &&          (ip_addr_isany(&pcb->remote_ip) || 8030266:	9a03      	ldr	r2, [sp, #12] 8030268:	4593      	cmp	fp, r2 803026a:	d107      	bne.n	803027c <udp_input+0xf0> 803026c:	e7f9      	b.n	8030262 <udp_input+0xd6>           ip_addr_cmp(&(pcb->remote_ip), ¤t_iphdr_src))) {        /* the first fully matching PCB */        if (prev != NULL) {          /* move the pcb to the front of udp_pcbs so that is             found faster next time */          prev->next = pcb->next; 803026e:	68e3      	ldr	r3, [r4, #12] 8030270:	60cb      	str	r3, [r1, #12]          pcb->next = udp_pcbs;          udp_pcbs = pcb; 8030272:	4b26      	ldr	r3, [pc, #152]	; (803030c <udp_input+0x180>)        /* the first fully matching PCB */        if (prev != NULL) {          /* move the pcb to the front of udp_pcbs so that is             found faster next time */          prev->next = pcb->next;          pcb->next = udp_pcbs; 8030274:	f8c4 c00c 	str.w	ip, [r4, #12]          udp_pcbs = pcb; 8030278:	601c      	str	r4, [r3, #0] 803027a:	e00c      	b.n	8030296 <udp_input+0x10a> 803027c:	4621      	mov	r1, r4    uncon_pcb = NULL;    /* Iterate through the UDP pcb list for a matching pcb.     * 'Perfect match' pcbs (connected to the remote port & ip address) are     * preferred. If no perfect match is found, the first unconnected pcb that     * matches the local port and ip address gets the datagram. */    for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 803027e:	68e4      	ldr	r4, [r4, #12] 8030280:	2c00      	cmp	r4, #0 8030282:	d1ca      	bne.n	803021a <udp_input+0x8e>      pcb = uncon_pcb;    }  }  /* Check checksum if this is a match or if it was directed at us. */  if (pcb != NULL || ip_addr_cmp(&inp->ip_addr, ¤t_iphdr_dest)) { 8030284:	b933      	cbnz	r3, 8030294 <udp_input+0x108> 8030286:	4b22      	ldr	r3, [pc, #136]	; (8030310 <udp_input+0x184>) 8030288:	6872      	ldr	r2, [r6, #4] 803028a:	681b      	ldr	r3, [r3, #0] 803028c:	429a      	cmp	r2, r3 803028e:	d12d      	bne.n	80302ec <udp_input+0x160> 8030290:	2400      	movs	r4, #0 8030292:	e000      	b.n	8030296 <udp_input+0x10a> 8030294:	461c      	mov	r4, r3          goto end;        }      }#endif /* CHECKSUM_CHECK_UDP */    }    if(pbuf_header(p, -UDP_HLEN)) { 8030296:	4628      	mov	r0, r5 8030298:	f06f 0107 	mvn.w	r1, #7 803029c:	f7fd fbbf 	bl	802da1e <pbuf_header> 80302a0:	2800      	cmp	r0, #0 80302a2:	d189      	bne.n	80301b8 <udp_input+0x2c>      UDP_STATS_INC(udp.drop);      snmp_inc_udpinerrors();      pbuf_free(p);      goto end;    }    if (pcb != NULL) { 80302a4:	b154      	cbz	r4, 80302bc <udp_input+0x130>      snmp_inc_udpindatagrams(); 80302a6:	f002 fa01 	bl	80326ac <snmp_inc_udpindatagrams>          pbuf_header(p, -(s16_t)((IPH_HL(iphdr) * 4) + UDP_HLEN));        }      }#endif /* SO_REUSE && SO_REUSE_RXTOALL */      /* callback */      if (pcb->recv != NULL) { 80302aa:	69a6      	ldr	r6, [r4, #24] 80302ac:	b1f6      	cbz	r6, 80302ec <udp_input+0x160>        /* now the recv function is responsible for freeing p */        pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src); 80302ae:	9700      	str	r7, [sp, #0] 80302b0:	69e0      	ldr	r0, [r4, #28] 80302b2:	4b15      	ldr	r3, [pc, #84]	; (8030308 <udp_input+0x17c>) 80302b4:	4621      	mov	r1, r4 80302b6:	462a      	mov	r2, r5 80302b8:	47b0      	blx	r6 80302ba:	e021      	b.n	8030300 <udp_input+0x174>      LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: not for us.\n"));#if LWIP_ICMP      /* No match was found, send ICMP destination port unreachable unless         destination address was broadcast/multicast. */      if (!broadcast && 80302bc:	f1b8 0f00 	cmp.w	r8, #0 80302c0:	d112      	bne.n	80302e8 <udp_input+0x15c>          !ip_addr_ismulticast(¤t_iphdr_dest)) { 80302c2:	4b13      	ldr	r3, [pc, #76]	; (8030310 <udp_input+0x184>) 80302c4:	681b      	ldr	r3, [r3, #0] 80302c6:	f003 03f0 	and.w	r3, r3, #240	; 0xf0      LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: not for us.\n"));#if LWIP_ICMP      /* No match was found, send ICMP destination port unreachable unless         destination address was broadcast/multicast. */      if (!broadcast && 80302ca:	2be0      	cmp	r3, #224	; 0xe0 80302cc:	d00c      	beq.n	80302e8 <udp_input+0x15c>          !ip_addr_ismulticast(¤t_iphdr_dest)) {        /* move payload pointer back to ip header */        pbuf_header(p, (IPH_HL(iphdr) * 4) + UDP_HLEN); 80302ce:	f899 1000 	ldrb.w	r1, [r9] 80302d2:	f001 010f 	and.w	r1, r1, #15 80302d6:	3102      	adds	r1, #2 80302d8:	0089      	lsls	r1, r1, #2 80302da:	4628      	mov	r0, r5 80302dc:	f7fd fb9f 	bl	802da1e <pbuf_header>        LWIP_ASSERT("p->payload == iphdr", (p->payload == iphdr));        icmp_dest_unreach(p, ICMP_DUR_PORT); 80302e0:	4628      	mov	r0, r5 80302e2:	2103      	movs	r1, #3 80302e4:	f000 f9d2 	bl	803068c <icmp_dest_unreach>      }#endif /* LWIP_ICMP */      UDP_STATS_INC(udp.proterr);      UDP_STATS_INC(udp.drop);      snmp_inc_udpnoports(); 80302e8:	f002 f9e8 	bl	80326bc <snmp_inc_udpnoports>      pbuf_free(p); 80302ec:	4628      	mov	r0, r5  } else {    pbuf_free(p);  }end:  PERF_STOP("udp_input");} 80302ee:	b005      	add	sp, #20 80302f0:	e8bd 4ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}      }#endif /* LWIP_ICMP */      UDP_STATS_INC(udp.proterr);      UDP_STATS_INC(udp.drop);      snmp_inc_udpnoports();      pbuf_free(p); 80302f4:	f7fd bbbe 	b.w	802da74 <pbuf_free>            uncon_pcb = pcb;          }        }      }      /* compare PCB remote addr+port to UDP source addr+port */      if ((local_match != 0) && 80302f8:	8aa2      	ldrh	r2, [r4, #20] 80302fa:	42ba      	cmp	r2, r7 80302fc:	d1be      	bne.n	803027c <udp_input+0xf0> 80302fe:	e7ab      	b.n	8030258 <udp_input+0xcc>  } else {    pbuf_free(p);  }end:  PERF_STOP("udp_input");} 8030300:	b005      	add	sp, #20 8030302:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 8030306:	bf00      	nop 8030308:	2001109c 	.word	0x2001109c 803030c:	20011098 	.word	0x20011098 8030310:	200110a4 	.word	0x200110a408030314 <udp_bind>: * * @see udp_disconnect() */err_tudp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 8030314:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  ip_addr_debug_print(UDP_DEBUG, ipaddr);  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port));  rebind = 0;  /* Check for double bind and rebind of the same pcb */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 8030316:	4b25      	ldr	r3, [pc, #148]	; (80303ac <udp_bind+0x98>) * * @see udp_disconnect() */err_tudp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 8030318:	4604      	mov	r4, r0  ip_addr_debug_print(UDP_DEBUG, ipaddr);  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port));  rebind = 0;  /* Check for double bind and rebind of the same pcb */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 803031a:	6818      	ldr	r0, [r3, #0]  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = "));  ip_addr_debug_print(UDP_DEBUG, ipaddr);  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port));  rebind = 0; 803031c:	2500      	movs	r5, #0  /* Check for double bind and rebind of the same pcb */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 803031e:	4603      	mov	r3, r0 8030320:	e012      	b.n	8030348 <udp_bind+0x34>    /* is this UDP PCB already on active list? */    if (pcb == ipcb) { 8030322:	429c      	cmp	r4, r3 8030324:	d00e      	beq.n	8030344 <udp_bind+0x30>             !ip_get_option(ipcb, SOF_REUSEADDR)) {#else /* SO_REUSE */    /* port matches that of PCB in list and REUSEADDR not set -> reject */    else {#endif /* SO_REUSE */      if ((ipcb->local_port == port) && 8030326:	8a5e      	ldrh	r6, [r3, #18] 8030328:	4296      	cmp	r6, r2 803032a:	d10c      	bne.n	8030346 <udp_bind+0x32>          /* IP address matches, or one is IP_ADDR_ANY? */          (ip_addr_isany(&(ipcb->local_ip)) || 803032c:	681f      	ldr	r7, [r3, #0] 803032e:	b90f      	cbnz	r7, 8030334 <udp_bind+0x20>           ip_addr_isany(ipaddr) ||           ip_addr_cmp(&(ipcb->local_ip), ipaddr))) {        /* other PCB already binds to this local IP and port */        LWIP_DEBUGF(UDP_DEBUG,                    ("udp_bind: local port %"U16_F" already bound by another pcb\n", port));        return ERR_USE; 8030330:	20f8      	movs	r0, #248	; 0xf8 8030332:	e039      	b.n	80303a8 <udp_bind+0x94>    /* port matches that of PCB in list and REUSEADDR not set -> reject */    else {#endif /* SO_REUSE */      if ((ipcb->local_port == port) &&          /* IP address matches, or one is IP_ADDR_ANY? */          (ip_addr_isany(&(ipcb->local_ip)) || 8030334:	2900      	cmp	r1, #0 8030336:	d0fb      	beq.n	8030330 <udp_bind+0x1c>           ip_addr_isany(ipaddr) || 8030338:	680e      	ldr	r6, [r1, #0] 803033a:	2e00      	cmp	r6, #0 803033c:	d0f8      	beq.n	8030330 <udp_bind+0x1c> 803033e:	42b7      	cmp	r7, r6 8030340:	d101      	bne.n	8030346 <udp_bind+0x32> 8030342:	e7f5      	b.n	8030330 <udp_bind+0x1c>    /* is this UDP PCB already on active list? */    if (pcb == ipcb) {      /* pcb may occur at most once in active list */      LWIP_ASSERT("rebind == 0", rebind == 0);      /* pcb already in list, just rebind */      rebind = 1; 8030344:	2501      	movs	r5, #1  ip_addr_debug_print(UDP_DEBUG, ipaddr);  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port));  rebind = 0;  /* Check for double bind and rebind of the same pcb */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 8030346:	68db      	ldr	r3, [r3, #12] 8030348:	2b00      	cmp	r3, #0 803034a:	d1ea      	bne.n	8030322 <udp_bind+0xe>        return ERR_USE;      }    }  }  ip_addr_set(&pcb->local_ip, ipaddr); 803034c:	b101      	cbz	r1, 8030350 <udp_bind+0x3c> 803034e:	6809      	ldr	r1, [r1, #0] 8030350:	6021      	str	r1, [r4, #0]  /* no port specified? */  if (port == 0) { 8030352:	b9fa      	cbnz	r2, 8030394 <udp_bind+0x80> 8030354:	4b16      	ldr	r3, [pc, #88]	; (80303b0 <udp_bind+0x9c>) 8030356:	881a      	ldrh	r2, [r3, #0] 8030358:	f44f 4180 	mov.w	r1, #16384	; 0x4000{  u16_t n = 0;  struct udp_pcb *pcb;  again:  if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) { 803035c:	f64f 76ff 	movw	r6, #65535	; 0xffff 8030360:	42b2      	cmp	r2, r6 8030362:	d002      	beq.n	803036a <udp_bind+0x56> 8030364:	3201      	adds	r2, #1 8030366:	b292      	uxth	r2, r2 8030368:	e001      	b.n	803036e <udp_bind+0x5a>    udp_port = UDP_LOCAL_PORT_RANGE_START; 803036a:	f44f 4240 	mov.w	r2, #49152	; 0xc000  }  /* Check all PCBs. */  for(pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 803036e:	4603      	mov	r3, r0 8030370:	e00a      	b.n	8030388 <udp_bind+0x74>    if (pcb->local_port == udp_port) { 8030372:	8a5f      	ldrh	r7, [r3, #18] 8030374:	4297      	cmp	r7, r2 8030376:	d106      	bne.n	8030386 <udp_bind+0x72> 8030378:	3901      	subs	r1, #1 803037a:	b289      	uxth	r1, r1      if (++n > (UDP_LOCAL_PORT_RANGE_END - UDP_LOCAL_PORT_RANGE_START)) { 803037c:	2900      	cmp	r1, #0 803037e:	d1ef      	bne.n	8030360 <udp_bind+0x4c> 8030380:	4b0b      	ldr	r3, [pc, #44]	; (80303b0 <udp_bind+0x9c>) 8030382:	801a      	strh	r2, [r3, #0] 8030384:	e7d4      	b.n	8030330 <udp_bind+0x1c>again:  if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) {    udp_port = UDP_LOCAL_PORT_RANGE_START;  }  /* Check all PCBs. */  for(pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { 8030386:	68db      	ldr	r3, [r3, #12] 8030388:	2b00      	cmp	r3, #0 803038a:	d1f2      	bne.n	8030372 <udp_bind+0x5e> 803038c:	4b08      	ldr	r3, [pc, #32]	; (80303b0 <udp_bind+0x9c>) 803038e:	801a      	strh	r2, [r3, #0]  ip_addr_set(&pcb->local_ip, ipaddr);  /* no port specified? */  if (port == 0) {    port = udp_new_port();    if (port == 0) { 8030390:	2a00      	cmp	r2, #0 8030392:	d0cd      	beq.n	8030330 <udp_bind+0x1c>      /* no more ports available in local range */      LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n"));      return ERR_USE;    }  }  pcb->local_port = port; 8030394:	8262      	strh	r2, [r4, #18]  snmp_insert_udpidx_tree(pcb); 8030396:	4620      	mov	r0, r4 8030398:	f002 f9a8 	bl	80326ec <snmp_insert_udpidx_tree>  /* pcb not active yet? */  if (rebind == 0) { 803039c:	b91d      	cbnz	r5, 80303a6 <udp_bind+0x92>    /* place the PCB on the active list if not already there */    pcb->next = udp_pcbs; 803039e:	4b03      	ldr	r3, [pc, #12]	; (80303ac <udp_bind+0x98>) 80303a0:	681a      	ldr	r2, [r3, #0]    udp_pcbs = pcb; 80303a2:	601c      	str	r4, [r3, #0]  pcb->local_port = port;  snmp_insert_udpidx_tree(pcb);  /* pcb not active yet? */  if (rebind == 0) {    /* place the PCB on the active list if not already there */    pcb->next = udp_pcbs; 80303a4:	60e2      	str	r2, [r4, #12]  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE,              ("udp_bind: bound to %"U16_F".%"U16_F".%"U16_F".%"U16_F", port %"U16_F"\n",               ip4_addr1_16(&pcb->local_ip), ip4_addr2_16(&pcb->local_ip),               ip4_addr3_16(&pcb->local_ip), ip4_addr4_16(&pcb->local_ip),               pcb->local_port));  return ERR_OK; 80303a6:	2000      	movs	r0, #0} 80303a8:	b240      	sxtb	r0, r0 80303aa:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 80303ac:	20011098 	.word	0x20011098 80303b0:	200015f2 	.word	0x200015f2080303b4 <udp_sendto_if>: * @see udp_disconnect() udp_send() */err_tudp_sendto_if(struct udp_pcb *pcb, struct pbuf *p,  ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif){ 80303b4:	e92d 47ff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} 80303b8:	4692      	mov	sl, r2    return ERR_VAL;  }#endif /* IP_SOF_BROADCAST */  /* if the PCB is not yet bound to a port, bind it here */  if (pcb->local_port == 0) { 80303ba:	8a42      	ldrh	r2, [r0, #18] * @see udp_disconnect() udp_send() */err_tudp_sendto_if(struct udp_pcb *pcb, struct pbuf *p,  ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif){ 80303bc:	f8dd 8030 	ldr.w	r8, [sp, #48]	; 0x30 80303c0:	4605      	mov	r5, r0 80303c2:	460e      	mov	r6, r1 80303c4:	4699      	mov	r9, r3    return ERR_VAL;  }#endif /* IP_SOF_BROADCAST */  /* if the PCB is not yet bound to a port, bind it here */  if (pcb->local_port == 0) { 80303c6:	b132      	cbz	r2, 80303d6 <udp_sendto_if+0x22>      return err;    }  }  /* not enough space to add an UDP header to first pbuf in given p chain? */  if (pbuf_header(p, UDP_HLEN)) { 80303c8:	4630      	mov	r0, r6 80303ca:	2108      	movs	r1, #8 80303cc:	f7fd fb27 	bl	802da1e <pbuf_header> 80303d0:	b940      	cbnz	r0, 80303e4 <udp_sendto_if+0x30> 80303d2:	4634      	mov	r4, r6 80303d4:	e013      	b.n	80303fe <udp_sendto_if+0x4a>#endif /* IP_SOF_BROADCAST */  /* if the PCB is not yet bound to a port, bind it here */  if (pcb->local_port == 0) {    LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n"));    err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); 80303d6:	4601      	mov	r1, r0 80303d8:	f7ff ff9c 	bl	8030314 <udp_bind>    if (err != ERR_OK) { 80303dc:	4607      	mov	r7, r0 80303de:	2800      	cmp	r0, #0 80303e0:	d0f2      	beq.n	80303c8 <udp_sendto_if+0x14> 80303e2:	e044      	b.n	803046e <udp_sendto_if+0xba>  }  /* not enough space to add an UDP header to first pbuf in given p chain? */  if (pbuf_header(p, UDP_HLEN)) {    /* allocate header in a separate new pbuf */    q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM); 80303e4:	2001      	movs	r0, #1 80303e6:	2108      	movs	r1, #8 80303e8:	2200      	movs	r2, #0 80303ea:	f7fd fb90 	bl	802db0e <pbuf_alloc>    /* new header pbuf could not be allocated? */    if (q == NULL) { 80303ee:	4604      	mov	r4, r0 80303f0:	2800      	cmp	r0, #0 80303f2:	d039      	beq.n	8030468 <udp_sendto_if+0xb4>      LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n"));      return ERR_MEM;    }    if (p->tot_len != 0) { 80303f4:	8933      	ldrh	r3, [r6, #8] 80303f6:	b113      	cbz	r3, 80303fe <udp_sendto_if+0x4a>      /* chain header q in front of given pbuf p (only if p contains data) */      pbuf_chain(q, p); 80303f8:	4631      	mov	r1, r6 80303fa:	f7fd fc36 	bl	802dc6a <pbuf_chain>  }  LWIP_ASSERT("check that first pbuf can hold struct udp_hdr",              (q->len >= sizeof(struct udp_hdr)));  /* q now represents the packet to be sent */  udphdr = (struct udp_hdr *)q->payload;  udphdr->src = htons(pcb->local_port); 80303fe:	8a68      	ldrh	r0, [r5, #18]    LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p));  }  LWIP_ASSERT("check that first pbuf can hold struct udp_hdr",              (q->len >= sizeof(struct udp_hdr)));  /* q now represents the packet to be sent */  udphdr = (struct udp_hdr *)q->payload; 8030400:	6867      	ldr	r7, [r4, #4]  udphdr->src = htons(pcb->local_port); 8030402:	f7fc f9f9 	bl	802c7f8 <lwip_htons> 8030406:	8038      	strh	r0, [r7, #0]  udphdr->dest = htons(dst_port); 8030408:	4648      	mov	r0, r9 803040a:	f7fc f9f5 	bl	802c7f8 <lwip_htons>  /* in UDP, 0 checksum means 'no checksum' */  udphdr->chksum = 0x0000;  803040e:	2300      	movs	r3, #0  LWIP_ASSERT("check that first pbuf can hold struct udp_hdr",              (q->len >= sizeof(struct udp_hdr)));  /* q now represents the packet to be sent */  udphdr = (struct udp_hdr *)q->payload;  udphdr->src = htons(pcb->local_port);  udphdr->dest = htons(dst_port); 8030410:	8078      	strh	r0, [r7, #2]  /* in UDP, 0 checksum means 'no checksum' */  udphdr->chksum = 0x0000;  8030412:	71bb      	strb	r3, [r7, #6] 8030414:	71fb      	strb	r3, [r7, #7]  }#endif /* LWIP_IGMP */  /* PCB local address is IP_ANY_ADDR? */  if (ip_addr_isany(&pcb->local_ip)) { 8030416:	682b      	ldr	r3, [r5, #0] 8030418:	b913      	cbnz	r3, 8030420 <udp_sendto_if+0x6c>    /* use outgoing network interface IP address as source address */    src_ip = &(netif->ip_addr); 803041a:	f108 0904 	add.w	r9, r8, #4 803041e:	e00a      	b.n	8030436 <udp_sendto_if+0x82>  } else {    /* check if UDP PCB local IP address is correct     * this could be an old address if netif->ip_addr has changed */    if (!ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) { 8030420:	f8d8 2004 	ldr.w	r2, [r8, #4] 8030424:	4293      	cmp	r3, r2 8030426:	d005      	beq.n	8030434 <udp_sendto_if+0x80>      /* local_ip doesn't match, drop the packet */      if (q != p) { 8030428:	42b4      	cmp	r4, r6 803042a:	d01f      	beq.n	803046c <udp_sendto_if+0xb8>        /* free the header pbuf */        pbuf_free(q); 803042c:	4620      	mov	r0, r4 803042e:	f7fd fb21 	bl	802da74 <pbuf_free> 8030432:	e01b      	b.n	803046c <udp_sendto_if+0xb8>  }#endif /* LWIP_IGMP */  /* PCB local address is IP_ANY_ADDR? */  if (ip_addr_isany(&pcb->local_ip)) { 8030434:	46a9      	mov	r9, r5    NETIF_SET_HWADDRHINT(netif, NULL);  } else#endif /* LWIP_UDPLITE */  {      /* UDP */    LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len));    udphdr->len = htons(q->tot_len); 8030436:	8920      	ldrh	r0, [r4, #8] 8030438:	f7fc f9de 	bl	802c7f8 <lwip_htons> 803043c:	80b8      	strh	r0, [r7, #4]#endif /* CHECKSUM_GEN_UDP */    LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum));    LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDP,)\n"));    /* output to IP */    NETIF_SET_HWADDRHINT(netif, &pcb->addr_hint);    err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDP, netif); 803043e:	7a6a      	ldrb	r2, [r5, #9] 8030440:	7aab      	ldrb	r3, [r5, #10] 8030442:	9200      	str	r2, [sp, #0] 8030444:	2211      	movs	r2, #17 8030446:	9201      	str	r2, [sp, #4] 8030448:	4649      	mov	r1, r9 803044a:	4652      	mov	r2, sl 803044c:	f8cd 8008 	str.w	r8, [sp, #8] 8030450:	4620      	mov	r0, r4 8030452:	f000 fb9d 	bl	8030b90 <ip_output_if> 8030456:	4607      	mov	r7, r0    NETIF_SET_HWADDRHINT(netif, NULL);  }  /* TODO: must this be increased even if error occured? */  snmp_inc_udpoutdatagrams(); 8030458:	f002 f940 	bl	80326dc <snmp_inc_udpoutdatagrams>  /* did we chain a separate header pbuf earlier? */  if (q != p) { 803045c:	42b4      	cmp	r4, r6 803045e:	d006      	beq.n	803046e <udp_sendto_if+0xba>    /* free the header pbuf */    pbuf_free(q); 8030460:	4620      	mov	r0, r4 8030462:	f7fd fb07 	bl	802da74 <pbuf_free> 8030466:	e002      	b.n	803046e <udp_sendto_if+0xba>    /* allocate header in a separate new pbuf */    q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM);    /* new header pbuf could not be allocated? */    if (q == NULL) {      LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n"));      return ERR_MEM; 8030468:	27ff      	movs	r7, #255	; 0xff 803046a:	e000      	b.n	803046e <udp_sendto_if+0xba>        /* free the header pbuf */        pbuf_free(q);        q = NULL;        /* p is still referenced by the caller, and will live on */      }      return ERR_VAL; 803046c:	27fa      	movs	r7, #250	; 0xfa    /* p is still referenced by the caller, and will live on */  }  UDP_STATS_INC(udp.xmit);  return err;} 803046e:	b278      	sxtb	r0, r7 8030470:	b004      	add	sp, #16 8030472:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}08030476 <udp_sendto>: * @see udp_disconnect() udp_send() */err_tudp_sendto(struct udp_pcb *pcb, struct pbuf *p,  ip_addr_t *dst_ip, u16_t dst_port){ 8030476:	b5f7      	push	{r0, r1, r2, r4, r5, r6, r7, lr} 8030478:	4605      	mov	r5, r0  /* find the outgoing network interface for this packet */#if LWIP_IGMP  netif = ip_route((ip_addr_ismulticast(dst_ip))?(&(pcb->multicast_ip)):(dst_ip));#else  netif = ip_route(dst_ip); 803047a:	4610      	mov	r0, r2 * @see udp_disconnect() udp_send() */err_tudp_sendto(struct udp_pcb *pcb, struct pbuf *p,  ip_addr_t *dst_ip, u16_t dst_port){ 803047c:	460f      	mov	r7, r1 803047e:	4614      	mov	r4, r2 8030480:	461e      	mov	r6, r3  /* find the outgoing network interface for this packet */#if LWIP_IGMP  netif = ip_route((ip_addr_ismulticast(dst_ip))?(&(pcb->multicast_ip)):(dst_ip));#else  netif = ip_route(dst_ip); 8030482:	f000 fa81 	bl	8030988 <ip_route>#endif /* LWIP_IGMP */  /* no outgoing network interface could be found? */  if (netif == NULL) { 8030486:	b138      	cbz	r0, 8030498 <udp_sendto+0x22>    return ERR_RTE;  }#if LWIP_CHECKSUM_ON_COPY  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);#else /* LWIP_CHECKSUM_ON_COPY */  return udp_sendto_if(pcb, p, dst_ip, dst_port, netif); 8030488:	9000      	str	r0, [sp, #0] 803048a:	4639      	mov	r1, r7 803048c:	4628      	mov	r0, r5 803048e:	4622      	mov	r2, r4 8030490:	4633      	mov	r3, r6 8030492:	f7ff ff8f 	bl	80303b4 <udp_sendto_if> 8030496:	e000      	b.n	803049a <udp_sendto+0x24>  /* no outgoing network interface could be found? */  if (netif == NULL) {    LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",      ip4_addr1_16(dst_ip), ip4_addr2_16(dst_ip), ip4_addr3_16(dst_ip), ip4_addr4_16(dst_ip)));    UDP_STATS_INC(udp.rterr);    return ERR_RTE; 8030498:	20fc      	movs	r0, #252	; 0xfc#if LWIP_CHECKSUM_ON_COPY  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);#else /* LWIP_CHECKSUM_ON_COPY */  return udp_sendto_if(pcb, p, dst_ip, dst_port, netif);#endif /* LWIP_CHECKSUM_ON_COPY */} 803049a:	b240      	sxtb	r0, r0 803049c:	bdfe      	pop	{r1, r2, r3, r4, r5, r6, r7, pc}0803049e <udp_send>: */err_tudp_send(struct udp_pcb *pcb, struct pbuf *p){  /* send to the packet using remote ip and port stored in the pcb */  return udp_sendto(pcb, p, &pcb->remote_ip, pcb->remote_port); 803049e:	8a83      	ldrh	r3, [r0, #20] 80304a0:	1d02      	adds	r2, r0, #4 80304a2:	f7ff bfe8 	b.w	8030476 <udp_sendto> 80304a6:	0000      	movs	r0, r0080304a8 <udp_connect>: * * @see udp_disconnect() */err_tudp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 80304a8:	b570      	push	{r4, r5, r6, lr} 80304aa:	4616      	mov	r6, r2  struct udp_pcb *ipcb;  if (pcb->local_port == 0) { 80304ac:	8a42      	ldrh	r2, [r0, #18] * * @see udp_disconnect() */err_tudp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){ 80304ae:	4604      	mov	r4, r0 80304b0:	460d      	mov	r5, r1  struct udp_pcb *ipcb;  if (pcb->local_port == 0) { 80304b2:	b10a      	cbz	r2, 80304b8 <udp_connect+0x10>    if (err != ERR_OK) {      return err;    }  }  ip_addr_set(&pcb->remote_ip, ipaddr); 80304b4:	b935      	cbnz	r5, 80304c4 <udp_connect+0x1c> 80304b6:	e006      	b.n	80304c6 <udp_connect+0x1e>udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port){  struct udp_pcb *ipcb;  if (pcb->local_port == 0) {    err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); 80304b8:	4601      	mov	r1, r0 80304ba:	f7ff ff2b 	bl	8030314 <udp_bind>    if (err != ERR_OK) { 80304be:	2800      	cmp	r0, #0 80304c0:	d0f8      	beq.n	80304b4 <udp_connect+0xc> 80304c2:	e013      	b.n	80304ec <udp_connect+0x44>      return err;    }  }  ip_addr_set(&pcb->remote_ip, ipaddr); 80304c4:	682d      	ldr	r5, [r5, #0]  pcb->remote_port = port;  pcb->flags |= UDP_FLAGS_CONNECTED; 80304c6:	7c23      	ldrb	r3, [r4, #16]               ip4_addr1_16(&pcb->local_ip), ip4_addr2_16(&pcb->local_ip),               ip4_addr3_16(&pcb->local_ip), ip4_addr4_16(&pcb->local_ip),               pcb->local_port));  /* Insert UDP PCB into the list of active UDP PCBs. */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 80304c8:	4a09      	ldr	r2, [pc, #36]	; (80304f0 <udp_connect+0x48>)    if (err != ERR_OK) {      return err;    }  }  ip_addr_set(&pcb->remote_ip, ipaddr); 80304ca:	6065      	str	r5, [r4, #4]  pcb->remote_port = port;  pcb->flags |= UDP_FLAGS_CONNECTED; 80304cc:	f043 0304 	orr.w	r3, r3, #4 80304d0:	7423      	strb	r3, [r4, #16]               ip4_addr1_16(&pcb->local_ip), ip4_addr2_16(&pcb->local_ip),               ip4_addr3_16(&pcb->local_ip), ip4_addr4_16(&pcb->local_ip),               pcb->local_port));  /* Insert UDP PCB into the list of active UDP PCBs. */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 80304d2:	6813      	ldr	r3, [r2, #0]      return err;    }  }  ip_addr_set(&pcb->remote_ip, ipaddr);  pcb->remote_port = port; 80304d4:	82a6      	strh	r6, [r4, #20]               ip4_addr1_16(&pcb->local_ip), ip4_addr2_16(&pcb->local_ip),               ip4_addr3_16(&pcb->local_ip), ip4_addr4_16(&pcb->local_ip),               pcb->local_port));  /* Insert UDP PCB into the list of active UDP PCBs. */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 80304d6:	4618      	mov	r0, r3 80304d8:	e002      	b.n	80304e0 <udp_connect+0x38>    if (pcb == ipcb) { 80304da:	4284      	cmp	r4, r0 80304dc:	d005      	beq.n	80304ea <udp_connect+0x42>               ip4_addr1_16(&pcb->local_ip), ip4_addr2_16(&pcb->local_ip),               ip4_addr3_16(&pcb->local_ip), ip4_addr4_16(&pcb->local_ip),               pcb->local_port));  /* Insert UDP PCB into the list of active UDP PCBs. */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { 80304de:	68c0      	ldr	r0, [r0, #12] 80304e0:	2800      	cmp	r0, #0 80304e2:	d1fa      	bne.n	80304da <udp_connect+0x32>      /* already on the list, just return */      return ERR_OK;    }  }  /* PCB not yet on the list, add PCB now */  pcb->next = udp_pcbs; 80304e4:	60e3      	str	r3, [r4, #12]  udp_pcbs = pcb; 80304e6:	6014      	str	r4, [r2, #0]  return ERR_OK; 80304e8:	e000      	b.n	80304ec <udp_connect+0x44>  /* Insert UDP PCB into the list of active UDP PCBs. */  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {    if (pcb == ipcb) {      /* already on the list, just return */      return ERR_OK; 80304ea:	2000      	movs	r0, #0  }  /* PCB not yet on the list, add PCB now */  pcb->next = udp_pcbs;  udp_pcbs = pcb;  return ERR_OK;} 80304ec:	b240      	sxtb	r0, r0 80304ee:	bd70      	pop	{r4, r5, r6, pc} 80304f0:	20011098 	.word	0x20011098080304f4 <udp_disconnect>: */voidudp_disconnect(struct udp_pcb *pcb){  /* reset remote address association */  ip_addr_set_any(&pcb->remote_ip); 80304f4:	2300      	movs	r3, #0 80304f6:	6043      	str	r3, [r0, #4]  pcb->remote_port = 0; 80304f8:	8283      	strh	r3, [r0, #20]  /* mark PCB as unconnected */  pcb->flags &= ~UDP_FLAGS_CONNECTED; 80304fa:	7c03      	ldrb	r3, [r0, #16] 80304fc:	f023 0304 	bic.w	r3, r3, #4 8030500:	7403      	strb	r3, [r0, #16] 8030502:	4770      	bx	lr08030504 <udp_recv>: */voidudp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg){  /* remember recv() callback and user data */  pcb->recv = recv; 8030504:	6181      	str	r1, [r0, #24]  pcb->recv_arg = recv_arg; 8030506:	61c2      	str	r2, [r0, #28] 8030508:	4770      	bx	lr 803050a:	0000      	movs	r0, r00803050c <udp_remove>: * * @see udp_new() */voidudp_remove(struct udp_pcb *pcb){ 803050c:	b510      	push	{r4, lr} 803050e:	4604      	mov	r4, r0  struct udp_pcb *pcb2;  snmp_delete_udpidx_tree(pcb); 8030510:	f002 f930 	bl	8032774 <snmp_delete_udpidx_tree>  /* pcb to be removed is first in list? */  if (udp_pcbs == pcb) { 8030514:	4a0a      	ldr	r2, [pc, #40]	; (8030540 <udp_remove+0x34>) 8030516:	6813      	ldr	r3, [r2, #0] 8030518:	42a3      	cmp	r3, r4 803051a:	d109      	bne.n	8030530 <udp_remove+0x24>    /* make list start at 2nd pcb */    udp_pcbs = udp_pcbs->next; 803051c:	68e3      	ldr	r3, [r4, #12] 803051e:	6013      	str	r3, [r2, #0] 8030520:	e008      	b.n	8030534 <udp_remove+0x28>    /* pcb not 1st in list */  } else {    for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) {      /* find pcb in udp_pcbs list */      if (pcb2->next != NULL && pcb2->next == pcb) { 8030522:	68da      	ldr	r2, [r3, #12] 8030524:	b11a      	cbz	r2, 803052e <udp_remove+0x22> 8030526:	42a2      	cmp	r2, r4        /* remove pcb from list */        pcb2->next = pcb->next; 8030528:	bf04      	itt	eq 803052a:	68e2      	ldreq	r2, [r4, #12] 803052c:	60da      	streq	r2, [r3, #12]  if (udp_pcbs == pcb) {    /* make list start at 2nd pcb */    udp_pcbs = udp_pcbs->next;    /* pcb not 1st in list */  } else {    for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { 803052e:	68db      	ldr	r3, [r3, #12] 8030530:	2b00      	cmp	r3, #0 8030532:	d1f6      	bne.n	8030522 <udp_remove+0x16>        /* remove pcb from list */        pcb2->next = pcb->next;      }    }  }  memp_free(MEMP_UDP_PCB, pcb); 8030534:	2001      	movs	r0, #1 8030536:	4621      	mov	r1, r4} 8030538:	e8bd 4010 	ldmia.w	sp!, {r4, lr}        /* remove pcb from list */        pcb2->next = pcb->next;      }    }  }  memp_free(MEMP_UDP_PCB, pcb); 803053c:	f7fd b990 	b.w	802d860 <memp_free> 8030540:	20011098 	.word	0x2001109808030544 <udp_new>: * * @see udp_remove() */struct udp_pcb *udp_new(void){ 8030544:	b510      	push	{r4, lr}  struct udp_pcb *pcb;  pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB); 8030546:	2001      	movs	r0, #1 8030548:	f7fd f974 	bl	802d834 <memp_malloc>  /* could allocate UDP PCB? */  if (pcb != NULL) { 803054c:	4604      	mov	r4, r0 803054e:	b128      	cbz	r0, 803055c <udp_new+0x18>    /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0     * which means checksum is generated over the whole datagram per default     * (recommended as default by RFC 3828). */    /* initialize PCB to all zeroes */    memset(pcb, 0, sizeof(struct udp_pcb)); 8030550:	2100      	movs	r1, #0 8030552:	2220      	movs	r2, #32 8030554:	f7f1 fab4 	bl	8021ac0 <memset>    pcb->ttl = UDP_TTL; 8030558:	23ff      	movs	r3, #255	; 0xff 803055a:	72a3      	strb	r3, [r4, #10]  }  return pcb;} 803055c:	4620      	mov	r0, r4 803055e:	bd10      	pop	{r4, pc}08030560 <icmp_input>: * @param p the icmp echo request packet, p->payload pointing to the ip header * @param inp the netif on which this packet was received */voidicmp_input(struct pbuf *p, struct netif *inp){ 8030560:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr} 8030564:	4604      	mov	r4, r0 8030566:	b085      	sub	sp, #20 8030568:	460f      	mov	r7, r1  struct icmp_echo_hdr *iecho;  struct ip_hdr *iphdr;  s16_t hlen;  ICMP_STATS_INC(icmp.recv);  snmp_inc_icmpinmsgs(); 803056a:	f002 f837 	bl	80325dc <snmp_inc_icmpinmsgs>  iphdr = (struct ip_hdr *)p->payload; 803056e:	6865      	ldr	r5, [r4, #4]  hlen = IPH_HL(iphdr) * 4; 8030570:	f895 8000 	ldrb.w	r8, [r5] 8030574:	f008 080f 	and.w	r8, r8, #15 8030578:	ea4f 0888 	mov.w	r8, r8, lsl #2  if (pbuf_header(p, -hlen) || (p->tot_len < sizeof(u16_t)*2)) { 803057c:	f1c8 0900 	rsb	r9, r8, #0 8030580:	4620      	mov	r0, r4 8030582:	fa0f f189 	sxth.w	r1, r9 8030586:	f7fd fa4a 	bl	802da1e <pbuf_header> 803058a:	2800      	cmp	r0, #0 803058c:	d172      	bne.n	8030674 <icmp_input+0x114> 803058e:	8923      	ldrh	r3, [r4, #8] 8030590:	2b03      	cmp	r3, #3 8030592:	d96f      	bls.n	8030674 <icmp_input+0x114>    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len));    goto lenerr;  }  type = *((u8_t *)p->payload); 8030594:	6863      	ldr	r3, [r4, #4]#ifdef LWIP_DEBUG  code = *(((u8_t *)p->payload)+1);#endif /* LWIP_DEBUG */  switch (type) { 8030596:	781b      	ldrb	r3, [r3, #0] 8030598:	2b08      	cmp	r3, #8 803059a:	d165      	bne.n	8030668 <icmp_input+0x108>#if !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING    {      int accepted = 1;#if !LWIP_MULTICAST_PING      /* multicast destination address? */      if (ip_addr_ismulticast(¤t_iphdr_dest)) { 803059c:	4b39      	ldr	r3, [pc, #228]	; (8030684 <icmp_input+0x124>) 803059e:	681e      	ldr	r6, [r3, #0]        accepted = 0;      }#endif /* LWIP_MULTICAST_PING */#if !LWIP_BROADCAST_PING      /* broadcast destination address? */      if (ip_addr_isbroadcast(¤t_iphdr_dest, inp)) { 80305a0:	4639      	mov	r1, r7 80305a2:	4630      	mov	r0, r6 80305a4:	f000 f900 	bl	80307a8 <ip4_addr_isbroadcast> 80305a8:	2800      	cmp	r0, #0 80305aa:	d15d      	bne.n	8030668 <icmp_input+0x108>#if !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING    {      int accepted = 1;#if !LWIP_MULTICAST_PING      /* multicast destination address? */      if (ip_addr_ismulticast(¤t_iphdr_dest)) { 80305ac:	f006 06f0 	and.w	r6, r6, #240	; 0xf0      if (ip_addr_isbroadcast(¤t_iphdr_dest, inp)) {        accepted = 0;      }#endif /* LWIP_BROADCAST_PING */      /* broadcast or multicast destination address not acceptd? */      if (!accepted) { 80305b0:	2ee0      	cmp	r6, #224	; 0xe0 80305b2:	d100      	bne.n	80305b6 <icmp_input+0x56> 80305b4:	e058      	b.n	8030668 <icmp_input+0x108>        return;      }    }#endif /* !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n"));    if (p->tot_len < sizeof(struct icmp_echo_hdr)) { 80305b6:	8923      	ldrh	r3, [r4, #8] 80305b8:	2b07      	cmp	r3, #7 80305ba:	d95b      	bls.n	8030674 <icmp_input+0x114>      LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n"));      goto lenerr;    }    if (inet_chksum_pbuf(p) != 0) { 80305bc:	4620      	mov	r0, r4 80305be:	f000 f8cf 	bl	8030760 <inet_chksum_pbuf> 80305c2:	b100      	cbz	r0, 80305c6 <icmp_input+0x66> 80305c4:	e056      	b.n	8030674 <icmp_input+0x114>      ICMP_STATS_INC(icmp.chkerr);      snmp_inc_icmpinerrors();      return;    }#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN    if (pbuf_header(p, (PBUF_IP_HLEN + PBUF_LINK_HLEN))) { 80305c6:	4620      	mov	r0, r4 80305c8:	2122      	movs	r1, #34	; 0x22  ICMP_STATS_INC(icmp.recv);  snmp_inc_icmpinmsgs();  iphdr = (struct ip_hdr *)p->payload;  hlen = IPH_HL(iphdr) * 4; 80305ca:	fa1f f888 	uxth.w	r8, r8      ICMP_STATS_INC(icmp.chkerr);      snmp_inc_icmpinerrors();      return;    }#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN    if (pbuf_header(p, (PBUF_IP_HLEN + PBUF_LINK_HLEN))) { 80305ce:	f7fd fa26 	bl	802da1e <pbuf_header> 80305d2:	b1f8      	cbz	r0, 8030614 <icmp_input+0xb4>      /* p is not big enough to contain link headers       * allocate a new one and copy p into it       */      struct pbuf *r;      /* switch p->payload to ip header */      if (pbuf_header(p, hlen)) { 80305d4:	4620      	mov	r0, r4 80305d6:	4641      	mov	r1, r8 80305d8:	f7fd fa21 	bl	802da1e <pbuf_header> 80305dc:	4602      	mov	r2, r0 80305de:	2800      	cmp	r0, #0 80305e0:	d148      	bne.n	8030674 <icmp_input+0x114>        LWIP_ASSERT("icmp_input: moving p->payload to ip header failed\n", 0);        goto memerr;      }      /* allocate new packet buffer with space for link headers */      r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); 80305e2:	2002      	movs	r0, #2 80305e4:	8921      	ldrh	r1, [r4, #8] 80305e6:	f7fd fa92 	bl	802db0e <pbuf_alloc>      if (r == NULL) { 80305ea:	4606      	mov	r6, r0 80305ec:	2800      	cmp	r0, #0 80305ee:	d041      	beq.n	8030674 <icmp_input+0x114>        goto memerr;      }      LWIP_ASSERT("check that first pbuf can hold struct the ICMP header",                  (r->len >= hlen + sizeof(struct icmp_echo_hdr)));      /* copy the whole packet including ip header */      if (pbuf_copy(r, p) != ERR_OK) { 80305f0:	4621      	mov	r1, r4 80305f2:	f7fd fb43 	bl	802dc7c <pbuf_copy> 80305f6:	2800      	cmp	r0, #0 80305f8:	d13c      	bne.n	8030674 <icmp_input+0x114>        LWIP_ASSERT("icmp_input: copying to new pbuf failed\n", 0);        goto memerr;      }      iphdr = (struct ip_hdr *)r->payload;      /* switch r->payload back to icmp header */      if (pbuf_header(r, -hlen)) { 80305fa:	4630      	mov	r0, r6 80305fc:	fa0f f189 	sxth.w	r1, r9      /* copy the whole packet including ip header */      if (pbuf_copy(r, p) != ERR_OK) {        LWIP_ASSERT("icmp_input: copying to new pbuf failed\n", 0);        goto memerr;      }      iphdr = (struct ip_hdr *)r->payload; 8030600:	6875      	ldr	r5, [r6, #4]      /* switch r->payload back to icmp header */      if (pbuf_header(r, -hlen)) { 8030602:	f7fd fa0c 	bl	802da1e <pbuf_header> 8030606:	2800      	cmp	r0, #0 8030608:	d134      	bne.n	8030674 <icmp_input+0x114>        LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0);        goto memerr;      }      /* free the original p */      pbuf_free(p); 803060a:	4620      	mov	r0, r4 803060c:	f7fd fa32 	bl	802da74 <pbuf_free> 8030610:	4634      	mov	r4, r6 8030612:	e006      	b.n	8030622 <icmp_input+0xc2>      /* we now have an identical copy of p that has room for link headers */      p = r;    } else {      /* restore p->payload to point to icmp header */      if (pbuf_header(p, -(s16_t)(PBUF_IP_HLEN + PBUF_LINK_HLEN))) { 8030614:	4620      	mov	r0, r4 8030616:	f06f 0121 	mvn.w	r1, #33	; 0x21 803061a:	f7fd fa00 	bl	802da1e <pbuf_header> 803061e:	2800      	cmp	r0, #0 8030620:	d128      	bne.n	8030674 <icmp_input+0x114>#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */    /* At this point, all checks are OK. */    /* We generate an answer by switching the dest and src ip addresses,     * setting the icmp type to ECHO_RESPONSE and updating the checksum. */    iecho = (struct icmp_echo_hdr *)p->payload;    ip_addr_copy(iphdr->src, *ip_current_dest_addr()); 8030622:	f8df 9060 	ldr.w	r9, [pc, #96]	; 8030684 <icmp_input+0x124>    }#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */    /* At this point, all checks are OK. */    /* We generate an answer by switching the dest and src ip addresses,     * setting the icmp type to ECHO_RESPONSE and updating the checksum. */    iecho = (struct icmp_echo_hdr *)p->payload; 8030626:	6863      	ldr	r3, [r4, #4]    ip_addr_copy(iphdr->src, *ip_current_dest_addr()); 8030628:	f8d9 2000 	ldr.w	r2, [r9] 803062c:	60ea      	str	r2, [r5, #12]    ip_addr_copy(iphdr->dest, *ip_current_src_addr()); 803062e:	4a16      	ldr	r2, [pc, #88]	; (8030688 <icmp_input+0x128>) 8030630:	6812      	ldr	r2, [r2, #0]#else // CHECKSUM_GEN_ICMP     iecho->chksum = 0;#endif // CHECKSUM_GEN_ICMP */    /* Set the correct TTL and recalculate the header checksum. */    IPH_TTL_SET(iphdr, ICMP_TTL); 8030632:	26ff      	movs	r6, #255	; 0xff    /* At this point, all checks are OK. */    /* We generate an answer by switching the dest and src ip addresses,     * setting the icmp type to ECHO_RESPONSE and updating the checksum. */    iecho = (struct icmp_echo_hdr *)p->payload;    ip_addr_copy(iphdr->src, *ip_current_dest_addr());    ip_addr_copy(iphdr->dest, *ip_current_src_addr()); 8030634:	612a      	str	r2, [r5, #16]    ICMPH_TYPE_SET(iecho, ICMP_ER); 8030636:	2200      	movs	r2, #0 8030638:	701a      	strb	r2, [r3, #0]//-----------------------------------------------------------    // Добавил фикс 15.08.15.// Фикс исправляет баг с пингом.    #ifdef CHECKSUM_BY_HARDWARE    iecho->chksum = 0; 803063a:	709a      	strb	r2, [r3, #2] 803063c:	70da      	strb	r2, [r3, #3]    iecho->chksum = 0;#endif // CHECKSUM_GEN_ICMP */    /* Set the correct TTL and recalculate the header checksum. */    IPH_TTL_SET(iphdr, ICMP_TTL);    IPH_CHKSUM_SET(iphdr, 0); 803063e:	72aa      	strb	r2, [r5, #10] 8030640:	72ea      	strb	r2, [r5, #11]#else // CHECKSUM_GEN_ICMP     iecho->chksum = 0;#endif // CHECKSUM_GEN_ICMP */    /* Set the correct TTL and recalculate the header checksum. */    IPH_TTL_SET(iphdr, ICMP_TTL); 8030642:	722e      	strb	r6, [r5, #8]    IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN));#endif /* CHECKSUM_GEN_IP */    ICMP_STATS_INC(icmp.xmit);    /* increase number of messages attempted to send */    snmp_inc_icmpoutmsgs(); 8030644:	f001 ffda 	bl	80325fc <snmp_inc_icmpoutmsgs>    /* increase number of echo replies attempted to send */    snmp_inc_icmpoutechoreps(); 8030648:	f001 ffe8 	bl	803261c <snmp_inc_icmpoutechoreps>    if(pbuf_header(p, hlen)) { 803064c:	4620      	mov	r0, r4 803064e:	4641      	mov	r1, r8 8030650:	f7fd f9e5 	bl	802da1e <pbuf_header> 8030654:	4602      	mov	r2, r0 8030656:	b938      	cbnz	r0, 8030668 <icmp_input+0x108>      LWIP_ASSERT("Can't move over header in packet", 0);    } else {      err_t ret;      /* send an ICMP packet, src addr is the dest addr of the curren packet */      ret = ip_output_if(p, ip_current_dest_addr(), IP_HDRINCL, 8030658:	2301      	movs	r3, #1 803065a:	e88d 0089 	stmia.w	sp, {r0, r3, r7} 803065e:	4620      	mov	r0, r4 8030660:	4649      	mov	r1, r9 8030662:	4633      	mov	r3, r6 8030664:	f000 fa94 	bl	8030b90 <ip_output_if>    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n",                 (s16_t)type, (s16_t)code));    ICMP_STATS_INC(icmp.proterr);    ICMP_STATS_INC(icmp.drop);  }  pbuf_free(p); 8030668:	4620      	mov	r0, r4  pbuf_free(p);  ICMP_STATS_INC(icmp.err);  snmp_inc_icmpinerrors();  return;#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */} 803066a:	b005      	add	sp, #20 803066c:	e8bd 43f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, lr}    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n",                 (s16_t)type, (s16_t)code));    ICMP_STATS_INC(icmp.proterr);    ICMP_STATS_INC(icmp.drop);  }  pbuf_free(p); 8030670:	f7fd ba00 	b.w	802da74 <pbuf_free>  ICMP_STATS_INC(icmp.lenerr);  snmp_inc_icmpinerrors();  return;#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LENmemerr:  pbuf_free(p); 8030674:	4620      	mov	r0, r4 8030676:	f7fd f9fd 	bl	802da74 <pbuf_free>  ICMP_STATS_INC(icmp.err);  snmp_inc_icmpinerrors();  return;#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */} 803067a:	b005      	add	sp, #20 803067c:	e8bd 43f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, lr}  return;#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LENmemerr:  pbuf_free(p);  ICMP_STATS_INC(icmp.err);  snmp_inc_icmpinerrors(); 8030680:	f001 bfb4 	b.w	80325ec <snmp_inc_icmpinerrors> 8030684:	200110a4 	.word	0x200110a4 8030688:	2001109c 	.word	0x2001109c0803068c <icmp_dest_unreach>: *          p->payload pointing to the IP header * @param t type of the 'unreachable' packet */voidicmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t){ 803068c:	e92d 41ff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr} 8030690:	4607      	mov	r7, r0 8030692:	460d      	mov	r5, r1  /* we can use the echo header here */  struct icmp_echo_hdr *icmphdr;  ip_addr_t iphdr_src;  /* ICMP header + IP header + 8 bytes of data */  q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE, 8030694:	2001      	movs	r0, #1 8030696:	2124      	movs	r1, #36	; 0x24 8030698:	2200      	movs	r2, #0 803069a:	f7fd fa38 	bl	802db0e <pbuf_alloc>                 PBUF_RAM);  if (q == NULL) { 803069e:	4606      	mov	r6, r0 80306a0:	b358      	cbz	r0, 80306fa <icmp_dest_unreach+0x6e>  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->src));  LWIP_DEBUGF(ICMP_DEBUG, (" to "));  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest));  LWIP_DEBUGF(ICMP_DEBUG, ("\n"));  icmphdr = (struct icmp_echo_hdr *)q->payload; 80306a2:	6844      	ldr	r4, [r0, #4]    return;  }  LWIP_ASSERT("check that first pbuf can hold icmp message",             (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE)));  iphdr = (struct ip_hdr *)p->payload; 80306a4:	f8d7 8004 	ldr.w	r8, [r7, #4]  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest));  LWIP_DEBUGF(ICMP_DEBUG, ("\n"));  icmphdr = (struct icmp_echo_hdr *)q->payload;  icmphdr->type = type;  icmphdr->code = code; 80306a8:	7065      	strb	r5, [r4, #1]  LWIP_DEBUGF(ICMP_DEBUG, (" to "));  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest));  LWIP_DEBUGF(ICMP_DEBUG, ("\n"));  icmphdr = (struct icmp_echo_hdr *)q->payload;  icmphdr->type = type; 80306aa:	2303      	movs	r3, #3  icmphdr->code = code;  icmphdr->id = 0; 80306ac:	2500      	movs	r5, #0  LWIP_DEBUGF(ICMP_DEBUG, (" to "));  ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest));  LWIP_DEBUGF(ICMP_DEBUG, ("\n"));  icmphdr = (struct icmp_echo_hdr *)q->payload;  icmphdr->type = type; 80306ae:	7023      	strb	r3, [r4, #0]  icmphdr->code = code;  icmphdr->id = 0; 80306b0:	7125      	strb	r5, [r4, #4] 80306b2:	7165      	strb	r5, [r4, #5]  icmphdr->seqno = 0; 80306b4:	71a5      	strb	r5, [r4, #6] 80306b6:	71e5      	strb	r5, [r4, #7]  /* copy fields from original packet */  SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload, 80306b8:	6840      	ldr	r0, [r0, #4] 80306ba:	6879      	ldr	r1, [r7, #4] 80306bc:	221c      	movs	r2, #28 80306be:	3008      	adds	r0, #8 80306c0:	f7f1 f944 	bl	802194c <memcpy>          IP_HLEN + ICMP_DEST_UNREACH_DATASIZE);  /* calculate checksum */  icmphdr->chksum = 0; 80306c4:	70a5      	strb	r5, [r4, #2] 80306c6:	70e5      	strb	r5, [r4, #3]  icmphdr->chksum = inet_chksum(icmphdr, q->len); 80306c8:	8971      	ldrh	r1, [r6, #10] 80306ca:	4620      	mov	r0, r4 80306cc:	f000 f842 	bl	8030754 <inet_chksum> 80306d0:	8060      	strh	r0, [r4, #2]  ICMP_STATS_INC(icmp.xmit);  /* increase number of messages attempted to send */  snmp_inc_icmpoutmsgs(); 80306d2:	f001 ff93 	bl	80325fc <snmp_inc_icmpoutmsgs>  /* increase number of destination unreachable messages attempted to send */  snmp_inc_icmpouttimeexcds(); 80306d6:	f001 ff99 	bl	803260c <snmp_inc_icmpouttimeexcds>  ip_addr_copy(iphdr_src, iphdr->src); 80306da:	f8d8 300c 	ldr.w	r3, [r8, #12] 80306de:	aa04      	add	r2, sp, #16  ip_output(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP); 80306e0:	4630      	mov	r0, r6  ICMP_STATS_INC(icmp.xmit);  /* increase number of messages attempted to send */  snmp_inc_icmpoutmsgs();  /* increase number of destination unreachable messages attempted to send */  snmp_inc_icmpouttimeexcds();  ip_addr_copy(iphdr_src, iphdr->src); 80306e2:	f842 3d04 	str.w	r3, [r2, #-4]!  ip_output(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP); 80306e6:	2301      	movs	r3, #1 80306e8:	9301      	str	r3, [sp, #4] 80306ea:	9500      	str	r5, [sp, #0] 80306ec:	4629      	mov	r1, r5 80306ee:	23ff      	movs	r3, #255	; 0xff 80306f0:	f000 fa9e 	bl	8030c30 <ip_output>  pbuf_free(q); 80306f4:	4630      	mov	r0, r6 80306f6:	f7fd f9bd 	bl	802da74 <pbuf_free> */voidicmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t){  icmp_send_response(p, ICMP_DUR, t);} 80306fa:	e8bd 81ff 	ldmia.w	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, pc}080306fe <lwip_standard_chksum>: * @return host order (!) lwip checksum (non-inverted Internet sum)  */static u16_tlwip_standard_chksum(void *dataptr, int len){ 80306fe:	b513      	push	{r0, r1, r4, lr}  u8_t *pb = (u8_t *)dataptr;  u16_t *ps, t = 0; 8030700:	2300      	movs	r3, #0  u32_t sum = 0;  int odd = ((mem_ptr_t)pb & 1);  /* Get aligned to u16_t */  if (odd && len > 0) { 8030702:	f010 0201 	ands.w	r2, r0, #1static u16_tlwip_standard_chksum(void *dataptr, int len){  u8_t *pb = (u8_t *)dataptr;  u16_t *ps, t = 0; 8030706:	f8ad 3006 	strh.w	r3, [sp, #6]  u32_t sum = 0;  int odd = ((mem_ptr_t)pb & 1);  /* Get aligned to u16_t */  if (odd && len > 0) { 803070a:	d006      	beq.n	803071a <lwip_standard_chksum+0x1c> 803070c:	4299      	cmp	r1, r3 803070e:	dd04      	ble.n	803071a <lwip_standard_chksum+0x1c>    ((u8_t *)&t)[1] = *pb++; 8030710:	f810 3b01 	ldrb.w	r3, [r0], #1    len--; 8030714:	3901      	subs	r1, #1  u32_t sum = 0;  int odd = ((mem_ptr_t)pb & 1);  /* Get aligned to u16_t */  if (odd && len > 0) {    ((u8_t *)&t)[1] = *pb++; 8030716:	f88d 3007 	strb.w	r3, [sp, #7]static u16_tlwip_standard_chksum(void *dataptr, int len){  u8_t *pb = (u8_t *)dataptr;  u16_t *ps, t = 0;  u32_t sum = 0; 803071a:	2300      	movs	r3, #0    len--;  }  /* Add the bulk of the data */  ps = (u16_t *)(void *)pb;  while (len > 1) { 803071c:	e003      	b.n	8030726 <lwip_standard_chksum+0x28>    sum += *ps++; 803071e:	f830 4b02 	ldrh.w	r4, [r0], #2    len -= 2; 8030722:	3902      	subs	r1, #2  }  /* Add the bulk of the data */  ps = (u16_t *)(void *)pb;  while (len > 1) {    sum += *ps++; 8030724:	191b      	adds	r3, r3, r4    len--;  }  /* Add the bulk of the data */  ps = (u16_t *)(void *)pb;  while (len > 1) { 8030726:	2901      	cmp	r1, #1 8030728:	dcf9      	bgt.n	803071e <lwip_standard_chksum+0x20>    len -= 2;  }  /* Consume left-over byte, if any */  if (len > 0) {    ((u8_t *)&t)[0] = *(u8_t *)ps; 803072a:	bf04      	itt	eq 803072c:	7801      	ldrbeq	r1, [r0, #0] 803072e:	f88d 1006 	strbeq.w	r1, [sp, #6]  }  /* Add end bytes */  sum += t; 8030732:	f8bd 0006 	ldrh.w	r0, [sp, #6] 8030736:	181b      	adds	r3, r3, r0  /* Fold 32-bit sum to 16 bits     calling this twice is propably faster than if statements... */  sum = FOLD_U32T(sum); 8030738:	b298      	uxth	r0, r3 803073a:	eb00 4313 	add.w	r3, r0, r3, lsr #16  sum = FOLD_U32T(sum); 803073e:	b298      	uxth	r0, r3 8030740:	eb00 4013 	add.w	r0, r0, r3, lsr #16  /* Swap if alignment was odd */  if (odd) { 8030744:	b122      	cbz	r2, 8030750 <lwip_standard_chksum+0x52>    sum = SWAP_BYTES_IN_WORD(sum); 8030746:	0603      	lsls	r3, r0, #24 8030748:	f3c0 2007 	ubfx	r0, r0, #8, #8 803074c:	ea40 4013 	orr.w	r0, r0, r3, lsr #16  }  return (u16_t)sum;} 8030750:	b280      	uxth	r0, r0 8030752:	bd1c      	pop	{r2, r3, r4, pc}08030754 <inet_chksum>: * @return checksum (as u16_t) to be saved directly in the protocol header */u16_tinet_chksum(void *dataptr, u16_t len){ 8030754:	b508      	push	{r3, lr}  return ~LWIP_CHKSUM(dataptr, len); 8030756:	f7ff ffd2 	bl	80306fe <lwip_standard_chksum> 803075a:	43c0      	mvns	r0, r0} 803075c:	b280      	uxth	r0, r0 803075e:	bd08      	pop	{r3, pc}08030760 <inet_chksum_pbuf>: * @param p pbuf chain over that the checksum should be calculated * @return checksum (as u16_t) to be saved directly in the protocol header */u16_tinet_chksum_pbuf(struct pbuf *p){ 8030760:	b570      	push	{r4, r5, r6, lr}  u32_t acc;  struct pbuf *q;  u8_t swapped;  acc = 0;  swapped = 0; 8030762:	2600      	movs	r6, #0 * @param p pbuf chain over that the checksum should be calculated * @return checksum (as u16_t) to be saved directly in the protocol header */u16_tinet_chksum_pbuf(struct pbuf *p){ 8030764:	4605      	mov	r5, r0  u32_t acc;  struct pbuf *q;  u8_t swapped;  acc = 0; 8030766:	4634      	mov	r4, r6  swapped = 0;  for(q = p; q != NULL; q = q->next) { 8030768:	e013      	b.n	8030792 <inet_chksum_pbuf+0x32>    acc += LWIP_CHKSUM(q->payload, q->len); 803076a:	8969      	ldrh	r1, [r5, #10] 803076c:	6868      	ldr	r0, [r5, #4] 803076e:	f7ff ffc6 	bl	80306fe <lwip_standard_chksum>    acc = FOLD_U32T(acc);    if (q->len % 2 != 0) { 8030772:	896b      	ldrh	r3, [r5, #10]  u8_t swapped;  acc = 0;  swapped = 0;  for(q = p; q != NULL; q = q->next) {    acc += LWIP_CHKSUM(q->payload, q->len); 8030774:	1900      	adds	r0, r0, r4    acc = FOLD_U32T(acc); 8030776:	b284      	uxth	r4, r0    if (q->len % 2 != 0) { 8030778:	07d9      	lsls	r1, r3, #31  acc = 0;  swapped = 0;  for(q = p; q != NULL; q = q->next) {    acc += LWIP_CHKSUM(q->payload, q->len);    acc = FOLD_U32T(acc); 803077a:	eb04 4410 	add.w	r4, r4, r0, lsr #16    if (q->len % 2 != 0) { 803077e:	d507      	bpl.n	8030790 <inet_chksum_pbuf+0x30>      swapped = 1 - swapped;      acc = SWAP_BYTES_IN_WORD(acc); 8030780:	0623      	lsls	r3, r4, #24  swapped = 0;  for(q = p; q != NULL; q = q->next) {    acc += LWIP_CHKSUM(q->payload, q->len);    acc = FOLD_U32T(acc);    if (q->len % 2 != 0) {      swapped = 1 - swapped; 8030782:	f1c6 0601 	rsb	r6, r6, #1      acc = SWAP_BYTES_IN_WORD(acc); 8030786:	f3c4 2407 	ubfx	r4, r4, #8, #8  swapped = 0;  for(q = p; q != NULL; q = q->next) {    acc += LWIP_CHKSUM(q->payload, q->len);    acc = FOLD_U32T(acc);    if (q->len % 2 != 0) {      swapped = 1 - swapped; 803078a:	b2f6      	uxtb	r6, r6      acc = SWAP_BYTES_IN_WORD(acc); 803078c:	ea44 4413 	orr.w	r4, r4, r3, lsr #16  struct pbuf *q;  u8_t swapped;  acc = 0;  swapped = 0;  for(q = p; q != NULL; q = q->next) { 8030790:	682d      	ldr	r5, [r5, #0] 8030792:	2d00      	cmp	r5, #0 8030794:	d1e9      	bne.n	803076a <inet_chksum_pbuf+0xa>      swapped = 1 - swapped;      acc = SWAP_BYTES_IN_WORD(acc);    }  }  if (swapped) { 8030796:	b126      	cbz	r6, 80307a2 <inet_chksum_pbuf+0x42>    acc = SWAP_BYTES_IN_WORD(acc); 8030798:	0623      	lsls	r3, r4, #24 803079a:	f3c4 2407 	ubfx	r4, r4, #8, #8 803079e:	ea44 4413 	orr.w	r4, r4, r3, lsr #16  }  return (u16_t)~(acc & 0xffffUL); 80307a2:	43e0      	mvns	r0, r4} 80307a4:	b280      	uxth	r0, r0 80307a6:	bd70      	pop	{r4, r5, r6, pc}080307a8 <ip4_addr_isbroadcast>:{  ip_addr_t ipaddr;  ip4_addr_set_u32(&ipaddr, addr);  /* all ones (broadcast) or all zeroes (old skool broadcast) */  if ((~addr == IPADDR_ANY) || 80307a8:	1e43      	subs	r3, r0, #1 80307aa:	3303      	adds	r3, #3 80307ac:	d811      	bhi.n	80307d2 <ip4_addr_isbroadcast+0x2a>      (addr == IPADDR_ANY)) {    return 1;  /* no broadcast support on this network interface? */  } else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) { 80307ae:	f891 302d 	ldrb.w	r3, [r1, #45]	; 0x2d 80307b2:	f003 0302 	and.w	r3, r3, #2 80307b6:	b2db      	uxtb	r3, r3 80307b8:	b16b      	cbz	r3, 80307d6 <ip4_addr_isbroadcast+0x2e>    /* the given address cannot be a broadcast address     * nor can we check against any broadcast addresses */    return 0;  /* address matches network interface address exactly? => no broadcast */  } else if (addr == ip4_addr_get_u32(&netif->ip_addr)) { 80307ba:	684a      	ldr	r2, [r1, #4] 80307bc:	4290      	cmp	r0, r2 80307be:	d00a      	beq.n	80307d6 <ip4_addr_isbroadcast+0x2e>    return 0;  /*  on the same (sub) network... */  } else if (ip_addr_netcmp(&ipaddr, &(netif->ip_addr), &(netif->netmask)) 80307c0:	688b      	ldr	r3, [r1, #8] 80307c2:	4042      	eors	r2, r0 80307c4:	421a      	tst	r2, r3 80307c6:	d000      	beq.n	80307ca <ip4_addr_isbroadcast+0x22> 80307c8:	e005      	b.n	80307d6 <ip4_addr_isbroadcast+0x2e>         /* ...and host identifier bits are all ones? =>... */          && ((addr & ~ip4_addr_get_u32(&netif->netmask)) == 80307ca:	43db      	mvns	r3, r3 80307cc:	4018      	ands	r0, r3 80307ce:	4298      	cmp	r0, r3 80307d0:	d101      	bne.n	80307d6 <ip4_addr_isbroadcast+0x2e>  ip4_addr_set_u32(&ipaddr, addr);  /* all ones (broadcast) or all zeroes (old skool broadcast) */  if ((~addr == IPADDR_ANY) ||      (addr == IPADDR_ANY)) {    return 1; 80307d2:	2001      	movs	r0, #1 80307d4:	4770      	bx	lr  /* no broadcast support on this network interface? */  } else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) {    /* the given address cannot be a broadcast address     * nor can we check against any broadcast addresses */    return 0; 80307d6:	2000      	movs	r0, #0    /* => network broadcast address */    return 1;  } else {    return 0;  }} 80307d8:	4770      	bx	lr080307da <ipaddr_aton>: * @param addr pointer to which to save the ip address in network order * @return 1 if cp could be converted to addr, 0 on failure */intipaddr_aton(const char *cp, ip_addr_t *addr){ 80307da:	b5f0      	push	{r4, r5, r6, r7, lr}  u8_t base;  char c;  u32_t parts[4];  u32_t *pp = parts;  c = *cp; 80307dc:	7803      	ldrb	r3, [r0, #0] * @param addr pointer to which to save the ip address in network order * @return 1 if cp could be converted to addr, 0 on failure */intipaddr_aton(const char *cp, ip_addr_t *addr){ 80307de:	b085      	sub	sp, #20 80307e0:	460e      	mov	r6, r1  u8_t base;  char c;  u32_t parts[4];  u32_t *pp = parts;  c = *cp; 80307e2:	2400      	movs	r4, #0 * @param cp IP address in ascii represenation (e.g. "127.0.0.1") * @param addr pointer to which to save the ip address in network order * @return 1 if cp could be converted to addr, 0 on failure */intipaddr_aton(const char *cp, ip_addr_t *addr) 80307e4:	aa00      	add	r2, sp, #0 80307e6:	18a7      	adds	r7, r4, r2    /*     * Collect number up to ``.''.     * Values are specified as for C:     * 0x=hex, 0=octal, 1-9=decimal.     */    if (!isdigit(c)) 80307e8:	f1a3 0230 	sub.w	r2, r3, #48	; 0x30 80307ec:	2a09      	cmp	r2, #9 80307ee:	d86d      	bhi.n	80308cc <ipaddr_aton+0xf2>      return (0);    val = 0;    base = 10;    if (c == '0') { 80307f0:	2b30      	cmp	r3, #48	; 0x30 80307f2:	d10b      	bne.n	803080c <ipaddr_aton+0x32>      c = *++cp; 80307f4:	7843      	ldrb	r3, [r0, #1]      if (c == 'x' || c == 'X') { 80307f6:	2b78      	cmp	r3, #120	; 0x78 80307f8:	d004      	beq.n	8030804 <ipaddr_aton+0x2a> 80307fa:	2b58      	cmp	r3, #88	; 0x58 80307fc:	d002      	beq.n	8030804 <ipaddr_aton+0x2a>    if (!isdigit(c))      return (0);    val = 0;    base = 10;    if (c == '0') {      c = *++cp; 80307fe:	3001      	adds	r0, #1      if (c == 'x' || c == 'X') {        base = 16;        c = *++cp;      } else        base = 8; 8030800:	2508      	movs	r5, #8 8030802:	e004      	b.n	803080e <ipaddr_aton+0x34>    base = 10;    if (c == '0') {      c = *++cp;      if (c == 'x' || c == 'X') {        base = 16;        c = *++cp; 8030804:	7883      	ldrb	r3, [r0, #2]    val = 0;    base = 10;    if (c == '0') {      c = *++cp;      if (c == 'x' || c == 'X') {        base = 16; 8030806:	2510      	movs	r5, #16        c = *++cp; 8030808:	3002      	adds	r0, #2 803080a:	e000      	b.n	803080e <ipaddr_aton+0x34>     * 0x=hex, 0=octal, 1-9=decimal.     */    if (!isdigit(c))      return (0);    val = 0;    base = 10; 803080c:	250a      	movs	r5, #10 803080e:	4602      	mov	r2, r0    if (c == '0') {      c = *++cp;      if (c == 'x' || c == 'X') {        base = 16; 8030810:	2000      	movs	r0, #0 8030812:	e000      	b.n	8030816 <ipaddr_aton+0x3c> 8030814:	3201      	adds	r2, #1        c = *++cp;      } else        base = 8;    }    for (;;) {      if (isdigit(c)) { 8030816:	f1a3 0130 	sub.w	r1, r3, #48	; 0x30 803081a:	2909      	cmp	r1, #9 803081c:	d803      	bhi.n	8030826 <ipaddr_aton+0x4c>        val = (val * base) + (int)(c - '0'); 803081e:	fb05 3000 	mla	r0, r5, r0, r3 8030822:	3830      	subs	r0, #48	; 0x30 8030824:	e013      	b.n	803084e <ipaddr_aton+0x74>        c = *++cp;      } else if (base == 16 && isxdigit(c)) { 8030826:	2d10      	cmp	r5, #16 8030828:	d113      	bne.n	8030852 <ipaddr_aton+0x78> 803082a:	f1a3 0161 	sub.w	r1, r3, #97	; 0x61 803082e:	b2c9      	uxtb	r1, r1 8030830:	2905      	cmp	r1, #5 8030832:	d904      	bls.n	803083e <ipaddr_aton+0x64> 8030834:	f1a3 0c41 	sub.w	ip, r3, #65	; 0x41 8030838:	f1bc 0f05 	cmp.w	ip, #5 803083c:	d809      	bhi.n	8030852 <ipaddr_aton+0x78>        val = (val << 4) | (int)(c + 10 - (islower(c) ? 'a' : 'A')); 803083e:	330a      	adds	r3, #10 8030840:	2919      	cmp	r1, #25 8030842:	bf8c      	ite	hi 8030844:	2141      	movhi	r1, #65	; 0x41 8030846:	2161      	movls	r1, #97	; 0x61 8030848:	1a5b      	subs	r3, r3, r1 803084a:	ea43 1000 	orr.w	r0, r3, r0, lsl #4        c = *++cp; 803084e:	7853      	ldrb	r3, [r2, #1] 8030850:	e7e0      	b.n	8030814 <ipaddr_aton+0x3a>      } else        break;    }    if (c == '.') { 8030852:	2b2e      	cmp	r3, #46	; 0x2e 8030854:	d107      	bne.n	8030866 <ipaddr_aton+0x8c>       * Internet format:       *  a.b.c.d       *  a.b.c   (with c treated as 16 bits)       *  a.b (with b treated as 24 bits)       */      if (pp >= parts + 3) { 8030856:	2c0c      	cmp	r4, #12 8030858:	d038      	beq.n	80308cc <ipaddr_aton+0xf2>        return (0);      }      *pp++ = val; 803085a:	f84d 0004 	str.w	r0, [sp, r4]      c = *++cp; 803085e:	7853      	ldrb	r3, [r2, #1] 8030860:	1c50      	adds	r0, r2, #1 8030862:	3404      	adds	r4, #4    } else      break;  } 8030864:	e7be      	b.n	80307e4 <ipaddr_aton+0xa> 8030866:	2b0d      	cmp	r3, #13 8030868:	d803      	bhi.n	8030872 <ipaddr_aton+0x98> 803086a:	2b09      	cmp	r3, #9 803086c:	d203      	bcs.n	8030876 <ipaddr_aton+0x9c> 803086e:	b113      	cbz	r3, 8030876 <ipaddr_aton+0x9c> 8030870:	e02c      	b.n	80308cc <ipaddr_aton+0xf2> 8030872:	2b20      	cmp	r3, #32 8030874:	d12a      	bne.n	80308cc <ipaddr_aton+0xf2>  }  /*   * Concoct the address according to   * the number of parts specified.   */  switch (pp - parts + 1) { 8030876:	466b      	mov	r3, sp 8030878:	1afb      	subs	r3, r7, r3 803087a:	109b      	asrs	r3, r3, #2 803087c:	3301      	adds	r3, #1 803087e:	2b04      	cmp	r3, #4 8030880:	d81f      	bhi.n	80308c2 <ipaddr_aton+0xe8> 8030882:	e8df f003 	tbb	[pc, r3] 8030886:	1e23      	.short	0x1e23 8030888:	0a03      	.short	0x0a03 803088a:	13          	.byte	0x13 803088b:	00          	.byte	0x00  case 1:             /* a -- 32 bits */    break;  case 2:             /* a.b -- 8.24 bits */    if (val > 0xffffffUL) { 803088c:	f1b0 7f80 	cmp.w	r0, #16777216	; 0x1000000 8030890:	d21c      	bcs.n	80308cc <ipaddr_aton+0xf2>      return (0);    }    val |= parts[0] << 24; 8030892:	9b00      	ldr	r3, [sp, #0] 8030894:	ea40 6003 	orr.w	r0, r0, r3, lsl #24    break; 8030898:	e013      	b.n	80308c2 <ipaddr_aton+0xe8>  case 3:             /* a.b.c -- 8.8.16 bits */    if (val > 0xffff) { 803089a:	f5b0 3f80 	cmp.w	r0, #65536	; 0x10000 803089e:	d215      	bcs.n	80308cc <ipaddr_aton+0xf2>      return (0);    }    val |= (parts[0] << 24) | (parts[1] << 16); 80308a0:	9b00      	ldr	r3, [sp, #0] 80308a2:	061a      	lsls	r2, r3, #24 80308a4:	9b01      	ldr	r3, [sp, #4] 80308a6:	ea42 4303 	orr.w	r3, r2, r3, lsl #16 80308aa:	e009      	b.n	80308c0 <ipaddr_aton+0xe6>    break;  case 4:             /* a.b.c.d -- 8.8.8.8 bits */    if (val > 0xff) { 80308ac:	28ff      	cmp	r0, #255	; 0xff 80308ae:	d80d      	bhi.n	80308cc <ipaddr_aton+0xf2>      return (0);    }    val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); 80308b0:	9b00      	ldr	r3, [sp, #0] 80308b2:	061a      	lsls	r2, r3, #24 80308b4:	9b01      	ldr	r3, [sp, #4] 80308b6:	ea42 4203 	orr.w	r2, r2, r3, lsl #16 80308ba:	9b02      	ldr	r3, [sp, #8] 80308bc:	ea42 2303 	orr.w	r3, r2, r3, lsl #8 80308c0:	4318      	orrs	r0, r3    break;  default:    LWIP_ASSERT("unhandled", 0);    break;  }  if (addr) { 80308c2:	b12e      	cbz	r6, 80308d0 <ipaddr_aton+0xf6>    ip4_addr_set_u32(addr, htonl(val)); 80308c4:	f7fb ffa2 	bl	802c80c <lwip_htonl> 80308c8:	6030      	str	r0, [r6, #0] 80308ca:	e001      	b.n	80308d0 <ipaddr_aton+0xf6>     * Collect number up to ``.''.     * Values are specified as for C:     * 0x=hex, 0=octal, 1-9=decimal.     */    if (!isdigit(c))      return (0); 80308cc:	2000      	movs	r0, #0 80308ce:	e000      	b.n	80308d2 <ipaddr_aton+0xf8>    break;  }  if (addr) {    ip4_addr_set_u32(addr, htonl(val));  }  return (1); 80308d0:	2001      	movs	r0, #1} 80308d2:	b005      	add	sp, #20 80308d4:	bdf0      	pop	{r4, r5, r6, r7, pc}080308d6 <ipaddr_addr>: * @param cp IP address in ascii represenation (e.g. "127.0.0.1") * @return ip address in network order */u32_tipaddr_addr(const char *cp){ 80308d6:	b507      	push	{r0, r1, r2, lr}  ip_addr_t val;  if (ipaddr_aton(cp, &val)) { 80308d8:	a901      	add	r1, sp, #4 80308da:	f7ff ff7e 	bl	80307da <ipaddr_aton> 80308de:	b108      	cbz	r0, 80308e4 <ipaddr_addr+0xe>    return ip4_addr_get_u32(&val); 80308e0:	9801      	ldr	r0, [sp, #4] 80308e2:	e001      	b.n	80308e8 <ipaddr_addr+0x12>  }  return (IPADDR_NONE); 80308e4:	f04f 30ff 	mov.w	r0, #4294967295} 80308e8:	bd0e      	pop	{r1, r2, r3, pc}080308ea <ipaddr_ntoa_r>: * @param buflen length of buf * @return either pointer to buf which now holds the ASCII *         representation of addr or NULL if buf was too small */char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen){ 80308ea:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}  u8_t rem;  u8_t n;  u8_t i;  int len = 0;  s_addr = ip4_addr_get_u32(addr); 80308ee:	6803      	ldr	r3, [r0, #0] 80308f0:	a802      	add	r0, sp, #8 * @param buf target buffer where the string is stored * @param buflen length of buf * @return either pointer to buf which now holds the ASCII *         representation of addr or NULL if buf was too small */char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen) 80308f2:	f10d 0807 	add.w	r8, sp, #7  u8_t rem;  u8_t n;  u8_t i;  int len = 0;  s_addr = ip4_addr_get_u32(addr); 80308f6:	f840 3d04 	str.w	r3, [r0, #-4]!  rp = buf; 80308fa:	460c      	mov	r4, r1 * @param buf target buffer where the string is stored * @param buflen length of buf * @return either pointer to buf which now holds the ASCII *         representation of addr or NULL if buf was too small */char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen) 80308fc:	3801      	subs	r0, #1  char *rp;  u8_t *ap;  u8_t rem;  u8_t n;  u8_t i;  int len = 0; 80308fe:	2700      	movs	r7, #0  rp = buf;  ap = (u8_t *)&s_addr;  for(n = 0; n < 4; n++) {    i = 0;    do {      rem = *ap % (u8_t)10; 8030900:	f04f 0c0a 	mov.w	ip, #10      *rp++ = inv[i];    }    if (len++ >= buflen) {      return NULL;    }    *rp++ = '.'; 8030904:	f04f 092e 	mov.w	r9, #46	; 0x2e 8030908:	7843      	ldrb	r3, [r0, #1] * @param buf target buffer where the string is stored * @param buflen length of buf * @return either pointer to buf which now holds the ASCII *         representation of addr or NULL if buf was too small */char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen) 803090a:	2500      	movs	r5, #0  rp = buf;  ap = (u8_t *)&s_addr;  for(n = 0; n < 4; n++) {    i = 0;    do {      rem = *ap % (u8_t)10; 803090c:	fbb3 f6fc 	udiv	r6, r3, ip      *ap /= (u8_t)10;      inv[i++] = '0' + rem; 8030910:	f10d 0b08 	add.w	fp, sp, #8  rp = buf;  ap = (u8_t *)&s_addr;  for(n = 0; n < 4; n++) {    i = 0;    do {      rem = *ap % (u8_t)10; 8030914:	fb0c 3a16 	mls	sl, ip, r6, r3      *ap /= (u8_t)10;      inv[i++] = '0' + rem; 8030918:	eb0b 0305 	add.w	r3, fp, r5 803091c:	f10a 0a30 	add.w	sl, sl, #48	; 0x30 8030920:	3501      	adds	r5, #1 8030922:	f803 ac08 	strb.w	sl, [r3, #-8]    } while(*ap); 8030926:	f016 03ff 	ands.w	r3, r6, #255	; 0xff  for(n = 0; n < 4; n++) {    i = 0;    do {      rem = *ap % (u8_t)10;      *ap /= (u8_t)10;      inv[i++] = '0' + rem; 803092a:	b2ed      	uxtb	r5, r5    } while(*ap); 803092c:	d1ee      	bne.n	803090c <ipaddr_ntoa_r+0x22> 803092e:	3d01      	subs	r5, #1 * @param buf target buffer where the string is stored * @param buflen length of buf * @return either pointer to buf which now holds the ASCII *         representation of addr or NULL if buf was too small */char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen) 8030930:	1be6      	subs	r6, r4, r7 8030932:	f800 3f01 	strb.w	r3, [r0, #1]! 8030936:	b2ed      	uxtb	r5, r5 8030938:	463b      	mov	r3, r7 803093a:	4637      	mov	r7, r6 803093c:	e00b      	b.n	8030956 <ipaddr_ntoa_r+0x6c> 803093e:	1e6c      	subs	r4, r5, #1      rem = *ap % (u8_t)10;      *ap /= (u8_t)10;      inv[i++] = '0' + rem;    } while(*ap);    while(i--) {      if (len++ >= buflen) { 8030940:	4293      	cmp	r3, r2 8030942:	b2e4      	uxtb	r4, r4 8030944:	da16      	bge.n	8030974 <ipaddr_ntoa_r+0x8a>        return NULL;      }      *rp++ = inv[i]; 8030946:	f10d 0a08 	add.w	sl, sp, #8 803094a:	4455      	add	r5, sl 803094c:	f815 5c08 	ldrb.w	r5, [r5, #-8] 8030950:	54fd      	strb	r5, [r7, r3] 8030952:	3301      	adds	r3, #1 8030954:	4625      	mov	r5, r4    do {      rem = *ap % (u8_t)10;      *ap /= (u8_t)10;      inv[i++] = '0' + rem;    } while(*ap);    while(i--) { 8030956:	2dff      	cmp	r5, #255	; 0xff * @param buf target buffer where the string is stored * @param buflen length of buf * @return either pointer to buf which now holds the ASCII *         representation of addr or NULL if buf was too small */char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen) 8030958:	eb06 0403 	add.w	r4, r6, r3    do {      rem = *ap % (u8_t)10;      *ap /= (u8_t)10;      inv[i++] = '0' + rem;    } while(*ap);    while(i--) { 803095c:	d1ef      	bne.n	803093e <ipaddr_ntoa_r+0x54>      if (len++ >= buflen) {        return NULL;      }      *rp++ = inv[i];    }    if (len++ >= buflen) { 803095e:	1c5f      	adds	r7, r3, #1 8030960:	4293      	cmp	r3, r2 8030962:	da07      	bge.n	8030974 <ipaddr_ntoa_r+0x8a>  s_addr = ip4_addr_get_u32(addr);  rp = buf;  ap = (u8_t *)&s_addr;  for(n = 0; n < 4; n++) { 8030964:	4540      	cmp	r0, r8      *rp++ = inv[i];    }    if (len++ >= buflen) {      return NULL;    }    *rp++ = '.'; 8030966:	f804 9b01 	strb.w	r9, [r4], #1  s_addr = ip4_addr_get_u32(addr);  rp = buf;  ap = (u8_t *)&s_addr;  for(n = 0; n < 4; n++) { 803096a:	d1cd      	bne.n	8030908 <ipaddr_ntoa_r+0x1e>      return NULL;    }    *rp++ = '.';    ap++;  }  *--rp = 0; 803096c:	2300      	movs	r3, #0 803096e:	f804 3c01 	strb.w	r3, [r4, #-1] 8030972:	e000      	b.n	8030976 <ipaddr_ntoa_r+0x8c>      *ap /= (u8_t)10;      inv[i++] = '0' + rem;    } while(*ap);    while(i--) {      if (len++ >= buflen) {        return NULL; 8030974:	2100      	movs	r1, #0    *rp++ = '.';    ap++;  }  *--rp = 0;  return buf;} 8030976:	4608      	mov	r0, r1 8030978:	e8bd 8ffe 	ldmia.w	sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc}0803097c <ipaddr_ntoa>: */char *ipaddr_ntoa(const ip_addr_t *addr){  static char str[16];  return ipaddr_ntoa_r(addr, str, 16); 803097c:	4901      	ldr	r1, [pc, #4]	; (8030984 <ipaddr_ntoa+0x8>) 803097e:	2210      	movs	r2, #16 8030980:	f7ff bfb3 	b.w	80308ea <ipaddr_ntoa_r> 8030984:	2000e1c4 	.word	0x2000e1c408030988 <ip_route>:    return netif;  }#endif  /* iterate through netifs */  for (netif = netif_list; netif != NULL; netif = netif->next) { 8030988:	4b0f      	ldr	r3, [pc, #60]	; (80309c8 <ip_route+0x40>) * @param dest the destination IP address for which to find the route * @return the netif on which to send to reach dest */struct netif *ip_route(ip_addr_t *dest){ 803098a:	b510      	push	{r4, lr}    return netif;  }#endif  /* iterate through netifs */  for (netif = netif_list; netif != NULL; netif = netif->next) { 803098c:	681c      	ldr	r4, [r3, #0] 803098e:	e00a      	b.n	80309a6 <ip_route+0x1e>    /* network mask matches? */    if (netif_is_up(netif)) { 8030990:	f894 302d 	ldrb.w	r3, [r4, #45]	; 0x2d 8030994:	07d9      	lsls	r1, r3, #31 8030996:	d505      	bpl.n	80309a4 <ip_route+0x1c>      if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask))) { 8030998:	6803      	ldr	r3, [r0, #0] 803099a:	6862      	ldr	r2, [r4, #4] 803099c:	405a      	eors	r2, r3 803099e:	68a3      	ldr	r3, [r4, #8] 80309a0:	421a      	tst	r2, r3 80309a2:	d00e      	beq.n	80309c2 <ip_route+0x3a>    return netif;  }#endif  /* iterate through netifs */  for (netif = netif_list; netif != NULL; netif = netif->next) { 80309a4:	6824      	ldr	r4, [r4, #0] 80309a6:	2c00      	cmp	r4, #0 80309a8:	d1f2      	bne.n	8030990 <ip_route+0x8>        /* return netif on which to forward IP packet */        return netif;      }    }  }  if ((netif_default == NULL) || (!netif_is_up(netif_default))) { 80309aa:	4b08      	ldr	r3, [pc, #32]	; (80309cc <ip_route+0x44>) 80309ac:	681b      	ldr	r3, [r3, #0] 80309ae:	b12b      	cbz	r3, 80309bc <ip_route+0x34> 80309b0:	f893 202d 	ldrb.w	r2, [r3, #45]	; 0x2d 80309b4:	07d2      	lsls	r2, r2, #31 80309b6:	bf48      	it	mi 80309b8:	461c      	movmi	r4, r3 80309ba:	d402      	bmi.n	80309c2 <ip_route+0x3a>    LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_route: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",      ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest)));    IP_STATS_INC(ip.rterr);    snmp_inc_ipoutnoroutes(); 80309bc:	f001 fcd8 	bl	8032370 <snmp_inc_ipoutnoroutes>    return NULL; 80309c0:	e7ff      	b.n	80309c2 <ip_route+0x3a>  }  /* no matching netif found, use default netif */  return netif_default;} 80309c2:	4620      	mov	r0, r4 80309c4:	bd10      	pop	{r4, pc} 80309c6:	bf00      	nop 80309c8:	20011070 	.word	0x20011070 80309cc:	20011074 	.word	0x20011074080309d0 <ip_input>: * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't *         processed, but currently always returns ERR_OK) */err_tip_input(struct pbuf *p, struct netif *inp){ 80309d0:	e92d 4ff8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} 80309d4:	4604      	mov	r4, r0 80309d6:	460f      	mov	r7, r1#if IP_ACCEPT_LINK_LAYER_ADDRESSING  int check_ip_src=1;#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */  IP_STATS_INC(ip.recv);  snmp_inc_ipinreceives(); 80309d8:	f001 fc8a 	bl	80322f0 <snmp_inc_ipinreceives>  /* identify the IP header */  iphdr = (struct ip_hdr *)p->payload; 80309dc:	6866      	ldr	r6, [r4, #4]  if (IPH_V(iphdr) != 4) { 80309de:	f896 8000 	ldrb.w	r8, [r6] 80309e2:	ea4f 1318 	mov.w	r3, r8, lsr #4 80309e6:	2b04      	cmp	r3, #4 80309e8:	d005      	beq.n	80309f6 <ip_input+0x26>    LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", IPH_V(iphdr)));    ip_debug_print(p);    pbuf_free(p); 80309ea:	4620      	mov	r0, r4 80309ec:	f7fd f842 	bl	802da74 <pbuf_free>    IP_STATS_INC(ip.err);    IP_STATS_INC(ip.drop);    snmp_inc_ipinhdrerrors(); 80309f0:	f001 fc86 	bl	8032300 <snmp_inc_ipinhdrerrors>    return ERR_OK; 80309f4:	e0be      	b.n	8030b74 <ip_input+0x1a4>  /* obtain IP header length in number of 32-bit words */  iphdr_hlen = IPH_HL(iphdr);  /* calculate IP header length in bytes */  iphdr_hlen *= 4;  /* obtain ip length in bytes */  iphdr_len = ntohs(IPH_LEN(iphdr)); 80309f6:	8870      	ldrh	r0, [r6, #2] 80309f8:	f7fb ff03 	bl	802c802 <lwip_ntohs>    return ERR_OK;  }#endif  /* obtain IP header length in number of 32-bit words */  iphdr_hlen = IPH_HL(iphdr); 80309fc:	f008 080f 	and.w	r8, r8, #15  iphdr_hlen *= 4;  /* obtain ip length in bytes */  iphdr_len = ntohs(IPH_LEN(iphdr));  /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */  if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) { 8030a00:	8963      	ldrh	r3, [r4, #10]#endif  /* obtain IP header length in number of 32-bit words */  iphdr_hlen = IPH_HL(iphdr);  /* calculate IP header length in bytes */  iphdr_hlen *= 4; 8030a02:	ea4f 0888 	mov.w	r8, r8, lsl #2  /* obtain ip length in bytes */  iphdr_len = ntohs(IPH_LEN(iphdr));  /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */  if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) { 8030a06:	4543      	cmp	r3, r8  /* obtain IP header length in number of 32-bit words */  iphdr_hlen = IPH_HL(iphdr);  /* calculate IP header length in bytes */  iphdr_hlen *= 4;  /* obtain ip length in bytes */  iphdr_len = ntohs(IPH_LEN(iphdr)); 8030a08:	4601      	mov	r1, r0      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,        ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n",        iphdr_len, p->tot_len));    }    /* free (drop) packet pbufs */    pbuf_free(p); 8030a0a:	4620      	mov	r0, r4  iphdr_hlen *= 4;  /* obtain ip length in bytes */  iphdr_len = ntohs(IPH_LEN(iphdr));  /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */  if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) { 8030a0c:	d302      	bcc.n	8030a14 <ip_input+0x44> 8030a0e:	8923      	ldrh	r3, [r4, #8] 8030a10:	428b      	cmp	r3, r1 8030a12:	d202      	bcs.n	8030a1a <ip_input+0x4a>      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,        ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n",        iphdr_len, p->tot_len));    }    /* free (drop) packet pbufs */    pbuf_free(p); 8030a14:	f7fd f82e 	bl	802da74 <pbuf_free> 8030a18:	e045      	b.n	8030aa6 <ip_input+0xd6>  }#endif  /* Trim pbuf. This should have been done at the netif layer,   * but we'll do it anyway just to be sure that its done. */  pbuf_realloc(p, iphdr_len); 8030a1a:	f7fd f852 	bl	802dac2 <pbuf_realloc>  /* copy IP addresses to aligned ip_addr_t */  ip_addr_copy(current_iphdr_dest, iphdr->dest); 8030a1e:	6932      	ldr	r2, [r6, #16] 8030a20:	4b56      	ldr	r3, [pc, #344]	; (8030b7c <ip_input+0x1ac>)        }#endif /* LWIP_AUTOIP */      }      if (first) {        first = 0;        netif = netif_list; 8030a22:	f8df b168 	ldr.w	fp, [pc, #360]	; 8030b8c <ip_input+0x1bc>  /* Trim pbuf. This should have been done at the netif layer,   * but we'll do it anyway just to be sure that its done. */  pbuf_realloc(p, iphdr_len);  /* copy IP addresses to aligned ip_addr_t */  ip_addr_copy(current_iphdr_dest, iphdr->dest); 8030a26:	601a      	str	r2, [r3, #0]  ip_addr_copy(current_iphdr_src, iphdr->src); 8030a28:	68f1      	ldr	r1, [r6, #12] 8030a2a:	4a55      	ldr	r2, [pc, #340]	; (8030b80 <ip_input+0x1b0>) 8030a2c:	463d      	mov	r5, r7 8030a2e:	6011      	str	r1, [r2, #0]#endif /* LWIP_IGMP */  {    /* start trying with inp. if that's not acceptable, start walking the       list of configured netifs.       'first' is used as a boolean to mark whether we started walking the list */    int first = 1; 8030a30:	f04f 0901 	mov.w	r9, #1          ip4_addr_get_u32(&iphdr->dest) & ~ip4_addr_get_u32(&netif->netmask)));      /* interface is up and configured? */      if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) {        /* unicast to this interface address? */        if (ip_addr_cmp(¤t_iphdr_dest, &(netif->ip_addr)) || 8030a34:	469a      	mov	sl, r3          ip4_addr_get_u32(&iphdr->dest) & ip4_addr_get_u32(&netif->netmask),          ip4_addr_get_u32(&netif->ip_addr) & ip4_addr_get_u32(&netif->netmask),          ip4_addr_get_u32(&iphdr->dest) & ~ip4_addr_get_u32(&netif->netmask)));      /* interface is up and configured? */      if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) { 8030a36:	f895 302d 	ldrb.w	r3, [r5, #45]	; 0x2d 8030a3a:	07d8      	lsls	r0, r3, #31 8030a3c:	d403      	bmi.n	8030a46 <ip_input+0x76>          /* break out of for loop */          break;        }#endif /* LWIP_AUTOIP */      }      if (first) { 8030a3e:	f1b9 0f00 	cmp.w	r9, #0 8030a42:	d10e      	bne.n	8030a62 <ip_input+0x92> 8030a44:	e010      	b.n	8030a68 <ip_input+0x98>          ip4_addr_get_u32(&iphdr->dest) & ip4_addr_get_u32(&netif->netmask),          ip4_addr_get_u32(&netif->ip_addr) & ip4_addr_get_u32(&netif->netmask),          ip4_addr_get_u32(&iphdr->dest) & ~ip4_addr_get_u32(&netif->netmask)));      /* interface is up and configured? */      if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) { 8030a46:	686b      	ldr	r3, [r5, #4] 8030a48:	2b00      	cmp	r3, #0 8030a4a:	d0f8      	beq.n	8030a3e <ip_input+0x6e>        /* unicast to this interface address? */        if (ip_addr_cmp(¤t_iphdr_dest, &(netif->ip_addr)) || 8030a4c:	f8da 0000 	ldr.w	r0, [sl] 8030a50:	4298      	cmp	r0, r3 8030a52:	f000 8088 	beq.w	8030b66 <ip_input+0x196>            /* or broadcast on this interface network address? */            ip_addr_isbroadcast(¤t_iphdr_dest, netif)) { 8030a56:	4629      	mov	r1, r5 8030a58:	f7ff fea6 	bl	80307a8 <ip4_addr_isbroadcast>          ip4_addr_get_u32(&iphdr->dest) & ~ip4_addr_get_u32(&netif->netmask)));      /* interface is up and configured? */      if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) {        /* unicast to this interface address? */        if (ip_addr_cmp(¤t_iphdr_dest, &(netif->ip_addr)) || 8030a5c:	2800      	cmp	r0, #0 8030a5e:	d0ee      	beq.n	8030a3e <ip_input+0x6e> 8030a60:	e081      	b.n	8030b66 <ip_input+0x196>        }#endif /* LWIP_AUTOIP */      }      if (first) {        first = 0;        netif = netif_list; 8030a62:	f8db 5000 	ldr.w	r5, [fp] 8030a66:	e000      	b.n	8030a6a <ip_input+0x9a>      } else {        netif = netif->next; 8030a68:	682d      	ldr	r5, [r5, #0]      }      if (netif == inp) { 8030a6a:	42bd      	cmp	r5, r7        netif = netif->next; 8030a6c:	bf08      	it	eq 8030a6e:	682d      	ldreq	r5, [r5, #0] 8030a70:	f04f 0900 	mov.w	r9, #0      }    } while(netif != NULL); 8030a74:	2d00      	cmp	r5, #0 8030a76:	d1de      	bne.n	8030a36 <ip_input+0x66> 8030a78:	e072      	b.n	8030b60 <ip_input+0x190>    /* remote port is DHCP server? */    if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {      struct udp_hdr *udphdr = (struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen);      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: UDP packet to DHCP client port %"U16_F"\n",        ntohs(udphdr->dest)));      if (IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(udphdr->dest)) { 8030a7a:	eb06 0308 	add.w	r3, r6, r8 8030a7e:	885b      	ldrh	r3, [r3, #2] 8030a80:	f5b3 4f88 	cmp.w	r3, #17408	; 0x4400 8030a84:	d16f      	bne.n	8030b66 <ip_input+0x196> 8030a86:	e011      	b.n	8030aac <ip_input+0xdc>  /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */#if IP_ACCEPT_LINK_LAYER_ADDRESSING  /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */  if (check_ip_src && !ip_addr_isany(¤t_iphdr_src))#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */  {  if ((ip_addr_isbroadcast(¤t_iphdr_src, inp)) || 8030a88:	4639      	mov	r1, r7 8030a8a:	f7ff fe8d 	bl	80307a8 <ip4_addr_isbroadcast> 8030a8e:	b928      	cbnz	r0, 8030a9c <ip_input+0xcc>         (ip_addr_ismulticast(¤t_iphdr_src))) { 8030a90:	f8d8 3000 	ldr.w	r3, [r8] 8030a94:	f003 03f0 	and.w	r3, r3, #240	; 0xf0  /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */#if IP_ACCEPT_LINK_LAYER_ADDRESSING  /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */  if (check_ip_src && !ip_addr_isany(¤t_iphdr_src))#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */  {  if ((ip_addr_isbroadcast(¤t_iphdr_src, inp)) || 8030a98:	2be0      	cmp	r3, #224	; 0xe0 8030a9a:	d108      	bne.n	8030aae <ip_input+0xde>         (ip_addr_ismulticast(¤t_iphdr_src))) {      /* packet source is not valid */      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip_input: packet source is not valid.\n"));      /* free (drop) packet pbufs */      pbuf_free(p); 8030a9c:	4620      	mov	r0, r4 8030a9e:	f7fc ffe9 	bl	802da74 <pbuf_free>      IP_STATS_INC(ip.drop);      snmp_inc_ipinaddrerrors(); 8030aa2:	f001 fc35 	bl	8032310 <snmp_inc_ipinaddrerrors>      snmp_inc_ipindiscards(); 8030aa6:	f001 fc43 	bl	8032330 <snmp_inc_ipindiscards>      return ERR_OK; 8030aaa:	e063      	b.n	8030b74 <ip_input+0x1a4>    /* remote port is DHCP server? */    if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {      struct udp_hdr *udphdr = (struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen);      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: UDP packet to DHCP client port %"U16_F"\n",        ntohs(udphdr->dest)));      if (IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(udphdr->dest)) { 8030aac:	463d      	mov	r5, r7      return ERR_OK;    }  }  /* packet not for us? */  if (netif == NULL) { 8030aae:	b93d      	cbnz	r5, 8030ac0 <ip_input+0xf0>      /* try to forward IP packet on (other) interfaces */      ip_forward(p, iphdr, inp);    } else#endif /* IP_FORWARD */    {      snmp_inc_ipinaddrerrors(); 8030ab0:	f001 fc2e 	bl	8032310 <snmp_inc_ipinaddrerrors>      snmp_inc_ipindiscards(); 8030ab4:	f001 fc3c 	bl	8032330 <snmp_inc_ipindiscards>    }    pbuf_free(p); 8030ab8:	4620      	mov	r0, r4 8030aba:	f7fc ffdb 	bl	802da74 <pbuf_free>    return ERR_OK; 8030abe:	e059      	b.n	8030b74 <ip_input+0x1a4>  }  /* packet consists of multiple fragments? */  if ((IPH_OFFSET(iphdr) & PP_HTONS(IP_OFFMASK | IP_MF)) != 0) { 8030ac0:	88f3      	ldrh	r3, [r6, #6] 8030ac2:	f023 03c0 	bic.w	r3, r3, #192	; 0xc0 8030ac6:	b29b      	uxth	r3, r3 8030ac8:	b12b      	cbz	r3, 8030ad6 <ip_input+0x106>    if (p == NULL) {      return ERR_OK;    }    iphdr = (struct ip_hdr *)p->payload;#else /* IP_REASSEMBLY == 0, no packet fragment reassembly code present */    pbuf_free(p); 8030aca:	4620      	mov	r0, r4 8030acc:	f7fc ffd2 	bl	802da74 <pbuf_free>    LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since it was fragmented (0x%"X16_F") (while IP_REASSEMBLY == 0).\n",      ntohs(IPH_OFFSET(iphdr))));    IP_STATS_INC(ip.opterr);    IP_STATS_INC(ip.drop);    /* unsupported protocol feature */    snmp_inc_ipinunknownprotos(); 8030ad0:	f001 fc26 	bl	8032320 <snmp_inc_ipinunknownprotos>    return ERR_OK; 8030ad4:	e04e      	b.n	8030b74 <ip_input+0x1a4>  /* send to upper layers */  LWIP_DEBUGF(IP_DEBUG, ("ip_input: \n"));  ip_debug_print(p);  LWIP_DEBUGF(IP_DEBUG, ("ip_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len));  current_netif = inp; 8030ad6:	4b2b      	ldr	r3, [pc, #172]	; (8030b84 <ip_input+0x1b4>) 8030ad8:	601f      	str	r7, [r3, #0]  current_header = iphdr; 8030ada:	4b2b      	ldr	r3, [pc, #172]	; (8030b88 <ip_input+0x1b8>)#if LWIP_RAW  /* raw input did not eat the packet? */  if (raw_input(p, inp) == 0) 8030adc:	4620      	mov	r0, r4 8030ade:	4639      	mov	r1, r7  LWIP_DEBUGF(IP_DEBUG, ("ip_input: \n"));  ip_debug_print(p);  LWIP_DEBUGF(IP_DEBUG, ("ip_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len));  current_netif = inp;  current_header = iphdr; 8030ae0:	601e      	str	r6, [r3, #0]#if LWIP_RAW  /* raw input did not eat the packet? */  if (raw_input(p, inp) == 0) 8030ae2:	f7fd f947 	bl	802dd74 <raw_input> 8030ae6:	bb88      	cbnz	r0, 8030b4c <ip_input+0x17c>#endif /* LWIP_RAW */  {    switch (IPH_PROTO(iphdr)) { 8030ae8:	7a73      	ldrb	r3, [r6, #9] 8030aea:	2b06      	cmp	r3, #6 8030aec:	d00b      	beq.n	8030b06 <ip_input+0x136> 8030aee:	2b11      	cmp	r3, #17 8030af0:	d002      	beq.n	8030af8 <ip_input+0x128> 8030af2:	2b01      	cmp	r3, #1 8030af4:	d115      	bne.n	8030b22 <ip_input+0x152> 8030af6:	e00d      	b.n	8030b14 <ip_input+0x144>#if LWIP_UDP    case IP_PROTO_UDP:#if LWIP_UDPLITE    case IP_PROTO_UDPLITE:#endif /* LWIP_UDPLITE */      snmp_inc_ipindelivers(); 8030af8:	f001 fc22 	bl	8032340 <snmp_inc_ipindelivers>      udp_input(p, inp); 8030afc:	4620      	mov	r0, r4 8030afe:	4639      	mov	r1, r7 8030b00:	f7ff fb44 	bl	803018c <udp_input>      break; 8030b04:	e022      	b.n	8030b4c <ip_input+0x17c>#endif /* LWIP_UDP */#if LWIP_TCP    case IP_PROTO_TCP:      snmp_inc_ipindelivers(); 8030b06:	f001 fc1b 	bl	8032340 <snmp_inc_ipindelivers>      tcp_input(p, inp); 8030b0a:	4620      	mov	r0, r4 8030b0c:	4639      	mov	r1, r7 8030b0e:	f7fe f8e7 	bl	802ece0 <tcp_input>      break; 8030b12:	e01b      	b.n	8030b4c <ip_input+0x17c>#endif /* LWIP_TCP */#if LWIP_ICMP    case IP_PROTO_ICMP:      snmp_inc_ipindelivers(); 8030b14:	f001 fc14 	bl	8032340 <snmp_inc_ipindelivers>      icmp_input(p, inp); 8030b18:	4620      	mov	r0, r4 8030b1a:	4639      	mov	r1, r7 8030b1c:	f7ff fd20 	bl	8030560 <icmp_input>      break; 8030b20:	e014      	b.n	8030b4c <ip_input+0x17c>      break;#endif /* LWIP_IGMP */    default:#if LWIP_ICMP      /* send ICMP destination protocol unreachable unless is was a broadcast */      if (!ip_addr_isbroadcast(¤t_iphdr_dest, inp) && 8030b22:	4d16      	ldr	r5, [pc, #88]	; (8030b7c <ip_input+0x1ac>) 8030b24:	4639      	mov	r1, r7 8030b26:	6828      	ldr	r0, [r5, #0] 8030b28:	f7ff fe3e 	bl	80307a8 <ip4_addr_isbroadcast> 8030b2c:	b948      	cbnz	r0, 8030b42 <ip_input+0x172>          !ip_addr_ismulticast(¤t_iphdr_dest)) { 8030b2e:	682b      	ldr	r3, [r5, #0] 8030b30:	f003 03f0 	and.w	r3, r3, #240	; 0xf0      break;#endif /* LWIP_IGMP */    default:#if LWIP_ICMP      /* send ICMP destination protocol unreachable unless is was a broadcast */      if (!ip_addr_isbroadcast(¤t_iphdr_dest, inp) && 8030b34:	2be0      	cmp	r3, #224	; 0xe0 8030b36:	d004      	beq.n	8030b42 <ip_input+0x172>          !ip_addr_ismulticast(¤t_iphdr_dest)) {        p->payload = iphdr; 8030b38:	6066      	str	r6, [r4, #4]        icmp_dest_unreach(p, ICMP_DUR_PROTO); 8030b3a:	4620      	mov	r0, r4 8030b3c:	2102      	movs	r1, #2 8030b3e:	f7ff fda5 	bl	803068c <icmp_dest_unreach>      }#endif /* LWIP_ICMP */      pbuf_free(p); 8030b42:	4620      	mov	r0, r4 8030b44:	f7fc ff96 	bl	802da74 <pbuf_free>      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Unsupported transport protocol %"U16_F"\n", IPH_PROTO(iphdr)));      IP_STATS_INC(ip.proterr);      IP_STATS_INC(ip.drop);      snmp_inc_ipinunknownprotos(); 8030b48:	f001 fbea 	bl	8032320 <snmp_inc_ipinunknownprotos>    }  }  current_netif = NULL; 8030b4c:	4a0d      	ldr	r2, [pc, #52]	; (8030b84 <ip_input+0x1b4>) 8030b4e:	2300      	movs	r3, #0 8030b50:	6013      	str	r3, [r2, #0]  current_header = NULL; 8030b52:	4a0d      	ldr	r2, [pc, #52]	; (8030b88 <ip_input+0x1b8>) 8030b54:	6013      	str	r3, [r2, #0]  ip_addr_set_any(¤t_iphdr_src); 8030b56:	4a0a      	ldr	r2, [pc, #40]	; (8030b80 <ip_input+0x1b0>) 8030b58:	6013      	str	r3, [r2, #0]  ip_addr_set_any(¤t_iphdr_dest); 8030b5a:	4a08      	ldr	r2, [pc, #32]	; (8030b7c <ip_input+0x1ac>) 8030b5c:	6013      	str	r3, [r2, #0]  return ERR_OK; 8030b5e:	e009      	b.n	8030b74 <ip_input+0x1a4>   *   * #define LWIP_IP_ACCEPT_UDP_PORT(dst_port) ((dst_port) == PP_NTOHS(12345))   */  if (netif == NULL) {    /* remote port is DHCP server? */    if (IPH_PROTO(iphdr) == IP_PROTO_UDP) { 8030b60:	7a73      	ldrb	r3, [r6, #9] 8030b62:	2b11      	cmp	r3, #17 8030b64:	d089      	beq.n	8030a7a <ip_input+0xaa>#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */  /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */#if IP_ACCEPT_LINK_LAYER_ADDRESSING  /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */  if (check_ip_src && !ip_addr_isany(¤t_iphdr_src)) 8030b66:	f8df 8018 	ldr.w	r8, [pc, #24]	; 8030b80 <ip_input+0x1b0> 8030b6a:	f8d8 0000 	ldr.w	r0, [r8] 8030b6e:	2800      	cmp	r0, #0 8030b70:	d09d      	beq.n	8030aae <ip_input+0xde> 8030b72:	e789      	b.n	8030a88 <ip_input+0xb8>  current_header = NULL;  ip_addr_set_any(¤t_iphdr_src);  ip_addr_set_any(¤t_iphdr_dest);  return ERR_OK;} 8030b74:	2000      	movs	r0, #0 8030b76:	e8bd 8ff8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 8030b7a:	bf00      	nop 8030b7c:	200110a4 	.word	0x200110a4 8030b80:	2001109c 	.word	0x2001109c 8030b84:	200110a0 	.word	0x200110a0 8030b88:	200110a8 	.word	0x200110a8 8030b8c:	20011070 	.word	0x2001107008030b90 <ip_output_if>: */err_tip_output_if(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,             u8_t ttl, u8_t tos,             u8_t proto, struct netif *netif){ 8030b90:	e92d 47f3 	stmdb	sp!, {r0, r1, r4, r5, r6, r7, r8, r9, sl, lr} 8030b94:	4615      	mov	r5, r2 8030b96:	4606      	mov	r6, r0 8030b98:	4689      	mov	r9, r1 8030b9a:	469a      	mov	sl, r3 8030b9c:	9f0c      	ldr	r7, [sp, #48]	; 0x30  /* pbufs passed to IP must have a ref-count of 1 as their payload pointer     gets altered as the packet is passed down the stack */  LWIP_ASSERT("p->ref == 1", p->ref == 1);  snmp_inc_ipoutrequests(); 8030b9e:	f001 fbd7 	bl	8032350 <snmp_inc_ipoutrequests>  /* Should the IP header be generated or is it already included in p? */  if (dest != IP_HDRINCL) { 8030ba2:	b3b5      	cbz	r5, 8030c12 <ip_output_if+0x82>      }#endif /* CHECKSUM_GEN_IP_INLINE */    }#endif /* IP_OPTIONS_SEND */    /* generate IP header */    if (pbuf_header(p, IP_HLEN)) { 8030ba4:	4630      	mov	r0, r6 8030ba6:	2114      	movs	r1, #20 8030ba8:	f7fc ff39 	bl	802da1e <pbuf_header> 8030bac:	4680      	mov	r8, r0 8030bae:	b118      	cbz	r0, 8030bb8 <ip_output_if+0x28>      LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output: not enough room for IP header in pbuf\n"));      IP_STATS_INC(ip.err);      snmp_inc_ipoutdiscards(); 8030bb0:	f001 fbd6 	bl	8032360 <snmp_inc_ipoutdiscards>      return ERR_BUF; 8030bb4:	20fe      	movs	r0, #254	; 0xfe 8030bb6:	e036      	b.n	8030c26 <ip_output_if+0x96>    }    iphdr = (struct ip_hdr *)p->payload; 8030bb8:	6874      	ldr	r4, [r6, #4]    LWIP_ASSERT("check that first pbuf can hold struct ip_hdr",               (p->len >= sizeof(struct ip_hdr)));    IPH_TTL_SET(iphdr, ttl);    IPH_PROTO_SET(iphdr, proto); 8030bba:	f89d 302c 	ldrb.w	r3, [sp, #44]	; 0x2c    iphdr = (struct ip_hdr *)p->payload;    LWIP_ASSERT("check that first pbuf can hold struct ip_hdr",               (p->len >= sizeof(struct ip_hdr)));    IPH_TTL_SET(iphdr, ttl); 8030bbe:	f884 a008 	strb.w	sl, [r4, #8]    IPH_PROTO_SET(iphdr, proto); 8030bc2:	7263      	strb	r3, [r4, #9]#if CHECKSUM_GEN_IP_INLINE    chk_sum += LWIP_MAKE_U16(proto, ttl);#endif /* CHECKSUM_GEN_IP_INLINE */    /* dest cannot be NULL here */    ip_addr_copy(iphdr->dest, *dest); 8030bc4:	682b      	ldr	r3, [r5, #0] 8030bc6:	6123      	str	r3, [r4, #16]#if CHECKSUM_GEN_IP_INLINE    chk_sum += ip4_addr_get_u32(&iphdr->dest) & 0xFFFF;    chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16;#endif /* CHECKSUM_GEN_IP_INLINE */    IPH_VHL_SET(iphdr, 4, ip_hlen / 4); 8030bc8:	2345      	movs	r3, #69	; 0x45 8030bca:	7023      	strb	r3, [r4, #0]    IPH_TOS_SET(iphdr, tos); 8030bcc:	f89d 3028 	ldrb.w	r3, [sp, #40]	; 0x28 8030bd0:	7063      	strb	r3, [r4, #1]#if CHECKSUM_GEN_IP_INLINE    chk_sum += LWIP_MAKE_U16(tos, iphdr->_v_hl);#endif /* CHECKSUM_GEN_IP_INLINE */    IPH_LEN_SET(iphdr, htons(p->tot_len)); 8030bd2:	8930      	ldrh	r0, [r6, #8] 8030bd4:	f7fb fe10 	bl	802c7f8 <lwip_htons>#if CHECKSUM_GEN_IP_INLINE    chk_sum += iphdr->_len;#endif /* CHECKSUM_GEN_IP_INLINE */    IPH_OFFSET_SET(iphdr, 0); 8030bd8:	f884 8006 	strb.w	r8, [r4, #6] 8030bdc:	f884 8007 	strb.w	r8, [r4, #7]    IPH_ID_SET(iphdr, htons(ip_id)); 8030be0:	f8df 8048 	ldr.w	r8, [pc, #72]	; 8030c2c <ip_output_if+0x9c>    IPH_VHL_SET(iphdr, 4, ip_hlen / 4);    IPH_TOS_SET(iphdr, tos);#if CHECKSUM_GEN_IP_INLINE    chk_sum += LWIP_MAKE_U16(tos, iphdr->_v_hl);#endif /* CHECKSUM_GEN_IP_INLINE */    IPH_LEN_SET(iphdr, htons(p->tot_len)); 8030be4:	8060      	strh	r0, [r4, #2]#if CHECKSUM_GEN_IP_INLINE    chk_sum += iphdr->_len;#endif /* CHECKSUM_GEN_IP_INLINE */    IPH_OFFSET_SET(iphdr, 0);    IPH_ID_SET(iphdr, htons(ip_id)); 8030be6:	f8b8 0000 	ldrh.w	r0, [r8] 8030bea:	f7fb fe05 	bl	802c7f8 <lwip_htons> 8030bee:	80a0      	strh	r0, [r4, #4]#if CHECKSUM_GEN_IP_INLINE    chk_sum += iphdr->_id;#endif /* CHECKSUM_GEN_IP_INLINE */    ++ip_id; 8030bf0:	f8b8 3000 	ldrh.w	r3, [r8] 8030bf4:	3301      	adds	r3, #1 8030bf6:	f8a8 3000 	strh.w	r3, [r8]    if (ip_addr_isany(src)) { 8030bfa:	f1b9 0f00 	cmp.w	r9, #0 8030bfe:	d002      	beq.n	8030c06 <ip_output_if+0x76> 8030c00:	f8d9 3000 	ldr.w	r3, [r9] 8030c04:	b903      	cbnz	r3, 8030c08 <ip_output_if+0x78>      ip_addr_copy(iphdr->src, netif->ip_addr); 8030c06:	687b      	ldr	r3, [r7, #4]    } else {      /* src cannot be NULL here */      ip_addr_copy(iphdr->src, *src); 8030c08:	60e3      	str	r3, [r4, #12]    chk_sum = (chk_sum >> 16) + (chk_sum & 0xFFFF);    chk_sum = (chk_sum >> 16) + chk_sum;    chk_sum = ~chk_sum;    iphdr->_chksum = chk_sum; /* network order */#else /* CHECKSUM_GEN_IP_INLINE */    IPH_CHKSUM_SET(iphdr, 0); 8030c0a:	2300      	movs	r3, #0 8030c0c:	72a3      	strb	r3, [r4, #10] 8030c0e:	72e3      	strb	r3, [r4, #11] 8030c10:	e004      	b.n	8030c1c <ip_output_if+0x8c>#endif#endif /* CHECKSUM_GEN_IP_INLINE */  } else {    /* IP header already included in p */    iphdr = (struct ip_hdr *)p->payload;    ip_addr_copy(dest_addr, iphdr->dest); 8030c12:	6873      	ldr	r3, [r6, #4] 8030c14:	ad02      	add	r5, sp, #8 8030c16:	691b      	ldr	r3, [r3, #16] 8030c18:	f845 3d04 	str.w	r3, [r5, #-4]!    return ip_frag(p, netif, dest);  }#endif /* IP_FRAG */  LWIP_DEBUGF(IP_DEBUG, ("netif->output()"));  return netif->output(netif, p, dest); 8030c1c:	697b      	ldr	r3, [r7, #20] 8030c1e:	4638      	mov	r0, r7 8030c20:	4631      	mov	r1, r6 8030c22:	462a      	mov	r2, r5 8030c24:	4798      	blx	r3} 8030c26:	b240      	sxtb	r0, r0 8030c28:	e8bd 87fc 	ldmia.w	sp!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc} 8030c2c:	2000e1d4 	.word	0x2000e1d408030c30 <ip_output>: *         see ip_output_if() for more return values */err_tip_output(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,          u8_t ttl, u8_t tos, u8_t proto){ 8030c30:	b5f0      	push	{r4, r5, r6, r7, lr} 8030c32:	4605      	mov	r5, r0 8030c34:	b085      	sub	sp, #20  /* pbufs passed to IP must have a ref-count of 1 as their payload pointer     gets altered as the packet is passed down the stack */  LWIP_ASSERT("p->ref == 1", p->ref == 1);  if ((netif = ip_route(dest)) == NULL) { 8030c36:	4610      	mov	r0, r2 *         see ip_output_if() for more return values */err_tip_output(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest,          u8_t ttl, u8_t tos, u8_t proto){ 8030c38:	460f      	mov	r7, r1 8030c3a:	4614      	mov	r4, r2 8030c3c:	461e      	mov	r6, r3  /* pbufs passed to IP must have a ref-count of 1 as their payload pointer     gets altered as the packet is passed down the stack */  LWIP_ASSERT("p->ref == 1", p->ref == 1);  if ((netif = ip_route(dest)) == NULL) { 8030c3e:	f7ff fea3 	bl	8030988 <ip_route> 8030c42:	b168      	cbz	r0, 8030c60 <ip_output+0x30>      ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest)));    IP_STATS_INC(ip.rterr);    return ERR_RTE;  }  return ip_output_if(p, src, dest, ttl, tos, proto, netif); 8030c44:	f89d 3028 	ldrb.w	r3, [sp, #40]	; 0x28 8030c48:	9002      	str	r0, [sp, #8] 8030c4a:	9300      	str	r3, [sp, #0] 8030c4c:	f89d 302c 	ldrb.w	r3, [sp, #44]	; 0x2c 8030c50:	4628      	mov	r0, r5 8030c52:	9301      	str	r3, [sp, #4] 8030c54:	4639      	mov	r1, r7 8030c56:	4622      	mov	r2, r4 8030c58:	4633      	mov	r3, r6 8030c5a:	f7ff ff99 	bl	8030b90 <ip_output_if> 8030c5e:	e000      	b.n	8030c62 <ip_output+0x32>  if ((netif = ip_route(dest)) == NULL) {    LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n",      ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest)));    IP_STATS_INC(ip.rterr);    return ERR_RTE; 8030c60:	20fc      	movs	r0, #252	; 0xfc  }  return ip_output_if(p, src, dest, ttl, tos, proto, netif);} 8030c62:	b240      	sxtb	r0, r0 8030c64:	b005      	add	sp, #20 8030c66:	bdf0      	pop	{r4, r5, r6, r7, pc}08030c68 <snmp_asn1_dec_type>: * @param type return ASN1 type * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type){ 8030c68:	b510      	push	{r4, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 8030c6a:	2300      	movs	r3, #0  while (p != NULL) 8030c6c:	e00c      	b.n	8030c88 <snmp_asn1_dec_type+0x20>  {    base = plen;    plen += p->len; 8030c6e:	8944      	ldrh	r4, [r0, #10] 8030c70:	191c      	adds	r4, r3, r4 8030c72:	b2a4      	uxth	r4, r4    if (ofs < plen) 8030c74:	42a1      	cmp	r1, r4 8030c76:	d205      	bcs.n	8030c84 <snmp_asn1_dec_type+0x1c>    {      msg_ptr = (u8_t*)p->payload; 8030c78:	6840      	ldr	r0, [r0, #4]      msg_ptr += ofs - base; 8030c7a:	1acb      	subs	r3, r1, r3      *type = *msg_ptr; 8030c7c:	5cc3      	ldrb	r3, [r0, r3]      return ERR_OK; 8030c7e:	2000      	movs	r0, #0    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      *type = *msg_ptr; 8030c80:	7013      	strb	r3, [r2, #0]      return ERR_OK; 8030c82:	e004      	b.n	8030c8e <snmp_asn1_dec_type+0x26>    }    p = p->next; 8030c84:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 8030c86:	4623      	mov	r3, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 8030c88:	2800      	cmp	r0, #0 8030c8a:	d1f0      	bne.n	8030c6e <snmp_asn1_dec_type+0x6>      return ERR_OK;    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG; 8030c8c:	20f2      	movs	r0, #242	; 0xf2} 8030c8e:	b240      	sxtb	r0, r0 8030c90:	bd10      	pop	{r4, pc}08030c92 <snmp_asn1_dec_length>: * @param length return host order length, upto 64k * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length){ 8030c92:	b5f0      	push	{r4, r5, r6, r7, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 8030c94:	2500      	movs	r5, #0  while (p != NULL) 8030c96:	e079      	b.n	8030d8c <snmp_asn1_dec_length+0xfa>  {    base = plen;    plen += p->len; 8030c98:	8944      	ldrh	r4, [r0, #10] 8030c9a:	192c      	adds	r4, r5, r4 8030c9c:	b2a4      	uxth	r4, r4    if (ofs < plen) 8030c9e:	42a1      	cmp	r1, r4 8030ca0:	d272      	bcs.n	8030d88 <snmp_asn1_dec_length+0xf6>    {      msg_ptr = (u8_t*)p->payload; 8030ca2:	f8d0 c004 	ldr.w	ip, [r0, #4]      msg_ptr += ofs - base; 8030ca6:	1b4f      	subs	r7, r1, r5 8030ca8:	eb0c 0507 	add.w	r5, ip, r7      if (*msg_ptr < 0x80) 8030cac:	f81c 6007 	ldrb.w	r6, [ip, r7] 8030cb0:	f016 0f80 	tst.w	r6, #128	; 0x80 8030cb4:	d105      	bne.n	8030cc2 <snmp_asn1_dec_length+0x30>      {        /* primitive definite length format */        *octets_used = 1; 8030cb6:	2101      	movs	r1, #1 8030cb8:	7011      	strb	r1, [r2, #0]        *length = *msg_ptr; 8030cba:	f81c 2007 	ldrb.w	r2, [ip, r7] 8030cbe:	801a      	strh	r2, [r3, #0] 8030cc0:	e05a      	b.n	8030d78 <snmp_asn1_dec_length+0xe6>        return ERR_OK;      }      else if (*msg_ptr == 0x80) 8030cc2:	2e80      	cmp	r6, #128	; 0x80 8030cc4:	d12a      	bne.n	8030d1c <snmp_asn1_dec_length+0x8a>      {        /* constructed indefinite length format, termination with two zero octets */        u8_t zeros;        u8_t i;        *length = 0; 8030cc6:	2600      	movs	r6, #0 8030cc8:	801e      	strh	r6, [r3, #0] 8030cca:	e022      	b.n	8030d12 <snmp_asn1_dec_length+0x80>        {          i = 2;          while (i > 0)          {            i--;            (*length) += 1; 8030ccc:	f8b3 c000 	ldrh.w	ip, [r3]            ofs += 1; 8030cd0:	3101      	adds	r1, #1 8030cd2:	b289      	uxth	r1, r1        {          i = 2;          while (i > 0)          {            i--;            (*length) += 1; 8030cd4:	f10c 0c01 	add.w	ip, ip, #1            ofs += 1;            if (ofs >= plen) 8030cd8:	42a1      	cmp	r1, r4        {          i = 2;          while (i > 0)          {            i--;            (*length) += 1; 8030cda:	f8a3 c000 	strh.w	ip, [r3]            ofs += 1;            if (ofs >= plen) 8030cde:	d308      	bcc.n	8030cf2 <snmp_asn1_dec_length+0x60>            {              /* next octet in next pbuf */              p = p->next; 8030ce0:	6800      	ldr	r0, [r0, #0]              if (p == NULL) { return ERR_ARG; } 8030ce2:	b900      	cbnz	r0, 8030ce6 <snmp_asn1_dec_length+0x54> 8030ce4:	e04e      	b.n	8030d84 <snmp_asn1_dec_length+0xf2>              msg_ptr = (u8_t*)p->payload;              plen += p->len; 8030ce6:	f8b0 c00a 	ldrh.w	ip, [r0, #10]            if (ofs >= plen)            {              /* next octet in next pbuf */              p = p->next;              if (p == NULL) { return ERR_ARG; }              msg_ptr = (u8_t*)p->payload; 8030cea:	6845      	ldr	r5, [r0, #4]              plen += p->len; 8030cec:	4464      	add	r4, ip 8030cee:	b2a4      	uxth	r4, r4 8030cf0:	e000      	b.n	8030cf4 <snmp_asn1_dec_length+0x62>            }            else            {              /* next octet in same pbuf */              msg_ptr++; 8030cf2:	3501      	adds	r5, #1            }            if (*msg_ptr == 0) 8030cf4:	f895 c000 	ldrb.w	ip, [r5] 8030cf8:	f1bc 0f00 	cmp.w	ip, #0 8030cfc:	d104      	bne.n	8030d08 <snmp_asn1_dec_length+0x76>            {              zeros++; 8030cfe:	3601      	adds	r6, #1 8030d00:	b2f6      	uxtb	r6, r6              if (zeros == 2) 8030d02:	2e02      	cmp	r6, #2 8030d04:	d101      	bne.n	8030d0a <snmp_asn1_dec_length+0x78> 8030d06:	e007      	b.n	8030d18 <snmp_asn1_dec_length+0x86>                i = 0;              }            }            else            {              zeros = 0; 8030d08:	2600      	movs	r6, #0        *length = 0;        zeros = 0;        while (zeros != 2)        {          i = 2;          while (i > 0) 8030d0a:	42b9      	cmp	r1, r7 8030d0c:	d1de      	bne.n	8030ccc <snmp_asn1_dec_length+0x3a>        u8_t zeros;        u8_t i;        *length = 0;        zeros = 0;        while (zeros != 2) 8030d0e:	2e02      	cmp	r6, #2 8030d10:	d002      	beq.n	8030d18 <snmp_asn1_dec_length+0x86> * @param octets_used returns number of octets used by the length code * @param length return host order length, upto 64k * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length) 8030d12:	1c8f      	adds	r7, r1, #2 8030d14:	b2bf      	uxth	r7, r7 8030d16:	e7d9      	b.n	8030ccc <snmp_asn1_dec_length+0x3a>            {              zeros = 0;            }          }        }        *octets_used = 1; 8030d18:	2301      	movs	r3, #1 8030d1a:	e02c      	b.n	8030d76 <snmp_asn1_dec_length+0xe4>        return ERR_OK;      }      else if (*msg_ptr == 0x81) 8030d1c:	2e81      	cmp	r6, #129	; 0x81 8030d1e:	d10c      	bne.n	8030d3a <snmp_asn1_dec_length+0xa8>      {        /* constructed definite length format, one octet */        ofs += 1; 8030d20:	3101      	adds	r1, #1        if (ofs >= plen) 8030d22:	b289      	uxth	r1, r1 8030d24:	42a1      	cmp	r1, r4 8030d26:	d303      	bcc.n	8030d30 <snmp_asn1_dec_length+0x9e>        {          /* next octet in next pbuf */          p = p->next; 8030d28:	6801      	ldr	r1, [r0, #0]          if (p == NULL) { return ERR_ARG; } 8030d2a:	b359      	cbz	r1, 8030d84 <snmp_asn1_dec_length+0xf2>          msg_ptr = (u8_t*)p->payload; 8030d2c:	684d      	ldr	r5, [r1, #4] 8030d2e:	e000      	b.n	8030d32 <snmp_asn1_dec_length+0xa0>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 8030d30:	3501      	adds	r5, #1        }        *length = *msg_ptr; 8030d32:	7829      	ldrb	r1, [r5, #0] 8030d34:	8019      	strh	r1, [r3, #0]        *octets_used = 2; 8030d36:	2302      	movs	r3, #2 8030d38:	e01d      	b.n	8030d76 <snmp_asn1_dec_length+0xe4>        return ERR_OK;      }      else if (*msg_ptr == 0x82) 8030d3a:	2e82      	cmp	r6, #130	; 0x82 8030d3c:	d11e      	bne.n	8030d7c <snmp_asn1_dec_length+0xea>        /* constructed definite length format, two octets */        i = 2;        while (i > 0)        {          i--;          ofs += 1; 8030d3e:	1c4e      	adds	r6, r1, #1          if (ofs >= plen) 8030d40:	b2b6      	uxth	r6, r6 8030d42:	42a6      	cmp	r6, r4 8030d44:	d201      	bcs.n	8030d4a <snmp_asn1_dec_length+0xb8>            plen += p->len;          }          else          {            /* next octet in same pbuf */            msg_ptr++; 8030d46:	3501      	adds	r5, #1 8030d48:	e005      	b.n	8030d56 <snmp_asn1_dec_length+0xc4>          i--;          ofs += 1;          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next; 8030d4a:	6800      	ldr	r0, [r0, #0]            if (p == NULL) { return ERR_ARG; } 8030d4c:	b1d0      	cbz	r0, 8030d84 <snmp_asn1_dec_length+0xf2>            msg_ptr = (u8_t*)p->payload;            plen += p->len; 8030d4e:	8946      	ldrh	r6, [r0, #10]          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next;            if (p == NULL) { return ERR_ARG; }            msg_ptr = (u8_t*)p->payload; 8030d50:	6845      	ldr	r5, [r0, #4]            plen += p->len; 8030d52:	19a4      	adds	r4, r4, r6 8030d54:	b2a4      	uxth	r4, r4            *length |= *msg_ptr;          }          else          {            /* most significant length octet */            *length = (*msg_ptr) << 8; 8030d56:	782e      	ldrb	r6, [r5, #0]        /* constructed definite length format, two octets */        i = 2;        while (i > 0)        {          i--;          ofs += 1; 8030d58:	3102      	adds	r1, #2          if (ofs >= plen) 8030d5a:	b289      	uxth	r1, r1            *length |= *msg_ptr;          }          else          {            /* most significant length octet */            *length = (*msg_ptr) << 8; 8030d5c:	0236      	lsls	r6, r6, #8        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 8030d5e:	42a1      	cmp	r1, r4            *length |= *msg_ptr;          }          else          {            /* most significant length octet */            *length = (*msg_ptr) << 8; 8030d60:	801e      	strh	r6, [r3, #0]        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 8030d62:	d201      	bcs.n	8030d68 <snmp_asn1_dec_length+0xd6>            plen += p->len;          }          else          {            /* next octet in same pbuf */            msg_ptr++; 8030d64:	3501      	adds	r5, #1 8030d66:	e002      	b.n	8030d6e <snmp_asn1_dec_length+0xdc>          i--;          ofs += 1;          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next; 8030d68:	6801      	ldr	r1, [r0, #0]            if (p == NULL) { return ERR_ARG; } 8030d6a:	b159      	cbz	r1, 8030d84 <snmp_asn1_dec_length+0xf2>            msg_ptr = (u8_t*)p->payload; 8030d6c:	684d      	ldr	r5, [r1, #4]            msg_ptr++;          }          if (i == 0)          {            /* least significant length octet */            *length |= *msg_ptr; 8030d6e:	7829      	ldrb	r1, [r5, #0] 8030d70:	430e      	orrs	r6, r1 8030d72:	801e      	strh	r6, [r3, #0]          {            /* most significant length octet */            *length = (*msg_ptr) << 8;          }        }        *octets_used = 3; 8030d74:	2303      	movs	r3, #3 8030d76:	7013      	strb	r3, [r2, #0]        return ERR_OK; 8030d78:	2000      	movs	r0, #0 8030d7a:	e00a      	b.n	8030d92 <snmp_asn1_dec_length+0x100>      }      else      {        /* constructed definite length format 3..127 octets, this is too big (>64k) */        /**  @todo: do we need to accept inefficient codings with many leading zero's? */        *octets_used = 1 + ((*msg_ptr) & 0x7f); 8030d7c:	f006 067f 	and.w	r6, r6, #127	; 0x7f 8030d80:	3601      	adds	r6, #1 8030d82:	7016      	strb	r6, [r2, #0]        return ERR_ARG; 8030d84:	20f2      	movs	r0, #242	; 0xf2 8030d86:	e004      	b.n	8030d92 <snmp_asn1_dec_length+0x100>      }    }    p = p->next; 8030d88:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 8030d8a:	4625      	mov	r5, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 8030d8c:	2800      	cmp	r0, #0 8030d8e:	d183      	bne.n	8030c98 <snmp_asn1_dec_length+0x6> 8030d90:	e7f8      	b.n	8030d84 <snmp_asn1_dec_length+0xf2>    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 8030d92:	b240      	sxtb	r0, r0 8030d94:	bdf0      	pop	{r4, r5, r6, r7, pc}08030d96 <snmp_asn1_dec_u32t>: * as 0x00,0xFF,0xFF. Note the leading sign octet. A positive value * of 0xFFFFFFFF is preceded with 0x00 and the length is 5 octets!! */err_tsnmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value){ 8030d96:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 8030d9a:	2500      	movs	r5, #0  while (p != NULL) 8030d9c:	e049      	b.n	8030e32 <snmp_asn1_dec_u32t+0x9c>  {    base = plen;    plen += p->len; 8030d9e:	8944      	ldrh	r4, [r0, #10] 8030da0:	192c      	adds	r4, r5, r4 8030da2:	b2a4      	uxth	r4, r4    if (ofs < plen) 8030da4:	42a1      	cmp	r1, r4 8030da6:	d242      	bcs.n	8030e2e <snmp_asn1_dec_u32t+0x98>    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      if ((len > 0) && (len < 6)) 8030da8:	1e56      	subs	r6, r2, #1  {    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload; 8030daa:	f8d0 c004 	ldr.w	ip, [r0, #4]      msg_ptr += ofs - base;      if ((len > 0) && (len < 6)) 8030dae:	b2b6      	uxth	r6, r6    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 8030db0:	1b4f      	subs	r7, r1, r5      if ((len > 0) && (len < 6)) 8030db2:	2e04      	cmp	r6, #4    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 8030db4:	eb0c 0507 	add.w	r5, ip, r7      if ((len > 0) && (len < 6)) 8030db8:	d901      	bls.n	8030dbe <snmp_asn1_dec_u32t+0x28>        *value |= *msg_ptr;        return ERR_OK;      }      else      {        return ERR_ARG; 8030dba:	20f2      	movs	r0, #242	; 0xf2 8030dbc:	e03c      	b.n	8030e38 <snmp_asn1_dec_u32t+0xa2>      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      if ((len > 0) && (len < 6))      {        /* start from zero */        *value = 0; 8030dbe:	f04f 0800 	mov.w	r8, #0 8030dc2:	f8c3 8000 	str.w	r8, [r3]        if (*msg_ptr & 0x80) 8030dc6:	f81c 7007 	ldrb.w	r7, [ip, r7] 8030dca:	f017 0f80 	tst.w	r7, #128	; 0x80 8030dce:	d1f4      	bne.n	8030dba <snmp_asn1_dec_u32t+0x24>          return ERR_ARG;        }        else        {          /* positive */          if ((len > 1) && (*msg_ptr == 0)) 8030dd0:	2a01      	cmp	r2, #1 8030dd2:	d00e      	beq.n	8030df2 <snmp_asn1_dec_u32t+0x5c> 8030dd4:	b96f      	cbnz	r7, 8030df2 <snmp_asn1_dec_u32t+0x5c>          {            /* skip leading "sign byte" octet 0x00 */            len--;            ofs += 1; 8030dd6:	3101      	adds	r1, #1 8030dd8:	b289      	uxth	r1, r1            if (ofs >= plen) 8030dda:	42a1      	cmp	r1, r4        {          /* positive */          if ((len > 1) && (*msg_ptr == 0))          {            /* skip leading "sign byte" octet 0x00 */            len--; 8030ddc:	4632      	mov	r2, r6            ofs += 1;            if (ofs >= plen) 8030dde:	d307      	bcc.n	8030df0 <snmp_asn1_dec_u32t+0x5a>            {              /* next octet in next pbuf */              p = p->next; 8030de0:	6800      	ldr	r0, [r0, #0]              if (p == NULL) { return ERR_ARG; } 8030de2:	2800      	cmp	r0, #0 8030de4:	d0e9      	beq.n	8030dba <snmp_asn1_dec_u32t+0x24>              msg_ptr = (u8_t*)p->payload;              plen += p->len; 8030de6:	8946      	ldrh	r6, [r0, #10]            if (ofs >= plen)            {              /* next octet in next pbuf */              p = p->next;              if (p == NULL) { return ERR_ARG; }              msg_ptr = (u8_t*)p->payload; 8030de8:	6845      	ldr	r5, [r0, #4]              plen += p->len; 8030dea:	19a4      	adds	r4, r4, r6 8030dec:	b2a4      	uxth	r4, r4 8030dee:	e000      	b.n	8030df2 <snmp_asn1_dec_u32t+0x5c>            }            else            {              /* next octet in same pbuf */              msg_ptr++; 8030df0:	3501      	adds	r5, #1 8030df2:	1c4e      	adds	r6, r1, #1 * @note ASN coded integers are _always_ signed. E.g. +0xFFFF is coded * as 0x00,0xFF,0xFF. Note the leading sign octet. A positive value * of 0xFFFFFFFF is preceded with 0x00 and the length is 5 octets!! */err_tsnmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value) 8030df4:	188a      	adds	r2, r1, r2 8030df6:	b2b6      	uxth	r6, r6 8030df8:	b292      	uxth	r2, r2 8030dfa:	e010      	b.n	8030e1e <snmp_asn1_dec_u32t+0x88>        }        /* OR octets with value */        while (len > 1)        {          len--;          *value |= *msg_ptr; 8030dfc:	7829      	ldrb	r1, [r5, #0] 8030dfe:	430f      	orrs	r7, r1          *value <<= 8; 8030e00:	023f      	lsls	r7, r7, #8          ofs += 1;          if (ofs >= plen) 8030e02:	42a6      	cmp	r6, r4        /* OR octets with value */        while (len > 1)        {          len--;          *value |= *msg_ptr;          *value <<= 8; 8030e04:	601f      	str	r7, [r3, #0]          ofs += 1;          if (ofs >= plen) 8030e06:	d307      	bcc.n	8030e18 <snmp_asn1_dec_u32t+0x82>          {            /* next octet in next pbuf */            p = p->next; 8030e08:	6800      	ldr	r0, [r0, #0]            if (p == NULL) { return ERR_ARG; } 8030e0a:	2800      	cmp	r0, #0 8030e0c:	d0d5      	beq.n	8030dba <snmp_asn1_dec_u32t+0x24>            msg_ptr = (u8_t*)p->payload;            plen += p->len; 8030e0e:	8941      	ldrh	r1, [r0, #10]          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next;            if (p == NULL) { return ERR_ARG; }            msg_ptr = (u8_t*)p->payload; 8030e10:	6845      	ldr	r5, [r0, #4]            plen += p->len; 8030e12:	1864      	adds	r4, r4, r1 8030e14:	b2a4      	uxth	r4, r4 8030e16:	e000      	b.n	8030e1a <snmp_asn1_dec_u32t+0x84>          }          else          {            /* next octet in same pbuf */            msg_ptr++; 8030e18:	3501      	adds	r5, #1 8030e1a:	3601      	adds	r6, #1 8030e1c:	b2b6      	uxth	r6, r6              msg_ptr++;            }          }        }        /* OR octets with value */        while (len > 1) 8030e1e:	4296      	cmp	r6, r2 8030e20:	681f      	ldr	r7, [r3, #0] 8030e22:	d1eb      	bne.n	8030dfc <snmp_asn1_dec_u32t+0x66>          {            /* next octet in same pbuf */            msg_ptr++;          }        }        *value |= *msg_ptr; 8030e24:	782a      	ldrb	r2, [r5, #0] 8030e26:	4317      	orrs	r7, r2 8030e28:	601f      	str	r7, [r3, #0]        return ERR_OK; 8030e2a:	2000      	movs	r0, #0 8030e2c:	e004      	b.n	8030e38 <snmp_asn1_dec_u32t+0xa2>      else      {        return ERR_ARG;      }    }    p = p->next; 8030e2e:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 8030e30:	4625      	mov	r5, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 8030e32:	2800      	cmp	r0, #0 8030e34:	d1b3      	bne.n	8030d9e <snmp_asn1_dec_u32t+0x8> 8030e36:	e7c0      	b.n	8030dba <snmp_asn1_dec_u32t+0x24>    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 8030e38:	b240      	sxtb	r0, r0 8030e3a:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}08030e3e <snmp_asn1_dec_s32t>: * * @note ASN coded integers are _always_ signed! */err_tsnmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value){ 8030e3e:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}#if BYTE_ORDER == BIG_ENDIAN  u8_t *lsb_ptr = (u8_t*)value + sizeof(s32_t) - 1;#endif  u8_t sign;  plen = 0; 8030e42:	2500      	movs	r5, #0  while (p != NULL) 8030e44:	e04e      	b.n	8030ee4 <snmp_asn1_dec_s32t+0xa6>  {    base = plen;    plen += p->len; 8030e46:	8944      	ldrh	r4, [r0, #10] 8030e48:	192c      	adds	r4, r5, r4 8030e4a:	b2a4      	uxth	r4, r4    if (ofs < plen) 8030e4c:	42a1      	cmp	r1, r4 8030e4e:	d247      	bcs.n	8030ee0 <snmp_asn1_dec_s32t+0xa2>    {      msg_ptr = (u8_t*)p->payload; 8030e50:	6847      	ldr	r7, [r0, #4]      msg_ptr += ofs - base;      if ((len > 0) && (len < 5)) 8030e52:	f102 3cff 	add.w	ip, r2, #4294967295    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 8030e56:	1b4e      	subs	r6, r1, r5      if ((len > 0) && (len < 5)) 8030e58:	f1bc 0f03 	cmp.w	ip, #3    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 8030e5c:	eb07 0506 	add.w	r5, r7, r6      if ((len > 0) && (len < 5)) 8030e60:	d901      	bls.n	8030e66 <snmp_asn1_dec_s32t+0x28>        }        return ERR_OK;      }      else      {        return ERR_ARG; 8030e62:	20f2      	movs	r0, #242	; 0xf2 8030e64:	e041      	b.n	8030eea <snmp_asn1_dec_s32t+0xac>    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      if ((len > 0) && (len < 5))      {        if (*msg_ptr & 0x80) 8030e66:	57be      	ldrsb	r6, [r7, r6] 8030e68:	2e00      	cmp	r6, #0 8030e6a:	da0b      	bge.n	8030e84 <snmp_asn1_dec_s32t+0x46>        {          /* negative, start from -1 */          *value = -1; 8030e6c:	f04f 36ff 	mov.w	r6, #4294967295 8030e70:	601e      	str	r6, [r3, #0]          sign = 1; 8030e72:	2601      	movs	r6, #1 8030e74:	f101 0c01 	add.w	ip, r1, #1 * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode * * @note ASN coded integers are _always_ signed! */err_tsnmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value) 8030e78:	1852      	adds	r2, r2, r1 8030e7a:	fa1f fc8c 	uxth.w	ip, ip 8030e7e:	b292      	uxth	r2, r2          len--;          if (sign)          {            *lsb_ptr &= *msg_ptr;            *value <<= 8;            *lsb_ptr |= 255; 8030e80:	21ff      	movs	r1, #255	; 0xff 8030e82:	e022      	b.n	8030eca <snmp_asn1_dec_s32t+0x8c>          sign = 1;        }        else        {          /* positive, start from 0 */          *value = 0; 8030e84:	2600      	movs	r6, #0 8030e86:	601e      	str	r6, [r3, #0] 8030e88:	e7f4      	b.n	8030e74 <snmp_asn1_dec_s32t+0x36> 8030e8a:	f895 8000 	ldrb.w	r8, [r5]        }        /* OR/AND octets with value */        while (len > 1)        {          len--;          if (sign) 8030e8e:	b13e      	cbz	r6, 8030ea0 <snmp_asn1_dec_s32t+0x62>          {            *lsb_ptr &= *msg_ptr; 8030e90:	ea08 0707 	and.w	r7, r8, r7 8030e94:	701f      	strb	r7, [r3, #0]            *value <<= 8; 8030e96:	681f      	ldr	r7, [r3, #0] 8030e98:	023f      	lsls	r7, r7, #8 8030e9a:	601f      	str	r7, [r3, #0]            *lsb_ptr |= 255; 8030e9c:	7019      	strb	r1, [r3, #0] 8030e9e:	e005      	b.n	8030eac <snmp_asn1_dec_s32t+0x6e>          }          else          {            *lsb_ptr |= *msg_ptr; 8030ea0:	ea48 0707 	orr.w	r7, r8, r7 8030ea4:	701f      	strb	r7, [r3, #0]            *value <<= 8; 8030ea6:	681f      	ldr	r7, [r3, #0] 8030ea8:	023f      	lsls	r7, r7, #8 8030eaa:	601f      	str	r7, [r3, #0]          }          ofs += 1;          if (ofs >= plen) 8030eac:	45a4      	cmp	ip, r4 8030eae:	d307      	bcc.n	8030ec0 <snmp_asn1_dec_s32t+0x82>          {            /* next octet in next pbuf */            p = p->next; 8030eb0:	6800      	ldr	r0, [r0, #0]            if (p == NULL) { return ERR_ARG; } 8030eb2:	2800      	cmp	r0, #0 8030eb4:	d0d5      	beq.n	8030e62 <snmp_asn1_dec_s32t+0x24>            msg_ptr = (u8_t*)p->payload;            plen += p->len; 8030eb6:	8947      	ldrh	r7, [r0, #10]          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next;            if (p == NULL) { return ERR_ARG; }            msg_ptr = (u8_t*)p->payload; 8030eb8:	6845      	ldr	r5, [r0, #4]            plen += p->len; 8030eba:	19e4      	adds	r4, r4, r7 8030ebc:	b2a4      	uxth	r4, r4 8030ebe:	e000      	b.n	8030ec2 <snmp_asn1_dec_s32t+0x84>          }          else          {            /* next octet in same pbuf */            msg_ptr++; 8030ec0:	3501      	adds	r5, #1 8030ec2:	f10c 0c01 	add.w	ip, ip, #1 8030ec6:	fa1f fc8c 	uxth.w	ip, ip          /* positive, start from 0 */          *value = 0;          sign = 0;        }        /* OR/AND octets with value */        while (len > 1) 8030eca:	4594      	cmp	ip, r2 8030ecc:	781f      	ldrb	r7, [r3, #0] 8030ece:	d1dc      	bne.n	8030e8a <snmp_asn1_dec_s32t+0x4c> 8030ed0:	782a      	ldrb	r2, [r5, #0]          {            /* next octet in same pbuf */            msg_ptr++;          }        }        if (sign) 8030ed2:	b11e      	cbz	r6, 8030edc <snmp_asn1_dec_s32t+0x9e>        {          *lsb_ptr &= *msg_ptr; 8030ed4:	4017      	ands	r7, r2 8030ed6:	701f      	strb	r7, [r3, #0]        }        else        {          *lsb_ptr |= *msg_ptr;        }        return ERR_OK; 8030ed8:	2000      	movs	r0, #0 8030eda:	e006      	b.n	8030eea <snmp_asn1_dec_s32t+0xac>        {          *lsb_ptr &= *msg_ptr;        }        else        {          *lsb_ptr |= *msg_ptr; 8030edc:	4317      	orrs	r7, r2 8030ede:	e7fa      	b.n	8030ed6 <snmp_asn1_dec_s32t+0x98>      else      {        return ERR_ARG;      }    }    p = p->next; 8030ee0:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 8030ee2:	4625      	mov	r5, r4  u8_t *lsb_ptr = (u8_t*)value + sizeof(s32_t) - 1;#endif  u8_t sign;  plen = 0;  while (p != NULL) 8030ee4:	2800      	cmp	r0, #0 8030ee6:	d1ae      	bne.n	8030e46 <snmp_asn1_dec_s32t+0x8> 8030ee8:	e7bb      	b.n	8030e62 <snmp_asn1_dec_s32t+0x24>    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 8030eea:	b240      	sxtb	r0, r0 8030eec:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}08030ef0 <snmp_asn1_dec_oid>: * @param oid return object identifier struct * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid){ 8030ef0:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}  u16_t plen, base;  u8_t *msg_ptr;  s32_t *oid_ptr;  plen = 0; 8030ef4:	2600      	movs	r6, #0  while (p != NULL) 8030ef6:	e08d      	b.n	8031014 <snmp_asn1_dec_oid+0x124>  {    base = plen;    plen += p->len; 8030ef8:	8944      	ldrh	r4, [r0, #10] 8030efa:	1934      	adds	r4, r6, r4 8030efc:	b2a4      	uxth	r4, r4    if (ofs < plen) 8030efe:	42a1      	cmp	r1, r4 8030f00:	f080 8086 	bcs.w	8031010 <snmp_asn1_dec_oid+0x120>    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      oid->len = 0; 8030f04:	f04f 0800 	mov.w	r8, #0  {    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload; 8030f08:	6847      	ldr	r7, [r0, #4]      msg_ptr += ofs - base;      oid->len = 0; 8030f0a:	f883 8000 	strb.w	r8, [r3]      oid_ptr = &oid->id[0];      if (len > 0) 8030f0e:	b90a      	cbnz	r2, 8030f14 <snmp_asn1_dec_oid+0x24>      }      else      {        /* accepting zero length identifiers e.g. for           getnext operation. uncommon but valid */        return ERR_OK; 8030f10:	2000      	movs	r0, #0 8030f12:	e083      	b.n	803101c <snmp_asn1_dec_oid+0x12c>    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 8030f14:	1b8e      	subs	r6, r1, r6 8030f16:	19bd      	adds	r5, r7, r6      oid->len = 0;      oid_ptr = &oid->id[0];      if (len > 0)      {        /* first compressed octet */        if (*msg_ptr == 0x2B) 8030f18:	f817 c006 	ldrb.w	ip, [r7, r6] 8030f1c:	f1bc 0f2b 	cmp.w	ip, #43	; 0x2b 8030f20:	d103      	bne.n	8030f2a <snmp_asn1_dec_oid+0x3a>        {          /* (most) common case 1.3 (iso.org) */          *oid_ptr = 1; 8030f22:	2601      	movs	r6, #1 8030f24:	605e      	str	r6, [r3, #4]          oid_ptr++;          *oid_ptr = 3; 8030f26:	2603      	movs	r6, #3 8030f28:	e016      	b.n	8030f58 <snmp_asn1_dec_oid+0x68>          oid_ptr++;        }        else if (*msg_ptr < 40) 8030f2a:	f1bc 0f27 	cmp.w	ip, #39	; 0x27 8030f2e:	d803      	bhi.n	8030f38 <snmp_asn1_dec_oid+0x48>        {          *oid_ptr = 0; 8030f30:	f8c3 8004 	str.w	r8, [r3, #4]          oid_ptr++;          *oid_ptr = *msg_ptr; 8030f34:	5dbe      	ldrb	r6, [r7, r6] 8030f36:	e00f      	b.n	8030f58 <snmp_asn1_dec_oid+0x68>          oid_ptr++;        }        else if (*msg_ptr < 80) 8030f38:	f1bc 0f4f 	cmp.w	ip, #79	; 0x4f 8030f3c:	d806      	bhi.n	8030f4c <snmp_asn1_dec_oid+0x5c>        {          *oid_ptr = 1; 8030f3e:	f04f 0c01 	mov.w	ip, #1 8030f42:	f8c3 c004 	str.w	ip, [r3, #4]          oid_ptr++;          *oid_ptr = (*msg_ptr) - 40; 8030f46:	5dbe      	ldrb	r6, [r7, r6] 8030f48:	3e28      	subs	r6, #40	; 0x28 8030f4a:	e005      	b.n	8030f58 <snmp_asn1_dec_oid+0x68>          oid_ptr++;        }        else        {          *oid_ptr = 2; 8030f4c:	f04f 0c02 	mov.w	ip, #2 8030f50:	f8c3 c004 	str.w	ip, [r3, #4]          oid_ptr++;          *oid_ptr = (*msg_ptr) - 80; 8030f54:	5dbe      	ldrb	r6, [r7, r6] 8030f56:	3e50      	subs	r6, #80	; 0x50      {        /* accepting zero length identifiers e.g. for           getnext operation. uncommon but valid */        return ERR_OK;      }      len--; 8030f58:	3a01      	subs	r2, #1          *oid_ptr = 2;          oid_ptr++;          *oid_ptr = (*msg_ptr) - 80;          oid_ptr++;        }        oid->len = 2; 8030f5a:	2702      	movs	r7, #2      {        /* accepting zero length identifiers e.g. for           getnext operation. uncommon but valid */        return ERR_OK;      }      len--; 8030f5c:	b292      	uxth	r2, r2        }        else        {          *oid_ptr = 2;          oid_ptr++;          *oid_ptr = (*msg_ptr) - 80; 8030f5e:	609e      	str	r6, [r3, #8]          oid_ptr++;        }        oid->len = 2; 8030f60:	701f      	strb	r7, [r3, #0]        else        {          *oid_ptr = 2;          oid_ptr++;          *oid_ptr = (*msg_ptr) - 80;          oid_ptr++; 8030f62:	f103 060c 	add.w	r6, r3, #12        /* accepting zero length identifiers e.g. for           getnext operation. uncommon but valid */        return ERR_OK;      }      len--;      if (len > 0) 8030f66:	2a00      	cmp	r2, #0 8030f68:	d04b      	beq.n	8031002 <snmp_asn1_dec_oid+0x112>      {        ofs += 1; 8030f6a:	3101      	adds	r1, #1 8030f6c:	b289      	uxth	r1, r1        if (ofs >= plen) 8030f6e:	42a1      	cmp	r1, r4 8030f70:	d308      	bcc.n	8030f84 <snmp_asn1_dec_oid+0x94>        {          /* next octet in next pbuf */          p = p->next; 8030f72:	6800      	ldr	r0, [r0, #0]          if (p == NULL) { return ERR_ARG; } 8030f74:	b908      	cbnz	r0, 8030f7a <snmp_asn1_dec_oid+0x8a> 8030f76:	20f2      	movs	r0, #242	; 0xf2 8030f78:	e050      	b.n	803101c <snmp_asn1_dec_oid+0x12c>          msg_ptr = (u8_t*)p->payload;          plen += p->len; 8030f7a:	8947      	ldrh	r7, [r0, #10]        if (ofs >= plen)        {          /* next octet in next pbuf */          p = p->next;          if (p == NULL) { return ERR_ARG; }          msg_ptr = (u8_t*)p->payload; 8030f7c:	6845      	ldr	r5, [r0, #4]          plen += p->len; 8030f7e:	19e4      	adds	r4, r4, r7 8030f80:	b2a4      	uxth	r4, r4 8030f82:	e03e      	b.n	8031002 <snmp_asn1_dec_oid+0x112>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 8030f84:	3501      	adds	r5, #1 8030f86:	e03c      	b.n	8031002 <snmp_asn1_dec_oid+0x112>        }      }      while ((len > 0) && (oid->len < LWIP_SNMP_OBJ_ID_LEN))      {        /* sub-identifier uses multiple octets */        if (*msg_ptr & 0x80) 8030f88:	782f      	ldrb	r7, [r5, #0] 8030f8a:	f017 0f80 	tst.w	r7, #128	; 0x80 8030f8e:	d023      	beq.n	8030fd8 <snmp_asn1_dec_oid+0xe8> 8030f90:	e014      	b.n	8030fbc <snmp_asn1_dec_oid+0xcc>          while ((*msg_ptr & 0x80) && (len > 1))          {            len--;            sub_id = (sub_id << 7) + (*msg_ptr & ~0x80);            ofs += 1; 8030f92:	3101      	adds	r1, #1 8030f94:	b289      	uxth	r1, r1        {          s32_t sub_id = 0;          while ((*msg_ptr & 0x80) && (len > 1))          {            len--; 8030f96:	3a01      	subs	r2, #1            sub_id = (sub_id << 7) + (*msg_ptr & ~0x80); 8030f98:	f02c 0c80 	bic.w	ip, ip, #128	; 0x80            ofs += 1;            if (ofs >= plen) 8030f9c:	42a1      	cmp	r1, r4        {          s32_t sub_id = 0;          while ((*msg_ptr & 0x80) && (len > 1))          {            len--; 8030f9e:	b292      	uxth	r2, r2            sub_id = (sub_id << 7) + (*msg_ptr & ~0x80); 8030fa0:	eb0c 17c7 	add.w	r7, ip, r7, lsl #7            ofs += 1;            if (ofs >= plen) 8030fa4:	d308      	bcc.n	8030fb8 <snmp_asn1_dec_oid+0xc8>            {              /* next octet in next pbuf */              p = p->next; 8030fa6:	6800      	ldr	r0, [r0, #0]              if (p == NULL) { return ERR_ARG; } 8030fa8:	2800      	cmp	r0, #0 8030faa:	d0e4      	beq.n	8030f76 <snmp_asn1_dec_oid+0x86>              msg_ptr = (u8_t*)p->payload;              plen += p->len; 8030fac:	f8b0 c00a 	ldrh.w	ip, [r0, #10]            if (ofs >= plen)            {              /* next octet in next pbuf */              p = p->next;              if (p == NULL) { return ERR_ARG; }              msg_ptr = (u8_t*)p->payload; 8030fb0:	6845      	ldr	r5, [r0, #4]              plen += p->len; 8030fb2:	4464      	add	r4, ip 8030fb4:	b2a4      	uxth	r4, r4 8030fb6:	e002      	b.n	8030fbe <snmp_asn1_dec_oid+0xce>            }            else            {              /* next octet in same pbuf */              msg_ptr++; 8030fb8:	3501      	adds	r5, #1 8030fba:	e000      	b.n	8030fbe <snmp_asn1_dec_oid+0xce>        }      }      while ((len > 0) && (oid->len < LWIP_SNMP_OBJ_ID_LEN))      {        /* sub-identifier uses multiple octets */        if (*msg_ptr & 0x80) 8030fbc:	2700      	movs	r7, #0        {          s32_t sub_id = 0;          while ((*msg_ptr & 0x80) && (len > 1)) 8030fbe:	f895 c000 	ldrb.w	ip, [r5] 8030fc2:	f01c 0f80 	tst.w	ip, #128	; 0x80 8030fc6:	d02c      	beq.n	8031022 <snmp_asn1_dec_oid+0x132> 8030fc8:	2a01      	cmp	r2, #1 8030fca:	d1e2      	bne.n	8030f92 <snmp_asn1_dec_oid+0xa2> 8030fcc:	e009      	b.n	8030fe2 <snmp_asn1_dec_oid+0xf2>            }          }          if (!(*msg_ptr & 0x80) && (len > 0))          {            /* last octet sub-identifier */            len--; 8030fce:	3a01      	subs	r2, #1 8030fd0:	b292      	uxth	r2, r2            sub_id = (sub_id << 7) + *msg_ptr; 8030fd2:	eb0c 17c7 	add.w	r7, ip, r7, lsl #7 8030fd6:	e001      	b.n	8030fdc <snmp_asn1_dec_oid+0xec>          }        }        else        {          /* !(*msg_ptr & 0x80) sub-identifier uses single octet */          len--; 8030fd8:	3a01      	subs	r2, #1 8030fda:	b292      	uxth	r2, r2          *oid_ptr = *msg_ptr; 8030fdc:	f846 7c04 	str.w	r7, [r6, #-4]        }        if (len > 0) 8030fe0:	b162      	cbz	r2, 8030ffc <snmp_asn1_dec_oid+0x10c>        {          /* remaining oid bytes available ... */          ofs += 1; 8030fe2:	3101      	adds	r1, #1 8030fe4:	b289      	uxth	r1, r1          if (ofs >= plen) 8030fe6:	42a1      	cmp	r1, r4 8030fe8:	d307      	bcc.n	8030ffa <snmp_asn1_dec_oid+0x10a>          {            /* next octet in next pbuf */            p = p->next; 8030fea:	6800      	ldr	r0, [r0, #0]            if (p == NULL) { return ERR_ARG; } 8030fec:	2800      	cmp	r0, #0 8030fee:	d0c2      	beq.n	8030f76 <snmp_asn1_dec_oid+0x86>            msg_ptr = (u8_t*)p->payload;            plen += p->len; 8030ff0:	8947      	ldrh	r7, [r0, #10]          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next;            if (p == NULL) { return ERR_ARG; }            msg_ptr = (u8_t*)p->payload; 8030ff2:	6845      	ldr	r5, [r0, #4]            plen += p->len; 8030ff4:	19e4      	adds	r4, r4, r7 8030ff6:	b2a4      	uxth	r4, r4 8030ff8:	e000      	b.n	8030ffc <snmp_asn1_dec_oid+0x10c>          }          else          {            /* next octet in same pbuf */            msg_ptr++; 8030ffa:	3501      	adds	r5, #1          }        }        oid_ptr++;        oid->len++; 8030ffc:	781f      	ldrb	r7, [r3, #0] 8030ffe:	3701      	adds	r7, #1 8031000:	701f      	strb	r7, [r3, #0] 8031002:	3604      	adds	r6, #4        {          /* next octet in same pbuf */          msg_ptr++;        }      }      while ((len > 0) && (oid->len < LWIP_SNMP_OBJ_ID_LEN)) 8031004:	2a00      	cmp	r2, #0 8031006:	d083      	beq.n	8030f10 <snmp_asn1_dec_oid+0x20> 8031008:	781f      	ldrb	r7, [r3, #0] 803100a:	2f1f      	cmp	r7, #31 803100c:	d9bc      	bls.n	8030f88 <snmp_asn1_dec_oid+0x98> 803100e:	e7b2      	b.n	8030f76 <snmp_asn1_dec_oid+0x86>        /* len > 0, oid->len == LWIP_SNMP_OBJ_ID_LEN or malformed encoding */        return ERR_ARG;      }    }    p = p->next; 8031010:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 8031012:	4626      	mov	r6, r4  u16_t plen, base;  u8_t *msg_ptr;  s32_t *oid_ptr;  plen = 0;  while (p != NULL) 8031014:	2800      	cmp	r0, #0 8031016:	f47f af6f 	bne.w	8030ef8 <snmp_asn1_dec_oid+0x8> 803101a:	e7ac      	b.n	8030f76 <snmp_asn1_dec_oid+0x86> 803101c:	b240      	sxtb	r0, r0 803101e:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}            {              /* next octet in same pbuf */              msg_ptr++;            }          }          if (!(*msg_ptr & 0x80) && (len > 0)) 8031022:	2a00      	cmp	r2, #0 8031024:	d1d3      	bne.n	8030fce <snmp_asn1_dec_oid+0xde> 8031026:	e7e9      	b.n	8030ffc <snmp_asn1_dec_oid+0x10c>08031028 <snmp_asn1_dec_raw>: * @param raw return raw bytes * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw){ 8031028:	b5f0      	push	{r4, r5, r6, r7, lr}  u16_t plen, base;  u8_t *msg_ptr;  if (len > 0) 803102a:	2a00      	cmp	r2, #0 803102c:	d12d      	bne.n	803108a <snmp_asn1_dec_raw+0x62> 803102e:	e027      	b.n	8031080 <snmp_asn1_dec_raw+0x58>  {    plen = 0;    while (p != NULL)    {      base = plen;      plen += p->len; 8031030:	8944      	ldrh	r4, [r0, #10] 8031032:	1934      	adds	r4, r6, r4 8031034:	b2a4      	uxth	r4, r4      if (ofs < plen) 8031036:	42a1      	cmp	r1, r4 8031038:	d224      	bcs.n	8031084 <snmp_asn1_dec_raw+0x5c>      {        msg_ptr = (u8_t*)p->payload; 803103a:	6847      	ldr	r7, [r0, #4]        msg_ptr += ofs - base; 803103c:	1b8d      	subs	r5, r1, r6        if (raw_len >= len) 803103e:	4293      	cmp	r3, r2      base = plen;      plen += p->len;      if (ofs < plen)      {        msg_ptr = (u8_t*)p->payload;        msg_ptr += ofs - base; 8031040:	443d      	add	r5, r7        if (raw_len >= len) 8031042:	d305      	bcc.n	8031050 <snmp_asn1_dec_raw+0x28> 8031044:	9b05      	ldr	r3, [sp, #20] * @param raw_len length of the raw return value * @param raw return raw bytes * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw) 8031046:	b29e      	uxth	r6, r3 8031048:	18b2      	adds	r2, r6, r2 803104a:	b292      	uxth	r2, r2 803104c:	1b89      	subs	r1, r1, r6 803104e:	e011      	b.n	8031074 <snmp_asn1_dec_raw+0x4c>          return ERR_OK;        }        else        {          /* raw_len < len, not enough dst space */          return ERR_ARG; 8031050:	20f2      	movs	r0, #242	; 0xf2 8031052:	e01e      	b.n	8031092 <snmp_asn1_dec_raw+0x6a>        {          while (len > 1)          {            /* copy len - 1 octets */            len--;            *raw = *msg_ptr; 8031054:	782e      	ldrb	r6, [r5, #0] 8031056:	f803 6b01 	strb.w	r6, [r3], #1 * @param raw_len length of the raw return value * @param raw return raw bytes * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode */err_tsnmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw) 803105a:	18ce      	adds	r6, r1, r3            /* copy len - 1 octets */            len--;            *raw = *msg_ptr;            raw++;            ofs += 1;            if (ofs >= plen) 803105c:	b2b6      	uxth	r6, r6 803105e:	42a6      	cmp	r6, r4 8031060:	d307      	bcc.n	8031072 <snmp_asn1_dec_raw+0x4a>            {              /* next octet in next pbuf */              p = p->next; 8031062:	6800      	ldr	r0, [r0, #0]              if (p == NULL) { return ERR_ARG; } 8031064:	2800      	cmp	r0, #0 8031066:	d0f3      	beq.n	8031050 <snmp_asn1_dec_raw+0x28>              msg_ptr = (u8_t*)p->payload;              plen += p->len; 8031068:	8946      	ldrh	r6, [r0, #10]            if (ofs >= plen)            {              /* next octet in next pbuf */              p = p->next;              if (p == NULL) { return ERR_ARG; }              msg_ptr = (u8_t*)p->payload; 803106a:	6845      	ldr	r5, [r0, #4]              plen += p->len; 803106c:	19a4      	adds	r4, r4, r6 803106e:	b2a4      	uxth	r4, r4 8031070:	e000      	b.n	8031074 <snmp_asn1_dec_raw+0x4c>            }            else            {              /* next octet in same pbuf */              msg_ptr++; 8031072:	3501      	adds	r5, #1      {        msg_ptr = (u8_t*)p->payload;        msg_ptr += ofs - base;        if (raw_len >= len)        {          while (len > 1) 8031074:	1ad7      	subs	r7, r2, r3 8031076:	b2bf      	uxth	r7, r7 8031078:	2f01      	cmp	r7, #1 803107a:	d8eb      	bhi.n	8031054 <snmp_asn1_dec_raw+0x2c>              /* next octet in same pbuf */              msg_ptr++;            }          }          /* copy last octet */          *raw = *msg_ptr; 803107c:	782a      	ldrb	r2, [r5, #0] 803107e:	701a      	strb	r2, [r3, #0]          return ERR_OK; 8031080:	2000      	movs	r0, #0 8031082:	e006      	b.n	8031092 <snmp_asn1_dec_raw+0x6a>        {          /* raw_len < len, not enough dst space */          return ERR_ARG;        }      }      p = p->next; 8031084:	6800      	ldr	r0, [r0, #0]  {    plen = 0;    while (p != NULL)    {      base = plen;      plen += p->len; 8031086:	4626      	mov	r6, r4 8031088:	e000      	b.n	803108c <snmp_asn1_dec_raw+0x64>snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw){  u16_t plen, base;  u8_t *msg_ptr;  if (len > 0) 803108a:	2600      	movs	r6, #0  {    plen = 0;    while (p != NULL) 803108c:	2800      	cmp	r0, #0 803108e:	d1cf      	bne.n	8031030 <snmp_asn1_dec_raw+0x8> 8031090:	e7de      	b.n	8031050 <snmp_asn1_dec_raw+0x28>  else  {    /* len == 0, empty string */    return ERR_OK;  }} 8031092:	b240      	sxtb	r0, r0 8031094:	bdf0      	pop	{r4, r5, r6, r7, pc}08031096 <snmp_asn1_enc_length_cnt>: * @param octets_needed points to the return value */voidsnmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed){  if (length < 0x80U) 8031096:	287f      	cmp	r0, #127	; 0x7f 8031098:	d801      	bhi.n	803109e <snmp_asn1_enc_length_cnt+0x8>  {    *octets_needed = 1; 803109a:	2301      	movs	r3, #1 803109c:	e004      	b.n	80310a8 <snmp_asn1_enc_length_cnt+0x12>  }  else if (length < 0x100U) 803109e:	28ff      	cmp	r0, #255	; 0xff 80310a0:	d801      	bhi.n	80310a6 <snmp_asn1_enc_length_cnt+0x10>  {    *octets_needed = 2; 80310a2:	2302      	movs	r3, #2 80310a4:	e000      	b.n	80310a8 <snmp_asn1_enc_length_cnt+0x12>  }  else  {    *octets_needed = 3; 80310a6:	2303      	movs	r3, #3 80310a8:	700b      	strb	r3, [r1, #0] 80310aa:	4770      	bx	lr080310ac <snmp_asn1_enc_u32t_cnt>: * of 0xFFFFFFFF is preceded with 0x00 and the length is 5 octets!! */voidsnmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed){  if (value < 0x80UL) 80310ac:	287f      	cmp	r0, #127	; 0x7f 80310ae:	d801      	bhi.n	80310b4 <snmp_asn1_enc_u32t_cnt+0x8>  {    *octets_needed = 1; 80310b0:	2301      	movs	r3, #1 80310b2:	e00e      	b.n	80310d2 <snmp_asn1_enc_u32t_cnt+0x26>  }  else if (value < 0x8000UL) 80310b4:	f5b0 4f00 	cmp.w	r0, #32768	; 0x8000 80310b8:	d201      	bcs.n	80310be <snmp_asn1_enc_u32t_cnt+0x12>  {    *octets_needed = 2; 80310ba:	2302      	movs	r3, #2 80310bc:	e009      	b.n	80310d2 <snmp_asn1_enc_u32t_cnt+0x26>  }  else if (value < 0x800000UL) 80310be:	f5b0 0f00 	cmp.w	r0, #8388608	; 0x800000 80310c2:	d201      	bcs.n	80310c8 <snmp_asn1_enc_u32t_cnt+0x1c>  {    *octets_needed = 3; 80310c4:	2303      	movs	r3, #3 80310c6:	e004      	b.n	80310d2 <snmp_asn1_enc_u32t_cnt+0x26>  }  else if (value < 0x80000000UL) 80310c8:	2800      	cmp	r0, #0 80310ca:	db01      	blt.n	80310d0 <snmp_asn1_enc_u32t_cnt+0x24>  {    *octets_needed = 4; 80310cc:	2304      	movs	r3, #4 80310ce:	e000      	b.n	80310d2 <snmp_asn1_enc_u32t_cnt+0x26>  }  else  {    *octets_needed = 5; 80310d0:	2305      	movs	r3, #5 80310d2:	800b      	strh	r3, [r1, #0] 80310d4:	4770      	bx	lr080310d6 <snmp_asn1_enc_s32t_cnt>:voidsnmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed){  if (value < 0)  {    value = ~value; 80310d6:	43c3      	mvns	r3, r0 80310d8:	4283      	cmp	r3, r0 80310da:	bfa8      	it	ge 80310dc:	4618      	movge	r0, r3  }  if (value < 0x80L) 80310de:	287f      	cmp	r0, #127	; 0x7f 80310e0:	dc01      	bgt.n	80310e6 <snmp_asn1_enc_s32t_cnt+0x10>  {    *octets_needed = 1; 80310e2:	2301      	movs	r3, #1 80310e4:	e00a      	b.n	80310fc <snmp_asn1_enc_s32t_cnt+0x26>  }  else if (value < 0x8000L) 80310e6:	f5b0 4f00 	cmp.w	r0, #32768	; 0x8000 80310ea:	da01      	bge.n	80310f0 <snmp_asn1_enc_s32t_cnt+0x1a>  {    *octets_needed = 2; 80310ec:	2302      	movs	r3, #2 80310ee:	e005      	b.n	80310fc <snmp_asn1_enc_s32t_cnt+0x26>  }  else if (value < 0x800000L) 80310f0:	f5b0 0f00 	cmp.w	r0, #8388608	; 0x800000 80310f4:	da01      	bge.n	80310fa <snmp_asn1_enc_s32t_cnt+0x24>  {    *octets_needed = 3; 80310f6:	2303      	movs	r3, #3 80310f8:	e000      	b.n	80310fc <snmp_asn1_enc_s32t_cnt+0x26>  }  else  {    *octets_needed = 4; 80310fa:	2304      	movs	r3, #4 80310fc:	800b      	strh	r3, [r1, #0] 80310fe:	4770      	bx	lr08031100 <snmp_asn1_enc_oid_cnt>:{  s32_t sub_id;  u8_t cnt;  cnt = 0;  if (ident_len > 1) 8031100:	2801      	cmp	r0, #1 * @param ident points to object identifier array * @param octets_needed points to the return value */voidsnmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed){ 8031102:	b510      	push	{r4, lr}  s32_t sub_id;  u8_t cnt;  cnt = 0;  if (ident_len > 1) 8031104:	d904      	bls.n	8031110 <snmp_asn1_enc_oid_cnt+0x10>  {    /* compressed prefix in one octet */    cnt++;    ident_len -= 2; 8031106:	3802      	subs	r0, #2 8031108:	b2c0      	uxtb	r0, r0    ident += 2; 803110a:	3108      	adds	r1, #8  cnt = 0;  if (ident_len > 1)  {    /* compressed prefix in one octet */    cnt++; 803110c:	2301      	movs	r3, #1 803110e:	e000      	b.n	8031112 <snmp_asn1_enc_oid_cnt+0x12>snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed){  s32_t sub_id;  u8_t cnt;  cnt = 0; 8031110:	2300      	movs	r3, #0 * @param ident_len object identifier array length * @param ident points to object identifier array * @param octets_needed points to the return value */voidsnmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed) 8031112:	3904      	subs	r1, #4 8031114:	e008      	b.n	8031128 <snmp_asn1_enc_oid_cnt+0x28>    ident_len -= 2;    ident += 2;  }  while(ident_len > 0)  {    ident_len--; 8031116:	3801      	subs	r0, #1    sub_id = *ident; 8031118:	f851 4f04 	ldr.w	r4, [r1, #4]!    ident_len -= 2;    ident += 2;  }  while(ident_len > 0)  {    ident_len--; 803111c:	b2c0      	uxtb	r0, r0    sub_id >>= 7;    cnt++;    while(sub_id > 0)    {      sub_id >>= 7; 803111e:	11e4      	asrs	r4, r4, #7      cnt++; 8031120:	3301      	adds	r3, #1    ident_len--;    sub_id = *ident;    sub_id >>= 7;    cnt++;    while(sub_id > 0) 8031122:	2c00      	cmp	r4, #0    {      sub_id >>= 7;      cnt++; 8031124:	b2db      	uxtb	r3, r3    ident_len--;    sub_id = *ident;    sub_id >>= 7;    cnt++;    while(sub_id > 0) 8031126:	dcfa      	bgt.n	803111e <snmp_asn1_enc_oid_cnt+0x1e>    /* compressed prefix in one octet */    cnt++;    ident_len -= 2;    ident += 2;  }  while(ident_len > 0) 8031128:	2800      	cmp	r0, #0 803112a:	d1f4      	bne.n	8031116 <snmp_asn1_enc_oid_cnt+0x16>      sub_id >>= 7;      cnt++;    }    ident++;  }  *octets_needed = cnt; 803112c:	8013      	strh	r3, [r2, #0] 803112e:	bd10      	pop	{r4, pc}08031130 <snmp_asn1_enc_type>: * @param type input ASN1 type * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type){ 8031130:	b510      	push	{r4, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 8031132:	2300      	movs	r3, #0  while (p != NULL) 8031134:	e00b      	b.n	803114e <snmp_asn1_enc_type+0x1e>  {    base = plen;    plen += p->len; 8031136:	8944      	ldrh	r4, [r0, #10] 8031138:	191c      	adds	r4, r3, r4 803113a:	b2a4      	uxth	r4, r4    if (ofs < plen) 803113c:	42a1      	cmp	r1, r4 803113e:	d204      	bcs.n	803114a <snmp_asn1_enc_type+0x1a>    {      msg_ptr = (u8_t*)p->payload; 8031140:	6840      	ldr	r0, [r0, #4]      msg_ptr += ofs - base; 8031142:	1acb      	subs	r3, r1, r3      *msg_ptr = type; 8031144:	54c2      	strb	r2, [r0, r3]      return ERR_OK; 8031146:	2000      	movs	r0, #0 8031148:	e004      	b.n	8031154 <snmp_asn1_enc_type+0x24>    }    p = p->next; 803114a:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 803114c:	4623      	mov	r3, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 803114e:	2800      	cmp	r0, #0 8031150:	d1f1      	bne.n	8031136 <snmp_asn1_enc_type+0x6>      return ERR_OK;    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG; 8031152:	20f2      	movs	r0, #242	; 0xf2} 8031154:	b240      	sxtb	r0, r0 8031156:	bd10      	pop	{r4, pc}08031158 <snmp_asn1_enc_length>: * @param length is the host order length to be encoded * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length){ 8031158:	b5f0      	push	{r4, r5, r6, r7, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 803115a:	2400      	movs	r4, #0  while (p != NULL) 803115c:	e03f      	b.n	80311de <snmp_asn1_enc_length+0x86>  {    base = plen;    plen += p->len; 803115e:	8943      	ldrh	r3, [r0, #10] 8031160:	18e3      	adds	r3, r4, r3 8031162:	b29b      	uxth	r3, r3    if (ofs < plen) 8031164:	4299      	cmp	r1, r3 8031166:	d238      	bcs.n	80311da <snmp_asn1_enc_length+0x82>    {      msg_ptr = (u8_t*)p->payload; 8031168:	6845      	ldr	r5, [r0, #4]      msg_ptr += ofs - base; 803116a:	1b0c      	subs	r4, r1, r4      if (length < 0x80) 803116c:	2a7f      	cmp	r2, #127	; 0x7f    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 803116e:	eb05 0604 	add.w	r6, r5, r4      if (length < 0x80) 8031172:	d801      	bhi.n	8031178 <snmp_asn1_enc_length+0x20>      {        *msg_ptr = (u8_t)length; 8031174:	552a      	strb	r2, [r5, r4] 8031176:	e02e      	b.n	80311d6 <snmp_asn1_enc_length+0x7e>        return ERR_OK;      }      else if (length < 0x100) 8031178:	2aff      	cmp	r2, #255	; 0xff 803117a:	f101 0701 	add.w	r7, r1, #1 803117e:	d80d      	bhi.n	803119c <snmp_asn1_enc_length+0x44>      {        *msg_ptr = 0x81;        ofs += 1;        if (ofs >= plen) 8031180:	b2bf      	uxth	r7, r7        *msg_ptr = (u8_t)length;        return ERR_OK;      }      else if (length < 0x100)      {        *msg_ptr = 0x81; 8031182:	2181      	movs	r1, #129	; 0x81        ofs += 1;        if (ofs >= plen) 8031184:	429f      	cmp	r7, r3        *msg_ptr = (u8_t)length;        return ERR_OK;      }      else if (length < 0x100)      {        *msg_ptr = 0x81; 8031186:	5529      	strb	r1, [r5, r4]        ofs += 1;        if (ofs >= plen) 8031188:	d305      	bcc.n	8031196 <snmp_asn1_enc_length+0x3e>        {          /* next octet in next pbuf */          p = p->next; 803118a:	6803      	ldr	r3, [r0, #0]          if (p == NULL) { return ERR_ARG; } 803118c:	b90b      	cbnz	r3, 8031192 <snmp_asn1_enc_length+0x3a> 803118e:	20f2      	movs	r0, #242	; 0xf2 8031190:	e028      	b.n	80311e4 <snmp_asn1_enc_length+0x8c>          msg_ptr = (u8_t*)p->payload; 8031192:	685e      	ldr	r6, [r3, #4] 8031194:	e000      	b.n	8031198 <snmp_asn1_enc_length+0x40>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 8031196:	3601      	adds	r6, #1        }        *msg_ptr = (u8_t)length; 8031198:	7032      	strb	r2, [r6, #0] 803119a:	e01c      	b.n	80311d6 <snmp_asn1_enc_length+0x7e>        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 803119c:	b2bf      	uxth	r7, r7      else      {        u8_t i;        /* length >= 0x100 && length <= 0xFFFF */        *msg_ptr = 0x82; 803119e:	f04f 0c82 	mov.w	ip, #130	; 0x82        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 80311a2:	429f      	cmp	r7, r3      else      {        u8_t i;        /* length >= 0x100 && length <= 0xFFFF */        *msg_ptr = 0x82; 80311a4:	f805 c004 	strb.w	ip, [r5, r4]        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 80311a8:	d201      	bcs.n	80311ae <snmp_asn1_enc_length+0x56>            plen += p->len;          }          else          {            /* next octet in same pbuf */            msg_ptr++; 80311aa:	1c74      	adds	r4, r6, #1 80311ac:	e006      	b.n	80311bc <snmp_asn1_enc_length+0x64>          i--;          ofs += 1;          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next; 80311ae:	6800      	ldr	r0, [r0, #0]            if (p == NULL) { return ERR_ARG; } 80311b0:	2800      	cmp	r0, #0 80311b2:	d0ec      	beq.n	803118e <snmp_asn1_enc_length+0x36>            msg_ptr = (u8_t*)p->payload;            plen += p->len; 80311b4:	8945      	ldrh	r5, [r0, #10]          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next;            if (p == NULL) { return ERR_ARG; }            msg_ptr = (u8_t*)p->payload; 80311b6:	6844      	ldr	r4, [r0, #4]            plen += p->len; 80311b8:	195b      	adds	r3, r3, r5 80311ba:	b29b      	uxth	r3, r3        *msg_ptr = 0x82;        i = 2;        while (i > 0)        {          i--;          ofs += 1; 80311bc:	3102      	adds	r1, #2          if (ofs >= plen) 80311be:	b289      	uxth	r1, r1            *msg_ptr = (u8_t)length;          }          else          {            /* most significant length octet */            *msg_ptr = (u8_t)(length >> 8); 80311c0:	0a15      	lsrs	r5, r2, #8        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 80311c2:	4299      	cmp	r1, r3            *msg_ptr = (u8_t)length;          }          else          {            /* most significant length octet */            *msg_ptr = (u8_t)(length >> 8); 80311c4:	7025      	strb	r5, [r4, #0]        i = 2;        while (i > 0)        {          i--;          ofs += 1;          if (ofs >= plen) 80311c6:	d201      	bcs.n	80311cc <snmp_asn1_enc_length+0x74>            plen += p->len;          }          else          {            /* next octet in same pbuf */            msg_ptr++; 80311c8:	3401      	adds	r4, #1 80311ca:	e003      	b.n	80311d4 <snmp_asn1_enc_length+0x7c>          i--;          ofs += 1;          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next; 80311cc:	6803      	ldr	r3, [r0, #0]            if (p == NULL) { return ERR_ARG; } 80311ce:	2b00      	cmp	r3, #0 80311d0:	d0dd      	beq.n	803118e <snmp_asn1_enc_length+0x36>            msg_ptr = (u8_t*)p->payload; 80311d2:	685c      	ldr	r4, [r3, #4]            msg_ptr++;          }          if (i == 0)          {            /* least significant length octet */            *msg_ptr = (u8_t)length; 80311d4:	7022      	strb	r2, [r4, #0]          {            /* most significant length octet */            *msg_ptr = (u8_t)(length >> 8);          }        }        return ERR_OK; 80311d6:	2000      	movs	r0, #0 80311d8:	e004      	b.n	80311e4 <snmp_asn1_enc_length+0x8c>      }    }    p = p->next; 80311da:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 80311dc:	461c      	mov	r4, r3{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 80311de:	2800      	cmp	r0, #0 80311e0:	d1bd      	bne.n	803115e <snmp_asn1_enc_length+0x6> 80311e2:	e7d4      	b.n	803118e <snmp_asn1_enc_length+0x36>    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 80311e4:	b240      	sxtb	r0, r0 80311e6:	bdf0      	pop	{r4, r5, r6, r7, pc}080311e8 <snmp_asn1_enc_u32t>: * * @see snmp_asn1_enc_u32t_cnt() */err_tsnmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, u32_t value){ 80311e8:	b5f0      	push	{r4, r5, r6, r7, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 80311ea:	2500      	movs	r5, #0  while (p != NULL) 80311ec:	e037      	b.n	803125e <snmp_asn1_enc_u32t+0x76>  {    base = plen;    plen += p->len; 80311ee:	8944      	ldrh	r4, [r0, #10] 80311f0:	192c      	adds	r4, r5, r4 80311f2:	b2a4      	uxth	r4, r4    if (ofs < plen) 80311f4:	42a1      	cmp	r1, r4 80311f6:	d230      	bcs.n	803125a <snmp_asn1_enc_u32t+0x72>    {      msg_ptr = (u8_t*)p->payload; 80311f8:	6847      	ldr	r7, [r0, #4]      msg_ptr += ofs - base; 80311fa:	1b4e      	subs	r6, r1, r5      if (octets_needed == 5) 80311fc:	2a05      	cmp	r2, #5    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 80311fe:	eb07 0506 	add.w	r5, r7, r6      if (octets_needed == 5) 8031202:	d110      	bne.n	8031226 <snmp_asn1_enc_u32t+0x3e>      {        /* not enough bits in 'value' add leading 0x00 */        octets_needed--;        *msg_ptr = 0x00;        ofs += 1; 8031204:	3101      	adds	r1, #1 8031206:	b289      	uxth	r1, r1      if (octets_needed == 5)      {        /* not enough bits in 'value' add leading 0x00 */        octets_needed--;        *msg_ptr = 0x00; 8031208:	2200      	movs	r2, #0        ofs += 1;        if (ofs >= plen) 803120a:	42a1      	cmp	r1, r4      if (octets_needed == 5)      {        /* not enough bits in 'value' add leading 0x00 */        octets_needed--;        *msg_ptr = 0x00; 803120c:	55ba      	strb	r2, [r7, r6]        ofs += 1;        if (ofs >= plen) 803120e:	d308      	bcc.n	8031222 <snmp_asn1_enc_u32t+0x3a>        {          /* next octet in next pbuf */          p = p->next; 8031210:	6800      	ldr	r0, [r0, #0]          if (p == NULL) { return ERR_ARG; } 8031212:	b908      	cbnz	r0, 8031218 <snmp_asn1_enc_u32t+0x30> 8031214:	20f2      	movs	r0, #242	; 0xf2 8031216:	e025      	b.n	8031264 <snmp_asn1_enc_u32t+0x7c>          msg_ptr = (u8_t*)p->payload;          plen += p->len; 8031218:	8942      	ldrh	r2, [r0, #10]        if (ofs >= plen)        {          /* next octet in next pbuf */          p = p->next;          if (p == NULL) { return ERR_ARG; }          msg_ptr = (u8_t*)p->payload; 803121a:	6845      	ldr	r5, [r0, #4]          plen += p->len; 803121c:	18a4      	adds	r4, r4, r2 803121e:	b2a4      	uxth	r4, r4 8031220:	e000      	b.n	8031224 <snmp_asn1_enc_u32t+0x3c>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 8031222:	3501      	adds	r5, #1      msg_ptr += ofs - base;      if (octets_needed == 5)      {        /* not enough bits in 'value' add leading 0x00 */        octets_needed--; 8031224:	2204      	movs	r2, #4 * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode * * @see snmp_asn1_enc_u32t_cnt() */err_tsnmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, u32_t value) 8031226:	1851      	adds	r1, r2, r1 8031228:	e012      	b.n	8031250 <snmp_asn1_enc_u32t+0x68>          msg_ptr++;        }      }      while (octets_needed > 1)      {        octets_needed--; 803122a:	3a01      	subs	r2, #1 803122c:	b292      	uxth	r2, r2        *msg_ptr = (u8_t)(value >> (octets_needed << 3)); 803122e:	00d6      	lsls	r6, r2, #3 8031230:	fa23 f606 	lsr.w	r6, r3, r6 8031234:	702e      	strb	r6, [r5, #0] * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode * * @see snmp_asn1_enc_u32t_cnt() */err_tsnmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, u32_t value) 8031236:	1a8e      	subs	r6, r1, r2      while (octets_needed > 1)      {        octets_needed--;        *msg_ptr = (u8_t)(value >> (octets_needed << 3));        ofs += 1;        if (ofs >= plen) 8031238:	b2b6      	uxth	r6, r6 803123a:	42a6      	cmp	r6, r4 803123c:	d307      	bcc.n	803124e <snmp_asn1_enc_u32t+0x66>        {          /* next octet in next pbuf */          p = p->next; 803123e:	6800      	ldr	r0, [r0, #0]          if (p == NULL) { return ERR_ARG; } 8031240:	2800      	cmp	r0, #0 8031242:	d0e7      	beq.n	8031214 <snmp_asn1_enc_u32t+0x2c>          msg_ptr = (u8_t*)p->payload;          plen += p->len; 8031244:	8946      	ldrh	r6, [r0, #10]        if (ofs >= plen)        {          /* next octet in next pbuf */          p = p->next;          if (p == NULL) { return ERR_ARG; }          msg_ptr = (u8_t*)p->payload; 8031246:	6845      	ldr	r5, [r0, #4]          plen += p->len; 8031248:	19a4      	adds	r4, r4, r6 803124a:	b2a4      	uxth	r4, r4 803124c:	e000      	b.n	8031250 <snmp_asn1_enc_u32t+0x68>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 803124e:	3501      	adds	r5, #1        {          /* next octet in same pbuf */          msg_ptr++;        }      }      while (octets_needed > 1) 8031250:	2a01      	cmp	r2, #1 8031252:	d8ea      	bhi.n	803122a <snmp_asn1_enc_u32t+0x42>          /* next octet in same pbuf */          msg_ptr++;        }      }      /* (only) one least significant octet */      *msg_ptr = (u8_t)value; 8031254:	702b      	strb	r3, [r5, #0]      return ERR_OK; 8031256:	2000      	movs	r0, #0 8031258:	e004      	b.n	8031264 <snmp_asn1_enc_u32t+0x7c>    }    p = p->next; 803125a:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 803125c:	4625      	mov	r5, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 803125e:	2800      	cmp	r0, #0 8031260:	d1c5      	bne.n	80311ee <snmp_asn1_enc_u32t+0x6> 8031262:	e7d7      	b.n	8031214 <snmp_asn1_enc_u32t+0x2c>    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 8031264:	b240      	sxtb	r0, r0 8031266:	bdf0      	pop	{r4, r5, r6, r7, pc}08031268 <snmp_asn1_enc_s32t>: * * @see snmp_asn1_enc_s32t_cnt() */err_tsnmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, s32_t value){ 8031268:	b5f0      	push	{r4, r5, r6, r7, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 803126a:	2600      	movs	r6, #0  while (p != NULL) 803126c:	e024      	b.n	80312b8 <snmp_asn1_enc_s32t+0x50>  {    base = plen;    plen += p->len; 803126e:	8944      	ldrh	r4, [r0, #10] 8031270:	1934      	adds	r4, r6, r4 8031272:	b2a4      	uxth	r4, r4    if (ofs < plen) 8031274:	42a1      	cmp	r1, r4 8031276:	d21d      	bcs.n	80312b4 <snmp_asn1_enc_s32t+0x4c>    {      msg_ptr = (u8_t*)p->payload; 8031278:	6847      	ldr	r7, [r0, #4]      msg_ptr += ofs - base; 803127a:	1b8d      	subs	r5, r1, r6 803127c:	197d      	adds	r5, r7, r5 * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode * * @see snmp_asn1_enc_s32t_cnt() */err_tsnmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, s32_t value) 803127e:	1851      	adds	r1, r2, r1    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      while (octets_needed > 1) 8031280:	e013      	b.n	80312aa <snmp_asn1_enc_s32t+0x42>      {        octets_needed--; 8031282:	3a01      	subs	r2, #1 8031284:	b292      	uxth	r2, r2        *msg_ptr = (u8_t)(value >> (octets_needed << 3)); 8031286:	00d6      	lsls	r6, r2, #3 8031288:	fa43 f606 	asr.w	r6, r3, r6 803128c:	702e      	strb	r6, [r5, #0] * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode * * @see snmp_asn1_enc_s32t_cnt() */err_tsnmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, s32_t value) 803128e:	1a8e      	subs	r6, r1, r2      while (octets_needed > 1)      {        octets_needed--;        *msg_ptr = (u8_t)(value >> (octets_needed << 3));        ofs += 1;        if (ofs >= plen) 8031290:	b2b6      	uxth	r6, r6 8031292:	42a6      	cmp	r6, r4 8031294:	d308      	bcc.n	80312a8 <snmp_asn1_enc_s32t+0x40>        {          /* next octet in next pbuf */          p = p->next; 8031296:	6800      	ldr	r0, [r0, #0]          if (p == NULL) { return ERR_ARG; } 8031298:	b908      	cbnz	r0, 803129e <snmp_asn1_enc_s32t+0x36> 803129a:	20f2      	movs	r0, #242	; 0xf2 803129c:	e00f      	b.n	80312be <snmp_asn1_enc_s32t+0x56>          msg_ptr = (u8_t*)p->payload;          plen += p->len; 803129e:	8946      	ldrh	r6, [r0, #10]        if (ofs >= plen)        {          /* next octet in next pbuf */          p = p->next;          if (p == NULL) { return ERR_ARG; }          msg_ptr = (u8_t*)p->payload; 80312a0:	6845      	ldr	r5, [r0, #4]          plen += p->len; 80312a2:	19a4      	adds	r4, r4, r6 80312a4:	b2a4      	uxth	r4, r4 80312a6:	e000      	b.n	80312aa <snmp_asn1_enc_s32t+0x42>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 80312a8:	3501      	adds	r5, #1    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      while (octets_needed > 1) 80312aa:	2a01      	cmp	r2, #1 80312ac:	d8e9      	bhi.n	8031282 <snmp_asn1_enc_s32t+0x1a>          /* next octet in same pbuf */          msg_ptr++;        }      }      /* (only) one least significant octet */      *msg_ptr = (u8_t)value; 80312ae:	702b      	strb	r3, [r5, #0]      return ERR_OK; 80312b0:	2000      	movs	r0, #0 80312b2:	e004      	b.n	80312be <snmp_asn1_enc_s32t+0x56>    }    p = p->next; 80312b4:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 80312b6:	4626      	mov	r6, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 80312b8:	2800      	cmp	r0, #0 80312ba:	d1d8      	bne.n	803126e <snmp_asn1_enc_s32t+0x6> 80312bc:	e7ed      	b.n	803129a <snmp_asn1_enc_s32t+0x32>    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 80312be:	b240      	sxtb	r0, r0 80312c0:	bdf0      	pop	{r4, r5, r6, r7, pc}080312c2 <snmp_asn1_enc_oid>: * @param ident points to object identifier array * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident){ 80312c2:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 80312c6:	2500      	movs	r5, #0  while (p != NULL) 80312c8:	e068      	b.n	803139c <snmp_asn1_enc_oid+0xda>  {    base = plen;    plen += p->len; 80312ca:	8944      	ldrh	r4, [r0, #10] 80312cc:	192c      	adds	r4, r5, r4 80312ce:	b2a4      	uxth	r4, r4    if (ofs < plen) 80312d0:	42a1      	cmp	r1, r4 80312d2:	d261      	bcs.n	8031398 <snmp_asn1_enc_oid+0xd6>    {      msg_ptr = (u8_t*)p->payload; 80312d4:	6846      	ldr	r6, [r0, #4]      msg_ptr += ofs - base; 80312d6:	1b4d      	subs	r5, r1, r5      if (ident_len > 1) 80312d8:	2a01      	cmp	r2, #1    base = plen;    plen += p->len;    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base; 80312da:	eb06 0805 	add.w	r8, r6, r5      if (ident_len > 1) 80312de:	d801      	bhi.n	80312e4 <snmp_asn1_enc_oid+0x22>      }      else      {/* @bug:  allow empty varbinds for symmetry (we must decode them for getnext), allow partial compression??  */        /* ident_len <= 1, at least we need zeroDotZero (0.0) (ident_len == 2) */        return ERR_ARG; 80312e0:	20f2      	movs	r0, #242	; 0xf2 80312e2:	e05e      	b.n	80313a2 <snmp_asn1_enc_oid+0xe0>      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      if (ident_len > 1)      {        if ((ident[0] == 1) && (ident[1] == 3)) 80312e4:	f8d3 c000 	ldr.w	ip, [r3] 80312e8:	f1bc 0f01 	cmp.w	ip, #1 80312ec:	d105      	bne.n	80312fa <snmp_asn1_enc_oid+0x38> 80312ee:	685f      	ldr	r7, [r3, #4] 80312f0:	2f03      	cmp	r7, #3 80312f2:	d102      	bne.n	80312fa <snmp_asn1_enc_oid+0x38>        {          /* compressed (most common) prefix .iso.org */          *msg_ptr = 0x2b; 80312f4:	272b      	movs	r7, #43	; 0x2b 80312f6:	5577      	strb	r7, [r6, r5] 80312f8:	e006      	b.n	8031308 <snmp_asn1_enc_oid+0x46>        }        else        {          /* calculate prefix */          *msg_ptr = (u8_t)((ident[0] * 40) + ident[1]); 80312fa:	685f      	ldr	r7, [r3, #4] 80312fc:	f04f 0928 	mov.w	r9, #40	; 0x28 8031300:	fb09 7c0c 	mla	ip, r9, ip, r7 8031304:	f806 c005 	strb.w	ip, [r6, r5]        }        ofs += 1; 8031308:	3101      	adds	r1, #1 803130a:	b289      	uxth	r1, r1        if (ofs >= plen) 803130c:	42a1      	cmp	r1, r4 803130e:	d307      	bcc.n	8031320 <snmp_asn1_enc_oid+0x5e>        {          /* next octet in next pbuf */          p = p->next; 8031310:	6800      	ldr	r0, [r0, #0]          if (p == NULL) { return ERR_ARG; } 8031312:	2800      	cmp	r0, #0 8031314:	d0e4      	beq.n	80312e0 <snmp_asn1_enc_oid+0x1e>          msg_ptr = (u8_t*)p->payload;          plen += p->len; 8031316:	8946      	ldrh	r6, [r0, #10]        if (ofs >= plen)        {          /* next octet in next pbuf */          p = p->next;          if (p == NULL) { return ERR_ARG; }          msg_ptr = (u8_t*)p->payload; 8031318:	6845      	ldr	r5, [r0, #4]          plen += p->len; 803131a:	19a4      	adds	r4, r4, r6 803131c:	b2a4      	uxth	r4, r4 803131e:	e001      	b.n	8031324 <snmp_asn1_enc_oid+0x62>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 8031320:	f108 0501 	add.w	r5, r8, #1        }        ident_len -= 2; 8031324:	3a02      	subs	r2, #2 8031326:	b2d2      	uxtb	r2, r2 * @param ident_len object identifier array length * @param ident points to object identifier array * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident) 8031328:	3304      	adds	r3, #4      {/* @bug:  allow empty varbinds for symmetry (we must decode them for getnext), allow partial compression??  */        /* ident_len <= 1, at least we need zeroDotZero (0.0) (ident_len == 2) */        return ERR_ARG;      }      while (ident_len > 0) 803132a:	e031      	b.n	8031390 <snmp_asn1_enc_oid+0xce>      {        s32_t sub_id;        u8_t shift, tail;        ident_len--; 803132c:	3a01      	subs	r2, #1        sub_id = *ident; 803132e:	f853 cf04 	ldr.w	ip, [r3, #4]!      while (ident_len > 0)      {        s32_t sub_id;        u8_t shift, tail;        ident_len--; 8031332:	b2d2      	uxtb	r2, r2        sub_id = *ident; 8031334:	261c      	movs	r6, #28        tail = 0; 8031336:	2700      	movs	r7, #0        shift = 28;        while(shift > 0)        {          u8_t code;          code = (u8_t)(sub_id >> shift); 8031338:	fa4c f806 	asr.w	r8, ip, r6          if ((code != 0) || (tail != 0)) 803133c:	f018 0fff 	tst.w	r8, #255	; 0xff 8031340:	d100      	bne.n	8031344 <snmp_asn1_enc_oid+0x82> 8031342:	b18f      	cbz	r7, 8031368 <snmp_asn1_enc_oid+0xa6>          {            tail = 1;            *msg_ptr = code | 0x80;            ofs += 1; 8031344:	3101      	adds	r1, #1 8031346:	b289      	uxth	r1, r1          code = (u8_t)(sub_id >> shift);          if ((code != 0) || (tail != 0))          {            tail = 1;            *msg_ptr = code | 0x80; 8031348:	f048 0880 	orr.w	r8, r8, #128	; 0x80            ofs += 1;            if (ofs >= plen) 803134c:	42a1      	cmp	r1, r4          code = (u8_t)(sub_id >> shift);          if ((code != 0) || (tail != 0))          {            tail = 1;            *msg_ptr = code | 0x80; 803134e:	f885 8000 	strb.w	r8, [r5]            ofs += 1;            if (ofs >= plen) 8031352:	d307      	bcc.n	8031364 <snmp_asn1_enc_oid+0xa2>            {              /* next octet in next pbuf */              p = p->next; 8031354:	6800      	ldr	r0, [r0, #0]              if (p == NULL) { return ERR_ARG; } 8031356:	2800      	cmp	r0, #0 8031358:	d0c2      	beq.n	80312e0 <snmp_asn1_enc_oid+0x1e>              msg_ptr = (u8_t*)p->payload;              plen += p->len; 803135a:	8947      	ldrh	r7, [r0, #10]            if (ofs >= plen)            {              /* next octet in next pbuf */              p = p->next;              if (p == NULL) { return ERR_ARG; }              msg_ptr = (u8_t*)p->payload; 803135c:	6845      	ldr	r5, [r0, #4]              plen += p->len; 803135e:	19e4      	adds	r4, r4, r7 8031360:	b2a4      	uxth	r4, r4 8031362:	e000      	b.n	8031366 <snmp_asn1_enc_oid+0xa4>            }            else            {              /* next octet in same pbuf */              msg_ptr++; 8031364:	3501      	adds	r5, #1          u8_t code;          code = (u8_t)(sub_id >> shift);          if ((code != 0) || (tail != 0))          {            tail = 1; 8031366:	2701      	movs	r7, #1        ident_len--;        sub_id = *ident;        tail = 0;        shift = 28;        while(shift > 0) 8031368:	3e07      	subs	r6, #7 803136a:	d1e5      	bne.n	8031338 <snmp_asn1_enc_oid+0x76>              msg_ptr++;            }          }          shift -= 7;        }        *msg_ptr = (u8_t)sub_id & 0x7F; 803136c:	f00c 0c7f 	and.w	ip, ip, #127	; 0x7f 8031370:	f885 c000 	strb.w	ip, [r5]        if (ident_len > 0) 8031374:	b172      	cbz	r2, 8031394 <snmp_asn1_enc_oid+0xd2>        {          ofs += 1; 8031376:	3101      	adds	r1, #1 8031378:	b289      	uxth	r1, r1          if (ofs >= plen) 803137a:	42a1      	cmp	r1, r4 803137c:	d307      	bcc.n	803138e <snmp_asn1_enc_oid+0xcc>          {            /* next octet in next pbuf */            p = p->next; 803137e:	6800      	ldr	r0, [r0, #0]            if (p == NULL) { return ERR_ARG; } 8031380:	2800      	cmp	r0, #0 8031382:	d0ad      	beq.n	80312e0 <snmp_asn1_enc_oid+0x1e>            msg_ptr = (u8_t*)p->payload;            plen += p->len; 8031384:	8946      	ldrh	r6, [r0, #10]          if (ofs >= plen)          {            /* next octet in next pbuf */            p = p->next;            if (p == NULL) { return ERR_ARG; }            msg_ptr = (u8_t*)p->payload; 8031386:	6845      	ldr	r5, [r0, #4]            plen += p->len; 8031388:	19a4      	adds	r4, r4, r6 803138a:	b2a4      	uxth	r4, r4 803138c:	e000      	b.n	8031390 <snmp_asn1_enc_oid+0xce>          }          else          {            /* next octet in same pbuf */            msg_ptr++; 803138e:	3501      	adds	r5, #1      {/* @bug:  allow empty varbinds for symmetry (we must decode them for getnext), allow partial compression??  */        /* ident_len <= 1, at least we need zeroDotZero (0.0) (ident_len == 2) */        return ERR_ARG;      }      while (ident_len > 0) 8031390:	2a00      	cmp	r2, #0 8031392:	d1cb      	bne.n	803132c <snmp_asn1_enc_oid+0x6a>          }        }        /* proceed to next sub-identifier */        ident++;      }      return ERR_OK; 8031394:	2000      	movs	r0, #0 8031396:	e004      	b.n	80313a2 <snmp_asn1_enc_oid+0xe0>    }    p = p->next; 8031398:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 803139a:	4625      	mov	r5, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 803139c:	2800      	cmp	r0, #0 803139e:	d194      	bne.n	80312ca <snmp_asn1_enc_oid+0x8> 80313a0:	e79e      	b.n	80312e0 <snmp_asn1_enc_oid+0x1e>    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 80313a2:	b240      	sxtb	r0, r0 80313a4:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc}080313a8 <snmp_asn1_enc_raw>: * @param raw points raw data * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u16_t raw_len, u8_t *raw){ 80313a8:	b5f0      	push	{r4, r5, r6, r7, lr}  u16_t plen, base;  u8_t *msg_ptr;  plen = 0; 80313aa:	2600      	movs	r6, #0  while (p != NULL) 80313ac:	e025      	b.n	80313fa <snmp_asn1_enc_raw+0x52>  {    base = plen;    plen += p->len; 80313ae:	8944      	ldrh	r4, [r0, #10] 80313b0:	1934      	adds	r4, r6, r4 80313b2:	b2a4      	uxth	r4, r4    if (ofs < plen) 80313b4:	42a1      	cmp	r1, r4 80313b6:	d21e      	bcs.n	80313f6 <snmp_asn1_enc_raw+0x4e>    {      msg_ptr = (u8_t*)p->payload; 80313b8:	6847      	ldr	r7, [r0, #4]      msg_ptr += ofs - base; 80313ba:	1b8d      	subs	r5, r1, r6 80313bc:	197d      	adds	r5, r7, r5 * @param raw_len raw data length * @param raw points raw data * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u16_t raw_len, u8_t *raw) 80313be:	1851      	adds	r1, r2, r1    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      while (raw_len > 1) 80313c0:	e012      	b.n	80313e8 <snmp_asn1_enc_raw+0x40>      {        /* copy raw_len - 1 octets */        raw_len--; 80313c2:	3a01      	subs	r2, #1        *msg_ptr = *raw; 80313c4:	f813 6b01 	ldrb.w	r6, [r3], #1      msg_ptr += ofs - base;      while (raw_len > 1)      {        /* copy raw_len - 1 octets */        raw_len--; 80313c8:	b292      	uxth	r2, r2        *msg_ptr = *raw; 80313ca:	702e      	strb	r6, [r5, #0] * @param raw_len raw data length * @param raw points raw data * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode */err_tsnmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u16_t raw_len, u8_t *raw) 80313cc:	1a8e      	subs	r6, r1, r2        /* copy raw_len - 1 octets */        raw_len--;        *msg_ptr = *raw;        raw++;        ofs += 1;        if (ofs >= plen) 80313ce:	b2b6      	uxth	r6, r6 80313d0:	42a6      	cmp	r6, r4 80313d2:	d308      	bcc.n	80313e6 <snmp_asn1_enc_raw+0x3e>        {          /* next octet in next pbuf */          p = p->next; 80313d4:	6800      	ldr	r0, [r0, #0]          if (p == NULL) { return ERR_ARG; } 80313d6:	b908      	cbnz	r0, 80313dc <snmp_asn1_enc_raw+0x34> 80313d8:	20f2      	movs	r0, #242	; 0xf2 80313da:	e012      	b.n	8031402 <snmp_asn1_enc_raw+0x5a>          msg_ptr = (u8_t*)p->payload;          plen += p->len; 80313dc:	8946      	ldrh	r6, [r0, #10]        if (ofs >= plen)        {          /* next octet in next pbuf */          p = p->next;          if (p == NULL) { return ERR_ARG; }          msg_ptr = (u8_t*)p->payload; 80313de:	6845      	ldr	r5, [r0, #4]          plen += p->len; 80313e0:	19a4      	adds	r4, r4, r6 80313e2:	b2a4      	uxth	r4, r4 80313e4:	e000      	b.n	80313e8 <snmp_asn1_enc_raw+0x40>        }        else        {          /* next octet in same pbuf */          msg_ptr++; 80313e6:	3501      	adds	r5, #1    if (ofs < plen)    {      msg_ptr = (u8_t*)p->payload;      msg_ptr += ofs - base;      while (raw_len > 1) 80313e8:	2a01      	cmp	r2, #1 80313ea:	d8ea      	bhi.n	80313c2 <snmp_asn1_enc_raw+0x1a>        {          /* next octet in same pbuf */          msg_ptr++;        }      }      if (raw_len > 0) 80313ec:	b142      	cbz	r2, 8031400 <snmp_asn1_enc_raw+0x58>      {        /* copy last or single octet */        *msg_ptr = *raw; 80313ee:	781b      	ldrb	r3, [r3, #0]      }      return ERR_OK; 80313f0:	2000      	movs	r0, #0        }      }      if (raw_len > 0)      {        /* copy last or single octet */        *msg_ptr = *raw; 80313f2:	702b      	strb	r3, [r5, #0] 80313f4:	e005      	b.n	8031402 <snmp_asn1_enc_raw+0x5a>      }      return ERR_OK;    }    p = p->next; 80313f6:	6800      	ldr	r0, [r0, #0]  plen = 0;  while (p != NULL)  {    base = plen;    plen += p->len; 80313f8:	4626      	mov	r6, r4{  u16_t plen, base;  u8_t *msg_ptr;  plen = 0;  while (p != NULL) 80313fa:	2800      	cmp	r0, #0 80313fc:	d1d7      	bne.n	80313ae <snmp_asn1_enc_raw+0x6> 80313fe:	e7eb      	b.n	80313d8 <snmp_asn1_enc_raw+0x30>      if (raw_len > 0)      {        /* copy last or single octet */        *msg_ptr = *raw;      }      return ERR_OK; 8031400:	4610      	mov	r0, r2    }    p = p->next;  }  /* p == NULL, ofs >= plen */  return ERR_ARG;} 8031402:	b240      	sxtb	r0, r0 8031404:	bdf0      	pop	{r4, r5, r6, r7, pc}08031406 <noleafs_get_object_def>:voidnoleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  LWIP_UNUSED_ARG(ident_len);  LWIP_UNUSED_ARG(ident);  od->instance = MIB_OBJECT_NONE; 8031406:	2300      	movs	r3, #0 8031408:	7013      	strb	r3, [r2, #0] 803140a:	4770      	bx	lr0803140c <noleafs_get_value>:}voidnoleafs_get_value(struct obj_def *od, u16_t len, void *value){ 803140c:	4770      	bx	lr0803140e <noleafs_set_test>:  LWIP_UNUSED_ARG(od);  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);  /* can't set */  return 0;} 803140e:	2000      	movs	r0, #0 8031410:	4770      	bx	lr08031412 <noleafs_set_value>:voidnoleafs_set_value(struct obj_def *od, u16_t len, void *value){ 8031412:	4770      	bx	lr08031414 <system_get_object_def>:  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031414:	2801      	cmp	r0, #1 8031416:	d145      	bne.n	80314a4 <system_get_object_def+0x90>  {    od->id_inst_len = ident_len; 8031418:	2002      	movs	r0, #2{  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 803141a:	1f0b      	subs	r3, r1, #4  if (ident_len == 2)  {    od->id_inst_len = ident_len; 803141c:	7190      	strb	r0, [r2, #6]    od->id_inst_ptr = ident; 803141e:	6093      	str	r3, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def system.%"U16_F".0\n",(u16_t)id));    switch (id) 8031420:	f811 3c04 	ldrb.w	r3, [r1, #-4] 8031424:	3b01      	subs	r3, #1 8031426:	2b06      	cmp	r3, #6 8031428:	d83c      	bhi.n	80314a4 <system_get_object_def+0x90> 803142a:	e8df f003 	tbb	[pc, r3] 803142e:	0b04      	.short	0x0b04 8031430:	2a221a14 	.word	0x2a221a14 8031434:	34          	.byte	0x34 8031435:	00          	.byte	0x00    {      case 1: /* sysDescr */        od->instance = MIB_OBJECT_SCALAR; 8031436:	2301      	movs	r3, #1 8031438:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 803143a:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 803143c:	2304      	movs	r3, #4 803143e:	7093      	strb	r3, [r2, #2]        od->v_len = *sysdescr_len_ptr; 8031440:	4b1a      	ldr	r3, [pc, #104]	; (80314ac <system_get_object_def+0x98>) 8031442:	e025      	b.n	8031490 <system_get_object_def+0x7c>        break;      case 2: /* sysObjectID */        od->instance = MIB_OBJECT_SCALAR; 8031444:	2301      	movs	r3, #1 8031446:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031448:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID); 803144a:	2306      	movs	r3, #6 803144c:	7093      	strb	r3, [r2, #2]        od->v_len = sysobjid.len * sizeof(s32_t); 803144e:	4b18      	ldr	r3, [pc, #96]	; (80314b0 <system_get_object_def+0x9c>) 8031450:	781b      	ldrb	r3, [r3, #0] 8031452:	009b      	lsls	r3, r3, #2 8031454:	e024      	b.n	80314a0 <system_get_object_def+0x8c>        break;      case 3: /* sysUpTime */        od->instance = MIB_OBJECT_SCALAR; 8031456:	2301      	movs	r3, #1 8031458:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 803145a:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS); 803145c:	2343      	movs	r3, #67	; 0x43 803145e:	7093      	strb	r3, [r2, #2] 8031460:	e01d      	b.n	803149e <system_get_object_def+0x8a>        od->v_len = sizeof(u32_t);        break;      case 4: /* sysContact */        od->instance = MIB_OBJECT_SCALAR; 8031462:	2301      	movs	r3, #1 8031464:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031466:	2303      	movs	r3, #3 8031468:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 803146a:	2304      	movs	r3, #4 803146c:	7093      	strb	r3, [r2, #2]        od->v_len = *syscontact_len_ptr; 803146e:	4b11      	ldr	r3, [pc, #68]	; (80314b4 <system_get_object_def+0xa0>) 8031470:	e00e      	b.n	8031490 <system_get_object_def+0x7c>        break;      case 5: /* sysName */        od->instance = MIB_OBJECT_SCALAR; 8031472:	2301      	movs	r3, #1 8031474:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031476:	2303      	movs	r3, #3 8031478:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 803147a:	2304      	movs	r3, #4 803147c:	7093      	strb	r3, [r2, #2]        od->v_len = *sysname_len_ptr; 803147e:	4b0e      	ldr	r3, [pc, #56]	; (80314b8 <system_get_object_def+0xa4>) 8031480:	e006      	b.n	8031490 <system_get_object_def+0x7c>        break;      case 6: /* sysLocation */        od->instance = MIB_OBJECT_SCALAR; 8031482:	2301      	movs	r3, #1 8031484:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031486:	2303      	movs	r3, #3 8031488:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 803148a:	2304      	movs	r3, #4 803148c:	7093      	strb	r3, [r2, #2]        od->v_len = *syslocation_len_ptr; 803148e:	4b0b      	ldr	r3, [pc, #44]	; (80314bc <system_get_object_def+0xa8>) 8031490:	681b      	ldr	r3, [r3, #0] 8031492:	781b      	ldrb	r3, [r3, #0] 8031494:	e004      	b.n	80314a0 <system_get_object_def+0x8c>        break;      case 7: /* sysServices */        od->instance = MIB_OBJECT_SCALAR; 8031496:	2301      	movs	r3, #1 8031498:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 803149a:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 803149c:	7090      	strb	r0, [r2, #2]        od->v_len = sizeof(s32_t); 803149e:	2304      	movs	r3, #4 80314a0:	8093      	strh	r3, [r2, #4]        break; 80314a2:	4770      	bx	lr    };  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("system_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 80314a4:	2300      	movs	r3, #0 80314a6:	7013      	strb	r3, [r2, #0] 80314a8:	4770      	bx	lr 80314aa:	bf00      	nop 80314ac:	20001810 	.word	0x20001810 80314b0:	200016c0 	.word	0x200016c0 80314b4:	2000166c 	.word	0x2000166c 80314b8:	20001668 	.word	0x20001668 80314bc:	20001854 	.word	0x20001854080314c0 <interfaces_get_object_def>:interfaces_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 80314c0:	2801      	cmp	r0, #1 80314c2:	d109      	bne.n	80314d8 <interfaces_get_object_def+0x18>  {    od->id_inst_len = ident_len; 80314c4:	2302      	movs	r3, #2 80314c6:	7193      	strb	r3, [r2, #6]static voidinterfaces_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 80314c8:	3904      	subs	r1, #4    od->id_inst_len = ident_len;    od->id_inst_ptr = ident;    od->instance = MIB_OBJECT_SCALAR;    od->access = MIB_OBJECT_READ_ONLY;    od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 80314ca:	7093      	strb	r3, [r2, #2]    od->v_len = sizeof(s32_t); 80314cc:	2304      	movs	r3, #4  ident_len += 1;  ident -= 1;  if (ident_len == 2)  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 80314ce:	6091      	str	r1, [r2, #8]    od->instance = MIB_OBJECT_SCALAR; 80314d0:	7010      	strb	r0, [r2, #0]    od->access = MIB_OBJECT_READ_ONLY; 80314d2:	7050      	strb	r0, [r2, #1]    od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);    od->v_len = sizeof(s32_t); 80314d4:	8093      	strh	r3, [r2, #4] 80314d6:	4770      	bx	lr  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("interfaces_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 80314d8:	2300      	movs	r3, #0 80314da:	7013      	strb	r3, [r2, #0] 80314dc:	4770      	bx	lr 80314de:	0000      	movs	r0, r0080314e0 <interfaces_get_value>: */static voidinterfaces_get_value(struct obj_def *od, u16_t len, void *value){  LWIP_UNUSED_ARG(len);  if (od->id_inst_ptr[0] == 1) 80314e0:	6883      	ldr	r3, [r0, #8] 80314e2:	681b      	ldr	r3, [r3, #0] 80314e4:	2b01      	cmp	r3, #1 80314e6:	d102      	bne.n	80314ee <interfaces_get_value+0xe>  {    s32_t *sint_ptr = (s32_t*)value;    *sint_ptr = iflist_root.count; 80314e8:	4b01      	ldr	r3, [pc, #4]	; (80314f0 <interfaces_get_value+0x10>) 80314ea:	8b9b      	ldrh	r3, [r3, #28] 80314ec:	6013      	str	r3, [r2, #0] 80314ee:	4770      	bx	lr 80314f0:	200016a0 	.word	0x200016a0080314f4 <ip_get_value>:{  u8_t id;  LWIP_UNUSED_ARG(len);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 80314f4:	6883      	ldr	r3, [r0, #8]  switch (id) 80314f6:	781b      	ldrb	r3, [r3, #0] 80314f8:	3b01      	subs	r3, #1 80314fa:	2b16      	cmp	r3, #22 80314fc:	d836      	bhi.n	803156c <ip_get_value+0x78> 80314fe:	e8df f003 	tbb	[pc, r3] 8031502:	0e0c      	.short	0x0e0c 8031504:	16141210 	.word	0x16141210 8031508:	1e1c1a18 	.word	0x1e1c1a18 803150c:	26242220 	.word	0x26242220 8031510:	2e2c2a28 	.word	0x2e2c2a28 8031514:	35353530 	.word	0x35353530 8031518:	32          	.byte	0x32 8031519:	00          	.byte	0x00#if IP_FORWARD        /* forwarding */        *sint_ptr = 1;#else        /* not-forwarding */        *sint_ptr = 2; 803151a:	2302      	movs	r3, #2 803151c:	e025      	b.n	803156a <ip_get_value+0x76>      }      break;    case 2: /* ipDefaultTTL */      {        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = IP_DEFAULT_TTL; 803151e:	23ff      	movs	r3, #255	; 0xff 8031520:	e023      	b.n	803156a <ip_get_value+0x76>      }      break;    case 3: /* ipInReceives */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipinreceives; 8031522:	4b13      	ldr	r3, [pc, #76]	; (8031570 <ip_get_value+0x7c>) 8031524:	e020      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 4: /* ipInHdrErrors */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipinhdrerrors; 8031526:	4b13      	ldr	r3, [pc, #76]	; (8031574 <ip_get_value+0x80>) 8031528:	e01e      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 5: /* ipInAddrErrors */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipinaddrerrors; 803152a:	4b13      	ldr	r3, [pc, #76]	; (8031578 <ip_get_value+0x84>) 803152c:	e01c      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 6: /* ipForwDatagrams */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipforwdatagrams; 803152e:	4b13      	ldr	r3, [pc, #76]	; (803157c <ip_get_value+0x88>) 8031530:	e01a      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 7: /* ipInUnknownProtos */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipinunknownprotos; 8031532:	4b13      	ldr	r3, [pc, #76]	; (8031580 <ip_get_value+0x8c>) 8031534:	e018      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 8: /* ipInDiscards */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipindiscards; 8031536:	4b13      	ldr	r3, [pc, #76]	; (8031584 <ip_get_value+0x90>) 8031538:	e016      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 9: /* ipInDelivers */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipindelivers; 803153a:	4b13      	ldr	r3, [pc, #76]	; (8031588 <ip_get_value+0x94>) 803153c:	e014      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 10: /* ipOutRequests */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipoutrequests; 803153e:	4b13      	ldr	r3, [pc, #76]	; (803158c <ip_get_value+0x98>) 8031540:	e012      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 11: /* ipOutDiscards */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipoutdiscards; 8031542:	4b13      	ldr	r3, [pc, #76]	; (8031590 <ip_get_value+0x9c>) 8031544:	e010      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 12: /* ipOutNoRoutes */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipoutnoroutes; 8031546:	4b13      	ldr	r3, [pc, #76]	; (8031594 <ip_get_value+0xa0>) 8031548:	e00e      	b.n	8031568 <ip_get_value+0x74>      {        s32_t *sint_ptr = (s32_t*)value;#if IP_REASSEMBLY        *sint_ptr = IP_REASS_MAXAGE;#else        *sint_ptr = 0; 803154a:	2300      	movs	r3, #0 803154c:	e00d      	b.n	803156a <ip_get_value+0x76>      }      break;    case 14: /* ipReasmReqds */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipreasmreqds; 803154e:	4b12      	ldr	r3, [pc, #72]	; (8031598 <ip_get_value+0xa4>) 8031550:	e00a      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 15: /* ipReasmOKs */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipreasmoks; 8031552:	4b12      	ldr	r3, [pc, #72]	; (803159c <ip_get_value+0xa8>) 8031554:	e008      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 16: /* ipReasmFails */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipreasmfails; 8031556:	4b12      	ldr	r3, [pc, #72]	; (80315a0 <ip_get_value+0xac>) 8031558:	e006      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 17: /* ipFragOKs */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipfragoks; 803155a:	4b12      	ldr	r3, [pc, #72]	; (80315a4 <ip_get_value+0xb0>) 803155c:	e004      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 18: /* ipFragFails */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipfragfails; 803155e:	4b12      	ldr	r3, [pc, #72]	; (80315a8 <ip_get_value+0xb4>) 8031560:	e002      	b.n	8031568 <ip_get_value+0x74>      }      break;    case 19: /* ipFragCreates */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = ipfragcreates; 8031562:	4b12      	ldr	r3, [pc, #72]	; (80315ac <ip_get_value+0xb8>) 8031564:	e000      	b.n	8031568 <ip_get_value+0x74>      break;    case 23: /* ipRoutingDiscards */      /** @todo can lwIP discard routes at all?? hardwire this to 0?? */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = iproutingdiscards; 8031566:	4b12      	ldr	r3, [pc, #72]	; (80315b0 <ip_get_value+0xbc>) 8031568:	681b      	ldr	r3, [r3, #0] 803156a:	6013      	str	r3, [r2, #0] 803156c:	4770      	bx	lr 803156e:	bf00      	nop 8031570:	2000e284 	.word	0x2000e284 8031574:	2000e20c 	.word	0x2000e20c 8031578:	2000e1f0 	.word	0x2000e1f0 803157c:	2000e30c 	.word	0x2000e30c 8031580:	2000e24c 	.word	0x2000e24c 8031584:	2000e2d8 	.word	0x2000e2d8 8031588:	2000e310 	.word	0x2000e310 803158c:	2000e2f8 	.word	0x2000e2f8 8031590:	2000e29c 	.word	0x2000e29c 8031594:	2000e31c 	.word	0x2000e31c 8031598:	2000e26c 	.word	0x2000e26c 803159c:	2000e218 	.word	0x2000e218 80315a0:	2000e2cc 	.word	0x2000e2cc 80315a4:	2000e1dc 	.word	0x2000e1dc 80315a8:	2000e248 	.word	0x2000e248 80315ac:	2000e2e8 	.word	0x2000e2e8 80315b0:	2000e2d4 	.word	0x2000e2d4080315b4 <ip_set_test>:  s32_t *sint_ptr = (s32_t*)value;  LWIP_UNUSED_ARG(len);  set_ok = 0;  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 80315b4:	6883      	ldr	r3, [r0, #8]  switch (id) 80315b6:	781b      	ldrb	r3, [r3, #0] 80315b8:	2b01      	cmp	r3, #1 80315ba:	d002      	beq.n	80315c2 <ip_set_test+0xe> 80315bc:	2b02      	cmp	r3, #2 80315be:	d109      	bne.n	80315d4 <ip_set_test+0x20> 80315c0:	e002      	b.n	80315c8 <ip_set_test+0x14>#if IP_FORWARD      /* forwarding */      if (*sint_ptr == 1)#else      /* not-forwarding */      if (*sint_ptr == 2) 80315c2:	6810      	ldr	r0, [r2, #0]{  u8_t id, set_ok;  s32_t *sint_ptr = (s32_t*)value;  LWIP_UNUSED_ARG(len);  set_ok = 0; 80315c4:	2802      	cmp	r0, #2 80315c6:	e001      	b.n	80315cc <ip_set_test+0x18>      {        set_ok = 1;      }      break;    case 2: /* ipDefaultTTL */      if (*sint_ptr == IP_DEFAULT_TTL) 80315c8:	6810      	ldr	r0, [r2, #0]{  u8_t id, set_ok;  s32_t *sint_ptr = (s32_t*)value;  LWIP_UNUSED_ARG(len);  set_ok = 0; 80315ca:	28ff      	cmp	r0, #255	; 0xff 80315cc:	bf14      	ite	ne 80315ce:	2000      	movne	r0, #0 80315d0:	2001      	moveq	r0, #1 80315d2:	4770      	bx	lr 80315d4:	2000      	movs	r0, #0        set_ok = 1;      }      break;  };  return set_ok;} 80315d6:	4770      	bx	lr080315d8 <ip_rteentry_get_object_def>:  /* return to object name, adding index depth (4) */  ident_len += 4;  ident -= 4;  if (ident_len == 5) 80315d8:	2801      	cmp	r0, #1 80315da:	d12c      	bne.n	8031636 <ip_rteentry_get_object_def+0x5e>  {    od->id_inst_len = ident_len; 80315dc:	2305      	movs	r3, #5 80315de:	7193      	strb	r3, [r2, #6]{  u8_t id;  /* return to object name, adding index depth (4) */  ident_len += 4;  ident -= 4; 80315e0:	f1a1 0310 	sub.w	r3, r1, #16  if (ident_len == 5)  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 80315e4:	6093      	str	r3, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    switch (id) 80315e6:	f811 3c10 	ldrb.w	r3, [r1, #-16] 80315ea:	3b01      	subs	r3, #1 80315ec:	2b0c      	cmp	r3, #12 80315ee:	d822      	bhi.n	8031636 <ip_rteentry_get_object_def+0x5e> 80315f0:	e8df f003 	tbb	[pc, r3] 80315f4:	0d0d0d07 	.word	0x0d0d0d07 80315f8:	0d070d0d 	.word	0x0d070d0d 80315fc:	0d070d11 	.word	0x0d070d11 8031600:	18          	.byte	0x18 8031601:	00          	.byte	0x00    {      case 1: /* ipRouteDest */      case 7: /* ipRouteNextHop */      case 11: /* ipRouteMask */        od->instance = MIB_OBJECT_TAB; 8031602:	2302      	movs	r3, #2 8031604:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031606:	2303      	movs	r3, #3 8031608:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); 803160a:	2340      	movs	r3, #64	; 0x40 803160c:	e007      	b.n	803161e <ip_rteentry_get_object_def+0x46>      case 5: /* ipRouteMetric3 */      case 6: /* ipRouteMetric4 */      case 8: /* ipRouteType */      case 10: /* ipRouteAge */      case 12: /* ipRouteMetric5 */        od->instance = MIB_OBJECT_TAB; 803160e:	2302      	movs	r3, #2 8031610:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031612:	2103      	movs	r1, #3 8031614:	e002      	b.n	803161c <ip_rteentry_get_object_def+0x44>        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);        od->v_len = sizeof(s32_t);        break;      case 9: /* ipRouteProto */        od->instance = MIB_OBJECT_TAB; 8031616:	2302      	movs	r3, #2 8031618:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 803161a:	2101      	movs	r1, #1 803161c:	7051      	strb	r1, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 803161e:	7093      	strb	r3, [r2, #2]        od->v_len = sizeof(s32_t); 8031620:	2304      	movs	r3, #4 8031622:	e006      	b.n	8031632 <ip_rteentry_get_object_def+0x5a>        break;      case 13: /* ipRouteInfo */        /** @note returning zeroDotZero (0.0) no routing protocol specific MIB */        od->instance = MIB_OBJECT_TAB; 8031624:	2302      	movs	r3, #2 8031626:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031628:	2301      	movs	r3, #1 803162a:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID); 803162c:	2306      	movs	r3, #6 803162e:	7093      	strb	r3, [r2, #2]        od->v_len = iprouteinfo.len * sizeof(s32_t); 8031630:	2308      	movs	r3, #8 8031632:	8093      	strh	r3, [r2, #4]        break; 8031634:	4770      	bx	lr    }  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_rteentry_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031636:	2300      	movs	r3, #0 8031638:	7013      	strb	r3, [r2, #0] 803163a:	4770      	bx	lr0803163c <icmp_get_object_def>:icmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if ((ident_len == 2) && 803163c:	2801      	cmp	r0, #1 803163e:	d110      	bne.n	8031662 <icmp_get_object_def+0x26>      (ident[0] > 0) && (ident[0] < 27)) 8031640:	f851 3c04 	ldr.w	r3, [r1, #-4]icmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if ((ident_len == 2) && 8031644:	2b00      	cmp	r3, #0 8031646:	dd0c      	ble.n	8031662 <icmp_get_object_def+0x26>      (ident[0] > 0) && (ident[0] < 27)) 8031648:	2b1a      	cmp	r3, #26 803164a:	dc0a      	bgt.n	8031662 <icmp_get_object_def+0x26>  {    od->id_inst_len = ident_len; 803164c:	2302      	movs	r3, #2 803164e:	7193      	strb	r3, [r2, #6]    od->id_inst_ptr = ident;    od->instance = MIB_OBJECT_SCALAR;    od->access = MIB_OBJECT_READ_ONLY;    od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031650:	2341      	movs	r3, #65	; 0x41static voidicmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 8031652:	3904      	subs	r1, #4    od->id_inst_len = ident_len;    od->id_inst_ptr = ident;    od->instance = MIB_OBJECT_SCALAR;    od->access = MIB_OBJECT_READ_ONLY;    od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031654:	7093      	strb	r3, [r2, #2]    od->v_len = sizeof(u32_t); 8031656:	2304      	movs	r3, #4  ident -= 1;  if ((ident_len == 2) &&      (ident[0] > 0) && (ident[0] < 27))  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8031658:	6091      	str	r1, [r2, #8]    od->instance = MIB_OBJECT_SCALAR; 803165a:	7010      	strb	r0, [r2, #0]    od->access = MIB_OBJECT_READ_ONLY; 803165c:	7050      	strb	r0, [r2, #1]    od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER);    od->v_len = sizeof(u32_t); 803165e:	8093      	strh	r3, [r2, #4] 8031660:	4770      	bx	lr  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("icmp_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031662:	2300      	movs	r3, #0 8031664:	7013      	strb	r3, [r2, #0] 8031666:	4770      	bx	lr08031668 <icmp_get_value>:  u32_t *uint_ptr = (u32_t*)value;  u8_t id;  LWIP_UNUSED_ARG(len);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031668:	6883      	ldr	r3, [r0, #8]  switch (id) 803166a:	781b      	ldrb	r3, [r3, #0] 803166c:	3b01      	subs	r3, #1 803166e:	2b19      	cmp	r3, #25 8031670:	d843      	bhi.n	80316fa <icmp_get_value+0x92> 8031672:	e8df f003 	tbb	[pc, r3] 8031676:	0f0d      	.short	0x0f0d 8031678:	17151311 	.word	0x17151311 803167c:	1f1d1b19 	.word	0x1f1d1b19 8031680:	27252321 	.word	0x27252321 8031684:	2f2d2b29 	.word	0x2f2d2b29 8031688:	37353331 	.word	0x37353331 803168c:	3f3d3b39 	.word	0x3f3d3b39  {    case 1: /* icmpInMsgs */      *uint_ptr = icmpinmsgs; 8031690:	4b1a      	ldr	r3, [pc, #104]	; (80316fc <icmp_get_value+0x94>) 8031692:	e030      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 2: /* icmpInErrors */      *uint_ptr = icmpinerrors; 8031694:	4b1a      	ldr	r3, [pc, #104]	; (8031700 <icmp_get_value+0x98>) 8031696:	e02e      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 3: /* icmpInDestUnreachs */      *uint_ptr = icmpindestunreachs; 8031698:	4b1a      	ldr	r3, [pc, #104]	; (8031704 <icmp_get_value+0x9c>) 803169a:	e02c      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 4: /* icmpInTimeExcds */      *uint_ptr = icmpintimeexcds; 803169c:	4b1a      	ldr	r3, [pc, #104]	; (8031708 <icmp_get_value+0xa0>) 803169e:	e02a      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 5: /* icmpInParmProbs */      *uint_ptr = icmpinparmprobs; 80316a0:	4b1a      	ldr	r3, [pc, #104]	; (803170c <icmp_get_value+0xa4>) 80316a2:	e028      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 6: /* icmpInSrcQuenchs */      *uint_ptr = icmpinsrcquenchs; 80316a4:	4b1a      	ldr	r3, [pc, #104]	; (8031710 <icmp_get_value+0xa8>) 80316a6:	e026      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 7: /* icmpInRedirects */      *uint_ptr = icmpinredirects; 80316a8:	4b1a      	ldr	r3, [pc, #104]	; (8031714 <icmp_get_value+0xac>) 80316aa:	e024      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 8: /* icmpInEchos */      *uint_ptr = icmpinechos; 80316ac:	4b1a      	ldr	r3, [pc, #104]	; (8031718 <icmp_get_value+0xb0>) 80316ae:	e022      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 9: /* icmpInEchoReps */      *uint_ptr = icmpinechoreps; 80316b0:	4b1a      	ldr	r3, [pc, #104]	; (803171c <icmp_get_value+0xb4>) 80316b2:	e020      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 10: /* icmpInTimestamps */      *uint_ptr = icmpintimestamps; 80316b4:	4b1a      	ldr	r3, [pc, #104]	; (8031720 <icmp_get_value+0xb8>) 80316b6:	e01e      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 11: /* icmpInTimestampReps */      *uint_ptr = icmpintimestampreps; 80316b8:	4b1a      	ldr	r3, [pc, #104]	; (8031724 <icmp_get_value+0xbc>) 80316ba:	e01c      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 12: /* icmpInAddrMasks */      *uint_ptr = icmpinaddrmasks; 80316bc:	4b1a      	ldr	r3, [pc, #104]	; (8031728 <icmp_get_value+0xc0>) 80316be:	e01a      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 13: /* icmpInAddrMaskReps */      *uint_ptr = icmpinaddrmaskreps; 80316c0:	4b1a      	ldr	r3, [pc, #104]	; (803172c <icmp_get_value+0xc4>) 80316c2:	e018      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 14: /* icmpOutMsgs */      *uint_ptr = icmpoutmsgs; 80316c4:	4b1a      	ldr	r3, [pc, #104]	; (8031730 <icmp_get_value+0xc8>) 80316c6:	e016      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 15: /* icmpOutErrors */      *uint_ptr = icmpouterrors; 80316c8:	4b1a      	ldr	r3, [pc, #104]	; (8031734 <icmp_get_value+0xcc>) 80316ca:	e014      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 16: /* icmpOutDestUnreachs */      *uint_ptr = icmpoutdestunreachs; 80316cc:	4b1a      	ldr	r3, [pc, #104]	; (8031738 <icmp_get_value+0xd0>) 80316ce:	e012      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 17: /* icmpOutTimeExcds */      *uint_ptr = icmpouttimeexcds; 80316d0:	4b1a      	ldr	r3, [pc, #104]	; (803173c <icmp_get_value+0xd4>) 80316d2:	e010      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 18: /* icmpOutParmProbs */      *uint_ptr = icmpoutparmprobs; 80316d4:	4b1a      	ldr	r3, [pc, #104]	; (8031740 <icmp_get_value+0xd8>) 80316d6:	e00e      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 19: /* icmpOutSrcQuenchs */      *uint_ptr = icmpoutsrcquenchs; 80316d8:	4b1a      	ldr	r3, [pc, #104]	; (8031744 <icmp_get_value+0xdc>) 80316da:	e00c      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 20: /* icmpOutRedirects */      *uint_ptr = icmpoutredirects; 80316dc:	4b1a      	ldr	r3, [pc, #104]	; (8031748 <icmp_get_value+0xe0>) 80316de:	e00a      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 21: /* icmpOutEchos */      *uint_ptr = icmpoutechos; 80316e0:	4b1a      	ldr	r3, [pc, #104]	; (803174c <icmp_get_value+0xe4>) 80316e2:	e008      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 22: /* icmpOutEchoReps */      *uint_ptr = icmpoutechoreps; 80316e4:	4b1a      	ldr	r3, [pc, #104]	; (8031750 <icmp_get_value+0xe8>) 80316e6:	e006      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 23: /* icmpOutTimestamps */      *uint_ptr = icmpouttimestamps; 80316e8:	4b1a      	ldr	r3, [pc, #104]	; (8031754 <icmp_get_value+0xec>) 80316ea:	e004      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 24: /* icmpOutTimestampReps */      *uint_ptr = icmpouttimestampreps; 80316ec:	4b1a      	ldr	r3, [pc, #104]	; (8031758 <icmp_get_value+0xf0>) 80316ee:	e002      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 25: /* icmpOutAddrMasks */      *uint_ptr = icmpoutaddrmasks; 80316f0:	4b1a      	ldr	r3, [pc, #104]	; (803175c <icmp_get_value+0xf4>) 80316f2:	e000      	b.n	80316f6 <icmp_get_value+0x8e>      break;    case 26: /* icmpOutAddrMaskReps */      *uint_ptr = icmpoutaddrmaskreps; 80316f4:	4b1a      	ldr	r3, [pc, #104]	; (8031760 <icmp_get_value+0xf8>) 80316f6:	681b      	ldr	r3, [r3, #0] 80316f8:	6013      	str	r3, [r2, #0] 80316fa:	4770      	bx	lr 80316fc:	2000e214 	.word	0x2000e214 8031700:	2000e210 	.word	0x2000e210 8031704:	2000e1ec 	.word	0x2000e1ec 8031708:	2000e2d0 	.word	0x2000e2d0 803170c:	2000e304 	.word	0x2000e304 8031710:	2000e1fc 	.word	0x2000e1fc 8031714:	2000e228 	.word	0x2000e228 8031718:	2000e2c8 	.word	0x2000e2c8 803171c:	2000e240 	.word	0x2000e240 8031720:	2000e230 	.word	0x2000e230 8031724:	2000e270 	.word	0x2000e270 8031728:	2000e308 	.word	0x2000e308 803172c:	2000e2a4 	.word	0x2000e2a4 8031730:	2000e294 	.word	0x2000e294 8031734:	2000e318 	.word	0x2000e318 8031738:	2000e2ac 	.word	0x2000e2ac 803173c:	2000e260 	.word	0x2000e260 8031740:	2000e224 	.word	0x2000e224 8031744:	2000e278 	.word	0x2000e278 8031748:	2000e234 	.word	0x2000e234 803174c:	2000e314 	.word	0x2000e314 8031750:	2000e2b4 	.word	0x2000e2b4 8031754:	2000e280 	.word	0x2000e280 8031758:	2000e264 	.word	0x2000e264 803175c:	2000e22c 	.word	0x2000e22c 8031760:	2000e28c 	.word	0x2000e28c08031764 <tcp_get_value>:  s32_t *sint_ptr = (s32_t*)value;  u8_t id;  LWIP_UNUSED_ARG(len);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031764:	6883      	ldr	r3, [r0, #8]  switch (id) 8031766:	781b      	ldrb	r3, [r3, #0] 8031768:	3b01      	subs	r3, #1 803176a:	2b0e      	cmp	r3, #14 803176c:	d836      	bhi.n	80317dc <tcp_get_value+0x78> 803176e:	e8df f003 	tbb	[pc, r3] 8031772:	0a08      	.short	0x0a08 8031774:	1412100d 	.word	0x1412100d 8031778:	2a1a1816 	.word	0x2a1a1816 803177c:	30352e2c 	.word	0x30352e2c 8031780:	32          	.byte	0x32 8031781:	00          	.byte	0x00  {    case 1: /* tcpRtoAlgorithm, vanj(4) */      *sint_ptr = 4; 8031782:	2304      	movs	r3, #4 8031784:	e029      	b.n	80317da <tcp_get_value+0x76>      break;    case 2: /* tcpRtoMin */      /* @todo not the actual value, a guess,          needs to be calculated */      *sint_ptr = 1000; 8031786:	f44f 737a 	mov.w	r3, #1000	; 0x3e8 803178a:	e026      	b.n	80317da <tcp_get_value+0x76>      break;    case 3: /* tcpRtoMax */      /* @todo not the actual value, a guess,         needs to be calculated */      *sint_ptr = 60000; 803178c:	f64e 2360 	movw	r3, #60000	; 0xea60 8031790:	e023      	b.n	80317da <tcp_get_value+0x76>      break;    case 4: /* tcpMaxConn */      *sint_ptr = MEMP_NUM_TCP_PCB; 8031792:	230c      	movs	r3, #12 8031794:	e021      	b.n	80317da <tcp_get_value+0x76>      break;    case 5: /* tcpActiveOpens */      *uint_ptr = tcpactiveopens; 8031796:	4b12      	ldr	r3, [pc, #72]	; (80317e0 <tcp_get_value+0x7c>) 8031798:	e01e      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 6: /* tcpPassiveOpens */      *uint_ptr = tcppassiveopens; 803179a:	4b12      	ldr	r3, [pc, #72]	; (80317e4 <tcp_get_value+0x80>) 803179c:	e01c      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 7: /* tcpAttemptFails */      *uint_ptr = tcpattemptfails; 803179e:	4b12      	ldr	r3, [pc, #72]	; (80317e8 <tcp_get_value+0x84>) 80317a0:	e01a      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 8: /* tcpEstabResets */      *uint_ptr = tcpestabresets; 80317a2:	4b12      	ldr	r3, [pc, #72]	; (80317ec <tcp_get_value+0x88>) 80317a4:	e018      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 9: /* tcpCurrEstab */      {        u16_t tcpcurrestab = 0;        struct tcp_pcb *pcb = tcp_active_pcbs; 80317a6:	4b12      	ldr	r3, [pc, #72]	; (80317f0 <tcp_get_value+0x8c>)    case 8: /* tcpEstabResets */      *uint_ptr = tcpestabresets;      break;    case 9: /* tcpCurrEstab */      {        u16_t tcpcurrestab = 0; 80317a8:	2100      	movs	r1, #0        struct tcp_pcb *pcb = tcp_active_pcbs; 80317aa:	681b      	ldr	r3, [r3, #0]        while (pcb != NULL) 80317ac:	e007      	b.n	80317be <tcp_get_value+0x5a>        {          if ((pcb->state == ESTABLISHED) || 80317ae:	7e18      	ldrb	r0, [r3, #24] 80317b0:	2804      	cmp	r0, #4 80317b2:	d001      	beq.n	80317b8 <tcp_get_value+0x54> 80317b4:	2807      	cmp	r0, #7 80317b6:	d101      	bne.n	80317bc <tcp_get_value+0x58>              (pcb->state == CLOSE_WAIT))          {            tcpcurrestab++; 80317b8:	3101      	adds	r1, #1 80317ba:	b289      	uxth	r1, r1          }          pcb = pcb->next; 80317bc:	68db      	ldr	r3, [r3, #12]      break;    case 9: /* tcpCurrEstab */      {        u16_t tcpcurrestab = 0;        struct tcp_pcb *pcb = tcp_active_pcbs;        while (pcb != NULL) 80317be:	2b00      	cmp	r3, #0 80317c0:	d1f5      	bne.n	80317ae <tcp_get_value+0x4a>          {            tcpcurrestab++;          }          pcb = pcb->next;        }        *uint_ptr = tcpcurrestab; 80317c2:	6011      	str	r1, [r2, #0]      }      break; 80317c4:	4770      	bx	lr    case 10: /* tcpInSegs */      *uint_ptr = tcpinsegs; 80317c6:	4b0b      	ldr	r3, [pc, #44]	; (80317f4 <tcp_get_value+0x90>) 80317c8:	e006      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 11: /* tcpOutSegs */      *uint_ptr = tcpoutsegs; 80317ca:	4b0b      	ldr	r3, [pc, #44]	; (80317f8 <tcp_get_value+0x94>) 80317cc:	e004      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 12: /* tcpRetransSegs */      *uint_ptr = tcpretranssegs; 80317ce:	4b0b      	ldr	r3, [pc, #44]	; (80317fc <tcp_get_value+0x98>) 80317d0:	e002      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 14: /* tcpInErrs */      *uint_ptr = tcpinerrs; 80317d2:	4b0b      	ldr	r3, [pc, #44]	; (8031800 <tcp_get_value+0x9c>) 80317d4:	e000      	b.n	80317d8 <tcp_get_value+0x74>      break;    case 15: /* tcpOutRsts */      *uint_ptr = tcpoutrsts; 80317d6:	4b0b      	ldr	r3, [pc, #44]	; (8031804 <tcp_get_value+0xa0>) 80317d8:	681b      	ldr	r3, [r3, #0] 80317da:	6013      	str	r3, [r2, #0] 80317dc:	4770      	bx	lr 80317de:	bf00      	nop 80317e0:	2000e208 	.word	0x2000e208 80317e4:	2000e23c 	.word	0x2000e23c 80317e8:	2000e288 	.word	0x2000e288 80317ec:	2000e21c 	.word	0x2000e21c 80317f0:	2001107c 	.word	0x2001107c 80317f4:	2000e298 	.word	0x2000e298 80317f8:	2000e2e4 	.word	0x2000e2e4 80317fc:	2000e2b8 	.word	0x2000e2b8 8031800:	2000e244 	.word	0x2000e244 8031804:	2000e2a8 	.word	0x2000e2a808031808 <udp_get_object_def>:udp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if ((ident_len == 2) && 8031808:	2801      	cmp	r0, #1 803180a:	d110      	bne.n	803182e <udp_get_object_def+0x26>      (ident[0] > 0) && (ident[0] < 6)) 803180c:	f851 3c04 	ldr.w	r3, [r1, #-4]udp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if ((ident_len == 2) && 8031810:	2b00      	cmp	r3, #0 8031812:	dd0c      	ble.n	803182e <udp_get_object_def+0x26>      (ident[0] > 0) && (ident[0] < 6)) 8031814:	2b05      	cmp	r3, #5 8031816:	dc0a      	bgt.n	803182e <udp_get_object_def+0x26>  {    od->id_inst_len = ident_len; 8031818:	2302      	movs	r3, #2 803181a:	7193      	strb	r3, [r2, #6]    od->id_inst_ptr = ident;    od->instance = MIB_OBJECT_SCALAR;    od->access = MIB_OBJECT_READ_ONLY;    od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 803181c:	2341      	movs	r3, #65	; 0x41static voidudp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 803181e:	3904      	subs	r1, #4    od->id_inst_len = ident_len;    od->id_inst_ptr = ident;    od->instance = MIB_OBJECT_SCALAR;    od->access = MIB_OBJECT_READ_ONLY;    od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031820:	7093      	strb	r3, [r2, #2]    od->v_len = sizeof(u32_t); 8031822:	2304      	movs	r3, #4  ident -= 1;  if ((ident_len == 2) &&      (ident[0] > 0) && (ident[0] < 6))  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8031824:	6091      	str	r1, [r2, #8]    od->instance = MIB_OBJECT_SCALAR; 8031826:	7010      	strb	r0, [r2, #0]    od->access = MIB_OBJECT_READ_ONLY; 8031828:	7050      	strb	r0, [r2, #1]    od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER);    od->v_len = sizeof(u32_t); 803182a:	8093      	strh	r3, [r2, #4] 803182c:	4770      	bx	lr  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("udp_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 803182e:	2300      	movs	r3, #0 8031830:	7013      	strb	r3, [r2, #0] 8031832:	4770      	bx	lr08031834 <udp_get_value>:  u32_t *uint_ptr = (u32_t*)value;  u8_t id;  LWIP_UNUSED_ARG(len);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031834:	6883      	ldr	r3, [r0, #8]  switch (id) 8031836:	781b      	ldrb	r3, [r3, #0] 8031838:	3b01      	subs	r3, #1 803183a:	2b03      	cmp	r3, #3 803183c:	d80c      	bhi.n	8031858 <udp_get_value+0x24> 803183e:	e8df f003 	tbb	[pc, r3] 8031842:	0402      	.short	0x0402 8031844:	0806      	.short	0x0806  {    case 1: /* udpInDatagrams */      *uint_ptr = udpindatagrams; 8031846:	4b05      	ldr	r3, [pc, #20]	; (803185c <udp_get_value+0x28>) 8031848:	e004      	b.n	8031854 <udp_get_value+0x20>      break;    case 2: /* udpNoPorts */      *uint_ptr = udpnoports; 803184a:	4b05      	ldr	r3, [pc, #20]	; (8031860 <udp_get_value+0x2c>) 803184c:	e002      	b.n	8031854 <udp_get_value+0x20>      break;    case 3: /* udpInErrors */      *uint_ptr = udpinerrors; 803184e:	4b05      	ldr	r3, [pc, #20]	; (8031864 <udp_get_value+0x30>) 8031850:	e000      	b.n	8031854 <udp_get_value+0x20>      break;    case 4: /* udpOutDatagrams */      *uint_ptr = udpoutdatagrams; 8031852:	4b05      	ldr	r3, [pc, #20]	; (8031868 <udp_get_value+0x34>) 8031854:	681b      	ldr	r3, [r3, #0] 8031856:	6013      	str	r3, [r2, #0] 8031858:	4770      	bx	lr 803185a:	bf00      	nop 803185c:	2000e2c4 	.word	0x2000e2c4 8031860:	2000e27c 	.word	0x2000e27c 8031864:	2000e2ec 	.word	0x2000e2ec 8031868:	2000e274 	.word	0x2000e2740803186c <snmp_get_value>:  u32_t *uint_ptr = (u32_t*)value;  u8_t id;  LWIP_UNUSED_ARG(len);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 803186c:	6883      	ldr	r3, [r0, #8]  switch (id) 803186e:	781b      	ldrb	r3, [r3, #0] 8031870:	3b01      	subs	r3, #1 8031872:	2b1d      	cmp	r3, #29 8031874:	d84b      	bhi.n	803190e <snmp_get_value+0xa2> 8031876:	e8df f003 	tbb	[pc, r3] 803187a:	110f      	.short	0x110f 803187c:	19171513 	.word	0x19171513 8031880:	1f1d1b4a 	.word	0x1f1d1b4a 8031884:	27252321 	.word	0x27252321 8031888:	2f2d2b29 	.word	0x2f2d2b29 803188c:	37353331 	.word	0x37353331 8031890:	3d3b394a 	.word	0x3d3b394a 8031894:	4643413f 	.word	0x4643413f  {      case 1: /* snmpInPkts */        *uint_ptr = snmpinpkts; 8031898:	4b1d      	ldr	r3, [pc, #116]	; (8031910 <snmp_get_value+0xa4>) 803189a:	e032      	b.n	8031902 <snmp_get_value+0x96>        break;      case 2: /* snmpOutPkts */        *uint_ptr = snmpoutpkts; 803189c:	4b1d      	ldr	r3, [pc, #116]	; (8031914 <snmp_get_value+0xa8>) 803189e:	e030      	b.n	8031902 <snmp_get_value+0x96>        break;      case 3: /* snmpInBadVersions */        *uint_ptr = snmpinbadversions; 80318a0:	4b1d      	ldr	r3, [pc, #116]	; (8031918 <snmp_get_value+0xac>) 80318a2:	e02e      	b.n	8031902 <snmp_get_value+0x96>        break;      case 4: /* snmpInBadCommunityNames */        *uint_ptr = snmpinbadcommunitynames; 80318a4:	4b1d      	ldr	r3, [pc, #116]	; (803191c <snmp_get_value+0xb0>) 80318a6:	e02c      	b.n	8031902 <snmp_get_value+0x96>        break;      case 5: /* snmpInBadCommunityUses */        *uint_ptr = snmpinbadcommunityuses; 80318a8:	4b1d      	ldr	r3, [pc, #116]	; (8031920 <snmp_get_value+0xb4>) 80318aa:	e02a      	b.n	8031902 <snmp_get_value+0x96>        break;      case 6: /* snmpInASNParseErrs */        *uint_ptr = snmpinasnparseerrs; 80318ac:	4b1d      	ldr	r3, [pc, #116]	; (8031924 <snmp_get_value+0xb8>) 80318ae:	e028      	b.n	8031902 <snmp_get_value+0x96>        break;      case 8: /* snmpInTooBigs */        *uint_ptr = snmpintoobigs; 80318b0:	4b1d      	ldr	r3, [pc, #116]	; (8031928 <snmp_get_value+0xbc>) 80318b2:	e026      	b.n	8031902 <snmp_get_value+0x96>        break;      case 9: /* snmpInNoSuchNames */        *uint_ptr = snmpinnosuchnames; 80318b4:	4b1d      	ldr	r3, [pc, #116]	; (803192c <snmp_get_value+0xc0>) 80318b6:	e024      	b.n	8031902 <snmp_get_value+0x96>        break;      case 10: /* snmpInBadValues */        *uint_ptr = snmpinbadvalues; 80318b8:	4b1d      	ldr	r3, [pc, #116]	; (8031930 <snmp_get_value+0xc4>) 80318ba:	e022      	b.n	8031902 <snmp_get_value+0x96>        break;      case 11: /* snmpInReadOnlys */        *uint_ptr = snmpinreadonlys; 80318bc:	4b1d      	ldr	r3, [pc, #116]	; (8031934 <snmp_get_value+0xc8>) 80318be:	e020      	b.n	8031902 <snmp_get_value+0x96>        break;      case 12: /* snmpInGenErrs */        *uint_ptr = snmpingenerrs; 80318c0:	4b1d      	ldr	r3, [pc, #116]	; (8031938 <snmp_get_value+0xcc>) 80318c2:	e01e      	b.n	8031902 <snmp_get_value+0x96>        break;      case 13: /* snmpInTotalReqVars */        *uint_ptr = snmpintotalreqvars; 80318c4:	4b1d      	ldr	r3, [pc, #116]	; (803193c <snmp_get_value+0xd0>) 80318c6:	e01c      	b.n	8031902 <snmp_get_value+0x96>        break;      case 14: /* snmpInTotalSetVars */        *uint_ptr = snmpintotalsetvars; 80318c8:	4b1d      	ldr	r3, [pc, #116]	; (8031940 <snmp_get_value+0xd4>) 80318ca:	e01a      	b.n	8031902 <snmp_get_value+0x96>        break;      case 15: /* snmpInGetRequests */        *uint_ptr = snmpingetrequests; 80318cc:	4b1d      	ldr	r3, [pc, #116]	; (8031944 <snmp_get_value+0xd8>) 80318ce:	e018      	b.n	8031902 <snmp_get_value+0x96>        break;      case 16: /* snmpInGetNexts */        *uint_ptr = snmpingetnexts; 80318d0:	4b1d      	ldr	r3, [pc, #116]	; (8031948 <snmp_get_value+0xdc>) 80318d2:	e016      	b.n	8031902 <snmp_get_value+0x96>        break;      case 17: /* snmpInSetRequests */        *uint_ptr = snmpinsetrequests; 80318d4:	4b1d      	ldr	r3, [pc, #116]	; (803194c <snmp_get_value+0xe0>) 80318d6:	e014      	b.n	8031902 <snmp_get_value+0x96>        break;      case 18: /* snmpInGetResponses */        *uint_ptr = snmpingetresponses; 80318d8:	4b1d      	ldr	r3, [pc, #116]	; (8031950 <snmp_get_value+0xe4>) 80318da:	e012      	b.n	8031902 <snmp_get_value+0x96>        break;      case 19: /* snmpInTraps */        *uint_ptr = snmpintraps; 80318dc:	4b1d      	ldr	r3, [pc, #116]	; (8031954 <snmp_get_value+0xe8>) 80318de:	e010      	b.n	8031902 <snmp_get_value+0x96>        break;      case 20: /* snmpOutTooBigs */        *uint_ptr = snmpouttoobigs; 80318e0:	4b1d      	ldr	r3, [pc, #116]	; (8031958 <snmp_get_value+0xec>) 80318e2:	e00e      	b.n	8031902 <snmp_get_value+0x96>        break;      case 21: /* snmpOutNoSuchNames */        *uint_ptr = snmpoutnosuchnames; 80318e4:	4b1d      	ldr	r3, [pc, #116]	; (803195c <snmp_get_value+0xf0>) 80318e6:	e00c      	b.n	8031902 <snmp_get_value+0x96>        break;      case 22: /* snmpOutBadValues */        *uint_ptr = snmpoutbadvalues; 80318e8:	4b1d      	ldr	r3, [pc, #116]	; (8031960 <snmp_get_value+0xf4>) 80318ea:	e00a      	b.n	8031902 <snmp_get_value+0x96>        break;      case 24: /* snmpOutGenErrs */        *uint_ptr = snmpoutgenerrs; 80318ec:	4b1d      	ldr	r3, [pc, #116]	; (8031964 <snmp_get_value+0xf8>) 80318ee:	e008      	b.n	8031902 <snmp_get_value+0x96>        break;      case 25: /* snmpOutGetRequests */        *uint_ptr = snmpoutgetrequests; 80318f0:	4b1d      	ldr	r3, [pc, #116]	; (8031968 <snmp_get_value+0xfc>) 80318f2:	e006      	b.n	8031902 <snmp_get_value+0x96>        break;      case 26: /* snmpOutGetNexts */        *uint_ptr = snmpoutgetnexts; 80318f4:	4b1d      	ldr	r3, [pc, #116]	; (803196c <snmp_get_value+0x100>) 80318f6:	e004      	b.n	8031902 <snmp_get_value+0x96>        break;      case 27: /* snmpOutSetRequests */        *uint_ptr = snmpoutsetrequests; 80318f8:	4b1d      	ldr	r3, [pc, #116]	; (8031970 <snmp_get_value+0x104>) 80318fa:	e002      	b.n	8031902 <snmp_get_value+0x96>        break;      case 28: /* snmpOutGetResponses */        *uint_ptr = snmpoutgetresponses; 80318fc:	4b1d      	ldr	r3, [pc, #116]	; (8031974 <snmp_get_value+0x108>) 80318fe:	e000      	b.n	8031902 <snmp_get_value+0x96>        break;      case 29: /* snmpOutTraps */        *uint_ptr = snmpouttraps; 8031900:	4b1d      	ldr	r3, [pc, #116]	; (8031978 <snmp_get_value+0x10c>) 8031902:	681b      	ldr	r3, [r3, #0] 8031904:	e002      	b.n	803190c <snmp_get_value+0xa0>        break;      case 30: /* snmpEnableAuthenTraps */        *uint_ptr = *snmpenableauthentraps_ptr; 8031906:	4b1d      	ldr	r3, [pc, #116]	; (803197c <snmp_get_value+0x110>) 8031908:	681b      	ldr	r3, [r3, #0] 803190a:	781b      	ldrb	r3, [r3, #0] 803190c:	6013      	str	r3, [r2, #0] 803190e:	4770      	bx	lr 8031910:	2000e220 	.word	0x2000e220 8031914:	2000e2f0 	.word	0x2000e2f0 8031918:	2000e2dc 	.word	0x2000e2dc 803191c:	2000e1f4 	.word	0x2000e1f4 8031920:	2000e1f8 	.word	0x2000e1f8 8031924:	2000e2e0 	.word	0x2000e2e0 8031928:	2000e2a0 	.word	0x2000e2a0 803192c:	2000e320 	.word	0x2000e320 8031930:	2000e2bc 	.word	0x2000e2bc 8031934:	2000e290 	.word	0x2000e290 8031938:	2000e268 	.word	0x2000e268 803193c:	2000e2c0 	.word	0x2000e2c0 8031940:	2000e200 	.word	0x2000e200 8031944:	2000e254 	.word	0x2000e254 8031948:	2000e1d8 	.word	0x2000e1d8 803194c:	2000e2fc 	.word	0x2000e2fc 8031950:	2000e250 	.word	0x2000e250 8031954:	2000e1e8 	.word	0x2000e1e8 8031958:	2000e238 	.word	0x2000e238 803195c:	2000e204 	.word	0x2000e204 8031960:	2000e1e4 	.word	0x2000e1e4 8031964:	2000e324 	.word	0x2000e324 8031968:	2000e25c 	.word	0x2000e25c 803196c:	2000e2f4 	.word	0x2000e2f4 8031970:	2000e300 	.word	0x2000e300 8031974:	2000e1e0 	.word	0x2000e1e0 8031978:	2000e258 	.word	0x2000e258 803197c:	2000176c 	.word	0x2000176c08031980 <snmp_set_value>:{  u8_t id;  LWIP_UNUSED_ARG(len);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031980:	6883      	ldr	r3, [r0, #8]  if (id == 30) 8031982:	781b      	ldrb	r3, [r3, #0] 8031984:	2b1e      	cmp	r3, #30 8031986:	d103      	bne.n	8031990 <snmp_set_value+0x10>  {    /* snmpEnableAuthenTraps */    /* @todo @fixme: which kind of pointer is 'value'? s32_t or u8_t??? */    u8_t *ptr = (u8_t*)value;    *snmpenableauthentraps_ptr = *ptr; 8031988:	4b02      	ldr	r3, [pc, #8]	; (8031994 <snmp_set_value+0x14>) 803198a:	7812      	ldrb	r2, [r2, #0] 803198c:	681b      	ldr	r3, [r3, #0] 803198e:	701a      	strb	r2, [r3, #0] 8031990:	4770      	bx	lr 8031992:	bf00      	nop 8031994:	2000176c 	.word	0x2000176c08031998 <ifentry_get_object_def>:  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031998:	2801      	cmp	r0, #1 * @param ident points to objectname.index * @param od points to object definition. */static voidifentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){ 803199a:	b513      	push	{r0, r1, r4, lr} 803199c:	4614      	mov	r4, r2  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 803199e:	d149      	bne.n	8031a34 <ifentry_get_object_def+0x9c>  {    od->id_inst_len = ident_len; 80319a0:	2302      	movs	r3, #2 80319a2:	7193      	strb	r3, [r2, #6]{  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 80319a4:	1f0a      	subs	r2, r1, #4  if (ident_len == 2)  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 80319a6:	60a2      	str	r2, [r4, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def ifentry.%"U16_F"\n",(u16_t)id));    switch (id) 80319a8:	f811 2c04 	ldrb.w	r2, [r1, #-4] 80319ac:	3a01      	subs	r2, #1 80319ae:	2a15      	cmp	r2, #21 80319b0:	d840      	bhi.n	8031a34 <ifentry_get_object_def+0x9c> 80319b2:	e8df f002 	tbb	[pc, r2] 80319b6:	0e0b      	.short	0x0e0b 80319b8:	19140b0b 	.word	0x19140b0b 80319bc:	302b0b27 	.word	0x302b0b27 80319c0:	30303030 	.word	0x30303030 80319c4:	30303030 	.word	0x30303030 80319c8:	37143030 	.word	0x37143030    {      case 1: /* ifIndex */      case 3: /* ifType */      case 4: /* ifMtu */      case 8: /* ifOperStatus */        od->instance = MIB_OBJECT_TAB; 80319cc:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY; 80319ce:	2201      	movs	r2, #1 80319d0:	e01a      	b.n	8031a08 <ifentry_get_object_def+0x70>        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);        od->v_len = sizeof(s32_t);        break;      case 2: /* ifDescr */        od->instance = MIB_OBJECT_TAB;        od->access = MIB_OBJECT_READ_ONLY; 80319d2:	2201      	movs	r2, #1 80319d4:	7062      	strb	r2, [r4, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 80319d6:	2204      	movs	r2, #4        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);        od->v_len = sizeof(s32_t);        break;      case 2: /* ifDescr */        od->instance = MIB_OBJECT_TAB; 80319d8:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 80319da:	70a2      	strb	r2, [r4, #2] 80319dc:	e028      	b.n	8031a30 <ifentry_get_object_def+0x98>        /** @todo this should be some sort of sizeof(struct netif.name) */        od->v_len = 2;        break;      case 5: /* ifSpeed */      case 21: /* ifOutQLen */        od->instance = MIB_OBJECT_TAB; 80319de:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY; 80319e0:	2301      	movs	r3, #1 80319e2:	7063      	strb	r3, [r4, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE); 80319e4:	2342      	movs	r3, #66	; 0x42 80319e6:	e01a      	b.n	8031a1e <ifentry_get_object_def+0x86>        break;      case 6: /* ifPhysAddress */        {          struct netif *netif;          snmp_ifindextonetif(ident[1], &netif); 80319e8:	6808      	ldr	r0, [r1, #0] 80319ea:	a901      	add	r1, sp, #4 80319ec:	f001 f81c 	bl	8032a28 <snmp_ifindextonetif>          od->instance = MIB_OBJECT_TAB; 80319f0:	2302      	movs	r3, #2 80319f2:	7023      	strb	r3, [r4, #0]          od->access = MIB_OBJECT_READ_ONLY; 80319f4:	2301      	movs	r3, #1 80319f6:	7063      	strb	r3, [r4, #1]          od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 80319f8:	2304      	movs	r3, #4 80319fa:	70a3      	strb	r3, [r4, #2]          od->v_len = netif->hwaddr_len; 80319fc:	9b01      	ldr	r3, [sp, #4] 80319fe:	f893 3026 	ldrb.w	r3, [r3, #38]	; 0x26 8031a02:	e015      	b.n	8031a30 <ifentry_get_object_def+0x98>        }        break;      case 7: /* ifAdminStatus */        od->instance = MIB_OBJECT_TAB; 8031a04:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031a06:	2203      	movs	r2, #3 8031a08:	7062      	strb	r2, [r4, #1] 8031a0a:	e008      	b.n	8031a1e <ifentry_get_object_def+0x86>        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);        od->v_len = sizeof(s32_t);        break;      case 9: /* ifLastChange */        od->instance = MIB_OBJECT_TAB; 8031a0c:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031a0e:	2301      	movs	r3, #1 8031a10:	7063      	strb	r3, [r4, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS); 8031a12:	2343      	movs	r3, #67	; 0x43 8031a14:	e003      	b.n	8031a1e <ifentry_get_object_def+0x86>      case 16: /* ifOutOctets */      case 17: /* ifOutUcastPkts */      case 18: /* ifOutNUcastPkts */      case 19: /* ifOutDiscarts */      case 20: /* ifOutErrors */        od->instance = MIB_OBJECT_TAB; 8031a16:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031a18:	2301      	movs	r3, #1 8031a1a:	7063      	strb	r3, [r4, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031a1c:	2341      	movs	r3, #65	; 0x41 8031a1e:	70a3      	strb	r3, [r4, #2]        od->v_len = sizeof(u32_t); 8031a20:	2304      	movs	r3, #4 8031a22:	e005      	b.n	8031a30 <ifentry_get_object_def+0x98>        break;      case 22: /* ifSpecific */        /** @note returning zeroDotZero (0.0) no media specific MIB support */        od->instance = MIB_OBJECT_TAB; 8031a24:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031a26:	2301      	movs	r3, #1 8031a28:	7063      	strb	r3, [r4, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID); 8031a2a:	2306      	movs	r3, #6 8031a2c:	70a3      	strb	r3, [r4, #2]        od->v_len = ifspecific.len * sizeof(s32_t); 8031a2e:	2308      	movs	r3, #8 8031a30:	80a3      	strh	r3, [r4, #4]        break; 8031a32:	e001      	b.n	8031a38 <ifentry_get_object_def+0xa0>    };  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("ifentry_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031a34:	2300      	movs	r3, #0 8031a36:	7023      	strb	r3, [r4, #0]  }} 8031a38:	bd1c      	pop	{r2, r3, r4, pc} 8031a3a:	0000      	movs	r0, r008031a3c <udpentry_get_value>:  }}static voidudpentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031a3c:	b537      	push	{r0, r1, r2, r4, r5, lr} 8031a3e:	4604      	mov	r4, r0  struct udp_pcb *pcb;  ip_addr_t ip;  u16_t port;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip); 8031a40:	6880      	ldr	r0, [r0, #8] 8031a42:	a901      	add	r1, sp, #4 8031a44:	3004      	adds	r0, #4  }}static voidudpentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031a46:	4615      	mov	r5, r2  struct udp_pcb *pcb;  ip_addr_t ip;  u16_t port;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip); 8031a48:	f001 f80c 	bl	8032a64 <snmp_oidtoip>  LWIP_ASSERT("invalid port", (od->id_inst_ptr[5] >= 0) && (od->id_inst_ptr[5] <= 0xffff));  port = (u16_t)od->id_inst_ptr[5]; 8031a4c:	68a1      	ldr	r1, [r4, #8]  pcb = udp_pcbs; 8031a4e:	4b0c      	ldr	r3, [pc, #48]	; (8031a80 <udpentry_get_value+0x44>)  u16_t port;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip);  LWIP_ASSERT("invalid port", (od->id_inst_ptr[5] >= 0) && (od->id_inst_ptr[5] <= 0xffff));  port = (u16_t)od->id_inst_ptr[5]; 8031a50:	8a8a      	ldrh	r2, [r1, #20]  pcb = udp_pcbs; 8031a52:	681b      	ldr	r3, [r3, #0]  while ((pcb != NULL) &&         !(ip_addr_cmp(&pcb->local_ip, &ip) && 8031a54:	9801      	ldr	r0, [sp, #4]  snmp_oidtoip(&od->id_inst_ptr[1], &ip);  LWIP_ASSERT("invalid port", (od->id_inst_ptr[5] >= 0) && (od->id_inst_ptr[5] <= 0xffff));  port = (u16_t)od->id_inst_ptr[5];  pcb = udp_pcbs;  while ((pcb != NULL) && 8031a56:	e000      	b.n	8031a5a <udpentry_get_value+0x1e>         !(ip_addr_cmp(&pcb->local_ip, &ip) &&           (pcb->local_port == port)))  {    pcb = pcb->next; 8031a58:	68db      	ldr	r3, [r3, #12]  snmp_oidtoip(&od->id_inst_ptr[1], &ip);  LWIP_ASSERT("invalid port", (od->id_inst_ptr[5] >= 0) && (od->id_inst_ptr[5] <= 0xffff));  port = (u16_t)od->id_inst_ptr[5];  pcb = udp_pcbs;  while ((pcb != NULL) && 8031a5a:	b17b      	cbz	r3, 8031a7c <udpentry_get_value+0x40> 8031a5c:	681c      	ldr	r4, [r3, #0] 8031a5e:	4284      	cmp	r4, r0 8031a60:	d1fa      	bne.n	8031a58 <udpentry_get_value+0x1c>         !(ip_addr_cmp(&pcb->local_ip, &ip) &&           (pcb->local_port == port))) 8031a62:	8a5c      	ldrh	r4, [r3, #18]  LWIP_ASSERT("invalid port", (od->id_inst_ptr[5] >= 0) && (od->id_inst_ptr[5] <= 0xffff));  port = (u16_t)od->id_inst_ptr[5];  pcb = udp_pcbs;  while ((pcb != NULL) &&         !(ip_addr_cmp(&pcb->local_ip, &ip) && 8031a64:	4294      	cmp	r4, r2 8031a66:	d1f7      	bne.n	8031a58 <udpentry_get_value+0x1c> 8031a68:	e003      	b.n	8031a72 <udpentry_get_value+0x36>    switch (id)    {      case 1: /* udpLocalAddress */        {          ip_addr_t *dst = (ip_addr_t*)value;          *dst = pcb->local_ip; 8031a6a:	6028      	str	r0, [r5, #0]        }        break; 8031a6c:	e006      	b.n	8031a7c <udpentry_get_value+0x40>      case 2: /* udpLocalPort */        {          s32_t *sint_ptr = (s32_t*)value;          *sint_ptr = pcb->local_port; 8031a6e:	602a      	str	r2, [r5, #0]        }        break; 8031a70:	e004      	b.n	8031a7c <udpentry_get_value+0x40>  if (pcb != NULL)  {    LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));    id = (u8_t)od->id_inst_ptr[0];    switch (id) 8031a72:	780b      	ldrb	r3, [r1, #0] 8031a74:	2b01      	cmp	r3, #1 8031a76:	d0f8      	beq.n	8031a6a <udpentry_get_value+0x2e> 8031a78:	2b02      	cmp	r3, #2 8031a7a:	d0f8      	beq.n	8031a6e <udpentry_get_value+0x32>          *sint_ptr = pcb->local_port;        }        break;    }  }} 8031a7c:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 8031a7e:	bf00      	nop 8031a80:	20011098 	.word	0x2001109808031a84 <ip_addrentry_get_value>:  }}static voidip_addrentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031a84:	b573      	push	{r0, r1, r4, r5, r6, lr} 8031a86:	4606      	mov	r6, r0  u16_t ifidx;  ip_addr_t ip;  struct netif *netif = netif_list;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip); 8031a88:	6880      	ldr	r0, [r0, #8]ip_addrentry_get_value(struct obj_def *od, u16_t len, void *value){  u8_t id;  u16_t ifidx;  ip_addr_t ip;  struct netif *netif = netif_list; 8031a8a:	4b18      	ldr	r3, [pc, #96]	; (8031aec <ip_addrentry_get_value+0x68>)  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip); 8031a8c:	a901      	add	r1, sp, #4 8031a8e:	3004      	adds	r0, #4ip_addrentry_get_value(struct obj_def *od, u16_t len, void *value){  u8_t id;  u16_t ifidx;  ip_addr_t ip;  struct netif *netif = netif_list; 8031a90:	681c      	ldr	r4, [r3, #0]  }}static voidip_addrentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031a92:	4615      	mov	r5, r2  u16_t ifidx;  ip_addr_t ip;  struct netif *netif = netif_list;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip); 8031a94:	f000 ffe6 	bl	8032a64 <snmp_oidtoip>  ifidx = 0;  while ((netif != NULL) && !ip_addr_cmp(&ip, &netif->ip_addr)) 8031a98:	9901      	ldr	r1, [sp, #4]  ip_addr_t ip;  struct netif *netif = netif_list;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip);  ifidx = 0; 8031a9a:	2300      	movs	r3, #0  while ((netif != NULL) && !ip_addr_cmp(&ip, &netif->ip_addr)) 8031a9c:	e002      	b.n	8031aa4 <ip_addrentry_get_value+0x20>  {    netif = netif->next;    ifidx++; 8031a9e:	3301      	adds	r3, #1  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip);  ifidx = 0;  while ((netif != NULL) && !ip_addr_cmp(&ip, &netif->ip_addr))  {    netif = netif->next; 8031aa0:	6824      	ldr	r4, [r4, #0]    ifidx++; 8031aa2:	b29b      	uxth	r3, r3  struct netif *netif = netif_list;  LWIP_UNUSED_ARG(len);  snmp_oidtoip(&od->id_inst_ptr[1], &ip);  ifidx = 0;  while ((netif != NULL) && !ip_addr_cmp(&ip, &netif->ip_addr)) 8031aa4:	b304      	cbz	r4, 8031ae8 <ip_addrentry_get_value+0x64> 8031aa6:	6862      	ldr	r2, [r4, #4] 8031aa8:	4291      	cmp	r1, r2 8031aaa:	d1f8      	bne.n	8031a9e <ip_addrentry_get_value+0x1a> 8031aac:	e00a      	b.n	8031ac4 <ip_addrentry_get_value+0x40>    switch (id)    {      case 1: /* ipAdEntAddr */        {          ip_addr_t *dst = (ip_addr_t*)value;          *dst = netif->ip_addr; 8031aae:	6863      	ldr	r3, [r4, #4] 8031ab0:	e006      	b.n	8031ac0 <ip_addrentry_get_value+0x3c>        }        break;      case 2: /* ipAdEntIfIndex */        {          s32_t *sint_ptr = (s32_t*)value;          *sint_ptr = ifidx + 1; 8031ab2:	3301      	adds	r3, #1 8031ab4:	e004      	b.n	8031ac0 <ip_addrentry_get_value+0x3c>        }        break;      case 3: /* ipAdEntNetMask */        {          ip_addr_t *dst = (ip_addr_t*)value;          *dst = netif->netmask; 8031ab6:	68a3      	ldr	r3, [r4, #8] 8031ab8:	e002      	b.n	8031ac0 <ip_addrentry_get_value+0x3c>        {          s32_t *sint_ptr = (s32_t*)value;          /* lwIP oddity, there's no broadcast            address in the netif we can rely on */          *sint_ptr = IPADDR_BROADCAST & 1; 8031aba:	2301      	movs	r3, #1 8031abc:	e000      	b.n	8031ac0 <ip_addrentry_get_value+0x3c>          *sint_ptr = (IP_HLEN + ((IP_REASS_MAX_PBUFS/2) *            (PBUF_POOL_BUFSIZE - PBUF_LINK_HLEN - IP_HLEN)));#else          /** @todo returning MTU would be a bad thing and             returning a wild guess like '576' isn't good either */          *sint_ptr = 0; 8031abe:	2300      	movs	r3, #0 8031ac0:	602b      	str	r3, [r5, #0]#endif        }        break; 8031ac2:	e011      	b.n	8031ae8 <ip_addrentry_get_value+0x64>  }  if (netif != NULL)  {    LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));    id = (u8_t)od->id_inst_ptr[0]; 8031ac4:	68b2      	ldr	r2, [r6, #8]    switch (id) 8031ac6:	7812      	ldrb	r2, [r2, #0] 8031ac8:	3a01      	subs	r2, #1 8031aca:	2a04      	cmp	r2, #4 8031acc:	d80c      	bhi.n	8031ae8 <ip_addrentry_get_value+0x64> 8031ace:	a101      	add	r1, pc, #4	; (adr r1, 8031ad4 <ip_addrentry_get_value+0x50>) 8031ad0:	f851 f022 	ldr.w	pc, [r1, r2, lsl #2] 8031ad4:	08031aaf 	.word	0x08031aaf 8031ad8:	08031ab3 	.word	0x08031ab3 8031adc:	08031ab7 	.word	0x08031ab7 8031ae0:	08031abb 	.word	0x08031abb 8031ae4:	08031abf 	.word	0x08031abf#endif        }        break;    }  }} 8031ae8:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 8031aea:	bf00      	nop 8031aec:	20011070 	.word	0x2001107008031af0 <ip_ntomentry_get_value>:  }}static voidip_ntomentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031af0:	b530      	push	{r4, r5, lr}  struct netif *netif;  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031af2:	6883      	ldr	r3, [r0, #8]  }}static voidip_ntomentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031af4:	b085      	sub	sp, #20 8031af6:	4605      	mov	r5, r0  struct netif *netif;  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031af8:	a903      	add	r1, sp, #12 8031afa:	6858      	ldr	r0, [r3, #4]  }}static voidip_ntomentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031afc:	4614      	mov	r4, r2  struct netif *netif;  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031afe:	f000 ff93 	bl	8032a28 <snmp_ifindextonetif>  snmp_oidtoip(&od->id_inst_ptr[2], &ip); 8031b02:	68a8      	ldr	r0, [r5, #8] 8031b04:	a902      	add	r1, sp, #8 8031b06:	3008      	adds	r0, #8 8031b08:	f000 ffac 	bl	8032a64 <snmp_oidtoip>#if LWIP_ARP /** @todo implement a netif_find_addr */  if (etharp_find_addr(netif, &ip, ðaddr_ret, &ipaddr_ret) > -1) 8031b0c:	9803      	ldr	r0, [sp, #12] 8031b0e:	a902      	add	r1, sp, #8 8031b10:	466a      	mov	r2, sp 8031b12:	ab01      	add	r3, sp, #4 8031b14:	f002 ffec 	bl	8034af0 <etharp_find_addr> 8031b18:	2800      	cmp	r0, #0 8031b1a:	db15      	blt.n	8031b48 <ip_ntomentry_get_value+0x58>  {    LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));    id = (u8_t)od->id_inst_ptr[0]; 8031b1c:	68ab      	ldr	r3, [r5, #8]    switch (id) 8031b1e:	781a      	ldrb	r2, [r3, #0] 8031b20:	3a01      	subs	r2, #1 8031b22:	2a03      	cmp	r2, #3 8031b24:	d810      	bhi.n	8031b48 <ip_ntomentry_get_value+0x58> 8031b26:	e8df f002 	tbb	[pc, r2] 8031b2a:	0402      	.short	0x0402 8031b2c:	0d0a      	.short	0x0d0a    {      case 1: /* ipNetToMediaIfIndex */        {          s32_t *sint_ptr = (s32_t*)value;          *sint_ptr = od->id_inst_ptr[1]; 8031b2e:	685b      	ldr	r3, [r3, #4] 8031b30:	e009      	b.n	8031b46 <ip_ntomentry_get_value+0x56>        break;      case 2: /* ipNetToMediaPhysAddress */        {          struct eth_addr *dst = (struct eth_addr*)value;          *dst = *ethaddr_ret; 8031b32:	9b00      	ldr	r3, [sp, #0] 8031b34:	681a      	ldr	r2, [r3, #0] 8031b36:	6022      	str	r2, [r4, #0] 8031b38:	889b      	ldrh	r3, [r3, #4] 8031b3a:	80a3      	strh	r3, [r4, #4]        }        break; 8031b3c:	e004      	b.n	8031b48 <ip_ntomentry_get_value+0x58>      case 3: /* ipNetToMediaNetAddress */        {          ip_addr_t *dst = (ip_addr_t*)value;          *dst = *ipaddr_ret; 8031b3e:	9b01      	ldr	r3, [sp, #4] 8031b40:	681b      	ldr	r3, [r3, #0] 8031b42:	e000      	b.n	8031b46 <ip_ntomentry_get_value+0x56>        break;      case 4: /* ipNetToMediaType */        {          s32_t *sint_ptr = (s32_t*)value;          /* dynamic (?) */          *sint_ptr = 3; 8031b44:	2303      	movs	r3, #3 8031b46:	6023      	str	r3, [r4, #0]        }        break;    }  }#endif /* LWIP_ARP */} 8031b48:	b005      	add	sp, #20 8031b4a:	bd30      	pop	{r4, r5, pc}08031b4c <atentry_get_value>:  }}static voidatentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031b4c:	b530      	push	{r4, r5, lr}  struct netif *netif;  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031b4e:	6883      	ldr	r3, [r0, #8]  }}static voidatentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031b50:	b085      	sub	sp, #20 8031b52:	4605      	mov	r5, r0  struct netif *netif;  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031b54:	a903      	add	r1, sp, #12 8031b56:	6858      	ldr	r0, [r3, #4]  }}static voidatentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031b58:	4614      	mov	r4, r2  struct netif *netif;  LWIP_UNUSED_ARG(len);  LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031b5a:	f000 ff65 	bl	8032a28 <snmp_ifindextonetif>  snmp_oidtoip(&od->id_inst_ptr[2], &ip); 8031b5e:	68a8      	ldr	r0, [r5, #8] 8031b60:	a902      	add	r1, sp, #8 8031b62:	3008      	adds	r0, #8 8031b64:	f000 ff7e 	bl	8032a64 <snmp_oidtoip>#if LWIP_ARP /** @todo implement a netif_find_addr */  if (etharp_find_addr(netif, &ip, ðaddr_ret, &ipaddr_ret) > -1) 8031b68:	9803      	ldr	r0, [sp, #12] 8031b6a:	a902      	add	r1, sp, #8 8031b6c:	466a      	mov	r2, sp 8031b6e:	ab01      	add	r3, sp, #4 8031b70:	f002 ffbe 	bl	8034af0 <etharp_find_addr> 8031b74:	2800      	cmp	r0, #0 8031b76:	db12      	blt.n	8031b9e <atentry_get_value+0x52>  {    LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));    id = (u8_t)od->id_inst_ptr[0]; 8031b78:	68aa      	ldr	r2, [r5, #8]    switch (id) 8031b7a:	7813      	ldrb	r3, [r2, #0] 8031b7c:	2b02      	cmp	r3, #2 8031b7e:	d005      	beq.n	8031b8c <atentry_get_value+0x40> 8031b80:	2b03      	cmp	r3, #3 8031b82:	d009      	beq.n	8031b98 <atentry_get_value+0x4c> 8031b84:	2b01      	cmp	r3, #1 8031b86:	d10a      	bne.n	8031b9e <atentry_get_value+0x52>    {      case 1: /* atIfIndex */        {          s32_t *sint_ptr = (s32_t*)value;          *sint_ptr = od->id_inst_ptr[1]; 8031b88:	6853      	ldr	r3, [r2, #4] 8031b8a:	e007      	b.n	8031b9c <atentry_get_value+0x50>        break;      case 2: /* atPhysAddress */        {          struct eth_addr *dst = (struct eth_addr*)value;          *dst = *ethaddr_ret; 8031b8c:	9b00      	ldr	r3, [sp, #0] 8031b8e:	681a      	ldr	r2, [r3, #0] 8031b90:	6022      	str	r2, [r4, #0] 8031b92:	889b      	ldrh	r3, [r3, #4] 8031b94:	80a3      	strh	r3, [r4, #4]        }        break; 8031b96:	e002      	b.n	8031b9e <atentry_get_value+0x52>      case 3: /* atNetAddress */        {          ip_addr_t *dst = (ip_addr_t*)value;          *dst = *ipaddr_ret; 8031b98:	9b01      	ldr	r3, [sp, #4] 8031b9a:	681b      	ldr	r3, [r3, #0] 8031b9c:	6023      	str	r3, [r4, #0]        }        break;    }  }#endif /* LWIP_ARP */} 8031b9e:	b005      	add	sp, #20 8031ba0:	bd30      	pop	{r4, r5, pc} 8031ba2:	0000      	movs	r0, r008031ba4 <system_set_test>:  u8_t id, set_ok;  LWIP_UNUSED_ARG(value);  set_ok = 0;  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031ba4:	6883      	ldr	r3, [r0, #8]  switch (id) 8031ba6:	781b      	ldrb	r3, [r3, #0] 8031ba8:	2b05      	cmp	r3, #5 8031baa:	d007      	beq.n	8031bbc <system_set_test+0x18> 8031bac:	2b06      	cmp	r3, #6 8031bae:	d00f      	beq.n	8031bd0 <system_set_test+0x2c> 8031bb0:	2b04      	cmp	r3, #4 8031bb2:	d111      	bne.n	8031bd8 <system_set_test+0x34>  {    case 4: /* sysContact */      if ((syscontact_ptr != syscontact_default) && 8031bb4:	4b09      	ldr	r3, [pc, #36]	; (8031bdc <system_set_test+0x38>) 8031bb6:	681a      	ldr	r2, [r3, #0] 8031bb8:	4b09      	ldr	r3, [pc, #36]	; (8031be0 <system_set_test+0x3c>) 8031bba:	e002      	b.n	8031bc2 <system_set_test+0x1e>      {        set_ok = 1;      }      break;    case 5: /* sysName */      if ((sysname_ptr != sysname_default) && 8031bbc:	4b09      	ldr	r3, [pc, #36]	; (8031be4 <system_set_test+0x40>) 8031bbe:	681a      	ldr	r2, [r3, #0] 8031bc0:	4b09      	ldr	r3, [pc, #36]	; (8031be8 <system_set_test+0x44>) 8031bc2:	429a      	cmp	r2, r3 8031bc4:	d008      	beq.n	8031bd8 <system_set_test+0x34>system_set_test(struct obj_def *od, u16_t len, void *value){  u8_t id, set_ok;  LWIP_UNUSED_ARG(value);  set_ok = 0; 8031bc6:	29ff      	cmp	r1, #255	; 0xff 8031bc8:	bf8c      	ite	hi 8031bca:	2000      	movhi	r0, #0 8031bcc:	2001      	movls	r0, #1 8031bce:	4770      	bx	lr      {        set_ok = 1;      }      break;    case 6: /* sysLocation */      if ((syslocation_ptr != syslocation_default) && 8031bd0:	4b06      	ldr	r3, [pc, #24]	; (8031bec <system_set_test+0x48>) 8031bd2:	681a      	ldr	r2, [r3, #0] 8031bd4:	4b06      	ldr	r3, [pc, #24]	; (8031bf0 <system_set_test+0x4c>) 8031bd6:	e7f4      	b.n	8031bc2 <system_set_test+0x1e>system_set_test(struct obj_def *od, u16_t len, void *value){  u8_t id, set_ok;  LWIP_UNUSED_ARG(value);  set_ok = 0; 8031bd8:	2000      	movs	r0, #0        set_ok = 1;      }      break;  };  return set_ok;} 8031bda:	4770      	bx	lr 8031bdc:	200017e8 	.word	0x200017e8 8031be0:	080417b4 	.word	0x080417b4 8031be4:	20001774 	.word	0x20001774 8031be8:	080414cc 	.word	0x080414cc 8031bec:	20001900 	.word	0x20001900 8031bf0:	080414fc 	.word	0x080414fc08031bf4 <atentry_get_object_def>:{  /* return to object name, adding index depth (5) */  ident_len += 5;  ident -= 5;  if (ident_len == 6) 8031bf4:	2801      	cmp	r0, #1 8031bf6:	d120      	bne.n	8031c3a <atentry_get_object_def+0x46>  {    od->id_inst_len = ident_len; 8031bf8:	2006      	movs	r0, #6static voidatentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (5) */  ident_len += 5;  ident -= 5; 8031bfa:	f1a1 0314 	sub.w	r3, r1, #20  if (ident_len == 6)  {    od->id_inst_len = ident_len; 8031bfe:	7190      	strb	r0, [r2, #6]    od->id_inst_ptr = ident; 8031c00:	6093      	str	r3, [r2, #8]    switch (ident[0]) 8031c02:	f851 3c14 	ldr.w	r3, [r1, #-20] 8031c06:	2b02      	cmp	r3, #2 8031c08:	d008      	beq.n	8031c1c <atentry_get_object_def+0x28> 8031c0a:	2b03      	cmp	r3, #3 8031c0c:	d00d      	beq.n	8031c2a <atentry_get_object_def+0x36> 8031c0e:	2b01      	cmp	r3, #1 8031c10:	d113      	bne.n	8031c3a <atentry_get_object_def+0x46>    {      case 1: /* atIfIndex */        od->instance = MIB_OBJECT_TAB; 8031c12:	2302      	movs	r3, #2        od->access = MIB_OBJECT_READ_WRITE; 8031c14:	2103      	movs	r1, #3    od->id_inst_ptr = ident;    switch (ident[0])    {      case 1: /* atIfIndex */        od->instance = MIB_OBJECT_TAB; 8031c16:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031c18:	7051      	strb	r1, [r2, #1] 8031c1a:	e00a      	b.n	8031c32 <atentry_get_object_def+0x3e>        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);        od->v_len = sizeof(s32_t);        break;      case 2: /* atPhysAddress */        od->instance = MIB_OBJECT_TAB; 8031c1c:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031c1e:	2303      	movs	r3, #3 8031c20:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 8031c22:	2304      	movs	r3, #4 8031c24:	7093      	strb	r3, [r2, #2]        od->v_len = 6; /** @todo try to use netif::hwaddr_len */ 8031c26:	8090      	strh	r0, [r2, #4]        break; 8031c28:	4770      	bx	lr      case 3: /* atNetAddress */        od->instance = MIB_OBJECT_TAB; 8031c2a:	2102      	movs	r1, #2        od->access = MIB_OBJECT_READ_WRITE; 8031c2c:	7053      	strb	r3, [r2, #1]        od->access = MIB_OBJECT_READ_WRITE;        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR);        od->v_len = 6; /** @todo try to use netif::hwaddr_len */        break;      case 3: /* atNetAddress */        od->instance = MIB_OBJECT_TAB; 8031c2e:	7011      	strb	r1, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE;        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); 8031c30:	2340      	movs	r3, #64	; 0x40 8031c32:	7093      	strb	r3, [r2, #2]        od->v_len = 4; 8031c34:	2304      	movs	r3, #4 8031c36:	8093      	strh	r3, [r2, #4]        break; 8031c38:	4770      	bx	lr    }  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("atentry_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031c3a:	2300      	movs	r3, #0 8031c3c:	7013      	strb	r3, [r2, #0] 8031c3e:	4770      	bx	lr08031c40 <ip_get_object_def>:  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031c40:	2801      	cmp	r0, #1#endif /* LWIP_ARP */}static voidip_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){ 8031c42:	b510      	push	{r4, lr}  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031c44:	d121      	bne.n	8031c8a <ip_get_object_def+0x4a>  {    od->id_inst_len = ident_len; 8031c46:	2402      	movs	r4, #2{  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 8031c48:	1f0b      	subs	r3, r1, #4  if (ident_len == 2)  {    od->id_inst_len = ident_len; 8031c4a:	7194      	strb	r4, [r2, #6]    od->id_inst_ptr = ident; 8031c4c:	6093      	str	r3, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def ip.%"U16_F".0\n",(u16_t)id));    switch (id) 8031c4e:	f811 3c04 	ldrb.w	r3, [r1, #-4] 8031c52:	2b17      	cmp	r3, #23 8031c54:	d819      	bhi.n	8031c8a <ip_get_object_def+0x4a> 8031c56:	490e      	ldr	r1, [pc, #56]	; (8031c90 <ip_get_object_def+0x50>) 8031c58:	4099      	lsls	r1, r3 8031c5a:	d40b      	bmi.n	8031c74 <ip_get_object_def+0x34> 8031c5c:	f44f 2180 	mov.w	r1, #262144	; 0x40000 8031c60:	4099      	lsls	r1, r3 8031c62:	d40c      	bmi.n	8031c7e <ip_get_object_def+0x3e> 8031c64:	f04f 41c0 	mov.w	r1, #1610612736	; 0x60000000 8031c68:	4099      	lsls	r1, r3 8031c6a:	d50e      	bpl.n	8031c8a <ip_get_object_def+0x4a>    {      case 1: /* ipForwarding */      case 2: /* ipDefaultTTL */        od->instance = MIB_OBJECT_SCALAR;        od->access = MIB_OBJECT_READ_WRITE; 8031c6c:	2303      	movs	r3, #3    LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def ip.%"U16_F".0\n",(u16_t)id));    switch (id)    {      case 1: /* ipForwarding */      case 2: /* ipDefaultTTL */        od->instance = MIB_OBJECT_SCALAR; 8031c6e:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031c70:	7053      	strb	r3, [r2, #1] 8031c72:	e006      	b.n	8031c82 <ip_get_object_def+0x42>      case 18: /* ipFragFails */      case 19: /* ipFragCreates */      case 23: /* ipRoutingDiscards */        od->instance = MIB_OBJECT_SCALAR;        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031c74:	2341      	movs	r3, #65	; 0x41      case 16: /* ipReasmFails */      case 17: /* ipFragOKs */      case 18: /* ipFragFails */      case 19: /* ipFragCreates */      case 23: /* ipRoutingDiscards */        od->instance = MIB_OBJECT_SCALAR; 8031c76:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031c78:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031c7a:	7093      	strb	r3, [r2, #2] 8031c7c:	e002      	b.n	8031c84 <ip_get_object_def+0x44>        od->v_len = sizeof(u32_t);        break;      case 13: /* ipReasmTimeout */        od->instance = MIB_OBJECT_SCALAR; 8031c7e:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031c80:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 8031c82:	7094      	strb	r4, [r2, #2]        od->v_len = sizeof(s32_t); 8031c84:	2304      	movs	r3, #4 8031c86:	8093      	strh	r3, [r2, #4]        break; 8031c88:	bd10      	pop	{r4, pc}    };  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031c8a:	2300      	movs	r3, #0 8031c8c:	7013      	strb	r3, [r2, #0] 8031c8e:	bd10      	pop	{r4, pc} 8031c90:	1ffbf100 	.word	0x1ffbf10008031c94 <ip_addrentry_get_object_def>:{  /* return to object name, adding index depth (4) */  ident_len += 4;  ident -= 4;  if (ident_len == 5) 8031c94:	2801      	cmp	r0, #1 8031c96:	d11c      	bne.n	8031cd2 <ip_addrentry_get_object_def+0x3e>  {    u8_t id;    od->id_inst_len = ident_len; 8031c98:	2305      	movs	r3, #5 8031c9a:	7193      	strb	r3, [r2, #6]static voidip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (4) */  ident_len += 4;  ident -= 4; 8031c9c:	f1a1 0310 	sub.w	r3, r1, #16  if (ident_len == 5)  {    u8_t id;    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8031ca0:	6093      	str	r3, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    switch (id) 8031ca2:	f811 3c10 	ldrb.w	r3, [r1, #-16] 8031ca6:	2b05      	cmp	r3, #5 8031ca8:	d813      	bhi.n	8031cd2 <ip_addrentry_get_object_def+0x3e> 8031caa:	f04f 5130 	mov.w	r1, #738197504	; 0x2c000000 8031cae:	4099      	lsls	r1, r3 8031cb0:	d408      	bmi.n	8031cc4 <ip_addrentry_get_object_def+0x30> 8031cb2:	f04f 41a0 	mov.w	r1, #1342177280	; 0x50000000 8031cb6:	4099      	lsls	r1, r3 8031cb8:	d50b      	bpl.n	8031cd2 <ip_addrentry_get_object_def+0x3e>    {      case 1: /* ipAdEntAddr */      case 3: /* ipAdEntNetMask */        od->instance = MIB_OBJECT_TAB; 8031cba:	2302      	movs	r3, #2 8031cbc:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031cbe:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); 8031cc0:	2340      	movs	r3, #64	; 0x40 8031cc2:	e002      	b.n	8031cca <ip_addrentry_get_object_def+0x36>        od->v_len = 4;        break;      case 2: /* ipAdEntIfIndex */      case 4: /* ipAdEntBcastAddr */      case 5: /* ipAdEntReasmMaxSize */        od->instance = MIB_OBJECT_TAB; 8031cc4:	2302      	movs	r3, #2 8031cc6:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031cc8:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 8031cca:	7093      	strb	r3, [r2, #2]        od->v_len = sizeof(s32_t); 8031ccc:	2304      	movs	r3, #4 8031cce:	8093      	strh	r3, [r2, #4]        break; 8031cd0:	4770      	bx	lr    }  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_addrentry_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031cd2:	2300      	movs	r3, #0 8031cd4:	7013      	strb	r3, [r2, #0] 8031cd6:	4770      	bx	lr08031cd8 <ip_ntomentry_get_object_def>:{  /* return to object name, adding index depth (5) */  ident_len += 5;  ident -= 5;  if (ident_len == 6) 8031cd8:	2801      	cmp	r0, #1 8031cda:	d123      	bne.n	8031d24 <ip_ntomentry_get_object_def+0x4c>  {    u8_t id;    od->id_inst_len = ident_len; 8031cdc:	2306      	movs	r3, #6 8031cde:	7193      	strb	r3, [r2, #6]static voidip_ntomentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (5) */  ident_len += 5;  ident -= 5; 8031ce0:	f1a1 0314 	sub.w	r3, r1, #20  if (ident_len == 6)  {    u8_t id;    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8031ce4:	6093      	str	r3, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    switch (id) 8031ce6:	f811 3c14 	ldrb.w	r3, [r1, #-20] 8031cea:	3b01      	subs	r3, #1 8031cec:	2b03      	cmp	r3, #3 8031cee:	d819      	bhi.n	8031d24 <ip_ntomentry_get_object_def+0x4c> 8031cf0:	e8df f003 	tbb	[pc, r3] 8031cf4:	020f0702 	.word	0x020f0702    {      case 1: /* ipNetToMediaIfIndex */      case 4: /* ipNetToMediaType */        od->instance = MIB_OBJECT_TAB; 8031cf8:	2302      	movs	r3, #2        od->access = MIB_OBJECT_READ_WRITE; 8031cfa:	2103      	movs	r1, #3    id = (u8_t)ident[0];    switch (id)    {      case 1: /* ipNetToMediaIfIndex */      case 4: /* ipNetToMediaType */        od->instance = MIB_OBJECT_TAB; 8031cfc:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031cfe:	7051      	strb	r1, [r2, #1] 8031d00:	e00c      	b.n	8031d1c <ip_ntomentry_get_object_def+0x44>        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG);        od->v_len = sizeof(s32_t);        break;      case 2: /* ipNetToMediaPhysAddress */        od->instance = MIB_OBJECT_TAB; 8031d02:	2302      	movs	r3, #2 8031d04:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031d06:	2303      	movs	r3, #3 8031d08:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); 8031d0a:	2304      	movs	r3, #4 8031d0c:	7093      	strb	r3, [r2, #2]        od->v_len = 6; /** @todo try to use netif::hwaddr_len */ 8031d0e:	2306      	movs	r3, #6 8031d10:	e006      	b.n	8031d20 <ip_ntomentry_get_object_def+0x48>        break;      case 3: /* ipNetToMediaNetAddress */        od->instance = MIB_OBJECT_TAB; 8031d12:	2302      	movs	r3, #2 8031d14:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031d16:	2303      	movs	r3, #3 8031d18:	7053      	strb	r3, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); 8031d1a:	2340      	movs	r3, #64	; 0x40 8031d1c:	7093      	strb	r3, [r2, #2]        od->v_len = 4; 8031d1e:	2304      	movs	r3, #4 8031d20:	8093      	strh	r3, [r2, #4]        break; 8031d22:	4770      	bx	lr    }  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_ntomentry_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031d24:	2300      	movs	r3, #0 8031d26:	7013      	strb	r3, [r2, #0] 8031d28:	4770      	bx	lr 8031d2a:	0000      	movs	r0, r008031d2c <tcp_get_object_def>:  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031d2c:	2801      	cmp	r0, #1#if LWIP_TCP/** @todo tcp grp */static voidtcp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){ 8031d2e:	b510      	push	{r4, lr}  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031d30:	d121      	bne.n	8031d76 <tcp_get_object_def+0x4a>  {    od->id_inst_len = ident_len; 8031d32:	2402      	movs	r4, #2{  u8_t id;  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 8031d34:	1f0b      	subs	r3, r1, #4  if (ident_len == 2)  {    od->id_inst_len = ident_len; 8031d36:	7194      	strb	r4, [r2, #6]    od->id_inst_ptr = ident; 8031d38:	6093      	str	r3, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def tcp.%"U16_F".0\n",(u16_t)id));    switch (id) 8031d3a:	f811 3c04 	ldrb.w	r3, [r1, #-4] 8031d3e:	2b0f      	cmp	r3, #15 8031d40:	d819      	bhi.n	8031d76 <tcp_get_object_def+0x4a> 8031d42:	490e      	ldr	r1, [pc, #56]	; (8031d7c <tcp_get_object_def+0x50>) 8031d44:	4099      	lsls	r1, r3 8031d46:	d40b      	bmi.n	8031d60 <tcp_get_object_def+0x34> 8031d48:	f44f 0180 	mov.w	r1, #4194304	; 0x400000 8031d4c:	4099      	lsls	r1, r3 8031d4e:	d40b      	bmi.n	8031d68 <tcp_get_object_def+0x3c> 8031d50:	f04f 41f0 	mov.w	r1, #2013265920	; 0x78000000 8031d54:	4099      	lsls	r1, r3 8031d56:	d50e      	bpl.n	8031d76 <tcp_get_object_def+0x4a>    {      case 1: /* tcpRtoAlgorithm */      case 2: /* tcpRtoMin */      case 3: /* tcpRtoMax */      case 4: /* tcpMaxConn */        od->instance = MIB_OBJECT_SCALAR; 8031d58:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031d5a:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 8031d5c:	7094      	strb	r4, [r2, #2] 8031d5e:	e007      	b.n	8031d70 <tcp_get_object_def+0x44>      case 10: /* tcpInSegs */      case 11: /* tcpOutSegs */      case 12: /* tcpRetransSegs */      case 14: /* tcpInErrs */      case 15: /* tcpOutRsts */        od->instance = MIB_OBJECT_SCALAR; 8031d60:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031d62:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031d64:	2341      	movs	r3, #65	; 0x41 8031d66:	e002      	b.n	8031d6e <tcp_get_object_def+0x42>        od->v_len = sizeof(u32_t);        break;      case 9: /* tcpCurrEstab */        od->instance = MIB_OBJECT_TAB; 8031d68:	7014      	strb	r4, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031d6a:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE); 8031d6c:	2342      	movs	r3, #66	; 0x42 8031d6e:	7093      	strb	r3, [r2, #2]        od->v_len = sizeof(u32_t); 8031d70:	2304      	movs	r3, #4 8031d72:	8093      	strh	r3, [r2, #4]        break; 8031d74:	bd10      	pop	{r4, pc}    };  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("tcp_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031d76:	2300      	movs	r3, #0 8031d78:	7013      	strb	r3, [r2, #0] 8031d7a:	bd10      	pop	{r4, pc} 8031d7c:	07bb0000 	.word	0x07bb000008031d80 <udpentry_get_object_def>:{  /* return to object name, adding index depth (5) */  ident_len += 5;  ident -= 5;  if (ident_len == 6) 8031d80:	2801      	cmp	r0, #1 8031d82:	d116      	bne.n	8031db2 <udpentry_get_object_def+0x32>  {    od->id_inst_len = ident_len; 8031d84:	2306      	movs	r3, #6 8031d86:	7193      	strb	r3, [r2, #6]static voidudpentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (5) */  ident_len += 5;  ident -= 5; 8031d88:	f1a1 0314 	sub.w	r3, r1, #20  if (ident_len == 6)  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8031d8c:	6093      	str	r3, [r2, #8]    switch (ident[0]) 8031d8e:	f851 3c14 	ldr.w	r3, [r1, #-20] 8031d92:	2b01      	cmp	r3, #1 8031d94:	d002      	beq.n	8031d9c <udpentry_get_object_def+0x1c> 8031d96:	2b02      	cmp	r3, #2 8031d98:	d10b      	bne.n	8031db2 <udpentry_get_object_def+0x32> 8031d9a:	e004      	b.n	8031da6 <udpentry_get_object_def+0x26>    {      case 1: /* udpLocalAddress */        od->instance = MIB_OBJECT_TAB; 8031d9c:	2102      	movs	r1, #2        od->access = MIB_OBJECT_READ_ONLY; 8031d9e:	7053      	strb	r3, [r2, #1]    od->id_inst_ptr = ident;    switch (ident[0])    {      case 1: /* udpLocalAddress */        od->instance = MIB_OBJECT_TAB; 8031da0:	7011      	strb	r1, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); 8031da2:	2340      	movs	r3, #64	; 0x40 8031da4:	e001      	b.n	8031daa <udpentry_get_object_def+0x2a>        od->v_len = 4;        break;      case 2: /* udpLocalPort */        od->instance = MIB_OBJECT_TAB; 8031da6:	7013      	strb	r3, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031da8:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 8031daa:	7093      	strb	r3, [r2, #2]        od->v_len = sizeof(s32_t); 8031dac:	2304      	movs	r3, #4 8031dae:	8093      	strh	r3, [r2, #4]        break; 8031db0:	4770      	bx	lr    }  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("udpentry_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031db2:	2300      	movs	r3, #0 8031db4:	7013      	strb	r3, [r2, #0] 8031db6:	4770      	bx	lr08031db8 <snmp_get_object_def>:snmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031db8:	2801      	cmp	r0, #1  }}static voidsnmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){ 8031dba:	b510      	push	{r4, lr}  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8031dbc:	d119      	bne.n	8031df2 <snmp_get_object_def+0x3a>  {    u8_t id;    od->id_inst_len = ident_len; 8031dbe:	2302      	movs	r3, #2 8031dc0:	7193      	strb	r3, [r2, #6]static voidsnmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od){  /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 8031dc2:	1f0c      	subs	r4, r1, #4    od->id_inst_len = ident_len;    od->id_inst_ptr = ident;    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    switch (id) 8031dc4:	f811 1c04 	ldrb.w	r1, [r1, #-4]  if (ident_len == 2)  {    u8_t id;    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8031dc8:	6094      	str	r4, [r2, #8]    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    switch (id) 8031dca:	291e      	cmp	r1, #30 8031dcc:	d811      	bhi.n	8031df2 <snmp_get_object_def+0x3a> 8031dce:	4c0a      	ldr	r4, [pc, #40]	; (8031df8 <snmp_get_object_def+0x40>) 8031dd0:	408c      	lsls	r4, r1 8031dd2:	d403      	bmi.n	8031ddc <snmp_get_object_def+0x24> 8031dd4:	fa13 f101 	lsls.w	r1, r3, r1 8031dd8:	d404      	bmi.n	8031de4 <snmp_get_object_def+0x2c> 8031dda:	e00a      	b.n	8031df2 <snmp_get_object_def+0x3a>      case 25: /* snmpOutGetRequests */      case 26: /* snmpOutGetNexts */      case 27: /* snmpOutSetRequests */      case 28: /* snmpOutGetResponses */      case 29: /* snmpOutTraps */        od->instance = MIB_OBJECT_SCALAR; 8031ddc:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_ONLY; 8031dde:	7050      	strb	r0, [r2, #1]        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); 8031de0:	2341      	movs	r3, #65	; 0x41 8031de2:	e002      	b.n	8031dea <snmp_get_object_def+0x32>        od->v_len = sizeof(u32_t);        break;      case 30: /* snmpEnableAuthenTraps */        od->instance = MIB_OBJECT_SCALAR;        od->access = MIB_OBJECT_READ_WRITE; 8031de4:	2103      	movs	r1, #3        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER);        od->v_len = sizeof(u32_t);        break;      case 30: /* snmpEnableAuthenTraps */        od->instance = MIB_OBJECT_SCALAR; 8031de6:	7010      	strb	r0, [r2, #0]        od->access = MIB_OBJECT_READ_WRITE; 8031de8:	7051      	strb	r1, [r2, #1]        od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); 8031dea:	7093      	strb	r3, [r2, #2]        od->v_len = sizeof(s32_t); 8031dec:	2304      	movs	r3, #4 8031dee:	8093      	strh	r3, [r2, #4]        break; 8031df0:	bd10      	pop	{r4, pc}    };  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8031df2:	2300      	movs	r3, #0 8031df4:	7013      	strb	r3, [r2, #0] 8031df6:	bd10      	pop	{r4, pc} 8031df8:	7efffefc 	.word	0x7efffefc08031dfc <snmp_set_test>:  u8_t id, set_ok;  LWIP_UNUSED_ARG(len);  set_ok = 0;  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031dfc:	6883      	ldr	r3, [r0, #8]  if (id == 30) 8031dfe:	781b      	ldrb	r3, [r3, #0] 8031e00:	2b1e      	cmp	r3, #30 8031e02:	d10f      	bne.n	8031e24 <snmp_set_test+0x28>  {    /* snmpEnableAuthenTraps */    s32_t *sint_ptr = (s32_t*)value;    if (snmpenableauthentraps_ptr != &snmpenableauthentraps_default) 8031e04:	4b08      	ldr	r3, [pc, #32]	; (8031e28 <snmp_set_test+0x2c>) 8031e06:	6810      	ldr	r0, [r2, #0] 8031e08:	6819      	ldr	r1, [r3, #0] 8031e0a:	4b08      	ldr	r3, [pc, #32]	; (8031e2c <snmp_set_test+0x30>) 8031e0c:	4299      	cmp	r1, r3 8031e0e:	d005      	beq.n	8031e1c <snmp_set_test+0x20>    {      /* we should have writable non-volatile mem here */      if ((*sint_ptr == 1) || (*sint_ptr == 2)) 8031e10:	3801      	subs	r0, #1snmp_set_test(struct obj_def *od, u16_t len, void *value){  u8_t id, set_ok;  LWIP_UNUSED_ARG(len);  set_ok = 0; 8031e12:	2801      	cmp	r0, #1 8031e14:	bf8c      	ite	hi 8031e16:	2000      	movhi	r0, #0 8031e18:	2001      	movls	r0, #1 8031e1a:	4770      	bx	lr 8031e1c:	1e83      	subs	r3, r0, #2 8031e1e:	4258      	negs	r0, r3 8031e20:	4158      	adcs	r0, r3 8031e22:	4770      	bx	lr 8031e24:	2000      	movs	r0, #0        set_ok = 1;      }    }  }  return set_ok;} 8031e26:	4770      	bx	lr 8031e28:	2000176c 	.word	0x2000176c 8031e2c:	080415b0 	.word	0x080415b008031e30 <ocstrncpy>: * @param dst points to destination * @param src points to source * @param n number of octets to copy. */void ocstrncpy(u8_t *dst, u8_t *src, u16_t n){ 8031e30:	b510      	push	{r4, lr}  u16_t i = n;  while (i > 0) { 8031e32:	2300      	movs	r3, #0 8031e34:	e002      	b.n	8031e3c <ocstrncpy+0xc>    i--;    *dst++ = *src++; 8031e36:	5ccc      	ldrb	r4, [r1, r3] 8031e38:	54c4      	strb	r4, [r0, r3] 8031e3a:	3301      	adds	r3, #1 * @param n number of octets to copy. */void ocstrncpy(u8_t *dst, u8_t *src, u16_t n){  u16_t i = n;  while (i > 0) { 8031e3c:	b29c      	uxth	r4, r3 8031e3e:	42a2      	cmp	r2, r4 8031e40:	d1f9      	bne.n	8031e36 <ocstrncpy+0x6>    i--;    *dst++ = *src++;  }} 8031e42:	bd10      	pop	{r4, pc}08031e44 <system_set_value>:{  u8_t id;  LWIP_ASSERT("invalid len", len <= 0xff);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031e44:	6883      	ldr	r3, [r0, #8]  switch (id) 8031e46:	781b      	ldrb	r3, [r3, #0] 8031e48:	2b05      	cmp	r3, #5  return set_ok;}static voidsystem_set_value(struct obj_def *od, u16_t len, void *value){ 8031e4a:	b510      	push	{r4, lr} 8031e4c:	460c      	mov	r4, r1 8031e4e:	4611      	mov	r1, r2  u8_t id;  LWIP_ASSERT("invalid len", len <= 0xff);  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0];  switch (id) 8031e50:	d00a      	beq.n	8031e68 <system_set_value+0x24> 8031e52:	2b06      	cmp	r3, #6 8031e54:	d00f      	beq.n	8031e76 <system_set_value+0x32> 8031e56:	2b04      	cmp	r3, #4 8031e58:	d115      	bne.n	8031e86 <system_set_value+0x42>  {    case 4: /* sysContact */      ocstrncpy(syscontact_ptr, (u8_t*)value, len); 8031e5a:	4b0b      	ldr	r3, [pc, #44]	; (8031e88 <system_set_value+0x44>) 8031e5c:	4622      	mov	r2, r4 8031e5e:	6818      	ldr	r0, [r3, #0] 8031e60:	f7ff ffe6 	bl	8031e30 <ocstrncpy>      *syscontact_len_ptr = (u8_t)len; 8031e64:	4b09      	ldr	r3, [pc, #36]	; (8031e8c <system_set_value+0x48>) 8031e66:	e00c      	b.n	8031e82 <system_set_value+0x3e>      break;    case 5: /* sysName */      ocstrncpy(sysname_ptr, (u8_t*)value, len); 8031e68:	4b09      	ldr	r3, [pc, #36]	; (8031e90 <system_set_value+0x4c>) 8031e6a:	4622      	mov	r2, r4 8031e6c:	6818      	ldr	r0, [r3, #0] 8031e6e:	f7ff ffdf 	bl	8031e30 <ocstrncpy>      *sysname_len_ptr = (u8_t)len; 8031e72:	4b08      	ldr	r3, [pc, #32]	; (8031e94 <system_set_value+0x50>) 8031e74:	e005      	b.n	8031e82 <system_set_value+0x3e>      break;    case 6: /* sysLocation */      ocstrncpy(syslocation_ptr, (u8_t*)value, len); 8031e76:	4b08      	ldr	r3, [pc, #32]	; (8031e98 <system_set_value+0x54>) 8031e78:	4622      	mov	r2, r4 8031e7a:	6818      	ldr	r0, [r3, #0] 8031e7c:	f7ff ffd8 	bl	8031e30 <ocstrncpy>      *syslocation_len_ptr = (u8_t)len; 8031e80:	4b06      	ldr	r3, [pc, #24]	; (8031e9c <system_set_value+0x58>) 8031e82:	681b      	ldr	r3, [r3, #0] 8031e84:	701c      	strb	r4, [r3, #0] 8031e86:	bd10      	pop	{r4, pc} 8031e88:	200017e8 	.word	0x200017e8 8031e8c:	2000166c 	.word	0x2000166c 8031e90:	20001774 	.word	0x20001774 8031e94:	20001668 	.word	0x20001668 8031e98:	20001900 	.word	0x20001900 8031e9c:	20001854 	.word	0x2000185408031ea0 <objectidncpy>: * * @param dst points to destination * @param src points to source * @param n number of sub identifiers to copy. */void objectidncpy(s32_t *dst, s32_t *src, u8_t n) 8031ea0:	3904      	subs	r1, #4{  u8_t i = n;  while(i > 0) { 8031ea2:	e005      	b.n	8031eb0 <objectidncpy+0x10>    i--;    *dst++ = *src++; 8031ea4:	f851 3f04 	ldr.w	r3, [r1, #4]! */void objectidncpy(s32_t *dst, s32_t *src, u8_t n){  u8_t i = n;  while(i > 0) {    i--; 8031ea8:	3a01      	subs	r2, #1    *dst++ = *src++; 8031eaa:	f840 3b04 	str.w	r3, [r0], #4 */void objectidncpy(s32_t *dst, s32_t *src, u8_t n){  u8_t i = n;  while(i > 0) {    i--; 8031eae:	b2d2      	uxtb	r2, r2 * @param n number of sub identifiers to copy. */void objectidncpy(s32_t *dst, s32_t *src, u8_t n){  u8_t i = n;  while(i > 0) { 8031eb0:	2a00      	cmp	r2, #0 8031eb2:	d1f7      	bne.n	8031ea4 <objectidncpy+0x4>    i--;    *dst++ = *src++;  }} 8031eb4:	4770      	bx	lr 8031eb6:	0000      	movs	r0, r008031eb8 <ifentry_get_value>: * @param len return value space (in bytes) * @param value points to (varbind) space to copy value into. */static voidifentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031eb8:	b573      	push	{r0, r1, r4, r5, r6, lr}  struct netif *netif;  u8_t id;  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031eba:	6883      	ldr	r3, [r0, #8] * @param len return value space (in bytes) * @param value points to (varbind) space to copy value into. */static voidifentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031ebc:	4606      	mov	r6, r0 8031ebe:	460d      	mov	r5, r1  struct netif *netif;  u8_t id;  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031ec0:	6858      	ldr	r0, [r3, #4] 8031ec2:	a901      	add	r1, sp, #4 * @param len return value space (in bytes) * @param value points to (varbind) space to copy value into. */static voidifentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031ec4:	4614      	mov	r4, r2  struct netif *netif;  u8_t id;  snmp_ifindextonetif(od->id_inst_ptr[1], &netif); 8031ec6:	f000 fdaf 	bl	8032a28 <snmp_ifindextonetif>  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 8031eca:	68b3      	ldr	r3, [r6, #8]  switch (id) 8031ecc:	781a      	ldrb	r2, [r3, #0] 8031ece:	3a01      	subs	r2, #1 8031ed0:	2a15      	cmp	r2, #21 8031ed2:	d85c      	bhi.n	8031f8e <ifentry_get_value+0xd6> 8031ed4:	e8df f002 	tbb	[pc, r2] 8031ed8:	15110d0b 	.word	0x15110d0b 8031edc:	2e221b18 	.word	0x2e221b18 8031ee0:	403d3a37 	.word	0x403d3a37 8031ee4:	46525243 	.word	0x46525243 8031ee8:	524f4c49 	.word	0x524f4c49 8031eec:	5552      	.short	0x5552  {    case 1: /* ifIndex */      {        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = od->id_inst_ptr[1]; 8031eee:	685b      	ldr	r3, [r3, #4] 8031ef0:	e045      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 2: /* ifDescr */      ocstrncpy((u8_t*)value, (u8_t*)netif->name, len); 8031ef2:	9901      	ldr	r1, [sp, #4] 8031ef4:	4620      	mov	r0, r4 8031ef6:	312e      	adds	r1, #46	; 0x2e 8031ef8:	e00c      	b.n	8031f14 <ifentry_get_value+0x5c>      break;    case 3: /* ifType */      {        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = netif->link_type; 8031efa:	9b01      	ldr	r3, [sp, #4] 8031efc:	f893 3031 	ldrb.w	r3, [r3, #49]	; 0x31 8031f00:	e03d      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 4: /* ifMtu */      {        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = netif->mtu; 8031f02:	9b01      	ldr	r3, [sp, #4] 8031f04:	8c9b      	ldrh	r3, [r3, #36]	; 0x24 8031f06:	e03a      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 5: /* ifSpeed */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->link_speed; 8031f08:	9b01      	ldr	r3, [sp, #4] 8031f0a:	6b5b      	ldr	r3, [r3, #52]	; 0x34 8031f0c:	e037      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 6: /* ifPhysAddress */      ocstrncpy((u8_t*)value, netif->hwaddr, len); 8031f0e:	9901      	ldr	r1, [sp, #4] 8031f10:	4620      	mov	r0, r4 8031f12:	3127      	adds	r1, #39	; 0x27 8031f14:	462a      	mov	r2, r5 8031f16:	f7ff ff8b 	bl	8031e30 <ocstrncpy>      break; 8031f1a:	e038      	b.n	8031f8e <ifentry_get_value+0xd6>    case 7: /* ifAdminStatus */      {        s32_t *sint_ptr = (s32_t*)value;        if (netif_is_up(netif)) 8031f1c:	9b01      	ldr	r3, [sp, #4] 8031f1e:	f893 302d 	ldrb.w	r3, [r3, #45]	; 0x2d 8031f22:	07d9      	lsls	r1, r3, #31 8031f24:	d50d      	bpl.n	8031f42 <ifentry_get_value+0x8a>        {          if (netif_is_link_up(netif)) 8031f26:	f003 0310 	and.w	r3, r3, #16 8031f2a:	b2db      	uxtb	r3, r3 8031f2c:	b103      	cbz	r3, 8031f30 <ifentry_get_value+0x78> 8031f2e:	e006      	b.n	8031f3e <ifentry_get_value+0x86>          {            *sint_ptr = 1; /* up */          }          else          {            *sint_ptr = 7; /* lowerLayerDown */ 8031f30:	2307      	movs	r3, #7 8031f32:	e024      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 8: /* ifOperStatus */      {        s32_t *sint_ptr = (s32_t*)value;        if (netif_is_up(netif)) 8031f34:	9b01      	ldr	r3, [sp, #4] 8031f36:	f893 302d 	ldrb.w	r3, [r3, #45]	; 0x2d 8031f3a:	07da      	lsls	r2, r3, #31 8031f3c:	d501      	bpl.n	8031f42 <ifentry_get_value+0x8a>        {          *sint_ptr = 1; 8031f3e:	2301      	movs	r3, #1 8031f40:	e01d      	b.n	8031f7e <ifentry_get_value+0xc6>        }        else        {          *sint_ptr = 2; 8031f42:	2302      	movs	r3, #2 8031f44:	e01b      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 9: /* ifLastChange */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ts; 8031f46:	9b01      	ldr	r3, [sp, #4] 8031f48:	6b9b      	ldr	r3, [r3, #56]	; 0x38 8031f4a:	e018      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 10: /* ifInOctets */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifinoctets; 8031f4c:	9b01      	ldr	r3, [sp, #4] 8031f4e:	6bdb      	ldr	r3, [r3, #60]	; 0x3c 8031f50:	e015      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 11: /* ifInUcastPkts */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifinucastpkts; 8031f52:	9b01      	ldr	r3, [sp, #4] 8031f54:	6c1b      	ldr	r3, [r3, #64]	; 0x40 8031f56:	e012      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 12: /* ifInNUcastPkts */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifinnucastpkts; 8031f58:	9b01      	ldr	r3, [sp, #4] 8031f5a:	6c5b      	ldr	r3, [r3, #68]	; 0x44 8031f5c:	e00f      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 13: /* ifInDiscarts */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifindiscards; 8031f5e:	9b01      	ldr	r3, [sp, #4] 8031f60:	6c9b      	ldr	r3, [r3, #72]	; 0x48 8031f62:	e00c      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 16: /* ifOutOctets */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifoutoctets; 8031f64:	9b01      	ldr	r3, [sp, #4] 8031f66:	6cdb      	ldr	r3, [r3, #76]	; 0x4c 8031f68:	e009      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 17: /* ifOutUcastPkts */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifoutucastpkts; 8031f6a:	9b01      	ldr	r3, [sp, #4] 8031f6c:	6d1b      	ldr	r3, [r3, #80]	; 0x50 8031f6e:	e006      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 18: /* ifOutNUcastPkts */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifoutnucastpkts; 8031f70:	9b01      	ldr	r3, [sp, #4] 8031f72:	6d5b      	ldr	r3, [r3, #84]	; 0x54 8031f74:	e003      	b.n	8031f7e <ifentry_get_value+0xc6>      }      break;    case 19: /* ifOutDiscarts */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = netif->ifoutdiscards; 8031f76:	9b01      	ldr	r3, [sp, #4] 8031f78:	6d9b      	ldr	r3, [r3, #88]	; 0x58 8031f7a:	e000      	b.n	8031f7e <ifentry_get_value+0xc6>      break;    case 21: /* ifOutQLen */      /** @todo figure out if this must be 0 (no queue) or 1? */      {        u32_t *uint_ptr = (u32_t*)value;        *uint_ptr = 0; 8031f7c:	2300      	movs	r3, #0 8031f7e:	6023      	str	r3, [r4, #0]      }      break; 8031f80:	e005      	b.n	8031f8e <ifentry_get_value+0xd6>    case 22: /* ifSpecific */      objectidncpy((s32_t*)value, (s32_t*)ifspecific.id, (u8_t)(len / sizeof(s32_t))); 8031f82:	4620      	mov	r0, r4 8031f84:	4902      	ldr	r1, [pc, #8]	; (8031f90 <ifentry_get_value+0xd8>) 8031f86:	f3c5 0287 	ubfx	r2, r5, #2, #8 8031f8a:	f7ff ff89 	bl	8031ea0 <objectidncpy>      break;  };} 8031f8e:	bd7c      	pop	{r2, r3, r4, r5, r6, pc} 8031f90:	08041638 	.word	0x0804163808031f94 <ip_rteentry_get_value>:  }}static voidip_rteentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031f94:	b5f7      	push	{r0, r1, r2, r4, r5, r6, r7, lr}  struct netif *netif;  ip_addr_t dest;  s32_t *ident;  u8_t id;  ident = od->id_inst_ptr; 8031f96:	6885      	ldr	r5, [r0, #8]  }}static voidip_rteentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031f98:	460f      	mov	r7, r1  ip_addr_t dest;  s32_t *ident;  u8_t id;  ident = od->id_inst_ptr;  snmp_oidtoip(&ident[1], &dest); 8031f9a:	1d28      	adds	r0, r5, #4 8031f9c:	a901      	add	r1, sp, #4  }}static voidip_rteentry_get_value(struct obj_def *od, u16_t len, void *value){ 8031f9e:	4614      	mov	r4, r2  ip_addr_t dest;  s32_t *ident;  u8_t id;  ident = od->id_inst_ptr;  snmp_oidtoip(&ident[1], &dest); 8031fa0:	f000 fd60 	bl	8032a64 <snmp_oidtoip>  if (ip_addr_isany(&dest)) 8031fa4:	9b01      	ldr	r3, [sp, #4] 8031fa6:	b91b      	cbnz	r3, 8031fb0 <ip_rteentry_get_value+0x1c>  {    /* ip_route() uses default netif for default route */    netif = netif_default; 8031fa8:	4a23      	ldr	r2, [pc, #140]	; (8032038 <ip_rteentry_get_value+0xa4>) 8031faa:	6810      	ldr	r0, [r2, #0]            !ip_addr_netcmp(&dest, &(netif->ip_addr), &(netif->netmask)) )    {      netif = netif->next;    }  }  if (netif != NULL) 8031fac:	b960      	cbnz	r0, 8031fc8 <ip_rteentry_get_value+0x34> 8031fae:	e041      	b.n	8032034 <ip_rteentry_get_value+0xa0>    netif = netif_default;  }  else  {    /* not using ip_route(), need exact match! */    netif = netif_list; 8031fb0:	4a22      	ldr	r2, [pc, #136]	; (803203c <ip_rteentry_get_value+0xa8>) 8031fb2:	6810      	ldr	r0, [r2, #0]    while ((netif != NULL) && 8031fb4:	e000      	b.n	8031fb8 <ip_rteentry_get_value+0x24>            !ip_addr_netcmp(&dest, &(netif->ip_addr), &(netif->netmask)) )    {      netif = netif->next; 8031fb6:	6800      	ldr	r0, [r0, #0]  }  else  {    /* not using ip_route(), need exact match! */    netif = netif_list;    while ((netif != NULL) && 8031fb8:	2800      	cmp	r0, #0 8031fba:	d03b      	beq.n	8032034 <ip_rteentry_get_value+0xa0>            !ip_addr_netcmp(&dest, &(netif->ip_addr), &(netif->netmask)) ) 8031fbc:	6846      	ldr	r6, [r0, #4] 8031fbe:	ea83 0206 	eor.w	r2, r3, r6 8031fc2:	6886      	ldr	r6, [r0, #8]  }  else  {    /* not using ip_route(), need exact match! */    netif = netif_list;    while ((netif != NULL) && 8031fc4:	4232      	tst	r2, r6 8031fc6:	d1f6      	bne.n	8031fb6 <ip_rteentry_get_value+0x22>  }  if (netif != NULL)  {    LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff));    id = (u8_t)ident[0];    switch (id) 8031fc8:	782d      	ldrb	r5, [r5, #0] 8031fca:	3d01      	subs	r5, #1 8031fcc:	2d0c      	cmp	r5, #12 8031fce:	d831      	bhi.n	8032034 <ip_rteentry_get_value+0xa0> 8031fd0:	e8df f005 	tbb	[pc, r5] 8031fd4:	14110d07 	.word	0x14110d07 8031fd8:	1c171414 	.word	0x1c171414 8031fdc:	14252321 	.word	0x14252321 8031fe0:	2a          	.byte	0x2a 8031fe1:	00          	.byte	0x00    {      case 1: /* ipRouteDest */        {          ip_addr_t *dst = (ip_addr_t*)value;          if (ip_addr_isany(&dest)) 8031fe2:	b903      	cbnz	r3, 8031fe6 <ip_rteentry_get_value+0x52> 8031fe4:	e01e      	b.n	8032024 <ip_rteentry_get_value+0x90>            ip_addr_set_zero(dst);          }          else          {            /* netifs have netaddress dest */            ip_addr_get_network(dst, &netif->ip_addr, &netif->netmask); 8031fe6:	6882      	ldr	r2, [r0, #8] 8031fe8:	6843      	ldr	r3, [r0, #4] 8031fea:	4013      	ands	r3, r2 8031fec:	e01a      	b.n	8032024 <ip_rteentry_get_value+0x90>        break;      case 2: /* ipRouteIfIndex */        {          s32_t *sint_ptr = (s32_t*)value;          snmp_netiftoifindex(netif, sint_ptr); 8031fee:	4621      	mov	r1, r4 8031ff0:	f000 fd28 	bl	8032a44 <snmp_netiftoifindex>        }        break; 8031ff4:	e01e      	b.n	8032034 <ip_rteentry_get_value+0xa0>      case 3: /* ipRouteMetric1 */        {          s32_t *sint_ptr = (s32_t*)value;          if (ip_addr_isany(&dest)) 8031ff6:	b983      	cbnz	r3, 803201a <ip_rteentry_get_value+0x86>          {            /* default rte has metric 1 */            *sint_ptr = 1; 8031ff8:	2301      	movs	r3, #1 8031ffa:	e013      	b.n	8032024 <ip_rteentry_get_value+0x90>      case 6: /* ipRouteMetric4 */      case 12: /* ipRouteMetric5 */        {          s32_t *sint_ptr = (s32_t*)value;          /* not used */          *sint_ptr = -1; 8031ffc:	f04f 33ff 	mov.w	r3, #4294967295 8032000:	e010      	b.n	8032024 <ip_rteentry_get_value+0x90>        break;      case 7: /* ipRouteNextHop */        {          ip_addr_t *dst = (ip_addr_t*)value;          if (ip_addr_isany(&dest)) 8032002:	b90b      	cbnz	r3, 8032008 <ip_rteentry_get_value+0x74>          {            /* default rte: gateway */            *dst = netif->gw; 8032004:	68c3      	ldr	r3, [r0, #12] 8032006:	e00d      	b.n	8032024 <ip_rteentry_get_value+0x90>          }          else          {            /* other rtes: netif ip_addr  */            *dst = netif->ip_addr; 8032008:	6843      	ldr	r3, [r0, #4] 803200a:	e00b      	b.n	8032024 <ip_rteentry_get_value+0x90>        break;      case 8: /* ipRouteType */        {          s32_t *sint_ptr = (s32_t*)value;          if (ip_addr_isany(&dest)) 803200c:	b90b      	cbnz	r3, 8032012 <ip_rteentry_get_value+0x7e>          {            /* default rte is indirect */            *sint_ptr = 4; 803200e:	2304      	movs	r3, #4 8032010:	e008      	b.n	8032024 <ip_rteentry_get_value+0x90>          }          else          {            /* other rtes are direct */            *sint_ptr = 3; 8032012:	2303      	movs	r3, #3 8032014:	e006      	b.n	8032024 <ip_rteentry_get_value+0x90>        break;      case 9: /* ipRouteProto */        {          s32_t *sint_ptr = (s32_t*)value;          /* locally defined routes */          *sint_ptr = 2; 8032016:	2302      	movs	r3, #2 8032018:	e004      	b.n	8032024 <ip_rteentry_get_value+0x90>      case 10: /* ipRouteAge */        {          s32_t *sint_ptr = (s32_t*)value;          /** @todo (sysuptime - timestamp last change) / 100              @see snmp_insert_iprteidx_tree() */          *sint_ptr = 0; 803201a:	2300      	movs	r3, #0 803201c:	e002      	b.n	8032024 <ip_rteentry_get_value+0x90>        break;      case 11: /* ipRouteMask */        {          ip_addr_t *dst = (ip_addr_t*)value;          if (ip_addr_isany(&dest)) 803201e:	b903      	cbnz	r3, 8032022 <ip_rteentry_get_value+0x8e> 8032020:	e000      	b.n	8032024 <ip_rteentry_get_value+0x90>            ip_addr_set_zero(dst);          }          else          {            /* other rtes use netmask */            *dst = netif->netmask; 8032022:	6883      	ldr	r3, [r0, #8] 8032024:	6023      	str	r3, [r4, #0] 8032026:	e005      	b.n	8032034 <ip_rteentry_get_value+0xa0>          }        }        break;      case 13: /* ipRouteInfo */        objectidncpy((s32_t*)value, (s32_t*)iprouteinfo.id, (u8_t)(len / sizeof(s32_t))); 8032028:	4620      	mov	r0, r4 803202a:	4905      	ldr	r1, [pc, #20]	; (8032040 <ip_rteentry_get_value+0xac>) 803202c:	f3c7 0287 	ubfx	r2, r7, #2, #8 8032030:	f7ff ff36 	bl	8031ea0 <objectidncpy>        break;    }  }} 8032034:	bdfe      	pop	{r1, r2, r3, r4, r5, r6, r7, pc} 8032036:	bf00      	nop 8032038:	20011074 	.word	0x20011074 803203c:	20011070 	.word	0x20011070 8032040:	0804144c 	.word	0x0804144c08032044 <snmp_set_sysdesr>: * @param str if non-NULL then copy str pointer * @param len points to string length, excluding zero terminator */void snmp_set_sysdesr(u8_t *str, u8_t *len){  if (str != NULL) 8032044:	b118      	cbz	r0, 803204e <snmp_set_sysdesr+0xa>  {    sysdescr_ptr = str; 8032046:	4b02      	ldr	r3, [pc, #8]	; (8032050 <snmp_set_sysdesr+0xc>) 8032048:	6018      	str	r0, [r3, #0]    sysdescr_len_ptr = len; 803204a:	4b02      	ldr	r3, [pc, #8]	; (8032054 <snmp_set_sysdesr+0x10>) 803204c:	6019      	str	r1, [r3, #0] 803204e:	4770      	bx	lr 8032050:	20001794 	.word	0x20001794 8032054:	20001810 	.word	0x2000181008032058 <snmp_set_sysobjid>: * Initializes sysObjectID value. * * @param oid points to stuct snmp_obj_id to copy */void snmp_set_sysobjid(struct snmp_obj_id *oid){ 8032058:	4601      	mov	r1, r0 803205a:	b508      	push	{r3, lr}  sysobjid = *oid; 803205c:	2284      	movs	r2, #132	; 0x84 803205e:	4802      	ldr	r0, [pc, #8]	; (8032068 <snmp_set_sysobjid+0x10>) 8032060:	f7ef fc74 	bl	802194c <memcpy> 8032064:	bd08      	pop	{r3, pc} 8032066:	bf00      	nop 8032068:	200016c0 	.word	0x200016c00803206c <snmp_inc_sysuptime>: * Must be called at regular 10 msec interval from a timer interrupt * or signal handler depending on your runtime environment. */void snmp_inc_sysuptime(void){  sysuptime++; 803206c:	4b02      	ldr	r3, [pc, #8]	; (8032078 <snmp_inc_sysuptime+0xc>) 803206e:	681a      	ldr	r2, [r3, #0] 8032070:	3201      	adds	r2, #1 8032072:	601a      	str	r2, [r3, #0] 8032074:	4770      	bx	lr 8032076:	bf00      	nop 8032078:	2000e2b0 	.word	0x2000e2b00803207c <snmp_get_sysuptime>:{  sysuptime+=value;}void snmp_get_sysuptime(u32_t *value){ 803207c:	b510      	push	{r4, lr} 803207e:	4604      	mov	r4, r0  SNMP_GET_SYSUPTIME(sysuptime); 8032080:	f003 f985 	bl	803538e <sys_now> 8032084:	230a      	movs	r3, #10 8032086:	4a03      	ldr	r2, [pc, #12]	; (8032094 <snmp_get_sysuptime+0x18>) 8032088:	fbb0 f0f3 	udiv	r0, r0, r3 803208c:	6010      	str	r0, [r2, #0]  *value = sysuptime; 803208e:	6020      	str	r0, [r4, #0] 8032090:	bd10      	pop	{r4, pc} 8032092:	bf00      	nop 8032094:	2000e2b0 	.word	0x2000e2b008032098 <system_get_value>: * @param len return value space (in bytes) * @param value points to (varbind) space to copy value into. */static voidsystem_get_value(struct obj_def *od, u16_t len, void *value){ 8032098:	4613      	mov	r3, r2  u8_t id;  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0]; 803209a:	6882      	ldr	r2, [r0, #8]  switch (id) 803209c:	7812      	ldrb	r2, [r2, #0] 803209e:	3a01      	subs	r2, #1 * @param len return value space (in bytes) * @param value points to (varbind) space to copy value into. */static voidsystem_get_value(struct obj_def *od, u16_t len, void *value){ 80320a0:	b510      	push	{r4, lr} 80320a2:	460c      	mov	r4, r1  u8_t id;  LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff));  id = (u8_t)od->id_inst_ptr[0];  switch (id) 80320a4:	2a06      	cmp	r2, #6 80320a6:	d825      	bhi.n	80320f4 <system_get_value+0x5c> 80320a8:	e8df f002 	tbb	[pc, r2] 80320ac:	140f0704 	.word	0x140f0704 80320b0:	1a17      	.short	0x1a17 80320b2:	22          	.byte	0x22 80320b3:	00          	.byte	0x00  {    case 1: /* sysDescr */      ocstrncpy((u8_t*)value, sysdescr_ptr, len); 80320b4:	4618      	mov	r0, r3 80320b6:	4b10      	ldr	r3, [pc, #64]	; (80320f8 <system_get_value+0x60>) 80320b8:	e014      	b.n	80320e4 <system_get_value+0x4c>      break;    case 2: /* sysObjectID */      objectidncpy((s32_t*)value, (s32_t*)sysobjid.id, (u8_t)(len / sizeof(s32_t))); 80320ba:	4910      	ldr	r1, [pc, #64]	; (80320fc <system_get_value+0x64>) 80320bc:	4618      	mov	r0, r3 80320be:	f3c4 0287 	ubfx	r2, r4, #2, #8        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = sysservices;      }      break;  };} 80320c2:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  {    case 1: /* sysDescr */      ocstrncpy((u8_t*)value, sysdescr_ptr, len);      break;    case 2: /* sysObjectID */      objectidncpy((s32_t*)value, (s32_t*)sysobjid.id, (u8_t)(len / sizeof(s32_t))); 80320c6:	f7ff beeb 	b.w	8031ea0 <objectidncpy>      break;    case 3: /* sysUpTime */      {        snmp_get_sysuptime((u32_t*)value); 80320ca:	4618      	mov	r0, r3        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = sysservices;      }      break;  };} 80320cc:	e8bd 4010 	ldmia.w	sp!, {r4, lr}    case 2: /* sysObjectID */      objectidncpy((s32_t*)value, (s32_t*)sysobjid.id, (u8_t)(len / sizeof(s32_t)));      break;    case 3: /* sysUpTime */      {        snmp_get_sysuptime((u32_t*)value); 80320d0:	f7ff bfd4 	b.w	803207c <snmp_get_sysuptime>      }      break;    case 4: /* sysContact */      ocstrncpy((u8_t*)value, syscontact_ptr, len); 80320d4:	4618      	mov	r0, r3 80320d6:	4b0a      	ldr	r3, [pc, #40]	; (8032100 <system_get_value+0x68>) 80320d8:	e004      	b.n	80320e4 <system_get_value+0x4c>      break;    case 5: /* sysName */      ocstrncpy((u8_t*)value, sysname_ptr, len); 80320da:	4618      	mov	r0, r3 80320dc:	4b09      	ldr	r3, [pc, #36]	; (8032104 <system_get_value+0x6c>) 80320de:	e001      	b.n	80320e4 <system_get_value+0x4c>      break;    case 6: /* sysLocation */      ocstrncpy((u8_t*)value, syslocation_ptr, len); 80320e0:	4618      	mov	r0, r3 80320e2:	4b09      	ldr	r3, [pc, #36]	; (8032108 <system_get_value+0x70>) 80320e4:	6819      	ldr	r1, [r3, #0] 80320e6:	4622      	mov	r2, r4        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = sysservices;      }      break;  };} 80320e8:	e8bd 4010 	ldmia.w	sp!, {r4, lr}      break;    case 5: /* sysName */      ocstrncpy((u8_t*)value, sysname_ptr, len);      break;    case 6: /* sysLocation */      ocstrncpy((u8_t*)value, syslocation_ptr, len); 80320ec:	f7ff bea0 	b.w	8031e30 <ocstrncpy>      break;    case 7: /* sysServices */      {        s32_t *sint_ptr = (s32_t*)value;        *sint_ptr = sysservices; 80320f0:	2248      	movs	r2, #72	; 0x48 80320f2:	601a      	str	r2, [r3, #0] 80320f4:	bd10      	pop	{r4, pc} 80320f6:	bf00      	nop 80320f8:	20001794 	.word	0x20001794 80320fc:	200016c4 	.word	0x200016c4 8032100:	200017e8 	.word	0x200017e8 8032104:	20001774 	.word	0x20001774 8032108:	20001900 	.word	0x200019000803210c <snmp_set_syscontact>: * @param ocstr if non-NULL then copy str pointer * @param ocstrlen points to string length, excluding zero terminator */void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen){  if (ocstr != NULL) 803210c:	b118      	cbz	r0, 8032116 <snmp_set_syscontact+0xa>  {    syscontact_ptr = ocstr; 803210e:	4b02      	ldr	r3, [pc, #8]	; (8032118 <snmp_set_syscontact+0xc>) 8032110:	6018      	str	r0, [r3, #0]    syscontact_len_ptr = ocstrlen; 8032112:	4b02      	ldr	r3, [pc, #8]	; (803211c <snmp_set_syscontact+0x10>) 8032114:	6019      	str	r1, [r3, #0] 8032116:	4770      	bx	lr 8032118:	200017e8 	.word	0x200017e8 803211c:	2000166c 	.word	0x2000166c08032120 <snmp_set_sysname>: * @param ocstr if non-NULL then copy str pointer * @param ocstrlen points to string length, excluding zero terminator */void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen){  if (ocstr != NULL) 8032120:	b118      	cbz	r0, 803212a <snmp_set_sysname+0xa>  {    sysname_ptr = ocstr; 8032122:	4b02      	ldr	r3, [pc, #8]	; (803212c <snmp_set_sysname+0xc>) 8032124:	6018      	str	r0, [r3, #0]    sysname_len_ptr = ocstrlen; 8032126:	4b02      	ldr	r3, [pc, #8]	; (8032130 <snmp_set_sysname+0x10>) 8032128:	6019      	str	r1, [r3, #0] 803212a:	4770      	bx	lr 803212c:	20001774 	.word	0x20001774 8032130:	20001668 	.word	0x2000166808032134 <snmp_set_syslocation>: * @param ocstr if non-NULL then copy str pointer * @param ocstrlen points to string length, excluding zero terminator */void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen){  if (ocstr != NULL) 8032134:	b118      	cbz	r0, 803213e <snmp_set_syslocation+0xa>  {    syslocation_ptr = ocstr; 8032136:	4b02      	ldr	r3, [pc, #8]	; (8032140 <snmp_set_syslocation+0xc>) 8032138:	6018      	str	r0, [r3, #0]    syslocation_len_ptr = ocstrlen; 803213a:	4b02      	ldr	r3, [pc, #8]	; (8032144 <snmp_set_syslocation+0x10>) 803213c:	6019      	str	r1, [r3, #0] 803213e:	4770      	bx	lr 8032140:	20001900 	.word	0x20001900 8032144:	20001854 	.word	0x2000185408032148 <snmp_inc_iflist>:{  (ni->ifoutdiscards)++;}void snmp_inc_iflist(void){ 8032148:	b507      	push	{r0, r1, r2, lr}  struct mib_list_node *if_node = NULL;  snmp_mib_node_insert(&iflist_root, iflist_root.count + 1, &if_node); 803214a:	4806      	ldr	r0, [pc, #24]	; (8032164 <snmp_inc_iflist+0x1c>)  (ni->ifoutdiscards)++;}void snmp_inc_iflist(void){  struct mib_list_node *if_node = NULL; 803214c:	aa02      	add	r2, sp, #8  snmp_mib_node_insert(&iflist_root, iflist_root.count + 1, &if_node); 803214e:	8b81      	ldrh	r1, [r0, #28]  (ni->ifoutdiscards)++;}void snmp_inc_iflist(void){  struct mib_list_node *if_node = NULL; 8032150:	2300      	movs	r3, #0 8032152:	f842 3d04 	str.w	r3, [r2, #-4]!  snmp_mib_node_insert(&iflist_root, iflist_root.count + 1, &if_node); 8032156:	3101      	adds	r1, #1 8032158:	f000 fccc 	bl	8032af4 <snmp_mib_node_insert>  /* enable getnext traversal on filled table */  iftable.maxlength = 1; 803215c:	4b02      	ldr	r3, [pc, #8]	; (8032168 <snmp_inc_iflist+0x20>) 803215e:	2201      	movs	r2, #1 8032160:	825a      	strh	r2, [r3, #18]} 8032162:	bd0e      	pop	{r1, r2, r3, pc} 8032164:	200016a0 	.word	0x200016a0 8032168:	20001818 	.word	0x200018180803216c <snmp_insert_arpidx_tree>:/** * Inserts ARP table indexes (.xIfIndex.xNetAddress) * into arp table index trees (both atTable and ipNetToMediaTable). */void snmp_insert_arpidx_tree(struct netif *ni, ip_addr_t *ip){ 803216c:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 8032170:	b086      	sub	sp, #24 8032172:	460c      	mov	r4, r1  struct mib_list_node *at_node;  s32_t arpidx[5];  u8_t level, tree;  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_netiftoifindex(ni, &arpidx[0]); 8032174:	a901      	add	r1, sp, #4 8032176:	f000 fc65 	bl	8032a44 <snmp_netiftoifindex>  snmp_iptooid(ip, &arpidx[1]); 803217a:	4620      	mov	r0, r4 803217c:	a902      	add	r1, sp, #8 803217e:	f000 fc7e 	bl	8032a7e <snmp_iptooid>  for (tree = 0; tree < 2; tree++)  {    if (tree == 0)    {      at_rn = &arptree_root; 8032182:	f8df 80a0 	ldr.w	r8, [pc, #160]	; 8032224 <snmp_insert_arpidx_tree+0xb8>  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_netiftoifindex(ni, &arpidx[0]);  snmp_iptooid(ip, &arpidx[1]);  for (tree = 0; tree < 2; tree++) 8032186:	2500      	movs	r5, #0  {    if (tree == 0)    {      at_rn = &arptree_root; 8032188:	4c1f      	ldr	r4, [pc, #124]	; (8032208 <snmp_insert_arpidx_tree+0x9c>)              else              {                at_rn->get_object_def = ip_ntomentry_get_object_def;                at_rn->get_value = ip_ntomentry_get_value;              }              at_rn->set_test = noleafs_set_test; 803218a:	f8df 909c 	ldr.w	r9, [pc, #156]	; 8032228 <snmp_insert_arpidx_tree+0xbc>              at_rn->set_value = noleafs_set_value; 803218e:	f8df a09c 	ldr.w	sl, [pc, #156]	; 803222c <snmp_insert_arpidx_tree+0xc0>  for (tree = 0; tree < 2; tree++)  {    if (tree == 0)    {      at_rn = &arptree_root; 8032192:	2d00      	cmp	r5, #0 8032194:	bf18      	it	ne 8032196:	4644      	movne	r4, r8    }    else    {      at_rn = &ipntomtree_root; 8032198:	2600      	movs	r6, #0    }    for (level = 0; level < 5; level++)    {      at_node = NULL; 803219a:	2300      	movs	r3, #0 803219c:	9300      	str	r3, [sp, #0]      snmp_mib_node_insert(at_rn, arpidx[level], &at_node); 803219e:	ab01      	add	r3, sp, #4 80321a0:	4620      	mov	r0, r4 80321a2:	f853 1026 	ldr.w	r1, [r3, r6, lsl #2] 80321a6:	aa00      	add	r2, sp, #0 80321a8:	b2f7      	uxtb	r7, r6 80321aa:	f000 fca3 	bl	8032af4 <snmp_mib_node_insert>      if ((level != 4) && (at_node != NULL)) 80321ae:	2f04      	cmp	r7, #4 80321b0:	d01d      	beq.n	80321ee <snmp_insert_arpidx_tree+0x82> 80321b2:	9b00      	ldr	r3, [sp, #0] 80321b4:	b1db      	cbz	r3, 80321ee <snmp_insert_arpidx_tree+0x82>      {        if (at_node->nptr == NULL) 80321b6:	68dc      	ldr	r4, [r3, #12] 80321b8:	b9cc      	cbnz	r4, 80321ee <snmp_insert_arpidx_tree+0x82>        {          at_rn = snmp_mib_lrn_alloc(); 80321ba:	f000 fc79 	bl	8032ab0 <snmp_mib_lrn_alloc>          at_node->nptr = (struct mib_node*)at_rn; 80321be:	9b00      	ldr	r3, [sp, #0]      snmp_mib_node_insert(at_rn, arpidx[level], &at_node);      if ((level != 4) && (at_node != NULL))      {        if (at_node->nptr == NULL)        {          at_rn = snmp_mib_lrn_alloc(); 80321c0:	4604      	mov	r4, r0          at_node->nptr = (struct mib_node*)at_rn; 80321c2:	60d8      	str	r0, [r3, #12]          if (at_rn != NULL) 80321c4:	b920      	cbnz	r0, 80321d0 <snmp_insert_arpidx_tree+0x64>  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_netiftoifindex(ni, &arpidx[0]);  snmp_iptooid(ip, &arpidx[1]);  for (tree = 0; tree < 2; tree++) 80321c6:	3501      	adds	r5, #1 80321c8:	b2ed      	uxtb	r5, r5 80321ca:	2d02      	cmp	r5, #2 80321cc:	d1dc      	bne.n	8032188 <snmp_insert_arpidx_tree+0x1c> 80321ce:	e012      	b.n	80321f6 <snmp_insert_arpidx_tree+0x8a>        {          at_rn = snmp_mib_lrn_alloc();          at_node->nptr = (struct mib_node*)at_rn;          if (at_rn != NULL)          {            if (level == 3) 80321d0:	2f03      	cmp	r7, #3 80321d2:	d10c      	bne.n	80321ee <snmp_insert_arpidx_tree+0x82>            {              if (tree == 0) 80321d4:	b91d      	cbnz	r5, 80321de <snmp_insert_arpidx_tree+0x72>              {                at_rn->get_object_def = atentry_get_object_def; 80321d6:	4b0d      	ldr	r3, [pc, #52]	; (803220c <snmp_insert_arpidx_tree+0xa0>) 80321d8:	6003      	str	r3, [r0, #0]                at_rn->get_value = atentry_get_value; 80321da:	4b0d      	ldr	r3, [pc, #52]	; (8032210 <snmp_insert_arpidx_tree+0xa4>) 80321dc:	e002      	b.n	80321e4 <snmp_insert_arpidx_tree+0x78>              }              else              {                at_rn->get_object_def = ip_ntomentry_get_object_def; 80321de:	4b0d      	ldr	r3, [pc, #52]	; (8032214 <snmp_insert_arpidx_tree+0xa8>) 80321e0:	6003      	str	r3, [r0, #0]                at_rn->get_value = ip_ntomentry_get_value; 80321e2:	4b0d      	ldr	r3, [pc, #52]	; (8032218 <snmp_insert_arpidx_tree+0xac>) 80321e4:	6063      	str	r3, [r4, #4]              }              at_rn->set_test = noleafs_set_test; 80321e6:	f8c4 9008 	str.w	r9, [r4, #8]              at_rn->set_value = noleafs_set_value; 80321ea:	f8c4 a00c 	str.w	sl, [r4, #12] 80321ee:	3601      	adds	r6, #1    }    else    {      at_rn = &ipntomtree_root;    }    for (level = 0; level < 5; level++) 80321f0:	2e05      	cmp	r6, #5 80321f2:	d1d2      	bne.n	803219a <snmp_insert_arpidx_tree+0x2e> 80321f4:	e7e7      	b.n	80321c6 <snmp_insert_arpidx_tree+0x5a>        }      }    }  }  /* enable getnext traversal on filled tables */  at.maxlength = 1; 80321f6:	4a09      	ldr	r2, [pc, #36]	; (803221c <snmp_insert_arpidx_tree+0xb0>) 80321f8:	2301      	movs	r3, #1 80321fa:	8253      	strh	r3, [r2, #18]  ipntomtable.maxlength = 1; 80321fc:	4a08      	ldr	r2, [pc, #32]	; (8032220 <snmp_insert_arpidx_tree+0xb4>) 80321fe:	8253      	strh	r3, [r2, #18]} 8032200:	b006      	add	sp, #24 8032202:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 8032206:	bf00      	nop 8032208:	200017ec 	.word	0x200017ec 803220c:	08031bf5 	.word	0x08031bf5 8032210:	08031b4d 	.word	0x08031b4d 8032214:	08031cd9 	.word	0x08031cd9 8032218:	08031af1 	.word	0x08031af1 803221c:	20001610 	.word	0x20001610 8032220:	200015f4 	.word	0x200015f4 8032224:	200018dc 	.word	0x200018dc 8032228:	0803140f 	.word	0x0803140f 803222c:	08031413 	.word	0x0803141308032230 <snmp_delete_arpidx_tree>:/** * Removes ARP table indexes (.xIfIndex.xNetAddress) * from arp table index trees. */void snmp_delete_arpidx_tree(struct netif *ni, ip_addr_t *ip){ 8032230:	b5f0      	push	{r4, r5, r6, r7, lr} 8032232:	b091      	sub	sp, #68	; 0x44 8032234:	460c      	mov	r4, r1  struct mib_list_rootnode *at_rn, *next, *del_rn[5];  struct mib_list_node *at_n, *del_n[5];  s32_t arpidx[5];  u8_t fc, tree, level, del_cnt;  snmp_netiftoifindex(ni, &arpidx[0]); 8032236:	a90b      	add	r1, sp, #44	; 0x2c 8032238:	f000 fc04 	bl	8032a44 <snmp_netiftoifindex>  snmp_iptooid(ip, &arpidx[1]); 803223c:	4620      	mov	r0, r4 803223e:	a90c      	add	r1, sp, #48	; 0x30 8032240:	f000 fc1d 	bl	8032a7e <snmp_iptooid>  for (tree = 0; tree < 2; tree++) 8032244:	2700      	movs	r7, #0  {    /* mark nodes for deletion */    if (tree == 0)    {      at_rn = &arptree_root; 8032246:	4b26      	ldr	r3, [pc, #152]	; (80322e0 <snmp_delete_arpidx_tree+0xb0>) 8032248:	4d26      	ldr	r5, [pc, #152]	; (80322e4 <snmp_delete_arpidx_tree+0xb4>)    }    else    {      at_rn = &ipntomtree_root; 803224a:	2600      	movs	r6, #0  for (tree = 0; tree < 2; tree++)  {    /* mark nodes for deletion */    if (tree == 0)    {      at_rn = &arptree_root; 803224c:	2f00      	cmp	r7, #0 803224e:	bf08      	it	eq 8032250:	461d      	moveq	r5, r3    }    else    {      at_rn = &ipntomtree_root; 8032252:	4634      	mov	r4, r6    }    level = 0;    del_cnt = 0;    while ((level < 5) && (at_rn != NULL))    {      fc = snmp_mib_node_find(at_rn, arpidx[level], &at_n); 8032254:	ab0b      	add	r3, sp, #44	; 0x2c 8032256:	4628      	mov	r0, r5 8032258:	58f1      	ldr	r1, [r6, r3] 803225a:	aa00      	add	r2, sp, #0 803225c:	f000 fc85 	bl	8032b6a <snmp_mib_node_find> 8032260:	b2c0      	uxtb	r0, r0      if (fc == 0) 8032262:	b198      	cbz	r0, 803228c <snmp_delete_arpidx_tree+0x5c>      {        /* arpidx[level] does not exist */        del_cnt = 0;        at_rn = NULL;      }      else if (fc == 1) 8032264:	2801      	cmp	r0, #1 8032266:	d10b      	bne.n	8032280 <snmp_delete_arpidx_tree+0x50>      {        del_rn[del_cnt] = at_rn; 8032268:	ab10      	add	r3, sp, #64	; 0x40 803226a:	eb03 0284 	add.w	r2, r3, r4, lsl #2        del_n[del_cnt] = at_n; 803226e:	9b00      	ldr	r3, [sp, #0]        del_cnt = 0;        at_rn = NULL;      }      else if (fc == 1)      {        del_rn[del_cnt] = at_rn; 8032270:	f842 5c3c 	str.w	r5, [r2, #-60]        del_n[del_cnt] = at_n;        del_cnt++; 8032274:	3401      	adds	r4, #1        at_rn = NULL;      }      else if (fc == 1)      {        del_rn[del_cnt] = at_rn;        del_n[del_cnt] = at_n; 8032276:	f842 3c28 	str.w	r3, [r2, #-40]        del_cnt++; 803227a:	b2e4      	uxtb	r4, r4        at_rn = (struct mib_list_rootnode*)(at_n->nptr); 803227c:	68dd      	ldr	r5, [r3, #12] 803227e:	e007      	b.n	8032290 <snmp_delete_arpidx_tree+0x60>      }      else if (fc == 2) 8032280:	2802      	cmp	r0, #2 8032282:	d105      	bne.n	8032290 <snmp_delete_arpidx_tree+0x60>      {        /* reset delete (2 or more childs) */        del_cnt = 0;        at_rn = (struct mib_list_rootnode*)(at_n->nptr); 8032284:	9b00      	ldr	r3, [sp, #0]        at_rn = (struct mib_list_rootnode*)(at_n->nptr);      }      else if (fc == 2)      {        /* reset delete (2 or more childs) */        del_cnt = 0; 8032286:	2400      	movs	r4, #0        at_rn = (struct mib_list_rootnode*)(at_n->nptr); 8032288:	68dd      	ldr	r5, [r3, #12] 803228a:	e001      	b.n	8032290 <snmp_delete_arpidx_tree+0x60>    {      fc = snmp_mib_node_find(at_rn, arpidx[level], &at_n);      if (fc == 0)      {        /* arpidx[level] does not exist */        del_cnt = 0; 803228c:	4604      	mov	r4, r0        at_rn = NULL; 803228e:	4605      	mov	r5, r0 8032290:	3604      	adds	r6, #4    {      at_rn = &ipntomtree_root;    }    level = 0;    del_cnt = 0;    while ((level < 5) && (at_rn != NULL)) 8032292:	2e14      	cmp	r6, #20 8032294:	d011      	beq.n	80322ba <snmp_delete_arpidx_tree+0x8a> 8032296:	2d00      	cmp	r5, #0 8032298:	d1dc      	bne.n	8032254 <snmp_delete_arpidx_tree+0x24> 803229a:	e00e      	b.n	80322ba <snmp_delete_arpidx_tree+0x8a>      level++;    }    /* delete marked index nodes */    while (del_cnt > 0)    {      del_cnt--; 803229c:	3c01      	subs	r4, #1 803229e:	b2e4      	uxtb	r4, r4      at_rn = del_rn[del_cnt]; 80322a0:	aa10      	add	r2, sp, #64	; 0x40 80322a2:	eb02 0384 	add.w	r3, r2, r4, lsl #2      at_n = del_n[del_cnt]; 80322a6:	f853 1c28 	ldr.w	r1, [r3, #-40]    /* delete marked index nodes */    while (del_cnt > 0)    {      del_cnt--;      at_rn = del_rn[del_cnt]; 80322aa:	f853 0c3c 	ldr.w	r0, [r3, #-60]      at_n = del_n[del_cnt]; 80322ae:	9100      	str	r1, [sp, #0]      next = snmp_mib_node_delete(at_rn, at_n); 80322b0:	f000 fc75 	bl	8032b9e <snmp_mib_node_delete>      if (next != NULL) 80322b4:	b108      	cbz	r0, 80322ba <snmp_delete_arpidx_tree+0x8a>      {        LWIP_ASSERT("next_count == 0",next->count == 0);        snmp_mib_lrn_free(next); 80322b6:	f000 fc19 	bl	8032aec <snmp_mib_lrn_free>        at_rn = (struct mib_list_rootnode*)(at_n->nptr);      }      level++;    }    /* delete marked index nodes */    while (del_cnt > 0) 80322ba:	2c00      	cmp	r4, #0 80322bc:	d1ee      	bne.n	803229c <snmp_delete_arpidx_tree+0x6c>  u8_t fc, tree, level, del_cnt;  snmp_netiftoifindex(ni, &arpidx[0]);  snmp_iptooid(ip, &arpidx[1]);  for (tree = 0; tree < 2; tree++) 80322be:	3701      	adds	r7, #1 80322c0:	b2ff      	uxtb	r7, r7 80322c2:	2f02      	cmp	r7, #2 80322c4:	d1bf      	bne.n	8032246 <snmp_delete_arpidx_tree+0x16>        snmp_mib_lrn_free(next);      }    }  }  /* disable getnext traversal on empty tables */  if(arptree_root.count == 0) at.maxlength = 0; 80322c6:	4b06      	ldr	r3, [pc, #24]	; (80322e0 <snmp_delete_arpidx_tree+0xb0>) 80322c8:	8b9b      	ldrh	r3, [r3, #28] 80322ca:	b90b      	cbnz	r3, 80322d0 <snmp_delete_arpidx_tree+0xa0> 80322cc:	4b06      	ldr	r3, [pc, #24]	; (80322e8 <snmp_delete_arpidx_tree+0xb8>) 80322ce:	825c      	strh	r4, [r3, #18]  if(ipntomtree_root.count == 0) ipntomtable.maxlength = 0; 80322d0:	4b04      	ldr	r3, [pc, #16]	; (80322e4 <snmp_delete_arpidx_tree+0xb4>) 80322d2:	8b9b      	ldrh	r3, [r3, #28] 80322d4:	b90b      	cbnz	r3, 80322da <snmp_delete_arpidx_tree+0xaa> 80322d6:	4a05      	ldr	r2, [pc, #20]	; (80322ec <snmp_delete_arpidx_tree+0xbc>) 80322d8:	8253      	strh	r3, [r2, #18]} 80322da:	b011      	add	sp, #68	; 0x44 80322dc:	bdf0      	pop	{r4, r5, r6, r7, pc} 80322de:	bf00      	nop 80322e0:	200017ec 	.word	0x200017ec 80322e4:	200018dc 	.word	0x200018dc 80322e8:	20001610 	.word	0x20001610 80322ec:	200015f4 	.word	0x200015f4080322f0 <snmp_inc_ipinreceives>:void snmp_inc_ipinreceives(void){  ipinreceives++; 80322f0:	4b02      	ldr	r3, [pc, #8]	; (80322fc <snmp_inc_ipinreceives+0xc>) 80322f2:	681a      	ldr	r2, [r3, #0] 80322f4:	3201      	adds	r2, #1 80322f6:	601a      	str	r2, [r3, #0] 80322f8:	4770      	bx	lr 80322fa:	bf00      	nop 80322fc:	2000e284 	.word	0x2000e28408032300 <snmp_inc_ipinhdrerrors>:}void snmp_inc_ipinhdrerrors(void){  ipinhdrerrors++; 8032300:	4b02      	ldr	r3, [pc, #8]	; (803230c <snmp_inc_ipinhdrerrors+0xc>) 8032302:	681a      	ldr	r2, [r3, #0] 8032304:	3201      	adds	r2, #1 8032306:	601a      	str	r2, [r3, #0] 8032308:	4770      	bx	lr 803230a:	bf00      	nop 803230c:	2000e20c 	.word	0x2000e20c08032310 <snmp_inc_ipinaddrerrors>:}void snmp_inc_ipinaddrerrors(void){  ipinaddrerrors++; 8032310:	4b02      	ldr	r3, [pc, #8]	; (803231c <snmp_inc_ipinaddrerrors+0xc>) 8032312:	681a      	ldr	r2, [r3, #0] 8032314:	3201      	adds	r2, #1 8032316:	601a      	str	r2, [r3, #0] 8032318:	4770      	bx	lr 803231a:	bf00      	nop 803231c:	2000e1f0 	.word	0x2000e1f008032320 <snmp_inc_ipinunknownprotos>:  ipforwdatagrams++;}void snmp_inc_ipinunknownprotos(void){  ipinunknownprotos++; 8032320:	4b02      	ldr	r3, [pc, #8]	; (803232c <snmp_inc_ipinunknownprotos+0xc>) 8032322:	681a      	ldr	r2, [r3, #0] 8032324:	3201      	adds	r2, #1 8032326:	601a      	str	r2, [r3, #0] 8032328:	4770      	bx	lr 803232a:	bf00      	nop 803232c:	2000e24c 	.word	0x2000e24c08032330 <snmp_inc_ipindiscards>:}void snmp_inc_ipindiscards(void){  ipindiscards++; 8032330:	4b02      	ldr	r3, [pc, #8]	; (803233c <snmp_inc_ipindiscards+0xc>) 8032332:	681a      	ldr	r2, [r3, #0] 8032334:	3201      	adds	r2, #1 8032336:	601a      	str	r2, [r3, #0] 8032338:	4770      	bx	lr 803233a:	bf00      	nop 803233c:	2000e2d8 	.word	0x2000e2d808032340 <snmp_inc_ipindelivers>:}void snmp_inc_ipindelivers(void){  ipindelivers++; 8032340:	4b02      	ldr	r3, [pc, #8]	; (803234c <snmp_inc_ipindelivers+0xc>) 8032342:	681a      	ldr	r2, [r3, #0] 8032344:	3201      	adds	r2, #1 8032346:	601a      	str	r2, [r3, #0] 8032348:	4770      	bx	lr 803234a:	bf00      	nop 803234c:	2000e310 	.word	0x2000e31008032350 <snmp_inc_ipoutrequests>:}void snmp_inc_ipoutrequests(void){  ipoutrequests++; 8032350:	4b02      	ldr	r3, [pc, #8]	; (803235c <snmp_inc_ipoutrequests+0xc>) 8032352:	681a      	ldr	r2, [r3, #0] 8032354:	3201      	adds	r2, #1 8032356:	601a      	str	r2, [r3, #0] 8032358:	4770      	bx	lr 803235a:	bf00      	nop 803235c:	2000e2f8 	.word	0x2000e2f808032360 <snmp_inc_ipoutdiscards>:}void snmp_inc_ipoutdiscards(void){  ipoutdiscards++; 8032360:	4b02      	ldr	r3, [pc, #8]	; (803236c <snmp_inc_ipoutdiscards+0xc>) 8032362:	681a      	ldr	r2, [r3, #0] 8032364:	3201      	adds	r2, #1 8032366:	601a      	str	r2, [r3, #0] 8032368:	4770      	bx	lr 803236a:	bf00      	nop 803236c:	2000e29c 	.word	0x2000e29c08032370 <snmp_inc_ipoutnoroutes>:}void snmp_inc_ipoutnoroutes(void){  ipoutnoroutes++; 8032370:	4b02      	ldr	r3, [pc, #8]	; (803237c <snmp_inc_ipoutnoroutes+0xc>) 8032372:	681a      	ldr	r2, [r3, #0] 8032374:	3201      	adds	r2, #1 8032376:	601a      	str	r2, [r3, #0] 8032378:	4770      	bx	lr 803237a:	bf00      	nop 803237c:	2000e31c 	.word	0x2000e31c08032380 <snmp_insert_ipaddridx_tree>:/** * Inserts ipAddrTable indexes (.ipAdEntAddr) * into index tree. */void snmp_insert_ipaddridx_tree(struct netif *ni){ 8032380:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8032384:	b086      	sub	sp, #24  struct mib_list_node *ipa_node;  s32_t ipaddridx[4];  u8_t level;  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_iptooid(&ni->ip_addr, &ipaddridx[0]); 8032386:	3004      	adds	r0, #4 8032388:	a902      	add	r1, sp, #8 803238a:	f000 fb78 	bl	8032a7e <snmp_iptooid>  level = 0;  ipa_rn = &ipaddrtree_root; 803238e:	4c17      	ldr	r4, [pc, #92]	; (80323ec <snmp_insert_ipaddridx_tree+0x6c>)        ipa_node->nptr = (struct mib_node*)ipa_rn;        if (ipa_rn != NULL)        {          if (level == 2)          {            ipa_rn->get_object_def = ip_addrentry_get_object_def; 8032390:	4f17      	ldr	r7, [pc, #92]	; (80323f0 <snmp_insert_ipaddridx_tree+0x70>)            ipa_rn->get_value = ip_addrentry_get_value; 8032392:	f8df 806c 	ldr.w	r8, [pc, #108]	; 8032400 <snmp_insert_ipaddridx_tree+0x80>  struct mib_list_node *ipa_node;  s32_t ipaddridx[4];  u8_t level;  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_iptooid(&ni->ip_addr, &ipaddridx[0]); 8032396:	2500      	movs	r5, #0  level = 0;  ipa_rn = &ipaddrtree_root;  while (level < 4)  {    ipa_node = NULL; 8032398:	2300      	movs	r3, #0 803239a:	9301      	str	r3, [sp, #4]    snmp_mib_node_insert(ipa_rn, ipaddridx[level], &ipa_node); 803239c:	ab02      	add	r3, sp, #8 803239e:	4620      	mov	r0, r4 80323a0:	f853 1025 	ldr.w	r1, [r3, r5, lsl #2] 80323a4:	aa01      	add	r2, sp, #4 80323a6:	b2ee      	uxtb	r6, r5 80323a8:	f000 fba4 	bl	8032af4 <snmp_mib_node_insert>    if ((level != 3) && (ipa_node != NULL)) 80323ac:	2e03      	cmp	r6, #3 80323ae:	d015      	beq.n	80323dc <snmp_insert_ipaddridx_tree+0x5c> 80323b0:	9b01      	ldr	r3, [sp, #4] 80323b2:	b19b      	cbz	r3, 80323dc <snmp_insert_ipaddridx_tree+0x5c>    {      if (ipa_node->nptr == NULL) 80323b4:	68dc      	ldr	r4, [r3, #12] 80323b6:	b98c      	cbnz	r4, 80323dc <snmp_insert_ipaddridx_tree+0x5c>      {        ipa_rn = snmp_mib_lrn_alloc(); 80323b8:	f000 fb7a 	bl	8032ab0 <snmp_mib_lrn_alloc>        ipa_node->nptr = (struct mib_node*)ipa_rn; 80323bc:	9b01      	ldr	r3, [sp, #4]    snmp_mib_node_insert(ipa_rn, ipaddridx[level], &ipa_node);    if ((level != 3) && (ipa_node != NULL))    {      if (ipa_node->nptr == NULL)      {        ipa_rn = snmp_mib_lrn_alloc(); 80323be:	4604      	mov	r4, r0        ipa_node->nptr = (struct mib_node*)ipa_rn; 80323c0:	60d8      	str	r0, [r3, #12]        if (ipa_rn != NULL) 80323c2:	b918      	cbnz	r0, 80323cc <snmp_insert_ipaddridx_tree+0x4c>      }    }    level++;  }  /* enable getnext traversal on filled table */  ipaddrtable.maxlength = 1; 80323c4:	4b0b      	ldr	r3, [pc, #44]	; (80323f4 <snmp_insert_ipaddridx_tree+0x74>) 80323c6:	2201      	movs	r2, #1 80323c8:	825a      	strh	r2, [r3, #18] 80323ca:	e00b      	b.n	80323e4 <snmp_insert_ipaddridx_tree+0x64>      {        ipa_rn = snmp_mib_lrn_alloc();        ipa_node->nptr = (struct mib_node*)ipa_rn;        if (ipa_rn != NULL)        {          if (level == 2) 80323cc:	2e02      	cmp	r6, #2 80323ce:	d105      	bne.n	80323dc <snmp_insert_ipaddridx_tree+0x5c>          {            ipa_rn->get_object_def = ip_addrentry_get_object_def;            ipa_rn->get_value = ip_addrentry_get_value;            ipa_rn->set_test = noleafs_set_test; 80323d0:	4b09      	ldr	r3, [pc, #36]	; (80323f8 <snmp_insert_ipaddridx_tree+0x78>)        if (ipa_rn != NULL)        {          if (level == 2)          {            ipa_rn->get_object_def = ip_addrentry_get_object_def;            ipa_rn->get_value = ip_addrentry_get_value; 80323d2:	e880 0180 	stmia.w	r0, {r7, r8}            ipa_rn->set_test = noleafs_set_test; 80323d6:	6083      	str	r3, [r0, #8]            ipa_rn->set_value = noleafs_set_value; 80323d8:	4b08      	ldr	r3, [pc, #32]	; (80323fc <snmp_insert_ipaddridx_tree+0x7c>) 80323da:	60c3      	str	r3, [r0, #12] 80323dc:	3501      	adds	r5, #1  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_iptooid(&ni->ip_addr, &ipaddridx[0]);  level = 0;  ipa_rn = &ipaddrtree_root;  while (level < 4) 80323de:	2d04      	cmp	r5, #4 80323e0:	d1da      	bne.n	8032398 <snmp_insert_ipaddridx_tree+0x18> 80323e2:	e7ef      	b.n	80323c4 <snmp_insert_ipaddridx_tree+0x44>    }    level++;  }  /* enable getnext traversal on filled table */  ipaddrtable.maxlength = 1;} 80323e4:	b006      	add	sp, #24 80323e6:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 80323ea:	bf00      	nop 80323ec:	20001748 	.word	0x20001748 80323f0:	08031c95 	.word	0x08031c95 80323f4:	200017cc 	.word	0x200017cc 80323f8:	0803140f 	.word	0x0803140f 80323fc:	08031413 	.word	0x08031413 8032400:	08031a85 	.word	0x08031a8508032404 <snmp_delete_ipaddridx_tree>:/** * Removes ipAddrTable indexes (.ipAdEntAddr) * from index tree. */void snmp_delete_ipaddridx_tree(struct netif *ni){ 8032404:	b570      	push	{r4, r5, r6, lr} 8032406:	b08e      	sub	sp, #56	; 0x38  struct mib_list_node *ipa_n, *del_n[4];  s32_t ipaddridx[4];  u8_t fc, level, del_cnt;  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_iptooid(&ni->ip_addr, &ipaddridx[0]); 8032408:	3004      	adds	r0, #4 803240a:	a90a      	add	r1, sp, #40	; 0x28 803240c:	f000 fb37 	bl	8032a7e <snmp_iptooid> 8032410:	2600      	movs	r6, #0  /* mark nodes for deletion */  level = 0;  del_cnt = 0;  ipa_rn = &ipaddrtree_root; 8032412:	4d1f      	ldr	r5, [pc, #124]	; (8032490 <snmp_delete_ipaddridx_tree+0x8c>)  LWIP_ASSERT("ni != NULL", ni != NULL);  snmp_iptooid(&ni->ip_addr, &ipaddridx[0]);  /* mark nodes for deletion */  level = 0;  del_cnt = 0; 8032414:	4634      	mov	r4, r6  ipa_rn = &ipaddrtree_root;  while ((level < 4) && (ipa_rn != NULL))  {    fc = snmp_mib_node_find(ipa_rn, ipaddridx[level], &ipa_n); 8032416:	ab0a      	add	r3, sp, #40	; 0x28 8032418:	4628      	mov	r0, r5 803241a:	58f1      	ldr	r1, [r6, r3] 803241c:	aa01      	add	r2, sp, #4 803241e:	f000 fba4 	bl	8032b6a <snmp_mib_node_find> 8032422:	b2c0      	uxtb	r0, r0    if (fc == 0) 8032424:	b198      	cbz	r0, 803244e <snmp_delete_ipaddridx_tree+0x4a>    {      /* ipaddridx[level] does not exist */      del_cnt = 0;      ipa_rn = NULL;    }    else if (fc == 1) 8032426:	2801      	cmp	r0, #1 8032428:	d10b      	bne.n	8032442 <snmp_delete_ipaddridx_tree+0x3e>    {      del_rn[del_cnt] = ipa_rn; 803242a:	ab0e      	add	r3, sp, #56	; 0x38 803242c:	eb03 0284 	add.w	r2, r3, r4, lsl #2      del_n[del_cnt] = ipa_n; 8032430:	9b01      	ldr	r3, [sp, #4]      del_cnt = 0;      ipa_rn = NULL;    }    else if (fc == 1)    {      del_rn[del_cnt] = ipa_rn; 8032432:	f842 5c30 	str.w	r5, [r2, #-48]      del_n[del_cnt] = ipa_n;      del_cnt++; 8032436:	3401      	adds	r4, #1      ipa_rn = NULL;    }    else if (fc == 1)    {      del_rn[del_cnt] = ipa_rn;      del_n[del_cnt] = ipa_n; 8032438:	f842 3c20 	str.w	r3, [r2, #-32]      del_cnt++; 803243c:	b2e4      	uxtb	r4, r4      ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr); 803243e:	68dd      	ldr	r5, [r3, #12] 8032440:	e007      	b.n	8032452 <snmp_delete_ipaddridx_tree+0x4e>    }    else if (fc == 2) 8032442:	2802      	cmp	r0, #2 8032444:	d105      	bne.n	8032452 <snmp_delete_ipaddridx_tree+0x4e>    {      /* reset delete (2 or more childs) */      del_cnt = 0;      ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr); 8032446:	9b01      	ldr	r3, [sp, #4]      ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr);    }    else if (fc == 2)    {      /* reset delete (2 or more childs) */      del_cnt = 0; 8032448:	2400      	movs	r4, #0      ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr); 803244a:	68dd      	ldr	r5, [r3, #12] 803244c:	e001      	b.n	8032452 <snmp_delete_ipaddridx_tree+0x4e>  {    fc = snmp_mib_node_find(ipa_rn, ipaddridx[level], &ipa_n);    if (fc == 0)    {      /* ipaddridx[level] does not exist */      del_cnt = 0; 803244e:	4604      	mov	r4, r0      ipa_rn = NULL; 8032450:	4605      	mov	r5, r0  /* mark nodes for deletion */  level = 0;  del_cnt = 0;  ipa_rn = &ipaddrtree_root;  while ((level < 4) && (ipa_rn != NULL)) 8032452:	2e0c      	cmp	r6, #12 8032454:	d012      	beq.n	803247c <snmp_delete_ipaddridx_tree+0x78> 8032456:	3604      	adds	r6, #4 8032458:	2d00      	cmp	r5, #0 803245a:	d1dc      	bne.n	8032416 <snmp_delete_ipaddridx_tree+0x12> 803245c:	e00e      	b.n	803247c <snmp_delete_ipaddridx_tree+0x78>    level++;  }  /* delete marked index nodes */  while (del_cnt > 0)  {    del_cnt--; 803245e:	3c01      	subs	r4, #1 8032460:	b2e4      	uxtb	r4, r4    ipa_rn = del_rn[del_cnt]; 8032462:	aa0e      	add	r2, sp, #56	; 0x38 8032464:	eb02 0384 	add.w	r3, r2, r4, lsl #2    ipa_n = del_n[del_cnt]; 8032468:	f853 1c20 	ldr.w	r1, [r3, #-32]  /* delete marked index nodes */  while (del_cnt > 0)  {    del_cnt--;    ipa_rn = del_rn[del_cnt]; 803246c:	f853 0c30 	ldr.w	r0, [r3, #-48]    ipa_n = del_n[del_cnt]; 8032470:	9101      	str	r1, [sp, #4]    next = snmp_mib_node_delete(ipa_rn, ipa_n); 8032472:	f000 fb94 	bl	8032b9e <snmp_mib_node_delete>    if (next != NULL) 8032476:	b108      	cbz	r0, 803247c <snmp_delete_ipaddridx_tree+0x78>    {      LWIP_ASSERT("next_count == 0",next->count == 0);      snmp_mib_lrn_free(next); 8032478:	f000 fb38 	bl	8032aec <snmp_mib_lrn_free>      ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr);    }    level++;  }  /* delete marked index nodes */  while (del_cnt > 0) 803247c:	2c00      	cmp	r4, #0 803247e:	d1ee      	bne.n	803245e <snmp_delete_ipaddridx_tree+0x5a>      LWIP_ASSERT("next_count == 0",next->count == 0);      snmp_mib_lrn_free(next);    }  }  /* disable getnext traversal on empty table */  if (ipaddrtree_root.count == 0) ipaddrtable.maxlength = 0; 8032480:	4b03      	ldr	r3, [pc, #12]	; (8032490 <snmp_delete_ipaddridx_tree+0x8c>) 8032482:	8b9b      	ldrh	r3, [r3, #28] 8032484:	b90b      	cbnz	r3, 803248a <snmp_delete_ipaddridx_tree+0x86> 8032486:	4b03      	ldr	r3, [pc, #12]	; (8032494 <snmp_delete_ipaddridx_tree+0x90>) 8032488:	825c      	strh	r4, [r3, #18]} 803248a:	b00e      	add	sp, #56	; 0x38 803248c:	bd70      	pop	{r4, r5, r6, pc} 803248e:	bf00      	nop 8032490:	20001748 	.word	0x20001748 8032494:	200017cc 	.word	0x200017cc08032498 <snmp_insert_iprteidx_tree>: * * @todo record sysuptime for _this_ route when it is installed *   (needed for ipRouteAge) in the netif. */void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni){ 8032498:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 803249c:	b086      	sub	sp, #24  u8_t insert = 0;  ip_addr_t dst;  if (dflt != 0) 803249e:	b110      	cbz	r0, 80324a6 <snmp_insert_iprteidx_tree+0xe>  {    /* the default route 0.0.0.0 */    ip_addr_set_any(&dst); 80324a0:	2300      	movs	r3, #0 80324a2:	9300      	str	r3, [sp, #0] 80324a4:	e02b      	b.n	80324fe <snmp_insert_iprteidx_tree+0x66>    insert = 1;  }  else  {    /* route to the network address */    ip_addr_get_network(&dst, &ni->ip_addr, &ni->netmask); 80324a6:	688a      	ldr	r2, [r1, #8] 80324a8:	684b      	ldr	r3, [r1, #4] 80324aa:	4013      	ands	r3, r2 80324ac:	9300      	str	r3, [sp, #0]    /* exclude 0.0.0.0 network (reserved for default rte) */    if (!ip_addr_isany(&dst)) { 80324ae:	bb33      	cbnz	r3, 80324fe <snmp_insert_iprteidx_tree+0x66> 80324b0:	e021      	b.n	80324f6 <snmp_insert_iprteidx_tree+0x5e>    snmp_iptooid(&dst, &iprteidx[0]);    level = 0;    iprte_rn = &iprtetree_root;    while (level < 4)    {      iprte_node = NULL; 80324b2:	2300      	movs	r3, #0 80324b4:	9301      	str	r3, [sp, #4]      snmp_mib_node_insert(iprte_rn, iprteidx[level], &iprte_node); 80324b6:	ab02      	add	r3, sp, #8 80324b8:	4620      	mov	r0, r4 80324ba:	f853 1025 	ldr.w	r1, [r3, r5, lsl #2] 80324be:	aa01      	add	r2, sp, #4 80324c0:	b2ee      	uxtb	r6, r5 80324c2:	f000 fb17 	bl	8032af4 <snmp_mib_node_insert>      if ((level != 3) && (iprte_node != NULL)) 80324c6:	2e03      	cmp	r6, #3 80324c8:	d012      	beq.n	80324f0 <snmp_insert_iprteidx_tree+0x58> 80324ca:	9b01      	ldr	r3, [sp, #4] 80324cc:	b183      	cbz	r3, 80324f0 <snmp_insert_iprteidx_tree+0x58>      {        if (iprte_node->nptr == NULL) 80324ce:	68dc      	ldr	r4, [r3, #12] 80324d0:	b974      	cbnz	r4, 80324f0 <snmp_insert_iprteidx_tree+0x58>        {          iprte_rn = snmp_mib_lrn_alloc(); 80324d2:	f000 faed 	bl	8032ab0 <snmp_mib_lrn_alloc>          iprte_node->nptr = (struct mib_node*)iprte_rn; 80324d6:	9b01      	ldr	r3, [sp, #4]      snmp_mib_node_insert(iprte_rn, iprteidx[level], &iprte_node);      if ((level != 3) && (iprte_node != NULL))      {        if (iprte_node->nptr == NULL)        {          iprte_rn = snmp_mib_lrn_alloc(); 80324d8:	4604      	mov	r4, r0          iprte_node->nptr = (struct mib_node*)iprte_rn; 80324da:	60d8      	str	r0, [r3, #12]          if (iprte_rn != NULL) 80324dc:	b158      	cbz	r0, 80324f6 <snmp_insert_iprteidx_tree+0x5e>          {            if (level == 2) 80324de:	2e02      	cmp	r6, #2 80324e0:	d106      	bne.n	80324f0 <snmp_insert_iprteidx_tree+0x58>            {              iprte_rn->get_object_def = ip_rteentry_get_object_def;              iprte_rn->get_value = ip_rteentry_get_value;              iprte_rn->set_test = noleafs_set_test; 80324e2:	4b0d      	ldr	r3, [pc, #52]	; (8032518 <snmp_insert_iprteidx_tree+0x80>)          iprte_node->nptr = (struct mib_node*)iprte_rn;          if (iprte_rn != NULL)          {            if (level == 2)            {              iprte_rn->get_object_def = ip_rteentry_get_object_def; 80324e4:	f8c0 8000 	str.w	r8, [r0]              iprte_rn->get_value = ip_rteentry_get_value;              iprte_rn->set_test = noleafs_set_test; 80324e8:	6083      	str	r3, [r0, #8]              iprte_rn->set_value = noleafs_set_value; 80324ea:	4b0c      	ldr	r3, [pc, #48]	; (803251c <snmp_insert_iprteidx_tree+0x84>)          if (iprte_rn != NULL)          {            if (level == 2)            {              iprte_rn->get_object_def = ip_rteentry_get_object_def;              iprte_rn->get_value = ip_rteentry_get_value; 80324ec:	6047      	str	r7, [r0, #4]              iprte_rn->set_test = noleafs_set_test;              iprte_rn->set_value = noleafs_set_value; 80324ee:	60c3      	str	r3, [r0, #12] 80324f0:	3501      	adds	r5, #1    u8_t level;    snmp_iptooid(&dst, &iprteidx[0]);    level = 0;    iprte_rn = &iprtetree_root;    while (level < 4) 80324f2:	2d04      	cmp	r5, #4 80324f4:	d1dd      	bne.n	80324b2 <snmp_insert_iprteidx_tree+0x1a>      }      level++;    }  }  /* enable getnext traversal on filled table */  iprtetable.maxlength = 1; 80324f6:	4b0a      	ldr	r3, [pc, #40]	; (8032520 <snmp_insert_iprteidx_tree+0x88>) 80324f8:	2201      	movs	r2, #1 80324fa:	825a      	strh	r2, [r3, #18] 80324fc:	e009      	b.n	8032512 <snmp_insert_iprteidx_tree+0x7a>    struct mib_list_rootnode *iprte_rn;    struct mib_list_node *iprte_node;    s32_t iprteidx[4];    u8_t level;    snmp_iptooid(&dst, &iprteidx[0]); 80324fe:	4668      	mov	r0, sp 8032500:	a902      	add	r1, sp, #8 8032502:	f000 fabc 	bl	8032a7e <snmp_iptooid> 8032506:	2500      	movs	r5, #0    level = 0;    iprte_rn = &iprtetree_root; 8032508:	4c06      	ldr	r4, [pc, #24]	; (8032524 <snmp_insert_iprteidx_tree+0x8c>)          iprte_node->nptr = (struct mib_node*)iprte_rn;          if (iprte_rn != NULL)          {            if (level == 2)            {              iprte_rn->get_object_def = ip_rteentry_get_object_def; 803250a:	f8df 8020 	ldr.w	r8, [pc, #32]	; 803252c <snmp_insert_iprteidx_tree+0x94>              iprte_rn->get_value = ip_rteentry_get_value; 803250e:	4f06      	ldr	r7, [pc, #24]	; (8032528 <snmp_insert_iprteidx_tree+0x90>) 8032510:	e7cf      	b.n	80324b2 <snmp_insert_iprteidx_tree+0x1a>      level++;    }  }  /* enable getnext traversal on filled table */  iprtetable.maxlength = 1;} 8032512:	b006      	add	sp, #24 8032514:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 8032518:	0803140f 	.word	0x0803140f 803251c:	08031413 	.word	0x08031413 8032520:	20001834 	.word	0x20001834 8032524:	20001678 	.word	0x20001678 8032528:	08031f95 	.word	0x08031f95 803252c:	080315d9 	.word	0x080315d908032530 <snmp_delete_iprteidx_tree>: * @param dflt non-zero for the default rte, zero for network rte * @param ni points to network interface for this rte or NULL *   for default route to be removed. */void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni){ 8032530:	b570      	push	{r4, r5, r6, lr} 8032532:	b08e      	sub	sp, #56	; 0x38  u8_t del = 0;  ip_addr_t dst;  if (dflt != 0) 8032534:	b110      	cbz	r0, 803253c <snmp_delete_iprteidx_tree+0xc>  {    /* the default route 0.0.0.0 */    ip_addr_set_any(&dst); 8032536:	2300      	movs	r3, #0 8032538:	9300      	str	r3, [sp, #0] 803253a:	e041      	b.n	80325c0 <snmp_delete_iprteidx_tree+0x90>    del = 1;  }  else  {    /* route to the network address */    ip_addr_get_network(&dst, &ni->ip_addr, &ni->netmask); 803253c:	688a      	ldr	r2, [r1, #8] 803253e:	684b      	ldr	r3, [r1, #4] 8032540:	4013      	ands	r3, r2 8032542:	9300      	str	r3, [sp, #0]    /* exclude 0.0.0.0 network (reserved for default rte) */    if (!ip_addr_isany(&dst)) { 8032544:	2b00      	cmp	r3, #0 8032546:	d13b      	bne.n	80325c0 <snmp_delete_iprteidx_tree+0x90> 8032548:	e034      	b.n	80325b4 <snmp_delete_iprteidx_tree+0x84>    level = 0;    del_cnt = 0;    iprte_rn = &iprtetree_root;    while ((level < 4) && (iprte_rn != NULL))    {      fc = snmp_mib_node_find(iprte_rn, iprteidx[level], &iprte_n); 803254a:	ab0a      	add	r3, sp, #40	; 0x28 803254c:	4628      	mov	r0, r5 803254e:	58f1      	ldr	r1, [r6, r3] 8032550:	aa01      	add	r2, sp, #4 8032552:	f000 fb0a 	bl	8032b6a <snmp_mib_node_find> 8032556:	b2c0      	uxtb	r0, r0      if (fc == 0) 8032558:	b198      	cbz	r0, 8032582 <snmp_delete_iprteidx_tree+0x52>      {        /* iprteidx[level] does not exist */        del_cnt = 0;        iprte_rn = NULL;      }      else if (fc == 1) 803255a:	2801      	cmp	r0, #1 803255c:	d10b      	bne.n	8032576 <snmp_delete_iprteidx_tree+0x46>      {        del_rn[del_cnt] = iprte_rn; 803255e:	ab0e      	add	r3, sp, #56	; 0x38 8032560:	eb03 0284 	add.w	r2, r3, r4, lsl #2        del_n[del_cnt] = iprte_n; 8032564:	9b01      	ldr	r3, [sp, #4]        del_cnt = 0;        iprte_rn = NULL;      }      else if (fc == 1)      {        del_rn[del_cnt] = iprte_rn; 8032566:	f842 5c30 	str.w	r5, [r2, #-48]        del_n[del_cnt] = iprte_n;        del_cnt++; 803256a:	3401      	adds	r4, #1        iprte_rn = NULL;      }      else if (fc == 1)      {        del_rn[del_cnt] = iprte_rn;        del_n[del_cnt] = iprte_n; 803256c:	f842 3c20 	str.w	r3, [r2, #-32]        del_cnt++; 8032570:	b2e4      	uxtb	r4, r4        iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr); 8032572:	68dd      	ldr	r5, [r3, #12] 8032574:	e007      	b.n	8032586 <snmp_delete_iprteidx_tree+0x56>      }      else if (fc == 2) 8032576:	2802      	cmp	r0, #2 8032578:	d105      	bne.n	8032586 <snmp_delete_iprteidx_tree+0x56>      {        /* reset delete (2 or more childs) */        del_cnt = 0;        iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr); 803257a:	9b01      	ldr	r3, [sp, #4]        iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr);      }      else if (fc == 2)      {        /* reset delete (2 or more childs) */        del_cnt = 0; 803257c:	2400      	movs	r4, #0        iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr); 803257e:	68dd      	ldr	r5, [r3, #12] 8032580:	e001      	b.n	8032586 <snmp_delete_iprteidx_tree+0x56>    {      fc = snmp_mib_node_find(iprte_rn, iprteidx[level], &iprte_n);      if (fc == 0)      {        /* iprteidx[level] does not exist */        del_cnt = 0; 8032582:	4604      	mov	r4, r0        iprte_rn = NULL; 8032584:	4605      	mov	r5, r0    snmp_iptooid(&dst, &iprteidx[0]);    /* mark nodes for deletion */    level = 0;    del_cnt = 0;    iprte_rn = &iprtetree_root;    while ((level < 4) && (iprte_rn != NULL)) 8032586:	2e0c      	cmp	r6, #12 8032588:	d012      	beq.n	80325b0 <snmp_delete_iprteidx_tree+0x80> 803258a:	3604      	adds	r6, #4 803258c:	2d00      	cmp	r5, #0 803258e:	d1dc      	bne.n	803254a <snmp_delete_iprteidx_tree+0x1a> 8032590:	e00e      	b.n	80325b0 <snmp_delete_iprteidx_tree+0x80>      level++;    }    /* delete marked index nodes */    while (del_cnt > 0)    {      del_cnt--; 8032592:	3c01      	subs	r4, #1 8032594:	b2e4      	uxtb	r4, r4      iprte_rn = del_rn[del_cnt]; 8032596:	aa0e      	add	r2, sp, #56	; 0x38 8032598:	eb02 0384 	add.w	r3, r2, r4, lsl #2      iprte_n = del_n[del_cnt]; 803259c:	f853 1c20 	ldr.w	r1, [r3, #-32]    /* delete marked index nodes */    while (del_cnt > 0)    {      del_cnt--;      iprte_rn = del_rn[del_cnt]; 80325a0:	f853 0c30 	ldr.w	r0, [r3, #-48]      iprte_n = del_n[del_cnt]; 80325a4:	9101      	str	r1, [sp, #4]      next = snmp_mib_node_delete(iprte_rn, iprte_n); 80325a6:	f000 fafa 	bl	8032b9e <snmp_mib_node_delete>      if (next != NULL) 80325aa:	b108      	cbz	r0, 80325b0 <snmp_delete_iprteidx_tree+0x80>      {        LWIP_ASSERT("next_count == 0",next->count == 0);        snmp_mib_lrn_free(next); 80325ac:	f000 fa9e 	bl	8032aec <snmp_mib_lrn_free>        iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr);      }      level++;    }    /* delete marked index nodes */    while (del_cnt > 0) 80325b0:	2c00      	cmp	r4, #0 80325b2:	d1ee      	bne.n	8032592 <snmp_delete_iprteidx_tree+0x62>        snmp_mib_lrn_free(next);      }    }  }  /* disable getnext traversal on empty table */  if (iprtetree_root.count == 0) iprtetable.maxlength = 0; 80325b4:	4b07      	ldr	r3, [pc, #28]	; (80325d4 <snmp_delete_iprteidx_tree+0xa4>) 80325b6:	8b9b      	ldrh	r3, [r3, #28] 80325b8:	b953      	cbnz	r3, 80325d0 <snmp_delete_iprteidx_tree+0xa0> 80325ba:	4a07      	ldr	r2, [pc, #28]	; (80325d8 <snmp_delete_iprteidx_tree+0xa8>) 80325bc:	8253      	strh	r3, [r2, #18] 80325be:	e007      	b.n	80325d0 <snmp_delete_iprteidx_tree+0xa0>    struct mib_list_rootnode *iprte_rn, *next, *del_rn[4];    struct mib_list_node *iprte_n, *del_n[4];    s32_t iprteidx[4];    u8_t fc, level, del_cnt;    snmp_iptooid(&dst, &iprteidx[0]); 80325c0:	4668      	mov	r0, sp 80325c2:	a90a      	add	r1, sp, #40	; 0x28 80325c4:	2600      	movs	r6, #0 80325c6:	f000 fa5a 	bl	8032a7e <snmp_iptooid>    /* mark nodes for deletion */    level = 0;    del_cnt = 0; 80325ca:	4634      	mov	r4, r6    iprte_rn = &iprtetree_root; 80325cc:	4d01      	ldr	r5, [pc, #4]	; (80325d4 <snmp_delete_iprteidx_tree+0xa4>) 80325ce:	e7bc      	b.n	803254a <snmp_delete_iprteidx_tree+0x1a>      }    }  }  /* disable getnext traversal on empty table */  if (iprtetree_root.count == 0) iprtetable.maxlength = 0;} 80325d0:	b00e      	add	sp, #56	; 0x38 80325d2:	bd70      	pop	{r4, r5, r6, pc} 80325d4:	20001678 	.word	0x20001678 80325d8:	20001834 	.word	0x20001834080325dc <snmp_inc_icmpinmsgs>:void snmp_inc_icmpinmsgs(void){  icmpinmsgs++; 80325dc:	4b02      	ldr	r3, [pc, #8]	; (80325e8 <snmp_inc_icmpinmsgs+0xc>) 80325de:	681a      	ldr	r2, [r3, #0] 80325e0:	3201      	adds	r2, #1 80325e2:	601a      	str	r2, [r3, #0] 80325e4:	4770      	bx	lr 80325e6:	bf00      	nop 80325e8:	2000e214 	.word	0x2000e214080325ec <snmp_inc_icmpinerrors>:}void snmp_inc_icmpinerrors(void){  icmpinerrors++; 80325ec:	4b02      	ldr	r3, [pc, #8]	; (80325f8 <snmp_inc_icmpinerrors+0xc>) 80325ee:	681a      	ldr	r2, [r3, #0] 80325f0:	3201      	adds	r2, #1 80325f2:	601a      	str	r2, [r3, #0] 80325f4:	4770      	bx	lr 80325f6:	bf00      	nop 80325f8:	2000e210 	.word	0x2000e210080325fc <snmp_inc_icmpoutmsgs>:  icmpinaddrmaskreps++;}void snmp_inc_icmpoutmsgs(void){  icmpoutmsgs++; 80325fc:	4b02      	ldr	r3, [pc, #8]	; (8032608 <snmp_inc_icmpoutmsgs+0xc>) 80325fe:	681a      	ldr	r2, [r3, #0] 8032600:	3201      	adds	r2, #1 8032602:	601a      	str	r2, [r3, #0] 8032604:	4770      	bx	lr 8032606:	bf00      	nop 8032608:	2000e294 	.word	0x2000e2940803260c <snmp_inc_icmpouttimeexcds>:  icmpoutdestunreachs++;}void snmp_inc_icmpouttimeexcds(void){  icmpouttimeexcds++; 803260c:	4b02      	ldr	r3, [pc, #8]	; (8032618 <snmp_inc_icmpouttimeexcds+0xc>) 803260e:	681a      	ldr	r2, [r3, #0] 8032610:	3201      	adds	r2, #1 8032612:	601a      	str	r2, [r3, #0] 8032614:	4770      	bx	lr 8032616:	bf00      	nop 8032618:	2000e260 	.word	0x2000e2600803261c <snmp_inc_icmpoutechoreps>:  icmpoutechos++;}void snmp_inc_icmpoutechoreps(void){  icmpoutechoreps++; 803261c:	4b02      	ldr	r3, [pc, #8]	; (8032628 <snmp_inc_icmpoutechoreps+0xc>) 803261e:	681a      	ldr	r2, [r3, #0] 8032620:	3201      	adds	r2, #1 8032622:	601a      	str	r2, [r3, #0] 8032624:	4770      	bx	lr 8032626:	bf00      	nop 8032628:	2000e2b4 	.word	0x2000e2b40803262c <snmp_inc_tcppassiveopens>:  tcpactiveopens++;}void snmp_inc_tcppassiveopens(void){  tcppassiveopens++; 803262c:	4b02      	ldr	r3, [pc, #8]	; (8032638 <snmp_inc_tcppassiveopens+0xc>) 803262e:	681a      	ldr	r2, [r3, #0] 8032630:	3201      	adds	r2, #1 8032632:	601a      	str	r2, [r3, #0] 8032634:	4770      	bx	lr 8032636:	bf00      	nop 8032638:	2000e23c 	.word	0x2000e23c0803263c <snmp_inc_tcpattemptfails>:}void snmp_inc_tcpattemptfails(void){  tcpattemptfails++; 803263c:	4b02      	ldr	r3, [pc, #8]	; (8032648 <snmp_inc_tcpattemptfails+0xc>) 803263e:	681a      	ldr	r2, [r3, #0] 8032640:	3201      	adds	r2, #1 8032642:	601a      	str	r2, [r3, #0] 8032644:	4770      	bx	lr 8032646:	bf00      	nop 8032648:	2000e288 	.word	0x2000e2880803264c <snmp_inc_tcpestabresets>:}void snmp_inc_tcpestabresets(void){  tcpestabresets++; 803264c:	4b02      	ldr	r3, [pc, #8]	; (8032658 <snmp_inc_tcpestabresets+0xc>) 803264e:	681a      	ldr	r2, [r3, #0] 8032650:	3201      	adds	r2, #1 8032652:	601a      	str	r2, [r3, #0] 8032654:	4770      	bx	lr 8032656:	bf00      	nop 8032658:	2000e21c 	.word	0x2000e21c0803265c <snmp_inc_tcpinsegs>:}void snmp_inc_tcpinsegs(void){  tcpinsegs++; 803265c:	4b02      	ldr	r3, [pc, #8]	; (8032668 <snmp_inc_tcpinsegs+0xc>) 803265e:	681a      	ldr	r2, [r3, #0] 8032660:	3201      	adds	r2, #1 8032662:	601a      	str	r2, [r3, #0] 8032664:	4770      	bx	lr 8032666:	bf00      	nop 8032668:	2000e298 	.word	0x2000e2980803266c <snmp_inc_tcpoutsegs>:}void snmp_inc_tcpoutsegs(void){  tcpoutsegs++; 803266c:	4b02      	ldr	r3, [pc, #8]	; (8032678 <snmp_inc_tcpoutsegs+0xc>) 803266e:	681a      	ldr	r2, [r3, #0] 8032670:	3201      	adds	r2, #1 8032672:	601a      	str	r2, [r3, #0] 8032674:	4770      	bx	lr 8032676:	bf00      	nop 8032678:	2000e2e4 	.word	0x2000e2e40803267c <snmp_inc_tcpretranssegs>:}void snmp_inc_tcpretranssegs(void){  tcpretranssegs++; 803267c:	4b02      	ldr	r3, [pc, #8]	; (8032688 <snmp_inc_tcpretranssegs+0xc>) 803267e:	681a      	ldr	r2, [r3, #0] 8032680:	3201      	adds	r2, #1 8032682:	601a      	str	r2, [r3, #0] 8032684:	4770      	bx	lr 8032686:	bf00      	nop 8032688:	2000e2b8 	.word	0x2000e2b80803268c <snmp_inc_tcpinerrs>:}void snmp_inc_tcpinerrs(void){  tcpinerrs++; 803268c:	4b02      	ldr	r3, [pc, #8]	; (8032698 <snmp_inc_tcpinerrs+0xc>) 803268e:	681a      	ldr	r2, [r3, #0] 8032690:	3201      	adds	r2, #1 8032692:	601a      	str	r2, [r3, #0] 8032694:	4770      	bx	lr 8032696:	bf00      	nop 8032698:	2000e244 	.word	0x2000e2440803269c <snmp_inc_tcpoutrsts>:}void snmp_inc_tcpoutrsts(void){  tcpoutrsts++; 803269c:	4b02      	ldr	r3, [pc, #8]	; (80326a8 <snmp_inc_tcpoutrsts+0xc>) 803269e:	681a      	ldr	r2, [r3, #0] 80326a0:	3201      	adds	r2, #1 80326a2:	601a      	str	r2, [r3, #0] 80326a4:	4770      	bx	lr 80326a6:	bf00      	nop 80326a8:	2000e2a8 	.word	0x2000e2a8080326ac <snmp_inc_udpindatagrams>:}void snmp_inc_udpindatagrams(void){  udpindatagrams++; 80326ac:	4b02      	ldr	r3, [pc, #8]	; (80326b8 <snmp_inc_udpindatagrams+0xc>) 80326ae:	681a      	ldr	r2, [r3, #0] 80326b0:	3201      	adds	r2, #1 80326b2:	601a      	str	r2, [r3, #0] 80326b4:	4770      	bx	lr 80326b6:	bf00      	nop 80326b8:	2000e2c4 	.word	0x2000e2c4080326bc <snmp_inc_udpnoports>:}void snmp_inc_udpnoports(void){  udpnoports++; 80326bc:	4b02      	ldr	r3, [pc, #8]	; (80326c8 <snmp_inc_udpnoports+0xc>) 80326be:	681a      	ldr	r2, [r3, #0] 80326c0:	3201      	adds	r2, #1 80326c2:	601a      	str	r2, [r3, #0] 80326c4:	4770      	bx	lr 80326c6:	bf00      	nop 80326c8:	2000e27c 	.word	0x2000e27c080326cc <snmp_inc_udpinerrors>:}void snmp_inc_udpinerrors(void){  udpinerrors++; 80326cc:	4b02      	ldr	r3, [pc, #8]	; (80326d8 <snmp_inc_udpinerrors+0xc>) 80326ce:	681a      	ldr	r2, [r3, #0] 80326d0:	3201      	adds	r2, #1 80326d2:	601a      	str	r2, [r3, #0] 80326d4:	4770      	bx	lr 80326d6:	bf00      	nop 80326d8:	2000e2ec 	.word	0x2000e2ec080326dc <snmp_inc_udpoutdatagrams>:}void snmp_inc_udpoutdatagrams(void){  udpoutdatagrams++; 80326dc:	4b02      	ldr	r3, [pc, #8]	; (80326e8 <snmp_inc_udpoutdatagrams+0xc>) 80326de:	681a      	ldr	r2, [r3, #0] 80326e0:	3201      	adds	r2, #1 80326e2:	601a      	str	r2, [r3, #0] 80326e4:	4770      	bx	lr 80326e6:	bf00      	nop 80326e8:	2000e274 	.word	0x2000e274080326ec <snmp_insert_udpidx_tree>:/** * Inserts udpTable indexes (.udpLocalAddress.udpLocalPort) * into index tree. */void snmp_insert_udpidx_tree(struct udp_pcb *pcb){ 80326ec:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 80326f0:	4604      	mov	r4, r0 80326f2:	b086      	sub	sp, #24  struct mib_list_node *udp_node;  s32_t udpidx[5];  u8_t level;  LWIP_ASSERT("pcb != NULL", pcb != NULL);  snmp_iptooid(&pcb->local_ip, &udpidx[0]); 80326f4:	a901      	add	r1, sp, #4 80326f6:	f000 f9c2 	bl	8032a7e <snmp_iptooid>  udpidx[4] = pcb->local_port; 80326fa:	8a63      	ldrh	r3, [r4, #18]        udp_node->nptr = (struct mib_node*)udp_rn;        if (udp_rn != NULL)        {          if (level == 3)          {            udp_rn->get_object_def = udpentry_get_object_def; 80326fc:	4f17      	ldr	r7, [pc, #92]	; (803275c <snmp_insert_udpidx_tree+0x70>)  LWIP_ASSERT("pcb != NULL", pcb != NULL);  snmp_iptooid(&pcb->local_ip, &udpidx[0]);  udpidx[4] = pcb->local_port;  udp_rn = &udp_root; 80326fe:	4c18      	ldr	r4, [pc, #96]	; (8032760 <snmp_insert_udpidx_tree+0x74>)        if (udp_rn != NULL)        {          if (level == 3)          {            udp_rn->get_object_def = udpentry_get_object_def;            udp_rn->get_value = udpentry_get_value; 8032700:	f8df 806c 	ldr.w	r8, [pc, #108]	; 8032770 <snmp_insert_udpidx_tree+0x84>  s32_t udpidx[5];  u8_t level;  LWIP_ASSERT("pcb != NULL", pcb != NULL);  snmp_iptooid(&pcb->local_ip, &udpidx[0]);  udpidx[4] = pcb->local_port; 8032704:	9305      	str	r3, [sp, #20] 8032706:	2500      	movs	r5, #0  udp_rn = &udp_root;  for (level = 0; level < 5; level++)  {    udp_node = NULL; 8032708:	2300      	movs	r3, #0 803270a:	9300      	str	r3, [sp, #0]    snmp_mib_node_insert(udp_rn, udpidx[level], &udp_node); 803270c:	ab01      	add	r3, sp, #4 803270e:	4620      	mov	r0, r4 8032710:	f853 1025 	ldr.w	r1, [r3, r5, lsl #2] 8032714:	466a      	mov	r2, sp 8032716:	b2ee      	uxtb	r6, r5 8032718:	f000 f9ec 	bl	8032af4 <snmp_mib_node_insert>    if ((level != 4) && (udp_node != NULL)) 803271c:	2e04      	cmp	r6, #4 803271e:	d015      	beq.n	803274c <snmp_insert_udpidx_tree+0x60> 8032720:	9b00      	ldr	r3, [sp, #0] 8032722:	b19b      	cbz	r3, 803274c <snmp_insert_udpidx_tree+0x60>    {      if (udp_node->nptr == NULL) 8032724:	68dc      	ldr	r4, [r3, #12] 8032726:	b98c      	cbnz	r4, 803274c <snmp_insert_udpidx_tree+0x60>      {        udp_rn = snmp_mib_lrn_alloc(); 8032728:	f000 f9c2 	bl	8032ab0 <snmp_mib_lrn_alloc>        udp_node->nptr = (struct mib_node*)udp_rn; 803272c:	9b00      	ldr	r3, [sp, #0]    snmp_mib_node_insert(udp_rn, udpidx[level], &udp_node);    if ((level != 4) && (udp_node != NULL))    {      if (udp_node->nptr == NULL)      {        udp_rn = snmp_mib_lrn_alloc(); 803272e:	4604      	mov	r4, r0        udp_node->nptr = (struct mib_node*)udp_rn; 8032730:	60d8      	str	r0, [r3, #12]        if (udp_rn != NULL) 8032732:	b918      	cbnz	r0, 803273c <snmp_insert_udpidx_tree+0x50>      {        udp_rn = (struct mib_list_rootnode*)udp_node->nptr;      }    }  }  udptable.maxlength = 1; 8032734:	4b0b      	ldr	r3, [pc, #44]	; (8032764 <snmp_insert_udpidx_tree+0x78>) 8032736:	2201      	movs	r2, #1 8032738:	825a      	strh	r2, [r3, #18] 803273a:	e00b      	b.n	8032754 <snmp_insert_udpidx_tree+0x68>      {        udp_rn = snmp_mib_lrn_alloc();        udp_node->nptr = (struct mib_node*)udp_rn;        if (udp_rn != NULL)        {          if (level == 3) 803273c:	2e03      	cmp	r6, #3 803273e:	d105      	bne.n	803274c <snmp_insert_udpidx_tree+0x60>          {            udp_rn->get_object_def = udpentry_get_object_def;            udp_rn->get_value = udpentry_get_value;            udp_rn->set_test = noleafs_set_test; 8032740:	4b09      	ldr	r3, [pc, #36]	; (8032768 <snmp_insert_udpidx_tree+0x7c>)        if (udp_rn != NULL)        {          if (level == 3)          {            udp_rn->get_object_def = udpentry_get_object_def;            udp_rn->get_value = udpentry_get_value; 8032742:	e880 0180 	stmia.w	r0, {r7, r8}            udp_rn->set_test = noleafs_set_test; 8032746:	6083      	str	r3, [r0, #8]            udp_rn->set_value = noleafs_set_value; 8032748:	4b08      	ldr	r3, [pc, #32]	; (803276c <snmp_insert_udpidx_tree+0x80>) 803274a:	60c3      	str	r3, [r0, #12] 803274c:	3501      	adds	r5, #1  LWIP_ASSERT("pcb != NULL", pcb != NULL);  snmp_iptooid(&pcb->local_ip, &udpidx[0]);  udpidx[4] = pcb->local_port;  udp_rn = &udp_root;  for (level = 0; level < 5; level++) 803274e:	2d05      	cmp	r5, #5 8032750:	d1da      	bne.n	8032708 <snmp_insert_udpidx_tree+0x1c> 8032752:	e7ef      	b.n	8032734 <snmp_insert_udpidx_tree+0x48>        udp_rn = (struct mib_list_rootnode*)udp_node->nptr;      }    }  }  udptable.maxlength = 1;} 8032754:	b006      	add	sp, #24 8032756:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 803275a:	bf00      	nop 803275c:	08031d81 	.word	0x08031d81 8032760:	20001648 	.word	0x20001648 8032764:	2000162c 	.word	0x2000162c 8032768:	0803140f 	.word	0x0803140f 803276c:	08031413 	.word	0x08031413 8032770:	08031a3d 	.word	0x08031a3d08032774 <snmp_delete_udpidx_tree>:/** * Removes udpTable indexes (.udpLocalAddress.udpLocalPort) * from index tree. */void snmp_delete_udpidx_tree(struct udp_pcb *pcb){ 8032774:	b570      	push	{r4, r5, r6, lr} 8032776:	4604      	mov	r4, r0 8032778:	b090      	sub	sp, #64	; 0x40  struct mib_list_node *udp_n, *del_n[5];  s32_t udpidx[5];  u8_t bindings, fc, level, del_cnt;  LWIP_ASSERT("pcb != NULL", pcb != NULL);  snmp_iptooid(&pcb->local_ip, &udpidx[0]); 803277a:	a90b      	add	r1, sp, #44	; 0x2c 803277c:	f000 f97f 	bl	8032a7e <snmp_iptooid>  udpidx[4] = pcb->local_port; 8032780:	8a61      	ldrh	r1, [r4, #18]  /* count PCBs for a given binding     (e.g. when reusing ports or for temp output PCBs) */  bindings = 0;  npcb = udp_pcbs; 8032782:	4b2a      	ldr	r3, [pc, #168]	; (803282c <snmp_delete_udpidx_tree+0xb8>)  s32_t udpidx[5];  u8_t bindings, fc, level, del_cnt;  LWIP_ASSERT("pcb != NULL", pcb != NULL);  snmp_iptooid(&pcb->local_ip, &udpidx[0]);  udpidx[4] = pcb->local_port; 8032784:	910f      	str	r1, [sp, #60]	; 0x3c  /* count PCBs for a given binding     (e.g. when reusing ports or for temp output PCBs) */  bindings = 0;  npcb = udp_pcbs; 8032786:	681b      	ldr	r3, [r3, #0]  snmp_iptooid(&pcb->local_ip, &udpidx[0]);  udpidx[4] = pcb->local_port;  /* count PCBs for a given binding     (e.g. when reusing ports or for temp output PCBs) */  bindings = 0; 8032788:	2200      	movs	r2, #0  npcb = udp_pcbs;  while ((npcb != NULL)) 803278a:	e009      	b.n	80327a0 <snmp_delete_udpidx_tree+0x2c>  {    if (ip_addr_cmp(&npcb->local_ip, &pcb->local_ip) && 803278c:	681d      	ldr	r5, [r3, #0] 803278e:	6820      	ldr	r0, [r4, #0] 8032790:	4285      	cmp	r5, r0 8032792:	d104      	bne.n	803279e <snmp_delete_udpidx_tree+0x2a>        (npcb->local_port == udpidx[4])) 8032794:	8a58      	ldrh	r0, [r3, #18]     (e.g. when reusing ports or for temp output PCBs) */  bindings = 0;  npcb = udp_pcbs;  while ((npcb != NULL))  {    if (ip_addr_cmp(&npcb->local_ip, &pcb->local_ip) && 8032796:	4288      	cmp	r0, r1 8032798:	d101      	bne.n	803279e <snmp_delete_udpidx_tree+0x2a>        (npcb->local_port == udpidx[4]))    {      bindings++; 803279a:	3201      	adds	r2, #1 803279c:	b2d2      	uxtb	r2, r2    }    npcb = npcb->next; 803279e:	68db      	ldr	r3, [r3, #12]  /* count PCBs for a given binding     (e.g. when reusing ports or for temp output PCBs) */  bindings = 0;  npcb = udp_pcbs;  while ((npcb != NULL)) 80327a0:	2b00      	cmp	r3, #0 80327a2:	d1f3      	bne.n	803278c <snmp_delete_udpidx_tree+0x18>    {      bindings++;    }    npcb = npcb->next;  }  if (bindings == 1) 80327a4:	2a01      	cmp	r2, #1 80327a6:	d004      	beq.n	80327b2 <snmp_delete_udpidx_tree+0x3e>        snmp_mib_lrn_free(next);      }    }  }  /* disable getnext traversal on empty table */  if (udp_root.count == 0) udptable.maxlength = 0; 80327a8:	4b21      	ldr	r3, [pc, #132]	; (8032830 <snmp_delete_udpidx_tree+0xbc>) 80327aa:	8b9b      	ldrh	r3, [r3, #28] 80327ac:	2b00      	cmp	r3, #0 80327ae:	d039      	beq.n	8032824 <snmp_delete_udpidx_tree+0xb0> 80327b0:	e03a      	b.n	8032828 <snmp_delete_udpidx_tree+0xb4>  {    /* selectively remove */    /* mark nodes for deletion */    level = 0;    del_cnt = 0;    udp_rn = &udp_root; 80327b2:	4d1f      	ldr	r5, [pc, #124]	; (8032830 <snmp_delete_udpidx_tree+0xbc>)    {      bindings++;    }    npcb = npcb->next;  }  if (bindings == 1) 80327b4:	461e      	mov	r6, r3 80327b6:	461c      	mov	r4, r3    level = 0;    del_cnt = 0;    udp_rn = &udp_root;    while ((level < 5) && (udp_rn != NULL))    {      fc = snmp_mib_node_find(udp_rn, udpidx[level], &udp_n); 80327b8:	ab0b      	add	r3, sp, #44	; 0x2c 80327ba:	4628      	mov	r0, r5 80327bc:	58f1      	ldr	r1, [r6, r3] 80327be:	466a      	mov	r2, sp 80327c0:	f000 f9d3 	bl	8032b6a <snmp_mib_node_find> 80327c4:	b2c0      	uxtb	r0, r0      if (fc == 0) 80327c6:	b198      	cbz	r0, 80327f0 <snmp_delete_udpidx_tree+0x7c>      {        /* udpidx[level] does not exist */        del_cnt = 0;        udp_rn = NULL;      }      else if (fc == 1) 80327c8:	2801      	cmp	r0, #1 80327ca:	d10b      	bne.n	80327e4 <snmp_delete_udpidx_tree+0x70>      {        del_rn[del_cnt] = udp_rn; 80327cc:	ab10      	add	r3, sp, #64	; 0x40 80327ce:	eb03 0284 	add.w	r2, r3, r4, lsl #2        del_n[del_cnt] = udp_n; 80327d2:	9b00      	ldr	r3, [sp, #0]        del_cnt = 0;        udp_rn = NULL;      }      else if (fc == 1)      {        del_rn[del_cnt] = udp_rn; 80327d4:	f842 5c3c 	str.w	r5, [r2, #-60]        del_n[del_cnt] = udp_n;        del_cnt++; 80327d8:	3401      	adds	r4, #1        udp_rn = NULL;      }      else if (fc == 1)      {        del_rn[del_cnt] = udp_rn;        del_n[del_cnt] = udp_n; 80327da:	f842 3c28 	str.w	r3, [r2, #-40]        del_cnt++; 80327de:	b2e4      	uxtb	r4, r4        udp_rn = (struct mib_list_rootnode*)(udp_n->nptr); 80327e0:	68dd      	ldr	r5, [r3, #12] 80327e2:	e007      	b.n	80327f4 <snmp_delete_udpidx_tree+0x80>      }      else if (fc == 2) 80327e4:	2802      	cmp	r0, #2 80327e6:	d105      	bne.n	80327f4 <snmp_delete_udpidx_tree+0x80>      {        /* reset delete (2 or more childs) */        del_cnt = 0;        udp_rn = (struct mib_list_rootnode*)(udp_n->nptr); 80327e8:	9b00      	ldr	r3, [sp, #0]        udp_rn = (struct mib_list_rootnode*)(udp_n->nptr);      }      else if (fc == 2)      {        /* reset delete (2 or more childs) */        del_cnt = 0; 80327ea:	2400      	movs	r4, #0        udp_rn = (struct mib_list_rootnode*)(udp_n->nptr); 80327ec:	68dd      	ldr	r5, [r3, #12] 80327ee:	e001      	b.n	80327f4 <snmp_delete_udpidx_tree+0x80>    {      fc = snmp_mib_node_find(udp_rn, udpidx[level], &udp_n);      if (fc == 0)      {        /* udpidx[level] does not exist */        del_cnt = 0; 80327f0:	4604      	mov	r4, r0        udp_rn = NULL; 80327f2:	4605      	mov	r5, r0    /* selectively remove */    /* mark nodes for deletion */    level = 0;    del_cnt = 0;    udp_rn = &udp_root;    while ((level < 5) && (udp_rn != NULL)) 80327f4:	2e10      	cmp	r6, #16 80327f6:	d012      	beq.n	803281e <snmp_delete_udpidx_tree+0xaa> 80327f8:	3604      	adds	r6, #4 80327fa:	2d00      	cmp	r5, #0 80327fc:	d1dc      	bne.n	80327b8 <snmp_delete_udpidx_tree+0x44> 80327fe:	e00e      	b.n	803281e <snmp_delete_udpidx_tree+0xaa>      level++;    }    /* delete marked index nodes */    while (del_cnt > 0)    {      del_cnt--; 8032800:	3c01      	subs	r4, #1 8032802:	b2e4      	uxtb	r4, r4      udp_rn = del_rn[del_cnt]; 8032804:	aa10      	add	r2, sp, #64	; 0x40 8032806:	eb02 0384 	add.w	r3, r2, r4, lsl #2      udp_n = del_n[del_cnt]; 803280a:	f853 1c28 	ldr.w	r1, [r3, #-40]    /* delete marked index nodes */    while (del_cnt > 0)    {      del_cnt--;      udp_rn = del_rn[del_cnt]; 803280e:	f853 0c3c 	ldr.w	r0, [r3, #-60]      udp_n = del_n[del_cnt]; 8032812:	9100      	str	r1, [sp, #0]      next = snmp_mib_node_delete(udp_rn, udp_n); 8032814:	f000 f9c3 	bl	8032b9e <snmp_mib_node_delete>      if (next != NULL) 8032818:	b108      	cbz	r0, 803281e <snmp_delete_udpidx_tree+0xaa>      {        LWIP_ASSERT("next_count == 0",next->count == 0);        snmp_mib_lrn_free(next); 803281a:	f000 f967 	bl	8032aec <snmp_mib_lrn_free>        udp_rn = (struct mib_list_rootnode*)(udp_n->nptr);      }      level++;    }    /* delete marked index nodes */    while (del_cnt > 0) 803281e:	2c00      	cmp	r4, #0 8032820:	d1ee      	bne.n	8032800 <snmp_delete_udpidx_tree+0x8c> 8032822:	e7c1      	b.n	80327a8 <snmp_delete_udpidx_tree+0x34>        snmp_mib_lrn_free(next);      }    }  }  /* disable getnext traversal on empty table */  if (udp_root.count == 0) udptable.maxlength = 0; 8032824:	4a03      	ldr	r2, [pc, #12]	; (8032834 <snmp_delete_udpidx_tree+0xc0>) 8032826:	8253      	strh	r3, [r2, #18]} 8032828:	b010      	add	sp, #64	; 0x40 803282a:	bd70      	pop	{r4, r5, r6, pc} 803282c:	20011098 	.word	0x20011098 8032830:	20001648 	.word	0x20001648 8032834:	2000162c 	.word	0x2000162c08032838 <snmp_inc_snmpinpkts>:void snmp_inc_snmpinpkts(void){  snmpinpkts++; 8032838:	4b02      	ldr	r3, [pc, #8]	; (8032844 <snmp_inc_snmpinpkts+0xc>) 803283a:	681a      	ldr	r2, [r3, #0] 803283c:	3201      	adds	r2, #1 803283e:	601a      	str	r2, [r3, #0] 8032840:	4770      	bx	lr 8032842:	bf00      	nop 8032844:	2000e220 	.word	0x2000e22008032848 <snmp_inc_snmpoutpkts>:}void snmp_inc_snmpoutpkts(void){  snmpoutpkts++; 8032848:	4b02      	ldr	r3, [pc, #8]	; (8032854 <snmp_inc_snmpoutpkts+0xc>) 803284a:	681a      	ldr	r2, [r3, #0] 803284c:	3201      	adds	r2, #1 803284e:	601a      	str	r2, [r3, #0] 8032850:	4770      	bx	lr 8032852:	bf00      	nop 8032854:	2000e2f0 	.word	0x2000e2f008032858 <snmp_inc_snmpinbadversions>:}void snmp_inc_snmpinbadversions(void){  snmpinbadversions++; 8032858:	4b02      	ldr	r3, [pc, #8]	; (8032864 <snmp_inc_snmpinbadversions+0xc>) 803285a:	681a      	ldr	r2, [r3, #0] 803285c:	3201      	adds	r2, #1 803285e:	601a      	str	r2, [r3, #0] 8032860:	4770      	bx	lr 8032862:	bf00      	nop 8032864:	2000e2dc 	.word	0x2000e2dc08032868 <snmp_inc_snmpinbadcommunitynames>:}void snmp_inc_snmpinbadcommunitynames(void){  snmpinbadcommunitynames++; 8032868:	4b02      	ldr	r3, [pc, #8]	; (8032874 <snmp_inc_snmpinbadcommunitynames+0xc>) 803286a:	681a      	ldr	r2, [r3, #0] 803286c:	3201      	adds	r2, #1 803286e:	601a      	str	r2, [r3, #0] 8032870:	4770      	bx	lr 8032872:	bf00      	nop 8032874:	2000e1f4 	.word	0x2000e1f408032878 <snmp_inc_snmpinasnparseerrs>:  snmpinbadcommunityuses++;}void snmp_inc_snmpinasnparseerrs(void){  snmpinasnparseerrs++; 8032878:	4b02      	ldr	r3, [pc, #8]	; (8032884 <snmp_inc_snmpinasnparseerrs+0xc>) 803287a:	681a      	ldr	r2, [r3, #0] 803287c:	3201      	adds	r2, #1 803287e:	601a      	str	r2, [r3, #0] 8032880:	4770      	bx	lr 8032882:	bf00      	nop 8032884:	2000e2e0 	.word	0x2000e2e008032888 <snmp_inc_snmpintoobigs>:}void snmp_inc_snmpintoobigs(void){  snmpintoobigs++; 8032888:	4b02      	ldr	r3, [pc, #8]	; (8032894 <snmp_inc_snmpintoobigs+0xc>) 803288a:	681a      	ldr	r2, [r3, #0] 803288c:	3201      	adds	r2, #1 803288e:	601a      	str	r2, [r3, #0] 8032890:	4770      	bx	lr 8032892:	bf00      	nop 8032894:	2000e2a0 	.word	0x2000e2a008032898 <snmp_inc_snmpinnosuchnames>:}void snmp_inc_snmpinnosuchnames(void){  snmpinnosuchnames++; 8032898:	4b02      	ldr	r3, [pc, #8]	; (80328a4 <snmp_inc_snmpinnosuchnames+0xc>) 803289a:	681a      	ldr	r2, [r3, #0] 803289c:	3201      	adds	r2, #1 803289e:	601a      	str	r2, [r3, #0] 80328a0:	4770      	bx	lr 80328a2:	bf00      	nop 80328a4:	2000e320 	.word	0x2000e320080328a8 <snmp_inc_snmpinbadvalues>:}void snmp_inc_snmpinbadvalues(void){  snmpinbadvalues++; 80328a8:	4b02      	ldr	r3, [pc, #8]	; (80328b4 <snmp_inc_snmpinbadvalues+0xc>) 80328aa:	681a      	ldr	r2, [r3, #0] 80328ac:	3201      	adds	r2, #1 80328ae:	601a      	str	r2, [r3, #0] 80328b0:	4770      	bx	lr 80328b2:	bf00      	nop 80328b4:	2000e2bc 	.word	0x2000e2bc080328b8 <snmp_inc_snmpinreadonlys>:}void snmp_inc_snmpinreadonlys(void){  snmpinreadonlys++; 80328b8:	4b02      	ldr	r3, [pc, #8]	; (80328c4 <snmp_inc_snmpinreadonlys+0xc>) 80328ba:	681a      	ldr	r2, [r3, #0] 80328bc:	3201      	adds	r2, #1 80328be:	601a      	str	r2, [r3, #0] 80328c0:	4770      	bx	lr 80328c2:	bf00      	nop 80328c4:	2000e290 	.word	0x2000e290080328c8 <snmp_inc_snmpingenerrs>:}void snmp_inc_snmpingenerrs(void){  snmpingenerrs++; 80328c8:	4b02      	ldr	r3, [pc, #8]	; (80328d4 <snmp_inc_snmpingenerrs+0xc>) 80328ca:	681a      	ldr	r2, [r3, #0] 80328cc:	3201      	adds	r2, #1 80328ce:	601a      	str	r2, [r3, #0] 80328d0:	4770      	bx	lr 80328d2:	bf00      	nop 80328d4:	2000e268 	.word	0x2000e268080328d8 <snmp_add_snmpintotalreqvars>:}void snmp_add_snmpintotalreqvars(u8_t value){  snmpintotalreqvars += value; 80328d8:	4b02      	ldr	r3, [pc, #8]	; (80328e4 <snmp_add_snmpintotalreqvars+0xc>) 80328da:	681a      	ldr	r2, [r3, #0] 80328dc:	1880      	adds	r0, r0, r2 80328de:	6018      	str	r0, [r3, #0] 80328e0:	4770      	bx	lr 80328e2:	bf00      	nop 80328e4:	2000e2c0 	.word	0x2000e2c0080328e8 <snmp_add_snmpintotalsetvars>:}void snmp_add_snmpintotalsetvars(u8_t value){  snmpintotalsetvars += value; 80328e8:	4b02      	ldr	r3, [pc, #8]	; (80328f4 <snmp_add_snmpintotalsetvars+0xc>) 80328ea:	681a      	ldr	r2, [r3, #0] 80328ec:	1880      	adds	r0, r0, r2 80328ee:	6018      	str	r0, [r3, #0] 80328f0:	4770      	bx	lr 80328f2:	bf00      	nop 80328f4:	2000e200 	.word	0x2000e200080328f8 <snmp_inc_snmpingetrequests>:}void snmp_inc_snmpingetrequests(void){  snmpingetrequests++; 80328f8:	4b02      	ldr	r3, [pc, #8]	; (8032904 <snmp_inc_snmpingetrequests+0xc>) 80328fa:	681a      	ldr	r2, [r3, #0] 80328fc:	3201      	adds	r2, #1 80328fe:	601a      	str	r2, [r3, #0] 8032900:	4770      	bx	lr 8032902:	bf00      	nop 8032904:	2000e254 	.word	0x2000e25408032908 <snmp_inc_snmpingetnexts>:}void snmp_inc_snmpingetnexts(void){  snmpingetnexts++; 8032908:	4b02      	ldr	r3, [pc, #8]	; (8032914 <snmp_inc_snmpingetnexts+0xc>) 803290a:	681a      	ldr	r2, [r3, #0] 803290c:	3201      	adds	r2, #1 803290e:	601a      	str	r2, [r3, #0] 8032910:	4770      	bx	lr 8032912:	bf00      	nop 8032914:	2000e1d8 	.word	0x2000e1d808032918 <snmp_inc_snmpinsetrequests>:}void snmp_inc_snmpinsetrequests(void){  snmpinsetrequests++; 8032918:	4b02      	ldr	r3, [pc, #8]	; (8032924 <snmp_inc_snmpinsetrequests+0xc>) 803291a:	681a      	ldr	r2, [r3, #0] 803291c:	3201      	adds	r2, #1 803291e:	601a      	str	r2, [r3, #0] 8032920:	4770      	bx	lr 8032922:	bf00      	nop 8032924:	2000e2fc 	.word	0x2000e2fc08032928 <snmp_inc_snmpingetresponses>:}void snmp_inc_snmpingetresponses(void){  snmpingetresponses++; 8032928:	4b02      	ldr	r3, [pc, #8]	; (8032934 <snmp_inc_snmpingetresponses+0xc>) 803292a:	681a      	ldr	r2, [r3, #0] 803292c:	3201      	adds	r2, #1 803292e:	601a      	str	r2, [r3, #0] 8032930:	4770      	bx	lr 8032932:	bf00      	nop 8032934:	2000e250 	.word	0x2000e25008032938 <snmp_inc_snmpintraps>:}void snmp_inc_snmpintraps(void){  snmpintraps++; 8032938:	4b02      	ldr	r3, [pc, #8]	; (8032944 <snmp_inc_snmpintraps+0xc>) 803293a:	681a      	ldr	r2, [r3, #0] 803293c:	3201      	adds	r2, #1 803293e:	601a      	str	r2, [r3, #0] 8032940:	4770      	bx	lr 8032942:	bf00      	nop 8032944:	2000e1e8 	.word	0x2000e1e808032948 <snmp_inc_snmpouttoobigs>:}void snmp_inc_snmpouttoobigs(void){  snmpouttoobigs++; 8032948:	4b02      	ldr	r3, [pc, #8]	; (8032954 <snmp_inc_snmpouttoobigs+0xc>) 803294a:	681a      	ldr	r2, [r3, #0] 803294c:	3201      	adds	r2, #1 803294e:	601a      	str	r2, [r3, #0] 8032950:	4770      	bx	lr 8032952:	bf00      	nop 8032954:	2000e238 	.word	0x2000e23808032958 <snmp_inc_snmpoutnosuchnames>:}void snmp_inc_snmpoutnosuchnames(void){  snmpoutnosuchnames++; 8032958:	4b02      	ldr	r3, [pc, #8]	; (8032964 <snmp_inc_snmpoutnosuchnames+0xc>) 803295a:	681a      	ldr	r2, [r3, #0] 803295c:	3201      	adds	r2, #1 803295e:	601a      	str	r2, [r3, #0] 8032960:	4770      	bx	lr 8032962:	bf00      	nop 8032964:	2000e204 	.word	0x2000e20408032968 <snmp_inc_snmpoutbadvalues>:}void snmp_inc_snmpoutbadvalues(void){  snmpoutbadvalues++; 8032968:	4b02      	ldr	r3, [pc, #8]	; (8032974 <snmp_inc_snmpoutbadvalues+0xc>) 803296a:	681a      	ldr	r2, [r3, #0] 803296c:	3201      	adds	r2, #1 803296e:	601a      	str	r2, [r3, #0] 8032970:	4770      	bx	lr 8032972:	bf00      	nop 8032974:	2000e1e4 	.word	0x2000e1e408032978 <snmp_inc_snmpoutgenerrs>:}void snmp_inc_snmpoutgenerrs(void){  snmpoutgenerrs++; 8032978:	4b02      	ldr	r3, [pc, #8]	; (8032984 <snmp_inc_snmpoutgenerrs+0xc>) 803297a:	681a      	ldr	r2, [r3, #0] 803297c:	3201      	adds	r2, #1 803297e:	601a      	str	r2, [r3, #0] 8032980:	4770      	bx	lr 8032982:	bf00      	nop 8032984:	2000e324 	.word	0x2000e32408032988 <snmp_inc_snmpoutgetresponses>:  snmpoutsetrequests++;}void snmp_inc_snmpoutgetresponses(void){  snmpoutgetresponses++; 8032988:	4b02      	ldr	r3, [pc, #8]	; (8032994 <snmp_inc_snmpoutgetresponses+0xc>) 803298a:	681a      	ldr	r2, [r3, #0] 803298c:	3201      	adds	r2, #1 803298e:	601a      	str	r2, [r3, #0] 8032990:	4770      	bx	lr 8032992:	bf00      	nop 8032994:	2000e1e0 	.word	0x2000e1e008032998 <snmp_inc_snmpouttraps>:}void snmp_inc_snmpouttraps(void){  snmpouttraps++; 8032998:	4b02      	ldr	r3, [pc, #8]	; (80329a4 <snmp_inc_snmpouttraps+0xc>) 803299a:	681a      	ldr	r2, [r3, #0] 803299c:	3201      	adds	r2, #1 803299e:	601a      	str	r2, [r3, #0] 80329a0:	4770      	bx	lr 80329a2:	bf00      	nop 80329a4:	2000e258 	.word	0x2000e258080329a8 <snmp_get_snmpgrpid_ptr>:}void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid){  *oid = &snmpgrp_id; 80329a8:	4b01      	ldr	r3, [pc, #4]	; (80329b0 <snmp_get_snmpgrpid_ptr+0x8>) 80329aa:	6003      	str	r3, [r0, #0] 80329ac:	4770      	bx	lr 80329ae:	bf00      	nop 80329b0:	20001858 	.word	0x20001858080329b4 <snmp_get_snmpenableauthentraps>:  }}void snmp_get_snmpenableauthentraps(u8_t *value){  *value = *snmpenableauthentraps_ptr; 80329b4:	4b02      	ldr	r3, [pc, #8]	; (80329c0 <snmp_get_snmpenableauthentraps+0xc>) 80329b6:	681b      	ldr	r3, [r3, #0] 80329b8:	781b      	ldrb	r3, [r3, #0] 80329ba:	7003      	strb	r3, [r0, #0] 80329bc:	4770      	bx	lr 80329be:	bf00      	nop 80329c0:	2000176c 	.word	0x2000176c080329c4 <push_node>:/** * Pushes nse struct onto stack. */static voidpush_node(struct nse* node){ 80329c4:	b530      	push	{r4, r5, lr}  LWIP_ASSERT("node_stack_cnt < NODE_STACK_SIZE",node_stack_cnt < NODE_STACK_SIZE);  LWIP_DEBUGF(SNMP_MIB_DEBUG,("push_node() node=%p id=%"S32_F"\n",(void*)(node->r_ptr),node->r_id));  if (node_stack_cnt < NODE_STACK_SIZE) 80329c6:	4d07      	ldr	r5, [pc, #28]	; (80329e4 <push_node+0x20>) 80329c8:	782b      	ldrb	r3, [r5, #0] 80329ca:	2b1f      	cmp	r3, #31 80329cc:	d808      	bhi.n	80329e0 <push_node+0x1c>  {    node_stack[node_stack_cnt] = *node; 80329ce:	4a06      	ldr	r2, [pc, #24]	; (80329e8 <push_node+0x24>) 80329d0:	240c      	movs	r4, #12 80329d2:	fb04 2403 	mla	r4, r4, r3, r2 80329d6:	c807      	ldmia	r0, {r0, r1, r2} 80329d8:	e884 0007 	stmia.w	r4, {r0, r1, r2}    node_stack_cnt++; 80329dc:	3301      	adds	r3, #1 80329de:	702b      	strb	r3, [r5, #0] 80329e0:	bd30      	pop	{r4, r5, pc} 80329e2:	bf00      	nop 80329e4:	2000e328 	.word	0x2000e328 80329e8:	2000e32c 	.word	0x2000e32c080329ec <empty_table>:empty_table(struct mib_node *node){  u8_t node_type;  u8_t empty = 0;  if (node != NULL) 80329ec:	b1d0      	cbz	r0, 8032a24 <empty_table+0x38>  {    node_type = node->node_type; 80329ee:	7c03      	ldrb	r3, [r0, #16]    if (node_type == MIB_NODE_LR) 80329f0:	2b04      	cmp	r3, #4 80329f2:	d105      	bne.n	8032a00 <empty_table+0x14>    {      struct mib_list_rootnode *lrn;      lrn = (struct mib_list_rootnode *)node;      if ((lrn->count == 0) || (lrn->head == NULL)) 80329f4:	8b83      	ldrh	r3, [r0, #28] 80329f6:	b903      	cbnz	r3, 80329fa <empty_table+0xe> 80329f8:	e009      	b.n	8032a0e <empty_table+0x22> 80329fa:	6943      	ldr	r3, [r0, #20] 80329fc:	b13b      	cbz	r3, 8032a0e <empty_table+0x22> 80329fe:	e010      	b.n	8032a22 <empty_table+0x36>      {        empty = 1;      }    }    else if ((node_type == MIB_NODE_AR) || (node_type == MIB_NODE_RA)) 8032a00:	1e9a      	subs	r2, r3, #2 8032a02:	2a01      	cmp	r2, #1 8032a04:	d805      	bhi.n	8032a12 <empty_table+0x26>    {      struct mib_array_node *an;      an = (struct mib_array_node *)node;      if ((an->maxlength == 0) || (an->nptr == NULL)) 8032a06:	8a43      	ldrh	r3, [r0, #18] 8032a08:	b10b      	cbz	r3, 8032a0e <empty_table+0x22> 8032a0a:	6980      	ldr	r0, [r0, #24] 8032a0c:	e004      	b.n	8032a18 <empty_table+0x2c>      {        empty = 1; 8032a0e:	2001      	movs	r0, #1 8032a10:	4770      	bx	lr      }    }    else if (node_type == MIB_NODE_EX) 8032a12:	2b05      	cmp	r3, #5 8032a14:	d105      	bne.n	8032a22 <empty_table+0x36>    {      struct mib_external_node *en;      en = (struct mib_external_node *)node;      if (en->tree_levels == 0) 8032a16:	7e00      	ldrb	r0, [r0, #24] */static u8_tempty_table(struct mib_node *node){  u8_t node_type;  u8_t empty = 0; 8032a18:	f1d0 0001 	rsbs	r0, r0, #1 8032a1c:	bf38      	it	cc 8032a1e:	2000      	movcc	r0, #0 8032a20:	4770      	bx	lr 8032a22:	2000      	movs	r0, #0        empty = 1;      }    }  }  return empty;} 8032a24:	4770      	bx	lr 8032a26:	0000      	movs	r0, r008032a28 <snmp_ifindextonetif>: * @param netif points to returned netif struct pointer */voidsnmp_ifindextonetif(s32_t ifindex, struct netif **netif){  struct netif *nif = netif_list; 8032a28:	4b05      	ldr	r3, [pc, #20]	; (8032a40 <snmp_ifindextonetif+0x18>)  s32_t i, ifidx;  ifidx = ifindex - 1; 8032a2a:	3801      	subs	r0, #1 * @param netif points to returned netif struct pointer */voidsnmp_ifindextonetif(s32_t ifindex, struct netif **netif){  struct netif *nif = netif_list; 8032a2c:	681b      	ldr	r3, [r3, #0]  s32_t i, ifidx;  ifidx = ifindex - 1;  i = 0; 8032a2e:	2200      	movs	r2, #0  while ((nif != NULL) && (i < ifidx)) 8032a30:	e001      	b.n	8032a36 <snmp_ifindextonetif+0xe>  {    nif = nif->next; 8032a32:	681b      	ldr	r3, [r3, #0]    i++; 8032a34:	3201      	adds	r2, #1  struct netif *nif = netif_list;  s32_t i, ifidx;  ifidx = ifindex - 1;  i = 0;  while ((nif != NULL) && (i < ifidx)) 8032a36:	b10b      	cbz	r3, 8032a3c <snmp_ifindextonetif+0x14> 8032a38:	4282      	cmp	r2, r0 8032a3a:	dbfa      	blt.n	8032a32 <snmp_ifindextonetif+0xa>  {    nif = nif->next;    i++;  }  *netif = nif; 8032a3c:	600b      	str	r3, [r1, #0] 8032a3e:	4770      	bx	lr 8032a40:	20011070 	.word	0x2001107008032a44 <snmp_netiftoifindex>: * @param ifidx points to s32_t object sub-identifier */voidsnmp_netiftoifindex(struct netif *netif, s32_t *ifidx){  struct netif *nif = netif_list; 8032a44:	4b06      	ldr	r3, [pc, #24]	; (8032a60 <snmp_netiftoifindex+0x1c>)  u16_t i;  i = 0; 8032a46:	2200      	movs	r2, #0 * @param ifidx points to s32_t object sub-identifier */voidsnmp_netiftoifindex(struct netif *netif, s32_t *ifidx){  struct netif *nif = netif_list; 8032a48:	681b      	ldr	r3, [r3, #0]  u16_t i;  i = 0;  while ((nif != NULL) && (nif != netif)) 8032a4a:	e001      	b.n	8032a50 <snmp_netiftoifindex+0xc>  {    nif = nif->next; 8032a4c:	681b      	ldr	r3, [r3, #0]    i++; 8032a4e:	b292      	uxth	r2, r2 8032a50:	3201      	adds	r2, #1{  struct netif *nif = netif_list;  u16_t i;  i = 0;  while ((nif != NULL) && (nif != netif)) 8032a52:	b90b      	cbnz	r3, 8032a58 <snmp_netiftoifindex+0x14>  {    nif = nif->next;    i++;  }  *ifidx = i+1; 8032a54:	600a      	str	r2, [r1, #0] 8032a56:	4770      	bx	lr{  struct netif *nif = netif_list;  u16_t i;  i = 0;  while ((nif != NULL) && (nif != netif)) 8032a58:	4283      	cmp	r3, r0 8032a5a:	d1f7      	bne.n	8032a4c <snmp_netiftoifindex+0x8> 8032a5c:	e7fa      	b.n	8032a54 <snmp_netiftoifindex+0x10> 8032a5e:	bf00      	nop 8032a60:	20011070 	.word	0x2001107008032a64 <snmp_oidtoip>: * @param ip points to output struct */voidsnmp_oidtoip(s32_t *ident, ip_addr_t *ip){  IP4_ADDR(ip, ident[0], ident[1], ident[2], ident[3]); 8032a64:	7802      	ldrb	r2, [r0, #0] 8032a66:	68c3      	ldr	r3, [r0, #12] 8032a68:	ea42 6303 	orr.w	r3, r2, r3, lsl #24 8032a6c:	7a02      	ldrb	r2, [r0, #8] 8032a6e:	ea43 4302 	orr.w	r3, r3, r2, lsl #16 8032a72:	6842      	ldr	r2, [r0, #4] 8032a74:	0612      	lsls	r2, r2, #24 8032a76:	ea43 4312 	orr.w	r3, r3, r2, lsr #16 8032a7a:	600b      	str	r3, [r1, #0] 8032a7c:	4770      	bx	lr08032a7e <snmp_iptooid>: * @param ident points to s32_t ident[4] output */voidsnmp_iptooid(ip_addr_t *ip, s32_t *ident){  ident[0] = ip4_addr1(ip); 8032a7e:	7803      	ldrb	r3, [r0, #0] 8032a80:	600b      	str	r3, [r1, #0]  ident[1] = ip4_addr2(ip); 8032a82:	7843      	ldrb	r3, [r0, #1] 8032a84:	604b      	str	r3, [r1, #4]  ident[2] = ip4_addr3(ip); 8032a86:	7883      	ldrb	r3, [r0, #2] 8032a88:	608b      	str	r3, [r1, #8]  ident[3] = ip4_addr4(ip); 8032a8a:	78c3      	ldrb	r3, [r0, #3] 8032a8c:	60cb      	str	r3, [r1, #12] 8032a8e:	4770      	bx	lr08032a90 <snmp_mib_ln_alloc>:}struct mib_list_node *snmp_mib_ln_alloc(s32_t id){ 8032a90:	b510      	push	{r4, lr} 8032a92:	4604      	mov	r4, r0  struct mib_list_node *ln;  ln = (struct mib_list_node *)memp_malloc(MEMP_SNMP_NODE); 8032a94:	200b      	movs	r0, #11 8032a96:	f7fa fecd 	bl	802d834 <memp_malloc>  if (ln != NULL) 8032a9a:	b120      	cbz	r0, 8032aa6 <snmp_mib_ln_alloc+0x16>  {    ln->prev = NULL; 8032a9c:	2300      	movs	r3, #0 8032a9e:	6003      	str	r3, [r0, #0]    ln->next = NULL; 8032aa0:	6043      	str	r3, [r0, #4]    ln->objid = id; 8032aa2:	6084      	str	r4, [r0, #8]    ln->nptr = NULL; 8032aa4:	60c3      	str	r3, [r0, #12]  }  return ln;} 8032aa6:	bd10      	pop	{r4, pc}08032aa8 <snmp_mib_ln_free>:voidsnmp_mib_ln_free(struct mib_list_node *ln){ 8032aa8:	4601      	mov	r1, r0  memp_free(MEMP_SNMP_NODE, ln); 8032aaa:	200b      	movs	r0, #11 8032aac:	f7fa bed8 	b.w	802d860 <memp_free>08032ab0 <snmp_mib_lrn_alloc>:}struct mib_list_rootnode *snmp_mib_lrn_alloc(void){ 8032ab0:	b508      	push	{r3, lr}  struct mib_list_rootnode *lrn;  lrn = (struct mib_list_rootnode*)memp_malloc(MEMP_SNMP_ROOTNODE); 8032ab2:	200a      	movs	r0, #10 8032ab4:	f7fa febe 	bl	802d834 <memp_malloc>  if (lrn != NULL) 8032ab8:	b170      	cbz	r0, 8032ad8 <snmp_mib_lrn_alloc+0x28>  {    lrn->get_object_def = noleafs_get_object_def; 8032aba:	4b08      	ldr	r3, [pc, #32]	; (8032adc <snmp_mib_lrn_alloc+0x2c>) 8032abc:	6003      	str	r3, [r0, #0]    lrn->get_value = noleafs_get_value; 8032abe:	4b08      	ldr	r3, [pc, #32]	; (8032ae0 <snmp_mib_lrn_alloc+0x30>) 8032ac0:	6043      	str	r3, [r0, #4]    lrn->set_test = noleafs_set_test; 8032ac2:	4b08      	ldr	r3, [pc, #32]	; (8032ae4 <snmp_mib_lrn_alloc+0x34>) 8032ac4:	6083      	str	r3, [r0, #8]    lrn->set_value = noleafs_set_value; 8032ac6:	4b08      	ldr	r3, [pc, #32]	; (8032ae8 <snmp_mib_lrn_alloc+0x38>) 8032ac8:	60c3      	str	r3, [r0, #12]    lrn->node_type = MIB_NODE_LR; 8032aca:	2304      	movs	r3, #4 8032acc:	7403      	strb	r3, [r0, #16]    lrn->maxlength = 0; 8032ace:	2300      	movs	r3, #0 8032ad0:	8243      	strh	r3, [r0, #18]    lrn->head = NULL; 8032ad2:	6143      	str	r3, [r0, #20]    lrn->tail = NULL; 8032ad4:	6183      	str	r3, [r0, #24]    lrn->count = 0; 8032ad6:	8383      	strh	r3, [r0, #28]  }  return lrn;} 8032ad8:	bd08      	pop	{r3, pc} 8032ada:	bf00      	nop 8032adc:	08031407 	.word	0x08031407 8032ae0:	0803140d 	.word	0x0803140d 8032ae4:	0803140f 	.word	0x0803140f 8032ae8:	08031413 	.word	0x0803141308032aec <snmp_mib_lrn_free>:voidsnmp_mib_lrn_free(struct mib_list_rootnode *lrn){ 8032aec:	4601      	mov	r1, r0  memp_free(MEMP_SNMP_ROOTNODE, lrn); 8032aee:	200a      	movs	r0, #10 8032af0:	f7fa beb6 	b.w	802d860 <memp_free>08032af4 <snmp_mib_node_insert>: *   used for constructing the tree. * @return -1 if failed, 1 if inserted, 2 if present. */s8_tsnmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn){ 8032af4:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8032af6:	4605      	mov	r5, r0 8032af8:	4616      	mov	r6, r2  LWIP_ASSERT("rn != NULL",rn != NULL);  /* -1 = malloc failure, 0 = not inserted, 1 = inserted, 2 = was present */  insert = 0;  if (rn->head == NULL) 8032afa:	696c      	ldr	r4, [r5, #20] *   used for constructing the tree. * @return -1 if failed, 1 if inserted, 2 if present. */s8_tsnmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn){ 8032afc:	4608      	mov	r0, r1  LWIP_ASSERT("rn != NULL",rn != NULL);  /* -1 = malloc failure, 0 = not inserted, 1 = inserted, 2 = was present */  insert = 0;  if (rn->head == NULL) 8032afe:	b93c      	cbnz	r4, 8032b10 <snmp_mib_node_insert+0x1c>  {    /* empty list, add first node */    LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc empty list objid==%"S32_F"\n",objid));    nn = snmp_mib_ln_alloc(objid); 8032b00:	f7ff ffc6 	bl	8032a90 <snmp_mib_ln_alloc>    if (nn != NULL) 8032b04:	b350      	cbz	r0, 8032b5c <snmp_mib_node_insert+0x68>    {      rn->head = nn; 8032b06:	6168      	str	r0, [r5, #20]      rn->tail = nn; 8032b08:	61a8      	str	r0, [r5, #24]      *insn = nn; 8032b0a:	6030      	str	r0, [r6, #0] 8032b0c:	e021      	b.n	8032b52 <snmp_mib_node_insert+0x5e>        *insn = n;        insert = 2;      }      else if (n->objid < objid)      {        if (n->next == NULL) 8032b0e:	463c      	mov	r4, r7    struct mib_list_node *n;    /* at least one node is present */    n = rn->head;    while ((n != NULL) && (insert == 0))    {      if (n->objid == objid) 8032b10:	68a3      	ldr	r3, [r4, #8] 8032b12:	4283      	cmp	r3, r0 8032b14:	d102      	bne.n	8032b1c <snmp_mib_node_insert+0x28>      {        /* node is already there */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("node already there objid==%"S32_F"\n",objid));        *insn = n; 8032b16:	6034      	str	r4, [r6, #0]        insert = 2; 8032b18:	2302      	movs	r3, #2 8032b1a:	e023      	b.n	8032b64 <snmp_mib_node_insert+0x70>      }      else if (n->objid < objid) 8032b1c:	da0a      	bge.n	8032b34 <snmp_mib_node_insert+0x40>      {        if (n->next == NULL) 8032b1e:	6867      	ldr	r7, [r4, #4] 8032b20:	2f00      	cmp	r7, #0 8032b22:	d1f4      	bne.n	8032b0e <snmp_mib_node_insert+0x1a>        {          /* alloc and insert at the tail */          LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc ins tail objid==%"S32_F"\n",objid));          nn = snmp_mib_ln_alloc(objid); 8032b24:	f7ff ffb4 	bl	8032a90 <snmp_mib_ln_alloc>          if (nn != NULL) 8032b28:	b1d8      	cbz	r0, 8032b62 <snmp_mib_node_insert+0x6e>          {            nn->next = NULL;            nn->prev = n; 8032b2a:	e880 0090 	stmia.w	r0, {r4, r7}            n->next = nn; 8032b2e:	6060      	str	r0, [r4, #4]            rn->tail = nn; 8032b30:	61a8      	str	r0, [r5, #24] 8032b32:	e00b      	b.n	8032b4c <snmp_mib_node_insert+0x58>      else      {        /* n->objid > objid */        /* alloc and insert between n->prev and n */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc ins n->prev, objid==%"S32_F", n\n",objid));        nn = snmp_mib_ln_alloc(objid); 8032b34:	f7ff ffac 	bl	8032a90 <snmp_mib_ln_alloc>        if (nn != NULL) 8032b38:	b198      	cbz	r0, 8032b62 <snmp_mib_node_insert+0x6e>        {          if (n->prev == NULL) 8032b3a:	6822      	ldr	r2, [r4, #0]          {            /* insert at the head */            nn->next = n;            nn->prev = NULL; 8032b3c:	e880 0014 	stmia.w	r0, {r2, r4}        /* alloc and insert between n->prev and n */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc ins n->prev, objid==%"S32_F", n\n",objid));        nn = snmp_mib_ln_alloc(objid);        if (nn != NULL)        {          if (n->prev == NULL) 8032b40:	b90a      	cbnz	r2, 8032b46 <snmp_mib_node_insert+0x52>          {            /* insert at the head */            nn->next = n;            nn->prev = NULL;            rn->head = nn; 8032b42:	6168      	str	r0, [r5, #20] 8032b44:	e001      	b.n	8032b4a <snmp_mib_node_insert+0x56>          else          {            /* insert in the middle */            nn->next = n;            nn->prev = n->prev;            n->prev->next = nn; 8032b46:	6822      	ldr	r2, [r4, #0] 8032b48:	6050      	str	r0, [r2, #4]            n->prev = nn; 8032b4a:	6020      	str	r0, [r4, #0]          }          *insn = nn; 8032b4c:	6030      	str	r0, [r6, #0]          insert = 1; 8032b4e:	2301      	movs	r3, #1 8032b50:	e008      	b.n	8032b64 <snmp_mib_node_insert+0x70>      }    }  }  if (insert == 1)  {    rn->count += 1; 8032b52:	8bab      	ldrh	r3, [r5, #28] 8032b54:	3301      	adds	r3, #1 8032b56:	83ab      	strh	r3, [r5, #28] 8032b58:	2301      	movs	r3, #1 8032b5a:	e000      	b.n	8032b5e <snmp_mib_node_insert+0x6a>      *insn = nn;      insert = 1;    }    else    {      insert = -1; 8032b5c:	23ff      	movs	r3, #255	; 0xff  if (insert == 1)  {    rn->count += 1;  }  LWIP_ASSERT("insert != 0",insert != 0);  return insert; 8032b5e:	b258      	sxtb	r0, r3 8032b60:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}          insert = 1;        }        else        {          /* insertion failure */          insert = -1; 8032b62:	23ff      	movs	r3, #255	; 0xff        }      }    }  }  if (insert == 1) 8032b64:	2b01      	cmp	r3, #1 8032b66:	d1fa      	bne.n	8032b5e <snmp_mib_node_insert+0x6a> 8032b68:	e7f3      	b.n	8032b52 <snmp_mib_node_insert+0x5e>08032b6a <snmp_mib_node_find>:{  s8_t fc;  struct mib_list_node *n;  LWIP_ASSERT("rn != NULL",rn != NULL);  n = rn->head; 8032b6a:	6943      	ldr	r3, [r0, #20]  while ((n != NULL) && (n->objid != objid)) 8032b6c:	e000      	b.n	8032b70 <snmp_mib_node_find+0x6>  {    n = n->next; 8032b6e:	685b      	ldr	r3, [r3, #4]  s8_t fc;  struct mib_list_node *n;  LWIP_ASSERT("rn != NULL",rn != NULL);  n = rn->head;  while ((n != NULL) && (n->objid != objid)) 8032b70:	b16b      	cbz	r3, 8032b8e <snmp_mib_node_find+0x24> 8032b72:	6898      	ldr	r0, [r3, #8] 8032b74:	4288      	cmp	r0, r1 8032b76:	d1fa      	bne.n	8032b6e <snmp_mib_node_find+0x4>  }  if (n == NULL)  {    fc = 0;  }  else if (n->nptr == NULL) 8032b78:	68d9      	ldr	r1, [r3, #12] 8032b7a:	b161      	cbz	r1, 8032b96 <snmp_mib_node_find+0x2c>  }  else  {    struct mib_list_rootnode *r;    if (n->nptr->node_type == MIB_NODE_LR) 8032b7c:	7c08      	ldrb	r0, [r1, #16] 8032b7e:	2804      	cmp	r0, #4 8032b80:	d107      	bne.n	8032b92 <snmp_mib_node_find+0x28>    {      r = (struct mib_list_rootnode *)n->nptr;      if (r->count > 1) 8032b82:	8b88      	ldrh	r0, [r1, #28]      {        /* can't delete node */        fc = 2; 8032b84:	2801      	cmp	r0, #1 8032b86:	bf94      	ite	ls 8032b88:	2001      	movls	r0, #1 8032b8a:	2002      	movhi	r0, #2 8032b8c:	e004      	b.n	8032b98 <snmp_mib_node_find+0x2e>  {    n = n->next;  }  if (n == NULL)  {    fc = 0; 8032b8e:	4618      	mov	r0, r3 8032b90:	e002      	b.n	8032b98 <snmp_mib_node_find+0x2e>      }    }    else    {      /* other node type */      fc = 3; 8032b92:	2003      	movs	r0, #3 8032b94:	e000      	b.n	8032b98 <snmp_mib_node_find+0x2e>    fc = 0;  }  else if (n->nptr == NULL)  {    /* leaf, can delete node */    fc = 1; 8032b96:	2001      	movs	r0, #1    {      /* other node type */      fc = 3;    }  }  *fn = n; 8032b98:	6013      	str	r3, [r2, #0]  return fc;} 8032b9a:	b240      	sxtb	r0, r0 8032b9c:	4770      	bx	lr08032b9e <snmp_mib_node_delete>: * @param n points to the node to delete * @return the nptr to be freed by caller */struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n){ 8032b9e:	b538      	push	{r3, r4, r5, lr}  LWIP_ASSERT("rn != NULL",rn != NULL);  LWIP_ASSERT("n != NULL",n != NULL);  /* caller must remove this sub-tree */  next = (struct mib_list_rootnode*)(n->nptr);  rn->count -= 1; 8032ba0:	8b83      	ldrh	r3, [r0, #28]  LWIP_ASSERT("rn != NULL",rn != NULL);  LWIP_ASSERT("n != NULL",n != NULL);  /* caller must remove this sub-tree */  next = (struct mib_list_rootnode*)(n->nptr); 8032ba2:	68cd      	ldr	r5, [r1, #12]  rn->count -= 1; 8032ba4:	3b01      	subs	r3, #1 8032ba6:	8383      	strh	r3, [r0, #28]  if (n == rn->head) 8032ba8:	6943      	ldr	r3, [r0, #20] 8032baa:	4299      	cmp	r1, r3 * @param n points to the node to delete * @return the nptr to be freed by caller */struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n){ 8032bac:	4604      	mov	r4, r0  /* caller must remove this sub-tree */  next = (struct mib_list_rootnode*)(n->nptr);  rn->count -= 1;  if (n == rn->head) 8032bae:	d105      	bne.n	8032bbc <snmp_mib_node_delete+0x1e>  {    rn->head = n->next; 8032bb0:	684b      	ldr	r3, [r1, #4] 8032bb2:	6143      	str	r3, [r0, #20]    if (n->next != NULL) 8032bb4:	b17b      	cbz	r3, 8032bd6 <snmp_mib_node_delete+0x38>    {      /* not last node, new list begin */      n->next->prev = NULL; 8032bb6:	2200      	movs	r2, #0 8032bb8:	601a      	str	r2, [r3, #0] 8032bba:	e00c      	b.n	8032bd6 <snmp_mib_node_delete+0x38>    }  }  else if (n == rn->tail) 8032bbc:	6983      	ldr	r3, [r0, #24] 8032bbe:	4299      	cmp	r1, r3 8032bc0:	680b      	ldr	r3, [r1, #0] 8032bc2:	d104      	bne.n	8032bce <snmp_mib_node_delete+0x30>  {    rn->tail = n->prev; 8032bc4:	6183      	str	r3, [r0, #24]    if (n->prev != NULL) 8032bc6:	b133      	cbz	r3, 8032bd6 <snmp_mib_node_delete+0x38>    {      /* not last node, new list end */      n->prev->next = NULL; 8032bc8:	2200      	movs	r2, #0 8032bca:	605a      	str	r2, [r3, #4] 8032bcc:	e003      	b.n	8032bd6 <snmp_mib_node_delete+0x38>    }  }  else  {    /* node must be in the middle */    n->prev->next = n->next; 8032bce:	684a      	ldr	r2, [r1, #4] 8032bd0:	605a      	str	r2, [r3, #4]    n->next->prev = n->prev; 8032bd2:	684a      	ldr	r2, [r1, #4] 8032bd4:	6013      	str	r3, [r2, #0]  }  LWIP_DEBUGF(SNMP_MIB_DEBUG,("free list objid==%"S32_F"\n",n->objid));  snmp_mib_ln_free(n); 8032bd6:	4608      	mov	r0, r1 8032bd8:	f7ff ff66 	bl	8032aa8 <snmp_mib_ln_free>  if (rn->count == 0) 8032bdc:	8ba3      	ldrh	r3, [r4, #28] 8032bde:	b90b      	cbnz	r3, 8032be4 <snmp_mib_node_delete+0x46>  {    rn->head = NULL; 8032be0:	6163      	str	r3, [r4, #20]    rn->tail = NULL; 8032be2:	61a3      	str	r3, [r4, #24]  }  return next;} 8032be4:	4628      	mov	r0, r5 8032be6:	bd38      	pop	{r3, r4, r5, pc}08032be8 <snmp_search_tree>: * @param np points to the found object instance (return) * @return pointer to the requested parent (!) node if success, NULL otherwise */struct mib_node *snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np){ 8032be8:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8032bec:	4604      	mov	r4, r0 8032bee:	b085      	sub	sp, #20 8032bf0:	460d      	mov	r5, r1 8032bf2:	461e      	mov	r6, r3 * @param ident points to the array of sub identifiers * @param np points to the found object instance (return) * @return pointer to the requested parent (!) node if success, NULL otherwise */struct mib_node *snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np) 8032bf4:	f102 0804 	add.w	r8, r2, #4{  u8_t node_type, ext_level;  ext_level = 0; 8032bf8:	f04f 0b00 	mov.w	fp, #0  LWIP_DEBUGF(SNMP_MIB_DEBUG,("node==%p *ident==%"S32_F"\n",(void*)node,*ident));  while (node != NULL) 8032bfc:	e068      	b.n	8032cd0 <snmp_search_tree+0xe8>  {    node_type = node->node_type; 8032bfe:	7c23      	ldrb	r3, [r4, #16]    if ((node_type == MIB_NODE_AR) || (node_type == MIB_NODE_RA)) 8032c00:	1e9a      	subs	r2, r3, #2 8032c02:	2a01      	cmp	r2, #1 8032c04:	d812      	bhi.n	8032c2c <snmp_search_tree+0x44>    {      struct mib_array_node *an;      u16_t i;      if (ident_len > 0) 8032c06:	b90d      	cbnz	r5, 8032c0c <snmp_search_tree+0x24>      }      else      {        /* search failed, short object identifier (nosuchname) */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("an search failed, short object identifier\n"));        return NULL; 8032c08:	2000      	movs	r0, #0 8032c0a:	e06a      	b.n	8032ce2 <snmp_search_tree+0xfa>      if (ident_len > 0)      {        /* array node (internal ROM or RAM, fixed length) */        an = (struct mib_array_node *)node;        i = 0;        while ((i < an->maxlength) && (an->objid[i] != *ident)) 8032c0c:	8a67      	ldrh	r7, [r4, #18] 8032c0e:	2300      	movs	r3, #0 8032c10:	b29a      	uxth	r2, r3 8032c12:	42ba      	cmp	r2, r7 8032c14:	d2f8      	bcs.n	8032c08 <snmp_search_tree+0x20> 8032c16:	009a      	lsls	r2, r3, #2 8032c18:	6961      	ldr	r1, [r4, #20] 8032c1a:	5888      	ldr	r0, [r1, r2] 8032c1c:	f858 1c04 	ldr.w	r1, [r8, #-4] 8032c20:	3301      	adds	r3, #1 8032c22:	4288      	cmp	r0, r1 8032c24:	d1f4      	bne.n	8032c10 <snmp_search_tree+0x28>        }        if (i < an->maxlength)        {          /* found it, if available proceed to child, otherwise inspect leaf */          LWIP_DEBUGF(SNMP_MIB_DEBUG,("an->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,an->objid[i],*ident));          if (an->nptr[i] == NULL) 8032c26:	69a3      	ldr	r3, [r4, #24] 8032c28:	589b      	ldr	r3, [r3, r2] 8032c2a:	e057      	b.n	8032cdc <snmp_search_tree+0xf4>        /* search failed, short object identifier (nosuchname) */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("an search failed, short object identifier\n"));        return NULL;      }    }    else if(node_type == MIB_NODE_LR) 8032c2c:	2b04      	cmp	r3, #4 8032c2e:	d10c      	bne.n	8032c4a <snmp_search_tree+0x62>    {      struct mib_list_rootnode *lrn;      struct mib_list_node *ln;      if (ident_len > 0) 8032c30:	2d00      	cmp	r5, #0 8032c32:	d0e9      	beq.n	8032c08 <snmp_search_tree+0x20>      {        /* list root node (internal 'RAM', variable length) */        lrn = (struct mib_list_rootnode *)node;        ln = lrn->head; 8032c34:	6963      	ldr	r3, [r4, #20]        /* iterate over list, head to tail */        while ((ln != NULL) && (ln->objid != *ident)) 8032c36:	e000      	b.n	8032c3a <snmp_search_tree+0x52>        {          ln = ln->next; 8032c38:	685b      	ldr	r3, [r3, #4]      {        /* list root node (internal 'RAM', variable length) */        lrn = (struct mib_list_rootnode *)node;        ln = lrn->head;        /* iterate over list, head to tail */        while ((ln != NULL) && (ln->objid != *ident)) 8032c3a:	2b00      	cmp	r3, #0 8032c3c:	d0e4      	beq.n	8032c08 <snmp_search_tree+0x20> 8032c3e:	6899      	ldr	r1, [r3, #8] 8032c40:	f858 2c04 	ldr.w	r2, [r8, #-4] 8032c44:	4291      	cmp	r1, r2 8032c46:	d1f7      	bne.n	8032c38 <snmp_search_tree+0x50> 8032c48:	e047      	b.n	8032cda <snmp_search_tree+0xf2>        /* search failed, short object identifier (nosuchname) */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln search failed, short object identifier\n"));        return NULL;      }    }    else if(node_type == MIB_NODE_EX) 8032c4a:	2b05      	cmp	r3, #5 8032c4c:	d12e      	bne.n	8032cac <snmp_search_tree+0xc4>    {      struct mib_external_node *en;      u16_t i, len;      if (ident_len > 0) 8032c4e:	2d00      	cmp	r5, #0 8032c50:	d0da      	beq.n	8032c08 <snmp_search_tree+0x20>      {        /* external node (addressing and access via functions) */        en = (struct mib_external_node *)node;        i = 0;        len = en->level_length(en->addr_inf,ext_level); 8032c52:	69e3      	ldr	r3, [r4, #28] 8032c54:	6960      	ldr	r0, [r4, #20] 8032c56:	4659      	mov	r1, fp 8032c58:	4798      	blx	r3      if (ident_len > 0)      {        /* external node (addressing and access via functions) */        en = (struct mib_external_node *)node;        i = 0; 8032c5a:	f04f 0900 	mov.w	r9, #0        len = en->level_length(en->addr_inf,ext_level); 8032c5e:	4684      	mov	ip, r0        while ((i < len) && (en->ident_cmp(en->addr_inf,ext_level,i,*ident) != 0)) 8032c60:	e003      	b.n	8032c6a <snmp_search_tree+0x82>        {          i++; 8032c62:	f109 0901 	add.w	r9, r9, #1 8032c66:	fa1f f989 	uxth.w	r9, r9        /* external node (addressing and access via functions) */        en = (struct mib_external_node *)node;        i = 0;        len = en->level_length(en->addr_inf,ext_level);        while ((i < len) && (en->ident_cmp(en->addr_inf,ext_level,i,*ident) != 0)) 8032c6a:	45e1      	cmp	r9, ip 8032c6c:	d0cc      	beq.n	8032c08 <snmp_search_tree+0x20> 8032c6e:	6960      	ldr	r0, [r4, #20] 8032c70:	f858 3c04 	ldr.w	r3, [r8, #-4] 8032c74:	6a27      	ldr	r7, [r4, #32] 8032c76:	f8cd c004 	str.w	ip, [sp, #4] 8032c7a:	4659      	mov	r1, fp 8032c7c:	464a      	mov	r2, r9 8032c7e:	47b8      	blx	r7 8032c80:	f8dd c004 	ldr.w	ip, [sp, #4] 8032c84:	2800      	cmp	r0, #0 8032c86:	d1ec      	bne.n	8032c62 <snmp_search_tree+0x7a>        {          i++;        }        if (i < len) 8032c88:	45e1      	cmp	r9, ip 8032c8a:	d2bd      	bcs.n	8032c08 <snmp_search_tree+0x20>        {          s32_t debug_id;          en->get_objid(en->addr_inf,ext_level,i,&debug_id); 8032c8c:	4659      	mov	r1, fp 8032c8e:	ab03      	add	r3, sp, #12 8032c90:	6a67      	ldr	r7, [r4, #36]	; 0x24 8032c92:	6960      	ldr	r0, [r4, #20] 8032c94:	464a      	mov	r2, r9 8032c96:	47b8      	blx	r7          LWIP_DEBUGF(SNMP_MIB_DEBUG,("en->objid==%"S32_F" *ident==%"S32_F"\n",debug_id,*ident));          if ((ext_level + 1) == en->tree_levels) 8032c98:	7e23      	ldrb	r3, [r4, #24] 8032c9a:	f10b 0b01 	add.w	fp, fp, #1 8032c9e:	459b      	cmp	fp, r3 8032ca0:	d100      	bne.n	8032ca4 <snmp_search_tree+0xbc> 8032ca2:	e00b      	b.n	8032cbc <snmp_search_tree+0xd4>          else          {            /* found it, proceed to child */            ident_len--;            ident++;            ext_level++; 8032ca4:	fa5f fb8b 	uxtb.w	fp, fp 8032ca8:	4623      	mov	r3, r4 8032caa:	e00c      	b.n	8032cc6 <snmp_search_tree+0xde>        /* search failed, short object identifier (nosuchname) */        LWIP_DEBUGF(SNMP_MIB_DEBUG,("en search failed, short object identifier\n"));        return NULL;      }    }    else if (node_type == MIB_NODE_SC) 8032cac:	2b01      	cmp	r3, #1 8032cae:	d1ab      	bne.n	8032c08 <snmp_search_tree+0x20>    {      mib_scalar_node *sn;      sn = (mib_scalar_node *)node;      if ((ident_len == 1) && (*ident == 0)) 8032cb0:	2d01      	cmp	r5, #1 8032cb2:	d1a9      	bne.n	8032c08 <snmp_search_tree+0x20> 8032cb4:	f8da 3000 	ldr.w	r3, [sl] 8032cb8:	2b00      	cmp	r3, #0 8032cba:	d1a5      	bne.n	8032c08 <snmp_search_tree+0x20>      {        np->ident_len = ident_len; 8032cbc:	7035      	strb	r5, [r6, #0]        np->ident = ident; 8032cbe:	f8c6 a004 	str.w	sl, [r6, #4]        return (struct mib_node*)sn; 8032cc2:	4620      	mov	r0, r4 8032cc4:	e00d      	b.n	8032ce2 <snmp_search_tree+0xfa> 8032cc6:	3d01      	subs	r5, #1 8032cc8:	b2ed      	uxtb	r5, r5 8032cca:	f108 0804 	add.w	r8, r8, #4 8032cce:	461c      	mov	r4, r3 * @param ident points to the array of sub identifiers * @param np points to the found object instance (return) * @return pointer to the requested parent (!) node if success, NULL otherwise */struct mib_node *snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np) 8032cd0:	f1a8 0a04 	sub.w	sl, r8, #4{  u8_t node_type, ext_level;  ext_level = 0;  LWIP_DEBUGF(SNMP_MIB_DEBUG,("node==%p *ident==%"S32_F"\n",(void*)node,*ident));  while (node != NULL) 8032cd4:	2c00      	cmp	r4, #0 8032cd6:	d192      	bne.n	8032bfe <snmp_search_tree+0x16> 8032cd8:	e796      	b.n	8032c08 <snmp_search_tree+0x20>        }        if (ln != NULL)        {          /* found it, proceed to child */;          LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln->objid==%"S32_F" *ident==%"S32_F"\n",ln->objid,*ident));          if (ln->nptr == NULL) 8032cda:	68db      	ldr	r3, [r3, #12] 8032cdc:	2b00      	cmp	r3, #0 8032cde:	d1f2      	bne.n	8032cc6 <snmp_search_tree+0xde> 8032ce0:	e7ec      	b.n	8032cbc <snmp_search_tree+0xd4>    }  }  /* done, found nothing */  LWIP_DEBUGF(SNMP_MIB_DEBUG,("search failed node==%p\n",(void*)node));  return NULL;} 8032ce2:	b005      	add	sp, #20 8032ce4:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}08032ce8 <snmp_expand_tree>:/** * Tree expansion. */struct mib_node *snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret){ 8032ce8:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8032cec:	461d      	mov	r5, r3 8032cee:	b08b      	sub	sp, #44	; 0x2c  u8_t node_type, ext_level, climb_tree;  ext_level = 0;  /* reset node stack */  node_stack_cnt = 0; 8032cf0:	4ba4      	ldr	r3, [pc, #656]	; (8032f84 <snmp_expand_tree+0x29c>) 8032cf2:	f04f 0a00 	mov.w	sl, #0            j = (u8_t)i + 1;            if (j < len)            {              /* right node is the current external node */              cur_node.r_ptr = node;              en->get_objid(en->addr_inf,ext_level,j,&cur_node.r_id); 8032cf6:	af08      	add	r7, sp, #32/** * Tree expansion. */struct mib_node *snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret){ 8032cf8:	4604      	mov	r4, r0 8032cfa:	460e      	mov	r6, r1 8032cfc:	4690      	mov	r8, r2  u8_t node_type, ext_level, climb_tree;  ext_level = 0;  /* reset node stack */  node_stack_cnt = 0; 8032cfe:	f883 a000 	strb.w	sl, [r3]            j = (u8_t)i + 1;            if (j < len)            {              /* right node is the current external node */              cur_node.r_ptr = node;              en->get_objid(en->addr_inf,ext_level,j,&cur_node.r_id); 8032d02:	9705      	str	r7, [sp, #20]  u8_t node_type, ext_level, climb_tree;  ext_level = 0;  /* reset node stack */  node_stack_cnt = 0;  while (node != NULL) 8032d04:	e19c      	b.n	8033040 <snmp_expand_tree+0x358>  {    climb_tree = 0;    node_type = node->node_type; 8032d06:	7c23      	ldrb	r3, [r4, #16]    if ((node_type == MIB_NODE_AR) || (node_type == MIB_NODE_RA)) 8032d08:	1e9a      	subs	r2, r3, #2 8032d0a:	2a01      	cmp	r2, #1 8032d0c:	f200 808f 	bhi.w	8032e2e <snmp_expand_tree+0x146> 8032d10:	8a67      	ldrh	r7, [r4, #18]      struct mib_array_node *an;      u16_t i;      /* array node (internal ROM or RAM, fixed length) */      an = (struct mib_array_node *)node;      if (ident_len > 0) 8032d12:	b90e      	cbnz	r6, 8032d18 <snmp_expand_tree+0x30>      else      {        u8_t j;        /* ident_len == 0, complete with leftmost '.thing' */        j = 0;        while ((j < an->maxlength) && empty_table(an->nptr[j])) 8032d14:	46b1      	mov	r9, r6 8032d16:	e06f      	b.n	8032df8 <snmp_expand_tree+0x110>      /* array node (internal ROM or RAM, fixed length) */      an = (struct mib_array_node *)node;      if (ident_len > 0)      {        i = 0;        while ((i < an->maxlength) && (an->objid[i] < *ident)) 8032d18:	f04f 0c00 	mov.w	ip, #0 8032d1c:	fa1f f28c 	uxth.w	r2, ip 8032d20:	42ba      	cmp	r2, r7 8032d22:	f080 8168 	bcs.w	8032ff6 <snmp_expand_tree+0x30e> 8032d26:	6963      	ldr	r3, [r4, #20] 8032d28:	f853 102c 	ldr.w	r1, [r3, ip, lsl #2] 8032d2c:	f8d8 3000 	ldr.w	r3, [r8] 8032d30:	4299      	cmp	r1, r3 8032d32:	ea4f 098c 	mov.w	r9, ip, lsl #2 8032d36:	f10c 0c01 	add.w	ip, ip, #1 8032d3a:	dbef      	blt.n	8032d1c <snmp_expand_tree+0x34>        }        if (i < an->maxlength)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("an->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,an->objid[i],*ident));          /* add identifier to oidret */          oidret->id[oidret->len] = an->objid[i]; 8032d3c:	782b      	ldrb	r3, [r5, #0] 8032d3e:	eb05 0783 	add.w	r7, r5, r3, lsl #2 8032d42:	6079      	str	r1, [r7, #4]          (oidret->len)++; 8032d44:	1c59      	adds	r1, r3, #1 8032d46:	7029      	strb	r1, [r5, #0]          if (an->nptr[i] == NULL) 8032d48:	f8d4 b018 	ldr.w	fp, [r4, #24] 8032d4c:	f85b 0009 	ldr.w	r0, [fp, r9] 8032d50:	b998      	cbnz	r0, 8032d7a <snmp_expand_tree+0x92>          {            LWIP_DEBUGF(SNMP_MIB_DEBUG,("leaf node\n"));            /* leaf node (e.g. in a fixed size table) */            if (an->objid[i] > *ident) 8032d52:	6960      	ldr	r0, [r4, #20] 8032d54:	f850 6009 	ldr.w	r6, [r0, r9] 8032d58:	f8d8 0000 	ldr.w	r0, [r8] 8032d5c:	4286      	cmp	r6, r0 8032d5e:	f300 8173 	bgt.w	8033048 <snmp_expand_tree+0x360>            {              return (struct mib_node*)an;            }            else if ((i + 1) < an->maxlength) 8032d62:	8a60      	ldrh	r0, [r4, #18]            {              /* an->objid[i] == *ident */              (oidret->len)--; 8032d64:	702b      	strb	r3, [r5, #0]            /* leaf node (e.g. in a fixed size table) */            if (an->objid[i] > *ident)            {              return (struct mib_node*)an;            }            else if ((i + 1) < an->maxlength) 8032d66:	3201      	adds	r2, #1 8032d68:	4282      	cmp	r2, r0 8032d6a:	f280 8144 	bge.w	8032ff6 <snmp_expand_tree+0x30e>            {              /* an->objid[i] == *ident */              (oidret->len)--;              oidret->id[oidret->len] = an->objid[i + 1]; 8032d6e:	6963      	ldr	r3, [r4, #20] 8032d70:	f853 302c 	ldr.w	r3, [r3, ip, lsl #2]              (oidret->len)++; 8032d74:	7029      	strb	r1, [r5, #0]            }            else if ((i + 1) < an->maxlength)            {              /* an->objid[i] == *ident */              (oidret->len)--;              oidret->id[oidret->len] = an->objid[i + 1]; 8032d76:	607b      	str	r3, [r7, #4] 8032d78:	e166      	b.n	8033048 <snmp_expand_tree+0x360>            struct nse cur_node;            LWIP_DEBUGF(SNMP_MIB_DEBUG,("non-leaf node\n"));            /* non-leaf, store right child ptr and id */            LWIP_ASSERT("i < 0xff", i < 0xff);            j = (u8_t)i + 1; 8032d7a:	3201      	adds	r2, #1            while ((j < an->maxlength) && (empty_table(an->nptr[j]))) 8032d7c:	8a61      	ldrh	r1, [r4, #18]            struct nse cur_node;            LWIP_DEBUGF(SNMP_MIB_DEBUG,("non-leaf node\n"));            /* non-leaf, store right child ptr and id */            LWIP_ASSERT("i < 0xff", i < 0xff);            j = (u8_t)i + 1; 8032d7e:	fa5f fc82 	uxtb.w	ip, r2            while ((j < an->maxlength) && (empty_table(an->nptr[j]))) 8032d82:	2700      	movs	r7, #0/** * Tree expansion. */struct mib_node *snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret) 8032d84:	eb0c 0307 	add.w	r3, ip, r7 8032d88:	b2db      	uxtb	r3, r3            LWIP_DEBUGF(SNMP_MIB_DEBUG,("non-leaf node\n"));            /* non-leaf, store right child ptr and id */            LWIP_ASSERT("i < 0xff", i < 0xff);            j = (u8_t)i + 1;            while ((j < an->maxlength) && (empty_table(an->nptr[j]))) 8032d8a:	428b      	cmp	r3, r1 8032d8c:	d21a      	bcs.n	8032dc4 <snmp_expand_tree+0xdc> 8032d8e:	b21b      	sxth	r3, r3 8032d90:	009a      	lsls	r2, r3, #2 8032d92:	f85b 3023 	ldr.w	r3, [fp, r3, lsl #2] 8032d96:	9104      	str	r1, [sp, #16] 8032d98:	4618      	mov	r0, r3 8032d9a:	9203      	str	r2, [sp, #12] 8032d9c:	9302      	str	r3, [sp, #8] 8032d9e:	f8cd c004 	str.w	ip, [sp, #4] 8032da2:	f7ff fe23 	bl	80329ec <empty_table> 8032da6:	3701      	adds	r7, #1 8032da8:	9904      	ldr	r1, [sp, #16] 8032daa:	9a03      	ldr	r2, [sp, #12] 8032dac:	9b02      	ldr	r3, [sp, #8] 8032dae:	f8dd c004 	ldr.w	ip, [sp, #4] 8032db2:	2800      	cmp	r0, #0 8032db4:	d1e6      	bne.n	8032d84 <snmp_expand_tree+0x9c>            {              j++;            }            if (j < an->maxlength)            {              cur_node.r_ptr = an->nptr[j]; 8032db6:	9307      	str	r3, [sp, #28]              cur_node.r_id = an->objid[j]; 8032db8:	6963      	ldr	r3, [r4, #20] 8032dba:	589b      	ldr	r3, [r3, r2]              cur_node.r_nl = 0; 8032dbc:	f88d 0024 	strb.w	r0, [sp, #36]	; 0x24              j++;            }            if (j < an->maxlength)            {              cur_node.r_ptr = an->nptr[j];              cur_node.r_id = an->objid[j]; 8032dc0:	9308      	str	r3, [sp, #32] 8032dc2:	e001      	b.n	8032dc8 <snmp_expand_tree+0xe0>              cur_node.r_nl = 0;            }            else            {              cur_node.r_ptr = NULL; 8032dc4:	2300      	movs	r3, #0 8032dc6:	9307      	str	r3, [sp, #28]            }            push_node(&cur_node); 8032dc8:	a807      	add	r0, sp, #28 8032dca:	f7ff fdfb 	bl	80329c4 <push_node>            if (an->objid[i] == *ident) 8032dce:	6963      	ldr	r3, [r4, #20] 8032dd0:	f853 2009 	ldr.w	r2, [r3, r9] 8032dd4:	f8d8 3000 	ldr.w	r3, [r8] 8032dd8:	429a      	cmp	r2, r3 8032dda:	d104      	bne.n	8032de6 <snmp_expand_tree+0xfe>            {              ident_len--; 8032ddc:	3e01      	subs	r6, #1 8032dde:	b2f6      	uxtb	r6, r6              ident++; 8032de0:	f108 0804 	add.w	r8, r8, #4 8032de4:	e000      	b.n	8032de8 <snmp_expand_tree+0x100>            }            else            {              /* an->objid[i] < *ident */              ident_len = 0; 8032de6:	2600      	movs	r6, #0            }            /* follow next child pointer */            node = an->nptr[i]; 8032de8:	69a3      	ldr	r3, [r4, #24] 8032dea:	f853 3009 	ldr.w	r3, [r3, r9] 8032dee:	e140      	b.n	8033072 <snmp_expand_tree+0x38a>        u8_t j;        /* ident_len == 0, complete with leftmost '.thing' */        j = 0;        while ((j < an->maxlength) && empty_table(an->nptr[j]))        {          j++; 8032df0:	f109 0901 	add.w	r9, r9, #1 8032df4:	fa5f f989 	uxtb.w	r9, r9      else      {        u8_t j;        /* ident_len == 0, complete with leftmost '.thing' */        j = 0;        while ((j < an->maxlength) && empty_table(an->nptr[j])) 8032df8:	45b9      	cmp	r9, r7 8032dfa:	f080 80fc 	bcs.w	8032ff6 <snmp_expand_tree+0x30e> 8032dfe:	fa0f f289 	sxth.w	r2, r9 8032e02:	69a3      	ldr	r3, [r4, #24] 8032e04:	f853 0022 	ldr.w	r0, [r3, r2, lsl #2] 8032e08:	ea4f 0b82 	mov.w	fp, r2, lsl #2 8032e0c:	f7ff fdee 	bl	80329ec <empty_table> 8032e10:	2800      	cmp	r0, #0 8032e12:	d1ed      	bne.n	8032df0 <snmp_expand_tree+0x108>          j++;        }        if (j < an->maxlength)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("left an->objid[j]==%"S32_F"\n",an->objid[j]));          oidret->id[oidret->len] = an->objid[j]; 8032e14:	6962      	ldr	r2, [r4, #20] 8032e16:	782b      	ldrb	r3, [r5, #0] 8032e18:	f852 100b 	ldr.w	r1, [r2, fp] 8032e1c:	eb05 0283 	add.w	r2, r5, r3, lsl #2          (oidret->len)++; 8032e20:	3301      	adds	r3, #1 8032e22:	702b      	strb	r3, [r5, #0]          if (an->nptr[j] == NULL) 8032e24:	69a3      	ldr	r3, [r4, #24]          j++;        }        if (j < an->maxlength)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("left an->objid[j]==%"S32_F"\n",an->objid[j]));          oidret->id[oidret->len] = an->objid[j]; 8032e26:	6051      	str	r1, [r2, #4]          (oidret->len)++;          if (an->nptr[j] == NULL) 8032e28:	f853 300b 	ldr.w	r3, [r3, fp] 8032e2c:	e11f      	b.n	803306e <snmp_expand_tree+0x386>          /* j == an->maxlength */          climb_tree = 1;        }      }    }    else if(node_type == MIB_NODE_LR) 8032e2e:	2b04      	cmp	r3, #4 8032e30:	d14c      	bne.n	8032ecc <snmp_expand_tree+0x1e4> 8032e32:	6967      	ldr	r7, [r4, #20]      struct mib_list_rootnode *lrn;      struct mib_list_node *ln;      /* list root node (internal 'RAM', variable length) */      lrn = (struct mib_list_rootnode *)node;      if (ident_len > 0) 8032e34:	2e00      	cmp	r6, #0 8032e36:	d040      	beq.n	8032eba <snmp_expand_tree+0x1d2>      {        ln = lrn->head;        /* iterate over list, head to tail */        while ((ln != NULL) && (ln->objid < *ident)) 8032e38:	e000      	b.n	8032e3c <snmp_expand_tree+0x154>        {          ln = ln->next; 8032e3a:	687f      	ldr	r7, [r7, #4]      lrn = (struct mib_list_rootnode *)node;      if (ident_len > 0)      {        ln = lrn->head;        /* iterate over list, head to tail */        while ((ln != NULL) && (ln->objid < *ident)) 8032e3c:	2f00      	cmp	r7, #0 8032e3e:	f000 80da 	beq.w	8032ff6 <snmp_expand_tree+0x30e> 8032e42:	68ba      	ldr	r2, [r7, #8] 8032e44:	f8d8 3000 	ldr.w	r3, [r8] 8032e48:	429a      	cmp	r2, r3 8032e4a:	dbf6      	blt.n	8032e3a <snmp_expand_tree+0x152>          ln = ln->next;        }        if (ln != NULL)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln->objid==%"S32_F" *ident==%"S32_F"\n",ln->objid,*ident));          oidret->id[oidret->len] = ln->objid; 8032e4c:	782b      	ldrb	r3, [r5, #0] 8032e4e:	eb05 0183 	add.w	r1, r5, r3, lsl #2 8032e52:	604a      	str	r2, [r1, #4]          (oidret->len)++; 8032e54:	1c5a      	adds	r2, r3, #1 8032e56:	702a      	strb	r2, [r5, #0]          if (ln->nptr == NULL) 8032e58:	68f8      	ldr	r0, [r7, #12] 8032e5a:	b978      	cbnz	r0, 8032e7c <snmp_expand_tree+0x194>          {            /* leaf node */            if (ln->objid > *ident) 8032e5c:	68b8      	ldr	r0, [r7, #8] 8032e5e:	f8d8 6000 	ldr.w	r6, [r8] 8032e62:	42b0      	cmp	r0, r6 8032e64:	f300 80f0 	bgt.w	8033048 <snmp_expand_tree+0x360>            {              return (struct mib_node*)lrn;            }            else if (ln->next != NULL) 8032e68:	6878      	ldr	r0, [r7, #4]            {              /* ln->objid == *ident */              (oidret->len)--; 8032e6a:	702b      	strb	r3, [r5, #0]            /* leaf node */            if (ln->objid > *ident)            {              return (struct mib_node*)lrn;            }            else if (ln->next != NULL) 8032e6c:	2800      	cmp	r0, #0 8032e6e:	f000 80c2 	beq.w	8032ff6 <snmp_expand_tree+0x30e>            {              /* ln->objid == *ident */              (oidret->len)--;              oidret->id[oidret->len] = ln->next->objid; 8032e72:	687b      	ldr	r3, [r7, #4] 8032e74:	689b      	ldr	r3, [r3, #8]              (oidret->len)++; 8032e76:	702a      	strb	r2, [r5, #0]            }            else if (ln->next != NULL)            {              /* ln->objid == *ident */              (oidret->len)--;              oidret->id[oidret->len] = ln->next->objid; 8032e78:	604b      	str	r3, [r1, #4] 8032e7a:	e0e5      	b.n	8033048 <snmp_expand_tree+0x360>          {            struct mib_list_node *jn;            struct nse cur_node;            /* non-leaf, store right child ptr and id */            jn = ln->next; 8032e7c:	687c      	ldr	r4, [r7, #4]            while ((jn != NULL) && empty_table(jn->nptr)) 8032e7e:	e000      	b.n	8032e82 <snmp_expand_tree+0x19a>            {              jn = jn->next; 8032e80:	6864      	ldr	r4, [r4, #4]            struct mib_list_node *jn;            struct nse cur_node;            /* non-leaf, store right child ptr and id */            jn = ln->next;            while ((jn != NULL) && empty_table(jn->nptr)) 8032e82:	2c00      	cmp	r4, #0 8032e84:	f000 80e9 	beq.w	803305a <snmp_expand_tree+0x372> 8032e88:	f8d4 900c 	ldr.w	r9, [r4, #12] 8032e8c:	4648      	mov	r0, r9 8032e8e:	f7ff fdad 	bl	80329ec <empty_table> 8032e92:	2800      	cmp	r0, #0 8032e94:	d1f4      	bne.n	8032e80 <snmp_expand_tree+0x198> 8032e96:	e0d9      	b.n	803304c <snmp_expand_tree+0x364>            }            else            {              cur_node.r_ptr = NULL;            }            push_node(&cur_node); 8032e98:	a807      	add	r0, sp, #28 8032e9a:	f7ff fd93 	bl	80329c4 <push_node>            if (ln->objid == *ident) 8032e9e:	68ba      	ldr	r2, [r7, #8] 8032ea0:	f8d8 3000 	ldr.w	r3, [r8] 8032ea4:	429a      	cmp	r2, r3 8032ea6:	d104      	bne.n	8032eb2 <snmp_expand_tree+0x1ca>            {              ident_len--; 8032ea8:	3e01      	subs	r6, #1 8032eaa:	b2f6      	uxtb	r6, r6              ident++; 8032eac:	f108 0804 	add.w	r8, r8, #4 8032eb0:	e000      	b.n	8032eb4 <snmp_expand_tree+0x1cc>            }            else            {              /* ln->objid < *ident */              ident_len = 0; 8032eb2:	2600      	movs	r6, #0            }            /* follow next child pointer */            node = ln->nptr; 8032eb4:	68fb      	ldr	r3, [r7, #12] 8032eb6:	e0dc      	b.n	8033072 <snmp_expand_tree+0x38a>        struct mib_list_node *jn;        /* ident_len == 0, complete with leftmost '.thing' */        jn = lrn->head;        while ((jn != NULL) && empty_table(jn->nptr))        {          jn = jn->next; 8032eb8:	687f      	ldr	r7, [r7, #4]      else      {        struct mib_list_node *jn;        /* ident_len == 0, complete with leftmost '.thing' */        jn = lrn->head;        while ((jn != NULL) && empty_table(jn->nptr)) 8032eba:	2f00      	cmp	r7, #0 8032ebc:	f000 809b 	beq.w	8032ff6 <snmp_expand_tree+0x30e> 8032ec0:	68f8      	ldr	r0, [r7, #12] 8032ec2:	f7ff fd93 	bl	80329ec <empty_table> 8032ec6:	2800      	cmp	r0, #0 8032ec8:	d1f6      	bne.n	8032eb8 <snmp_expand_tree+0x1d0> 8032eca:	e0c8      	b.n	803305e <snmp_expand_tree+0x376>          /* jn == NULL */          climb_tree = 1;        }      }    }    else if(node_type == MIB_NODE_EX) 8032ecc:	2b05      	cmp	r3, #5 8032ece:	f040 8086 	bne.w	8032fde <snmp_expand_tree+0x2f6>      struct mib_external_node *en;      s32_t ex_id;      /* external node (addressing and access via functions) */      en = (struct mib_external_node *)node;      if (ident_len > 0) 8032ed2:	2e00      	cmp	r6, #0 8032ed4:	d06e      	beq.n	8032fb4 <snmp_expand_tree+0x2cc>      {        u16_t i, len;        i = 0;        len = en->level_length(en->addr_inf,ext_level); 8032ed6:	69e3      	ldr	r3, [r4, #28] 8032ed8:	6960      	ldr	r0, [r4, #20] 8032eda:	4651      	mov	r1, sl 8032edc:	4798      	blx	r3      en = (struct mib_external_node *)node;      if (ident_len > 0)      {        u16_t i, len;        i = 0; 8032ede:	f04f 0900 	mov.w	r9, #0        len = en->level_length(en->addr_inf,ext_level); 8032ee2:	4683      	mov	fp, r0        while ((i < len) && (en->ident_cmp(en->addr_inf,ext_level,i,*ident) < 0)) 8032ee4:	e003      	b.n	8032eee <snmp_expand_tree+0x206>        {          i++; 8032ee6:	f109 0901 	add.w	r9, r9, #1 8032eea:	fa1f f989 	uxth.w	r9, r9      {        u16_t i, len;        i = 0;        len = en->level_length(en->addr_inf,ext_level);        while ((i < len) && (en->ident_cmp(en->addr_inf,ext_level,i,*ident) < 0)) 8032eee:	45d9      	cmp	r9, fp 8032ef0:	f000 8081 	beq.w	8032ff6 <snmp_expand_tree+0x30e> 8032ef4:	6a27      	ldr	r7, [r4, #32] 8032ef6:	6960      	ldr	r0, [r4, #20] 8032ef8:	f8d8 3000 	ldr.w	r3, [r8] 8032efc:	4651      	mov	r1, sl 8032efe:	464a      	mov	r2, r9 8032f00:	47b8      	blx	r7 8032f02:	2800      	cmp	r0, #0 8032f04:	dbef      	blt.n	8032ee6 <snmp_expand_tree+0x1fe>        {          i++;        }        if (i < len) 8032f06:	45d9      	cmp	r9, fp 8032f08:	d275      	bcs.n	8032ff6 <snmp_expand_tree+0x30e>        {          /* add identifier to oidret */          en->get_objid(en->addr_inf,ext_level,i,&ex_id); 8032f0a:	4651      	mov	r1, sl 8032f0c:	464a      	mov	r2, r9 8032f0e:	ab06      	add	r3, sp, #24 8032f10:	6a67      	ldr	r7, [r4, #36]	; 0x24 8032f12:	6960      	ldr	r0, [r4, #20] 8032f14:	47b8      	blx	r7          LWIP_DEBUGF(SNMP_MIB_DEBUG,("en->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,ex_id,*ident));          oidret->id[oidret->len] = ex_id; 8032f16:	782b      	ldrb	r3, [r5, #0] 8032f18:	9a06      	ldr	r2, [sp, #24] 8032f1a:	eb05 0183 	add.w	r1, r5, r3, lsl #2          (oidret->len)++;          if ((ext_level + 1) == en->tree_levels) 8032f1e:	f10a 0c01 	add.w	ip, sl, #1        if (i < len)        {          /* add identifier to oidret */          en->get_objid(en->addr_inf,ext_level,i,&ex_id);          LWIP_DEBUGF(SNMP_MIB_DEBUG,("en->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,ex_id,*ident));          oidret->id[oidret->len] = ex_id; 8032f22:	604a      	str	r2, [r1, #4]          (oidret->len)++; 8032f24:	1c59      	adds	r1, r3, #1 8032f26:	7029      	strb	r1, [r5, #0]          if ((ext_level + 1) == en->tree_levels) 8032f28:	7e21      	ldrb	r1, [r4, #24] 8032f2a:	458c      	cmp	ip, r1 8032f2c:	d118      	bne.n	8032f60 <snmp_expand_tree+0x278>          {            LWIP_DEBUGF(SNMP_MIB_DEBUG,("leaf node\n"));            /* leaf node */            if (ex_id > *ident) 8032f2e:	f8d8 1000 	ldr.w	r1, [r8] 8032f32:	428a      	cmp	r2, r1 8032f34:	f300 8088 	bgt.w	8033048 <snmp_expand_tree+0x360>            {              return (struct mib_node*)en;            }            else if ((i + 1) < len) 8032f38:	f109 0201 	add.w	r2, r9, #1 8032f3c:	455a      	cmp	r2, fp 8032f3e:	da0d      	bge.n	8032f5c <snmp_expand_tree+0x274>            {              /* ex_id == *ident */              en->get_objid(en->addr_inf,ext_level,i + 1,&ex_id); 8032f40:	ab06      	add	r3, sp, #24 8032f42:	6a66      	ldr	r6, [r4, #36]	; 0x24 8032f44:	6960      	ldr	r0, [r4, #20] 8032f46:	4651      	mov	r1, sl 8032f48:	b292      	uxth	r2, r2 8032f4a:	47b0      	blx	r6              (oidret->len)--; 8032f4c:	782b      	ldrb	r3, [r5, #0] 8032f4e:	3b01      	subs	r3, #1              oidret->id[oidret->len] = ex_id; 8032f50:	b2db      	uxtb	r3, r3 8032f52:	eb05 0583 	add.w	r5, r5, r3, lsl #2 8032f56:	9b06      	ldr	r3, [sp, #24] 8032f58:	606b      	str	r3, [r5, #4] 8032f5a:	e075      	b.n	8033048 <snmp_expand_tree+0x360>              return (struct mib_node*)en;            }            else            {              /* (i + 1) == len */              (oidret->len)--; 8032f5c:	702b      	strb	r3, [r5, #0] 8032f5e:	e04a      	b.n	8032ff6 <snmp_expand_tree+0x30e>            struct nse cur_node;            LWIP_DEBUGF(SNMP_MIB_DEBUG,("non-leaf node\n"));            /* non-leaf, store right child ptr and id */            LWIP_ASSERT("i < 0xff", i < 0xff);            j = (u8_t)i + 1; 8032f60:	f109 0201 	add.w	r2, r9, #1            if (j < len) 8032f64:	b2d2      	uxtb	r2, r2 8032f66:	455a      	cmp	r2, fp 8032f68:	d20e      	bcs.n	8032f88 <snmp_expand_tree+0x2a0>            {              /* right node is the current external node */              cur_node.r_ptr = node; 8032f6a:	9407      	str	r4, [sp, #28]              en->get_objid(en->addr_inf,ext_level,j,&cur_node.r_id); 8032f6c:	6960      	ldr	r0, [r4, #20] 8032f6e:	9b05      	ldr	r3, [sp, #20] 8032f70:	f8cd c004 	str.w	ip, [sp, #4] 8032f74:	4651      	mov	r1, sl 8032f76:	6a67      	ldr	r7, [r4, #36]	; 0x24 8032f78:	47b8      	blx	r7              cur_node.r_nl = ext_level + 1; 8032f7a:	f8dd c004 	ldr.w	ip, [sp, #4] 8032f7e:	f88d c024 	strb.w	ip, [sp, #36]	; 0x24 8032f82:	e003      	b.n	8032f8c <snmp_expand_tree+0x2a4> 8032f84:	2000e328 	.word	0x2000e328            }            else            {              cur_node.r_ptr = NULL; 8032f88:	2300      	movs	r3, #0 8032f8a:	9307      	str	r3, [sp, #28]            }            push_node(&cur_node); 8032f8c:	a807      	add	r0, sp, #28 8032f8e:	f7ff fd19 	bl	80329c4 <push_node>            if (en->ident_cmp(en->addr_inf,ext_level,i,*ident) == 0) 8032f92:	6a27      	ldr	r7, [r4, #32] 8032f94:	6960      	ldr	r0, [r4, #20] 8032f96:	f8d8 3000 	ldr.w	r3, [r8] 8032f9a:	4651      	mov	r1, sl 8032f9c:	464a      	mov	r2, r9 8032f9e:	47b8      	blx	r7 8032fa0:	b920      	cbnz	r0, 8032fac <snmp_expand_tree+0x2c4>            {              ident_len--; 8032fa2:	3e01      	subs	r6, #1 8032fa4:	b2f6      	uxtb	r6, r6              ident++; 8032fa6:	f108 0804 	add.w	r8, r8, #4 8032faa:	e000      	b.n	8032fae <snmp_expand_tree+0x2c6>            }            else            {              /* external id < *ident */              ident_len = 0; 8032fac:	2600      	movs	r6, #0            }            /* proceed to child */            ext_level++; 8032fae:	f10a 0a01 	add.w	sl, sl, #1 8032fb2:	e011      	b.n	8032fd8 <snmp_expand_tree+0x2f0>        }      }      else      {        /* ident_len == 0, complete with leftmost '.thing' */        en->get_objid(en->addr_inf,ext_level,0,&ex_id); 8032fb4:	4651      	mov	r1, sl 8032fb6:	4632      	mov	r2, r6 8032fb8:	ab06      	add	r3, sp, #24 8032fba:	6a67      	ldr	r7, [r4, #36]	; 0x24 8032fbc:	6960      	ldr	r0, [r4, #20] 8032fbe:	47b8      	blx	r7        LWIP_DEBUGF(SNMP_MIB_DEBUG,("left en->objid==%"S32_F"\n",ex_id));        oidret->id[oidret->len] = ex_id; 8032fc0:	782b      	ldrb	r3, [r5, #0] 8032fc2:	9a06      	ldr	r2, [sp, #24] 8032fc4:	eb05 0183 	add.w	r1, r5, r3, lsl #2        (oidret->len)++; 8032fc8:	3301      	adds	r3, #1      else      {        /* ident_len == 0, complete with leftmost '.thing' */        en->get_objid(en->addr_inf,ext_level,0,&ex_id);        LWIP_DEBUGF(SNMP_MIB_DEBUG,("left en->objid==%"S32_F"\n",ex_id));        oidret->id[oidret->len] = ex_id; 8032fca:	604a      	str	r2, [r1, #4]        (oidret->len)++; 8032fcc:	702b      	strb	r3, [r5, #0]        if ((ext_level + 1) == en->tree_levels) 8032fce:	7e23      	ldrb	r3, [r4, #24] 8032fd0:	f10a 0a01 	add.w	sl, sl, #1 8032fd4:	459a      	cmp	sl, r3 8032fd6:	d037      	beq.n	8033048 <snmp_expand_tree+0x360>          return (struct mib_node*)en;        }        else        {          /* no leaf, proceed to child */          ext_level++; 8032fd8:	fa5f fa8a 	uxtb.w	sl, sl 8032fdc:	e030      	b.n	8033040 <snmp_expand_tree+0x358>        }      }    }    else if(node_type == MIB_NODE_SC) 8032fde:	2b01      	cmp	r3, #1 8032fe0:	d001      	beq.n	8032fe6 <snmp_expand_tree+0x2fe>    }    else    {      /* unknown/unhandled node_type */      LWIP_DEBUGF(SNMP_MIB_DEBUG,("expand failed node_type %"U16_F" unkown\n",(u16_t)node_type));      return NULL; 8032fe2:	2000      	movs	r0, #0 8032fe4:	e047      	b.n	8033076 <snmp_expand_tree+0x38e>    {      mib_scalar_node *sn;      /* scalar node  */      sn = (mib_scalar_node *)node;      if (ident_len > 0) 8032fe6:	b936      	cbnz	r6, 8032ff6 <snmp_expand_tree+0x30e>        climb_tree = 1;      }      else      {        /* ident_len == 0, complete object identifier */        oidret->id[oidret->len] = 0; 8032fe8:	782b      	ldrb	r3, [r5, #0] 8032fea:	eb05 0283 	add.w	r2, r5, r3, lsl #2        (oidret->len)++; 8032fee:	3301      	adds	r3, #1        climb_tree = 1;      }      else      {        /* ident_len == 0, complete object identifier */        oidret->id[oidret->len] = 0; 8032ff0:	6056      	str	r6, [r2, #4]        (oidret->len)++; 8032ff2:	702b      	strb	r3, [r5, #0] 8032ff4:	e028      	b.n	8033048 <snmp_expand_tree+0x360> 8032ff6:	4921      	ldr	r1, [pc, #132]	; (803307c <snmp_expand_tree+0x394>)      struct nse child;      /* find right child ptr */      child.r_ptr = NULL;      child.r_id = 0;      child.r_nl = 0; 8032ff8:	f04f 0a00 	mov.w	sl, #0 8032ffc:	780b      	ldrb	r3, [r1, #0]pop_node(struct nse* node){  if (node_stack_cnt > 0)  {    node_stack_cnt--;    *node = node_stack[node_stack_cnt]; 8032ffe:	4920      	ldr	r1, [pc, #128]	; (8033080 <snmp_expand_tree+0x398>)    {      struct nse child;      /* find right child ptr */      child.r_ptr = NULL;      child.r_id = 0; 8033000:	4652      	mov	r2, sl    if (climb_tree)    {      struct nse child;      /* find right child ptr */      child.r_ptr = NULL; 8033002:	4654      	mov	r4, slpop_node(struct nse* node){  if (node_stack_cnt > 0)  {    node_stack_cnt--;    *node = node_stack[node_stack_cnt]; 8033004:	260c      	movs	r6, #12      /* find right child ptr */      child.r_ptr = NULL;      child.r_id = 0;      child.r_nl = 0;      while ((node_stack_cnt > 0) && (child.r_ptr == NULL)) 8033006:	e00b      	b.n	8033020 <snmp_expand_tree+0x338>static voidpop_node(struct nse* node){  if (node_stack_cnt > 0)  {    node_stack_cnt--; 8033008:	3b01      	subs	r3, #1 803300a:	b2db      	uxtb	r3, r3    *node = node_stack[node_stack_cnt]; 803300c:	fb06 f203 	mul.w	r2, r6, r3 8033010:	1888      	adds	r0, r1, r2 8033012:	588c      	ldr	r4, [r1, r2] 8033014:	f890 a008 	ldrb.w	sl, [r0, #8] 8033018:	6842      	ldr	r2, [r0, #4]      child.r_nl = 0;      while ((node_stack_cnt > 0) && (child.r_ptr == NULL))      {        pop_node(&child);        /* trim returned oid */        (oidret->len)--; 803301a:	7828      	ldrb	r0, [r5, #0] 803301c:	3801      	subs	r0, #1 803301e:	7028      	strb	r0, [r5, #0]      /* find right child ptr */      child.r_ptr = NULL;      child.r_id = 0;      child.r_nl = 0;      while ((node_stack_cnt > 0) && (child.r_ptr == NULL)) 8033020:	b91b      	cbnz	r3, 803302a <snmp_expand_tree+0x342> 8033022:	4f16      	ldr	r7, [pc, #88]	; (803307c <snmp_expand_tree+0x394>) 8033024:	703b      	strb	r3, [r7, #0]      {        pop_node(&child);        /* trim returned oid */        (oidret->len)--;      }      if (child.r_ptr != NULL) 8033026:	b924      	cbnz	r4, 8033032 <snmp_expand_tree+0x34a> 8033028:	e7db      	b.n	8032fe2 <snmp_expand_tree+0x2fa>      /* find right child ptr */      child.r_ptr = NULL;      child.r_id = 0;      child.r_nl = 0;      while ((node_stack_cnt > 0) && (child.r_ptr == NULL)) 803302a:	2c00      	cmp	r4, #0 803302c:	d0ec      	beq.n	8033008 <snmp_expand_tree+0x320> 803302e:	4913      	ldr	r1, [pc, #76]	; (803307c <snmp_expand_tree+0x394>) 8033030:	700b      	strb	r3, [r1, #0]      }      if (child.r_ptr != NULL)      {        /* incoming ident is useless beyond this point */        ident_len = 0;        oidret->id[oidret->len] = child.r_id; 8033032:	782b      	ldrb	r3, [r5, #0] 8033034:	eb05 0183 	add.w	r1, r5, r3, lsl #2        oidret->len++; 8033038:	3301      	adds	r3, #1      }      if (child.r_ptr != NULL)      {        /* incoming ident is useless beyond this point */        ident_len = 0;        oidret->id[oidret->len] = child.r_id; 803303a:	604a      	str	r2, [r1, #4]        oidret->len++; 803303c:	702b      	strb	r3, [r5, #0]        (oidret->len)--;      }      if (child.r_ptr != NULL)      {        /* incoming ident is useless beyond this point */        ident_len = 0; 803303e:	2600      	movs	r6, #0  u8_t node_type, ext_level, climb_tree;  ext_level = 0;  /* reset node stack */  node_stack_cnt = 0;  while (node != NULL) 8033040:	2c00      	cmp	r4, #0 8033042:	f47f ae60 	bne.w	8032d06 <snmp_expand_tree+0x1e> 8033046:	e7cc      	b.n	8032fe2 <snmp_expand_tree+0x2fa>        if (jn != NULL)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("left jn->objid==%"S32_F"\n",jn->objid));          oidret->id[oidret->len] = jn->objid;          (oidret->len)++;          if (jn->nptr == NULL) 8033048:	4620      	mov	r0, r4 803304a:	e014      	b.n	8033076 <snmp_expand_tree+0x38e>              jn = jn->next;            }            if (jn != NULL)            {              cur_node.r_ptr = jn->nptr;              cur_node.r_id = jn->objid; 803304c:	68a3      	ldr	r3, [r4, #8]            {              jn = jn->next;            }            if (jn != NULL)            {              cur_node.r_ptr = jn->nptr; 803304e:	f8cd 901c 	str.w	r9, [sp, #28]              cur_node.r_id = jn->objid; 8033052:	9308      	str	r3, [sp, #32]              cur_node.r_nl = 0; 8033054:	f88d 0024 	strb.w	r0, [sp, #36]	; 0x24 8033058:	e71e      	b.n	8032e98 <snmp_expand_tree+0x1b0>            }            else            {              cur_node.r_ptr = NULL; 803305a:	9407      	str	r4, [sp, #28] 803305c:	e71c      	b.n	8032e98 <snmp_expand_tree+0x1b0>          jn = jn->next;        }        if (jn != NULL)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("left jn->objid==%"S32_F"\n",jn->objid));          oidret->id[oidret->len] = jn->objid; 803305e:	782b      	ldrb	r3, [r5, #0] 8033060:	68ba      	ldr	r2, [r7, #8] 8033062:	eb05 0183 	add.w	r1, r5, r3, lsl #2          (oidret->len)++; 8033066:	3301      	adds	r3, #1 8033068:	702b      	strb	r3, [r5, #0]          if (jn->nptr == NULL) 803306a:	68fb      	ldr	r3, [r7, #12]          jn = jn->next;        }        if (jn != NULL)        {          LWIP_DEBUGF(SNMP_MIB_DEBUG,("left jn->objid==%"S32_F"\n",jn->objid));          oidret->id[oidret->len] = jn->objid; 803306c:	604a      	str	r2, [r1, #4]          (oidret->len)++;          if (jn->nptr == NULL) 803306e:	2b00      	cmp	r3, #0 8033070:	d0ea      	beq.n	8033048 <snmp_expand_tree+0x360>        (oidret->len)--;      }      if (child.r_ptr != NULL)      {        /* incoming ident is useless beyond this point */        ident_len = 0; 8033072:	461c      	mov	r4, r3 8033074:	e7e4      	b.n	8033040 <snmp_expand_tree+0x358>    }  }  /* done, found nothing */  LWIP_DEBUGF(SNMP_MIB_DEBUG,("expand failed node==%p\n",(void*)node));  return NULL;} 8033076:	b00b      	add	sp, #44	; 0x2c 8033078:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 803307c:	2000e328 	.word	0x2000e328 8033080:	2000e32c 	.word	0x2000e32c08033084 <snmp_iso_prefix_tst>: * @return 1 if it matches, 0 otherwise */u8_tsnmp_iso_prefix_tst(u8_t ident_len, s32_t *ident){  if ((ident_len > 3) && 8033084:	2803      	cmp	r0, #3 8033086:	d90d      	bls.n	80330a4 <snmp_iso_prefix_tst+0x20> 8033088:	680b      	ldr	r3, [r1, #0] 803308a:	2b01      	cmp	r3, #1 803308c:	d10a      	bne.n	80330a4 <snmp_iso_prefix_tst+0x20>      (ident[0] == 1) && (ident[1] == 3) && 803308e:	684b      	ldr	r3, [r1, #4] 8033090:	2b03      	cmp	r3, #3 8033092:	d107      	bne.n	80330a4 <snmp_iso_prefix_tst+0x20> 8033094:	688b      	ldr	r3, [r1, #8] 8033096:	2b06      	cmp	r3, #6 8033098:	d104      	bne.n	80330a4 <snmp_iso_prefix_tst+0x20>      (ident[2] == 6) && (ident[3] == 1)) 803309a:	68c8      	ldr	r0, [r1, #12]  {    return 1; 803309c:	1e43      	subs	r3, r0, #1 803309e:	4258      	negs	r0, r3 80330a0:	4158      	adcs	r0, r3 80330a2:	4770      	bx	lr  }  else  {    return 0; 80330a4:	2000      	movs	r0, #0  }} 80330a6:	4770      	bx	lr080330a8 <snmp_iso_prefix_expand>:  i = 0;  prefix_ptr = &prefix[0];  ret_ptr = &oidret->id[0];  ident_len = ((ident_len < 4)?ident_len:4);  while ((i < ident_len) && ((*ident) <= (*prefix_ptr))) 80330a8:	2300      	movs	r3, #0 * * @note ident_len 0 is allowed, expanding to the first known object id!! */u8_tsnmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret){ 80330aa:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}  s32_t *ret_ptr;  u8_t i;  i = 0;  prefix_ptr = &prefix[0];  ret_ptr = &oidret->id[0]; 80330ae:	1d15      	adds	r5, r2, #4  ident_len = ((ident_len < 4)?ident_len:4); 80330b0:	2804      	cmp	r0, #4 80330b2:	bf34      	ite	cc 80330b4:	4680      	movcc	r8, r0 80330b6:	f04f 0804 	movcs.w	r8, #4{  const s32_t *prefix_ptr;  s32_t *ret_ptr;  u8_t i;  i = 0; 80330ba:	461c      	mov	r4, r3 * @return 1 if it matches, 0 otherwise * * @note ident_len 0 is allowed, expanding to the first known object id!! */u8_tsnmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret) 80330bc:	4f10      	ldr	r7, [pc, #64]	; (8033100 <snmp_iso_prefix_expand+0x58>)  i = 0;  prefix_ptr = &prefix[0];  ret_ptr = &oidret->id[0];  ident_len = ((ident_len < 4)?ident_len:4);  while ((i < ident_len) && ((*ident) <= (*prefix_ptr))) 80330be:	e003      	b.n	80330c8 <snmp_iso_prefix_expand+0x20>  {    *ret_ptr++ = *prefix_ptr++;    ident++;    i++; 80330c0:	3401      	adds	r4, #1  prefix_ptr = &prefix[0];  ret_ptr = &oidret->id[0];  ident_len = ((ident_len < 4)?ident_len:4);  while ((i < ident_len) && ((*ident) <= (*prefix_ptr)))  {    *ret_ptr++ = *prefix_ptr++; 80330c2:	50ee      	str	r6, [r5, r3]    ident++;    i++; 80330c4:	b2e4      	uxtb	r4, r4 80330c6:	3304      	adds	r3, #4  i = 0;  prefix_ptr = &prefix[0];  ret_ptr = &oidret->id[0];  ident_len = ((ident_len < 4)?ident_len:4);  while ((i < ident_len) && ((*ident) <= (*prefix_ptr))) 80330c8:	4544      	cmp	r4, r8 * @return 1 if it matches, 0 otherwise * * @note ident_len 0 is allowed, expanding to the first known object id!! */u8_tsnmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret) 80330ca:	eb05 0c03 	add.w	ip, r5, r3 80330ce:	eb07 0603 	add.w	r6, r7, r3  i = 0;  prefix_ptr = &prefix[0];  ret_ptr = &oidret->id[0];  ident_len = ((ident_len < 4)?ident_len:4);  while ((i < ident_len) && ((*ident) <= (*prefix_ptr))) 80330d2:	d101      	bne.n	80330d8 <snmp_iso_prefix_expand+0x30> 80330d4:	2300      	movs	r3, #0 80330d6:	e00c      	b.n	80330f2 <snmp_iso_prefix_expand+0x4a> 80330d8:	59de      	ldr	r6, [r3, r7] 80330da:	58c8      	ldr	r0, [r1, r3] 80330dc:	42b0      	cmp	r0, r6 80330de:	ddef      	ble.n	80330c0 <snmp_iso_prefix_expand+0x18>    return 1;  }  else  {    /* i != ident_len */    return 0; 80330e0:	2000      	movs	r0, #0 80330e2:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}  if (i == ident_len)  {    /* match, complete missing bits */    while (i < 4)    {      *ret_ptr++ = *prefix_ptr++; 80330e6:	58f1      	ldr	r1, [r6, r3]      i++; 80330e8:	3401      	adds	r4, #1  if (i == ident_len)  {    /* match, complete missing bits */    while (i < 4)    {      *ret_ptr++ = *prefix_ptr++; 80330ea:	f84c 1003 	str.w	r1, [ip, r3]      i++; 80330ee:	b2e4      	uxtb	r4, r4 80330f0:	3304      	adds	r3, #4    i++;  }  if (i == ident_len)  {    /* match, complete missing bits */    while (i < 4) 80330f2:	2c03      	cmp	r4, #3 80330f4:	d9f7      	bls.n	80330e6 <snmp_iso_prefix_expand+0x3e>    {      *ret_ptr++ = *prefix_ptr++;      i++;    }    oidret->len = i; 80330f6:	7014      	strb	r4, [r2, #0]    return 1; 80330f8:	2001      	movs	r0, #1  else  {    /* i != ident_len */    return 0;  }} 80330fa:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc} 80330fe:	bf00      	nop 8033100:	08041cc8 	.word	0x08041cc808033104 <snmp_init>: * Starts SNMP Agent. * Allocates UDP pcb and binds it to IP_ADDR_ANY port 161. */voidsnmp_init(void){ 8033104:	b510      	push	{r4, lr}  struct snmp_msg_pstat *msg_ps;  u8_t i;  snmp1_pcb = udp_new(); 8033106:	f7fd fa1d 	bl	8030544 <udp_new> 803310a:	4c0b      	ldr	r4, [pc, #44]	; (8033138 <snmp_init+0x34>) 803310c:	6020      	str	r0, [r4, #0]  if (snmp1_pcb != NULL) 803310e:	b140      	cbz	r0, 8033122 <snmp_init+0x1e>  {    udp_recv(snmp1_pcb, snmp_recv, (void *)SNMP_IN_PORT); 8033110:	490a      	ldr	r1, [pc, #40]	; (803313c <snmp_init+0x38>) 8033112:	22a1      	movs	r2, #161	; 0xa1 8033114:	f7fd f9f6 	bl	8030504 <udp_recv>    udp_bind(snmp1_pcb, IP_ADDR_ANY, SNMP_IN_PORT); 8033118:	6820      	ldr	r0, [r4, #0] 803311a:	4909      	ldr	r1, [pc, #36]	; (8033140 <snmp_init+0x3c>) 803311c:	22a1      	movs	r2, #161	; 0xa1 803311e:	f7fd f8f9 	bl	8030314 <udp_bind>  }  msg_ps = &msg_input_list[0];  for (i=0; i<SNMP_CONCURRENT_REQUESTS; i++)  {    msg_ps->state = SNMP_MSG_EMPTY; 8033122:	4b08      	ldr	r3, [pc, #32]	; (8033144 <snmp_init+0x40>) 8033124:	2200      	movs	r2, #0 8033126:	f883 205a 	strb.w	r2, [r3, #90]	; 0x5a    msg_ps->error_index = 0; 803312a:	615a      	str	r2, [r3, #20]    msg_ps->error_status = SNMP_ES_NOERROR; 803312c:	611a      	str	r2, [r3, #16]    msg_ps++;  }  trap_msg.pcb = snmp1_pcb; 803312e:	4b02      	ldr	r3, [pc, #8]	; (8033138 <snmp_init+0x34>) 8033130:	681a      	ldr	r2, [r3, #0] 8033132:	4b05      	ldr	r3, [pc, #20]	; (8033148 <snmp_init+0x44>) 8033134:	601a      	str	r2, [r3, #0] 8033136:	bd10      	pop	{r4, pc} 8033138:	200110ac 	.word	0x200110ac 803313c:	08033cb1 	.word	0x08033cb1 8033140:	080413b4 	.word	0x080413b4 8033144:	200110b0 	.word	0x200110b0 8033148:	200111e8 	.word	0x200111e80803314c <snmp_varbind_alloc>:  return ERR_OK;}struct snmp_varbind*snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len){ 803314c:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 8033150:	4680      	mov	r8, r0  struct snmp_varbind *vb;  vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); 8033152:	200c      	movs	r0, #12  return ERR_OK;}struct snmp_varbind*snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len){ 8033154:	4689      	mov	r9, r1 8033156:	4617      	mov	r7, r2  struct snmp_varbind *vb;  vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); 8033158:	f7fa fb6c 	bl	802d834 <memp_malloc>  if (vb != NULL) 803315c:	4604      	mov	r4, r0 803315e:	2800      	cmp	r0, #0 8033160:	d032      	beq.n	80331c8 <snmp_varbind_alloc+0x7c>  {    u8_t i;    vb->next = NULL; 8033162:	2300      	movs	r3, #0 8033164:	6003      	str	r3, [r0, #0]    vb->prev = NULL; 8033166:	6043      	str	r3, [r0, #4]    i = oid->len; 8033168:	f898 5000 	ldrb.w	r5, [r8]    vb->ident_len = i; 803316c:	7205      	strb	r5, [r0, #8]    if (i > 0) 803316e:	b1ad      	cbz	r5, 803319c <snmp_varbind_alloc+0x50>    {      LWIP_ASSERT("SNMP_MAX_TREE_DEPTH is configured too low", i <= SNMP_MAX_TREE_DEPTH);      /* allocate array of s32_t for our object identifier */      vb->ident = (s32_t*)memp_malloc(MEMP_SNMP_VALUE); 8033170:	200d      	movs	r0, #13 8033172:	f7fa fb5f 	bl	802d834 <memp_malloc> 8033176:	4606      	mov	r6, r0 8033178:	60e0      	str	r0, [r4, #12]      if (vb->ident == NULL) 803317a:	b928      	cbnz	r0, 8033188 <snmp_varbind_alloc+0x3c>      {        LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_varbind_alloc: couldn't allocate ident value space\n"));        memp_free(MEMP_SNMP_VARBIND, vb); 803317c:	4621      	mov	r1, r4 803317e:	200c      	movs	r0, #12 8033180:	f7fa fb6e 	bl	802d860 <memp_free>        return NULL; 8033184:	4634      	mov	r4, r6 8033186:	e01f      	b.n	80331c8 <snmp_varbind_alloc+0x7c>      }      while(i > 0)      {        i--; 8033188:	3d01      	subs	r5, #1 803318a:	b2ed      	uxtb	r5, r5        vb->ident[i] = oid->id[i]; 803318c:	eb08 0385 	add.w	r3, r8, r5, lsl #2 8033190:	685b      	ldr	r3, [r3, #4] 8033192:	f846 3025 	str.w	r3, [r6, r5, lsl #2]      {        LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_varbind_alloc: couldn't allocate ident value space\n"));        memp_free(MEMP_SNMP_VARBIND, vb);        return NULL;      }      while(i > 0) 8033196:	2d00      	cmp	r5, #0 8033198:	d1f6      	bne.n	8033188 <snmp_varbind_alloc+0x3c> 803319a:	e000      	b.n	803319e <snmp_varbind_alloc+0x52>      }    }    else    {      /* i == 0, pass zero length object identifier */      vb->ident = NULL; 803319c:	60c5      	str	r5, [r0, #12]    }    vb->value_type = type; 803319e:	f884 9010 	strb.w	r9, [r4, #16]    vb->value_len = len; 80331a2:	7467      	strb	r7, [r4, #17]    if (len > 0) 80331a4:	b17f      	cbz	r7, 80331c6 <snmp_varbind_alloc+0x7a>    {      LWIP_ASSERT("SNMP_MAX_OCTET_STRING_LEN is configured too low", vb->value_len <= SNMP_MAX_VALUE_SIZE);      /* allocate raw bytes for our object value */      vb->value = memp_malloc(MEMP_SNMP_VALUE); 80331a6:	200d      	movs	r0, #13 80331a8:	f7fa fb44 	bl	802d834 <memp_malloc> 80331ac:	6160      	str	r0, [r4, #20]      if (vb->value == NULL) 80331ae:	b958      	cbnz	r0, 80331c8 <snmp_varbind_alloc+0x7c>      {        LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_varbind_alloc: couldn't allocate value space\n"));        if (vb->ident != NULL) 80331b0:	68e1      	ldr	r1, [r4, #12] 80331b2:	b111      	cbz	r1, 80331ba <snmp_varbind_alloc+0x6e>        {          memp_free(MEMP_SNMP_VALUE, vb->ident); 80331b4:	200d      	movs	r0, #13 80331b6:	f7fa fb53 	bl	802d860 <memp_free>        }        memp_free(MEMP_SNMP_VARBIND, vb); 80331ba:	4621      	mov	r1, r4 80331bc:	200c      	movs	r0, #12 80331be:	f7fa fb4f 	bl	802d860 <memp_free>        return NULL; 80331c2:	2400      	movs	r4, #0 80331c4:	e000      	b.n	80331c8 <snmp_varbind_alloc+0x7c>      }    }    else    {      /* ASN1_NUL type, or zero length ASN1_OC_STR */      vb->value = NULL; 80331c6:	6167      	str	r7, [r4, #20]  else  {    LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_varbind_alloc: couldn't allocate varbind space\n"));  }  return vb;} 80331c8:	4620      	mov	r0, r4 80331ca:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}080331ce <snmp_varbind_free>:voidsnmp_varbind_free(struct snmp_varbind *vb){  if (vb->value != NULL ) 80331ce:	6941      	ldr	r1, [r0, #20]  return vb;}voidsnmp_varbind_free(struct snmp_varbind *vb){ 80331d0:	b510      	push	{r4, lr} 80331d2:	4604      	mov	r4, r0  if (vb->value != NULL ) 80331d4:	b111      	cbz	r1, 80331dc <snmp_varbind_free+0xe>  {    memp_free(MEMP_SNMP_VALUE, vb->value); 80331d6:	200d      	movs	r0, #13 80331d8:	f7fa fb42 	bl	802d860 <memp_free>  }  if (vb->ident != NULL ) 80331dc:	68e1      	ldr	r1, [r4, #12] 80331de:	b111      	cbz	r1, 80331e6 <snmp_varbind_free+0x18>  {    memp_free(MEMP_SNMP_VALUE, vb->ident); 80331e0:	200d      	movs	r0, #13 80331e2:	f7fa fb3d 	bl	802d860 <memp_free>  }  memp_free(MEMP_SNMP_VARBIND, vb); 80331e6:	200c      	movs	r0, #12 80331e8:	4621      	mov	r1, r4} 80331ea:	e8bd 4010 	ldmia.w	sp!, {r4, lr}  }  if (vb->ident != NULL )  {    memp_free(MEMP_SNMP_VALUE, vb->ident);  }  memp_free(MEMP_SNMP_VARBIND, vb); 80331ee:	f7fa bb37 	b.w	802d860 <memp_free>080331f2 <snmp_varbind_list_free>:}voidsnmp_varbind_list_free(struct snmp_varbind_root *root){ 80331f2:	b538      	push	{r3, r4, r5, lr} 80331f4:	4604      	mov	r4, r0  struct snmp_varbind *vb, *prev;  vb = root->tail; 80331f6:	6840      	ldr	r0, [r0, #4]  while ( vb != NULL ) 80331f8:	e003      	b.n	8033202 <snmp_varbind_list_free+0x10>  {    prev = vb->prev; 80331fa:	6845      	ldr	r5, [r0, #4]    snmp_varbind_free(vb); 80331fc:	f7ff ffe7 	bl	80331ce <snmp_varbind_free>    vb = prev; 8033200:	4628      	mov	r0, r5snmp_varbind_list_free(struct snmp_varbind_root *root){  struct snmp_varbind *vb, *prev;  vb = root->tail;  while ( vb != NULL ) 8033202:	2800      	cmp	r0, #0 8033204:	d1f9      	bne.n	80331fa <snmp_varbind_list_free+0x8>  {    prev = vb->prev;    snmp_varbind_free(vb);    vb = prev;  }  root->count = 0; 8033206:	7220      	strb	r0, [r4, #8]  root->head = NULL; 8033208:	6020      	str	r0, [r4, #0]  root->tail = NULL; 803320a:	6060      	str	r0, [r4, #4] 803320c:	bd38      	pop	{r3, r4, r5, pc}0803320e <snmp_error_response>:  //snmp_coldstart_trap();}static voidsnmp_error_response(struct snmp_msg_pstat *msg_ps, u8_t error){ 803320e:	b570      	push	{r4, r5, r6, lr} 8033210:	4604      	mov	r4, r0  /* move names back from outvb to invb */  int v;  struct snmp_varbind *vbi = msg_ps->invb.head;  struct snmp_varbind *vbo = msg_ps->outvb.head;  for (v=0; v<msg_ps->vb_idx; v++) { 8033212:	2200      	movs	r2, #0  //snmp_coldstart_trap();}static voidsnmp_error_response(struct snmp_msg_pstat *msg_ps, u8_t error){ 8033214:	460e      	mov	r6, r1  /* move names back from outvb to invb */  int v;  struct snmp_varbind *vbi = msg_ps->invb.head; 8033216:	f8d0 0100 	ldr.w	r0, [r0, #256]	; 0x100  struct snmp_varbind *vbo = msg_ps->outvb.head; 803321a:	f8d4 310c 	ldr.w	r3, [r4, #268]	; 0x10c  for (v=0; v<msg_ps->vb_idx; v++) {    vbi->ident_len = vbo->ident_len;    vbo->ident_len = 0; 803321e:	4611      	mov	r1, r2{  /* move names back from outvb to invb */  int v;  struct snmp_varbind *vbi = msg_ps->invb.head;  struct snmp_varbind *vbo = msg_ps->outvb.head;  for (v=0; v<msg_ps->vb_idx; v++) { 8033220:	e008      	b.n	8033234 <snmp_error_response+0x26>    vbi->ident_len = vbo->ident_len; 8033222:	7a1d      	ldrb	r5, [r3, #8] 8033224:	7205      	strb	r5, [r0, #8]    vbo->ident_len = 0;    vbi->ident = vbo->ident; 8033226:	68dd      	ldr	r5, [r3, #12]  int v;  struct snmp_varbind *vbi = msg_ps->invb.head;  struct snmp_varbind *vbo = msg_ps->outvb.head;  for (v=0; v<msg_ps->vb_idx; v++) {    vbi->ident_len = vbo->ident_len;    vbo->ident_len = 0; 8033228:	7219      	strb	r1, [r3, #8]    vbi->ident = vbo->ident; 803322a:	60c5      	str	r5, [r0, #12]    vbo->ident = NULL; 803322c:	60d9      	str	r1, [r3, #12]    vbi = vbi->next; 803322e:	6800      	ldr	r0, [r0, #0]    vbo = vbo->next; 8033230:	681b      	ldr	r3, [r3, #0]{  /* move names back from outvb to invb */  int v;  struct snmp_varbind *vbi = msg_ps->invb.head;  struct snmp_varbind *vbo = msg_ps->outvb.head;  for (v=0; v<msg_ps->vb_idx; v++) { 8033232:	3201      	adds	r2, #1 8033234:	f894 50f8 	ldrb.w	r5, [r4, #248]	; 0xf8 8033238:	42aa      	cmp	r2, r5 803323a:	dbf2      	blt.n	8033222 <snmp_error_response+0x14>    vbo->ident = NULL;    vbi = vbi->next;    vbo = vbo->next;  }  /* free outvb */  snmp_varbind_list_free(&msg_ps->outvb); 803323c:	f504 7586 	add.w	r5, r4, #268	; 0x10c 8033240:	4628      	mov	r0, r5 8033242:	f7ff ffd6 	bl	80331f2 <snmp_varbind_list_free>  /* we send invb back */  msg_ps->outvb = msg_ps->invb; 8033246:	f504 7380 	add.w	r3, r4, #256	; 0x100 803324a:	e893 0007 	ldmia.w	r3, {r0, r1, r2}  msg_ps->invb.head = NULL; 803324e:	2300      	movs	r3, #0  msg_ps->invb.tail = NULL;  msg_ps->invb.count = 0;  msg_ps->error_status = error;  /* error index must be 0 for error too big */  msg_ps->error_index = (error != SNMP_ES_TOOBIG) ? (1 + msg_ps->vb_idx) : 0; 8033250:	2e01      	cmp	r6, #1  }  /* free outvb */  snmp_varbind_list_free(&msg_ps->outvb);  /* we send invb back */  msg_ps->outvb = msg_ps->invb;  msg_ps->invb.head = NULL; 8033252:	f8c4 3100 	str.w	r3, [r4, #256]	; 0x100  msg_ps->invb.tail = NULL; 8033256:	f8c4 3104 	str.w	r3, [r4, #260]	; 0x104  msg_ps->invb.count = 0; 803325a:	f884 3108 	strb.w	r3, [r4, #264]	; 0x108  msg_ps->error_status = error;  /* error index must be 0 for error too big */  msg_ps->error_index = (error != SNMP_ES_TOOBIG) ? (1 + msg_ps->vb_idx) : 0; 803325e:	bf18      	it	ne 8033260:	f894 30f8 	ldrbne.w	r3, [r4, #248]	; 0xf8  /* we send invb back */  msg_ps->outvb = msg_ps->invb;  msg_ps->invb.head = NULL;  msg_ps->invb.tail = NULL;  msg_ps->invb.count = 0;  msg_ps->error_status = error; 8033264:	6126      	str	r6, [r4, #16]  /* error index must be 0 for error too big */  msg_ps->error_index = (error != SNMP_ES_TOOBIG) ? (1 + msg_ps->vb_idx) : 0; 8033266:	bf18      	it	ne 8033268:	3301      	addne	r3, #1    vbo = vbo->next;  }  /* free outvb */  snmp_varbind_list_free(&msg_ps->outvb);  /* we send invb back */  msg_ps->outvb = msg_ps->invb; 803326a:	e885 0007 	stmia.w	r5, {r0, r1, r2}  msg_ps->invb.head = NULL;  msg_ps->invb.tail = NULL;  msg_ps->invb.count = 0;  msg_ps->error_status = error;  /* error index must be 0 for error too big */  msg_ps->error_index = (error != SNMP_ES_TOOBIG) ? (1 + msg_ps->vb_idx) : 0; 803326e:	6163      	str	r3, [r4, #20]  snmp_send_response(msg_ps); 8033270:	4620      	mov	r0, r4 8033272:	f001 f879 	bl	8034368 <snmp_send_response>  snmp_varbind_list_free(&msg_ps->outvb); 8033276:	4628      	mov	r0, r5 8033278:	f7ff ffbb 	bl	80331f2 <snmp_varbind_list_free>  msg_ps->state = SNMP_MSG_EMPTY; 803327c:	2300      	movs	r3, #0 803327e:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a 8033282:	bd70      	pop	{r4, r5, r6, pc}08033284 <snmp_ok_response>:}static voidsnmp_ok_response(struct snmp_msg_pstat *msg_ps){ 8033284:	b510      	push	{r4, lr} 8033286:	4604      	mov	r4, r0  err_t err_ret;  err_ret = snmp_send_response(msg_ps); 8033288:	f001 f86e 	bl	8034368 <snmp_send_response>  else  {    LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event = %"S32_F"\n",msg_ps->error_status));  }  /* free varbinds (if available) */  snmp_varbind_list_free(&msg_ps->invb); 803328c:	f504 7080 	add.w	r0, r4, #256	; 0x100 8033290:	f7ff ffaf 	bl	80331f2 <snmp_varbind_list_free>  snmp_varbind_list_free(&msg_ps->outvb); 8033294:	f504 7086 	add.w	r0, r4, #268	; 0x10c 8033298:	f7ff ffab 	bl	80331f2 <snmp_varbind_list_free>  msg_ps->state = SNMP_MSG_EMPTY; 803329c:	2300      	movs	r3, #0 803329e:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a 80332a2:	bd10      	pop	{r4, pc}080332a4 <snmp_varbind_tail_add>:}voidsnmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb){  if (root->count == 0) 80332a4:	7a03      	ldrb	r3, [r0, #8] 80332a6:	b90b      	cbnz	r3, 80332ac <snmp_varbind_tail_add+0x8>  {    /* add first varbind to list */    root->head = vb; 80332a8:	6001      	str	r1, [r0, #0] 80332aa:	e002      	b.n	80332b2 <snmp_varbind_tail_add+0xe>    root->tail = vb;  }  else  {    /* add nth varbind to list tail */    root->tail->next = vb; 80332ac:	6843      	ldr	r3, [r0, #4] 80332ae:	6019      	str	r1, [r3, #0]    vb->prev = root->tail; 80332b0:	604b      	str	r3, [r1, #4]    root->tail = vb;  }  root->count += 1; 80332b2:	7a03      	ldrb	r3, [r0, #8]  else  {    /* add nth varbind to list tail */    root->tail->next = vb;    vb->prev = root->tail;    root->tail = vb; 80332b4:	6041      	str	r1, [r0, #4]  }  root->count += 1; 80332b6:	3301      	adds	r3, #1 80332b8:	7203      	strb	r3, [r0, #8] 80332ba:	4770      	bx	lr080332bc <snmp_msg_event>: * * @param request_id identifies requests from 0 to (SNMP_CONCURRENT_REQUESTS-1) */voidsnmp_msg_event(u8_t request_id){ 80332bc:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr}  struct snmp_msg_pstat *msg_ps;  if (request_id < SNMP_CONCURRENT_REQUESTS) 80332c0:	4605      	mov	r5, r0 * * @param request_id identifies requests from 0 to (SNMP_CONCURRENT_REQUESTS-1) */voidsnmp_msg_event(u8_t request_id){ 80332c2:	b0a7      	sub	sp, #156	; 0x9c  struct snmp_msg_pstat *msg_ps;  if (request_id < SNMP_CONCURRENT_REQUESTS) 80332c4:	2800      	cmp	r0, #0 80332c6:	f040 8390 	bne.w	80339ea <snmp_msg_event+0x72e>  {    msg_ps = &msg_input_list[request_id];    if (msg_ps->rt == SNMP_ASN1_PDU_GET_NEXT_REQ) 80332ca:	4cb2      	ldr	r4, [pc, #712]	; (8033594 <snmp_msg_event+0x2d8>) 80332cc:	7aa6      	ldrb	r6, [r4, #10] 80332ce:	2e01      	cmp	r6, #1 80332d0:	f040 80d4 	bne.w	803347c <snmp_msg_event+0x1c0>static voidsnmp_msg_getnext_event(u8_t request_id, struct snmp_msg_pstat *msg_ps){  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_getnext_event: msg_ps->state==%"U16_F"\n",(u16_t)msg_ps->state));  if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF) 80332d4:	f894 305a 	ldrb.w	r3, [r4, #90]	; 0x5a 80332d8:	2b07      	cmp	r3, #7 80332da:	d125      	bne.n	8033328 <snmp_msg_event+0x6c>    /* get_object_def() answer*/    en = msg_ps->ext_mib_node;    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, 1, &msg_ps->ext_oid.id[msg_ps->ext_oid.len - 1], &msg_ps->ext_object_def); 80332dc:	f894 2074 	ldrb.w	r2, [r4, #116]	; 0x74  if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF)  {    struct mib_external_node *en;    /* get_object_def() answer*/    en = msg_ps->ext_mib_node; 80332e0:	f8d4 805c 	ldr.w	r8, [r4, #92]	; 0x5c    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, 1, &msg_ps->ext_oid.id[msg_ps->ext_oid.len - 1], &msg_ps->ext_object_def); 80332e4:	eb04 0282 	add.w	r2, r4, r2, lsl #2 80332e8:	4631      	mov	r1, r6 80332ea:	3274      	adds	r2, #116	; 0x74 80332ec:	f104 0368 	add.w	r3, r4, #104	; 0x68 80332f0:	f8d8 7038 	ldr.w	r7, [r8, #56]	; 0x38 80332f4:	47b8      	blx	r7    if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) 80332f6:	f894 0068 	ldrb.w	r0, [r4, #104]	; 0x68 80332fa:	b148      	cbz	r0, 8033310 <snmp_msg_event+0x54>    {      msg_ps->state = SNMP_MSG_EXTERNAL_GET_VALUE; 80332fc:	2308      	movs	r3, #8 80332fe:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a      en->get_value_q(request_id, &msg_ps->ext_object_def); 8033302:	f8d8 302c 	ldr.w	r3, [r8, #44]	; 0x2c 8033306:	4628      	mov	r0, r5 8033308:	f104 0168 	add.w	r1, r4, #104	; 0x68 803330c:	4798      	blx	r3 803330e:	e0a6      	b.n	803345e <snmp_msg_event+0x1a2>    }    else    {      en->get_object_def_pc(request_id, 1, &msg_ps->ext_oid.id[msg_ps->ext_oid.len - 1]); 8033310:	f894 2074 	ldrb.w	r2, [r4, #116]	; 0x74 8033314:	f8d8 3048 	ldr.w	r3, [r8, #72]	; 0x48 8033318:	eb04 0282 	add.w	r2, r4, r2, lsl #2 803331c:	4631      	mov	r1, r6 803331e:	3274      	adds	r2, #116	; 0x74 8033320:	4798      	blx	r3      /* search failed, object id points to unknown object (nosuchname) */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 8033322:	4620      	mov	r0, r4 8033324:	2102      	movs	r1, #2 8033326:	e02a      	b.n	803337e <snmp_msg_event+0xc2>    }  }  else if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_VALUE) 8033328:	2b08      	cmp	r3, #8 803332a:	f040 8098 	bne.w	803345e <snmp_msg_event+0x1a2>    /* get_value() answer */    en = msg_ps->ext_mib_node;    LWIP_ASSERT("invalid length", msg_ps->ext_object_def.v_len <= 0xff);    vb = snmp_varbind_alloc(&msg_ps->ext_oid, 803332e:	f104 0074 	add.w	r0, r4, #116	; 0x74 8033332:	f894 106a 	ldrb.w	r1, [r4, #106]	; 0x6a 8033336:	f894 206c 	ldrb.w	r2, [r4, #108]	; 0x6c  {    struct mib_external_node *en;    struct snmp_varbind *vb;    /* get_value() answer */    en = msg_ps->ext_mib_node; 803333a:	f8d4 805c 	ldr.w	r8, [r4, #92]	; 0x5c    LWIP_ASSERT("invalid length", msg_ps->ext_object_def.v_len <= 0xff);    vb = snmp_varbind_alloc(&msg_ps->ext_oid, 803333e:	f7ff ff05 	bl	803314c <snmp_varbind_alloc>                            msg_ps->ext_object_def.asn_type,                            (u8_t)msg_ps->ext_object_def.v_len);    if (vb != NULL) 8033342:	4607      	mov	r7, r0 8033344:	b1a0      	cbz	r0, 8033370 <snmp_msg_event+0xb4>    {      en->get_value_a(request_id, &msg_ps->ext_object_def, vb->value_len, vb->value); 8033346:	697b      	ldr	r3, [r7, #20] 8033348:	f8d8 c03c 	ldr.w	ip, [r8, #60]	; 0x3c 803334c:	7c7a      	ldrb	r2, [r7, #17] 803334e:	4628      	mov	r0, r5 8033350:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033354:	47e0      	blx	ip      snmp_varbind_tail_add(&msg_ps->outvb, vb); 8033356:	f504 7086 	add.w	r0, r4, #268	; 0x10c 803335a:	4639      	mov	r1, r7 803335c:	f7ff ffa2 	bl	80332a4 <snmp_varbind_tail_add>      msg_ps->state = SNMP_MSG_SEARCH_OBJ;      msg_ps->vb_idx += 1; 8033360:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8                            (u8_t)msg_ps->ext_object_def.v_len);    if (vb != NULL)    {      en->get_value_a(request_id, &msg_ps->ext_object_def, vb->value_len, vb->value);      snmp_varbind_tail_add(&msg_ps->outvb, vb);      msg_ps->state = SNMP_MSG_SEARCH_OBJ; 8033364:	f884 605a 	strb.w	r6, [r4, #90]	; 0x5a      msg_ps->vb_idx += 1; 8033368:	3301      	adds	r3, #1 803336a:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 803336e:	e076      	b.n	803345e <snmp_msg_event+0x1a2>    }    else    {      en->get_value_pc(request_id, &msg_ps->ext_object_def); 8033370:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033374:	f8d8 304c 	ldr.w	r3, [r8, #76]	; 0x4c 8033378:	4798      	blx	r3      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_getnext_event: couldn't allocate outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG); 803337a:	4620      	mov	r0, r4 803337c:	4631      	mov	r1, r6 803337e:	f7ff ff46 	bl	803320e <snmp_error_response> 8033382:	e06c      	b.n	803345e <snmp_msg_event+0x1a2>         (msg_ps->vb_idx < msg_ps->invb.count))  {    struct mib_node *mn;    struct snmp_obj_id oid;    if (msg_ps->vb_idx == 0) 8033384:	b913      	cbnz	r3, 803338c <snmp_msg_event+0xd0>    {      msg_ps->vb_ptr = msg_ps->invb.head; 8033386:	f8d4 3100 	ldr.w	r3, [r4, #256]	; 0x100 803338a:	e002      	b.n	8033392 <snmp_msg_event+0xd6>    }    else    {      msg_ps->vb_ptr = msg_ps->vb_ptr->next; 803338c:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 8033390:	681b      	ldr	r3, [r3, #0] 8033392:	f8c4 30fc 	str.w	r3, [r4, #252]	; 0xfc    }    if (snmp_iso_prefix_expand(msg_ps->vb_ptr->ident_len, msg_ps->vb_ptr->ident, &oid)) 8033396:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 803339a:	aa05      	add	r2, sp, #20 803339c:	7a18      	ldrb	r0, [r3, #8] 803339e:	68d9      	ldr	r1, [r3, #12] 80333a0:	f7ff fe82 	bl	80330a8 <snmp_iso_prefix_expand> 80333a4:	2800      	cmp	r0, #0 80333a6:	f000 82ff 	beq.w	80339a8 <snmp_msg_event+0x6ec>    {      if (msg_ps->vb_ptr->ident_len > 3) 80333aa:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80333ae:	7a19      	ldrb	r1, [r3, #8] 80333b0:	2903      	cmp	r1, #3 80333b2:	d905      	bls.n	80333c0 <snmp_msg_event+0x104>      {        /* can offset ident_len and ident */        mn = snmp_expand_tree((struct mib_node*)&internet, 80333b4:	68da      	ldr	r2, [r3, #12] 80333b6:	4878      	ldr	r0, [pc, #480]	; (8033598 <snmp_msg_event+0x2dc>) 80333b8:	3904      	subs	r1, #4 80333ba:	b2c9      	uxtb	r1, r1 80333bc:	3210      	adds	r2, #16 80333be:	e002      	b.n	80333c6 <snmp_msg_event+0x10a>                              msg_ps->vb_ptr->ident + 4, &oid);      }      else      {        /* can't offset ident_len -4, ident + 4 */        mn = snmp_expand_tree((struct mib_node*)&internet, 0, NULL, &oid); 80333c0:	2100      	movs	r1, #0 80333c2:	4875      	ldr	r0, [pc, #468]	; (8033598 <snmp_msg_event+0x2dc>) 80333c4:	460a      	mov	r2, r1 80333c6:	ab05      	add	r3, sp, #20 80333c8:	f7ff fc8e 	bl	8032ce8 <snmp_expand_tree> 80333cc:	4605      	mov	r5, r0    }    else    {      mn = NULL;    }    if (mn != NULL) 80333ce:	2800      	cmp	r0, #0 80333d0:	f000 82ea 	beq.w	80339a8 <snmp_msg_event+0x6ec>    {      if (mn->node_type == MIB_NODE_EX) 80333d4:	7c03      	ldrb	r3, [r0, #16] 80333d6:	2b05      	cmp	r3, #5 80333d8:	d113      	bne.n	8033402 <snmp_msg_event+0x146>      {        /* external object */        struct mib_external_node *en = (struct mib_external_node*)mn;        msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; 80333da:	2307      	movs	r3, #7        /* save en && args in msg_ps!! */        msg_ps->ext_mib_node = en; 80333dc:	65e0      	str	r0, [r4, #92]	; 0x5c        msg_ps->ext_oid = oid; 80333de:	a905      	add	r1, sp, #20 80333e0:	2284      	movs	r2, #132	; 0x84 80333e2:	486e      	ldr	r0, [pc, #440]	; (803359c <snmp_msg_event+0x2e0>)      if (mn->node_type == MIB_NODE_EX)      {        /* external object */        struct mib_external_node *en = (struct mib_external_node*)mn;        msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; 80333e4:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a        /* save en && args in msg_ps!! */        msg_ps->ext_mib_node = en;        msg_ps->ext_oid = oid; 80333e8:	f7ee fab0 	bl	802194c <memcpy>        en->get_object_def_q(en->addr_inf, request_id, 1, &oid.id[oid.len - 1]); 80333ec:	f89d 3014 	ldrb.w	r3, [sp, #20] 80333f0:	6aae      	ldr	r6, [r5, #40]	; 0x28 80333f2:	6968      	ldr	r0, [r5, #20] 80333f4:	ad05      	add	r5, sp, #20 80333f6:	2100      	movs	r1, #0 80333f8:	2201      	movs	r2, #1 80333fa:	eb05 0383 	add.w	r3, r5, r3, lsl #2 80333fe:	47b0      	blx	r6 8033400:	e02e      	b.n	8033460 <snmp_msg_event+0x1a4>      {        /* internal object */        struct obj_def object_def;        struct snmp_varbind *vb;        msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; 8033402:	2302      	movs	r3, #2        mn->get_object_def(1, &oid.id[oid.len - 1], &object_def); 8033404:	f89d 1014 	ldrb.w	r1, [sp, #20]      {        /* internal object */        struct obj_def object_def;        struct snmp_varbind *vb;        msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; 8033408:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a        mn->get_object_def(1, &oid.id[oid.len - 1], &object_def); 803340c:	af05      	add	r7, sp, #20 803340e:	6803      	ldr	r3, [r0, #0] 8033410:	eb07 0181 	add.w	r1, r7, r1, lsl #2 8033414:	2001      	movs	r0, #1 8033416:	aa02      	add	r2, sp, #8 8033418:	4798      	blx	r3        LWIP_ASSERT("invalid length", object_def.v_len <= 0xff);        vb = snmp_varbind_alloc(&oid, object_def.asn_type, (u8_t)object_def.v_len); 803341a:	a805      	add	r0, sp, #20 803341c:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033420:	f89d 200c 	ldrb.w	r2, [sp, #12] 8033424:	f7ff fe92 	bl	803314c <snmp_varbind_alloc>        if (vb != NULL) 8033428:	4606      	mov	r6, r0 803342a:	b1a8      	cbz	r0, 8033458 <snmp_msg_event+0x19c>        {          msg_ps->state = SNMP_MSG_INTERNAL_GET_VALUE; 803342c:	2303      	movs	r3, #3 803342e:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a          mn->get_value(&object_def, object_def.v_len, vb->value); 8033432:	686b      	ldr	r3, [r5, #4] 8033434:	f8bd 100c 	ldrh.w	r1, [sp, #12] 8033438:	6972      	ldr	r2, [r6, #20] 803343a:	a802      	add	r0, sp, #8 803343c:	4798      	blx	r3          snmp_varbind_tail_add(&msg_ps->outvb, vb); 803343e:	4858      	ldr	r0, [pc, #352]	; (80335a0 <snmp_msg_event+0x2e4>) 8033440:	4631      	mov	r1, r6 8033442:	f7ff ff2f 	bl	80332a4 <snmp_varbind_tail_add>          msg_ps->state = SNMP_MSG_SEARCH_OBJ; 8033446:	2301      	movs	r3, #1 8033448:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a          msg_ps->vb_idx += 1; 803344c:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 8033450:	3301      	adds	r3, #1 8033452:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 8033456:	e003      	b.n	8033460 <snmp_msg_event+0x1a4>        }        else        {          LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv couldn't allocate outvb space\n"));          snmp_error_response(msg_ps,SNMP_ES_TOOBIG); 8033458:	484e      	ldr	r0, [pc, #312]	; (8033594 <snmp_msg_event+0x2d8>) 803345a:	2101      	movs	r1, #1 803345c:	e2a6      	b.n	80339ac <snmp_msg_event+0x6f0>      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_getnext_event: couldn't allocate outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG);    }  }  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 803345e:	4c4d      	ldr	r4, [pc, #308]	; (8033594 <snmp_msg_event+0x2d8>) 8033460:	f894 305a 	ldrb.w	r3, [r4, #90]	; 0x5a 8033464:	2b01      	cmp	r3, #1 8033466:	f040 82c0 	bne.w	80339ea <snmp_msg_event+0x72e>         (msg_ps->vb_idx < msg_ps->invb.count)) 803346a:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 803346e:	f894 2108 	ldrb.w	r2, [r4, #264]	; 0x108      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_getnext_event: couldn't allocate outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG);    }  }  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 8033472:	4293      	cmp	r3, r2 8033474:	d386      	bcc.n	8033384 <snmp_msg_event+0xc8> 8033476:	e2a7      	b.n	80339c8 <snmp_msg_event+0x70c>    }  }  if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) &&      (msg_ps->vb_idx == msg_ps->invb.count))  {    snmp_ok_response(msg_ps); 8033478:	4846      	ldr	r0, [pc, #280]	; (8033594 <snmp_msg_event+0x2d8>) 803347a:	e292      	b.n	80339a2 <snmp_msg_event+0x6e6>    msg_ps = &msg_input_list[request_id];    if (msg_ps->rt == SNMP_ASN1_PDU_GET_NEXT_REQ)    {      snmp_msg_getnext_event(request_id, msg_ps);    }    else if (msg_ps->rt == SNMP_ASN1_PDU_GET_REQ) 803347c:	2e00      	cmp	r6, #0 803347e:	f040 8126 	bne.w	80336ce <snmp_msg_event+0x412>static voidsnmp_msg_get_event(u8_t request_id, struct snmp_msg_pstat *msg_ps){  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_get_event: msg_ps->state==%"U16_F"\n",(u16_t)msg_ps->state));  if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF) 8033482:	f894 305a 	ldrb.w	r3, [r4, #90]	; 0x5a 8033486:	2b07      	cmp	r3, #7 8033488:	d122      	bne.n	80334d0 <snmp_msg_event+0x214>  {    struct mib_external_node *en;    struct snmp_name_ptr np;    /* get_object_def() answer*/    en = msg_ps->ext_mib_node; 803348a:	6de5      	ldr	r5, [r4, #92]	; 0x5c    np = msg_ps->ext_name_ptr; 803348c:	f894 9060 	ldrb.w	r9, [r4, #96]	; 0x60 8033490:	f8d4 8064 	ldr.w	r8, [r4, #100]	; 0x64    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def); 8033494:	6baf      	ldr	r7, [r5, #56]	; 0x38 8033496:	f104 0368 	add.w	r3, r4, #104	; 0x68 803349a:	4649      	mov	r1, r9 803349c:	4642      	mov	r2, r8 803349e:	47b8      	blx	r7    if ((msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) && 80334a0:	f894 3068 	ldrb.w	r3, [r4, #104]	; 0x68 80334a4:	b163      	cbz	r3, 80334c0 <snmp_msg_event+0x204>        (msg_ps->ext_object_def.access & MIB_ACCESS_READ)) 80334a6:	f894 3069 	ldrb.w	r3, [r4, #105]	; 0x69    en = msg_ps->ext_mib_node;    np = msg_ps->ext_name_ptr;    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def);    if ((msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) && 80334aa:	07da      	lsls	r2, r3, #31 80334ac:	d508      	bpl.n	80334c0 <snmp_msg_event+0x204>        (msg_ps->ext_object_def.access & MIB_ACCESS_READ))    {      msg_ps->state = SNMP_MSG_EXTERNAL_GET_VALUE; 80334ae:	2308      	movs	r3, #8 80334b0:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a      en->get_value_q(request_id, &msg_ps->ext_object_def); 80334b4:	6aeb      	ldr	r3, [r5, #44]	; 0x2c 80334b6:	4630      	mov	r0, r6 80334b8:	f104 0168 	add.w	r1, r4, #104	; 0x68 80334bc:	4798      	blx	r3 80334be:	e0f7      	b.n	80336b0 <snmp_msg_event+0x3f4>    }    else    {      en->get_object_def_pc(request_id, np.ident_len, np.ident); 80334c0:	2000      	movs	r0, #0 80334c2:	4649      	mov	r1, r9 80334c4:	6cab      	ldr	r3, [r5, #72]	; 0x48 80334c6:	4642      	mov	r2, r8 80334c8:	4798      	blx	r3      /* search failed, object id points to unknown object (nosuchname) */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 80334ca:	4832      	ldr	r0, [pc, #200]	; (8033594 <snmp_msg_event+0x2d8>) 80334cc:	2102      	movs	r1, #2 80334ce:	e059      	b.n	8033584 <snmp_msg_event+0x2c8>    }  }  else if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_VALUE) 80334d0:	2b08      	cmp	r3, #8 80334d2:	f040 80ed 	bne.w	80336b0 <snmp_msg_event+0x3f4>    /* get_value() answer */    en = msg_ps->ext_mib_node;    /* allocate output varbind */    vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); 80334d6:	200c      	movs	r0, #12  {    struct mib_external_node *en;    struct snmp_varbind *vb;    /* get_value() answer */    en = msg_ps->ext_mib_node; 80334d8:	f8d4 805c 	ldr.w	r8, [r4, #92]	; 0x5c    /* allocate output varbind */    vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); 80334dc:	f7fa f9aa 	bl	802d834 <memp_malloc>    if (vb != NULL) 80334e0:	4605      	mov	r5, r0 80334e2:	2800      	cmp	r0, #0 80334e4:	d047      	beq.n	8033576 <snmp_msg_event+0x2ba>    {      vb->next = NULL; 80334e6:	6006      	str	r6, [r0, #0]      vb->prev = NULL; 80334e8:	6046      	str	r6, [r0, #4]      /* move name from invb to outvb */      vb->ident = msg_ps->vb_ptr->ident; 80334ea:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80334ee:	68da      	ldr	r2, [r3, #12]      vb->ident_len = msg_ps->vb_ptr->ident_len; 80334f0:	7a1b      	ldrb	r3, [r3, #8]    {      vb->next = NULL;      vb->prev = NULL;      /* move name from invb to outvb */      vb->ident = msg_ps->vb_ptr->ident; 80334f2:	60c2      	str	r2, [r0, #12]      vb->ident_len = msg_ps->vb_ptr->ident_len; 80334f4:	7203      	strb	r3, [r0, #8]      /* ensure this memory is refereced once only */      msg_ps->vb_ptr->ident = NULL; 80334f6:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc      msg_ps->vb_ptr->ident_len = 0; 80334fa:	721e      	strb	r6, [r3, #8]      /* move name from invb to outvb */      vb->ident = msg_ps->vb_ptr->ident;      vb->ident_len = msg_ps->vb_ptr->ident_len;      /* ensure this memory is refereced once only */      msg_ps->vb_ptr->ident = NULL; 80334fc:	60de      	str	r6, [r3, #12]      msg_ps->vb_ptr->ident_len = 0;      vb->value_type = msg_ps->ext_object_def.asn_type; 80334fe:	f894 306a 	ldrb.w	r3, [r4, #106]	; 0x6a 8033502:	7403      	strb	r3, [r0, #16]      LWIP_ASSERT("invalid length", msg_ps->ext_object_def.v_len <= 0xff);      vb->value_len = (u8_t)msg_ps->ext_object_def.v_len; 8033504:	f894 706c 	ldrb.w	r7, [r4, #108]	; 0x6c 8033508:	7447      	strb	r7, [r0, #17]      if (vb->value_len > 0) 803350a:	b1ef      	cbz	r7, 8033548 <snmp_msg_event+0x28c>      {        LWIP_ASSERT("SNMP_MAX_OCTET_STRING_LEN is configured too low", vb->value_len <= SNMP_MAX_VALUE_SIZE);        vb->value = memp_malloc(MEMP_SNMP_VALUE); 803350c:	200d      	movs	r0, #13 803350e:	f7fa f991 	bl	802d834 <memp_malloc> 8033512:	4603      	mov	r3, r0 8033514:	6168      	str	r0, [r5, #20]        if (vb->value != NULL) 8033516:	b138      	cbz	r0, 8033528 <snmp_msg_event+0x26c>        {          en->get_value_a(request_id, &msg_ps->ext_object_def, vb->value_len, vb->value); 8033518:	f8d8 703c 	ldr.w	r7, [r8, #60]	; 0x3c 803351c:	7c6a      	ldrb	r2, [r5, #17] 803351e:	4630      	mov	r0, r6 8033520:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033524:	47b8      	blx	r7 8033526:	e018      	b.n	803355a <snmp_msg_event+0x29e>          msg_ps->state = SNMP_MSG_SEARCH_OBJ;          msg_ps->vb_idx += 1;        }        else        {          en->get_value_pc(request_id, &msg_ps->ext_object_def); 8033528:	f8d8 304c 	ldr.w	r3, [r8, #76]	; 0x4c 803352c:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033530:	4798      	blx	r3          LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no variable space\n"));          msg_ps->vb_ptr->ident = vb->ident; 8033532:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 8033536:	68ea      	ldr	r2, [r5, #12] 8033538:	60da      	str	r2, [r3, #12]          msg_ps->vb_ptr->ident_len = vb->ident_len; 803353a:	7a2a      	ldrb	r2, [r5, #8]          memp_free(MEMP_SNMP_VARBIND, vb); 803353c:	200c      	movs	r0, #12        else        {          en->get_value_pc(request_id, &msg_ps->ext_object_def);          LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no variable space\n"));          msg_ps->vb_ptr->ident = vb->ident;          msg_ps->vb_ptr->ident_len = vb->ident_len; 803353e:	721a      	strb	r2, [r3, #8]          memp_free(MEMP_SNMP_VARBIND, vb); 8033540:	4629      	mov	r1, r5 8033542:	f7fa f98d 	bl	802d860 <memp_free> 8033546:	e01b      	b.n	8033580 <snmp_msg_event+0x2c4>        }      }      else      {        /* vb->value_len == 0, empty value (e.g. empty string) */        en->get_value_a(request_id, &msg_ps->ext_object_def, 0, NULL); 8033548:	f8d8 603c 	ldr.w	r6, [r8, #60]	; 0x3c 803354c:	4638      	mov	r0, r7 803354e:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033552:	463a      	mov	r2, r7 8033554:	463b      	mov	r3, r7 8033556:	47b0      	blx	r6        vb->value = NULL; 8033558:	616f      	str	r7, [r5, #20]        snmp_varbind_tail_add(&msg_ps->outvb, vb); 803355a:	f504 7086 	add.w	r0, r4, #268	; 0x10c 803355e:	4629      	mov	r1, r5 8033560:	f7ff fea0 	bl	80332a4 <snmp_varbind_tail_add>        /* search again (if vb_idx < msg_ps->invb.count) */        msg_ps->state = SNMP_MSG_SEARCH_OBJ; 8033564:	2301      	movs	r3, #1 8033566:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a        msg_ps->vb_idx += 1; 803356a:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 803356e:	3301      	adds	r3, #1 8033570:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 8033574:	e09c      	b.n	80336b0 <snmp_msg_event+0x3f4>      }    }    else    {      en->get_value_pc(request_id, &msg_ps->ext_object_def); 8033576:	f8d8 304c 	ldr.w	r3, [r8, #76]	; 0x4c 803357a:	f104 0168 	add.w	r1, r4, #104	; 0x68 803357e:	4798      	blx	r3      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG); 8033580:	4620      	mov	r0, r4 8033582:	2101      	movs	r1, #1 8033584:	f7ff fe43 	bl	803320e <snmp_error_response> 8033588:	e092      	b.n	80336b0 <snmp_msg_event+0x3f4>         (msg_ps->vb_idx < msg_ps->invb.count))  {    struct mib_node *mn;    struct snmp_name_ptr np;    if (msg_ps->vb_idx == 0) 803358a:	b95b      	cbnz	r3, 80335a4 <snmp_msg_event+0x2e8>    {      msg_ps->vb_ptr = msg_ps->invb.head; 803358c:	f8d4 3100 	ldr.w	r3, [r4, #256]	; 0x100 8033590:	e00b      	b.n	80335aa <snmp_msg_event+0x2ee> 8033592:	bf00      	nop 8033594:	200110b0 	.word	0x200110b0 8033598:	08041be0 	.word	0x08041be0 803359c:	20011124 	.word	0x20011124 80335a0:	200111bc 	.word	0x200111bc    }    else    {      msg_ps->vb_ptr = msg_ps->vb_ptr->next; 80335a4:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80335a8:	681b      	ldr	r3, [r3, #0] 80335aa:	f8c4 30fc 	str.w	r3, [r4, #252]	; 0xfc    }    /** test object identifier for .iso.org.dod.internet prefix */    if (snmp_iso_prefix_tst(msg_ps->vb_ptr->ident_len,  msg_ps->vb_ptr->ident)) 80335ae:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80335b2:	7a18      	ldrb	r0, [r3, #8] 80335b4:	68d9      	ldr	r1, [r3, #12] 80335b6:	f7ff fd65 	bl	8033084 <snmp_iso_prefix_tst> 80335ba:	2800      	cmp	r0, #0 80335bc:	d073      	beq.n	80336a6 <snmp_msg_event+0x3ea>    {      mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, 80335be:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80335c2:	48a6      	ldr	r0, [pc, #664]	; (803385c <snmp_msg_event+0x5a0>) 80335c4:	7a19      	ldrb	r1, [r3, #8] 80335c6:	68da      	ldr	r2, [r3, #12] 80335c8:	3904      	subs	r1, #4 80335ca:	b2c9      	uxtb	r1, r1 80335cc:	3210      	adds	r2, #16 80335ce:	466b      	mov	r3, sp 80335d0:	f7ff fb0a 	bl	8032be8 <snmp_search_tree>                             msg_ps->vb_ptr->ident + 4, &np);      if (mn != NULL) 80335d4:	4606      	mov	r6, r0 80335d6:	2800      	cmp	r0, #0 80335d8:	d065      	beq.n	80336a6 <snmp_msg_event+0x3ea>      {        if (mn->node_type == MIB_NODE_EX) 80335da:	7c03      	ldrb	r3, [r0, #16] 80335dc:	2b05      	cmp	r3, #5 80335de:	d110      	bne.n	8033602 <snmp_msg_event+0x346>          /* external object */          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF;          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en; 80335e0:	65e0      	str	r0, [r4, #92]	; 0x5c        if (mn->node_type == MIB_NODE_EX)        {          /* external object */          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; 80335e2:	2307      	movs	r3, #7          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en;          msg_ps->ext_name_ptr = np; 80335e4:	e898 0003 	ldmia.w	r8, {r0, r1}        if (mn->node_type == MIB_NODE_EX)        {          /* external object */          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; 80335e8:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en;          msg_ps->ext_name_ptr = np; 80335ec:	4b9c      	ldr	r3, [pc, #624]	; (8033860 <snmp_msg_event+0x5a4>)          en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); 80335ee:	f89d 2000 	ldrb.w	r2, [sp]          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF;          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en;          msg_ps->ext_name_ptr = np; 80335f2:	e883 0003 	stmia.w	r3, {r0, r1}          en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); 80335f6:	2100      	movs	r1, #0 80335f8:	6ab5      	ldr	r5, [r6, #40]	; 0x28 80335fa:	6970      	ldr	r0, [r6, #20] 80335fc:	9b01      	ldr	r3, [sp, #4] 80335fe:	47a8      	blx	r5 8033600:	e058      	b.n	80336b4 <snmp_msg_event+0x3f8>        else        {          /* internal object */          struct obj_def object_def;          msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; 8033602:	2302      	movs	r3, #2 8033604:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a          mn->get_object_def(np.ident_len, np.ident, &object_def); 8033608:	6803      	ldr	r3, [r0, #0] 803360a:	9901      	ldr	r1, [sp, #4] 803360c:	f89d 0000 	ldrb.w	r0, [sp] 8033610:	aa02      	add	r2, sp, #8 8033612:	4798      	blx	r3          if ((object_def.instance != MIB_OBJECT_NONE) && 8033614:	f89d 3008 	ldrb.w	r3, [sp, #8] 8033618:	2b00      	cmp	r3, #0 803361a:	d044      	beq.n	80336a6 <snmp_msg_event+0x3ea>            (object_def.access & MIB_ACCESS_READ)) 803361c:	f89d 3009 	ldrb.w	r3, [sp, #9]          /* internal object */          struct obj_def object_def;          msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF;          mn->get_object_def(np.ident_len, np.ident, &object_def);          if ((object_def.instance != MIB_OBJECT_NONE) && 8033620:	07db      	lsls	r3, r3, #31 8033622:	f100 81c6 	bmi.w	80339b2 <snmp_msg_event+0x6f6> 8033626:	e03e      	b.n	80336a6 <snmp_msg_event+0x3ea>            msg_ps->state = SNMP_MSG_INTERNAL_GET_VALUE;            /* allocate output varbind */            vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND);            if (vb != NULL)            {              vb->next = NULL; 8033628:	2200      	movs	r2, #0 803362a:	602a      	str	r2, [r5, #0]              vb->prev = NULL; 803362c:	606a      	str	r2, [r5, #4]              /* move name from invb to outvb */              vb->ident = msg_ps->vb_ptr->ident; 803362e:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 8033632:	68d9      	ldr	r1, [r3, #12]              vb->ident_len = msg_ps->vb_ptr->ident_len; 8033634:	7a1b      	ldrb	r3, [r3, #8]            {              vb->next = NULL;              vb->prev = NULL;              /* move name from invb to outvb */              vb->ident = msg_ps->vb_ptr->ident; 8033636:	60e9      	str	r1, [r5, #12]              vb->ident_len = msg_ps->vb_ptr->ident_len; 8033638:	722b      	strb	r3, [r5, #8]              /* ensure this memory is refereced once only */              msg_ps->vb_ptr->ident = NULL; 803363a:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc              msg_ps->vb_ptr->ident_len = 0; 803363e:	721a      	strb	r2, [r3, #8]              /* move name from invb to outvb */              vb->ident = msg_ps->vb_ptr->ident;              vb->ident_len = msg_ps->vb_ptr->ident_len;              /* ensure this memory is refereced once only */              msg_ps->vb_ptr->ident = NULL; 8033640:	60da      	str	r2, [r3, #12]              msg_ps->vb_ptr->ident_len = 0;              vb->value_type = object_def.asn_type; 8033642:	f89d 300a 	ldrb.w	r3, [sp, #10] 8033646:	742b      	strb	r3, [r5, #16]              LWIP_ASSERT("invalid length", object_def.v_len <= 0xff);              vb->value_len = (u8_t)object_def.v_len; 8033648:	f89d 300c 	ldrb.w	r3, [sp, #12] 803364c:	746b      	strb	r3, [r5, #17]              if (vb->value_len > 0) 803364e:	b1bb      	cbz	r3, 8033680 <snmp_msg_event+0x3c4>              {                LWIP_ASSERT("SNMP_MAX_OCTET_STRING_LEN is configured too low",                  vb->value_len <= SNMP_MAX_VALUE_SIZE);                vb->value = memp_malloc(MEMP_SNMP_VALUE); 8033650:	200d      	movs	r0, #13 8033652:	f7fa f8ef 	bl	802d834 <memp_malloc> 8033656:	4602      	mov	r2, r0 8033658:	6168      	str	r0, [r5, #20]                if (vb->value != NULL) 803365a:	b120      	cbz	r0, 8033666 <snmp_msg_event+0x3aa>                {                  mn->get_value(&object_def, vb->value_len, vb->value); 803365c:	6877      	ldr	r7, [r6, #4] 803365e:	7c69      	ldrb	r1, [r5, #17] 8033660:	a802      	add	r0, sp, #8 8033662:	47b8      	blx	r7 8033664:	e00d      	b.n	8033682 <snmp_msg_event+0x3c6>                  msg_ps->vb_idx += 1;                }                else                {                  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: couldn't allocate variable space\n"));                  msg_ps->vb_ptr->ident = vb->ident; 8033666:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 803366a:	68e9      	ldr	r1, [r5, #12] 803366c:	60d9      	str	r1, [r3, #12]                  msg_ps->vb_ptr->ident_len = vb->ident_len; 803366e:	7a29      	ldrb	r1, [r5, #8]                  vb->ident = NULL; 8033670:	60e8      	str	r0, [r5, #12]                }                else                {                  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: couldn't allocate variable space\n"));                  msg_ps->vb_ptr->ident = vb->ident;                  msg_ps->vb_ptr->ident_len = vb->ident_len; 8033672:	7219      	strb	r1, [r3, #8]                  vb->ident = NULL;                  vb->ident_len = 0; 8033674:	7228      	strb	r0, [r5, #8]                  memp_free(MEMP_SNMP_VARBIND, vb); 8033676:	4629      	mov	r1, r5 8033678:	200c      	movs	r0, #12 803367a:	f7fa f8f1 	bl	802d860 <memp_free> 803367e:	e00d      	b.n	803369c <snmp_msg_event+0x3e0>                }              }              else              {                /* vb->value_len == 0, empty value (e.g. empty string) */                vb->value = NULL; 8033680:	616b      	str	r3, [r5, #20]                snmp_varbind_tail_add(&msg_ps->outvb, vb); 8033682:	4878      	ldr	r0, [pc, #480]	; (8033864 <snmp_msg_event+0x5a8>) 8033684:	4629      	mov	r1, r5 8033686:	f7ff fe0d 	bl	80332a4 <snmp_varbind_tail_add>                msg_ps->state = SNMP_MSG_SEARCH_OBJ; 803368a:	2301      	movs	r3, #1 803368c:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a                msg_ps->vb_idx += 1; 8033690:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 8033694:	3301      	adds	r3, #1 8033696:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 803369a:	e003      	b.n	80336a4 <snmp_msg_event+0x3e8>              }            }            else            {              LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: couldn't allocate outvb space\n"));              snmp_error_response(msg_ps,SNMP_ES_TOOBIG); 803369c:	4872      	ldr	r0, [pc, #456]	; (8033868 <snmp_msg_event+0x5ac>) 803369e:	2101      	movs	r1, #1 80336a0:	f7ff fdb5 	bl	803320e <snmp_error_response>    }    else    {      mn = NULL;    }    if (mn == NULL) 80336a4:	b936      	cbnz	r6, 80336b4 <snmp_msg_event+0x3f8>    {      /* mn == NULL, noSuchName */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 80336a6:	4870      	ldr	r0, [pc, #448]	; (8033868 <snmp_msg_event+0x5ac>) 80336a8:	2102      	movs	r1, #2 80336aa:	f7ff fdb0 	bl	803320e <snmp_error_response> 80336ae:	e001      	b.n	80336b4 <snmp_msg_event+0x3f8>      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG);    }  }  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80336b0:	4c6d      	ldr	r4, [pc, #436]	; (8033868 <snmp_msg_event+0x5ac>)      msg_ps->vb_ptr = msg_ps->vb_ptr->next;    }    /** test object identifier for .iso.org.dod.internet prefix */    if (snmp_iso_prefix_tst(msg_ps->vb_ptr->ident_len,  msg_ps->vb_ptr->ident))    {      mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, 80336b2:	46e8      	mov	r8, sp      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG);    }  }  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80336b4:	f894 305a 	ldrb.w	r3, [r4, #90]	; 0x5a 80336b8:	2b01      	cmp	r3, #1 80336ba:	f040 8196 	bne.w	80339ea <snmp_msg_event+0x72e>         (msg_ps->vb_idx < msg_ps->invb.count)) 80336be:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 80336c2:	f894 2108 	ldrb.w	r2, [r4, #264]	; 0x108      LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no outvb space\n"));      snmp_error_response(msg_ps,SNMP_ES_TOOBIG);    }  }  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80336c6:	4293      	cmp	r3, r2 80336c8:	f4ff af5f 	bcc.w	803358a <snmp_msg_event+0x2ce> 80336cc:	e17c      	b.n	80339c8 <snmp_msg_event+0x70c>    }    else if (msg_ps->rt == SNMP_ASN1_PDU_GET_REQ)    {      snmp_msg_get_event(request_id, msg_ps);    }    else if(msg_ps->rt == SNMP_ASN1_PDU_SET_REQ) 80336ce:	2e03      	cmp	r6, #3 80336d0:	f040 818b 	bne.w	80339ea <snmp_msg_event+0x72e>static voidsnmp_msg_set_event(u8_t request_id, struct snmp_msg_pstat *msg_ps){  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_set_event: msg_ps->state==%"U16_F"\n",(u16_t)msg_ps->state));  if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF) 80336d4:	f894 305a 	ldrb.w	r3, [r4, #90]	; 0x5a 80336d8:	2b07      	cmp	r3, #7 80336da:	d11b      	bne.n	8033714 <snmp_msg_event+0x458>  {    struct mib_external_node *en;    struct snmp_name_ptr np;    /* get_object_def() answer*/    en = msg_ps->ext_mib_node; 80336dc:	6de6      	ldr	r6, [r4, #92]	; 0x5c    np = msg_ps->ext_name_ptr; 80336de:	f894 9060 	ldrb.w	r9, [r4, #96]	; 0x60 80336e2:	f8d4 8064 	ldr.w	r8, [r4, #100]	; 0x64    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def); 80336e6:	6bb7      	ldr	r7, [r6, #56]	; 0x38 80336e8:	4649      	mov	r1, r9 80336ea:	4642      	mov	r2, r8 80336ec:	f104 0368 	add.w	r3, r4, #104	; 0x68 80336f0:	47b8      	blx	r7    if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) 80336f2:	f894 0068 	ldrb.w	r0, [r4, #104]	; 0x68 80336f6:	b140      	cbz	r0, 803370a <snmp_msg_event+0x44e>    {      msg_ps->state = SNMP_MSG_EXTERNAL_SET_TEST; 80336f8:	2309      	movs	r3, #9 80336fa:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a      en->set_test_q(request_id, &msg_ps->ext_object_def); 80336fe:	6b33      	ldr	r3, [r6, #48]	; 0x30 8033700:	4628      	mov	r0, r5 8033702:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033706:	4798      	blx	r3 8033708:	e0d5      	b.n	80338b6 <snmp_msg_event+0x5fa>    }    else    {      en->get_object_def_pc(request_id, np.ident_len, np.ident); 803370a:	6cb3      	ldr	r3, [r6, #72]	; 0x48 803370c:	4649      	mov	r1, r9 803370e:	4642      	mov	r2, r8 8033710:	4798      	blx	r3 8033712:	e023      	b.n	803375c <snmp_msg_event+0x4a0>      /* search failed, object id points to unknown object (nosuchname) */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME);    }  }  else if (msg_ps->state == SNMP_MSG_EXTERNAL_SET_TEST) 8033714:	2b09      	cmp	r3, #9 8033716:	d124      	bne.n	8033762 <snmp_msg_event+0x4a6>    struct mib_external_node *en;    /* set_test() answer*/    en = msg_ps->ext_mib_node;    if (msg_ps->ext_object_def.access & MIB_ACCESS_WRITE) 8033718:	f894 3069 	ldrb.w	r3, [r4, #105]	; 0x69  else if (msg_ps->state == SNMP_MSG_EXTERNAL_SET_TEST)  {    struct mib_external_node *en;    /* set_test() answer*/    en = msg_ps->ext_mib_node; 803371c:	6de5      	ldr	r5, [r4, #92]	; 0x5c    if (msg_ps->ext_object_def.access & MIB_ACCESS_WRITE) 803371e:	f003 0302 	and.w	r3, r3, #2 8033722:	b2db      	uxtb	r3, r3 8033724:	b1b3      	cbz	r3, 8033754 <snmp_msg_event+0x498>    {       if ((msg_ps->ext_object_def.asn_type == msg_ps->vb_ptr->value_type) && 8033726:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 803372a:	f894 106a 	ldrb.w	r1, [r4, #106]	; 0x6a 803372e:	7c1a      	ldrb	r2, [r3, #16] 8033730:	4291      	cmp	r1, r2 8033732:	d108      	bne.n	8033746 <snmp_msg_event+0x48a>           (en->set_test_a(request_id,&msg_ps->ext_object_def, 8033734:	7c5a      	ldrb	r2, [r3, #17] 8033736:	6c2e      	ldr	r6, [r5, #64]	; 0x40 8033738:	695b      	ldr	r3, [r3, #20] 803373a:	f104 0168 	add.w	r1, r4, #104	; 0x68 803373e:	47b0      	blx	r6    /* set_test() answer*/    en = msg_ps->ext_mib_node;    if (msg_ps->ext_object_def.access & MIB_ACCESS_WRITE)    {       if ((msg_ps->ext_object_def.asn_type == msg_ps->vb_ptr->value_type) && 8033740:	b108      	cbz	r0, 8033746 <snmp_msg_event+0x48a>           (en->set_test_a(request_id,&msg_ps->ext_object_def,                           msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value) != 0))      {        msg_ps->state = SNMP_MSG_SEARCH_OBJ; 8033742:	2301      	movs	r3, #1 8033744:	e040      	b.n	80337c8 <snmp_msg_event+0x50c>        msg_ps->vb_idx += 1;      }      else      {        en->set_test_pc(request_id,&msg_ps->ext_object_def); 8033746:	2000      	movs	r0, #0 8033748:	4948      	ldr	r1, [pc, #288]	; (803386c <snmp_msg_event+0x5b0>) 803374a:	6d2b      	ldr	r3, [r5, #80]	; 0x50 803374c:	4798      	blx	r3        /* bad value */        snmp_error_response(msg_ps,SNMP_ES_BADVALUE); 803374e:	4846      	ldr	r0, [pc, #280]	; (8033868 <snmp_msg_event+0x5ac>) 8033750:	2103      	movs	r1, #3 8033752:	e029      	b.n	80337a8 <snmp_msg_event+0x4ec>      }    }    else    {      en->set_test_pc(request_id,&msg_ps->ext_object_def); 8033754:	6d2b      	ldr	r3, [r5, #80]	; 0x50 8033756:	f104 0168 	add.w	r1, r4, #104	; 0x68 803375a:	4798      	blx	r3      /* object not available for set */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 803375c:	4620      	mov	r0, r4 803375e:	2102      	movs	r1, #2 8033760:	e022      	b.n	80337a8 <snmp_msg_event+0x4ec>    }  }  else if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF_S) 8033762:	2b0a      	cmp	r3, #10 8033764:	d123      	bne.n	80337ae <snmp_msg_event+0x4f2>  {    struct mib_external_node *en;    struct snmp_name_ptr np;    /* get_object_def() answer*/    en = msg_ps->ext_mib_node; 8033766:	6de6      	ldr	r6, [r4, #92]	; 0x5c    np = msg_ps->ext_name_ptr; 8033768:	f894 9060 	ldrb.w	r9, [r4, #96]	; 0x60 803376c:	f8d4 8064 	ldr.w	r8, [r4, #100]	; 0x64    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def); 8033770:	6bb7      	ldr	r7, [r6, #56]	; 0x38 8033772:	4649      	mov	r1, r9 8033774:	4642      	mov	r2, r8 8033776:	f104 0368 	add.w	r3, r4, #104	; 0x68 803377a:	47b8      	blx	r7    if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) 803377c:	f894 0068 	ldrb.w	r0, [r4, #104]	; 0x68 8033780:	b160      	cbz	r0, 803379c <snmp_msg_event+0x4e0>    {      msg_ps->state = SNMP_MSG_EXTERNAL_SET_VALUE; 8033782:	230b      	movs	r3, #11 8033784:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a      en->set_value_q(request_id, &msg_ps->ext_object_def,                      msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value); 8033788:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc    /* translate answer into a known lifeform */    en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def);    if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE)    {      msg_ps->state = SNMP_MSG_EXTERNAL_SET_VALUE;      en->set_value_q(request_id, &msg_ps->ext_object_def, 803378c:	6b76      	ldr	r6, [r6, #52]	; 0x34 803378e:	7c5a      	ldrb	r2, [r3, #17] 8033790:	695b      	ldr	r3, [r3, #20] 8033792:	4628      	mov	r0, r5 8033794:	f104 0168 	add.w	r1, r4, #104	; 0x68 8033798:	47b0      	blx	r6 803379a:	e08c      	b.n	80338b6 <snmp_msg_event+0x5fa>                      msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value);    }    else    {      en->get_object_def_pc(request_id, np.ident_len, np.ident); 803379c:	4649      	mov	r1, r9 803379e:	6cb3      	ldr	r3, [r6, #72]	; 0x48 80337a0:	4642      	mov	r2, r8 80337a2:	4798      	blx	r3      /* set_value failed, object has disappeared for some odd reason?? */      snmp_error_response(msg_ps,SNMP_ES_GENERROR); 80337a4:	4620      	mov	r0, r4 80337a6:	2105      	movs	r1, #5 80337a8:	f7ff fd31 	bl	803320e <snmp_error_response> 80337ac:	e083      	b.n	80338b6 <snmp_msg_event+0x5fa>    }  }  else if (msg_ps->state == SNMP_MSG_EXTERNAL_SET_VALUE) 80337ae:	2b0b      	cmp	r3, #11 80337b0:	f040 8081 	bne.w	80338b6 <snmp_msg_event+0x5fa>    struct mib_external_node *en;    /** set_value_a() */    en = msg_ps->ext_mib_node;    en->set_value_a(request_id, &msg_ps->ext_object_def,      msg_ps->vb_ptr->value_len, msg_ps->vb_ptr->value); 80337b4:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc  {    struct mib_external_node *en;    /** set_value_a() */    en = msg_ps->ext_mib_node;    en->set_value_a(request_id, &msg_ps->ext_object_def, 80337b8:	6de2      	ldr	r2, [r4, #92]	; 0x5c 80337ba:	f104 0168 	add.w	r1, r4, #104	; 0x68 80337be:	6c55      	ldr	r5, [r2, #68]	; 0x44 80337c0:	7c5a      	ldrb	r2, [r3, #17] 80337c2:	695b      	ldr	r3, [r3, #20] 80337c4:	47a8      	blx	r5      msg_ps->vb_ptr->value_len, msg_ps->vb_ptr->value);    /** @todo use set_value_pc() if toobig */    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE; 80337c6:	2306      	movs	r3, #6 80337c8:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a    msg_ps->vb_idx += 1; 80337cc:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 80337d0:	3301      	adds	r3, #1 80337d2:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 80337d6:	e06e      	b.n	80338b6 <snmp_msg_event+0x5fa>         (msg_ps->vb_idx < msg_ps->invb.count))  {    struct mib_node *mn;    struct snmp_name_ptr np;    if (msg_ps->vb_idx == 0) 80337d8:	b912      	cbnz	r2, 80337e0 <snmp_msg_event+0x524>    {      msg_ps->vb_ptr = msg_ps->invb.head; 80337da:	f8d4 3100 	ldr.w	r3, [r4, #256]	; 0x100 80337de:	e002      	b.n	80337e6 <snmp_msg_event+0x52a>    }    else    {      msg_ps->vb_ptr = msg_ps->vb_ptr->next; 80337e0:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80337e4:	681b      	ldr	r3, [r3, #0] 80337e6:	f8c4 30fc 	str.w	r3, [r4, #252]	; 0xfc    }    /** test object identifier for .iso.org.dod.internet prefix */    if (snmp_iso_prefix_tst(msg_ps->vb_ptr->ident_len,  msg_ps->vb_ptr->ident)) 80337ea:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80337ee:	7a18      	ldrb	r0, [r3, #8] 80337f0:	68d9      	ldr	r1, [r3, #12] 80337f2:	f7ff fc47 	bl	8033084 <snmp_iso_prefix_tst> 80337f6:	2800      	cmp	r0, #0 80337f8:	d058      	beq.n	80338ac <snmp_msg_event+0x5f0>    {      mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, 80337fa:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80337fe:	4817      	ldr	r0, [pc, #92]	; (803385c <snmp_msg_event+0x5a0>) 8033800:	7a19      	ldrb	r1, [r3, #8] 8033802:	68da      	ldr	r2, [r3, #12] 8033804:	3904      	subs	r1, #4 8033806:	b2c9      	uxtb	r1, r1 8033808:	3210      	adds	r2, #16 803380a:	466b      	mov	r3, sp 803380c:	f7ff f9ec 	bl	8032be8 <snmp_search_tree>                             msg_ps->vb_ptr->ident + 4, &np);      if (mn != NULL) 8033810:	4605      	mov	r5, r0 8033812:	2800      	cmp	r0, #0 8033814:	d04a      	beq.n	80338ac <snmp_msg_event+0x5f0>      {        if (mn->node_type == MIB_NODE_EX) 8033816:	7c03      	ldrb	r3, [r0, #16] 8033818:	2b05      	cmp	r3, #5 803381a:	d110      	bne.n	803383e <snmp_msg_event+0x582>          /* external object */          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF;          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en; 803381c:	65e0      	str	r0, [r4, #92]	; 0x5c        if (mn->node_type == MIB_NODE_EX)        {          /* external object */          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; 803381e:	2307      	movs	r3, #7          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en;          msg_ps->ext_name_ptr = np; 8033820:	e896 0003 	ldmia.w	r6, {r0, r1}        if (mn->node_type == MIB_NODE_EX)        {          /* external object */          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; 8033824:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en;          msg_ps->ext_name_ptr = np; 8033828:	4b0d      	ldr	r3, [pc, #52]	; (8033860 <snmp_msg_event+0x5a4>)          en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); 803382a:	f89d 2000 	ldrb.w	r2, [sp]          struct mib_external_node *en = (struct mib_external_node*)mn;          msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF;          /* save en && args in msg_ps!! */          msg_ps->ext_mib_node = en;          msg_ps->ext_name_ptr = np; 803382e:	e883 0003 	stmia.w	r3, {r0, r1}          en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); 8033832:	2100      	movs	r1, #0 8033834:	6aaf      	ldr	r7, [r5, #40]	; 0x28 8033836:	6968      	ldr	r0, [r5, #20] 8033838:	9b01      	ldr	r3, [sp, #4] 803383a:	47b8      	blx	r7 803383c:	e03d      	b.n	80338ba <snmp_msg_event+0x5fe>        else        {          /* internal object */          struct obj_def object_def;          msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; 803383e:	2702      	movs	r7, #2 8033840:	f884 705a 	strb.w	r7, [r4, #90]	; 0x5a          mn->get_object_def(np.ident_len, np.ident, &object_def); 8033844:	6803      	ldr	r3, [r0, #0] 8033846:	9901      	ldr	r1, [sp, #4] 8033848:	f89d 0000 	ldrb.w	r0, [sp] 803384c:	aa02      	add	r2, sp, #8 803384e:	4798      	blx	r3          if (object_def.instance != MIB_OBJECT_NONE) 8033850:	f89d 3008 	ldrb.w	r3, [sp, #8] 8033854:	2b00      	cmp	r3, #0 8033856:	f040 80b9 	bne.w	80339cc <snmp_msg_event+0x710> 803385a:	e027      	b.n	80338ac <snmp_msg_event+0x5f0> 803385c:	08041be0 	.word	0x08041be0 8033860:	20011110 	.word	0x20011110 8033864:	200111bc 	.word	0x200111bc 8033868:	200110b0 	.word	0x200110b0 803386c:	20011118 	.word	0x20011118          {            msg_ps->state = SNMP_MSG_INTERNAL_SET_TEST;            if (object_def.access & MIB_ACCESS_WRITE)            {              if ((object_def.asn_type == msg_ps->vb_ptr->value_type) && 8033870:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 8033874:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033878:	7c1a      	ldrb	r2, [r3, #16] 803387a:	4291      	cmp	r1, r2 803387c:	d10e      	bne.n	803389c <snmp_msg_event+0x5e0>                  (mn->set_test(&object_def,msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value) != 0)) 803387e:	68af      	ldr	r7, [r5, #8] 8033880:	7c59      	ldrb	r1, [r3, #17] 8033882:	695a      	ldr	r2, [r3, #20] 8033884:	a802      	add	r0, sp, #8 8033886:	47b8      	blx	r7          {            msg_ps->state = SNMP_MSG_INTERNAL_SET_TEST;            if (object_def.access & MIB_ACCESS_WRITE)            {              if ((object_def.asn_type == msg_ps->vb_ptr->value_type) && 8033888:	b140      	cbz	r0, 803389c <snmp_msg_event+0x5e0>                  (mn->set_test(&object_def,msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value) != 0))              {                msg_ps->state = SNMP_MSG_SEARCH_OBJ; 803388a:	2301      	movs	r3, #1 803388c:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a                msg_ps->vb_idx += 1; 8033890:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 8033894:	3301      	adds	r3, #1 8033896:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 803389a:	e006      	b.n	80338aa <snmp_msg_event+0x5ee>              }              else              {                /* bad value */                snmp_error_response(msg_ps,SNMP_ES_BADVALUE); 803389c:	4854      	ldr	r0, [pc, #336]	; (80339f0 <snmp_msg_event+0x734>) 803389e:	2103      	movs	r1, #3 80338a0:	e001      	b.n	80338a6 <snmp_msg_event+0x5ea>              }            }            else            {              /* object not available for set */              snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 80338a2:	4853      	ldr	r0, [pc, #332]	; (80339f0 <snmp_msg_event+0x734>) 80338a4:	4639      	mov	r1, r7 80338a6:	f7ff fcb2 	bl	803320e <snmp_error_response>    }    else    {      mn = NULL;    }    if (mn == NULL) 80338aa:	b935      	cbnz	r5, 80338ba <snmp_msg_event+0x5fe>    {      /* mn == NULL, noSuchName */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 80338ac:	4850      	ldr	r0, [pc, #320]	; (80339f0 <snmp_msg_event+0x734>) 80338ae:	2102      	movs	r1, #2 80338b0:	f7ff fcad 	bl	803320e <snmp_error_response> 80338b4:	e001      	b.n	80338ba <snmp_msg_event+0x5fe>    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE;    msg_ps->vb_idx += 1;  }  /* test all values before setting */  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80338b6:	4c4e      	ldr	r4, [pc, #312]	; (80339f0 <snmp_msg_event+0x734>)      msg_ps->vb_ptr = msg_ps->vb_ptr->next;    }    /** test object identifier for .iso.org.dod.internet prefix */    if (snmp_iso_prefix_tst(msg_ps->vb_ptr->ident_len,  msg_ps->vb_ptr->ident))    {      mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, 80338b8:	466e      	mov	r6, sp    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE;    msg_ps->vb_idx += 1;  }  /* test all values before setting */  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80338ba:	f894 205a 	ldrb.w	r2, [r4, #90]	; 0x5a 80338be:	4b4c      	ldr	r3, [pc, #304]	; (80339f0 <snmp_msg_event+0x734>) 80338c0:	2a01      	cmp	r2, #1 80338c2:	d151      	bne.n	8033968 <snmp_msg_event+0x6ac>         (msg_ps->vb_idx < msg_ps->invb.count)) 80338c4:	f894 20f8 	ldrb.w	r2, [r4, #248]	; 0xf8 80338c8:	f894 1108 	ldrb.w	r1, [r4, #264]	; 0x108    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE;    msg_ps->vb_idx += 1;  }  /* test all values before setting */  while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80338cc:	428a      	cmp	r2, r1 80338ce:	d383      	bcc.n	80337d8 <snmp_msg_event+0x51c> 80338d0:	e088      	b.n	80339e4 <snmp_msg_event+0x728>  }  if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) &&      (msg_ps->vb_idx == msg_ps->invb.count))  {    msg_ps->vb_idx = 0; 80338d2:	2200      	movs	r2, #0 80338d4:	f883 20f8 	strb.w	r2, [r3, #248]	; 0xf8    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE; 80338d8:	2206      	movs	r2, #6 80338da:	f883 205a 	strb.w	r2, [r3, #90]	; 0x5a 80338de:	e043      	b.n	8033968 <snmp_msg_event+0x6ac>         (msg_ps->vb_idx < msg_ps->invb.count))  {    struct mib_node *mn;    struct snmp_name_ptr np;    if (msg_ps->vb_idx == 0) 80338e0:	b913      	cbnz	r3, 80338e8 <snmp_msg_event+0x62c>    {      msg_ps->vb_ptr = msg_ps->invb.head; 80338e2:	f8d4 3100 	ldr.w	r3, [r4, #256]	; 0x100 80338e6:	e002      	b.n	80338ee <snmp_msg_event+0x632>    }    else    {      msg_ps->vb_ptr = msg_ps->vb_ptr->next; 80338e8:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80338ec:	681b      	ldr	r3, [r3, #0] 80338ee:	f8c4 30fc 	str.w	r3, [r4, #252]	; 0xfc    }    /* skip iso prefix test, was done previously while settesting() */    mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, 80338f2:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 80338f6:	483f      	ldr	r0, [pc, #252]	; (80339f4 <snmp_msg_event+0x738>) 80338f8:	7a19      	ldrb	r1, [r3, #8] 80338fa:	68da      	ldr	r2, [r3, #12] 80338fc:	3904      	subs	r1, #4 80338fe:	b2c9      	uxtb	r1, r1 8033900:	3210      	adds	r2, #16 8033902:	466b      	mov	r3, sp 8033904:	f7ff f970 	bl	8032be8 <snmp_search_tree>                           msg_ps->vb_ptr->ident + 4, &np);    /* check if object is still available       (e.g. external hot-plug thingy present?) */    if (mn != NULL) 8033908:	4605      	mov	r5, r0 803390a:	2800      	cmp	r0, #0 803390c:	d02e      	beq.n	803396c <snmp_msg_event+0x6b0>    {      if (mn->node_type == MIB_NODE_EX) 803390e:	7c03      	ldrb	r3, [r0, #16] 8033910:	2b05      	cmp	r3, #5 8033912:	d110      	bne.n	8033936 <snmp_msg_event+0x67a>        /* external object */        struct mib_external_node *en = (struct mib_external_node*)mn;        msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF_S;        /* save en && args in msg_ps!! */        msg_ps->ext_mib_node = en; 8033914:	65e0      	str	r0, [r4, #92]	; 0x5c      if (mn->node_type == MIB_NODE_EX)      {        /* external object */        struct mib_external_node *en = (struct mib_external_node*)mn;        msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF_S; 8033916:	230a      	movs	r3, #10        /* save en && args in msg_ps!! */        msg_ps->ext_mib_node = en;        msg_ps->ext_name_ptr = np; 8033918:	e896 0003 	ldmia.w	r6, {r0, r1}      if (mn->node_type == MIB_NODE_EX)      {        /* external object */        struct mib_external_node *en = (struct mib_external_node*)mn;        msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF_S; 803391c:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a        /* save en && args in msg_ps!! */        msg_ps->ext_mib_node = en;        msg_ps->ext_name_ptr = np; 8033920:	4b35      	ldr	r3, [pc, #212]	; (80339f8 <snmp_msg_event+0x73c>)        en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); 8033922:	f89d 2000 	ldrb.w	r2, [sp]        struct mib_external_node *en = (struct mib_external_node*)mn;        msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF_S;        /* save en && args in msg_ps!! */        msg_ps->ext_mib_node = en;        msg_ps->ext_name_ptr = np; 8033926:	e883 0003 	stmia.w	r3, {r0, r1}        en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); 803392a:	2100      	movs	r1, #0 803392c:	6aaf      	ldr	r7, [r5, #40]	; 0x28 803392e:	6968      	ldr	r0, [r5, #20] 8033930:	9b01      	ldr	r3, [sp, #4] 8033932:	47b8      	blx	r7 8033934:	e01a      	b.n	803396c <snmp_msg_event+0x6b0>      else      {        /* internal object */        struct obj_def object_def;        msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF_S; 8033936:	2305      	movs	r3, #5 8033938:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a        mn->get_object_def(np.ident_len, np.ident, &object_def); 803393c:	6803      	ldr	r3, [r0, #0] 803393e:	9901      	ldr	r1, [sp, #4] 8033940:	f89d 0000 	ldrb.w	r0, [sp] 8033944:	aa02      	add	r2, sp, #8 8033946:	4798      	blx	r3        msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE; 8033948:	2306      	movs	r3, #6 803394a:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a        mn->set_value(&object_def,msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value); 803394e:	f8d4 30fc 	ldr.w	r3, [r4, #252]	; 0xfc 8033952:	68ed      	ldr	r5, [r5, #12] 8033954:	7c59      	ldrb	r1, [r3, #17] 8033956:	695a      	ldr	r2, [r3, #20] 8033958:	a802      	add	r0, sp, #8 803395a:	47a8      	blx	r5        msg_ps->vb_idx += 1; 803395c:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 8033960:	3301      	adds	r3, #1 8033962:	f884 30f8 	strb.w	r3, [r4, #248]	; 0xf8 8033966:	e001      	b.n	803396c <snmp_msg_event+0x6b0>    msg_ps->vb_idx = 0;    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE;  }  /* set all values "atomically" (be as "atomic" as possible) */  while ((msg_ps->state == SNMP_MSG_INTERNAL_SET_VALUE) && 8033968:	4c21      	ldr	r4, [pc, #132]	; (80339f0 <snmp_msg_event+0x734>)    else    {      msg_ps->vb_ptr = msg_ps->vb_ptr->next;    }    /* skip iso prefix test, was done previously while settesting() */    mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, 803396a:	466e      	mov	r6, sp    msg_ps->vb_idx = 0;    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE;  }  /* set all values "atomically" (be as "atomic" as possible) */  while ((msg_ps->state == SNMP_MSG_INTERNAL_SET_VALUE) && 803396c:	f894 305a 	ldrb.w	r3, [r4, #90]	; 0x5a 8033970:	4d1f      	ldr	r5, [pc, #124]	; (80339f0 <snmp_msg_event+0x734>) 8033972:	2b06      	cmp	r3, #6 8033974:	d139      	bne.n	80339ea <snmp_msg_event+0x72e>         (msg_ps->vb_idx < msg_ps->invb.count)) 8033976:	f894 30f8 	ldrb.w	r3, [r4, #248]	; 0xf8 803397a:	f894 2108 	ldrb.w	r2, [r4, #264]	; 0x108    msg_ps->vb_idx = 0;    msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE;  }  /* set all values "atomically" (be as "atomic" as possible) */  while ((msg_ps->state == SNMP_MSG_INTERNAL_SET_VALUE) && 803397e:	4293      	cmp	r3, r2 8033980:	d3ae      	bcc.n	80338e0 <snmp_msg_event+0x624> 8033982:	e031      	b.n	80339e8 <snmp_msg_event+0x72c>      (msg_ps->vb_idx == msg_ps->invb.count))  {    /* simply echo the input if we can set it       @todo do we need to return the actual value?       e.g. if value is silently modified or behaves sticky? */    msg_ps->outvb = msg_ps->invb; 8033984:	f505 7280 	add.w	r2, r5, #256	; 0x100 8033988:	ca07      	ldmia	r2, {r0, r1, r2} 803398a:	f505 7386 	add.w	r3, r5, #268	; 0x10c 803398e:	e883 0007 	stmia.w	r3, {r0, r1, r2}    msg_ps->invb.head = NULL; 8033992:	2300      	movs	r3, #0 8033994:	f8c5 3100 	str.w	r3, [r5, #256]	; 0x100    msg_ps->invb.tail = NULL; 8033998:	f8c5 3104 	str.w	r3, [r5, #260]	; 0x104    msg_ps->invb.count = 0; 803399c:	f885 3108 	strb.w	r3, [r5, #264]	; 0x108    snmp_ok_response(msg_ps); 80339a0:	4628      	mov	r0, r5 80339a2:	f7ff fc6f 	bl	8033284 <snmp_ok_response> 80339a6:	e020      	b.n	80339ea <snmp_msg_event+0x72e>      }    }    if (mn == NULL)    {      /* mn == NULL, noSuchName */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); 80339a8:	4811      	ldr	r0, [pc, #68]	; (80339f0 <snmp_msg_event+0x734>) 80339aa:	2102      	movs	r1, #2 80339ac:	f7ff fc2f 	bl	803320e <snmp_error_response> 80339b0:	e556      	b.n	8033460 <snmp_msg_event+0x1a4>          }          if (mn != NULL)          {            struct snmp_varbind *vb;            msg_ps->state = SNMP_MSG_INTERNAL_GET_VALUE; 80339b2:	2303      	movs	r3, #3            /* allocate output varbind */            vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); 80339b4:	200c      	movs	r0, #12          }          if (mn != NULL)          {            struct snmp_varbind *vb;            msg_ps->state = SNMP_MSG_INTERNAL_GET_VALUE; 80339b6:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a            /* allocate output varbind */            vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); 80339ba:	f7f9 ff3b 	bl	802d834 <memp_malloc>            if (vb != NULL) 80339be:	4605      	mov	r5, r0 80339c0:	2800      	cmp	r0, #0 80339c2:	f47f ae31 	bne.w	8033628 <snmp_msg_event+0x36c> 80339c6:	e669      	b.n	803369c <snmp_msg_event+0x3e0>    {      /* mn == NULL, noSuchName */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME);    }  }  if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80339c8:	d10f      	bne.n	80339ea <snmp_msg_event+0x72e> 80339ca:	e555      	b.n	8033478 <snmp_msg_event+0x1bc>            /* search failed, object id points to unknown object (nosuchname) */            mn = NULL;          }          if (mn != NULL)          {            msg_ps->state = SNMP_MSG_INTERNAL_SET_TEST; 80339cc:	2304      	movs	r3, #4 80339ce:	f884 305a 	strb.w	r3, [r4, #90]	; 0x5a            if (object_def.access & MIB_ACCESS_WRITE) 80339d2:	f89d 3009 	ldrb.w	r3, [sp, #9] 80339d6:	f003 0302 	and.w	r3, r3, #2 80339da:	b2db      	uxtb	r3, r3 80339dc:	2b00      	cmp	r3, #0 80339de:	f47f af47 	bne.w	8033870 <snmp_msg_event+0x5b4> 80339e2:	e75e      	b.n	80338a2 <snmp_msg_event+0x5e6>      /* mn == NULL, noSuchName */      snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME);    }  }  if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && 80339e4:	d1c0      	bne.n	8033968 <snmp_msg_event+0x6ac> 80339e6:	e774      	b.n	80338d2 <snmp_msg_event+0x616>        mn->set_value(&object_def,msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value);        msg_ps->vb_idx += 1;      }    }  }  if ((msg_ps->state == SNMP_MSG_INTERNAL_SET_VALUE) && 80339e8:	d0cc      	beq.n	8033984 <snmp_msg_event+0x6c8>    else if(msg_ps->rt == SNMP_ASN1_PDU_SET_REQ)    {      snmp_msg_set_event(request_id, msg_ps);    }  }} 80339ea:	b027      	add	sp, #156	; 0x9c 80339ec:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc} 80339f0:	200110b0 	.word	0x200110b0 80339f4:	08041be0 	.word	0x08041be0 80339f8:	20011110 	.word	0x20011110080339fc <snmp_pdu_dec_varbindlist>:  return ERR_OK;}static err_tsnmp_pdu_dec_varbindlist(struct pbuf *p, u16_t ofs, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat){ 80339fc:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} 8033a00:	b0c7      	sub	sp, #284	; 0x11c  u16_t len, vb_len;  u8_t  len_octets;  u8_t type;  /* variable binding list */  snmp_asn1_dec_type(p, ofs, &type); 8033a02:	f10d 070b 	add.w	r7, sp, #11  return ERR_OK;}static err_tsnmp_pdu_dec_varbindlist(struct pbuf *p, u16_t ofs, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat){ 8033a06:	468a      	mov	sl, r1 8033a08:	4691      	mov	r9, r2  u16_t len, vb_len;  u8_t  len_octets;  u8_t type;  /* variable binding list */  snmp_asn1_dec_type(p, ofs, &type); 8033a0a:	463a      	mov	r2, r7  return ERR_OK;}static err_tsnmp_pdu_dec_varbindlist(struct pbuf *p, u16_t ofs, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat){ 8033a0c:	4604      	mov	r4, r0 8033a0e:	461d      	mov	r5, r3  u8_t  len_octets;  u8_t type;  /* variable binding list */  snmp_asn1_dec_type(p, ofs, &type);  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &vb_len); 8033a10:	f10d 060e 	add.w	r6, sp, #14  u16_t len, vb_len;  u8_t  len_octets;  u8_t type;  /* variable binding list */  snmp_asn1_dec_type(p, ofs, &type); 8033a14:	f7fd f928 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &vb_len); 8033a18:	f10a 0101 	add.w	r1, sl, #1 8033a1c:	4620      	mov	r0, r4 8033a1e:	b289      	uxth	r1, r1 8033a20:	f10d 020a 	add.w	r2, sp, #10 8033a24:	4633      	mov	r3, r6 8033a26:	f7fd f934 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || 8033a2a:	b910      	cbnz	r0, 8033a32 <snmp_pdu_dec_varbindlist+0x36> 8033a2c:	783b      	ldrb	r3, [r7, #0] 8033a2e:	2b30      	cmp	r3, #48	; 0x30 8033a30:	d002      	beq.n	8033a38 <snmp_pdu_dec_varbindlist+0x3c>      (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)))  {    snmp_inc_snmpinasnparseerrs(); 8033a32:	f7fe ff21 	bl	8032878 <snmp_inc_snmpinasnparseerrs> 8033a36:	e02b      	b.n	8033a90 <snmp_pdu_dec_varbindlist+0x94>    return ERR_ARG;  }  ofs += (1 + len_octets); 8033a38:	f89d 800a 	ldrb.w	r8, [sp, #10]  /* start with empty list */  m_stat->invb.count = 0; 8033a3c:	f885 0108 	strb.w	r0, [r5, #264]	; 0x108      (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)))  {    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  ofs += (1 + len_octets); 8033a40:	f108 0801 	add.w	r8, r8, #1 8033a44:	44d0      	add	r8, sl 8033a46:	fa1f f888 	uxth.w	r8, r8  /* start with empty list */  m_stat->invb.count = 0;  m_stat->invb.head = NULL; 8033a4a:	f8c5 0100 	str.w	r0, [r5, #256]	; 0x100  m_stat->invb.tail = NULL; 8033a4e:	f8c5 0104 	str.w	r0, [r5, #260]	; 0x104  while (vb_len > 0) 8033a52:	e118      	b.n	8033c86 <snmp_pdu_dec_varbindlist+0x28a>  {    struct snmp_obj_id oid, oid_value;    struct snmp_varbind *vb;    snmp_asn1_dec_type(p, ofs, &type); 8033a54:	4641      	mov	r1, r8 8033a56:	463a      	mov	r2, r7 8033a58:	4620      	mov	r0, r4 8033a5a:	f7fd f905 	bl	8030c68 <snmp_asn1_dec_type>    derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033a5e:	f108 0101 	add.w	r1, r8, #1 8033a62:	4620      	mov	r0, r4 8033a64:	b289      	uxth	r1, r1 8033a66:	f10d 020a 	add.w	r2, sp, #10 8033a6a:	ab03      	add	r3, sp, #12 8033a6c:	f7fd f911 	bl	8030c92 <snmp_asn1_dec_length>    if ((derr != ERR_OK) || 8033a70:	b940      	cbnz	r0, 8033a84 <snmp_pdu_dec_varbindlist+0x88> 8033a72:	783b      	ldrb	r3, [r7, #0] 8033a74:	2b30      	cmp	r3, #48	; 0x30 8033a76:	d105      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88>        (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)) ||        (len == 0) || (len > vb_len)) 8033a78:	f8bd 200c 	ldrh.w	r2, [sp, #12]    struct snmp_varbind *vb;    snmp_asn1_dec_type(p, ofs, &type);    derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len);    if ((derr != ERR_OK) ||        (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)) || 8033a7c:	b112      	cbz	r2, 8033a84 <snmp_pdu_dec_varbindlist+0x88>        (len == 0) || (len > vb_len)) 8033a7e:	8833      	ldrh	r3, [r6, #0] 8033a80:	429a      	cmp	r2, r3 8033a82:	d907      	bls.n	8033a94 <snmp_pdu_dec_varbindlist+0x98>    {      snmp_inc_snmpinasnparseerrs(); 8033a84:	f7fe fef8 	bl	8032878 <snmp_inc_snmpinasnparseerrs>      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb); 8033a88:	f505 7080 	add.w	r0, r5, #256	; 0x100 8033a8c:	f7ff fbb1 	bl	80331f2 <snmp_varbind_list_free> 8033a90:	20f2      	movs	r0, #242	; 0xf2 8033a92:	e109      	b.n	8033ca8 <snmp_pdu_dec_varbindlist+0x2ac>      return ERR_ARG;    }    ofs += (1 + len_octets); 8033a94:	f89d 200a 	ldrb.w	r2, [sp, #10] 8033a98:	4490      	add	r8, r2 8033a9a:	fa1f f888 	uxth.w	r8, r8 8033a9e:	f108 0a01 	add.w	sl, r8, #1    vb_len -= (1 + len_octets); 8033aa2:	43d2      	mvns	r2, r2      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets); 8033aa4:	fa1f fa8a 	uxth.w	sl, sl    vb_len -= (1 + len_octets); 8033aa8:	189b      	adds	r3, r3, r2    snmp_asn1_dec_type(p, ofs, &type); 8033aaa:	4651      	mov	r1, sl 8033aac:	463a      	mov	r2, r7 8033aae:	4620      	mov	r0, r4      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets);    vb_len -= (1 + len_octets); 8033ab0:	8033      	strh	r3, [r6, #0]    snmp_asn1_dec_type(p, ofs, &type); 8033ab2:	f7fd f8d9 	bl	8030c68 <snmp_asn1_dec_type>    derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033ab6:	f108 0102 	add.w	r1, r8, #2 8033aba:	4620      	mov	r0, r4 8033abc:	b289      	uxth	r1, r1 8033abe:	f10d 020a 	add.w	r2, sp, #10 8033ac2:	ab03      	add	r3, sp, #12 8033ac4:	f7fd f8e5 	bl	8030c92 <snmp_asn1_dec_length>    if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID))) 8033ac8:	2800      	cmp	r0, #0 8033aca:	d1db      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88> 8033acc:	783b      	ldrb	r3, [r7, #0] 8033ace:	2b06      	cmp	r3, #6 8033ad0:	d1d8      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88>      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    derr = snmp_asn1_dec_oid(p, ofs + 1 + len_octets, len, &oid); 8033ad2:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033ad6:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033ada:	3101      	adds	r1, #1 8033adc:	4451      	add	r1, sl 8033ade:	4620      	mov	r0, r4 8033ae0:	b289      	uxth	r1, r1 8033ae2:	ab04      	add	r3, sp, #16 8033ae4:	f7fd fa04 	bl	8030ef0 <snmp_asn1_dec_oid>    if (derr != ERR_OK) 8033ae8:	2800      	cmp	r0, #0 8033aea:	d1cb      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88>      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets + len); 8033aec:	f89d 300a 	ldrb.w	r3, [sp, #10] 8033af0:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033af4:	1899      	adds	r1, r3, r2 8033af6:	448a      	add	sl, r1 8033af8:	fa1f fa8a 	uxth.w	sl, sl    vb_len -= (1 + len_octets + len); 8033afc:	8831      	ldrh	r1, [r6, #0]      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets + len); 8033afe:	f10a 0801 	add.w	r8, sl, #1    vb_len -= (1 + len_octets + len); 8033b02:	1a8a      	subs	r2, r1, r2      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets + len); 8033b04:	fa1f f888 	uxth.w	r8, r8    vb_len -= (1 + len_octets + len); 8033b08:	43db      	mvns	r3, r3 8033b0a:	18d3      	adds	r3, r2, r3    snmp_asn1_dec_type(p, ofs, &type); 8033b0c:	4641      	mov	r1, r8 8033b0e:	463a      	mov	r2, r7 8033b10:	4620      	mov	r0, r4      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets + len);    vb_len -= (1 + len_octets + len); 8033b12:	8033      	strh	r3, [r6, #0]    snmp_asn1_dec_type(p, ofs, &type); 8033b14:	f7fd f8a8 	bl	8030c68 <snmp_asn1_dec_type>    derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033b18:	f10a 0102 	add.w	r1, sl, #2 8033b1c:	4620      	mov	r0, r4 8033b1e:	b289      	uxth	r1, r1 8033b20:	f10d 020a 	add.w	r2, sp, #10 8033b24:	ab03      	add	r3, sp, #12 8033b26:	f7fd f8b4 	bl	8030c92 <snmp_asn1_dec_length>    if (derr != ERR_OK) 8033b2a:	2800      	cmp	r0, #0 8033b2c:	d1aa      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88>      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    switch (type) 8033b2e:	7839      	ldrb	r1, [r7, #0] 8033b30:	2906      	cmp	r1, #6 8033b32:	d047      	beq.n	8033bc4 <snmp_pdu_dec_varbindlist+0x1c8> 8033b34:	d805      	bhi.n	8033b42 <snmp_pdu_dec_varbindlist+0x146> 8033b36:	2904      	cmp	r1, #4 8033b38:	d036      	beq.n	8033ba8 <snmp_pdu_dec_varbindlist+0x1ac> 8033b3a:	d839      	bhi.n	8033bb0 <snmp_pdu_dec_varbindlist+0x1b4> 8033b3c:	2902      	cmp	r1, #2 8033b3e:	d1a1      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88> 8033b40:	e009      	b.n	8033b56 <snmp_pdu_dec_varbindlist+0x15a> 8033b42:	2943      	cmp	r1, #67	; 0x43 8033b44:	d804      	bhi.n	8033b50 <snmp_pdu_dec_varbindlist+0x154> 8033b46:	2941      	cmp	r1, #65	; 0x41 8033b48:	d219      	bcs.n	8033b7e <snmp_pdu_dec_varbindlist+0x182> 8033b4a:	2940      	cmp	r1, #64	; 0x40 8033b4c:	d19a      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88> 8033b4e:	e069      	b.n	8033c24 <snmp_pdu_dec_varbindlist+0x228> 8033b50:	2944      	cmp	r1, #68	; 0x44 8033b52:	d197      	bne.n	8033a84 <snmp_pdu_dec_varbindlist+0x88> 8033b54:	e028      	b.n	8033ba8 <snmp_pdu_dec_varbindlist+0x1ac>    {      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG):        vb = snmp_varbind_alloc(&oid, type, sizeof(s32_t)); 8033b56:	a804      	add	r0, sp, #16 8033b58:	2204      	movs	r2, #4 8033b5a:	f7ff faf7 	bl	803314c <snmp_varbind_alloc>        if (vb != NULL) 8033b5e:	4683      	mov	fp, r0 8033b60:	2800      	cmp	r0, #0 8033b62:	d08f      	beq.n	8033a84 <snmp_pdu_dec_varbindlist+0x88>        {          s32_t *vptr = (s32_t*)vb->value;          derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, vptr); 8033b64:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033b68:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033b6c:	f8db 3014 	ldr.w	r3, [fp, #20] 8033b70:	3101      	adds	r1, #1 8033b72:	4441      	add	r1, r8 8033b74:	4620      	mov	r0, r4 8033b76:	b289      	uxth	r1, r1 8033b78:	f7fd f961 	bl	8030e3e <snmp_asn1_dec_s32t> 8033b7c:	e06b      	b.n	8033c56 <snmp_pdu_dec_varbindlist+0x25a>        }        break;      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS):        vb = snmp_varbind_alloc(&oid, type, sizeof(u32_t)); 8033b7e:	a804      	add	r0, sp, #16 8033b80:	2204      	movs	r2, #4 8033b82:	f7ff fae3 	bl	803314c <snmp_varbind_alloc>        if (vb != NULL) 8033b86:	4683      	mov	fp, r0 8033b88:	2800      	cmp	r0, #0 8033b8a:	f43f af7b 	beq.w	8033a84 <snmp_pdu_dec_varbindlist+0x88>        {          u32_t *vptr = (u32_t*)vb->value;          derr = snmp_asn1_dec_u32t(p, ofs + 1 + len_octets, len, vptr); 8033b8e:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033b92:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033b96:	f8db 3014 	ldr.w	r3, [fp, #20] 8033b9a:	3101      	adds	r1, #1 8033b9c:	4441      	add	r1, r8 8033b9e:	4620      	mov	r0, r4 8033ba0:	b289      	uxth	r1, r1 8033ba2:	f7fd f8f8 	bl	8030d96 <snmp_asn1_dec_u32t> 8033ba6:	e056      	b.n	8033c56 <snmp_pdu_dec_varbindlist+0x25a>        }        break;      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_OPAQUE):        LWIP_ASSERT("invalid length", len <= 0xff);        vb = snmp_varbind_alloc(&oid, type, (u8_t)len); 8033ba8:	a804      	add	r0, sp, #16 8033baa:	f89d 200c 	ldrb.w	r2, [sp, #12] 8033bae:	e03f      	b.n	8033c30 <snmp_pdu_dec_varbindlist+0x234>        {          derr = ERR_ARG;        }        break;      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_NUL):        vb = snmp_varbind_alloc(&oid, type, 0); 8033bb0:	2105      	movs	r1, #5 8033bb2:	a804      	add	r0, sp, #16 8033bb4:	2200      	movs	r2, #0 8033bb6:	f7ff fac9 	bl	803314c <snmp_varbind_alloc>        if (vb != NULL) 8033bba:	4601      	mov	r1, r0 8033bbc:	2800      	cmp	r0, #0 8033bbe:	f43f af61 	beq.w	8033a84 <snmp_pdu_dec_varbindlist+0x88> 8033bc2:	e02a      	b.n	8033c1a <snmp_pdu_dec_varbindlist+0x21e>        {          derr = ERR_ARG;        }        break;      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID):        derr = snmp_asn1_dec_oid(p, ofs + 1 + len_octets, len, &oid_value); 8033bc4:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033bc8:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033bcc:	3101      	adds	r1, #1 8033bce:	4441      	add	r1, r8 8033bd0:	4620      	mov	r0, r4 8033bd2:	b289      	uxth	r1, r1 8033bd4:	ab25      	add	r3, sp, #148	; 0x94 8033bd6:	f7fd f98b 	bl	8030ef0 <snmp_asn1_dec_oid>        if (derr == ERR_OK) 8033bda:	2800      	cmp	r0, #0 8033bdc:	f47f af52 	bne.w	8033a84 <snmp_pdu_dec_varbindlist+0x88>        {          vb = snmp_varbind_alloc(&oid, type, oid_value.len * sizeof(s32_t)); 8033be0:	f89d 2094 	ldrb.w	r2, [sp, #148]	; 0x94 8033be4:	7839      	ldrb	r1, [r7, #0] 8033be6:	0092      	lsls	r2, r2, #2 8033be8:	a804      	add	r0, sp, #16 8033bea:	f002 02fc 	and.w	r2, r2, #252	; 0xfc 8033bee:	f7ff faad 	bl	803314c <snmp_varbind_alloc>          if (vb != NULL) 8033bf2:	4601      	mov	r1, r0 8033bf4:	2800      	cmp	r0, #0 8033bf6:	f43f af45 	beq.w	8033a84 <snmp_pdu_dec_varbindlist+0x88>          {            u8_t i = oid_value.len; 8033bfa:	f89d 3094 	ldrb.w	r3, [sp, #148]	; 0x94            s32_t *vptr = (s32_t*)vb->value; 8033bfe:	6940      	ldr	r0, [r0, #20]            while(i > 0) 8033c00:	e009      	b.n	8033c16 <snmp_pdu_dec_varbindlist+0x21a>            {              i--; 8033c02:	3b01      	subs	r3, #1 8033c04:	b2db      	uxtb	r3, r3              vptr[i] = oid_value.id[i]; 8033c06:	f50d 7e8c 	add.w	lr, sp, #280	; 0x118 8033c0a:	eb0e 0283 	add.w	r2, lr, r3, lsl #2 8033c0e:	f852 2c80 	ldr.w	r2, [r2, #-128] 8033c12:	f840 2023 	str.w	r2, [r0, r3, lsl #2]          if (vb != NULL)          {            u8_t i = oid_value.len;            s32_t *vptr = (s32_t*)vb->value;            while(i > 0) 8033c16:	2b00      	cmp	r3, #0 8033c18:	d1f3      	bne.n	8033c02 <snmp_pdu_dec_varbindlist+0x206>            {              i--;              vptr[i] = oid_value.id[i];            }            snmp_varbind_tail_add(&m_stat->invb, vb); 8033c1a:	f505 7080 	add.w	r0, r5, #256	; 0x100 8033c1e:	f7ff fb41 	bl	80332a4 <snmp_varbind_tail_add> 8033c22:	e022      	b.n	8033c6a <snmp_pdu_dec_varbindlist+0x26e>            derr = ERR_ARG;          }        }        break;      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR):        if (len == 4) 8033c24:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033c28:	2a04      	cmp	r2, #4 8033c2a:	f47f af2b 	bne.w	8033a84 <snmp_pdu_dec_varbindlist+0x88>        {          /* must be exactly 4 octets! */          vb = snmp_varbind_alloc(&oid, type, 4); 8033c2e:	a804      	add	r0, sp, #16 8033c30:	f7ff fa8c 	bl	803314c <snmp_varbind_alloc>          if (vb != NULL) 8033c34:	4683      	mov	fp, r0 8033c36:	2800      	cmp	r0, #0 8033c38:	f43f af24 	beq.w	8033a84 <snmp_pdu_dec_varbindlist+0x88>          {            derr = snmp_asn1_dec_raw(p, ofs + 1 + len_octets, len, vb->value_len, (u8_t*)vb->value); 8033c3c:	f89d 100a 	ldrb.w	r1, [sp, #10] 8033c40:	7c43      	ldrb	r3, [r0, #17] 8033c42:	6940      	ldr	r0, [r0, #20] 8033c44:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033c48:	9000      	str	r0, [sp, #0] 8033c4a:	3101      	adds	r1, #1 8033c4c:	4441      	add	r1, r8 8033c4e:	4620      	mov	r0, r4 8033c50:	b289      	uxth	r1, r1 8033c52:	f7fd f9e9 	bl	8031028 <snmp_asn1_dec_raw> 8033c56:	4682      	mov	sl, r0            snmp_varbind_tail_add(&m_stat->invb, vb); 8033c58:	4659      	mov	r1, fp 8033c5a:	f505 7080 	add.w	r0, r5, #256	; 0x100 8033c5e:	f7ff fb21 	bl	80332a4 <snmp_varbind_tail_add>        break;      default:        derr = ERR_ARG;        break;    }    if (derr != ERR_OK) 8033c62:	f1ba 0f00 	cmp.w	sl, #0 8033c66:	f47f af0d 	bne.w	8033a84 <snmp_pdu_dec_varbindlist+0x88>      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets + len); 8033c6a:	f8bd 200c 	ldrh.w	r2, [sp, #12] 8033c6e:	f89d 300a 	ldrb.w	r3, [sp, #10] 8033c72:	1c51      	adds	r1, r2, #1 8033c74:	1859      	adds	r1, r3, r1 8033c76:	4488      	add	r8, r1    vb_len -= (1 + len_octets + len); 8033c78:	8831      	ldrh	r1, [r6, #0] 8033c7a:	43db      	mvns	r3, r3 8033c7c:	1a8a      	subs	r2, r1, r2 8033c7e:	18d3      	adds	r3, r2, r3      snmp_inc_snmpinasnparseerrs();      /* free varbinds (if available) */      snmp_varbind_list_free(&m_stat->invb);      return ERR_ARG;    }    ofs += (1 + len_octets + len); 8033c80:	fa1f f888 	uxth.w	r8, r8    vb_len -= (1 + len_octets + len); 8033c84:	8033      	strh	r3, [r6, #0]  /* start with empty list */  m_stat->invb.count = 0;  m_stat->invb.head = NULL;  m_stat->invb.tail = NULL;  while (vb_len > 0) 8033c86:	8833      	ldrh	r3, [r6, #0] 8033c88:	2b00      	cmp	r3, #0 8033c8a:	f47f aee3 	bne.w	8033a54 <snmp_pdu_dec_varbindlist+0x58>    }    ofs += (1 + len_octets + len);    vb_len -= (1 + len_octets + len);  }  if (m_stat->rt == SNMP_ASN1_PDU_SET_REQ) 8033c8e:	7aab      	ldrb	r3, [r5, #10] 8033c90:	f895 0108 	ldrb.w	r0, [r5, #264]	; 0x108 8033c94:	2b03      	cmp	r3, #3 8033c96:	d102      	bne.n	8033c9e <snmp_pdu_dec_varbindlist+0x2a2>  {    snmp_add_snmpintotalsetvars(m_stat->invb.count); 8033c98:	f7fe fe26 	bl	80328e8 <snmp_add_snmpintotalsetvars> 8033c9c:	e001      	b.n	8033ca2 <snmp_pdu_dec_varbindlist+0x2a6>  }  else  {    snmp_add_snmpintotalreqvars(m_stat->invb.count); 8033c9e:	f7fe fe1b 	bl	80328d8 <snmp_add_snmpintotalreqvars>  }  *ofs_ret = ofs; 8033ca2:	f8a9 8000 	strh.w	r8, [r9]  return ERR_OK; 8033ca6:	2000      	movs	r0, #0} 8033ca8:	b240      	sxtb	r0, r0 8033caa:	b047      	add	sp, #284	; 0x11c 8033cac:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}08033cb0 <snmp_recv>:/* lwIP UDP receive callback function */static voidsnmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ 8033cb0:	e92d 43f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, lr}  LWIP_UNUSED_ARG(arg);  /* traverse input message process list, look for SNMP_MSG_EMPTY */  msg_ps = &msg_input_list[0];  req_idx = 0;  while ((req_idx < SNMP_CONCURRENT_REQUESTS) && (msg_ps->state != SNMP_MSG_EMPTY)) 8033cb4:	4da3      	ldr	r5, [pc, #652]	; (8033f44 <snmp_recv+0x294>)snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){  volatile struct snmp_msg_pstat *msg_ps;  u8_t req_idx;  err_t err_ret;  u16_t payload_len = p->tot_len; 8033cb6:	8917      	ldrh	r7, [r2, #8]  LWIP_UNUSED_ARG(arg);  /* traverse input message process list, look for SNMP_MSG_EMPTY */  msg_ps = &msg_input_list[0];  req_idx = 0;  while ((req_idx < SNMP_CONCURRENT_REQUESTS) && (msg_ps->state != SNMP_MSG_EMPTY)) 8033cb8:	f895 605a 	ldrb.w	r6, [r5, #90]	; 0x5a/* lwIP UDP receive callback function */static voidsnmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ 8033cbc:	b087      	sub	sp, #28 8033cbe:	4699      	mov	r9, r3  volatile struct snmp_msg_pstat *msg_ps;  u8_t req_idx;  err_t err_ret;  u16_t payload_len = p->tot_len;  u16_t payload_ofs = 0;  u16_t varbind_ofs = 0; 8033cc0:	2300      	movs	r3, #0/* lwIP UDP receive callback function */static voidsnmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port){ 8033cc2:	4688      	mov	r8, r1 8033cc4:	4614      	mov	r4, r2  volatile struct snmp_msg_pstat *msg_ps;  u8_t req_idx;  err_t err_ret;  u16_t payload_len = p->tot_len;  u16_t payload_ofs = 0;  u16_t varbind_ofs = 0; 8033cc6:	f8ad 3010 	strh.w	r3, [sp, #16]  LWIP_UNUSED_ARG(arg);  /* traverse input message process list, look for SNMP_MSG_EMPTY */  msg_ps = &msg_input_list[0];  req_idx = 0;  while ((req_idx < SNMP_CONCURRENT_REQUESTS) && (msg_ps->state != SNMP_MSG_EMPTY)) 8033cca:	2e00      	cmp	r6, #0 8033ccc:	f000 81aa 	beq.w	8034024 <snmp_recv+0x374>    msg_ps++;  }  if (req_idx == SNMP_CONCURRENT_REQUESTS)  {    /* exceeding number of concurrent requests */    pbuf_free(p); 8033cd0:	4620      	mov	r0, r4 8033cd2:	f7f9 fecf 	bl	802da74 <pbuf_free> 8033cd6:	e1d6      	b.n	8034086 <snmp_recv+0x3d6>  ofs_base = ofs;  snmp_asn1_dec_type(p, ofs, &type);  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len);  if ((derr != ERR_OK) ||      (pdu_len != (1 + len_octets + len)) || 8033cd8:	f89d 600e 	ldrb.w	r6, [sp, #14] 8033cdc:	f8bd 3012 	ldrh.w	r3, [sp, #18] 8033ce0:	1c75      	adds	r5, r6, #1 8033ce2:	18eb      	adds	r3, r5, r3  s32_t version;  ofs_base = ofs;  snmp_asn1_dec_type(p, ofs, &type);  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len);  if ((derr != ERR_OK) || 8033ce4:	429f      	cmp	r7, r3 8033ce6:	f040 80c4 	bne.w	8033e72 <snmp_recv+0x1c2>      (pdu_len != (1 + len_octets + len)) || 8033cea:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033cee:	2b30      	cmp	r3, #48	; 0x30 8033cf0:	d000      	beq.n	8033cf4 <snmp_recv+0x44> 8033cf2:	e0be      	b.n	8033e72 <snmp_recv+0x1c2>      (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)))  {    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  ofs += (1 + len_octets); 8033cf4:	b2ad      	uxth	r5, r5  snmp_asn1_dec_type(p, ofs, &type); 8033cf6:	4629      	mov	r1, r5 8033cf8:	f10d 020f 	add.w	r2, sp, #15 8033cfc:	4620      	mov	r0, r4 8033cfe:	f7fc ffb3 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033d02:	4620      	mov	r0, r4 8033d04:	1cb1      	adds	r1, r6, #2 8033d06:	f10d 020e 	add.w	r2, sp, #14 8033d0a:	f10d 0312 	add.w	r3, sp, #18 8033d0e:	f7fc ffc0 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) 8033d12:	2800      	cmp	r0, #0 8033d14:	f040 80ad 	bne.w	8033e72 <snmp_recv+0x1c2> 8033d18:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033d1c:	2b02      	cmp	r3, #2 8033d1e:	f040 80a8 	bne.w	8033e72 <snmp_recv+0x1c2>  {    /* can't decode or no integer (version) */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &version); 8033d22:	f89d 100e 	ldrb.w	r1, [sp, #14] 8033d26:	f8bd 2012 	ldrh.w	r2, [sp, #18] 8033d2a:	3101      	adds	r1, #1 8033d2c:	4620      	mov	r0, r4 8033d2e:	1869      	adds	r1, r5, r1 8033d30:	ab05      	add	r3, sp, #20 8033d32:	f7fd f884 	bl	8030e3e <snmp_asn1_dec_s32t>  if (derr != ERR_OK) 8033d36:	2800      	cmp	r0, #0 8033d38:	f040 809b 	bne.w	8033e72 <snmp_recv+0x1c2>  {    /* can't decode */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  if (version != 0) 8033d3c:	9b05      	ldr	r3, [sp, #20] 8033d3e:	b113      	cbz	r3, 8033d46 <snmp_recv+0x96>  {    /* not version 1 */    snmp_inc_snmpinbadversions(); 8033d40:	f7fe fd8a 	bl	8032858 <snmp_inc_snmpinbadversions> 8033d44:	e7c4      	b.n	8033cd0 <snmp_recv+0x20>    return ERR_ARG;  }  ofs += (1 + len_octets + len); 8033d46:	f89d 200e 	ldrb.w	r2, [sp, #14] 8033d4a:	f8bd 3012 	ldrh.w	r3, [sp, #18] 8033d4e:	18d3      	adds	r3, r2, r3 8033d50:	18ed      	adds	r5, r5, r3 8033d52:	b2ad      	uxth	r5, r5 8033d54:	1c6e      	adds	r6, r5, #1 8033d56:	b2b6      	uxth	r6, r6  snmp_asn1_dec_type(p, ofs, &type); 8033d58:	4631      	mov	r1, r6 8033d5a:	f10d 020f 	add.w	r2, sp, #15 8033d5e:	4620      	mov	r0, r4 8033d60:	f7fc ff82 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033d64:	1ca9      	adds	r1, r5, #2 8033d66:	4620      	mov	r0, r4 8033d68:	b289      	uxth	r1, r1 8033d6a:	f10d 020e 	add.w	r2, sp, #14 8033d6e:	f10d 0312 	add.w	r3, sp, #18 8033d72:	f7fc ff8e 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR))) 8033d76:	2800      	cmp	r0, #0 8033d78:	d17b      	bne.n	8033e72 <snmp_recv+0x1c2> 8033d7a:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033d7e:	2b04      	cmp	r3, #4 8033d80:	d177      	bne.n	8033e72 <snmp_recv+0x1c2>  {    /* can't decode or no octet string (community) */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  derr = snmp_asn1_dec_raw(p, ofs + 1 + len_octets, len, SNMP_COMMUNITY_STR_LEN, m_stat->community); 8033d82:	f89d 100e 	ldrb.w	r1, [sp, #14] 8033d86:	4d70      	ldr	r5, [pc, #448]	; (8033f48 <snmp_recv+0x298>) 8033d88:	f8bd 2012 	ldrh.w	r2, [sp, #18] 8033d8c:	9500      	str	r5, [sp, #0] 8033d8e:	3101      	adds	r1, #1 8033d90:	1871      	adds	r1, r6, r1 8033d92:	4620      	mov	r0, r4 8033d94:	b289      	uxth	r1, r1 8033d96:	2340      	movs	r3, #64	; 0x40 8033d98:	f7fd f946 	bl	8031028 <snmp_asn1_dec_raw>  if (derr != ERR_OK) 8033d9c:	2800      	cmp	r0, #0 8033d9e:	d168      	bne.n	8033e72 <snmp_recv+0x1c2>  {    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  /* add zero terminator */  len = ((len < (SNMP_COMMUNITY_STR_LEN))?(len):(SNMP_COMMUNITY_STR_LEN)); 8033da0:	f8bd 3012 	ldrh.w	r3, [sp, #18]  m_stat->community[len] = 0; 8033da4:	f1a5 0218 	sub.w	r2, r5, #24  {    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  /* add zero terminator */  len = ((len < (SNMP_COMMUNITY_STR_LEN))?(len):(SNMP_COMMUNITY_STR_LEN)); 8033da8:	2b40      	cmp	r3, #64	; 0x40 8033daa:	bf28      	it	cs 8033dac:	2340      	movcs	r3, #64	; 0x40  m_stat->community[len] = 0; 8033dae:	18d1      	adds	r1, r2, r3    snmp_inc_snmpinbadcommunitynames();    snmp_authfail_trap();    return ERR_ARG;  }*/    ofs += (1 + len_octets + len); 8033db0:	f89d 200e 	ldrb.w	r2, [sp, #14]  {    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  /* add zero terminator */  len = ((len < (SNMP_COMMUNITY_STR_LEN))?(len):(SNMP_COMMUNITY_STR_LEN)); 8033db4:	f8ad 3012 	strh.w	r3, [sp, #18]  m_stat->community[len] = 0;  m_stat->com_strlen = (u8_t)len; 8033db8:	f885 3041 	strb.w	r3, [r5, #65]	; 0x41    snmp_inc_snmpinbadcommunitynames();    snmp_authfail_trap();    return ERR_ARG;  }*/    ofs += (1 + len_octets + len); 8033dbc:	189b      	adds	r3, r3, r2 8033dbe:	18f6      	adds	r6, r6, r3 8033dc0:	b2b6      	uxth	r6, r6 8033dc2:	f106 0801 	add.w	r8, r6, #1 8033dc6:	fa1f f888 	uxth.w	r8, r8    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  /* add zero terminator */  len = ((len < (SNMP_COMMUNITY_STR_LEN))?(len):(SNMP_COMMUNITY_STR_LEN));  m_stat->community[len] = 0; 8033dca:	7608      	strb	r0, [r1, #24]    snmp_authfail_trap();    return ERR_ARG;  }*/    ofs += (1 + len_octets + len);  snmp_asn1_dec_type(p, ofs, &type); 8033dcc:	f10d 020f 	add.w	r2, sp, #15 8033dd0:	4641      	mov	r1, r8 8033dd2:	4620      	mov	r0, r4 8033dd4:	f7fc ff48 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033dd8:	1cb1      	adds	r1, r6, #2 8033dda:	4620      	mov	r0, r4 8033ddc:	b289      	uxth	r1, r1 8033dde:	f10d 020e 	add.w	r2, sp, #14 8033de2:	f10d 0312 	add.w	r3, sp, #18 8033de6:	f7fc ff54 	bl	8030c92 <snmp_asn1_dec_length>  if (derr != ERR_OK) 8033dea:	2800      	cmp	r0, #0 8033dec:	d141      	bne.n	8033e72 <snmp_recv+0x1c2>    return ERR_ARG;  }    /* FIX for write/read communuty */  /* GetRequest PDU */  if (type == (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_REQ))  8033dee:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033df2:	2ba0      	cmp	r3, #160	; 0xa0 8033df4:	d10f      	bne.n	8033e16 <snmp_recv+0x166>  {	  	if (strncmp(sSettings.sSnmp.readCommunity, (const char*)m_stat->community, strlen(sSettings.sSnmp.readCommunity)) != 0 8033df6:	4855      	ldr	r0, [pc, #340]	; (8033f4c <snmp_recv+0x29c>) 8033df8:	f7ee f83a 	bl	8021e70 <strlen> 8033dfc:	4629      	mov	r1, r5 8033dfe:	4602      	mov	r2, r0 8033e00:	4852      	ldr	r0, [pc, #328]	; (8033f4c <snmp_recv+0x29c>) 8033e02:	f7ee f897 	bl	8021f34 <strncmp> 8033e06:	b120      	cbz	r0, 8033e12 <snmp_recv+0x162>		|| (strlen(sSettings.sSnmp.readCommunity) != strlen((const char*)m_stat->community)) )    {      snmp_inc_snmpinbadcommunitynames(); 8033e08:	f7fe fd2e 	bl	8032868 <snmp_inc_snmpinbadcommunitynames>      snmp_authfail_trap(); 8033e0c:	f000 fd84 	bl	8034918 <snmp_authfail_trap> 8033e10:	e75e      	b.n	8033cd0 <snmp_recv+0x20>  /* FIX for write/read communuty */  /* GetRequest PDU */  if (type == (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_REQ))   {	  	if (strncmp(sSettings.sSnmp.readCommunity, (const char*)m_stat->community, strlen(sSettings.sSnmp.readCommunity)) != 0		|| (strlen(sSettings.sSnmp.readCommunity) != strlen((const char*)m_stat->community)) ) 8033e12:	484e      	ldr	r0, [pc, #312]	; (8033f4c <snmp_recv+0x29c>) 8033e14:	e00c      	b.n	8033e30 <snmp_recv+0x180>      snmp_authfail_trap();      return ERR_ARG;    }  }	  /* SetRequest PDU */  else if (type == (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_SET_REQ)) 	 8033e16:	2ba3      	cmp	r3, #163	; 0xa3 8033e18:	d112      	bne.n	8033e40 <snmp_recv+0x190>  {    if (strncmp(sSettings.sSnmp.writeCommunity, (const char*)m_stat->community, strlen(sSettings.sSnmp.writeCommunity)) != 0 8033e1a:	484d      	ldr	r0, [pc, #308]	; (8033f50 <snmp_recv+0x2a0>) 8033e1c:	f7ee f828 	bl	8021e70 <strlen> 8033e20:	4629      	mov	r1, r5 8033e22:	4602      	mov	r2, r0 8033e24:	484a      	ldr	r0, [pc, #296]	; (8033f50 <snmp_recv+0x2a0>) 8033e26:	f7ee f885 	bl	8021f34 <strncmp> 8033e2a:	2800      	cmp	r0, #0 8033e2c:	d1ec      	bne.n	8033e08 <snmp_recv+0x158>		|| (strlen(sSettings.sSnmp.writeCommunity) != strlen((const char*)m_stat->community)) ) 8033e2e:	4848      	ldr	r0, [pc, #288]	; (8033f50 <snmp_recv+0x2a0>) 8033e30:	f7ee f81e 	bl	8021e70 <strlen> 8033e34:	4606      	mov	r6, r0 8033e36:	4628      	mov	r0, r5 8033e38:	f7ee f81a 	bl	8021e70 <strlen> 8033e3c:	4286      	cmp	r6, r0 8033e3e:	d1e3      	bne.n	8033e08 <snmp_recv+0x158>      snmp_authfail_trap();      return ERR_ARG;    }  }	    switch(type) 8033e40:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033e44:	3ba0      	subs	r3, #160	; 0xa0 8033e46:	2b04      	cmp	r3, #4 8033e48:	d813      	bhi.n	8033e72 <snmp_recv+0x1c2> 8033e4a:	e8df f003 	tbb	[pc, r3] 8033e4e:	0603      	.short	0x0603 8033e50:	0c09      	.short	0x0c09 8033e52:	0f          	.byte	0x0f 8033e53:	00          	.byte	0x00  {    case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_REQ):      // GetRequest PDU       snmp_inc_snmpingetrequests(); 8033e54:	f7fe fd50 	bl	80328f8 <snmp_inc_snmpingetrequests> 8033e58:	e100      	b.n	803405c <snmp_recv+0x3ac>      derr = ERR_OK;      break;    case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_NEXT_REQ):      // GetNextRequest PDU       snmp_inc_snmpingetnexts(); 8033e5a:	f7fe fd55 	bl	8032908 <snmp_inc_snmpingetnexts> 8033e5e:	e0fd      	b.n	803405c <snmp_recv+0x3ac>      derr = ERR_OK;      break;    case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP):      // GetResponse PDU       snmp_inc_snmpingetresponses(); 8033e60:	f7fe fd62 	bl	8032928 <snmp_inc_snmpingetresponses> 8033e64:	e734      	b.n	8033cd0 <snmp_recv+0x20>      derr = ERR_ARG;      break;    case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_SET_REQ):      // SetRequest PDU       snmp_inc_snmpinsetrequests(); 8033e66:	f7fe fd57 	bl	8032918 <snmp_inc_snmpinsetrequests> 8033e6a:	e0f7      	b.n	803405c <snmp_recv+0x3ac>      derr = ERR_OK;      break;    case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP):      // Trap PDU       snmp_inc_snmpintraps(); 8033e6c:	f7fe fd64 	bl	8032938 <snmp_inc_snmpintraps> 8033e70:	e72e      	b.n	8033cd0 <snmp_recv+0x20>      derr = ERR_ARG;      break;    default:      snmp_inc_snmpinasnparseerrs(); 8033e72:	f7fe fd01 	bl	8032878 <snmp_inc_snmpinasnparseerrs> 8033e76:	e72b      	b.n	8033cd0 <snmp_recv+0x20>  {    /* decoded PDU length does not equal actual payload length */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  snmp_asn1_dec_type(p, ofs, &type); 8033e78:	4631      	mov	r1, r6 8033e7a:	f10d 020f 	add.w	r2, sp, #15 8033e7e:	4620      	mov	r0, r4 8033e80:	f7fc fef2 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033e84:	f108 0102 	add.w	r1, r8, #2 8033e88:	4620      	mov	r0, r4 8033e8a:	b289      	uxth	r1, r1 8033e8c:	f10d 020e 	add.w	r2, sp, #14 8033e90:	f10d 0312 	add.w	r3, sp, #18 8033e94:	f7fc fefd 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) 8033e98:	2800      	cmp	r0, #0 8033e9a:	d1ea      	bne.n	8033e72 <snmp_recv+0x1c2> 8033e9c:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033ea0:	2b02      	cmp	r3, #2 8033ea2:	d1e6      	bne.n	8033e72 <snmp_recv+0x1c2>  {    /* can't decode or no integer (request ID) */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &m_stat->rid); 8033ea4:	f89d 100e 	ldrb.w	r1, [sp, #14] 8033ea8:	f8bd 2012 	ldrh.w	r2, [sp, #18] 8033eac:	3101      	adds	r1, #1 8033eae:	1871      	adds	r1, r6, r1 8033eb0:	4620      	mov	r0, r4 8033eb2:	b289      	uxth	r1, r1 8033eb4:	f105 030c 	add.w	r3, r5, #12 8033eb8:	f7fc ffc1 	bl	8030e3e <snmp_asn1_dec_s32t>  if (derr != ERR_OK) 8033ebc:	2800      	cmp	r0, #0 8033ebe:	d1d8      	bne.n	8033e72 <snmp_recv+0x1c2>  {    /* can't decode */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  ofs += (1 + len_octets + len); 8033ec0:	f89d 200e 	ldrb.w	r2, [sp, #14] 8033ec4:	f8bd 3012 	ldrh.w	r3, [sp, #18] 8033ec8:	18d3      	adds	r3, r2, r3 8033eca:	18f6      	adds	r6, r6, r3 8033ecc:	b2b6      	uxth	r6, r6 8033ece:	1c77      	adds	r7, r6, #1 8033ed0:	b2bf      	uxth	r7, r7  snmp_asn1_dec_type(p, ofs, &type); 8033ed2:	4639      	mov	r1, r7 8033ed4:	f10d 020f 	add.w	r2, sp, #15 8033ed8:	4620      	mov	r0, r4 8033eda:	f7fc fec5 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033ede:	1cb1      	adds	r1, r6, #2 8033ee0:	4620      	mov	r0, r4 8033ee2:	b289      	uxth	r1, r1 8033ee4:	f10d 020e 	add.w	r2, sp, #14 8033ee8:	f10d 0312 	add.w	r3, sp, #18 8033eec:	f7fc fed1 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) 8033ef0:	2800      	cmp	r0, #0 8033ef2:	d1be      	bne.n	8033e72 <snmp_recv+0x1c2> 8033ef4:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033ef8:	2b02      	cmp	r3, #2 8033efa:	d1ba      	bne.n	8033e72 <snmp_recv+0x1c2>    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  /* must be noError (0) for incoming requests.     log errors for mib-2 completeness and for debug purposes */  derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &m_stat->error_status); 8033efc:	f89d 100e 	ldrb.w	r1, [sp, #14] 8033f00:	f8bd 2012 	ldrh.w	r2, [sp, #18] 8033f04:	3101      	adds	r1, #1 8033f06:	1879      	adds	r1, r7, r1 8033f08:	4620      	mov	r0, r4 8033f0a:	b289      	uxth	r1, r1 8033f0c:	f105 0310 	add.w	r3, r5, #16 8033f10:	f7fc ff95 	bl	8030e3e <snmp_asn1_dec_s32t>  if (derr != ERR_OK) 8033f14:	2800      	cmp	r0, #0 8033f16:	d1ac      	bne.n	8033e72 <snmp_recv+0x1c2>  {    /* can't decode */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  switch (m_stat->error_status) 8033f18:	692b      	ldr	r3, [r5, #16] 8033f1a:	3b01      	subs	r3, #1 8033f1c:	2b04      	cmp	r3, #4 8033f1e:	d81b      	bhi.n	8033f58 <snmp_recv+0x2a8> 8033f20:	e8df f003 	tbb	[pc, r3] 8033f24:	0c090603 	.word	0x0c090603 8033f28:	18          	.byte	0x18 8033f29:	00          	.byte	0x00  {    case SNMP_ES_TOOBIG:      snmp_inc_snmpintoobigs(); 8033f2a:	f7fe fcad 	bl	8032888 <snmp_inc_snmpintoobigs> 8033f2e:	e013      	b.n	8033f58 <snmp_recv+0x2a8>      break;    case SNMP_ES_NOSUCHNAME:      snmp_inc_snmpinnosuchnames(); 8033f30:	f7fe fcb2 	bl	8032898 <snmp_inc_snmpinnosuchnames> 8033f34:	e010      	b.n	8033f58 <snmp_recv+0x2a8>      break;    case SNMP_ES_BADVALUE:      snmp_inc_snmpinbadvalues(); 8033f36:	f7fe fcb7 	bl	80328a8 <snmp_inc_snmpinbadvalues> 8033f3a:	e00d      	b.n	8033f58 <snmp_recv+0x2a8>      break;    case SNMP_ES_READONLY:      snmp_inc_snmpinreadonlys(); 8033f3c:	f7fe fcbc 	bl	80328b8 <snmp_inc_snmpinreadonlys> 8033f40:	e00a      	b.n	8033f58 <snmp_recv+0x2a8> 8033f42:	bf00      	nop 8033f44:	200110b0 	.word	0x200110b0 8033f48:	200110c8 	.word	0x200110c8 8033f4c:	2000ea88 	.word	0x2000ea88 8033f50:	2000ea9c 	.word	0x2000ea9c      break;    case SNMP_ES_GENERROR:      snmp_inc_snmpingenerrs(); 8033f54:	f7fe fcb8 	bl	80328c8 <snmp_inc_snmpingenerrs>      break;  }  ofs += (1 + len_octets + len); 8033f58:	f89d 200e 	ldrb.w	r2, [sp, #14] 8033f5c:	f8bd 3012 	ldrh.w	r3, [sp, #18] 8033f60:	18d3      	adds	r3, r2, r3 8033f62:	18ff      	adds	r7, r7, r3 8033f64:	b2bf      	uxth	r7, r7 8033f66:	1c7d      	adds	r5, r7, #1 8033f68:	b2ad      	uxth	r5, r5  snmp_asn1_dec_type(p, ofs, &type); 8033f6a:	4629      	mov	r1, r5 8033f6c:	f10d 020f 	add.w	r2, sp, #15 8033f70:	4620      	mov	r0, r4 8033f72:	f7fc fe79 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8033f76:	1cb9      	adds	r1, r7, #2 8033f78:	4620      	mov	r0, r4 8033f7a:	b289      	uxth	r1, r1 8033f7c:	f10d 020e 	add.w	r2, sp, #14 8033f80:	f10d 0312 	add.w	r3, sp, #18 8033f84:	f7fc fe85 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) 8033f88:	2800      	cmp	r0, #0 8033f8a:	f47f af72 	bne.w	8033e72 <snmp_recv+0x1c2> 8033f8e:	f89d 300f 	ldrb.w	r3, [sp, #15] 8033f92:	2b02      	cmp	r3, #2 8033f94:	f47f af6d 	bne.w	8033e72 <snmp_recv+0x1c2>    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  /* must be 0 for incoming requests.     decode anyway to catch bad integers (and dirty tricks) */  derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &m_stat->error_index); 8033f98:	f89d 100e 	ldrb.w	r1, [sp, #14] 8033f9c:	f8bd 2012 	ldrh.w	r2, [sp, #18] 8033fa0:	4b3a      	ldr	r3, [pc, #232]	; (803408c <snmp_recv+0x3dc>) 8033fa2:	3101      	adds	r1, #1 8033fa4:	1869      	adds	r1, r5, r1 8033fa6:	4620      	mov	r0, r4 8033fa8:	b289      	uxth	r1, r1 8033faa:	f7fc ff48 	bl	8030e3e <snmp_asn1_dec_s32t>  if (derr != ERR_OK) 8033fae:	2800      	cmp	r0, #0 8033fb0:	f47f af5f 	bne.w	8033e72 <snmp_recv+0x1c2>  {    /* can't decode */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  ofs += (1 + len_octets + len); 8033fb4:	f8bd 3012 	ldrh.w	r3, [sp, #18] 8033fb8:	f89d 200e 	ldrb.w	r2, [sp, #14] 8033fbc:	3301      	adds	r3, #1 8033fbe:	189b      	adds	r3, r3, r2 8033fc0:	18ed      	adds	r5, r5, r3  /* check total length, version, community, pdu type */  err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);  /* Only accept requests and requests without error (be robust) */  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) ||      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) && 8033fc2:	4b33      	ldr	r3, [pc, #204]	; (8034090 <snmp_recv+0x3e0>)    /* can't decode */    snmp_inc_snmpinasnparseerrs();    return ERR_ARG;  }  ofs += (1 + len_octets + len);  *ofs_ret = ofs; 8033fc4:	f8ad 5010 	strh.w	r5, [sp, #16]  /* check total length, version, community, pdu type */  err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);  /* Only accept requests and requests without error (be robust) */  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) ||      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) && 8033fc8:	7a9a      	ldrb	r2, [r3, #10]  /* check total length, version, community, pdu type */  err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);  /* Only accept requests and requests without error (be robust) */  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) || 8033fca:	b132      	cbz	r2, 8033fda <snmp_recv+0x32a>      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_GET_NEXT_REQ) && 8033fcc:	7a9a      	ldrb	r2, [r3, #10]  /* check total length, version, community, pdu type */  err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);  /* Only accept requests and requests without error (be robust) */  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) ||      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) && 8033fce:	2a01      	cmp	r2, #1 8033fd0:	d003      	beq.n	8033fda <snmp_recv+0x32a>       (msg_ps->rt != SNMP_ASN1_PDU_GET_NEXT_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_SET_REQ)) || 8033fd2:	7a9a      	ldrb	r2, [r3, #10]  err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps);  /* Only accept requests and requests without error (be robust) */  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) ||      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_GET_NEXT_REQ) && 8033fd4:	2a03      	cmp	r2, #3 8033fd6:	f47f ae7b 	bne.w	8033cd0 <snmp_recv+0x20>       (msg_ps->rt != SNMP_ASN1_PDU_SET_REQ)) ||      ((msg_ps->error_status != SNMP_ES_NOERROR) || 8033fda:	691b      	ldr	r3, [r3, #16] 8033fdc:	4d2c      	ldr	r5, [pc, #176]	; (8034090 <snmp_recv+0x3e0>)  /* Only accept requests and requests without error (be robust) */  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) ||      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_GET_NEXT_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_SET_REQ)) || 8033fde:	2b00      	cmp	r3, #0 8033fe0:	f47f ae76 	bne.w	8033cd0 <snmp_recv+0x20>      ((msg_ps->error_status != SNMP_ES_NOERROR) ||       (msg_ps->error_index != 0)) ) 8033fe4:	696b      	ldr	r3, [r5, #20]  /* Reject response and trap headers or error requests as input! */  if ((err_ret != ERR_OK) ||      ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_GET_NEXT_REQ) &&       (msg_ps->rt != SNMP_ASN1_PDU_SET_REQ)) ||      ((msg_ps->error_status != SNMP_ES_NOERROR) || 8033fe6:	2b00      	cmp	r3, #0 8033fe8:	f47f ae72 	bne.w	8033cd0 <snmp_recv+0x20>  }  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv ok, community %s\n", msg_ps->community));  /* Builds a list of variable bindings. Copy the varbinds from the pbuf    chain to glue them when these are divided over two or more pbuf's. */  err_ret = snmp_pdu_dec_varbindlist(p, varbind_ofs, &varbind_ofs, msg_ps); 8033fec:	aa06      	add	r2, sp, #24 8033fee:	4620      	mov	r0, r4 8033ff0:	f832 1d08 	ldrh.w	r1, [r2, #-8]! 8033ff4:	462b      	mov	r3, r5 8033ff6:	f7ff fd01 	bl	80339fc <snmp_pdu_dec_varbindlist> 8033ffa:	4606      	mov	r6, r0  /* we've decoded the incoming message, release input msg now */  pbuf_free(p); 8033ffc:	4620      	mov	r0, r4 8033ffe:	f7f9 fd39 	bl	802da74 <pbuf_free>  if ((err_ret != ERR_OK) || (msg_ps->invb.count == 0)) 8034002:	2e00      	cmp	r6, #0 8034004:	d13f      	bne.n	8034086 <snmp_recv+0x3d6> 8034006:	f895 3108 	ldrb.w	r3, [r5, #264]	; 0x108 803400a:	2b00      	cmp	r3, #0 803400c:	d03b      	beq.n	8034086 <snmp_recv+0x3d6>  }  msg_ps->error_status = SNMP_ES_NOERROR;  msg_ps->error_index = 0;  /* find object for each variable binding */  msg_ps->state = SNMP_MSG_SEARCH_OBJ; 803400e:	2301      	movs	r3, #1       (errors are only returned for a specific varbind failure) */    LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_pdu_dec_varbindlist() failed\n"));    return;  }  msg_ps->error_status = SNMP_ES_NOERROR; 8034010:	612e      	str	r6, [r5, #16]  msg_ps->vb_idx = 0;  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv varbind cnt=%"U16_F"\n",(u16_t)msg_ps->invb.count));  /* handle input event and as much objects as possible in one go */  snmp_msg_event(req_idx); 8034012:	4630      	mov	r0, r6    LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_pdu_dec_varbindlist() failed\n"));    return;  }  msg_ps->error_status = SNMP_ES_NOERROR;  msg_ps->error_index = 0; 8034014:	616e      	str	r6, [r5, #20]  /* find object for each variable binding */  msg_ps->state = SNMP_MSG_SEARCH_OBJ; 8034016:	f885 305a 	strb.w	r3, [r5, #90]	; 0x5a  /* first variable binding from list to inspect */  msg_ps->vb_idx = 0; 803401a:	f885 60f8 	strb.w	r6, [r5, #248]	; 0xf8  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv varbind cnt=%"U16_F"\n",(u16_t)msg_ps->invb.count));  /* handle input event and as much objects as possible in one go */  snmp_msg_event(req_idx); 803401e:	f7ff f94d 	bl	80332bc <snmp_msg_event> 8034022:	e030      	b.n	8034086 <snmp_recv+0x3d6>    pbuf_free(p);    return;  }  /* accepting request */  snmp_inc_snmpinpkts(); 8034024:	f7fe fc08 	bl	8032838 <snmp_inc_snmpinpkts>  /* record used 'protocol control block' */  msg_ps->pcb = pcb;  /* source address (network order) */  msg_ps->sip = *addr; 8034028:	f8d9 3000 	ldr.w	r3, [r9]  }  /* accepting request */  snmp_inc_snmpinpkts();  /* record used 'protocol control block' */  msg_ps->pcb = pcb; 803402c:	f8c5 8000 	str.w	r8, [r5]  /* source address (network order) */  msg_ps->sip = *addr; 8034030:	606b      	str	r3, [r5, #4]  /* source port (host order (lwIP oddity)) */  msg_ps->sp = port; 8034032:	f8bd 3038 	ldrh.w	r3, [sp, #56]	; 0x38  u8_t  len_octets;  u8_t  type;  s32_t version;  ofs_base = ofs;  snmp_asn1_dec_type(p, ofs, &type); 8034036:	4631      	mov	r1, r6  /* record used 'protocol control block' */  msg_ps->pcb = pcb;  /* source address (network order) */  msg_ps->sip = *addr;  /* source port (host order (lwIP oddity)) */  msg_ps->sp = port; 8034038:	812b      	strh	r3, [r5, #8]  u8_t  len_octets;  u8_t  type;  s32_t version;  ofs_base = ofs;  snmp_asn1_dec_type(p, ofs, &type); 803403a:	f10d 020f 	add.w	r2, sp, #15 803403e:	4620      	mov	r0, r4 8034040:	f7fc fe12 	bl	8030c68 <snmp_asn1_dec_type>  derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); 8034044:	4620      	mov	r0, r4 8034046:	2101      	movs	r1, #1 8034048:	f10d 020e 	add.w	r2, sp, #14 803404c:	f10d 0312 	add.w	r3, sp, #18 8034050:	f7fc fe1f 	bl	8030c92 <snmp_asn1_dec_length>  if ((derr != ERR_OK) || 8034054:	2800      	cmp	r0, #0 8034056:	f43f ae3f 	beq.w	8033cd8 <snmp_recv+0x28> 803405a:	e70a      	b.n	8033e72 <snmp_recv+0x1c2>  if (derr != ERR_OK)  {    /* unsupported input PDU for this agent (no parse error) */    return ERR_ARG;  }  m_stat->rt = type & 0x1F; 803405c:	f89d 300f 	ldrb.w	r3, [sp, #15] 8034060:	4d0b      	ldr	r5, [pc, #44]	; (8034090 <snmp_recv+0x3e0>) 8034062:	f003 031f 	and.w	r3, r3, #31 8034066:	72ab      	strb	r3, [r5, #10]  ofs += (1 + len_octets); 8034068:	f89d 300e 	ldrb.w	r3, [sp, #14] 803406c:	4498      	add	r8, r3 803406e:	fa1f f888 	uxth.w	r8, r8 8034072:	f108 0601 	add.w	r6, r8, #1 8034076:	b2b6      	uxth	r6, r6  if (len != (pdu_len - (ofs - ofs_base))) 8034078:	f8bd 3012 	ldrh.w	r3, [sp, #18] 803407c:	1bbf      	subs	r7, r7, r6 803407e:	42bb      	cmp	r3, r7 8034080:	f43f aefa 	beq.w	8033e78 <snmp_recv+0x1c8> 8034084:	e6f5      	b.n	8033e72 <snmp_recv+0x1c2>  LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv varbind cnt=%"U16_F"\n",(u16_t)msg_ps->invb.count));  /* handle input event and as much objects as possible in one go */  snmp_msg_event(req_idx);} 8034086:	b007      	add	sp, #28 8034088:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc} 803408c:	200110c4 	.word	0x200110c4 8034090:	200110b0 	.word	0x200110b008034094 <snmp_varbind_list_sum>: * @param root points to the root of the variable binding list * @return the required lenght for encoding the variable bindings */static u16_tsnmp_varbind_list_sum(struct snmp_varbind_root *root){ 8034094:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  struct snmp_varbind *vb;  u32_t *uint_ptr;  s32_t *sint_ptr;  u16_t tot_len;  tot_len = 0; 8034096:	2500      	movs	r5, #0 * @param root points to the root of the variable binding list * @return the required lenght for encoding the variable bindings */static u16_tsnmp_varbind_list_sum(struct snmp_varbind_root *root){ 8034098:	4606      	mov	r6, r0  u32_t *uint_ptr;  s32_t *sint_ptr;  u16_t tot_len;  tot_len = 0;  vb = root->tail; 803409a:	6844      	ldr	r4, [r0, #4]        sint_ptr = (s32_t*)vb->value;        snmp_asn1_enc_oid_cnt(vb->value_len / sizeof(s32_t), sint_ptr, &vb->vlen);        break;      default:        /* unsupported type */        vb->vlen = 0; 803409c:	462f      	mov	r7, r5  s32_t *sint_ptr;  u16_t tot_len;  tot_len = 0;  vb = root->tail;  while ( vb != NULL ) 803409e:	e051      	b.n	8034144 <snmp_varbind_list_sum+0xb0>  {    /* encoded value lenght depends on type */    switch (vb->value_type) 80340a0:	7c23      	ldrb	r3, [r4, #16] 80340a2:	2b06      	cmp	r3, #6 80340a4:	d020      	beq.n	80340e8 <snmp_varbind_list_sum+0x54> 80340a6:	d805      	bhi.n	80340b4 <snmp_varbind_list_sum+0x20> 80340a8:	2b02      	cmp	r3, #2 80340aa:	d00c      	beq.n	80340c6 <snmp_varbind_list_sum+0x32> 80340ac:	d324      	bcc.n	80340f8 <snmp_varbind_list_sum+0x64> 80340ae:	2b04      	cmp	r3, #4 80340b0:	d322      	bcc.n	80340f8 <snmp_varbind_list_sum+0x64> 80340b2:	e016      	b.n	80340e2 <snmp_varbind_list_sum+0x4e> 80340b4:	2b43      	cmp	r3, #67	; 0x43 80340b6:	d803      	bhi.n	80340c0 <snmp_varbind_list_sum+0x2c> 80340b8:	2b41      	cmp	r3, #65	; 0x41 80340ba:	d20b      	bcs.n	80340d4 <snmp_varbind_list_sum+0x40> 80340bc:	2b40      	cmp	r3, #64	; 0x40 80340be:	e000      	b.n	80340c2 <snmp_varbind_list_sum+0x2e> 80340c0:	2b44      	cmp	r3, #68	; 0x44 80340c2:	d119      	bne.n	80340f8 <snmp_varbind_list_sum+0x64> 80340c4:	e00d      	b.n	80340e2 <snmp_varbind_list_sum+0x4e>    {      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG):        sint_ptr = (s32_t*)vb->value;        snmp_asn1_enc_s32t_cnt(*sint_ptr, &vb->vlen); 80340c6:	6963      	ldr	r3, [r4, #20] 80340c8:	f104 0120 	add.w	r1, r4, #32 80340cc:	6818      	ldr	r0, [r3, #0] 80340ce:	f7fd f802 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>        break; 80340d2:	e012      	b.n	80340fa <snmp_varbind_list_sum+0x66>      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS):        uint_ptr = (u32_t*)vb->value;        snmp_asn1_enc_u32t_cnt(*uint_ptr, &vb->vlen); 80340d4:	6963      	ldr	r3, [r4, #20] 80340d6:	f104 0120 	add.w	r1, r4, #32 80340da:	6818      	ldr	r0, [r3, #0] 80340dc:	f7fc ffe6 	bl	80310ac <snmp_asn1_enc_u32t_cnt>        break; 80340e0:	e00b      	b.n	80340fa <snmp_varbind_list_sum+0x66>      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR):      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_NUL):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_OPAQUE):        vb->vlen = vb->value_len; 80340e2:	7c63      	ldrb	r3, [r4, #17] 80340e4:	8423      	strh	r3, [r4, #32]        break; 80340e6:	e008      	b.n	80340fa <snmp_varbind_list_sum+0x66>      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID):        sint_ptr = (s32_t*)vb->value;        snmp_asn1_enc_oid_cnt(vb->value_len / sizeof(s32_t), sint_ptr, &vb->vlen); 80340e8:	7c60      	ldrb	r0, [r4, #17] 80340ea:	6961      	ldr	r1, [r4, #20] 80340ec:	0880      	lsrs	r0, r0, #2 80340ee:	f104 0220 	add.w	r2, r4, #32 80340f2:	f7fd f805 	bl	8031100 <snmp_asn1_enc_oid_cnt>        break; 80340f6:	e000      	b.n	80340fa <snmp_varbind_list_sum+0x66>      default:        /* unsupported type */        vb->vlen = 0; 80340f8:	8427      	strh	r7, [r4, #32]        break;    };    /* encoding length of value length field */    snmp_asn1_enc_length_cnt(vb->vlen, &vb->vlenlen); 80340fa:	8c20      	ldrh	r0, [r4, #32] 80340fc:	f104 011a 	add.w	r1, r4, #26 8034100:	f7fc ffc9 	bl	8031096 <snmp_asn1_enc_length_cnt>    snmp_asn1_enc_oid_cnt(vb->ident_len, vb->ident, &vb->olen); 8034104:	f104 021e 	add.w	r2, r4, #30 8034108:	7a20      	ldrb	r0, [r4, #8] 803410a:	68e1      	ldr	r1, [r4, #12] 803410c:	f7fc fff8 	bl	8031100 <snmp_asn1_enc_oid_cnt>    snmp_asn1_enc_length_cnt(vb->olen, &vb->olenlen); 8034110:	8be0      	ldrh	r0, [r4, #30] 8034112:	f104 0119 	add.w	r1, r4, #25 8034116:	f7fc ffbe 	bl	8031096 <snmp_asn1_enc_length_cnt>    vb->seqlen = 1 + vb->vlenlen + vb->vlen; 803411a:	8be3      	ldrh	r3, [r4, #30] 803411c:	8c20      	ldrh	r0, [r4, #32] 803411e:	18c0      	adds	r0, r0, r3 8034120:	7ea3      	ldrb	r3, [r4, #26]    vb->seqlen += 1 + vb->olenlen + vb->olen; 8034122:	3002      	adds	r0, #2 8034124:	18c0      	adds	r0, r0, r3 8034126:	7e63      	ldrb	r3, [r4, #25] 8034128:	18c0      	adds	r0, r0, r3 803412a:	b280      	uxth	r0, r0 803412c:	83a0      	strh	r0, [r4, #28]    snmp_asn1_enc_length_cnt(vb->seqlen, &vb->seqlenlen); 803412e:	f104 0118 	add.w	r1, r4, #24 8034132:	f7fc ffb0 	bl	8031096 <snmp_asn1_enc_length_cnt>    /* varbind seq */    tot_len += 1 + vb->seqlenlen + vb->seqlen; 8034136:	8ba3      	ldrh	r3, [r4, #28] 8034138:	7e22      	ldrb	r2, [r4, #24]    vb = vb->prev; 803413a:	6864      	ldr	r4, [r4, #4]    vb->seqlen = 1 + vb->vlenlen + vb->vlen;    vb->seqlen += 1 + vb->olenlen + vb->olen;    snmp_asn1_enc_length_cnt(vb->seqlen, &vb->seqlenlen);    /* varbind seq */    tot_len += 1 + vb->seqlenlen + vb->seqlen; 803413c:	3301      	adds	r3, #1 803413e:	189b      	adds	r3, r3, r2 8034140:	18ed      	adds	r5, r5, r3 8034142:	b2ad      	uxth	r5, r5  s32_t *sint_ptr;  u16_t tot_len;  tot_len = 0;  vb = root->tail;  while ( vb != NULL ) 8034144:	2c00      	cmp	r4, #0 8034146:	d1ab      	bne.n	80340a0 <snmp_varbind_list_sum+0xc>    vb = vb->prev;  }  /* varbind-list seq */  root->seqlen = tot_len;  snmp_asn1_enc_length_cnt(root->seqlen, &root->seqlenlen); 8034148:	4628      	mov	r0, r5    vb = vb->prev;  }  /* varbind-list seq */  root->seqlen = tot_len; 803414a:	8175      	strh	r5, [r6, #10]  snmp_asn1_enc_length_cnt(root->seqlen, &root->seqlenlen); 803414c:	f106 0109 	add.w	r1, r6, #9 8034150:	f7fc ffa1 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + root->seqlenlen; 8034154:	7a73      	ldrb	r3, [r6, #9] 8034156:	3301      	adds	r3, #1 8034158:	18e8      	adds	r0, r5, r3  return tot_len;} 803415a:	b280      	uxth	r0, r0 803415c:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 803415e:	0000      	movs	r0, r008034160 <snmp_resp_header_sum>: * @param rhl points to returned header lengths * @return the required lenght for encoding the response header */static u16_tsnmp_resp_header_sum(struct snmp_msg_pstat *m_stat, u16_t vb_len){ 8034160:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 8034164:	4604      	mov	r4, r0  u16_t tot_len;  struct snmp_resp_header_lengths *rhl;  rhl = &m_stat->rhl;  tot_len = vb_len;  snmp_asn1_enc_s32t_cnt(m_stat->error_index, &rhl->erridxlen); 8034166:	f500 758c 	add.w	r5, r0, #280	; 0x118 * @param rhl points to returned header lengths * @return the required lenght for encoding the response header */static u16_tsnmp_resp_header_sum(struct snmp_msg_pstat *m_stat, u16_t vb_len){ 803416a:	460f      	mov	r7, r1  u16_t tot_len;  struct snmp_resp_header_lengths *rhl;  rhl = &m_stat->rhl;  tot_len = vb_len;  snmp_asn1_enc_s32t_cnt(m_stat->error_index, &rhl->erridxlen); 803416c:	6940      	ldr	r0, [r0, #20] 803416e:	f504 7190 	add.w	r1, r4, #288	; 0x120 8034172:	f7fc ffb0 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(rhl->erridxlen, &rhl->erridxlenlen); 8034176:	f8b4 0120 	ldrh.w	r0, [r4, #288]	; 0x120 803417a:	4629      	mov	r1, r5 803417c:	f7fc ff8b 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + rhl->erridxlenlen + rhl->erridxlen;  snmp_asn1_enc_s32t_cnt(m_stat->error_status, &rhl->errstatlen); 8034180:	6920      	ldr	r0, [r4, #16]  rhl = &m_stat->rhl;  tot_len = vb_len;  snmp_asn1_enc_s32t_cnt(m_stat->error_index, &rhl->erridxlen);  snmp_asn1_enc_length_cnt(rhl->erridxlen, &rhl->erridxlenlen);  tot_len += 1 + rhl->erridxlenlen + rhl->erridxlen; 8034182:	f894 8118 	ldrb.w	r8, [r4, #280]	; 0x118 8034186:	f8b4 a120 	ldrh.w	sl, [r4, #288]	; 0x120  snmp_asn1_enc_s32t_cnt(m_stat->error_status, &rhl->errstatlen); 803418a:	f504 7191 	add.w	r1, r4, #290	; 0x122 803418e:	f7fc ffa2 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(rhl->errstatlen, &rhl->errstatlenlen); 8034192:	1c69      	adds	r1, r5, #1 8034194:	f8b4 0122 	ldrh.w	r0, [r4, #290]	; 0x122 8034198:	f7fc ff7d 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + rhl->errstatlenlen + rhl->errstatlen; 803419c:	f8b4 9122 	ldrh.w	r9, [r4, #290]	; 0x122  snmp_asn1_enc_s32t_cnt(m_stat->rid, &rhl->ridlen); 80341a0:	68e0      	ldr	r0, [r4, #12]  snmp_asn1_enc_length_cnt(rhl->erridxlen, &rhl->erridxlenlen);  tot_len += 1 + rhl->erridxlenlen + rhl->erridxlen;  snmp_asn1_enc_s32t_cnt(m_stat->error_status, &rhl->errstatlen);  snmp_asn1_enc_length_cnt(rhl->errstatlen, &rhl->errstatlenlen);  tot_len += 1 + rhl->errstatlenlen + rhl->errstatlen; 80341a2:	f894 6119 	ldrb.w	r6, [r4, #281]	; 0x119  snmp_asn1_enc_s32t_cnt(m_stat->rid, &rhl->ridlen); 80341a6:	f504 7192 	add.w	r1, r4, #292	; 0x124 80341aa:	f7fc ff94 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(rhl->ridlen, &rhl->ridlenlen); 80341ae:	f8b4 0124 	ldrh.w	r0, [r4, #292]	; 0x124 80341b2:	f504 718d 	add.w	r1, r4, #282	; 0x11a 80341b6:	f7fc ff6e 	bl	8031096 <snmp_asn1_enc_length_cnt>  rhl = &m_stat->rhl;  tot_len = vb_len;  snmp_asn1_enc_s32t_cnt(m_stat->error_index, &rhl->erridxlen);  snmp_asn1_enc_length_cnt(rhl->erridxlen, &rhl->erridxlenlen);  tot_len += 1 + rhl->erridxlenlen + rhl->erridxlen; 80341ba:	44d1      	add	r9, sl  snmp_asn1_enc_s32t_cnt(m_stat->error_status, &rhl->errstatlen);  snmp_asn1_enc_length_cnt(rhl->errstatlen, &rhl->errstatlenlen);  tot_len += 1 + rhl->errstatlenlen + rhl->errstatlen; 80341bc:	f8b4 3124 	ldrh.w	r3, [r4, #292]	; 0x124 80341c0:	f109 0903 	add.w	r9, r9, #3 80341c4:	4499      	add	r9, r3 80341c6:	fa18 f889 	uxtah	r8, r8, r9  snmp_asn1_enc_s32t_cnt(m_stat->rid, &rhl->ridlen);  snmp_asn1_enc_length_cnt(rhl->ridlen, &rhl->ridlenlen);  tot_len += 1 + rhl->ridlenlen + rhl->ridlen; 80341ca:	f894 311a 	ldrb.w	r3, [r4, #282]	; 0x11a 80341ce:	4446      	add	r6, r8 80341d0:	18f6      	adds	r6, r6, r3 80341d2:	fa17 f686 	uxtah	r6, r7, r6 80341d6:	b2b6      	uxth	r6, r6  rhl->pdulen = tot_len;  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen); 80341d8:	1ce9      	adds	r1, r5, #3 80341da:	4630      	mov	r0, r6  snmp_asn1_enc_s32t_cnt(m_stat->rid, &rhl->ridlen);  snmp_asn1_enc_length_cnt(rhl->ridlen, &rhl->ridlenlen);  tot_len += 1 + rhl->ridlenlen + rhl->ridlen;  rhl->pdulen = tot_len; 80341dc:	f8a4 6126 	strh.w	r6, [r4, #294]	; 0x126  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen); 80341e0:	f7fc ff59 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + rhl->pdulenlen;  rhl->comlen = m_stat->com_strlen; 80341e4:	f894 0059 	ldrb.w	r0, [r4, #89]	; 0x59  snmp_asn1_enc_length_cnt(rhl->ridlen, &rhl->ridlenlen);  tot_len += 1 + rhl->ridlenlen + rhl->ridlen;  rhl->pdulen = tot_len;  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen);  tot_len += 1 + rhl->pdulenlen; 80341e8:	f894 811b 	ldrb.w	r8, [r4, #283]	; 0x11b  rhl->comlen = m_stat->com_strlen; 80341ec:	f8a4 0128 	strh.w	r0, [r4, #296]	; 0x128  snmp_asn1_enc_length_cnt(rhl->comlen, &rhl->comlenlen); 80341f0:	f504 718e 	add.w	r1, r4, #284	; 0x11c 80341f4:	f7fc ff4f 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + rhl->comlenlen + rhl->comlen;  snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen); 80341f8:	4b14      	ldr	r3, [pc, #80]	; (803424c <snmp_resp_header_sum+0xec>)  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen);  tot_len += 1 + rhl->pdulenlen;  rhl->comlen = m_stat->com_strlen;  snmp_asn1_enc_length_cnt(rhl->comlen, &rhl->comlenlen);  tot_len += 1 + rhl->comlenlen + rhl->comlen; 80341fa:	f894 711c 	ldrb.w	r7, [r4, #284]	; 0x11c  snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen); 80341fe:	6818      	ldr	r0, [r3, #0]  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen);  tot_len += 1 + rhl->pdulenlen;  rhl->comlen = m_stat->com_strlen;  snmp_asn1_enc_length_cnt(rhl->comlen, &rhl->comlenlen);  tot_len += 1 + rhl->comlenlen + rhl->comlen; 8034200:	f8b4 9128 	ldrh.w	r9, [r4, #296]	; 0x128  snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen); 8034204:	f504 7195 	add.w	r1, r4, #298	; 0x12a 8034208:	f7fc ff65 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(rhl->verlen, &rhl->verlenlen); 803420c:	1d69      	adds	r1, r5, #5 803420e:	f8b4 012a 	ldrh.w	r0, [r4, #298]	; 0x12a 8034212:	f7fc ff40 	bl	8031096 <snmp_asn1_enc_length_cnt>  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen);  tot_len += 1 + rhl->pdulenlen;  rhl->comlen = m_stat->com_strlen;  snmp_asn1_enc_length_cnt(rhl->comlen, &rhl->comlenlen);  tot_len += 1 + rhl->comlenlen + rhl->comlen; 8034216:	f8b4 512a 	ldrh.w	r5, [r4, #298]	; 0x12a  snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen);  snmp_asn1_enc_length_cnt(rhl->verlen, &rhl->verlenlen);  tot_len += 1 + rhl->verlen + rhl->verlenlen; 803421a:	f894 311d 	ldrb.w	r3, [r4, #285]	; 0x11d  snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen);  tot_len += 1 + rhl->pdulenlen;  rhl->comlen = m_stat->com_strlen;  snmp_asn1_enc_length_cnt(rhl->comlen, &rhl->comlenlen);  tot_len += 1 + rhl->comlenlen + rhl->comlen; 803421e:	444d      	add	r5, r9 8034220:	3503      	adds	r5, #3 8034222:	4445      	add	r5, r8  snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen);  snmp_asn1_enc_length_cnt(rhl->verlen, &rhl->verlenlen);  tot_len += 1 + rhl->verlen + rhl->verlenlen; 8034224:	197d      	adds	r5, r7, r5 8034226:	18ed      	adds	r5, r5, r3 8034228:	fa16 f585 	uxtah	r5, r6, r5 803422c:	b2ad      	uxth	r5, r5  rhl->seqlen = tot_len;  snmp_asn1_enc_length_cnt(rhl->seqlen, &rhl->seqlenlen); 803422e:	4628      	mov	r0, r5  snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen);  snmp_asn1_enc_length_cnt(rhl->verlen, &rhl->verlenlen);  tot_len += 1 + rhl->verlen + rhl->verlenlen;  rhl->seqlen = tot_len; 8034230:	f8a4 512c 	strh.w	r5, [r4, #300]	; 0x12c  snmp_asn1_enc_length_cnt(rhl->seqlen, &rhl->seqlenlen); 8034234:	f504 718f 	add.w	r1, r4, #286	; 0x11e 8034238:	f7fc ff2d 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + rhl->seqlenlen; 803423c:	f894 311e 	ldrb.w	r3, [r4, #286]	; 0x11e 8034240:	3301      	adds	r3, #1 8034242:	18e8      	adds	r0, r5, r3  return tot_len;} 8034244:	b280      	uxth	r0, r0 8034246:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 803424a:	bf00      	nop 803424c:	08041cd8 	.word	0x08041cd808034250 <snmp_varbind_list_enc>:/** * Encodes varbind list from head to tail. */static u16_tsnmp_varbind_list_enc(struct snmp_varbind_root *root, struct pbuf *p, u16_t ofs){ 8034250:	b570      	push	{r4, r5, r6, lr} 8034252:	4616      	mov	r6, r2 8034254:	4604      	mov	r4, r0  s32_t *sint_ptr;  u32_t *uint_ptr;  u8_t *raw_ptr;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ));  ofs += 1; 8034256:	3601      	adds	r6, #1/** * Encodes varbind list from head to tail. */static u16_tsnmp_varbind_list_enc(struct snmp_varbind_root *root, struct pbuf *p, u16_t ofs){ 8034258:	460d      	mov	r5, r1  struct snmp_varbind *vb;  s32_t *sint_ptr;  u32_t *uint_ptr;  u8_t *raw_ptr;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 803425a:	4608      	mov	r0, r1  ofs += 1; 803425c:	b2b6      	uxth	r6, r6  struct snmp_varbind *vb;  s32_t *sint_ptr;  u32_t *uint_ptr;  u8_t *raw_ptr;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 803425e:	4611      	mov	r1, r2 8034260:	2230      	movs	r2, #48	; 0x30 8034262:	f7fc ff65 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, root->seqlen); 8034266:	4628      	mov	r0, r5 8034268:	4631      	mov	r1, r6 803426a:	8962      	ldrh	r2, [r4, #10] 803426c:	f7fc ff74 	bl	8031158 <snmp_asn1_enc_length>  ofs += root->seqlenlen; 8034270:	7a63      	ldrb	r3, [r4, #9] 8034272:	e064      	b.n	803433e <snmp_varbind_list_enc+0xee>  vb = root->head;  while ( vb != NULL )  {    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 8034274:	4631      	mov	r1, r6    ofs += 1; 8034276:	3601      	adds	r6, #1  ofs += root->seqlenlen;  vb = root->head;  while ( vb != NULL )  {    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 8034278:	2230      	movs	r2, #48	; 0x30    ofs += 1; 803427a:	b2b6      	uxth	r6, r6  ofs += root->seqlenlen;  vb = root->head;  while ( vb != NULL )  {    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 803427c:	4628      	mov	r0, r5 803427e:	f7fc ff57 	bl	8031130 <snmp_asn1_enc_type>    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->seqlen); 8034282:	4631      	mov	r1, r6 8034284:	8ba2      	ldrh	r2, [r4, #28] 8034286:	4628      	mov	r0, r5 8034288:	f7fc ff66 	bl	8031158 <snmp_asn1_enc_length>    ofs += vb->seqlenlen; 803428c:	7e23      	ldrb	r3, [r4, #24] 803428e:	18f6      	adds	r6, r6, r3 8034290:	b2b6      	uxth	r6, r6    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); 8034292:	4631      	mov	r1, r6    ofs += 1; 8034294:	3601      	adds	r6, #1    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ));    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->seqlen);    ofs += vb->seqlenlen;    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); 8034296:	2206      	movs	r2, #6    ofs += 1; 8034298:	b2b6      	uxth	r6, r6    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ));    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->seqlen);    ofs += vb->seqlenlen;    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); 803429a:	4628      	mov	r0, r5 803429c:	f7fc ff48 	bl	8031130 <snmp_asn1_enc_type>    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->olen); 80342a0:	4631      	mov	r1, r6 80342a2:	8be2      	ldrh	r2, [r4, #30] 80342a4:	4628      	mov	r0, r5 80342a6:	f7fc ff57 	bl	8031158 <snmp_asn1_enc_length>    ofs += vb->olenlen; 80342aa:	7e63      	ldrb	r3, [r4, #25]    snmp_asn1_enc_oid(p, ofs, vb->ident_len, &vb->ident[0]); 80342ac:	7a22      	ldrb	r2, [r4, #8]    ofs += vb->seqlenlen;    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID));    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->olen);    ofs += vb->olenlen; 80342ae:	18f6      	adds	r6, r6, r3 80342b0:	b2b6      	uxth	r6, r6    snmp_asn1_enc_oid(p, ofs, vb->ident_len, &vb->ident[0]); 80342b2:	4631      	mov	r1, r6 80342b4:	68e3      	ldr	r3, [r4, #12] 80342b6:	4628      	mov	r0, r5 80342b8:	f7fd f803 	bl	80312c2 <snmp_asn1_enc_oid>    ofs += vb->olen; 80342bc:	8be3      	ldrh	r3, [r4, #30]    snmp_asn1_enc_type(p, ofs, vb->value_type); 80342be:	7c22      	ldrb	r2, [r4, #16]    snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID));    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->olen);    ofs += vb->olenlen;    snmp_asn1_enc_oid(p, ofs, vb->ident_len, &vb->ident[0]);    ofs += vb->olen; 80342c0:	18f6      	adds	r6, r6, r3 80342c2:	b2b6      	uxth	r6, r6    snmp_asn1_enc_type(p, ofs, vb->value_type); 80342c4:	4631      	mov	r1, r6    ofs += 1; 80342c6:	3601      	adds	r6, #1 80342c8:	b2b6      	uxth	r6, r6    snmp_asn1_enc_length(p, ofs, vb->olen);    ofs += vb->olenlen;    snmp_asn1_enc_oid(p, ofs, vb->ident_len, &vb->ident[0]);    ofs += vb->olen;    snmp_asn1_enc_type(p, ofs, vb->value_type); 80342ca:	4628      	mov	r0, r5 80342cc:	f7fc ff30 	bl	8031130 <snmp_asn1_enc_type>    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->vlen); 80342d0:	4631      	mov	r1, r6 80342d2:	4628      	mov	r0, r5 80342d4:	8c22      	ldrh	r2, [r4, #32] 80342d6:	f7fc ff3f 	bl	8031158 <snmp_asn1_enc_length>    ofs += vb->vlenlen; 80342da:	7ea3      	ldrb	r3, [r4, #26] 80342dc:	18f6      	adds	r6, r6, r3    switch (vb->value_type) 80342de:	7c23      	ldrb	r3, [r4, #16] 80342e0:	2b40      	cmp	r3, #64	; 0x40    ofs += vb->olen;    snmp_asn1_enc_type(p, ofs, vb->value_type);    ofs += 1;    snmp_asn1_enc_length(p, ofs, vb->vlen);    ofs += vb->vlenlen; 80342e2:	b2b6      	uxth	r6, r6    switch (vb->value_type) 80342e4:	d01c      	beq.n	8034320 <snmp_varbind_list_enc+0xd0> 80342e6:	d806      	bhi.n	80342f6 <snmp_varbind_list_enc+0xa6> 80342e8:	2b04      	cmp	r3, #4 80342ea:	d019      	beq.n	8034320 <snmp_varbind_list_enc+0xd0> 80342ec:	2b06      	cmp	r3, #6 80342ee:	d01e      	beq.n	803432e <snmp_varbind_list_enc+0xde> 80342f0:	2b02      	cmp	r3, #2 80342f2:	d123      	bne.n	803433c <snmp_varbind_list_enc+0xec> 80342f4:	e004      	b.n	8034300 <snmp_varbind_list_enc+0xb0> 80342f6:	2b43      	cmp	r3, #67	; 0x43 80342f8:	d90a      	bls.n	8034310 <snmp_varbind_list_enc+0xc0> 80342fa:	2b44      	cmp	r3, #68	; 0x44 80342fc:	d11e      	bne.n	803433c <snmp_varbind_list_enc+0xec> 80342fe:	e00f      	b.n	8034320 <snmp_varbind_list_enc+0xd0>    {      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG):        sint_ptr = (s32_t*)vb->value;        snmp_asn1_enc_s32t(p, ofs, vb->vlen, *sint_ptr); 8034300:	6963      	ldr	r3, [r4, #20] 8034302:	8c22      	ldrh	r2, [r4, #32] 8034304:	681b      	ldr	r3, [r3, #0] 8034306:	4628      	mov	r0, r5 8034308:	4631      	mov	r1, r6 803430a:	f7fc ffad 	bl	8031268 <snmp_asn1_enc_s32t>        break; 803430e:	e015      	b.n	803433c <snmp_varbind_list_enc+0xec>      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS):        uint_ptr = (u32_t*)vb->value;        snmp_asn1_enc_u32t(p, ofs, vb->vlen, *uint_ptr); 8034310:	6963      	ldr	r3, [r4, #20] 8034312:	8c22      	ldrh	r2, [r4, #32] 8034314:	681b      	ldr	r3, [r3, #0] 8034316:	4628      	mov	r0, r5 8034318:	4631      	mov	r1, r6 803431a:	f7fc ff65 	bl	80311e8 <snmp_asn1_enc_u32t>        break; 803431e:	e00d      	b.n	803433c <snmp_varbind_list_enc+0xec>      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR):      case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_OPAQUE):        raw_ptr = (u8_t*)vb->value;        snmp_asn1_enc_raw(p, ofs, vb->vlen, raw_ptr); 8034320:	4628      	mov	r0, r5 8034322:	4631      	mov	r1, r6 8034324:	8c22      	ldrh	r2, [r4, #32] 8034326:	6963      	ldr	r3, [r4, #20] 8034328:	f7fd f83e 	bl	80313a8 <snmp_asn1_enc_raw>        break; 803432c:	e006      	b.n	803433c <snmp_varbind_list_enc+0xec>      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_NUL):        break;      case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID):        sint_ptr = (s32_t*)vb->value;        snmp_asn1_enc_oid(p, ofs, vb->value_len / sizeof(s32_t), sint_ptr); 803432e:	7c62      	ldrb	r2, [r4, #17] 8034330:	6963      	ldr	r3, [r4, #20] 8034332:	4628      	mov	r0, r5 8034334:	4631      	mov	r1, r6 8034336:	0892      	lsrs	r2, r2, #2 8034338:	f7fc ffc3 	bl	80312c2 <snmp_asn1_enc_oid>        break;      default:        /* unsupported type */        break;    };    ofs += vb->vlen; 803433c:	8c23      	ldrh	r3, [r4, #32]    vb = vb->next; 803433e:	6824      	ldr	r4, [r4, #0]        break;      default:        /* unsupported type */        break;    };    ofs += vb->vlen; 8034340:	18f6      	adds	r6, r6, r3 8034342:	b2b6      	uxth	r6, r6  ofs += 1;  snmp_asn1_enc_length(p, ofs, root->seqlen);  ofs += root->seqlenlen;  vb = root->head;  while ( vb != NULL ) 8034344:	2c00      	cmp	r4, #0 8034346:	d195      	bne.n	8034274 <snmp_varbind_list_enc+0x24>    };    ofs += vb->vlen;    vb = vb->next;  }  return ofs;} 8034348:	4630      	mov	r0, r6 803434a:	bd70      	pop	{r4, r5, r6, pc}0803434c <snmp_trap_dst_enable>: * @param enable switch if 0 destination is disabled >0 enabled. */voidsnmp_trap_dst_enable(u8_t dst_idx, u8_t enable){  if (dst_idx < SNMP_TRAP_DESTINATIONS) 803434c:	b908      	cbnz	r0, 8034352 <snmp_trap_dst_enable+0x6>  {    trap_dst[dst_idx].enable = enable; 803434e:	4b01      	ldr	r3, [pc, #4]	; (8034354 <snmp_trap_dst_enable+0x8>) 8034350:	7119      	strb	r1, [r3, #4] 8034352:	4770      	bx	lr 8034354:	200111e0 	.word	0x200111e008034358 <snmp_trap_dst_ip_set>: * @param dst IPv4 address in host order. */voidsnmp_trap_dst_ip_set(u8_t dst_idx, ip_addr_t *dst){  if (dst_idx < SNMP_TRAP_DESTINATIONS) 8034358:	b918      	cbnz	r0, 8034362 <snmp_trap_dst_ip_set+0xa>  {    ip_addr_set(&trap_dst[dst_idx].dip, dst); 803435a:	b101      	cbz	r1, 803435e <snmp_trap_dst_ip_set+0x6> 803435c:	6809      	ldr	r1, [r1, #0] 803435e:	4b01      	ldr	r3, [pc, #4]	; (8034364 <snmp_trap_dst_ip_set+0xc>) 8034360:	6019      	str	r1, [r3, #0] 8034362:	4770      	bx	lr 8034364:	200111e0 	.word	0x200111e008034368 <snmp_send_response>: * @note the caller is responsible for filling in outvb in the m_stat * and provide error-status and index (except for tooBig errors) ... */err_tsnmp_send_response(struct snmp_msg_pstat *m_stat){ 8034368:	b5f0      	push	{r4, r5, r6, r7, lr} 803436a:	4604      	mov	r4, r0 803436c:	b085      	sub	sp, #20  struct snmp_varbind_root emptyvb = {NULL, NULL, 0, 0, 0}; 803436e:	220c      	movs	r2, #12 8034370:	2100      	movs	r1, #0 8034372:	a801      	add	r0, sp, #4  struct pbuf *p;  u16_t tot_len;  err_t err;  /* pass 0, calculate length fields */  tot_len = snmp_varbind_list_sum(&m_stat->outvb); 8034374:	f504 7686 	add.w	r6, r4, #268	; 0x10c * and provide error-status and index (except for tooBig errors) ... */err_tsnmp_send_response(struct snmp_msg_pstat *m_stat){  struct snmp_varbind_root emptyvb = {NULL, NULL, 0, 0, 0}; 8034378:	f7ed fba2 	bl	8021ac0 <memset>  struct pbuf *p;  u16_t tot_len;  err_t err;  /* pass 0, calculate length fields */  tot_len = snmp_varbind_list_sum(&m_stat->outvb); 803437c:	4630      	mov	r0, r6 803437e:	f7ff fe89 	bl	8034094 <snmp_varbind_list_sum> 8034382:	4601      	mov	r1, r0  tot_len = snmp_resp_header_sum(m_stat, tot_len); 8034384:	4620      	mov	r0, r4 8034386:	f7ff feeb 	bl	8034160 <snmp_resp_header_sum>  /* try allocating pbuf(s) for complete response */  p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); 803438a:	2203      	movs	r2, #3  u16_t tot_len;  err_t err;  /* pass 0, calculate length fields */  tot_len = snmp_varbind_list_sum(&m_stat->outvb);  tot_len = snmp_resp_header_sum(m_stat, tot_len); 803438c:	4601      	mov	r1, r0  /* try allocating pbuf(s) for complete response */  p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); 803438e:	2000      	movs	r0, #0 8034390:	f7f9 fbbd 	bl	802db0e <pbuf_alloc>  if (p == NULL) 8034394:	4605      	mov	r5, r0 8034396:	b990      	cbnz	r0, 80343be <snmp_send_response+0x56>  {    LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_snd_response() tooBig\n"));    /* can't construct reply, return error-status tooBig */    m_stat->error_status = SNMP_ES_TOOBIG; 8034398:	2301      	movs	r3, #1 803439a:	6123      	str	r3, [r4, #16]    m_stat->error_index = 0; 803439c:	6160      	str	r0, [r4, #20]    /* pass 0, recalculate lengths, for empty varbind-list */    tot_len = snmp_varbind_list_sum(&emptyvb); 803439e:	a801      	add	r0, sp, #4 80343a0:	f7ff fe78 	bl	8034094 <snmp_varbind_list_sum> 80343a4:	4601      	mov	r1, r0    tot_len = snmp_resp_header_sum(m_stat, tot_len); 80343a6:	4620      	mov	r0, r4 80343a8:	f7ff feda 	bl	8034160 <snmp_resp_header_sum>    /* retry allocation once for header and empty varbind-list */    p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); 80343ac:	2203      	movs	r2, #3    /* can't construct reply, return error-status tooBig */    m_stat->error_status = SNMP_ES_TOOBIG;    m_stat->error_index = 0;    /* pass 0, recalculate lengths, for empty varbind-list */    tot_len = snmp_varbind_list_sum(&emptyvb);    tot_len = snmp_resp_header_sum(m_stat, tot_len); 80343ae:	4601      	mov	r1, r0    /* retry allocation once for header and empty varbind-list */    p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); 80343b0:	4628      	mov	r0, r5 80343b2:	f7f9 fbac 	bl	802db0e <pbuf_alloc>  }  if (p != NULL) 80343b6:	4605      	mov	r5, r0 80343b8:	2800      	cmp	r0, #0 80343ba:	f000 80dc 	beq.w	8034576 <snmp_send_response+0x20e>snmp_resp_header_enc(struct snmp_msg_pstat *m_stat, struct pbuf *p){  u16_t ofs;  ofs = 0;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 80343be:	2100      	movs	r1, #0 80343c0:	2230      	movs	r2, #48	; 0x30 80343c2:	4628      	mov	r0, r5 80343c4:	f7fc feb4 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.seqlen); 80343c8:	2101      	movs	r1, #1 80343ca:	f8b4 212c 	ldrh.w	r2, [r4, #300]	; 0x12c 80343ce:	4628      	mov	r0, r5 80343d0:	f7fc fec2 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.seqlenlen; 80343d4:	f894 711e 	ldrb.w	r7, [r4, #286]	; 0x11e  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80343d8:	2202      	movs	r2, #2 80343da:	1c79      	adds	r1, r7, #1 80343dc:	4628      	mov	r0, r5  ofs += 1; 80343de:	3702      	adds	r7, #2  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.seqlen);  ofs += m_stat->rhl.seqlenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80343e0:	f7fc fea6 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.verlen); 80343e4:	4639      	mov	r1, r7 80343e6:	f8b4 212a 	ldrh.w	r2, [r4, #298]	; 0x12a 80343ea:	4628      	mov	r0, r5 80343ec:	f7fc feb4 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.verlenlen; 80343f0:	f894 311d 	ldrb.w	r3, [r4, #285]	; 0x11d  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.verlen, snmp_version); 80343f4:	f8b4 212a 	ldrh.w	r2, [r4, #298]	; 0x12a  ofs += m_stat->rhl.seqlenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.verlen);  ofs += m_stat->rhl.verlenlen; 80343f8:	18ff      	adds	r7, r7, r3  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.verlen, snmp_version); 80343fa:	4b61      	ldr	r3, [pc, #388]	; (8034580 <snmp_send_response+0x218>) 80343fc:	4639      	mov	r1, r7 80343fe:	681b      	ldr	r3, [r3, #0] 8034400:	4628      	mov	r0, r5 8034402:	f7fc ff31 	bl	8031268 <snmp_asn1_enc_s32t>  ofs += m_stat->rhl.verlen; 8034406:	f8b4 312a 	ldrh.w	r3, [r4, #298]	; 0x12a 803440a:	18ff      	adds	r7, r7, r3 803440c:	b2bf      	uxth	r7, r7  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); 803440e:	4639      	mov	r1, r7  ofs += 1; 8034410:	3701      	adds	r7, #1  snmp_asn1_enc_length(p, ofs, m_stat->rhl.verlen);  ofs += m_stat->rhl.verlenlen;  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.verlen, snmp_version);  ofs += m_stat->rhl.verlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); 8034412:	2204      	movs	r2, #4  ofs += 1; 8034414:	b2bf      	uxth	r7, r7  snmp_asn1_enc_length(p, ofs, m_stat->rhl.verlen);  ofs += m_stat->rhl.verlenlen;  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.verlen, snmp_version);  ofs += m_stat->rhl.verlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); 8034416:	4628      	mov	r0, r5 8034418:	f7fc fe8a 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.comlen); 803441c:	4639      	mov	r1, r7 803441e:	f8b4 2128 	ldrh.w	r2, [r4, #296]	; 0x128 8034422:	4628      	mov	r0, r5 8034424:	f7fc fe98 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.comlenlen; 8034428:	f894 311c 	ldrb.w	r3, [r4, #284]	; 0x11c  snmp_asn1_enc_raw(p, ofs, m_stat->rhl.comlen, m_stat->community); 803442c:	f8b4 2128 	ldrh.w	r2, [r4, #296]	; 0x128  ofs += m_stat->rhl.verlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.comlen);  ofs += m_stat->rhl.comlenlen; 8034430:	18ff      	adds	r7, r7, r3 8034432:	b2bf      	uxth	r7, r7  snmp_asn1_enc_raw(p, ofs, m_stat->rhl.comlen, m_stat->community); 8034434:	4639      	mov	r1, r7 8034436:	f104 0318 	add.w	r3, r4, #24 803443a:	4628      	mov	r0, r5 803443c:	f7fc ffb4 	bl	80313a8 <snmp_asn1_enc_raw>  ofs += m_stat->rhl.comlen; 8034440:	f8b4 3128 	ldrh.w	r3, [r4, #296]	; 0x128 8034444:	18ff      	adds	r7, r7, r3 8034446:	b2bf      	uxth	r7, r7  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP)); 8034448:	4639      	mov	r1, r7  ofs += 1; 803444a:	3701      	adds	r7, #1  snmp_asn1_enc_length(p, ofs, m_stat->rhl.comlen);  ofs += m_stat->rhl.comlenlen;  snmp_asn1_enc_raw(p, ofs, m_stat->rhl.comlen, m_stat->community);  ofs += m_stat->rhl.comlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP)); 803444c:	22a2      	movs	r2, #162	; 0xa2  ofs += 1; 803444e:	b2bf      	uxth	r7, r7  snmp_asn1_enc_length(p, ofs, m_stat->rhl.comlen);  ofs += m_stat->rhl.comlenlen;  snmp_asn1_enc_raw(p, ofs, m_stat->rhl.comlen, m_stat->community);  ofs += m_stat->rhl.comlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP)); 8034450:	4628      	mov	r0, r5 8034452:	f7fc fe6d 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.pdulen); 8034456:	4639      	mov	r1, r7 8034458:	f8b4 2126 	ldrh.w	r2, [r4, #294]	; 0x126 803445c:	4628      	mov	r0, r5 803445e:	f7fc fe7b 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.pdulenlen; 8034462:	f894 311b 	ldrb.w	r3, [r4, #283]	; 0x11b 8034466:	18ff      	adds	r7, r7, r3 8034468:	b2bf      	uxth	r7, r7  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 803446a:	4639      	mov	r1, r7  ofs += 1; 803446c:	3701      	adds	r7, #1  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.pdulen);  ofs += m_stat->rhl.pdulenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 803446e:	2202      	movs	r2, #2  ofs += 1; 8034470:	b2bf      	uxth	r7, r7  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.pdulen);  ofs += m_stat->rhl.pdulenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 8034472:	4628      	mov	r0, r5 8034474:	f7fc fe5c 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.ridlen); 8034478:	4639      	mov	r1, r7 803447a:	f8b4 2124 	ldrh.w	r2, [r4, #292]	; 0x124 803447e:	4628      	mov	r0, r5 8034480:	f7fc fe6a 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.ridlenlen; 8034484:	f894 311a 	ldrb.w	r3, [r4, #282]	; 0x11a  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.ridlen, m_stat->rid); 8034488:	f8b4 2124 	ldrh.w	r2, [r4, #292]	; 0x124  ofs += m_stat->rhl.pdulenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.ridlen);  ofs += m_stat->rhl.ridlenlen; 803448c:	18ff      	adds	r7, r7, r3 803448e:	b2bf      	uxth	r7, r7  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.ridlen, m_stat->rid); 8034490:	4639      	mov	r1, r7 8034492:	68e3      	ldr	r3, [r4, #12] 8034494:	4628      	mov	r0, r5 8034496:	f7fc fee7 	bl	8031268 <snmp_asn1_enc_s32t>  ofs += m_stat->rhl.ridlen; 803449a:	f8b4 3124 	ldrh.w	r3, [r4, #292]	; 0x124 803449e:	18ff      	adds	r7, r7, r3 80344a0:	b2bf      	uxth	r7, r7  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80344a2:	4639      	mov	r1, r7  ofs += 1; 80344a4:	3701      	adds	r7, #1  snmp_asn1_enc_length(p, ofs, m_stat->rhl.ridlen);  ofs += m_stat->rhl.ridlenlen;  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.ridlen, m_stat->rid);  ofs += m_stat->rhl.ridlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80344a6:	2202      	movs	r2, #2  ofs += 1; 80344a8:	b2bf      	uxth	r7, r7  snmp_asn1_enc_length(p, ofs, m_stat->rhl.ridlen);  ofs += m_stat->rhl.ridlenlen;  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.ridlen, m_stat->rid);  ofs += m_stat->rhl.ridlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80344aa:	4628      	mov	r0, r5 80344ac:	f7fc fe40 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.errstatlen); 80344b0:	4639      	mov	r1, r7 80344b2:	f8b4 2122 	ldrh.w	r2, [r4, #290]	; 0x122 80344b6:	4628      	mov	r0, r5 80344b8:	f7fc fe4e 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.errstatlenlen; 80344bc:	f894 3119 	ldrb.w	r3, [r4, #281]	; 0x119  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.errstatlen, m_stat->error_status); 80344c0:	f8b4 2122 	ldrh.w	r2, [r4, #290]	; 0x122  ofs += m_stat->rhl.ridlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.errstatlen);  ofs += m_stat->rhl.errstatlenlen; 80344c4:	18ff      	adds	r7, r7, r3 80344c6:	b2bf      	uxth	r7, r7  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.errstatlen, m_stat->error_status); 80344c8:	4639      	mov	r1, r7 80344ca:	6923      	ldr	r3, [r4, #16] 80344cc:	4628      	mov	r0, r5 80344ce:	f7fc fecb 	bl	8031268 <snmp_asn1_enc_s32t>  ofs += m_stat->rhl.errstatlen; 80344d2:	f8b4 3122 	ldrh.w	r3, [r4, #290]	; 0x122 80344d6:	18ff      	adds	r7, r7, r3 80344d8:	b2bf      	uxth	r7, r7  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80344da:	4639      	mov	r1, r7  ofs += 1; 80344dc:	3701      	adds	r7, #1  snmp_asn1_enc_length(p, ofs, m_stat->rhl.errstatlen);  ofs += m_stat->rhl.errstatlenlen;  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.errstatlen, m_stat->error_status);  ofs += m_stat->rhl.errstatlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80344de:	2202      	movs	r2, #2  ofs += 1; 80344e0:	b2bf      	uxth	r7, r7  snmp_asn1_enc_length(p, ofs, m_stat->rhl.errstatlen);  ofs += m_stat->rhl.errstatlenlen;  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.errstatlen, m_stat->error_status);  ofs += m_stat->rhl.errstatlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 80344e2:	4628      	mov	r0, r5 80344e4:	f7fc fe24 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.erridxlen); 80344e8:	4639      	mov	r1, r7 80344ea:	f8b4 2120 	ldrh.w	r2, [r4, #288]	; 0x120 80344ee:	4628      	mov	r0, r5 80344f0:	f7fc fe32 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_stat->rhl.erridxlenlen; 80344f4:	f894 3118 	ldrb.w	r3, [r4, #280]	; 0x118  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.erridxlen, m_stat->error_index); 80344f8:	f8b4 2120 	ldrh.w	r2, [r4, #288]	; 0x120  ofs += m_stat->rhl.errstatlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_stat->rhl.erridxlen);  ofs += m_stat->rhl.erridxlenlen; 80344fc:	18ff      	adds	r7, r7, r3 80344fe:	b2bf      	uxth	r7, r7  snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.erridxlen, m_stat->error_index); 8034500:	4639      	mov	r1, r7 8034502:	6963      	ldr	r3, [r4, #20] 8034504:	4628      	mov	r0, r5 8034506:	f7fc feaf 	bl	8031268 <snmp_asn1_enc_s32t>  ofs += m_stat->rhl.erridxlen; 803450a:	f8b4 3120 	ldrh.w	r3, [r4, #288]	; 0x120 803450e:	18fa      	adds	r2, r7, r3    LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_snd_response() p != NULL\n"));    /* pass 1, size error, encode packet ino the pbuf(s) */    ofs = snmp_resp_header_enc(m_stat, p);    snmp_varbind_list_enc(&m_stat->outvb, p, ofs); 8034510:	4630      	mov	r0, r6 8034512:	4629      	mov	r1, r5 8034514:	b292      	uxth	r2, r2 8034516:	f7ff fe9b 	bl	8034250 <snmp_varbind_list_enc>    switch (m_stat->error_status) 803451a:	6923      	ldr	r3, [r4, #16] 803451c:	3b01      	subs	r3, #1 803451e:	2b04      	cmp	r3, #4 8034520:	d80f      	bhi.n	8034542 <snmp_send_response+0x1da> 8034522:	e8df f003 	tbb	[pc, r3] 8034526:	0603      	.short	0x0603 8034528:	0e09      	.short	0x0e09 803452a:	0c          	.byte	0x0c 803452b:	00          	.byte	0x00    {      case SNMP_ES_TOOBIG:        snmp_inc_snmpouttoobigs(); 803452c:	f7fe fa0c 	bl	8032948 <snmp_inc_snmpouttoobigs>        break; 8034530:	e007      	b.n	8034542 <snmp_send_response+0x1da>      case SNMP_ES_NOSUCHNAME:        snmp_inc_snmpoutnosuchnames(); 8034532:	f7fe fa11 	bl	8032958 <snmp_inc_snmpoutnosuchnames>        break; 8034536:	e004      	b.n	8034542 <snmp_send_response+0x1da>      case SNMP_ES_BADVALUE:        snmp_inc_snmpoutbadvalues(); 8034538:	f7fe fa16 	bl	8032968 <snmp_inc_snmpoutbadvalues>        break; 803453c:	e001      	b.n	8034542 <snmp_send_response+0x1da>      case SNMP_ES_GENERROR:        snmp_inc_snmpoutgenerrs(); 803453e:	f7fe fa1b 	bl	8032978 <snmp_inc_snmpoutgenerrs>        break;    }    snmp_inc_snmpoutgetresponses(); 8034542:	f7fe fa21 	bl	8032988 <snmp_inc_snmpoutgetresponses>    snmp_inc_snmpoutpkts(); 8034546:	f7fe f97f 	bl	8032848 <snmp_inc_snmpoutpkts>    /** @todo do we need separate rx and tx pcbs for threaded case? */    /** connect to the originating source */    udp_connect(m_stat->pcb, &m_stat->sip, m_stat->sp); 803454a:	8922      	ldrh	r2, [r4, #8] 803454c:	6820      	ldr	r0, [r4, #0] 803454e:	1d21      	adds	r1, r4, #4 8034550:	f7fb ffaa 	bl	80304a8 <udp_connect>    err = udp_send(m_stat->pcb, p); 8034554:	4629      	mov	r1, r5 8034556:	6820      	ldr	r0, [r4, #0] 8034558:	f7fb ffa1 	bl	803049e <udp_send>      /** @todo release some memory, retry and return tooBig? tooMuchHassle? */      err = ERR_MEM;    }    else    {      err = ERR_OK; 803455c:	f1b0 3fff 	cmp.w	r0, #4294967295 8034560:	bf0c      	ite	eq 8034562:	f04f 36ff 	moveq.w	r6, #4294967295 8034566:	2600      	movne	r6, #0    }    /** disassociate remote address and port with this pcb */    udp_disconnect(m_stat->pcb); 8034568:	6820      	ldr	r0, [r4, #0] 803456a:	f7fb ffc3 	bl	80304f4 <udp_disconnect>    pbuf_free(p); 803456e:	4628      	mov	r0, r5 8034570:	f7f9 fa80 	bl	802da74 <pbuf_free> 8034574:	e000      	b.n	8034578 <snmp_send_response+0x210>  }  else  {    /* first pbuf alloc try or retry alloc failed       very low on memory, couldn't return tooBig */    return ERR_MEM; 8034576:	26ff      	movs	r6, #255	; 0xff  }} 8034578:	b270      	sxtb	r0, r6 803457a:	b005      	add	sp, #20 803457c:	bdf0      	pop	{r4, r5, r6, r7, pc} 803457e:	bf00      	nop 8034580:	08041cd8 	.word	0x08041cd808034584 <snmp_send_trap>: * and .iso.org.dod.internet.private.enterprises.yourenterprise * (sysObjectID) for specific traps. */err_tsnmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap){ 8034584:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}  struct pbuf *p;  u16_t i,tot_len;  for (i=0, td = &trap_dst[0]; i<SNMP_TRAP_DESTINATIONS; i++, td++)  {    if ((td->enable != 0) && !ip_addr_isany(&td->dip)) 8034588:	4b11      	ldr	r3, [pc, #68]	; (80345d0 <snmp_send_trap+0x4c>) * and .iso.org.dod.internet.private.enterprises.yourenterprise * (sysObjectID) for specific traps. */err_tsnmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap){ 803458a:	4617      	mov	r7, r2  struct pbuf *p;  u16_t i,tot_len;  for (i=0, td = &trap_dst[0]; i<SNMP_TRAP_DESTINATIONS; i++, td++)  {    if ((td->enable != 0) && !ip_addr_isany(&td->dip)) 803458c:	791a      	ldrb	r2, [r3, #4] * and .iso.org.dod.internet.private.enterprises.yourenterprise * (sysObjectID) for specific traps. */err_tsnmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap){ 803458e:	b085      	sub	sp, #20 8034590:	4605      	mov	r5, r0 8034592:	460e      	mov	r6, r1  struct pbuf *p;  u16_t i,tot_len;  for (i=0, td = &trap_dst[0]; i<SNMP_TRAP_DESTINATIONS; i++, td++)  {    if ((td->enable != 0) && !ip_addr_isany(&td->dip)) 8034594:	2a00      	cmp	r2, #0 8034596:	f000 81b8 	beq.w	803490a <snmp_send_trap+0x386> 803459a:	6818      	ldr	r0, [r3, #0] 803459c:	2800      	cmp	r0, #0 803459e:	f000 81b4 	beq.w	803490a <snmp_send_trap+0x386>    {      /* network order trap destination */      ip_addr_copy(trap_msg.dip, td->dip); 80345a2:	4c0c      	ldr	r4, [pc, #48]	; (80345d4 <snmp_send_trap+0x50>) 80345a4:	6060      	str	r0, [r4, #4]      /* lookup current source address for this dst */      dst_if = ip_route(&td->dip); 80345a6:	4618      	mov	r0, r3 80345a8:	f7fc f9ee 	bl	8030988 <ip_route>      ip_addr_copy(dst_ip, dst_if->ip_addr); 80345ac:	6843      	ldr	r3, [r0, #4]      /* @todo: what about IPv6? */      trap_msg.sip_raw[0] = ip4_addr1(&dst_ip);      trap_msg.sip_raw[1] = ip4_addr2(&dst_ip);      trap_msg.sip_raw[2] = ip4_addr3(&dst_ip);      trap_msg.sip_raw[3] = ip4_addr4(&dst_ip);      trap_msg.gen_trap = generic_trap; 80345ae:	6125      	str	r5, [r4, #16]      /* lookup current source address for this dst */      dst_if = ip_route(&td->dip);      ip_addr_copy(dst_ip, dst_if->ip_addr);      /* @todo: what about IPv6? */      trap_msg.sip_raw[0] = ip4_addr1(&dst_ip);      trap_msg.sip_raw[1] = ip4_addr2(&dst_ip); 80345b0:	f3c3 2207 	ubfx	r2, r3, #8, #8      ip_addr_copy(trap_msg.dip, td->dip);      /* lookup current source address for this dst */      dst_if = ip_route(&td->dip);      ip_addr_copy(dst_ip, dst_if->ip_addr);      /* @todo: what about IPv6? */      trap_msg.sip_raw[0] = ip4_addr1(&dst_ip); 80345b4:	7323      	strb	r3, [r4, #12]      trap_msg.sip_raw[1] = ip4_addr2(&dst_ip); 80345b6:	7362      	strb	r2, [r4, #13]      trap_msg.sip_raw[2] = ip4_addr3(&dst_ip);      trap_msg.sip_raw[3] = ip4_addr4(&dst_ip);      trap_msg.gen_trap = generic_trap;      trap_msg.spc_trap = specific_trap;      if (generic_trap == SNMP_GENTRAP_ENTERPRISESPC) 80345b8:	2d06      	cmp	r5, #6      dst_if = ip_route(&td->dip);      ip_addr_copy(dst_ip, dst_if->ip_addr);      /* @todo: what about IPv6? */      trap_msg.sip_raw[0] = ip4_addr1(&dst_ip);      trap_msg.sip_raw[1] = ip4_addr2(&dst_ip);      trap_msg.sip_raw[2] = ip4_addr3(&dst_ip); 80345ba:	f3c3 4207 	ubfx	r2, r3, #16, #8      trap_msg.sip_raw[3] = ip4_addr4(&dst_ip); 80345be:	f3c3 6307 	ubfx	r3, r3, #24, #8      dst_if = ip_route(&td->dip);      ip_addr_copy(dst_ip, dst_if->ip_addr);      /* @todo: what about IPv6? */      trap_msg.sip_raw[0] = ip4_addr1(&dst_ip);      trap_msg.sip_raw[1] = ip4_addr2(&dst_ip);      trap_msg.sip_raw[2] = ip4_addr3(&dst_ip); 80345c2:	73a2      	strb	r2, [r4, #14]      trap_msg.sip_raw[3] = ip4_addr4(&dst_ip); 80345c4:	73e3      	strb	r3, [r4, #15]      trap_msg.gen_trap = generic_trap;      trap_msg.spc_trap = specific_trap; 80345c6:	6167      	str	r7, [r4, #20]      if (generic_trap == SNMP_GENTRAP_ENTERPRISESPC) 80345c8:	d106      	bne.n	80345d8 <snmp_send_trap+0x54>      {        /* enterprise-Specific trap */        trap_msg.enterprise = eoid; 80345ca:	60a6      	str	r6, [r4, #8] 80345cc:	e008      	b.n	80345e0 <snmp_send_trap+0x5c> 80345ce:	bf00      	nop 80345d0:	200111e0 	.word	0x200111e0 80345d4:	200111e8 	.word	0x200111e8      }      else      {        /* generic (MIB-II) trap */        snmp_get_snmpgrpid_ptr(&trap_msg.enterprise); 80345d8:	f104 0008 	add.w	r0, r4, #8 80345dc:	f7fe f9e4 	bl	80329a8 <snmp_get_snmpgrpid_ptr>      }      snmp_get_sysuptime(&trap_msg.ts); 80345e0:	48bb      	ldr	r0, [pc, #748]	; (80348d0 <snmp_send_trap+0x34c>)  struct snmp_trap_header_lengths *thl;  thl = &m_trap->thl;  tot_len = vb_len;  snmp_asn1_enc_u32t_cnt(m_trap->ts, &thl->tslen); 80345e2:	4cbc      	ldr	r4, [pc, #752]	; (80348d4 <snmp_send_trap+0x350>)      else      {        /* generic (MIB-II) trap */        snmp_get_snmpgrpid_ptr(&trap_msg.enterprise);      }      snmp_get_sysuptime(&trap_msg.ts); 80345e4:	f7fd fd4a 	bl	803207c <snmp_get_sysuptime>      /* pass 0, calculate length fields */      tot_len = snmp_varbind_list_sum(&trap_msg.outvb); 80345e8:	48bb      	ldr	r0, [pc, #748]	; (80348d8 <snmp_send_trap+0x354>) 80345ea:	f7ff fd53 	bl	8034094 <snmp_varbind_list_sum>  struct snmp_trap_header_lengths *thl;  thl = &m_trap->thl;  tot_len = vb_len;  snmp_asn1_enc_u32t_cnt(m_trap->ts, &thl->tslen); 80345ee:	f104 0132 	add.w	r1, r4, #50	; 0x32        snmp_get_snmpgrpid_ptr(&trap_msg.enterprise);      }      snmp_get_sysuptime(&trap_msg.ts);      /* pass 0, calculate length fields */      tot_len = snmp_varbind_list_sum(&trap_msg.outvb); 80345f2:	4606      	mov	r6, r0  struct snmp_trap_header_lengths *thl;  thl = &m_trap->thl;  tot_len = vb_len;  snmp_asn1_enc_u32t_cnt(m_trap->ts, &thl->tslen); 80345f4:	69a0      	ldr	r0, [r4, #24] 80345f6:	f7fc fd59 	bl	80310ac <snmp_asn1_enc_u32t_cnt>  snmp_asn1_enc_length_cnt(thl->tslen, &thl->tslenlen); 80345fa:	8e60      	ldrh	r0, [r4, #50]	; 0x32 80345fc:	f104 0128 	add.w	r1, r4, #40	; 0x28 8034600:	f7fc fd49 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->tslen + thl->tslenlen; 8034604:	f8b4 c032 	ldrh.w	ip, [r4, #50]	; 0x32  snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen); 8034608:	6960      	ldr	r0, [r4, #20] 803460a:	f8cd c004 	str.w	ip, [sp, #4] 803460e:	f104 0134 	add.w	r1, r4, #52	; 0x34  thl = &m_trap->thl;  tot_len = vb_len;  snmp_asn1_enc_u32t_cnt(m_trap->ts, &thl->tslen);  snmp_asn1_enc_length_cnt(thl->tslen, &thl->tslenlen);  tot_len += 1 + thl->tslen + thl->tslenlen; 8034612:	f894 9028 	ldrb.w	r9, [r4, #40]	; 0x28  snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen); 8034616:	f7fc fd5e 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen); 803461a:	8ea0      	ldrh	r0, [r4, #52]	; 0x34 803461c:	f104 0129 	add.w	r1, r4, #41	; 0x29 8034620:	f7fc fd39 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->strplen + thl->strplenlen; 8034624:	8ea3      	ldrh	r3, [r4, #52]	; 0x34  snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen); 8034626:	6920      	ldr	r0, [r4, #16] 8034628:	9302      	str	r3, [sp, #8] 803462a:	f104 0136 	add.w	r1, r4, #54	; 0x36  snmp_asn1_enc_length_cnt(thl->tslen, &thl->tslenlen);  tot_len += 1 + thl->tslen + thl->tslenlen;  snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen);  snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen);  tot_len += 1 + thl->strplen + thl->strplenlen; 803462e:	f894 8029 	ldrb.w	r8, [r4, #41]	; 0x29  snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen);  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen;  thl->aaddrlen = 4; 8034632:	2504      	movs	r5, #4  snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen);  snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen);  tot_len += 1 + thl->strplen + thl->strplenlen;  snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen); 8034634:	f7fc fd4f 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen); 8034638:	8ee0      	ldrh	r0, [r4, #54]	; 0x36 803463a:	f104 012a 	add.w	r1, r4, #42	; 0x2a 803463e:	f7fc fd2a 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->gtrplen + thl->gtrplenlen;  thl->aaddrlen = 4;  snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen); 8034642:	4628      	mov	r0, r5 8034644:	f104 012b 	add.w	r1, r4, #43	; 0x2b  snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen);  tot_len += 1 + thl->strplen + thl->strplenlen;  snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen);  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen; 8034648:	f8b4 b036 	ldrh.w	fp, [r4, #54]	; 0x36 803464c:	f894 702a 	ldrb.w	r7, [r4, #42]	; 0x2a  thl->aaddrlen = 4; 8034650:	8725      	strh	r5, [r4, #56]	; 0x38  snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen); 8034652:	f7fc fd20 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->aaddrlen + thl->aaddrlenlen; 8034656:	f894 202b 	ldrb.w	r2, [r4, #43]	; 0x2b  snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen); 803465a:	68a1      	ldr	r1, [r4, #8]  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen;  thl->aaddrlen = 4;  snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen);  tot_len += 1 + thl->aaddrlen + thl->aaddrlenlen; 803465c:	9203      	str	r2, [sp, #12]  snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen); 803465e:	f811 0b04 	ldrb.w	r0, [r1], #4  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen;  thl->aaddrlen = 4;  snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen);  tot_len += 1 + thl->aaddrlen + thl->aaddrlenlen; 8034662:	f8b4 a038 	ldrh.w	sl, [r4, #56]	; 0x38  snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen); 8034666:	f104 023a 	add.w	r2, r4, #58	; 0x3a 803466a:	f7fc fd49 	bl	8031100 <snmp_asn1_enc_oid_cnt>  snmp_asn1_enc_length_cnt(thl->eidlen, &thl->eidlenlen); 803466e:	8f60      	ldrh	r0, [r4, #58]	; 0x3a 8034670:	f104 012c 	add.w	r1, r4, #44	; 0x2c 8034674:	f7fc fd0f 	bl	8031096 <snmp_asn1_enc_length_cnt>  snmp_asn1_enc_length_cnt(thl->tslen, &thl->tslenlen);  tot_len += 1 + thl->tslen + thl->tslenlen;  snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen);  snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen);  tot_len += 1 + thl->strplen + thl->strplenlen; 8034678:	f8dd c004 	ldr.w	ip, [sp, #4] 803467c:	9b02      	ldr	r3, [sp, #8]  snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen);  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen; 803467e:	8f62      	ldrh	r2, [r4, #58]	; 0x3a  snmp_asn1_enc_length_cnt(thl->tslen, &thl->tslenlen);  tot_len += 1 + thl->tslen + thl->tslenlen;  snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen);  snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen);  tot_len += 1 + thl->strplen + thl->strplenlen; 8034680:	4463      	add	r3, ip 8034682:	3305      	adds	r3, #5  snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen);  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen; 8034684:	449b      	add	fp, r3 8034686:	44da      	add	sl, fp 8034688:	fa12 fa8a 	uxtah	sl, r2, sl  thl->aaddrlen = 4;  snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen);  tot_len += 1 + thl->aaddrlen + thl->aaddrlenlen; 803468c:	44d1      	add	r9, sl 803468e:	44c8      	add	r8, r9  snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen);  snmp_asn1_enc_length_cnt(thl->eidlen, &thl->eidlenlen);  tot_len += 1 + thl->eidlen + thl->eidlenlen; 8034690:	9b03      	ldr	r3, [sp, #12]  snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen);  tot_len += 1 + thl->gtrplen + thl->gtrplenlen;  thl->aaddrlen = 4;  snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen);  tot_len += 1 + thl->aaddrlen + thl->aaddrlenlen; 8034692:	fa17 f788 	uxtah	r7, r7, r8  snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen);  snmp_asn1_enc_length_cnt(thl->eidlen, &thl->eidlenlen);  tot_len += 1 + thl->eidlen + thl->eidlenlen; 8034696:	19df      	adds	r7, r3, r7 8034698:	f894 302c 	ldrb.w	r3, [r4, #44]	; 0x2c 803469c:	18ff      	adds	r7, r7, r3 803469e:	fa16 f687 	uxtah	r6, r6, r7 80346a2:	b2b6      	uxth	r6, r6  thl->pdulen = tot_len;  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen); 80346a4:	4630      	mov	r0, r6 80346a6:	f104 012d 	add.w	r1, r4, #45	; 0x2d  tot_len += 1 + thl->pdulenlen;  thl->comlen = sizeof(snmp_publiccommunity) - 1; 80346aa:	2706      	movs	r7, #6  snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen);  snmp_asn1_enc_length_cnt(thl->eidlen, &thl->eidlenlen);  tot_len += 1 + thl->eidlen + thl->eidlenlen;  thl->pdulen = tot_len; 80346ac:	87a6      	strh	r6, [r4, #60]	; 0x3c  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen); 80346ae:	f7fc fcf2 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->pdulenlen;  thl->comlen = sizeof(snmp_publiccommunity) - 1;  snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen); 80346b2:	4638      	mov	r0, r7 80346b4:	f104 012e 	add.w	r1, r4, #46	; 0x2e  snmp_asn1_enc_length_cnt(thl->eidlen, &thl->eidlenlen);  tot_len += 1 + thl->eidlen + thl->eidlenlen;  thl->pdulen = tot_len;  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen);  tot_len += 1 + thl->pdulenlen; 80346b8:	f894 a02d 	ldrb.w	sl, [r4, #45]	; 0x2d  thl->comlen = sizeof(snmp_publiccommunity) - 1; 80346bc:	87e7      	strh	r7, [r4, #62]	; 0x3e  snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen); 80346be:	f7fc fcea 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->comlenlen + thl->comlen;  snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen); 80346c2:	4b86      	ldr	r3, [pc, #536]	; (80348dc <snmp_send_trap+0x358>)  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen);  tot_len += 1 + thl->pdulenlen;  thl->comlen = sizeof(snmp_publiccommunity) - 1;  snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen);  tot_len += 1 + thl->comlenlen + thl->comlen; 80346c4:	f894 902e 	ldrb.w	r9, [r4, #46]	; 0x2e  snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen); 80346c8:	f8d3 8000 	ldr.w	r8, [r3]  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen);  tot_len += 1 + thl->pdulenlen;  thl->comlen = sizeof(snmp_publiccommunity) - 1;  snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen);  tot_len += 1 + thl->comlenlen + thl->comlen; 80346cc:	f8b4 b03e 	ldrh.w	fp, [r4, #62]	; 0x3e  snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen); 80346d0:	4640      	mov	r0, r8 80346d2:	f104 0140 	add.w	r1, r4, #64	; 0x40 80346d6:	f7fc fcfe 	bl	80310d6 <snmp_asn1_enc_s32t_cnt>  snmp_asn1_enc_length_cnt(thl->verlen, &thl->verlenlen); 80346da:	f8b4 0040 	ldrh.w	r0, [r4, #64]	; 0x40 80346de:	f104 012f 	add.w	r1, r4, #47	; 0x2f 80346e2:	f7fc fcd8 	bl	8031096 <snmp_asn1_enc_length_cnt>  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen);  tot_len += 1 + thl->pdulenlen;  thl->comlen = sizeof(snmp_publiccommunity) - 1;  snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen);  tot_len += 1 + thl->comlenlen + thl->comlen; 80346e6:	f8b4 3040 	ldrh.w	r3, [r4, #64]	; 0x40 80346ea:	449b      	add	fp, r3 80346ec:	f10b 0b03 	add.w	fp, fp, #3  snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen);  snmp_asn1_enc_length_cnt(thl->verlen, &thl->verlenlen);  tot_len += 1 + thl->verlen + thl->verlenlen; 80346f0:	f894 302f 	ldrb.w	r3, [r4, #47]	; 0x2f  snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen);  tot_len += 1 + thl->pdulenlen;  thl->comlen = sizeof(snmp_publiccommunity) - 1;  snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen);  tot_len += 1 + thl->comlenlen + thl->comlen; 80346f4:	44da      	add	sl, fp  snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen);  snmp_asn1_enc_length_cnt(thl->verlen, &thl->verlenlen);  tot_len += 1 + thl->verlen + thl->verlenlen; 80346f6:	44d1      	add	r9, sl 80346f8:	4499      	add	r9, r3 80346fa:	fa16 f689 	uxtah	r6, r6, r9 80346fe:	b2b6      	uxth	r6, r6  thl->seqlen = tot_len;  snmp_asn1_enc_length_cnt(thl->seqlen, &thl->seqlenlen); 8034700:	4630      	mov	r0, r6 8034702:	f104 0130 	add.w	r1, r4, #48	; 0x30  snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen);  snmp_asn1_enc_length_cnt(thl->verlen, &thl->verlenlen);  tot_len += 1 + thl->verlen + thl->verlenlen;  thl->seqlen = tot_len; 8034706:	f8a4 6042 	strh.w	r6, [r4, #66]	; 0x42  snmp_asn1_enc_length_cnt(thl->seqlen, &thl->seqlenlen); 803470a:	f7fc fcc4 	bl	8031096 <snmp_asn1_enc_length_cnt>  tot_len += 1 + thl->seqlenlen; 803470e:	f894 3030 	ldrb.w	r3, [r4, #48]	; 0x30 8034712:	3301      	adds	r3, #1 8034714:	18f1      	adds	r1, r6, r3      /* pass 0, calculate length fields */      tot_len = snmp_varbind_list_sum(&trap_msg.outvb);      tot_len = snmp_trap_header_sum(&trap_msg, tot_len);      /* allocate pbuf(s) */      p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); 8034716:	2000      	movs	r0, #0 8034718:	b289      	uxth	r1, r1 803471a:	2203      	movs	r2, #3 803471c:	f7f9 f9f7 	bl	802db0e <pbuf_alloc>      if (p != NULL) 8034720:	4606      	mov	r6, r0 8034722:	2800      	cmp	r0, #0 8034724:	f000 80f3 	beq.w	803490e <snmp_send_trap+0x38a>snmp_trap_header_enc(struct snmp_msg_trap *m_trap, struct pbuf *p){  u16_t ofs;  ofs = 0;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); 8034728:	2100      	movs	r1, #0 803472a:	2230      	movs	r2, #48	; 0x30 803472c:	f7fc fd00 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.seqlen); 8034730:	2101      	movs	r1, #1 8034732:	f8b4 2042 	ldrh.w	r2, [r4, #66]	; 0x42 8034736:	4630      	mov	r0, r6 8034738:	f7fc fd0e 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.seqlenlen; 803473c:	f894 9030 	ldrb.w	r9, [r4, #48]	; 0x30  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 8034740:	2202      	movs	r2, #2 8034742:	f109 0101 	add.w	r1, r9, #1 8034746:	4630      	mov	r0, r6  ofs += 1; 8034748:	f109 0902 	add.w	r9, r9, #2  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.seqlen);  ofs += m_trap->thl.seqlenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 803474c:	f7fc fcf0 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.verlen); 8034750:	4649      	mov	r1, r9 8034752:	f8b4 2040 	ldrh.w	r2, [r4, #64]	; 0x40 8034756:	4630      	mov	r0, r6 8034758:	f7fc fcfe 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.verlenlen; 803475c:	f894 302f 	ldrb.w	r3, [r4, #47]	; 0x2f  snmp_asn1_enc_s32t(p, ofs, m_trap->thl.verlen, snmp_version); 8034760:	f8b4 2040 	ldrh.w	r2, [r4, #64]	; 0x40  ofs += m_trap->thl.seqlenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.verlen);  ofs += m_trap->thl.verlenlen; 8034764:	4499      	add	r9, r3  snmp_asn1_enc_s32t(p, ofs, m_trap->thl.verlen, snmp_version); 8034766:	4649      	mov	r1, r9 8034768:	4643      	mov	r3, r8 803476a:	4630      	mov	r0, r6 803476c:	f7fc fd7c 	bl	8031268 <snmp_asn1_enc_s32t>  ofs += m_trap->thl.verlen; 8034770:	f8b4 3040 	ldrh.w	r3, [r4, #64]	; 0x40 8034774:	4499      	add	r9, r3 8034776:	fa1f f989 	uxth.w	r9, r9  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); 803477a:	462a      	mov	r2, r5  ofs += 1; 803477c:	f109 0501 	add.w	r5, r9, #1  snmp_asn1_enc_length(p, ofs, m_trap->thl.verlen);  ofs += m_trap->thl.verlenlen;  snmp_asn1_enc_s32t(p, ofs, m_trap->thl.verlen, snmp_version);  ofs += m_trap->thl.verlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); 8034780:	4649      	mov	r1, r9  ofs += 1; 8034782:	b2ad      	uxth	r5, r5  snmp_asn1_enc_length(p, ofs, m_trap->thl.verlen);  ofs += m_trap->thl.verlenlen;  snmp_asn1_enc_s32t(p, ofs, m_trap->thl.verlen, snmp_version);  ofs += m_trap->thl.verlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); 8034784:	4630      	mov	r0, r6 8034786:	f7fc fcd3 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.comlen); 803478a:	4629      	mov	r1, r5 803478c:	8fe2      	ldrh	r2, [r4, #62]	; 0x3e 803478e:	4630      	mov	r0, r6 8034790:	f7fc fce2 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.comlenlen; 8034794:	f894 302e 	ldrb.w	r3, [r4, #46]	; 0x2e  snmp_asn1_enc_raw(p, ofs, m_trap->thl.comlen, (u8_t *)&snmp_publiccommunity[0]); 8034798:	8fe2      	ldrh	r2, [r4, #62]	; 0x3e  ofs += m_trap->thl.verlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.comlen);  ofs += m_trap->thl.comlenlen; 803479a:	18ed      	adds	r5, r5, r3 803479c:	b2ad      	uxth	r5, r5  snmp_asn1_enc_raw(p, ofs, m_trap->thl.comlen, (u8_t *)&snmp_publiccommunity[0]); 803479e:	4629      	mov	r1, r5 80347a0:	4b4f      	ldr	r3, [pc, #316]	; (80348e0 <snmp_send_trap+0x35c>) 80347a2:	4630      	mov	r0, r6 80347a4:	f7fc fe00 	bl	80313a8 <snmp_asn1_enc_raw>  ofs += m_trap->thl.comlen; 80347a8:	8fe3      	ldrh	r3, [r4, #62]	; 0x3e 80347aa:	18ed      	adds	r5, r5, r3 80347ac:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP)); 80347ae:	4629      	mov	r1, r5  ofs += 1; 80347b0:	3501      	adds	r5, #1  snmp_asn1_enc_length(p, ofs, m_trap->thl.comlen);  ofs += m_trap->thl.comlenlen;  snmp_asn1_enc_raw(p, ofs, m_trap->thl.comlen, (u8_t *)&snmp_publiccommunity[0]);  ofs += m_trap->thl.comlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP)); 80347b2:	22a4      	movs	r2, #164	; 0xa4  ofs += 1; 80347b4:	b2ad      	uxth	r5, r5  snmp_asn1_enc_length(p, ofs, m_trap->thl.comlen);  ofs += m_trap->thl.comlenlen;  snmp_asn1_enc_raw(p, ofs, m_trap->thl.comlen, (u8_t *)&snmp_publiccommunity[0]);  ofs += m_trap->thl.comlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP)); 80347b6:	4630      	mov	r0, r6 80347b8:	f7fc fcba 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.pdulen); 80347bc:	4629      	mov	r1, r5 80347be:	8fa2      	ldrh	r2, [r4, #60]	; 0x3c 80347c0:	4630      	mov	r0, r6 80347c2:	f7fc fcc9 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.pdulenlen; 80347c6:	f894 302d 	ldrb.w	r3, [r4, #45]	; 0x2d 80347ca:	18ed      	adds	r5, r5, r3 80347cc:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); 80347ce:	4629      	mov	r1, r5  ofs += 1; 80347d0:	3501      	adds	r5, #1  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.pdulen);  ofs += m_trap->thl.pdulenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); 80347d2:	463a      	mov	r2, r7  ofs += 1; 80347d4:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.pdulen);  ofs += m_trap->thl.pdulenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); 80347d6:	4630      	mov	r0, r6 80347d8:	f7fc fcaa 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.eidlen); 80347dc:	4629      	mov	r1, r5 80347de:	8f62      	ldrh	r2, [r4, #58]	; 0x3a 80347e0:	4630      	mov	r0, r6 80347e2:	f7fc fcb9 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.eidlenlen; 80347e6:	f894 302c 	ldrb.w	r3, [r4, #44]	; 0x2c 80347ea:	18ed      	adds	r5, r5, r3  snmp_asn1_enc_oid(p, ofs, m_trap->enterprise->len, &m_trap->enterprise->id[0]); 80347ec:	68a3      	ldr	r3, [r4, #8]  ofs += m_trap->thl.pdulenlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.eidlen);  ofs += m_trap->thl.eidlenlen; 80347ee:	b2ad      	uxth	r5, r5  snmp_asn1_enc_oid(p, ofs, m_trap->enterprise->len, &m_trap->enterprise->id[0]); 80347f0:	4629      	mov	r1, r5 80347f2:	f813 2b04 	ldrb.w	r2, [r3], #4 80347f6:	4630      	mov	r0, r6 80347f8:	f7fc fd63 	bl	80312c2 <snmp_asn1_enc_oid>  ofs += m_trap->thl.eidlen; 80347fc:	8f63      	ldrh	r3, [r4, #58]	; 0x3a 80347fe:	18ed      	adds	r5, r5, r3 8034800:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR)); 8034802:	4629      	mov	r1, r5  ofs += 1; 8034804:	3501      	adds	r5, #1  snmp_asn1_enc_length(p, ofs, m_trap->thl.eidlen);  ofs += m_trap->thl.eidlenlen;  snmp_asn1_enc_oid(p, ofs, m_trap->enterprise->len, &m_trap->enterprise->id[0]);  ofs += m_trap->thl.eidlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR)); 8034806:	2240      	movs	r2, #64	; 0x40  ofs += 1; 8034808:	b2ad      	uxth	r5, r5  snmp_asn1_enc_length(p, ofs, m_trap->thl.eidlen);  ofs += m_trap->thl.eidlenlen;  snmp_asn1_enc_oid(p, ofs, m_trap->enterprise->len, &m_trap->enterprise->id[0]);  ofs += m_trap->thl.eidlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR)); 803480a:	4630      	mov	r0, r6 803480c:	f7fc fc90 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.aaddrlen); 8034810:	4629      	mov	r1, r5 8034812:	8f22      	ldrh	r2, [r4, #56]	; 0x38 8034814:	4630      	mov	r0, r6 8034816:	f7fc fc9f 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.aaddrlenlen; 803481a:	f894 302b 	ldrb.w	r3, [r4, #43]	; 0x2b  snmp_asn1_enc_raw(p, ofs, m_trap->thl.aaddrlen, &m_trap->sip_raw[0]); 803481e:	8f22      	ldrh	r2, [r4, #56]	; 0x38  ofs += m_trap->thl.eidlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.aaddrlen);  ofs += m_trap->thl.aaddrlenlen; 8034820:	18ed      	adds	r5, r5, r3 8034822:	b2ad      	uxth	r5, r5  snmp_asn1_enc_raw(p, ofs, m_trap->thl.aaddrlen, &m_trap->sip_raw[0]); 8034824:	4629      	mov	r1, r5 8034826:	f104 030c 	add.w	r3, r4, #12 803482a:	4630      	mov	r0, r6 803482c:	f7fc fdbc 	bl	80313a8 <snmp_asn1_enc_raw>  ofs += m_trap->thl.aaddrlen; 8034830:	8f23      	ldrh	r3, [r4, #56]	; 0x38 8034832:	18ed      	adds	r5, r5, r3 8034834:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 8034836:	4629      	mov	r1, r5  ofs += 1; 8034838:	3501      	adds	r5, #1  snmp_asn1_enc_length(p, ofs, m_trap->thl.aaddrlen);  ofs += m_trap->thl.aaddrlenlen;  snmp_asn1_enc_raw(p, ofs, m_trap->thl.aaddrlen, &m_trap->sip_raw[0]);  ofs += m_trap->thl.aaddrlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 803483a:	2202      	movs	r2, #2  ofs += 1; 803483c:	b2ad      	uxth	r5, r5  snmp_asn1_enc_length(p, ofs, m_trap->thl.aaddrlen);  ofs += m_trap->thl.aaddrlenlen;  snmp_asn1_enc_raw(p, ofs, m_trap->thl.aaddrlen, &m_trap->sip_raw[0]);  ofs += m_trap->thl.aaddrlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 803483e:	4630      	mov	r0, r6 8034840:	f7fc fc76 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.gtrplen); 8034844:	4629      	mov	r1, r5 8034846:	8ee2      	ldrh	r2, [r4, #54]	; 0x36 8034848:	4630      	mov	r0, r6 803484a:	f7fc fc85 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.gtrplenlen; 803484e:	f894 302a 	ldrb.w	r3, [r4, #42]	; 0x2a  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.gtrplen, m_trap->gen_trap); 8034852:	8ee2      	ldrh	r2, [r4, #54]	; 0x36  ofs += m_trap->thl.aaddrlen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.gtrplen);  ofs += m_trap->thl.gtrplenlen; 8034854:	18ed      	adds	r5, r5, r3 8034856:	b2ad      	uxth	r5, r5  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.gtrplen, m_trap->gen_trap); 8034858:	4629      	mov	r1, r5 803485a:	6923      	ldr	r3, [r4, #16] 803485c:	4630      	mov	r0, r6 803485e:	f7fc fcc3 	bl	80311e8 <snmp_asn1_enc_u32t>  ofs += m_trap->thl.gtrplen; 8034862:	8ee3      	ldrh	r3, [r4, #54]	; 0x36 8034864:	18ed      	adds	r5, r5, r3 8034866:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 8034868:	4629      	mov	r1, r5  ofs += 1; 803486a:	3501      	adds	r5, #1  snmp_asn1_enc_length(p, ofs, m_trap->thl.gtrplen);  ofs += m_trap->thl.gtrplenlen;  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.gtrplen, m_trap->gen_trap);  ofs += m_trap->thl.gtrplen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 803486c:	2202      	movs	r2, #2  ofs += 1; 803486e:	b2ad      	uxth	r5, r5  snmp_asn1_enc_length(p, ofs, m_trap->thl.gtrplen);  ofs += m_trap->thl.gtrplenlen;  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.gtrplen, m_trap->gen_trap);  ofs += m_trap->thl.gtrplen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); 8034870:	4630      	mov	r0, r6 8034872:	f7fc fc5d 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.strplen); 8034876:	4629      	mov	r1, r5 8034878:	8ea2      	ldrh	r2, [r4, #52]	; 0x34 803487a:	4630      	mov	r0, r6 803487c:	f7fc fc6c 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.strplenlen; 8034880:	f894 3029 	ldrb.w	r3, [r4, #41]	; 0x29  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.strplen, m_trap->spc_trap); 8034884:	8ea2      	ldrh	r2, [r4, #52]	; 0x34  ofs += m_trap->thl.gtrplen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.strplen);  ofs += m_trap->thl.strplenlen; 8034886:	18ed      	adds	r5, r5, r3 8034888:	b2ad      	uxth	r5, r5  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.strplen, m_trap->spc_trap); 803488a:	4629      	mov	r1, r5 803488c:	6963      	ldr	r3, [r4, #20] 803488e:	4630      	mov	r0, r6 8034890:	f7fc fcaa 	bl	80311e8 <snmp_asn1_enc_u32t>  ofs += m_trap->thl.strplen; 8034894:	8ea3      	ldrh	r3, [r4, #52]	; 0x34 8034896:	18ed      	adds	r5, r5, r3 8034898:	b2ad      	uxth	r5, r5  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS)); 803489a:	4629      	mov	r1, r5  ofs += 1; 803489c:	3501      	adds	r5, #1  snmp_asn1_enc_length(p, ofs, m_trap->thl.strplen);  ofs += m_trap->thl.strplenlen;  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.strplen, m_trap->spc_trap);  ofs += m_trap->thl.strplen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS)); 803489e:	2243      	movs	r2, #67	; 0x43  ofs += 1; 80348a0:	b2ad      	uxth	r5, r5  snmp_asn1_enc_length(p, ofs, m_trap->thl.strplen);  ofs += m_trap->thl.strplenlen;  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.strplen, m_trap->spc_trap);  ofs += m_trap->thl.strplen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS)); 80348a2:	4630      	mov	r0, r6 80348a4:	f7fc fc44 	bl	8031130 <snmp_asn1_enc_type>  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.tslen); 80348a8:	4629      	mov	r1, r5 80348aa:	8e62      	ldrh	r2, [r4, #50]	; 0x32 80348ac:	4630      	mov	r0, r6 80348ae:	f7fc fc53 	bl	8031158 <snmp_asn1_enc_length>  ofs += m_trap->thl.tslenlen; 80348b2:	f894 3028 	ldrb.w	r3, [r4, #40]	; 0x28  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.tslen, m_trap->ts); 80348b6:	8e62      	ldrh	r2, [r4, #50]	; 0x32  ofs += m_trap->thl.strplen;  snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS));  ofs += 1;  snmp_asn1_enc_length(p, ofs, m_trap->thl.tslen);  ofs += m_trap->thl.tslenlen; 80348b8:	18ed      	adds	r5, r5, r3 80348ba:	b2ad      	uxth	r5, r5  snmp_asn1_enc_u32t(p, ofs, m_trap->thl.tslen, m_trap->ts); 80348bc:	4629      	mov	r1, r5 80348be:	69a3      	ldr	r3, [r4, #24] 80348c0:	4630      	mov	r0, r6 80348c2:	f7fc fc91 	bl	80311e8 <snmp_asn1_enc_u32t>  ofs += m_trap->thl.tslen; 80348c6:	8e63      	ldrh	r3, [r4, #50]	; 0x32 80348c8:	18ea      	adds	r2, r5, r3      {        u16_t ofs;        /* pass 1, encode packet ino the pbuf(s) */        ofs = snmp_trap_header_enc(&trap_msg, p);        snmp_varbind_list_enc(&trap_msg.outvb, p, ofs); 80348ca:	4631      	mov	r1, r6 80348cc:	e00a      	b.n	80348e4 <snmp_send_trap+0x360> 80348ce:	bf00      	nop 80348d0:	20011200 	.word	0x20011200 80348d4:	200111e8 	.word	0x200111e8 80348d8:	20011204 	.word	0x20011204 80348dc:	08041cd8 	.word	0x08041cd8 80348e0:	08041cdc 	.word	0x08041cdc 80348e4:	b292      	uxth	r2, r2 80348e6:	f104 001c 	add.w	r0, r4, #28 80348ea:	f7ff fcb1 	bl	8034250 <snmp_varbind_list_enc>        snmp_inc_snmpouttraps(); 80348ee:	f7fe f853 	bl	8032998 <snmp_inc_snmpouttraps>        snmp_inc_snmpoutpkts(); 80348f2:	f7fd ffa9 	bl	8032848 <snmp_inc_snmpoutpkts>        /** send to the TRAP destination */        udp_sendto(trap_msg.pcb, p, &trap_msg.dip, SNMP_TRAP_PORT); 80348f6:	4622      	mov	r2, r4 80348f8:	4631      	mov	r1, r6 80348fa:	f852 0b04 	ldr.w	r0, [r2], #4 80348fe:	23a2      	movs	r3, #162	; 0xa2 8034900:	f7fb fdb9 	bl	8030476 <udp_sendto>        pbuf_free(p); 8034904:	4630      	mov	r0, r6 8034906:	f7f9 f8b5 	bl	802da74 <pbuf_free>      {        return ERR_MEM;      }    }  }  return ERR_OK; 803490a:	2000      	movs	r0, #0 803490c:	e000      	b.n	8034910 <snmp_send_trap+0x38c>        pbuf_free(p);      }      else      {        return ERR_MEM; 803490e:	20ff      	movs	r0, #255	; 0xff      }    }  }  return ERR_OK;} 8034910:	b240      	sxtb	r0, r0 8034912:	b005      	add	sp, #20 8034914:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}08034918 <snmp_authfail_trap>:  snmp_send_trap(SNMP_GENTRAP_COLDSTART, NULL, 0);}voidsnmp_authfail_trap(void){ 8034918:	b507      	push	{r0, r1, r2, lr}  u8_t enable;  snmp_get_snmpenableauthentraps(&enable); 803491a:	f10d 0007 	add.w	r0, sp, #7 803491e:	f7fe f849 	bl	80329b4 <snmp_get_snmpenableauthentraps>  if (enable == 1) 8034922:	f89d 3007 	ldrb.w	r3, [sp, #7] 8034926:	2b01      	cmp	r3, #1 8034928:	d109      	bne.n	803493e <snmp_authfail_trap+0x26>  {    trap_msg.outvb.head = NULL; 803492a:	2100      	movs	r1, #0 803492c:	4b04      	ldr	r3, [pc, #16]	; (8034940 <snmp_authfail_trap+0x28>)    trap_msg.outvb.tail = NULL;    trap_msg.outvb.count = 0;    snmp_send_trap(SNMP_GENTRAP_AUTHFAIL, NULL, 0); 803492e:	2004      	movs	r0, #4 8034930:	460a      	mov	r2, r1{  u8_t enable;  snmp_get_snmpenableauthentraps(&enable);  if (enable == 1)  {    trap_msg.outvb.head = NULL; 8034932:	61d9      	str	r1, [r3, #28]    trap_msg.outvb.tail = NULL; 8034934:	6219      	str	r1, [r3, #32]    trap_msg.outvb.count = 0; 8034936:	f883 1024 	strb.w	r1, [r3, #36]	; 0x24    snmp_send_trap(SNMP_GENTRAP_AUTHFAIL, NULL, 0); 803493a:	f7ff fe23 	bl	8034584 <snmp_send_trap>  }} 803493e:	bd0e      	pop	{r1, r2, r3, pc} 8034940:	200111e8 	.word	0x200111e808034944 <etharp_send_ip>: * @params dst the destination MAC address to be copied into the ethernet header * @return ERR_OK if the packet was sent, any other err_t on failure */static err_tetharp_send_ip(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst){ 8034944:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  struct eth_hdr *ethhdr = (struct eth_hdr *)p->payload; 8034946:	684c      	ldr	r4, [r1, #4] * @params dst the destination MAC address to be copied into the ethernet header * @return ERR_OK if the packet was sent, any other err_t on failure */static err_tetharp_send_ip(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst){ 8034948:	4606      	mov	r6, r0 803494a:	460d      	mov	r5, r1 803494c:	4617      	mov	r7, r2  struct eth_hdr *ethhdr = (struct eth_hdr *)p->payload;  LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!",              (netif->hwaddr_len == ETHARP_HWADDR_LEN));  ETHADDR32_COPY(ðhdr->dest, dst); 803494e:	4619      	mov	r1, r3 8034950:	2206      	movs	r2, #6 8034952:	4620      	mov	r0, r4 8034954:	f7ec fffa 	bl	802194c <memcpy>  ETHADDR16_COPY(ðhdr->src, src); 8034958:	4639      	mov	r1, r7 803495a:	1da0      	adds	r0, r4, #6 803495c:	2206      	movs	r2, #6 803495e:	f7ec fff5 	bl	802194c <memcpy>  ethhdr->type = PP_HTONS(ETHTYPE_IP); 8034962:	2308      	movs	r3, #8 8034964:	7323      	strb	r3, [r4, #12] 8034966:	2300      	movs	r3, #0 8034968:	7363      	strb	r3, [r4, #13]  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_send_ip: sending packet %p\n", (void *)p));  /* send the packet */  return netif->linkoutput(netif, p); 803496a:	69b3      	ldr	r3, [r6, #24] 803496c:	4630      	mov	r0, r6 803496e:	4629      	mov	r1, r5 8034970:	4798      	blx	r3} 8034972:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}08034974 <etharp_free_entry>:#endif /* ARP_QUEUEING *//** Clean up ARP table entries */static voidetharp_free_entry(int i){ 8034974:	b570      	push	{r4, r5, r6, lr}  /* remove from SNMP ARP index tree */  snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); 8034976:	4d0b      	ldr	r5, [pc, #44]	; (80349a4 <etharp_free_entry+0x30>) 8034978:	2414      	movs	r4, #20 803497a:	4344      	muls	r4, r0 803497c:	1929      	adds	r1, r5, r4#endif /* ARP_QUEUEING *//** Clean up ARP table entries */static voidetharp_free_entry(int i){ 803497e:	4606      	mov	r6, r0  /* remove from SNMP ARP index tree */  snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); 8034980:	3104      	adds	r1, #4 8034982:	6848      	ldr	r0, [r1, #4] 8034984:	f7fd fc54 	bl	8032230 <snmp_delete_arpidx_tree>  /* and empty packet queue */  if (arp_table[i].q != NULL) { 8034988:	5928      	ldr	r0, [r5, r4] 803498a:	b118      	cbz	r0, 8034994 <etharp_free_entry+0x20>    /* remove all queued packets */    LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_free_entry: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q)));    free_etharp_q(arp_table[i].q); 803498c:	f7f9 f872 	bl	802da74 <pbuf_free>    arp_table[i].q = NULL; 8034990:	2300      	movs	r3, #0 8034992:	512b      	str	r3, [r5, r4]  }  /* recycle entry for re-use */  arp_table[i].state = ETHARP_STATE_EMPTY; 8034994:	2314      	movs	r3, #20 8034996:	fb03 5506 	mla	r5, r3, r6, r5 803499a:	2300      	movs	r3, #0 803499c:	74ab      	strb	r3, [r5, #18] 803499e:	3510      	adds	r5, #16 80349a0:	bd70      	pop	{r4, r5, r6, pc} 80349a2:	bf00      	nop 80349a4:	2000e4b0 	.word	0x2000e4b0080349a8 <etharp_find_entry>: * @return The ARP entry index that matched or is created, ERR_MEM if no * entry is found or could be recycled. */static s8_tetharp_find_entry(ip_addr_t *ipaddr, u8_t flags){ 80349a8:	e92d 4ff7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, sl, fp, lr}  s8_t empty = ARP_TABLE_SIZE;  u8_t i = 0, age_pending = 0, age_stable = 0;  /* oldest entry with packets on queue */  s8_t old_queue = ARP_TABLE_SIZE;  /* its age */  u8_t age_queue = 0; 80349ac:	2500      	movs	r5, #0{  s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE;  s8_t empty = ARP_TABLE_SIZE;  u8_t i = 0, age_pending = 0, age_stable = 0;  /* oldest entry with packets on queue */  s8_t old_queue = ARP_TABLE_SIZE; 80349ae:	240a      	movs	r4, #10 80349b0:	4a35      	ldr	r2, [pc, #212]	; (8034a88 <etharp_find_entry+0xe0>) * @return The ARP entry index that matched or is created, ERR_MEM if no * entry is found or could be recycled. */static s8_tetharp_find_entry(ip_addr_t *ipaddr, u8_t flags){ 80349b2:	9101      	str	r1, [sp, #4] 80349b4:	4606      	mov	r6, r0  s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE;  s8_t empty = ARP_TABLE_SIZE;  u8_t i = 0, age_pending = 0, age_stable = 0; 80349b6:	46a8      	mov	r8, r5 80349b8:	46aa      	mov	sl, r5   * 4) remember the oldest pending entry with queued packets (if any)   * 5) search for a matching IP entry, either pending or stable   *    until 5 matches, or all entries are searched for.   */  for (i = 0; i < ARP_TABLE_SIZE; ++i) { 80349ba:	462b      	mov	r3, r5 */static s8_tetharp_find_entry(ip_addr_t *ipaddr, u8_t flags){  s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE;  s8_t empty = ARP_TABLE_SIZE; 80349bc:	4627      	mov	r7, r4 * entry is found or could be recycled. */static s8_tetharp_find_entry(ip_addr_t *ipaddr, u8_t flags){  s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE; 80349be:	46a4      	mov	ip, r4 80349c0:	46a3      	mov	fp, r4   */  for (i = 0; i < ARP_TABLE_SIZE; ++i) {    u8_t state = arp_table[i].state;    /* no empty entry found yet and now we do find one? */    if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) { 80349c2:	2f0a      	cmp	r7, #10   * 5) search for a matching IP entry, either pending or stable   *    until 5 matches, or all entries are searched for.   */  for (i = 0; i < ARP_TABLE_SIZE; ++i) {    u8_t state = arp_table[i].state; 80349c4:	f892 9012 	ldrb.w	r9, [r2, #18]    /* no empty entry found yet and now we do find one? */    if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) { 80349c8:	d104      	bne.n	80349d4 <etharp_find_entry+0x2c> 80349ca:	f1b9 0f00 	cmp.w	r9, #0 80349ce:	d104      	bne.n	80349da <etharp_find_entry+0x32>      LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_find_entry: found empty entry %"U16_F"\n", (u16_t)i));      /* remember first empty entry */      empty = i; 80349d0:	b2df      	uxtb	r7, r3 80349d2:	e023      	b.n	8034a1c <etharp_find_entry+0x74>    } else if (state != ETHARP_STATE_EMPTY) { 80349d4:	f1b9 0f00 	cmp.w	r9, #0 80349d8:	d020      	beq.n	8034a1c <etharp_find_entry+0x74>      LWIP_ASSERT("state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE",        state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE);      /* if given, does IP address match IP address in ARP entry? */      if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) { 80349da:	b12e      	cbz	r6, 80349e8 <etharp_find_entry+0x40> 80349dc:	6830      	ldr	r0, [r6, #0] 80349de:	6851      	ldr	r1, [r2, #4] 80349e0:	4288      	cmp	r0, r1 80349e2:	d101      	bne.n	80349e8 <etharp_find_entry+0x40>        LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: found matching entry %"U16_F"\n", (u16_t)i));        /* found exact IP address match, simply bail out */        return i; 80349e4:	4618      	mov	r0, r3 80349e6:	e04b      	b.n	8034a80 <etharp_find_entry+0xd8>      }      /* pending entry? */      if (state == ETHARP_STATE_PENDING) { 80349e8:	f1b9 0f01 	cmp.w	r9, #1 80349ec:	d10e      	bne.n	8034a0c <etharp_find_entry+0x64>        /* pending with queued packets? */        if (arp_table[i].q != NULL) { 80349ee:	6810      	ldr	r0, [r2, #0]          if (arp_table[i].ctime >= age_queue) { 80349f0:	f892 9013 	ldrb.w	r9, [r2, #19]        return i;      }      /* pending entry? */      if (state == ETHARP_STATE_PENDING) {        /* pending with queued packets? */        if (arp_table[i].q != NULL) { 80349f4:	b120      	cbz	r0, 8034a00 <etharp_find_entry+0x58>          if (arp_table[i].ctime >= age_queue) { 80349f6:	45a9      	cmp	r9, r5 80349f8:	d310      	bcc.n	8034a1c <etharp_find_entry+0x74>            old_queue = i; 80349fa:	b2dc      	uxtb	r4, r3 80349fc:	464d      	mov	r5, r9 80349fe:	e00d      	b.n	8034a1c <etharp_find_entry+0x74>            age_queue = arp_table[i].ctime;          }        } else        /* pending without queued packets? */        {          if (arp_table[i].ctime >= age_pending) { 8034a00:	45d1      	cmp	r9, sl 8034a02:	d30b      	bcc.n	8034a1c <etharp_find_entry+0x74>            old_pending = i; 8034a04:	fa5f fb83 	uxtb.w	fp, r3 8034a08:	46ca      	mov	sl, r9 8034a0a:	e007      	b.n	8034a1c <etharp_find_entry+0x74>            age_pending = arp_table[i].ctime;          }        }      /* stable entry? */      } else if (state >= ETHARP_STATE_STABLE) { 8034a0c:	d906      	bls.n	8034a1c <etharp_find_entry+0x74>        /* don't record old_stable for static entries since they never expire */        if (state < ETHARP_STATE_STATIC)#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */        {          /* remember entry with oldest stable entry in oldest, its age in maxtime */          if (arp_table[i].ctime >= age_stable) { 8034a0e:	f892 9013 	ldrb.w	r9, [r2, #19] 8034a12:	45c1      	cmp	r9, r8            old_stable = i; 8034a14:	bf24      	itt	cs 8034a16:	fa5f fc83 	uxtbcs.w	ip, r3 8034a1a:	46c8      	movcs	r8, r9   * 4) remember the oldest pending entry with queued packets (if any)   * 5) search for a matching IP entry, either pending or stable   *    until 5 matches, or all entries are searched for.   */  for (i = 0; i < ARP_TABLE_SIZE; ++i) { 8034a1c:	3301      	adds	r3, #1 8034a1e:	b2db      	uxtb	r3, r3 8034a20:	3214      	adds	r2, #20 8034a22:	2b0a      	cmp	r3, #10 8034a24:	d1cd      	bne.n	80349c2 <etharp_find_entry+0x1a>    }  }  /* { we have no match } => try to create a new entry */     /* don't create new entry, only search? */  if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) || 8034a26:	9a01      	ldr	r2, [sp, #4] 8034a28:	f002 0302 	and.w	r3, r2, #2 8034a2c:	b2db      	uxtb	r3, r3 8034a2e:	bb33      	cbnz	r3, 8034a7e <etharp_find_entry+0xd6> 8034a30:	2f0a      	cmp	r7, #10 8034a32:	d102      	bne.n	8034a3a <etharp_find_entry+0x92>      /* or no empty entry found and not allowed to recycle? */      ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) { 8034a34:	07d3      	lsls	r3, r2, #31 8034a36:	d402      	bmi.n	8034a3e <etharp_find_entry+0x96> 8034a38:	e021      	b.n	8034a7e <etharp_find_entry+0xd6>   * { ETHARP_FLAG_TRY_HARD is set at this point }   */   /* 1) empty entry available? */  if (empty < ARP_TABLE_SIZE) {    i = empty; 8034a3a:	b2fc      	uxtb	r4, r7 8034a3c:	e011      	b.n	8034a62 <etharp_find_entry+0xba>    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %"U16_F"\n", (u16_t)i));  } else {    /* 2) found recyclable stable entry? */    if (old_stable < ARP_TABLE_SIZE) { 8034a3e:	f1bc 0f0a 	cmp.w	ip, #10 8034a42:	d002      	beq.n	8034a4a <etharp_find_entry+0xa2>      /* recycle oldest stable*/      i = old_stable; 8034a44:	fa5f f48c 	uxtb.w	r4, ip 8034a48:	e008      	b.n	8034a5c <etharp_find_entry+0xb4>      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i));      /* no queued packets should exist on stable entries */      LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL);    /* 3) found recyclable pending entry without queued packets? */    } else if (old_pending < ARP_TABLE_SIZE) { 8034a4a:	f1bb 0f0a 	cmp.w	fp, #10 8034a4e:	d002      	beq.n	8034a56 <etharp_find_entry+0xae>      /* recycle oldest pending */      i = old_pending; 8034a50:	fa5f f48b 	uxtb.w	r4, fp 8034a54:	e002      	b.n	8034a5c <etharp_find_entry+0xb4>      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %"U16_F" (without queue)\n", (u16_t)i));    /* 4) found recyclable pending entry with queued packets? */    } else if (old_queue < ARP_TABLE_SIZE) { 8034a56:	2c0a      	cmp	r4, #10 8034a58:	d011      	beq.n	8034a7e <etharp_find_entry+0xd6>      /* recycle oldest pending (queued packets are free in etharp_free_entry) */      i = old_queue; 8034a5a:	b2e4      	uxtb	r4, r4      return (s8_t)ERR_MEM;    }    /* { empty or recyclable entry found } */    LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE);    etharp_free_entry(i); 8034a5c:	4620      	mov	r0, r4 8034a5e:	f7ff ff89 	bl	8034974 <etharp_free_entry> 8034a62:	4b09      	ldr	r3, [pc, #36]	; (8034a88 <etharp_find_entry+0xe0>)  LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE);  LWIP_ASSERT("arp_table[i].state == ETHARP_STATE_EMPTY",    arp_table[i].state == ETHARP_STATE_EMPTY);  /* IP address given? */  if (ipaddr != NULL) { 8034a64:	b126      	cbz	r6, 8034a70 <etharp_find_entry+0xc8>    /* set IP address */    ip_addr_copy(arp_table[i].ipaddr, *ipaddr); 8034a66:	2214      	movs	r2, #20 8034a68:	6831      	ldr	r1, [r6, #0] 8034a6a:	fb02 3204 	mla	r2, r2, r4, r3 8034a6e:	6051      	str	r1, [r2, #4]  }  arp_table[i].ctime = 0; 8034a70:	2214      	movs	r2, #20 8034a72:	fb02 3304 	mla	r3, r2, r4, r3 8034a76:	2200      	movs	r2, #0 8034a78:	74da      	strb	r2, [r3, #19]  return (err_t)i; 8034a7a:	4620      	mov	r0, r4 8034a7c:	e000      	b.n	8034a80 <etharp_find_entry+0xd8>  /* don't create new entry, only search? */  if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) ||      /* or no empty entry found and not allowed to recycle? */      ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) {    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty entry found and not allowed to recycle\n"));    return (s8_t)ERR_MEM; 8034a7e:	20ff      	movs	r0, #255	; 0xff    /* set IP address */    ip_addr_copy(arp_table[i].ipaddr, *ipaddr);  }  arp_table[i].ctime = 0;  return (err_t)i;} 8034a80:	b240      	sxtb	r0, r0 8034a82:	e8bd 8ffe 	ldmia.w	sp!, {r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} 8034a86:	bf00      	nop 8034a88:	2000e4b0 	.word	0x2000e4b008034a8c <etharp_tmr>: * This function should be called every ETHARP_TMR_INTERVAL milliseconds (5 seconds), * in order to expire entries in the ARP table. */voidetharp_tmr(void){ 8034a8c:	b570      	push	{r4, r5, r6, lr} 8034a8e:	4c0d      	ldr	r4, [pc, #52]	; (8034ac4 <etharp_tmr+0x38>) 8034a90:	2500      	movs	r5, #0        etharp_free_entry(i);      }      else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING) {        /* Reset state to stable, so that the next transmitted packet will           re-send an ARP request. */        arp_table[i].state = ETHARP_STATE_STABLE; 8034a92:	2602      	movs	r6, #2  LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n"));  /* remove expired entries from the ARP table */  for (i = 0; i < ARP_TABLE_SIZE; ++i) {    u8_t state = arp_table[i].state;    if (state != ETHARP_STATE_EMPTY 8034a94:	7ca3      	ldrb	r3, [r4, #18] 8034a96:	b183      	cbz	r3, 8034aba <etharp_tmr+0x2e>#if ETHARP_SUPPORT_STATIC_ENTRIES      && (state != ETHARP_STATE_STATIC)#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */      ) {      arp_table[i].ctime++; 8034a98:	7ce2      	ldrb	r2, [r4, #19] 8034a9a:	3201      	adds	r2, #1 8034a9c:	b2d2      	uxtb	r2, r2      if ((arp_table[i].ctime >= ARP_MAXAGE) || 8034a9e:	2aef      	cmp	r2, #239	; 0xef    if (state != ETHARP_STATE_EMPTY#if ETHARP_SUPPORT_STATIC_ENTRIES      && (state != ETHARP_STATE_STATIC)#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */      ) {      arp_table[i].ctime++; 8034aa0:	74e2      	strb	r2, [r4, #19]      if ((arp_table[i].ctime >= ARP_MAXAGE) || 8034aa2:	d803      	bhi.n	8034aac <etharp_tmr+0x20> 8034aa4:	2b01      	cmp	r3, #1 8034aa6:	d105      	bne.n	8034ab4 <etharp_tmr+0x28>          ((arp_table[i].state == ETHARP_STATE_PENDING)  && 8034aa8:	2a01      	cmp	r2, #1 8034aaa:	d906      	bls.n	8034aba <etharp_tmr+0x2e>           (arp_table[i].ctime >= ARP_MAXPENDING))) {        /* pending or stable entry has become old! */        LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %"U16_F".\n",             arp_table[i].state >= ETHARP_STATE_STABLE ? "stable" : "pending", (u16_t)i));        /* clean up entries that have just been expired */        etharp_free_entry(i); 8034aac:	4628      	mov	r0, r5 8034aae:	f7ff ff61 	bl	8034974 <etharp_free_entry> 8034ab2:	e002      	b.n	8034aba <etharp_tmr+0x2e>      }      else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING) { 8034ab4:	2b03      	cmp	r3, #3        /* Reset state to stable, so that the next transmitted packet will           re-send an ARP request. */        arp_table[i].state = ETHARP_STATE_STABLE; 8034ab6:	bf08      	it	eq 8034ab8:	74a6      	strbeq	r6, [r4, #18] 8034aba:	3501      	adds	r5, #1 8034abc:	3414      	adds	r4, #20{  u8_t i;  LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n"));  /* remove expired entries from the ARP table */  for (i = 0; i < ARP_TABLE_SIZE; ++i) { 8034abe:	2d0a      	cmp	r5, #10 8034ac0:	d1e8      	bne.n	8034a94 <etharp_tmr+0x8>        /* resend an ARP query here? */      }#endif /* ARP_QUEUEING */    }  }} 8034ac2:	bd70      	pop	{r4, r5, r6, pc} 8034ac4:	2000e4b0 	.word	0x2000e4b008034ac8 <etharp_cleanup_netif>: * Remove all ARP table entries of the specified netif. * * @param netif points to a network interface */void etharp_cleanup_netif(struct netif *netif){ 8034ac8:	b570      	push	{r4, r5, r6, lr} 8034aca:	4d08      	ldr	r5, [pc, #32]	; (8034aec <etharp_cleanup_netif+0x24>) 8034acc:	4606      	mov	r6, r0 8034ace:	2400      	movs	r4, #0  u8_t i;  for (i = 0; i < ARP_TABLE_SIZE; ++i) {    u8_t state = arp_table[i].state;    if ((state != ETHARP_STATE_EMPTY) && (arp_table[i].netif == netif)) { 8034ad0:	7cab      	ldrb	r3, [r5, #18] 8034ad2:	b12b      	cbz	r3, 8034ae0 <etharp_cleanup_netif+0x18> 8034ad4:	68ab      	ldr	r3, [r5, #8] 8034ad6:	42b3      	cmp	r3, r6 8034ad8:	d102      	bne.n	8034ae0 <etharp_cleanup_netif+0x18>      etharp_free_entry(i); 8034ada:	4620      	mov	r0, r4 8034adc:	f7ff ff4a 	bl	8034974 <etharp_free_entry> 8034ae0:	3401      	adds	r4, #1 8034ae2:	3514      	adds	r5, #20 */void etharp_cleanup_netif(struct netif *netif){  u8_t i;  for (i = 0; i < ARP_TABLE_SIZE; ++i) { 8034ae4:	2c0a      	cmp	r4, #10 8034ae6:	d1f3      	bne.n	8034ad0 <etharp_cleanup_netif+0x8>    u8_t state = arp_table[i].state;    if ((state != ETHARP_STATE_EMPTY) && (arp_table[i].netif == netif)) {      etharp_free_entry(i);    }  }} 8034ae8:	bd70      	pop	{r4, r5, r6, pc} 8034aea:	bf00      	nop 8034aec:	2000e4b0 	.word	0x2000e4b008034af0 <etharp_find_addr>: * @return table index if found, -1 otherwise */s8_tetharp_find_addr(struct netif *netif, ip_addr_t *ipaddr,         struct eth_addr **eth_ret, ip_addr_t **ip_ret){ 8034af0:	b5f8      	push	{r3, r4, r5, r6, r7, lr}  LWIP_ASSERT("eth_ret != NULL && ip_ret != NULL",    eth_ret != NULL && ip_ret != NULL);  LWIP_UNUSED_ARG(netif);  i = etharp_find_entry(ipaddr, ETHARP_FLAG_FIND_ONLY); 8034af2:	4608      	mov	r0, r1 8034af4:	2102      	movs	r1, #2 * @return table index if found, -1 otherwise */s8_tetharp_find_addr(struct netif *netif, ip_addr_t *ipaddr,         struct eth_addr **eth_ret, ip_addr_t **ip_ret){ 8034af6:	4616      	mov	r6, r2 8034af8:	461f      	mov	r7, r3  LWIP_ASSERT("eth_ret != NULL && ip_ret != NULL",    eth_ret != NULL && ip_ret != NULL);  LWIP_UNUSED_ARG(netif);  i = etharp_find_entry(ipaddr, ETHARP_FLAG_FIND_ONLY); 8034afa:	f7ff ff55 	bl	80349a8 <etharp_find_entry>  if((i >= 0) && (arp_table[i].state >= ETHARP_STATE_STABLE)) { 8034afe:	2800      	cmp	r0, #0 8034b00:	db0c      	blt.n	8034b1c <etharp_find_addr+0x2c> 8034b02:	2414      	movs	r4, #20 8034b04:	4d07      	ldr	r5, [pc, #28]	; (8034b24 <etharp_find_addr+0x34>) 8034b06:	4344      	muls	r4, r0 8034b08:	1929      	adds	r1, r5, r4 8034b0a:	7c8b      	ldrb	r3, [r1, #18] 8034b0c:	2b01      	cmp	r3, #1 8034b0e:	d905      	bls.n	8034b1c <etharp_find_addr+0x2c>      *eth_ret = &arp_table[i].ethaddr; 8034b10:	460c      	mov	r4, r1 8034b12:	340c      	adds	r4, #12      *ip_ret = &arp_table[i].ipaddr; 8034b14:	3104      	adds	r1, #4  LWIP_UNUSED_ARG(netif);  i = etharp_find_entry(ipaddr, ETHARP_FLAG_FIND_ONLY);  if((i >= 0) && (arp_table[i].state >= ETHARP_STATE_STABLE)) {      *eth_ret = &arp_table[i].ethaddr; 8034b16:	6034      	str	r4, [r6, #0]      *ip_ret = &arp_table[i].ipaddr; 8034b18:	6039      	str	r1, [r7, #0]      return i; 8034b1a:	e000      	b.n	8034b1e <etharp_find_addr+0x2e>  }  return -1; 8034b1c:	20ff      	movs	r0, #255	; 0xff} 8034b1e:	b240      	sxtb	r0, r0 8034b20:	bdf8      	pop	{r3, r4, r5, r6, r7, pc} 8034b22:	bf00      	nop 8034b24:	2000e4b0 	.word	0x2000e4b008034b28 <etharp_request>: *         ERR_MEM if the ARP packet couldn't be allocated *         any other err_t on failure */err_tetharp_request(struct netif *netif, ip_addr_t *ipaddr){ 8034b28:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}#endif /* LWIP_AUTOIP */  LWIP_ASSERT("netif != NULL", netif != NULL);  /* allocate a pbuf for the outgoing ARP request packet */  p = pbuf_alloc(PBUF_RAW, SIZEOF_ETHARP_PACKET, PBUF_RAM); 8034b2c:	2200      	movs	r2, #0 *         ERR_MEM if the ARP packet couldn't be allocated *         any other err_t on failure */err_tetharp_request(struct netif *netif, ip_addr_t *ipaddr){ 8034b2e:	4606      	mov	r6, r0 8034b30:	4688      	mov	r8, r1  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n"));  return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast,                    (struct eth_addr *)netif->hwaddr, &netif->ip_addr, ðzero, 8034b32:	f100 0727 	add.w	r7, r0, #39	; 0x27 8034b36:	f100 0904 	add.w	r9, r0, #4#endif /* LWIP_AUTOIP */  LWIP_ASSERT("netif != NULL", netif != NULL);  /* allocate a pbuf for the outgoing ARP request packet */  p = pbuf_alloc(PBUF_RAW, SIZEOF_ETHARP_PACKET, PBUF_RAM); 8034b3a:	212a      	movs	r1, #42	; 0x2a 8034b3c:	2003      	movs	r0, #3 8034b3e:	f7f8 ffe6 	bl	802db0e <pbuf_alloc>  /* could allocate a pbuf for an ARP request? */  if (p == NULL) { 8034b42:	4605      	mov	r5, r0 8034b44:	2800      	cmp	r0, #0 8034b46:	d03c      	beq.n	8034bc2 <etharp_request+0x9a>    return ERR_MEM;  }  LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr",              (p->len >= SIZEOF_ETHARP_PACKET));  ethhdr = (struct eth_hdr *)p->payload; 8034b48:	6844      	ldr	r4, [r0, #4]  hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR);  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n"));  hdr->opcode = htons(opcode); 8034b4a:	2001      	movs	r0, #1 8034b4c:	f7f7 fe54 	bl	802c7f8 <lwip_htons>   * 'sender IP address' MUST be sent using link-layer broadcast instead of   * link-layer unicast. (See RFC3927 Section 2.5, last paragraph) */  ethdst_hwaddr = ip_addr_islinklocal(ipsrc_addr) ? (u8_t*)(ethbroadcast.addr) : ethdst_addr->addr;#endif /* LWIP_AUTOIP */  /* Write the ARP MAC-Addresses */  ETHADDR16_COPY(&hdr->shwaddr, hwsrc_addr); 8034b50:	4639      	mov	r1, r7              (p->len >= SIZEOF_ETHARP_PACKET));  ethhdr = (struct eth_hdr *)p->payload;  hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR);  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n"));  hdr->opcode = htons(opcode); 8034b52:	82a0      	strh	r0, [r4, #20]   * 'sender IP address' MUST be sent using link-layer broadcast instead of   * link-layer unicast. (See RFC3927 Section 2.5, last paragraph) */  ethdst_hwaddr = ip_addr_islinklocal(ipsrc_addr) ? (u8_t*)(ethbroadcast.addr) : ethdst_addr->addr;#endif /* LWIP_AUTOIP */  /* Write the ARP MAC-Addresses */  ETHADDR16_COPY(&hdr->shwaddr, hwsrc_addr); 8034b54:	2206      	movs	r2, #6 8034b56:	f104 0016 	add.w	r0, r4, #22 8034b5a:	f7ec fef7 	bl	802194c <memcpy>  ETHADDR16_COPY(&hdr->dhwaddr, hwdst_addr); 8034b5e:	2206      	movs	r2, #6 8034b60:	f104 0020 	add.w	r0, r4, #32 8034b64:	4919      	ldr	r1, [pc, #100]	; (8034bcc <etharp_request+0xa4>) 8034b66:	f7ec fef1 	bl	802194c <memcpy>  /* Write the Ethernet MAC-Addresses */#if LWIP_AUTOIP  ETHADDR16_COPY(ðhdr->dest, ethdst_hwaddr);#else  /* LWIP_AUTOIP */  ETHADDR16_COPY(ðhdr->dest, ethdst_addr); 8034b6a:	2206      	movs	r2, #6 8034b6c:	4620      	mov	r0, r4 8034b6e:	4918      	ldr	r1, [pc, #96]	; (8034bd0 <etharp_request+0xa8>) 8034b70:	f7ec feec 	bl	802194c <memcpy>#endif /* LWIP_AUTOIP */  ETHADDR16_COPY(ðhdr->src, ethsrc_addr); 8034b74:	1da0      	adds	r0, r4, #6 8034b76:	4639      	mov	r1, r7 8034b78:	2206      	movs	r2, #6 8034b7a:	f7ec fee7 	bl	802194c <memcpy>  /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without   * structure packing. */   IPADDR2_COPY(&hdr->sipaddr, ipsrc_addr); 8034b7e:	4649      	mov	r1, r9 8034b80:	2204      	movs	r2, #4 8034b82:	f104 001c 	add.w	r0, r4, #28 8034b86:	f7ec fee1 	bl	802194c <memcpy>  IPADDR2_COPY(&hdr->dipaddr, ipdst_addr); 8034b8a:	4641      	mov	r1, r8 8034b8c:	2204      	movs	r2, #4 8034b8e:	f104 0026 	add.w	r0, r4, #38	; 0x26 8034b92:	f7ec fedb 	bl	802194c <memcpy>  hdr->hwtype = PP_HTONS(HWTYPE_ETHERNET); 8034b96:	2300      	movs	r3, #0 8034b98:	2201      	movs	r2, #1 8034b9a:	73a3      	strb	r3, [r4, #14] 8034b9c:	73e2      	strb	r2, [r4, #15]  hdr->proto = PP_HTONS(ETHTYPE_IP); 8034b9e:	7463      	strb	r3, [r4, #17] 8034ba0:	2208      	movs	r2, #8  /* set hwlen and protolen */  hdr->hwlen = ETHARP_HWADDR_LEN; 8034ba2:	2306      	movs	r3, #6  hdr->protolen = sizeof(ip_addr_t); 8034ba4:	2104      	movs	r1, #4   * structure packing. */   IPADDR2_COPY(&hdr->sipaddr, ipsrc_addr);  IPADDR2_COPY(&hdr->dipaddr, ipdst_addr);  hdr->hwtype = PP_HTONS(HWTYPE_ETHERNET);  hdr->proto = PP_HTONS(ETHTYPE_IP); 8034ba6:	7422      	strb	r2, [r4, #16]  /* set hwlen and protolen */  hdr->hwlen = ETHARP_HWADDR_LEN;  hdr->protolen = sizeof(ip_addr_t); 8034ba8:	74e1      	strb	r1, [r4, #19]  ethhdr->type = PP_HTONS(ETHTYPE_ARP); 8034baa:	7322      	strb	r2, [r4, #12]  IPADDR2_COPY(&hdr->dipaddr, ipdst_addr);  hdr->hwtype = PP_HTONS(HWTYPE_ETHERNET);  hdr->proto = PP_HTONS(ETHTYPE_IP);  /* set hwlen and protolen */  hdr->hwlen = ETHARP_HWADDR_LEN; 8034bac:	74a3      	strb	r3, [r4, #18]  hdr->protolen = sizeof(ip_addr_t);  ethhdr->type = PP_HTONS(ETHTYPE_ARP); 8034bae:	7363      	strb	r3, [r4, #13]  /* send ARP query */  result = netif->linkoutput(netif, p); 8034bb0:	69b3      	ldr	r3, [r6, #24] 8034bb2:	4630      	mov	r0, r6 8034bb4:	4629      	mov	r1, r5 8034bb6:	4798      	blx	r3 8034bb8:	4604      	mov	r4, r0  ETHARP_STATS_INC(etharp.xmit);  /* free ARP query packet */  pbuf_free(p); 8034bba:	4628      	mov	r0, r5 8034bbc:	f7f8 ff5a 	bl	802da74 <pbuf_free> 8034bc0:	e000      	b.n	8034bc4 <etharp_request+0x9c>  /* could allocate a pbuf for an ARP request? */  if (p == NULL) {    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,      ("etharp_raw: could not allocate pbuf for ARP request.\n"));    ETHARP_STATS_INC(etharp.memerr);    return ERR_MEM; 8034bc2:	24ff      	movs	r4, #255	; 0xff{  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n"));  return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast,                    (struct eth_addr *)netif->hwaddr, &netif->ip_addr, ðzero,                    ipaddr, ARP_REQUEST);} 8034bc4:	b260      	sxtb	r0, r4 8034bc6:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 8034bca:	bf00      	nop 8034bcc:	08041ce9 	.word	0x08041ce9 8034bd0:	08041ce3 	.word	0x08041ce308034bd4 <etharp_query>: * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. * */err_tetharp_query(struct netif *netif, ip_addr_t *ipaddr, struct pbuf *q){ 8034bd4:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr} 8034bd8:	4607      	mov	r7, r0 8034bda:	460e      	mov	r6, r1  struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr;  err_t result = ERR_MEM;  s8_t i; /* ARP entry index */  /* non-unicast address? */  if (ip_addr_isbroadcast(ipaddr, netif) || 8034bdc:	6808      	ldr	r0, [r1, #0] 8034bde:	4639      	mov	r1, r7 * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. * */err_tetharp_query(struct netif *netif, ip_addr_t *ipaddr, struct pbuf *q){ 8034be0:	4615      	mov	r5, r2  struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr;  err_t result = ERR_MEM;  s8_t i; /* ARP entry index */  /* non-unicast address? */  if (ip_addr_isbroadcast(ipaddr, netif) || 8034be2:	f7fb fde1 	bl	80307a8 <ip4_addr_isbroadcast> 8034be6:	2800      	cmp	r0, #0 8034be8:	d157      	bne.n	8034c9a <etharp_query+0xc6>      ip_addr_ismulticast(ipaddr) || 8034bea:	6833      	ldr	r3, [r6, #0] 8034bec:	f003 02f0 	and.w	r2, r3, #240	; 0xf0  struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr;  err_t result = ERR_MEM;  s8_t i; /* ARP entry index */  /* non-unicast address? */  if (ip_addr_isbroadcast(ipaddr, netif) || 8034bf0:	2ae0      	cmp	r2, #224	; 0xe0 8034bf2:	d052      	beq.n	8034c9a <etharp_query+0xc6>      ip_addr_ismulticast(ipaddr) ||      ip_addr_isany(ipaddr)) { 8034bf4:	2b00      	cmp	r3, #0 8034bf6:	d050      	beq.n	8034c9a <etharp_query+0xc6>    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n"));    return ERR_ARG;  }  /* find entry in ARP cache, ask to create entry if queueing packet */  i = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD); 8034bf8:	2101      	movs	r1, #1 8034bfa:	4630      	mov	r0, r6 8034bfc:	f7ff fed4 	bl	80349a8 <etharp_find_entry>  /* could not find or create entry? */  if (i < 0) { 8034c00:	1e04      	subs	r4, r0, #0 8034c02:	db4f      	blt.n	8034ca4 <etharp_query+0xd0>    }    return (err_t)i;  }  /* mark a fresh entry as pending (we just sent a request) */  if (arp_table[i].state == ETHARP_STATE_EMPTY) { 8034c04:	4931      	ldr	r1, [pc, #196]	; (8034ccc <etharp_query+0xf8>) 8034c06:	2214      	movs	r2, #20 8034c08:	fb02 1304 	mla	r3, r2, r4, r1 8034c0c:	3310      	adds	r3, #16 8034c0e:	7898      	ldrb	r0, [r3, #2] 8034c10:	b908      	cbnz	r0, 8034c16 <etharp_query+0x42>    arp_table[i].state = ETHARP_STATE_PENDING; 8034c12:	2001      	movs	r0, #1 8034c14:	7098      	strb	r0, [r3, #2]  LWIP_ASSERT("arp_table[i].state == PENDING or STABLE",  ((arp_table[i].state == ETHARP_STATE_PENDING) ||   (arp_table[i].state >= ETHARP_STATE_STABLE)));  /* do we have a pending entry? or an implicit query request? */  if ((arp_table[i].state == ETHARP_STATE_PENDING) || (q == NULL)) { 8034c16:	fb02 1204 	mla	r2, r2, r4, r1 8034c1a:	7c93      	ldrb	r3, [r2, #18] 8034c1c:	2b01      	cmp	r3, #1 8034c1e:	d000      	beq.n	8034c22 <etharp_query+0x4e> 8034c20:	b935      	cbnz	r5, 8034c30 <etharp_query+0x5c>    /* try to resolve it; send out ARP request */    result = etharp_request(netif, ipaddr); 8034c22:	4638      	mov	r0, r7 8034c24:	4631      	mov	r1, r6 8034c26:	f7ff ff7f 	bl	8034b28 <etharp_request> 8034c2a:	4602      	mov	r2, r0      /* ARP request couldn't be sent */      /* We don't re-send arp request in etharp_tmr, but we still queue packets,         since this failure could be temporary, and the next packet calling         etharp_query again could lead to sending the queued packets. */    }    if (q == NULL) { 8034c2c:	b90d      	cbnz	r5, 8034c32 <etharp_query+0x5e> 8034c2e:	e036      	b.n	8034c9e <etharp_query+0xca> */err_tetharp_query(struct netif *netif, ip_addr_t *ipaddr, struct pbuf *q){  struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr;  err_t result = ERR_MEM; 8034c30:	22ff      	movs	r2, #255	; 0xff  }  /* packet given? */  LWIP_ASSERT("q != NULL", q != NULL);  /* stable entry? */  if (arp_table[i].state >= ETHARP_STATE_STABLE) { 8034c32:	2314      	movs	r3, #20 8034c34:	4925      	ldr	r1, [pc, #148]	; (8034ccc <etharp_query+0xf8>) 8034c36:	4363      	muls	r3, r4 8034c38:	18c8      	adds	r0, r1, r3 8034c3a:	7c80      	ldrb	r0, [r0, #18] 8034c3c:	2801      	cmp	r0, #1 8034c3e:	d90b      	bls.n	8034c58 <etharp_query+0x84>    /* we have a valid IP->Ethernet address mapping */    ETHARP_SET_HINT(netif, i); 8034c40:	4a23      	ldr	r2, [pc, #140]	; (8034cd0 <etharp_query+0xfc>)    /* send the packet */    result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr)); 8034c42:	18cb      	adds	r3, r1, r3  /* packet given? */  LWIP_ASSERT("q != NULL", q != NULL);  /* stable entry? */  if (arp_table[i].state >= ETHARP_STATE_STABLE) {    /* we have a valid IP->Ethernet address mapping */    ETHARP_SET_HINT(netif, i); 8034c44:	7014      	strb	r4, [r2, #0]    /* send the packet */    result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr)); 8034c46:	4638      	mov	r0, r7 8034c48:	4629      	mov	r1, r5 8034c4a:	f107 0227 	add.w	r2, r7, #39	; 0x27 8034c4e:	330c      	adds	r3, #12      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q));      result = ERR_MEM;    }  }  return result;} 8034c50:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}  /* stable entry? */  if (arp_table[i].state >= ETHARP_STATE_STABLE) {    /* we have a valid IP->Ethernet address mapping */    ETHARP_SET_HINT(netif, i);    /* send the packet */    result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr)); 8034c54:	f7ff be76 	b.w	8034944 <etharp_send_ip>  /* pending entry? (either just created or already pending */  } else if (arp_table[i].state == ETHARP_STATE_PENDING) { 8034c58:	d123      	bne.n	8034ca2 <etharp_query+0xce> 8034c5a:	462b      	mov	r3, r5 8034c5c:	e003      	b.n	8034c66 <etharp_query+0x92>     * to copy the whole queue into a new PBUF_RAM (see bug #11400)      * PBUF_ROMs can be left as they are, since ROM must not get changed. */    p = q;    while (p) {      LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0));      if(p->type != PBUF_ROM) { 8034c5e:	7b1a      	ldrb	r2, [r3, #12] 8034c60:	2a01      	cmp	r2, #1 8034c62:	d128      	bne.n	8034cb6 <etharp_query+0xe2>        copy_needed = 1;        break;      }      p = p->next; 8034c64:	681b      	ldr	r3, [r3, #0]    int copy_needed = 0;    /* IF q includes a PBUF_REF, PBUF_POOL or PBUF_RAM, we have no choice but     * to copy the whole queue into a new PBUF_RAM (see bug #11400)      * PBUF_ROMs can be left as they are, since ROM must not get changed. */    p = q;    while (p) { 8034c66:	2b00      	cmp	r3, #0 8034c68:	d1f9      	bne.n	8034c5e <etharp_query+0x8a> 8034c6a:	e01e      	b.n	8034caa <etharp_query+0xd6>    }    if(copy_needed) {      /* copy the whole packet into new pbufs */      p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM);      if(p != NULL) {        if (pbuf_copy(p, q) != ERR_OK) { 8034c6c:	4629      	mov	r1, r5 8034c6e:	f7f9 f805 	bl	802dc7c <pbuf_copy> 8034c72:	b120      	cbz	r0, 8034c7e <etharp_query+0xaa>          pbuf_free(p); 8034c74:	4630      	mov	r0, r6 8034c76:	f7f8 fefd 	bl	802da74 <pbuf_free> 8034c7a:	e024      	b.n	8034cc6 <etharp_query+0xf2>      /* referencing the old pbuf is enough */      p = q;      pbuf_ref(p);    }    /* packet could be taken over? */    if (p != NULL) { 8034c7c:	462e      	mov	r6, r5        LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q));        result = ERR_MEM;      }#else /* ARP_QUEUEING */      /* always queue one packet per ARP request only, freeing a previously queued packet */      if (arp_table[i].q != NULL) { 8034c7e:	2314      	movs	r3, #20 8034c80:	4a12      	ldr	r2, [pc, #72]	; (8034ccc <etharp_query+0xf8>) 8034c82:	fb03 f104 	mul.w	r1, r3, r4 8034c86:	4615      	mov	r5, r2 8034c88:	5850      	ldr	r0, [r2, r1] 8034c8a:	461f      	mov	r7, r3 8034c8c:	b108      	cbz	r0, 8034c92 <etharp_query+0xbe>        LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: dropped previously queued packet %p for ARP entry %"S16_F"\n", (void *)q, (s16_t)i));        pbuf_free(arp_table[i].q); 8034c8e:	f7f8 fef1 	bl	802da74 <pbuf_free>      }      arp_table[i].q = p; 8034c92:	437c      	muls	r4, r7 8034c94:	512e      	str	r6, [r5, r4]      result = ERR_OK; 8034c96:	2400      	movs	r4, #0 8034c98:	e004      	b.n	8034ca4 <etharp_query+0xd0>  /* non-unicast address? */  if (ip_addr_isbroadcast(ipaddr, netif) ||      ip_addr_ismulticast(ipaddr) ||      ip_addr_isany(ipaddr)) {    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n"));    return ERR_ARG; 8034c9a:	24f2      	movs	r4, #242	; 0xf2 8034c9c:	e002      	b.n	8034ca4 <etharp_query+0xd0>      /* We don't re-send arp request in etharp_tmr, but we still queue packets,         since this failure could be temporary, and the next packet calling         etharp_query again could lead to sending the queued packets. */    }    if (q == NULL) {      return result; 8034c9e:	4604      	mov	r4, r0 8034ca0:	e000      	b.n	8034ca4 <etharp_query+0xd0>    /* we have a valid IP->Ethernet address mapping */    ETHARP_SET_HINT(netif, i);    /* send the packet */    result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr));  /* pending entry? (either just created or already pending */  } else if (arp_table[i].state == ETHARP_STATE_PENDING) { 8034ca2:	4614      	mov	r4, r2 8034ca4:	b260      	sxtb	r0, r4 8034ca6:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}        }      }    } else {      /* referencing the old pbuf is enough */      p = q;      pbuf_ref(p); 8034caa:	4628      	mov	r0, r5 8034cac:	f7f8 ffbf 	bl	802dc2e <pbuf_ref>    }    /* packet could be taken over? */    if (p != NULL) { 8034cb0:	2d00      	cmp	r5, #0 8034cb2:	d1e3      	bne.n	8034c7c <etharp_query+0xa8> 8034cb4:	e007      	b.n	8034cc6 <etharp_query+0xf2>      }      p = p->next;    }    if(copy_needed) {      /* copy the whole packet into new pbufs */      p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); 8034cb6:	2003      	movs	r0, #3 8034cb8:	8919      	ldrh	r1, [r3, #8] 8034cba:	2200      	movs	r2, #0 8034cbc:	f7f8 ff27 	bl	802db0e <pbuf_alloc>      if(p != NULL) { 8034cc0:	4606      	mov	r6, r0 8034cc2:	2800      	cmp	r0, #0 8034cc4:	d1d2      	bne.n	8034c6c <etharp_query+0x98>      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"S16_F"\n", (void *)q, (s16_t)i));#endif /* ARP_QUEUEING */    } else {      ETHARP_STATS_INC(etharp.memerr);      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q));      result = ERR_MEM; 8034cc6:	24ff      	movs	r4, #255	; 0xff 8034cc8:	e7ec      	b.n	8034ca4 <etharp_query+0xd0> 8034cca:	bf00      	nop 8034ccc:	2000e4b0 	.word	0x2000e4b0 8034cd0:	2000e4ac 	.word	0x2000e4ac08034cd4 <etharp_output_to_arp_index>:/** Just a small helper function that sends a pbuf to an ethernet address * in the arp_table specified by the index 'arp_idx'. */static err_tetharp_output_to_arp_index(struct netif *netif, struct pbuf *q, u8_t arp_idx){ 8034cd4:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",              arp_table[arp_idx].state >= ETHARP_STATE_STABLE);  /* if arp table entry is about to expire: re-request it,     but only if its state is ETHARP_STATE_STABLE to prevent flooding the     network with ARP requests if this address is used frequently. */  if ((arp_table[arp_idx].state == ETHARP_STATE_STABLE) &&  8034cd8:	4b10      	ldr	r3, [pc, #64]	; (8034d1c <etharp_output_to_arp_index+0x48>)/** Just a small helper function that sends a pbuf to an ethernet address * in the arp_table specified by the index 'arp_idx'. */static err_tetharp_output_to_arp_index(struct netif *netif, struct pbuf *q, u8_t arp_idx){ 8034cda:	4615      	mov	r5, r2  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",              arp_table[arp_idx].state >= ETHARP_STATE_STABLE);  /* if arp table entry is about to expire: re-request it,     but only if its state is ETHARP_STATE_STABLE to prevent flooding the     network with ARP requests if this address is used frequently. */  if ((arp_table[arp_idx].state == ETHARP_STATE_STABLE) &&  8034cdc:	2214      	movs	r2, #20/** Just a small helper function that sends a pbuf to an ethernet address * in the arp_table specified by the index 'arp_idx'. */static err_tetharp_output_to_arp_index(struct netif *netif, struct pbuf *q, u8_t arp_idx){ 8034cde:	460e      	mov	r6, r1  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",              arp_table[arp_idx].state >= ETHARP_STATE_STABLE);  /* if arp table entry is about to expire: re-request it,     but only if its state is ETHARP_STATE_STABLE to prevent flooding the     network with ARP requests if this address is used frequently. */  if ((arp_table[arp_idx].state == ETHARP_STATE_STABLE) &&  8034ce0:	fb02 3105 	mla	r1, r2, r5, r3/** Just a small helper function that sends a pbuf to an ethernet address * in the arp_table specified by the index 'arp_idx'. */static err_tetharp_output_to_arp_index(struct netif *netif, struct pbuf *q, u8_t arp_idx){ 8034ce4:	4607      	mov	r7, r0  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",              arp_table[arp_idx].state >= ETHARP_STATE_STABLE);  /* if arp table entry is about to expire: re-request it,     but only if its state is ETHARP_STATE_STABLE to prevent flooding the     network with ARP requests if this address is used frequently. */  if ((arp_table[arp_idx].state == ETHARP_STATE_STABLE) &&  8034ce6:	7c8a      	ldrb	r2, [r1, #18] 8034ce8:	2a02      	cmp	r2, #2 8034cea:	f101 0410 	add.w	r4, r1, #16 8034cee:	d108      	bne.n	8034d02 <etharp_output_to_arp_index+0x2e> 8034cf0:	7cca      	ldrb	r2, [r1, #19] 8034cf2:	2ae3      	cmp	r2, #227	; 0xe3 8034cf4:	d905      	bls.n	8034d02 <etharp_output_to_arp_index+0x2e>      (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED)) {    if (etharp_request(netif, &arp_table[arp_idx].ipaddr) == ERR_OK) { 8034cf6:	3104      	adds	r1, #4 8034cf8:	f7ff ff16 	bl	8034b28 <etharp_request> 8034cfc:	b908      	cbnz	r0, 8034d02 <etharp_output_to_arp_index+0x2e>      arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING; 8034cfe:	2303      	movs	r3, #3 8034d00:	70a3      	strb	r3, [r4, #2]    }  }    return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), 8034d02:	4b06      	ldr	r3, [pc, #24]	; (8034d1c <etharp_output_to_arp_index+0x48>) 8034d04:	2214      	movs	r2, #20 8034d06:	fb02 3305 	mla	r3, r2, r5, r3 8034d0a:	4638      	mov	r0, r7 8034d0c:	4631      	mov	r1, r6 8034d0e:	f107 0227 	add.w	r2, r7, #39	; 0x27 8034d12:	330c      	adds	r3, #12    &arp_table[arp_idx].ethaddr);} 8034d14:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}    if (etharp_request(netif, &arp_table[arp_idx].ipaddr) == ERR_OK) {      arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING;    }  }    return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), 8034d18:	f7ff be14 	b.w	8034944 <etharp_send_ip> 8034d1c:	2000e4b0 	.word	0x2000e4b008034d20 <etharp_output>: * - ERR_RTE No route to destination (no gateway to external networks), * or the return type of either etharp_query() or etharp_send_ip(). */err_tetharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr){ 8034d20:	b5f7      	push	{r0, r1, r2, r4, r5, r6, r7, lr} 8034d22:	4604      	mov	r4, r0 8034d24:	460e      	mov	r6, r1  LWIP_ASSERT("netif != NULL", netif != NULL);  LWIP_ASSERT("q != NULL", q != NULL);  LWIP_ASSERT("ipaddr != NULL", ipaddr != NULL);  /* make room for Ethernet header - should not fail */  if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) { 8034d26:	4608      	mov	r0, r1 8034d28:	210e      	movs	r1, #14 * - ERR_RTE No route to destination (no gateway to external networks), * or the return type of either etharp_query() or etharp_send_ip(). */err_tetharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr){ 8034d2a:	4615      	mov	r5, r2  LWIP_ASSERT("netif != NULL", netif != NULL);  LWIP_ASSERT("q != NULL", q != NULL);  LWIP_ASSERT("ipaddr != NULL", ipaddr != NULL);  /* make room for Ethernet header - should not fail */  if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) { 8034d2c:	f7f8 fe77 	bl	802da1e <pbuf_header> 8034d30:	2800      	cmp	r0, #0 8034d32:	d163      	bne.n	8034dfc <etharp_output+0xdc>  /* Determine on destination hardware address. Broadcasts and multicasts   * are special, other IP addresses are looked up in the ARP table. */  /* broadcast destination IP address? */  if (ip_addr_isbroadcast(ipaddr, netif)) { 8034d34:	6828      	ldr	r0, [r5, #0] 8034d36:	4621      	mov	r1, r4 8034d38:	f7fb fd36 	bl	80307a8 <ip4_addr_isbroadcast> 8034d3c:	2800      	cmp	r0, #0 8034d3e:	d155      	bne.n	8034dec <etharp_output+0xcc>    /* broadcast on Ethernet also */    dest = (struct eth_addr *)ðbroadcast;  /* multicast destination IP address? */  } else if (ip_addr_ismulticast(ipaddr)) { 8034d40:	682b      	ldr	r3, [r5, #0] 8034d42:	f003 02f0 	and.w	r2, r3, #240	; 0xf0 8034d46:	2ae0      	cmp	r2, #224	; 0xe0 8034d48:	d114      	bne.n	8034d74 <etharp_output+0x54>    /* Hash IP multicast address to MAC address.*/    mcastaddr.addr[0] = LL_MULTICAST_ADDR_0; 8034d4a:	2301      	movs	r3, #1 8034d4c:	f88d 3000 	strb.w	r3, [sp]    mcastaddr.addr[1] = LL_MULTICAST_ADDR_1;    mcastaddr.addr[2] = LL_MULTICAST_ADDR_2; 8034d50:	235e      	movs	r3, #94	; 0x5e 8034d52:	f88d 3002 	strb.w	r3, [sp, #2]    mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; 8034d56:	786b      	ldrb	r3, [r5, #1]    dest = (struct eth_addr *)ðbroadcast;  /* multicast destination IP address? */  } else if (ip_addr_ismulticast(ipaddr)) {    /* Hash IP multicast address to MAC address.*/    mcastaddr.addr[0] = LL_MULTICAST_ADDR_0;    mcastaddr.addr[1] = LL_MULTICAST_ADDR_1; 8034d58:	f88d 0001 	strb.w	r0, [sp, #1]    mcastaddr.addr[2] = LL_MULTICAST_ADDR_2;    mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; 8034d5c:	f003 037f 	and.w	r3, r3, #127	; 0x7f 8034d60:	f88d 3003 	strb.w	r3, [sp, #3]    mcastaddr.addr[4] = ip4_addr3(ipaddr); 8034d64:	78ab      	ldrb	r3, [r5, #2] 8034d66:	f88d 3004 	strb.w	r3, [sp, #4]    mcastaddr.addr[5] = ip4_addr4(ipaddr); 8034d6a:	78eb      	ldrb	r3, [r5, #3] 8034d6c:	f88d 3005 	strb.w	r3, [sp, #5]    /* destination Ethernet address is multicast */    dest = &mcastaddr; 8034d70:	466b      	mov	r3, sp 8034d72:	e03c      	b.n	8034dee <etharp_output+0xce>  /* unicast destination IP address? */  } else {    s8_t i;    /* outside local network? if so, this can neither be a global broadcast nor       a subnet broadcast. */    if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask)) && 8034d74:	6862      	ldr	r2, [r4, #4] 8034d76:	ea83 0102 	eor.w	r1, r3, r2 8034d7a:	68a2      	ldr	r2, [r4, #8] 8034d7c:	4211      	tst	r1, r2 8034d7e:	d009      	beq.n	8034d94 <etharp_output+0x74>        !ip_addr_islinklocal(ipaddr)) { 8034d80:	b29b      	uxth	r3, r3  /* unicast destination IP address? */  } else {    s8_t i;    /* outside local network? if so, this can neither be a global broadcast nor       a subnet broadcast. */    if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask)) && 8034d82:	f64f 62a9 	movw	r2, #65193	; 0xfea9 8034d86:	4293      	cmp	r3, r2 8034d88:	d004      	beq.n	8034d94 <etharp_output+0x74>         router for forwarding". */      if (!ip_addr_islinklocal(&iphdr->src))#endif /* LWIP_AUTOIP */      {        /* interface has default gateway? */        if (!ip_addr_isany(&netif->gw)) { 8034d8a:	68e3      	ldr	r3, [r4, #12] 8034d8c:	f104 010c 	add.w	r1, r4, #12 8034d90:	b90b      	cbnz	r3, 8034d96 <etharp_output+0x76> 8034d92:	e035      	b.n	8034e00 <etharp_output+0xe0>  /* unicast destination IP address? */  } else {    s8_t i;    /* outside local network? if so, this can neither be a global broadcast nor       a subnet broadcast. */    if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask)) && 8034d94:	4629      	mov	r1, r5    if (netif->addr_hint != NULL) {      /* per-pcb cached entry was given */      u8_t etharp_cached_entry = *(netif->addr_hint);      if (etharp_cached_entry < ARP_TABLE_SIZE) {#endif /* LWIP_NETIF_HWADDRHINT */        if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && 8034d96:	4b1c      	ldr	r3, [pc, #112]	; (8034e08 <etharp_output+0xe8>) 8034d98:	781a      	ldrb	r2, [r3, #0] 8034d9a:	4b1c      	ldr	r3, [pc, #112]	; (8034e0c <etharp_output+0xec>) 8034d9c:	2014      	movs	r0, #20 8034d9e:	fb00 3302 	mla	r3, r0, r2, r3 8034da2:	7c98      	ldrb	r0, [r3, #18] 8034da4:	2801      	cmp	r0, #1 8034da6:	d904      	bls.n	8034db2 <etharp_output+0x92> 8034da8:	6808      	ldr	r0, [r1, #0] 8034daa:	685b      	ldr	r3, [r3, #4] 8034dac:	4298      	cmp	r0, r3 8034dae:	d100      	bne.n	8034db2 <etharp_output+0x92> 8034db0:	e00d      	b.n	8034dce <etharp_output+0xae> 8034db2:	2300      	movs	r3, #0 * @return * - ERR_RTE No route to destination (no gateway to external networks), * or the return type of either etharp_query() or etharp_send_ip(). */err_tetharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr) 8034db4:	4f15      	ldr	r7, [pc, #84]	; (8034e0c <etharp_output+0xec>)    if (netif->addr_hint != NULL) {      /* per-pcb cached entry was given */      u8_t etharp_cached_entry = *(netif->addr_hint);      if (etharp_cached_entry < ARP_TABLE_SIZE) {#endif /* LWIP_NETIF_HWADDRHINT */        if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && 8034db6:	461a      	mov	r2, r3 * @return * - ERR_RTE No route to destination (no gateway to external networks), * or the return type of either etharp_query() or etharp_send_ip(). */err_tetharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr) 8034db8:	18f8      	adds	r0, r7, r3#endif /* LWIP_NETIF_HWADDRHINT */    /* find stable entry: do this here since this is a critical path for       throughput and etharp_find_entry() is kind of slow */    for (i = 0; i < ARP_TABLE_SIZE; i++) {      if ((arp_table[i].state >= ETHARP_STATE_STABLE) && 8034dba:	7c85      	ldrb	r5, [r0, #18] 8034dbc:	2d01      	cmp	r5, #1 8034dbe:	d90b      	bls.n	8034dd8 <etharp_output+0xb8> 8034dc0:	680d      	ldr	r5, [r1, #0] 8034dc2:	6840      	ldr	r0, [r0, #4] 8034dc4:	4285      	cmp	r5, r0 8034dc6:	d107      	bne.n	8034dd8 <etharp_output+0xb8>          (ip_addr_cmp(dst_addr, &arp_table[i].ipaddr))) {        /* found an existing, stable entry */        ETHARP_SET_HINT(netif, i); 8034dc8:	4b0f      	ldr	r3, [pc, #60]	; (8034e08 <etharp_output+0xe8>) 8034dca:	b2d2      	uxtb	r2, r2 8034dcc:	701a      	strb	r2, [r3, #0]        return etharp_output_to_arp_index(netif, q, i); 8034dce:	4620      	mov	r0, r4 8034dd0:	4631      	mov	r1, r6 8034dd2:	f7ff ff7f 	bl	8034cd4 <etharp_output_to_arp_index> 8034dd6:	e014      	b.n	8034e02 <etharp_output+0xe2> 8034dd8:	3314      	adds	r3, #20    }#endif /* LWIP_NETIF_HWADDRHINT */    /* find stable entry: do this here since this is a critical path for       throughput and etharp_find_entry() is kind of slow */    for (i = 0; i < ARP_TABLE_SIZE; i++) { 8034dda:	3201      	adds	r2, #1 8034ddc:	2bc8      	cmp	r3, #200	; 0xc8 8034dde:	b2d2      	uxtb	r2, r2 8034de0:	d1ea      	bne.n	8034db8 <etharp_output+0x98>        return etharp_output_to_arp_index(netif, q, i);      }    }    /* no stable entry found, use the (slower) query function:       queue on destination Ethernet address belonging to ipaddr */    return etharp_query(netif, dst_addr, q); 8034de2:	4620      	mov	r0, r4 8034de4:	4632      	mov	r2, r6 8034de6:	f7ff fef5 	bl	8034bd4 <etharp_query> 8034dea:	e00a      	b.n	8034e02 <etharp_output+0xe2>   * are special, other IP addresses are looked up in the ARP table. */  /* broadcast destination IP address? */  if (ip_addr_isbroadcast(ipaddr, netif)) {    /* broadcast on Ethernet also */    dest = (struct eth_addr *)ðbroadcast; 8034dec:	4b08      	ldr	r3, [pc, #32]	; (8034e10 <etharp_output+0xf0>)  }  /* continuation for multicast/broadcast destinations */  /* obtain source Ethernet address of the given interface */  /* send packet directly on the link */  return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest); 8034dee:	4620      	mov	r0, r4 8034df0:	4631      	mov	r1, r6 8034df2:	f104 0227 	add.w	r2, r4, #39	; 0x27 8034df6:	f7ff fda5 	bl	8034944 <etharp_send_ip> 8034dfa:	e002      	b.n	8034e02 <etharp_output+0xe2>  if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) {    /* bail out */    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,      ("etharp_output: could not allocate room for header.\n"));    LINK_STATS_INC(link.lenerr);    return ERR_BUF; 8034dfc:	20fe      	movs	r0, #254	; 0xfe 8034dfe:	e000      	b.n	8034e02 <etharp_output+0xe2>          /* send to hardware address of default gateway IP address */          dst_addr = &(netif->gw);        /* no default gateway available */        } else {          /* no route to destination error (default gateway missing) */          return ERR_RTE; 8034e00:	20fc      	movs	r0, #252	; 0xfc  /* continuation for multicast/broadcast destinations */  /* obtain source Ethernet address of the given interface */  /* send packet directly on the link */  return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest);} 8034e02:	b240      	sxtb	r0, r0 8034e04:	bdfe      	pop	{r1, r2, r3, r4, r5, r6, r7, pc} 8034e06:	bf00      	nop 8034e08:	2000e4ac 	.word	0x2000e4ac 8034e0c:	2000e4b0 	.word	0x2000e4b0 8034e10:	08041ce3 	.word	0x08041ce308034e14 <ethernet_input>: * @param p the recevied packet, p->payload pointing to the ethernet header * @param netif the network interface on which the packet was received */err_tethernet_input(struct pbuf *p, struct netif *netif){ 8034e14:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}  u16_t type;#if LWIP_ARP || ETHARP_SUPPORT_VLAN  s16_t ip_hdr_offset = SIZEOF_ETH_HDR;#endif /* LWIP_ARP || ETHARP_SUPPORT_VLAN */  if (p->len <= SIZEOF_ETH_HDR) { 8034e18:	8943      	ldrh	r3, [r0, #10] 8034e1a:	2b0e      	cmp	r3, #14 * @param p the recevied packet, p->payload pointing to the ethernet header * @param netif the network interface on which the packet was received */err_tethernet_input(struct pbuf *p, struct netif *netif){ 8034e1c:	b087      	sub	sp, #28 8034e1e:	4604      	mov	r4, r0 8034e20:	460d      	mov	r5, r1  u16_t type;#if LWIP_ARP || ETHARP_SUPPORT_VLAN  s16_t ip_hdr_offset = SIZEOF_ETH_HDR;#endif /* LWIP_ARP || ETHARP_SUPPORT_VLAN */  if (p->len <= SIZEOF_ETH_HDR) { 8034e22:	f240 80ed 	bls.w	8035000 <ethernet_input+0x1ec>    ETHARP_STATS_INC(etharp.drop);    goto free_and_return;  }  /* points to packet payload, which starts with an Ethernet header */  ethhdr = (struct eth_hdr *)p->payload; 8034e26:	6840      	ldr	r0, [r0, #4]#if LWIP_ARP_FILTER_NETIF  netif = LWIP_ARP_FILTER_NETIF_FN(p, netif, htons(type));#endif /* LWIP_ARP_FILTER_NETIF*/  if (ethhdr->dest.addr[0] & 1) { 8034e28:	7803      	ldrb	r3, [r0, #0]     (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5],     (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2],     (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5],     (unsigned)htons(ethhdr->type)));  type = ethhdr->type; 8034e2a:	8986      	ldrh	r6, [r0, #12]#if LWIP_ARP_FILTER_NETIF  netif = LWIP_ARP_FILTER_NETIF_FN(p, netif, htons(type));#endif /* LWIP_ARP_FILTER_NETIF*/  if (ethhdr->dest.addr[0] & 1) { 8034e2c:	07da      	lsls	r2, r3, #31 8034e2e:	d513      	bpl.n	8034e58 <ethernet_input+0x44>    /* this might be a multicast or broadcast packet */    if (ethhdr->dest.addr[0] == LL_MULTICAST_ADDR_0) { 8034e30:	2b01      	cmp	r3, #1 8034e32:	d108      	bne.n	8034e46 <ethernet_input+0x32>      if ((ethhdr->dest.addr[1] == LL_MULTICAST_ADDR_1) && 8034e34:	7843      	ldrb	r3, [r0, #1] 8034e36:	b97b      	cbnz	r3, 8034e58 <ethernet_input+0x44> 8034e38:	7883      	ldrb	r3, [r0, #2] 8034e3a:	2b5e      	cmp	r3, #94	; 0x5e 8034e3c:	d10c      	bne.n	8034e58 <ethernet_input+0x44>          (ethhdr->dest.addr[2] == LL_MULTICAST_ADDR_2)) {        /* mark the pbuf as link-layer multicast */        p->flags |= PBUF_FLAG_LLMCAST; 8034e3e:	7b63      	ldrb	r3, [r4, #13] 8034e40:	f043 0310 	orr.w	r3, r3, #16 8034e44:	e007      	b.n	8034e56 <ethernet_input+0x42>      }    } else if (eth_addr_cmp(ðhdr->dest, ðbroadcast)) { 8034e46:	4972      	ldr	r1, [pc, #456]	; (8035010 <ethernet_input+0x1fc>) 8034e48:	2206      	movs	r2, #6 8034e4a:	f7ec fd4d 	bl	80218e8 <memcmp> 8034e4e:	b918      	cbnz	r0, 8034e58 <ethernet_input+0x44>      /* mark the pbuf as link-layer broadcast */      p->flags |= PBUF_FLAG_LLBCAST; 8034e50:	7b63      	ldrb	r3, [r4, #13] 8034e52:	f043 0308 	orr.w	r3, r3, #8 8034e56:	7363      	strb	r3, [r4, #13]    }  }  switch (type) { 8034e58:	2e08      	cmp	r6, #8 8034e5a:	d004      	beq.n	8034e66 <ethernet_input+0x52> 8034e5c:	f5b6 6fc1 	cmp.w	r6, #1544	; 0x608 8034e60:	f040 80ce 	bne.w	8035000 <ethernet_input+0x1ec> 8034e64:	e014      	b.n	8034e90 <ethernet_input+0x7c>#if LWIP_ARP    /* IP packet? */    case PP_HTONS(ETHTYPE_IP):      if (!(netif->flags & NETIF_FLAG_ETHARP)) { 8034e66:	f895 302d 	ldrb.w	r3, [r5, #45]	; 0x2d 8034e6a:	f003 0320 	and.w	r3, r3, #32 8034e6e:	b2db      	uxtb	r3, r3 8034e70:	2b00      	cmp	r3, #0 8034e72:	f000 80c5 	beq.w	8035000 <ethernet_input+0x1ec>#if ETHARP_TRUST_IP_MAC      /* update ARP table */      etharp_ip_input(netif, p);#endif /* ETHARP_TRUST_IP_MAC */      /* skip Ethernet header */      if(pbuf_header(p, -ip_hdr_offset)) { 8034e76:	4620      	mov	r0, r4 8034e78:	f06f 010d 	mvn.w	r1, #13 8034e7c:	f7f8 fdcf 	bl	802da1e <pbuf_header> 8034e80:	2800      	cmp	r0, #0 8034e82:	f040 80bd 	bne.w	8035000 <ethernet_input+0x1ec>        LWIP_ASSERT("Can't move over header in packet", 0);        goto free_and_return;      } else {        /* pass to IP layer */        ip_input(p, netif); 8034e86:	4620      	mov	r0, r4 8034e88:	4629      	mov	r1, r5 8034e8a:	f7fb fda1 	bl	80309d0 <ip_input>      }      break; 8034e8e:	e0ba      	b.n	8035006 <ethernet_input+0x1f2>          case PP_HTONS(ETHTYPE_ARP):      if (!(netif->flags & NETIF_FLAG_ETHARP)) { 8034e90:	f895 302d 	ldrb.w	r3, [r5, #45]	; 0x2d 8034e94:	f003 0320 	and.w	r3, r3, #32 8034e98:	b2db      	uxtb	r3, r3 8034e9a:	2b00      	cmp	r3, #0 8034e9c:	f000 80b0 	beq.w	8035000 <ethernet_input+0x1ec>  LWIP_ERROR("netif != NULL", (netif != NULL), return;);  /* drop short ARP packets: we have to check for p->len instead of p->tot_len here     since a struct etharp_hdr is pointed to p->payload, so it musn't be chained! */  if (p->len < SIZEOF_ETHARP_PACKET) { 8034ea0:	8963      	ldrh	r3, [r4, #10] 8034ea2:	2b29      	cmp	r3, #41	; 0x29 8034ea4:	d800      	bhi.n	8034ea8 <ethernet_input+0x94> 8034ea6:	e0ab      	b.n	8035000 <ethernet_input+0x1ec>    ETHARP_STATS_INC(etharp.drop);    pbuf_free(p);    return;  }  ethhdr = (struct eth_hdr *)p->payload; 8034ea8:	6866      	ldr	r6, [r4, #4]    hdr = (struct etharp_hdr *)(((u8_t*)ethhdr) + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR);  }#endif /* ETHARP_SUPPORT_VLAN */  /* RFC 826 "Packet Reception": */  if ((hdr->hwtype != PP_HTONS(HWTYPE_ETHERNET)) || 8034eaa:	89f3      	ldrh	r3, [r6, #14] 8034eac:	f5b3 7f80 	cmp.w	r3, #256	; 0x100 8034eb0:	f040 80a6 	bne.w	8035000 <ethernet_input+0x1ec> 8034eb4:	7cb3      	ldrb	r3, [r6, #18] 8034eb6:	2b06      	cmp	r3, #6 8034eb8:	f040 80a2 	bne.w	8035000 <ethernet_input+0x1ec>      (hdr->hwlen != ETHARP_HWADDR_LEN) || 8034ebc:	7cf7      	ldrb	r7, [r6, #19] 8034ebe:	2f04      	cmp	r7, #4 8034ec0:	f040 809e 	bne.w	8035000 <ethernet_input+0x1ec>      (hdr->protolen != sizeof(ip_addr_t)) || 8034ec4:	8a33      	ldrh	r3, [r6, #16] 8034ec6:	2b08      	cmp	r3, #8 8034ec8:	f040 809a 	bne.w	8035000 <ethernet_input+0x1ec>  autoip_arp_reply(netif, hdr);#endif /* LWIP_AUTOIP */  /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without   * structure packing (not using structure copy which breaks strict-aliasing rules). */  IPADDR2_COPY(&sipaddr, &hdr->sipaddr); 8034ecc:	f106 0a1c 	add.w	sl, r6, #28 8034ed0:	4651      	mov	r1, sl 8034ed2:	463a      	mov	r2, r7 8034ed4:	a804      	add	r0, sp, #16 8034ed6:	f7ec fd39 	bl	802194c <memcpy>  IPADDR2_COPY(&dipaddr, &hdr->dipaddr); 8034eda:	f106 0226 	add.w	r2, r6, #38	; 0x26 8034ede:	9203      	str	r2, [sp, #12] 8034ee0:	4611      	mov	r1, r2 8034ee2:	a805      	add	r0, sp, #20 8034ee4:	463a      	mov	r2, r7 8034ee6:	f7ec fd31 	bl	802194c <memcpy>  /* this interface is not configured? */  if (ip_addr_isany(&netif->ip_addr)) { 8034eea:	686b      	ldr	r3, [r5, #4] 8034eec:	b12b      	cbz	r3, 8034efa <ethernet_input+0xe6>    for_us = 0;  } else {    /* ARP packet directed to us? */    for_us = (u8_t)ip_addr_cmp(&dipaddr, &(netif->ip_addr)); 8034eee:	9a05      	ldr	r2, [sp, #20] 8034ef0:	1ad1      	subs	r1, r2, r3 8034ef2:	424a      	negs	r2, r1 8034ef4:	414a      	adcs	r2, r1 8034ef6:	9201      	str	r2, [sp, #4] 8034ef8:	e000      	b.n	8034efc <ethernet_input+0xe8>  IPADDR2_COPY(&sipaddr, &hdr->sipaddr);  IPADDR2_COPY(&dipaddr, &hdr->dipaddr);  /* this interface is not configured? */  if (ip_addr_isany(&netif->ip_addr)) {    for_us = 0; 8034efa:	9301      	str	r3, [sp, #4]  /* ARP message directed to us?      -> add IP address in ARP cache; assume requester wants to talk to us,         can result in directly sending the queued packets for this host.     ARP message not directed to us?      ->  update the source IP address in the cache, if present */  etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), 8034efc:	9b01      	ldr	r3, [sp, #4]  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n",    ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr),    ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2],    ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5]));  /* non-unicast address? */  if (ip_addr_isany(ipaddr) || 8034efe:	9804      	ldr	r0, [sp, #16]  /* ARP message directed to us?      -> add IP address in ARP cache; assume requester wants to talk to us,         can result in directly sending the queued packets for this host.     ARP message not directed to us?      ->  update the source IP address in the cache, if present */  etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), 8034f00:	f106 0716 	add.w	r7, r6, #22 8034f04:	2b00      	cmp	r3, #0 8034f06:	bf0c      	ite	eq 8034f08:	f04f 0802 	moveq.w	r8, #2 8034f0c:	f04f 0801 	movne.w	r8, #1    case PP_HTONS(ETHTYPE_ARP):      if (!(netif->flags & NETIF_FLAG_ETHARP)) {        goto free_and_return;      }      /* pass p to ARP module */      etharp_arp_input(netif, (struct eth_addr*)(netif->hwaddr), p); 8034f10:	f105 0927 	add.w	r9, r5, #39	; 0x27  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n",    ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr),    ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2],    ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5]));  /* non-unicast address? */  if (ip_addr_isany(ipaddr) || 8034f14:	2800      	cmp	r0, #0 8034f16:	d03d      	beq.n	8034f94 <ethernet_input+0x180>      ip_addr_isbroadcast(ipaddr, netif) || 8034f18:	4629      	mov	r1, r5 8034f1a:	f7fb fc45 	bl	80307a8 <ip4_addr_isbroadcast>  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n",    ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr),    ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2],    ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5]));  /* non-unicast address? */  if (ip_addr_isany(ipaddr) || 8034f1e:	9002      	str	r0, [sp, #8] 8034f20:	2800      	cmp	r0, #0 8034f22:	d137      	bne.n	8034f94 <ethernet_input+0x180>      ip_addr_isbroadcast(ipaddr, netif) ||      ip_addr_ismulticast(ipaddr)) { 8034f24:	9a04      	ldr	r2, [sp, #16] 8034f26:	f002 02f0 	and.w	r2, r2, #240	; 0xf0    ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr),    ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2],    ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5]));  /* non-unicast address? */  if (ip_addr_isany(ipaddr) ||      ip_addr_isbroadcast(ipaddr, netif) || 8034f2a:	2ae0      	cmp	r2, #224	; 0xe0 8034f2c:	d032      	beq.n	8034f94 <ethernet_input+0x180>      ip_addr_ismulticast(ipaddr)) {    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: will not add non-unicast IP address to ARP cache\n"));    return ERR_ARG;  }  /* find or create ARP entry */  i = etharp_find_entry(ipaddr, flags); 8034f2e:	a804      	add	r0, sp, #16 8034f30:	4641      	mov	r1, r8 8034f32:	f7ff fd39 	bl	80349a8 <etharp_find_entry>  /* bail out if no entry could be found */  if (i < 0) { 8034f36:	2800      	cmp	r0, #0 8034f38:	db2c      	blt.n	8034f94 <ethernet_input+0x180>    arp_table[i].state = ETHARP_STATE_STATIC;  } else#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */  {    /* mark it stable */    arp_table[i].state = ETHARP_STATE_STABLE; 8034f3a:	4b36      	ldr	r3, [pc, #216]	; (8035014 <ethernet_input+0x200>) 8034f3c:	f04f 0814 	mov.w	r8, #20 8034f40:	fb08 f800 	mul.w	r8, r8, r0 8034f44:	eb03 0108 	add.w	r1, r3, r8 8034f48:	2202      	movs	r2, #2 8034f4a:	748a      	strb	r2, [r1, #18]  }  /* record network interface */  arp_table[i].netif = netif; 8034f4c:	608d      	str	r5, [r1, #8]    arp_table[i].state = ETHARP_STATE_STATIC;  } else#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */  {    /* mark it stable */    arp_table[i].state = ETHARP_STATE_STABLE; 8034f4e:	f101 0b10 	add.w	fp, r1, #16  }  /* record network interface */  arp_table[i].netif = netif;  /* insert in SNMP ARP index tree */  snmp_insert_arpidx_tree(netif, &arp_table[i].ipaddr); 8034f52:	4628      	mov	r0, r5 8034f54:	3104      	adds	r1, #4 8034f56:	9300      	str	r3, [sp, #0] 8034f58:	f7fd f908 	bl	803216c <snmp_insert_arpidx_tree>  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: updating stable entry %"S16_F"\n", (s16_t)i));  /* update address */  ETHADDR32_COPY(&arp_table[i].ethaddr, ethaddr); 8034f5c:	9b00      	ldr	r3, [sp, #0] 8034f5e:	eb03 0008 	add.w	r0, r3, r8 8034f62:	2206      	movs	r2, #6 8034f64:	300c      	adds	r0, #12 8034f66:	4639      	mov	r1, r7 8034f68:	f7ec fcf0 	bl	802194c <memcpy>  /* reset time stamp */  arp_table[i].ctime = 0; 8034f6c:	9a02      	ldr	r2, [sp, #8] 8034f6e:	f88b 2003 	strb.w	r2, [fp, #3]    /* get the packet pointer */    p = q->p;    /* now queue entry can be freed */    memp_free(MEMP_ARP_QUEUE, q);#else /* ARP_QUEUEING */  if (arp_table[i].q != NULL) { 8034f72:	9b00      	ldr	r3, [sp, #0] 8034f74:	f853 b008 	ldr.w	fp, [r3, r8] 8034f78:	f1bb 0f00 	cmp.w	fp, #0 8034f7c:	d00a      	beq.n	8034f94 <ethernet_input+0x180>    struct pbuf *p = arp_table[i].q;    arp_table[i].q = NULL; 8034f7e:	f843 2008 	str.w	r2, [r3, r8]#endif /* ARP_QUEUEING */    /* send the queued IP packet */    etharp_send_ip(netif, p, (struct eth_addr*)(netif->hwaddr), ethaddr); 8034f82:	4628      	mov	r0, r5 8034f84:	4659      	mov	r1, fp 8034f86:	464a      	mov	r2, r9 8034f88:	463b      	mov	r3, r7 8034f8a:	f7ff fcdb 	bl	8034944 <etharp_send_ip>    /* free the queued IP packet */    pbuf_free(p); 8034f8e:	4658      	mov	r0, fp 8034f90:	f7f8 fd70 	bl	802da74 <pbuf_free>      ->  update the source IP address in the cache, if present */  etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr),                   for_us ? ETHARP_FLAG_TRY_HARD : ETHARP_FLAG_FIND_ONLY);  /* now act on the message itself */  switch (hdr->opcode) { 8034f94:	8ab3      	ldrh	r3, [r6, #20] 8034f96:	f5b3 7f80 	cmp.w	r3, #256	; 0x100 8034f9a:	d003      	beq.n	8034fa4 <ethernet_input+0x190> 8034f9c:	f5b3 7f00 	cmp.w	r3, #512	; 0x200 8034fa0:	d12e      	bne.n	8035000 <ethernet_input+0x1ec> 8034fa2:	e029      	b.n	8034ff8 <ethernet_input+0x1e4>     * reply. In any case, we time-stamp any existing ARP entry,     * and possiby send out an IP packet that was queued on it. */    LWIP_DEBUGF (ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP request\n"));    /* ARP request for our address? */    if (for_us) { 8034fa4:	9b01      	ldr	r3, [sp, #4] 8034fa6:	b35b      	cbz	r3, 8035000 <ethernet_input+0x1ec>      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: replying to ARP request for our IP address\n"));      /* Re-use pbuf to send ARP reply.         Since we are re-using an existing pbuf, we can't call etharp_raw since         that would allocate a new pbuf. */      hdr->opcode = htons(ARP_REPLY); 8034fa8:	2002      	movs	r0, #2 8034faa:	f7f7 fc25 	bl	802c7f8 <lwip_htons> 8034fae:	82b0      	strh	r0, [r6, #20]      IPADDR2_COPY(&hdr->dipaddr, &hdr->sipaddr); 8034fb0:	4651      	mov	r1, sl 8034fb2:	2204      	movs	r2, #4 8034fb4:	9803      	ldr	r0, [sp, #12] 8034fb6:	f7ec fcc9 	bl	802194c <memcpy>      IPADDR2_COPY(&hdr->sipaddr, &netif->ip_addr); 8034fba:	1d29      	adds	r1, r5, #4 8034fbc:	2204      	movs	r2, #4 8034fbe:	4650      	mov	r0, sl 8034fc0:	f7ec fcc4 	bl	802194c <memcpy>       * 'sender IP address' MUST be sent using link-layer broadcast instead of       * link-layer unicast. (See RFC3927 Section 2.5, last paragraph) */      ethdst_hwaddr = ip_addr_islinklocal(&netif->ip_addr) ? (u8_t*)(ethbroadcast.addr) : hdr->shwaddr.addr;#endif /* LWIP_AUTOIP */      ETHADDR16_COPY(&hdr->dhwaddr, &hdr->shwaddr); 8034fc4:	4639      	mov	r1, r7 8034fc6:	2206      	movs	r2, #6 8034fc8:	f106 0020 	add.w	r0, r6, #32 8034fcc:	f7ec fcbe 	bl	802194c <memcpy>#if LWIP_AUTOIP      ETHADDR16_COPY(ðhdr->dest, ethdst_hwaddr);#else  /* LWIP_AUTOIP */      ETHADDR16_COPY(ðhdr->dest, &hdr->shwaddr); 8034fd0:	4639      	mov	r1, r7 8034fd2:	2206      	movs	r2, #6 8034fd4:	4630      	mov	r0, r6 8034fd6:	f7ec fcb9 	bl	802194c <memcpy>#endif /* LWIP_AUTOIP */      ETHADDR16_COPY(&hdr->shwaddr, ethaddr); 8034fda:	4649      	mov	r1, r9 8034fdc:	2206      	movs	r2, #6 8034fde:	4638      	mov	r0, r7 8034fe0:	f7ec fcb4 	bl	802194c <memcpy>      ETHADDR16_COPY(ðhdr->src, ethaddr); 8034fe4:	4649      	mov	r1, r9 8034fe6:	1db0      	adds	r0, r6, #6 8034fe8:	2206      	movs	r2, #6 8034fea:	f7ec fcaf 	bl	802194c <memcpy>      /* hwtype, hwaddr_len, proto, protolen and the type in the ethernet header         are already correct, we tested that before */      /* return ARP reply */      netif->linkoutput(netif, p); 8034fee:	69ab      	ldr	r3, [r5, #24] 8034ff0:	4628      	mov	r0, r5 8034ff2:	4621      	mov	r1, r4 8034ff4:	4798      	blx	r3 8034ff6:	e003      	b.n	8035000 <ethernet_input+0x1ec>#if (LWIP_DHCP && DHCP_DOES_ARP_CHECK)    /* DHCP wants to know about ARP replies from any host with an     * IP address also offered to us by the DHCP server. We do not     * want to take a duplicate IP address on a single network.     * @todo How should we handle redundant (fail-over) interfaces? */    dhcp_arp_reply(netif, &sipaddr); 8034ff8:	4628      	mov	r0, r5 8034ffa:	a904      	add	r1, sp, #16 8034ffc:	f7f8 f8d2 	bl	802d1a4 <dhcp_arp_reply>  /* This means the pbuf is freed or consumed,     so the caller doesn't have to free it again */  return ERR_OK;free_and_return:  pbuf_free(p); 8035000:	4620      	mov	r0, r4 8035002:	f7f8 fd37 	bl	802da74 <pbuf_free>  return ERR_OK;} 8035006:	2000      	movs	r0, #0 8035008:	b007      	add	sp, #28 803500a:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 803500e:	bf00      	nop 8035010:	08041ce3 	.word	0x08041ce3 8035014:	2000e4b0 	.word	0x2000e4b008035018 <arp_timer>:  return ERR_OK;}static void arp_timer(void *arg){ 8035018:	b508      	push	{r3, lr}  etharp_tmr(); 803501a:	f7ff fd37 	bl	8034a8c <etharp_tmr>  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); 803501e:	4904      	ldr	r1, [pc, #16]	; (8035030 <arp_timer+0x18>) 8035020:	f241 3088 	movw	r0, #5000	; 0x1388 8035024:	2200      	movs	r2, #0} 8035026:	e8bd 4008 	ldmia.w	sp!, {r3, lr}static void arp_timer(void *arg){  etharp_tmr();  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); 803502a:	f7fa bfa9 	b.w	802ff80 <sys_timeout> 803502e:	bf00      	nop 8035030:	08035019 	.word	0x0803501908035034 <ethernetif_input>:  }} */void ethernetif_input(void * pvParameters){ 8035034:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}  struct pbuf *p;  for( ;; )  {    if(xSemaphoreTake(s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE) 8035038:	f8df 80c4 	ldr.w	r8, [pc, #196]	; 8035100 <ethernetif_input+0xcc>  }} */void ethernetif_input(void * pvParameters){ 803503c:	b085      	sub	sp, #20  struct pbuf *p;  for( ;; )  {    if(xSemaphoreTake(s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE) 803503e:	2100      	movs	r1, #0 8035040:	2264      	movs	r2, #100	; 0x64 8035042:	f8d8 0000 	ldr.w	r0, [r8] 8035046:	460b      	mov	r3, r1 8035048:	f7f4 fb88 	bl	802975c <xQueueGenericReceive> 803504c:	2801      	cmp	r0, #1 803504e:	d1f6      	bne.n	803503e <ethernetif_input+0xa>    }  }    /* Release descriptors to DMA */  /* Check if received frame with multiple DMA buffer segments */  if (DMA_RX_FRAME_infos->Seg_Count > 1) 8035050:	f8df a0b0 	ldr.w	sl, [pc, #176]	; 8035104 <ethernetif_input+0xd0>  /* Clear Segment_Count */  DMA_RX_FRAME_infos->Seg_Count =0;      /* When Rx Buffer unavailable flag is set: clear it and resume reception */  if ((ETH->DMASR & ETH_DMASR_RBUS) != (u32)RESET)   8035054:	f8df 90b0 	ldr.w	r9, [pc, #176]	; 8035108 <ethernetif_input+0xd4>  __IO ETH_DMADESCTypeDef *DMARxNextDesc;    p = NULL;    /* Get received frame */  frame = ETH_Get_Received_Frame_interrupt(); 8035058:	a801      	add	r0, sp, #4 803505a:	f001 f95d 	bl	8036318 <ETH_Get_Received_Frame_interrupt> 803505e:	9e03      	ldr	r6, [sp, #12]    /* check that frame has no error */  if ((frame.descriptor->Status & ETH_DMARxDesc_ES) == (uint32_t)RESET) 8035060:	6837      	ldr	r7, [r6, #0] 8035062:	f417 4700 	ands.w	r7, r7, #32768	; 0x8000 8035066:	d001      	beq.n	803506c <ethernetif_input+0x38>  uint32_t l=0,i =0;  FrameTypeDef frame;  u8 *buffer;  __IO ETH_DMADESCTypeDef *DMARxNextDesc;    p = NULL; 8035068:	2400      	movs	r4, #0 803506a:	e016      	b.n	803509a <ethernetif_input+0x66>    /* Obtain the size of the packet and put it into the "len" variable. */    len = frame.length;    buffer = (u8 *)frame.buffer;    /* We allocate a pbuf chain of pbufs from the pool. */    p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL); 803506c:	2003      	movs	r0, #3 803506e:	f8bd 1004 	ldrh.w	r1, [sp, #4]  if ((frame.descriptor->Status & ETH_DMARxDesc_ES) == (uint32_t)RESET)  {        /* Obtain the size of the packet and put it into the "len" variable. */    len = frame.length;    buffer = (u8 *)frame.buffer; 8035072:	f8dd b008 	ldr.w	fp, [sp, #8]    /* We allocate a pbuf chain of pbufs from the pool. */    p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL); 8035076:	4602      	mov	r2, r0 8035078:	f7f8 fd49 	bl	802db0e <pbuf_alloc>     /* Copy received frame from ethernet driver buffer to stack buffer */    if (p != NULL) 803507c:	4604      	mov	r4, r0 803507e:	2800      	cmp	r0, #0 8035080:	d0f2      	beq.n	8035068 <ethernetif_input+0x34> 8035082:	4605      	mov	r5, r0    {       for (q = p; q != NULL; q = q->next)      {        memcpy((u8_t*)q->payload, (u8_t*)&buffer[l], q->len); 8035084:	6868      	ldr	r0, [r5, #4] 8035086:	896a      	ldrh	r2, [r5, #10] 8035088:	eb0b 0107 	add.w	r1, fp, r7 803508c:	f7ec fc5e 	bl	802194c <memcpy>        l = l + q->len; 8035090:	896b      	ldrh	r3, [r5, #10]    p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);     /* Copy received frame from ethernet driver buffer to stack buffer */    if (p != NULL)    {       for (q = p; q != NULL; q = q->next) 8035092:	682d      	ldr	r5, [r5, #0]      {        memcpy((u8_t*)q->payload, (u8_t*)&buffer[l], q->len);        l = l + q->len; 8035094:	18ff      	adds	r7, r7, r3    p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);     /* Copy received frame from ethernet driver buffer to stack buffer */    if (p != NULL)    {       for (q = p; q != NULL; q = q->next) 8035096:	2d00      	cmp	r5, #0 8035098:	d1f4      	bne.n	8035084 <ethernetif_input+0x50>    }  }    /* Release descriptors to DMA */  /* Check if received frame with multiple DMA buffer segments */  if (DMA_RX_FRAME_infos->Seg_Count > 1) 803509a:	f8da 3000 	ldr.w	r3, [sl] 803509e:	689a      	ldr	r2, [r3, #8] 80350a0:	2a01      	cmp	r2, #1  {    DMARxNextDesc = DMA_RX_FRAME_infos->FS_Rx_Desc; 80350a2:	bf88      	it	hi 80350a4:	681e      	ldrhi	r6, [r3, #0]  }    /* Set Own bit in Rx descriptors: gives the buffers back to DMA */  for (i=0; i<DMA_RX_FRAME_infos->Seg_Count; i++)  {      DMARxNextDesc->Status = ETH_DMARxDesc_OWN; 80350a6:	f04f 4000 	mov.w	r0, #2147483648	; 0x80000000  uint32_t l=0,i =0;  FrameTypeDef frame;  u8 *buffer;  __IO ETH_DMADESCTypeDef *DMARxNextDesc;    p = NULL; 80350aa:	2200      	movs	r2, #0 80350ac:	e002      	b.n	80350b4 <ethernetif_input+0x80>  }    /* Set Own bit in Rx descriptors: gives the buffers back to DMA */  for (i=0; i<DMA_RX_FRAME_infos->Seg_Count; i++)  {      DMARxNextDesc->Status = ETH_DMARxDesc_OWN; 80350ae:	6030      	str	r0, [r6, #0]    DMARxNextDesc = (ETH_DMADESCTypeDef *)(DMARxNextDesc->Buffer2NextDescAddr); 80350b0:	68f6      	ldr	r6, [r6, #12]  {    DMARxNextDesc = frame.descriptor;  }    /* Set Own bit in Rx descriptors: gives the buffers back to DMA */  for (i=0; i<DMA_RX_FRAME_infos->Seg_Count; i++) 80350b2:	3201      	adds	r2, #1 80350b4:	6899      	ldr	r1, [r3, #8] 80350b6:	428a      	cmp	r2, r1 80350b8:	d3f9      	bcc.n	80350ae <ethernetif_input+0x7a>    DMARxNextDesc->Status = ETH_DMARxDesc_OWN;    DMARxNextDesc = (ETH_DMADESCTypeDef *)(DMARxNextDesc->Buffer2NextDescAddr);  }    /* Clear Segment_Count */  DMA_RX_FRAME_infos->Seg_Count =0; 80350ba:	2200      	movs	r2, #0 80350bc:	609a      	str	r2, [r3, #8]      /* When Rx Buffer unavailable flag is set: clear it and resume reception */  if ((ETH->DMASR & ETH_DMASR_RBUS) != (u32)RESET)   80350be:	f8d9 3000 	ldr.w	r3, [r9] 80350c2:	061b      	lsls	r3, r3, #24 80350c4:	d504      	bpl.n	80350d0 <ethernetif_input+0x9c>  {    /* Clear RBUS ETHERNET DMA flag */    ETH->DMASR = ETH_DMASR_RBUS; 80350c6:	2380      	movs	r3, #128	; 0x80 80350c8:	f8c9 3000 	str.w	r3, [r9]          /* Resume DMA reception */    ETH->DMARPDR = 0; 80350cc:	4b0a      	ldr	r3, [pc, #40]	; (80350f8 <ethernetif_input+0xc4>) 80350ce:	601a      	str	r2, [r3, #0]  {    if(xSemaphoreTake(s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)    {GET_NEXT_FRAGMENT:      p = low_level_input( s_pxNetIf );      if (p != NULL) 80350d0:	2c00      	cmp	r4, #0 80350d2:	d0b4      	beq.n	803503e <ethernetif_input+0xa>      {        if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf)) 80350d4:	4b09      	ldr	r3, [pc, #36]	; (80350fc <ethernetif_input+0xc8>) 80350d6:	6819      	ldr	r1, [r3, #0] 80350d8:	4620      	mov	r0, r4 80350da:	690b      	ldr	r3, [r1, #16] 80350dc:	4798      	blx	r3 80350de:	4601      	mov	r1, r0 80350e0:	b118      	cbz	r0, 80350ea <ethernetif_input+0xb6>        {          pbuf_free(p); 80350e2:	4620      	mov	r0, r4 80350e4:	f7f8 fcc6 	bl	802da74 <pbuf_free> 80350e8:	e7a9      	b.n	803503e <ethernetif_input+0xa>          p=NULL;        }        else        {          xSemaphoreTake(s_xSemaphore, 0); 80350ea:	f8d8 0000 	ldr.w	r0, [r8] 80350ee:	460a      	mov	r2, r1 80350f0:	460b      	mov	r3, r1 80350f2:	f7f4 fb33 	bl	802975c <xQueueGenericReceive>          goto GET_NEXT_FRAGMENT; 80350f6:	e7af      	b.n	8035058 <ethernetif_input+0x24> 80350f8:	40029008 	.word	0x40029008 80350fc:	2000e578 	.word	0x2000e578 8035100:	2000e57c 	.word	0x2000e57c 8035104:	200133a0 	.word	0x200133a0 8035108:	40029014 	.word	0x400290140803510c <low_level_output>: *       to become availale since the stack doesn't retry to send a packet *       dropped because of memory failure (except for the TCP timers). */static err_t low_level_output(struct netif *netif, struct pbuf *p){ 803510c:	b570      	push	{r4, r5, r6, lr}  static SemaphoreHandle_t xTxSemaphore = NULL;  struct pbuf *q;  uint32_t l = 0;  u8 *buffer ;    if (xTxSemaphore == NULL) 803510e:	4e19      	ldr	r6, [pc, #100]	; (8035174 <low_level_output+0x68>) 8035110:	6835      	ldr	r5, [r6, #0] *       to become availale since the stack doesn't retry to send a packet *       dropped because of memory failure (except for the TCP timers). */static err_t low_level_output(struct netif *netif, struct pbuf *p){ 8035112:	460c      	mov	r4, r1  static SemaphoreHandle_t xTxSemaphore = NULL;  struct pbuf *q;  uint32_t l = 0;  u8 *buffer ;    if (xTxSemaphore == NULL) 8035114:	b95d      	cbnz	r5, 803512e <low_level_output+0x22>  {    vSemaphoreCreateBinary (xTxSemaphore); 8035116:	2001      	movs	r0, #1 8035118:	4629      	mov	r1, r5 803511a:	2203      	movs	r2, #3 803511c:	f7f4 f9a1 	bl	8029462 <xQueueGenericCreate> 8035120:	6030      	str	r0, [r6, #0] 8035122:	b120      	cbz	r0, 803512e <low_level_output+0x22> 8035124:	4629      	mov	r1, r5 8035126:	462a      	mov	r2, r5 8035128:	462b      	mov	r3, r5 803512a:	f7f4 f9d7 	bl	80294dc <xQueueGenericSend>  }      if (xSemaphoreTake(xTxSemaphore, netifGUARD_BLOCK_TIME)) 803512e:	4b11      	ldr	r3, [pc, #68]	; (8035174 <low_level_output+0x68>) 8035130:	2100      	movs	r1, #0 8035132:	6818      	ldr	r0, [r3, #0] 8035134:	22fa      	movs	r2, #250	; 0xfa 8035136:	460b      	mov	r3, r1 8035138:	f7f4 fb10 	bl	802975c <xQueueGenericReceive> 803513c:	b1c0      	cbz	r0, 8035170 <low_level_output+0x64>  {    buffer =  (u8 *)(DMATxDescToSet->Buffer1Addr); 803513e:	4b0e      	ldr	r3, [pc, #56]	; (8035178 <low_level_output+0x6c>) 8035140:	681b      	ldr	r3, [r3, #0]static err_t low_level_output(struct netif *netif, struct pbuf *p){  static SemaphoreHandle_t xTxSemaphore = NULL;  struct pbuf *q;  uint32_t l = 0; 8035142:	2500      	movs	r5, #0    vSemaphoreCreateBinary (xTxSemaphore);  }      if (xSemaphoreTake(xTxSemaphore, netifGUARD_BLOCK_TIME))  {    buffer =  (u8 *)(DMATxDescToSet->Buffer1Addr); 8035144:	689e      	ldr	r6, [r3, #8] 8035146:	e007      	b.n	8035158 <low_level_output+0x4c>    for(q = p; q != NULL; q = q->next)     {      memcpy((u8_t*)&buffer[l], q->payload, q->len); 8035148:	1970      	adds	r0, r6, r5 803514a:	6861      	ldr	r1, [r4, #4] 803514c:	8962      	ldrh	r2, [r4, #10] 803514e:	f7ec fbfd 	bl	802194c <memcpy>      l = l + q->len; 8035152:	8963      	ldrh	r3, [r4, #10]  }      if (xSemaphoreTake(xTxSemaphore, netifGUARD_BLOCK_TIME))  {    buffer =  (u8 *)(DMATxDescToSet->Buffer1Addr);    for(q = p; q != NULL; q = q->next)  8035154:	6824      	ldr	r4, [r4, #0]    {      memcpy((u8_t*)&buffer[l], q->payload, q->len);      l = l + q->len; 8035156:	18ed      	adds	r5, r5, r3  }      if (xSemaphoreTake(xTxSemaphore, netifGUARD_BLOCK_TIME))  {    buffer =  (u8 *)(DMATxDescToSet->Buffer1Addr);    for(q = p; q != NULL; q = q->next)  8035158:	2c00      	cmp	r4, #0 803515a:	d1f5      	bne.n	8035148 <low_level_output+0x3c>    {      memcpy((u8_t*)&buffer[l], q->payload, q->len);      l = l + q->len;    }    ETH_Prepare_Transmit_Descriptors(l); 803515c:	b2a8      	uxth	r0, r5 803515e:	f001 f92b 	bl	80363b8 <ETH_Prepare_Transmit_Descriptors>    xSemaphoreGive(xTxSemaphore); 8035162:	4b04      	ldr	r3, [pc, #16]	; (8035174 <low_level_output+0x68>) 8035164:	4621      	mov	r1, r4 8035166:	6818      	ldr	r0, [r3, #0] 8035168:	4622      	mov	r2, r4 803516a:	4623      	mov	r3, r4 803516c:	f7f4 f9b6 	bl	80294dc <xQueueGenericSend>  }  return ERR_OK;} 8035170:	2000      	movs	r0, #0 8035172:	bd70      	pop	{r4, r5, r6, pc} 8035174:	2000e580 	.word	0x2000e580 8035178:	20011534 	.word	0x200115340803517c <ethernetif_init>:#if LWIP_NETIF_HOSTNAME  /* Initialize interface hostname */  netif->hostname = "lwip";#endif /* LWIP_NETIF_HOSTNAME */  netif->name[0] = IFNAME0; 803517c:	2373      	movs	r3, #115	; 0x73 * @return ERR_OK if the loopif is initialized *         ERR_MEM if private data couldn't be allocated *         any other err_t on error */err_t ethernetif_init(struct netif *netif){ 803517e:	b530      	push	{r4, r5, lr}#if LWIP_NETIF_HOSTNAME  /* Initialize interface hostname */  netif->hostname = "lwip";#endif /* LWIP_NETIF_HOSTNAME */  netif->name[0] = IFNAME0; 8035180:	f880 302e 	strb.w	r3, [r0, #46]	; 0x2e  netif->name[1] = IFNAME1; 8035184:	2374      	movs	r3, #116	; 0x74 8035186:	f880 302f 	strb.w	r3, [r0, #47]	; 0x2f  netif->output = etharp_output; 803518a:	4b37      	ldr	r3, [pc, #220]	; (8035268 <ethernetif_init+0xec>)  netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;    s_pxNetIf =netif;   /* create binary semaphore used for informing ethernetif of frame reception */  if (s_xSemaphore == NULL) 803518c:	4d37      	ldr	r5, [pc, #220]	; (803526c <ethernetif_init+0xf0>)#endif /* LWIP_NETIF_HOSTNAME */  netif->name[0] = IFNAME0;  netif->name[1] = IFNAME1;  netif->output = etharp_output; 803518e:	6143      	str	r3, [r0, #20]  netif->linkoutput = low_level_output; 8035190:	4b37      	ldr	r3, [pc, #220]	; (8035270 <ethernetif_init+0xf4>) * @return ERR_OK if the loopif is initialized *         ERR_MEM if private data couldn't be allocated *         any other err_t on error */err_t ethernetif_init(struct netif *netif){ 8035192:	b087      	sub	sp, #28  netif->name[0] = IFNAME0;  netif->name[1] = IFNAME1;  netif->output = etharp_output;  netif->linkoutput = low_level_output; 8035194:	6183      	str	r3, [r0, #24]{  uint8_t mac[6];  uint32_t i;   /* set netif MAC hardware address length */  netif->hwaddr_len = ETHARP_HWADDR_LEN; 8035196:	2306      	movs	r3, #6 * @return ERR_OK if the loopif is initialized *         ERR_MEM if private data couldn't be allocated *         any other err_t on error */err_t ethernetif_init(struct netif *netif){ 8035198:	4604      	mov	r4, r0{  uint8_t mac[6];  uint32_t i;   /* set netif MAC hardware address length */  netif->hwaddr_len = ETHARP_HWADDR_LEN; 803519a:	f880 3026 	strb.w	r3, [r0, #38]	; 0x26	  /* set netif MAC hardware address */    SETTINGS_GetMac(mac); 803519e:	a804      	add	r0, sp, #16 80351a0:	f7f3 fb34 	bl	802880c <SETTINGS_GetMac>  netif->hwaddr[0] =  mac[0]; 80351a4:	f89d 3010 	ldrb.w	r3, [sp, #16]  netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;    s_pxNetIf =netif;   /* create binary semaphore used for informing ethernetif of frame reception */  if (s_xSemaphore == NULL) 80351a8:	6829      	ldr	r1, [r5, #0]	  /* set netif MAC hardware address */    SETTINGS_GetMac(mac);  netif->hwaddr[0] =  mac[0]; 80351aa:	f884 3027 	strb.w	r3, [r4, #39]	; 0x27  netif->hwaddr[1] =  mac[1]; 80351ae:	f89d 3011 	ldrb.w	r3, [sp, #17] 80351b2:	f884 3028 	strb.w	r3, [r4, #40]	; 0x28  netif->hwaddr[2] =  mac[2]; 80351b6:	f89d 3012 	ldrb.w	r3, [sp, #18] 80351ba:	f884 3029 	strb.w	r3, [r4, #41]	; 0x29  netif->hwaddr[3] =  mac[3]; 80351be:	f89d 3013 	ldrb.w	r3, [sp, #19] 80351c2:	f884 302a 	strb.w	r3, [r4, #42]	; 0x2a  netif->hwaddr[4] =  mac[4]; 80351c6:	f89d 3014 	ldrb.w	r3, [sp, #20] 80351ca:	f884 302b 	strb.w	r3, [r4, #43]	; 0x2b  netif->hwaddr[5] =  mac[5]; 80351ce:	f89d 3015 	ldrb.w	r3, [sp, #21] 80351d2:	f884 302c 	strb.w	r3, [r4, #44]	; 0x2c  /* set netif maximum transfer unit */  netif->mtu = 1500; 80351d6:	f240 53dc 	movw	r3, #1500	; 0x5dc 80351da:	84a3      	strh	r3, [r4, #36]	; 0x24  /* Accept broadcast address and ARP traffic */  netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; 80351dc:	2322      	movs	r3, #34	; 0x22 80351de:	f884 302d 	strb.w	r3, [r4, #45]	; 0x2d    s_pxNetIf =netif; 80351e2:	4b24      	ldr	r3, [pc, #144]	; (8035274 <ethernetif_init+0xf8>) 80351e4:	601c      	str	r4, [r3, #0]   /* create binary semaphore used for informing ethernetif of frame reception */  if (s_xSemaphore == NULL) 80351e6:	b919      	cbnz	r1, 80351f0 <ethernetif_init+0x74>  {    s_xSemaphore= xSemaphoreCreateCounting(20,0); 80351e8:	2014      	movs	r0, #20 80351ea:	f7f4 f961 	bl	80294b0 <xQueueCreateCountingSemaphore> 80351ee:	6028      	str	r0, [r5, #0]  }  /* initialize MAC address in ethernet MAC */   ETH_MACAddressConfig(ETH_MAC_Address0, netif->hwaddr);  80351f0:	f104 0127 	add.w	r1, r4, #39	; 0x27 80351f4:	2000      	movs	r0, #0 80351f6:	f001 f877 	bl	80362e8 <ETH_MACAddressConfig>    /* Initialize Tx Descriptors list: Chain Mode */  ETH_DMATxDescChainInit(DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB); 80351fa:	481f      	ldr	r0, [pc, #124]	; (8035278 <ethernetif_init+0xfc>) 80351fc:	491f      	ldr	r1, [pc, #124]	; (803527c <ethernetif_init+0x100>)    /* Enable Ethernet Rx interrrupt */  {     for(i=0; i<ETH_RXBUFNB; i++)    {      ETH_DMARxDescReceiveITConfig(&DMARxDscrTab[i], ENABLE); 80351fe:	4d20      	ldr	r5, [pc, #128]	; (8035280 <ethernetif_init+0x104>)  /* initialize MAC address in ethernet MAC */   ETH_MACAddressConfig(ETH_MAC_Address0, netif->hwaddr);     /* Initialize Tx Descriptors list: Chain Mode */  ETH_DMATxDescChainInit(DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB); 8035200:	2205      	movs	r2, #5 8035202:	f001 f95f 	bl	80364c4 <ETH_DMATxDescChainInit>  /* Initialize Rx Descriptors list: Chain Mode  */  ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB); 8035206:	481e      	ldr	r0, [pc, #120]	; (8035280 <ethernetif_init+0x104>) 8035208:	491e      	ldr	r1, [pc, #120]	; (8035284 <ethernetif_init+0x108>) 803520a:	2205      	movs	r2, #5 803520c:	f001 f92e 	bl	803646c <ETH_DMARxDescChainInit>    /* Enable Ethernet Rx interrrupt */  {     for(i=0; i<ETH_RXBUFNB; i++) 8035210:	2400      	movs	r4, #0    {      ETH_DMARxDescReceiveITConfig(&DMARxDscrTab[i], ENABLE); 8035212:	eb05 1044 	add.w	r0, r5, r4, lsl #5 8035216:	2101      	movs	r1, #1  /* Initialize Rx Descriptors list: Chain Mode  */  ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);    /* Enable Ethernet Rx interrrupt */  {     for(i=0; i<ETH_RXBUFNB; i++) 8035218:	3401      	adds	r4, #1    {      ETH_DMARxDescReceiveITConfig(&DMARxDscrTab[i], ENABLE); 803521a:	f001 f979 	bl	8036510 <ETH_DMARxDescReceiveITConfig>  /* Initialize Rx Descriptors list: Chain Mode  */  ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);    /* Enable Ethernet Rx interrrupt */  {     for(i=0; i<ETH_RXBUFNB; i++) 803521e:	2c05      	cmp	r4, #5 8035220:	d1f7      	bne.n	8035212 <ethernetif_init+0x96>#ifdef CHECKSUM_BY_HARDWARE  /* Enable the checksum insertion for the Tx frames */  {    for(i=0; i<ETH_TXBUFNB; i++)    {      ETH_DMATxDescChecksumInsertionConfig(&DMATxDscrTab[i], ETH_DMATxDesc_ChecksumTCPUDPICMPFull); 8035222:	4d15      	ldr	r5, [pc, #84]	; (8035278 <ethernetif_init+0xfc>)  /* Initialize Rx Descriptors list: Chain Mode  */  ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);    /* Enable Ethernet Rx interrrupt */  {     for(i=0; i<ETH_RXBUFNB; i++) 8035224:	2400      	movs	r4, #0#ifdef CHECKSUM_BY_HARDWARE  /* Enable the checksum insertion for the Tx frames */  {    for(i=0; i<ETH_TXBUFNB; i++)    {      ETH_DMATxDescChecksumInsertionConfig(&DMATxDscrTab[i], ETH_DMATxDesc_ChecksumTCPUDPICMPFull); 8035226:	eb05 1044 	add.w	r0, r5, r4, lsl #5 803522a:	f44f 0140 	mov.w	r1, #12582912	; 0xc00000  }#ifdef CHECKSUM_BY_HARDWARE  /* Enable the checksum insertion for the Tx frames */  {    for(i=0; i<ETH_TXBUFNB; i++) 803522e:	3401      	adds	r4, #1    {      ETH_DMATxDescChecksumInsertionConfig(&DMATxDscrTab[i], ETH_DMATxDesc_ChecksumTCPUDPICMPFull); 8035230:	f001 f96a 	bl	8036508 <ETH_DMATxDescChecksumInsertionConfig>  }#ifdef CHECKSUM_BY_HARDWARE  /* Enable the checksum insertion for the Tx frames */  {    for(i=0; i<ETH_TXBUFNB; i++) 8035234:	2c05      	cmp	r4, #5 8035236:	d1f6      	bne.n	8035226 <ethernetif_init+0xaa>    }  } #endif    /* create the task that handles the ETH_MAC */  xTaskCreate(ethernetif_input, "Eth_if", netifINTERFACE_TASK_STACK_SIZE, NULL, 8035238:	2400      	movs	r4, #0 803523a:	2304      	movs	r3, #4 803523c:	2296      	movs	r2, #150	; 0x96 803523e:	e88d 0018 	stmia.w	sp, {r3, r4} 8035242:	4911      	ldr	r1, [pc, #68]	; (8035288 <ethernetif_init+0x10c>) 8035244:	9402      	str	r4, [sp, #8] 8035246:	4623      	mov	r3, r4 8035248:	9403      	str	r4, [sp, #12] 803524a:	4810      	ldr	r0, [pc, #64]	; (803528c <ethernetif_init+0x110>) 803524c:	f7f4 fb90 	bl	8029970 <xTaskGenericCreate>              netifINTERFACE_TASK_PRIORITY,NULL);    /* Enable MAC and DMA transmission and reception */  ETH_Start();    8035250:	f001 f9b4 	bl	80365bc <ETH_Start>  /* initialize the hardware */  low_level_init(netif);    etharp_init();  sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); 8035254:	f241 3088 	movw	r0, #5000	; 0x1388 8035258:	490d      	ldr	r1, [pc, #52]	; (8035290 <ethernetif_init+0x114>) 803525a:	4622      	mov	r2, r4 803525c:	f7fa fe90 	bl	802ff80 <sys_timeout>  return ERR_OK;} 8035260:	4620      	mov	r0, r4 8035262:	b007      	add	sp, #28 8035264:	bd30      	pop	{r4, r5, pc} 8035266:	bf00      	nop 8035268:	08034d21 	.word	0x08034d21 803526c:	2000e57c 	.word	0x2000e57c 8035270:	0803510d 	.word	0x0803510d 8035274:	2000e578 	.word	0x2000e578 8035278:	20011538 	.word	0x20011538 803527c:	20013444 	.word	0x20013444 8035280:	200133a4 	.word	0x200133a4 8035284:	200115d8 	.word	0x200115d8 8035288:	08041cef 	.word	0x08041cef 803528c:	08035035 	.word	0x08035035 8035290:	08035019 	.word	0x0803501908035294 <sys_mbox_new>: *      int size                -- Size of elements in the mailbox * Outputs: *      sys_mbox_t              -- Handle to new mailbox *---------------------------------------------------------------------------*/err_t sys_mbox_new( sys_mbox_t *pxMailBox, int iSize ){ 8035294:	b510      	push	{r4, lr}err_t xReturn = ERR_MEM;	*pxMailBox = xQueueCreate( iSize, sizeof( void * ) ); 8035296:	2200      	movs	r2, #0 *      int size                -- Size of elements in the mailbox * Outputs: *      sys_mbox_t              -- Handle to new mailbox *---------------------------------------------------------------------------*/err_t sys_mbox_new( sys_mbox_t *pxMailBox, int iSize ){ 8035298:	4604      	mov	r4, r0err_t xReturn = ERR_MEM;	*pxMailBox = xQueueCreate( iSize, sizeof( void * ) ); 803529a:	4608      	mov	r0, r1 803529c:	2104      	movs	r1, #4 803529e:	f7f4 f8e0 	bl	8029462 <xQueueGenericCreate> 80352a2:	6020      	str	r0, [r4, #0]		xReturn = ERR_OK;		SYS_STATS_INC_USED( mbox );	}	return xReturn;} 80352a4:	2800      	cmp	r0, #0 80352a6:	bf14      	ite	ne 80352a8:	2000      	movne	r0, #0 80352aa:	f06f 0000 	mvneq.w	r0, #0 80352ae:	bd10      	pop	{r4, pc}080352b0 <sys_mbox_trypost>: * Outputs: *      err_t                   -- ERR_OK if message posted, else ERR_MEM *                                  if not. *---------------------------------------------------------------------------*/err_t sys_mbox_trypost( sys_mbox_t *pxMailBox, void *pxMessageToPost ){ 80352b0:	b51f      	push	{r0, r1, r2, r3, r4, lr}err_t xReturn;portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;	if( xInsideISR != pdFALSE ) 80352b2:	4a0b      	ldr	r2, [pc, #44]	; (80352e0 <sys_mbox_trypost+0x30>) * Outputs: *      err_t                   -- ERR_OK if message posted, else ERR_MEM *                                  if not. *---------------------------------------------------------------------------*/err_t sys_mbox_trypost( sys_mbox_t *pxMailBox, void *pxMessageToPost ){ 80352b4:	9101      	str	r1, [sp, #4]err_t xReturn;portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;	if( xInsideISR != pdFALSE ) 80352b6:	6812      	ldr	r2, [r2, #0]	{		xReturn = xQueueSendFromISR( *pxMailBox, &pxMessageToPost, &xHigherPriorityTaskWoken ); 80352b8:	6800      	ldr	r0, [r0, #0] *                                  if not. *---------------------------------------------------------------------------*/err_t sys_mbox_trypost( sys_mbox_t *pxMailBox, void *pxMessageToPost ){err_t xReturn;portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; 80352ba:	2300      	movs	r3, #0 80352bc:	9303      	str	r3, [sp, #12]	if( xInsideISR != pdFALSE )	{		xReturn = xQueueSendFromISR( *pxMailBox, &pxMessageToPost, &xHigherPriorityTaskWoken ); 80352be:	a901      	add	r1, sp, #4err_t sys_mbox_trypost( sys_mbox_t *pxMailBox, void *pxMessageToPost ){err_t xReturn;portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;	if( xInsideISR != pdFALSE ) 80352c0:	b11a      	cbz	r2, 80352ca <sys_mbox_trypost+0x1a>	{		xReturn = xQueueSendFromISR( *pxMailBox, &pxMessageToPost, &xHigherPriorityTaskWoken ); 80352c2:	aa03      	add	r2, sp, #12 80352c4:	f7f4 f9ce 	bl	8029664 <xQueueGenericSendFromISR> 80352c8:	e002      	b.n	80352d0 <sys_mbox_trypost+0x20>	}	else	{		xReturn = xQueueSend( *pxMailBox, &pxMessageToPost, ( TickType_t ) 0 ); 80352ca:	4613      	mov	r3, r2 80352cc:	f7f4 f906 	bl	80294dc <xQueueGenericSend> 80352d0:	b2c0      	uxtb	r0, r0		xReturn = ERR_MEM;		SYS_STATS_INC( mbox.err );	}	return xReturn;} 80352d2:	3801      	subs	r0, #1 80352d4:	bf18      	it	ne 80352d6:	f06f 0000 	mvnne.w	r0, #0 80352da:	b005      	add	sp, #20 80352dc:	bd00      	pop	{pc} 80352de:	bf00      	nop 80352e0:	2000e584 	.word	0x2000e584080352e4 <sys_arch_mbox_fetch>: * Outputs: *      u32_t                   -- SYS_ARCH_TIMEOUT if timeout, else number *                                  of milliseconds until received. *---------------------------------------------------------------------------*/u32_t sys_arch_mbox_fetch( sys_mbox_t *pxMailBox, void **ppvBuffer, u32_t ulTimeOut ){ 80352e4:	e92d 41f3 	stmdb	sp!, {r0, r1, r4, r5, r6, r7, r8, lr} 80352e8:	4607      	mov	r7, r0 80352ea:	460c      	mov	r4, r1 80352ec:	4690      	mov	r8, r2void *pvDummy;TickType_t xStartTime, xEndTime, xElapsed;unsigned long ulReturn;	xStartTime = xTaskGetTickCount(); 80352ee:	f7f4 fca7 	bl	8029c40 <xTaskGetTickCount> 80352f2:	4605      	mov	r5, r0	if( NULL == ppvBuffer ) 80352f4:	b904      	cbnz	r4, 80352f8 <sys_arch_mbox_fetch+0x14>	{		ppvBuffer = &pvDummy; 80352f6:	ac01      	add	r4, sp, #4	}	if( ulTimeOut != 0UL ) 80352f8:	f1b8 0f00 	cmp.w	r8, #0 80352fc:	d015      	beq.n	803532a <sys_arch_mbox_fetch+0x46>	{		configASSERT( xInsideISR == ( portBASE_TYPE ) 0 ); 80352fe:	4b13      	ldr	r3, [pc, #76]	; (803534c <sys_arch_mbox_fetch+0x68>) 8035300:	681e      	ldr	r6, [r3, #0] 8035302:	b116      	cbz	r6, 803530a <sys_arch_mbox_fetch+0x26> 8035304:	f7f5 f9dc 	bl	802a6c0 <ulPortSetInterruptMask> 8035308:	e7fe      	b.n	8035308 <sys_arch_mbox_fetch+0x24>		if( pdTRUE == xQueueReceive( *pxMailBox, &( *ppvBuffer ), ulTimeOut/ portTICK_PERIOD_MS ) ) 803530a:	6838      	ldr	r0, [r7, #0] 803530c:	4621      	mov	r1, r4 803530e:	4642      	mov	r2, r8 8035310:	4633      	mov	r3, r6 8035312:	f7f4 fa23 	bl	802975c <xQueueGenericReceive> 8035316:	2801      	cmp	r0, #1 8035318:	d103      	bne.n	8035322 <sys_arch_mbox_fetch+0x3e>		{			xEndTime = xTaskGetTickCount(); 803531a:	f7f4 fc91 	bl	8029c40 <xTaskGetTickCount>			xElapsed = ( xEndTime - xStartTime ) * portTICK_PERIOD_MS; 803531e:	1b40      	subs	r0, r0, r5 8035320:	e011      	b.n	8035346 <sys_arch_mbox_fetch+0x62>			ulReturn = xElapsed;		}		else		{			/* Timed out. */			*ppvBuffer = NULL; 8035322:	6026      	str	r6, [r4, #0]			ulReturn = SYS_ARCH_TIMEOUT; 8035324:	f04f 30ff 	mov.w	r0, #4294967295 8035328:	e00d      	b.n	8035346 <sys_arch_mbox_fetch+0x62>		}	}	else	{		while( pdTRUE != xQueueReceive( *pxMailBox, &( *ppvBuffer ), portMAX_DELAY ) ); 803532a:	2300      	movs	r3, #0 803532c:	6838      	ldr	r0, [r7, #0] 803532e:	4621      	mov	r1, r4 8035330:	f04f 32ff 	mov.w	r2, #4294967295 8035334:	f7f4 fa12 	bl	802975c <xQueueGenericReceive> 8035338:	2801      	cmp	r0, #1 803533a:	d1f6      	bne.n	803532a <sys_arch_mbox_fetch+0x46>		xEndTime = xTaskGetTickCount(); 803533c:	f7f4 fc80 	bl	8029c40 <xTaskGetTickCount>		xElapsed = ( xEndTime - xStartTime ) * portTICK_PERIOD_MS;		if( xElapsed == 0UL ) 8035340:	1b40      	subs	r0, r0, r5 8035342:	bf08      	it	eq 8035344:	2001      	moveq	r0, #1		ulReturn = xElapsed;	}	return ulReturn;} 8035346:	e8bd 81fc 	ldmia.w	sp!, {r2, r3, r4, r5, r6, r7, r8, pc} 803534a:	bf00      	nop 803534c:	2000e584 	.word	0x2000e58408035350 <sys_mutex_new>:/** Create a new mutex * @param mutex pointer to the mutex to create * @return a new mutex */err_t sys_mutex_new( sys_mutex_t *pxMutex ){ 8035350:	b510      	push	{r4, lr} 8035352:	4604      	mov	r4, r0err_t xReturn = ERR_MEM;	*pxMutex = xSemaphoreCreateMutex(); 8035354:	2001      	movs	r0, #1 8035356:	f7f4 f95b 	bl	8029610 <xQueueCreateMutex> 803535a:	6020      	str	r0, [r4, #0]	{		SYS_STATS_INC( mutex.err );	}	return xReturn;} 803535c:	2800      	cmp	r0, #0 803535e:	bf14      	ite	ne 8035360:	2000      	movne	r0, #0 8035362:	f06f 0000 	mvneq.w	r0, #0 8035366:	bd10      	pop	{r4, pc}08035368 <sys_mutex_lock>:/** Lock a mutex * @param mutex the mutex to lock */void sys_mutex_lock( sys_mutex_t *pxMutex ){ 8035368:	b510      	push	{r4, lr} 803536a:	4604      	mov	r4, r0	while( xSemaphoreTake( *pxMutex, portMAX_DELAY ) != pdPASS ); 803536c:	2100      	movs	r1, #0 803536e:	6820      	ldr	r0, [r4, #0] 8035370:	f04f 32ff 	mov.w	r2, #4294967295 8035374:	460b      	mov	r3, r1 8035376:	f7f4 f9f1 	bl	802975c <xQueueGenericReceive> 803537a:	2801      	cmp	r0, #1 803537c:	d1f6      	bne.n	803536c <sys_mutex_lock+0x4>} 803537e:	bd10      	pop	{r4, pc}08035380 <sys_mutex_unlock>:/** Unlock a mutex * @param mutex the mutex to unlock */void sys_mutex_unlock(sys_mutex_t *pxMutex ){	xSemaphoreGive( *pxMutex ); 8035380:	2100      	movs	r1, #0 8035382:	6800      	ldr	r0, [r0, #0] 8035384:	460a      	mov	r2, r1 8035386:	460b      	mov	r3, r1 8035388:	f7f4 b8a8 	b.w	80294dc <xQueueGenericSend>0803538c <sys_init>: *---------------------------------------------------------------------------* * Description: *      Initialize sys arch *---------------------------------------------------------------------------*/void sys_init(void){ 803538c:	4770      	bx	lr0803538e <sys_now>:}u32_t sys_now(void){	return xTaskGetTickCount(); 803538e:	f7f4 bc57 	b.w	8029c40 <xTaskGetTickCount>08035392 <sys_thread_new>: *      int prio                -- Thread priority * Outputs: *      sys_thread_t            -- Pointer to per-thread timeouts. *---------------------------------------------------------------------------*/sys_thread_t sys_thread_new( const char *pcName, void( *pxThread )( void *pvParameters ), void *pvArg, int iStackSize, int iPriority ){ 8035392:	b570      	push	{r4, r5, r6, lr} 8035394:	b086      	sub	sp, #24 8035396:	4606      	mov	r6, r0TaskHandle_t xCreatedTask;portBASE_TYPE xResult;sys_thread_t xReturn;	xResult = xTaskCreate( pxThread, pcName, iStackSize, pvArg, iPriority, &xCreatedTask ); 8035398:	9c0a      	ldr	r4, [sp, #40]	; 0x28 *      int prio                -- Thread priority * Outputs: *      sys_thread_t            -- Pointer to per-thread timeouts. *---------------------------------------------------------------------------*/sys_thread_t sys_thread_new( const char *pcName, void( *pxThread )( void *pvParameters ), void *pvArg, int iStackSize, int iPriority ){ 803539a:	4615      	mov	r5, r2TaskHandle_t xCreatedTask;portBASE_TYPE xResult;sys_thread_t xReturn;	xResult = xTaskCreate( pxThread, pcName, iStackSize, pvArg, iPriority, &xCreatedTask ); 803539c:	9400      	str	r4, [sp, #0] 803539e:	aa05      	add	r2, sp, #20 80353a0:	2400      	movs	r4, #0 80353a2:	9201      	str	r2, [sp, #4] 80353a4:	9402      	str	r4, [sp, #8] 80353a6:	b29a      	uxth	r2, r3 80353a8:	9403      	str	r4, [sp, #12] 80353aa:	4608      	mov	r0, r1 80353ac:	462b      	mov	r3, r5 80353ae:	4631      	mov	r1, r6 80353b0:	f7f4 fade 	bl	8029970 <xTaskGenericCreate>	if( xResult == pdPASS ) 80353b4:	2801      	cmp	r0, #1	{		xReturn = xCreatedTask; 80353b6:	bf0c      	ite	eq 80353b8:	9805      	ldreq	r0, [sp, #20]	}	else	{		xReturn = NULL; 80353ba:	4620      	movne	r0, r4	}	return xReturn;} 80353bc:	b006      	add	sp, #24 80353be:	bd70      	pop	{r4, r5, r6, pc}080353c0 <sys_arch_protect>: *      operating system. * Outputs: *      sys_prot_t              -- Previous protection level (not used here) *---------------------------------------------------------------------------*/sys_prot_t sys_arch_protect( void ){ 80353c0:	b508      	push	{r3, lr}	if( xInsideISR == pdFALSE ) 80353c2:	4b03      	ldr	r3, [pc, #12]	; (80353d0 <sys_arch_protect+0x10>) 80353c4:	681b      	ldr	r3, [r3, #0] 80353c6:	b90b      	cbnz	r3, 80353cc <sys_arch_protect+0xc>	{		taskENTER_CRITICAL(); 80353c8:	f7f5 f982 	bl	802a6d0 <vPortEnterCritical>	}	return ( sys_prot_t ) 1;} 80353cc:	2001      	movs	r0, #1 80353ce:	bd08      	pop	{r3, pc} 80353d0:	2000e584 	.word	0x2000e584080353d4 <sys_arch_unprotect>: *      sys_prot_t              -- Previous protection level (not used here) *---------------------------------------------------------------------------*/void sys_arch_unprotect( sys_prot_t xValue ){	(void) xValue;	if( xInsideISR == pdFALSE ) 80353d4:	4b02      	ldr	r3, [pc, #8]	; (80353e0 <sys_arch_unprotect+0xc>) 80353d6:	681b      	ldr	r3, [r3, #0] 80353d8:	b90b      	cbnz	r3, 80353de <sys_arch_unprotect+0xa>	{		taskEXIT_CRITICAL(); 80353da:	f7f5 b9a5 	b.w	802a728 <vPortExitCritical> 80353de:	4770      	bx	lr 80353e0:	2000e584 	.word	0x2000e584080353e4 <vTaskWebReinit>:  *           Если флаг не устанавливается в положенное время, то сбрасывается  *         флаг sSettings.sFlags.netsettingsChanged, сохраняется вся структура  *         настроек в памяти и контроллер перезагружается.  */void vTaskWebReinit(void * pvParameters){ 80353e4:	b538      	push	{r3, r4, r5, lr}  static uint16_t timeCounter = 0;    for (;;)  {	/* Контроль времени работы задачи */	if (timeCounter++ > TIME_COUNTER_10_MIN) 80353e6:	4c20      	ldr	r4, [pc, #128]	; (8035468 <vTaskWebReinit+0x84>)	if (fConfirmWebParams)	{	  fConfirmWebParams = false;			  /* Сохраняем временные сетевые настройки в постоянные */	  sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable; 80353e8:	4d20      	ldr	r5, [pc, #128]	; (803546c <vTaskWebReinit+0x88>)  static uint16_t timeCounter = 0;    for (;;)  {	/* Контроль времени работы задачи */	if (timeCounter++ > TIME_COUNTER_10_MIN) 80353ea:	8823      	ldrh	r3, [r4, #0] 80353ec:	1c5a      	adds	r2, r3, #1 80353ee:	f5b3 7f16 	cmp.w	r3, #600	; 0x258 80353f2:	8022      	strh	r2, [r4, #0] 80353f4:	d914      	bls.n	8035420 <vTaskWebReinit+0x3c>	{	  SetWebReinitFlag(false); 80353f6:	2000      	movs	r0, #0 80353f8:	f7f2 fe16 	bl	8028028 <SetWebReinitFlag>	  HTTP_SaveSettings(); 80353fc:	f7f7 f957 	bl	802c6ae <HTTP_SaveSettings>      vTaskDelay(1010); 8035400:	f240 30f2 	movw	r0, #1010	; 0x3f2 8035404:	f7f4 fd4e 	bl	8029ea4 <vTaskDelay> 8035408:	f3bf 8f4f 	dsb	sy                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | 803540c:	4a18      	ldr	r2, [pc, #96]	; (8035470 <vTaskWebReinit+0x8c>) 803540e:	4b19      	ldr	r3, [pc, #100]	; (8035474 <vTaskWebReinit+0x90>) 8035410:	68d1      	ldr	r1, [r2, #12] 8035412:	f401 61e0 	and.w	r1, r1, #1792	; 0x700 8035416:	430b      	orrs	r3, r1__STATIC_INLINE void NVIC_SystemReset(void)//static inline void NVIC_SystemReset(void){  __DSB();                                                     /* Ensure all outstanding memory accesses included                                                                  buffered write are completed before reset */  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      | 8035418:	60d3      	str	r3, [r2, #12] 803541a:	f3bf 8f4f 	dsb	sy 803541e:	e7fe      	b.n	803541e <vTaskWebReinit+0x3a> 	  NVIC_SystemReset();	}		if (fConfirmWebParams) 8035420:	4b15      	ldr	r3, [pc, #84]	; (8035478 <vTaskWebReinit+0x94>) 8035422:	781a      	ldrb	r2, [r3, #0] 8035424:	b1d2      	cbz	r2, 803545c <vTaskWebReinit+0x78>	{	  fConfirmWebParams = false; 8035426:	2200      	movs	r2, #0			  /* Сохраняем временные сетевые настройки в постоянные */	  sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable;	  strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip); 8035428:	4814      	ldr	r0, [pc, #80]	; (803547c <vTaskWebReinit+0x98>) 	  NVIC_SystemReset();	}		if (fConfirmWebParams)	{	  fConfirmWebParams = false; 803542a:	701a      	strb	r2, [r3, #0]			  /* Сохраняем временные сетевые настройки в постоянные */	  sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable; 803542c:	f895 3063 	ldrb.w	r3, [r5, #99]	; 0x63	  strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip); 8035430:	f100 0131 	add.w	r1, r0, #49	; 0x31	if (fConfirmWebParams)	{	  fConfirmWebParams = false;			  /* Сохраняем временные сетевые настройки в постоянные */	  sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable; 8035434:	f885 3032 	strb.w	r3, [r5, #50]	; 0x32	  strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip); 8035438:	f7ec fcbc 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate); 803543c:	4810      	ldr	r0, [pc, #64]	; (8035480 <vTaskWebReinit+0x9c>) 803543e:	f100 0131 	add.w	r1, r0, #49	; 0x31 8035442:	f7ec fcb7 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask); 8035446:	480f      	ldr	r0, [pc, #60]	; (8035484 <vTaskWebReinit+0xa0>) 8035448:	f100 0131 	add.w	r1, r0, #49	; 0x31 803544c:	f7ec fcb2 	bl	8021db4 <strcpy>	  	  HTTP_SaveSettings(); 8035450:	f7f7 f92d 	bl	802c6ae <HTTP_SaveSettings>	  	  vTaskDelete(xHandleWebReinit); 8035454:	4b0c      	ldr	r3, [pc, #48]	; (8035488 <vTaskWebReinit+0xa4>) 8035456:	6818      	ldr	r0, [r3, #0] 8035458:	f7f4 fb62 	bl	8029b20 <vTaskDelete>	}		  	vTaskDelay(1000); 803545c:	f44f 707a 	mov.w	r0, #1000	; 0x3e8 8035460:	f7f4 fd20 	bl	8029ea4 <vTaskDelay>  }	 8035464:	e7c1      	b.n	80353ea <vTaskWebReinit+0x6> 8035466:	bf00      	nop 8035468:	2000e588 	.word	0x2000e588 803546c:	2000e984 	.word	0x2000e984 8035470:	e000ed00 	.word	0xe000ed00 8035474:	05fa0004 	.word	0x05fa0004 8035478:	20002934 	.word	0x20002934 803547c:	2000e986 	.word	0x2000e986 8035480:	2000e996 	.word	0x2000e996 8035484:	2000e9a6 	.word	0x2000e9a6 8035488:	2000e58c 	.word	0x2000e58c0803548c <LwIP_DHCP_task>:  * @brief  LwIP_DHCP_Process_Handle  * @param  None  * @retval None  */void LwIP_DHCP_task(void * pvParameters){ 803548c:	b530      	push	{r4, r5, lr}            DHCP_state = DHCP_TIMEOUT;            /* Stop DHCP */            dhcp_stop(&xnetif);						if (sSettings.sFlags.netsettingsChanged == true) 803548e:	4d48      	ldr	r5, [pc, #288]	; (80355b0 <LwIP_DHCP_task+0x124>)  * @brief  LwIP_DHCP_Process_Handle  * @param  None  * @retval None  */void LwIP_DHCP_task(void * pvParameters){ 8035490:	b085      	sub	sp, #20  struct ip_addr ipaddr;  struct ip_addr netmask;  struct ip_addr gw;  uint8_t DHCP_state;    DHCP_state = DHCP_START; 8035492:	2400      	movs	r4, #0  for (;;)  {    switch (DHCP_state) 8035494:	b11c      	cbz	r4, 803549e <LwIP_DHCP_task+0x12> 8035496:	2c01      	cmp	r4, #1 8035498:	f040 8085 	bne.w	80355a6 <LwIP_DHCP_task+0x11a> 803549c:	e004      	b.n	80354a8 <LwIP_DHCP_task+0x1c>    {      case DHCP_START:      {        dhcp_start(&xnetif); 803549e:	4845      	ldr	r0, [pc, #276]	; (80355b4 <LwIP_DHCP_task+0x128>) 80354a0:	f7f7 ffec 	bl	802d47c <dhcp_start>        DHCP_state = DHCP_WAIT_ADDRESS; 80354a4:	2401      	movs	r4, #1        //PRINT_USART("\n\rLooking for DHCP server please wait...\n\r");      }      break; 80354a6:	e07e      	b.n	80355a6 <LwIP_DHCP_task+0x11a>      case DHCP_WAIT_ADDRESS:      {        /* Read the new IP address */        ipaddr = xnetif.ip_addr; 80354a8:	4842      	ldr	r0, [pc, #264]	; (80355b4 <LwIP_DHCP_task+0x128>)        netmask = xnetif.netmask; 80354aa:	6882      	ldr	r2, [r0, #8]      break;      case DHCP_WAIT_ADDRESS:      {        /* Read the new IP address */        ipaddr = xnetif.ip_addr; 80354ac:	6843      	ldr	r3, [r0, #4]        netmask = xnetif.netmask; 80354ae:	9202      	str	r2, [sp, #8]        gw = xnetif.gw; 80354b0:	68c2      	ldr	r2, [r0, #12]      break;      case DHCP_WAIT_ADDRESS:      {        /* Read the new IP address */        ipaddr = xnetif.ip_addr; 80354b2:	9301      	str	r3, [sp, #4]        netmask = xnetif.netmask;        gw = xnetif.gw; 80354b4:	9203      	str	r2, [sp, #12]        	        if (ipaddr.addr != 0)  80354b6:	2b00      	cmp	r3, #0 80354b8:	d045      	beq.n	8035546 <LwIP_DHCP_task+0xba>        {          DHCP_state = DHCP_ADDRESS_ASSIGNED;	          dhcp_stop(&xnetif); 80354ba:	f7f7 ffc7 	bl	802d44c <dhcp_stop>          		  /* Сохранение полученных сетевый параметров */		  /* Если настройки изменили, то сохраняем во временные настройки */          if (sSettings.sFlags.netsettingsChanged == true) 80354be:	f895 32fc 	ldrb.w	r3, [r5, #764]	; 0x2fc		  {		    sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr)); 80354c2:	a801      	add	r0, sp, #4          DHCP_state = DHCP_ADDRESS_ASSIGNED;	          dhcp_stop(&xnetif);          		  /* Сохранение полученных сетевый параметров */		  /* Если настройки изменили, то сохраняем во временные настройки */          if (sSettings.sFlags.netsettingsChanged == true) 80354c4:	b103      	cbz	r3, 80354c8 <LwIP_DHCP_task+0x3c> 80354c6:	e01b      	b.n	8035500 <LwIP_DHCP_task+0x74>		    sprintf(sSettings.sWebTempParams.mask, "%s", ipaddr_ntoa(&netmask));		    sprintf(sSettings.sWebTempParams.gate, "%s", ipaddr_ntoa(&gw));		  }		  else		  {		    sprintf(sSettings.sWebParams.ip,   "%s", ipaddr_ntoa(&ipaddr)); 80354c8:	f7fb fa58 	bl	803097c <ipaddr_ntoa> 80354cc:	493a      	ldr	r1, [pc, #232]	; (80355b8 <LwIP_DHCP_task+0x12c>) 80354ce:	4602      	mov	r2, r0 80354d0:	483a      	ldr	r0, [pc, #232]	; (80355bc <LwIP_DHCP_task+0x130>) 80354d2:	f7f2 f965 	bl	80277a0 <tfp_sprintf>		    sprintf(sSettings.sWebParams.mask, "%s", ipaddr_ntoa(&netmask)); 80354d6:	a802      	add	r0, sp, #8 80354d8:	f7fb fa50 	bl	803097c <ipaddr_ntoa> 80354dc:	4936      	ldr	r1, [pc, #216]	; (80355b8 <LwIP_DHCP_task+0x12c>) 80354de:	4602      	mov	r2, r0 80354e0:	4837      	ldr	r0, [pc, #220]	; (80355c0 <LwIP_DHCP_task+0x134>) 80354e2:	f7f2 f95d 	bl	80277a0 <tfp_sprintf>		    sprintf(sSettings.sWebParams.gate, "%s", ipaddr_ntoa(&gw)); 80354e6:	a803      	add	r0, sp, #12 80354e8:	f7fb fa48 	bl	803097c <ipaddr_ntoa> 80354ec:	4932      	ldr	r1, [pc, #200]	; (80355b8 <LwIP_DHCP_task+0x12c>) 80354ee:	4602      	mov	r2, r0 80354f0:	4834      	ldr	r0, [pc, #208]	; (80355c4 <LwIP_DHCP_task+0x138>) 80354f2:	f7f2 f955 	bl	80277a0 <tfp_sprintf>						/* Обновляем временные настройки */			sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable; 80354f6:	f895 3032 	ldrb.w	r3, [r5, #50]	; 0x32			sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr)); 80354fa:	a801      	add	r0, sp, #4		    sprintf(sSettings.sWebParams.ip,   "%s", ipaddr_ntoa(&ipaddr));		    sprintf(sSettings.sWebParams.mask, "%s", ipaddr_ntoa(&netmask));		    sprintf(sSettings.sWebParams.gate, "%s", ipaddr_ntoa(&gw));						/* Обновляем временные настройки */			sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable; 80354fc:	f885 3063 	strb.w	r3, [r5, #99]	; 0x63			sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr)); 8035500:	f7fb fa3c 	bl	803097c <ipaddr_ntoa> 8035504:	492c      	ldr	r1, [pc, #176]	; (80355b8 <LwIP_DHCP_task+0x12c>) 8035506:	4602      	mov	r2, r0 8035508:	482f      	ldr	r0, [pc, #188]	; (80355c8 <LwIP_DHCP_task+0x13c>) 803550a:	f7f2 f949 	bl	80277a0 <tfp_sprintf>		    sprintf(sSettings.sWebTempParams.mask, "%s", ipaddr_ntoa(&netmask)); 803550e:	a802      	add	r0, sp, #8 8035510:	f7fb fa34 	bl	803097c <ipaddr_ntoa> 8035514:	4928      	ldr	r1, [pc, #160]	; (80355b8 <LwIP_DHCP_task+0x12c>) 8035516:	4602      	mov	r2, r0 8035518:	482c      	ldr	r0, [pc, #176]	; (80355cc <LwIP_DHCP_task+0x140>) 803551a:	f7f2 f941 	bl	80277a0 <tfp_sprintf>		    sprintf(sSettings.sWebTempParams.gate, "%s", ipaddr_ntoa(&gw)); 803551e:	a803      	add	r0, sp, #12 8035520:	f7fb fa2c 	bl	803097c <ipaddr_ntoa> 8035524:	4924      	ldr	r1, [pc, #144]	; (80355b8 <LwIP_DHCP_task+0x12c>) 8035526:	4602      	mov	r2, r0 8035528:	4829      	ldr	r0, [pc, #164]	; (80355d0 <LwIP_DHCP_task+0x144>) 803552a:	f7f2 f939 	bl	80277a0 <tfp_sprintf>		  		  PRINT_USART("Gateway:   ");		  PRINT_USART(ipaddr_ntoa(&gw));		  PRINT_USART("\n\r");          		  vTaskDelay(50); 803552e:	2032      	movs	r0, #50	; 0x32 8035530:	f7f4 fcb8 	bl	8029ea4 <vTaskDelay>		  /* Установлен динамический IP, можно отправить трап о перезагрузке устройства */		  SNMP_SendUserTrap(DEVICE_REBOOTED); 8035534:	2004      	movs	r0, #4 8035536:	f000 fa1f 	bl	8035978 <SNMP_SendUserTrap>		            vTaskDelete(xHandleDHCP); 803553a:	4b26      	ldr	r3, [pc, #152]	; (80355d4 <LwIP_DHCP_task+0x148>) 803553c:	6818      	ldr	r0, [r3, #0] 803553e:	f7f4 faef 	bl	8029b20 <vTaskDelete>        netmask = xnetif.netmask;        gw = xnetif.gw;        	        if (ipaddr.addr != 0)         {          DHCP_state = DHCP_ADDRESS_ASSIGNED;	 8035542:	2402      	movs	r4, #2 8035544:	e02f      	b.n	80355a6 <LwIP_DHCP_task+0x11a>          vTaskDelete(xHandleDHCP);        }        else        {          /* DHCP timeout */          if (xnetif.dhcp->tries > MAX_DHCP_TRIES) 8035546:	6a03      	ldr	r3, [r0, #32] 8035548:	7b5b      	ldrb	r3, [r3, #13] 803554a:	2b03      	cmp	r3, #3 803554c:	d92b      	bls.n	80355a6 <LwIP_DHCP_task+0x11a>          {            DHCP_state = DHCP_TIMEOUT;            /* Stop DHCP */            dhcp_stop(&xnetif); 803554e:	f7f7 ff7d 	bl	802d44c <dhcp_stop>						if (sSettings.sFlags.netsettingsChanged == true) 8035552:	f895 32fc 	ldrb.w	r3, [r5, #764]	; 0x2fc 8035556:	b14b      	cbz	r3, 803556c <LwIP_DHCP_task+0xe0>		    {			  ipaddr.addr = ipaddr_addr(sSettings.sWebTempParams.ip); 8035558:	481b      	ldr	r0, [pc, #108]	; (80355c8 <LwIP_DHCP_task+0x13c>) 803555a:	f7fb f9bc 	bl	80308d6 <ipaddr_addr> 803555e:	9001      	str	r0, [sp, #4]	          netmask.addr = ipaddr_addr(sSettings.sWebTempParams.mask); 8035560:	481a      	ldr	r0, [pc, #104]	; (80355cc <LwIP_DHCP_task+0x140>) 8035562:	f7fb f9b8 	bl	80308d6 <ipaddr_addr> 8035566:	9002      	str	r0, [sp, #8]	          gw.addr = ipaddr_addr(sSettings.sWebTempParams.gate); 8035568:	4819      	ldr	r0, [pc, #100]	; (80355d0 <LwIP_DHCP_task+0x144>) 803556a:	e008      	b.n	803557e <LwIP_DHCP_task+0xf2>			}  			else			{  			  ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip); 803556c:	4813      	ldr	r0, [pc, #76]	; (80355bc <LwIP_DHCP_task+0x130>) 803556e:	f7fb f9b2 	bl	80308d6 <ipaddr_addr> 8035572:	9001      	str	r0, [sp, #4]	          netmask.addr = ipaddr_addr(sSettings.sWebParams.mask); 8035574:	4812      	ldr	r0, [pc, #72]	; (80355c0 <LwIP_DHCP_task+0x134>) 8035576:	f7fb f9ae 	bl	80308d6 <ipaddr_addr> 803557a:	9002      	str	r0, [sp, #8]	          gw.addr = ipaddr_addr(sSettings.sWebParams.gate); 803557c:	4811      	ldr	r0, [pc, #68]	; (80355c4 <LwIP_DHCP_task+0x138>) 803557e:	f7fb f9aa 	bl	80308d6 <ipaddr_addr>			}			              /* Static address used */            netif_set_addr(&xnetif, &ipaddr , &netmask, &gw); 8035582:	a901      	add	r1, sp, #4 8035584:	aa02      	add	r2, sp, #8 8035586:	ab03      	add	r3, sp, #12			}  			else			{  			  ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);	          netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);	          gw.addr = ipaddr_addr(sSettings.sWebParams.gate); 8035588:	9003      	str	r0, [sp, #12]			}			              /* Static address used */            netif_set_addr(&xnetif, &ipaddr , &netmask, &gw); 803558a:	480a      	ldr	r0, [pc, #40]	; (80355b4 <LwIP_DHCP_task+0x128>) 803558c:	f7f8 f9ce 	bl	802d92c <netif_set_addr>            PRINT_USART("DHCP timeout\n\r");            PRINT_USART("\n\rStatic IP address\n\r");			PRINT_USART(ipaddr_ntoa(&ipaddr));		    PRINT_USART("\n\r");			vTaskDelay(50); 8035590:	2032      	movs	r0, #50	; 0x32 8035592:	f7f4 fc87 	bl	8029ea4 <vTaskDelay>			/* Установлен статический IP, можно отправить трап о перезагрузке устройства */		    SNMP_SendUserTrap(DEVICE_REBOOTED); 8035596:	2004      	movs	r0, #4 8035598:	f000 f9ee 	bl	8035978 <SNMP_SendUserTrap>						vTaskDelete(xHandleDHCP); 803559c:	4b0d      	ldr	r3, [pc, #52]	; (80355d4 <LwIP_DHCP_task+0x148>) 803559e:	6818      	ldr	r0, [r3, #0] 80355a0:	f7f4 fabe 	bl	8029b20 <vTaskDelete>        else        {          /* DHCP timeout */          if (xnetif.dhcp->tries > MAX_DHCP_TRIES)          {            DHCP_state = DHCP_TIMEOUT; 80355a4:	2403      	movs	r4, #3      break;      default: break;    }    vTaskDelay(250); 80355a6:	20fa      	movs	r0, #250	; 0xfa 80355a8:	f7f4 fc7c 	bl	8029ea4 <vTaskDelay>  }    80355ac:	e772      	b.n	8035494 <LwIP_DHCP_task+0x8> 80355ae:	bf00      	nop 80355b0:	2000e984 	.word	0x2000e984 80355b4:	2001122c 	.word	0x2001122c 80355b8:	08036d46 	.word	0x08036d46 80355bc:	2000e986 	.word	0x2000e986 80355c0:	2000e9a6 	.word	0x2000e9a6 80355c4:	2000e996 	.word	0x2000e996 80355c8:	2000e9b7 	.word	0x2000e9b7 80355cc:	2000e9d7 	.word	0x2000e9d7 80355d0:	2000e9c7 	.word	0x2000e9c7 80355d4:	2000e590 	.word	0x2000e590080355d8 <LwIP_Init>:TaskHandle_t xHandleWebReinit = NULL;bool dhcp = false;	void LwIP_Init(void){ 80355d8:	b530      	push	{r4, r5, lr}  struct ip_addr ipaddr;  struct ip_addr netmask;  struct ip_addr gw;  char str[20];  tcpip_init( NULL, NULL );	 80355da:	2000      	movs	r0, #0  sSettings.sFlags.netsettingsChanged = false; 80355dc:	4c36      	ldr	r4, [pc, #216]	; (80356b8 <LwIP_Init+0xe0>)TaskHandle_t xHandleWebReinit = NULL;bool dhcp = false;	void LwIP_Init(void){ 80355de:	b08d      	sub	sp, #52	; 0x34  struct ip_addr ipaddr;  struct ip_addr netmask;  struct ip_addr gw;  char str[20];  tcpip_init( NULL, NULL );	 80355e0:	4601      	mov	r1, r0 80355e2:	f7f7 f8e7 	bl	802c7b4 <tcpip_init>	}    }  /* Настройки не менялись, используем обычне настройки из флеш памяти */  else  {    if (sSettings.sWebParams.dhcpEnable) 80355e6:	f894 5032 	ldrb.w	r5, [r4, #50]	; 0x32  struct ip_addr netmask;  struct ip_addr gw;  char str[20];  tcpip_init( NULL, NULL );	  sSettings.sFlags.netsettingsChanged = false; 80355ea:	2300      	movs	r3, #0 80355ec:	f884 32fc 	strb.w	r3, [r4, #764]	; 0x2fc	}    }  /* Настройки не менялись, используем обычне настройки из флеш памяти */  else  {    if (sSettings.sWebParams.dhcpEnable) 80355f0:	b125      	cbz	r5, 80355fc <LwIP_Init+0x24>    {	      ipaddr.addr = 0; 80355f2:	9304      	str	r3, [sp, #16]      netmask.addr = 0; 80355f4:	9305      	str	r3, [sp, #20]      gw.addr = 0; 80355f6:	9306      	str	r3, [sp, #24]		  netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input); 80355f8:	9300      	str	r3, [sp, #0] 80355fa:	e028      	b.n	803564e <LwIP_Init+0x76>      netif_set_default(&xnetif);      netif_set_up(&xnetif);     }	    else    {		  ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip); 80355fc:	1ca0      	adds	r0, r4, #2 80355fe:	f7fb f96a 	bl	80308d6 <ipaddr_addr> 8035602:	9004      	str	r0, [sp, #16]	  netmask.addr = ipaddr_addr(sSettings.sWebParams.mask); 8035604:	f104 0022 	add.w	r0, r4, #34	; 0x22 8035608:	f7fb f965 	bl	80308d6 <ipaddr_addr> 803560c:	9005      	str	r0, [sp, #20]	  gw.addr = ipaddr_addr(sSettings.sWebParams.gate); 803560e:	f104 0012 	add.w	r0, r4, #18 8035612:	f7fb f960 	bl	80308d6 <ipaddr_addr>  	  	  /* Обновляем временные настройки */	  sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable; 8035616:	f894 3032 	ldrb.w	r3, [r4, #50]	; 0x32    }	    else    {		  ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);	  netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);	  gw.addr = ipaddr_addr(sSettings.sWebParams.gate); 803561a:	9006      	str	r0, [sp, #24]  	  	  /* Обновляем временные настройки */	  sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable;	  strcpy(sSettings.sWebTempParams.ip, sSettings.sWebParams.ip); 803561c:	1ca1      	adds	r1, r4, #2 803561e:	f104 0033 	add.w	r0, r4, #51	; 0x33	  ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);	  netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);	  gw.addr = ipaddr_addr(sSettings.sWebParams.gate);  	  	  /* Обновляем временные настройки */	  sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable; 8035622:	f884 3063 	strb.w	r3, [r4, #99]	; 0x63	  strcpy(sSettings.sWebTempParams.ip, sSettings.sWebParams.ip); 8035626:	f7ec fbc5 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebTempParams.mask, sSettings.sWebParams.mask); 803562a:	f104 0122 	add.w	r1, r4, #34	; 0x22 803562e:	f104 0053 	add.w	r0, r4, #83	; 0x53 8035632:	f7ec fbbf 	bl	8021db4 <strcpy>	  strcpy(sSettings.sWebTempParams.gate, sSettings.sWebParams.gate); 8035636:	f104 0112 	add.w	r1, r4, #18 803563a:	f104 0043 	add.w	r0, r4, #67	; 0x43 803563e:	f7ec fbb9 	bl	8021db4 <strcpy>	        sprintf(str, " %s\n\r", sSettings.sWebParams.ip); 8035642:	a807      	add	r0, sp, #28 8035644:	491d      	ldr	r1, [pc, #116]	; (80356bc <LwIP_Init+0xe4>) 8035646:	1ca2      	adds	r2, r4, #2 8035648:	f7f2 f8aa 	bl	80277a0 <tfp_sprintf>      PRINT_USART("\n\rStatic IP address   \n\r");      PRINT_USART(str);      netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input); 803564c:	9500      	str	r5, [sp, #0] 803564e:	4b1c      	ldr	r3, [pc, #112]	; (80356c0 <LwIP_Init+0xe8>) 8035650:	481c      	ldr	r0, [pc, #112]	; (80356c4 <LwIP_Init+0xec>) 8035652:	9301      	str	r3, [sp, #4] 8035654:	4b1c      	ldr	r3, [pc, #112]	; (80356c8 <LwIP_Init+0xf0>) 8035656:	a904      	add	r1, sp, #16 8035658:	aa05      	add	r2, sp, #20 803565a:	9302      	str	r3, [sp, #8] 803565c:	ab06      	add	r3, sp, #24 803565e:	f7f8 f973 	bl	802d948 <netif_add>      netif_set_default(&xnetif); 8035662:	4818      	ldr	r0, [pc, #96]	; (80356c4 <LwIP_Init+0xec>) 8035664:	f7f8 f998 	bl	802d998 <netif_set_default>      netif_set_up(&xnetif);  8035668:	4816      	ldr	r0, [pc, #88]	; (80356c4 <LwIP_Init+0xec>) 803566a:	f7f8 f9a5 	bl	802d9b8 <netif_set_up>    }  	if (sSettings.sWebParams.dhcpEnable) { 803566e:	4b12      	ldr	r3, [pc, #72]	; (80356b8 <LwIP_Init+0xe0>) 8035670:	f893 3032 	ldrb.w	r3, [r3, #50]	; 0x32 8035674:	b17b      	cbz	r3, 8035696 <LwIP_Init+0xbe>      xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL, 8035676:	2302      	movs	r3, #2 8035678:	9300      	str	r3, [sp, #0] 803567a:	4b14      	ldr	r3, [pc, #80]	; (80356cc <LwIP_Init+0xf4>) 803567c:	4814      	ldr	r0, [pc, #80]	; (80356d0 <LwIP_Init+0xf8>) 803567e:	9301      	str	r3, [sp, #4] 8035680:	2300      	movs	r3, #0 8035682:	9302      	str	r3, [sp, #8] 8035684:	9303      	str	r3, [sp, #12] 8035686:	f44f 7280 	mov.w	r2, #256	; 0x100 803568a:	4912      	ldr	r1, [pc, #72]	; (80356d4 <LwIP_Init+0xfc>) 803568c:	f7f4 f970 	bl	8029970 <xTaskGenericCreate>                  tskIDLE_PRIORITY + 2, &xHandleDHCP);	  dhcp = true; 8035690:	4b11      	ldr	r3, [pc, #68]	; (80356d8 <LwIP_Init+0x100>) 8035692:	2201      	movs	r2, #1 8035694:	701a      	strb	r2, [r3, #0]	}    }    /* Если настройки изменились, запускаем задачу по отсчету времени реакции пользователя*/  if (sSettings.sFlags.netsettingsChanged == true) 8035696:	4b08      	ldr	r3, [pc, #32]	; (80356b8 <LwIP_Init+0xe0>) 8035698:	f893 32fc 	ldrb.w	r3, [r3, #764]	; 0x2fc 803569c:	b153      	cbz	r3, 80356b4 <LwIP_Init+0xdc>    xTaskCreate(vTaskWebReinit, "webReinit", configMINIMAL_STACK_SIZE, NULL, 803569e:	4a0f      	ldr	r2, [pc, #60]	; (80356dc <LwIP_Init+0x104>) 80356a0:	480f      	ldr	r0, [pc, #60]	; (80356e0 <LwIP_Init+0x108>) 80356a2:	9201      	str	r2, [sp, #4] 80356a4:	2300      	movs	r3, #0 80356a6:	9300      	str	r3, [sp, #0] 80356a8:	9302      	str	r3, [sp, #8] 80356aa:	9303      	str	r3, [sp, #12] 80356ac:	490d      	ldr	r1, [pc, #52]	; (80356e4 <LwIP_Init+0x10c>) 80356ae:	2280      	movs	r2, #128	; 0x80 80356b0:	f7f4 f95e 	bl	8029970 <xTaskGenericCreate>              tskIDLE_PRIORITY, &xHandleWebReinit);} 80356b4:	b00d      	add	sp, #52	; 0x34 80356b6:	bd30      	pop	{r4, r5, pc} 80356b8:	2000e984 	.word	0x2000e984 80356bc:	08041cf6 	.word	0x08041cf6 80356c0:	0803517d 	.word	0x0803517d 80356c4:	2001122c 	.word	0x2001122c 80356c8:	0802c775 	.word	0x0802c775 80356cc:	2000e590 	.word	0x2000e590 80356d0:	0803548d 	.word	0x0803548d 80356d4:	08041cfc 	.word	0x08041cfc 80356d8:	2000e58a 	.word	0x2000e58a 80356dc:	2000e58c 	.word	0x2000e58c 80356e0:	080353e5 	.word	0x080353e5 80356e4:	08041d07 	.word	0x08041d07080356e8 <GetStateWebReinit>:/**  * @brief  Возвращает true если сетевые параметры изменились  */bool GetStateWebReinit(void){ 80356e8:	b510      	push	{r4, lr}  /* Статус dhcp изменился? */  if (sSettings.sWebParams.dhcpEnable != sSettings.sWebTempParams.dhcpEnable) 80356ea:	4c12      	ldr	r4, [pc, #72]	; (8035734 <GetStateWebReinit+0x4c>) 80356ec:	f894 2032 	ldrb.w	r2, [r4, #50]	; 0x32 80356f0:	f894 3063 	ldrb.w	r3, [r4, #99]	; 0x63 80356f4:	429a      	cmp	r2, r3 80356f6:	d004      	beq.n	8035702 <GetStateWebReinit+0x1a>  {	/* Включили dhcp */    if (sSettings.sWebTempParams.dhcpEnable == 1)	{	  /* Устанавилваем флаг */	  SetWebReinitFlag(true); 80356f8:	2001      	movs	r0, #1 80356fa:	f7f2 fc95 	bl	8028028 <SetWebReinitFlag>	  return true; 80356fe:	2001      	movs	r0, #1 8035700:	bd10      	pop	{r4, pc}	  return true;	}    }    /* Изменился IP? */  if (strstr(sSettings.sWebParams.ip, sSettings.sWebTempParams.ip) == 0) 8035702:	1ca0      	adds	r0, r4, #2 8035704:	f104 0133 	add.w	r1, r4, #51	; 0x33 8035708:	f7ec fe32 	bl	8022370 <strstr> 803570c:	2800      	cmp	r0, #0 803570e:	d0f3      	beq.n	80356f8 <GetStateWebReinit+0x10>	SetWebReinitFlag(true);	return true;  }   /* Изменился шлюз? */  if (strstr(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate) == 0) 8035710:	f104 0012 	add.w	r0, r4, #18 8035714:	f104 0143 	add.w	r1, r4, #67	; 0x43 8035718:	f7ec fe2a 	bl	8022370 <strstr> 803571c:	2800      	cmp	r0, #0 803571e:	d0eb      	beq.n	80356f8 <GetStateWebReinit+0x10>	SetWebReinitFlag(true);	return true;  }    /* Изменилась маска? */  if (strstr(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask) == 0) 8035720:	f104 0022 	add.w	r0, r4, #34	; 0x22 8035724:	f104 0153 	add.w	r1, r4, #83	; 0x53 8035728:	f7ec fe22 	bl	8022370 <strstr> 803572c:	2800      	cmp	r0, #0 803572e:	d0e3      	beq.n	80356f8 <GetStateWebReinit+0x10>    /* Устанавилваем флаг */	SetWebReinitFlag(true);	return true;  }    return false; 8035730:	2000      	movs	r0, #0} 8035732:	bd10      	pop	{r4, pc} 8035734:	2000e984 	.word	0x2000e98408035738 <signals_get_value>: \param  len - длина переменной в байтах  \param  value - указатель на значение переменной \return нет------------------------------------------------------------------------------*/static void signals_get_value (struct obj_def *od, u16_t len, void *value){ 8035738:	4613      	mov	r3, r2  u8_t id;    id = od->id_inst_ptr[0]; 803573a:	6882      	ldr	r2, [r0, #8]    switch (id) 803573c:	7812      	ldrb	r2, [r2, #0] 803573e:	3a01      	subs	r2, #1 \param  len - длина переменной в байтах  \param  value - указатель на значение переменной \return нет------------------------------------------------------------------------------*/static void signals_get_value (struct obj_def *od, u16_t len, void *value){ 8035740:	b510      	push	{r4, lr} 8035742:	460c      	mov	r4, r1  u8_t id;    id = od->id_inst_ptr[0];    switch (id) 8035744:	2a11      	cmp	r2, #17 8035746:	d814      	bhi.n	8035772 <signals_get_value+0x3a> 8035748:	e8df f002 	tbb	[pc, r2] 803574c:	0c09090c 	.word	0x0c09090c 8035750:	09090c0c 	.word	0x09090c0c 8035754:	0c0c0c0c 	.word	0x0c0c0c0c 8035758:	0c0c0c0c 	.word	0x0c0c0c0c 803575c:	0c0c      	.short	0x0c0c	  break;	case 7: /* BatTest */	  *((s32_t*)value) = 0;	  break;	case 8: /* Shutdown UPS */	  *((s32_t*)value) = 0; 803575e:	2200      	movs	r2, #0 8035760:	601a      	str	r2, [r3, #0]	  break; 8035762:	bd10      	pop	{r4, pc}      break;    case 17: /* ConnectMonitor */	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);      break;    case 18: /* Alarms */	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len); 8035764:	4903      	ldr	r1, [pc, #12]	; (8035774 <signals_get_value+0x3c>) 8035766:	4618      	mov	r0, r3 8035768:	4622      	mov	r2, r4      break;    default :	  break;  };} 803576a:	e8bd 4010 	ldmia.w	sp!, {r4, lr}      break;    case 17: /* ConnectMonitor */	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);      break;    case 18: /* Alarms */	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len); 803576e:	f7fc bb5f 	b.w	8031e30 <ocstrncpy> 8035772:	bd10      	pop	{r4, pc} 8035774:	20011378 	.word	0x2001137808035778 <signals_get_object_def>:  u8_t id;    /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 8035778:	2801      	cmp	r0, #1 \param  ident - points to objectname.0 (object id trailer)  \param  od - points to object definition. указатель на описание переменной \return нет------------------------------------------------------------------------------*/static void signals_get_object_def (u8_t ident_len, s32_t *ident, struct obj_def *od){ 803577a:	b538      	push	{r3, r4, r5, lr} 803577c:	4614      	mov	r4, r2  u8_t id;    /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1;  if (ident_len == 2) 803577e:	f040 8081 	bne.w	8035884 <signals_get_object_def+0x10c>  {    od->id_inst_len = ident_len; 8035782:	2302      	movs	r3, #2 8035784:	7193      	strb	r3, [r2, #6]{  u8_t id;    /* return to object name, adding index depth (1) */  ident_len += 1;  ident -= 1; 8035786:	1f0a      	subs	r2, r1, #4  if (ident_len == 2)  {    od->id_inst_len = ident_len;    od->id_inst_ptr = ident; 8035788:	60a2      	str	r2, [r4, #8]    id = ident[0];        switch (id) 803578a:	f811 2c04 	ldrb.w	r2, [r1, #-4] 803578e:	3a01      	subs	r2, #1 8035790:	2a11      	cmp	r2, #17 8035792:	d877      	bhi.n	8035884 <signals_get_object_def+0x10c> 8035794:	e8df f002 	tbb	[pc, r2] 8035798:	0f242409 	.word	0x0f242409 803579c:	2a241a15 	.word	0x2a241a15 80357a0:	453f3932 	.word	0x453f3932 80357a4:	5d57514b 	.word	0x5d57514b 80357a8:	6963      	.short	0x6963    {      case 1: /* FWVersion */		GetVersionStr(paramStr, ¶mLength); 80357aa:	4d38      	ldr	r5, [pc, #224]	; (803588c <signals_get_object_def+0x114>) 80357ac:	4838      	ldr	r0, [pc, #224]	; (8035890 <signals_get_object_def+0x118>) 80357ae:	4629      	mov	r1, r5 80357b0:	f7f2 fa36 	bl	8027c20 <GetVersionStr> 80357b4:	e05e      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_WRITE_ONLY;        od->asn_type = SNMP_ASN1_INTEG;        od->v_len = sizeof(s32_t);        break;	  case 4: /* UPSModel*/		GetUPSModelStr(paramStr, ¶mLength); 80357b6:	4d35      	ldr	r5, [pc, #212]	; (803588c <signals_get_object_def+0x114>) 80357b8:	4835      	ldr	r0, [pc, #212]	; (8035890 <signals_get_object_def+0x118>) 80357ba:	4629      	mov	r1, r5 80357bc:	f7f2 fa9c 	bl	8027cf8 <GetUPSModelStr> 80357c0:	e058      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;        break;	  case 5: /* DO1*/		GetDOUTStatusStr(paramStr, ¶mLength, 0); 80357c2:	4d32      	ldr	r5, [pc, #200]	; (803588c <signals_get_object_def+0x114>) 80357c4:	4832      	ldr	r0, [pc, #200]	; (8035890 <signals_get_object_def+0x118>) 80357c6:	4629      	mov	r1, r5 80357c8:	2200      	movs	r2, #0 80357ca:	e003      	b.n	80357d4 <signals_get_object_def+0x5c>		od->access = MIB_OBJECT_READ_WRITE;		od->asn_type = SNMP_ASN1_OC_STR;		od->v_len = paramLength;		break;	  case 6: /* DO2*/		GetDOUTStatusStr(paramStr, ¶mLength, 1); 80357cc:	4d2f      	ldr	r5, [pc, #188]	; (803588c <signals_get_object_def+0x114>) 80357ce:	4830      	ldr	r0, [pc, #192]	; (8035890 <signals_get_object_def+0x118>) 80357d0:	4629      	mov	r1, r5 80357d2:	2201      	movs	r2, #1 80357d4:	f7f2 f9a2 	bl	8027b1c <GetDOUTStatusStr>		od->instance = MIB_OBJECT_SCALAR; 80357d8:	2301      	movs	r3, #1 80357da:	7023      	strb	r3, [r4, #0]		od->access = MIB_OBJECT_READ_WRITE; 80357dc:	2303      	movs	r3, #3 80357de:	e04b      	b.n	8035878 <signals_get_object_def+0x100>		od->asn_type = SNMP_ASN1_OC_STR;		od->v_len = paramLength;		break;	  case 7: /* BatTest*/		od->instance = MIB_OBJECT_SCALAR; 80357e0:	2201      	movs	r2, #1		od->access = MIB_OBJECT_WRITE_ONLY; 80357e2:	7063      	strb	r3, [r4, #1]		od->asn_type = SNMP_ASN1_INTEG; 80357e4:	70a3      	strb	r3, [r4, #2]		od->asn_type = SNMP_ASN1_OC_STR;		od->v_len = paramLength;		break;	  case 7: /* BatTest*/		od->instance = MIB_OBJECT_SCALAR; 80357e6:	7022      	strb	r2, [r4, #0]		od->access = MIB_OBJECT_WRITE_ONLY;		od->asn_type = SNMP_ASN1_INTEG;		od->v_len = sizeof(s32_t); 80357e8:	2304      	movs	r3, #4 80357ea:	e049      	b.n	8035880 <signals_get_object_def+0x108>		break;	  case 8: /* Shutdown UPS*/		od->instance = MIB_OBJECT_SCALAR;		od->access = MIB_OBJECT_WRITE_ONLY; 80357ec:	7063      	strb	r3, [r4, #1]		od->asn_type = SNMP_ASN1_OC_STR; 80357ee:	2304      	movs	r3, #4		od->asn_type = SNMP_ASN1_INTEG;		od->v_len = sizeof(s32_t);		break;	  case 8: /* Shutdown UPS*/		od->instance = MIB_OBJECT_SCALAR; 80357f0:	2201      	movs	r2, #1		od->access = MIB_OBJECT_WRITE_ONLY;		od->asn_type = SNMP_ASN1_OC_STR; 80357f2:	70a3      	strb	r3, [r4, #2]		od->v_len = paramLength; 80357f4:	4b25      	ldr	r3, [pc, #148]	; (803588c <signals_get_object_def+0x114>)		od->asn_type = SNMP_ASN1_INTEG;		od->v_len = sizeof(s32_t);		break;	  case 8: /* Shutdown UPS*/		od->instance = MIB_OBJECT_SCALAR; 80357f6:	7022      	strb	r2, [r4, #0]		od->access = MIB_OBJECT_WRITE_ONLY;		od->asn_type = SNMP_ASN1_OC_STR;		od->v_len = paramLength; 80357f8:	781b      	ldrb	r3, [r3, #0] 80357fa:	e041      	b.n	8035880 <signals_get_object_def+0x108>		break;	  case 9: /* DIO*/		GetDINStatusStr(paramStr, ¶mLength, 0); 80357fc:	4d23      	ldr	r5, [pc, #140]	; (803588c <signals_get_object_def+0x114>) 80357fe:	4824      	ldr	r0, [pc, #144]	; (8035890 <signals_get_object_def+0x118>) 8035800:	4629      	mov	r1, r5 8035802:	2200      	movs	r2, #0 8035804:	f7f2 f950 	bl	8027aa8 <GetDINStatusStr> 8035808:	e034      	b.n	8035874 <signals_get_object_def+0xfc>		od->access = MIB_OBJECT_READ_ONLY;		od->asn_type = SNMP_ASN1_OC_STR;		od->v_len = paramLength;		break;	  case 10: /* IntTemp */		GetInternalTempStr(paramStr, ¶mLength); 803580a:	4d20      	ldr	r5, [pc, #128]	; (803588c <signals_get_object_def+0x114>) 803580c:	4820      	ldr	r0, [pc, #128]	; (8035890 <signals_get_object_def+0x118>) 803580e:	4629      	mov	r1, r5 8035810:	f7f2 f86a 	bl	80278e8 <GetInternalTempStr> 8035814:	e02e      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;        break;	  case 11: /* InFreq */		GetInputFreqStr(paramStr, ¶mLength); 8035816:	4d1d      	ldr	r5, [pc, #116]	; (803588c <signals_get_object_def+0x114>) 8035818:	481d      	ldr	r0, [pc, #116]	; (8035890 <signals_get_object_def+0x118>) 803581a:	4629      	mov	r1, r5 803581c:	f7f1 ffd6 	bl	80277cc <GetInputFreqStr> 8035820:	e028      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;		break;	  case 12: /* InVoltVAC */		GetInputVoltageStr(paramStr, ¶mLength); 8035822:	4d1a      	ldr	r5, [pc, #104]	; (803588c <signals_get_object_def+0x114>) 8035824:	481a      	ldr	r0, [pc, #104]	; (8035890 <signals_get_object_def+0x118>) 8035826:	4629      	mov	r1, r5 8035828:	f7f1 fffc 	bl	8027824 <GetInputVoltageStr> 803582c:	e022      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;		break;	  case 13: /* OutVoltVAC */		GetOutputVoltageStr(paramStr, ¶mLength); 803582e:	4d17      	ldr	r5, [pc, #92]	; (803588c <signals_get_object_def+0x114>) 8035830:	4817      	ldr	r0, [pc, #92]	; (8035890 <signals_get_object_def+0x118>) 8035832:	4629      	mov	r1, r5 8035834:	f7f2 f80c 	bl	8027850 <GetOutputVoltageStr> 8035838:	e01c      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;        break;	  case 14: /* Power */		GetPowerStr(paramStr, ¶mLength); 803583a:	4d14      	ldr	r5, [pc, #80]	; (803588c <signals_get_object_def+0x114>) 803583c:	4814      	ldr	r0, [pc, #80]	; (8035890 <signals_get_object_def+0x118>) 803583e:	4629      	mov	r1, r5 8035840:	f7f2 f81c 	bl	802787c <GetPowerStr> 8035844:	e016      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;		break;	  case 15: /* BatCap */		GetBatCapacityStr(paramStr, ¶mLength); 8035846:	4d11      	ldr	r5, [pc, #68]	; (803588c <signals_get_object_def+0x114>) 8035848:	4811      	ldr	r0, [pc, #68]	; (8035890 <signals_get_object_def+0x118>) 803584a:	4629      	mov	r1, r5 803584c:	f7f2 f828 	bl	80278a0 <GetBatCapacityStr> 8035850:	e010      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;        break;	  case 16: /* BatTime */		GetRuntimeStr(paramStr, ¶mLength); 8035852:	4d0e      	ldr	r5, [pc, #56]	; (803588c <signals_get_object_def+0x114>) 8035854:	480e      	ldr	r0, [pc, #56]	; (8035890 <signals_get_object_def+0x118>) 8035856:	4629      	mov	r1, r5 8035858:	f7f2 f834 	bl	80278c4 <GetRuntimeStr> 803585c:	e00a      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;        break;	      case 17: /* ConnectMonitor */		GetConnectMonitorStr(paramStr, ¶mLength); 803585e:	4d0b      	ldr	r5, [pc, #44]	; (803588c <signals_get_object_def+0x114>) 8035860:	480b      	ldr	r0, [pc, #44]	; (8035890 <signals_get_object_def+0x118>) 8035862:	4629      	mov	r1, r5 8035864:	f7f2 f856 	bl	8027914 <GetConnectMonitorStr> 8035868:	e004      	b.n	8035874 <signals_get_object_def+0xfc>        od->access = MIB_OBJECT_READ_ONLY;        od->asn_type = SNMP_ASN1_OC_STR;        od->v_len = paramLength;        break;      case 18: /* Alarms */    	GetAlarmStr(paramStr, ¶mLength); 803586a:	4d08      	ldr	r5, [pc, #32]	; (803588c <signals_get_object_def+0x114>) 803586c:	4808      	ldr	r0, [pc, #32]	; (8035890 <signals_get_object_def+0x118>) 803586e:	4629      	mov	r1, r5 8035870:	f7f2 f856 	bl	8027920 <GetAlarmStr>        od->instance = MIB_OBJECT_SCALAR; 8035874:	2301      	movs	r3, #1 8035876:	7023      	strb	r3, [r4, #0]        od->access = MIB_OBJECT_READ_ONLY; 8035878:	7063      	strb	r3, [r4, #1]        od->asn_type = SNMP_ASN1_OC_STR; 803587a:	2304      	movs	r3, #4 803587c:	70a3      	strb	r3, [r4, #2]        od->v_len = paramLength; 803587e:	782b      	ldrb	r3, [r5, #0] 8035880:	80a3      	strh	r3, [r4, #4]        break; 8035882:	bd38      	pop	{r3, r4, r5, pc}    };  }  else  {    LWIP_DEBUGF(SNMP_MIB_DEBUG,("planar_get_object_def: no scalar\n"));    od->instance = MIB_OBJECT_NONE; 8035884:	2300      	movs	r3, #0 8035886:	7023      	strb	r3, [r4, #0] 8035888:	bd38      	pop	{r3, r4, r5, pc} 803588a:	bf00      	nop 803588c:	2000e594 	.word	0x2000e594 8035890:	20011378 	.word	0x2001137808035894 <signals_set_value>: \param  len - длина переменной в байтах  \param  value - указатель на значение переменной \return нет------------------------------------------------------------------------------*/static void signals_set_value (struct obj_def *od, u16_t len, void *value){ 8035894:	b508      	push	{r3, lr}  u8_t id;  uint32_t val;  char *val_string;    id = od->id_inst_ptr[0]; 8035896:	6883      	ldr	r3, [r0, #8]    switch (id) 8035898:	781b      	ldrb	r3, [r3, #0] 803589a:	3b02      	subs	r3, #2 803589c:	2b04      	cmp	r3, #4 803589e:	d82f      	bhi.n	8035900 <signals_set_value+0x6c> 80358a0:	e8df f003 	tbb	[pc, r3] 80358a4:	152e0d03 	.word	0x152e0d03 80358a8:	20          	.byte	0x20 80358a9:	00          	.byte	0x00  {    case 2: /* RestoreSignal */      val = *((s32_t*)value);      if (val == 1) { 80358aa:	6813      	ldr	r3, [r2, #0] 80358ac:	2b01      	cmp	r3, #1 80358ae:	d127      	bne.n	8035900 <signals_set_value+0x6c>        SNMP_SendUserTrap(DEVICE_RESTORED); 80358b0:	2003      	movs	r0, #3 80358b2:	f000 f861 	bl	8035978 <SNMP_SendUserTrap>	  break;    default :    break;  };  } 80358b6:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  {    case 2: /* RestoreSignal */      val = *((s32_t*)value);      if (val == 1) {        SNMP_SendUserTrap(DEVICE_RESTORED);        HTTP_ResetSettings(); 80358ba:	f7f6 bef1 	b.w	802c6a0 <HTTP_ResetSettings>      }    break;    case 3: /* RebootSignal */      val = *((s32_t*)value);      if (val == 1) 80358be:	6813      	ldr	r3, [r2, #0] 80358c0:	2b01      	cmp	r3, #1 80358c2:	d11d      	bne.n	8035900 <signals_set_value+0x6c>        HTTP_StartResetTask(false); 80358c4:	2000      	movs	r0, #0	  break;    default :    break;  };  } 80358c6:	e8bd 4008 	ldmia.w	sp!, {r3, lr}      }    break;    case 3: /* RebootSignal */      val = *((s32_t*)value);      if (val == 1)        HTTP_StartResetTask(false); 80358ca:	f7f6 bef9 	b.w	802c6c0 <HTTP_StartResetTask>    break;	case 5: /* DO1 */	  if(sSettings.sInOuts.ro_type_source[0] == SNMP_SET){ 80358ce:	4b0d      	ldr	r3, [pc, #52]	; (8035904 <signals_set_value+0x70>) 80358d0:	f893 3378 	ldrb.w	r3, [r3, #888]	; 0x378 80358d4:	2b03      	cmp	r3, #3 80358d6:	d113      	bne.n	8035900 <signals_set_value+0x6c>		  val_string = (char*)value;		  SetROStr(val_string, 0); 80358d8:	4610      	mov	r0, r2 80358da:	2100      	movs	r1, #0 80358dc:	f7f2 fd6c 	bl	80283b8 <SetROStr>		  SNMP_SendUserTrap(DO0_TOGGLED); 80358e0:	2007      	movs	r0, #7 80358e2:	e009      	b.n	80358f8 <signals_set_value+0x64>	  }	  break;	case 6: /* DO2 */	  if(sSettings.sInOuts.ro_type_source[1] == SNMP_SET){ 80358e4:	4b07      	ldr	r3, [pc, #28]	; (8035904 <signals_set_value+0x70>) 80358e6:	f893 3379 	ldrb.w	r3, [r3, #889]	; 0x379 80358ea:	2b03      	cmp	r3, #3 80358ec:	d108      	bne.n	8035900 <signals_set_value+0x6c>		  val_string = (char*)value;		  SetROStr(val_string, 1); 80358ee:	4610      	mov	r0, r2 80358f0:	2101      	movs	r1, #1 80358f2:	f7f2 fd61 	bl	80283b8 <SetROStr>		  SNMP_SendUserTrap(DO1_TOGGLED); 80358f6:	2008      	movs	r0, #8	  break;    default :    break;  };  } 80358f8:	e8bd 4008 	ldmia.w	sp!, {r3, lr}	  break;	case 6: /* DO2 */	  if(sSettings.sInOuts.ro_type_source[1] == SNMP_SET){		  val_string = (char*)value;		  SetROStr(val_string, 1);		  SNMP_SendUserTrap(DO1_TOGGLED); 80358fc:	f000 b83c 	b.w	8035978 <SNMP_SendUserTrap> 8035900:	bd08      	pop	{r3, pc} 8035902:	bf00      	nop 8035904:	2000e984 	.word	0x2000e98408035908 <signals_set_test>: \param  value - указатель на значение переменной \return 0 - некорректное значение         1 - корректное значение------------------------------------------------------------------------------*/static u8_t signals_set_test (struct obj_def *od, u16_t len, void *value){ 8035908:	b508      	push	{r3, lr}  u8_t id, set_ok;  char *val_string;  LWIP_UNUSED_ARG(value);  set_ok = 0;  id = od->id_inst_ptr[0]; 803590a:	6883      	ldr	r3, [r0, #8]    switch (id) 803590c:	781b      	ldrb	r3, [r3, #0] 803590e:	3b02      	subs	r3, #2 8035910:	2b04      	cmp	r3, #4 8035912:	d81f      	bhi.n	8035954 <signals_set_test+0x4c> 8035914:	e8df f003 	tbb	[pc, r3] 8035918:	051e0303 	.word	0x051e0303 803591c:	14          	.byte	0x14 803591d:	00          	.byte	0x00{  u8_t id, set_ok;  char *val_string;  LWIP_UNUSED_ARG(value);  set_ok = 0; 803591e:	2904      	cmp	r1, #4 8035920:	e00a      	b.n	8035938 <signals_set_test+0x30>      {        set_ok = 1;      }      break; 	case 5: /* DO1 */		if ( len >= 1 ) 8035922:	b901      	cbnz	r1, 8035926 <signals_set_test+0x1e> 8035924:	e016      	b.n	8035954 <signals_set_test+0x4c>	    {		   val_string = (char*)value;		   if(atoi(val_string) <= 1){ 8035926:	4610      	mov	r0, r2 8035928:	f7eb ffaa 	bl	8021880 <atoi> 803592c:	2801      	cmp	r0, #1 803592e:	dc11      	bgt.n	8035954 <signals_set_test+0x4c>			   if(sSettings.sInOuts.ro_type_source[0] == SNMP_SET) 8035930:	4b09      	ldr	r3, [pc, #36]	; (8035958 <signals_set_test+0x50>) 8035932:	f893 0378 	ldrb.w	r0, [r3, #888]	; 0x378{  u8_t id, set_ok;  char *val_string;  LWIP_UNUSED_ARG(value);  set_ok = 0; 8035936:	2803      	cmp	r0, #3 8035938:	bf14      	ite	ne 803593a:	2000      	movne	r0, #0 803593c:	2001      	moveq	r0, #1 803593e:	bd08      	pop	{r3, pc}				   set_ok = 1;		   }	    }	  break;	case 6: /* DO2 */		if ( len >= 1 ) 8035940:	b141      	cbz	r1, 8035954 <signals_set_test+0x4c>		{		   val_string = (char*)value;		   if(atoi(val_string) <= 1){ 8035942:	4610      	mov	r0, r2 8035944:	f7eb ff9c 	bl	8021880 <atoi> 8035948:	2801      	cmp	r0, #1 803594a:	dc03      	bgt.n	8035954 <signals_set_test+0x4c>			   if(sSettings.sInOuts.ro_type_source[1] == SNMP_SET) 803594c:	4b02      	ldr	r3, [pc, #8]	; (8035958 <signals_set_test+0x50>) 803594e:	f893 0379 	ldrb.w	r0, [r3, #889]	; 0x379 8035952:	e7f0      	b.n	8035936 <signals_set_test+0x2e>{  u8_t id, set_ok;  char *val_string;  LWIP_UNUSED_ARG(value);  set_ok = 0; 8035954:	2000      	movs	r0, #0	  break;  };    return set_ok;} 8035956:	bd08      	pop	{r3, pc} 8035958:	2000e984 	.word	0x2000e9840803595c <SNMP_SysUpTimeTask>:/**  * @brief  Системный тик SNMP. Таск должен вызываться с частотой 100Гц.  * @retval   */void SNMP_SysUpTimeTask(void *arg){ 803595c:	b513      	push	{r0, r1, r4, lr}  TickType_t xLastWakeTime;  const TickType_t xFrequency = 10;    xLastWakeTime = xTaskGetTickCount(); 803595e:	f7f4 f96f 	bl	8029c40 <xTaskGetTickCount> 8035962:	ac02      	add	r4, sp, #8 8035964:	f844 0d04 	str.w	r0, [r4, #-4]!    while(1)  {	vTaskDelayUntil( &xLastWakeTime, xFrequency ); 8035968:	4620      	mov	r0, r4 803596a:	210a      	movs	r1, #10 803596c:	f7f4 facc 	bl	8029f08 <vTaskDelayUntil>    snmp_inc_sysuptime(); 8035970:	f7fc fb7c 	bl	803206c <snmp_inc_sysuptime> 8035974:	e7f8      	b.n	8035968 <SNMP_SysUpTimeTask+0xc> 8035976:	0000      	movs	r0, r008035978 <SNMP_SendUserTrap>:  *         FIFO буфера.   *         Если в настройках трапа отправка отключена, то трап игнорируется.  * @retval   */void SNMP_SendUserTrap(uint8_t trapName){ 8035978:	b51f      	push	{r0, r1, r2, r3, r4, lr}  uint16_t availableSpace;  uint8_t  dummyTrap;    if (traps[trapName].trapEnable) 803597a:	4b0d      	ldr	r3, [pc, #52]	; (80359b0 <SNMP_SendUserTrap+0x38>)  *         FIFO буфера.   *         Если в настройках трапа отправка отключена, то трап игнорируется.  * @retval   */void SNMP_SendUserTrap(uint8_t trapName){ 803597c:	f88d 0007 	strb.w	r0, [sp, #7]  uint16_t availableSpace;  uint8_t  dummyTrap;    if (traps[trapName].trapEnable) 8035980:	eb03 00c0 	add.w	r0, r3, r0, lsl #3 8035984:	78c3      	ldrb	r3, [r0, #3] 8035986:	b193      	cbz	r3, 80359ae <SNMP_SendUserTrap+0x36>  {	    availableSpace = uxQueueSpacesAvailable(SNMP_TrapQueue); 8035988:	4c0a      	ldr	r4, [pc, #40]	; (80359b4 <SNMP_SendUserTrap+0x3c>) 803598a:	6820      	ldr	r0, [r4, #0] 803598c:	f7f3 ff89 	bl	80298a2 <uxQueueSpacesAvailable>      if (availableSpace == 0) 8035990:	b282      	uxth	r2, r0 8035992:	b92a      	cbnz	r2, 80359a0 <SNMP_SendUserTrap+0x28>	  xQueueReceive(SNMP_TrapQueue, &dummyTrap, 0); 8035994:	6820      	ldr	r0, [r4, #0] 8035996:	f10d 010f 	add.w	r1, sp, #15 803599a:	4613      	mov	r3, r2 803599c:	f7f3 fede 	bl	802975c <xQueueGenericReceive>      xQueueSend(SNMP_TrapQueue, &trapName, 0); 80359a0:	2200      	movs	r2, #0 80359a2:	6820      	ldr	r0, [r4, #0] 80359a4:	f10d 0107 	add.w	r1, sp, #7 80359a8:	4613      	mov	r3, r2 80359aa:	f7f3 fd97 	bl	80294dc <xQueueGenericSend>  }} 80359ae:	bd1f      	pop	{r0, r1, r2, r3, r4, pc} 80359b0:	2001147c 	.word	0x2001147c 80359b4:	20011478 	.word	0x20011478080359b8 <SNMP_SetObjDescr>:  * @brief  Установить SNMP Descriptor  * @retval   */// TODOvoid SNMP_SetObjDescr(void){ 80359b8:	b538      	push	{r3, r4, r5, lr}  static uint8_t len;    strcpy(sSettings.sSnmp.sysDescr, sSettings.sSnmp.sysName); 80359ba:	4c15      	ldr	r4, [pc, #84]	; (8035a10 <SNMP_SetObjDescr+0x58>)  strcat(sSettings.sSnmp.sysDescr, " "); 80359bc:	4d15      	ldr	r5, [pc, #84]	; (8035a14 <SNMP_SetObjDescr+0x5c>)// TODOvoid SNMP_SetObjDescr(void){  static uint8_t len;    strcpy(sSettings.sSnmp.sysDescr, sSettings.sSnmp.sysName); 80359be:	f104 01fa 	add.w	r1, r4, #250	; 0xfa 80359c2:	4620      	mov	r0, r4 80359c4:	f7ec f9f6 	bl	8021db4 <strcpy>  strcat(sSettings.sSnmp.sysDescr, " "); 80359c8:	4629      	mov	r1, r5 80359ca:	4620      	mov	r0, r4 80359cc:	f7ec f8de 	bl	8021b8c <strcat>  strcat(sSettings.sSnmp.sysDescr, VERSION); 80359d0:	4620      	mov	r0, r4 80359d2:	4911      	ldr	r1, [pc, #68]	; (8035a18 <SNMP_SetObjDescr+0x60>) 80359d4:	f7ec f8da 	bl	8021b8c <strcat>  strcat(sSettings.sSnmp.sysDescr, " "); 80359d8:	4629      	mov	r1, r5 80359da:	4620      	mov	r0, r4 80359dc:	f7ec f8d6 	bl	8021b8c <strcat>  strcat(sSettings.sSnmp.sysDescr, sSettings.sSnmp.sysContact); 80359e0:	f104 01c8 	add.w	r1, r4, #200	; 0xc8 80359e4:	4620      	mov	r0, r4 80359e6:	f7ec f8d1 	bl	8021b8c <strcat>  strcat(sSettings.sSnmp.sysDescr, " "); 80359ea:	4629      	mov	r1, r5 80359ec:	4620      	mov	r0, r4 80359ee:	f7ec f8cd 	bl	8021b8c <strcat>  strcat(sSettings.sSnmp.sysDescr, sSettings.sInfo.serialNumber); 80359f2:	490a      	ldr	r1, [pc, #40]	; (8035a1c <SNMP_SetObjDescr+0x64>) 80359f4:	4620      	mov	r0, r4 80359f6:	f7ec f8c9 	bl	8021b8c <strcat>    len = strlen(sSettings.sSnmp.sysDescr); 80359fa:	4620      	mov	r0, r4 80359fc:	f7ec fa38 	bl	8021e70 <strlen> 8035a00:	4907      	ldr	r1, [pc, #28]	; (8035a20 <SNMP_SetObjDescr+0x68>) 8035a02:	7008      	strb	r0, [r1, #0]  snmp_set_sysdesr((u8_t*)sSettings.sSnmp.sysDescr, &len); 8035a04:	4620      	mov	r0, r4} 8035a06:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}  strcat(sSettings.sSnmp.sysDescr, sSettings.sSnmp.sysContact);  strcat(sSettings.sSnmp.sysDescr, " ");  strcat(sSettings.sSnmp.sysDescr, sSettings.sInfo.serialNumber);    len = strlen(sSettings.sSnmp.sysDescr);  snmp_set_sysdesr((u8_t*)sSettings.sSnmp.sysDescr, &len); 8035a0a:	f7fc bb1b 	b.w	8032044 <snmp_set_sysdesr> 8035a0e:	bf00      	nop 8035a10:	2000e9e8 	.word	0x2000e9e8 8035a14:	08036e41 	.word	0x08036e41 8035a18:	08036d64 	.word	0x08036d64 8035a1c:	2000ec02 	.word	0x2000ec02 8035a20:	2000e595 	.word	0x2000e59508035a24 <SNMP_SetReadCommunity>:/**  * @brief  Установить SNMP Community для чтения  */void SNMP_SetReadCommunity(char *comm){ 8035a24:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.readCommunity, comm); 8035a26:	4801      	ldr	r0, [pc, #4]	; (8035a2c <SNMP_SetReadCommunity+0x8>) 8035a28:	f7ec b9c4 	b.w	8021db4 <strcpy> 8035a2c:	2000ea88 	.word	0x2000ea8808035a30 <SNMP_SetWriteCommunity>:/**  * @brief  Установить SNMP Community для записи  */void SNMP_SetWriteCommunity(char *comm){ 8035a30:	4601      	mov	r1, r0  strcpy(sSettings.sSnmp.writeCommunity, comm); 8035a32:	4801      	ldr	r0, [pc, #4]	; (8035a38 <SNMP_SetWriteCommunity+0x8>) 8035a34:	f7ec b9be 	b.w	8021db4 <strcpy> 8035a38:	2000ea9c 	.word	0x2000ea9c08035a3c <SNMP_SetSysContact>:/**  * @brief  Установить SNMP SysContact  * @retval   */void SNMP_SetSysContact(char *con){ 8035a3c:	b510      	push	{r4, lr} 8035a3e:	4604      	mov	r4, r0  static uint8_t len;    len = strlen(con); 8035a40:	f7ec fa16 	bl	8021e70 <strlen> 8035a44:	4903      	ldr	r1, [pc, #12]	; (8035a54 <SNMP_SetSysContact+0x18>) 8035a46:	7008      	strb	r0, [r1, #0]  snmp_set_syscontact((u8_t*)con, &len); 8035a48:	4620      	mov	r0, r4} 8035a4a:	e8bd 4010 	ldmia.w	sp!, {r4, lr}void SNMP_SetSysContact(char *con){  static uint8_t len;    len = strlen(con);  snmp_set_syscontact((u8_t*)con, &len); 8035a4e:	f7fc bb5d 	b.w	803210c <snmp_set_syscontact> 8035a52:	bf00      	nop 8035a54:	2000e596 	.word	0x2000e59608035a58 <SNMP_SetSysName>:/**  * @brief  Установить SNMP SysName  * @retval   */void SNMP_SetSysName(char *name){ 8035a58:	b510      	push	{r4, lr} 8035a5a:	4604      	mov	r4, r0  static uint8_t len;    len = strlen(name); 8035a5c:	f7ec fa08 	bl	8021e70 <strlen> 8035a60:	4903      	ldr	r1, [pc, #12]	; (8035a70 <SNMP_SetSysName+0x18>) 8035a62:	7008      	strb	r0, [r1, #0]  snmp_set_sysname((u8_t*)name, &len); 8035a64:	4620      	mov	r0, r4} 8035a66:	e8bd 4010 	ldmia.w	sp!, {r4, lr}void SNMP_SetSysName(char *name){  static uint8_t len;    len = strlen(name);  snmp_set_sysname((u8_t*)name, &len); 8035a6a:	f7fc bb59 	b.w	8032120 <snmp_set_sysname> 8035a6e:	bf00      	nop 8035a70:	2000e598 	.word	0x2000e59808035a74 <SNMP_SetSysLocation>:/**  * @brief  Установить SNMP SysLocation  * @retval   */void SNMP_SetSysLocation(char *loc){ 8035a74:	b510      	push	{r4, lr} 8035a76:	4604      	mov	r4, r0  static uint8_t len;    len = strlen(loc); 8035a78:	f7ec f9fa 	bl	8021e70 <strlen> 8035a7c:	4903      	ldr	r1, [pc, #12]	; (8035a8c <SNMP_SetSysLocation+0x18>) 8035a7e:	7008      	strb	r0, [r1, #0]  snmp_set_syslocation((u8_t*)loc, &len); 8035a80:	4620      	mov	r0, r4} 8035a82:	e8bd 4010 	ldmia.w	sp!, {r4, lr}void SNMP_SetSysLocation(char *loc){  static uint8_t len;    len = strlen(loc);  snmp_set_syslocation((u8_t*)loc, &len); 8035a86:	f7fc bb55 	b.w	8032134 <snmp_set_syslocation> 8035a8a:	bf00      	nop 8035a8c:	2000e597 	.word	0x2000e59708035a90 <SNMP_SetManagerIP>:/**  * @brief  Установить SNMP SysManagerIP  * @retval   */void SNMP_SetManagerIP(char *ip){ 8035a90:	b510      	push	{r4, lr}  static ip_addr_t trap_addr;    ipaddr_aton(ip, &trap_addr); 8035a92:	4c05      	ldr	r4, [pc, #20]	; (8035aa8 <SNMP_SetManagerIP+0x18>) 8035a94:	4621      	mov	r1, r4 8035a96:	f7fa fea0 	bl	80307da <ipaddr_aton>  snmp_trap_dst_ip_set(0, &trap_addr); 8035a9a:	2000      	movs	r0, #0 8035a9c:	4621      	mov	r1, r4} 8035a9e:	e8bd 4010 	ldmia.w	sp!, {r4, lr}void SNMP_SetManagerIP(char *ip){  static ip_addr_t trap_addr;    ipaddr_aton(ip, &trap_addr);  snmp_trap_dst_ip_set(0, &trap_addr); 8035aa2:	f7fe bc59 	b.w	8034358 <snmp_trap_dst_ip_set> 8035aa6:	bf00      	nop 8035aa8:	2000e59c 	.word	0x2000e59c08035aac <snmp_trap_tread>:/**  * @brief  Тестовый таск для проверки отправки трапов  * @retval   */void snmp_trap_tread(void *arg){ 8035aac:	b537      	push	{r0, r1, r2, r4, r5, lr}  uint8_t trapName;	  while(1)  {    if (xQueueReceive(SNMP_TrapQueue, &trapName, 0) == pdTRUE) 8035aae:	4d13      	ldr	r5, [pc, #76]	; (8035afc <snmp_trap_tread+0x50>)	{      SNMP_SetManagerIP(sSettings.sSnmp.managerIP);	  SNMP_SendVarbindTrap(&traps[trapName]); 8035ab0:	4c13      	ldr	r4, [pc, #76]	; (8035b00 <snmp_trap_tread+0x54>){  uint8_t trapName;	  while(1)  {    if (xQueueReceive(SNMP_TrapQueue, &trapName, 0) == pdTRUE) 8035ab2:	2200      	movs	r2, #0 8035ab4:	6828      	ldr	r0, [r5, #0] 8035ab6:	f10d 0107 	add.w	r1, sp, #7 8035aba:	4613      	mov	r3, r2 8035abc:	f7f3 fe4e 	bl	802975c <xQueueGenericReceive> 8035ac0:	2801      	cmp	r0, #1 8035ac2:	d1f6      	bne.n	8035ab2 <snmp_trap_tread+0x6>	{      SNMP_SetManagerIP(sSettings.sSnmp.managerIP); 8035ac4:	480f      	ldr	r0, [pc, #60]	; (8035b04 <snmp_trap_tread+0x58>) 8035ac6:	f7ff ffe3 	bl	8035a90 <SNMP_SetManagerIP>	  SNMP_SendVarbindTrap(&traps[trapName]); 8035aca:	f89d 0007 	ldrb.w	r0, [sp, #7] 8035ace:	eb04 00c0 	add.w	r0, r4, r0, lsl #3 8035ad2:	f000 fa2d 	bl	8035f30 <SNMP_SendVarbindTrap>            SNMP_SetManagerIP(sSettings.sSnmp.managerIP2); 8035ad6:	480c      	ldr	r0, [pc, #48]	; (8035b08 <snmp_trap_tread+0x5c>) 8035ad8:	f7ff ffda 	bl	8035a90 <SNMP_SetManagerIP>	  SNMP_SendVarbindTrap(&traps[trapName]); 8035adc:	f89d 0007 	ldrb.w	r0, [sp, #7] 8035ae0:	eb04 00c0 	add.w	r0, r4, r0, lsl #3 8035ae4:	f000 fa24 	bl	8035f30 <SNMP_SendVarbindTrap>            SNMP_SetManagerIP(sSettings.sSnmp.managerIP3); 8035ae8:	4808      	ldr	r0, [pc, #32]	; (8035b0c <snmp_trap_tread+0x60>) 8035aea:	f7ff ffd1 	bl	8035a90 <SNMP_SetManagerIP>	  SNMP_SendVarbindTrap(&traps[trapName]); 8035aee:	f89d 0007 	ldrb.w	r0, [sp, #7] 8035af2:	eb04 00c0 	add.w	r0, r4, r0, lsl #3 8035af6:	f000 fa1b 	bl	8035f30 <SNMP_SendVarbindTrap> 8035afa:	e7da      	b.n	8035ab2 <snmp_trap_tread+0x6> 8035afc:	20011478 	.word	0x20011478 8035b00:	2001147c 	.word	0x2001147c 8035b04:	2000eb64 	.word	0x2000eb64 8035b08:	2000eb78 	.word	0x2000eb78 8035b0c:	2000eb8c 	.word	0x2000eb8c08035b10 <SNMP_SetObjID>:  */void SNMP_SetObjID(void){  static struct snmp_obj_id my_object_id = {9, {1, 3, 6, 1, 4, 1, 41752, 911, 3}};    snmp_set_sysobjid(&my_object_id); 8035b10:	4801      	ldr	r0, [pc, #4]	; (8035b18 <SNMP_SetObjID+0x8>) 8035b12:	f7fc baa1 	b.w	8032058 <snmp_set_sysobjid> 8035b16:	bf00      	nop 8035b18:	20001904 	.word	0x2000190408035b1c <SNMP_SetTrapOnOff>:/**  * @brief  Вкл/выкл трапы  * @retval   */void SNMP_SetTrapOnOff(uint8_t state){ 8035b1c:	4601      	mov	r1, r0  snmp_trap_dst_enable(0, (u8_t)state); 8035b1e:	2000      	movs	r0, #0 8035b20:	f7fe bc14 	b.w	803434c <snmp_trap_dst_enable>08035b24 <SNMP_AgentInit>:/**  * @brief  Инициализация SNMP агента  * @retval   */void SNMP_AgentInit(void){ 8035b24:	b510      	push	{r4, lr}  SNMP_SetObjDescr();  SNMP_SetReadCommunity(sSettings.sSnmp.readCommunity); 8035b26:	4c16      	ldr	r4, [pc, #88]	; (8035b80 <SNMP_AgentInit+0x5c>)  * @brief  Инициализация SNMP агента  * @retval   */void SNMP_AgentInit(void){  SNMP_SetObjDescr(); 8035b28:	f7ff ff46 	bl	80359b8 <SNMP_SetObjDescr>  SNMP_SetReadCommunity(sSettings.sSnmp.readCommunity); 8035b2c:	4620      	mov	r0, r4 8035b2e:	f7ff ff79 	bl	8035a24 <SNMP_SetReadCommunity>  SNMP_SetWriteCommunity(sSettings.sSnmp.writeCommunity); 8035b32:	f104 0014 	add.w	r0, r4, #20 8035b36:	f7ff ff7b 	bl	8035a30 <SNMP_SetWriteCommunity>  SNMP_SetSysContact(sSettings.sSnmp.sysContact); 8035b3a:	f104 0028 	add.w	r0, r4, #40	; 0x28 8035b3e:	f7ff ff7d 	bl	8035a3c <SNMP_SetSysContact>  SNMP_SetSysName(sSettings.sSnmp.sysName); 8035b42:	f104 005a 	add.w	r0, r4, #90	; 0x5a 8035b46:	f7ff ff87 	bl	8035a58 <SNMP_SetSysName>  SNMP_SetSysLocation(sSettings.sSnmp.sysLocation); 8035b4a:	f104 006e 	add.w	r0, r4, #110	; 0x6e 8035b4e:	f7ff ff91 	bl	8035a74 <SNMP_SetSysLocation>  SNMP_SetManagerIP(sSettings.sSnmp.managerIP); 8035b52:	f104 00dc 	add.w	r0, r4, #220	; 0xdc 8035b56:	f7ff ff9b 	bl	8035a90 <SNMP_SetManagerIP>  SNMP_SetObjID(); 8035b5a:	f7ff ffd9 	bl	8035b10 <SNMP_SetObjID>  SNMP_SetTrapOnOff(1); 8035b5e:	2001      	movs	r0, #1 8035b60:	f7ff ffdc 	bl	8035b1c <SNMP_SetTrapOnOff>    SNMP_InitTrapsBase(); 8035b64:	f000 f928 	bl	8035db8 <SNMP_InitTrapsBase>	  snmp_init(); 8035b68:	f7fd facc 	bl	8033104 <snmp_init>  udp_init(); 8035b6c:	f7fa fb0c 	bl	8030188 <udp_init>    SNMP_TrapQueue = xQueueCreate(SNMP_TRAP_QUEUE_SIZE, sizeof(uint8_t)); 8035b70:	2064      	movs	r0, #100	; 0x64 8035b72:	2101      	movs	r1, #1 8035b74:	2200      	movs	r2, #0 8035b76:	f7f3 fc74 	bl	8029462 <xQueueGenericCreate> 8035b7a:	4b02      	ldr	r3, [pc, #8]	; (8035b84 <SNMP_AgentInit+0x60>) 8035b7c:	6018      	str	r0, [r3, #0] 8035b7e:	bd10      	pop	{r4, pc} 8035b80:	2000ea88 	.word	0x2000ea88 8035b84:	20011478 	.word	0x2001147808035b88 <SNMP_Init>:  * @retval   */void SNMP_Init(void){  //SETTINGS_SetSnmpDef();  SNMP_AgentInit(); 8035b88:	f7ff bfcc 	b.w	8035b24 <SNMP_AgentInit> 8035b8c:	0000      	movs	r0, r0 8035b8e:	0000      	movs	r0, r008035b90 <recv>:  SNTP_Enable(sSettings.sSNTP.sntpEnable);}static void recv(void *arg, struct udp_pcb *upcb, struct pbuf *p, 				 struct ip_addr *addr, u16_t port){ 8035b90:	b570      	push	{r4, r5, r6, lr} 8035b92:	4616      	mov	r6, r2  time_t t;  int utcSec = 0;  TM_RTC_t data;    if (p->len == sizeof(struct sntp_packet)) 8035b94:	8952      	ldrh	r2, [r2, #10] 8035b96:	2a30      	cmp	r2, #48	; 0x30  SNTP_Enable(sSettings.sSNTP.sntpEnable);}static void recv(void *arg, struct udp_pcb *upcb, struct pbuf *p, 				 struct ip_addr *addr, u16_t port){ 8035b98:	b094      	sub	sp, #80	; 0x50  time_t t;  int utcSec = 0;  TM_RTC_t data;    if (p->len == sizeof(struct sntp_packet)) 8035b9a:	d149      	bne.n	8035c30 <recv+0xa0>  {    int i;    struct sntp_packet aligned;    //myassert(p->len == p->tot_len); /* don't accept chained pbuf */    memcpy(&aligned, p->payload, sizeof(aligned)); 8035b9c:	a808      	add	r0, sp, #32 8035b9e:	6871      	ldr	r1, [r6, #4] 8035ba0:	f7eb fed4 	bl	802194c <memcpy>    i = (aligned.status >> 3) & 7; 8035ba4:	f89d 3020 	ldrb.w	r3, [sp, #32]    	if ((i < 1) || (i > 4)) /* SNTP version 1..4 */ 8035ba8:	f3c3 02c2 	ubfx	r2, r3, #3, #3 8035bac:	3a01      	subs	r2, #1 8035bae:	2a03      	cmp	r2, #3 8035bb0:	d83e      	bhi.n	8035c30 <recv+0xa0>      goto out;    i = aligned.status & 7;	if ((i != 4) && (i != 5)) /* mode 4 or 5: server or broadcast */ 8035bb2:	f003 0307 	and.w	r3, r3, #7 8035bb6:	3b04      	subs	r3, #4 8035bb8:	2b01      	cmp	r3, #1 8035bba:	d839      	bhi.n	8035c30 <recv+0xa0>      goto out;	if (aligned.xmt == 0) 8035bbc:	e9dd 4512 	ldrd	r4, r5, [sp, #72]	; 0x48 8035bc0:	ea54 0305 	orrs.w	r3, r4, r5 8035bc4:	d034      	beq.n	8035c30 <recv+0xa0>      goto out;		utcSec = (int)(3600.0*sSettings.sSNTP.timeZone); 8035bc6:	4b20      	ldr	r3, [pc, #128]	; (8035c48 <recv+0xb8>) 8035bc8:	f8d3 0374 	ldr.w	r0, [r3, #884]	; 0x374 8035bcc:	f7ea fca4 	bl	8020518 <__aeabi_f2d> 8035bd0:	a31b      	add	r3, pc, #108	; (adr r3, 8035c40 <recv+0xb0>) 8035bd2:	e9d3 2300 	ldrd	r2, r3, [r3] 8035bd6:	f7ea fcf3 	bl	80205c0 <__aeabi_dmul> 8035bda:	f7ea ff8b 	bl	8020af4 <__aeabi_d2iz> 8035bde:	4605      	mov	r5, r0	t = (ntohl(aligned.xmt) - 2208988800 + utcSec ); 8035be0:	4620      	mov	r0, r4 8035be2:	f7f6 fe15 	bl	802c810 <lwip_ntohl> 8035be6:	4b19      	ldr	r3, [pc, #100]	; (8035c4c <recv+0xbc>) 8035be8:	18eb      	adds	r3, r5, r3		TM_RTC_SetDataTimeUnix((uint32_t)t); 8035bea:	1818      	adds	r0, r3, r0 8035bec:	f7f0 fd68 	bl	80266c0 <TM_RTC_SetDataTimeUnix>		/* Сохраним время последней синхронизации */	TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN); 8035bf0:	a804      	add	r0, sp, #16 8035bf2:	2100      	movs	r1, #0 8035bf4:	f7f0 fc48 	bl	8026488 <TM_RTC_GetDateTime>			memset(sSettings.sSNTP.data, 0, sizeof(sSettings.sSNTP.data)); 8035bf8:	2100      	movs	r1, #0 8035bfa:	221e      	movs	r2, #30 8035bfc:	4814      	ldr	r0, [pc, #80]	; (8035c50 <recv+0xc0>) 8035bfe:	f7eb ff5f 	bl	8021ac0 <memset>		sprintf(sSettings.sSNTP.data, "%02d.%02d.%02d %02d:%02d:%02d",  8035c02:	f89d 1019 	ldrb.w	r1, [sp, #25] 8035c06:	f89d 2017 	ldrb.w	r2, [sp, #23] 8035c0a:	9100      	str	r1, [sp, #0] 8035c0c:	f89d 1015 	ldrb.w	r1, [sp, #21] 8035c10:	f89d 3018 	ldrb.w	r3, [sp, #24] 8035c14:	9101      	str	r1, [sp, #4] 8035c16:	f89d 1014 	ldrb.w	r1, [sp, #20] 8035c1a:	480d      	ldr	r0, [pc, #52]	; (8035c50 <recv+0xc0>) 8035c1c:	9102      	str	r1, [sp, #8] 8035c1e:	f89d 1010 	ldrb.w	r1, [sp, #16] 8035c22:	9103      	str	r1, [sp, #12] 8035c24:	490b      	ldr	r1, [pc, #44]	; (8035c54 <recv+0xc4>) 8035c26:	f7f1 fdbb 	bl	80277a0 <tfp_sprintf>			data.date, data.month, data.year,			data.hours, data.minutes, data.seconds);	    timeout = VALID_TIMEOUT; 8035c2a:	4a0b      	ldr	r2, [pc, #44]	; (8035c58 <recv+0xc8>) 8035c2c:	4b0b      	ldr	r3, [pc, #44]	; (8035c5c <recv+0xcc>) 8035c2e:	601a      	str	r2, [r3, #0]      }  out:    pbuf_free(p); 8035c30:	4630      	mov	r0, r6 8035c32:	f7f7 ff1f 	bl	802da74 <pbuf_free>} 8035c36:	b014      	add	sp, #80	; 0x50 8035c38:	bd70      	pop	{r4, r5, r6, pc} 8035c3a:	bf00      	nop 8035c3c:	f3af 8000 	nop.w 8035c40:	00000000 	.word	0x00000000 8035c44:	40ac2000 	.word	0x40ac2000 8035c48:	2000e984 	.word	0x2000e984 8035c4c:	7c558180 	.word	0x7c558180 8035c50:	2000ecd9 	.word	0x2000ecd9 8035c54:	08041e90 	.word	0x08041e90 8035c58:	01b77400 	.word	0x01b77400 8035c5c:	2000e5a8 	.word	0x2000e5a808035c60 <SNTP_Enable>:void SNTP_Enable(bool enable){ 8035c60:	b538      	push	{r3, r4, r5, lr}  if (enable) 8035c62:	4605      	mov	r5, r0 8035c64:	4c0f      	ldr	r4, [pc, #60]	; (8035ca4 <SNTP_Enable+0x44>) 8035c66:	b1b8      	cbz	r0, 8035c98 <SNTP_Enable+0x38>  {    if (upcb == 0) 8035c68:	6825      	ldr	r5, [r4, #0] 8035c6a:	b9d5      	cbnz	r5, 8035ca2 <SNTP_Enable+0x42>    {      err_t ret;      upcb = udp_new(); 8035c6c:	f7fa fc6a 	bl	8030544 <udp_new> 8035c70:	6020      	str	r0, [r4, #0]      if (upcb != 0) 8035c72:	b1b0      	cbz	r0, 8035ca2 <SNTP_Enable+0x42>	  {		ret = udp_bind(upcb, IP_ADDR_ANY, port); 8035c74:	227b      	movs	r2, #123	; 0x7b 8035c76:	490c      	ldr	r1, [pc, #48]	; (8035ca8 <SNTP_Enable+0x48>) 8035c78:	f7fa fb4c 	bl	8030314 <udp_bind>	    if (ret != ERR_OK) 8035c7c:	4602      	mov	r2, r0        {          udp_remove(upcb); 8035c7e:	6820      	ldr	r0, [r4, #0]      upcb = udp_new();      if (upcb != 0)	  {		ret = udp_bind(upcb, IP_ADDR_ANY, port);	    if (ret != ERR_OK) 8035c80:	b11a      	cbz	r2, 8035c8a <SNTP_Enable+0x2a>        {          udp_remove(upcb); 8035c82:	f7fa fc43 	bl	803050c <udp_remove>          upcb = 0; 8035c86:	6025      	str	r5, [r4, #0] 8035c88:	e002      	b.n	8035c90 <SNTP_Enable+0x30>        }        else        {          udp_recv(upcb, recv, 0); 8035c8a:	4908      	ldr	r1, [pc, #32]	; (8035cac <SNTP_Enable+0x4c>) 8035c8c:	f7fa fc3a 	bl	8030504 <udp_recv>        }        timeout = 0; 8035c90:	4b07      	ldr	r3, [pc, #28]	; (8035cb0 <SNTP_Enable+0x50>) 8035c92:	2200      	movs	r2, #0 8035c94:	601a      	str	r2, [r3, #0] 8035c96:	bd38      	pop	{r3, r4, r5, pc}	  }    }  }  else if (upcb != 0) 8035c98:	6820      	ldr	r0, [r4, #0] 8035c9a:	b110      	cbz	r0, 8035ca2 <SNTP_Enable+0x42>  {    udp_remove(upcb); 8035c9c:	f7fa fc36 	bl	803050c <udp_remove>    upcb = 0; 8035ca0:	6025      	str	r5, [r4, #0] 8035ca2:	bd38      	pop	{r3, r4, r5, pc} 8035ca4:	2000e5a4 	.word	0x2000e5a4 8035ca8:	080413b4 	.word	0x080413b4 8035cac:	08035b91 	.word	0x08035b91 8035cb0:	2000e5a8 	.word	0x2000e5a808035cb4 <SNTP_SetServerAddr>:{  return upcb != 0;}void SNTP_SetServerAddr(char *addr){ 8035cb4:	b508      	push	{r3, lr}  server.addr = ipaddr_addr(addr); 8035cb6:	f7fa fe0e 	bl	80308d6 <ipaddr_addr> 8035cba:	4b01      	ldr	r3, [pc, #4]	; (8035cc0 <SNTP_SetServerAddr+0xc>) 8035cbc:	6018      	str	r0, [r3, #0] 8035cbe:	bd08      	pop	{r3, pc} 8035cc0:	2000e5a0 	.word	0x2000e5a008035cc4 <SNTP_Init>:/**  * @brief  Инициализация SNTP.  * @retval   */void SNTP_Init(void){ 8035cc4:	b508      	push	{r3, lr}      SNTP_SetServerAddr(sSettings.sSNTP.ip); 8035cc6:	4805      	ldr	r0, [pc, #20]	; (8035cdc <SNTP_Init+0x18>) 8035cc8:	f7ff fff4 	bl	8035cb4 <SNTP_SetServerAddr>  SNTP_Enable(sSettings.sSNTP.sntpEnable); 8035ccc:	4b04      	ldr	r3, [pc, #16]	; (8035ce0 <SNTP_Init+0x1c>) 8035cce:	f893 0344 	ldrb.w	r0, [r3, #836]	; 0x344} 8035cd2:	e8bd 4008 	ldmia.w	sp!, {r3, lr}void SNTP_Init(void){      SNTP_SetServerAddr(sSettings.sSNTP.ip);  SNTP_Enable(sSettings.sSNTP.sntpEnable); 8035cd6:	f7ff bfc3 	b.w	8035c60 <SNTP_Enable> 8035cda:	bf00      	nop 8035cdc:	2000ecc9 	.word	0x2000ecc9 8035ce0:	2000e984 	.word	0x2000e98408035ce4 <SNTP_Poll>:    pbuf_free(psend);  }}void SNTP_Poll(void){ 8035ce4:	b530      	push	{r4, r5, lr}  if (upcb) 8035ce6:	4d15      	ldr	r5, [pc, #84]	; (8035d3c <SNTP_Poll+0x58>) 8035ce8:	682b      	ldr	r3, [r5, #0]    pbuf_free(psend);  }}void SNTP_Poll(void){ 8035cea:	b08d      	sub	sp, #52	; 0x34  if (upcb) 8035cec:	b31b      	cbz	r3, 8035d36 <SNTP_Poll+0x52>static void send_request(void){  struct sntp_packet packet;  struct pbuf* psend;  memset(&packet, 0, sizeof(packet)); 8035cee:	2100      	movs	r1, #0 8035cf0:	2230      	movs	r2, #48	; 0x30 8035cf2:	4668      	mov	r0, sp 8035cf4:	f7eb fee4 	bl	8021ac0 <memset>  packet.status = (3 << 3) /* SNTP vesion 3 */ | (3 << 0); /* Mode: client */ 8035cf8:	231b      	movs	r3, #27  psend = pbuf_alloc(PBUF_RAW, sizeof(packet), PBUF_REF); 8035cfa:	2003      	movs	r0, #3 8035cfc:	2130      	movs	r1, #48	; 0x30 8035cfe:	2202      	movs	r2, #2static void send_request(void){  struct sntp_packet packet;  struct pbuf* psend;  memset(&packet, 0, sizeof(packet));  packet.status = (3 << 3) /* SNTP vesion 3 */ | (3 << 0); /* Mode: client */ 8035d00:	f88d 3000 	strb.w	r3, [sp]  psend = pbuf_alloc(PBUF_RAW, sizeof(packet), PBUF_REF); 8035d04:	f7f7 ff03 	bl	802db0e <pbuf_alloc>    if (psend != 0) 8035d08:	4604      	mov	r4, r0 8035d0a:	b1a0      	cbz	r0, 8035d36 <SNTP_Poll+0x52>  {    psend->payload = &packet; 8035d0c:	ab00      	add	r3, sp, #0 8035d0e:	6043      	str	r3, [r0, #4]    timeout = (udp_sendto(upcb, psend, &server, port) == ERR_OK) ? SENT_TIMEOUT : SENDFAIL_TIMEOUT; 8035d10:	4621      	mov	r1, r4 8035d12:	4a0b      	ldr	r2, [pc, #44]	; (8035d40 <SNTP_Poll+0x5c>) 8035d14:	6828      	ldr	r0, [r5, #0] 8035d16:	237b      	movs	r3, #123	; 0x7b 8035d18:	f7fa fbad 	bl	8030476 <udp_sendto> 8035d1c:	f64e 2360 	movw	r3, #60000	; 0xea60 8035d20:	f241 3288 	movw	r2, #5000	; 0x1388 8035d24:	4907      	ldr	r1, [pc, #28]	; (8035d44 <SNTP_Poll+0x60>) 8035d26:	2800      	cmp	r0, #0 8035d28:	bf14      	ite	ne 8035d2a:	4610      	movne	r0, r2 8035d2c:	4618      	moveq	r0, r3 8035d2e:	6008      	str	r0, [r1, #0]    pbuf_free(psend); 8035d30:	4620      	mov	r0, r4 8035d32:	f7f7 fe9f 	bl	802da74 <pbuf_free>void SNTP_Poll(void){  if (upcb)    send_request();} 8035d36:	b00d      	add	sp, #52	; 0x34 8035d38:	bd30      	pop	{r4, r5, pc} 8035d3a:	bf00      	nop 8035d3c:	2000e5a4 	.word	0x2000e5a4 8035d40:	2000e5a0 	.word	0x2000e5a0 8035d44:	2000e5a8 	.word	0x2000e5a808035d48 <vTaskPeriodicSynchro>:  * @brief  Периодическая синхронизация времени.  *         Выполняется раз в сутки с 0 часов.  * @retval   */void vTaskPeriodicSynchro(void *arg){ 8035d48:	b530      	push	{r4, r5, lr}  static uint8_t fSinhro = 0;    for (;;)   {	vTaskDelay(10000);	if (sSettings.sSNTP.sntpEnable) 8035d4a:	4d0f      	ldr	r5, [pc, #60]	; (8035d88 <vTaskPeriodicSynchro+0x40>)	    fSinhro = 1;		//printf("Periodic time sinhro\n\r");	  }	  	  if (data.hours > 1)	    fSinhro = 0; 8035d4c:	4c0f      	ldr	r4, [pc, #60]	; (8035d8c <vTaskPeriodicSynchro+0x44>)  * @brief  Периодическая синхронизация времени.  *         Выполняется раз в сутки с 0 часов.  * @retval   */void vTaskPeriodicSynchro(void *arg){ 8035d4e:	b085      	sub	sp, #20    static uint8_t fSinhro = 0;    for (;;)   {	vTaskDelay(10000); 8035d50:	f242 7010 	movw	r0, #10000	; 0x2710 8035d54:	f7f4 f8a6 	bl	8029ea4 <vTaskDelay>	if (sSettings.sSNTP.sntpEnable) 8035d58:	f895 3344 	ldrb.w	r3, [r5, #836]	; 0x344 8035d5c:	2b00      	cmp	r3, #0 8035d5e:	d0f7      	beq.n	8035d50 <vTaskPeriodicSynchro+0x8>	{	  TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN); 8035d60:	4668      	mov	r0, sp 8035d62:	2100      	movs	r1, #0 8035d64:	f7f0 fb90 	bl	8026488 <TM_RTC_GetDateTime>	  	  /* Если пришло время синхронизации */	  if ((data.hours == 0) && (fSinhro == 0)) 8035d68:	f89d 3005 	ldrb.w	r3, [sp, #5] 8035d6c:	b92b      	cbnz	r3, 8035d7a <vTaskPeriodicSynchro+0x32> 8035d6e:	7823      	ldrb	r3, [r4, #0] 8035d70:	b91b      	cbnz	r3, 8035d7a <vTaskPeriodicSynchro+0x32>	  {		SNTP_Poll(); 8035d72:	f7ff ffb7 	bl	8035ce4 <SNTP_Poll>	    fSinhro = 1; 8035d76:	2301      	movs	r3, #1 8035d78:	7023      	strb	r3, [r4, #0]		//printf("Periodic time sinhro\n\r");	  }	  	  if (data.hours > 1) 8035d7a:	f89d 3005 	ldrb.w	r3, [sp, #5] 8035d7e:	2b01      	cmp	r3, #1 8035d80:	d9e6      	bls.n	8035d50 <vTaskPeriodicSynchro+0x8>	    fSinhro = 0; 8035d82:	2300      	movs	r3, #0 8035d84:	7023      	strb	r3, [r4, #0] 8035d86:	e7e3      	b.n	8035d50 <vTaskPeriodicSynchro+0x8> 8035d88:	2000e984 	.word	0x2000e984 8035d8c:	2000e5ac 	.word	0x2000e5ac08035d90 <vTaskOnceSynchro>:/**  * @brief  Синхронизация времени единоразово при включении контроллера  * @retval   */void vTaskOnceSynchro(void *arg){ 8035d90:	b538      	push	{r3, r4, r5, lr}  for (;;)   {	if (sSettings.sSNTP.sntpEnable) 8035d92:	4d07      	ldr	r5, [pc, #28]	; (8035db0 <vTaskOnceSynchro+0x20>) 8035d94:	4c07      	ldr	r4, [pc, #28]	; (8035db4 <vTaskOnceSynchro+0x24>) 8035d96:	f895 3344 	ldrb.w	r3, [r5, #836]	; 0x344 8035d9a:	b12b      	cbz	r3, 8035da8 <vTaskOnceSynchro+0x18>	{        vTaskDelay(7000); 8035d9c:	f641 3058 	movw	r0, #7000	; 0x1b58 8035da0:	f7f4 f880 	bl	8029ea4 <vTaskDelay>  	  SNTP_Poll(); 8035da4:	f7ff ff9e 	bl	8035ce4 <SNTP_Poll>	  //printf("Once time sinhro\n\r");	  vTaskDelete(xHandleSntpOnceSinhro);	}	else	  vTaskDelete(xHandleSntpOnceSinhro); 8035da8:	6820      	ldr	r0, [r4, #0] 8035daa:	f7f3 feb9 	bl	8029b20 <vTaskDelete> 8035dae:	e7f2      	b.n	8035d96 <vTaskOnceSynchro+0x6> 8035db0:	2000e984 	.word	0x2000e984 8035db4:	20002928 	.word	0x2000292808035db8 <SNMP_InitTrapsBase>:  * @retval   */void SNMP_InitTrapsBase(void){  /* 1. FWVersionUpdate */ // +  traps[FW_VERSION_UPDATE].trapId = FW_VERSION_UPDATE; 8035db8:	4b53      	ldr	r3, [pc, #332]	; (8035f08 <SNMP_InitTrapsBase+0x150>)  traps[FW_VERSION_UPDATE].varbindId = 1;  traps[FW_VERSION_UPDATE].trapEnable = true;  traps[FW_VERSION_UPDATE].handle = GetVersionStr; /* FWVersion */ 8035dba:	4954      	ldr	r1, [pc, #336]	; (8035f0c <SNMP_InitTrapsBase+0x154>)/**  * @brief  Инициализация базы трапов  * @retval   */void SNMP_InitTrapsBase(void){ 8035dbc:	b570      	push	{r4, r5, r6, lr}  traps[FW_VERSION_UPDATE].varbindId = 1;  traps[FW_VERSION_UPDATE].trapEnable = true;  traps[FW_VERSION_UPDATE].handle = GetVersionStr; /* FWVersion */    /* 2. FWVersionUpdated */ // +  traps[FW_VERSION_UPDATED].trapId = FW_VERSION_UPDATED; 8035dbe:	2402      	movs	r4, #2  traps[FW_VERSION_UPDATED].varbindId = 1;  traps[FW_VERSION_UPDATED].trapEnable = true;  traps[FW_VERSION_UPDATED].handle = GetVersionStr; /* FWVersion */    /* 3. DeviceRestored */ // +  traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED; 8035dc0:	2003      	movs	r0, #3  traps[FW_VERSION_UPDATE].varbindId = 1;  traps[FW_VERSION_UPDATE].trapEnable = true;  traps[FW_VERSION_UPDATE].handle = GetVersionStr; /* FWVersion */    /* 2. FWVersionUpdated */ // +  traps[FW_VERSION_UPDATED].trapId = FW_VERSION_UPDATED; 8035dc2:	745c      	strb	r4, [r3, #17]  traps[FW_VERSION_UPDATED].trapEnable = true;  traps[FW_VERSION_UPDATED].handle = GetVersionStr; /* FWVersion */    /* 3. DeviceRestored */ // +  traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED;  traps[DEVICE_RESTORED].varbindId = 2; 8035dc4:	769c      	strb	r4, [r3, #26]  traps[DEVICE_RESTORED].trapEnable = true;  traps[DEVICE_RESTORED].handle = GetVersionStr;//GetRestore; /* RestoreSignal */    /* 4. DeviceRebooted */ // +  traps[DEVICE_REBOOTED].trapId = DEVICE_REBOOTED; 8035dc6:	2404      	movs	r4, #4  traps[FW_VERSION_UPDATED].varbindId = 1;  traps[FW_VERSION_UPDATED].trapEnable = true;  traps[FW_VERSION_UPDATED].handle = GetVersionStr; /* FWVersion */    /* 3. DeviceRestored */ // +  traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED; 8035dc8:	7658      	strb	r0, [r3, #25]  traps[DEVICE_RESTORED].varbindId = 2;  traps[DEVICE_RESTORED].trapEnable = true;  traps[DEVICE_RESTORED].handle = GetVersionStr;//GetRestore; /* RestoreSignal */    /* 4. DeviceRebooted */ // +  traps[DEVICE_REBOOTED].trapId = DEVICE_REBOOTED; 8035dca:	f883 4021 	strb.w	r4, [r3, #33]	; 0x21  traps[DEVICE_REBOOTED].varbindId = 3; 8035dce:	f883 0022 	strb.w	r0, [r3, #34]	; 0x22  traps[DEVICE_REBOOTED].trapEnable = true;  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM; 8035dd2:	2405      	movs	r4, #5   traps[DI0_NORM].varbindId = 9;   traps[DI0_NORM].trapEnable = true;   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */   /* 6. DI0Alarm */ // +   traps[DI0_ALARM].trapId = DI0_ALARM; 8035dd4:	2006      	movs	r0, #6    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM;   traps[DI0_NORM].varbindId = 9;   traps[DI0_NORM].trapEnable = true;   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */ 8035dd6:	4d4e      	ldr	r5, [pc, #312]	; (8035f10 <SNMP_InitTrapsBase+0x158>)  traps[DEVICE_REBOOTED].varbindId = 3;  traps[DEVICE_REBOOTED].trapEnable = true;  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM; 8035dd8:	f883 4029 	strb.w	r4, [r3, #41]	; 0x29   traps[DI0_NORM].varbindId = 9;   traps[DI0_NORM].trapEnable = true;   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */   /* 6. DI0Alarm */ // +   traps[DI0_ALARM].trapId = DI0_ALARM; 8035ddc:	f883 0031 	strb.w	r0, [r3, #49]	; 0x31   traps[DI0_ALARM].trapEnable = true;   traps[DI0_ALARM].handle = GetDIN0StatusStr; /* State DIN */   /* 7. DO0Toggle */ // +    traps[DO0_TOGGLED].trapId = DO0_TOGGLED;    traps[DO0_TOGGLED].varbindId = 5; 8035de0:	f883 403a 	strb.w	r4, [r3, #58]	; 0x3a    traps[DO0_TOGGLED].trapEnable = true;    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */    /* 8. DO1Toggle */ // +    traps[DO1_TOGGLED].trapId = DO1_TOGGLED;    traps[DO1_TOGGLED].varbindId = 6; 8035de4:	f883 0042 	strb.w	r0, [r3, #66]	; 0x42   /* 7. DO0Toggle */ // +    traps[DO0_TOGGLED].trapId = DO0_TOGGLED;    traps[DO0_TOGGLED].varbindId = 5;    traps[DO0_TOGGLED].trapEnable = true;    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */ 8035de8:	4c4a      	ldr	r4, [pc, #296]	; (8035f14 <SNMP_InitTrapsBase+0x15c>)    /* 8. DO1Toggle */ // +    traps[DO1_TOGGLED].trapId = DO1_TOGGLED;    traps[DO1_TOGGLED].varbindId = 6;    traps[DO1_TOGGLED].trapEnable = true;    traps[DO1_TOGGLED].handle = GetDOUT1StatusStr; /* State DO1 */ 8035dea:	484b      	ldr	r0, [pc, #300]	; (8035f18 <SNMP_InitTrapsBase+0x160>){  /* 1. FWVersionUpdate */ // +  traps[FW_VERSION_UPDATE].trapId = FW_VERSION_UPDATE;  traps[FW_VERSION_UPDATE].varbindId = 1;  traps[FW_VERSION_UPDATE].trapEnable = true;  traps[FW_VERSION_UPDATE].handle = GetVersionStr; /* FWVersion */ 8035dec:	60d9      	str	r1, [r3, #12]  * @retval   */void SNMP_InitTrapsBase(void){  /* 1. FWVersionUpdate */ // +  traps[FW_VERSION_UPDATE].trapId = FW_VERSION_UPDATE; 8035dee:	2201      	movs	r2, #1    /* 2. FWVersionUpdated */ // +  traps[FW_VERSION_UPDATED].trapId = FW_VERSION_UPDATED;  traps[FW_VERSION_UPDATED].varbindId = 1;  traps[FW_VERSION_UPDATED].trapEnable = true;  traps[FW_VERSION_UPDATED].handle = GetVersionStr; /* FWVersion */ 8035df0:	6159      	str	r1, [r3, #20]    /* 3. DeviceRestored */ // +  traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED;  traps[DEVICE_RESTORED].varbindId = 2;  traps[DEVICE_RESTORED].trapEnable = true;  traps[DEVICE_RESTORED].handle = GetVersionStr;//GetRestore; /* RestoreSignal */ 8035df2:	61d9      	str	r1, [r3, #28]    /* 4. DeviceRebooted */ // +  traps[DEVICE_REBOOTED].trapId = DEVICE_REBOOTED;  traps[DEVICE_REBOOTED].varbindId = 3;  traps[DEVICE_REBOOTED].trapEnable = true;  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */ 8035df4:	6259      	str	r1, [r3, #36]	; 0x24    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM;   traps[DI0_NORM].varbindId = 9;   traps[DI0_NORM].trapEnable = true;   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */ 8035df6:	62dd      	str	r5, [r3, #44]	; 0x2c  traps[DEVICE_REBOOTED].trapEnable = true;  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM;   traps[DI0_NORM].varbindId = 9; 8035df8:	2109      	movs	r1, #9   /* 6. DI0Alarm */ // +   traps[DI0_ALARM].trapId = DI0_ALARM;   traps[DI0_ALARM].varbindId = 9;   traps[DI0_ALARM].trapEnable = true;   traps[DI0_ALARM].handle = GetDIN0StatusStr; /* State DIN */ 8035dfa:	635d      	str	r5, [r3, #52]	; 0x34   /* 7. DO0Toggle */ // +    traps[DO0_TOGGLED].trapId = DO0_TOGGLED;    traps[DO0_TOGGLED].varbindId = 5;    traps[DO0_TOGGLED].trapEnable = true;    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */ 8035dfc:	63dc      	str	r4, [r3, #60]	; 0x3c   traps[DI0_ALARM].varbindId = 9;   traps[DI0_ALARM].trapEnable = true;   traps[DI0_ALARM].handle = GetDIN0StatusStr; /* State DIN */   /* 7. DO0Toggle */ // +    traps[DO0_TOGGLED].trapId = DO0_TOGGLED; 8035dfe:	2507      	movs	r5, #7    traps[DO0_TOGGLED].varbindId = 5;    traps[DO0_TOGGLED].trapEnable = true;    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */    /* 8. DO1Toggle */ // +    traps[DO1_TOGGLED].trapId = DO1_TOGGLED; 8035e00:	2408      	movs	r4, #8    traps[DO1_TOGGLED].varbindId = 6;    traps[DO1_TOGGLED].trapEnable = true;    traps[DO1_TOGGLED].handle = GetDOUT1StatusStr; /* State DO1 */ 8035e02:	6458      	str	r0, [r3, #68]	; 0x44  /* 9. BatteryTemperatureNorm */ // +  traps[BATTERY_TEMPERATURE_NORM].trapId = BATTERY_TEMPERATURE_NORM;  traps[BATTERY_TEMPERATURE_NORM].varbindId = 10;  traps[BATTERY_TEMPERATURE_NORM].trapEnable = true;  traps[BATTERY_TEMPERATURE_NORM].handle = GetInternalTempStr; /* BatteryTemperature */   8035e04:	4845      	ldr	r0, [pc, #276]	; (8035f1c <SNMP_InitTrapsBase+0x164>)  traps[DEVICE_REBOOTED].trapEnable = true;  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM;   traps[DI0_NORM].varbindId = 9; 8035e06:	f883 102a 	strb.w	r1, [r3, #42]	; 0x2a   traps[DI0_NORM].trapEnable = true;   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */   /* 6. DI0Alarm */ // +   traps[DI0_ALARM].trapId = DI0_ALARM;   traps[DI0_ALARM].varbindId = 9; 8035e0a:	f883 1032 	strb.w	r1, [r3, #50]	; 0x32   traps[DI0_ALARM].trapEnable = true;   traps[DI0_ALARM].handle = GetDIN0StatusStr; /* State DIN */   /* 7. DO0Toggle */ // +    traps[DO0_TOGGLED].trapId = DO0_TOGGLED; 8035e0e:	f883 5039 	strb.w	r5, [r3, #57]	; 0x39    traps[DO0_TOGGLED].varbindId = 5;    traps[DO0_TOGGLED].trapEnable = true;    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */    /* 8. DO1Toggle */ // +    traps[DO1_TOGGLED].trapId = DO1_TOGGLED; 8035e12:	f883 4041 	strb.w	r4, [r3, #65]	; 0x41  * @retval   */void SNMP_InitTrapsBase(void){  /* 1. FWVersionUpdate */ // +  traps[FW_VERSION_UPDATE].trapId = FW_VERSION_UPDATE; 8035e16:	725a      	strb	r2, [r3, #9]  traps[FW_VERSION_UPDATE].varbindId = 1; 8035e18:	729a      	strb	r2, [r3, #10]  traps[FW_VERSION_UPDATE].trapEnable = true; 8035e1a:	72da      	strb	r2, [r3, #11]  traps[FW_VERSION_UPDATE].handle = GetVersionStr; /* FWVersion */    /* 2. FWVersionUpdated */ // +  traps[FW_VERSION_UPDATED].trapId = FW_VERSION_UPDATED;  traps[FW_VERSION_UPDATED].varbindId = 1; 8035e1c:	749a      	strb	r2, [r3, #18]  traps[FW_VERSION_UPDATED].trapEnable = true; 8035e1e:	74da      	strb	r2, [r3, #19]  traps[FW_VERSION_UPDATED].handle = GetVersionStr; /* FWVersion */    /* 3. DeviceRestored */ // +  traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED;  traps[DEVICE_RESTORED].varbindId = 2;  traps[DEVICE_RESTORED].trapEnable = true; 8035e20:	76da      	strb	r2, [r3, #27]  traps[DEVICE_RESTORED].handle = GetVersionStr;//GetRestore; /* RestoreSignal */    /* 4. DeviceRebooted */ // +  traps[DEVICE_REBOOTED].trapId = DEVICE_REBOOTED;  traps[DEVICE_REBOOTED].varbindId = 3;  traps[DEVICE_REBOOTED].trapEnable = true; 8035e22:	f883 2023 	strb.w	r2, [r3, #35]	; 0x23  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */    /* 5. DI0Norm */ // +   traps[DI0_NORM].trapId = DI0_NORM;   traps[DI0_NORM].varbindId = 9;   traps[DI0_NORM].trapEnable = true; 8035e26:	f883 202b 	strb.w	r2, [r3, #43]	; 0x2b   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */   /* 6. DI0Alarm */ // +   traps[DI0_ALARM].trapId = DI0_ALARM;   traps[DI0_ALARM].varbindId = 9;   traps[DI0_ALARM].trapEnable = true; 8035e2a:	f883 2033 	strb.w	r2, [r3, #51]	; 0x33   traps[DI0_ALARM].handle = GetDIN0StatusStr; /* State DIN */   /* 7. DO0Toggle */ // +    traps[DO0_TOGGLED].trapId = DO0_TOGGLED;    traps[DO0_TOGGLED].varbindId = 5;    traps[DO0_TOGGLED].trapEnable = true; 8035e2e:	f883 203b 	strb.w	r2, [r3, #59]	; 0x3b    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */    /* 8. DO1Toggle */ // +    traps[DO1_TOGGLED].trapId = DO1_TOGGLED;    traps[DO1_TOGGLED].varbindId = 6;    traps[DO1_TOGGLED].trapEnable = true; 8035e32:	f883 2043 	strb.w	r2, [r3, #67]	; 0x43    traps[DO1_TOGGLED].handle = GetDOUT1StatusStr; /* State DO1 */  /* 9. BatteryTemperatureNorm */ // +  traps[BATTERY_TEMPERATURE_NORM].trapId = BATTERY_TEMPERATURE_NORM; 8035e36:	f883 1049 	strb.w	r1, [r3, #73]	; 0x49  traps[BATTERY_TEMPERATURE_NORM].varbindId = 10; 8035e3a:	210a      	movs	r1, #10 8035e3c:	f883 104a 	strb.w	r1, [r3, #74]	; 0x4a  traps[BATTERY_TEMPERATURE_NORM].trapEnable = true;  traps[BATTERY_TEMPERATURE_NORM].handle = GetInternalTempStr; /* BatteryTemperature */   8035e40:	64d8      	str	r0, [r3, #76]	; 0x4c    /* 10. BatteryTemperatureAlarm */ // +  traps[BATTERY_TEMPERATURE_ALARM].trapId = BATTERY_TEMPERATURE_ALARM; 8035e42:	f883 1051 	strb.w	r1, [r3, #81]	; 0x51  traps[BATTERY_TEMPERATURE_ALARM].varbindId = 10; 8035e46:	f883 1052 	strb.w	r1, [r3, #82]	; 0x52  traps[BATTERY_TEMPERATURE_ALARM].trapEnable = true;  traps[BATTERY_TEMPERATURE_ALARM].handle = GetInternalTempStr; /* BatteryTemperature */ 8035e4a:	6558      	str	r0, [r3, #84]	; 0x54    /* 11. LineAlarm */ // +  traps[LINE_ALARM].trapId = LINE_ALARM; 8035e4c:	210b      	movs	r1, #11  traps[LINE_ALARM].varbindId = 12;  traps[LINE_ALARM].trapEnable = true;  traps[LINE_ALARM].handle = GetInputVoltageStr; /* LineAlarm */ 8035e4e:	4834      	ldr	r0, [pc, #208]	; (8035f20 <SNMP_InitTrapsBase+0x168>)  traps[BATTERY_TEMPERATURE_ALARM].varbindId = 10;  traps[BATTERY_TEMPERATURE_ALARM].trapEnable = true;  traps[BATTERY_TEMPERATURE_ALARM].handle = GetInternalTempStr; /* BatteryTemperature */    /* 11. LineAlarm */ // +  traps[LINE_ALARM].trapId = LINE_ALARM; 8035e50:	f883 1059 	strb.w	r1, [r3, #89]	; 0x59  traps[LINE_ALARM].varbindId = 12; 8035e54:	210c      	movs	r1, #12  traps[LOW_BAT_ALARM].varbindId = 15;  traps[LOW_BAT_ALARM].trapEnable = true;  traps[LOW_BAT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */    /* 14. LowBatNorm */ // +  traps[LOW_BAT_NORM].trapId = LOW_BAT_NORM; 8035e56:	240e      	movs	r4, #14    /* 15. PowerAlarm */ // +  traps[POWER_ALARM].trapId = POWER_ALARM;  traps[POWER_ALARM].varbindId = 14;  traps[POWER_ALARM].trapEnable = true;  traps[POWER_ALARM].handle = GetPowerStr; /* PowerAlarm */ 8035e58:	4d32      	ldr	r5, [pc, #200]	; (8035f24 <SNMP_InitTrapsBase+0x16c>)  traps[BATTERY_TEMPERATURE_ALARM].trapEnable = true;  traps[BATTERY_TEMPERATURE_ALARM].handle = GetInternalTempStr; /* BatteryTemperature */    /* 11. LineAlarm */ // +  traps[LINE_ALARM].trapId = LINE_ALARM;  traps[LINE_ALARM].varbindId = 12; 8035e5a:	f883 105a 	strb.w	r1, [r3, #90]	; 0x5a  traps[LINE_ALARM].trapEnable = true;  traps[LINE_ALARM].handle = GetInputVoltageStr; /* LineAlarm */ 8035e5e:	65d8      	str	r0, [r3, #92]	; 0x5c    /* 12. LineNorm */ // +  traps[LINE_NORM].trapId = LINE_NORM; 8035e60:	f883 1061 	strb.w	r1, [r3, #97]	; 0x61  traps[LINE_NORM].varbindId = 12; 8035e64:	f883 1062 	strb.w	r1, [r3, #98]	; 0x62  traps[LINE_NORM].trapEnable = true;  traps[LINE_NORM].handle = GetInputVoltageStr; /* LineNorm */ 8035e68:	6658      	str	r0, [r3, #100]	; 0x64    /* 13. LowBatAlarm */ // +  traps[LOW_BAT_ALARM].trapId = LOW_BAT_ALARM; 8035e6a:	210d      	movs	r1, #13  traps[LOW_BAT_ALARM].varbindId = 15;  traps[LOW_BAT_ALARM].trapEnable = true;  traps[LOW_BAT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */ 8035e6c:	482e      	ldr	r0, [pc, #184]	; (8035f28 <SNMP_InitTrapsBase+0x170>)  traps[LINE_NORM].varbindId = 12;  traps[LINE_NORM].trapEnable = true;  traps[LINE_NORM].handle = GetInputVoltageStr; /* LineNorm */    /* 13. LowBatAlarm */ // +  traps[LOW_BAT_ALARM].trapId = LOW_BAT_ALARM; 8035e6e:	f883 1069 	strb.w	r1, [r3, #105]	; 0x69  traps[LOW_BAT_ALARM].varbindId = 15;  traps[LOW_BAT_ALARM].trapEnable = true;  traps[LOW_BAT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */    /* 14. LowBatNorm */ // +  traps[LOW_BAT_NORM].trapId = LOW_BAT_NORM; 8035e72:	f883 4071 	strb.w	r4, [r3, #113]	; 0x71  traps[LINE_NORM].trapEnable = true;  traps[LINE_NORM].handle = GetInputVoltageStr; /* LineNorm */    /* 13. LowBatAlarm */ // +  traps[LOW_BAT_ALARM].trapId = LOW_BAT_ALARM;  traps[LOW_BAT_ALARM].varbindId = 15; 8035e76:	210f      	movs	r1, #15  traps[LOW_BAT_NORM].trapEnable = true;  traps[LOW_BAT_NORM].handle = GetBatCapacityStr; /* LowBatNorm */    /* 15. PowerAlarm */ // +  traps[POWER_ALARM].trapId = POWER_ALARM;  traps[POWER_ALARM].varbindId = 14; 8035e78:	f883 407a 	strb.w	r4, [r3, #122]	; 0x7a  traps[POWER_ALARM].trapEnable = true;  traps[POWER_ALARM].handle = GetPowerStr; /* PowerAlarm */    /* 16. PowerNorm */ // +  traps[POWER_NORM].trapId = POWER_NORM; 8035e7c:	2610      	movs	r6, #16  traps[POWER_NORM].varbindId = 14; 8035e7e:	f883 4082 	strb.w	r4, [r3, #130]	; 0x82  traps[POWER_NORM].trapEnable = true;  traps[POWER_NORM].handle = GetPowerStr; /* PowerNorm */    /* 17. ConnectMonitorAlarm */ //  traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM; 8035e82:	2411      	movs	r4, #17    /* 15. PowerAlarm */ // +  traps[POWER_ALARM].trapId = POWER_ALARM;  traps[POWER_ALARM].varbindId = 14;  traps[POWER_ALARM].trapEnable = true;  traps[POWER_ALARM].handle = GetPowerStr; /* PowerAlarm */ 8035e84:	67dd      	str	r5, [r3, #124]	; 0x7c    /* 16. PowerNorm */ // +  traps[POWER_NORM].trapId = POWER_NORM; 8035e86:	f883 6081 	strb.w	r6, [r3, #129]	; 0x81  traps[POWER_NORM].varbindId = 14;  traps[POWER_NORM].trapEnable = true;  traps[POWER_NORM].handle = GetPowerStr; /* PowerNorm */ 8035e8a:	f8c3 5084 	str.w	r5, [r3, #132]	; 0x84    /* 17. ConnectMonitorAlarm */ //  traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM; 8035e8e:	f883 4089 	strb.w	r4, [r3, #137]	; 0x89  traps[CONNECT_MONITOR_ALARM].varbindId = 17; 8035e92:	f883 408a 	strb.w	r4, [r3, #138]	; 0x8a  traps[CONNECT_MONITOR_ALARM].trapEnable = true;  traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */ 8035e96:	4d25      	ldr	r5, [pc, #148]	; (8035f2c <SNMP_InitTrapsBase+0x174>)    traps[DO1_TOGGLED].handle = GetDOUT1StatusStr; /* State DO1 */  /* 9. BatteryTemperatureNorm */ // +  traps[BATTERY_TEMPERATURE_NORM].trapId = BATTERY_TEMPERATURE_NORM;  traps[BATTERY_TEMPERATURE_NORM].varbindId = 10;  traps[BATTERY_TEMPERATURE_NORM].trapEnable = true; 8035e98:	f883 204b 	strb.w	r2, [r3, #75]	; 0x4b  traps[BATTERY_TEMPERATURE_NORM].handle = GetInternalTempStr; /* BatteryTemperature */      /* 10. BatteryTemperatureAlarm */ // +  traps[BATTERY_TEMPERATURE_ALARM].trapId = BATTERY_TEMPERATURE_ALARM;  traps[BATTERY_TEMPERATURE_ALARM].varbindId = 10;  traps[BATTERY_TEMPERATURE_ALARM].trapEnable = true; 8035e9c:	f883 2053 	strb.w	r2, [r3, #83]	; 0x53  traps[BATTERY_TEMPERATURE_ALARM].handle = GetInternalTempStr; /* BatteryTemperature */    /* 11. LineAlarm */ // +  traps[LINE_ALARM].trapId = LINE_ALARM;  traps[LINE_ALARM].varbindId = 12;  traps[LINE_ALARM].trapEnable = true; 8035ea0:	f883 205b 	strb.w	r2, [r3, #91]	; 0x5b  traps[LINE_ALARM].handle = GetInputVoltageStr; /* LineAlarm */    /* 12. LineNorm */ // +  traps[LINE_NORM].trapId = LINE_NORM;  traps[LINE_NORM].varbindId = 12;  traps[LINE_NORM].trapEnable = true; 8035ea4:	f883 2063 	strb.w	r2, [r3, #99]	; 0x63  traps[LINE_NORM].handle = GetInputVoltageStr; /* LineNorm */    /* 13. LowBatAlarm */ // +  traps[LOW_BAT_ALARM].trapId = LOW_BAT_ALARM;  traps[LOW_BAT_ALARM].varbindId = 15; 8035ea8:	f883 106a 	strb.w	r1, [r3, #106]	; 0x6a  traps[LOW_BAT_ALARM].trapEnable = true; 8035eac:	f883 206b 	strb.w	r2, [r3, #107]	; 0x6b  traps[LOW_BAT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */ 8035eb0:	66d8      	str	r0, [r3, #108]	; 0x6c    /* 14. LowBatNorm */ // +  traps[LOW_BAT_NORM].trapId = LOW_BAT_NORM;  traps[LOW_BAT_NORM].varbindId = 15; 8035eb2:	f883 1072 	strb.w	r1, [r3, #114]	; 0x72  traps[LOW_BAT_NORM].trapEnable = true; 8035eb6:	f883 2073 	strb.w	r2, [r3, #115]	; 0x73  traps[LOW_BAT_NORM].handle = GetBatCapacityStr; /* LowBatNorm */ 8035eba:	6758      	str	r0, [r3, #116]	; 0x74    /* 15. PowerAlarm */ // +  traps[POWER_ALARM].trapId = POWER_ALARM; 8035ebc:	f883 1079 	strb.w	r1, [r3, #121]	; 0x79  traps[POWER_ALARM].varbindId = 14;  traps[POWER_ALARM].trapEnable = true; 8035ec0:	f883 207b 	strb.w	r2, [r3, #123]	; 0x7b  traps[POWER_ALARM].handle = GetPowerStr; /* PowerAlarm */    /* 16. PowerNorm */ // +  traps[POWER_NORM].trapId = POWER_NORM;  traps[POWER_NORM].varbindId = 14;  traps[POWER_NORM].trapEnable = true; 8035ec4:	f883 2083 	strb.w	r2, [r3, #131]	; 0x83  traps[POWER_NORM].handle = GetPowerStr; /* PowerNorm */    /* 17. ConnectMonitorAlarm */ //  traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM;  traps[CONNECT_MONITOR_ALARM].varbindId = 17;  traps[CONNECT_MONITOR_ALARM].trapEnable = true; 8035ec8:	f883 208b 	strb.w	r2, [r3, #139]	; 0x8b  traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */    /* 18. ConnectMonitorNorm */ //  traps[CONNECT_MONITOR_NORM].trapId = CONNECT_MONITOR_NORM;  traps[CONNECT_MONITOR_NORM].varbindId = 17; 8035ecc:	f883 4092 	strb.w	r4, [r3, #146]	; 0x92  traps[CONNECT_MONITOR_NORM].trapEnable = true;  traps[CONNECT_MONITOR_NORM].handle = GetConnectMonitorStr; /* ConnectMonitor */  /* 19. BatteryConnectAlarm */ // +  traps[BATTERY_CONNECT_ALARM].trapId = BATTERY_CONNECT_ALARM; 8035ed0:	2413      	movs	r4, #19  traps[CONNECT_MONITOR_ALARM].varbindId = 17;  traps[CONNECT_MONITOR_ALARM].trapEnable = true;  traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */    /* 18. ConnectMonitorNorm */ //  traps[CONNECT_MONITOR_NORM].trapId = CONNECT_MONITOR_NORM; 8035ed2:	2612      	movs	r6, #18  traps[CONNECT_MONITOR_NORM].varbindId = 17;  traps[CONNECT_MONITOR_NORM].trapEnable = true;  traps[CONNECT_MONITOR_NORM].handle = GetConnectMonitorStr; /* ConnectMonitor */  /* 19. BatteryConnectAlarm */ // +  traps[BATTERY_CONNECT_ALARM].trapId = BATTERY_CONNECT_ALARM; 8035ed4:	f883 4099 	strb.w	r4, [r3, #153]	; 0x99  traps[BATTERY_CONNECT_ALARM].varbindId = 15;  traps[BATTERY_CONNECT_ALARM].trapEnable = true;  traps[BATTERY_CONNECT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */  /* 20. BatteryConnectNorm */ // +  traps[BATTERY_CONNECT_NORM].trapId = BATTERY_CONNECT_NORM; 8035ed8:	2414      	movs	r4, #20    /* 17. ConnectMonitorAlarm */ //  traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM;  traps[CONNECT_MONITOR_ALARM].varbindId = 17;  traps[CONNECT_MONITOR_ALARM].trapEnable = true;  traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */ 8035eda:	f8c3 508c 	str.w	r5, [r3, #140]	; 0x8c    /* 18. ConnectMonitorNorm */ //  traps[CONNECT_MONITOR_NORM].trapId = CONNECT_MONITOR_NORM; 8035ede:	f883 6091 	strb.w	r6, [r3, #145]	; 0x91  traps[CONNECT_MONITOR_NORM].varbindId = 17;  traps[CONNECT_MONITOR_NORM].trapEnable = true; 8035ee2:	f883 2093 	strb.w	r2, [r3, #147]	; 0x93  traps[CONNECT_MONITOR_NORM].handle = GetConnectMonitorStr; /* ConnectMonitor */ 8035ee6:	f8c3 5094 	str.w	r5, [r3, #148]	; 0x94  /* 19. BatteryConnectAlarm */ // +  traps[BATTERY_CONNECT_ALARM].trapId = BATTERY_CONNECT_ALARM;  traps[BATTERY_CONNECT_ALARM].varbindId = 15; 8035eea:	f883 109a 	strb.w	r1, [r3, #154]	; 0x9a  traps[BATTERY_CONNECT_ALARM].trapEnable = true; 8035eee:	f883 209b 	strb.w	r2, [r3, #155]	; 0x9b  traps[BATTERY_CONNECT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */ 8035ef2:	f8c3 009c 	str.w	r0, [r3, #156]	; 0x9c  /* 20. BatteryConnectNorm */ // +  traps[BATTERY_CONNECT_NORM].trapId = BATTERY_CONNECT_NORM; 8035ef6:	f883 40a1 	strb.w	r4, [r3, #161]	; 0xa1  traps[BATTERY_CONNECT_NORM].varbindId = 15; 8035efa:	f883 10a2 	strb.w	r1, [r3, #162]	; 0xa2  traps[BATTERY_CONNECT_NORM].trapEnable = true; 8035efe:	f883 20a3 	strb.w	r2, [r3, #163]	; 0xa3  traps[BATTERY_CONNECT_NORM].handle = GetBatCapacityStr; /* LowBatNorm */ 8035f02:	f8c3 00a4 	str.w	r0, [r3, #164]	; 0xa4 8035f06:	bd70      	pop	{r4, r5, r6, pc} 8035f08:	2001147c 	.word	0x2001147c 8035f0c:	08027c21 	.word	0x08027c21 8035f10:	08027ad1 	.word	0x08027ad1 8035f14:	08027b45 	.word	0x08027b45 8035f18:	08027b69 	.word	0x08027b69 8035f1c:	080278e9 	.word	0x080278e9 8035f20:	08027825 	.word	0x08027825 8035f24:	0802787d 	.word	0x0802787d 8035f28:	080278a1 	.word	0x080278a1 8035f2c:	08027915 	.word	0x0802791508035f30 <SNMP_SendVarbindTrap>:/**  * @brief  Отправка трапа с переменной, зарегистрированного в базе.  * @retval   */bool SNMP_SendVarbindTrap(TRAP_t *trap){ 8035f30:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}  char msg[255];  uint8_t len = 0; 8035f34:	2500      	movs	r5, #0/**  * @brief  Отправка трапа с переменной, зарегистрированного в базе.  * @retval   */bool SNMP_SendVarbindTrap(TRAP_t *trap){ 8035f36:	f5ad 7d07 	sub.w	sp, sp, #540	; 0x21c 8035f3a:	4681      	mov	r9, r0  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}}; 8035f3c:	4629      	mov	r1, r5 8035f3e:	2284      	movs	r2, #132	; 0x84 8035f40:	a804      	add	r0, sp, #16  * @retval   */bool SNMP_SendVarbindTrap(TRAP_t *trap){  char msg[255];  uint8_t len = 0; 8035f42:	f88d 500f 	strb.w	r5, [sp, #15]  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}}; 8035f46:	f7eb fdbb 	bl	8021ac0 <memset> 8035f4a:	2202      	movs	r2, #2 8035f4c:	2401      	movs	r4, #1 8035f4e:	2603      	movs	r6, #3 8035f50:	230b      	movs	r3, #11 8035f52:	f04f 0804 	mov.w	r8, #4 8035f56:	2706      	movs	r7, #6 8035f58:	f24a 3b18 	movw	fp, #41752	; 0xa318 8035f5c:	f240 3a8f 	movw	sl, #911	; 0x38f 8035f60:	920e      	str	r2, [sp, #56]	; 0x38  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035f62:	4629      	mov	r1, r5 8035f64:	2284      	movs	r2, #132	; 0x84 8035f66:	a825      	add	r0, sp, #148	; 0x94bool SNMP_SendVarbindTrap(TRAP_t *trap){  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}}; 8035f68:	f88d 3010 	strb.w	r3, [sp, #16] 8035f6c:	9606      	str	r6, [sp, #24] 8035f6e:	960d      	str	r6, [sp, #52]	; 0x34  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035f70:	9301      	str	r3, [sp, #4]bool SNMP_SendVarbindTrap(TRAP_t *trap){  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}}; 8035f72:	9405      	str	r4, [sp, #20] 8035f74:	9707      	str	r7, [sp, #28] 8035f76:	9408      	str	r4, [sp, #32] 8035f78:	f8cd 8024 	str.w	r8, [sp, #36]	; 0x24 8035f7c:	940a      	str	r4, [sp, #40]	; 0x28 8035f7e:	f8cd b02c 	str.w	fp, [sp, #44]	; 0x2c 8035f82:	f8cd a030 	str.w	sl, [sp, #48]	; 0x30  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035f86:	f7eb fd9b 	bl	8021ac0 <memset> 8035f8a:	9b01      	ldr	r3, [sp, #4] 8035f8c:	9627      	str	r6, [sp, #156]	; 0x9c 8035f8e:	f88d 3094 	strb.w	r3, [sp, #148]	; 0x94    trapObjId.id[trapObjId.len - 1] = trap->trapId; 8035f92:	f899 3001 	ldrb.w	r3, [r9, #1]{  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}};  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035f96:	962e      	str	r6, [sp, #184]	; 0xb8    trapObjId.id[trapObjId.len - 1] = trap->trapId; 8035f98:	930f      	str	r3, [sp, #60]	; 0x3c  varObjId.id[varObjId.len - 1] = trap->varbindId; 8035f9a:	f899 3002 	ldrb.w	r3, [r9, #2]{  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}};  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035f9e:	9426      	str	r4, [sp, #152]	; 0x98    trapObjId.id[trapObjId.len - 1] = trap->trapId;  varObjId.id[varObjId.len - 1] = trap->varbindId; 8035fa0:	9330      	str	r3, [sp, #192]	; 0xc0      trap->handle(msg, &len); 8035fa2:	a846      	add	r0, sp, #280	; 0x118 8035fa4:	f8d9 3004 	ldr.w	r3, [r9, #4]{  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}};  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035fa8:	9728      	str	r7, [sp, #160]	; 0xa0    trapObjId.id[trapObjId.len - 1] = trap->trapId;  varObjId.id[varObjId.len - 1] = trap->varbindId;      trap->handle(msg, &len); 8035faa:	f10d 010f 	add.w	r1, sp, #15{  char msg[255];  uint8_t len = 0;  struct snmp_varbind *vb;  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}};  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}}; 8035fae:	9429      	str	r4, [sp, #164]	; 0xa4 8035fb0:	f8cd 80a8 	str.w	r8, [sp, #168]	; 0xa8 8035fb4:	942b      	str	r4, [sp, #172]	; 0xac 8035fb6:	f8cd b0b0 	str.w	fp, [sp, #176]	; 0xb0 8035fba:	f8cd a0b4 	str.w	sl, [sp, #180]	; 0xb4 8035fbe:	942f      	str	r4, [sp, #188]	; 0xbc    trapObjId.id[trapObjId.len - 1] = trap->trapId;  varObjId.id[varObjId.len - 1] = trap->varbindId;      trap->handle(msg, &len); 8035fc0:	4798      	blx	r3  vb = snmp_varbind_alloc(&varObjId, SNMP_ASN1_OC_STR, len); 8035fc2:	a825      	add	r0, sp, #148	; 0x94 8035fc4:	4641      	mov	r1, r8 8035fc6:	f89d 200f 	ldrb.w	r2, [sp, #15] 8035fca:	f7fd f8bf 	bl	803314c <snmp_varbind_alloc>      if(vb != NULL ) { 8035fce:	4606      	mov	r6, r0 8035fd0:	b198      	cbz	r0, 8035ffa <SNMP_SendVarbindTrap+0xca>        memcpy(vb->value, msg, len); 8035fd2:	f89d 200f 	ldrb.w	r2, [sp, #15] 8035fd6:	6940      	ldr	r0, [r0, #20] 8035fd8:	a946      	add	r1, sp, #280	; 0x118 8035fda:	f7eb fcb7 	bl	802194c <memcpy>  	snmp_varbind_tail_add(&trap_msg.outvb, vb); 8035fde:	4809      	ldr	r0, [pc, #36]	; (8036004 <SNMP_SendVarbindTrap+0xd4>) 8035fe0:	4631      	mov	r1, r6 8035fe2:	f7fd f95f 	bl	80332a4 <snmp_varbind_tail_add>			        snmp_send_trap(SNMP_GENTRAP_ENTERPRISESPC, &trapObjId, 0); 8035fe6:	a904      	add	r1, sp, #16 8035fe8:	462a      	mov	r2, r5 8035fea:	4638      	mov	r0, r7 8035fec:	f7fe faca 	bl	8034584 <snmp_send_trap>	          snmp_varbind_list_free(&trap_msg.outvb); 8035ff0:	4804      	ldr	r0, [pc, #16]	; (8036004 <SNMP_SendVarbindTrap+0xd4>) 8035ff2:	f7fd f8fe 	bl	80331f2 <snmp_varbind_list_free>          return true; 8035ff6:	4620      	mov	r0, r4 8035ff8:	e7ff      	b.n	8035ffa <SNMP_SendVarbindTrap+0xca>  }  else {        return false;  }}   8035ffa:	f50d 7d07 	add.w	sp, sp, #540	; 0x21c 8035ffe:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} 8036002:	bf00      	nop 8036004:	20011204 	.word	0x2001120408036008 <ETH_BSP_Config>:  * @brief  ETH_BSP_Config  * @param  None  * @retval None  */void ETH_BSP_Config(void){ 8036008:	b570      	push	{r4, r5, r6, lr}{  volatile uint32_t i;  GPIO_InitTypeDef GPIO_InitStructure;    /* Enable GPIOs clocks */  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB 803600a:	2007      	movs	r0, #7  * @brief  ETH_BSP_Config  * @param  None  * @retval None  */void ETH_BSP_Config(void){ 803600c:	b0b4      	sub	sp, #208	; 0xd0{  volatile uint32_t i;  GPIO_InitTypeDef GPIO_InitStructure;    /* Enable GPIOs clocks */  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB 803600e:	2101      	movs	r1, #1 8036010:	f7ef fb9c 	bl	802574c <RCC_AHB1PeriphClockCmd>	                       | RCC_AHB1Periph_GPIOC, ENABLE);  /* Enable SYSCFG clock */  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);   8036014:	2101      	movs	r1, #1 8036016:	f44f 4080 	mov.w	r0, #16384	; 0x4000 803601a:	f7ef fbbb 	bl	8025794 <RCC_APB2PeriphClockCmd>    /* MII/RMII Media interface selection --------------------------------------*/  SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_RMII); 803601e:	2001      	movs	r0, #1 8036020:	f7ef fdac 	bl	8025b7c <SYSCFG_ETH_MediaInterfaceConfig>        ETH_RST_PIN     -------> PE2  - замена на PE13     */  /* Configure PA1,PA2 and PA7 */  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7; 8036024:	2386      	movs	r3, #134	; 0x86  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; 8036026:	2400      	movs	r4, #0   */  /* Configure PA1,PA2 and PA7 */  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; 8036028:	2502      	movs	r5, #2        ETH_RST_PIN     -------> PE2  - замена на PE13     */  /* Configure PA1,PA2 and PA7 */  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7; 803602a:	9303      	str	r3, [sp, #12]  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL ;  GPIO_Init(GPIOA, &GPIO_InitStructure); 803602c:	4864      	ldr	r0, [pc, #400]	; (80361c0 <ETH_BSP_Config+0x1b8>)   */  /* Configure PA1,PA2 and PA7 */  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF; 803602e:	f88d 5010 	strb.w	r5, [sp, #16]     */  /* Configure PA1,PA2 and PA7 */  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; 8036032:	2303      	movs	r3, #3  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL ;  GPIO_Init(GPIOA, &GPIO_InitStructure); 8036034:	a903      	add	r1, sp, #12     */  /* Configure PA1,PA2 and PA7 */  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_7;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; 8036036:	f88d 3011 	strb.w	r3, [sp, #17]  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; 803603a:	f88d 4012 	strb.w	r4, [sp, #18]  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL ; 803603e:	f88d 4013 	strb.w	r4, [sp, #19]  GPIO_Init(GPIOA, &GPIO_InitStructure); 8036042:	f7ef faa3 	bl	802558c <GPIO_Init>  GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_ETH); 8036046:	2101      	movs	r1, #1 8036048:	220b      	movs	r2, #11 803604a:	485d      	ldr	r0, [pc, #372]	; (80361c0 <ETH_BSP_Config+0x1b8>) 803604c:	f7ef fae7 	bl	802561e <GPIO_PinAFConfig>  GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH); 8036050:	220b      	movs	r2, #11 8036052:	485b      	ldr	r0, [pc, #364]	; (80361c0 <ETH_BSP_Config+0x1b8>) 8036054:	4629      	mov	r1, r5 8036056:	f7ef fae2 	bl	802561e <GPIO_PinAFConfig>  GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_ETH); 803605a:	220b      	movs	r2, #11 803605c:	2107      	movs	r1, #7 803605e:	4858      	ldr	r0, [pc, #352]	; (80361c0 <ETH_BSP_Config+0x1b8>) 8036060:	f7ef fadd 	bl	802561e <GPIO_PinAFConfig>  /* Configure PB10,PB11,PB12 and PB13 */  GPIO_InitStructure.GPIO_Pin = /* GPIO_Pin_10 | */ GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; 8036064:	f44f 5360 	mov.w	r3, #14336	; 0x3800  GPIO_Init(GPIOB, &GPIO_InitStructure); 8036068:	4856      	ldr	r0, [pc, #344]	; (80361c4 <ETH_BSP_Config+0x1bc>)  GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_ETH);  /* Configure PB10,PB11,PB12 and PB13 */  GPIO_InitStructure.GPIO_Pin = /* GPIO_Pin_10 | */ GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13; 803606a:	9303      	str	r3, [sp, #12]  GPIO_Init(GPIOB, &GPIO_InitStructure); 803606c:	a903      	add	r1, sp, #12 803606e:	f7ef fa8d 	bl	802558c <GPIO_Init>  //GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_ETH);	  GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_ETH); 8036072:	210b      	movs	r1, #11 8036074:	460a      	mov	r2, r1 8036076:	4853      	ldr	r0, [pc, #332]	; (80361c4 <ETH_BSP_Config+0x1bc>) 8036078:	f7ef fad1 	bl	802561e <GPIO_PinAFConfig>  GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_ETH); 803607c:	210c      	movs	r1, #12 803607e:	220b      	movs	r2, #11 8036080:	4850      	ldr	r0, [pc, #320]	; (80361c4 <ETH_BSP_Config+0x1bc>) 8036082:	f7ef facc 	bl	802561e <GPIO_PinAFConfig>  GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_ETH); 8036086:	220b      	movs	r2, #11 8036088:	210d      	movs	r1, #13 803608a:	484e      	ldr	r0, [pc, #312]	; (80361c4 <ETH_BSP_Config+0x1bc>) 803608c:	f7ef fac7 	bl	802561e <GPIO_PinAFConfig>  /* Configure PC1, PC4 and PC5 */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5; 8036090:	2332      	movs	r3, #50	; 0x32  GPIO_Init(GPIOC, &GPIO_InitStructure); 8036092:	484d      	ldr	r0, [pc, #308]	; (80361c8 <ETH_BSP_Config+0x1c0>)  GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_ETH);  /* Configure PC1, PC4 and PC5 */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5; 8036094:	9303      	str	r3, [sp, #12]  GPIO_Init(GPIOC, &GPIO_InitStructure); 8036096:	a903      	add	r1, sp, #12 8036098:	f7ef fa78 	bl	802558c <GPIO_Init>  GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH); 803609c:	484a      	ldr	r0, [pc, #296]	; (80361c8 <ETH_BSP_Config+0x1c0>) 803609e:	2101      	movs	r1, #1 80360a0:	220b      	movs	r2, #11 80360a2:	f7ef fabc 	bl	802561e <GPIO_PinAFConfig>  GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_ETH); 80360a6:	4848      	ldr	r0, [pc, #288]	; (80361c8 <ETH_BSP_Config+0x1c0>) 80360a8:	2104      	movs	r1, #4 80360aa:	220b      	movs	r2, #11 80360ac:	f7ef fab7 	bl	802561e <GPIO_PinAFConfig>  GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_ETH); 80360b0:	220b      	movs	r2, #11 80360b2:	4845      	ldr	r0, [pc, #276]	; (80361c8 <ETH_BSP_Config+0x1c0>) 80360b4:	2105      	movs	r1, #5 80360b6:	f7ef fab2 	bl	802561e <GPIO_PinAFConfig>  /* Configure the PHY RST  pin */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; 80360ba:	f44f 5600 	mov.w	r6, #8192	; 0x2000  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 80360be:	2301      	movs	r3, #1  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOE, &GPIO_InitStructure); 80360c0:	4842      	ldr	r0, [pc, #264]	; (80361cc <ETH_BSP_Config+0x1c4>)  GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_ETH);  /* Configure the PHY RST  pin */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 80360c2:	f88d 3010 	strb.w	r3, [sp, #16]  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOE, &GPIO_InitStructure); 80360c6:	a903      	add	r1, sp, #12  /* Configure the PHY RST  pin */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; 80360c8:	f88d 3013 	strb.w	r3, [sp, #19]  GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_ETH);  GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_ETH);  /* Configure the PHY RST  pin */  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; 80360cc:	9603      	str	r6, [sp, #12]  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; 80360ce:	f88d 4012 	strb.w	r4, [sp, #18]  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 80360d2:	f88d 5011 	strb.w	r5, [sp, #17]  GPIO_Init(GPIOE, &GPIO_InitStructure); 80360d6:	f7ef fa59 	bl	802558c <GPIO_Init>  GPIO_ResetBits(GPIOE, GPIO_Pin_13);	 80360da:	483c      	ldr	r0, [pc, #240]	; (80361cc <ETH_BSP_Config+0x1c4>) 80360dc:	4631      	mov	r1, r6 80360de:	f7ef fa9c 	bl	802561a <GPIO_ResetBits>  for (i = 0; i < 20000; i++); 80360e2:	9401      	str	r4, [sp, #4] 80360e4:	f644 631f 	movw	r3, #19999	; 0x4e1f 80360e8:	e002      	b.n	80360f0 <ETH_BSP_Config+0xe8> 80360ea:	9a01      	ldr	r2, [sp, #4] 80360ec:	3201      	adds	r2, #1 80360ee:	9201      	str	r2, [sp, #4] 80360f0:	9a01      	ldr	r2, [sp, #4] 80360f2:	429a      	cmp	r2, r3 80360f4:	d9f9      	bls.n	80360ea <ETH_BSP_Config+0xe2>  GPIO_SetBits(GPIOE, GPIO_Pin_13); 80360f6:	4835      	ldr	r0, [pc, #212]	; (80361cc <ETH_BSP_Config+0x1c4>) 80360f8:	f44f 5100 	mov.w	r1, #8192	; 0x2000 80360fc:	f7ef fa8b 	bl	8025616 <GPIO_SetBits>  for (i = 0; i < 20000; i++); 8036100:	2300      	movs	r3, #0 8036102:	9301      	str	r3, [sp, #4] 8036104:	f644 631f 	movw	r3, #19999	; 0x4e1f 8036108:	e002      	b.n	8036110 <ETH_BSP_Config+0x108> 803610a:	9a01      	ldr	r2, [sp, #4] 803610c:	3201      	adds	r2, #1 803610e:	9201      	str	r2, [sp, #4] 8036110:	9a01      	ldr	r2, [sp, #4] 8036112:	429a      	cmp	r2, r3 8036114:	d9f9      	bls.n	803610a <ETH_BSP_Config+0x102>static void ETH_MACDMA_Config(void){  ETH_InitTypeDef ETH_InitStructure;  /* Enable ETHERNET clock  */  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC | RCC_AHB1Periph_ETH_MAC_Tx | 8036116:	f04f 6060 	mov.w	r0, #234881024	; 0xe000000 803611a:	2101      	movs	r1, #1 803611c:	f7ef fb16 	bl	802574c <RCC_AHB1PeriphClockCmd>                         RCC_AHB1Periph_ETH_MAC_Rx, ENABLE);                                               /* Reset ETHERNET on AHB Bus */  ETH_DeInit(); 8036120:	f000 f868 	bl	80361f4 <ETH_DeInit>  /* Software reset */  ETH_SoftwareReset(); 8036124:	f000 f9fe 	bl	8036524 <ETH_SoftwareReset>  /* Wait for software reset */  while (ETH_GetSoftwareResetStatus() == SET); 8036128:	f000 fa04 	bl	8036534 <ETH_GetSoftwareResetStatus> 803612c:	2801      	cmp	r0, #1 803612e:	d0fb      	beq.n	8036128 <ETH_BSP_Config+0x120>  /* ETHERNET Configuration --------------------------------------------------*/  /* Call ETH_StructInit if you don't like to configure all ETH_InitStructure parameter */  ETH_StructInit(Ð_InitStructure); 8036130:	a805      	add	r0, sp, #20 8036132:	f000 f86c 	bl	803620e <ETH_StructInit>  //ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;   //  ETH_InitStructure.ETH_Speed = ETH_Speed_10M;  //  ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex;     ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable;  ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Disable; 8036136:	f44f 7300 	mov.w	r3, #512	; 0x200 803613a:	930f      	str	r3, [sp, #60]	; 0x3c    /* When we use the Checksum offload feature, we need to enable the Store and Forward mode:   the store and forward guarantee that a whole frame is stored in the FIFO, so the MAC can insert/verify the checksum,   if the checksum is OK the DMA can handle the frame otherwise the frame is dropped */  ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Enable;   ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;          803613c:	f04f 7300 	mov.w	r3, #33554432	; 0x2000000 8036140:	9326      	str	r3, [sp, #152]	; 0x98  ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;        ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable;         ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;     ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable;  ETH_InitStructure.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;       8036142:	932e      	str	r3, [sp, #184]	; 0xb8  ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable;                 8036144:	f44f 3380 	mov.w	r3, #65536	; 0x10000 8036148:	932f      	str	r3, [sp, #188]	; 0xbc  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;           803614a:	f44f 0380 	mov.w	r3, #4194304	; 0x400000  /* Call ETH_StructInit if you don't like to configure all ETH_InitStructure parameter */  ETH_StructInit(Ð_InitStructure);  /* Fill ETH_InitStructure parametrs */  /*------------------------   MAC   -----------------------------------*/  ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; 803614e:	2501      	movs	r5, #1  /* When we use the Checksum offload feature, we need to enable the Store and Forward mode:   the store and forward guarantee that a whole frame is stored in the FIFO, so the MAC can insert/verify the checksum,   if the checksum is OK the DMA can handle the frame otherwise the frame is dropped */  ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Enable;   ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;           ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;      8036150:	f44f 1200 	mov.w	r2, #2097152	; 0x200000  ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable;         ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;     ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable;  ETH_InitStructure.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;        ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable;                  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;           8036154:	9330      	str	r3, [sp, #192]	; 0xc0  ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat; 8036156:	f44f 5300 	mov.w	r3, #8192	; 0x2000  ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable;  //ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;   //  ETH_InitStructure.ETH_Speed = ETH_Speed_10M;  //  ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex;     ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable; 803615a:	2400      	movs	r4, #0  /* When we use the Checksum offload feature, we need to enable the Store and Forward mode:   the store and forward guarantee that a whole frame is stored in the FIFO, so the MAC can insert/verify the checksum,   if the checksum is OK the DMA can handle the frame otherwise the frame is dropped */  ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Enable;   ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;           ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;      803615c:	9228      	str	r2, [sp, #160]	; 0xa0  ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;     ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable;  ETH_InitStructure.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;        ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable;                  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;            ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat; 803615e:	9331      	str	r3, [sp, #196]	; 0xc4  ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;           ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;        ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable;         ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;     ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable; 8036160:	2204      	movs	r2, #4  ETH_InitStructure.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;        ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable;                  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;            ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat;  ETH_InitStructure.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_2_1; 8036162:	f44f 4380 	mov.w	r3, #16384	; 0x4000  /* Configure Ethernet */  EthInitStatus = ETH_Init(Ð_InitStructure, LAN8720_PHY_ADDRESS); 8036166:	4629      	mov	r1, r5 8036168:	a805      	add	r0, sp, #20  ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;           ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;        ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable;         ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;     ETH_InitStructure.ETH_SecondFrameOperate = ETH_SecondFrameOperate_Enable; 803616a:	922d      	str	r2, [sp, #180]	; 0xb4  ETH_InitStructure.ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;        ETH_InitStructure.ETH_FixedBurst = ETH_FixedBurst_Enable;                  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;            ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat;  ETH_InitStructure.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_2_1; 803616c:	9333      	str	r3, [sp, #204]	; 0xcc  /* Call ETH_StructInit if you don't like to configure all ETH_InitStructure parameter */  ETH_StructInit(Ð_InitStructure);  /* Fill ETH_InitStructure parametrs */  /*------------------------   MAC   -----------------------------------*/  ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable; 803616e:	9505      	str	r5, [sp, #20]  //ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;   //  ETH_InitStructure.ETH_Speed = ETH_Speed_10M;  //  ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex;     ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable; 8036170:	940c      	str	r4, [sp, #48]	; 0x30  ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Disable;  ETH_InitStructure.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable; 8036172:	9410      	str	r4, [sp, #64]	; 0x40  ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Disable; 8036174:	9413      	str	r4, [sp, #76]	; 0x4c  ETH_InitStructure.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Enable; 8036176:	9416      	str	r4, [sp, #88]	; 0x58  ETH_InitStructure.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable; 8036178:	9418      	str	r4, [sp, #96]	; 0x60  ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect; 803617a:	9419      	str	r4, [sp, #100]	; 0x64  ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect; 803617c:	941a      	str	r4, [sp, #104]	; 0x68  /*------------------------   DMA   -----------------------------------*/      /* When we use the Checksum offload feature, we need to enable the Store and Forward mode:   the store and forward guarantee that a whole frame is stored in the FIFO, so the MAC can insert/verify the checksum,   if the checksum is OK the DMA can handle the frame otherwise the frame is dropped */  ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Enable;  803617e:	9425      	str	r4, [sp, #148]	; 0x94  ETH_InitStructure.ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;           ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;        ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable;        8036180:	942a      	str	r4, [sp, #168]	; 0xa8  ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;    8036182:	942b      	str	r4, [sp, #172]	; 0xac  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;            ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat;  ETH_InitStructure.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_2_1;  /* Configure Ethernet */  EthInitStatus = ETH_Init(Ð_InitStructure, LAN8720_PHY_ADDRESS); 8036184:	f000 fa80 	bl	8036688 <ETH_Init> 8036188:	4e11      	ldr	r6, [pc, #68]	; (80361d0 <ETH_BSP_Config+0x1c8>)  /* Enable the Ethernet Rx Interrupt */  ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R, ENABLE); 803618a:	4629      	mov	r1, r5  ETH_InitStructure.ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;            ETH_InitStructure.ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat;  ETH_InitStructure.ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_2_1;  /* Configure Ethernet */  EthInitStatus = ETH_Init(Ð_InitStructure, LAN8720_PHY_ADDRESS); 803618c:	6030      	str	r0, [r6, #0]  /* Enable the Ethernet Rx Interrupt */  ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R, ENABLE); 803618e:	4811      	ldr	r0, [pc, #68]	; (80361d4 <ETH_BSP_Config+0x1cc>) 8036190:	f000 f9e2 	bl	8036558 <ETH_DMAITConfig>void ETH_NVIC_Config(void){  NVIC_InitTypeDef   NVIC_InitStructure;  /* 2 bit for pre-emption priority, 2 bits for subpriority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);  8036194:	f44f 7040 	mov.w	r0, #768	; 0x300 8036198:	f7ef f878 	bl	802528c <NVIC_PriorityGroupConfig>    /* Enable the Ethernet global Interrupt */  NVIC_InitStructure.NVIC_IRQChannel = ETH_IRQn; 803619c:	233d      	movs	r3, #61	; 0x3d 803619e:	f88d 3008 	strb.w	r3, [sp, #8]  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  NVIC_Init(&NVIC_InitStructure);     80361a2:	a802      	add	r0, sp, #8  /* 2 bit for pre-emption priority, 2 bits for subpriority */  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);     /* Enable the Ethernet global Interrupt */  NVIC_InitStructure.NVIC_IRQChannel = ETH_IRQn;  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; 80361a4:	2305      	movs	r3, #5 80361a6:	f88d 3009 	strb.w	r3, [sp, #9]  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; 80361aa:	f88d 400a 	strb.w	r4, [sp, #10]  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 80361ae:	f88d 500b 	strb.w	r5, [sp, #11]  NVIC_Init(&NVIC_InitStructure);     80361b2:	f7ef f875 	bl	80252a0 <NVIC_Init>  ETH_MACDMA_Config();  /* Config NVIC for Ethernet */  ETH_NVIC_Config();  if (EthInitStatus == 0) { 80361b6:	6833      	ldr	r3, [r6, #0] 80361b8:	b903      	cbnz	r3, 80361bc <ETH_BSP_Config+0x1b4> 80361ba:	e7fe      	b.n	80361ba <ETH_BSP_Config+0x1b2>    // LCD_DisplayStringLine(Line5, (uint8_t*)"   Ethernet Init   ");    // LCD_DisplayStringLine(Line6, (uint8_t*)"      failed      ");    // STM_EVAL_LEDOn(LED5);    while(1);  }} 80361bc:	b034      	add	sp, #208	; 0xd0 80361be:	bd70      	pop	{r4, r5, r6, pc} 80361c0:	40020000 	.word	0x40020000 80361c4:	40020400 	.word	0x40020400 80361c8:	40020800 	.word	0x40020800 80361cc:	40021000 	.word	0x40021000 80361d0:	2000e5b0 	.word	0x2000e5b0 80361d4:	00010040 	.word	0x00010040080361d8 <ETH_Delay>:  * @brief  Inserts a delay time.  * @param  nCount: specifies the delay time length.  * @retval None  */static void ETH_Delay(__IO uint32_t nCount){ 80361d8:	b084      	sub	sp, #16  __IO uint32_t index = 0;  80361da:	2300      	movs	r3, #0  * @brief  Inserts a delay time.  * @param  nCount: specifies the delay time length.  * @retval None  */static void ETH_Delay(__IO uint32_t nCount){ 80361dc:	9001      	str	r0, [sp, #4]  __IO uint32_t index = 0;  80361de:	9303      	str	r3, [sp, #12]  for(index = nCount; index != 0; index--) 80361e0:	9b01      	ldr	r3, [sp, #4] 80361e2:	e001      	b.n	80361e8 <ETH_Delay+0x10> 80361e4:	9b03      	ldr	r3, [sp, #12] 80361e6:	3b01      	subs	r3, #1 80361e8:	9303      	str	r3, [sp, #12] 80361ea:	9b03      	ldr	r3, [sp, #12] 80361ec:	2b00      	cmp	r3, #0 80361ee:	d1f9      	bne.n	80361e4 <ETH_Delay+0xc>  {  }} 80361f0:	b004      	add	sp, #16 80361f2:	4770      	bx	lr080361f4 <ETH_DeInit>:  * @brief  Deinitializes the ETHERNET peripheral registers to their default reset values.  * @param  None   * @retval None  */void ETH_DeInit(void){ 80361f4:	b508      	push	{r3, lr}  RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_ETH_MAC, ENABLE); 80361f6:	2101      	movs	r1, #1 80361f8:	f04f 7000 	mov.w	r0, #33554432	; 0x2000000 80361fc:	f7ef fad6 	bl	80257ac <RCC_AHB1PeriphResetCmd>  RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_ETH_MAC, DISABLE); 8036200:	f04f 7000 	mov.w	r0, #33554432	; 0x2000000 8036204:	2100      	movs	r1, #0} 8036206:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  * @retval None  */void ETH_DeInit(void){  RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_ETH_MAC, ENABLE);  RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_ETH_MAC, DISABLE); 803620a:	f7ef bacf 	b.w	80257ac <RCC_AHB1PeriphResetCmd>0803620e <ETH_StructInit>:  /* Ethernet interframe gap set to 96 bits */  ETH_InitStruct->ETH_InterFrameGap = ETH_InterFrameGap_96Bit;                                                                                                                               /* Carrier Sense Enabled in Half-Duplex mode */   ETH_InitStruct->ETH_CarrierSense = ETH_CarrierSense_Enable;                                  /* PHY speed configured to 100Mbit/s */  ETH_InitStruct->ETH_Speed = ETH_Speed_100M;  803620e:	f44f 4280 	mov.w	r2, #16384	; 0x4000 8036212:	6142      	str	r2, [r0, #20]  /* Receive own Frames in Half-Duplex mode enabled */  ETH_InitStruct->ETH_ReceiveOwn = ETH_ReceiveOwn_Enable;                  /* MAC MII loopback disabled */   ETH_InitStruct->ETH_LoopbackMode = ETH_LoopbackMode_Disable;                /* Full-Duplex mode selected */  ETH_InitStruct->ETH_Mode = ETH_Mode_FullDuplex;                       8036214:	f44f 6200 	mov.w	r2, #2048	; 0x800 8036218:	6202      	str	r2, [r0, #32]  /* Receive all frames disabled */   ETH_InitStruct->ETH_ReceiveAll = ETH_ReceiveAll_Disable;  /* Source address filtering (on the optional MAC addresses) disabled */  ETH_InitStruct->ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable;     /* Do not forward control frames that do not pass the address filtering */  ETH_InitStruct->ETH_PassControlFrames = ETH_PassControlFrames_BlockAll;    803621a:	2240      	movs	r2, #64	; 0x40 803621c:	6402      	str	r2, [r0, #64]	; 0x40  /* Disable reception of Broadcast frames */  ETH_InitStruct->ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable; 803621e:	2220      	movs	r2, #32 8036220:	6442      	str	r2, [r0, #68]	; 0x44  /* Initialize hash table high and low regs */  ETH_InitStruct->ETH_HashTableHigh = 0x0;                  ETH_InitStruct->ETH_HashTableLow = 0x0;                       /* Flow control config (flow control disabled)*/  ETH_InitStruct->ETH_PauseTime = 0x0;                   ETH_InitStruct->ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable;             8036222:	2280      	movs	r2, #128	; 0x80{  /* ETH_InitStruct members default value */  /*------------------------   MAC Configuration   ---------------------------*/    /* PHY Auto-negotiation enabled */  ETH_InitStruct->ETH_AutoNegotiation = ETH_AutoNegotiation_Enable;            8036224:	2301      	movs	r3, #1  /* Initialize hash table high and low regs */  ETH_InitStruct->ETH_HashTableHigh = 0x0;                  ETH_InitStruct->ETH_HashTableLow = 0x0;                       /* Flow control config (flow control disabled)*/  ETH_InitStruct->ETH_PauseTime = 0x0;                   ETH_InitStruct->ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable;             8036226:	6642      	str	r2, [r0, #100]	; 0x64  ETH_InitStruct->ETH_VLANTagIdentifier = 0x0;              /*---------------------- DMA Configuration   -------------------------------*/  /* Drops frames with with TCP/IP checksum errors */  ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable;  8036228:	f04f 6280 	mov.w	r2, #67108864	; 0x4000000{  /* ETH_InitStruct members default value */  /*------------------------   MAC Configuration   ---------------------------*/    /* PHY Auto-negotiation enabled */  ETH_InitStruct->ETH_AutoNegotiation = ETH_AutoNegotiation_Enable;            803622c:	6003      	str	r3, [r0, #0]  ETH_InitStruct->ETH_VLANTagIdentifier = 0x0;              /*---------------------- DMA Configuration   -------------------------------*/  /* Drops frames with with TCP/IP checksum errors */  ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable;  803622e:	f8c0 2080 	str.w	r2, [r0, #128]	; 0x80  /*------------------------   MAC Configuration   ---------------------------*/    /* PHY Auto-negotiation enabled */  ETH_InitStruct->ETH_AutoNegotiation = ETH_AutoNegotiation_Enable;             /* MAC watchdog enabled: cuts-off long frame */  ETH_InitStruct->ETH_Watchdog = ETH_Watchdog_Enable; 8036232:	2300      	movs	r3, #0  /*---------------------- DMA Configuration   -------------------------------*/  /* Drops frames with with TCP/IP checksum errors */  ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable;   /* Store and forward mode enabled for receive */  ETH_InitStruct->ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;        8036234:	f04f 7200 	mov.w	r2, #33554432	; 0x2000000  /*------------------------   MAC Configuration   ---------------------------*/    /* PHY Auto-negotiation enabled */  ETH_InitStruct->ETH_AutoNegotiation = ETH_AutoNegotiation_Enable;             /* MAC watchdog enabled: cuts-off long frame */  ETH_InitStruct->ETH_Watchdog = ETH_Watchdog_Enable; 8036238:	6043      	str	r3, [r0, #4]  /* MAC Jabber enabled in Half-duplex mode */  ETH_InitStruct->ETH_Jabber = ETH_Jabber_Enable;                                                        803623a:	6083      	str	r3, [r0, #8]  /* Ethernet interframe gap set to 96 bits */  ETH_InitStruct->ETH_InterFrameGap = ETH_InterFrameGap_96Bit;                                                                                                                              803623c:	60c3      	str	r3, [r0, #12]  /* Carrier Sense Enabled in Half-Duplex mode */   ETH_InitStruct->ETH_CarrierSense = ETH_CarrierSense_Enable;                                 803623e:	6103      	str	r3, [r0, #16]  /* PHY speed configured to 100Mbit/s */  ETH_InitStruct->ETH_Speed = ETH_Speed_100M;   /* Receive own Frames in Half-Duplex mode enabled */  ETH_InitStruct->ETH_ReceiveOwn = ETH_ReceiveOwn_Enable;                 8036240:	6183      	str	r3, [r0, #24]  /* MAC MII loopback disabled */   ETH_InitStruct->ETH_LoopbackMode = ETH_LoopbackMode_Disable;               8036242:	61c3      	str	r3, [r0, #28]  /* Full-Duplex mode selected */  ETH_InitStruct->ETH_Mode = ETH_Mode_FullDuplex;                        /* IPv4 and TCP/UDP/ICMP frame Checksum Offload disabled */  ETH_InitStruct->ETH_ChecksumOffload = ETH_ChecksumOffload_Disable;                                                              8036244:	6243      	str	r3, [r0, #36]	; 0x24  /* Retry Transmission enabled for half-duplex mode */   ETH_InitStruct->ETH_RetryTransmission = ETH_RetryTransmission_Enable;                                                                                    8036246:	6283      	str	r3, [r0, #40]	; 0x28  /* Automatic PAD/CRC strip disabled*/  ETH_InitStruct->ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable;                                                           8036248:	62c3      	str	r3, [r0, #44]	; 0x2c  /* half-duplex mode retransmission Backoff time_limit = 10 slot times*/   ETH_InitStruct->ETH_BackOffLimit = ETH_BackOffLimit_10;      803624a:	6303      	str	r3, [r0, #48]	; 0x30  /* half-duplex mode Deferral check disabled */  ETH_InitStruct->ETH_DeferralCheck = ETH_DeferralCheck_Disable;                                                                                                                   803624c:	6343      	str	r3, [r0, #52]	; 0x34  /* Receive all frames disabled */   ETH_InitStruct->ETH_ReceiveAll = ETH_ReceiveAll_Disable; 803624e:	6383      	str	r3, [r0, #56]	; 0x38  /* Source address filtering (on the optional MAC addresses) disabled */  ETH_InitStruct->ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable;    8036250:	63c3      	str	r3, [r0, #60]	; 0x3c  /* Do not forward control frames that do not pass the address filtering */  ETH_InitStruct->ETH_PassControlFrames = ETH_PassControlFrames_BlockAll;     /* Disable reception of Broadcast frames */  ETH_InitStruct->ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Disable;  /* Normal Destination address filtering (not reverse addressing) */  ETH_InitStruct->ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal; 8036252:	6483      	str	r3, [r0, #72]	; 0x48  /* Promiscuous address filtering mode disabled */  ETH_InitStruct->ETH_PromiscuousMode = ETH_PromiscuousMode_Disable;                                                              8036254:	64c3      	str	r3, [r0, #76]	; 0x4c  /* Perfect address filtering for multicast addresses */  ETH_InitStruct->ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;        8036256:	6503      	str	r3, [r0, #80]	; 0x50  /* Perfect address filtering for unicast addresses */  ETH_InitStruct->ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect;       8036258:	6543      	str	r3, [r0, #84]	; 0x54  /* Initialize hash table high and low regs */  ETH_InitStruct->ETH_HashTableHigh = 0x0;                 803625a:	6583      	str	r3, [r0, #88]	; 0x58  ETH_InitStruct->ETH_HashTableLow = 0x0;                      803625c:	65c3      	str	r3, [r0, #92]	; 0x5c  /* Flow control config (flow control disabled)*/  ETH_InitStruct->ETH_PauseTime = 0x0;                  803625e:	6603      	str	r3, [r0, #96]	; 0x60  ETH_InitStruct->ETH_ZeroQuantaPause = ETH_ZeroQuantaPause_Disable;              ETH_InitStruct->ETH_PauseLowThreshold = ETH_PauseLowThreshold_Minus4;          8036260:	6683      	str	r3, [r0, #104]	; 0x68  ETH_InitStruct->ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable;    8036262:	66c3      	str	r3, [r0, #108]	; 0x6c  ETH_InitStruct->ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable;         8036264:	6703      	str	r3, [r0, #112]	; 0x70  ETH_InitStruct->ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable; 8036266:	6743      	str	r3, [r0, #116]	; 0x74  /* VLANtag config (VLAN field not checked) */  ETH_InitStruct->ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit;           8036268:	6783      	str	r3, [r0, #120]	; 0x78  ETH_InitStruct->ETH_VLANTagIdentifier = 0x0;           803626a:	67c3      	str	r3, [r0, #124]	; 0x7c  /*---------------------- DMA Configuration   -------------------------------*/  /* Drops frames with with TCP/IP checksum errors */  ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable;   /* Store and forward mode enabled for receive */  ETH_InitStruct->ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;        803626c:	f8c0 2084 	str.w	r2, [r0, #132]	; 0x84  ETH_InitStruct->ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes;                               /* Disable Operate on second frame (transmit a second frame to FIFO without   waiting status of previous frame*/                             ETH_InitStruct->ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable;  /* DMA works on 32-bit aligned start source and destinations addresses */  ETH_InitStruct->ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable; 8036270:	f8c0 20a4 	str.w	r2, [r0, #164]	; 0xa4  /* Enabled Fixed Burst Mode (mix of INC4, INC8, INC16 and SINGLE DMA transactions */  ETH_InitStruct->ETH_FixedBurst = ETH_FixedBurst_Enable; 8036274:	f44f 3280 	mov.w	r2, #65536	; 0x10000 8036278:	f8c0 20a8 	str.w	r2, [r0, #168]	; 0xa8  /* DMA transfer max burst length = 32 beats = 32 x 32bits */  ETH_InitStruct->ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat; 803627c:	f44f 0280 	mov.w	r2, #4194304	; 0x400000  /* Store and forward mode enabled for receive */  ETH_InitStruct->ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;         /* Flush received frame that created FIFO overflow */  ETH_InitStruct->ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Enable;   /* Store and forward mode enabled for transmit */  ETH_InitStruct->ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;   8036280:	f44f 1100 	mov.w	r1, #2097152	; 0x200000  /* DMA works on 32-bit aligned start source and destinations addresses */  ETH_InitStruct->ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;  /* Enabled Fixed Burst Mode (mix of INC4, INC8, INC16 and SINGLE DMA transactions */  ETH_InitStruct->ETH_FixedBurst = ETH_FixedBurst_Enable;  /* DMA transfer max burst length = 32 beats = 32 x 32bits */  ETH_InitStruct->ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat; 8036284:	f8c0 20ac 	str.w	r2, [r0, #172]	; 0xac  ETH_InitStruct->ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat; 8036288:	f44f 5200 	mov.w	r2, #8192	; 0x2000  /* Drops frames with with TCP/IP checksum errors */  ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Disable;   /* Store and forward mode enabled for receive */  ETH_InitStruct->ETH_ReceiveStoreForward = ETH_ReceiveStoreForward_Enable;         /* Flush received frame that created FIFO overflow */  ETH_InitStruct->ETH_FlushReceivedFrame = ETH_FlushReceivedFrame_Enable;  803628c:	f8c0 3088 	str.w	r3, [r0, #136]	; 0x88  /* Store and forward mode enabled for transmit */  ETH_InitStruct->ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;   8036290:	f8c0 108c 	str.w	r1, [r0, #140]	; 0x8c  /* Threshold TXFIFO level set to 64 bytes (used when threshold mode is enabled) */  ETH_InitStruct->ETH_TransmitThresholdControl = ETH_TransmitThresholdControl_64Bytes;   8036294:	f8c0 3090 	str.w	r3, [r0, #144]	; 0x90  /* Disable forwarding frames with errors (short frames, CRC,...)*/  ETH_InitStruct->ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Disable;  8036298:	f8c0 3094 	str.w	r3, [r0, #148]	; 0x94  /* Disable undersized good frames */  ETH_InitStruct->ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Disable;  803629c:	f8c0 3098 	str.w	r3, [r0, #152]	; 0x98  /* Threshold RXFIFO level set to 64 bytes (used when Cut-through mode is enabled) */  ETH_InitStruct->ETH_ReceiveThresholdControl = ETH_ReceiveThresholdControl_64Bytes;                              80362a0:	f8c0 309c 	str.w	r3, [r0, #156]	; 0x9c  /* Disable Operate on second frame (transmit a second frame to FIFO without   waiting status of previous frame*/                             ETH_InitStruct->ETH_SecondFrameOperate = ETH_SecondFrameOperate_Disable; 80362a4:	f8c0 30a0 	str.w	r3, [r0, #160]	; 0xa0  ETH_InitStruct->ETH_AddressAlignedBeats = ETH_AddressAlignedBeats_Enable;  /* Enabled Fixed Burst Mode (mix of INC4, INC8, INC16 and SINGLE DMA transactions */  ETH_InitStruct->ETH_FixedBurst = ETH_FixedBurst_Enable;  /* DMA transfer max burst length = 32 beats = 32 x 32bits */  ETH_InitStruct->ETH_RxDMABurstLength = ETH_RxDMABurstLength_32Beat;  ETH_InitStruct->ETH_TxDMABurstLength = ETH_TxDMABurstLength_32Beat; 80362a8:	f8c0 20b0 	str.w	r2, [r0, #176]	; 0xb0  /* DMA Ring mode skip length = 0 */  ETH_InitStruct->ETH_DescriptorSkipLength = 0x0;  80362ac:	f8c0 30b4 	str.w	r3, [r0, #180]	; 0xb4  /* Equal priority (round-robin) between transmit and receive DMA engines */  ETH_InitStruct->ETH_DMAArbitration = ETH_DMAArbitration_RoundRobin_RxTx_1_1; 80362b0:	f8c0 30b8 	str.w	r3, [r0, #184]	; 0xb8 80362b4:	4770      	bx	lr 80362b6:	0000      	movs	r0, r0080362b8 <ETH_MACTransmissionCmd>:  * @param  NewState: new state of the MAC transmission.  *   This parameter can be: ENABLE or DISABLE.  * @retval None  */void ETH_MACTransmissionCmd(FunctionalState NewState){  80362b8:	4b04      	ldr	r3, [pc, #16]	; (80362cc <ETH_MACTransmissionCmd+0x14>)  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE)  {    /* Enable the MAC transmission */    ETH->MACCR |= ETH_MACCR_TE;   80362ba:	681a      	ldr	r2, [r3, #0]void ETH_MACTransmissionCmd(FunctionalState NewState){   /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE) 80362bc:	b110      	cbz	r0, 80362c4 <ETH_MACTransmissionCmd+0xc>  {    /* Enable the MAC transmission */    ETH->MACCR |= ETH_MACCR_TE;   80362be:	f042 0208 	orr.w	r2, r2, #8 80362c2:	e001      	b.n	80362c8 <ETH_MACTransmissionCmd+0x10>  }  else  {    /* Disable the MAC transmission */    ETH->MACCR &= ~ETH_MACCR_TE; 80362c4:	f022 0208 	bic.w	r2, r2, #8 80362c8:	601a      	str	r2, [r3, #0] 80362ca:	4770      	bx	lr 80362cc:	40028000 	.word	0x40028000080362d0 <ETH_MACReceptionCmd>:  * @param  NewState: new state of the MAC reception.  *   This parameter can be: ENABLE or DISABLE.  * @retval None  */void ETH_MACReceptionCmd(FunctionalState NewState){  80362d0:	4b04      	ldr	r3, [pc, #16]	; (80362e4 <ETH_MACReceptionCmd+0x14>)  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE)  {    /* Enable the MAC reception */    ETH->MACCR |= ETH_MACCR_RE;   80362d2:	681a      	ldr	r2, [r3, #0]void ETH_MACReceptionCmd(FunctionalState NewState){   /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE) 80362d4:	b110      	cbz	r0, 80362dc <ETH_MACReceptionCmd+0xc>  {    /* Enable the MAC reception */    ETH->MACCR |= ETH_MACCR_RE;   80362d6:	f042 0204 	orr.w	r2, r2, #4 80362da:	e001      	b.n	80362e0 <ETH_MACReceptionCmd+0x10>  }  else  {    /* Disable the MAC reception */    ETH->MACCR &= ~ETH_MACCR_RE; 80362dc:	f022 0204 	bic.w	r2, r2, #4 80362e0:	601a      	str	r2, [r3, #0] 80362e2:	4770      	bx	lr 80362e4:	40028000 	.word	0x40028000080362e8 <ETH_MACAddressConfig>:  uint32_t tmpreg;  /* Check the parameters */  assert_param(IS_ETH_MAC_ADDRESS0123(MacAddr));    /* Calculate the selected MAC address high register */  tmpreg = ((uint32_t)Addr[5] << 8) | (uint32_t)Addr[4]; 80362e8:	790b      	ldrb	r3, [r1, #4] 80362ea:	794a      	ldrb	r2, [r1, #5] 80362ec:	ea43 2202 	orr.w	r2, r3, r2, lsl #8  /* Load the selected MAC address high register */  (*(__IO uint32_t *) (ETH_MAC_ADDR_HBASE + MacAddr)) = tmpreg; 80362f0:	4b07      	ldr	r3, [pc, #28]	; (8036310 <ETH_MACAddressConfig+0x28>) 80362f2:	50c2      	str	r2, [r0, r3]  /* Calculate the selected MAC address low register */  tmpreg = ((uint32_t)Addr[3] << 24) | ((uint32_t)Addr[2] << 16) | ((uint32_t)Addr[1] << 8) | Addr[0]; 80362f4:	788a      	ldrb	r2, [r1, #2] 80362f6:	78cb      	ldrb	r3, [r1, #3] 80362f8:	0412      	lsls	r2, r2, #16 80362fa:	ea42 6203 	orr.w	r2, r2, r3, lsl #24 80362fe:	780b      	ldrb	r3, [r1, #0] 8036300:	431a      	orrs	r2, r3 8036302:	784b      	ldrb	r3, [r1, #1] 8036304:	ea42 2203 	orr.w	r2, r2, r3, lsl #8   /* Load the selected MAC address low register */  (*(__IO uint32_t *) (ETH_MAC_ADDR_LBASE + MacAddr)) = tmpreg; 8036308:	4b02      	ldr	r3, [pc, #8]	; (8036314 <ETH_MACAddressConfig+0x2c>) 803630a:	50c2      	str	r2, [r0, r3] 803630c:	4770      	bx	lr 803630e:	bf00      	nop 8036310:	40028040 	.word	0x40028040 8036314:	40028044 	.word	0x4002804408036318 <ETH_Get_Received_Frame_interrupt>:  *         the receive frame (should be used with interrupt mode only)  * @param  None  * @retval Structure of type FrameTypeDef  */FrameTypeDef ETH_Get_Received_Frame_interrupt(void){  8036318:	b537      	push	{r0, r1, r2, r4, r5, lr}  FrameTypeDef frame={0,0,0};  __IO uint32_t descriptor_scan_counter = 0;  803631a:	2300      	movs	r3, #0 803631c:	9301      	str	r3, [sp, #4]        /* check if first segment in frame */    if(((DMARxDescToGet->Status & ETH_DMARxDesc_FS) != (uint32_t)RESET)&&      ((DMARxDescToGet->Status & ETH_DMARxDesc_LS) == (uint32_t)RESET))    {      DMA_RX_FRAME_infos->FS_Rx_Desc = DMARxDescToGet; 803631e:	4b24      	ldr	r3, [pc, #144]	; (80363b0 <ETH_Get_Received_Frame_interrupt+0x98>) 8036320:	681a      	ldr	r2, [r3, #0] 8036322:	4b24      	ldr	r3, [pc, #144]	; (80363b4 <ETH_Get_Received_Frame_interrupt+0x9c>)      DMA_RX_FRAME_infos->Seg_Count = 1;    8036324:	2401      	movs	r4, #1 8036326:	681b      	ldr	r3, [r3, #0]{   FrameTypeDef frame={0,0,0};  __IO uint32_t descriptor_scan_counter = 0;     /* scan descriptors owned by CPU */  while (((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) == (uint32_t)RESET)&& 8036328:	e033      	b.n	8036392 <ETH_Get_Received_Frame_interrupt+0x7a>        (descriptor_scan_counter<ETH_RXBUFNB))  {        /* Just by security */    descriptor_scan_counter++; 803632a:	9901      	ldr	r1, [sp, #4] 803632c:	3101      	adds	r1, #1 803632e:	9101      	str	r1, [sp, #4]        /* check if first segment in frame */    if(((DMARxDescToGet->Status & ETH_DMARxDesc_FS) != (uint32_t)RESET)&& 8036330:	6819      	ldr	r1, [r3, #0] 8036332:	0589      	lsls	r1, r1, #22 8036334:	d505      	bpl.n	8036342 <ETH_Get_Received_Frame_interrupt+0x2a>      ((DMARxDescToGet->Status & ETH_DMARxDesc_LS) == (uint32_t)RESET)) 8036336:	6819      	ldr	r1, [r3, #0]        /* Just by security */    descriptor_scan_counter++;        /* check if first segment in frame */    if(((DMARxDescToGet->Status & ETH_DMARxDesc_FS) != (uint32_t)RESET)&& 8036338:	05c9      	lsls	r1, r1, #23 803633a:	d402      	bmi.n	8036342 <ETH_Get_Received_Frame_interrupt+0x2a>      ((DMARxDescToGet->Status & ETH_DMARxDesc_LS) == (uint32_t)RESET))    {      DMA_RX_FRAME_infos->FS_Rx_Desc = DMARxDescToGet; 803633c:	6013      	str	r3, [r2, #0]      DMA_RX_FRAME_infos->Seg_Count = 1;    803633e:	6094      	str	r4, [r2, #8] 8036340:	e009      	b.n	8036356 <ETH_Get_Received_Frame_interrupt+0x3e>      DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMARxDescToGet->Buffer2NextDescAddr);    }        /* check if intermediate segment */    else if (((DMARxDescToGet->Status & ETH_DMARxDesc_LS) == (uint32_t)RESET)&& 8036342:	6819      	ldr	r1, [r3, #0] 8036344:	05c9      	lsls	r1, r1, #23 8036346:	d408      	bmi.n	803635a <ETH_Get_Received_Frame_interrupt+0x42>            ((DMARxDescToGet->Status & ETH_DMARxDesc_FS) == (uint32_t)RESET)) 8036348:	6819      	ldr	r1, [r3, #0]      DMA_RX_FRAME_infos->Seg_Count = 1;         DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMARxDescToGet->Buffer2NextDescAddr);    }        /* check if intermediate segment */    else if (((DMARxDescToGet->Status & ETH_DMARxDesc_LS) == (uint32_t)RESET)&& 803634a:	0589      	lsls	r1, r1, #22 803634c:	d500      	bpl.n	8036350 <ETH_Get_Received_Frame_interrupt+0x38> 803634e:	e004      	b.n	803635a <ETH_Get_Received_Frame_interrupt+0x42>            ((DMARxDescToGet->Status & ETH_DMARxDesc_FS) == (uint32_t)RESET))    {      (DMA_RX_FRAME_infos->Seg_Count) ++; 8036350:	6891      	ldr	r1, [r2, #8] 8036352:	3101      	adds	r1, #1 8036354:	6091      	str	r1, [r2, #8]      DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMARxDescToGet->Buffer2NextDescAddr); 8036356:	68db      	ldr	r3, [r3, #12] 8036358:	e01b      	b.n	8036392 <ETH_Get_Received_Frame_interrupt+0x7a> 803635a:	4a16      	ldr	r2, [pc, #88]	; (80363b4 <ETH_Get_Received_Frame_interrupt+0x9c>) 803635c:	6013      	str	r3, [r2, #0]    /* should be last segment */    else    {       /* last segment */      DMA_RX_FRAME_infos->LS_Rx_Desc = DMARxDescToGet; 803635e:	4a14      	ldr	r2, [pc, #80]	; (80363b0 <ETH_Get_Received_Frame_interrupt+0x98>) 8036360:	6812      	ldr	r2, [r2, #0] 8036362:	6053      	str	r3, [r2, #4]            (DMA_RX_FRAME_infos->Seg_Count)++; 8036364:	6891      	ldr	r1, [r2, #8] 8036366:	3101      	adds	r1, #1 8036368:	6091      	str	r1, [r2, #8]              /* first segment is last segment */      if ((DMA_RX_FRAME_infos->Seg_Count)==1) 803636a:	6891      	ldr	r1, [r2, #8] 803636c:	2901      	cmp	r1, #1        DMA_RX_FRAME_infos->FS_Rx_Desc = DMARxDescToGet; 803636e:	bf08      	it	eq 8036370:	6013      	streq	r3, [r2, #0]            /* Get the Frame Length of the received packet: substruct 4 bytes of the CRC */      frame.length = ((DMARxDescToGet->Status & ETH_DMARxDesc_FL) >> ETH_DMARxDesc_FrameLengthShift) - 4; 8036372:	6819      	ldr	r1, [r3, #0]        /* Get the address of the buffer start address */       /* Check if more than one segment in the frame */      if (DMA_RX_FRAME_infos->Seg_Count >1) 8036374:	6894      	ldr	r4, [r2, #8]      /* first segment is last segment */      if ((DMA_RX_FRAME_infos->Seg_Count)==1)        DMA_RX_FRAME_infos->FS_Rx_Desc = DMARxDescToGet;            /* Get the Frame Length of the received packet: substruct 4 bytes of the CRC */      frame.length = ((DMARxDescToGet->Status & ETH_DMARxDesc_FL) >> ETH_DMARxDesc_FrameLengthShift) - 4; 8036376:	f3c1 410d 	ubfx	r1, r1, #16, #14 803637a:	3904      	subs	r1, #4        /* Get the address of the buffer start address */       /* Check if more than one segment in the frame */      if (DMA_RX_FRAME_infos->Seg_Count >1) 803637c:	2c01      	cmp	r4, #1      {        frame.buffer =(DMA_RX_FRAME_infos->FS_Rx_Desc)->Buffer1Addr; 803637e:	bf8a      	itet	hi 8036380:	6812      	ldrhi	r2, [r2, #0]      }      else       {        frame.buffer = DMARxDescToGet->Buffer1Addr; 8036382:	689a      	ldrls	r2, [r3, #8]        /* Get the address of the buffer start address */       /* Check if more than one segment in the frame */      if (DMA_RX_FRAME_infos->Seg_Count >1)      {        frame.buffer =(DMA_RX_FRAME_infos->FS_Rx_Desc)->Buffer1Addr; 8036384:	6892      	ldrhi	r2, [r2, #8]      }            frame.descriptor = DMARxDescToGet;        /* Update the ETHERNET DMA global Rx descriptor with next Rx descriptor */            DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMARxDescToGet->Buffer2NextDescAddr); 8036386:	4c0b      	ldr	r4, [pc, #44]	; (80363b4 <ETH_Get_Received_Frame_interrupt+0x9c>) 8036388:	68dd      	ldr	r5, [r3, #12]           /* Return Frame */      return (frame);   803638a:	e880 0006 	stmia.w	r0, {r1, r2}      }            frame.descriptor = DMARxDescToGet;        /* Update the ETHERNET DMA global Rx descriptor with next Rx descriptor */            DMARxDescToGet = (ETH_DMADESCTypeDef*) (DMARxDescToGet->Buffer2NextDescAddr); 803638e:	6025      	str	r5, [r4, #0] 8036390:	e007      	b.n	80363a2 <ETH_Get_Received_Frame_interrupt+0x8a>{   FrameTypeDef frame={0,0,0};  __IO uint32_t descriptor_scan_counter = 0;     /* scan descriptors owned by CPU */  while (((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) == (uint32_t)RESET)&& 8036392:	6819      	ldr	r1, [r3, #0] 8036394:	2900      	cmp	r1, #0 8036396:	da06      	bge.n	80363a6 <ETH_Get_Received_Frame_interrupt+0x8e> 8036398:	4a06      	ldr	r2, [pc, #24]	; (80363b4 <ETH_Get_Received_Frame_interrupt+0x9c>) 803639a:	6013      	str	r3, [r2, #0]           /* Return Frame */      return (frame);      }  }  return (frame);  803639c:	2300      	movs	r3, #0 803639e:	6003      	str	r3, [r0, #0] 80363a0:	6043      	str	r3, [r0, #4] 80363a2:	6083      	str	r3, [r0, #8] 80363a4:	e003      	b.n	80363ae <ETH_Get_Received_Frame_interrupt+0x96>  FrameTypeDef frame={0,0,0};  __IO uint32_t descriptor_scan_counter = 0;     /* scan descriptors owned by CPU */  while (((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) == (uint32_t)RESET)&&        (descriptor_scan_counter<ETH_RXBUFNB)) 80363a6:	9901      	ldr	r1, [sp, #4]{   FrameTypeDef frame={0,0,0};  __IO uint32_t descriptor_scan_counter = 0;     /* scan descriptors owned by CPU */  while (((DMARxDescToGet->Status & ETH_DMARxDesc_OWN) == (uint32_t)RESET)&& 80363a8:	2904      	cmp	r1, #4 80363aa:	d9be      	bls.n	803632a <ETH_Get_Received_Frame_interrupt+0x12> 80363ac:	e7f4      	b.n	8036398 <ETH_Get_Received_Frame_interrupt+0x80>      /* Return Frame */      return (frame);      }  }  return (frame); } 80363ae:	bd3e      	pop	{r1, r2, r3, r4, r5, pc} 80363b0:	200133a0 	.word	0x200133a0 80363b4:	20011530 	.word	0x20011530080363b8 <ETH_Prepare_Transmit_Descriptors>:{     uint32_t buf_count =0, size=0,i=0;  __IO ETH_DMADESCTypeDef *DMATxNextDesc;    /* Check if the descriptor is owned by the ETHERNET DMA (when set) or CPU (when reset) */  if((DMATxDescToSet->Status & ETH_DMATxDesc_OWN) != (u32)RESET) 80363b8:	4b29      	ldr	r3, [pc, #164]	; (8036460 <ETH_Prepare_Transmit_Descriptors+0xa8>) 80363ba:	681b      	ldr	r3, [r3, #0] 80363bc:	681a      	ldr	r2, [r3, #0] 80363be:	2a00      	cmp	r2, #0  * @brief  Prepares DMA Tx descriptors to transmit an ethernet frame  * @param  FrameLength : length of the frame to send  * @retval error status  */uint32_t ETH_Prepare_Transmit_Descriptors(u16 FrameLength){    80363c0:	b5f0      	push	{r4, r5, r6, r7, lr}  uint32_t buf_count =0, size=0,i=0;  __IO ETH_DMADESCTypeDef *DMATxNextDesc;    /* Check if the descriptor is owned by the ETHERNET DMA (when set) or CPU (when reset) */  if((DMATxDescToSet->Status & ETH_DMATxDesc_OWN) != (u32)RESET) 80363c2:	db48      	blt.n	8036456 <ETH_Prepare_Transmit_Descriptors+0x9e>    return ETH_ERROR;  }    DMATxNextDesc = DMATxDescToSet;    if (FrameLength > ETH_TX_BUF_SIZE) 80363c4:	f240 52f4 	movw	r2, #1524	; 0x5f4 80363c8:	4290      	cmp	r0, r2 80363ca:	d917      	bls.n	80363fc <ETH_Prepare_Transmit_Descriptors+0x44>  {    buf_count = FrameLength/ETH_TX_BUF_SIZE; 80363cc:	fbb0 f4f2 	udiv	r4, r0, r2    if (FrameLength%ETH_TX_BUF_SIZE) buf_count++; 80363d0:	fb02 0214 	mls	r2, r2, r4, r0 80363d4:	b292      	uxth	r2, r2    DMATxNextDesc = DMATxDescToSet;    if (FrameLength > ETH_TX_BUF_SIZE)  {    buf_count = FrameLength/ETH_TX_BUF_SIZE; 80363d6:	b2a1      	uxth	r1, r4    if (FrameLength%ETH_TX_BUF_SIZE) buf_count++; 80363d8:	b10a      	cbz	r2, 80363de <ETH_Prepare_Transmit_Descriptors+0x26> 80363da:	3101      	adds	r1, #1 80363dc:	e001      	b.n	80363e2 <ETH_Prepare_Transmit_Descriptors+0x2a>  }  else buf_count =1;    if (buf_count ==1) 80363de:	2901      	cmp	r1, #1 80363e0:	d00c      	beq.n	80363fc <ETH_Prepare_Transmit_Descriptors+0x44>             if (i== (buf_count-1))      {        /* Setting the last segment bit */        DMATxNextDesc->Status |= ETH_DMATxDesc_LS;        size = FrameLength - (buf_count-1)*ETH_TX_BUF_SIZE; 80363e2:	4d20      	ldr	r5, [pc, #128]	; (8036464 <ETH_Prepare_Transmit_Descriptors+0xac>) 80363e4:	f200 50f4 	addw	r0, r0, #1524	; 0x5f4 80363e8:	fb05 0501 	mla	r5, r5, r1, r0        DMATxNextDesc->ControlBufferSize = (size & ETH_DMATxDesc_TBS1); 80363ec:	04ed      	lsls	r5, r5, #19 80363ee:	0ced      	lsrs	r5, r5, #19 80363f0:	461a      	mov	r2, r3 80363f2:	2000      	movs	r0, #0        /* Setting the first segment bit */        DMATxDescToSet->Status |= ETH_DMATxDesc_FS;        }            /* Program size */      DMATxNextDesc->ControlBufferSize = (ETH_TX_BUF_SIZE & ETH_DMATxDesc_TBS1); 80363f4:	f240 56f4 	movw	r6, #1524	; 0x5f4             if (i== (buf_count-1)) 80363f8:	1e4f      	subs	r7, r1, #1 80363fa:	e00c      	b.n	8036416 <ETH_Prepare_Transmit_Descriptors+0x5e>  else buf_count =1;    if (buf_count ==1)  {    /*set LAST and FIRST segment */    DMATxDescToSet->Status |=ETH_DMATxDesc_FS|ETH_DMATxDesc_LS; 80363fc:	681a      	ldr	r2, [r3, #0]    /* Set frame size */    DMATxDescToSet->ControlBufferSize = (FrameLength& ETH_DMATxDesc_TBS1); 80363fe:	04c0      	lsls	r0, r0, #19  else buf_count =1;    if (buf_count ==1)  {    /*set LAST and FIRST segment */    DMATxDescToSet->Status |=ETH_DMATxDesc_FS|ETH_DMATxDesc_LS; 8036400:	f042 5240 	orr.w	r2, r2, #805306368	; 0x30000000    /* Set frame size */    DMATxDescToSet->ControlBufferSize = (FrameLength& ETH_DMATxDesc_TBS1); 8036404:	0cc0      	lsrs	r0, r0, #19  else buf_count =1;    if (buf_count ==1)  {    /*set LAST and FIRST segment */    DMATxDescToSet->Status |=ETH_DMATxDesc_FS|ETH_DMATxDesc_LS; 8036406:	601a      	str	r2, [r3, #0]    /* Set frame size */    DMATxDescToSet->ControlBufferSize = (FrameLength& ETH_DMATxDesc_TBS1); 8036408:	6058      	str	r0, [r3, #4]    /* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */    DMATxDescToSet->Status |= ETH_DMATxDesc_OWN; 803640a:	681a      	ldr	r2, [r3, #0] 803640c:	f042 4200 	orr.w	r2, r2, #2147483648	; 0x80000000 8036410:	601a      	str	r2, [r3, #0]    DMATxDescToSet= (ETH_DMADESCTypeDef *)(DMATxDescToSet->Buffer2NextDescAddr); 8036412:	68da      	ldr	r2, [r3, #12] 8036414:	e014      	b.n	8036440 <ETH_Prepare_Transmit_Descriptors+0x88>  }  else  {    for (i=0; i< buf_count; i++)    {      if (i==0)  8036416:	b918      	cbnz	r0, 8036420 <ETH_Prepare_Transmit_Descriptors+0x68>      {        /* Setting the first segment bit */        DMATxDescToSet->Status |= ETH_DMATxDesc_FS;   8036418:	681c      	ldr	r4, [r3, #0] 803641a:	f044 5480 	orr.w	r4, r4, #268435456	; 0x10000000 803641e:	601c      	str	r4, [r3, #0]      }            /* Program size */      DMATxNextDesc->ControlBufferSize = (ETH_TX_BUF_SIZE & ETH_DMATxDesc_TBS1);             if (i== (buf_count-1)) 8036420:	42b8      	cmp	r0, r7        /* Setting the first segment bit */        DMATxDescToSet->Status |= ETH_DMATxDesc_FS;        }            /* Program size */      DMATxNextDesc->ControlBufferSize = (ETH_TX_BUF_SIZE & ETH_DMATxDesc_TBS1); 8036422:	6056      	str	r6, [r2, #4]             if (i== (buf_count-1)) 8036424:	d104      	bne.n	8036430 <ETH_Prepare_Transmit_Descriptors+0x78>      {        /* Setting the last segment bit */        DMATxNextDesc->Status |= ETH_DMATxDesc_LS; 8036426:	6814      	ldr	r4, [r2, #0] 8036428:	f044 5400 	orr.w	r4, r4, #536870912	; 0x20000000 803642c:	6014      	str	r4, [r2, #0]        size = FrameLength - (buf_count-1)*ETH_TX_BUF_SIZE;        DMATxNextDesc->ControlBufferSize = (size & ETH_DMATxDesc_TBS1); 803642e:	6055      	str	r5, [r2, #4]      }              /*give back descriptor to DMA */      DMATxNextDesc->Status |= ETH_DMATxDesc_OWN; 8036430:	6814      	ldr	r4, [r2, #0]    DMATxDescToSet->Status |= ETH_DMATxDesc_OWN;    DMATxDescToSet= (ETH_DMADESCTypeDef *)(DMATxDescToSet->Buffer2NextDescAddr);  }  else  {    for (i=0; i< buf_count; i++) 8036432:	3001      	adds	r0, #1        size = FrameLength - (buf_count-1)*ETH_TX_BUF_SIZE;        DMATxNextDesc->ControlBufferSize = (size & ETH_DMATxDesc_TBS1);      }              /*give back descriptor to DMA */      DMATxNextDesc->Status |= ETH_DMATxDesc_OWN; 8036434:	f044 4400 	orr.w	r4, r4, #2147483648	; 0x80000000 8036438:	6014      	str	r4, [r2, #0]    DMATxDescToSet->Status |= ETH_DMATxDesc_OWN;    DMATxDescToSet= (ETH_DMADESCTypeDef *)(DMATxDescToSet->Buffer2NextDescAddr);  }  else  {    for (i=0; i< buf_count; i++) 803643a:	4288      	cmp	r0, r1      }              /*give back descriptor to DMA */      DMATxNextDesc->Status |= ETH_DMATxDesc_OWN;            DMATxNextDesc = (ETH_DMADESCTypeDef *)(DMATxNextDesc->Buffer2NextDescAddr); 803643c:	68d2      	ldr	r2, [r2, #12]    DMATxDescToSet->Status |= ETH_DMATxDesc_OWN;    DMATxDescToSet= (ETH_DMADESCTypeDef *)(DMATxDescToSet->Buffer2NextDescAddr);  }  else  {    for (i=0; i< buf_count; i++) 803643e:	d3ea      	bcc.n	8036416 <ETH_Prepare_Transmit_Descriptors+0x5e>      DMATxNextDesc->Status |= ETH_DMATxDesc_OWN;            DMATxNextDesc = (ETH_DMADESCTypeDef *)(DMATxNextDesc->Buffer2NextDescAddr);      /* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */     }    DMATxDescToSet = DMATxNextDesc ; 8036440:	4b07      	ldr	r3, [pc, #28]	; (8036460 <ETH_Prepare_Transmit_Descriptors+0xa8>) 8036442:	601a      	str	r2, [r3, #0]  }      /* When Tx Buffer unavailable flag is set: clear it and resume transmission */  if ((ETH->DMASR & ETH_DMASR_TBUS) != (u32)RESET) 8036444:	4b08      	ldr	r3, [pc, #32]	; (8036468 <ETH_Prepare_Transmit_Descriptors+0xb0>) 8036446:	695a      	ldr	r2, [r3, #20] 8036448:	0750      	lsls	r0, r2, #29 803644a:	d506      	bpl.n	803645a <ETH_Prepare_Transmit_Descriptors+0xa2>  {    /* Clear TBUS ETHERNET DMA flag */    ETH->DMASR = ETH_DMASR_TBUS; 803644c:	2204      	movs	r2, #4 803644e:	615a      	str	r2, [r3, #20]    /* Resume DMA transmission*/    ETH->DMATPDR = 0; 8036450:	2200      	movs	r2, #0 8036452:	605a      	str	r2, [r3, #4] 8036454:	e001      	b.n	803645a <ETH_Prepare_Transmit_Descriptors+0xa2>    /* Check if the descriptor is owned by the ETHERNET DMA (when set) or CPU (when reset) */  if((DMATxDescToSet->Status & ETH_DMATxDesc_OWN) != (u32)RESET)  {      /* Return ERROR: OWN bit set */    return ETH_ERROR; 8036456:	2000      	movs	r0, #0 8036458:	bdf0      	pop	{r4, r5, r6, r7, pc}    /* Resume DMA transmission*/    ETH->DMATPDR = 0;  }    /* Return SUCCESS */  return ETH_SUCCESS;    803645a:	2001      	movs	r0, #1} 803645c:	bdf0      	pop	{r4, r5, r6, r7, pc} 803645e:	bf00      	nop 8036460:	20011534 	.word	0x20011534 8036464:	fffffa0c 	.word	0xfffffa0c 8036468:	40029000 	.word	0x400290000803646c <ETH_DMARxDescChainInit>:{  uint32_t i = 0;  ETH_DMADESCTypeDef *DMARxDesc;    /* Set the DMARxDescToGet pointer with the first one of the DMARxDescTab list */  DMARxDescToGet = DMARxDescTab;  803646c:	4b11      	ldr	r3, [pc, #68]	; (80364b4 <ETH_DMARxDescChainInit+0x48>)  * @param  RxBuff: Pointer on the first RxBuffer list  * @param  RxBuffCount: Number of the used Rx desc in the list  * @retval None  */void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount){ 803646e:	b5f0      	push	{r4, r5, r6, r7, lr}  uint32_t i = 0;  ETH_DMADESCTypeDef *DMARxDesc;    /* Set the DMARxDescToGet pointer with the first one of the DMARxDescTab list */  DMARxDescToGet = DMARxDescTab;  8036470:	6018      	str	r0, [r3, #0]  /* Fill each DMARxDesc descriptor with the right values */  for(i=0; i < RxBuffCount; i++) 8036472:	2400      	movs	r4, #0  * @param  DMARxDescTab: Pointer on the first Rx desc list   * @param  RxBuff: Pointer on the first RxBuffer list  * @param  RxBuffCount: Number of the used Rx desc in the list  * @retval None  */void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount) 8036474:	f100 0320 	add.w	r3, r0, #32  for(i=0; i < RxBuffCount; i++)  {    /* Get the pointer on the ith member of the Rx Desc list */    DMARxDesc = DMARxDescTab+i;    /* Set Own bit of the Rx descriptor Status */    DMARxDesc->Status = ETH_DMARxDesc_OWN; 8036478:	f04f 4500 	mov.w	r5, #2147483648	; 0x80000000    /* Set Buffer1 size and Second Address Chained bit */    DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_RX_BUF_SIZE;   803647c:	f244 56f4 	movw	r6, #17908	; 0x45f4    /* Set Buffer1 address pointer */    DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i*ETH_RX_BUF_SIZE]);        /* Initialize the next descriptor with the Next Descriptor Polling Enable */    if(i < (RxBuffCount-1)) 8036480:	1e57      	subs	r7, r2, #1  ETH_DMADESCTypeDef *DMARxDesc;    /* Set the DMARxDescToGet pointer with the first one of the DMARxDescTab list */  DMARxDescToGet = DMARxDescTab;   /* Fill each DMARxDesc descriptor with the right values */  for(i=0; i < RxBuffCount; i++) 8036482:	e00f      	b.n	80364a4 <ETH_DMARxDescChainInit+0x38>        /* Initialize the next descriptor with the Next Descriptor Polling Enable */    if(i < (RxBuffCount-1))    {      /* Set next descriptor address register with next descriptor base address */      DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab+i+1);  8036484:	42bc      	cmp	r4, r7 8036486:	bf2c      	ite	cs 8036488:	4684      	movcs	ip, r0 803648a:	469c      	movcc	ip, r3    DMARxDesc->Status = ETH_DMARxDesc_OWN;    /* Set Buffer1 size and Second Address Chained bit */    DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_RX_BUF_SIZE;      /* Set Buffer1 address pointer */    DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i*ETH_RX_BUF_SIZE]); 803648c:	f843 1c18 	str.w	r1, [r3, #-24]  for(i=0; i < RxBuffCount; i++)  {    /* Get the pointer on the ith member of the Rx Desc list */    DMARxDesc = DMARxDescTab+i;    /* Set Own bit of the Rx descriptor Status */    DMARxDesc->Status = ETH_DMARxDesc_OWN; 8036490:	f843 5c20 	str.w	r5, [r3, #-32]    /* Set Buffer1 size and Second Address Chained bit */    DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_RX_BUF_SIZE;   8036494:	f843 6c1c 	str.w	r6, [r3, #-28]        /* Initialize the next descriptor with the Next Descriptor Polling Enable */    if(i < (RxBuffCount-1))    {      /* Set next descriptor address register with next descriptor base address */      DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab+i+1);  8036498:	f843 cc14 	str.w	ip, [r3, #-20]  ETH_DMADESCTypeDef *DMARxDesc;    /* Set the DMARxDescToGet pointer with the first one of the DMARxDescTab list */  DMARxDescToGet = DMARxDescTab;   /* Fill each DMARxDesc descriptor with the right values */  for(i=0; i < RxBuffCount; i++) 803649c:	3401      	adds	r4, #1 803649e:	3320      	adds	r3, #32 80364a0:	f201 51f4 	addw	r1, r1, #1524	; 0x5f4 80364a4:	4294      	cmp	r4, r2 80364a6:	d1ed      	bne.n	8036484 <ETH_DMARxDescChainInit+0x18>      DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab);     }  }     /* Set Receive Descriptor List Address Register */  ETH->DMARDLAR = (uint32_t) DMARxDescTab;  80364a8:	4b03      	ldr	r3, [pc, #12]	; (80364b8 <ETH_DMARxDescChainInit+0x4c>)    DMA_RX_FRAME_infos = &RX_Frame_Descriptor; 80364aa:	4a04      	ldr	r2, [pc, #16]	; (80364bc <ETH_DMARxDescChainInit+0x50>)      DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab);     }  }     /* Set Receive Descriptor List Address Register */  ETH->DMARDLAR = (uint32_t) DMARxDescTab;  80364ac:	60d8      	str	r0, [r3, #12]    DMA_RX_FRAME_infos = &RX_Frame_Descriptor; 80364ae:	4b04      	ldr	r3, [pc, #16]	; (80364c0 <ETH_DMARxDescChainInit+0x54>) 80364b0:	601a      	str	r2, [r3, #0] 80364b2:	bdf0      	pop	{r4, r5, r6, r7, pc} 80364b4:	20011530 	.word	0x20011530 80364b8:	40029000 	.word	0x40029000 80364bc:	20011524 	.word	0x20011524 80364c0:	200133a0 	.word	0x200133a0080364c4 <ETH_DMATxDescChainInit>:{  uint32_t i = 0;  ETH_DMADESCTypeDef *DMATxDesc;    /* Set the DMATxDescToSet pointer with the first one of the DMATxDescTab list */  DMATxDescToSet = DMATxDescTab; 80364c4:	4b0e      	ldr	r3, [pc, #56]	; (8036500 <ETH_DMATxDescChainInit+0x3c>)  * @param  TxBuff: Pointer on the first TxBuffer list  * @param  TxBuffCount: Number of the used Tx desc in the list  * @retval None  */void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t* TxBuff, uint32_t TxBuffCount){ 80364c6:	b5f0      	push	{r4, r5, r6, r7, lr}  uint32_t i = 0;  ETH_DMADESCTypeDef *DMATxDesc;    /* Set the DMATxDescToSet pointer with the first one of the DMATxDescTab list */  DMATxDescToSet = DMATxDescTab; 80364c8:	6018      	str	r0, [r3, #0]  /* Fill each DMATxDesc descriptor with the right values */     for(i=0; i < TxBuffCount; i++) 80364ca:	2400      	movs	r4, #0  * @param  DMATxDescTab: Pointer on the first Tx desc list   * @param  TxBuff: Pointer on the first TxBuffer list  * @param  TxBuffCount: Number of the used Tx desc in the list  * @retval None  */void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t* TxBuff, uint32_t TxBuffCount) 80364cc:	f100 0320 	add.w	r3, r0, #32  for(i=0; i < TxBuffCount; i++)  {    /* Get the pointer on the ith member of the Tx Desc list */    DMATxDesc = DMATxDescTab + i;    /* Set Second Address Chained bit */    DMATxDesc->Status = ETH_DMATxDesc_TCH;   80364d0:	f44f 1580 	mov.w	r5, #1048576	; 0x100000           /* Set Buffer1 address pointer */    DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i*ETH_TX_BUF_SIZE]);        /* Initialize the next descriptor with the Next Descriptor Polling Enable */    if(i < (TxBuffCount-1)) 80364d4:	1e56      	subs	r6, r2, #1  ETH_DMADESCTypeDef *DMATxDesc;    /* Set the DMATxDescToSet pointer with the first one of the DMATxDescTab list */  DMATxDescToSet = DMATxDescTab;  /* Fill each DMATxDesc descriptor with the right values */     for(i=0; i < TxBuffCount; i++) 80364d6:	e00d      	b.n	80364f4 <ETH_DMATxDescChainInit+0x30>        /* Initialize the next descriptor with the Next Descriptor Polling Enable */    if(i < (TxBuffCount-1))    {      /* Set next descriptor address register with next descriptor base address */      DMATxDesc->Buffer2NextDescAddr = (uint32_t)(DMATxDescTab+i+1); 80364d8:	42b4      	cmp	r4, r6 80364da:	bf2c      	ite	cs 80364dc:	4607      	movcs	r7, r0 80364de:	461f      	movcc	r7, r3    DMATxDesc = DMATxDescTab + i;    /* Set Second Address Chained bit */    DMATxDesc->Status = ETH_DMATxDesc_TCH;             /* Set Buffer1 address pointer */    DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i*ETH_TX_BUF_SIZE]); 80364e0:	f843 1c18 	str.w	r1, [r3, #-24]  for(i=0; i < TxBuffCount; i++)  {    /* Get the pointer on the ith member of the Tx Desc list */    DMATxDesc = DMATxDescTab + i;    /* Set Second Address Chained bit */    DMATxDesc->Status = ETH_DMATxDesc_TCH;   80364e4:	f843 5c20 	str.w	r5, [r3, #-32]        /* Initialize the next descriptor with the Next Descriptor Polling Enable */    if(i < (TxBuffCount-1))    {      /* Set next descriptor address register with next descriptor base address */      DMATxDesc->Buffer2NextDescAddr = (uint32_t)(DMATxDescTab+i+1); 80364e8:	f843 7c14 	str.w	r7, [r3, #-20]  ETH_DMADESCTypeDef *DMATxDesc;    /* Set the DMATxDescToSet pointer with the first one of the DMATxDescTab list */  DMATxDescToSet = DMATxDescTab;  /* Fill each DMATxDesc descriptor with the right values */     for(i=0; i < TxBuffCount; i++) 80364ec:	3401      	adds	r4, #1 80364ee:	3320      	adds	r3, #32 80364f0:	f201 51f4 	addw	r1, r1, #1524	; 0x5f4 80364f4:	4294      	cmp	r4, r2 80364f6:	d1ef      	bne.n	80364d8 <ETH_DMATxDescChainInit+0x14>      DMATxDesc->Buffer2NextDescAddr = (uint32_t) DMATxDescTab;      }  }     /* Set Transmit Desciptor List Address Register */  ETH->DMATDLAR = (uint32_t) DMATxDescTab; 80364f8:	4b02      	ldr	r3, [pc, #8]	; (8036504 <ETH_DMATxDescChainInit+0x40>) 80364fa:	6118      	str	r0, [r3, #16] 80364fc:	bdf0      	pop	{r4, r5, r6, r7, pc} 80364fe:	bf00      	nop 8036500:	20011534 	.word	0x20011534 8036504:	40029000 	.word	0x4002900008036508 <ETH_DMATxDescChecksumInsertionConfig>:{  /* Check the parameters */  assert_param(IS_ETH_DMA_TXDESC_CHECKSUM(DMATxDesc_Checksum));    /* Set the selected DMA Tx desc checksum insertion control */  DMATxDesc->Status |= DMATxDesc_Checksum; 8036508:	6803      	ldr	r3, [r0, #0] 803650a:	4319      	orrs	r1, r3 803650c:	6001      	str	r1, [r0, #0] 803650e:	4770      	bx	lr08036510 <ETH_DMARxDescReceiveITConfig>:  * @param  NewState: new state of the specified DMA Rx Desc interrupt.  *   This parameter can be: ENABLE or DISABLE.                     * @retval None  */void ETH_DMARxDescReceiveITConfig(ETH_DMADESCTypeDef *DMARxDesc, FunctionalState NewState){ 8036510:	6843      	ldr	r3, [r0, #4]  /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE) 8036512:	b111      	cbz	r1, 803651a <ETH_DMARxDescReceiveITConfig+0xa>  {    /* Enable the DMA Rx Desc receive interrupt */    DMARxDesc->ControlBufferSize &=(~(uint32_t)ETH_DMARxDesc_DIC); 8036514:	f023 4300 	bic.w	r3, r3, #2147483648	; 0x80000000 8036518:	e001      	b.n	803651e <ETH_DMARxDescReceiveITConfig+0xe>  }  else  {    /* Disable the DMA Rx Desc receive interrupt */    DMARxDesc->ControlBufferSize |= ETH_DMARxDesc_DIC; 803651a:	f043 4300 	orr.w	r3, r3, #2147483648	; 0x80000000 803651e:	6043      	str	r3, [r0, #4] 8036520:	4770      	bx	lr 8036522:	0000      	movs	r0, r008036524 <ETH_SoftwareReset>:  */void ETH_SoftwareReset(void){  /* Set the SWR bit: resets all MAC subsystem internal registers and logic */  /* After reset all the registers holds their respective reset values */  ETH->DMABMR |= ETH_DMABMR_SR; 8036524:	4b02      	ldr	r3, [pc, #8]	; (8036530 <ETH_SoftwareReset+0xc>) 8036526:	681a      	ldr	r2, [r3, #0] 8036528:	f042 0201 	orr.w	r2, r2, #1 803652c:	601a      	str	r2, [r3, #0] 803652e:	4770      	bx	lr 8036530:	40029000 	.word	0x4002900008036534 <ETH_GetSoftwareResetStatus>:  * @retval The new state of DMA Bus Mode register SR bit (SET or RESET).  */FlagStatus ETH_GetSoftwareResetStatus(void){  FlagStatus bitstatus = RESET;  if((ETH->DMABMR & ETH_DMABMR_SR) != (uint32_t)RESET) 8036534:	4b02      	ldr	r3, [pc, #8]	; (8036540 <ETH_GetSoftwareResetStatus+0xc>) 8036536:	6818      	ldr	r0, [r3, #0]  else  {    bitstatus = RESET;  }  return bitstatus;} 8036538:	f000 0001 	and.w	r0, r0, #1 803653c:	4770      	bx	lr 803653e:	bf00      	nop 8036540:	40029000 	.word	0x4002900008036544 <ETH_GetDMAFlagStatus>:FlagStatus ETH_GetDMAFlagStatus(uint32_t ETH_DMA_FLAG){    FlagStatus bitstatus = RESET;  /* Check the parameters */  assert_param(IS_ETH_DMA_GET_IT(ETH_DMA_FLAG));  if ((ETH->DMASR & ETH_DMA_FLAG) != (uint32_t)RESET) 8036544:	4b03      	ldr	r3, [pc, #12]	; (8036554 <ETH_GetDMAFlagStatus+0x10>) 8036546:	695b      	ldr	r3, [r3, #20] 8036548:	4218      	tst	r0, r3  else  {    bitstatus = RESET;  }  return bitstatus;} 803654a:	bf0c      	ite	eq 803654c:	2000      	moveq	r0, #0 803654e:	2001      	movne	r0, #1 8036550:	4770      	bx	lr 8036552:	bf00      	nop 8036554:	40029000 	.word	0x4002900008036558 <ETH_DMAITConfig>:  * @param  NewState: new state of the specified ETHERNET DMA interrupts.  *   This parameter can be: ENABLE or DISABLE.  * @retval None  */void ETH_DMAITConfig(uint32_t ETH_DMA_IT, FunctionalState NewState){ 8036558:	4b04      	ldr	r3, [pc, #16]	; (803656c <ETH_DMAITConfig+0x14>)  assert_param(IS_FUNCTIONAL_STATE(NewState));      if (NewState != DISABLE)  {    /* Enable the selected ETHERNET DMA interrupts */    ETH->DMAIER |= ETH_DMA_IT; 803655a:	69da      	ldr	r2, [r3, #28]{  /* Check the parameters */  assert_param(IS_ETH_DMA_IT(ETH_DMA_IT));  assert_param(IS_FUNCTIONAL_STATE(NewState));      if (NewState != DISABLE) 803655c:	b109      	cbz	r1, 8036562 <ETH_DMAITConfig+0xa>  {    /* Enable the selected ETHERNET DMA interrupts */    ETH->DMAIER |= ETH_DMA_IT; 803655e:	4310      	orrs	r0, r2 8036560:	e001      	b.n	8036566 <ETH_DMAITConfig+0xe>  }  else  {    /* Disable the selected ETHERNET DMA interrupts */    ETH->DMAIER &=(~(uint32_t)ETH_DMA_IT); 8036562:	ea22 0000 	bic.w	r0, r2, r0 8036566:	61d8      	str	r0, [r3, #28] 8036568:	4770      	bx	lr 803656a:	bf00      	nop 803656c:	40029000 	.word	0x4002900008036570 <ETH_DMAClearITPendingBit>:{  /* Check the parameters */  assert_param(IS_ETH_DMA_IT(ETH_DMA_IT));    /* Clear the selected ETHERNET DMA IT */  ETH->DMASR = (uint32_t) ETH_DMA_IT; 8036570:	4b01      	ldr	r3, [pc, #4]	; (8036578 <ETH_DMAClearITPendingBit+0x8>) 8036572:	6158      	str	r0, [r3, #20] 8036574:	4770      	bx	lr 8036576:	bf00      	nop 8036578:	40029000 	.word	0x400290000803657c <ETH_FlushTransmitFIFO>:  * @retval None  */void ETH_FlushTransmitFIFO(void){  /* Set the Flush Transmit FIFO bit */  ETH->DMAOMR |= ETH_DMAOMR_FTF;   803657c:	4b02      	ldr	r3, [pc, #8]	; (8036588 <ETH_FlushTransmitFIFO+0xc>) 803657e:	699a      	ldr	r2, [r3, #24] 8036580:	f442 1280 	orr.w	r2, r2, #1048576	; 0x100000 8036584:	619a      	str	r2, [r3, #24] 8036586:	4770      	bx	lr 8036588:	40029000 	.word	0x400290000803658c <ETH_DMATransmissionCmd>:  * @param  NewState: new state of the DMA transmission.  *   This parameter can be: ENABLE or DISABLE.  * @retval None  */void ETH_DMATransmissionCmd(FunctionalState NewState){  803658c:	4b04      	ldr	r3, [pc, #16]	; (80365a0 <ETH_DMATransmissionCmd+0x14>)  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE)  {    /* Enable the DMA transmission */    ETH->DMAOMR |= ETH_DMAOMR_ST;   803658e:	699a      	ldr	r2, [r3, #24]void ETH_DMATransmissionCmd(FunctionalState NewState){   /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE) 8036590:	b110      	cbz	r0, 8036598 <ETH_DMATransmissionCmd+0xc>  {    /* Enable the DMA transmission */    ETH->DMAOMR |= ETH_DMAOMR_ST;   8036592:	f442 5200 	orr.w	r2, r2, #8192	; 0x2000 8036596:	e001      	b.n	803659c <ETH_DMATransmissionCmd+0x10>  }  else  {    /* Disable the DMA transmission */    ETH->DMAOMR &= ~ETH_DMAOMR_ST; 8036598:	f422 5200 	bic.w	r2, r2, #8192	; 0x2000 803659c:	619a      	str	r2, [r3, #24] 803659e:	4770      	bx	lr 80365a0:	40029000 	.word	0x40029000080365a4 <ETH_DMAReceptionCmd>:  * @param  NewState: new state of the DMA reception.  *   This parameter can be: ENABLE or DISABLE.  * @retval None  */void ETH_DMAReceptionCmd(FunctionalState NewState){  80365a4:	4b04      	ldr	r3, [pc, #16]	; (80365b8 <ETH_DMAReceptionCmd+0x14>)  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE)  {    /* Enable the DMA reception */    ETH->DMAOMR |= ETH_DMAOMR_SR;   80365a6:	699a      	ldr	r2, [r3, #24]void ETH_DMAReceptionCmd(FunctionalState NewState){   /* Check the parameters */  assert_param(IS_FUNCTIONAL_STATE(NewState));    if (NewState != DISABLE) 80365a8:	b110      	cbz	r0, 80365b0 <ETH_DMAReceptionCmd+0xc>  {    /* Enable the DMA reception */    ETH->DMAOMR |= ETH_DMAOMR_SR;   80365aa:	f042 0202 	orr.w	r2, r2, #2 80365ae:	e001      	b.n	80365b4 <ETH_DMAReceptionCmd+0x10>  }  else  {    /* Disable the DMA reception */    ETH->DMAOMR &= ~ETH_DMAOMR_SR; 80365b0:	f022 0202 	bic.w	r2, r2, #2 80365b4:	619a      	str	r2, [r3, #24] 80365b6:	4770      	bx	lr 80365b8:	40029000 	.word	0x40029000080365bc <ETH_Start>:  * @brief  Enables ENET MAC and DMA reception/transmission   * @param  None  * @retval None  */void ETH_Start(void){ 80365bc:	b508      	push	{r3, lr}  /* Enable transmit state machine of the MAC for transmission on the MII */    ETH_MACTransmissionCmd(ENABLE); 80365be:	2001      	movs	r0, #1 80365c0:	f7ff fe7a 	bl	80362b8 <ETH_MACTransmissionCmd>  /* Flush Transmit FIFO */  ETH_FlushTransmitFIFO(); 80365c4:	f7ff ffda 	bl	803657c <ETH_FlushTransmitFIFO>  /* Enable receive state machine of the MAC for reception from the MII */    ETH_MACReceptionCmd(ENABLE); 80365c8:	2001      	movs	r0, #1 80365ca:	f7ff fe81 	bl	80362d0 <ETH_MACReceptionCmd>   /* Start DMA transmission */  ETH_DMATransmissionCmd(ENABLE);  80365ce:	2001      	movs	r0, #1 80365d0:	f7ff ffdc 	bl	803658c <ETH_DMATransmissionCmd>  /* Start DMA reception */  ETH_DMAReceptionCmd(ENABLE);    80365d4:	2001      	movs	r0, #1} 80365d6:	e8bd 4008 	ldmia.w	sp!, {r3, lr}  ETH_MACReceptionCmd(ENABLE);   /* Start DMA transmission */  ETH_DMATransmissionCmd(ENABLE);   /* Start DMA reception */  ETH_DMAReceptionCmd(ENABLE);    80365da:	f7ff bfe3 	b.w	80365a4 <ETH_DMAReceptionCmd> 80365de:	0000      	movs	r0, r0080365e0 <ETH_ReadPHYRegister>:  *     @arg More PHY register could be read depending on the used PHY  * @retval ETH_ERROR: in case of timeout  *         MAC MIIDR register value: Data read from the selected PHY register (correct read )  */uint16_t ETH_ReadPHYRegister(uint16_t PHYAddress, uint16_t PHYReg){ 80365e0:	b082      	sub	sp, #8  uint32_t tmpreg = 0;     __IO uint32_t timeout = 0; 80365e2:	2300      	movs	r3, #0 80365e4:	9301      	str	r3, [sp, #4]  /* Check the parameters */  assert_param(IS_ETH_PHY_ADDRESS(PHYAddress));  assert_param(IS_ETH_PHY_REG(PHYReg));    /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR; 80365e6:	4b11      	ldr	r3, [pc, #68]	; (803662c <ETH_ReadPHYRegister+0x4c>) 80365e8:	691a      	ldr	r2, [r3, #16]  /* Keep only the CSR Clock Range CR[2:0] bits value */  tmpreg &= ~MACMIIAR_CR_MASK;  /* Prepare the MII address register value */  tmpreg |=(((uint32_t)PHYAddress<<11) & ETH_MACMIIAR_PA); /* Set the PHY device address */ 80365ea:	06c0      	lsls	r0, r0, #27  assert_param(IS_ETH_PHY_REG(PHYReg));    /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR;  /* Keep only the CSR Clock Range CR[2:0] bits value */  tmpreg &= ~MACMIIAR_CR_MASK; 80365ec:	f002 021c 	and.w	r2, r2, #28  /* Prepare the MII address register value */  tmpreg |=(((uint32_t)PHYAddress<<11) & ETH_MACMIIAR_PA); /* Set the PHY device address */  tmpreg |=(((uint32_t)PHYReg<<6) & ETH_MACMIIAR_MR);      /* Set the PHY register address */ 80365f0:	0189      	lsls	r1, r1, #6  /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR;  /* Keep only the CSR Clock Range CR[2:0] bits value */  tmpreg &= ~MACMIIAR_CR_MASK;  /* Prepare the MII address register value */  tmpreg |=(((uint32_t)PHYAddress<<11) & ETH_MACMIIAR_PA); /* Set the PHY device address */ 80365f2:	ea42 4210 	orr.w	r2, r2, r0, lsr #16  tmpreg |=(((uint32_t)PHYReg<<6) & ETH_MACMIIAR_MR);      /* Set the PHY register address */ 80365f6:	f401 61f8 	and.w	r1, r1, #1984	; 0x7c0  tmpreg &= ~ETH_MACMIIAR_MW;                              /* Set the read mode */ 80365fa:	430a      	orrs	r2, r1  tmpreg |= ETH_MACMIIAR_MB;                               /* Set the MII Busy bit */ 80365fc:	f042 0201 	orr.w	r2, r2, #1  /* Write the result value into the MII Address register */  ETH->MACMIIAR = tmpreg; 8036600:	611a      	str	r2, [r3, #16]  /* Check for the Busy flag */  do  {    timeout++;    tmpreg = ETH->MACMIIAR;  } while ((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO)); 8036602:	4a0b      	ldr	r2, [pc, #44]	; (8036630 <ETH_ReadPHYRegister+0x50>)  /* Write the result value into the MII Address register */  ETH->MACMIIAR = tmpreg;  /* Check for the Busy flag */  do  {    timeout++; 8036604:	9901      	ldr	r1, [sp, #4] 8036606:	3101      	adds	r1, #1 8036608:	9101      	str	r1, [sp, #4]    tmpreg = ETH->MACMIIAR; 803660a:	6919      	ldr	r1, [r3, #16]  } while ((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO)); 803660c:	07c9      	lsls	r1, r1, #31 803660e:	d502      	bpl.n	8036616 <ETH_ReadPHYRegister+0x36> 8036610:	9901      	ldr	r1, [sp, #4] 8036612:	4291      	cmp	r1, r2 8036614:	d9f6      	bls.n	8036604 <ETH_ReadPHYRegister+0x24>  /* Return ERROR in case of timeout */  if(timeout == PHY_READ_TO) 8036616:	4b07      	ldr	r3, [pc, #28]	; (8036634 <ETH_ReadPHYRegister+0x54>) 8036618:	9a01      	ldr	r2, [sp, #4] 803661a:	429a      	cmp	r2, r3  {    return (uint16_t)ETH_ERROR;  }    /* Return data register value */  return (uint16_t)(ETH->MACMIIDR); 803661c:	bf1d      	ittte	ne 803661e:	4b03      	ldrne	r3, [pc, #12]	; (803662c <ETH_ReadPHYRegister+0x4c>) 8036620:	6958      	ldrne	r0, [r3, #20] 8036622:	b280      	uxthne	r0, r0    tmpreg = ETH->MACMIIAR;  } while ((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO));  /* Return ERROR in case of timeout */  if(timeout == PHY_READ_TO)  {    return (uint16_t)ETH_ERROR; 8036624:	2000      	moveq	r0, #0  }    /* Return data register value */  return (uint16_t)(ETH->MACMIIDR);} 8036626:	b002      	add	sp, #8 8036628:	4770      	bx	lr 803662a:	bf00      	nop 803662c:	40028000 	.word	0x40028000 8036630:	0004fffe 	.word	0x0004fffe 8036634:	0004ffff 	.word	0x0004ffff08036638 <ETH_WritePHYRegister>:  * @param  PHYValue: the value to write  * @retval ETH_ERROR: in case of timeout  *         ETH_SUCCESS: for correct write  */uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg, uint16_t PHYValue){ 8036638:	b513      	push	{r0, r1, r4, lr}  uint32_t tmpreg = 0;       __IO uint32_t timeout = 0; 803663a:	2300      	movs	r3, #0 803663c:	9301      	str	r3, [sp, #4]  /* Check the parameters */  assert_param(IS_ETH_PHY_ADDRESS(PHYAddress));  assert_param(IS_ETH_PHY_REG(PHYReg));    /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR; 803663e:	4b0f      	ldr	r3, [pc, #60]	; (803667c <ETH_WritePHYRegister+0x44>) 8036640:	691c      	ldr	r4, [r3, #16]  tmpreg |=(((uint32_t)PHYAddress<<11) & ETH_MACMIIAR_PA); /* Set the PHY device address */  tmpreg |=(((uint32_t)PHYReg<<6) & ETH_MACMIIAR_MR);      /* Set the PHY register address */  tmpreg |= ETH_MACMIIAR_MW;                               /* Set the write mode */  tmpreg |= ETH_MACMIIAR_MB;                               /* Set the MII Busy bit */  /* Give the value to the MII data register */  ETH->MACMIIDR = PHYValue; 8036642:	615a      	str	r2, [r3, #20]  assert_param(IS_ETH_PHY_REG(PHYReg));    /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR;  /* Keep only the CSR Clock Range CR[2:0] bits value */  tmpreg &= ~MACMIIAR_CR_MASK; 8036644:	f004 041c 	and.w	r4, r4, #28  /* Prepare the MII register address value */  tmpreg |=(((uint32_t)PHYAddress<<11) & ETH_MACMIIAR_PA); /* Set the PHY device address */ 8036648:	f044 0403 	orr.w	r4, r4, #3 803664c:	06c0      	lsls	r0, r0, #27  tmpreg |=(((uint32_t)PHYReg<<6) & ETH_MACMIIAR_MR);      /* Set the PHY register address */ 803664e:	0189      	lsls	r1, r1, #6 8036650:	ea44 4410 	orr.w	r4, r4, r0, lsr #16 8036654:	f401 61f8 	and.w	r1, r1, #1984	; 0x7c0  tmpreg |= ETH_MACMIIAR_MW;                               /* Set the write mode */  tmpreg |= ETH_MACMIIAR_MB;                               /* Set the MII Busy bit */ 8036658:	430c      	orrs	r4, r1  /* Check for the Busy flag */  do  {    timeout++;    tmpreg = ETH->MACMIIAR;  } while ((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_WRITE_TO)); 803665a:	4a09      	ldr	r2, [pc, #36]	; (8036680 <ETH_WritePHYRegister+0x48>)  tmpreg |= ETH_MACMIIAR_MW;                               /* Set the write mode */  tmpreg |= ETH_MACMIIAR_MB;                               /* Set the MII Busy bit */  /* Give the value to the MII data register */  ETH->MACMIIDR = PHYValue;  /* Write the result value into the MII Address register */  ETH->MACMIIAR = tmpreg; 803665c:	611c      	str	r4, [r3, #16]  /* Check for the Busy flag */  do  {    timeout++; 803665e:	9901      	ldr	r1, [sp, #4] 8036660:	3101      	adds	r1, #1 8036662:	9101      	str	r1, [sp, #4]    tmpreg = ETH->MACMIIAR; 8036664:	6919      	ldr	r1, [r3, #16]  } while ((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_WRITE_TO)); 8036666:	07c8      	lsls	r0, r1, #31 8036668:	d502      	bpl.n	8036670 <ETH_WritePHYRegister+0x38> 803666a:	9901      	ldr	r1, [sp, #4] 803666c:	4291      	cmp	r1, r2 803666e:	d9f6      	bls.n	803665e <ETH_WritePHYRegister+0x26>  /* Return ERROR in case of timeout */  if(timeout == PHY_WRITE_TO) 8036670:	9801      	ldr	r0, [sp, #4]    return ETH_ERROR;  }    /* Return SUCCESS */  return ETH_SUCCESS;  } 8036672:	4b04      	ldr	r3, [pc, #16]	; (8036684 <ETH_WritePHYRegister+0x4c>) 8036674:	1ac0      	subs	r0, r0, r3 8036676:	bf18      	it	ne 8036678:	2001      	movne	r0, #1 803667a:	bd1c      	pop	{r2, r3, r4, pc} 803667c:	40028000 	.word	0x40028000 8036680:	0004fffe 	.word	0x0004fffe 8036684:	0004ffff 	.word	0x0004ffff08036688 <ETH_Init>:  * @param PHYAddress: external PHY address                      * @retval ETH_ERROR: Ethernet initialization failed  *         ETH_SUCCESS: Ethernet successfully initialized                   */uint32_t ETH_Init(ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress){ 8036688:	b5f0      	push	{r4, r5, r6, r7, lr} 803668a:	b087      	sub	sp, #28  uint32_t RegValue = 0, tmpreg = 0;  __IO uint32_t i = 0; 803668c:	2300      	movs	r3, #0  assert_param(IS_ETH_DMA_DESC_SKIP_LENGTH(ETH_InitStruct->ETH_DescriptorSkipLength));    assert_param(IS_ETH_DMA_ARBITRATION_ROUNDROBIN_RXTX(ETH_InitStruct->ETH_DMAArbitration));         /*-------------------------------- MAC Config ------------------------------*/     /*---------------------- ETHERNET MACMIIAR Configuration -------------------*/  /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR; 803668e:	4f90      	ldr	r7, [pc, #576]	; (80368d0 <ETH_Init+0x248>)  *         ETH_SUCCESS: Ethernet successfully initialized                   */uint32_t ETH_Init(ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress){  uint32_t RegValue = 0, tmpreg = 0;  __IO uint32_t i = 0; 8036690:	9300      	str	r3, [sp, #0]  * @param PHYAddress: external PHY address                      * @retval ETH_ERROR: Ethernet initialization failed  *         ETH_SUCCESS: Ethernet successfully initialized                   */uint32_t ETH_Init(ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress){ 8036692:	4604      	mov	r4, r0  uint32_t RegValue = 0, tmpreg = 0;  __IO uint32_t i = 0;  RCC_ClocksTypeDef  rcc_clocks;  uint32_t hclk = 60000000;  __IO uint32_t timeout = 0; 8036694:	9301      	str	r3, [sp, #4]  /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR;  /* Clear CSR Clock Range CR[2:0] bits */  tmpreg &= MACMIIAR_CR_MASK;  /* Get hclk frequency value */  RCC_GetClocksFreq(&rcc_clocks); 8036696:	a802      	add	r0, sp, #8  * @param PHYAddress: external PHY address                      * @retval ETH_ERROR: Ethernet initialization failed  *         ETH_SUCCESS: Ethernet successfully initialized                   */uint32_t ETH_Init(ETH_InitTypeDef* ETH_InitStruct, uint16_t PHYAddress){ 8036698:	460e      	mov	r6, r1  assert_param(IS_ETH_DMA_DESC_SKIP_LENGTH(ETH_InitStruct->ETH_DescriptorSkipLength));    assert_param(IS_ETH_DMA_ARBITRATION_ROUNDROBIN_RXTX(ETH_InitStruct->ETH_DMAArbitration));         /*-------------------------------- MAC Config ------------------------------*/     /*---------------------- ETHERNET MACMIIAR Configuration -------------------*/  /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR; 803669a:	693d      	ldr	r5, [r7, #16]  /* Clear CSR Clock Range CR[2:0] bits */  tmpreg &= MACMIIAR_CR_MASK;  /* Get hclk frequency value */  RCC_GetClocksFreq(&rcc_clocks); 803669c:	f7ee fff2 	bl	8025684 <RCC_GetClocksFreq>  hclk = rcc_clocks.HCLK_Frequency; 80366a0:	9b03      	ldr	r3, [sp, #12]    /* Set CR bits depending on hclk value */  if((hclk >= 20000000)&&(hclk < 35000000)) 80366a2:	4a8c      	ldr	r2, [pc, #560]	; (80368d4 <ETH_Init+0x24c>) 80366a4:	498c      	ldr	r1, [pc, #560]	; (80368d8 <ETH_Init+0x250>) 80366a6:	189a      	adds	r2, r3, r2 80366a8:	428a      	cmp	r2, r1  /*-------------------------------- MAC Config ------------------------------*/     /*---------------------- ETHERNET MACMIIAR Configuration -------------------*/  /* Get the ETHERNET MACMIIAR value */  tmpreg = ETH->MACMIIAR;  /* Clear CSR Clock Range CR[2:0] bits */  tmpreg &= MACMIIAR_CR_MASK; 80366aa:	f025 051c 	bic.w	r5, r5, #28  /* Get hclk frequency value */  RCC_GetClocksFreq(&rcc_clocks);  hclk = rcc_clocks.HCLK_Frequency;    /* Set CR bits depending on hclk value */  if((hclk >= 20000000)&&(hclk < 35000000)) 80366ae:	d802      	bhi.n	80366b6 <ETH_Init+0x2e>  {    /* CSR Clock Range between 20-35 MHz */    tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div16; 80366b0:	f045 0508 	orr.w	r5, r5, #8 80366b4:	e015      	b.n	80366e2 <ETH_Init+0x5a>  }  else if((hclk >= 35000000)&&(hclk < 60000000)) 80366b6:	4a89      	ldr	r2, [pc, #548]	; (80368dc <ETH_Init+0x254>) 80366b8:	4989      	ldr	r1, [pc, #548]	; (80368e0 <ETH_Init+0x258>) 80366ba:	189a      	adds	r2, r3, r2 80366bc:	428a      	cmp	r2, r1 80366be:	d802      	bhi.n	80366c6 <ETH_Init+0x3e>  {    /* CSR Clock Range between 35-60 MHz */     tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div26;     80366c0:	f045 050c 	orr.w	r5, r5, #12 80366c4:	e00d      	b.n	80366e2 <ETH_Init+0x5a>  }    else if((hclk >= 60000000)&&(hclk < 100000000)) 80366c6:	4a87      	ldr	r2, [pc, #540]	; (80368e4 <ETH_Init+0x25c>) 80366c8:	4987      	ldr	r1, [pc, #540]	; (80368e8 <ETH_Init+0x260>) 80366ca:	189a      	adds	r2, r3, r2 80366cc:	428a      	cmp	r2, r1 80366ce:	d908      	bls.n	80366e2 <ETH_Init+0x5a>  {    /* CSR Clock Range between 60-100 MHz */     tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div42;      }    else if((hclk >= 100000000)&&(hclk < 150000000)) 80366d0:	4a86      	ldr	r2, [pc, #536]	; (80368ec <ETH_Init+0x264>) 80366d2:	189a      	adds	r2, r3, r2 80366d4:	4b86      	ldr	r3, [pc, #536]	; (80368f0 <ETH_Init+0x268>) 80366d6:	429a      	cmp	r2, r3  {    /* CSR Clock Range between 100-150 MHz */     tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div62;     80366d8:	bf94      	ite	ls 80366da:	f045 0504 	orrls.w	r5, r5, #4  }     else /* ((hclk >= 150000000)&&(hclk <= 168000000)) */  {    /* CSR Clock Range between 150-168 MHz */     tmpreg |= (uint32_t)ETH_MACMIIAR_CR_Div102;     80366de:	f045 0510 	orrhi.w	r5, r5, #16  }    /* Write to ETHERNET MAC MIIAR: Configure the ETHERNET CSR Clock Range */  ETH->MACMIIAR = (uint32_t)tmpreg;   80366e2:	613d      	str	r5, [r7, #16]  /*-------------------- PHY initialization and configuration ----------------*/  /* Put the PHY in reset mode */  if(!(ETH_WritePHYRegister(PHYAddress, PHY_BCR, PHY_Reset))) 80366e4:	4630      	mov	r0, r6 80366e6:	2100      	movs	r1, #0 80366e8:	f44f 4200 	mov.w	r2, #32768	; 0x8000 80366ec:	f7ff ffa4 	bl	8036638 <ETH_WritePHYRegister> 80366f0:	b908      	cbnz	r0, 80366f6 <ETH_Init+0x6e>  {    /* Return ERROR in case of write timeout */    return ETH_ERROR; 80366f2:	2000      	movs	r0, #0 80366f4:	e0e9      	b.n	80368ca <ETH_Init+0x242>  }    /* Delay to assure PHY reset */  _eth_delay_(PHY_RESET_DELAY); 80366f6:	487f      	ldr	r0, [pc, #508]	; (80368f4 <ETH_Init+0x26c>) 80366f8:	f7ff fd6e 	bl	80361d8 <ETH_Delay>      if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable) 80366fc:	6821      	ldr	r1, [r4, #0] 80366fe:	2900      	cmp	r1, #0 8036700:	d050      	beq.n	80367a4 <ETH_Init+0x11c>  {      /* We wait for linked status... */    do    {      timeout++;    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO)); 8036702:	4d7d      	ldr	r5, [pc, #500]	; (80368f8 <ETH_Init+0x270>)  if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable)  {      /* We wait for linked status... */    do    {      timeout++; 8036704:	9b01      	ldr	r3, [sp, #4]    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO)); 8036706:	4630      	mov	r0, r6  if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable)  {      /* We wait for linked status... */    do    {      timeout++; 8036708:	3301      	adds	r3, #1    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO)); 803670a:	2101      	movs	r1, #1  if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable)  {      /* We wait for linked status... */    do    {      timeout++; 803670c:	9301      	str	r3, [sp, #4]    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_Linked_Status) && (timeout < PHY_READ_TO)); 803670e:	f7ff ff67 	bl	80365e0 <ETH_ReadPHYRegister> 8036712:	f000 0004 	and.w	r0, r0, #4 8036716:	b280      	uxth	r0, r0 8036718:	b910      	cbnz	r0, 8036720 <ETH_Init+0x98> 803671a:	9b01      	ldr	r3, [sp, #4] 803671c:	42ab      	cmp	r3, r5 803671e:	d9f1      	bls.n	8036704 <ETH_Init+0x7c>    /* Return ERROR in case of timeout */    if(timeout == PHY_READ_TO) 8036720:	9a01      	ldr	r2, [sp, #4] 8036722:	4b76      	ldr	r3, [pc, #472]	; (80368fc <ETH_Init+0x274>) 8036724:	429a      	cmp	r2, r3 8036726:	d0e4      	beq.n	80366f2 <ETH_Init+0x6a>    {      return ETH_ERROR;    }    /* Reset Timeout counter */    timeout = 0;  8036728:	2100      	movs	r1, #0    /* Enable Auto-Negotiation */    if(!(ETH_WritePHYRegister(PHYAddress, PHY_BCR, PHY_AutoNegotiation))) 803672a:	4630      	mov	r0, r6 803672c:	f44f 5280 	mov.w	r2, #4096	; 0x1000    {      return ETH_ERROR;    }    /* Reset Timeout counter */    timeout = 0;  8036730:	9101      	str	r1, [sp, #4]    /* Enable Auto-Negotiation */    if(!(ETH_WritePHYRegister(PHYAddress, PHY_BCR, PHY_AutoNegotiation))) 8036732:	f7ff ff81 	bl	8036638 <ETH_WritePHYRegister> 8036736:	2800      	cmp	r0, #0 8036738:	d0db      	beq.n	80366f2 <ETH_Init+0x6a>    /* Wait until the auto-negotiation will be completed */    do    {      timeout++;    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_AutoNego_Complete) && (timeout < (uint32_t)PHY_READ_TO));   803673a:	4d6f      	ldr	r5, [pc, #444]	; (80368f8 <ETH_Init+0x270>)    }    /* Wait until the auto-negotiation will be completed */    do    {      timeout++; 803673c:	9b01      	ldr	r3, [sp, #4]    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_AutoNego_Complete) && (timeout < (uint32_t)PHY_READ_TO));   803673e:	4630      	mov	r0, r6    }    /* Wait until the auto-negotiation will be completed */    do    {      timeout++; 8036740:	3301      	adds	r3, #1    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_AutoNego_Complete) && (timeout < (uint32_t)PHY_READ_TO));   8036742:	2101      	movs	r1, #1    }    /* Wait until the auto-negotiation will be completed */    do    {      timeout++; 8036744:	9301      	str	r3, [sp, #4]    } while (!(ETH_ReadPHYRegister(PHYAddress, PHY_BSR) & PHY_AutoNego_Complete) && (timeout < (uint32_t)PHY_READ_TO));   8036746:	f7ff ff4b 	bl	80365e0 <ETH_ReadPHYRegister> 803674a:	f000 0020 	and.w	r0, r0, #32 803674e:	b280      	uxth	r0, r0 8036750:	b910      	cbnz	r0, 8036758 <ETH_Init+0xd0> 8036752:	9b01      	ldr	r3, [sp, #4] 8036754:	42ab      	cmp	r3, r5 8036756:	d9f1      	bls.n	803673c <ETH_Init+0xb4>    /* Return ERROR in case of timeout */    if(timeout == PHY_READ_TO) 8036758:	9a01      	ldr	r2, [sp, #4] 803675a:	4b68      	ldr	r3, [pc, #416]	; (80368fc <ETH_Init+0x274>) 803675c:	429a      	cmp	r2, r3 803675e:	d0c8      	beq.n	80366f2 <ETH_Init+0x6a>    {      return ETH_ERROR;    }    /* Reset Timeout counter */    timeout = 0; 8036760:	2500      	movs	r5, #0        /* Read the result of the auto-negotiation */    RegValue = ETH_ReadPHYRegister(PHYAddress, PHY_SR); 8036762:	211f      	movs	r1, #31 8036764:	4630      	mov	r0, r6    {      return ETH_ERROR;    }    /* Reset Timeout counter */    timeout = 0; 8036766:	9501      	str	r5, [sp, #4]        /* Read the result of the auto-negotiation */    RegValue = ETH_ReadPHYRegister(PHYAddress, PHY_SR); 8036768:	f7ff ff3a 	bl	80365e0 <ETH_ReadPHYRegister>		switch (RegValue & PHY_DUPLEX_SPEED_STATUS_MASK) 803676c:	f000 001c 	and.w	r0, r0, #28 8036770:	2808      	cmp	r0, #8 8036772:	d00b      	beq.n	803678c <ETH_Init+0x104> 8036774:	d802      	bhi.n	803677c <ETH_Init+0xf4> 8036776:	2804      	cmp	r0, #4 8036778:	d123      	bne.n	80367c2 <ETH_Init+0x13a> 803677a:	e010      	b.n	803679e <ETH_Init+0x116> 803677c:	280e      	cmp	r0, #14 803677e:	d00a      	beq.n	8036796 <ETH_Init+0x10e> 8036780:	2812      	cmp	r0, #18 8036782:	d11e      	bne.n	80367c2 <ETH_Init+0x13a>		{		  case PHY_100BTX_FULL:			  ETH_InitStruct->ETH_Mode  = ETH_Mode_FullDuplex; 8036784:	f44f 6300 	mov.w	r3, #2048	; 0x800 8036788:	6223      	str	r3, [r4, #32] 803678a:	e000      	b.n	803678e <ETH_Init+0x106>				ETH_InitStruct->ETH_Speed = ETH_Speed_100M; 			  break;		  case PHY_100BTX_HALF:			  ETH_InitStruct->ETH_Mode  = ETH_Mode_HalfDuplex; 803678c:	6225      	str	r5, [r4, #32]				ETH_InitStruct->ETH_Speed = ETH_Speed_100M;  803678e:	f44f 4380 	mov.w	r3, #16384	; 0x4000 8036792:	6163      	str	r3, [r4, #20]  			break; 8036794:	e015      	b.n	80367c2 <ETH_Init+0x13a>		  case PHY_10M_FULL:			  ETH_InitStruct->ETH_Mode  = ETH_Mode_FullDuplex; 8036796:	f44f 6300 	mov.w	r3, #2048	; 0x800 803679a:	6223      	str	r3, [r4, #32] 803679c:	e000      	b.n	80367a0 <ETH_Init+0x118>				ETH_InitStruct->ETH_Speed = ETH_Speed_10M;			  break;		  case PHY_10M_HALF:			  ETH_InitStruct->ETH_Mode  = ETH_Mode_HalfDuplex; 803679e:	6225      	str	r5, [r4, #32]				ETH_InitStruct->ETH_Speed = ETH_Speed_10M;  80367a0:	6165      	str	r5, [r4, #20]			  break; 80367a2:	e00e      	b.n	80367c2 <ETH_Init+0x13a>			  break;		}		     }  else  {    if(!ETH_WritePHYRegister(PHYAddress, PHY_BCR, ((uint16_t)(ETH_InitStruct->ETH_Mode >> 3) | 80367a4:	6a22      	ldr	r2, [r4, #32]                                                   (uint16_t)(ETH_InitStruct->ETH_Speed >> 1)))) 80367a6:	6963      	ldr	r3, [r4, #20]			  break;		}		     }  else  {    if(!ETH_WritePHYRegister(PHYAddress, PHY_BCR, ((uint16_t)(ETH_InitStruct->ETH_Mode >> 3) | 80367a8:	08d2      	lsrs	r2, r2, #3 80367aa:	ea42 0253 	orr.w	r2, r2, r3, lsr #1 80367ae:	4630      	mov	r0, r6 80367b0:	b292      	uxth	r2, r2 80367b2:	f7ff ff41 	bl	8036638 <ETH_WritePHYRegister> 80367b6:	2800      	cmp	r0, #0 80367b8:	d09b      	beq.n	80366f2 <ETH_Init+0x6a>    {      /* Return ERROR in case of write timeout */      return ETH_ERROR;    }    /* Delay to assure PHY configuration */    _eth_delay_(PHY_CONFIG_DELAY); 80367ba:	f06f 407f 	mvn.w	r0, #4278190080	; 0xff000000 80367be:	f7ff fd0b 	bl	80361d8 <ETH_Delay>      }  /*------------------------ ETHERNET MACCR Configuration --------------------*/  /* Get the ETHERNET MACCR value */    tmpreg = ETH->MACCR; 80367c2:	4b43      	ldr	r3, [pc, #268]	; (80368d0 <ETH_Init+0x248>)  /* Clear WD, PCE, PS, TE and RE bits */  tmpreg &= MACCR_CLEAR_MASK; 80367c4:	4a4e      	ldr	r2, [pc, #312]	; (8036900 <ETH_Init+0x278>)    _eth_delay_(PHY_CONFIG_DELAY);      }  /*------------------------ ETHERNET MACCR Configuration --------------------*/  /* Get the ETHERNET MACCR value */    tmpreg = ETH->MACCR; 80367c6:	6819      	ldr	r1, [r3, #0]  /* Set the IPCO bit according to ETH_ChecksumOffload value */                     /* Set the DR bit according to ETH_RetryTransmission value */   /* Set the ACS bit according to ETH_AutomaticPadCRCStrip value */   /* Set the BL bit according to ETH_BackOffLimit value */   /* Set the DC bit according to ETH_DeferralCheck value */                            tmpreg |= (uint32_t)(ETH_InitStruct->ETH_Watchdog |  80367c8:	68a0      	ldr	r0, [r4, #8]  }  /*------------------------ ETHERNET MACCR Configuration --------------------*/  /* Get the ETHERNET MACCR value */    tmpreg = ETH->MACCR;  /* Clear WD, PCE, PS, TE and RE bits */  tmpreg &= MACCR_CLEAR_MASK; 80367ca:	400a      	ands	r2, r1  /* Set the IPCO bit according to ETH_ChecksumOffload value */                     /* Set the DR bit according to ETH_RetryTransmission value */   /* Set the ACS bit according to ETH_AutomaticPadCRCStrip value */   /* Set the BL bit according to ETH_BackOffLimit value */   /* Set the DC bit according to ETH_DeferralCheck value */                            tmpreg |= (uint32_t)(ETH_InitStruct->ETH_Watchdog |  80367cc:	6861      	ldr	r1, [r4, #4] 80367ce:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_Jabber |  80367d0:	68e1      	ldr	r1, [r4, #12] 80367d2:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_InterFrameGap | 80367d4:	6921      	ldr	r1, [r4, #16] 80367d6:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_CarrierSense | 80367d8:	6961      	ldr	r1, [r4, #20] 80367da:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_Speed |  80367dc:	69a1      	ldr	r1, [r4, #24] 80367de:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_ReceiveOwn | 80367e0:	69e1      	ldr	r1, [r4, #28] 80367e2:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_LoopbackMode | 80367e4:	6a21      	ldr	r1, [r4, #32] 80367e6:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_Mode |  80367e8:	6a61      	ldr	r1, [r4, #36]	; 0x24 80367ea:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_ChecksumOffload |     80367ec:	6aa1      	ldr	r1, [r4, #40]	; 0x28 80367ee:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_RetryTransmission |  80367f0:	6ae1      	ldr	r1, [r4, #44]	; 0x2c 80367f2:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_AutomaticPadCRCStrip |  80367f4:	6b21      	ldr	r1, [r4, #48]	; 0x30 80367f6:	4308      	orrs	r0, r1  /* Set the IPCO bit according to ETH_ChecksumOffload value */                     /* Set the DR bit according to ETH_RetryTransmission value */   /* Set the ACS bit according to ETH_AutomaticPadCRCStrip value */   /* Set the BL bit according to ETH_BackOffLimit value */   /* Set the DC bit according to ETH_DeferralCheck value */                            tmpreg |= (uint32_t)(ETH_InitStruct->ETH_Watchdog |  80367f8:	6b61      	ldr	r1, [r4, #52]	; 0x34 80367fa:	4301      	orrs	r1, r0 80367fc:	430a      	orrs	r2, r1                  ETH_InitStruct->ETH_RetryTransmission |                   ETH_InitStruct->ETH_AutomaticPadCRCStrip |                   ETH_InitStruct->ETH_BackOffLimit |                   ETH_InitStruct->ETH_DeferralCheck);  /* Write to ETHERNET MACCR */  ETH->MACCR = (uint32_t)tmpreg; 80367fe:	601a      	str	r2, [r3, #0]  /* Set the DAIF bit according to ETH_DestinationAddrFilter value */  /* Set the PR bit according to ETH_PromiscuousMode value */  /* Set the PM, HMC and HPF bits according to ETH_MulticastFramesFilter value */  /* Set the HUC and HPF bits according to ETH_UnicastFramesFilter value */  /* Write to ETHERNET MACFFR */    ETH->MACFFR = (uint32_t)(ETH_InitStruct->ETH_ReceiveAll |  8036800:	6ba2      	ldr	r2, [r4, #56]	; 0x38 8036802:	6be1      	ldr	r1, [r4, #60]	; 0x3c 8036804:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_SourceAddrFilter | 8036806:	6c22      	ldr	r2, [r4, #64]	; 0x40 8036808:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_PassControlFrames | 803680a:	6c62      	ldr	r2, [r4, #68]	; 0x44 803680c:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_BroadcastFramesReception |  803680e:	6ca2      	ldr	r2, [r4, #72]	; 0x48 8036810:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_DestinationAddrFilter | 8036812:	6ce2      	ldr	r2, [r4, #76]	; 0x4c 8036814:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_PromiscuousMode | 8036816:	6d22      	ldr	r2, [r4, #80]	; 0x50 8036818:	4311      	orrs	r1, r2  /* Set the DAIF bit according to ETH_DestinationAddrFilter value */  /* Set the PR bit according to ETH_PromiscuousMode value */  /* Set the PM, HMC and HPF bits according to ETH_MulticastFramesFilter value */  /* Set the HUC and HPF bits according to ETH_UnicastFramesFilter value */  /* Write to ETHERNET MACFFR */    ETH->MACFFR = (uint32_t)(ETH_InitStruct->ETH_ReceiveAll |  803681a:	6d62      	ldr	r2, [r4, #84]	; 0x54 803681c:	430a      	orrs	r2, r1 803681e:	605a      	str	r2, [r3, #4]                          ETH_InitStruct->ETH_PromiscuousMode |                          ETH_InitStruct->ETH_MulticastFramesFilter |                          ETH_InitStruct->ETH_UnicastFramesFilter);   /*--------------- ETHERNET MACHTHR and MACHTLR Configuration ---------------*/  /* Write to ETHERNET MACHTHR */  ETH->MACHTHR = (uint32_t)ETH_InitStruct->ETH_HashTableHigh; 8036820:	6da2      	ldr	r2, [r4, #88]	; 0x58 8036822:	609a      	str	r2, [r3, #8]  /* Write to ETHERNET MACHTLR */  ETH->MACHTLR = (uint32_t)ETH_InitStruct->ETH_HashTableLow; 8036824:	6de2      	ldr	r2, [r4, #92]	; 0x5c 8036826:	60da      	str	r2, [r3, #12]  /* Set the DZPQ bit according to ETH_ZeroQuantaPause value */  /* Set the PLT bit according to ETH_PauseLowThreshold value */  /* Set the UP bit according to ETH_UnicastPauseFrameDetect value */  /* Set the RFE bit according to ETH_ReceiveFlowControl value */  /* Set the TFE bit according to ETH_TransmitFlowControl value */    tmpreg |= (uint32_t)((ETH_InitStruct->ETH_PauseTime << 16) |  8036828:	6e62      	ldr	r2, [r4, #100]	; 0x64 803682a:	6ea1      	ldr	r1, [r4, #104]	; 0x68  ETH->MACHTHR = (uint32_t)ETH_InitStruct->ETH_HashTableHigh;  /* Write to ETHERNET MACHTLR */  ETH->MACHTLR = (uint32_t)ETH_InitStruct->ETH_HashTableLow;  /*----------------------- ETHERNET MACFCR Configuration --------------------*/  /* Get the ETHERNET MACFCR value */    tmpreg = ETH->MACFCR; 803682c:	6998      	ldr	r0, [r3, #24]  /* Set the DZPQ bit according to ETH_ZeroQuantaPause value */  /* Set the PLT bit according to ETH_PauseLowThreshold value */  /* Set the UP bit according to ETH_UnicastPauseFrameDetect value */  /* Set the RFE bit according to ETH_ReceiveFlowControl value */  /* Set the TFE bit according to ETH_TransmitFlowControl value */    tmpreg |= (uint32_t)((ETH_InitStruct->ETH_PauseTime << 16) |  803682e:	4311      	orrs	r1, r2                   ETH_InitStruct->ETH_ZeroQuantaPause | 8036830:	6ee2      	ldr	r2, [r4, #108]	; 0x6c 8036832:	4311      	orrs	r1, r2                   ETH_InitStruct->ETH_PauseLowThreshold | 8036834:	6f22      	ldr	r2, [r4, #112]	; 0x70 8036836:	4311      	orrs	r1, r2                   ETH_InitStruct->ETH_UnicastPauseFrameDetect |  8036838:	6f62      	ldr	r2, [r4, #116]	; 0x74 803683a:	4311      	orrs	r1, r2  ETH->MACHTLR = (uint32_t)ETH_InitStruct->ETH_HashTableLow;  /*----------------------- ETHERNET MACFCR Configuration --------------------*/  /* Get the ETHERNET MACFCR value */    tmpreg = ETH->MACFCR;  /* Clear xx bits */  tmpreg &= MACFCR_CLEAR_MASK; 803683c:	f64f 7241 	movw	r2, #65345	; 0xff41 8036840:	4002      	ands	r2, r0  /* Set the DZPQ bit according to ETH_ZeroQuantaPause value */  /* Set the PLT bit according to ETH_PauseLowThreshold value */  /* Set the UP bit according to ETH_UnicastPauseFrameDetect value */  /* Set the RFE bit according to ETH_ReceiveFlowControl value */  /* Set the TFE bit according to ETH_TransmitFlowControl value */    tmpreg |= (uint32_t)((ETH_InitStruct->ETH_PauseTime << 16) |  8036842:	430a      	orrs	r2, r1 8036844:	6e21      	ldr	r1, [r4, #96]	; 0x60 8036846:	ea42 4101 	orr.w	r1, r2, r1, lsl #16                   ETH_InitStruct->ETH_PauseLowThreshold |                   ETH_InitStruct->ETH_UnicastPauseFrameDetect |                    ETH_InitStruct->ETH_ReceiveFlowControl |                   ETH_InitStruct->ETH_TransmitFlowControl);   /* Write to ETHERNET MACFCR */  ETH->MACFCR = (uint32_t)tmpreg; 803684a:	6199      	str	r1, [r3, #24]  /*----------------------- ETHERNET MACVLANTR Configuration -----------------*/  /* Set the ETV bit according to ETH_VLANTagComparison value */  /* Set the VL bit according to ETH_VLANTagIdentifier value */    ETH->MACVLANTR = (uint32_t)(ETH_InitStruct->ETH_VLANTagComparison |  803684c:	6fe1      	ldr	r1, [r4, #124]	; 0x7c 803684e:	6fa2      	ldr	r2, [r4, #120]	; 0x78 8036850:	430a      	orrs	r2, r1 8036852:	61da      	str	r2, [r3, #28]                             ETH_InitStruct->ETH_VLANTagIdentifier);          /*-------------------------------- DMA Config ------------------------------*/  /*----------------------- ETHERNET DMAOMR Configuration --------------------*/  /* Get the ETHERNET DMAOMR value */    tmpreg = ETH->DMAOMR; 8036854:	f503 5380 	add.w	r3, r3, #4096	; 0x1000  /* Clear xx bits */  tmpreg &= DMAOMR_CLEAR_MASK; 8036858:	4a2a      	ldr	r2, [pc, #168]	; (8036904 <ETH_Init+0x27c>)                             ETH_InitStruct->ETH_VLANTagIdentifier);          /*-------------------------------- DMA Config ------------------------------*/  /*----------------------- ETHERNET DMAOMR Configuration --------------------*/  /* Get the ETHERNET DMAOMR value */    tmpreg = ETH->DMAOMR; 803685a:	6999      	ldr	r1, [r3, #24]  /* Set the TTC bit according to ETH_TransmitThresholdControl value */  /* Set the FEF bit according to ETH_ForwardErrorFrames value */  /* Set the FUF bit according to ETH_ForwardUndersizedGoodFrames value */  /* Set the RTC bit according to ETH_ReceiveThresholdControl value */  /* Set the OSF bit according to ETH_SecondFrameOperate value */  tmpreg |= (uint32_t)(ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame |  803685c:	f8d4 0084 	ldr.w	r0, [r4, #132]	; 0x84  /*-------------------------------- DMA Config ------------------------------*/  /*----------------------- ETHERNET DMAOMR Configuration --------------------*/  /* Get the ETHERNET DMAOMR value */    tmpreg = ETH->DMAOMR;  /* Clear xx bits */  tmpreg &= DMAOMR_CLEAR_MASK; 8036860:	400a      	ands	r2, r1  /* Set the TTC bit according to ETH_TransmitThresholdControl value */  /* Set the FEF bit according to ETH_ForwardErrorFrames value */  /* Set the FUF bit according to ETH_ForwardUndersizedGoodFrames value */  /* Set the RTC bit according to ETH_ReceiveThresholdControl value */  /* Set the OSF bit according to ETH_SecondFrameOperate value */  tmpreg |= (uint32_t)(ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame |  8036862:	f8d4 1080 	ldr.w	r1, [r4, #128]	; 0x80 8036866:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_ReceiveStoreForward | 8036868:	f8d4 1088 	ldr.w	r1, [r4, #136]	; 0x88 803686c:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_FlushReceivedFrame | 803686e:	f8d4 108c 	ldr.w	r1, [r4, #140]	; 0x8c 8036872:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_TransmitStoreForward |  8036874:	f8d4 1090 	ldr.w	r1, [r4, #144]	; 0x90 8036878:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_TransmitThresholdControl | 803687a:	f8d4 1094 	ldr.w	r1, [r4, #148]	; 0x94 803687e:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_ForwardErrorFrames | 8036880:	f8d4 1098 	ldr.w	r1, [r4, #152]	; 0x98 8036884:	4308      	orrs	r0, r1                  ETH_InitStruct->ETH_ForwardUndersizedGoodFrames | 8036886:	f8d4 109c 	ldr.w	r1, [r4, #156]	; 0x9c 803688a:	4308      	orrs	r0, r1  /* Set the TTC bit according to ETH_TransmitThresholdControl value */  /* Set the FEF bit according to ETH_ForwardErrorFrames value */  /* Set the FUF bit according to ETH_ForwardUndersizedGoodFrames value */  /* Set the RTC bit according to ETH_ReceiveThresholdControl value */  /* Set the OSF bit according to ETH_SecondFrameOperate value */  tmpreg |= (uint32_t)(ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame |  803688c:	f8d4 10a0 	ldr.w	r1, [r4, #160]	; 0xa0 8036890:	4301      	orrs	r1, r0 8036892:	430a      	orrs	r2, r1                  ETH_InitStruct->ETH_ForwardErrorFrames |                  ETH_InitStruct->ETH_ForwardUndersizedGoodFrames |                  ETH_InitStruct->ETH_ReceiveThresholdControl |                                                     ETH_InitStruct->ETH_SecondFrameOperate);   /* Write to ETHERNET DMAOMR */  ETH->DMAOMR = (uint32_t)tmpreg; 8036894:	619a      	str	r2, [r3, #24]  /* Set the FB bit according to ETH_FixedBurst value */  /* Set the RPBL and 4*PBL bits according to ETH_RxDMABurstLength value */  /* Set the PBL and 4*PBL bits according to ETH_TxDMABurstLength value */  /* Set the DSL bit according to ETH_DesciptorSkipLength value */  /* Set the PR and DA bits according to ETH_DMAArbitration value */           ETH->DMABMR = (uint32_t)(ETH_InitStruct->ETH_AddressAlignedBeats |  8036896:	f8d4 20a8 	ldr.w	r2, [r4, #168]	; 0xa8 803689a:	f8d4 10a4 	ldr.w	r1, [r4, #164]	; 0xa4 803689e:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_FixedBurst |                          ETH_InitStruct->ETH_RxDMABurstLength | /* !! if 4xPBL is selected for Tx or Rx it is applied for the other */ 80368a0:	f8d4 20ac 	ldr.w	r2, [r4, #172]	; 0xac  /* Set the RPBL and 4*PBL bits according to ETH_RxDMABurstLength value */  /* Set the PBL and 4*PBL bits according to ETH_TxDMABurstLength value */  /* Set the DSL bit according to ETH_DesciptorSkipLength value */  /* Set the PR and DA bits according to ETH_DMAArbitration value */           ETH->DMABMR = (uint32_t)(ETH_InitStruct->ETH_AddressAlignedBeats |                           ETH_InitStruct->ETH_FixedBurst | 80368a4:	f441 0100 	orr.w	r1, r1, #8388608	; 0x800000                          ETH_InitStruct->ETH_RxDMABurstLength | /* !! if 4xPBL is selected for Tx or Rx it is applied for the other */ 80368a8:	4311      	orrs	r1, r2                          ETH_InitStruct->ETH_TxDMABurstLength |  80368aa:	f8d4 20b0 	ldr.w	r2, [r4, #176]	; 0xb0 80368ae:	4311      	orrs	r1, r2                         (ETH_InitStruct->ETH_DescriptorSkipLength << 2) | 80368b0:	f8d4 20b8 	ldr.w	r2, [r4, #184]	; 0xb8 80368b4:	430a      	orrs	r2, r1 80368b6:	f8d4 10b4 	ldr.w	r1, [r4, #180]	; 0xb4  /* Set the FB bit according to ETH_FixedBurst value */  /* Set the RPBL and 4*PBL bits according to ETH_RxDMABurstLength value */  /* Set the PBL and 4*PBL bits according to ETH_TxDMABurstLength value */  /* Set the DSL bit according to ETH_DesciptorSkipLength value */  /* Set the PR and DA bits according to ETH_DMAArbitration value */           ETH->DMABMR = (uint32_t)(ETH_InitStruct->ETH_AddressAlignedBeats |  80368ba:	ea42 0281 	orr.w	r2, r2, r1, lsl #2 80368be:	601a      	str	r2, [r3, #0]                          ETH_InitStruct->ETH_DMAArbitration |                          ETH_DMABMR_USP); /* Enable use of separate PBL for Rx and Tx */                            #ifdef USE_ENHANCED_DMA_DESCRIPTORS    /* Enable the Enhanced DMA descriptors */    ETH->DMABMR |= ETH_DMABMR_EDE; 80368c0:	681a      	ldr	r2, [r3, #0] 80368c2:	f042 0280 	orr.w	r2, r2, #128	; 0x80 80368c6:	601a      	str	r2, [r3, #0]  #endif /* USE_ENHANCED_DMA_DESCRIPTORS */                                /* Return Ethernet configuration success */  return ETH_SUCCESS; 80368c8:	2001      	movs	r0, #1} 80368ca:	b007      	add	sp, #28 80368cc:	bdf0      	pop	{r4, r5, r6, r7, pc} 80368ce:	bf00      	nop 80368d0:	40028000 	.word	0x40028000 80368d4:	feced300 	.word	0xfeced300 80368d8:	00e4e1bf 	.word	0x00e4e1bf 80368dc:	fde9f140 	.word	0xfde9f140 80368e0:	017d783f 	.word	0x017d783f 80368e4:	fc6c7900 	.word	0xfc6c7900 80368e8:	026259ff 	.word	0x026259ff 80368ec:	fa0a1f00 	.word	0xfa0a1f00 80368f0:	02faf07f 	.word	0x02faf07f 80368f4:	000fffff 	.word	0x000fffff 80368f8:	0004fffe 	.word	0x0004fffe 80368fc:	0004ffff 	.word	0x0004ffff 8036900:	ff20810f 	.word	0xff20810f 8036904:	f8de3f23 	.word	0xf8de3f2308036908 <_sbrk>:    extern char _ebss; // Defined by the linker    extern char __bss_end__;    static char *heap_end;    char *prev_heap_end;    if (heap_end == 0) { 8036908:	4b0a      	ldr	r3, [pc, #40]	; (8036934 <_sbrk+0x2c>) 803690a:	681a      	ldr	r2, [r3, #0] 803690c:	b90a      	cbnz	r2, 8036912 <_sbrk+0xa>    	//heap_end = &_ebss;    	heap_end = &__bss_end__; 803690e:	4a0a      	ldr	r2, [pc, #40]	; (8036938 <_sbrk+0x30>) 8036910:	601a      	str	r2, [r3, #0]    }    prev_heap_end = heap_end; 8036912:	681b      	ldr	r3, [r3, #0] */__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void){  register uint32_t result;  __ASM volatile ("MRS %0, msp\n" : "=r" (result) ); 8036914:	f3ef 8208 	mrs	r2, MSPchar * stack = (char*) __get_MSP();     if (heap_end + incr >  stack) 8036918:	1818      	adds	r0, r3, r0 803691a:	4290      	cmp	r0, r2 803691c:	d905      	bls.n	803692a <_sbrk+0x22>     {         _write (STDERR_FILENO, "Heap and stack collision\n", 25);         errno = ENOMEM; 803691e:	4b07      	ldr	r3, [pc, #28]	; (803693c <_sbrk+0x34>) 8036920:	220c      	movs	r2, #12 8036922:	601a      	str	r2, [r3, #0]         return  (caddr_t) -1; 8036924:	f04f 33ff 	mov.w	r3, #4294967295 8036928:	e001      	b.n	803692e <_sbrk+0x26>         //abort ();     }    heap_end += incr; 803692a:	4a02      	ldr	r2, [pc, #8]	; (8036934 <_sbrk+0x2c>) 803692c:	6010      	str	r0, [r2, #0]    return (caddr_t) prev_heap_end;} 803692e:	4618      	mov	r0, r3 8036930:	4770      	bx	lr 8036932:	bf00      	nop 8036934:	2000e5b4 	.word	0x2000e5b4 8036938:	2001530c 	.word	0x2001530c 803693c:	20015208 	.word	0x2001520808036940 <Reset_Handler>:  .weak  Reset_Handler  .type  Reset_Handler, %functionReset_Handler:  /* Copy the data segment initializers from flash to SRAM */    movs  r1, #0 8036940:	2100      	movs	r1, #0  b  LoopCopyDataInit 8036942:	f000 b804 	b.w	803694e <LoopCopyDataInit>08036946 <CopyDataInit>:CopyDataInit:  ldr  r3, =_sidata 8036946:	4b0d      	ldr	r3, [pc, #52]	; (803697c <LoopFillZerobss+0x16>)  ldr  r3, [r3, r1] 8036948:	585b      	ldr	r3, [r3, r1]  str  r3, [r0, r1] 803694a:	5043      	str	r3, [r0, r1]  adds  r1, r1, #4 803694c:	3104      	adds	r1, #40803694e <LoopCopyDataInit>:    LoopCopyDataInit:  ldr  r0, =_sdata 803694e:	480c      	ldr	r0, [pc, #48]	; (8036980 <LoopFillZerobss+0x1a>)  ldr  r3, =_edata 8036950:	4b0c      	ldr	r3, [pc, #48]	; (8036984 <LoopFillZerobss+0x1e>)  adds  r2, r0, r1 8036952:	1842      	adds	r2, r0, r1  cmp  r2, r3 8036954:	429a      	cmp	r2, r3  bcc  CopyDataInit 8036956:	f4ff aff6 	bcc.w	8036946 <CopyDataInit>  ldr  r2, =_sbss 803695a:	4a0b      	ldr	r2, [pc, #44]	; (8036988 <LoopFillZerobss+0x22>)  b  LoopFillZerobss 803695c:	f000 b803 	b.w	8036966 <LoopFillZerobss>08036960 <FillZerobss>:/* Zero fill the bss segment. */  FillZerobss:  movs  r3, #0 8036960:	2300      	movs	r3, #0  str  r3, [r2], #4 8036962:	f842 3b04 	str.w	r3, [r2], #408036966 <LoopFillZerobss>:    LoopFillZerobss:  ldr  r3, = _ebss 8036966:	4b09      	ldr	r3, [pc, #36]	; (803698c <LoopFillZerobss+0x26>)  cmp  r2, r3 8036968:	429a      	cmp	r2, r3  bcc  FillZerobss 803696a:	f4ff aff9 	bcc.w	8036960 <FillZerobss>/* Call the clock system intitialization function.*/  bl  SystemInit    803696e:	f7ef fa09 	bl	8025d84 <SystemInit>/* Call static constructors */    bl __libc_init_array 8036972:	f7ea ff8d 	bl	8021890 <__libc_init_array>/* Call the application's entry point.*/  bl  main 8036976:	f7f0 faaf 	bl	8026ed8 <main>  bx  lr     803697a:	4770      	bx	lr/* Copy the data segment initializers from flash to SRAM */    movs  r1, #0  b  LoopCopyDataInitCopyDataInit:  ldr  r3, =_sidata 803697c:	08041f2c 	.word	0x08041f2c  ldr  r3, [r3, r1]  str  r3, [r0, r1]  adds  r1, r1, #4    LoopCopyDataInit:  ldr  r0, =_sdata 8036980:	20000000 	.word	0x20000000  ldr  r3, =_edata 8036984:	20001988 	.word	0x20001988  adds  r2, r0, r1  cmp  r2, r3  bcc  CopyDataInit  ldr  r2, =_sbss 8036988:	20001988 	.word	0x20001988FillZerobss:  movs  r3, #0  str  r3, [r2], #4    LoopFillZerobss:  ldr  r3, = _ebss 803698c:	2001530c 	.word	0x2001530c08036990 <ADC_IRQHandler>: * @retval None       */    .section  .text.Default_Handler,"ax",%progbitsDefault_Handler:Infinite_Loop:  b  Infinite_Loop 8036990:	f7ff bffe 	b.w	8036990 <ADC_IRQHandler>08036994 <_ctype_>: 8036994:	2000 2020 2020 2020 2020 2828 2828 2028     .         (((((  80369a4:	2020 2020 2020 2020 2020 2020 2020 2020                      80369b4:	8820 1010 1010 1010 1010 1010 1010 1010      ............... 80369c4:	0410 0404 0404 0404 0404 1004 1010 1010     ................ 80369d4:	1010 4141 4141 4141 0101 0101 0101 0101     ..AAAAAA........ 80369e4:	0101 0101 0101 0101 0101 0101 1010 1010     ................ 80369f4:	1010 4242 4242 4242 0202 0202 0202 0202     ..BBBBBB........ 8036a04:	0202 0202 0202 0202 0202 0202 1010 1010     ................ 8036a14:	0020 0000 0000 0000 0000 0000 0000 0000      ............... 8036a24:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a34:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a44:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a54:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a64:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a74:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a84:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8036a94:	0000 0000                                   ....08036a98 <tinytens>: 8036a98:	89bc 97d8 d2b2 3c9c a733 d5a8 f623 3949     .......<3...#.I9 8036aa8:	a73d 44f4 0ffd 32a5 979d cf8c ba08 255b     =..D...2......[% 8036ab8:	6f43 64ac 0628 0e18                         Co.d(...08036ac0 <p05.5261>: 8036ac0:	0005 0000 0019 0000 007d 0000 0000 0000     ........}.......08036ad0 <__mprec_tens>: 8036ad0:	0000 0000 0000 3ff0 0000 0000 0000 4024     .......?......$@ 8036ae0:	0000 0000 0000 4059 0000 0000 4000 408f     ......Y@.....@.@ 8036af0:	0000 0000 8800 40c3 0000 0000 6a00 40f8     .......@.....j.@ 8036b00:	0000 0000 8480 412e 0000 0000 12d0 4163     .......A......cA 8036b10:	0000 0000 d784 4197 0000 0000 cd65 41cd     .......A....e..A 8036b20:	0000 2000 a05f 4202 0000 e800 4876 4237     ... _..B....vH7B 8036b30:	0000 a200 1a94 426d 0000 e540 309c 42a2     ......mB..@..0.B 8036b40:	0000 1e90 bcc4 42d6 0000 2634 6bf5 430c     .......B..4&.k.C 8036b50:	8000 37e0 c379 4341 a000 85d8 3457 4376     ...7y.AC....W4vC 8036b60:	c800 674e c16d 43ab 3d00 6091 58e4 43e1     ..Ngm..C.=.`.X.C 8036b70:	8c40 78b5 af1d 4415 ef50 d6e2 1ae4 444b     @..x...DP.....KD 8036b80:	d592 064d f0cf 4480 4af6 c7e1 2d02 44b5     ..M....D.J...-.D 8036b90:	9db4 79d9 7843 44ea                         ...yCx.D08036b98 <__mprec_tinytens>: 8036b98:	89bc 97d8 d2b2 3c9c a733 d5a8 f623 3949     .......<3...#.I9 8036ba8:	a73d 44f4 0ffd 32a5 979d cf8c ba08 255b     =..D...2......[% 8036bb8:	6f43 64ac 0628 0ac8                         Co.d(...08036bc0 <__mprec_bigtens>: 8036bc0:	8000 37e0 c379 4341 6e17 b505 b8b5 4693     ...7y.AC.n.....F 8036bd0:	f9f5 e93f 4f03 4d38 1d32 f930 7748 5a82     ..?..O8M2.0.Hw.Z 8036be0:	bf3c 7f73 4fdd 7515 454c 5f44 6c42 6e69     <.s..O.uLED_Blin 8036bf0:	006b 7542 7474 6e6f 0073 5055 5f53 6f4d     k.Buttons.UPS_Mo 8036c00:	696e 6f74 0072 6e73 706d 7953 5573 5470     nitor.snmpSysUpT 8036c10:	6d69 0065 6e73 706d 7254 7061 6554 7473     ime.snmpTrapTest 8036c20:	7300 746e 4f70 636e 5365 6e69 7268 006f     .sntpOnceSinhro. 8036c30:	6e73 7074 6550 6972 646f 6369 6953 686e     sntpPeriodicSinh 8036c40:	6f72 4900 696e 5474 7361 006b 6148 6472     ro.InitTask.Hard 8036c50:	6146 6c75 3a74 0d0a 0a00 520d 6765 7369     Fault:.....Regis 8036c60:	6574 7372 0a3a 000d 5053 2020 2020 2020     ters:...SP       8036c70:	2020 2020 7830 3025 6c38 0a78 000d 3052         0x%08lx...R0 8036c80:	2020 2020 2020 2020 2020 7830 3025 6c38               0x%08l 8036c90:	0a78 000d 3152 2020 2020 2020 2020 2020     x...R1           8036ca0:	7830 3025 6c38 0a78 000d 3252 2020 2020     0x%08lx...R2     8036cb0:	2020 2020 2020 7830 3025 6c38 0a78 000d           0x%08lx... 8036cc0:	3352 2020 2020 2020 2020 2020 7830 3025     R3          0x%0 8036cd0:	6c38 0a78 000d 3152 2032 2020 2020 2020     8lx...R12        8036ce0:	2020 7830 3025 6c38 0a78 000d 524c 2020       0x%08lx...LR   8036cf0:	2020 2020 2020 2020 7830 3025 6c38 0a78             0x%08lx. 8036d00:	000d 4350 2020 2020 2020 2020 2020 7830     ..PC          0x 8036d10:	3025 6c38 0a78 000d 5350 2052 2020 2020     %08lx...PSR      8036d20:	2020 2020 7830 3025 6c38 0a78 000d 3025         0x%08lx...%0 8036d30:	312e 0066 6425 2500 3430 2d69 3025 6932     .1f.%d.%04i-%02i 8036d40:	252d 3230 0069 7325 2500 2064 b4d0 bdd0     -%02i.%s.%d .... 8036d50:	202e 6425 d120 2e87 2520 2064 bcd0 b8d0     . %d ... %d .... 8036d60:	bdd0 002e 2e31 0030 7274 6575 6600 6c61     ....1.0.true.fal 8036d70:	6573 6f00 006e 302d 2d31 3025 6932 253a     se.on.-01-%02i:% 8036d80:	3230 0069 3025 6932 252d 3230 2d69 3025     02i.%02i-%02i-%0 8036d90:	6932 302d 2d31 3100 3239 312e 3836 312e     2i-01-.192.168.1 8036da0:	322e 3100 3239 312e 3836 312e 312e 3200     .2.192.168.1.1.2 8036db0:	3535 322e 3535 322e 3535 302e 7000 6275     55.255.255.0.pub 8036dc0:	696c 0063 5442 362d 3037 0031 2e30 2e30     lic.BT-6701.0.0. 8036dd0:	2e30 0030 3830 302e 2e37 3032 3631 4500     0.0.08.07.2016.E 8036de0:	2d43 4334 342d 2d44 3030 302d 2d30 4130     C-4C-4D-00-00-0A 8036df0:	4b00 2d4e 3330 302d 3030 3130 6100 6d64     .KN-03-00001.adm 8036e00:	6e69 3100 3332 3534 7500 6573 0072 3231     in.12345.user.12 8036e10:	3433 3800 2e38 3431 2e37 3532 2e34 3332     34.88.147.254.23 8036e20:	0035 6f6e 656e 3100 3732 302e 302e 312e     5.none.127.0.0.1 8036e30:	5400 4f32 004b 7325 252e 2564 2573 0d64     .T2OK.%s.%d%s%d. 8036e40:	2000 4100 4b43 4e00 4b43 7200 7165 6575     . .ACK.NCK.reque 8036e50:	7473 745f 7361 006b 3151 000d 4c54 000d     st_task.Q1..TL.. 8036e60:	0054 0d51 5300 5200 4300 000d 5443 000d     T.Q..S.R.C..CT.. 8036e70:	0d49 4600 000d 4449 454c 0900 6325 2509     I..F..IDLE..%c.% 8036e80:	0975 7525 2509 0d75 000a 6d54 2072 7653     u.%u.%u...Tmr Sv 8036e90:	0063                                        c.08036e92 <data__rotek_png>: 8036e92:	722f 746f 6b65 702e 676e 0000 5448 5054     /rotek.png..HTTP 8036ea2:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 8036eb2:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  8036ec2:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 8036ed2:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 8036ee2:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 8036ef2:	6e65 2d74 654c 676e 6874 203a 3935 3935     ent-Length: 5959 8036f02:	0a0d 6f43 6e6e 6365 6974 6e6f 203a 6c43     ..Connection: Cl 8036f12:	736f 0d65 430a 6e6f 6574 746e 742d 7079     ose..Content-typ 8036f22:	3a65 6920 616d 6567 702f 676e 0a0d 6143     e: image/png..Ca 8036f32:	6863 2d65 6f43 746e 6f72 3a6c 7020 6972     che-Control: pri 8036f42:	6176 6574 202c 616d 2d78 6761 3d65 3638     vate, max-age=86 8036f52:	3034 0d30 0d0a 890a 4e50 0d47 1a0a 000a     400.....PNG..... 8036f62:	0000 490d 4448 0052 0100 0057 0000 08ae     ...IHDR...W..... 8036f72:	0006 0000 db82 7d4e 0000 0e17 4449 5441     ......N}....IDAT 8036f82:	da78 9ded ac7d 672c c059 a1cf 7a80 3285     x...}.,gY....z.2 8036f92:	4b45 1014 4db6 a62d ae0a b68a 52d8 45c7     EK...M-......R.E 8036fa2:	4131 1b2d 1045 0b7a 7a53 bc69 6060 634d     1A-.E.z.Szi.``Mc 8036fb2:	d894 c326 6c55 d2ac c6c5 285e 2c91 951f     ..&.Ul....^(.,.. 8036fc2:	4a92 885d 4ad5 dd02 6a3f 9352 1ba2 36ac     .J]..J..?jR....6 8036fd2:	a246 011b 6d69 e76b 72d2 71fb 7729 df7d     F...imk..r.q)w}. 8036fe2:	7793 9c75 cece 9fbc b333 7e7b fc7f 6f72     .wu.....3.{~..ro 8036ff2:	39ce fb3b bf39 e67d 9e79 79f7 9677 e5cb     .9;.9.}.y..yw... 8037002:	000e f800 1785 0001 b900 0002 5720 0000     ............ W.. 8037012:	0ae4 0000 15c8 0000 02b9 2000 0057 4000     ........... W..@ 8037022:	00ae c800 0015 b900 0002 7200 0005 ae40     ...........r..@. 8037032:	0000 15c8 0000 2b90 0000 0572 4000 00ae     .......+..r..@.. 8037042:	8000 015c 9000 002b 7200 0005 e400 000a     ..\...+..r...... 8037052:	5c80 0001 2b90 0000 5720 0000 0ae4 8000     .\...+.. W...... 8037062:	015c 0000 02b9 2000 0057 e400 000a c800     \...... W....... 8037072:	0015 b900 0002 5720 0000 eae4 c19f 5f6b     ...... W......k_ 8037082:	96b7 8fdd bede 440d 3882 9a47 ff23 def3     .......D.8G.#... 8037092:	3c96 d6df ed38 377d 7e56 009e c824 3375     .<..8.}7V~..$.u3 80370a2:	dae5 8c17 1304 5cc1 b4b0 de40 aa6e 138e     .......\..@.n... 80370b2:	4d23 0ae4 75c8 ca3f 4655 89a5 6192 2966     #M...u?.UF...af) 80370c2:	3ad3 7532 44fc 1fdd 4522 80ae b75c ae56     .:2u.D.."E..\.V. 80370d2:	8ab1 974e 202d 3b45 a644 15c8 eb90 c936     ..N.- E;D.....6. 80370e2:	4655 8b8f a496 645a 3441 5c8b b901 ba6e     UF....ZdA4.\..n. 80370f2:	bb5c d524 b4b2 08c1 22b9 4057 9bae d724     \.$......"W@..$. 8037102:	a1d8 5530 2cc5 2450 231b e457 c801 cbb5     ..0U.,P$.#W..... 8037112:	9572 da97 0763 cdd1 edd5 1557 48ff 5db3     r...c.....W..H.] 8037122:	512b 9bb7 e63b 2364 0ae4 5c80 26bb bed7     +Q..;.d#...\.&.. 8037132:	0a45 5320 ae05 47a1 45b1 78ea 8b13 844e     E. S...G.E.x..N. 8037142:	3f6c bd16 2b90 d720 caee 6475 7971 54df     l?...+ ...udqy.T 8037152:	2951 48b1 8c27 2b91 7200 5b6d 13ae a943     Q).H'..+.rm[..C. 8037162:	95b6 ecdf 3c59 08d6 02b9 d720 e5a6 191a     ....Y<.... ..... 8037172:	38e4 1d67 1a2a 0cf5 d922 7ef9 2c10 0572     .8g.*..."..~.,r. 8037182:	dae4 b91d 8aea b5d5 a9dd 9857 1023 9c7b     ..........W.#.{. 8037192:	302b ccd4 cec9 7db7 017e 0572 dae4 b90d     +0.....}~.r..... 80371a2:	8aea 6675 a521 caa1 ce77 722c 63b8 c28b     ..uf!...w.,r.c.. 80371b2:	a458 04ba 75f6 8b04 015c b6b9 572f b15d     X....u..\.../W]. 80371c2:	86a6 9d42 faee ea5f 189a bd16 adf6 9160     ..B..._.......`. 80371d2:	202b 4d57 06b9 ec14 53d4 532b d2a4 a105     + WM.....S+S.... 80371e2:	6f57 4a65 3af4 ec52 a46b e609 15c8 2b90     WoeJ.:R.k......+ 80371f2:	f572 58cd 6443 8efd 892e 34cd 69a3 c11d     r..XCd.....4.i.. 8037202:	904e 202b e457 8bea 07a1 f6b1 2d03 f55f     N.+ W........-_. 8037212:	d4bd 4755 09b0 0572 8ae4 7d5c 59e4 4733     ..UG..r...\}.Y3G 8037222:	8eb1 bb76 b435 7525 6c14 4db6 041d 15c8     ..v.5.%u.l.M.... 8037232:	ab90 5c81 0a3d 2eb6 1acf 88d7 6279 9059     ...\=.......ybY. 8037242:	6b4a 0be6 e6ac 8c0a 872c d76e 122d 13a8     Jk......,.n.-... 8037252:	0cec 02b9 4572 a1ae 01d2 4f23 0c8b 4bf2     ....rE....#O...K 8037262:	5d62 af1f e749 5d41 4007 f0e2 91fc 202b     b]..I.A].@....+  8037272:	e457 56ba 8b8e e89a 87d2 2758 2e01 4db1     W..V......X'...M 8037282:	ba96 09d6 5c76 1e93 9088 202b 7dd7 5726     ....v\....+ .}&W 8037292:	c147 35a6 a185 51c8 f3ac 9606 eac4 752e     G..5...Q.......u 80372a2:	13ad 7cec bb9b 9007 202b e6d7 5ae4 c457     ...|....+ ...ZW. 80372b2:	1d8a b472 8ba6 9a0c da9a af35 bfc9 dd56     ..r.......5...V. 80372c2:	87b6 015c eeb9 b933 0a5a b536 074c 01a4     ..\...3.Z.6.L... 80372d2:	a5e6 9e46 0ae6 f6b8 8eb0 35b7 457a 80ae     ..F........5zE.. 80372e2:	9b5c 6b91 d45d abda dad8 c7c5 8322 2155     \..k].......".U! 80372f2:	6749 b5d8 f6e9 3ad9 1d82 7e7a 905d 202b     Ig.....:..z~].+  8037302:	6dd7 ab95 60a1 8b13 f9cb e2ba 8e97 2358     .m...`........X# 8037312:	fc75 376c 52ec 9d57 d61e 22c8 f732 ea91     u.l7.RW...."2... 8037322:	0d58 f1ad 58c5 ae3d 2ab4 afda 6b91 8824     X....X=..*...k$. 8037332:	a905 2c60 8198 9277 6bc2 323e bdbc 07ae     ..`,..w..k>2.... 8037342:	de5c 1ebf 7572 ec17 22c2 ab3a 074b 1ac4     \...ru...":.K... 8037352:	542d 52b6 19b5 5873 d827 4589 baf4 20f0     -T.R..sX'..E...  8037362:	a6d7 a956 f38d 65ef 5c89 7523 cf82 4b05     ..V....e.\#u...K 8037372:	ce08 f0a8 cffa 6e0c 2bab 89d7 63e5 04cb     .......n.+...c.. 8037382:	227d 7757 f6b9 842d 73d3 85ec 049d 4892     }"Ww..-..s.....H 8037392:	22dd c481 48b2 5a95 14a4 5f5c 50fb d7c8     ."...H.Z..\_.P.. 80373a2:	ca3e b5c9 70e7 8212 713d 5ce1 0ccd 3b6e     >....p..=q.\..n; 80373b2:	280e c5d6 ac4a d5c8 b05d 4555 be9b 36c5     .(..J...].UE...6 80373c2:	332f 8b8f 6c0c 9377 2c8d 1b3b be6c 5c4c     /3...lw..,;.l.L\ 80373d2:	5b0a ddc3 e696 082d c6b9 24ea 7445 90ed     .[....-....$Et.. 80373e2:	473f 8e7b 6f51 0af1 f6c4 63ea 6eae ce4f     ?G{.Qo.....c.nO. 80373f2:	93d5 1760 6d86 914a fae5 26fb aac4 5823     ..`..mJ....&..#X 8037402:	22db b4d5 39e2 e887 0e2b 77ca e07c cb33     ."...9..+..w|.3. 8037412:	5f0b 3177 6b92 4587 fce1 1d8c 5ea3 621f     ._w1.k.E.....^.b 8037422:	169d 8ac5 dd5c dae4 b8b3 1fb4 1659 7478     ....\.......Y.xt 8037432:	a897 3aae 7a01 8f25 6875 0ab8 a6cb 7607     ...:.z%.uh.....v 8037442:	916c b052 185d dd31 716d cd98 bf99 07fd     l.R.].1.mq...... 8037452:	ae88 8a1d d339 f0d4 91f6 b167 e84e 7016     ....9.....g.N..p 8037462:	ab6c 9430 cf4c d230 aaad 8fb8 fd76 892e     l.0.L.0.....v... 8037472:	348d cd66 6dd6 bd97 8c30 a344 5d00 8b03     .4f..m..0.D..].. 8037482:	e536 8cfa bd3f d10d 43b5 90ea 5d1f 9c94     6...?....C...].. 8037492:	7ddb 9cc3 6ead 018a 3ab9 7608 5862 ef05     .}...n...:.vbX.. 80374a2:	885b a7ac 06d1 5b65 8a14 3a35 fa0e 8b1e     [.....e[..5:.... 80374b2:	3354 d3cf 5ab2 c51f a3f8 de87 ec85 679a     T3...Z.........g 80374c2:	3858 e72f 510e 8baf 1358 5cfa ca3d 20b5     X8/..Q..X..\=..  80374d2:	45d8 915d f0a6 a9f7 a445 f13b c8b4 f7c0     .E].....E.;..... 80374e2:	c098 a2c8 5548 fcf5 be6d 9018 feeb 5fa4     ....HU..m......_ 80374f2:	2738 a36d d8de ac52 c959 4063 beae 7ae4     8'm...R.Y.c@...z 8037502:	fae0 4ee9 d4dd 57fd e9bc 45ad cf21 f2ea     ...N...W...E!... 8037512:	059b d719 6cb5 1af9 52e2 d827 61be 73ce     .....l...R'..a.s 8037522:	2161 d344 892f a2c4 accd 508a cd72 9537     a!D./......Pr.7. 8037532:	102f f7a3 814e 65be 99b4 68f8 42b5 feae     /...N..e...h.B.. 8037542:	dae5 7213 891d 9c76 a4a5 144c eff2 72f2     ...r..v...L....r 8037552:	2715 4ee1 ce5d dcf1 2e4b 8937 7d74 720f     .'.N]...K.7.t}.r 8037562:	5919 a244 8255 0c8b dda3 7038 80a7 61af     .YD.U.....8p...a 8037572:	3a35 cd72 8454 5654 8938 241d 6b1b 5a92     5:r.T.TV8..$.k.Z 8037582:	0de4 0363 ab4c b1e8 f267 e7af 22d0 b5ea     ..c.L...g....".. 8037592:	eb15 cd7c 8a7b 2b5c 845e 87fc 5532 881f     ..|.{.\+^...2U.. 80375a2:	b455 9b61 598f b90a ab66 88e3 7093 ab26     U.a..Y..f....p&. 80375b2:	dfcb d577 f7fb 2c84 795b 62f2 8f91 2563     ..w....,[y.b..c% 80375c2:	9cd7 8d60 5f8a f43f dff6 79da afe5 dc1c     ..`.._?....y.... 80375d2:	c9f9 5e37 23ba 6bee 95e7 bfaf ef64 1e98     ..7^.#.k....d... 80375e2:	440a 4599 c4b7 593a 9e66 2cbe 8666 6b51     .D.E..:Yf..,f.Qk 80375f2:	e388 7f2e cde2 56bf 0276 6af6 ba4e 52c8     .......Vv..jN..R 8037602:	b1b0 49e6 3a9d 8244 1a3b dd8f f8a5 9be4     ...I.:D.;....... 8037612:	e2d4 78f1 b56b ae42 27ff 9ed7 d6fa bb1a     ...xk.B..'...... 8037622:	d38a f217 14e4 9412 258f 2215 564c 1c97     .........%."LV.. 8037632:	e235 8b4a 7d42 a5f9 bebf ae56 1fa2 e773     5.J.B}....V...s. 8037642:	5ffc f64d e67e a970 f7dd cb24 2799 9ab9     ._M.~.p...$..'.. 8037652:	fd2c 849d ab92 6443 fb13 4cae 98e7 563a     ,.....Cd...L..:V 8037662:	7dcf ee3e b038 675c 9c0d 13a7 b706 cbd4     .}>.8.\g........ 8037672:	dd35 bc94 9092 5ce4 ba46 5fa7 e1fd 96bd     5......\F.._.... 8037682:	b29f 97e2 a894 5ca9 166b 4444 7d16 a6bb     .......\k.DD.}.. 8037692:	9cb2 8c5a 3465 9c79 e2ae 6ed6 92ef 8def     ..Z.e4y....n.... 80376a2:	914d b2c3 6dca 0512 0c2e b223 9190 1462     M....m....#...b. 80376b2:	ae58 f3a1 c9d8 a980 db58 d725 08b2 ecf7     X.......X.%..... 80376c2:	8e2b 9dec 52d0 e72e 3c1d 2d64 9ad7 7608     +....R...<d-...v 80376d2:	49ee 3396 5cc3 2ce9 a760 1c40 b8e2 bce7     .I.3.\.,`.@..... 80376e2:	4af3 a89b f5d2 5692 b8e7 2f21 27db f281     .J.....V..!/.'.. 80376f2:	55c4 9e44 ab9e 4769 3240 e460 b6a0 475c     .UD...iG@2`...\G 8037702:	52db 1531 9d72 890b 42a6 7da8 b91b dfca     .R1.r....B.}.... 8037712:	b619 f97e a592 b90f 169a 7c9e adcd 5ffd     ..~........|..._ 8037722:	7d9e cddd 972e b6d6 98c5 c034 fb65 83b0     .}........4.e... 8037732:	e197 7a45 531e 3e2b bb87 d720 5c9c b9fb     ..Ez.S+>.. ..\.. 8037742:	d542 5738 4ac0 bf2d f351 9fb7 28f8 5982     B.8W.J-.Q....(.Y 8037752:	10a6 4216 e3ae 6895 e575 26ba 9045 806e     ...B...hu..&E.n. 8037762:	275c 9116 3aeb 3646 68cb 850b 91ac c9e5     \'...:F6.h...... 8037772:	0717 ab90 2569 34dc d195 eb76 7155 6b86     ....i%.4..v.Uq.k 8037782:	c8c8 4235 0dae 62b7 d019 2753 fc90 a7c0     ..5B...b..S'.... 8037792:	70aa 0f35 5a2d d119 810a b6f6 ae58 36b3     .p5.-Z......X..6 80377a2:	0e17 d214 4b01 ee8d 2680 3ae5 841e 14eb     .....K...&.:.... 80377b2:	b7e8 d620 c799 bae7 341c e9dc 5c80 621b     .. ......4...\.b 80377c2:	b425 07dc 1135 dbd2 5ceb 3108 4961 5cca     %...5....\.1aI.\ 80377d2:	2076 c954 44b5 33b0 82c3 1b53 ed72 5892     v T..D.3..S.r..X 80377e2:	0ee7 099f 28d3 e473 b2f9 167d 8d38 fa11     .....(s...}.8... 80377f2:	3cf2 8a74 39c2 457a edae 75c8 290f f93d     .<t..9zE...u.)=. 8037802:	14af ae60 79c1 b3e2 2a0a 9d8e 8949 68cb     ..`..y...*..I..h 8037812:	4cb6 9aae 7a4b 5b4d a6ab f386 756f dae5     .L..KzM[....ou.. 8037822:	436b 32aa 5ac7 d3d2 9aea 4b9b fe07 9adb     kC.2.Z.....K.... 8037832:	524c 9352 8fc0 c437 038e cfb6 95b5 2bdc     LRR...7........+ 8037842:	7572 e4bb 3a77 414e 65ae b1f7 5b27 4829     ru..w:NA.e..'[)H 8037852:	3d5f 427b f1ae b91a ebf6 f496 e87a 982e     _={B........z... 8037862:	f639 36a2 203a b65b 95c1 ab44 f23e 36ad     9..6: [...D.>..6 8037872:	5791 145d ba15 7fc1 82da e35c f38a edaf     .W].......\..... 8037882:	1a82 0d72 d724 62b4 b91d a8f7 1577 cad9     ..r.$..b....w... 8037892:	aa7c bc8f caad c6ff b905 2d8e cb06 ee84     |..........-.... 80378a2:	6d8b 407d 5cb6 b74d 6a26 6d75 3792 c2f9     .m}@.\M.&jum.7.. 80378b2:	0c5c 6fda 6ff0 3663 d442 a742 8b00 5a08     \..o.oc6B.B....Z 80378c2:	6b96 586c 8824 7894 b927 84ee 50c8 7bae     .klX$..x'....P.{ 80378d2:	009d d2ea f7be 8b8a 1b2f 4929 16ba 620c     ......../.)I...b 80378e2:	8dcb 6304 de8b 9b52 c37d 1f5a 2d90 d823     ...c..R.}.Z..-#. 80378f2:	8235 95b5 30eb 09c0 ba1e bfc1 1ded da07     5....0.......... 8037902:	514c 90f4 736b ed72 445b d904 0f9a f690     LQ..ksr.[D...... 8037912:	59e5 ae4e 423b 7bae d3b9 6895 225d 1fda     .YN.;B.{...h]".. 8037922:	cb7f 4ce1 15e6 c50d 3a67 b042 a1e7 7fd1     ...L....g:B..... 8037932:	56de ab31 dbd0 2aea d357 fc66 e7a1 6663     .V1....*W.f...cf 8037942:	3b81 4c1b c187 d194 b00f e081 32dc 9f02     .;.L.........2.. 8037952:	d720 0b66 a65a b879 a7a9 fa0f 391e eeb9      .f.Z.y......9.. 8037962:	3ffd 8b97 6d4a e12f 7e64 30b1 a654 09aa     .?..Jm/.d~.0T... 8037972:	6e7f 9c58 1c4a fd1b 1f5b 2d90 dcbe 2c7c     .nX.J...[..-..|, 8037982:	348f 17cd 0166 b872 e9a6 d0ab b3fd cca6     .4..f.r......... 8037992:	c52d 391a c54c 21ea e6d7 3ae4 5c33 9daf     -..9L..!...:3\.. 80379a2:	4458 2326 bc75 d551 9b9b eb93 bbff bcf4     XD&#u.Q......... 80379b2:	f5e0 b66f 422a b9c8 6a06 c1a6 3578 a620     ..o.*B...j..x5 . 80379c2:	55d0 b7d0 cb58 363f 3b4c 2eb8 1d7b 1c56     .U..X.?6L;..{.V. 80379d2:	3527 fe1c c7b2 0ecb a6ff 6a8f 34f2 d450     '5.........j.4P. 80379e2:	b214 1e0a 7fb2 67d6 a360 1afb 1236 22bd     .......g`...6.." 80379f2:	7b57 86c6 4691 1964 2c49 690a b184 646e     W{...Fd.I,.i..nd 8037a02:	e420 8f9a 8d66 0e3a 9464 2226 54d9 faae      ...f.:.d.&".T.. 8037a12:	912a c4eb 8262 c2d6 6871 e98b ec80 c6be     *...b...qh...... 8037a22:	5792 4dd7 b309 11c0 6ea0 64c4 343b a77a     .W.M.....n.d;4z. 8037a32:	5103 cfb1 9c94 14ae 26d3 57a2 6ae4 d0cf     .Q.......&.W.j.. 8037a42:	ef22 b53a e378 15fa ff09 d14a b92a 4f16     ".:.x.....J.*..O 8037a52:	a36e 6d6f a139 2e4b cdad b5c9 772a f0ba     n.om9.K.....*w.. 8037a62:	53b8 136e b203 8ea7 3572 6969 d9b2 69af     .Sn.....r5ii...i 8037a72:	0832 2053 cd33 6715 0683 ebaa 9e81 7f6b     2.S 3..g......k. 8037a82:	a04d 8593 5e8e ab91 913d 65c5 6257 8df9     M....^..=..eWb.. 8037a92:	175f acf1 630a df5a a2ac 3580 8934 d446     _....cZ....54.F. 8037aa2:	b20a e554 2746 b79e ef14 b6ed 2037 48db     ..T.F'......7 .H 8037ab2:	15d8 badb 45d4 a382 91c0 9752 6406 7977     .....E....R..dwy 8037ac2:	185b cb1f 6367 dae4 0acc 99ad 1145 6162     [...gc......E.ba 8037ad2:	1559 189e 965c 3525 cd72 8157 0667 ec51     Y...\.%5r.W.g.Q. 8037ae2:	a2a2 a0ab 7b6a 85f0 be63 d435 ec80 d778     ....j{..c.5...x. 8037af2:	9edf 9359 89c2 b7d7 52b9 6cb0 eff2 80d2     ..Y......R.l.... 8037b02:	2eec f731 5858 4e34 207b 3757 1646 ad79     ..1.XX4N{ W7F.y. 8037b12:	61c4 b33d 8449 a992 e76f 855e ad5c 2b24     .a=.I...o.^.\.$+ 8037b22:	abb7 2831 c564 5b16 bb8a 0a76 21a4 1ae4     ..1(d..[..v..!.. 8037b32:	0662 8584 5c14 e7ab 07a1 7764 ba89 3ae7     b....\....dw...: 8037b42:	1909 22bd 70d7 81a9 6599 3af4 c8d5 6539     ...".p...e.:..9e 8037b52:	1f16 58b2 4a33 8ad1 64b4 9714 25db 2aa1     ...X3J...d...%.* 8037b62:	9d6a faec f5d9 c435 6c80 e5a3 0db4 2109     j.....5..l.....! 8037b72:	68b3 09fb ecb9 9375 9ae5 fc0e c716 a28c     .h....u......... 8037b82:	e457 ceea e2d4 ae1b 292e d63f fa90 32c4     W........)?....2 8037b92:	d222 14a9 3a27 9702 9c91 01da b477 1ada     "...':......w... 8037ba2:	a07c 3dbf dcf8 df70 df2c b203 728d f2ae     |..=..p.,....r.. 8037bb2:	a48b b121 03f6 b65f 0e9b 4ec8 5836 f1ae     ..!..._....N6X.. 8037bc2:	6fc0 8427 b1d1 6b91 a5d8 33b0 3c87 8e99     .o'....k...3.<.. 8037bd2:	7b04 b24a 91a6 42ec 1073 5688 22d4 6ea7     .{J....Bs..V.".n 8037be2:	96c9 12ad 4eb9 862c b8c1 ceae 42ca d16c     .....N,......Bl. 8037bf2:	bf2d 3a44 d628 1a26 7bfc 2c1b 5ed7 9cc0     -.D:(.&..{.,.^.. 8037c02:	0cf2 36b9 7233 6170 0df1 d3a7 620e 0972     ...63rpa.....br. 8037c12:	1c37 dfac 36d9 edcb 30c0 5c34 de57 f9d3     7....6...04\W... 8037c22:	9776 5b2d e3ab f46a 6691 6286 e935 3573     v.-[..j..f.b5.s5 8037c32:	0d99 ed3b 5c88 0e17 9aab 7642 b40a bdb9     ..;..\....Bv.... 8037c42:	c84b 014e 435f 6269 1ae4 ae5e 6589 5675     K.N._Cib..^..euV 8037c52:	5be7 3273 bf08 a68b bcae bab3 b1d9 1252     .[s2..........R. 8037c62:	be2f daf2 d6ba d4a9 ae42 edba e358 00dd     /.......B...X... 8037c72:	1abb 9404 d4eb fdf1 a26d dfc1 47a6 6db7     ........m....G.m 8037c82:	0d66 3ea4 c866 99b5 d961 cb0b 3408 ccd1     f..>f...a....4.. 8037c92:	f695 203b 48d8 3fa3 1330 9d72 44d6 91ad     ..; .H.?0.r..D.. 8037ca2:	5ca5 8d23 3368 2109 35d7 5b83 a35c a1d5     .\#.h3.!.5.[\... 8037cb2:	f787 a9a4 ff06 4b7e 0763 1a9b 9d74 8ef9     ......~Kc...t... 8037cc2:	915e 336b d7b9 5cba 6e97 7343 301a cd8a     ^.k3...\.nCs.0.. 8037cd2:	58e7 35a7 aaf9 aeda ef82 723d 75d4 5645     .X.5......=r.uEV 8037ce2:	0b5d 64d5 1e4d de36 b40d 971f e8a7 316d     ]..dM.6.......m1 8037cf2:	b0f0 736d 9d43 6502 919f 8a91 bad8 da2e     ..msC..e........ 8037d02:	a0d1 ae99 0588 6d72 b226 399b 9114 ab74     ......rm&..9..t. 8037d12:	99ff c967 1546 07b3 eeaa 36a7 3d8a 8afb     ..g.F......6.=.. 8037d22:	ae23 021d 229d 9727 c5b9 3809 b1f6 057b     #...."'....8..{. 8037d32:	0e6c d5c8 f6ff 992f 0f43 c8eb 5f22 5897     l...../.C..."_.X 8037d42:	768a d9a8 5069 f977 995a 958b 0c63 a32d     .v..iPw.Z...c.-. 8037d52:	2eca b5ca e5f8 ab12 2cf7 435d 91dc 397c     .........,]C..|9 8037d62:	d720 d8ad 30a0 cc75 0d7b 2f2d e73f 9db9      ....0u.{.-/?... 8037d72:	860e c325 d387 375c cd81 4fe5 26bf 9dfa     ..%...\7...O.&.. 8037d82:	08d5 3c76 df28 7671 e553 800a 5b5c fdd8     ..v<(.qvS...\[.. 8037d92:	4eb5 8960 0446 ef3c ee48 a4ca b698 8bf6     .N`.F.<.H....... 8037da2:	bce5 8783 ad8a c85a 9015 722b cab5 6663     ......Z...+r..cf 8037db2:	f703 0245 a0e9 16dd 9b18 4802 f15c f798     ..E........H\... 8037dc2:	8b04 015c 22b9 90d7 03dd f2ba 39ea 980c     ..\..".......9.. 8037dd2:	d970 b2f1 f9a7 8cd8 6f22 d8b9 a1c0 0b15     p......."o...... 8037de2:	02b9 4572 daae ac3d bdba 3d87 3395 150d     ..rE..=....=.3.. 8037df2:	66c9 5206 77cd ac37 e45b 3550 c0ff dfa8     .f.R.w7.[.P5.... 8037e02:	b912 7202 ae45 fdb6 7373 49c3 8948 14ea     ...rE...ss.IH... 8037e12:	21f0 d35a 838e e2b2 5555 365e 16dd 22c1     .!Z.....UU^6..." 8037e22:	400c ddae ab92 0f6e 666b f8d1 5abc 3339     .@....n.kf...Z93 8037e32:	f752 d551 bddc 2f9a c930 09b5 5cf9 9b02     R.Q..../0....\.. 8037e42:	cc59 ddb0 c128 0c22 ae40 93dd e9ab 024e     Y...(.".@.....N. 8037e52:	8ebd 507d 037a 69fd 89f7 fae1 64f4 0453     ..}Pz..i.....dS. 8037e62:	308b b900 5376 a6ae 2203 1dc6 4068 0c8f     .0..vS..."..h@.. 8037e72:	163b 1ac6 7651 3ae6 1463 02b9 4572 d6ae     ;...Qv.:c...rE.. 8037e82:	a883 3507 b55b 1034 9aa9 81b6 0625 9ec7     ...5[.4.....%... 8037e92:	98fb 8a65 015c 22b9 b2d7 ce08 9174 d4c0     ..e.\.."....t... 8037ea2:	c0f3 aa8f b125 67a1 4691 cf25 617f a913     ....%..g.F%..a.. 8037eb2:	5723 ae40 d5c8 7c66 badf 7668 da25 87be     #W@...f|..hv%... 8037ec2:	3508 d819 66ed 3ae0 b48b b04c f3b6 9146     .5...f.:..L...F. 8037ed2:	202b e457 bf6a 6029 174d b8c0 ae62 ac40     + W.j.)`M...b.@. 8037ee2:	9e7e 2f9f d2e0 e5c6 166b 9969 c760 c72e     ~../....k.i.`... 8037ef2:	ae44 5c80 6b91 96d7 b6ba ee31 9d70 8760     D..\.k....1.p.`. 8037f02:	5e21 e463 c80a 7f75 d5ca 3aa6 c5df b125     !^c...u....:..%. 8037f12:	043e 859b 94e8 ae40 5c80 aff7 8b5c 5d92     >.....@..\..\..] 8037f22:	2474 6d52 5ba2 df21 35a6 7221 e405 5c8a     t$Rm.[!..5!r...\ 8037f32:	3343 6834 f7e0 69b9 d25e 73c2 bbed 5ce6     C34h...i^..s...\ 8037f42:	2b91 5720 6ae4 cd13 5aae 7ca5 b447 750b     .+ W.j...Z.|G..u 8037f52:	64dc c5b0 f393 2b91 5720 aae4 db2b 0ed5     .d.....+ W..+... 8037f62:	7503 0573 12f2 a99d 74c8 59d5 dbd0 1f2f     .us......t.Y../. 8037f72:	e476 c80a 0015 9000 002b 7200 0005 ae40     v.......+..r..@. 8037f82:	0000 5c80 0001 2b90 0000 0572 0000 0ae4     ...\...+..r..... 8037f92:	8000 015c 9000 002b 2000 0057 e400 000a     ..\...+.. W..... 8037fa2:	5c80 0001 b900 0002 5720 0000 0ae4 0000     .\...... W...... 8037fb2:	15c8 0000 02b9 2000 0057 4000 00ae c800     ....... W..@.... 8037fc2:	0015 b900 0002 7200 0005 ae40 0000 15c8     .......r..@..... 8037fd2:	0000 2b90 0000 0572 4000 00ae fb00 ae5c     ...+..r..@....\. 8037fe2:	f63f 6685 ca79 1883 db0e 3781 001f 6b90     ?..fy......7...k 8037ff2:	b940 75b6 9aff 3f92 cb76 ad45 89c3 d002     @..u...?v.E..... 8038002:	b96d 761e eb90 0433 0917 283e 82f8 41e0     m..v..3...>(...A 8038012:	49c1 23c1 7f82 dc13 7822 e087 0d79 f5cb     .I.#...."x..y... 8038022:	824d 3af3 d72c 0b97 412e 00ae 2bdb 8bd7     M..:,....A...+.. 8038032:	9905 5c85 2e9f 4cb8 9ff0 a582 2706 d704     ...\...L.....'.. 8038042:	be0b 01bb 1eb9 7c10 7045 60a7 83b7 dd72     .......|Ep.`..r. 8038052:	dc15 f821 e09a c859 6015 e4fb 103a 213c     ..!...Y..`..:.<! 8038062:	d478 ae50 2c3f 27f8 a94d 7916 7058 6079     x.P.?,.'M..yXpy` 8038072:	beb9 7727 077f 283b 37d7 9608 f78a 5722     ..'w..;(.7...."W 8038082:	ed80 eb92 054b 04c7 854b 5cae 417f 8df0     ....K...K..\.A.. 8038092:	3082 25bf bcf8 dde0 5f82 5c14 7820 e0b5     .0.%....._.\ x.. 80380a2:	e0b0 2a13 5045 ec94 089f 169e ae40 122f     ...*EP......@./. 80380b2:	cf1c cfdd 5557 db24 b915 101e 47fc ae4e     ....WU$......GN. 80380c2:	098f 40ce 00ae 21db d3d7 5f05 89ca 5755     ...@...!..._..UW 80380d2:	03ae 13c1 4905 2ade a738 5446 11cf 255c     .....I.*8.FT..\% 80380e2:	b478 db70 01a3 7ae4 8953 8fc8 4874 57ae     x.p....zS...tH.W 80380f2:	c4e5 e2ba e466 b00a 72f9 76fd dfc1 c415     ....f....r.v.... 8038102:	2dfa b90d 88ca bff0 390b 43d4 b206 a17a     .-.......9.C..z. 8038112:	cbe0 e225 d4bb 5ca3 57cf b4c5 7de2 571c     ..%....\.W...}.W 8038122:	bf8f b96d 40be bc70 ae44 0b92 2b91 e6c0     ..m..@p.D....+.. 8038132:	75ca 7057 4163 92ac 35fb 7ae4 4e6b 3256     .uWpcA...5.zkNV2 8038142:	fd7a 0359 9d51 f82e 35d7 d839 0baf ef9e     z.Y.Q....59..... 8038152:	ae41 c532 5770 ae45 93f7 901d c7eb 88d7     A.2.pWE......... 8038162:	3255 3c17 b90d 6c02 5ca6 b77f ac44 a0b2     U2.<...l.\..D... 8038172:	73f5 7235 141d f544 061b 9292 8129 162f     .s5r..D.....)./. 8038182:	ff6e 42a1 f6de 1e03 fae4 dc96 bef1 7829     n..B..........)x 8038192:	b148 648a aa4f 705c 725b 4f3d 5270 5489     H..dO.\p[r=OpR.T 80381a2:	fbfe e290 399b 1ec1 ae42 9b00 5727 72d9     .....9..B...'W.r 80381b2:	b275 d620 ea93 75e7 088b 32fe ae27 5fbf     u. ....u...2'.._ 80381c2:	885b 6f2a ba89 20b3 ebd6 efd4 277e 33f7     [.*o... ....~'.3 80381d2:	8b99 cd3d ae41 12cf 2d7c bc77 723b 3bbf     ..=.A...|-w.;r.; 80381e2:	fb96 5df9 8f06 a7dd 655c d5eb 399d 1e89     ...]....\e...9.. 80381f2:	fdcb 8eee cfdc 13ef 8a9c 015c 4736 17ae     ..........\.6G.. 8038202:	08a8 18b5 1eb5 58d6 f5a1 155c ae09 f504     .......X..\..... 8038212:	9acb 7a72 e0a6 0573 7eb1 d724 1a77 ba15     ..rz..s..~$.w... 8038222:	2e08 9073 7beb f70b 4eb3 92ae 05a4 1eb9     ..s..{...N...... 8038232:	a42c d600 55c9 0d72 0572 0cd8 9eb9 72a5     ,....Ur.r......r 8038242:	45aa beb1 7347 ebf9 152f a3f2 d4cf d310     .E..Gs../....... 8038252:	8229 174f 76a4 fa8b fe79 feef f72c 4ffb     ).O..v..y...,..O 8038262:	ca58 0cf5 63c1 7206 57bd ba45 c94d 3bf5     X....c.r.WE.M..; 8038272:	5f05 9035 e3eb b382 2b90 3340 bd72 7f30     ._5......+@3r.0. 8038282:	6ef9 73c0 f704 8894 a8f5 6cc1 7c81 fe43     .n.s.......l.|C. 8038292:	68df 4948 a646 1637 f684 35d9 7e52 ee5b     .hHIF.7....5R~[. 80382a2:	fe6f 52d9 7fae 525e aabc ab92 f7e4 941b     o..R..^R........ 80382b2:	91eb e292 9555 255c e453 100a ae56 26df     ....U.\%S...V..& 80382c2:	46b8 4ab5 171d 639c d620 0453 2f9f eb11     .F.J...c .S../.. 80382d2:	d467 74ef fae5 92e1 697c 4715 220b dbfb     g..t....|i.G.".. 80382e2:	268a 0bfe 510b a9b1 7f5c 4d6a 4067 5c9d     .&...Q..\.jMg@.\ 80382f2:	531f 6f11 b968 48be a8f0 5c85 0325 0ae4     .S.oh..H...\%... 8038302:	4e10 b7ae c417 45f8 5c25 b91d 2d1e ab11     .N.....E%\...-.. 8038312:	6fec 603d 1538 7f2b 7ee9 8d75 ae90 482e     .o=`8.+..~u....H 8038322:	1fec b754 bac0 7fbf e169 4def 2ae4 530b     ..T.....i..M.*.S 8038332:	4b73 4ab9 d53e 5c80 b93f 9c46 723a 5bbd     sK.J>..\?.F.:r.[ 8038342:	0a70 0572 2308 a4d7 9044 ac7f d621 9577     p.r..#..D...!.w. 8038352:	eedc 6a4b 9665 c8e9 7cc1 7ae4 8543 de8c     ..Kje....|.zC... 8038362:	905d 3dd7 bfaa 4ab5 7160 e661 8980 0f5c     ]..=...J`qa...\. 8038372:	f455 eab4 75c8 eea9 943f 2f5c b5c8 d95e     U....u..?.\/..^. 8038382:	55c8 1872 02b9 9184 6cab fffa 495c d4fb     .Ur......l..\I.. 8038392:	2a6b 7924 e091 92c9 0245 5967 73ce e7cd     k*$y....E.gY.s.. 80383a2:	6f5c 235b b7a2 a417 eff5 456a 9d56 df20     \o[#......jEV. . 80383b2:	996a 3d73 7055 079f ceb9 8a4b 3e6c 2ae4     j.s=Up....K.l>.* 80383c2:	0317 55dc 4d21 b95d 2fde 9088 402b 8298     ...U!M]../..+@.. 80383d2:	19d6 8782 b20b 4fbc 3df0 c31a 9658 572a     .......O.=..X.*W 80383e2:	ae7b b0c3 7cec c0b7 3531 35bf a12f 8583     {....|..15.5/... 80383f2:	a725 0472 59e1 c59a 8fa8 6ee5 9377 5c81     %.r..Y.....nw..\ 8038402:	a9af bc99 2ba5 65d7 12e5 7b5e 26b9 c215     .....+.e..^{.&.. 8038412:	9134 e4ab e45a 100a 5bae 6de0 9725 b7f9     4...Z....[.m%... 8038422:	c8a9 f576 cf37 7c13 f0a5 4f37 48aa 65d6     ..v.7..|..7O.H.e 8038432:	8227 3eaa d7d7 9e0a fdcc 01ee 4795 6dd5     '..>.........G.m 8038442:	fffc 45ba eb9f 0bf7 f71e d728 52ff b091     ...E......(..R.. 8038452:	b92f 5b3e af70 b947 109e 04bc 02b9 9184     /.>[p.G......... 8038462:	94ab 5fe8 0897 a476 7f7e 64a0 cb18 1653     ..._..v.~..d..S. 8038472:	3809 f36c b652 eb42 8555 5909 6252 1ae7     .8l.R.B.U..YRb.. 8038482:	fe34 5717 3d68 5357 53ae 998d 26b1 9572     4..Wh=WS.S...&r. 8038492:	a1fc b947 5d5e 4b23 b953 6e4a ae45 e100     ..G.^]#KS.JnE... 80384a2:	1116 5f3c 50f0 9e41 0b8f 447e 5370 5889     ..<_.PA...~DpS.X 80384b2:	f3af 87b8 a0d6 3664 f1c0 d4c2 9fa9 1036     ......d6......6. 80384c2:	4beb ab0a 74b3 0b67 4abc 2073 a9b7 1f5c     .K...tg..Js ..\. 80384d2:	1157 abb1 cf5c f350 7d59 55cb 6af2 0ae4     W...\.P.Y}.U.j.. 80384e2:	6e10 d685 4b1b fa24 4988 ab2f 06c3 7f85     .n...K$..I/..... 80384f2:	46b5 324c fd7a 0379 cab1 b4bd a5fe dfd0     .FL2z.y......... 8038502:	02fa b90d c2ca ddd3 729a e995 9b89 2715     .........r.....' 8038512:	6f34 69f3 720f 94fd 28a6 a84f ae19 0792     4o.i.r...(O..... 8038522:	6f34 8f73 e9e0 15c8 dc20 d7f2 28b2 cf35     4os..... ....(5. 8038532:	aabc d597 ae41 2e2f 73cc ed5d f040 0306     ....A./..s].@... 8038542:	feb1 daa0 70b4 9a59 ad6b eb96 cb61 656d     .....pY.k...a.me 8038552:	f84c 0719 c6b9 929a e174 c89d 2015 5c9c     L.......t.... .\ 8038562:	134f 797c 588d 4165 85eb b701 2ed6 89db     O.|y.XeA........ 8038572:	e640 cf40 28d6 fd5e c39e 044e c872 fdcb     @.@..(^...N.r... 8038582:	9206 57bc e4f5 50de 78f2 b8ab 6d5b 68bc     ...W...P.x..[m.h 8038592:	d72a d453 563c 495d 213e 41b8 af71 edc1     *.S.<V]I>!.Aq... 80385a2:	141e 177c 0572 3708 65b8 3250 f03e d511     ..|.r..7.eP2>... 80385b2:	b58a 5013 abae b43d 978e b044 0bb7 54ae     ...P..=...D....T 80385c2:	3fbf ed5f 25a5 cda3 af8f 7bc9 6f5e 87b0     .?_..%.....{^o.. 80385d2:	b5d6 1186 69a8 35ce 61cf b90b 321e 408c     .....i.5.a...2.@ 80385e2:	726d 2bae 43ae 00ae a761 bd62 b6cf cae5     mr.+.C..a.b..... 80385f2:	ae51 be92 eec3 8faf ee18 fafe 0603 d379     Q.............y. 8038602:	dcfc 33d6 0f15 de1b 01f6 2915 caeb 54f5     ...3.......)...T 8038612:	ecd5 226f 87c8 6705 ee2a bc32 1cad 7dae     ..o"...g*.2....} 8038622:	720e 0805 5727 6339 1fe0 5c95 f0af 9e31     .r..'W9c...\..1. 8038632:	40d0 3bae f2ea f2f9 90c2 2aea a84e f568     .@.;.......*N.h. 8038642:	ed74 fd35 dd4f a65e c629 7206 a3fd 7206     t.5.O.^.)..r...r 8038652:	45ad 8b3e 015c cec2 7d73 bad9 81f1 c80d     .E>.\...s}...... 8038662:	3f35 fb14 9522 94df 5a83 541e fa82 5a86     5?.."....Z.T...Z 8038672:	fb06 8217 a877 012e 21b3 76d5 bfbb c3fa     ....w....!.v.... 8038682:	b0df 60ec a270 9800 3ff3 637f aecb 24e6     ...`p....?.c...$ 8038692:	24ed 0000 0000 4549 444e 42ae 8260          .$....IEND.B`.080386a0 <data__main_js>: 80386a0:	6d2f 6961 2e6e 736a 0000 0000 5448 5054     /main.js....HTTP 80386b0:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 80386c0:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  80386d0:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 80386e0:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 80386f0:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 8038700:	6e65 2d74 654c 676e 6874 203a 3639 3438     ent-Length: 9684 8038710:	0a0d 6f43 6e6e 6365 6974 6e6f 203a 6c43     ..Connection: Cl 8038720:	736f 0d65 430a 6e6f 6574 746e 742d 7079     ose..Content-typ 8038730:	3a65 6120 7070 696c 6163 6974 6e6f 782f     e: application/x 8038740:	6a2d 7661 7361 7263 7069 0d74 430a 6e6f     -javascript..Con 8038750:	6574 746e 452d 636e 646f 6e69 3a67 6720     tent-Encoding: g 8038760:	697a 0d70 430a 6361 6568 432d 6e6f 7274     zip..Cache-Contr 8038770:	6c6f 203a 7270 7669 7461 2c65 6d20 7861     ol: private, max 8038780:	612d 6567 383d 3436 3030 0a0d 0a0d 8b1f     -age=86400...... 8038790:	0008 0000 0000 0a04 5de5 730b d71b fe75     .........].s..u. 80387a0:	cb2b 4bad c101 0402 f040 7005 a189 d928     +..K....@..p..(. 80387b0:	4756 4aaf 93b4 6294 fb38 b002 b022 ed0b     VG.J...b8..."... 80387c0:	482e 2251 ec67 6da4 933a dd4c 3b49 a76d     .HQ"g..m:.L.I;m. 80387d0:	b4d3 7f4d e281 8944 bb62 4cee 017f 8ff9     ..M...D.b..L.... 80387e0:	9dfa ef73 07dd 5200 ec74 edb8 4674 7724     ..s....Rt...tF$w 80387f0:	3def 75f7 39ee 9ee7 5dd7 26f5 9381 61f8     .=.u.9...].&...a 8038800:	bda0 b253 2fca 2f23 4499 e681 ce86 e464     ..S../#/.D....d. 8038810:	4905 efad b725 1e87 de3d b93c 02e3 ace2     .I..%...=.<..... 8038820:	e0a7 967b ddeb 6209 656a e2d5 64e4 d5e8     ..{....bje...d.. 8038830:	b1c2 f8e5 89c9 3759 2852 54bb 797e 4564     ......Y7R(.T~ydE 8038840:	639a ad8e f628 1dde 5686 9a52 2f82 fc77     .c..(....VR../w. 8038850:	a95e 54e4 5acc b97d d5bc 3058 ea17 7db3     ^..T.Z}...X0...} 8038860:	1d3a c6ea 8f35 c0fd 8f0d 916b 6cf7 c5e2     :...5.....k..l.. 8038870:	bbc9 3591 4af2 7cba cbd3 b71d 9764 cecf     ...5.J.|....d... 8038880:	b94a ba79 6256 cbbd c573 7a54 5461 7ea2     J.y.Vb..s.TzaT.~ 8038890:	732c 72cf d70c fc31 a0e0 d687 3846 c449     ,s.r..1.....F8I. 80388a0:	f8c3 3238 2b6c 7039 31ac 032a 3a2f bc48     ..82l+9p.1*./:H. 80388b0:	98d1 128a e47f bd0d 625e 0fc4 63c3 322f     ........^b...c/2 80388c0:	9be2 f328 93a2 c37d eb36 7b1d aad3 bd0d     ..(...}.6..{.... 80388d0:	9fa0 3a0c a576 4e52 b3b1 ef67 26e7 fef3     ...:v.RN..g..&.. 80388e0:	bdee 4ebb 59e4 4789 a378 d899 8a66 516c     ...N.Y.Gx...f.lQ 80388f0:	4b71 1ee2 eb4b e213 654b 99c3 9186 527b     qK..K...Ke....{R 8038900:	5dd2 08ff a68b 3955 9e35 0d2d 5a60 a71d     .]....U95.-.`Z.. 8038910:	f3d6 38a3 19d9 43f8 53b7 6bb6 78d6 05ec     ...8...C.S.k.x.. 8038920:	bf2e 3202 2bab e477 db8e 1bd3 b25b 7b0c     ...2.+w.....[..{ 8038930:	1776 86ea 3bda 8fd7 43c7 c4eb 4fb4 754f     v....;...C...OOu 8038940:	187b 873a b67a 8ee9 74dc adfb 6e9b a6d3     {.:.z....t...n.. 8038950:	5caf e9ba 75f6 dd37 da99 c0f4 624b 3b0f     .\...u7.....Kb.; 8038960:	f416 03e3 6067 7d05 8b0f 9cf7 4c43 b40c     ....g`.}....CL.. 8038970:	27a6 c4d1 4dd3 0e73 e2d4 42e2 d4be ee7b     .'...Ms....B..{. 8038980:	9339 73c4 2fcb 95e7 5082 8279 9996 d7db     9..s./...Py..... 8038990:	9b1b 14d8 77cd 1d4d 1f48 549e 3cd5 adf4     .....wM.H..T.<.. 80389a0:	f1cd f9d6 cecf e3ff cdfc 17f9 afe7 eff8     ................ 80389b0:	436b ff3b f9f5 17e7 689f ffe7 f179 5711     kC;......h..y..W 80389c0:	46bc fd05 41bc c5e1 e7c7 2faf 887e 4fd7     .F...A...../~..O 80389d0:	7e2f f172 1a17 5f4a 7c5d f17c 4043 897e     /~r...J_]||.C@~. 80389e0:	cfc2 e0a8 1e35 797f 17f1 fdf8 6e6b a5fe     ....5..y....kn.. 80389f0:	9686 fd00 2a4f db41 d14f 47c3 8754 3f66     ....O*A.O..GT.f? 8038a00:	69ad ffe7 9dc8 f8fc b5fc 0006 a28c f5a1     .i.............. 8038a10:	008f a3f9 1f8b 70d2 a4bf 2fbe 8afe 7066     .......p.../..fp 8038a20:	13f1 fced 8d53 bf86 3800 02c1 51ba 30d7     ....S....8...Q.0 8038a30:	37f9 45a8 da83 d2e6 6b78 d2d3 9106 33d7     .7.E....xk.....3 8038a40:	2775 400c a357 d39a 75f7 19cd 715a ea6c     u'.@W....u..Zql. 8038a50:	1276 f868 baa9 03b4 be91 fe75 f3af b5a6     v.h.......u..... 8038a60:	64b9 6d6d 012e 5b6b c037 4ac0 d8f4 7ba1     .dmm..k[7..J...{ 8038a70:	9a02 bd8e b928 81e9 c1c2 4631 d2b1 ea21     ....(.....1F..!. 8038a80:	1fbe 5eba 57bc 2fdf 821b 4ae5 94ef 11a6     ...^.W./...J.... 8038a90:	065f a471 0902 8d3d b43e 3e86 02c4 9ea4     _.q...=.>..>.... 8038aa0:	5424 bad0 7101 7860 cf46 1be8 c303 9e37     $T...q`xF.....7. 8038ab0:	871a d0c6 7518 132c 81fd dd61 2703 8d1c     .....u,...a..'.. 8038ac0:	0126 9bc4 065e a3c3 38f4 13f2 50af 50ec     &...^....8...P.P 8038ad0:	c8f1 2c0a f62c 43ce b9c0 8285 4a26 42bc     ...,,..C....&J.B 8038ae0:	32c9 7a4a 9285 4a16 85fa 1592 0c94 c4a8     .2Jz...J........ 8038af0:	5b1f 1bae cde1 b7a7 31fe 9e9e c80a 10f8     .[.......1...... 8038b00:	87cf 1cf4 07c5 d840 7011 365d b286 1c60     ......@..p]6..`. 8038b10:	0946 475e f5f2 c3d0 980a 036c 5fa2 ffc9     F.^G......l.._.. 8038b20:	eb68 9c0e 5eb1 39ae 27c4 7b9e 5a7a 6892     h....^.9.'.{zZ.h 8038b30:	eef2 a43c bd81 2e38 0c0d bb5d b0f3 ea0a     ..<...8...]..... 8038b40:	35fd e508 c5f5 1ac7 40e8 e451 e8ef 0409     .5.......@Q..... 8038b50:	4af7 a32f 3a31 946f d98d fc2e 2ed9 0afe     .J/.1:o......... 8038b60:	f01c e7d7 7dbf c34b 86a7 fe7e 3b4a 67ff     .....}K...~.J;.g 8038b70:	81e2 cff3 51e8 b8d0 91e0 d937 65a0 2043     .....Q....7..eC  8038b80:	0bc2 7b2c b9e8 92d9 1716 2ce7 70e9 3e66     ..,{.......,.pf> 8038b90:	b68f dd6f e0f9 60b1 8fbe 0324 5bcd fdd3     ..o....`..$..[.. 8038ba0:	c8c9 a2f6 10d2 101d 5f5d 047c ba16 db6e     ........]_|...n. 8038bb0:	e1ed 5218 6709 e46c a53b f511 4ff0 19c4     ...R.gl.;....O.. 8038bc0:	161a ec47 86fd 12b8 7cc8 59a5 038e bfc4     ..G......|.Y.... 8038bd0:	dfad 8879 a876 5fd7 fb30 10b3 1ed0 bfdf     ..y.v.._0....... 8038be0:	50f7 646b 4a78 a737 1930 d0cb 811f b5dc     .PkdxJ7.0....... 8038bf0:	8c9d 67dc b376 c0d0 f436 12ef 5c27 22d9     ...gv...6...'\." 8038c00:	2123 ee77 c0b4 331a 64a3 bc6d 6db9 3cc0     #!w....3.dm..m.< 8038c10:	b457 cde9 036d baf6 4da2 6e7f 301b da60     W...m....M.n.0`. 8038c20:	c826 c904 692c 89f3 9429 549d 8950 3d33     &...,i..)..TP.3= 8038c30:	af3d 3e87 4f78 5cb2 c4fe cfd6 0e7f 4b19     =..>xO.\.......K 8038c40:	c067 502b 1bdc c430 214f 2171 c1cc 9015     g.+P..0.O!q!.... 8038c50:	38de f42d 5d8a 17d1 6374 07e9 e6a5 5eca     .8-..]..tc.....^ 8038c60:	babd 7fb2 c4da d69f 7e3e ec6d ee9f 1bd5     ........>~m..... 8038c70:	5dfb e47e dd5f 93f2 ffda dc0c 4b3b 04b5     .]~._.......;K.. 8038c80:	198a bc74 6b23 f138 ddca 7a85 649b de32     ..t.#k8....z.d2. 8038c90:	cca4 daad 73e1 6530 2541 1b29 1690 b8b3     .....s0eA%)..... 8038ca0:	2c95 2df6 b621 ddda e27b f6d6 a52b db6e     .,.-!...{...+.n. 8038cb0:	76ab b89f 7295 1bf7 4d5d 6d81 b9ae 1c26     .v...r..]M.m..&. 8038cc0:	4b21 a03f b52d 2faa abb6 b67f 795f 6967     !K?.-../...._ygi 8038cd0:	fd3e c9d0 39fa 758e 13a6 a43a 3cbf 0dff     >....9.u..:..<.. 8038ce0:	9f98 754f 0e52 0d48 0df8 978b d29f 0ea1     ..OuR.H......... 8038cf0:	9060 67d8 6244 539f 9f29 24e9 df57 6a90     `..gDb.S)..$W..j 8038d00:	3a40 67c1 75a4 9b40 2ed0 12fe c3da 439f     @:.g.u@........C 8038d10:	fdbc 3744 6fdc 7360 89e3 f23d 7793 0e71     ..D7.o`s..=..wq. 8038d20:	38c7 a57e 50da cfd2 867f 30e1 d0ae 8458     .8~..P.....0..X. 8038d30:	7202 63f1 aa9a fa46 4d0d 3f11 5c98 535e     .r.c..F..M.?.\^S 8038d40:	b562 a8a6 fd18 168e d5d1 90cb 20f6 20bb     b............ .  8038d50:	5719 00fd 5ae7 4afa a3e7 074f 385d 0d26     .W...Z.J..O.]8&. 8038d60:	de20 de5b a417 e74a 0a63 a92e 98d7 1756      .[...J.c.....V. 8038d70:	d4ba 1529 9042 c4d6 a04a e7a0 c395 baa2     ..).B...J....... 8038d80:	6e59 a3cf 617d 292e 5a15 cfea fa39 33e7     Yn..}a.).Z..9..3 8038d90:	e1f8 6f77 3f01 ee68 9384 a920 471e cd16     ..wo.?h... ..G.. 8038da0:	6e7a 3a53 18f1 a60a 7051 5029 910a 8f37     znS:....Qp)P..7. 8038db0:	a878 561d c591 c280 a23c 450e 1421 e3b9     x..V....<..E!... 8038dc0:	7230 003f d0de 3333 d0b5 c27f 3ba1 a63e     0r?...33.....;>. 8038dd0:	55e3 b194 13f2 c778 32f9 7fd6 5944 8de4     .U....x..2..DY.. 8038de0:	f661 d0a4 2cde d759 d34d a5b4 750d 4a7a     a....,Y.M....uzJ 8038df0:	4e6f cde1 6f95 6b5d 9d08 0410 24c3 ba4f     oN...o]k.....$O. 8038e00:	d433 2160 4929 f823 5e9c 7d49 d05d 6dcb     3.`!)I#..^I}]..m 8038e10:	c167 dd34 696e 05ba 1714 af12 e144 5fe7     g.4.ni......D.._ 8038e20:	2290 0af1 c1dc 43fc d4af 741d 540c 0d53     .".....C...t.TS. 8038e30:	df89 bf8b f8be ba21 3423 5717 ea6d 153a     ......!.#4.Wm.:. 8038e40:	9716 285d ae2c 551b b6e5 d30e b4c3 65d2     ..](,..U.......e 8038e50:	f240 d343 4cc6 f948 a486 8a17 b10d 6fe7     @.C..LH........o 8038e60:	0e79 9dc4 89af 535d 015b 4b6c c17c fe73     y.....]S[.lK|.s. 8038e70:	b115 ad30 da78 c00e be0a 4420 d508 b73f     ..0.x..... D..?. 8038e80:	8bc8 129f 3c66 c9c1 1836 3e43 d93a 5ba3     ....f<..6.C>:..[ 8038e90:	c2ee 7750 77bf 2eef 51ac 0945 58d8 ee52     ..Pw.w...QE..XR. 8038ea0:	13bb 4250 b300 d4db 562b 5f45 8424 b2b0     ..PB....+VE_$... 8038eb0:	074f 22d4 4261 41bc 78ff e0f8 6ef1 1666     O.."aB.A.x...nf. 8038ec0:	9882 3ec5 0324 863f 1f01 c18f de7d f7ae     ...>$.?.....}... 8038ed0:	293c d21b 87aa c91d 396a 696a d07c b969     <)......j9ji|.i. 8038ee0:	db9d b93c 844b f489 145c 9f8b 3939 a9bf     ..<.K...\...99.. 8038ef0:	cacd 24ce ff32 cb61 9eed d98c 2776 84fa     ...$2.a.....v'.. 8038f00:	0c2d 808f fb03 4ef0 7ae0 59cf 4036 0882     -......N.z.Y6@.. 8038f10:	7309 0430 b3b1 741d c81f 98aa 36ba 5df0     .s0....t.....6.] 8038f20:	0bd7 c104 a828 c26b e060 24ed 7c89 c61b     ....(.k.`..$.|.. 8038f30:	5928 b1fd 6d50 ec8d 8991 1533 a95f 13b4     (Y..Pm....3._... 8038f40:	efc2 79aa 8848 8c6b 43c0 b0c0 e24b f213     ...yH.k..C..K... 8038f50:	8d19 2bbc 9897 bc07 9562 c3b0 faa6 5321     ...+....b.....!S 8038f60:	a872 63c5 382b 1c68 bd84 2683 8c63 f2e0     r..c+8h....&c... 8038f70:	98dd 852c 38ab 923e 1c28 c832 94ec 77e6     ..,..8>.(.2....w 8038f80:	7045 e96f 8e4a 7916 f0a3 9bc8 7987 85c6     Epo.J..y.....y.. 8038f90:	e8ec 280a 2f90 0789 dbb5 8445 9fcd 0a5d     ...(./....E...]. 8038fa0:	96fc e629 aee1 0198 a78b 4399 9a70 e62c     ..)........Cp.,. 8038fb0:	3360 25a5 e330 58a5 0b78 cc49 e15f 9465     `3.%0..Xx.I._.e. 8038fc0:	6731 b312 31d4 48c5 64d3 5531 4b3d 7312     1g...1.H.d1U=K.s 8038fd0:	f200 9e88 96aa 5fdd 3983 cf08 1e92 01ae     ......._.9...... 8038fe0:	3f9d e9eb a774 3b73 08f3 74ae c5d0 009d     .?..t.s;...t.... 8038ff0:	45ce ad1c e525 80ba 94fc 4396 0703 e2e5     .E..%......C.... 8039000:	05a2 b409 8750 2ea0 4cca 4f38 12db 8700     ....P....L8O.... 8039010:	42df a21d 5a60 0aba cd87 6412 bda4 7a85     .B..`Z.....d...z 8039020:	5abb d9a5 350b 4603 ac29 a05a 7324 da27     .Z...5.F).Z.$s'. 8039030:	7d86 3466 e5bc a4dc 57c9 38f0 3721 6b26     .}f4.....W.8!7&k 8039040:	4528 01d7 41cb ade5 8880 96bc 22e8 c67f     (E...A.......".. 8039050:	6175 1647 3c79 03ae f82d 9d2f 15cb 4c94     uaG.y<..-./....L 8039060:	e018 bc39 4605 7d8e 5405 4d0e e591 93fa     ..9..F.}.T.M.... 8039070:	8738 f828 6667 12dc ae8c e39c 2ae6 a37e     8.(.gf.......*~. 8039080:	0259 b854 ae74 c803 da0a 9315 1d95 53b2     Y.T.t..........S 8039090:	aae8 04fe f322 bcb3 bee6 b366 0afd 780d     ....".....f....x 80390a0:	d7d6 1787 bfb3 7c06 6b6e 49ac c832 0c6d     .......|nk.I2.m. 80390b0:	92bd 101c 2fce 25b5 5ed9 1dbd 1985 ecac     ...../.%.^...... 80390c0:	bc04 6297 ab2d c6bc e52c 649e d26d e10e     ...b-...,..dm... 80390d0:	2b51 5490 9da6 41f8 fc2f 3530 c1b1 ac95     Q+.T...A/.05.... 80390e0:	93c6 535b 30b8 5f21 f5a6 2577 b038 9cec     ..[S.0!_..w%8... 80390f0:	4f06 4e6e 1d44 a154 c074 8e67 3942 9788     .OnND.T.t.g.B9.. 8039100:	6637 709b c2cd 237e 924b 4d2c 43b2 fe2f     7f.p..~#K.,M.C/. 8039110:	bd92 6e26 0bc1 6c58 c703 bc11 7079 9222     ..&n..Xl....yp". 8039120:	cb2e bcce f1cf 4617 e92b e7ac dfaf 1eda     .......F+....... 8039130:	260a cd7b 10be 2e7a 217a 10fd ea5e 4b5c     .&{...z.z!..^.\K 8039140:	c337 65d0 4713 e394 3eed 299b fc33 4689     7..e.G...>.)3..F 8039150:	f886 7fe8 2583 df0e 82d4 7bf5 5939 f584     .....%.....{9Y.. 8039160:	077a 0384 f972 cc46 37f0 cb50 cd85 ec21     z...r.F..7P...!. 8039170:	4f8e 1984 4d3e 5d9b 3108 4672 3952 7189     .O..>M.].1rFR9.q 8039180:	07f6 7e94 4b3f 0119 3fca fc79 3ee0 ab45     ...~?K...?y..>E. 8039190:	470c a4ec 49db 84a3 6030 4fde f192 1123     .G...I..0`.O..#. 80391a0:	ec2c 38c2 8ad1 6d45 922a e3c7 7436 23da     ,..8..Em*...6t.# 80391b0:	7bef ec0f 50a7 4be9 3dfa 89df 38c2 25ec     .{...P.K.=...8.% 80391c0:	6a35 bbb2 10fb a5c7 a70b 1781 f494 6ef7     5j.............n 80391d0:	aec3 0cb1 3830 0515 1f14 8938 38e9 3614     ....08....8..8.6 80391e0:	99b3 b23b 1f05 9d7a 0c16 0851 0058 d4b2     ..;...z...Q.X... 80391f0:	a9c1 a16c 1a80 624d 59a3 3987 7561 9e4b     ..l...Mb.Y.9auK. 8039200:	8b49 71a9 b4a8 e044 1b79 2ec9 6579 b458     I..q..D.y...yeX. 8039210:	1350 67ca 3618 4046 6f2f 03c8 3b13 ddef     P..g.6F@/o...;.. 8039220:	9549 3008 d0be 1016 80bd e1cc 0cb0 c0c6     I..0............ 8039230:	8eb8 95f9 1b37 a4b6 0c88 ac7d 49ac a284     ....7.....}..I.. 8039240:	1184 29f6 f678 a8d7 9e97 7ca3 4a88 6279     ...)x......|.Jyb 8039250:	06ca 60e6 e187 9cd7 4404 3904 5eb1 edb3     ...`.....D.9.^.. 8039260:	2bf7 a3f8 847e e127 9a00 8513 12f8 87b4     .+..~.'......... 8039270:	2781 5263 bee1 eade b4c9 4c86 7f22 f480     .'cR.......L"... 8039280:	9137 49b9 b261 2837 ecfa 47e2 a373 3c20     7..Ia.7(...Gs. < 8039290:	d3be d92d 642a a45d afbc 8c4f 2cf6 da31     ..-.*d]...O..,1. 80392a0:	2a92 3288 47db efa1 f56a 004c 0f6e 68ad     .*.2.G..j.L.n..h 80392b0:	c224 42ba 95e0 c5ac e6c6 5da6 dade 53b2     $..B.......]...S 80392c0:	9649 8381 ee68 5080 e010 40a7 6530 e407     I...h..P...@0e.. 80392d0:	4254 e75d b3a0 47e8 618f 0699 787d 1235     TB]....G.a..}x5. 80392e0:	c718 4f61 bbb3 7a88 6db7 cd08 c77a 54dd     ..aO...z.m..z..T 80392f0:	9c5e 8b8e 38b8 5acb d2ef 3678 c7b9 dcbd     ^....8.Z..x6.... 8039300:	3c38 3d83 cf67 dfdd f9af 604e d278 45ff     8<.=g.....N`x..E 8039310:	30a1 790c e117 5378 d46f cfc7 5475 7e25     .0.y..xSo...uT%~ 8039320:	f432 7ccc 2e13 71c1 b98a dde7 5ecd 203e     2..|...q.....^>  8039330:	6608 46b3 23f1 690f f100 9200 4950 9d14     .f.F.#.i....PI.. 8039340:	e21e 6030 879f b95e 2567 5a83 2164 60f9     ..0`..^.g%.Zd!.` 8039350:	8704 ca5f 69e0 bf14 d562 422c 8230 7bf5     .._..i..b.,B0..{ 8039360:	58fb 7e39 a679 b940 ac6d 9850 bd4f 20b4     .X9~y.@.m.P.O..  8039370:	d5b2 1af3 fb45 cbd4 0532 d4fa 8e0b 3f7a     ....E...2.....z? 8039380:	597d 50a5 aa9f 9669 103b dba0 103b 999d     }Y.P..i.;...;... 8039390:	5e8e aec8 ded8 5729 fc10 19f9 c55b aeb7     .^....)W....[... 80393a0:	bc00 0795 a994 9710 2b77 b801 bfef 01c5     ........w+...... 80393b0:	7a4f ca8a b89b 95bc 2882 4334 c596 2de5     Oz.......(4C...- 80393c0:	4950 7fc0 03cc 478c f008 6016 aebd f37e     PI.....G...`..~. 80393d0:	9c84 7a4c bf5b 8619 a271 9185 7376 19c2     ..Lz[...q...vs.. 80393e0:	5d08 36a7 609e 751b 39ef 2f5c 3f23 7760     .].6.`.u.9\/#?`w 80393f0:	3912 6502 0079 add7 cf05 d18c 414f ce1d     .9.ey.......OA.. 8039400:	285e 83b7 70c9 0c68 e2d2 3078 b361 8d0c     ^(...ph...x0a... 8039410:	c6b9 baef 0fb2 05ca de41 ddc7 2610 5b4b     ........A....&K[ 8039420:	a615 3f1d c3cd 22ed a214 483a 4a19 f31f     ...?..."..:H.J.. 8039430:	7159 13e0 e97b b638 ac8c 2eca b954 5f6c     Yq..{.8.....T.l_ 8039440:	74cb 0294 0a12 2dfb 3201 65a4 2b89 3797     .t.....-.2.e.+.7 8039450:	60ca dda8 bd7f 61da 5374 c257 0668 5d6b     .`.....atSW.h.k] 8039460:	b8de c600 cb3b 0159 85dc 93eb 3c6f 4d23     ....;.Y.....o<#M 8039470:	0670 ba8a f9fa 41bf 243d e697 3817 382c     p......A=$...8,8 8039480:	0081 781b 0ffe cc28 580a 0df5 da67 2147     ...x..(..X..g.G! 8039490:	2fb5 a282 6ced a287 a23d c589 a3f1 79b0     ./...l..=......y 80394a0:	f6cd 89d8 b85d 4087 a5b4 6082 f610 816f     ....]..@...`..o. 80394b0:	ebef af30 3ce9 ce55 f265 52e3 052e 0416     ..0..<U.e..R.... 80394c0:	1645 2d6a 94dc 90ec e9c6 63f4 7275 2c70     E.j-.......curp, 80394d0:	bc8f e7d3 6baf c2a0 87cb 815b 0dbd 67f7     .....k....[....g 80394e0:	8f26 8e21 221e 80b1 f80e 4454 91c1 849a     &.!.."....TD.... 80394f0:	09d1 a88b 2a31 25c9 cd9b c591 2eb6 0e61     ....1*.%......a. 8039500:	0e70 c05a 024b eb7f 9c0e d066 e1f1 668c     p.Z.K.....f....f 8039510:	def5 db81 5a9d 5893 2671 8451 7a2a 3005     .....Z.Xq&Q.*z.0 8039520:	05db 45a6 a558 a192 c08f 014d a2b7 9c61     ...EX.....M...a. 8039530:	061e e6ae 9a07 c3d4 972e 09f2 1f98 7102     ...............q 8039540:	b2ef 6928 a882 9642 31eb 4215 7afd fb95     ..(i..B..1.B.z.. 8039550:	1e9d 4592 d472 6741 0d4b 4ca9 543e 8ebe     ...Er.AgK..L>T.. 8039560:	de5e ff7b e1e0 a3f6 7bed 86fb 4380 cf1a     ^.{......{...C.. 8039570:	80e0 e129 af40 4120 70a4 108e 1608 d7b2     ..).@. A.p...... 8039580:	8740 e80c 011d 0c77 0a28 7f29 338c 66b2     @.....w.(.)..3.f 8039590:	b947 e1fd fbed 38bb a623 6c3a 8770 d54d     G......8#.:lp.M. 80395a0:	6f21 ec80 0a90 e8af c3f0 bbed dc1f ed9e     !o.............. 80395b0:	c9b0 221d 25c6 4866 10da 37f3 a6ad b147     ...".%fH...7..G. 80395c0:	abaf bcfa bdb5 7b7b cef7 39bd 2edd 5ba3     ......{{...9...[ 80395d0:	c550 7114 1d4d 52b2 06b1 ef91 e184 0fa1     P..qM..R........ 80395e0:	f5cf 409c 6e99 b5d8 c539 4c69 d720 1c7a     ...@.n..9.iL .z. 80395f0:	3d85 687f be71 4aa2 a2eb f3e6 e7ca 0fb5     .=.hq..J........ 8039600:	8f3c 78f2 4f38 0c49 bd9b cb23 e86e 9159     <..x8OI...#.n.Y. 8039610:	7e62 1d1c 4b08 6fd0 c733 f9a3 22e5 c9e9     b~...K.o3....".. 8039620:	2620 cb3d 8e18 617d b909 c1e6 6924 2f74      &=...}a....$it/ 8039630:	0308 058f 4623 b626 302b 8dd0 41cd eb63     ....#F&.+0...Ac. 8039640:	effc 2221 823e 098a 21c9 4f22 44bf 17c2     ..!">....!"O.D.. 8039650:	64c5 b77f 84b9 ce7a 9328 5529 8b70 437b     .d....z.(.)Up.{C 8039660:	7f8d 5d57 67af 864d 3209 28cb 2ce5 500f     ..W].gM..2.(.,.P 8039670:	c01d 20d2 6c9d fceb 585f fd4f 6425 2bee     ... .l.._XO.%d.+ 8039680:	6491 39b5 38d6 6888 24ea aa0b 1a70 83f4     .d.9.8.h.$..p... 8039690:	e6b6 6660 d45e 8341 c3bf fe34 8843 2428     ..`f^.A...4.C.($ 80396a0:	2189 e51f ca63 1145 3dc9 4278 4c28 7e24     .!..c.E..=xB(L$~ 80396b0:	8c89 bcad 9a88 8f42 42f2 2c88 f840 c933     ......B..B.,@.3. 80396c0:	3e17 c047 3b94 14d7 a968 65b2 7909 3885     .>G..;..h..e.y.8 80396d0:	672c 3a73 7524 1da4 21cf 8cc7 7165 72b8     ,gs:$u...!..eq.r 80396e0:	d5ca 40e0 26f1 384a 6ae5 a070 0b98 9c25     ...@.&J8.jp...%. 80396f0:	3572 1920 b8a9 41c3 5a2a 378e 3dec be67     r5 ....A*Z.7.=g. 8039700:	c898 ab6b 40b3 cb92 577b 24f6 b739 257f     ..k..@..{W.$9..% 8039710:	c650 978a 630a 9581 ecf8 25f7 dce4 1361     P....c.....%..a. 8039720:	3280 421e 5fe2 0b7f 4dad 4956 2ee4 4fe7     .2.B._...MVI...O 8039730:	dc8b 4389 7851 62ab 8c36 30ec 0dcb 8e3a     ...CQx.b6..0..:. 8039740:	a3bc 36af 7228 f985 ae04 d65e f925 29d5     ...6(r....^.%..) 8039750:	b892 f8f3 3a43 7338 4d41 ac78 8ad8 354f     ....C:8sAMx...O5 8039760:	e979 cb32 e05b 81b3 0eca e7d9 21bb c3ba     y.2.[........!.. 8039770:	8a19 3b34 be9c 74c8 d5a1 c992 e795 4985     ..4;...t.......I 8039780:	5bd2 703f 073d 2bda ac8d d548 e0a6 83b0     .[?p=..+..H..... 8039790:	690c 1b61 39a5 64c3 391b 2808 81c2 ed10     .ia..9.d.9.(.... 80397a0:	cda0 5276 f282 6ce7 9a35 5d6b aefc 5b37     ..vR...l5.k]..7[ 80397b0:	1d40 acfe 2a20 75de 46cc b1bd 6eda ea34     @... *.u.F...n4. 80397c0:	caf4 7d26 bea3 84dc bf3b 3e62 5b66 d6ac     ..&}....;.b>f[.. 80397d0:	c28b a211 dcfa c957 aea9 d6b7 3be1 b540     ......W......;@. 80397e0:	8118 577b 5f36 f52e de77 c8ea 93fa 1e76     ..{W6_..w.....v. 80397f0:	3ff2 fd4c 17fc 0f64 f94b baf4 fe73 960b     .?L...d.K...s... 8039800:	5f0c 7c5e dc22 1d76 69a8 04e4 3950 80a3     ._^|".v..i..P9.. 8039810:	19f8 db64 f3eb 2e2f 793e 3d12 f841 43d3     ..d.../.>y.=A..C 8039820:	b27e 4742 388f 2bd7 f723 dbdb edeb 7457     ~.BG.8.+#.....Wt 8039830:	6086 a4a5 da4f 7209 2175 e334 e870 86d5     .`..O..ru!4.p... 8039840:	bf61 8c44 315a 0add 7f3c 4214 97ef 3c65     a.D.Z1..<..B..e< 8039850:	2d84 a55d bd86 7c5d f4c9 01c7 7ff2 b58f     .-]...]|........ 8039860:	605b 5879 035a 754a e7a7 b412 1c59 fcb8     [`yXZ.Ju....Y... 8039870:	0f7e 1b02 6126 f056 387e 9089 22b4 fd6b     ~...&aV.~8..."k. 8039880:	d100 bc58 34d2 b147 010f c513 539c 102a     ..X..4G......S*. 8039890:	54f6 fe19 33ec 772a d69e 7d52 5387 4b47     .T...3*w..R}.SGK 80398a0:	ec7a cd8d 2f0e 92b9 9727 1c3e 3917 d860     z..../..'.>..9`. 80398b0:	3127 95a6 a22f 64b4 d04a 3983 570a 859a     '1../..dJ..9.W.. 80398c0:	2510 88ec ba85 57e1 9af4 2313 1c25 b2c0     .%.....W...#%... 80398d0:	99d9 8c37 de3d 43c0 8753 b37c 94da ec96     ..7.=..CS.|..... 80398e0:	988b 12d1 3b80 7244 e338 4c4c baa1 e86e     .....;Dr8.LL..n. 80398f0:	2f15 ee46 57bb 9e9a f0d1 a352 6a1d 6765     ./F..W....R..jeg 8039900:	e358 12a0 6692 8585 ea6e 7e47 dbec f43e     X....f..n.G~..>. 8039910:	93aa 0ab6 0f7c 0181 8fc1 9aa6 a669 71e6     ....|.......i..q 8039920:	6fbe 815e 2218 1585 f0ab 6b29 0a7b 784c     .o^.."....)k{.Lx 8039930:	45e3 fb3a 6f30 17cc 81b6 6d57 5da9 ac08     .E:.0o....Wm.].. 8039940:	bf23 816f 6b61 c094 ddb0 79c7 3c87 0b16     #.o.ak.....y.<.. 8039950:	1742 fba1 4807 bf0a f8f7 6dce 4d2d abcf     B....H.....m-M.. 8039960:	b642 b720 4e7d daab 4ac8 419c 6969 f237     B. .}N...J.Aii7. 8039970:	ce11 6a4f 89df 9e8e 1780 d49f 3896 6dd9     ..Oj.........8.m 8039980:	91a1 ece9 b8ec 907f 900c 0a26 0019 5932     ..........&...2Y 8039990:	499e 101a 32b4 0b73 cd20 4418 d2f2 2a04     .I...2s. ..D...* 80399a0:	c743 91ae 4573 d99c bba4 99a4 d305 5351     C...sE........QS 80399b0:	359b 153d 05bd 50a4 d3e2 f170 9487 8796     .5=....P..p..... 80399c0:	9162 3448 a2b2 1fbe 86ec e563 2146 4669     b.H4......c.F!iF 80399d0:	0016 55e5 3703 9540 bf4a 91b6 4ffb c2e7     ...U.7@.J....O.. 80399e0:	df63 421e 28b5 6533 5869 0e14 3524 595c     c..B.(3eiX..$5\Y 80399f0:	8ac9 597c d0a7 7e67 28ef 5f6d 6009 340d     ..|Y..g~.(m_.`.4 8039a00:	09c8 10fb 79cb 8c37 662a 5e1f 6ba6 7c09     .....y7.*f.^.k.| 8039a10:	9862 be5c b2b5 b057 3243 9b07 41ed 42a8     b.\...W.C2...A.B 8039a20:	34f9 14ed 98aa 4dd6 33a0 dd29 ec29 0d54     .4.....M.3).).T. 8039a30:	a701 9083 29b9 6c90 2365 0b37 c820 9d55     .....).le#7. .U. 8039a40:	5905 802e e6b4 b481 200a 44c8 ed9d 8565     .Y....... .D..e. 8039a50:	8440 2dcd 2126 6dec 852a 9cd9 40b6 5e29     @..-&!.m*....@)^ 8039a60:	6945 6136 e52e a6a9 5231 12b5 4051 380d     Ei6a....1R..Q@.8 8039a70:	aa2c fb8a 54c7 a324 aaa0 5e90 b8a9 0718     ,....T$....^.... 8039a80:	7306 0151 998f a5e5 2ba7 8348 1289 0640     .sQ......+H...@. 8039a90:	5535 329f a870 b32a 334c 4b74 c775 acae     5U.2p.*.L3tKu... 8039aa0:	d112 5cbf 1433 aac8 10d9 b71a c595 5404     ...\3..........T 8039ab0:	fb8c 6ba1 202a 5742 1b29 320b 502d f524     ...k* BW)..2-P$. 8039ac0:	9d00 6d2a 5610 8f24 4089 35fc 61a0 7e22     ..*m.V$..@.5.a"~ 8039ad0:	6805 7a98 fd0c 1787 970e 0148 2660 40c5     .h.z......H.`&.@ 8039ae0:	cd6e 1730 c655 8993 4bd3 3ee4 6db1 0973     n.0.U....K.>.ms. 8039af0:	dab4 b495 709a be9e e7a0 85cb 14cd 5e60     .....p........`^ 8039b00:	a8f2 b174 a3b4 490f 61a6 d2f3 5482 49ec     ..t....I.a...T.I 8039b10:	3413 60ad 2148 e6b9 1556 993a 829a cc58     .4.`H!..V.:...X. 8039b20:	66dc 3ae4 2499 ca4e 566d 6f0d 56b4 b89c     .f.:.$N.mV.o.V.. 8039b30:	4739 8d4a a95e 4c98 1cf0 bd30 f152 6654     9GJ.^..L..0.R.Tf 8039b40:	c28c be5e 2258 d730 6b18 8833 38cf 84ae     ..^.X"0..k3..8.. 8039b50:	b2a3 2110 7236 6e71 8683 6b21 5296 30d8     ...!6rqn..!k.R.0 8039b60:	1a1a 8c52 8e64 4df1 9858 41bd b055 9574     ..R.d..MX..AU.t. 8039b70:	f5ba 787b f2bd 326a 891c 23e4 c795 2b23     ..{x..j2...#..#+ 8039b80:	92dc 28c1 b243 f2fd c8cc c197 3fc5 16f2     ...(C........?.. 8039b90:	7517 a499 a0b2 0e02 6073 8a66 36b6 9436     .u......s`f..66. 8039ba0:	a8be 9ee6 8d33 1973 5085 bf5f e73c cab4     ....3.s..P_.<... 8039bb0:	854f 2ae2 d222 6b52 0284 cecf 4c4f 4f9a     O..*".Rk....OL.O 8039bc0:	4ea4 a6ce 4440 267b 91e5 91e7 e40f bcc9     .N..@D{&........ 8039bd0:	99cf e172 3e66 3833 2802 2a22 ef7e 8804     ..r.f>38.("*~... 8039be0:	59c9 1f48 7c3c 77cc 1f0f 7af4 6057 6aec     .YH.<|.w...zW`.j 8039bf0:	58f4 d83d 8bf9 058b 70fc 1019 35f4 8451     .X=......p...5Q. 8039c00:	5634 19b8 9970 6947 17ff 009f d06b ae10     4V..p.Gi....k... 8039c10:	519e 4e12 274d bf09 b991 c9c0 3b3a 321b     .Q.NM'......:;.2 8039c20:	b065 9387 6531 e0d1 e71a bfb7 1489 7ef6     e...1e.........~ 8039c30:	c3cf cebd 8fcc 454b fab3 580d 8274 751c     ......KE...Xt..u 8039c40:	1496 9799 a20e 0b85 1049 6c50 d284 f34c     ........I.Pl..L. 8039c50:	5cb5 9546 8af0 e949 af93 a596 d004 963b     .\F...I.......;. 8039c60:	cb16 0f54 3969 610f e239 59da 1071 4a51     ..T.i9.a9..Yq.QJ 8039c70:	3800 0318 e30a 07e7 32e1 2caa 9da4 aa40     .8.......2.,..@. 8039c80:	3bf0 4c55 9f27 2ea0 893e caef 365c 9882     .;UL'...>...\6.. 8039c90:	444a 8001 a12c da4a 74be 539a 1783 14ea     JD..,.J..t.S.... 8039ca0:	3cf0 114c c0a0 1cd6 f761 1707 ca81 0a39     .<L.....a.....9. 8039cb0:	b6f7 d417 7d8e 1937 ae6c 6ead 9ac0 fac7     .....}7.l..n.... 8039cc0:	7660 5560 b953 ecfe 6448 2bb7 7432 5526     `v`US...Hd.+2t&U 8039cd0:	1f0a 2801 d80c 3246 1e95 ba0d b2ba 9303     ...(..F2........ 8039ce0:	9a15 fed9 f2bb 421a e75b ce71 0ad8 38b7     .......B[.q....8 8039cf0:	9fab 8d62 2cb8 0d4d 9a29 2ea8 d34d 1a7b     ..b..,M.)...M.{. 8039d00:	4c34 506f a953 f98a 1601 3cc1 e12a 9f80     4LoPS......<*... 8039d10:	58ba 054d 4424 6761 6f72 96ea e8b5 bd50     .XM.$Dagro....P. 8039d20:	0aa1 4440 74ff 5aeb a1b5 03f7 402a b8b5     ..@D.t.Z....*@.. 8039d30:	4d88 e235 8a89 8a6e 1ce0 ca17 d967 ae11     .M5...n.....g... 8039d40:	ef71 d124 4770 78a4 db19 b777 dd1f 783b     q.$.pG.x..w...;x 8039d50:	fb74 a996 51ff b7af 5f52 eba9 ecb2 b7fb     t....Q..R_...... 8039d60:	deef f07d 2a5d 5bae 0b6e 5bbe fa01 a3de     ..}.]*.[n..[.... 8039d70:	b7db a3ef 7974 71d9 00ea 439e 8534 7532     ....ty.q...C4.2u 8039d80:	1877 5029 7c85 39ce 78ed 464e 5ea3 1717     w.)P.|.9.xNF.^.. 8039d90:	c933 6ced 40c8 5c04 ef45 b01f 111b ae3e     3..l.@.\E.....>. 8039da0:	0ff7 57d8 3668 a4f1 821c b2e6 eb71 f7fb     ...Wh6......q... 8039db0:	be0f fb7b 29a6 9eff be9e eb3c e7c8 6dda     ..{..)....<....m 8039dc0:	490a 2f98 c3c1 d4ed 80fd 2e17 8bbe 91f0     .I./............ 8039dd0:	7407 5377 e1da 1a34 d703 5d9d 3713 1740     .twS..4....].7@. 8039de0:	d01a a784 4b81 b448 c401 bb59 88d8 8aee     .....KH...Y..... 8039df0:	f503 3396 aee0 0341 ae01 2122 79b8 0866     ...3..A..."!.yf. 8039e00:	2f8b 5e1b 5fbc 067f e073 98af eb84 9dcd     ./.^._..s....... 8039e10:	adc4 f707 24fc e737 9934 62d6 4345 a372     .....$7.4..bECr. 8039e20:	d847 a2c2 9813 5ec5 6b82 ea7f e491 e453     G......^.k....S. 8039e30:	ab48 0cbc 7208 0256 96f6 c170 6433 28b1     H....rV...p.3d.( 8039e40:	90cf 4fd2 e305 bf83 20af 55d4 1760 02be     ...O..... .U`... 8039e50:	0bea bc41 c3f1 5f08 804f 027f 240e 6cee     ..A...._O....$.l 8039e60:	2caa 1bdf a124 3815 f0de c4e6 a846 6901     .,..$..8....F..i 8039e70:	d486 19c9 54f9 7977 85da 2255 e8cb 80f8     .....Twy..U".... 8039e80:	5d71 1463 6f40 ce60 d726 5887 f2a5 9203     q]c.@o`.&..X.... 8039e90:	a3c3 e016 2144 10fd c862 b0e6 f2a0 8005     ....D!..b....... 8039ea0:	cf19 14ce d5a5 3c44 7cc7 6d09 3732 e51a     ......D<.|.m27.. 8039eb0:	8960 d45b 70c2 55c1 8eea fa3a e4d3 f210     `.[..p.U..:..... 8039ec0:	f657 d733 1f5b 0516 5c87 7d4b c172 82ed     W.3.[....\K}r... 8039ed0:	e1bd 6b60 beb6 7ce3 b567 ff4e f128 7918     ..`k...|g.N.(..y 8039ee0:	fd11 125a 77be 576f 37b8 504b 535b 766a     ..Z..woW.7KP[Sjv 8039ef0:	b638 e264 0a2e 9fc2 405e d71e 1e0f 81dd     8.d.....^@...... 8039f00:	0c7b 4bf7 43b0 20f8 a544 e834 1dea 7bcd     {..K.C. D.4....{ 8039f10:	f63e 89a1 6a01 3b80 2838 a975 8c74 0ec4     >....j.;8(u.t... 8039f20:	b914 08a2 05c9 7c1d 62fe f964 f501 0a26     .......|.bd...&. 8039f30:	547b e318 004b 8791 b590 920e 4cc6 eb73     {T..K........Ls. 8039f40:	b9ce 0b77 6adf 89e0 e0c9 52e2 49e7 d4bc     ..w..j.....R.I.. 8039f50:	b4c7 1391 d143 ce40 8186 646a f49b 8866     ....C.@...jd..f. 8039f60:	4fcb 17ca 6bc5 2b29 5575 9178 6b8b c5aa     .O...k)+uUx..k.. 8039f70:	8c70 b3c1 ef2c 5544 b01a c478 27e7 e9ca     p...,.DU..x..'.. 8039f80:	5305 5b4a a640 3798 4dcc a455 81c9 c424     .SJ[@..7.MU...$. 8039f90:	120e 41ca d811 f992 2ce8 39d9 d914 1b02     ...A.....,.9.... 8039fa0:	014e 0e45 e617 bbb0 983b 5a18 51bd 13fd     N.E.....;..Z.Q.. 8039fb0:	a82b d5ae 7ab5 4dbd 1aff 361a 980f 48cb     +....z.M...6...H 8039fc0:	83e8 1fc4 d282 9c95 57a2 a988 7f09 a2f3     .........W...... 8039fd0:	6130 52e9 9f62 8cb1 d8f4 81b5 3f15 0e38     0a.Rb........?8. 8039fe0:	6988 a0e0 813a 1867 6e1f 10b0 c1a3 e84a     .i..:.g..n....J. 8039ff0:	498f 18a1 d3ec b93b 529e 4f8e 8a97 4bc5     .I....;..R.O...K 803a000:	568e 375f 2701 09a9 5aed 9c76 3ae7 ee25     .V_7.'...Zv..:%. 803a010:	0b34 f514 d592 3867 0512 631a 4ab0 22f6     4.....g8...c.J." 803a020:	164c 3f9b 705a df00 87a7 dcda e9db eaa9     L..?Zp.......... 803a030:	470a b2b5 826f 0a03 1e6b 3cc1 7004 bd98     .G..o...k..<.p.. 803a040:	025d e3ec 0443 9002 a69e 4880 1a53 91ee     ]...C......HS... 803a050:	701f a4df 4279 10c2 8954 ca4a a967 022c     .p..yB..T.J.g.,. 803a060:	8990 49f1 8594 c849 c5de 3297 c73a 2f19     ...I..I....2:../ 803a070:	c2a8 5487 8f32 d89b 4b07 329d da35 7831     ...T2....K.25.1x 803a080:	1550 58be 80c6 d5fc c0bb e80c 155d 4210     P..X........]..B 803a090:	0ae1 5b94 725c 920d 931e b671 7243 11a3     ...[\r....q.Cr.. 803a0a0:	d820 27db c1ab 5da5 19be c785 2750 4f1f      ..'...]....P'.O 803a0b0:	e4c6 021f a7e3 94a1 711e 0992 c789 aa9f     .........q...... 803a0c0:	1189 e83f 28f4 028a 780f 4e4c 7619 3dd9     ..?..(...xLN.v.= 803a0d0:	0fa6 3cd3 781e 7320 40ae 1038 a680 7f03     ...<.x s.@8..... 803a0e0:	0e2a 7936 c233 3a80 b96a 9b85 2a6a 6140     *.6y3..:j...j*@a 803a0f0:	1061 cf6f efda e858 e29a 6e05 5e89 d429     a.o...X....n.^). 803a100:	6673 4ccc bf2f 8916 4be7 6d88 7171 454e     sf.L/....K.mqqNE 803a110:	f37c d764 d3ea 3175 b8d8 f813 7ba5 807e     |.d...u1.....{~. 803a120:	180f 66a4 2a6e f208 3afc 3e7d 9e9f 3da6     ...fn*...:}>...= 803a130:	cee7 e563 869a 96ee 063f aa55 f4c6 2f77     ..c.....?.U...w/ 803a140:	c08c 9108 4a9e e474 1bec 3c63 6c92 06c6     .....Jt...c<.l.. 803a150:	0c52 19e6 0e8e 7ebc e8f0 126e 6fbe db21     R......~..n..o!. 803a160:	294a e5f3 48ce f154 f701 422e 7f50 413a     J)...HT....BP.:A 803a170:	94a2 d994 1968 b8e6 6b04 4840 6441 0bdc     ....h....k@HAd.. 803a180:	415a 94df 36f4 8eea c3da 90ee 3069 140d     ZA...6......i0.. 803a190:	b445 e60f 2f78 efda d844 5009 0507 7088     E...x/..D..P...p 803a1a0:	e02e 6f57 3e7a 9c1e a21a a78c 5787 488f     ..Woz>.......W.H 803a1b0:	b069 f8b8 34cc 187b e718 8a0f 1190 20e1     i....4{........  803a1c0:	83b6 0f68 72e4 3c1f 9d1d 1cbc dda0 253b     ..h..r.<......;% 803a1d0:	b738 2011 9381 063f 3e87 9485 8a7a 9360     8.. ..?..>..z.`. 803a1e0:	f681 f516 03b3 4c7f c25c 0947 6598 a03d     .......L\.G..e=. 803a1f0:	ae85 e717 f0aa 0c99 f551 c110 be7a 0c7a     ........Q...z.z. 803a200:	4eeb d624 8798 93d4 3e20 c0f4 7baa f08e     .N$..... >...{.. 803a210:	d738 5252 2a4e b025 4849 1df7 c784 143b     8.RRN*%.IH....;. 803a220:	f10c 92dc dc83 1b63 5804 43ea 2abf f99f     ......c..X.C.*.. 803a230:	1158 bf79 c1de 9437 3978 997e ba24 0a58     X.y...7.x9~.$.X. 803a240:	bb9e c3a5 c5c5 6443 012b 3c10 8105 23b4     ......Cd+..<...# 803a250:	8326 0e8e ff49 0900 5bcd be53 6a66 d849     &...I....[S.fjI. 803a260:	b549 bf20 5edc ff40 314f ae62 dca7 9e6c     I. ..^@.O1b...l. 803a270:	0d22 8737 7ca9 04af 5595 6c0b bae5 5546     ".7..|...U.l..FU 803a280:	c248 a590 3897 8975 3306 532e 49a1 3a52     H....8u..3.S.IR: 803a290:	0118 bb36 161b 72bc 8032 d0dc 6188 476f     ..6....r2....aoG 803a2a0:	8211 fab4 50fd 1d83 5741 341b df8e 8220     .....P..AW.4.. . 803a2b0:	25a1 cce8 f04b 1ead 87ad 584b 122e 48b2     .%..K.....KX...H 803a2c0:	50ec 3618 193b 93c0 1b8c 4ae2 edf8 1b2c     .P.6;......J..,. 803a2d0:	19a6 6d82 04fa 0e77 5841 6bf9 73ca 9507     ...m..w.AX.k.s.. 803a2e0:	342d 1ab8 313c 850c 113c 9212 d3a3 4aa0     -4..<1..<......J 803a2f0:	4054 8015 b957 b630 0794 5470 da93 2391     T@..W.0...pT...# 803a300:	0c82 0e09 b67d 2a46 665c 504f 0780 10ce     ....}.F*\fOP.... 803a310:	0bec 38a9 9fc8 a03e 0219 0247 9e79 7a10     ...8..>...G.y..z 803a320:	40c6 686d 2081 3304 f614 43af 326c d3b5     .@mh. .3...Cl2.. 803a330:	4440 e281 f725 74f8 4e4e 43ed 096e d41a     @D..%..tNN.Cn... 803a340:	1bd8 0689 e721 4272 068b 0ab6 1f1d a067     ....!.rB......g. 803a350:	9c8b 64fc 1840 69aa 1b6c a3d1 2c46 21ac     ...d@..il...F,.! 803a360:	29e4 7d80 2fda 9a75 b3a5 b137 82f2 a190     .).}./u...7..... 803a370:	7944 7e95 a3d4 1b1d 8fe4 8557 520d 6d4a     Dy.~......W..RJm 803a380:	20a9 4e43 5b21 a0b4 93de 09be dd5d a1c8     . CN![......]... 803a390:	c32c 193f 1c39 746a 0905 1d8a 2f40 2792     ,.?.9.jt....@/.' 803a3a0:	38cb 64f4 8bd0 0705 80be 6452 7c87 2a65     .8.d......Rd.|e* 803a3b0:	0455 9c33 1c19 1442 31f2 121b 2fc1 63f6     U.3...B..1.../.c 803a3c0:	dd31 443b f031 1f34 ec1f 9e82 0d05 647b     1.;D1.4.......{d 803a3d0:	21c1 5a59 b5e4 2819 0754 9d1a ae9a 2b3a     .!YZ...(T.....:+ 803a3e0:	ff59 b7a4 fd59 0db3 b0d7 4ba2 62ce fe80     Y...Y......K.b.. 803a3f0:	1409 a15d aa76 10bd 676a f58a acdc b421     ..].v...jg....!. 803a400:	a204 1a80 db96 a6f3 520e cd76 bcde f7a9     .........Rv..... 803a410:	ea79 fdfd 5f4e 009c 7bc4 5eee 529f 44d8     y...N_...{.^.R.D 803a420:	1708 336a fb4d 1525 3d92 26d0 140b 8869     ..j3M.%..=.&..i. 803a430:	a7b5 8fa1 1b5b 0684 411b c3bf 0f33 dd22     ....[....A..3.". 803a440:	5e23 b841 c25b 70c9 f626 b44c 27c3 b0d4     #^A.[..p&.L..'.. 803a450:	0c84 e0ad 4e1a d603 6d71 0cf2 ffa7 34db     .....N..qm.....4 803a460:	9ca3 63a6 3819 fc5a 0e51 1c11 960b 1a99     ...c.8Z.Q....... 803a470:	f6a9 2355 8520 1873 7867 6e43 f081 2e57     ..U# .s.gxCn..W. 803a480:	e0fd 5c49 c539 3bcf 7d4b 2e25 aa88 09f0     ..I\9..;K}%..... 803a490:	5836 3601 21f2 1d20 0a44 ffb2 13c2 673d     6X.6.! .D.....=g 803a4a0:	29e3 6931 3d2e d189 be47 1e0b 2ec5 5da7     .)1i.=..G......] 803a4b0:	b521 3102 5670 586d 65ec f09d 24d1 4112     !..1pVmX.e...$.A 803a4c0:	ac48 f23e b7fa 8f9f fa4b 2793 7f36 8472     H.>.....K..'6.r. 803a4d0:	1afe e17a 36f3 3bf2 0e30 3d51 cf89 0754     ..z..6.;0.Q=..T. 803a4e0:	e751 d64d f339 ee50 a504 ec77 3e51 2dcc     Q.M.9.P...w.Q>.- 803a4f0:	9231 422b b2da a15e 5003 187a 26a6 7dcc     1.+B..^..Pz..&.} 803a500:	c0e6 9dc1 1853 f7ca 853f 7401 905a e9c3     ....S...?..tZ... 803a510:	9019 99cd 257d 93bc 51b8 75d3 ff52 a406     ....}%...Q.uR... 803a520:	fcc7 6aa6 2f6f 27ab 1cd3 3746 a83e 9df7     ...jo/.'..F7>... 803a530:	7aec bc85 3049 7283 6990 728a 4068 7d53     .z..I0.r.i.rh@S} 803a540:	63aa a6c3 b6d4 723a 255e c8d7 3d4f 7bd0     .c....:r^%..O=.{ 803a550:	4196 6500 6641 53b1 7679 311c e60a 72a9     .A.eAf.Syv.1...r 803a560:	1c05 5f94 ce62 bb5d 3d2d 4a28 6417 85c2     ..._b.].-=(J.d.. 803a570:	8037 544e 96ba 4562 f40e f527 b294 a52c     7.NT..bE..'...,. 803a580:	2059 f1c4 7292 0590 1490 0d31 3fb8 f485     Y ...r....1..?.. 803a590:	cc5a 2f49 8b0f f671 fdbc 278e 0044 3834     Z.I/..q....'D.48 803a5a0:	29bc 1348 3e9e 4717 e728 bb65 cb48 1855     .)H..>.G(.e.H.U. 803a5b0:	67a7 9e29 9d74 9597 af2a b5b9 85c0 f795     .g).t...*....... 803a5c0:	1505 4256 12ee 70ca 8181 3303 a54a fc8c     ..VB...p...3J... 803a5d0:	0d11 d268 9c1a 92ae 758d 6e90 bd3b e350     ..h......u.n;.P. 803a5e0:	68f2 86a4 7b5e e420 493d cbc1 010c c1ac     .h..^{ .=I...... 803a5f0:	2049 531e 90dc c637 3298 7270 2803 8b41     I .S..7..2pr.(A. 803a600:	d2c9 f01d f746 ae86 3c8d b7d7 b510 7f65     ....F....<....e. 803a610:	aeb3 6d2d 093d b46e e86f 37fc eafb f71e     ..-m=.n.o..7.... 803a620:	ba59 24f1 44d8 c78e 86a1 70ef 09a0 50d9     Y..$.D.....p...P 803a630:	d931 f850 0586 eb7f 06ef 26a4 f679 19b2     1.P........&y... 803a640:	9a3c bd0c 272b 3530 d6fe b68d a5be 1bcf     <...+'05........ 803a650:	4797 b2d3 1764 28e4 fac5 8a8d 8243 737a     .G..d..(....C.zs 803a660:	6b89 66b7 3045 d8a5 2fa9 da93 a064 6fa7     .k.fE0.../..d..o 803a670:	31f4 f4ca 56c5 0517 8615 4f4f 6eed 639a     .1...V....OO.n.c 803a680:	6c76 0145 3819 7b74 90aa 83c6 642e a783     vlE..8t{.....d.. 803a690:	1b5d 2b96 c632 8218 21c4 fa9d 9ec7 e87d     ]..+2....!....}. 803a6a0:	f227 e19a e076 c343 1f84 3f8f ca4e 805a     '...v.C....?N.Z. 803a6b0:	3efc 54e9 cf4d 9b14 9d21 e6ff eada 5d3a     .>.TM...!.....:] 803a6c0:	84e4 b05f 2e6f 5c94 987c 1c85 b05f bdcf     .._.o..\|..._... 803a6d0:	a708 d237 1c4d bbaf 68d0 9e53 4517 d9df     ..7.M....hS..E.. 803a6e0:	0657 bb4f c7e6 ed9a 3e91 170b 0b84 4a25     W.O......>....%J 803a6f0:	34b3 a9dc 718c c9f9 909f 89ce 7e8c 58fe     .4...q.......~.X 803a700:	716a cd78 6545 0212 9ed8 59f4 82df ea5e     jqx.Ee.....Y..^. 803a710:	783f adac 00a2 561f 9284 ab0b 7167 f611     ?x.....V....gq.. 803a720:	40d2 2411 7970 e296 3e92 fb07 90b2 9a6b     .@.$py...>....k. 803a730:	3cff 672c 8a3d ebc3 3416 883a 63de 991c     .<,g=....4:..c.. 803a740:	c98e a8f7 d646 d2f3 4ab3 1563 aa74 ceba     ....F....Jc.t... 803a750:	93d6 e0ff 5581 667a a112 5539 373b 2f72     .....Uzf..9U;7r/ 803a760:	8fdb 28ed 4eb2 0f32 3e06 3a6d 7844 1613     ...(.N2..>m:Dx.. 803a770:	698f e1ed 21d6 5baf 84af a7fb d6a7 205e     .i...!.[......^  803a780:	b36b 4001 7227 c55f 3965 d1ba 67b1 c657     k..@'r_.e9...gW. 803a790:	90fb f267 5cfa 6f19 a7a7 819e 77a5 f6bd     ..g..\.o.....w.. 803a7a0:	3e21 939c a061 245f 3e2d 9470 e59e 9c76     !>..a._$->p...v. 803a7b0:	e54d eb92 4238 a15a 986f fbd3 e0a4 47c8     M...8BZ.o......G 803a7c0:	8fa9 49c8 67b8 3084 7f76 92c8 e5e9 ac8d     ...I.g.0v....... 803a7d0:	b771 2014 68cb 2d9c bb02 a020 f4f7 f61d     q.. .h.-.. ..... 803a7e0:	e30b 161c 920f f520 62fd ac03 13da 9957     ...... ..b....W. 803a7f0:	7c2c 27b3 5f24 7d06 122d 1308 657e 2f81     ,|.'$_.}-...~e./ 803a800:	375c ea35 8438 5e5d dbba e21e 53ae 74b6     \75.8.]^.....S.t 803a810:	29ba e727 0098 d82f ac91 cfce 80ea aca1     .)'.../......... 803a820:	29fc 13ca 8c7c 4709 1ced 847a aee6 db1c     .)..|..G..z..... 803a830:	4245 5d35 a35c acbf 0611 acbe c619 332e     EB5]\..........3 803a840:	f942 9e4b 08f0 21ec fa5e c802 dc11 efaa     B.K....!^....... 803a850:	c5c3 17a1 d287 eae1 15d0 2ad6 3c21 751d     ...........*!<.u 803a860:	0223 a207 2c9d c22d b11b 14a8 9ee8 4baa     #....,-........K 803a870:	844c 17d9 4ee2 5b0c ae06 c504 e405 94f3     L....N.[........ 803a880:	610c 5e2a 114a a256 9e73 cbaa 43a4 6708     .a*^J.V.s....C.g 803a890:	3638 3b07 58e6 97b1 7412 df9b f6f4 c4c8     86.;.X...t...... 803a8a0:	083e ea1a 9170 40dc 6054 f213 7415 ee11     >...p..@T`...t.. 803a8b0:	de08 ec6b 2c81 9796 da07 1633 5c9a 4b29     ..k..,....3..\)K 803a8c0:	982f f45a 6585 14b0 9949 4c20 2e20 3448     /.Z..e..I. L .H4 803a8d0:	20d7 e581 8ff6 f4ce af90 674c 3ff7 2739     . ........Lg.?9' 803a8e0:	ed5b f732 8263 117d 4db5 5a5d 3469 6840     [.2.c.}..M]Zi4@h 803a8f0:	dd0d 6797 7f52 0a10 df2f 34e1 5c21 5df0     ...gR.../..4!\.] 803a900:	f6e1 5c4b 6cfc d8df 8f8c 4a48 4a21 ea6a     ..K\.l....HJ!Jj. 803a910:	3acd 220e efcf 700f 8985 8f9e ef7c 66f8     .:."...p....|..f 803a920:	dcf8 e1d4 d66e 6b1a 4d1b a5fe cf6b c347     ....n..k.M..k.G. 803a930:	ee00 01fe 80ae 97b7 8e96 8f8f c76b b5cb     ............k... 803a940:	ea30 e12f 75be 097d d21d 7937 fee1 0c87     0./..u}...7y.... 803a950:	efd7 8e51 b6b5 6ad2 b51d eb5a d0cf ab4d     ..Q....j..Z...M. 803a960:	a1ba 9735 6a93 5973 18db 9754 f59b d567     ..5..jsY..T...g. 803a970:	4b46 e3ab babd 5491 f037 a8f7 daba 567a     FK.....T7.....zV 803a980:	52a7 4b7a 62a8 6cd0 8eb6 cbaa cd2b 72e9     .RzK.b.l....+..r 803a990:	5240 f46b 6da8 d424 8bf1 ab51 aab1 c829     @Rk..m$...Q...). 803a9a0:	eaf5 72da b9b5 e186 1b1a fceb 1783 a659     ...r..........Y. 803a9b0:	09e1 1aa5 acd5 6b2d 40a8 ff09 a591 22b9     ......-k.@....." 803a9c0:	9002 503d c033 18be 4a61 1d5a 6a2b 37d6     ..=P3...aJZ.+j.7 803a9d0:	48aa d713 d796 6a57 582b dad7 6d46 4d05     .H....Wj+X..Fm.M 803a9e0:	bbf1 45ca b8f8 b2ef 2278 5130 7f2f 35a7     ...E....x"0Q/..5 803a9f0:	8c19 296c e17a 59f6 04e7 ea25 6fe5 677a     ..l)z..Y..%..ozg 803aa00:	1798 cc3a 21fd 8a74 151b 5411 b115 0ad6     ..:..!t....T.... 803aa10:	21e9 dc38 fa8f 375b a590 6b84 7cbc efbb     .!8...[7...k.|.. 803aa20:	be35 8106 258f 16e3 3f0a bb88 f873 3230     5....%...?..s.02 803aa30:	b854 fdc2 6fce 448f b1d6 cd0d fad6 7011     T....o.D.......p 803aa40:	184a c55d 68c6 202d b5b3 b402 aa0f 95cd     J.]..h- ........ 803aa50:	67d5 e6d5 a82a b5a4 2a82 4dda 1d3c 1955     .g..*....*.M<.U. 803aa60:	2a9c 3df8 cae1 0101 2c13 403a c279 bd3d     .*.=.....,:@y.=. 803aa70:	2d18 a083 2bea c3ab 736a 835d 0042 a3a2     .-...+..js].B... 803aa80:	9a61 ec75 1895 0f08 43d3 0761 3069 c202     a.u......Ca.i0.. 803aa90:	d470 2ab4 f29a 6b90 9a5c 5ab4 360c 4a20     p..*...k\..Z.6 J 803aaa0:	c316 80a2 0607 fa00 d99e 841a e7c6 cbee     ................ 803aab0:	20df 87cb b4bf 1bc1 4c21 6faa 076d 1b9a     . ......!L.om... 803aac0:	da1b 637a 5879 356d 1a9b 807e 0d9f 5581     ..zcyXm5..~....U 803aad0:	8a5a 3b40 b010 a2d1 aa1f ff94 3b80 fdc6     Z.@;.........;.. 803aae0:	6c10 040e 9f37 0d71 4d96 e398 180d 5a36     .l..7.q..M....6Z 803aaf0:	e06b 35fa ec90 c80a 657e 441e 921d db85     k..5....~e.D.... 803ab00:	3062 47fa 223b adf7 6ad1 eb68 cccb fff6     b0.G;"...jh..... 803ab10:	996f 3399 e624 ccd2 f9cf 856b ecf8 5839     o..3$.....k...9X 803ab20:	5d57 feac 68d6 7566 a5b5 6fad 92ac 5f50     W]...hfu...o..P_ 803ab30:	ad59 82ae 36a1 b1d6 286f 626d f1ff e1a3     Y....6..o(mb.... 803ab40:	f419 aeb2 36ad 0fe8 a840 2094 87f8 459e     .....6..@.. ...E 803ab50:	6d0d 7aef 5b53 4627 6e5b e441 5737 d4f1     .m.zS['F[nA.7W.. 803ab60:	ab5c 6b3f 7441 b536 480d 0856 6481 197d     \.?kAt6..HV..d}. 803ab70:	b52c 7f52 a286 1356 e0a3 036d 40bf 249f     ,.R...V...m..@.$ 803ab80:	d773 f8f1 8aac d6e1 ffd0 034a 8d25 46f5     s.........J.%..F 803ab90:	5d52 46a1 26cd 3e1f 96f5 22d6 8796 472c     R].F.&.>..."..,G 803aba0:	46b3 9a9d 5635 4009 16fe 5425 039b 8aac     .F..5V.@..%T.... 803abb0:	0436 1a07 36e7 1bf4 a08b 5496 6a09 1345     6....6.....T.jE. 803abc0:	465a c1b3 4203 1134 682e 5816 e35a f819     ZF...B4..h.XZ... 803abd0:	0b0a 79e1 d2e2 c610 c9a6 6957 cff2 1b96     ...y......Wi.... 803abe0:	d6d5 2632 5d5f 27a9 981b 3829 05a4 5689     ..2&_].'..)8...V 803abf0:	69c7 6846 df00 13d4 8cc2 cc06 18bc 6ce1     .iFh...........l 803ac00:	93ac 3a14 5fc2 7e60 dd05 6bae 751b 9c9c     ...:._`~...k.u.. 803ac10:	1c75 f805 778d b7fa a751 1463 d520 a695     u....w..Q.c. ... 803ac20:	48a8 0eb8 78b0 7fa5 f51b 8b6b 7c26 b642     .H...x....k.&|B. 803ac30:	f298 cf87 9d08 1671 b891 3faf e487 ff96     ......q....?.... 803ac40:	ba20 46c4 4b13 5b5e b67d 0cb2 bef9 48c1      ..F.K^[}......H 803ac50:	9481 964d d449 ebd2 f2d1 1d3a 2b20 1aa0     ..M.I.....:. +.. 803ac60:	4455 2198 e1e4 a8fd 4ab1 5b38 ad5d 4892     UD.!.....J8[]..H 803ac70:	906a d056 d658 6b5a 6c03 9d11 ab30 c274     j.V.X.Zk.l..0.t. 803ac80:	08a0 20d5 35a9 3c7a 6eaa 1b50 12aa 8905     ... .5z<.nP..... 803ac90:	1fa8 0b70 406a a11d 112e d25d 2f10 9846     ..p.j@....]../F. 803aca0:	a341 7d09 bd65 ae85 eb9b a838 41d6 d07e     A..}e.....8..A~. 803acb0:	5868 c1bf 4289 8d2a 541c 3f2a 5f50 3158     hX...B*..T*?P_X1 803acc0:	e23a 20f1 3530 9356 4b58 b1e2 9aa4 2503     :.. 05V.XK.....% 803acd0:	e849 e848 8072 afbe 87bd c73f ff91 ec5b     I.H.r.....?...[. 803ace0:	2e22 d2bf 5577 bbe8 f8ac 3024 a3ee af8a     "...wU....$0.... 803acf0:	e27e 2fbb d09f 7b1d afb1 3b94 673c ff53     ~../...{...;<gS. 803ad00:	0a70 a362 5f55 801f 8f5e 5f08 a203 23dc     p.b.U_..^.._...# 803ad10:	dc5a 7088 0558 0732 46a4 4aca e47e 805a     Z..pX.2..F.J~.Z. 803ad20:	2571 6480 3d1d 1571 e0da 68dc 911e 3036     q%.d.=q....h..60 803ad30:	a347 4068 cd78 2957 7e08 a55a e860 9d59     G.h@x.W).~Z.`.Y. 803ad40:	0782 bfff c23d d057 ff1b 7e5d ec53 a48d     ....=.W...]~S... 803ad50:	f91d 6d5f 67e8 9d67 06ff 5b75 7936 66ed     .._m.gg...u[6y.f 803ad60:	0000                                        ..0803ad62 <data__login_html>: 803ad62:	6c2f 676f 6e69 682e 6d74 006c 5448 5054     /login.html.HTTP 803ad72:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 803ad82:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  803ad92:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 803ada2:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 803adb2:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 803adc2:	6e65 2d74 654c 676e 6874 203a 3835 0d37     ent-Length: 587. 803add2:	430a 6e6f 656e 7463 6f69 3a6e 4320 6f6c     .Connection: Clo 803ade2:	6573 0a0d 6f43 746e 6e65 2d74 7974 6570     se..Content-type 803adf2:	203a 6574 7478 682f 6d74 0d6c 430a 6e6f     : text/html..Con 803ae02:	6574 746e 452d 636e 646f 6e69 3a67 6720     tent-Encoding: g 803ae12:	697a 0d70 0d0a 1f0a 088b 0000 0000 0400     zip............. 803ae22:	7d0a cd54 d46e 1030 157e 2463 754e 7bb7     .}T.n.0.~.c$Nu.{ 803ae32:	a841 91c4 e950 1381 401c a382 cc93 5c6e     A...P....@....n\ 803ae42:	db1c 93d8 eeec e2ad 09c0 c409 2415 015e     .............$^. 803ae52:	03d1 8845 433e 8df6 2718 6ddb a423 e21e     ..E.>C...'.m#... 803ae62:	d8f5 e333 67ef d9b4 a7bd 4fcf be5e 7179     ..3..g.....O^.yq 803ae72:	6aca 4c6c a59e 1995 9765 7392 408a 7955     .jlL....e..s.@Uy 803ae82:	00d6 562a 2ad6 4044 5bc9 885c 7447 9c37     ..*V.*D@.[\.Gt7. 803ae92:	88d6 c05e 56bb 9277 16bf 9eaf 1388 78d7     ..^..Vw........x 803aea2:	ba85 c030 e959 822c 92a5 a767 aa12 5c25     ..0.Y.,...g...%\ 803aeb2:	5917 80d5 9de4 9586 0177 e56f 74ad b585     .Y......w.o..t.. 803aec2:	a0ac 25d3 2188 d038 a356 4656 52c4 9019     ...%.!8.V.VF.R.. 803aed2:	83f3 ad46 d375 fb36 8db8 8610 d140 f293     ..F.u.6.....@... 803aee2:	9e88 8d40 f206 5bfe d57f edff b72f fbef     ..@....[..../... 803aef2:	edab 7f79 fb49 6c8b de36 4665 b7db 0eac     ..y.I..l6.eF.... 803af02:	90b0 51bc 1eda 3196 1672 48c0 711e 2063     ...Q...1r..H.qc  803af12:	00d6 9d48 1962 47b4 1b86 704f d611 3b38     ..H.b..G..Op..8; 803af22:	9d53 4f1a 8b39 94a1 383c 8703 9167 6792     S..O9...<8..g..g 803af32:	39e3 466d 0ad1 6d57 acf2 1dd2 8d2b 518a     .9mF..Wm....+..Q 803af42:	ab72 42ba 3605 88fe 160a 35aa 1d78 f42e     r..B.6.....5x... 803af52:	2a1a ce81 a753 6aff ea44 6108 cabc b533     .*..S..jD..a..3. 803af62:	7e83 949f 5b1b b71b 0974 a282 aa8f eba7     .~...[..t....... 803af72:	76ad a0ab a7bc 4c46 9257 dcef baa1 9e7a     .v....FLW.....z. 803af82:	9ff7 9ffb a97b f57e b63f 481f 4fba 65c4     ....{.~.?..H.O.e 803af92:	c13e 95e3 c305 f586 c19a f014 9578 d3b8     >...........x... 803afa2:	c2f9 8685 12a9 b3b5 1392 a4c6 52f4 4673     .............RsF 803afb2:	5393 423b 5de0 ee4c 39ef 2b68 0952 1a55     .S;B.]L..9h+R.U. 803afc2:	d055 143b eaec de78 257f 2f3f 8f92 0fc7     U.;...x..%?/.... 803afd2:	116c e3fd 366c e524 b699 bdbe d26d 63be     l...l6$.....m..c 803afe2:	25ea 4b12 8932 d093 e869 1406 ff23 96dd     .%.K2...i...#... 803aff2:	ca06 5d80 dcd2 f9f1 7243 0d35 1a40 408b     ...]....Cr5.@..@ 803b002:	4570 cbd0 8f1a fcd9 afc8 a8a7 593c a04a     pE..........<YJ. 803b012:	93be e752 ec04 f6cf 5de3 52b0 caf6 ea85     ..R......].R.... 803b022:	684e 4937 9dc9 01e1 0536 b397 d909 16d8     Nh7I....6....... 803b032:	be8d b011 cb40 13e8 683e bf42 ace1 a653     ....@...>hB...S. 803b042:	2a25 17fd f802 cc9b 24bd b30a ca24 3e74     %*.......$..$.t> 803b052:	1376 ce33 6ceb 17f8 07f8 a233 8ac5 0415     v.3..l....3..... 803b062:	0000                                        ..0803b064 <Content_Length>: 803b064:	6f43 746e 6e65 2d74 654c 676e 6874 203a     Content-Length:  803b074:	0000 0000                                   ....0803b078 <file__rotek_png>: 803b078:	b0b4 0803 6e92 0803 6e9e 0803 1802 0000     .....n...n...... 803b088:	0001 0000                                   ....0803b08c <file__index_html>: 803b08c:	d7e0 0803 b757 0803 b763 0803 04e3 0000     ....W...c....... 803b09c:	0001 0000                                   ....0803b0a0 <file__info_html>: 803b0a0:	b08c 0803 0b35 0804 0b41 0804 04f6 0000     ....5...A....... 803b0b0:	0001 0000                                   ....0803b0b4 <file__role_js>: 803b0b4:	e260 0803 ce89 0803 ce95 0803 0948 0000     `...........H... 803b0c4:	0001 0000 5825 4c00 676f 756f 5474 726d     ....%X.LogoutTmr 803b0d4:	6600 6e75 0063 7322 6f74 2270 d000 d0a2     .func."stop".... 803b0e4:	d1b5 d181 2082 bed0 81d1 82d1 b0d0 bdd0     ..... .......... 803b0f4:	bed0 b2d0 bbd0 b5d0 bdd0 0021 a2d0 b5d0     ..........!..... 803b104:	81d1 82d1 d020 d0bd 20b5 83d1 b4d0 b0d0     .... .... ...... 803b114:	bbd0 bed0 81d1 8cd1 d020 d1be d181 d082     ........ ....... 803b124:	d0b0 d0bd d0be d0b2 d1b8 d182 218c 2200     .............!." 803b134:	6964 6373 6168 6772 2265 d000 d0a2 d1b5     discharge"...... 803b144:	d181 2082 b7d0 b0d0 bfd0 83d1 89d1 b5d0     ... ............ 803b154:	bdd0 0021 a2d0 b5d0 81d1 82d1 d020 d0bd     ..!......... ... 803b164:	20b5 83d1 b4d0 b0d0 bbd0 bed0 81d1 8cd1     . .............. 803b174:	d020 d0b7 d0b0 d1bf d183 d181 d082 d1b8      ............... 803b184:	d182 218c 2200 6974 656d 0022 6322 6e61     ...!."time"."can 803b194:	6563 226c d000 d192 d08b d0ba d1bb d18e     cel"............ 803b1a4:	d087 d0b5 d0bd d0b8 20b5 98d0 91d0 9fd0     ......... ...... 803b1b4:	d020 d1be d082 d0bc d0b5 d0bd d0b5 d0bd      ............... 803b1c4:	21be d000 d192 d08b d0ba d1bb d18e d087     .!.............. 803b1d4:	d0b5 d0bd d0b8 20b5 98d0 91d0 9fd0 d020     ....... ...... . 803b1e4:	d0bd 20b5 83d1 b4d0 b0d0 bbd0 bed0 81d1     ... ............ 803b1f4:	8cd1 d020 d1be d082 d0bc d0b5 d0bd d1b8     .. ............. 803b204:	d182 218c 2200 666f 2266 6100 7466 7265     ...!."off".after 803b214:	2c00 7400 006f 9fd0 b5d0 80d1 b5d0 b7d0     .,.to........... 803b224:	b0d0 b3d0 80d1 83d1 b7d0 bad0 b0d0 d020     .............. . 803b234:	d098 d091 219f d000 d19e d082 d0bc d0b5     .....!.......... 803b244:	d0bd 20b0 bfd0 b5d0 80d1 b5d0 b7d0 b0d0     ... ............ 803b254:	b3d0 80d1 83d1 b7d0 bad0 b8d0 d020 d098     ............ ... 803b264:	d091 219f 2600 6c00 676f 6e69 003d 6170     ...!.&.login=.pa 803b274:	7373 6f77 6472 003d 5448 5054 312f 302e     ssword=.HTTP/1.0 803b284:	3220 3030 4f20 0d4b 430a 6e6f 6574 746e      200 OK..Content 803b294:	542d 7079 3a65 6574 7478 682f 6d74 0d6c     -Type:text/html. 803b2a4:	530a 7465 432d 6f6f 696b 3a65 7520 616e     .Set-Cookie: una 803b2b4:	656d 003d 0a0d 6553 2d74 6f43 6b6f 6569     me=...Set-Cookie 803b2c4:	203a 6469 003d 0a0d 6553 2d74 6f43 6b6f     : id=...Set-Cook 803b2d4:	6569 203a 6f72 656c 003d 213c 4f44 5443     ie: role=.<!DOCT 803b2e4:	5059 2045 7468 6c6d 3c3e 7468 6c6d 6c20     YPE html><html l 803b2f4:	6e61 3d67 3c3e 6568 6461 3c3e 656d 6174     ang=><head><meta 803b304:	6820 7474 2d70 7165 6975 3d76 7222 6665      http-equiv="ref 803b314:	6572 6873 2022 6f63 746e 6e65 3d74 3022     resh" content="0 803b324:	753b 6c72 2f3d 6e69 6564 2e78 7468 6c6d     ;url=/index.html 803b334:	2f22 3c3e 682f 6165 3e64 2f3c 7468 6c6d     "/></head></html 803b344:	0d3e 0d0a 000a 90d0 b4d0 bcd0 b8d0 bdd0     >............... 803b354:	b8d0 81d1 82d1 80d1 b0d0 82d1 bed0 80d1     ................ 803b364:	d000 d09f d0be d1bb d08c d0b7 d0be d0b2     ................ 803b374:	d1b0 d082 d0b5 d1bb 008c 6572 6461 635f     ..........read_c 803b384:	6d6f 756d 696e 7974 003d 7277 7469 5f65     ommunity=.write_ 803b394:	6f63 6d6d 6e75 7469 3d79 6d00 6e61 6761     community=.manag 803b3a4:	7265 5049 003d 616d 616e 6567 4972 3250     erIP=.managerIP2 803b3b4:	003d 616d 616e 6567 4972 3350 003d 616d     =.managerIP3=.ma 803b3c4:	616e 6567 4972 3450 003d 616d 616e 6567     nagerIP4=.manage 803b3d4:	4972 3550 003d 6864 7063 003d 7069 6461     rIP5=.dhcp=.ipad 803b3e4:	7264 003d 7767 003d 616d 6b73 003d 7372     dr=.gw=.mask=.rs 803b3f4:	655f 616e 6c62 6465 003d 7372 735f 7265     _enabled=.rs_ser 803b404:	6576 3d72 7200 5f73 6f70 7472 003d 7372     ver=.rs_port=.rs 803b414:	705f 6477 003d 7372 6b5f 7965 003d 6964     _pwd=.rs_key=.di 803b424:	3d31 7200 316f 003d 6f72 3d32 6e00 7074     1=.ro1=.ro2=.ntp 803b434:	003d 746e 7370 7265 6976 3d70 7400 6d69     =.ntpservip=.tim 803b444:	3d65 7500 6374 003d 003f 003b 5448 5054     e=.utc=.?.;.HTTP 803b454:	7000 6f72 6164 6574 003d 5448 5054 312f     .prodate=.HTTP/1 803b464:	302e 3220 3030 4f20 0d4b 430a 6e6f 6574     .0 200 OK..Conte 803b474:	746e 542d 7079 3a65 6574 7478 682f 6d74     nt-Type:text/htm 803b484:	0d6c 0d0a 540a 7572 0065 776f 656e 3d72     l....True.owner= 803b494:	7300 7379 6f4c 6163 6974 6e6f 003d 6f63     .sysLocation=.co 803b4a4:	6d6d 6e65 3d74 7500 6573 6e72 6d61 3d65     mment=.username= 803b4b4:	6f00 646c 6170 7373 003d 656e 7077 7361     .oldpass=.newpas 803b4c4:	3d73 d000 d09f d1b0 d080 d0be d1bb 208c     s=.............  803b4d4:	83d1 81d1 bfd0 b5d0 88d1 bdd0 bed0 d020     .............. . 803b4e4:	d0b8 d0b7 d0bc d0b5 d1bd d091 00bd 92d0     ................ 803b4f4:	b2d0 b5d0 b4d0 b5d0 bdd0 8bd1 d020 d0bd     ............ ... 803b504:	d0b5 d0ba d1be d180 d080 d0b5 d1ba d082     ................ 803b514:	d1bd d08b 20b5 b4d0 b0d0 bdd0 bdd0 8bd1     ..... .......... 803b524:	b5d0 0021 92d0 b2d0 b5d0 b4d0 91d1 bdd0     ..!............. 803b534:	d020 d0bd d0b5 d0b2 d1b5 d080 d1bd d08b      ............... 803b544:	20b9 bfd0 b0d0 80d1 bed0 bbd0 8cd1 0021     . ............!. 803b554:	4547 2054 6d2f 6961 2e6e 7363 0073 4547     GET /main.css.GE 803b564:	2054 722f 746f 6b65 702e 676e 4700 5445     T /rotek.png.GET 803b574:	2f20 6166 6976 6f63 2e6e 6369 006f 4547      /favicon.ico.GE 803b584:	2054 722f 6c6f 2e65 736a 5000 534f 2054     T /role.js.POST  803b594:	6c2f 676f 6e69 632e 6967 2f00 6f6c 6967     /login.cgi./logi 803b5a4:	2e6e 7468 6c6d 5400 6f6f 6c20 6e6f 2067     n.html.Too long  803b5b4:	4f50 5453 7220 7165 6575 7473 0d21 000a     POST request!... 803b5c4:	4547 2054 6d2f 6961 2e6e 736a 4700 5445     GET /main.js.GET 803b5d4:	2f20 6573 7474 6e69 7367 682e 6d74 006c      /settings.html. 803b5e4:	4547 2054 692f 666e 2e6f 7468 6c6d 4700     GET /info.html.G 803b5f4:	5445 2f20 6567 4a74 6f73 2e6e 6763 0069     ET /getJson.cgi. 803b604:	4547 2054 732f 7465 6974 676e 2e73 6763     GET /settings.cg 803b614:	0069 4f50 5453 2f20 6573 7474 6e69 7367     i.POST /settings 803b624:	632e 6967 4800 5454 2f50 2e31 2031 3032     .cgi.HTTP/1.1 20 803b634:	2030 4b4f 0a0d 3c00 4421 434f 5954 4550     0 OK...<!DOCTYPE 803b644:	6820 6d74 3e6c 683c 6d74 206c 616c 676e      html><html lang 803b654:	3e3d 683c 6165 3e64 6d3c 7465 2061 7468     =><head><meta ht 803b664:	7074 652d 7571 7669 223d 6572 7266 7365     tp-equiv="refres 803b674:	2268 6320 6e6f 6574 746e 223d 3b30 7275     h" content="0;ur 803b684:	3d6c 732f 7465 6974 676e 2e73 7468 6c6d     l=/settings.html 803b694:	2f22 3c3e 682f 6165 3e64 2f3c 7468 6c6d     "/></head></html 803b6a4:	0d3e 0d0a 000a 4547 2054 692f 666e 2e6f     >.....GET /info. 803b6b4:	6763 0069 4f50 5453 2f20 6162 5f74 6574     cgi.POST /bat_te 803b6c4:	7473 632e 6967 5000 534f 2054 752f 7370     st.cgi.POST /ups 803b6d4:	705f 776f 7265 632e 6967 4700 5445 2f20     _power.cgi.GET / 803b6e4:	6572 6573 2e74 6763 0069 4547 2054 722f     reset.cgi.GET /r 803b6f4:	6265 6f6f 2e74 6763 0069 4547 2054 632f     eboot.cgi.GET /c 803b704:	6e6f 6966 6d72 632e 6967 2f00 6e69 6564     onfirm.cgi./inde 803b714:	2e78 7468 6c6d 5000 534f 2054 662f 5f77     x.html.POST /fw_ 803b724:	7075 6164 6574 632e 6967 5000 534f 2054     update.cgi.POST  803b734:	632f 6168 676e 7065 6477 632e 6967 4700     /changepwd.cgi.G 803b744:	5445 2f20 6573 5074 6f72 6164 6574 632e     ET /setProdate.c 803b754:	6967 2f00                                        gi.0803b757 <data__index_html>: 803b757:	692f 646e 7865 682e 6d74 006c 5448 5054     /index.html.HTTP 803b767:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 803b777:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  803b787:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 803b797:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 803b7a7:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 803b7b7:	6e65 2d74 654c 676e 6874 203a 3031 3937     ent-Length: 1079 803b7c7:	0a0d 6f43 6e6e 6365 6974 6e6f 203a 6c43     ..Connection: Cl 803b7d7:	736f 0d65 430a 6e6f 6574 746e 742d 7079     ose..Content-typ 803b7e7:	3a65 7420 7865 2f74 7468 6c6d 0a0d 6f43     e: text/html..Co 803b7f7:	746e 6e65 2d74 6e45 6f63 6964 676e 203a     ntent-Encoding:  803b807:	7a67 7069 0a0d 0a0d 8b1f 0008 0000 0000     gzip............ 803b817:	0a04 56bd 6f5d 44e3 fd14 832b 6979 baa5     ...V]o.D..+.yi.. 803b827:	fba1 2084 54b6 8bba 4fb4 10ac f620 9a29     ... .T...O.. .). 803b837:	93d8 1678 ed7f 9278 6fb4 60fd 5161 8291     ..x...x..o.`aQ.. 803b847:	a010 e17d 17f3 8174 9a40 dda6 30bf 47fe     ..}...t.@....0.G 803b857:	3b9c bb8e 3521 5961 7d89 93b0 e7b1 7bde     .;..!5aY.}.....{ 803b867:	b9ee 5ee7 fb4f dbb5 edef 707d deff 161d     ...^O.....}p.... 803b877:	24e9 dbf6 6774 4f31 9efb 60e3 7825 b7e8     .$..tg1O...`%x.. 803b887:	a113 0b39 ae22 a10a 673d 7ba0 9bee 6778     ..9."...=g.{..xg 803b897:	469f e75a 78ae 9038 cf43 d8f9 70fd ddd7     .FZ..x8.C....p.. 803b8a7:	92cb 6b9c 8dd9 c385 2c82 22d5 c985 3bdd     ...k.....,."...; 803b8b7:	089e a2fb 4a36 2279 673c c528 cf28 5e94     ....6Jy"<g(.(..^ 803b8c7:	37da a192 bc8e 0c50 2065 bb5c 92d8 d4a9     .7....P.e \..... 803b8d7:	c792 116e 58f0 3b78 095b 97df 20c9 5eb9     ..n..Xx;[.... .^ 803b8e7:	0a0f eca1 2382 f7a4 4206 a968 e163 1f9b     .....#...Bh.c... 803b8f7:	59cd 6879 ccce 4cdc e3ca b0f2 6d3c aab7     .Yyh...L....<m.. 803b907:	ed37 a658 b09f 8948 e79e 5c24 dba6 5141     7.X...H...$\..AQ 803b917:	4c38 d889 0a73 107d 228b 4212 4fc3 2811     8L..s.}..".B.O.( 803b927:	6b99 0fa6 8072 62d5 b75f f01e af21 3a9e     .k..r..b_...!..: 803b937:	50ac e781 2ca8 db16 0a0f 6e6c cf55 a7f1     .P...,....lnU... 803b947:	aca2 859b 7e07 943b 1643 bcc4 3c28 e527     .....~;.C...(<'. 803b957:	2ec3 ac57 71fa d143 83e3 d758 9ecb 17dc     ..W..qC...X..... 803b967:	aba1 1cb3 6e9e b8d8 51e4 eaa8 df95 0be6     .....n...Q...... 803b977:	32e8 c50d 36fe 0b95 5604 e231 9fac 1611     .2...6...V1..... 803b987:	0b8e ea6e 6d7b baf1 64c3 9c88 3a45 2570     ..n.{m...d..E:p% 803b997:	b36a 3ad8 6b88 807b 11ab 6fe1 9bb5 f8fe     j..:.k{....o.... 803b9a7:	6ca0 606d 681e 4439 9b79 2748 6430 ecbe     .lm`.h9Dy.H'0d.. 803b9b7:	3a02 32d2 17ed 7c15 7cdf 5a8f 511d cc95     .:.2...|.|.Z.Q.. 803b9c7:	3995 3337 ad33 5872 9335 2f69 4dab 989e     .9733.rX5.i/.M.. 803b9d7:	f2cb 7353 9305 8c39 333f 72d3 6cdc c914     ..Ss..9.?3.r.l.. 803b9e7:	6742 a0ea fbb6 3cae cd81 8425 f171 7f7c     Bg.....<..%.q.|. 803b9f7:	006b 57e5 2d94 3fd1 3c52 41cf 65bc a16d     k..W.-.?R<.A.em. 803ba07:	7065 ed11 e634 c789 b5cb 79cb 622a ef66     ep..4......y*bf. 803ba17:	b575 bb61 bde4 457a 05b5 5513 e28c 365e     u.a...zE...U..^6 803ba27:	42a2 279b 06c4 fb92 401c 66a7 ccc6 e433     .B.'.....@.f..3. 803ba37:	0c77 58cc 4f22 42f2 cc95 cd0b e8b5 2d50     w..X"O.B......P- 803ba47:	60a1 5e2b e9cf 19c5 6fd7 2531 11fb 78a9     .`+^.....o1%...x 803ba57:	0859 a237 4a93 47b1 ef53 22d4 16a8 ebba     Y.7..J.GS..".... 803ba67:	7392 a97a 8570 f9be 7cba ea84 0efc 5708     .sz.p....|.....W 803ba77:	c266 832c d0cf 6356 87f3 5899 1398 f1b6     f.,...Vc...X.... 803ba87:	eed1 26de 0cda 8323 02ae 5a29 bb9c 047b     ...&..#...)Z..{. 803ba97:	9684 a1f8 2d37 f4eb f1da cbe9 bebb 2ffd     ....7-........./ 803baa7:	6bae 67cc 98e5 4e81 332b 0b10 1b2e ca70     .k.g...N+3....p. 803bab7:	d3b4 e253 3361 9ad8 489f a186 dea0 48a9     ..S.a3...H.....H 803bac7:	8e79 85fd 6442 bd03 4626 14e5 60dd 037e     y...Bd..&F...`~. 803bad7:	27b5 4fe6 42f4 d013 447c e0e3 191f 05fd     .'.O.B..|D...... 803bae7:	9915 e741 405f e73c 720c a09f 5348 6f33     ..A._@<..r..HS3o 803baf7:	3948 b24f e690 8372 c6af d184 d076 3400     H9O...r.....v..4 803bb07:	3759 031d 5fd8 38b1 58a4 49e8 c1f0 23ca     Y7..._.8.X.I...# 803bb17:	2b92 dbf0 34c6 0de7 7971 55cc 14d2 65b7     .+...4..qy.U...e 803bb27:	07f5 1040 7d6b d55f 7fed ab6d b877 42d6     ..@.k}_...m.w..B 803bb37:	e941 2be6 0700 6633 eb8e 1ca2 26db 34c3     A..+..3f.....&.4 803bb47:	4f28 d249 814f c217 7cb0 af4d ac9b 2afb     (OI.O....|M....* 803bb57:	ec9b 4c5b 19b3 49f4 f0c3 55cb 3744 ab1b     ..[L...I...UD7.. 803bb67:	75cb e027 d5f4 a868 42df c8a1 c4ee 568e     .u'...h..B.....V 803bb77:	d2ea e44b 468c 8638 e622 2a18 e413 9c8a     ..K..F8."..*.... 803bb87:	48ed d26c 4c99 a153 5a3a 6b24 fc43 a760     .Hl..LS.:Z$kC.`. 803bb97:	6415 3e50 df86 5609 8663 c905 4e6e e8d1     .dP>...Vc...nN.. 803bba7:	fc2b 9a94 7ece 5783 0387 a0e5 2265 b13a     +....~.W....e":. 803bbb7:	d9e8 b581 273a 07fe 4045 3f09 e923 d047     ....:'..E@.?#.G. 803bbc7:	ea2c c20e 0c41 d78d c599 8f58 f0d7 5655     ,...A.....X...UV 803bbd7:	1bfe ccb4 0011 3580 2140 9e45 8913 7e76     .......5@!E...v~ 803bbe7:	f435 284f d677 fd55 7027 817f 76cb e564     5.O(w.U.'p...vd. 803bbf7:	3169 d8a8 834e 9537 acbd 5bb7 de8d 356e     i1..N.7....[..n5 803bc07:	6b61 e3aa cba2 d3ab 0bd2 b81c 79ec efed     ak...........y.. 803bc17:	ae07 56b5 c87e 7f35 c717 bba7 c6e9 56e6     ...V~.5........V 803bc27:	15ce 8a4f 05f7 7c86 6d11 be6c ae8d 67b1     ..O....|.ml....g 803bc37:	b43c 3d8f fefc 4905 2b6e 0ce6 000b 2f00          <..=...In+.....0803bc46 <data__settings_html>: 803bc46:	732f 7465 6974 676e 2e73 7468 6c6d 0000     /settings.html.. 803bc56:	5448 5054 312f 312e 3220 3030 4f20 0d4b     HTTP/1.1 200 OK. 803bc66:	530a 7265 6576 3a72 6c20 4977 2f50 2e31     .Server: lwIP/1. 803bc76:	2e33 2031 6828 7474 3a70 2f2f 6173 6176     3.1 (http://sava 803bc86:	6e6e 6861 6e2e 6e6f 6e67 2e75 726f 2f67     nnah.nongnu.org/ 803bc96:	7270 6a6f 6365 7374 6c2f 6977 2970 0a0d     projects/lwip).. 803bca6:	6f43 746e 6e65 2d74 654c 676e 6874 203a     Content-Length:  803bcb6:	3434 3738 0a0d 6f43 6e6e 6365 6974 6e6f     4487..Connection 803bcc6:	203a 6c43 736f 0d65 430a 6e6f 6574 746e     : Close..Content 803bcd6:	742d 7079 3a65 7420 7865 2f74 7468 6c6d     -type: text/html 803bce6:	0a0d 6f43 746e 6e65 2d74 6e45 6f63 6964     ..Content-Encodi 803bcf6:	676e 203a 7a67 7069 0a0d 0a0d 8b1f 0008     ng: gzip........ 803bd06:	0000 0000 0a04 5bdd 736b d51b fe19 cb2b     .......[ks....+. 803bd16:	3286 d8f2 2d92 205f 2c71 da75 6524 5332     .2...-_ q,u.$e2S 803bd26:	8788 0538 793e d2d6 5ada ed22 d58a 4eca     ..8.>y...Z"....N 803bd36:	c99a 2e4c d2d0 8521 8424 50c2 0848 7ebd     ..L...!.$..PH..~ 803bd46:	35a1 e6e4 f95c ab0b d47f 79e7 d9cf a49b     .5..\......y.... 803bd56:	e595 7ce0 87e9 bb38 3dab 7de7 7bce df7f     ...|..8..=.}.{.. 803bd66:	7673 a5e9 27a3 ac8e bbbc cc7c 0468 66ad     sv...'....|.h..f 803bd76:	8975 8d7f e5a6 546e 134c b677 af55 b52e     u.....nTL.w.U... 803bd86:	c0ec 6a32 cb0d d8ef c541 06ec c5eb f883     ..2j....A....... 803bd96:	9e4d 8236 5da0 dfb4 3aef 159b 9df3 a9e2     M.6..]...:...... 803bda6:	155f 788f b6ad 3815 4d6b 34db 9e6a d81b     _..x...8kM.4j... 803bdb6:	862e 3f1c b156 1beb 3476 b5c8 765a dcc5     ...?V...v4..Zv.. 803bdc6:	ec74 b6ad 07e7 f7a9 9cb6 d07a d4a8 4ded     t.........z....M 803bdd6:	66a7 e517 ca66 9d71 b1c0 c59a cd4e da6a     .f..f.q.....N.j. 803bde6:	f295 cb54 e33a bab4 f8ad dbbe 7db1 b1b9     ..T.:........}.. 803bdf6:	b240 0332 8112 3413 6aed 4df8 ddb8 d8bb     @.2....4.j.M.... 803be06:	d4bb 10bb 0b3e 861f c28f a59d f569 52cb     ....>.......i..R 803be16:	71d3 1b4f df0d af5e 2d98 71cb b54b c74e     .qO...^..-.qK.N. 803be26:	7c34 59bb 3b31 d9c1 dda6 d869 8076 3a79     4|.Y1;....i.v.y: 803be36:	df35 0769 7046 0db6 81b0 267d 7e98 dacf     5.i.Fp....}&.~.. 803be46:	d4b4 d353 f8e8 8ab5 7be9 bb4d 5ef4 2f07     ..S......{M..^./ 803be56:	ab4f b8e7 2c50 f35b 67ea 4bab 6775 70d3     O...P,[..g.Kug.p 803be66:	15ea e6b3 dd75 b8a0 5be5 bc6d 799a f758     ....u....[m..yX. 803be76:	5cb6 6b3c c357 80af a9f3 fbc6 7c38 de1c     .\<kW.......8|.. 803be86:	5deb c230 7a1f c397 b8bb 64bc 3f84 49f1     .]0..z.....d.?.I 803be96:	2f78 107c 876e 7a77 f017 7dc3 3ddc 7a35     x/|.n.wz...}.=5z 803bea6:	8c7f 307e 3a96 cb6d 114d bb74 35ad 37db     ..~0.:m.M.t..5.7 803beb6:	0bab 8780 aa5f ef46 8622 c23c a7d0 dde1     ...._.F.".<..... 803bec6:	d2d2 1b74 8170 0526 01a9 dbc1 56cb b3a7     ..t.p.&......V.. 803bed6:	f9e5 e075 f75a 96fc d561 c702 a173 060f     ..u.Z...a...s... 803bee6:	de44 b0f0 b69e 21d7 8087 76fa 84f8 c228     D......!...v..(. 803bef6:	026d 16dc 3f66 7dee a86a 3f27 3ef6 a2c4     m...f?.}j.'?.>.. 803bf06:	1aee 8fe1 bca4 7143 e5e0 bd27 06cb 8516     ......Cq..'..... 803bf16:	16d7 4205 6ec7 b5da 50c0 d14a 36f4 771c     ...B.n...PJ..6.w 803bf26:	d795 5aa6 0648 29d1 1b08 d2ea c004 498a     ...ZH..).......I 803bf36:	456c 18aa 00a4 5e30 289b 4d8d d9ab bc85     lE....0^.(.M.... 803bf46:	6acc bd78 71f7 83f8 66f0 7487 f009 a819     .jx..q...f.t.... 803bf56:	015e 9f07 3f85 2c02 00c1 d2c5 1ab4 3fda     ^....?.,.......? 803bf66:	3505 accb 6ff2 1bde bd56 40e5 f27a f25f     .5...o..V..@z._. 803bf76:	b4ce 505a 6975 57cd 1cff ddb7 640d 5e35     ..ZPui.W.....d5^ 803bf86:	deb3 aade 5a9b daa7 9f11 ae87 68c8 ad37     .....Z.......h7. 803bf96:	dd9a 10c0 afdb e198 4a77 bd72 853f e13b     ........wJr.?.;. 803bfa6:	34c3 afb3 0cc4 de11 3341 df9d 0183 33b3     .4......A3.....3 803bfb6:	9710 a675 bb69 301b b329 aafc 39a9 0c4c     ..u.i..0)....9L. 803bfc6:	0c20 0d8e 73e2 9161 89cf 1bef 1532 ff1c      ....sa.....2... 803bfd6:	d859 7f48 3634 6edf 16db 865c cab2 713d     Y.H.46.n..\...=q 803bfe6:	96f0 bc20 3e14 9683 2342 577a a5a8 07fb     .. ..>..B#zW.... 803bff6:	2dfa ac85 ad9f e80a 375a 3c08 ab57 d374     .-......Z7.<W.t. 803c006:	d8eb 4245 c22f c2a7 62de ae01 ae05 7f81     ..EB/....b...... 803c016:	3ac5 fa9f c745 b4dd c0fd be86 a568 6f0e     .:..E.......h..o 803c026:	6742 bdb5 5599 4963 9629 d0a2 aee9 1cb5     Bg...UcI)....... 803c036:	52fa 1c65 54d1 6e9d 66ad 5283 9732 d6e7     .Re..T.n.f.R2... 803c046:	4e9a 34ed 979c 741d 177d dd7e 9dae a23e     .N.4...t}.~...>. 803c056:	eccc a3ed 8985 97a9 59ca 3f82 5f81 30db     .........Y.?._.0 803c066:	e118 d419 9a66 1786 8e79 7fc4 c268 b5ae     ....f...y...h... 803c076:	66b9 d0f9 fe35 ac57 ebdb b756 e349 db96     .f..5.W...V.I... 803c086:	e775 5d8c 062f e45e 3306 8a63 9cf4 3934     u..]/.^..3c...49 803c096:	c87a 92ea 5da5 e3b4 edd6 2533 a586 7178     z....]....3%..xq 803c0a6:	7450 408f 2cac 688a 01c4 e7c5 ed96 8b76     Pt.@.,.h......v. 803c0b6:	1c0e 7e84 dbb5 988c 3403 2211 aa5c 79b7     ...~.....4."\..y 803c0c6:	4551 1868 b84a de1a e712 4db6 d3ee f747     QEh.J......M..G. 803c0d6:	563e f9d4 7a7e 020c e064 1bb8 2c9d 3a5e     >V..~z..d....,^: 803c0e6:	4dd0 bf44 3161 6b89 9fe8 71c5 3dd7 4335     .MD.a1.k...q.=5C 803c0f6:	fc35 4112 03e1 d9d1 8027 07f0 0148 6b0e     5..A....'...H..k 803c106:	a0d8 d386 3c09 6cff ee34 bd2f 90cb 1c1b     .....<.l4./..... 803c116:	f873 7938 ba7f 088b 203f c632 36a5 ab1d     s.8y....? 2..6.. 803c126:	550a b312 8bc1 7946 6028 5e3c 2b02 2ef9     .U....Fy(`<^.+.. 803c136:	d2d4 23a9 7bd8 716e 3bcd 3643 7e73 1989     ...#.{nq.;C6s~.. 803c146:	99fc d017 28a5 c47c a9bc 386d 2849 3e59     .....(|...m8I(Y> 803c156:	7271 2305 a0a3 5818 786b a30f 6ab4 7ba8     qr.#...Xkx...j.{ 803c166:	82f5 4dd0 439e f462 6962 1ff6 b8e8 76ad     ...M.Cb.bi.....v 803c176:	0462 ef8a d62b 599a f93d 1be6 09cb 321f     b...+..Y=......2 803c186:	1c63 ebd7 9a22 b785 b1c1 e10f 115d 1e29     c...".......].). 803c196:	2fc1 1620 7983 208f 1ced 1f59 ed70 8b60     ./ ..y. ..Y.p.`. 803c1a6:	a8e3 f012 f4ce 127e 1865 7706 94d5 8803     ......~.e..w.... 803c1b6:	4c2b f473 1704 c0c4 e62e f440 7aad c1d7     +Ls.......@..z.. 803c1c6:	c362 a0ab 3da2 1318 5181 70fa 0dc0 0ac0     b....=...Q.p.... 803c1d6:	4186 0d66 d24f d36a 06a7 5594 7196 3ae0     .Af.O.j....U.q.: 803c1e6:	05f2 445b 89b7 c07c ea65 1146 ee69 c7f3     ..[D..|.e.F.i... 803c1f6:	d8a6 942b 623d 9c6e 6449 625e 6422 1074     ..+.=bn.Id^b"dt. 803c206:	19e0 379c af7c 67db 35fb 69af 3930 2d59     ...7|..g.5.i09Y- 803c216:	7aaf abeb 14b3 b5a8 3766 280d d30f d733     .z......f7.(..3. 803c226:	2782 be3c eb1c c0c3 c2eb 727e f98f 1952     .'<.......~r..R. 803c236:	c4b6 19d1 03b0 3243 937e 5d89 3b3c 3635     ......C2~..]<;56 803c246:	294e c544 0853 8254 3c92 2c88 1869 d9de     N)D.S.T..<.,i... 803c256:	ca78 ea01 c019 2fb3 300e f420 2621 9573     x....../.0 .!&s. 803c266:	0ff1 3c83 2637 b9e4 0717 1019 20fa 8dcf     ...<7&....... .. 803c276:	3c84 263f f9e4 0717 1019 20fa 8fcf bc84     .<?&....... .... 803c286:	2630 a464 2fec 934a a101 f20f 0c42 2079     0&d../J.....B.y  803c296:	0c36 6fa8 3cda 047d d5ec d79a 756a a451     6..o.<}.....juQ. 803c2a6:	cd9d d95f 785b 40cf a861 dbde 95f7 c3f5     .._.[x.@a....... 803c2b6:	ab50 7feb 4e9a 9386 a705 612c 77cb 7b02     P....N....,a.w.{ 803c2c6:	e59c cdbc 5f17 7ae0 8006 05a8 3c0d be1e     ....._.z.....<.. 803c2d6:	2522 f4c2 28df aab6 1740 70f9 e3ed fa21     "%...(..@..p..!. 803c2e6:	c77c 323e ee26 bf97 cc6f 9047 6562 d59b     |.>2&...o.G.be.. 803c2f6:	20b1 c1bc 11aa 1841 0c21 ef71 8aa9 bab0     . ....A.!.q..... 803c306:	64ac 6e5c a3cc 67de 1fe5 214d 5837 a053     .d\n...g..M!7XS. 803c316:	f0ca 2500 d058 8b88 156b d1d0 6808 c7a8     ...%X...k....h.. 803c326:	1037 1f19 594a f48a bc36 7ea7 e698 bc20     7...JY..6..~.. . 803c336:	ad22 408f f215 4f32 8abd 12f8 1fa0 7fc2     "..@..2O........ 803c346:	aa99 eeb5 6320 1861 0b95 ff1d c132 bfa4     .... ca.....2... 803c356:	2cb8 3233 cf23 6c78 c320 16bb 4ade c7ca     .,32#.xl ....J.. 803c366:	1d6c 9f0b d4cd 58c5 8e41 bc96 9713 0298     l......XA....... 803c376:	0347 4856 85a7 9103 4fa3 3689 6e66 681c     G.VH.....O.6fn.h 803c386:	3147 5bfe 0670 083d 4e74 a662 ac7f f9aa     G1.[p.=.tNb..... 803c396:	607d 97fb f2c2 e867 3c5c db05 3d1f db37     }`....g.\<...=7. 803c3a6:	4f7d 5db3 c62e fb65 d057 7626 7604 73a4     }O.]..e.W.&v.v.s 803c3b6:	ed02 1e42 8e85 4b05 661c 926e 0f60 08ef     ..B....K.fn.`... 803c3c6:	1840 e148 41d9 de79 1019 44cf 279c ad8f     @.H..Ay....D.'.. 803c3d6:	948c d6a6 a437 4307 cdf5 10f7 a9dd 726f     ....7..C......or 803c3e6:	fff1 f0b4 6d69 5970 1e35 cde6 fb24 994e     ....impY5...$.N. 803c3f6:	733d 5dd2 d99c 89ae 7efa b4b9 d9b4 bcb1     =s.].....~...... 803c406:	7546 6684 4ea8 2374 a6e7 6922 9335 4a8d     Fu.f.Nt#.."i5..J 803c416:	ce31 4a5a e887 a37a d6d6 459e 50ae 4bbc     1.ZJ..z....E.P.K 803c426:	0ea5 834f 93fb 1581 85d8 b409 5002 b29f     ..O..........P.. 803c436:	75b7 2a19 5aad c71b 8b97 e8d0 e2bb 2f38     .u.*.Z........8/ 803c446:	728a 6eb3 f940 b6ca a257 68f9 ea8a 4334     .r.n@...W..h..4C 803c456:	38b1 0e15 b69d af55 28a3 dad4 c315 dc8f     .8....U..(...... 803c466:	9647 4802 cdc7 ed56 b750 b9e3 ecd3 b888     G..H..V.P....... 803c476:	4d10 5993 2efe 78c9 4904 43c5 177d bab9     .M.Y...x.I.C}... 803c486:	f414 ad8d 61b1 047f 7dae 52c2 df6a 12c1     .....a...}.Rj... 803c496:	0284 ab8a 2021 565b 74e7 cc3e 6bf0 4a48     ....! [V.t>..kHJ 803c4a6:	937c 5bea c5de 430d 2260 fdb0 aa62 a1c2     |..[...C`"..b... 803c4b6:	ca90 8475 6d35 ea74 249a 58a5 a5d4 a46b     ..u.5mt..$.X..k. 803c4c6:	e31b 12a5 d0ac 2aa2 3317 c90d f63b 2b56     .......*.3..;.V+ 803c4d6:	36b2 1518 aec2 b3c2 d7b3 7e8d db33 d4bc     .6.........~3... 803c4e6:	007f e1d0 07ec 0431 fbfa e47b f329 d508     ......1...{.)... 803c4f6:	d3a3 c59d 61a8 b5a7 6a3f e9a7 967e c469     .....a..?j..~.i. 803c506:	b45d 2b35 b158 413b dce1 d77a 2dad f2be     ].5+X.;A..z..-.. 803c516:	d77e 0e0b 11a3 56d3 e757 9c61 dae8 f1b1     ~......VW.a..... 803c526:	adbd 8dba 370c 6e06 a9ef 4b87 8ad3 ba12     .....7.n...K.... 803c536:	fb79 bf47 74ee 5bb8 61b3 40a7 017c 3f00     y.G..t.[.a.@|..? 803c546:	4ad1 47c3 f229 c46c 333f 85c0 f0ed ba01     .J.G).l.?3...... 803c556:	9f5a 16e2 f096 2002 4e05 a34b e299 e2e5     Z...... .NK..... 803c566:	05cb 2d85 ef00 9356 271f d24a 14ea 0db6     ...-..V..'J..... 803c576:	1c47 4ba3 2217 ec23 6e28 a47f 5d57 2380     G..K."#.(n..W].# 803c586:	09dc 4e9f abec ebd1 6d26 db39 4778 9ddf     ...N....&m9.xG.. 803c596:	1326 33af 0576 4989 f50d bbb0 f769 ed90     &..3v..I....i... 803c5a6:	e7a2 6350 5342 6511 3555 c3de 1be1 313a     ..PcBS.eU5....:1 803c5b6:	f7d7 a6a8 1f9c 79db df45 f35e 763c 6ea3     .......yE.^.<v.n 803c5c6:	1789 ef48 3d62 45a0 dcfc bbf9 f46d d921     ..H.b=.E....m.!. 803c5d6:	bb4b 2d89 e91f 4bea caf6 12f4 b92d e15b     K..-...K....-.[. 803c5e6:	98cd 60c0 33fb d91b e376 b63b f515 9bf6     ...`.3..v.;..... 803c5f6:	fe06 aefc d4e3 c9f2 6f65 f6cb ac4f 67af     ........eo..O..g 803c606:	87dc 5662 76ca 99f7 b169 caef e003 afad     ..bV.v..i....... 803c616:	a8a7 1f73 850d ef4a 2893 e8b9 65e7 503a     ..s...J..(...e:P 803c626:	2144 7742 f72c 2114 3686 4737 db6c 47ed     D!Bw,..!.67Gl..G 803c636:	6110 6c4f 1044 eb79 4757 9f8f 293a a6fb     .aOlD.y.WG..:).. 803c646:	bc12 c210 9594 9d71 dd91 acfe cf0c acef     ......q......... 803c656:	2eda 582b f36c 5ad0 f7d2 b649 7607 dd3a     ..+Xl..Z..I..v:. 803c666:	2a4e 93df 31da 922d 34bc f30e d3b1 da9c     N*...1-..4...... 803c676:	cd37 3bea 1a6b b076 0b75 5f75 a23d 4f5e     7..;k.v.u.u_=.^O 803c686:	5f44 18e5 a009 d128 6548 f86e 1f51 5009     D_....(.Hen.Q..P 803c696:	58db 5883 e891 5022 7a5d 3811 e515 a518     .X.X.."P]z.8.... 803c6a6:	4dba 5935 7686 888d 5b98 91a6 f432 b7e7     .M5Y.v...[..2... 803c6b6:	e77a 7648 f79e 7a0e 0d97 cd4e 0160 e090     z.Hv...z..N.`... 803c6c6:	9c06 ace1 6d3d 688f c9d2 8401 68bb 73f9     ....=m.h.....h.s 803c6d6:	f0bf 2145 0415 5231 45de 7748 8709 d8bb     ..E!..1R.EHw.... 803c6e6:	b0e9 13d3 6cfb 56a8 6837 1328 5755 7189     .....l.V7h(.UW.q 803c6f6:	3ef2 34df e2e3 260b 13b6 da6f 127c 3873     .>.4...&..o.|.s8 803c706:	3ded d7d3 2791 6d95 489c c6bd b4ca 36ff     .=...'.m.H.....6 803c716:	6f90 ad32 46e3 1196 18ee 41d8 0d92 2421     .o2..F.....A..!$ 803c726:	08be 838f 50e1 eded 2dec a715 5274 dc56     .....P...-..tRV. 803c736:	6a0d 0c23 5fe2 d952 08f0 0e06 88e6 477b     .j#.._R.......{G 803c746:	8e72 2f9d c1ed 9ed2 dfb5 a298 9bae b636     r../..........6. 803c756:	874c 174d 425b 769b 8bc1 aefe b15b 5b3c     L.M.[B.v....[.<[ 803c766:	11c2 c2a1 6feb 18ac 5eb8 999c 3099 efc2     .....o...^...0.. 803c776:	0ba5 0dc5 5624 8fc8 0ca6 1328 415a d9e0     ....$V....(.ZA.. 803c786:	fc7d 4dd5 a4b0 935b cfed cb15 d4e5 658c     }..M..[........e 803c796:	a335 fc24 32e0 68d6 90a0 41db 7e1d f7b9     5.$..2.h...A.~.. 803c7a6:	f0e7 a621 8dbe 9f29 07e0 3c64 7bc3 c54c     ..!...)...d<.{L. 803c7b6:	4cf2 c26a 3519 67e1 4518 0f48 b029 719c     .Lj..5.g.EH.)..q 803c7c6:	9287 8761 a8d4 52ab 48f6 9911 ea3b 3260     ..a....R.H..;.`2 803c7d6:	a0ea f51a da1d 3c03 03b6 4056 5045 b0b5     .......<..V@EP.. 803c7e6:	c064 f21d ad28 e839 1596 90b0 877f 4557     d...(.9.......WE 803c7f6:	be9f 4be2 07f8 431d 9d42 ee83 84b5 6bce     ...K...CB......k 803c806:	9ad1 1ca4 d9fb bf33 cc9a aafc f99a 549f     ......3........T 803c816:	ee6d 03d2 cf14 30fb 1c1f 3d0b f3e4 d435     m......0...=..5. 803c826:	9b80 58c0 ee71 165a 8a12 8a0b 75e2 2504     ...Xq.Z......u.% 803c836:	78d6 a5aa 3e39 6bb5 7640 a307 1d50 f682     .x..9>.k@v..P... 803c846:	415f 0d17 5c9a f3ba dd09 4579 2af7 3e46     _A...\....yE.*F> 803c856:	1916 9ba5 033a d3f4 1212 56f5 d43b bbc8     ....:......V;... 803c866:	177b ee85 5176 14c2 308c 7c47 2573 3f04     {...vQ...0G|s%.? 803c876:	3665 8b73 b473 6f9a 577a 7e90 807c e429     e6s.s..ozW.~|.). 803c886:	9934 b74e 8eef 2198 bc36 0539 9afe e808     4.N....!6.9..... 803c896:	1601 98fd 574d b900 6626 7102 2ef5 b116     ....MW..&f.q.... 803c8a6:	fdd5 8e90 104a 80de 5229 605b e492 4915     ....J...)R[`...I 803c8b6:	12e6 594a 36b8 dbf0 079c 5163 51f1 3017     ..JY.6....cQ.Q.0 803c8c6:	0e75 20db dc8a d369 ae66 cf99 6483 45c8     u.. ..i.f....d.E 803c8d6:	1e68 6652 0e88 1680 1b5d 99e5 37b9 2fc2     h.Rf....]....7./ 803c8e6:	8200 84de 08ea d04a deb5 18c7 2b9c d8ef     ......J......+.. 803c8f6:	800f 52db 8b0b c18d d8d2 fead 8c5c 19f1     ...R........\... 803c906:	dd0f 0489 5e71 2b01 5fc4 e3b9 3b51 8ccc     ....q^.+._..Q;.. 803c916:	485a 813d e802 d17b 0016 a5ce ac9a 5273     ZH=...{.......sR 803c926:	337b 09c8 e692 3c84 772e 0405 7b58 38e2     {3.....<.w..X{.8 803c936:	4822 01de 3b91 c2bc 7453 a4ac 08e1 8777     "H...;..St....w. 803c946:	753b 6660 bc27 c79f 44d1 934e 4e5a 915f     ;u`f'....DN.ZN_. 803c956:	e18d 428f 8e80 f297 3fe2 769c d4e4 fe78     ...B.....?.v..x. 803c966:	e81f 6681 d5c0 07de 4c78 cd43 ca5d 6c5c     ...f....xLC.].\l 803c976:	932f e55a a6be 304c c944 be87 29f8 784f     /.Z...L0D....)Ox 803c986:	fb50 fde9 0599 c4e3 fe25 01de 6bb1 36b2     P.......%....k.6 803c996:	3578 fd21 ef7d 3142 96fc 1a8a 2ae6 6279     x5!.}.B1.....*yb 803c9a6:	2025 5628 53c2 e07b 660f a904 4e3c 7624     % (V.S{..f..<N$v 803c9b6:	393d a91f 6016 b114 45fb ee11 cb00 aad7     =9...`...E...... 803c9c6:	0373 5e31 ddc2 98e7 8c0f 9ce2 271a 5cfa     s.1^.........'.\ 803c9d6:	fab8 6f8e 358b b4e1 3e65 c8b5 4194 404d     ...o.5..e>...AM@ 803c9e6:	3b42 a0e4 0e29 0d0a ff37 e1c4 6a4d f787     B;..)...7...Mj.. 803c9f6:	f939 39ae 1146 5c25 dec3 100e c830 bb11     9..9F.%\....0... 803ca06:	1de2 9008 ac03 051f 76e5 23ef 178c 9d27     .........v.#..'. 803ca16:	324f b946 50a0 57d2 c13e d894 c293 c424     O2F..P.W>.....$. 803ca26:	df4c 858e d3c3 ff2b 2919 f2a0 e26a c8a0     L.....+..)..j... 803ca36:	5a43 2e5d 1637 af4a 08a5 2fcd d6c0 9688     CZ].7.J..../.... 803ca46:	ecc7 1ca8 dc08 0879 b893 a933 0ee3 2de2     ......y...3....- 803ca56:	3187 02d1 0a42 0d0f f0c8 a09e fe45 f1af     .1..B.......E... 803ca66:	bae7 2498 4e44 10ea 0d49 8da4 fc31 2f32     ...$DN..I...1.2/ 803ca76:	87f9 23dc 926b 99e9 509d a80a f286 206d     ...#k....P....m  803ca86:	ef89 3a93 43be 31d5 420c 24c3 58d2 9510     ...:.C.1.B.$.X.. 803ca96:	adba 0d2c b253 7849 bf01 067d b0a2 f90e     ..,.S.Ix..}..... 803caa6:	277b 098f d249 a931 8e93 6aff c091 30cc     {'..I.1....j...0 803cab6:	77c9 8e44 9fa9 9ae1 2655 b13a bab8 1d09     .wD.....U&:..... 803cac6:	ec11 14f2 7924 1734 921a 9acb 7143 01f8     ....$y4.....Cq.. 803cad6:	d119 abd9 76f0 ec14 2636 8987 2262 1bf0     .....v..6&..b".. 803cae6:	7053 371f d0d7 a952 64d5 a759 d756 1265     Sp.7..R..dY.V.e. 803caf6:	0706 a3e4 882a f20b 486c 9f17 fecb da84     ....*...lH...... 803cb06:	10e4 24ef eb21 2c33 ca09 c79e 549f 3876     ...$!.3,.....Tv8 803cb16:	d659 94fe 7a6a ff07 5b00 7084 3c1b ca52     Y...jz...[.p.<R. 803cb26:	8641 81cb bed4 81d8 7dd5 1fc3 42b0 7eb8     A........}...B.~ 803cb36:	7d51 5e2c 3ddc 521d f12e 8b94 928d 9bdd     Q},^.=.R........ 803cb46:	8710 420a a7f4 85d7 ca87 ded3 1a81 68a9     ...B...........h 803cb56:	77f1 e9e1 317d 1256 027b a5c3 4049 12d9     .w..}1V.{...I@.. 803cb66:	c952 b416 61b4 d952 0a3f 1196 ffd9 20b7     R....aR.?......  803cb76:	a989 b2c9 49fd 85f8 131c b97e aa48 3632     .....I....~.H.26 803cb86:	7195 7094 c705 0bf7 0e01 a247 df13 4677     .q.p......G...wF 803cb96:	091c f849 b42d db9d 30d0 64aa ca6d 460b     ..I.-....0.dm..F 803cba6:	6ea7 55b9 5baf ca53 c1bc 9e73 57b9 3f71     .n.U.[S...s..Wq? 803cbb6:	2c35 259f 9cd2 f694 af0e 9356 ac93 fd83     5,.%......V..... 803cbc6:	aa0d d8b1 38f3 49dc 001f 3456 5446 5946     .....8.I..V4FTFY 803cbd6:	7110 9de1 1c92 a659 d5db 1ab8 3309 ab6e     .q....Y......3n. 803cbe6:	278f 34c6 4550 2865 ccd0 f791 6346 d5b1     .'.4PEe(....Fc.. 803cbf6:	f68a b2d0 86d0 8781 e5f8 a548 2fde 6f8d     ..........H../.o 803cc06:	2e47 cf63 2f9d ec7d 2863 d57a 88d7 2b09     G.c../}.c(z....+ 803cc16:	a64e 136e 94dd de6d 3813 e262 a8e7 a1e6     N.n...m..8b..... 803cc26:	6972 f676 52d5 4e79 99fe cc55 2e52 0275     riv..RyN..U.R.u. 803cc36:	0adf adba 92d9 cddf d5d3 0783 e54b d7f9     ............K... 803cc46:	b34a f30b d9a5 5439 18e5 bb37 71e7 8808     J.....9T..7..q.. 803cc56:	3718 ce37 8f38 806b dc7d 1440 0cba 96af     .77.8.k.}.@..... 803cc66:	a331 7b7c 7340 e82f 759c 2871 5234 f4b8     1.|{@s/..uq(4R.. 803cc76:	9193 6312 8fff 0619 dffd 3453 3e0e 7365     ...c......S4.>es 803cc86:	3e16 f7bf 0321 2c08 e939 c0b1 ee31 88d5     .>..!..,9...1... 803cc96:	d976 4e80 34a3 6c0d 49b3 96e3 7ec7 55d4     v..N.4.l.I...~.U 803cca6:	97ac 46e9 fa4e 6dba 27c8 1546 3e53 5a6e     ...FN..m.'F.S>nZ 803ccb6:	cf2c fccc 6302 d9c6 6bf9 4efb f2cb 8ecf     ,....c...k.N.... 803ccc6:	c838 beaf f800 8e0d 76b0 29d4 ec7e 80b6     8........v.)~... 803ccd6:	ac27 9929 cbaa 80b9 75b8 e63f 4e3e 87ff     '.)......u?.>N.. 803cce6:	f408 6ab3 073f 55ae c73a 903f 6ced e8df     ...j?..U:.?..l.. 803ccf6:	434d 55f5 3b11 5533 5bdd 569a 9307 f8c6     MC.U.;3U.[.V.... 803cd06:	4a9c c6be 7eca 354e 5472 e8f5 6fbb beae     .J...~N5rT...o.. 803cd16:	ec7d a5d7 9c15 2f1a 5101 5db7 e738 17d4     }....../.Q.]8... 803cd26:	b44d e4c9 f914 be14 39de 79e2 1da7 b3bb     M........9.y.... 803cd36:	d2f8 f9cc c389 fc9b 2134 1472 e3bf 42a7     ........4!r....B 803cd46:	f187 1ca2 7fd9 d8fd d80a 72f6 d641 f7a7     ...........rA... 803cd56:	2693 b04a f959 825a bbbb c23c 985c 8738     .&J.Y.Z...<.\.8. 803cd66:	0a2f 1dd6 55bf 5530 04fa b2e6 c477 1ff2     /....U0U....w... 803cd76:	35cd 97c9 f7a4 a0c0 350e 57e5 f85c 89fc     .5.......5.W\... 803cd86:	bb09 3d84 7684 b124 e712 2075 0446 2d97     ...=.v$...u F..- 803cd96:	5faa 139a bcaf 6852 567a 9dfd 7e37 d47b     ._....RhzV..7~{. 803cda6:	15ab f5cc 55ad a405 23c4 53f3 2026 139a     .....U...#.S& .. 803cdb6:	e253 963c a9f9 c4c6 e279 ef4d 0ddf cc05     S.<.....y.M..... 803cdc6:	9277 d00f 6026 f8d7 adca 9d04 bb85 5b3d     w...&`........=[ 803cdd6:	d731 5e9a b4ed cc99 1cb4 967d f394 22a6     1..^......}...." 803cde6:	f03a 4b11 e92e 2fc1 f4b8 2f2e d2be 5522     :..K.../.../.."U 803cdf6:	51fd f654 fea1 6912 43d8 09fd f650 51a7     .QT....i.C..P..Q 803ce06:	740b 9c3d 1a0c 7d67 a2f2 2f2c f1d1 cba1     .t=...g}..,/.... 803ce16:	b48a c0c1 9be9 5b73 42f8 dbc5 812a f28b     ......s[.B..*... 803ce26:	4429 7d49 0859 97e7 14fe 7ce4 52b9 b0d9     )DI}Y......|.R.. 803ce36:	2383 1faf e02f 1bc3 26fc 8522 71c0 02b9     .#../....&"..q.. 803ce46:	882f 104f f60a d954 539e 4d32 99ed 050e     /.O...T..S2M.... 803ce56:	3d40 47c6 6a5e 50a7 3aa6 109c a9b0 e347     @=.G^j.P.:....G. 803ce66:	9d0b 21aa 219f c8e6 4a7b cb78 0a37 cd2f     ...!.!..{Jx.7./. 803ce76:	e740 a70e 763f 37e4 ffa3 1103 a13e 43e5     @...?v.7....>..C 803ce86:	003a 2f00                                        :..0803ce89 <data__role_js>: 803ce89:	722f 6c6f 2e65 736a 0000 0000 5448 5054     /role.js....HTTP 803ce99:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 803cea9:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  803ceb9:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 803cec9:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 803ced9:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 803cee9:	6e65 2d74 654c 676e 6874 203a 3132 3035     ent-Length: 2150 803cef9:	0a0d 6f43 6e6e 6365 6974 6e6f 203a 6c43     ..Connection: Cl 803cf09:	736f 0d65 430a 6e6f 6574 746e 742d 7079     ose..Content-typ 803cf19:	3a65 6120 7070 696c 6163 6974 6e6f 782f     e: application/x 803cf29:	6a2d 7661 7361 7263 7069 0d74 430a 6e6f     -javascript..Con 803cf39:	6574 746e 452d 636e 646f 6e69 3a67 6720     tent-Encoding: g 803cf49:	697a 0d70 430a 6361 6568 432d 6e6f 7274     zip..Cache-Contr 803cf59:	6c6f 203a 7270 7669 7461 2c65 6d20 7861     ol: private, max 803cf69:	612d 6567 383d 3436 3030 0a0d 0a0d 8b1f     -age=86400...... 803cf79:	0008 0000 0000 0a04 58b5 6eef c8db 7f11     .........X.n.... 803cf89:	6615 90ef 2370 479a aee5 2229 1186 2762     .f..p#.G..)"..b' 803cf99:	e4bd 2710 a241 af43 0208 b963 b4bb 5318     ...'A.C...c....S 803cfa9:	de5c 6572 b547 1405 f407 fb53 0fa9 bed0     \.reG.....S..... 803cfb9:	5142 01dc d0fd 19f6 37e4 6fea a497 c944     BQ.......7.o..D. 803cfc9:	1271 2814 0710 eed2 eccc fdfc 8ccd 79b2     q..(...........y 803cfd9:	4dc9 4aae 4bef d19f 2d73 5ccd 9e97 7c50     .M.J.K..s-.\..P| 803cfe9:	933e 09a5 a58f 5c79 fb48 7f71 54f1 6280     >.....y\H.q..T.b 803cff9:	7599 bcf4 fc50 2f24 6373 78f9 9921 5a7e     .u..P.$/sc.x!.~Z 803d009:	a91a 594f 9be1 267c dcd5 80d0 6bcf 66a3     ..OY..|&.....k.f 803d019:	9607 5412 7b41 d49e acd2 7b69 c124 7e50     ...TA{....i{$.P~ 803d029:	7bdd 50a0 2fc7 c6e6 2b5f 2855 7e26 7c38     .{.P./.._+U(&~8| 803d039:	48f6 9f71 0ee0 840f 38fc 931f 21c1 d333     .Hq......8...!3. 803d049:	b350 a852 4f99 f203 e3ed 0909 353a 2ec1     P.R..O......:5.. 803d059:	2164 3c8d ea50 9724 d13e 90aa 0684 87db     d!.<P.$.>....... 803d069:	c0b9 59d1 090e 2167 6594 21d6 54e1 2ccb     ...Y..g!.e.!.T., 803d079:	5f21 a9e1 5f1c accc 4b20 dc1a 6e18 d03c     !_..._.. K...n<. 803d089:	8853 6905 03c0 cf41 994f 64f6 932c 1856     S..i..A.O..d,.V. 803d099:	7df4 4c62 4af5 38fe b597 9719 ccf2 3edb     .}bL.J.8.......> 803d0a9:	d91a 96a3 21f8 7102 7f2a 9178 93be f8dc     .....!.q*.x..... 803d0b9:	30e4 5ae7 2ad5 a133 9965 5e4c 4742 aa19     .0.Z.*3.e.L^BG.. 803d0c9:	964a 1a7e e0b0 6446 c2bf ad95 27f0 0992     J.~...Fd.....'.. 803d0d9:	7da9 a072 8610 ecd2 164d 2495 6101 5555     .}r.....M..$.aUU 803d0e9:	8de4 5f45 abbd 4955 6c68 cc75 8862 352a     ..E_..UIhlu.b.*5 803d0f9:	1678 61b5 f246 2b29 658f 73d2 37db 2249     x..aF.)+.e.s.7I" 803d109:	4743 daf0 dc12 e9bc 3867 c4b0 3af3 13b8     CG......g8...:.. 803d119:	4945 8d92 eafd 3c4c 0fad d694 d8d0 d791     EI....L<........ 803d129:	2a95 396b ef91 404d 613a 4924 940c 9951     .*k9..M@:a$I..Q. 803d139:	6fc7 e4de d5a1 e168 4a4b 1c47 08b4 5c07     .o....h.KJG....\ 803d149:	ec7e c793 2b5a 284d 3a5d 4aab 8be1 2e5e     ~...Z+M(]:.J..^. 803d159:	2130 2b5e 52ed 532d b7da a416 07c9 b4b2     0!^+.R-S........ 803d169:	5fde 141c aeac b39f 6219 835d a585 de2e     ._.......b]..... 803d179:	893c 7e62 0d3f 590b 9b1e cc69 0307 be9a     <.b~?..Y..i..... 803d189:	6fe1 0843 7c7e 770a cb3d 786b facd c38f     .oC.~|.w=.kx.... 803d199:	275d 095b bcd4 a666 6d79 e1eb 31a1 4f3a     ]'[...f.ym...1:O 803d1a9:	a6e7 8f95 f0a0 03e4 2277 3eb7 1e41 e1c1     ........w".>A... 803d1b9:	59f5 f86e d5d4 ab09 6125 d305 9ab3 ac8c     .Yn.....%a...... 803d1c9:	915c f26c d58d b0d3 b446 fb10 082f 337d     \.l.....F.../.}3 803d1d9:	1b7c e7db b11c 6c2f d182 4538 4e40 6e62     |...../l..8E@Nbn 803d1e9:	08a5 c8bd 6acb 206e 6408 f48f a9e2 86fb     .....jn .d...... 803d1f9:	d8dc d3a6 60b2 4379 caf4 747d cb14 9261     .....`yC..}t..a. 803d209:	b1f0 1bd3 d429 69b3 77a3 f640 8486 3e8e     ....)..i.w@....> 803d219:	0341 6592 502f a550 34ad 82a0 5c73 e3c0     A..e/PP..4..s\.. 803d229:	a85e 2bb8 b843 ed2c 8d4c 783d 0ba8 40aa     ^..+C.,.L.=x...@ 803d239:	c498 de7d 4985 4c20 494d fc25 788d b1db     ..}..I LMI%..x.. 803d249:	e024 33c8 be5f de89 0926 2da3 cd68 594b     $..3_...&..-h.KY 803d259:	5673 9c49 df0f 65d2 4a73 a6c8 615e a768     sVI....esJ..^ah. 803d269:	f39b 93a6 122c 2036 1909 bcb4 93a9 1fcc     ....,.6 ........ 803d279:	dd44 b6bb 1f3e ff21 2f51 9fe0 d900 697c     D...>.!.Q/....|i 803d289:	c0d3 a27d af83 46ef 6dd1 db7e 5722 1220     ..}....F.m~."W . 803d299:	2031 27b1 57df 7d88 656d 4686 7b7d 7938     1 .'.W.}me.F}{8y 803d2a9:	848d 8f29 ba7d 275c e36c 4485 746c c2db     ..).}.\'l..Dlt.. 803d2b9:	b823 976e 2ad4 11b9 993d 03ce 1a2f df7a     #.n..*..=.../.z. 803d2c9:	d2b1 de1b 75fb 45e4 c8d1 1bfe 787a ee2e     .....u.E....zx.. 803d2d9:	0c99 bf45 fd7b b9e2 f0ef 31a9 c449 ffe2     ..E.{......1I... 803d2e9:	4e84 580e 4264 ca80 7928 45d6 242b ac34     .N.XdB..(y.E+$4. 803d2f9:	e554 31d3 188c 1193 bffe 6249 20d1 8359     T..1......Ib. Y. 803d309:	72d6 8e40 2fe0 73bf dd36 d878 1ce1 3f88     .r@../.s6.x....? 803d319:	558a d136 2058 6063 d896 2cc6 8386 663e     .U6.X c`...,..>f 803d329:	b1b1 132f 92eb 62b0 96ba 25be 60df 0d16     ../....b...%.`.. 803d339:	06d2 5098 00ab b022 004a 2f51 f9bd f254     ...P..".J.Q/..T. 803d349:	e793 e4ca 02d9 859d 3d18 3097 9375 a4f4     .........=.0u... 803d359:	0694 6269 ef10 a8fa 54c1 96b4 83b1 a3bc     ..ib.....T...... 803d369:	22ee 5d74 8e93 4e76 50d1 10a1 d81a a955     ."t]..vN.P....U. 803d379:	5695 5e59 8730 3d27 42b1 e69e 1e5c 6ff5     .VY^0.'=.B..\..o 803d389:	d93b ba1f c8fa a503 e294 7008 e59c 067a     ;..........p..z. 803d399:	3b7d 8f4d c0e6 b46a eedd 93aa ed7e fb7d     };M...j.....~.}. 803d3a9:	26c4 e1af 979a b34c cd99 7a40 02de 3e21     .&....L...@z..!> 803d3b9:	0859 a2f3 5b51 ada4 36c5 ca67 e559 cdf0     Y...Q[...6g.Y... 803d3c9:	7e1b 72e0 3756 7777 deae 19c9 8bcb e6e5     .~.rV7ww........ 803d3d9:	2161 3e79 c563 ed44 25e7 0bd3 be0b 63cd     a!y>c.D..%.....c 803d3e9:	7b3e 00f0 8de5 6cd2 f2eb 2f4e a9be 9e23     >{.....l..N/..#. 803d3f9:	47a8 f70d cb86 e973 a982 8605 19f4 6a78     .G....s.......xj 803d409:	b05f 30a7 a6ca 4f21 20ec ba15 9144 3c62     _..0..!O. ..D.b< 803d419:	451c 8b71 fc4f fdfe a374 d31f 2d9a ef1c     .Eq.O...t....-.. 803d429:	ab21 74ed b8e4 a4d3 4813 1a78 0191 d00b     !..t.....Hx..... 803d439:	79e5 70ff 0f68 b487 ba13 f0ab d9ae 05e9     .y.ph........... 803d449:	2647 9d77 73d8 dba9 038e eafb a37d 43b6     G&w..s......}..C 803d459:	1cf8 1840 4fb8 b2aa ab6d d24e 3a71 5f3a     ..@..O..m.N.q::_ 803d469:	6406 eb26 1d9a 924b 5e97 feff c2e2 7fef     .d&...K..^...... 803d479:	5b0d 84b2 bcec f231 c89e 50a2 6fde 2e95     .[....1....P.o.. 803d489:	0dc4 4bb4 1e92 5573 d7a0 427f 4b60 9096     ...K..sU...B`K.. 803d499:	a22f dee8 bbbd 2d77 c1ab f160 cc59 426b     /.....w-..`.Y.kB 803d4a9:	67b0 6659 e779 b8ba e4fa 08d6 4572 97f3     .gYfy.......rE.. 803d4b9:	6b18 a791 1218 b6bc bc38 5fef f33d 78a0     .k......8.._=..x 803d4c9:	24eb bf34 f15e b337 c5e5 ef45 4ec8 1796     .$4.^.7...E..N.. 803d4d9:	5b17 6453 c1d2 baef 57f3 6018 4c4b 702c     .[Sd.....W.`KL,p 803d4e9:	a7e9 5087 3c1a a9b4 a213 8dea 73b2 8a15     ...P.<.......s.. 803d4f9:	c852 2ff7 7032 735f 7493 6ff1 9de2 e926     R../2p_s.t.o..&. 803d509:	45c5 eeb4 edb9 d2f8 464d d20f 9e98 bba3     .E......MF...... 803d519:	e0da 49be 60d1 1d37 8d36 8307 6db4 7bac     ...I.`7.6....m.{ 803d529:	65c3 4933 43b6 7f7d dfd6 47bc bbcf 3da7     .e3I.C}....G...= 803d539:	29b6 7f26 3d18 6360 9112 2111 c074 e936     .)&..=`c...!t.6. 803d549:	fa99 a2a8 5cb6 9f98 2eda 7b60 4faf 80e9     .....\....`{.O.. 803d559:	4884 e6fc 10e8 ee13 a7d4 6183 ea73 7ec8     .H.........as..~ 803d569:	2f33 df8a 0761 31c1 d6f1 4f94 5cd4 8ed7     3/..a..1...O.\.. 803d579:	b47b 3b3e 4bcc 6f0c a7bb 25af 2c02 e9ec     {.>;.K.o...%.,.. 803d589:	55d2 5771 9d5f 5dfa 8a81 2640 975d 198a     .UqW_..]..@&]... 803d599:	e286 a375 ae86 55fd 7309 b624 549e 47bd     ..u....U.s$..T.G 803d5a9:	abf7 02cd ae53 18aa cdcf 2122 8243 a151     ....S....."!C.Q. 803d5b9:	8213 e37e 4cfa 5033 8e60 bdb8 1a41 b83a     ..~..L3P`...A.:. 803d5c9:	bf2b 2db9 66ba 7bf8 ca55 5917 f006 9a85     +..-.f.{U..Y.... 803d5d9:	0540 27b9 02b0 24f4 71ed bac8 7566 e9eb     @..'...$.q..fu.. 803d5e9:	99f3 e75a e625 27e1 c393 8967 8a6b a5cb     ..Z.%..'..g.k... 803d5f9:	e34f 3d36 6955 42bb cc3f 9848 24ad 71bf     O.6=Ui.B?.H..$.q 803d609:	967d 4837 c687 9d7c 25a6 453b f6bd 4687     }.7H..|..%;E...F 803d619:	bd4c b646 c5de 97f2 9ae3 f86f f6f9 c335     L.F.......o...5. 803d629:	c874 eddb 1ded 653b d735 6579 a746 172a     t.....;e5.yeF.*. 803d639:	447e 1263 5470 674c 591a e5fd 4ff2 7f97     ~Dc.pTLg.Y...O.. 803d649:	fd5c f567 e7b3 4193 72af b6e7 9122 849e     \.g....A.r.."... 803d659:	0e5a ba55 00bd bad3 4a5d 3483 5e04 5bb6     Z.U.....]J.4.^.[ 803d669:	c128 de37 1d2d 43fd 77f4 0f8c d307 10bc     (.7.-..C.w...... 803d679:	223e ecc3 b3e6 483e 72e9 ec19 ce00 4d56     >"....>H.r....VM 803d689:	66e7 bfc7 be37 006c 1737 8af4 770b 205c     .f..7.l.7....w\  803d699:	7872 6630 4956 d187 c0b9 3deb 4b1d c137     rx0fVI.....=.K7. 803d6a9:	d9ec c4ec 9345 299e 27e3 5ac7 a1cd 45b1     ....E..).'.Z...E 803d6b9:	86e7 85b1 b0b9 e2c5 b135 e0c3 926d e235     ........5...m.5. 803d6c9:	31ba faf0 55e8 2cd0 2d0d 41f5 a9b3 8b6e     .1...U.,.-.A..n. 803d6d9:	db69 15c8 396f d7a9 1d07 990b bb71 1216     i...o9......q... 803d6e9:	f791 4d4d e94d 6fe1 d84f 56fd e5ef a9e5     ..MMM..oO..V.... 803d6f9:	46d4 1b0a bed3 640e 37f5 039b 3f97 fead     .F.....d.7...?.. 803d709:	fab1 f2e5 ab0f 579f bcff e9fc cff2 0c96     .......W........ 803d719:	d6f5 8fdb 44da 66c0 5bdd 6fff c191 2f56     .....D.f.[.o..V/ 803d729:	ab44 9019 c15b fc2d 7114 f02b 95e6 fa40     D...[.-..q+...@. 803d739:	e856 14a1 bb89 069d 8bc8 4e2d 4ace 8b2e     V.........-N.J.. 803d749:	677d 134d 6c65 5d15 eca1 7944 b36d 90f8     }gM.el.]..Dym... 803d759:	67c1 974c 4318 167b 49db 02d8 8cd1 fc69     .gL..C{..I....i. 803d769:	f1a4 664c 2126 aabf 0290 c762 7f15 1b85     ..Lf&!....b..... 803d779:	b5fe 65fa eff5 dfd5 e5ed e0ff c680 ef8c     ...e............ 803d789:	db3f d80d d7f5 a656 2c4a a150 e235 2fb4     ?.....V.J,P.5../ 803d799:	18b1 744a edad 6e4b ea4b 12b9 c6b2 b806     ..Jt..KnK....... 803d7a9:	e1fe c326 1fef 4b4f 57bf 1f25 30ad aa37     ..&...OK.W%..07. 803d7b9:	94ee 8f58 8dd7 0c63 5cc3 405b de34 41d6     ..X...c..\[@4..A 803d7c9:	99cb 953a 714d 67e3 65b1 5ffc 782d e1b4     ..:.Mq.g.e._-x.. 803d7d9:	1349 0000 0000 3800                              I......0803d7e0 <file__history_html>: 803d7e0:	e238 0803 d7f4 0803 d804 0803 04bd 0000     8............... 803d7f0:	0001 0000                                   ....0803d7f4 <data__history_html>: 803d7f4:	682f 7369 6f74 7972 682e 6d74 006c 0000     /history.html... 803d804:	5448 5054 312f 312e 3220 3030 4f20 0d4b     HTTP/1.1 200 OK. 803d814:	530a 7265 6576 3a72 6c20 4977 2f50 2e31     .Server: lwIP/1. 803d824:	2e33 2031 6828 7474 3a70 2f2f 6173 6176     3.1 (http://sava 803d834:	6e6e 6861 6e2e 6e6f 6e67 2e75 726f 2f67     nnah.nongnu.org/ 803d844:	7270 6a6f 6365 7374 6c2f 6977 2970 0a0d     projects/lwip).. 803d854:	6f43 746e 6e65 2d74 654c 676e 6874 203a     Content-Length:  803d864:	3031 3134 0a0d 6f43 6e6e 6365 6974 6e6f     1041..Connection 803d874:	203a 6c43 736f 0d65 430a 6e6f 6574 746e     : Close..Content 803d884:	742d 7079 3a65 7420 7865 2f74 7468 6c6d     -type: text/html 803d894:	0a0d 6f43 746e 6e65 2d74 6e45 6f63 6964     ..Content-Encodi 803d8a4:	676e 203a 7a67 7069 0a0d 0a0d 8b1f 0008     ng: gzip........ 803d8b4:	0000 0000 0a04 568d 6ecd 46db 7e10 8615     .......V.n.F.~.. 803d8c4:	0c09 1011 0b25 14bd c895 50a0 0873 a050     ....%......Ps.P. 803d8d4:	fa01 e683 ac14 11c8 f1b9 9772 5dd9 5652     ..........r..]RV 803d8e4:	02eb fa49 4393 040a 21e8 a5ed fa28 6e06     ..I..C...!..(..n 803d8f4:	0301 eb4e 19e4 6f96 59d4 a92e b5d2 fae0     ..N....o.Y...... 803d904:	7160 667f 6676 f9be c666 5b8b 7d1f fcb2     `q.fvf..f..[.}.. 803d914:	e1ec 7b83 ae5e 160b ec2f c7af cf08 df22     ...{^.../.....". 803d924:	1dc7 3490 145e 89a0 e497 2a44 91d0 e95f     ...4^.....D*.._. 803d934:	f875 de3e a7b5 d6b9 0865 2a4f 475a 97fe     u.>.....e.O*ZG.. 803d944:	e7e1 861f 514b 4494 15d3 df03 044b c0d7     ....KQ.D....K... 803d954:	e551 bdfe d208 7a0c 4e25 880a 9afc a6c2     Q......z%N...... 803d964:	5214 e40f 3436 79d5 4294 134d db08 98cd     .R..64.y.BM..... 803d974:	aa72 6129 4aa1 8308 3668 c82e 2d31 62aa     r.)a.J..h6..1-.b 803d984:	afb7 c814 4376 64d0 8874 3426 0cd5 f362     ....vC.dt.&4..b. 803d994:	f9ba 79b6 de6a 539a b7f3 3cd7 ef33 1fcc     ...yj..S...<3... 803d9a4:	cbcd b9e6 3739 166f 2753 60b2 1f94 b979     ....97o.S'.`..y. 803d9b4:	7584 17e4 f284 a249 ef94 6049 af91 96f4     .u....I...I`.... 803d9c4:	ca81 3401 a83e 4912 ed4b 6de9 5e89 386b     ...4>..IK..m.^k8 803d9d4:	d3d6 a4c7 ee26 f7d4 4c94 5f22 060a c793     ....&....L"_.... 803d9e4:	850a eea7 171c bb0e 4895 f1b7 a522 97b5     .........H.."... 803d9f4:	a230 e454 5273 88af dcf4 4c27 4d61 a62a     0.T.sR....'LaM*. 803da04:	edfb 1e9a 1a43 516a 4be2 7457 fb42 4822     ....C.jQ.KWtB."H 803da14:	1577 482f 3ae7 29e5 4f1c de6c 4910 8367     w./H.:.).Ol..Ig. 803da24:	4c89 5f58 fe08 33e1 6ffd 71af f7db 8a68     .LX_...3.o.q..h. 803da34:	0331 42af 498a 44ea d62b a3eb bd73 b847     1..B.I.D+...s.G. 803da44:	d274 1176 6423 0d7b e6c7 7337 708a 9a9f     t.v.#d{...7s.p.. 803da54:	730b 3cd6 9e6f 2f36 759d 3f2b 41d4 6906     .s.<o.6/.u+?.A.i 803da64:	33ca fce5 cd8d a8af ccf6 602a de82 bf98     .3........*`.... 803da74:	f9cc 357e d7ca 57a2 c5f9 6dbc 33be 50ef     ..~5...W...m.3.P 803da84:	02e5 7f95 e730 abcd 4afd 5539 c85a 65ed     ....0....J9UZ..e 803da94:	4868 69a2 4c8d f21c 5fe3 69f5 2585 20e0     hH.i.L..._.i.%.  803daa4:	c01b 91bf 2ca4 f811 b516 d48e 4588 bb3e     .....,.......E>. 803dab4:	caf4 9615 fde1 8930 32da 9434 4aa0 55c1     ......0..24..J.U 803dac4:	c3eb 3da2 5f6a 576d fcbb f3b9 6cce 11cf     ...=j_mW.....l.. 803dad4:	a8b4 a71d b4b4 3ecb 6559 d18e 3efc f820     .......>Ye...> . 803dae4:	1219 df3c 6127 4691 5ee0 5561 9b9c 52fd     ..<.'a.F.^aU...R 803daf4:	db3f 698a 985e 6bb3 7e64 e842 cccf 8585     ?..i^..kd~B..... 803db04:	dadd 5a99 7077 b6d5 6d0a def9 d446 ffa1     ...Zwp...m..F... 803db14:	2528 589a b582 f637 616b 6fc0 4bcb b20b     (%.X..7.ka.o.K.. 803db24:	a2a5 1505 c86b 5016 847f a37c 7619 a412     ....k..P..|..v.. 803db34:	1f67 4ae9 30f3 a293 d5b2 aab1 16b4 707c     g..J.0........|p 803db44:	d9e3 aedb 7c9c f04f d184 28e4 33f2 0fd0     .....|O....(.3.. 803db54:	0648 59a3 4a80 24aa 23dc 9292 a730 0a69     H..Y.J.$.#..0.i. 803db64:	cb1c 5659 8648 0393 9e46 6254 d58e 128b     ..YVH...F.Tb.... 803db74:	9ce8 3d7b 6ef6 a66c 5094 76b7 33ae 5683     ..{=.nl..P.v.3.V 803db84:	bca4 6462 91c8 6492 bb94 e3a0 e505 3565     ..bd...d......e5 803db94:	3b6c ff1d 292a a9b1 24a2 5876 bf45 9ec2     l;..*)...$vXE... 803dba4:	f334 03e3 52be 7ce5 3eea 4e2e ab8b 6295     4....R.|.>.N...b 803dbb4:	a0b4 c6d8 770e b5c1 dfc8 3f14 fd8e ffee     .....w.....?.... 803dbc4:	9303 02fb 39bb 7d7a 4a92 623b 73ee ba3d     .....9z}.J;b.s=. 803dbd4:	3a33 7cc0 f9e8 7fce 0db7 b626 2efd 58dd     3:.|......&....X 803dbe4:	ae09 5a85 09b6 d93d dd05 b465 dde3 e8fe     ...Z..=...e..... 803dbf4:	494b 220b 21b7 35e5 0d48 03a9 653c a482     KI.".!.5H...<e.. 803dc04:	3a8f 0f3a b598 6262 31f5 755e f6ae 26dd     .::...bb.1^u...& 803dc14:	e8c9 eb5d 4476 7318 8f5e 67dd a027 eeea     ..].vD.s^..g'... 803dc24:	e35c 84d1 18a6 ad87 e6df b6fb 6281 626d     \............bmb 803dc34:	fc3f 33d1 7a7f 4fcb d8bf f151 2352 ba9f     ?..3.z.O..Q.R#.. 803dc44:	72a9 c183 ced4 cbb5 e983 ad5a 4fb8 2cc5     .r........Z..O., 803dc54:	df18 f919 80c9 c16c f044 d823 d322 8c71     ......l.D.#.".q. 803dc64:	2bad 8d8e f054 0411 c35f c9c9 a208 ce0d     .+..T..._....... 803dc74:	b121 4099 e48d e60c 1db5 1171 504c 2961     !..@......q.LPa) 803dc84:	9452 c980 a726 3e49 a097 c92b d9fd 7e7b     R...&.I>..+...{~ 803dc94:	f114 a3bb dcde f320 31ff 135a 4156 8c10     ...... ..1Z.VA.. 803dca4:	cd6f 0f82 416a ef53 1bf0 425b 4ced 4ac6     o...jAS...[B.L.J 803dcb4:	ff6d f96b bd07 325e c546 0008 2f00               m.k...^2F....0803dcc1 <data__favicon_ico>: 803dcc1:	662f 7661 6369 6e6f 692e 6f63 0000 0000     /favicon.ico.... 803dcd1:	5448 5054 312f 312e 3220 3030 4f20 0d4b     HTTP/1.1 200 OK. 803dce1:	530a 7265 6576 3a72 6c20 4977 2f50 2e31     .Server: lwIP/1. 803dcf1:	2e33 2031 6828 7474 3a70 2f2f 6173 6176     3.1 (http://sava 803dd01:	6e6e 6861 6e2e 6e6f 6e67 2e75 726f 2f67     nnah.nongnu.org/ 803dd11:	7270 6a6f 6365 7374 6c2f 6977 2970 0a0d     projects/lwip).. 803dd21:	6f43 746e 6e65 2d74 654c 676e 6874 203a     Content-Length:  803dd31:	3131 3035 0a0d 6f43 6e6e 6365 6974 6e6f     1150..Connection 803dd41:	203a 6c43 736f 0d65 430a 6e6f 6574 746e     : Close..Content 803dd51:	742d 7079 3a65 6920 616d 6567 782f 692d     -type: image/x-i 803dd61:	6f63 0d6e 430a 6361 6568 432d 6e6f 7274     con..Cache-Contr 803dd71:	6c6f 203a 7270 7669 7461 2c65 6d20 7861     ol: private, max 803dd81:	612d 6567 383d 3436 3030 0a0d 0a0d 0000     -age=86400...... 803dd91:	0001 0001 1010 0000 0000 0020 0468 0000     .......... .h... 803dda1:	0016 0000 0028 0000 0010 0000 0020 0000     ....(....... ... 803ddb1:	0001 0020 0000 0000 0440 0000 0000 0000     .. .....@....... 803ddc1:	0000 0000 0000 0000 0000 0000 ffff 01ff     ................ 803ddd1:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803dde1:	ffff 01ff ffff 01ff d2d2 ffd2 d2d2 ffd2     ................ 803ddf1:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803de01:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803de11:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803de21:	8d8d ff8d 8484 ff84 8989 ff89 8989 ff89     ................ 803de31:	8484 ff84 8d8d ff8d ffff 01ff ffff 01ff     ................ 803de41:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803de51:	ffff 01ff ffff 01ff a4a4 ffa4 8484 ff84     ................ 803de61:	aeae ffae ffff 01ff ffff 01ff ffff 01ff     ................ 803de71:	ffff 01ff aeae ffae 8484 ff84 a4a4 ffa4     ................ 803de81:	ffff 01ff ffff 01ff 8181 ff81 ffff 01ff     ................ 803de91:	ffff 01ff a0a0 ffa0 9a9a ff9a ffff 01ff     ................ 803dea1:	c7c7 ffc7 8f8f ff8f 8585 ff85 8585 ff85     ................ 803deb1:	8f8f ff8f caca ffca ffff 01ff d5d5 ffd5     ................ 803dec1:	ffff 01ff 7777 ff77 ffff 01ff ffff 01ff     ....www......... 803ded1:	d5d5 ffd5 8484 ff84 ffff 01ff a8a8 ffa8     ................ 803dee1:	8c8c ff8c bbbb ffbb ffff 01ff ffff 01ff     ................ 803def1:	baba ffba afaf ffaf ffff 01ff ffff 01ff     ................ 803df01:	6465 ff5b ffff 01ff ffff 01ff ffff 01ff     ed[............. 803df11:	9898 ff98 b0b0 ffb0 d5d5 ffd5 8484 ff84     ................ 803df21:	dada ffda 9595 ff95 8484 ff84 9d9d ff9d     ................ 803df31:	d7d7 ffd7 ffff 01ff 9898 ff97 7a7b ff73     ............{zs. 803df41:	cedb ff79 c0d2 ff55 ffff 01ff ffff 01ff     ..y...U......... 803df51:	9393 ff93 ffff 01ff a4a4 ffa4 bebe ffbe     ................ 803df61:	bdbd ffbd d1d1 ffd1 ffff 01ff ffff 01ff     ................ 803df71:	b4b5 ffae 5f5f ff5d 979d ff6b c0d2 ff55     ....__]...k...U. 803df81:	ffff 01ff b5c9 ff35 ffff 01ff ffff 01ff     ......5......... 803df91:	f0f0 fff0 ffff 01ff f1f1 fff1 ffff 01ff     ................ 803dfa1:	d5d5 ffd5 cfd0 ffce 8585 ff85 6060 ff60     ............```. 803dfb1:	9194 ff85 b5ca ff37 ffff 01ff b9cc ff41     ......7.......A. 803dfc1:	ffff 01ff b4c9 ff33 ffff 01ff 6262 ff62     ......3.....bbb. 803dfd1:	5d5e ff5c 5c5c ff5c 5d5e ff5c 6161 ff60     ^]\.\\\.^]\.aa`. 803dfe1:	6567 ff5b 8486 ff7b ffff 01ff ffff 01ff     ge[...{......... 803dff1:	ffff 01ff b5ca ff37 ffff 01ff b9cc ff41     ......7.......A. 803e001:	ffff 01ff b4c9 ff33 ffff 01ff ffff 01ff     ......3......... 803e011:	b5c9 ff35 ffff 01ff c0d2 ff55 ffff 01ff     ..5.......U..... 803e021:	c4d4 ff5e c3d4 ff5c ffff 01ff ffff 01ff     ..^...\......... 803e031:	c3d4 ff5c c4d4 ff5e cedb ff79 c0d2 ff55     ..\...^...y...U. 803e041:	ffff 01ff b5c9 ff35 ffff 01ff ffff 01ff     ......5......... 803e051:	c0d1 ff54 cfdc ff7d ffff 01ff b4c9 ff33     ..T...}.......3. 803e061:	ffff 01ff bed0 ff50 b4c9 ff33 b4c9 ff33     ......P...3...3. 803e071:	c0d2 ff55 ffff 01ff b4c9 ff33 ffff 01ff     ..U.......3..... 803e081:	cedb ff79 c0d2 ff55 ffff 01ff ffff 01ff     ..y...U......... 803e091:	ffff 01ff b4c9 ff33 ffff 01ff cad9 ff6f     ......3.......o. 803e0a1:	b9cc ff41 d6e1 ff8f ffff 01ff ffff 01ff     ..A............. 803e0b1:	d5e0 ff8c b9cc ff40 cedb ff79 ffff 01ff     ......@...y..... 803e0c1:	b4c9 ff33 ffff 01ff ffff 01ff ffff 01ff     ..3............. 803e0d1:	ffff 01ff c5d5 ff62 c1d2 ff58 ffff 01ff     ......b...X..... 803e0e1:	ffff 01ff bbce ff46 b5c9 ff35 b5c9 ff35     ......F...5...5. 803e0f1:	bbce ff46 ffff 01ff ffff 01ff c0d2 ff55     ..F...........U. 803e101:	c5d5 ff62 ffff 01ff ffff 01ff ffff 01ff     ..b............. 803e111:	ffff 01ff ffff 01ff c8d7 ff69 b4c9 ff33     ..........i...3. 803e121:	cedb ff79 ffff 01ff ffff 01ff ffff 01ff     ..y............. 803e131:	ffff 01ff cedb ff79 b4c9 ff33 c8d7 ff69     ......y...3...i. 803e141:	ffff 01ff ffff 01ff ffff 01ff ffff 0dff     ................ 803e151:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803e161:	b9cd ff42 b4c9 ff33 b7cb ff3b b7cb ff3b     ..B...3...;...;. 803e171:	b4c9 ff33 b9cd ff42 ffff 01ff ffff 01ff     ..3...B......... 803e181:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803e191:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803e1a1:	ffff 01ff ffff 01ff e4eb ffb5 e4eb ffb5     ................ 803e1b1:	ffff 01ff ffff 01ff ffff 01ff ffff 01ff     ................ 803e1c1:	ffff 01ff ffff 01ff ffff 01ff 0000 ffff     ................ 803e1d1:	0000 ffff 0000 ffff 0000 ffff 0000 ffff     ................ 803e1e1:	0000 ffff 0000 ffff 0000 ffff 0000 ffff     ................ 803e1f1:	0000 ffff 0000 ffff 0000 ffff 0000 ffff     ................ 803e201:	0000 ffff 0000 ffff 0000 ffff               ............0803e20d <HTTP_200_OK>: 803e20d:	5448 5054 312f 312e 3220 3030 4f20 0d4b     HTTP/1.1 200 OK. 803e21d:	0d0a 000a 0000 7400                              .......0803e224 <file__main_css>: 803e224:	e274 0803 e288 0803 e294 0803 28a1 0000     t............(.. 803e234:	0001 0000                                   ....0803e238 <file__favicon_ico>: 803e238:	0000 0000 dcc1 0803 dcd1 0803 053c 0000     ............<... 803e248:	0001 0000                                   ....0803e24c <file__settings_html>: 803e24c:	b078 0803 bc46 0803 bc56 0803 1233 0000     x...F...V...3... 803e25c:	0001 0000                                   ....0803e260 <file__main_js>: 803e260:	e224 0803 86a0 0803 86ac 0803 26b6 0000     $............&.. 803e270:	0001 0000                                   ....0803e274 <file__login_html>: 803e274:	b0a0 0803 ad62 0803 ad6e 0803 02f6 0000     ....b...n....... 803e284:	0001 0000                                   ....0803e288 <data__main_css>: 803e288:	6d2f 6961 2e6e 7363 0073 0000 5448 5054     /main.css...HTTP 803e298:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 803e2a8:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  803e2b8:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 803e2c8:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 803e2d8:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 803e2e8:	6e65 2d74 654c 676e 6874 203a 3031 3931     ent-Length: 1019 803e2f8:	0d30 430a 6e6f 656e 7463 6f69 3a6e 4320     0..Connection: C 803e308:	6f6c 6573 0a0d 6f43 746e 6e65 2d74 7974     lose..Content-ty 803e318:	6570 203a 6574 7478 632f 7373 0a0d 6f43     pe: text/css..Co 803e328:	746e 6e65 2d74 6e45 6f63 6964 676e 203a     ntent-Encoding:  803e338:	7a67 7069 0a0d 6143 6863 2d65 6f43 746e     gzip..Cache-Cont 803e348:	6f72 3a6c 7020 6972 6176 6574 202c 616d     rol: private, ma 803e358:	2d78 6761 3d65 3638 3034 0d30 0d0a 1f0a     x-age=86400..... 803e368:	088b 0000 0000 0400 d50a 6b7d 238f 7239     ..........}k.#9r 803e378:	5fe0 a791 76d0 b6d7 d1a4 5eab 6c2a 9ec1     ._...v.....^*l.. 803e388:	ebf1 5b80 c0c0 3f79 35f5 2916 5529 6dca     ...[..y?.5.))U.m 803e398:	2949 5948 d5dd eb23 183f 1807 c038 cfb0     I)HY..#.?...8... 803e3a8:	3fde bfe0 3fd2 e2e9 0649 cc99 ba94 1fbd     .?...?..I....... 803e3b8:	adec 199d 1f25 88c1 3060 0c18 c906 7f1f     ....%...`0...... 803e3c8:	27f5 6d9d dfb9 eb64 97e2 3fbc 1c3f 9f3a     .'.m..d....??.:. 803e3d8:	fdc6 7f41 f9d4 ce87 fe6f dfc7 fe77 3167     ..A.....o...w.g1 803e3e8:	b7cf 1c87 9ebe aa8b 945f ba3f 9db2 fd5f     ........_.?..._. 803e3f8:	5fd8 cf97 3765 57db 7cc5 779d 43b3 c8b1     ._..e7.W.|.w.C.. 803e408:	8bbb cabc f58a bba1 9e2c d9e7 2aae 2dca     ........,....*.- 803e418:	7cfe e7d9 65dd 5659 bef9 cabb 05b3 e7fe     .|...eYV........ 803e428:	5f79 ecbe 9bba d8ac 3776 f6f9 bba5 3ecd     y_......v7.....> 803e438:	0f75 9cf9 1c6a 365e 6c9b e5ff 28b8 bb0e     u...j.^6.l...(.. 803e448:	f675 3a65 975b 8ff3 fea7 5761 676c ebe5     u.e:[.....aWlg.. 803e458:	b26f c7fd 62ee 3db9 cb2e d56d 543b d65f     o....b.=..m.;T_. 803e468:	b4f9 80a8 f980 0fa9 6650 bed9 787b c199     ........Pf..{x.. 803e478:	bb3f aee3 143c 7108 cfba 59d7 7c55 4fca     ?...<..q...YU|.O 803e488:	0cfd f89a 7794 b3fb db6a 965f 97f3 fd03     .....w..j._..... 803e498:	9a9c ab9f 13f2 8820 9ea0 c5d6 a653 ee59     ...... .....S.Y. 803e4a8:	f29b 558f 5afe 16f5 bcf9 03dc 6860 5b61     ...U.Z......`ha[ 803e4b8:	016e 403a 2ded edb2 be73 15ef 005b e553     n.:@.-..s...[.S. 803e4c8:	820b 250f d997 bacb 8fe2 bb62 a32c ddfc     ...%......b.,... 803e4d8:	40be a392 c3d4 7ccb 1f9e 510e e7ea bf6c     .@.....|...Q..l. 803e4e8:	b62d 2ecf 58f5 b3ed 10ad ad9a 9dd7 f8fe     -....X.......... 803e4f8:	c9d0 43b3 050e e57a c54b fb8c 7ca9 12ed     ...C..z.K....|.. 803e508:	e107 a747 eed8 aa5e fd2e 7dfb 65f5 ff97     ..G...^....}.e.. 803e518:	90fa fb67 eaf9 b1c3 39f7 7d9f aa2c b65e     ..g......9.},.^. 803e528:	41db b64a e79d 584a 78b6 ae66 3f1d 8aaf     .AJ...JX.xf..?.. 803e538:	ef2a 761d 6519 de7e 3b67 7be2 65f7 afdd     *..v.e~.g;.{.e.. 803e548:	19b2 e9b0 5c70 0717 19ed 8be6 7e74 7a9f     ....p\......t~.z 803e558:	9a7d 512d fa12 ddd2 9047 6c9e 9d3f d595     }.-Q....G..l?... 803e568:	54ea 9e6c ebbb 39fc 2edf b38e 0f72 3282     .Tl....9....r..2 803e578:	9c1d bbf8 2d5b d5ba b8ea 16cb a00b 921d     ....[-.......... 803e588:	d557 cd66 b022 36cc fac5 f4cb f62f b645     W.f."..6..../.E. 803e598:	feee be6d 94fe 4483 dd66 3003 77a5 f7c8     ..m....Df..0.w.. 803e5a8:	f2c5 c951 4ea2 803b f7a4 c5b2 5fef d50e     ..Q..N;......_.. 803e5b8:	3874 bc18 ec79 0e6d 64bd 69ce 2e56 1cbe     t8..y.m..d.iV... 803e5c8:	5fa1 8b9e 74ed 38f0 e6cb 911f ed80 37a2     ._...t.8.......7 803e5d8:	d72f 7ee5 f57a f757 f57f 5fd3 1f0f 6be5     /..~z.W...._...k 803e5e8:	1e3c a23f 2cec e5d7 dee7 e997 be61 d72f     <.?..,......a./. 803e5f8:	c7eb 5e55 af3c a5b8 f653 28b2 eeca db3c     ..U^<...S..(..<. 803e608:	ca7e dd0e bedd de7c ef43 3f76 c0c1 9d29     ~.....|.C.v?..). 803e618:	17b0 75db cdb1 247b 8ff3 4228 cb40 07ba     ...u..{$..(B@... 803e628:	fde2 9dbc a0ce 3157 0197 d741 6f54 cfdf     ......W1..A.To.. 803e638:	1461 4340 0f87 0ed7 f204 db5c 9c1d afde     a.@C......\..... 803e648:	c58a df22 e87e f956 8606 9553 e507 d94e     ..".~.V...S...N. 803e658:	46b1 c917 2ed3 e7db eadb 4d94 c465 5364     .F.........Me.dS 803e668:	7c16 2890 0144 207a cd9b eff6 a2ab e75a     .|.(D.z ......Z. 803e678:	a41f 7ab7 89d0 b955 0e99 af77 059d ccfc     ...z..U...w..... 803e688:	a717 b759 55dc d83c 800f f6e7 fb99 33ec     ..Y..U<........3 803e698:	e573 006e 391d 1654 6ff7 f2ef 674d c8f0     s.n..9T..o..Mg.. 803e6a8:	1b03 69ba ca3a 2737 ffe0 a3c7 78b0 b030     ...i:.7'.....x0. 803e6b8:	30dd 5abd 072e 03a7 2f28 0491 daec fde9     .0.Z....(/...... 803e6c8:	cde0 1549 8780 7774 e6f3 1891 fd2b 6831     ..I...tw....+.1h 803e6d8:	2de4 8e2a dcaa 7b4d 1bfd 1d68 0120 4471     .-*...M{..h. .qD 803e6e8:	af55 a23f 4f94 c4cf e9f9 341e f5da 7b51     U.?..O.....4..Q{ 803e6f8:	ca7c 3e6c bab1 9253 4086 64d0 7bb0 ad3d     |.l>..S..@.d.{=. 803e708:	47f6 b2d7 238a b328 a01e f28c bd8c ec08     .G...#(......... 803e718:	0606 82be 963c e0bf 548f 3a5e b4f9 0503     ....<....T^:.... 803e728:	228b 7d0c 7996 b28c aa97 cd3c 504b 1fcb     .".}.y....<.KP.. 803e738:	0b67 b790 c61c 66c4 0c17 4d9a 2db9 2869     g......f...M.-i( 803e748:	dd77 c32f c07e 34fe 017b b7e2 565d be19     w./.~..4{...]V.. 803e758:	f32f 2835 df6b 1ba6 c824 69f1 5db1 b8c1     /.5(k...$..i.].. 803e768:	64ab c860 4097 e8f2 2a7d c50e 9d6c 0b6b     .d`..@..}*..l.k. 803e778:	da20 9200 2b15 e049 e612 5625 823f 0e03      ....+I...%V?... 803e788:	d679 ac5d 38b5 03f9 c6e3 3049 f2a0 482a     y.]..8....I0..*H 803e798:	0e81 14dc 5255 71b5 c7fd cbf9 00fe 79a3     ....UR.q.......y 803e7a8:	1657 07d0 417b 3de7 3e4c 6019 f8b7 35d0     W...{A.=L>.`...5 803e7b8:	bacd a3c4 1254 7ebd ba32 be74 e7ca a11f     ....T..~2.t..... 803e7c8:	029f f62c 8c19 8f7c e984 d646 c973 378e     ..,...|...F.s..7 803e7d8:	e959 5e0a 9a1b b7f6 9b2f be59 30ff aa9d     Y..^..../.Y..0.. 803e7e8:	1598 2ddb 47cc 7b38 6cf6 3267 6ac3 61a5     ...-.G8{.lg2.j.a 803e7f8:	877c 55a5 496e 4c9a f13b 619c fc50 49cf     |..UnI.L;..aP..I 803e808:	53b3 66d7 4216 5ee1 f916 617a 2d39 7818     .S.f.B.^..za9-.x 803e818:	394a 07a1 760a af9e c413 5536 f3f0 cb78     J9...v....6U..x. 803e828:	080c 3b53 b1e9 2a9e 27e5 ee9a 2983 e70d     ..S;...*.'...).. 803e838:	e6ff b342 441c 679a 5ed1 9655 306b 7455     ..B..D.g.^U.k0Ut 803e848:	c42e 9a8a c5a4 5e68 165c 5aaf 7dc6 02bb     ......h^\..Z.}.. 803e858:	d630 80c0 ee82 ae5a 8a5f 2b85 2517 8ad7     0.....Z._..+.%.. 803e868:	0ad7 b54e 62c8 5bdd fb95 17e2 b084 2cee     ..N..b.[......., 803e878:	c81c ba5a c056 6a31 80ab 054d 0109 da4f     ..Z.V.1j..M...O. 803e888:	288a 4d98 80b9 8e49 04ad 2ec5 d348 6082     .(.M..I.....H..` 803e898:	685e fe3e c934 4cc0 969c d9d7 90ee 229b     ^h>.4..L......." 803e8a8:	7241 9c54 d16d b0a8 8624 c345 ae32 5dd9     ArT.m...$.E.2..] 803e8b8:	9606 e69e 87f1 dbd6 5b65 4114 2030 be7c     ........e[.A0 |. 803e8c8:	d14b fb42 b3f2 e2e6 4e4f d376 5833 eb53     K.B.....ONv.3XS. 803e8d8:	741c cd28 d30c 3a1f b03f 83ec 4c99 528a     .t(....:?....L.R 803e8e8:	b787 7719 6146 93c4 c988 564a 4138 a1cf     ...wFa....JV8A.. 803e8f8:	2e81 1713 e308 7a6e d933 febd b149 95d9     ......nz3...I... 803e908:	2afb 56db 648f b123 b221 9b47 f1e6 b173     .*.V.d#.!.G...s. 803e918:	56a8 436c fcc9 5cbc 4f2e f76a b583 6a66     .VlC...\.Oj...fj 803e928:	f3ac 5825 dca2 53c6 891f c922 8355 47ae     ..%X...S..".U..G 803e938:	0110 4c16 8b95 d3e2 ad13 8e2d c0dc 7268     ...L......-...hr 803e948:	7bb3 7b55 1ee6 cb7f 436c b9a5 b7a4 a661     .{U{....lC....a. 803e958:	fb2f dbf5 903d b1f2 dbbf 5f3e 7a77 a150     /...=.....>_wzP. 803e968:	1bd3 bfe2 65b7 9f6f 6183 601b b32e 6a32     .....eo..a.`..2j 803e978:	a737 3c78 9c34 7383 9d98 cc61 bccb 8dec     7.x<4..s..a..... 803e988:	9b40 f655 75d2 a992 3ea7 34da d360 b26d     @.U..u...>.4`.m. 803e998:	77df 6fdd 0958 eff1 0659 068b 512a 747e     .w.oX...Y...*Q~t 803e9a8:	c0c2 a0f6 fc70 f3d6 0863 247d 30fc d43c     ....p...c.}$.0<. 803e9b8:	ec14 11c5 0014 3493 a6ab 07dc d90a 16a3     .......4........ 803e9c8:	6cb3 e9d0 8ddd 7e03 b2f9 90cc 1de1 ed40     .l.....~......@. 803e9d8:	dfdc 6f41 fc19 258d 8319 ddec 8560 01ef     ..Ao...%....`... 803e9e8:	fd9b 0dbe f8ec c0bb 8702 80db 810e dfbf     ................ 803e9f8:	2b84 22a8 33d0 0dc7 b0cc dcde de47 8670     .+.".3......G.p. 803ea08:	feae 9b4c 82ba 0180 48f3 71e3 2d95 0340     ..L......H.q.-@. 803ea18:	3a0c 3a68 aca3 9fee d967 41db ff17 a3fa     .:h:....g..A.... 803ea28:	18eb 4752 cf21 9160 50b6 78eb be3c 66cb     ..RG!.`..P.x<..f 803ea38:	ed77 cd65 1672 a355 2fd8 3c21 f4b1 4c75     w.e.r.U../!<..uL 803ea48:	c367 e8e1 d1ee 0088 d867 8255 13a2 4383     g.......g.U....C 803ea58:	a005 ddd8 35dd 06a3 a27c 36c5 1cac ed61     .....5..|..6..a. 803ea68:	3ca3 37cc 4162 315e d665 c532 4021 c5ea     .<.7bA^1e.2.!@.. 803ea78:	ddcf 54b2 9e15 1eb3 5a3f 97c9 f81c 248f     ...T....?Z.....$ 803ea88:	1ab3 6d13 7032 638c 1a6c 32aa 629e 9179     ...m2p.cl..2.by. 803ea98:	449a f435 09a8 02ba 4542 5c86 0a71 070e     .D5.....BE.\q... 803eaa8:	2c1f b922 9831 6818 3149 5478 071f fb2f     .,".1..hI1xT../. 803eab8:	0aa8 e0b4 0fdd 1f75 ab86 6e22 c611 29f6     ......u..."n...) 803eac8:	2d8b 17e7 c358 e7ef 62b0 5c7c b0e7 4314     .-..X....b|\...C 803ead8:	300b e39b a35a 803f 9565 3c22 e09d 6208     .0..Z.?.e."<...b 803eae8:	aa4d c490 a249 371d 4d19 3796 1013 5c53     M...I..7.M.7..S\ 803eaf8:	2b90 a0e6 3a76 7287 2c5d 573a 6183 9c36     .+..v:.r],:W.a6. 803eb08:	75e5 9d80 3df1 6130 905d 7e86 3ca9 d925     .u...=0a]..~.<%. 803eb18:	6a0c 9982 88f9 89ea c7b8 7fda 8204 3aef     .j.............: 803eb28:	1621 4625 604e b501 697e bfd7 e437 fac0     !.%FN`..~i..7... 803eb38:	c030 9693 d9a2 9561 1e2f 017f c887 7f22     0.....a./.....". 803eb48:	1685 2747 5b9a 6161 2447 6329 5d5c 4767     ..G'.[aaG$)c\]gG 803eb58:	721c 0658 92c3 5db9 65fa 73c6 8d5d 0164     .rX....].e.s].d. 803eb68:	cae9 6511 2619 98c9 b1a2 38c0 4998 c7f4     ...e.&.....8.I.. 803eb78:	3b1f ec9b 67b5 4252 1969 5091 b551 0aa7     .;...gRBi..PQ... 803eb88:	8b4d 6aa7 04ff 117e bbf4 73ac b493 4972     M..j..~....s..rI 803eb98:	e138 a546 925c 852f 2563 e52a bc92 05cf     8.F.\./.c%*..... 803eba8:	0ff1 67c6 327f bfba 1bb9 c64e 5af1 037a     ...g.2....N..Zz. 803ebb8:	071e 5d30 bd84 cbd4 5c5e 8b16 49c5 3631     ..0]....^\...I16 803ebc8:	a8ad ad55 0eae 201a 420a 0b86 aa8a 9d08     ..U.... .B...... 803ebd8:	2281 7fec 0957 e9b4 d8b2 ff83 be69 d62a     ."..W.......i.*. 803ebe8:	9540 4f63 317b 0cc7 21e8 5f32 82cf 2f6b     @.cO{1...!2_..k/ 803ebf8:	e0e7 5611 4a21 f0fb 61d3 be78 4ae8 1645     ...V!J...ax..JE. 803ec08:	0a79 cb0a fc74 923b 9b08 e49f 8756 a4eb     y...t.;.....V... 803ec18:	22a7 0801 1393 140c fbf0 fb02 626a cc96     ."..........jb.. 803ec28:	6a54 a66d 3393 2fa5 9999 e9aa 22a4 d355     Tjm..3./....."U. 803ec38:	7a65 24c1 41b5 80ac 86a1 1a23 aebd 77e1     ez.$.A....#....w 803ec48:	108a 6b2d 1cf2 3e36 4eaf 2246 512f e1cf     ..-k..6>.NF"/Q.. 803ec58:	c099 e5c5 7f69 c792 26ac 8ed9 279a 6d15     ....i....&...'.m 803ec68:	ce2f 3ca9 2685 470a 0914 8188 2bf6 e078     /..<.&.G.....+x. 803ec78:	9d8a d5e9 b6e9 f55a 65ca 7d0f 6fc0 c5cb     ......Z..e.}.o.. 803ec88:	3ae2 1625 4b0f 53f8 e408 7403 130c a143     .:%..K.S...t..C. 803ec98:	1a66 2d5c f06f 902f d64f fd2f b29d d0ca     f.\-o./.O./..... 803eca8:	82b4 54d4 f7cb f84b 9553 17f9 ff3f fe34     ...T..K.S...?.4. 803ecb8:	9079 cb9e 10c8 3ef0 3723 b1f3 ef9a 90c0     y......>#7...... 803ecc8:	3f7e 675f c387 7eaf 3f0d 1f7b 4cfc a874     ~?_g...~.?{..Lt. 803ecd8:	7bc0 773f 2a33 0ccb 7994 6cd9 66c5 ff26     .{?w3*...y.l.f&. 803ece8:	a535 aa77 0045 2ba5 aba9 f520 ec1c 5c1c     5.w.E..+.. ....\ 803ecf8:	6cc2 b093 9c67 3880 4286 22ff cc2f 09ba     .l..g..8.B."/... 803ed08:	5ff6 29d0 23a5 4bdd 960e 39a3 5c50 13a9     ._.).#.K...9P\.. 803ed18:	8d70 7a9a eb6c 4133 14e0 95db 43b0 29f0     p..zl.3A.....C.) 803ed28:	26b7 7f6a 7c30 fde3 e0d5 4065 e16f 6f9f     .&j.0|....e@o..o 803ed38:	45f2 7591 77c0 e79d 0edb 96d8 b79d 4a7e     .E.u.w........~J 803ed48:	bbba 8305 faff 4328 40cb 9c6d 70b1 e5d9     ......(C.@m..p.. 803ed58:	f8db 3e22 f252 abb8 54df 7076 09d0 188f     ..">R....Tvp.... 803ed68:	1780 f715 d836 0e79 aa16 00cc 030d e3c4     ....6.y......... 803ed78:	24f0 2d7a 319c 4555 bac2 594f 0520 cb2d     .$z-.1UE..OY .-. 803ed88:	5955 15b4 b152 414d abaa 0488 5724 0da8     UY..R.MA....$W.. 803ed98:	eb92 a75e 1234 5c90 55a1 2f72 ee26 2173     ..^.4..\.Ur/&.s! 803eda8:	29d8 990c dc22 51f4 c8a7 b515 b24c 5673     .).."..Q....L.sV 803edb8:	c323 3552 df57 d35a 6a71 ddf1 bf35 4db9     #.R5W.Z.qj..5..M 803edc8:	d3c7 6e6f d5d3 da0c 79d4 ad98 d57e b59e     ..on.....y..~... 803edd8:	4cce 6bf1 0531 2555 cbe6 3237 dbfa 1a2a     .L.k1.U%..72..*. 803ede8:	7f3e c567 37d5 eaa2 f578 34ad 8aba 45b6     >.g..7..x..4...E 803edf8:	31e5 1e2f 879a 9d7a 06c9 336d 5ea3 3bd0     .1/...z...m3.^.; 803ee08:	c541 81e6 5a6c 2614 1507 079b 99f7 d18a     A...lZ.&........ 803ee18:	0f04 1843 9bb6 29c0 7b0e a41e 59d9 0f0f     ..C....).{...Y.. 803ee28:	e174 96e1 b89b 4979 1186 7a0e 4cf2 431e     t.....yI...z.L.C 803ee38:	893d 8b2b 1afa b607 d0d7 413b b0fb 8eb8     =.+.......;A.... 803ee48:	0362 acc5 bdfb 0cc3 ab77 5cda c318 6b9b     b.......w..\...k 803ee58:	7480 90be d7a0 6da3 2ec5 0ae3 40ce 4fdc     .t.....m.....@.O 803ee68:	ab26 25dc 7fb1 a615 726a daf8 1122 4a69     &..%....jr..".iJ 803ee78:	7831 6015 060f 1ff6 d375 1704 1d9e a09a     1x.`....u....... 803ee88:	4498 bde0 bcdb 53ac 2d0a 8ee1 77ef 2159     .D.....S.-...wY! 803ee98:	864c f022 5fd4 cbec 781d b67b f71d fc0b     L.".._...x{..... 803eea8:	cf08 10cf 2144 2d25 ccf5 a78a 6d3e 0673     ....D!%-....>ms. 803eeb8:	2405 29ed 530b cfa3 3d44 824a 3425 a4d3     .$.).S..D=J.%4.. 803eec8:	73db 6db6 21e5 332d b722 768b 4a11 f836     .s.m.!-3"..v.J6. 803eed8:	138b f4ec 522e 1ae1 71da c960 9f09 eb53     .....R...q`...S. 803eee8:	ea41 db4e 1d8b e9d3 083d d838 d05c b5f3     A.N.....=.8.\... 803eef8:	473a 5169 13ec 6fe8 081d dc3d 7b90 b839     :GiQ...o..=..{9. 803ef08:	60f1 b69b 4eb3 a40d bccd 2500 bc5b 9615     .`...N.....%[... 803ef18:	caa2 f71c ea9c 0ce1 d8a2 5382 30d6 fd91     ...........S.0.. 803ef28:	26bd 7a4f a026 6bc5 7af6 3ef3 12ef 7c4a     .&Oz&..k.z.>..J| 803ef38:	36e9 4a48 7387 0570 ab83 b286 c392 63c5     .6HJ.sp........c 803ef48:	1d62 3c41 65da bf04 4913 0d4d 3afe c66a     b.A<.e...IM..:j. 803ef58:	a019 01b8 838f 9c96 6050 cd06 ca26 5054     ........P`..&.TP 803ef68:	5e1e 68f7 2cbb 3af8 1ce8 be52 c5e0 8848     .^.h.,.:..R...H. 803ef78:	16be 6532 de69 17d8 d864 dcb9 3306 474f     ..2ei...d....3OG 803ef88:	f2ae efdf 44df f4cc 23dc 1d48 b6dd e661     .....D...#H...a. 803ef98:	d18a 4e98 5bad 5a8c b54e 6e81 a045 aff9     ...N.[.ZN..nE... 803efa8:	519e 8532 df50 8846 87a0 1de1 ef5b 388e     .Q2.P.F.....[..8 803efb8:	6fee 6393 749a 0885 ed6f 2c14 e61b 2a98     .o.c.t..o..,...* 803efc8:	90b6 8211 a2da b442 0110 db66 8ed7 585f     ......B...f..._X 803efd8:	dac1 584f 860f 5e0d c350 e04d cc34 231d     ..OX...^P.M.4..# 803efe8:	836c 987e 7b61 abfe 39a9 225f ef2e ab1a     l.~.a{...9_".... 803eff8:	6c4d e457 b33d 1ad4 c566 2412 d443 4aa9     MlW.=...f..$C..J 803f008:	889e 52a3 9aec 6ee4 89a3 c3ba 1472 7315     ...R...n....r..s 803f018:	2d23 bf52 530c 48ea 696f 6455 9795 a09a     #-R..S.HoiUd.... 803f028:	4ea4 daa9 2aa7 c2f4 64d8 9559 2f05 7eff     .N...*...dY../.~ 803f038:	4ae0 5e7f cf58 a90b 8fb6 7aa8 c943 3970     .J.^X......zC.p9 803f048:	2884 a733 f257 6f11 0f85 1fb2 231e b9ac     .(3.W..o.....#.. 803f058:	f128 70da 0f5b 1eeb 968f 3995 8bd9 1680     (..p[......9.... 803f068:	1278 aabd 9286 1414 2793 e4e1 6cb9 6f56     x........'...lVo 803f078:	1f00 a593 5bad 50b2 5f1f 6e8a 0fa7 7abb     .....[.P._.n...z 803f088:	b9cf 5a6e 07b0 612a 42d3 9e94 878a 316c     ..nZ..*a.B....l1 803f098:	cb68 2ddc e097 ecc5 500e 38c3 d848 b16f     h..-.....P.8H.o. 803f0a8:	160e 2e0a db34 5ecb eb15 3666 6095 1c4b     ....4..^..f6.`K. 803f0b8:	feb6 fdd0 b9d1 4b45 e79c 0785 4dfa 029b     ......EK.....M.. 803f0c8:	811c 25c8 8558 c042 4a08 442b 5226 a9fc     ...%X.B..J+D&R.. 803f0d8:	160e 011d 15d6 2ec4 b624 8ce2 28b3 b872     ........$....(r. 803f0e8:	cfb3 d4fe 4217 103a d796 56e4 81ab 3e92     .....B:....V...> 803f0f8:	9bba dddc 83dc 50ab 6840 a7c7 7b5c 6c97     .......P@h..\{.l 803f108:	c27b a19a 0b06 2a36 b821 9651 dd49 25b8     {.....6*!.Q.I..% 803f118:	afe3 e550 9b27 1c82 28c4 01c2 e1fe 1f53     ..P.'....(....S. 803f128:	5cfc 6e10 5c87 643c 009f b562 7835 6f42     .\.n.\<d..b.5xBo 803f138:	d40c 38f1 f1ca 44ef 0b31 51bd ff97 363b     ...8...D1..Q..;6 803f148:	83bb 866e 5d93 da2c c1a5 8708 48de 1822     ..n..],......H". 803f158:	7726 a46f 58fe c652 a410 90c8 cd26 7090     &wo..XR.....&..p 803f168:	64f6 1851 fa4d a813 21c0 2e86 0026 6159     .dQ.M....!..&.Ya 803f178:	aa84 fdc4 eabd 2a0b 2513 c64e a07c 4694     .......*.%N.|..F 803f188:	f80b 147b a3e5 587a 927c 0144 0c04 8e3b     ..{...zX|.D...;. 803f198:	8bc4 2bbf 5cac 7eaf c2ba ee20 015e 0754     ...+.\.~.. .^.T. 803f1a8:	09d8 37fa d428 abba c03b 760f 5281 6673     ...7(...;..v.Rsf 803f1b8:	4e8c 2f75 4291 cb72 f997 87aa 071d d5e1     .Nu/.Br......... 803f1c8:	6c9b ec5b 305e bb88 c2dc 61b6 4e53 ca18     .l[.^0.....aSN.. 803f1d8:	96e7 2fa7 0610 a10c 18c0 4336 c0f2 1ca1     .../......6C.... 803f1e8:	d489 af43 1896 4027 2c44 c139 c50d 355e     ..C...'@D,9...^5 803f1f8:	af4e 9326 7809 667b d5e0 60cc 0de3 1995     N.&..x{f...`.... 803f208:	be3b 4ccd 22ae 7930 1f53 54a5 e317 cfc3     ;..L."0yS..T.... 803f218:	55d6 6d57 5db9 e97f f840 b6f8 ca3a bc2e     .UWm.]..@...:... 803f228:	ec44 bd3e 69ac 191b a89c 33f0 96e8 5053     D.>..i.....3..SP 803f238:	e939 edec ef4c 616e 4fc3 bdbd 9d16 1f66     9...L.na.O....f. 803f248:	b87e 8b27 bd91 653e 87d8 dee0 9c94 80d8     ~.'...>e........ 803f258:	d3e7 7cd5 e185 7ff3 ce07 cffa 7b20 f85d     ...|........ {]. 803f268:	6886 dfca 16ee 09b0 898b abdd 1e3d 0012     .h..........=... 803f278:	c7af f0fe b973 6085 eedb cbd5 a20e 165b     ....s..`......[. 803f288:	0bff b936 7961 a07f ddd8 e0e1 1f8d ba18     ..6.ay.......... 803f298:	7ca5 2f9e ee8f 80c0 a2db e5d6 582d 6e2e     .|./........-X.n 803f2a8:	8b59 c771 31ce 8302 f754 6524 dc23 01ab     Y.q..1..T.$e#... 803f2b8:	e0da 1a36 06fd cda2 2efd 8c34 d853 c6d4     ..6.......4.S... 803f2c8:	0c28 dbde bd76 2eb5 f558 ac72 aa95 0a6f     (...v...X.r...o. 803f2d8:	c1e1 2f21 8a83 0f26 9e87 7583 df6e 583c     ..!/..&....un.<X 803f2e8:	b18f 8476 7dc8 20c0 4644 85ad 65ba e791     ..v..}. DF...e.. 803f2f8:	29f9 c355 784a 11a2 0f04 0d91 0e4e 6e83     .)U.Jx......N..n 803f308:	b697 b639 cac2 040c ab5c 457a c6bd c030     ..9.....\.zE..0. 803f318:	a175 6374 b57c d749 05c8 57db 1df9 a9fe     u.tc|.I....W.... 803f328:	0f36 1982 1958 61d4 22a5 b863 5ae9 032c     6...X..a."c..Z,. 803f338:	20ef cc5d 437d a19b a84c 1b50 a642 887f     . ].}C..L.P.B... 803f348:	5758 06d4 0a1d e746 2603 5f64 5187 f6a8     XW....F..&d_.Q.. 803f358:	0b58 9adb be61 f106 88fb 28d5 9fdf 497f     X...a......(...I 803f368:	2756 c78d 5787 75a8 7d0a 37ad c94a b6f5     V'...W.u.}.7J... 803f378:	3938 826e 1953 8432 09fc bfb4 b883 a3c9     89n.S.2......... 803f388:	918e 1111 272c c268 3563 e341 91d1 009b     ....,'h.c5A..... 803f398:	1903 610f 3e79 138d 0b94 e50e a504 9c83     ...ay>.......... 803f3a8:	8ea0 da9c 4a09 5a4b 2e50 c73e 5413 3388     .....JKZP.>..T.3 803f3b8:	9a83 59f1 a09f 9c66 6b69 82da bd2e e5dc     ...Y..f.ik...... 803f3c8:	ef5b 147e 63a7 d0fa 4b52 3d51 d4ca 245c     [.~..c..RKQ=..\$ 803f3d8:	58e0 dfb7 505c d598 2456 4f66 d95b 2198     .X..\P..V$fO[..! 803f3e8:	42d6 2a7e d0f0 0713 a3bd fb61 3a21 650e     .B~*......a.!:.e 803f3f8:	bfac 9c1e 7ac5 9396 b24f 4a21 6cb3 5130     .....z..O.!J.l0Q 803f408:	ac42 22df 04ff e3e7 9b78 e75d bf4b 1a67     B.."....x.].K.g. 803f418:	42e6 11d0 4c84 735d 8436 c358 2eb6 3319     .B...L]s6.X....3 803f428:	501d db9b 01c5 2fbc 64b9 5c6a 462f 0a13     .P...../.dj\/F.. 803f438:	5d8c 0af1 c4c1 d274 3a6c 2984 7419 a811     .]....t.l:.).t.. 803f448:	bb28 78d6 b980 8cfa 0a12 a662 6c30 ec14     (..x......b.0l.. 803f458:	17bc af3c 01a5 63fe ca98 acec b9c9 1a14     ..<....c........ 803f468:	5358 18cc 2054 d383 422f ebba 966c a3db     XS..T ../B..l... 803f478:	fd38 5007 6172 1b84 6c1f fb52 d823 665c     8..Pra...lR.#.\f 803f488:	8373 670d b335 bfe5 b113 a299 0f39 7217     s..g5.......9..r 803f498:	056e 75e4 10e5 0bb0 9522 fd46 04c9 8130     n..u....".F...0. 803f4a8:	54a5 f0fd 589a d6c2 9e44 e7cf 5d3a 99e0     .T...X..D...:].. 803f4b8:	3f2e e899 cf8a ff4f 47ec 7e34 453c 26a7     .?....O..G4~<E.& 803f4c8:	616e 6368 2c7f 50f8 b508 787c 900a c000     nahc.,.P..|x.... 803f4d8:	4c56 4066 229f e2f6 8cd3 f375 c931 a56c     VLf@."....u.1.l. 803f4e8:	e6e5 e6e6 2d3c f2b0 3891 e414 ae82 e812     ....<-...8...... 803f4f8:	5b08 872a 58fc 1a89 0eba 644d 25b9 1007     .[*..X....Md.%.. 803f508:	b2a8 b66e 0a86 3b88 3aaa 081c be8b 1b14     ..n....;.:...... 803f518:	3b08 83b8 246d f6a8 c50d 574f b40b 7f0e     .;..m$....OW.... 803f528:	82b7 a42d ce12 9a94 8785 4d99 2e69 99e2     ..-........Mi... 803f538:	678f 391b 018b 054e 215c bfc2 5940 81d2     .g.9..N.\!..@Y.. 803f548:	4a0d 9649 fd24 3922 2cfe 6764 745d 5820     .JI.$."9.,dg]t X 803f558:	c4d1 e35f 534a 1a7b 8d03 d26b ec3a 82df     .._.JS{...k.:... 803f568:	fc70 5e17 d502 8c87 13dd 9954 1b71 c82c     p..^......T.q.,. 803f578:	6f3d f035 eb4f 0548 ac2b 6b7a c7ac b66b     =o5.O.H.+.zk..k. 803f588:	bc0c 3363 3c36 022e 9ba1 6e6c 2d6b a344     ..c36<....lnk-D. 803f598:	0115 28c2 9cde 0ebb f0d0 e78a 203b 71a9     ...(........; .q 803f5a8:	fe8d 5a2d b82d 06fd 711d 61e2 330a 02d3     ..-Z-....q.a.3.. 803f5b8:	386b 9cc7 3b34 c21e 934a 1012 2c01 ad69     k8..4;..J....,i. 803f5c8:	141d 188e 6f5a 282b f86d 3be3 5eb2 72c7     ....Zo+(m..;.^.r 803f5d8:	eec2 3974 b147 2230 33c8 e87c 1ebd 5a48     ..t9G.0".3|...HZ 803f5e8:	b682 4f5d dbd7 14e3 118f 2833 7dae 3d41     ..]O......3(.}A= 803f5f8:	722a 88b1 8490 5e9b aeb8 d1e1 0f06 6e82     *r.....^.......n 803f608:	323f af8a 6507 6a98 e251 1885 707b 46bc     ?2...e.jQ...{p.F 803f618:	b40f 8a4b fb46 4703 a64c 83d8 14f5 9c53     ..K.F..GL.....S. 803f628:	1e7f b4f5 9f2f ede6 ab54 fb62 69a8 bcaa     ..../...T.b..i.. 803f638:	55a9 6390 db08 4722 bb20 d129 2579 2125     .U.c.."G .).y%%! 803f648:	70c4 4a09 da7d 50a3 08c4 8f17 7873 80ec     .p.J}..P....sx.. 803f658:	b4fc d658 d89c c417 561d e703 49e1 08cc     ..X......V...I.. 803f668:	8278 1705 76e7 1902 c28e 0438 6c9d ca9a     x....v....8..l.. 803f678:	7732 d4f5 f527 7bc1 fafd 3700 701b 85ec     2w..'..{...7.p.. 803f688:	a24f 01d9 0042 24e9 2f69 04ff de56 7a01     O...B..$i/..V..z 803f698:	d616 e2ec 0299 8041 6700 2038 f10e cbe8     ......A..g8 .... 803f6a8:	0d62 e81b 6cd3 5bbd 6f65 79c5 ebf7 405b     b....l.[eo.y..[@ 803f6b8:	1950 886b 1822 b7f1 fc3a b7fa 6a10 4289     P.k."...:....j.B 803f6c8:	6b2f a39d 63f8 1acf 522f 660e a0fa 65be     /k...c../R.f...e 803f6d8:	c2b9 c234 49a2 596e 9a61 1236 8ae4 e2c9     ..4..InYa.6..... 803f6e8:	79b1 7015 da11 2df9 a9fe 147e b3cc fe05     .y.p...-..~..... 803f6f8:	c885 ff6b 88f0 e5d1 a69f 6926 9973 185e     ..k.......&is.^. 803f708:	fb15 e6be a8a5 99f5 156d e2cd b059 02f1     ........m...Y... 803f718:	2013 93e9 5853 dc9a 6b7a 333e a785 6dc9     . ..SX..zk>3...m 803f728:	caad 3698 b588 a472 ec49 5f35 3f71 4603     ...6..r.I.5_q?.F 803f738:	ea04 294c e6a5 315c eb26 295c cfa2 f42e     ..L)..\1&.\).... 803f748:	8c44 3d8c 30df e224 25dd fff4 7f39 2ea0     D..=.0$..%..9... 803f758:	540b f565 5964 e3ab c090 4a27 69e3 48ad     .Te.dY....'J.i.H 803f768:	c7a0 3e0b 85c2 aa43 bbc5 4760 ca63 a0e1     ...>..C...`Gc... 803f778:	a669 35b7 ece9 9468 ed82 8fc8 3060 b066     i..5..h.....`0f. 803f788:	a09c 01fd 7fa5 f3f4 fdcd b83d 2dbf 3af2     ..........=..-.: 803f798:	587c 05d0 1bb6 2a37 c92b 092a 5d22 9545     |X....7*+.*."]E. 803f7a8:	648b ab45 e284 7916 0992 f1b0 a3a3 3921     .dE....y......!9 803f7b8:	a585 94af d340 a667 34f0 f5b9 31fe ed99     ....@.g..4...1.. 803f7c8:	51a3 6b08 8d1c b84a 9f4c 434d 8b43 0fb5     .Q.k..J.L.MCC... 803f7d8:	2920 d4a5 019c fc26 573f 69aa ca34 bf61      )....&.?W.i4.a. 803f7e8:	b650 0312 1a23 5a93 36ad 60d0 05f8 0932     P...#..Z.6.`..2. 803f7f8:	c0c7 ef70 f733 26e7 d069 07d5 6274 2355     ..p.3..&i...tbU# 803f808:	21ea 8d81 9a83 1692 599f 71ef a797 b5dc     .!.......Y.q.... 803f818:	ed32 db33 5e2a a63a b41d ce3f 76e0 5ae0     2.3.*^:...?..v.Z 803f828:	7649 3564 001b 5e22 9e0e d155 17c6 6497     Ivd5.."^..U....d 803f838:	538c c109 75e0 5ca0 2b76 be8e 0b54 5d9b     .S...u.\v+..T..] 803f848:	4721 5191 f574 1306 285a 4851 2eba c905     !G.Qt...Z(QH.... 803f858:	82ab 6934 bf3e 3695 ac53 3885 aa5f 3a95     ..4i>..6S..8_..: 803f868:	ec53 6032 2917 c731 7397 ccda 5415 cf8a     S.2`.)1..s...T.. 803f878:	18e8 9e5f bdb1 b8b4 e0f2 f2e2 08df 3ffe     .._............? 803f888:	faab 5d1c acdf 6303 ba77 826a 3cc9 27cb     ...]...cw.j..<.' 803f898:	f0e0 b58b b367 e40e ac1a 6359 daa8 343d     ....g.....Yc..=4 803f8a8:	6b62 4699 e272 653c b27c 1da2 b551 678a     bk.Fr.<e|...Q..g 803f8b8:	6075 435c 4f29 675b c993 62c3 0ee2 ab3d     u`\C)O[g...b..=. 803f8c8:	7fda 9fb8 218c 05c0 6b47 ce0c 0769 ac1e     .....!..Gk..i... 803f8d8:	d98d aced 7351 1ac9 8d15 5aa0 e599 69f0     ....Qs.....Z...i 803f8e8:	9ae3 642f 50f4 9edc f31f d269 7e7c 6d2b     ../d.P....i.|~+m 803f8f8:	58a6 008b 52f8 d4ad 6299 0197 d76b 3143     .X...R...b..k.C1 803f908:	8dc9 287a a82e 3714 8a29 f95a 4576 1711     ..z(...7).Z.vE.. 803f918:	1e57 0a5c 8cfe 55e5 df03 87a4 e66e fbb3     W.\....U....n... 803f928:	e71b 17fe 6fe9 f01b 1e91 fad2 36b1 c0c1     .....o.......6.. 803f938:	1e09 c13e a116 c50e edc9 7eec 7d91 1293     ..>........~.}.. 803f948:	1aa2 9009 31da 5634 c683 d0ec 320a d994     .....14V.....2.. 803f958:	2af5 0876 5585 6ace a09d d2b8 5699 e339     .*v..U.j.....V9. 803f968:	6ce1 a8b0 a9ad 1f6e 99b2 67b8 5802 e86e     .l....n....g.Xn. 803f978:	a0f2 e74c 70b5 a521 d269 9a40 e2f9 6870     ..L..p!.i.@...ph 803f988:	9064 612f 4c14 8cd0 c91f 4209 667c 2533     d./a.L.....B|f3% 803f998:	8ca6 0551 6d0d d334 c1e2 1234 8a63 abb4     ..Q..m4...4.c... 803f9a8:	a093 46f1 125d 5294 9afa 7a46 b858 8b5d     ...F]..R..FzX.]. 803f9b8:	6504 e295 008b d19f 211f 46e0 31e5 0f9b     .e.......!.F.1.. 803f9c8:	ee16 07f6 1e55 034d d635 521c 59b9 c473     ....U.M.5..R.Ys. 803f9d8:	fc9b a83a 3cf2 8d1b 41c1 d718 b66c b860     ..:..<...A..l.`. 803f9e8:	2b06 188f f6aa 2907 5a83 11a6 38b4 f94f     .+.....).Z...8O. 803f9f8:	ac9d 4568 56ab acf1 892e 286b 69e5 9275     ..hE.V....k(.iu. 803fa08:	1fcf 86ee a61a 2ea6 c59a fdcd 90cd 6ac3     ...............j 803fa18:	317a 3738 7956 3620 b766 26b3 57a5 411a     z187Vy 6f..&.W.A 803fa28:	32b5 e1cb c6d3 5f35 28c8 b898 3f3d d370     .2....5_.(..=?p. 803fa38:	f9a4 56fc 4cda 16b1 f001 5aa5 33a9 2ec5     ...V.L.....Z.3.. 803fa48:	d603 72ae 9262 b51b 5c4e 2950 d26e b50f     ...rb...N\P)n... 803fa58:	edf2 27ba ae2e b83c fc14 0d19 0354 a4df     ...'..<.....T... 803fa68:	9684 6c83 8931 5095 80db f48f d690 b58f     ...l1..P........ 803fa78:	b789 a260 33a0 8c1d c98b 3978 26fe 861b     ..`..3....x9.&.. 803fa88:	b06b 8a1a 6a80 90e7 8932 8cf3 44d8 ca59     k....j..2....DY. 803fa98:	54f4 3b35 e298 676a 5035 4154 4e69 a02b     .T5;..jg5PTAiN+. 803faa8:	c3f9 3078 8d8a 6cc8 7a3e e918 5576 d214     ..x0...l>z..vU.. 803fab8:	aaa7 0783 d469 1b96 ade8 513c d610 6bc8     ....i.....<Q...k 803fac8:	d402 25c6 5ad7 bb0b 197c 7aa3 c6a2 28fc     ...%.Z..|..z...( 803fad8:	124f b3e5 a8db a532 fb9a 17dc a36a 94cb     O.....2.....j... 803fae8:	08ba bb54 89d2 6d88 39d4 3951 b5a5 2749     ..T....m.9Q9..I' 803faf8:	c5c4 35db 544e a95a 10bf 19f8 137d 6f03     ...5NTZ.....}..o 803fb08:	3752 878b f19b 36a4 92d9 482a ec0e db48     R7.....6..*H..H. 803fb18:	f568 6d66 3183 1c00 6f4d f08e 5ba8 ee42     h.fm.1..Mo...[B. 803fb28:	43fd 84b7 158f 5fc0 69ca 0452 a098 71dc     .C....._.iR....q 803fb38:	5e09 1a20 8f7b 6e9a ab35 dc2e 66b0 844e     .^ .{..n5....fN. 803fb48:	d618 b210 8e03 1630 db96 269d d263 9879     ......0....&c.y. 803fb58:	150d 4785 7cf9 3370 38cc ce62 195c 9708     ...G.|p3.8b.\... 803fb68:	e7b9 687b cce6 6f0d 7609 cdc5 4679 16ca     ..{h...o.v..yF.. 803fb78:	9353 1200 ed51 6d22 16e8 e1f4 b8c2 ee1a     S...Q."m........ 803fb88:	1318 e270 4b90 c0a4 9b5d 1fd8 dc6b c438     ..p..K..]...k.8. 803fb98:	ed3e 78a6 5c68 dca0 dede a9c2 b923 5a9f     >..xh\......#..Z 803fba8:	d083 10a8 4a04 59c0 e1ab 586a 36e4 d2d4     .....J.Y..jX.6.. 803fbb8:	d99f d381 2847 145e c5c7 2caa 430c f7f7     ....G(^....,.C.. 803fbc8:	e91e 0b5b a08f e98b 06f9 e91b be9f ce29     ..[...........). 803fbd8:	0ec0 d2e3 4b4d 30f5 1f1f 9462 3c68 b88a     ....MK.0..b.h<.. 803fbe8:	c463 d461 db55 f877 032f 27d8 a8d6 2ca3     c.a.U.w./..'..., 803fbf8:	4d4e 32d6 8959 1eba aa3f 47ac e8f4 741c     NM.2Y...?..G...t 803fc08:	420f 991b 896a 0c2b a973 903b 92df 886b     .B..j.+.s.;...k. 803fc18:	29b7 51b6 6e97 10e2 a003 a60e c58f a1b3     .).Q.n.......... 803fc28:	866b 7823 5220 58e3 916d 1c00 ba9c 0270     k.#x R.Xm.....p. 803fc38:	bb51 22c8 d518 1ed4 8105 cad7 48f9 031e     Q..".........H.. 803fc48:	888d 177d 56c7 7139 e3e5 7835 a119 5144     ..}..V9q..5x..DQ 803fc58:	0c52 5e2e 18b8 e8c3 9fad 81cf e0a1 00cb     R..^............ 803fc68:	a60e 4018 780d 3427 b9de 2258 2cd8 f777     ...@.x'4..X".,w. 803fc78:	9c9f 7b2b 0116 3de2 89aa 0263 5493 90b0     ..+{...=..c..T.. 803fc88:	d881 6c3b 3c8c 361d 59ca 653c 374d f281     ..;l.<.6.Y<eM7.. 803fc98:	4ef9 deba 1138 ea9c 543c 0841 8b1a 1862     .N..8...<TA...b. 803fca8:	078e 6ad1 e81a 918a 00bc 0cfe f764 c954     ...j........d.T. 803fcb8:	c25f 28ed 3e2e b7ff 20bb 1a76 a143 ec29     _..(.>... v.C.). 803fcc8:	1138 dcfe a670 ef15 ffbe 7ca9 9ab5 9dcd     8...p......|.... 803fcd8:	6af4 5757 1a2a cf12 634c a048 4bf1 1604     .jWW*...LcH..K.. 803fce8:	2aa6 be3c 99ab 94e2 eee9 fe9c 16e0 8e5f     .*<..........._. 803fcf8:	58d0 7ce8 7f80 ec09 5995 ca20 b81d cd69     .X.|.....Y ...i. 803fd08:	0b32 796f 2516 2e7e 3b8c 648e 084f 8a88     2.oy.%~..;.dO... 803fd18:	f61f 324a 3ac6 aa21 654d 9f5d 3f31 5a78     ..J2.:!.Me].1?xZ 803fd28:	863c f79b b7b7 32d9 d07f 4070 8db8 3be8     <......2..p@...; 803fd38:	ea70 91c2 0edc 8672 f9e2 38e0 7745 7778     p.....r....8Ewxw 803fd48:	1dd3 c78d fedd 706d d0b7 e239 015a d445     ......mp..9.Z.E. 803fd58:	49f8 6cdd c349 bff1 fe01 b2b9 b4b1 d93a     .I.lI.........:. 803fd68:	a772 4308 90c9 bd33 c720 e01a 3f0f 6399     r..C..3. ....?.c 803fd78:	3970 4a6f bc56 05f5 f38d fbb1 a8e8 1d2b     p9oJV.........+. 803fd88:	332c aaaf 69b8 43be 0216 a39c 6990 b61f     ,3...i.C.....i.. 803fd98:	d10e e85a 71f6 96f8 4b9a 921f 3355 7533     ..Z..q...K..U33u 803fda8:	d010 45cc 4557 8d45 9787 7949 c8c6 1d63     ...EWEE...Iy..c. 803fdb8:	28ba f0fb 6e0e f5da 3ae3 4b99 1245 d6cc     .(...n...:.KE... 803fdc8:	4a00 a5ba 1f50 4232 77c6 9802 ddbf f7d1     .J..P.2B.w...... 803fdd8:	c531 3870 a765 c70c 4d87 0814 17a8 529e     1.p8e....M.....R 803fde8:	de3c f708 d448 1a4a 878c e0df 3433 9ef5     <...H.J.....34.. 803fdf8:	5735 ca2e 4d41 c51d c474 0d43 fea8 1c0d     5W..AM..t.C..... 803fe08:	3985 a865 8fb6 c554 a0d8 c764 87bd 7c37     .9e...T...d...7| 803fe18:	5ff2 8bcb fa26 88ba 493e c782 e0e3 108e     ._..&...>I...... 803fe28:	e6ba 5f8b a223 8313 2c8f 9348 1001 81b6     ..._#....,H..... 803fe38:	42d3 39fc 3784 f08d 7d0e 81ac 5457 5e38     .B.9.7...}..WT8^ 803fe48:	b4d0 1fe0 d25b 93e9 606e 17b6 5961 2205     ....[...n`..aY." 803fe58:	2787 fcbd 23a9 9691 7efc 4b42 5c5f 278e     .'...#...~BK_\.' 803fe68:	c3f8 7da3 95f6 b0a8 f48f 483e 477d 50c7     ...}......>H}G.P 803fe78:	6fc0 8024 41b3 425e d3f8 eced 7bb0 e1fc     .o$..A^B.....{.. 803fe88:	1e91 2990 78d6 5de6 df1e e7f1 c42e c156     ...).x.]......V. 803fe98:	fc83 fb70 37bf 2016 6e81 369c f2bc e095     ..p..7. .n.6.... 803fea8:	86b0 16e3 130f 5c77 8c77 5e67 a381 5e70     ......w\w.g^..p^ 803feb8:	c0ea 3a67 dd52 f758 eb3e 9570 8de1 545a     ..g:R.X.>.p...ZT 803fec8:	d7ce 6b08 5c55 75fc ee64 8842 a51e 55e1     ...kU\.ud.B....U 803fed8:	8c04 ca2d a3fe 4113 7137 64e1 7008 0463     ..-....A7q.d.pc. 803fee8:	68a7 181e 137e 53d6 99e4 7d09 bfba bfc5     .h..~..S...}.... 803fef8:	d55a 65a6 f42e 5c7a 9656 7f98 cd9f 0d92     Z..e..z\V....... 803ff08:	ec9a e9a8 78b6 0d2d 942c d769 ed70 b952     .....x-.,.i.p.R. 803ff18:	1d73 d437 66b3 1c17 1be1 c1df 2f04 f0c7     s.7..f......./.. 803ff28:	daf0 f0d3 df08 5f2d ea7f c0e5 0ac9 608d     ......-_.......` 803ff38:	b023 832e 012d 7be9 7f1a aaa1 0ec4 b1d6     #...-..{........ 803ff48:	a38a 48db 9825 aa0f 02a1 e34b 647e b68f     ...H%.....K.~d.. 803ff58:	1337 4357 ce5f 5ff3 30e1 07c2 bac3 7082     7.WC_.._.0.....p 803ff68:	eed4 9d1f d73c 2b20 7b3e 1da8 fb8e 320b     ....<. +>{.....2 803ff78:	a566 aba5 e90c 9a7b 026f 9155 45ac 6d16     f.....{.o.U..E.m 803ff88:	2760 f18e 099e 5d1d b4ce 0e15 91c3 37ba     `'.....].......7 803ff98:	0e1e f657 7fcc 5e94 91c2 ed45 bd87 9746     ..W....^..E...F. 803ffa8:	191d fdd4 496a 34a6 537a 0e8f 4a99 468f     ....jI.4zS...J.F 803ffb8:	6017 d1bc 7806 41e2 12ab fbba 209b 91e2     .`...x.A..... .. 803ffc8:	9d41 f05c 3b11 34a7 a448 a092 ee02 fa8c     A.\..;.4H....... 803ffd8:	78f7 9224 9e69 df8c 0220 e5e7 f1cd 0d13     .x$.i... ....... 803ffe8:	01b1 a1d5 7de7 1ba4 fc8d 839a 00a4 76b9     .....}.........v 803fff8:	36f6 db4c 75c9 1f0f c004 4dfd e320 eb2f     .6L..u.....M ./. 8040008:	4fab 3620 0770 dc04 01fe bf77 babc 45f1     .O 6p.....w....E 8040018:	4a43 98fb 25b4 baf5 ae9f 64a6 8e2d 37c6     CJ...%.....d-..7 8040028:	dbdd fc07 ff7f 6d1e e8c5 cb46 cca8 5af0     .......m..F....Z 8040038:	6d4d 7754 49e0 1786 948d 1540 c0c4 61a7     MmTw.I....@....a 8040048:	4704 7171 fb07 81cc b47f d1e1 f2f4 1a8e     .Gqq............ 8040058:	7f77 79fe ded3 067b 407d 9d64 2b92 687b     w..y..{.}@d..+{h 8040068:	0e53 7de0 b18f 900d 6b6b 5455 f8c2 3d8f     S..}....kkUT...= 8040078:	834f 3207 0e43 77fd ffb7 e461 6cbc 05ab     O..2C..w..a..l.. 8040088:	3fad 62ab d247 9866 6cd1 04e7 0272 924f     .?.bG.f..l..r.O. 8040098:	23e1 e07e 9afe abe7 0d72 463e 5eb0 02e8     .#~.....r.>F.^.. 80400a8:	87d1 5807 c907 3d45 88c3 7875 93e4 37bd     ...X..E=..ux...7 80400b8:	8ae9 7151 c0f3 9c1b 6f6c ac68 0756 c8da     ..Qq....loh.V... 80400c8:	c15f 5c2e 2318 8c5b e33a 5556 02d1 d7fb     _..\.#[.:.VU.... 80400d8:	ffca 907b 797f 2f15 874c 0777 3817 a6c1     ..{..y./L.w..8.. 80400e8:	450f 1059 66f5 e0af 9146 9e26 0698 fe53     .EY..f..F.&...S. 80400f8:	00d4 fd70 d588 7509 be30 1889 ab20 dde7     ..p....u0... ... 8040108:	2969 8a01 7128 b9e7 4fae aad1 9c4e 1fc1     i)..(q...O..N... 8040118:	1f5c 0543 d786 54d3 26c5 c1ef b54b fad9     \.C....T.&..K... 8040128:	d043 375c 0a2c 2cef ab56 12d6 ac08 00b5     C.\7,..,V....... 8040138:	14b6 4016 f074 567f 8cbd 88f1 77bf caf7     ...@t..V.....w.. 8040148:	cf82 612f fd9c 3aa8 8d8d 3315 a1f5 d542     ../a...:...3..B. 8040158:	4a99 312d 5834 5adc 5832 f23d bd87 8094     .J-14X.Z2X=..... 8040168:	49e6 d85f 024c 18ba 4b85 f418 2ca7 ed3e     .I_.L....K...,>. 8040178:	a154 5059 178a 06ab 2502 4668 2ea2 7be7     T.YP.....%hF...{ 8040188:	dd6a dc52 07d0 fa0c 0fdf 204a 65bb 9443     j.R.......J .eC. 8040198:	39df 04ec 7783 c88c 00d1 f7c1 3cc5 0447     .9...w.......<G. 80401a8:	2913 5f2e 8b1e cf1a 7983 c1a4 a57b 106c     .)._.....y..{.l. 80401b8:	1e68 64a9 8263 36a2 306d 8f75 110f 64a9     h..dc..6m0u....d 80401c8:	3827 a4fa dbb8 f4d2 e2fd 8292 aece 2797     '8.............' 80401d8:	c786 5385 5663 11c9 6d78 9445 54c0 9619     ...ScV..xmE..T.. 80401e8:	7608 346e b7e6 a800 52cb 8a02 a429 2768     .vn4.....R..).h' 80401f8:	f59e 5474 4d77 1679 a340 4cbf 839e ac95     ..tTwMy.@..L.... 8040208:	72e9 657d 0875 e398 a7a3 c940 7dd0 c563     .r}eu.....@..}c. 8040218:	8edc 1c3e 6aff d1af 0f1e 14ba 3ec5 bbd1     ..>..j.......>.. 8040228:	31ae 2449 0644 00f8 4c2e 6be0 e04d 627d     .1I$D....L.kM.}b 8040238:	a138 f7ca c1af 54d5 dc25 f5ba a685 84c3     8......T%....... 8040248:	c3b9 08ee 83eb 09ba a39f 6790 782c ed76     ...........g,xv. 8040258:	45e1 4747 3b55 c36c dde9 f016 25de 8d1c     .EGGU;l......%.. 8040268:	ff65 7b2e c460 4546 46b7 f160 237a a64f     e..{`.FE.F`.z#O. 8040278:	6b2f 8098 a799 0897 c541 9a21 32fa 37ad     /k......A.!..2.7 8040288:	ebb4 2646 eb2d 22ed 9085 5899 9b13 e1d7     ..F&-.."...X.... 8040298:	12f2 3e35 a716 25b3 1c3d cb27 b6fb 1200     ..5>...%=.'..... 80402a8:	db83 3dc8 c18f 700f 4658 cf73 c780 6682     ...=...pXFs....f 80402b8:	54aa 84bf 04c4 8de5 022b d5ae b87b 36b5     .T......+...{..6 80402c8:	15ed 36bc 0f09 5616 ca9f 3575 2b84 fcd5     ...6...V..u5.+.. 80402d8:	28d7 1af8 5f07 f893 f1a1 f861 f8ce e11f     .(..._....a..... 80402e8:	b6ee 4cb4 e99c b81b 514b 5884 2558 3312     ...L....KQ.XX%.3 80402f8:	9ba6 d506 b722 84fd 41ab a6e9 48b6 6b65     ...."....A...Hek 8040308:	3705 7e1a 2fa6 f3fd dcdf 3597 4486 d537     .7.~./.....5.D7. 8040318:	42c9 60c4 3ec3 b811 ba74 fd84 b837 75ff     .B.`.>..t...7..u 8040328:	91bf 46a9 5329 686a c399 f103 af0e f492     ...F)Sjh........ 8040338:	ec15 ea04 55d6 86dd 7602 8a8d 6642 6d56     .....U...v..BfVm 8040348:	178d e91f 650b e37a d1d1 e6c2 68ed 21a3     .....ez......h.! 8040358:	ed42 7342 1fe5 5701 0654 d71e 8548 d991     B.Bs...WT...H... 8040368:	8ca2 2ba2 9888 eed1 8d92 7626 53e9 06d1     ...+......&v.S.. 8040378:	0b7d 9e06 fcba 7bdc 4018 e88f 6d1b ec0f     }......{.@...m.. 8040388:	8569 d70b e7cb 7a52 554a 3c2b 1f5c 86df     i.....RzJU+<\... 8040398:	ef84 59d4 ad0b f0ff 6ee0 7c62 71bb dc0e     ...Y.....nb|.q.. 80403a8:	7b87 b230 96e0 f0a7 25fe 11bb 578b b7fe     .{0......%...W.. 80403b8:	cae5 0a4d c56a e446 43cb 1ca6 8150 14d3     ..M.j.F..C..P... 80403c8:	83de 2a2f f3cc 2f88 4511 bf63 5f37 f317     ../*.../.Ec.7_.. 80403d8:	5d8f b3f4 e877 d166 8933 8f7a f043 b6ac     .]..w.f.3.z.C... 80403e8:	9faa fdc1 bccf 15f3 c039 7db5 8699 f416     ........9..}.... 80403f8:	1f64 37ad a0af 5c0a 298b 316b fee7 0674     d..7...\.)k1..t. 8040408:	d79d b7f3 e168 df68 ee8c 3150 ff6b 4c91     ....h.h...P1k..L 8040418:	19f8 6f83 7470 f1fc 6b8b 7520 9537 384a     ...opt...k u7.J8 8040428:	19d9 8a2d 886c 62f2 0247 bf2e aa1d 987d     ..-.l..bG.....}. 8040438:	54c4 7026 233e ae6f 25cf 8fd7 1be6 4c8b     .T&p>#o..%.....L 8040448:	ed08 2333 00b4 6002 4d8b b1f3 e68a f552     ..3#...`.M....R. 8040458:	3e10 1b3f 5471 d1fa 635f 8a9e fe85 1c8e     .>?.qT.._c...... 8040468:	9e13 ce37 7fc3 84b7 a8bf 8c5f 3627 e19f     ..7......._.'6.. 8040478:	e69f 1cab 0239 65c9 f702 385f 1e14 0504     ....9..e.._8.... 8040488:	e257 9fa9 61ed 81ea 6e37 6fb8 5be5 fdbc     W....a..7n.o.[.. 8040498:	8ef5 c9d6 d781 3c29 0748 126a 0138 75e6     ......)<H.j.8..u 80404a8:	7d76 2b29 4cef da91 5d3f 561d 67e5 13b8     v})+.L..?].V.g.. 80404b8:	816a 71af b5d3 0ad1 1adc 31e4 47a6 4819     j..q.......1.G.H 80404c8:	1fa2 1780 8971 a778 07e2 8f65 14aa 4553     ....q.x...e...SE 80404d8:	387a daa0 a2f1 5d8f 90da 9245 90d3 7207     z8.....]..E....r 80404e8:	e412 db80 3fc1 ad1f 468c 94c9 4052 3d12     .....?...F..R@.= 80404f8:	d27a 021b f035 1ab8 51bc 723a 29d3 5607     z...5....Q:r.).V 8040508:	9670 0e90 5535 d03e 5193 b54b 1836 b5df     p...5U>..QK.6... 8040518:	be82 d136 b289 0541 053e 6215 888f 4e70     ..6...A.>..b..pN 8040528:	41d0 6464 f0e6 5db2 cd6f c3dc d8da e584     .Add...]o....... 8040538:	11d6 9bda 25e2 02ac 34d4 3983 a501 2f54     .....%...4.9..T/ 8040548:	ab41 6f4d 16a0 d7a1 b569 8488 d2d4 65c8     A.Mo....i......e 8040558:	109c 5523 78d7 9ae9 c022 1edb cbc4 7434     ..#U.x..".....4t 8040568:	9c66 aaf6 86a7 4528 4392 9a76 a076 22ac     f.....(E.Cv.v.." 8040578:	4dab 3033 db6d 7474 1190 ef51 357b 45c0     .M30m.tt..Q.{5.E 8040588:	4548 0c8c a5bb d003 60c1 4864 b4c7 0524     HE.......`dH..$. 8040598:	71ad b5e0 0e0a b7d6 22c4 c485 e960 a144     .q......."..`.D. 80405a8:	f3d6 6021 d46a 710e f8d4 a4e7 49ac 246e     ..!`j..q.....In$ 80405b8:	e0d5 8421 1632 5fcc 5a19 4a86 9e96 f696     ..!.2.._.Z.J.... 80405c8:	e5c9 0aac 9691 c18c cf3a 8829 be27 3ace     ........:.).'..: 80405d8:	54c8 d6c7 9618 4675 a9c5 91eb 67af 8dd7     .T....uF.....g.. 80405e8:	d974 fe5b c9d6 8058 6684 bb9d be92 e557     t.[...X..f....W. 80405f8:	bb07 258b 0b9d 8dd3 97b0 d8e4 b74d 2bd3     ...%........M..+ 8040608:	bf35 6343 8384 1095 1056 4ac0 2609 196c     5.Cc....V..J.&l. 8040618:	83bf 3348 884a 700b 7308 25cb 58a4 794b     ..H3J..p.s.%.XKy 8040628:	e214 23a7 7920 f818 87af d7f8 aa82 ad43     ...# y........C. 8040638:	e2f9 6a03 4cda debd 6fb7 c2e0 44d4 573e     ...j.L...o...D>W 8040648:	d08e 2ac3 6dce 6750 168f c106 bbd0 a8c0     ...*.mPg........ 8040658:	5c53 8715 8515 5a17 3660 35a2 c568 99de     S\.....Z`6.5h... 8040668:	1982 2fde 51e1 69f2 9c35 564c 9484 a9cf     .../.Q.i5.LV.... 8040678:	6561 9ab2 712b 26d7 36fc 1e14 a887 0636     ae..+q.&.6....6. 8040688:	1335 6781 46ee 32a1 7adc 1b5b 7b8a 996b     5..g.F.2.z[..{k. 8040698:	c00b 6d34 cfba f887 7aa7 0652 1e92 7dc6     ..4m.....zR....} 80406a8:	ffde 37f4 a5c6 c3ee 6883 e1bb 9f79 017f     ...7.....h..y... 80406b8:	2249 c70b 302f 0582 5e12 167d 9b05 ede1     I"../0...^}..... 80406c8:	d6a3 7397 be07 bb1c 196e d1da f75c 2497     ...s....n...\..$ 80406d8:	98dd 2181 5bcd f421 0902 36e1 37cd eabb     ...!.[!....6.7.. 80406e8:	51cb 306d 4eda 2ec7 5d84 4261 d9dd de82     .Qm0.N...]aB.... 80406f8:	4013 35d3 39a8 a908 22c1 bb22 c5fa 34ac     .@.5.9...""....4 8040708:	873a 8cb0 1c97 1461 f093 9e09 cf49 8fc1     :.....a.....I... 8040718:	6146 fa36 118c 702a 717b aca8 cd8d b5ed     Fa6...*p{q...... 8040728:	8863 b9c1 423e c87c ef3a 77fb 7b04 8094     c...>B|.:..w.{.. 8040738:	f72f e634 13d0 f4bc f554 b85b d7d9 85cf     /.4.....T.[..... 8040748:	6b74 bf1c 5b5f 1803 7b3f fa61 345f 3196     tk.._[..?{a._4.1 8040758:	cd7f d932 63ec 8b21 4e7d 3b43 dd70 6c1f     ..2..c!.}NC;p..l 8040768:	84eb 02dd 0d1b 8b4c 1674 5712 5b4f 86f1     ......L.t..WO[.. 8040778:	ae84 e83e f2f2 58cb 9d30 e0e5 c0f6 5c67     ..>....X0.....g\ 8040788:	6ed8 b3fd ffaf f5f8 c0ff ff3f f5f6 7eff     .n........?....~ 8040798:	8ffd 6b3f 7444 f861 ba38 03ae 7ff9 e004     ..?kDta.8....... 80407a8:	e95f 7fdf faf8 5f4f 70ff a819 0271 bfd4     _.....O_.p..q... 80407b8:	f541 fe7f 4ffa 0197 2498 fc00 d7fb fd7f     A....O...$...... 80407c8:	effa ff5f ff00 8ffe ffaf 6402 085d 786a     .._........d].jx 80407d8:	917d 8d14 2b2e be36 d8ac 5ae4 6fd7 18bc     }....+6....Z.o.. 80407e8:	3f00 45e8 307d ba54 c42f 7a59 a2ec aed2     .?.E}0T./.Yz.... 80407f8:	2e53 ed2a c07b 1169 3ae7 eb40 8a6d a9c2     S.*.{.i..:@.m... 8040808:	027e 9226 a3f4 0f28 43bc e411 aadb 19c3     ~.&...(..C...... 8040818:	e86c 3336 11a1 bda9 481b 80b4 846d 4f00     l.63.....H..m..O 8040828:	aa2a dc33 bba9 dcc8 8402 d18d d460 5a9c     *.3.........`..Z 8040838:	deb9 e3a9 f1b6 81d9 a489 3b05 a3f8 d86b     ...........;..k. 8040848:	6423 24bf 1bfb 1a9b 40a7 f218 2b44 a6b3     #d.$.....@..D+.. 8040858:	ac51 5a85 664b a2ad 015e bc98 4422 e9d0     Q..ZKf..^..."D.. 8040868:	ad69 7c6a 9420 bc98 36cc fac5 f4cb 6d90     i.j| ....6.....m 8040878:	f00f cb64 c0be 8c08 9d62 96ff f91e b048     ..d.....b.....H. 8040888:	8e26 341b d9a5 2a15 f9d4 aeaa 71fb 3075     &..4...*.....qu0 8040898:	6590 6e83 418e 6a82 81ad 94db 6f06 ea49     .e.n.A.j.....oI. 80408a8:	ceae a081 914c 14f2 1427 28cd ce1c 5dd9     ....L...'..(...] 80408b8:	9b55 75b5 4acb 6794 5bb0 4394 5618 b5b0     U..u.J.g.[.C.V.. 80408c8:	cea4 7548 e152 52f3 3ed9 cedb 29f3 8fd7     ..HuR..R.>...).. 80408d8:	f90c b953 f0c3 6f18 9937 6159 4f4a 7191     ..S....o7.YaJO.q 80408e8:	0935 204d 047b c7b6 f9b6 f19e a7a8 c8eb     5.M {........... 80408f8:	9607 5cb0 0bc1 b41c 0922 8902 e0b6 cea4     ...\...."....... 8040908:	9cd6 bc41 d787 364c c339 cf64 83b0 a683     ..A...L69.d..... 8040918:	8d06 e32d 427b 235b 2db0 37fa 2c31 acbb     ..-.{B[#.-.71,.. 8040928:	4c51 7d60 1ea5 8d7c 0c23 1097 6a8f b04c     QL`}..|.#....jL. 8040938:	c8b7 071c 45e2 3915 25a1 68dc 0e84 7557     .....E.9.%.h..Wu 8040948:	9124 8750 6de3 c204 0daa 6ed3 3455 dccc     $.P..m.....nU4.. 8040958:	d200 3c07 8254 b468 3a0d 1a28 fa74 bd41     ...<T.h..:(.t.A. 8040968:	b040 9558 add8 7831 acc5 5380 b080 5647     @.X...1x...S..GV 8040978:	b55b cae4 7565 b921 3027 e612 2de8 27c0     [...eu!.'0...-.' 8040988:	e071 2010 be58 14b5 467a 2d55 5e1b 935b     q.. X...zFU-.^[. 8040998:	314f 08d1 6699 4431 87ed ed11 e8ab ebb8     O1...f1D........ 80409a8:	a17d 0ecd 8db7 7bd5 57d5 2dde ea17 31f8     }......{.W.-...1 80409b8:	f436 def6 faa1 e6b2 16e7 3578 bbca a86f     6.........x5..o. 80409c8:	dd9c ec58 f18f 0500 745c a81b 29be 8e86     ..X.....\t...).. 80409d8:	2040 3e37 0409 4f2f 8369 2c7e fa9f f874     @ 7>../Oi.~,..t. 80409e8:	9788 5de6 88f9 8c2c 7e1f b270 2642 d48a     ...]..,..~p.B&.. 80409f8:	fe39 9652 299b efac bd40 9a86 4c5b c241     9.R..)..@...[LA. 8040a08:	058f 3a65 837c d637 81bf 2bff b4c6 0ae3     ..e:|.7....+.... 8040a18:	76dd 4d5a 6d74 a749 d0ef fe8b d1bb caef     .vZMtmI......... 8040a28:	efe5 71f4 8a30 86d7 3bd0 1f48 f4da c3c9     ...q0....;H..... 8040a38:	d69b 4ee8 a616 6c89 2016 0696 8c19 776e     ...N...l. ....nw 8040a48:	f100 4d24 55b2 3529 66c6 65f5 8332 a10e     ..$M.U)5.f.e2... 8040a58:	e9a9 b7b7 21fd 0984 b81a 339a f51e b747     .....!.....3..G. 8040a68:	82df 47ab 0e0d 786f f4d4 8ea3 300e cb91     ...G..ox.....0.. 8040a78:	104d 89d3 4a12 f9c1 9840 faa4 65d1 d2e9     M....J..@....e.. 8040a88:	23a7 26ee 407d 34d2 19a7 8793 48fe a833     .#.&}@.4.....H3. 8040a98:	3403 3463 dfee 1f7f 1359 964b 107e fa59     .4c4....Y.K.~.Y. 8040aa8:	4751 dc19 b867 787a 9b22 de9b 5b0c 43c1     QG..g.zx"....[.C 8040ab8:	fd5b b943 74a7 008d 7268 f8db ac83 0e62     [.C..t..hr....b. 8040ac8:	aed0 6909 7812 13db 7ed6 8318 8606 aa8c     ...i.x...~...... 8040ad8:	d645 c663 6313 6d66 d5f1 7075 60d6 fb2d     E.c..cfm..up.`-. 8040ae8:	ace8 de02 179f a1ed e981 3328 b48f 28e6     ..........(3...( 8040af8:	2070 254e adc0 1fd3 3b07 66c4 153e 07f5     p N%.....;.f>... 8040b08:	2c53 16ac cb01 1acf dfc1 510f d27e 4eb5     S,.........Q~..N 8040b18:	b7a4 ebb4 c3a9 71c6 aefc d95f 863c 1c9a     .......q.._.<... 8040b28:	f215 ffe9 9a03 9fb4 f401 009c 2f00               .............08040b35 <data__info_html>: 8040b35:	692f 666e 2e6f 7468 6c6d 0000 5448 5054     /info.html..HTTP 8040b45:	312f 312e 3220 3030 4f20 0d4b 530a 7265     /1.1 200 OK..Ser 8040b55:	6576 3a72 6c20 4977 2f50 2e31 2e33 2031     ver: lwIP/1.3.1  8040b65:	6828 7474 3a70 2f2f 6173 6176 6e6e 6861     (http://savannah 8040b75:	6e2e 6e6f 6e67 2e75 726f 2f67 7270 6a6f     .nongnu.org/proj 8040b85:	6365 7374 6c2f 6977 2970 0a0d 6f43 746e     ects/lwip)..Cont 8040b95:	6e65 2d74 654c 676e 6874 203a 3031 3839     ent-Length: 1098 8040ba5:	0a0d 6f43 6e6e 6365 6974 6e6f 203a 6c43     ..Connection: Cl 8040bb5:	736f 0d65 430a 6e6f 6574 746e 742d 7079     ose..Content-typ 8040bc5:	3a65 7420 7865 2f74 7468 6c6d 0a0d 6f43     e: text/html..Co 8040bd5:	746e 6e65 2d74 6e45 6f63 6964 676e 203a     ntent-Encoding:  8040be5:	7a67 7069 0a0d 0a0d 8b1f 0008 0000 0000     gzip............ 8040bf5:	0a04 569d 6edd 36db 7e14 5615 69bb 2881     ...V.n.6.~.V.i.( 8040c05:	766e 6035 8096 2b22 0286 1aeb 1da0 5eb0     nv5`.."+.......^ 8040c15:	b40d db44 256c 9352 c728 4bbe adb2 68bb     ..D.l%R.(..K...h 8040c25:	0e81 30c1 4114 aed7 827b 6b74 b4b6 d389     ...0.A..{.tk.... 8040c35:	a057 68de 21df 272d 9c5e e7ec 3642 c88f     W..h.!-'^...B6.. 8040c45:	f7f3 ef9d aa1c e57b 3b93 f7eb 6fee 64dc     ......{..;...o.d 8040c55:	9343 7167 7e97 c659 20d5 020a 8248 71a7     C.gq.~Y.. ..H..q 8040c65:	1737 b386 c864 4acb 2898 4da8 fc3f 7b08     7...d..J.(.M?..{ 8040c75:	edee 98d0 1422 d75f 1472 5f05 5f86 08dc     ...."._.r.._._.. 8040c85:	75d7 705e 7b23 0899 a258 1195 2a0a 6eb7     .u^p#{..X....*.n 8040c95:	2246 881d 4956 5cf1 c144 8a48 42cd e697     F"..VI.\D.H..B.. 8040ca5:	b9cc 994d 619a 8a94 4c91 e844 1584 a4a9     ..M..a...LD..... 8040cb5:	3c91 ab0b 6784 5a22 c95b 58f9 75e6 973e     .<...g"Z[..X.u>. 8040cc5:	4aeb 4e94 70e0 5d19 0b87 4d23 6226 ccfb     .J.N.p.]..#M&b.. 8040cd5:	9b4e ed6f b349 8f65 7eed c8f3 361e bb4f     N.o.I.e..~...6O. 8040ce5:	bf1d cdd7 7aa4 86c8 e8a5 4147 a5ce 4d5a     .....z....GA..ZM 8040cf5:	2aaa a560 a2c8 32a0 4c93 4354 0c21 552c     .*`....2.LTC!.,U 8040d05:	2949 c30b a4cc b840 8c46 e74d 1f01 ff71     I)....@.F.M...q. 8040d15:	6036 9955 4144 33a9 fab1 c2a0 8ee1 8f7f     6`U.DA.3........ 8040d25:	0785 a7ad 49d3 4ddc 88e5 1925 aaaf 5028     .....I.M..%...(P 8040d35:	d47c 25e3 7ff3 2a61 bcfa 4cce f62b 58e5     |..%..a*...L+..X 8040d45:	a1a4 05d1 9d2c 09d3 a2c9 fd28 dc56 b3e5     ....,.....(.V... 8040d55:	a5d0 c54a 9578 060a bd08 4c8f 340f c2c5     ..J.x......L.4.. 8040d65:	c0f1 fb4c 6adb 107c 9930 6722 eaa1 a250     ..L..j|.0."g..P. 8040d75:	b33a 75a3 ead6 b823 2236 fd2c 5a69 80c4     :..u..#.6",.iZ.. 8040d85:	a96c d8e3 04be 5bba 1f76 1f28 3b34 56cd     l......[v.(.4;.V 8040d95:	d8f3 a77b 67f3 4075 231d a0d5 f1f2 f6c6     ..{..gu@.#...... 8040da5:	a867 936d 3d82 6fb1 3bed b87b 4d5c beaa     g.m..=.o.;{.\M.. 8040db5:	4c5e 2791 8e46 a540 05e5 c4a6 eeff 287a     ^L.'F.@.......z( 8040dc5:	a32b 49cb f9eb e6a7 781b 229d a3e4 9f53     +..I.....x."..S. 8040dd5:	1a9d f7dc 9d90 7f81 e4b3 0145 1de0 336a     ..........E...j3 8040de5:	0336 e18b 05da b1de 05d1 8498 88f1 3267     6.............g2 8040df5:	2345 1568 f4f6 8098 0f26 5d7d 6ee6 eefb     E#h.....&.}].n.. 8040e05:	b7e7 2837 80b7 3e51 455a cb81 1934 80c8     ..7(..Q>ZE..4... 8040e15:	b1a1 1a86 3626 dcee 07bd 4345 6ecc e40b     ....&6....EC.n.. 8040e25:	5985 735c 9912 e85e e18c 27b0 299f 8969     .Y\s..^....'.)i. 8040e35:	cc06 82aa f8c3 c087 0f6b 4f48 8867 d91f     ........k.HOg... 8040e45:	9423 0b6b 310d 6444 1a74 d72b c6eb d6f3     #.k..1Ddt.+..... 8040e55:	4819 af5b 2b4a 3481 474a bb42 f80b ec0e     .H[.J+.4JGB..... 8040e65:	f371 b994 bfc2 9346 50ed 0dd9 8546 aa59     q.....F..P..F.Y. 8040e75:	52e3 0bae 7323 019a a0ee ea73 c4bd 39f6     .R..#s....s....9 8040e85:	7b42 9b03 cd47 b993 4719 9d54 6c8a c6a9     B{..G....GT..l.. 8040e95:	a08f 8ecf 67dd bdf6 d063 fda1 fed3 4646     .....g..c.....FF 8040ea5:	5388 ed58 982f 4a29 528d 772c 4bbd 3438     .SX./.)J.R,w.K84 8040eb5:	34db 181e fcb8 4162 bfb1 1239 8565 2cf2     .4....bA..9.e.., 8040ec5:	e18b 8df6 0675 bd12 3421 ed9a bd05 279c     ....u...!4.....' 8040ed5:	4d3c 61a9 e7cf 8afa da1c 9043 da7e b63c     <M.a......C.~.<. 8040ee5:	196f 7898 9ae2 aa87 11e1 d4a4 d631 6b94     o..x........1..k 8040ef5:	7a65 00b7 2ed6 076a 04b7 4c17 6a3d e2b5     ez....j....L=j.. 8040f05:	54ae 7d45 5a76 6805 1a65 7ab4 b553 9e1c     .TE}vZ.he..zS... 8040f15:	672d 82d3 18d8 ad12 c531 3b40 ce3e 1a84     -g......1.@;>... 8040f25:	0060 6b07 69d7 9e90 fd8f 6539 800a ec4f     `..k.i....9e..O. 8040f35:	3c7b 7847 40fe 5318 7364 cff0 5461 ea93     {<Gx.@.Sds..aT.. 8040f45:	9d33 96b8 0df0 cd95 ffa5 0f1b fa51 c098     3...........Q... 8040f55:	6223 39bb 4874 c483 78c3 2031 ce89 0231     #b.9tH...x1 ..1. 8040f65:	f171 d010 e173 06bf 69d1 e55b 96e2 e67b     q...s....i[...{. 8040f75:	6ad1 77be bd18 f663 0135 f008 0288 9007     .j.w..c.5....... 8040f85:	f668 fd51 b77f a027 4832 2c88 ace8 abbb     h.Q...'.2H.,.... 8040f95:	6d2e df4d c7cf 3a50 3855 0f65 fdda fb07     .mM...P:U8e..... 8040fa5:	0582 b318 ed2f b31e c0bf afc7 b8f0 2c17     ..../.........., 8040fb5:	eaad eef2 8bab abea c2fc bc0e 71b4 7548     .............qHu 8040fc5:	f379 a8b4 dc75 8b24 bdbb 18da 66ad ac77     y...u.$......fw. 8040fd5:	0217 55a6 c992 21e4 57ae ea61 b152 eeaa     ...U...!.Wa.R... 8040fe5:	d2e5 c2dc bcbc 6d7a cae5 fcda ebba c519     ......zm........ 8040ff5:	84f0 2945 5e73 904e 2bf5 a30c 00ef 07ae     ..E)s^N..+...... 8041005:	8765 89e6 0a37 133a f1dd efe7 3f45 fee6     e...7.:.....E?.. 8041015:	0dc5 3eef 1610 f86f b54b 9a62 9fc4 730a     ...>..o.K.b....s 8041025:	daf5 67c7 09bf e3e8 2fea 307b 75b5 096c     ...g...../{0.ul. 8041035:	0000 5448 5054 312f 302e 3220 3030 4f20     ..HTTP/1.0 200 O 8041045:	0d4b 430a 6e6f 6574 746e 542d 7079 3a65     K..Content-Type: 8041055:	6574 7478 682f 6d74 0d6c 0d0a 000a 227b     text/html.....{" 8041065:	4341 3a22 0022 2c22 4422 2243 223a 2200     AC":".","DC":"." 8041075:	222c 6e69 665f 6572 2271 223a 2200 222c     ,"in_freq":"."," 8041085:	756f 5f74 7266 7165 3a22 0022 2c22 7022     out_freq":".","p 8041095:	7277 3a22 0022 2c22 6c22 6e69 5f65 6166     wr":".","line_fa 80410a5:	6c69 3a22 0022 2c22 6c22 776f 625f 7461     il":".","low_bat 80410b5:	6574 7972 3a22 0022 2c22 6222 7461 635f     tery":".","bat_c 80410c5:	7061 3a22 0022 2c22 6922 6e6e 7265 745f     ap":".","inner_t 80410d5:	6d65 2270 223a 2200 222c 6162 5f74 6974     emp":".","bat_ti 80410e5:	656d 6c5f 6665 2274 223a 2200 222c 6964     me_left":".","di 80410f5:	2231 223a 2200 222c 6f72 2231 223a 2200     1":".","ro1":"." 8041105:	222c 6f72 2232 223a 2200 222c 6f63 6e6e     ,"ro2":".","conn 8041115:	6365 5f74 6f6d 696e 6f74 2272 223a 2200     ect_monitor":"." 8041125:	222c 6c61 7261 226d 223a 2200 222c 656e     ,"alarm":".","ne 8041135:	7374 7465 6974 676e 5f73 6863 6e61 6567     tsettings_change 8041145:	2264 223a 2200 007d 227b 6572 6461 635f     d":"."}.{"read_c 8041155:	6d6f 756d 696e 7974 3a22 0022 2c22 7722     ommunity":".","w 8041165:	6972 6574 635f 6d6f 756d 696e 7974 3a22     rite_community": 8041175:	0022 2c22 6d22 6e61 6761 7265 5049 3a22     ".","managerIP": 8041185:	0022 2c22 6d22 6e61 6761 7265 5049 2232     ".","managerIP2" 8041195:	223a 2200 222c 616d 616e 6567 4972 3350     :".","managerIP3 80411a5:	3a22 0022 2c22 6d22 6e61 6761 7265 5049     ":".","managerIP 80411b5:	2234 223a 2200 222c 616d 616e 6567 4972     4":".","managerI 80411c5:	3550 3a22 0022 2c22 6922 6170 6464 2272     P5":".","ipaddr" 80411d5:	223a 2200 222c 7767 3a22 0022 2c22 6d22     :".","gw":".","m 80411e5:	7361 226b 223a 2200 222c 6864 7063 3a22     ask":".","dhcp": 80411f5:	2c00 7222 5f73 6573 7672 7265 3a22 0022     .,"rs_server":". 8041205:	2c22 7222 5f73 6f70 7472 3a22 0022 2c22     ","rs_port":".", 8041215:	7222 5f73 7770 2264 223a 2200 222c 7372     "rs_pwd":".","rs 8041225:	6b5f 7965 3a22 0022 2c22 7222 5f73 6e65     _key":".","rs_en 8041235:	6261 656c 2264 003a 222c 6164 6574 3a22     abled":.,"date": 8041245:	0022 2c22 7422 6d69 2265 223a 2200 222c     ".","time":"."," 8041255:	746e 2270 223a 2200 222c 746e 7370 7265     ntp":".","ntpser 8041265:	6976 2270 223a 2200 222c 7475 2263 223a     vip":".","utc":" 8041275:	2200 222c 7475 226d 223a 2200 222c 616c     .","utm":".","la 8041285:	7473 7973 636e 6974 656d 3a22 0022 227b     stsynctime":".{" 8041295:	7075 6974 656d 3a22 0022 2c22 6d22 646f     uptime":".","mod 80412a5:	6c65 3a22 0022 2c22 7022 6f72 6164 6574     el":".","prodate 80412b5:	3a22 0022 2c22 6622 7677 7265 6973 6e6f     ":".","fwversion 80412c5:	3a22 0022 2c22 6d22 6361 6461 7264 3a22     ":".","macaddr": 80412d5:	0022 2c22 7322 7265 6f6e 3a22 0022 2c22     ".","serno":".", 80412e5:	6f22 6e77 7265 3a22 0022 2c22 7322 7379     "owner":".","sys 80412f5:	6f4c 6163 6974 6e6f 3a22 0022 2c22 6322     Location":".","c 8041305:	6d6f 656d 746e 3a22 0022 2c22 7522 7370     omment":".","ups 8041315:	6d5f 646f 6c65 3a22 0022 2c22 7522 7370     _model":".","ups 8041325:	665f 7677 7265 6973 6e6f 3a22 0022 6552     _fwversion":".Re 8041335:	6f62 746f 6154 6b73 7400 7063 7069 745f     bootTask.tcpip_t 8041345:	7268 6165 0064 0400                              hread..0804134c <memp_num>: 804134c:	0004 0006 000c 0005 0019 0010 0006 0008     ................ 804135c:	0014 000a 001e 0032 0005 0009 0032 0019     ......2.....2...0804136c <memp_sizes>: 804136c:	001c 0020 0094 001c 0010 0010 002c 0014     .. .........,... 804137c:	0014 0010 0020 0010 0024 0080 0010 0614     .... ...$.......0804138c <tcp_pcb_lists>: 804138c:	1084 2001 108c 2001 107c 2001 1090 2001     ... ... |.. ... 0804139c <tcp_backoff>: 804139c:	0201 0403 0605 0707 0707 0707 0307               .............080413a9 <tcp_persist_backoff>: 80413a9:	0603 180c 6030 ff78                              ....0`x080413b0 <ip_addr_broadcast>: 80413b0:	ffff ffff                                   ....080413b4 <ip_addr_any>: 80413b4:	0000 0000                                   ....080413b8 <syslocation_len_default>: 80413b8:	0000 0000                                   ....080413bc <snmp_scalar>: 80413bc:	1db9 0803 186d 0803 1dfd 0803 1981 0803     ....m........... 80413cc:	0001 0000                                   ....080413d0 <udpentry_nodes>: 80413d0:	1648 2000 1648 2000                         H.. H.. 080413d8 <attable>: 80413d8:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 80413e8:	0002 0001 1508 0804 1630 0804               ........0...080413f4 <mib2_nodes>: 80413f4:	1c00 0804 17c8 0804 1610 2000 1ca4 0804     ........... .... 8041404:	15c8 0804 1798 0804 19f4 0804 1564 0804     ............d...08041414 <iprteentry_nodes>: 8041414:	1678 2000 1678 2000 1678 2000 1678 2000     x.. x.. x.. x..  8041424:	1678 2000 1678 2000 1678 2000 1678 2000     x.. x.. x.. x..  8041434:	1678 2000 1678 2000 1678 2000 1678 2000     x.. x.. x.. x..  8041444:	1678 2000                                   x.. 08041448 <iprouteinfo>: 8041448:	0002 0000 0000 0000 0000 0000 0000 0000     ................ 8041458:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041468:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041478:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041488:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041498:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 80414a8:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 80414b8:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 80414c8:	0000 0000                                   ....080414cc <sysname_default>: 80414cc:	5146 4e44 752d 6b6e 0000 0000               FQDN-unk....080414d8 <ipntomentry_ids>: 80414d8:	0001 0000 0002 0000 0003 0000 0004 0000     ................080414e8 <interfaces_scalar>: 80414e8:	14c1 0803 14e1 0803 140f 0803 1413 0803     ................ 80414f8:	0001 0000                                   ....080414fc <syslocation_default>: 80414fc:	0000 0000                                   ....08041500 <interfaces_ids>: 8041500:	0001 0000 0002 0000                         ........08041508 <attable_id>: 8041508:	0001 0000                                   ....0804150c <mgmt>: 804150c:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 804151c:	0002 0001 1bfc 0804 19f0 0804               ............08041528 <mib2_ids>: 8041528:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041538:	0005 0000 0006 0000 0007 0000 000b 0000     ................08041548 <mib2>: 8041548:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041558:	0002 0008 1528 0804 13f4 0804               ....(.......08041564 <snmp>: 8041564:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041574:	0002 001c 1ae8 0804 1980 0804               ............08041580 <tcp_scalar>: 8041580:	1d2d 0803 1765 0803 140f 0803 1413 0803     -...e........... 8041590:	0001 0000                                   ....08041594 <sys_tem_nodes>: 8041594:	16d4 0804 16d4 0804 16d4 0804 16d4 0804     ................ 80415a4:	16d4 0804 16d4 0804 16d4 0804               ............080415b0 <snmpenableauthentraps_default>: 80415b0:	0002 0000                                   ....080415b4 <udp_nodes>: 80415b4:	161c 0804 161c 0804 161c 0804 161c 0804     ................ 80415c4:	162c 2000                                   ,.. 080415c8 <icmp>: 80415c8:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 80415d8:	0002 001a 1894 0804 1724 0804               ........$...080415e4 <ip_scalar>: 80415e4:	1c41 0803 14f5 0803 15b5 0803 1413 0803     A............... 80415f4:	0001 0000                                   ....080415f8 <udpentry_ids>: 80415f8:	0001 0000 0002 0000                         ........08041600 <ipntomentry>: 8041600:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041610:	0002 0004 14d8 0804 17b8 0804               ............0804161c <udp_scalar>: 804161c:	1809 0803 1835 0803 140f 0803 1413 0803     ....5........... 804162c:	0001 0000                                   ....08041630 <attable_node>: 8041630:	16b8 0804                                   ....08041634 <ifspecific>: 8041634:	0002 0000 0000 0000 0000 0000 0000 0000     ................ 8041644:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041654:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041664:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041674:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041684:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 8041694:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 80416a4:	0000 0000 0000 0000 0000 0000 0000 0000     ................ 80416b4:	0000 0000                                   ....080416b8 <atentry>: 80416b8:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 80416c8:	0002 0003 1818 0804 1910 0804               ............080416d4 <sys_tem_scalar>: 80416d4:	1415 0803 2099 0803 1ba5 0803 1e45 0803     ..... ......E... 80416e4:	0001 0000                                   ....080416e8 <tcp_nodes>: 80416e8:	1580 0804 1580 0804 1580 0804 1580 0804     ................ 80416f8:	1580 0804 1580 0804 1580 0804 1580 0804     ................ 8041708:	1580 0804 1580 0804 1580 0804 1580 0804     ................ 8041718:	1778 2000 1580 0804 1580 0804               x.. ........08041724 <icmp_nodes>: 8041724:	1bcc 0804 1bcc 0804 1bcc 0804 1bcc 0804     ................ 8041734:	1bcc 0804 1bcc 0804 1bcc 0804 1bcc 0804     ................ 8041744:	1bcc 0804 1bcc 0804 1bcc 0804 1bcc 0804     ................ 8041754:	1bcc 0804 1bcc 0804 1bcc 0804 1bcc 0804     ................ 8041764:	1bcc 0804 1bcc 0804 1bcc 0804 1bcc 0804     ................ 8041774:	1bcc 0804 1bcc 0804 1bcc 0804 1bcc 0804     ................ 8041784:	1bcc 0804 1bcc 0804                         ........0804178c <sysdescr_len_default>: 804178c:	0004 0000                                   ....08041790 <interfaces_nodes>: 8041790:	14e8 0804 1818 2000                         ....... 08041798 <tcp>: 8041798:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 80417a8:	0002 000f 1944 0804 16e8 0804               ....D.......080417b4 <syscontact_default>: 80417b4:	0000 0000                                   ....080417b8 <ipntomentry_nodes>: 80417b8:	18dc 2000 18dc 2000 18dc 2000 18dc 2000     ... ... ... ... 080417c8 <interfaces>: 80417c8:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 80417d8:	0002 0002 1500 0804 1790 0804               ............080417e4 <iprteentry_ids>: 80417e4:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 80417f4:	0005 0000 0006 0000 0007 0000 0008 0000     ................ 8041804:	0009 0000 000a 0000 000b 0000 000c 0000     ................ 8041814:	000d 0000                                   ....08041818 <atentry_ids>: 8041818:	0001 0000 0002 0000 0003 0000               ............08041824 <tcpconnentry_nodes>: 8041824:	17a0 2000 17a0 2000 17a0 2000 17a0 2000     ... ... ... ...  8041834:	17a0 2000                                   ... 08041838 <ip_nodes>: 8041838:	15e4 0804 15e4 0804 15e4 0804 15e4 0804     ................ 8041848:	15e4 0804 15e4 0804 15e4 0804 15e4 0804     ................ 8041858:	15e4 0804 15e4 0804 15e4 0804 15e4 0804     ................ 8041868:	15e4 0804 15e4 0804 15e4 0804 15e4 0804     ................ 8041878:	15e4 0804 15e4 0804 15e4 0804 17cc 2000     ...............  8041888:	1834 2000 15f4 2000 15e4 0804               4.. ... ....08041894 <icmp_ids>: 8041894:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 80418a4:	0005 0000 0006 0000 0007 0000 0008 0000     ................ 80418b4:	0009 0000 000a 0000 000b 0000 000c 0000     ................ 80418c4:	000d 0000 000e 0000 000f 0000 0010 0000     ................ 80418d4:	0011 0000 0012 0000 0013 0000 0014 0000     ................ 80418e4:	0015 0000 0016 0000 0017 0000 0018 0000     ................ 80418f4:	0019 0000 001a 0000                         ........080418fc <udp_ids>: 80418fc:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 804190c:	0005 0000                                   ....08041910 <atentry_nodes>: 8041910:	17ec 2000 17ec 2000 17ec 2000               ... ... ... 0804191c <ipaddrentry_nodes>: 804191c:	1748 2000 1748 2000 1748 2000 1748 2000     H.. H.. H.. H..  804192c:	1748 2000                                   H.. 08041930 <ipaddrentry_ids>: 8041930:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041940:	0005 0000                                   ....08041944 <tcp_ids>: 8041944:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041954:	0005 0000 0006 0000 0007 0000 0008 0000     ................ 8041964:	0009 0000 000a 0000 000b 0000 000c 0000     ................ 8041974:	000d 0000 000e 0000 000f 0000               ............08041980 <snmp_nodes>: 8041980:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................ 8041990:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................ 80419a0:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................ 80419b0:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................ 80419c0:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................ 80419d0:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................ 80419e0:	13bc 0804 13bc 0804 13bc 0804 13bc 0804     ................080419f0 <mgmt_nodes>: 80419f0:	1548 0804                                   H...080419f4 <udp>: 80419f4:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041a04:	0002 0005 18fc 0804 15b4 0804               ............08041a10 <iprteentry>: 8041a10:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041a20:	0002 000d 17e4 0804 1414 0804               ............08041a2c <ifentry>: 8041a2c:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041a3c:	0002 0016 1b74 0804 1c4c 0804               ....t...L...08041a48 <udpentry>: 8041a48:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041a58:	0002 0002 15f8 0804 13d0 0804               ............08041a64 <ip_ids>: 8041a64:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041a74:	0005 0000 0006 0000 0007 0000 0008 0000     ................ 8041a84:	0009 0000 000a 0000 000b 0000 000c 0000     ................ 8041a94:	000d 0000 000e 0000 000f 0000 0010 0000     ................ 8041aa4:	0011 0000 0012 0000 0013 0000 0014 0000     ................ 8041ab4:	0015 0000 0016 0000 0017 0000               ............08041ac0 <sysdescr_default>: 8041ac0:	776c 5049 0800                                   lwIP.08041ac5 <sysname_len_default>: 8041ac5:	0008 0700                                        ...08041ac8 <tcpconnentry>: 8041ac8:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041ad8:	0002 0005 1c38 0804 1824 0804               ....8...$...08041ae4 <syscontact_len_default>: 8041ae4:	0000 0000                                   ....08041ae8 <snmp_ids>: 8041ae8:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041af8:	0005 0000 0006 0000 0008 0000 0009 0000     ................ 8041b08:	000a 0000 000b 0000 000c 0000 000d 0000     ................ 8041b18:	000e 0000 000f 0000 0010 0000 0011 0000     ................ 8041b28:	0012 0000 0013 0000 0014 0000 0015 0000     ................ 8041b38:	0016 0000 0018 0000 0019 0000 001a 0000     ................ 8041b48:	001b 0000 001c 0000 001d 0000 001e 0000     ................08041b58 <sys_tem_ids>: 8041b58:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041b68:	0005 0000 0006 0000 0007 0000               ............08041b74 <ifentry_ids>: 8041b74:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041b84:	0005 0000 0006 0000 0007 0000 0008 0000     ................ 8041b94:	0009 0000 000a 0000 000b 0000 000c 0000     ................ 8041ba4:	000d 0000 000e 0000 000f 0000 0010 0000     ................ 8041bb4:	0011 0000 0012 0000 0013 0000 0014 0000     ................ 8041bc4:	0015 0000 0016 0000                         ........08041bcc <icmp_scalar>: 8041bcc:	163d 0803 1669 0803 140f 0803 1413 0803     =...i........... 8041bdc:	0001 0000                                   ....08041be0 <internet>: 8041be0:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041bf0:	0002 0002 17c0 2000 1cc0 0804               ....... ....08041bfc <mgmt_ids>: 8041bfc:	0001 0000                                   ....08041c00 <sys_tem>: 8041c00:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041c10:	0002 0007 1b58 0804 1594 0804               ....X.......08041c1c <ipaddrentry>: 8041c1c:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041c2c:	0002 0005 1930 0804 191c 0804               ....0.......08041c38 <tcpconnentry_ids>: 8041c38:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041c48:	0005 0000                                   ....08041c4c <ifentry_nodes>: 8041c4c:	16a0 2000 16a0 2000 16a0 2000 16a0 2000     ... ... ... ...  8041c5c:	16a0 2000 16a0 2000 16a0 2000 16a0 2000     ... ... ... ...  8041c6c:	16a0 2000 16a0 2000 16a0 2000 16a0 2000     ... ... ... ...  8041c7c:	16a0 2000 16a0 2000 16a0 2000 16a0 2000     ... ... ... ...  8041c8c:	16a0 2000 16a0 2000 16a0 2000 16a0 2000     ... ... ... ...  8041c9c:	16a0 2000 16a0 2000                         ... ... 08041ca4 <mib2_ip>: 8041ca4:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041cb4:	0002 0017 1a64 0804 1838 0804               ....d...8...08041cc0 <internet_nodes>: 8041cc0:	150c 0804 1d70 0804                         ....p...08041cc8 <prefix>: 8041cc8:	0001 0000 0003 0000 0006 0000 0001 0000     ................08041cd8 <snmp_version>: 8041cd8:	0000 0000                                   ....08041cdc <snmp_publiccommunity>: 8041cdc:	7570 6c62 6369 ff00                              public.08041ce3 <ethbroadcast>: 8041ce3:	ffff ffff ffff                              ......08041ce9 <ethzero>: 8041ce9:	0000 0000 0000 7445 5f68 6669 2000 7325     ......Eth_if. %s 8041cf9:	0d0a 4400 4348 4350 696c 6e65 0074 6577     ...DHCPClient.we 8041d09:	5262 6965 696e 0074 6552 6e69 7469 6557     bReinit.ReinitWe 8041d19:	0062 2000                                        b..08041d1c <mib_pivate_nodes>: 8041d1c:	1e20 0804                                    ...08041d20 <bt6701_nodes>: 8041d20:	1dac 0804                                   ....08041d24 <signals_nodes>: 8041d24:	1e40 0804 1e40 0804 1e40 0804 1e40 0804     @...@...@...@... 8041d34:	1e40 0804 1e40 0804 1e40 0804 1e40 0804     @...@...@...@... 8041d44:	1e40 0804 1e40 0804 1e40 0804 1e40 0804     @...@...@...@... 8041d54:	1e40 0804 1e40 0804 1e40 0804 1e40 0804     @...@...@...@... 8041d64:	1e40 0804 1e40 0804                         @...@...08041d6c <rotek_ids>: 8041d6c:	038f 0000                                   ....08041d70 <mib_private>: 8041d70:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041d80:	0002 0001 1e1c 0804 1d1c 0804               ............08041d8c <bt6701>: 8041d8c:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041d9c:	0002 0001 1e18 0804 1d20 0804               ........ ...08041da8 <enterprises_nodes>: 8041da8:	1e74 0804                                   t...08041dac <signals>: 8041dac:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041dbc:	0002 0012 1dd0 0804 1d24 0804               ........$...08041dc8 <enterprises_ids>: 8041dc8:	a318 0000                                   ....08041dcc <rotek_nodes>: 8041dcc:	1e58 0804                                   X...08041dd0 <signals_ids>: 8041dd0:	0001 0000 0002 0000 0003 0000 0004 0000     ................ 8041de0:	0005 0000 0006 0000 0007 0000 0008 0000     ................ 8041df0:	0009 0000 000a 0000 000b 0000 000c 0000     ................ 8041e00:	000d 0000 000e 0000 000f 0000 0010 0000     ................ 8041e10:	0011 0000 0012 0000                         ........08041e18 <bt6701_ids>: 8041e18:	0001 0000                                   ....08041e1c <mib_private_ids>: 8041e1c:	0001 0000                                   ....08041e20 <enterprises>: 8041e20:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041e30:	0002 0001 1dc8 0804 1da8 0804               ............08041e3c <swt_ids>: 8041e3c:	0003 0000                                   ....08041e40 <signals_var>: 8041e40:	5779 0803 5739 0803 5909 0803 5895 0803     yW..9W...Y...X.. 8041e50:	0001 0000                                   ....08041e54 <swt_nodes>: 8041e54:	1d8c 0804                                   ....08041e58 <swt>: 8041e58:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041e68:	0002 0001 1e3c 0804 1e54 0804               ....<...T...08041e74 <rotek>: 8041e74:	1407 0803 140d 0803 140f 0803 1413 0803     ................ 8041e84:	0002 0001 1d6c 0804 1dcc 0804 3025 6432     ....l.......%02d 8041e94:	252e 3230 2e64 3025 6432 2520 3230 3a64     .%02d.%02d %02d: 8041ea4:	3025 6432 253a 3230 0064 6425 252e 2e64     %02d:%02d.%d.%d. 8041eb4:	6425 2520 3a64 6425 253a 2064 0d0a 0000     %d %d:%d:%d .... 8041ec4:	666e 0000 6e69 7469 0079 0000 6e61 0000     nf..inity...an.. 8041ed4:	4241 4443 4645 0000 6261 6463 6665 0000     ABCDEF..abcdef.. 8041ee4:	3130 3332 3534 3736 3938 0000 0043 0000     0123456789..C... 8041ef4:	4f50 4953 0058 0000 0000 0000 002e 0000     POSIX...........08041f04 <_init>: 8041f04:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8041f06:	bf00      	nop 8041f08:	bcf8      	pop	{r3, r4, r5, r6, r7} 8041f0a:	bc08      	pop	{r3} 8041f0c:	469e      	mov	lr, r3 8041f0e:	4770      	bx	lr08041f10 <_fini>: 8041f10:	b5f8      	push	{r3, r4, r5, r6, r7, lr} 8041f12:	bf00      	nop 8041f14:	bcf8      	pop	{r3, r4, r5, r6, r7} 8041f16:	bc08      	pop	{r3} 8041f18:	469e      	mov	lr, r3 8041f1a:	4770      	bx	lr
 |