JOSTALY TECHNOLOGIES John SETH Thielemann sthielemann@jostaly.com +1-223-231-3511 (1745418747 UNIX 112) Wed Apr 23 14:32:27 2025 - (1746022848 UNIX 119) Wed Apr 30 14:20:48 2025 0 NEWS) 1 Company News) * Almost seamless Standard C replacement build with an OSS package. * More ARM MMU work, into page tables. * Expansion of floating point support across architectures. 2) Floating-Point Logarithms Attachment@2848/size:78264 sha256: 061223709f3360c01a4bb62117280b00a600b3f44b3f4c9237833bb8b591c114 Floating point support has proven interesting across user/kernel space and the span of architectures. Hardware and the compilation level may(/not) support floating point. Of recent interest: some architectures may not have a FP logarithmic instruction. Target front-end Standard C (libm) calls: double log2(double); float log2f(float); The x87 has a log2 instruction: fyl2x (absent from SSE), quick 'debug' test: asm volatile( "fld1\n\t" -> load 1.0 constant "fld %0\n\t" -> load raw ieee754 FP value (64.015625) (2^6 + 2^-6) "fyl2x\n\t" -> st(0) = 6.00035217748030102721 (raw 0x4001c002e291d85437f9) "fst %0\n\t" -> 0x40c002e3 = (rounded: 6.00035095) The integer portion is simple, the negative exponent(s) are a bit more interesting and took some time to figure out. Calculator shows: 2^6.00035095 = 64.015570533 (pretty close). What's a precise way to calculate? Texas Instruments TMS320 DSP Designer's Notebook: Fast Logarithms on a Floating-Point Device: outlines an algorithm: log2(X) = EXP_old + log2(mant_old) (Log base two). Our implementation of this allows for tuning between low to high precision for speed and accuracy, without rounding. Generate simple tests with just negative exponents first, then various exponents. integral_t resultFraction = 0; T last = value; T next = last * last; size_t precision = 1; for (size_t i = 1; i <= B; i++, precision++) { T temp = next * next; if (!temp.isNormalized() || i == B || temp.exponent() < next.exponent()) { const sintegral_t nextExponent = next.exponent(); resultFraction |= nextExponent << (integral_bits - precision); next.exponent(0); temp = next * next; } last = next; next = temp; } if (precision < TypeBits::bits) resultFraction |= (next.fractionBits() << (integral_bits - T::bits_t::Fraction_BitMax)) >> precision; Fast run: precision bits on span of exponent: 8 bit: 0 Test value: 1.00000012 result: 0.0000001192/3E80007FF2A95000 bit: 1 Test value: 1.00000024 result: 0.0000002385/3E9000FFEAA69800 ... bit: 21 Test value: 1.25000000 result: 0.3215220938/3FD493D1676BB8A7 bit: 22 Test value: 1.50000000 result: 0.5849631070/3FE2B8048CBC905B 60/100 checkboxes completed, 255 files changed, 16052 insertions(+), 2916 deletions(-) EOF ELF>@@8/@8@ @@@@AA A A @@00Std@@00Qtd GNU AWAVAUATUSHLcH^AH+H Ld$PHILu9HD$PHHT$XHHHD$`HH5HHD$3HD$`HHT$hHyHpH$Ht$HH$=$H$HD$H4$H|$LZ+L$MH$HLHD$HH<$@H8L$Ht$LH$LLL$PHL$XmLL$@HL$HHD$@HD$XHD$HHD$@HHT$HH}HHq1 HH9N<uH9HHE1HHEIH$LHHIHD$/H$LHH$bH$H$HD$ 1H$HD$ HD$0HD$0HtiHD$0H?H9tVHT$0H4H9 HL$0H4HtHL$0HHtHL$0H HAHHD$(8HAHH$H$HD$(HD$(H?HD$(1H$H H E1LT$0HH$HH$HHH<$H$!H$11E1H$H$pH-H$H$H|$H$@H$HH$PH$XHH$`H$H$@H$hH$H$L$L$HDŽ$@-H$H$H f[ A"E11IH H H HH$HH$/H$H$HD$`HT$hHtHtHrH$Ht$1HHD$V H|$"H$H$H$H$H|$@@H4E1ɸ A"1IL$L$E1H H HH HHHLt$H$H$1H$LL"H$H$H$H$H; H5< Hl$pH.HD$pHt,HT$xHt"HrH$HH A"E11IH H H$HH H.H$H$HD$pHT$xHHHL$1HLkL!H$H$H$H$1H$11H$H$H$H$H$H$H$H54H$H$H$H$H$H$H$H$ H$(HDŽ$0@H1HH@<uHH$Z*@HH:HtHH(H$tHHt(H$H$hDH1H[]A\A]A^A_1HD$ HD$ HHH1 HH9< uH9L4$HH$@L)LD$(HL@HHtH<$H'H$tH<$H'H$TL$MH$H?LHL$L;$HHH$I9tkHHt$HHL$HD$H9HHI|U0HSHD$HL$H9Ht$r1H$H@aHHH4$H$L$H$S HIH/1HD$(HD$ M9U1,Ht$H<$H1L)0H$H|$@H$/yHJH<$H-&HH$L$&H$H$HHH11H$DŽ$H$H$H$H$H$H$H$ H$(H$0H$8H$@H$HH$PH$XH$`H$hH$pH$xH$H$H$H$fDŽ$HH=u j11fDŽ$H$f$H$H$H$H$H$H$ H$(H$0H$8H$@H$HH$PH$XH$`H$hH$pH$xH$H$H$HH=uH|$f$LZH$DŽ$DŽ$HDŽ$ .H$HDŽ$-@1HD$(HD$(cHH#H$HL$#H$L$HPMGL>L$L#H߾#LLLyH$DŽ$DŽ$HDŽ$*-H$HDŽ$-HPHHL$0HL$8HL$8H!H HL$8HL$8H!H9~H<$Ht$8E1́H$HD$8L$HD$0HDŽ$@H4%H-H$@yHHH$@11ɿH$@IIIHEHH@uH$@4)HHH4HH!H$@H$@H H$@H$@H H$@1H$E11HD$8H$ HDŽ$(H$H$@H$H$H$L$f)$f($fX$f)$f($H$E1HD$(L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$L$@Ld$8HHHHNHHWHOHNHVHWHOHNHVHWHOHN HVHW HO HN(HV HW(HO(HV(ÐfHH9HADuH9r1HH9H9 ЃÐf.H?vHt HrH@Hff.HOHt'HHt HHHf.HWHwHHrHtkHtf1 fHH9tG<ouHt H9DHWHOHHrHt+HH9uf.Hf.1HHfDUSHHHOHtHHt HH DHWHwHHrHt)Ht$1 fHH9tg<xuHt<H9r%1ҾXH!HHHEH;l$H[]@HSHKHHrHtHuHH|fAWAVAUATUSHHLgMHLHt H1Hs HEH9SHŀ|euMuLsL{ILLL;Ld$L9r'1ҾEHI HLHaH;l$sRH[]A\A]A^A_fDLwLILLLHL$H$Hw/1ҾfH HLHH;l$r1ҾFHe HLHH;l$b1ҾgH= HLHH;l$:1ҾGH HLHwH;l$f.HfDAWAVAUATUHSHH8tBHEHuH;HKL0L9LL HFH9L9AD HADuM9s  @H)H¨?uIItHHH1?II HIJAII8HLHI9rH?vHtMaL;g0yHG(LG HD$H^MULHIMHII95DOпHIHL$IHH HD$H!H9HKHH?HHL;H0HH(Hx HD$HHHHHHH H9DɺHH51Hx L u-Hu@HHtt1HH9u1HEHEH8[]A\A]A^A_ff.AWIAVAUATUHSHHL2LjL$H$H|$PLHT$XHD$ HDŽ$HDŽ$HDŽ$HDŽ$L$L$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$L$L$ H|$ 2!Hj unIH$IGIGIG IG(Mw0Mo8z H$HD$(H|$( HD$PH[]A\A]A^A_@H$D$oH L\$oH=oHHE1Ld$0LHML\$HMH$Ht$(Ht$pHHt$8H$HHt$@HHH)1Q0I1Cf.HIILHMLMHHHH HHH9f.AVAUATUHSHIHc7ILH9HBI9rcMLLLo 1fDHL9shLHcuIH)xlHE1E1Lj{ZYHt;H fDKHE[]A\A]A^fDHE[]A\A]A^fDI9r1HE[]A\A]A^f.D f.fHv"HtHHrHH9s HH:Hf.DHtVHtQHHrMH HtEHRHtHt9I9r,MI)I?v(H/LgIvt4OuHGHH([]A\A]A^A_fMAIIvLH HHA?HDILtH1H@I@1MHT$yHpL9@@`M9WLD$HL$HDHH9C6LHLHU'LD$HL$H@LHH)΃tHEAL9tfDH@L9uLHHL$J4HL$HL9Lx(IGHH Hp0LLHjIHE0HMIT$H9H E1MA@ II)tYLLL?HH)L9IGHuM4D11HHD$HD$I9uM9AUATUSHHHoHHHH?H HHL$MIHrHH^H?TA8IIHLH99HP0I9iHD$HP H@(HHHHLHHH9DL MHA?HT$HIIHH HD$H!H9HHkHH?HLH0M9s}LX(LP LIMADu_LLrWLHH9sKM$DILMI H@HE1L9rLL)I9rHL)IT 1H[]A\A]AAP]IIBHH)HHHkHtH?vHrL;h0sLHHHJHwH:U'tKHPLI9L)HII)L9#1HHM$I@uHR1?HHIT uf.@HHHHwHH?v{HrvH;H0spHD$Hp H@(HtZHvTHHHrIIHII9s9NƿHt$IHIHHHD$H!H9tHHsHHRH?vHtHrH;H0sHHHHrHwH:U'tHHHrHH?t HHL Huf.@HHIHHHJAHw%H:U'uHFEH9Du HJ@H9s H@HBHtWHRHtNIIrFHHwHH9HHFH9@HAD L9@uI9rIIP!II@AzLAWAVAUIATUSHXHHHHvH?AHHMuMIEILLL9HFH9@I9ADuH9s0I$ID$A}HXL[]A\A]A^A_I)HT$II~H|$tQHHt$TI9r?H|$Ht$PH|$H;x0s%HD$0HP H@(HtHwfHHrHHHH9sH4HHT$0HHHHH HD$0H!H9@tHSHHT$HT$HHD$H9HH?pHgH^H;h0THD$8HP H@(H9H0HH$HHHH9H4HHT$8HHHHH HD$8H!H9HD$H)H0H;HSHAH?AHHL$HtH 1Ht$H)DL$/HL$ H|$Ht$HL$HH9r2DL$/H|$HL$ EHHOHL$H9HSHDHT$H|$@LH+HD$@HHT$HHHHI$IT$XHCH;H?HHH;o0HHHHPHH8U'u^HP1?HHHDL9s+HD$H)HE1HHLHHLN1D f.fHVHHtHHWHfHVHNHHO@u+HHr#HtHt H@HPf.7HG HG(@HG0HG8HG@HGHHGPHGX@HG`HGhHGpHGxHLJHLJHLJHLJ|HLJHLJHLJHLJuNHLJ1HHLJfHH@@H9u1fHH7HW@u#HHrHtHtHGHPJf.HHG@uHGHGuPf.DHHGHVHHtHHWHfHVHNHHO@u+HHr#HtHt H@HPf.HwfHGHtAHHu HHrHu1H9tHBH) 28 uHH9u1HWHGHHr HtHuH f.HHt HWHtHHrH9s*HfDHWHGHtHtHHsfDHf.DHGHt?HH9sVHtHHsHyfHH9s.@84uHDHOHGHHrHtHtH9rH@f.H7HW@u#HHrHtHtHGHPf.AWAVAUATUSH8L6ML~HI?LLHD$tHLLI8U'WMVHD$LML?IHILHt$HD$HFI9L9t$ I1M.HHHu@HHttt#tHtDHH9uL3HCMH?LHD$IFI9afDL9t$eHD$I;F0^HD$ IF IV(H<H2HH&HL$HHHH9 L|$ HH LHHHHHD$ L3H!H9HS!MH?LHI~0H9|$HD$MN(MV IHI?I@MADuuLLrmLHI9saK4IHI H@HL$HH)L9WI1H9rH9HD$H)HL@Lf+HEHE@uH8H[]A\A]A^A_L3L{MtI?vK7HD$@MtH?vLHrHD$I;F0sHLHHHwH8U'tmINHL$H)HHLI@H9@tHL$H)HL9sRHt$M#H?J2HD$H@1ɨ?HH{HD$HDHD$-Ht$I~ u L3HSLl$IL+IMIu@LLHT$ HD$(HIEU'IUIEL{H;ILLHX0InH)HHL)I9D$sID$IEIUHEHU>SHHHGHtHWH?v Hr8U'tHCHH[HHtHWHtHHrHHH$HT$bSH_HH[zf.H7HW@u#HHrHtHtHGHPf.HHu HNH9s7H)H>E1HIAIr?HtH~H9@Du L9sDHH@u @HHHPfUSHHHwHtuHWH?vkHHrcHO8HG0H9t/HHH9HH9HC01HuHHH{ HHCHCHs@HC0HC8HtwHSHHvmHHreHKhHC`H9t1HHH91HH9DHC`1HuDHHH{PHHCHHC@HspHC`HChHHSxHHHHH9HHHHHHH9oHHHHHtL@I?vIr9U'@H1HH9HCHH;zHt)Hv#H H9rHHHHzHs@HthHSHHv^HHrVHKhHC`H9t2HHH9HH9HC`1HufDHHuH{PH HsHtgHSH?v]HHrUHK8HC0H9t1HHH9sEHH9HC01HufHHH{ HH[]f HC0H9#FfDHC`H9fDHC`H9&fDHC0H9Y~HHRL@IDIM8HHxH $LD$HSxHspHHf.DHHHFHFHGHFHFHGHF HF HG HF(HF(HG(HF0HG0HF8HG8H~  f.fHH~HHADtHH@fDATUSHHE1E1HAH9A4 @E@ A@+@A@-/@0AH@D ,H@D tgMQL9:I9tME AAX0D@E1fDMI9LHLX[]A\@DAaAw* DfAH9Et1IE1MQDDfA v@EMQK4I9rMu@H9rHHt HHH9sH1MtDHHHHHI9uHHHd I@H4@ u?}DI?LHD$ILHH?HLHtEHt@Hy։HHH9rH)HD$EuH AA3HD$f.HD$ILHD$HD$H[]@H= f.HHC?HmHHHc@AWAVAUATUSHxHHHVHH?HHILn H~(I9HI9rHL)H}Iu1H9HCHp I9cH$LHL<HD$IEIOIW(IGI AIo0IG(HL$IOIGMg8HL$IO IG HT$(\$0HL$ Hl$`Ld$hnH$AHH@HH?HHHI9HD$H|IG@AIAGL9uHD$AH|$PIn0IFHD$Mf8IFHD$ HD$HIF HD$(HD$@IF(HD$XHD$PH|$@D$0HxL[]A\A]A^A_f. f.fHIHYHHH9CHAVATUSHHH;HHH,HH>HuHH!HCH94HH4%H-;HH4HH?OAE1IH3Hd H4%H-6HLHLtH?IIMHHrqHyHH?H~wAHADHH9rӉIIH.IDILLILEILI@DLhHHyIIMMXHL[]A\A^HHx HII@HH4HHH?wId E1IAWAVIAUATUHH~SHHhLcLkHD$ HD$(IVLd$0HCLl$8HD$@HD$HLd$PLl$XMtI?vLLr A<$U't{H|$@E1HD$@HD$H1HUH\$ L}HLeLmHD$(HD$ HxHpHhH[]A\A]A^A_fDL<H|$Ht$PLMuL|$M_HT$1HLHD$H;Ht$HH9*H9!H|$@HT$ H$HD$@L|$(HD$HHK1H$Ht(H;HtpHrk 7L9tb HKHH9rfIvHI>Ht;Hr6HD$H4<L9s$H4 @<IvHHD$H9rDf.AWAVAUATUHSHHXHHtHGHt HrH{HEHLeMyLpLsLkL|$@HD$0HD$8LLt$@Ll$HLLLLE11H3HKH;H|$0LcLsLkHt$0HL$8HT$@HD$HUL#MLkMLLLuHuHLHD$HtBH$H1H4H9<A< HHI9IFH9rLuL#Lk1MH|$LHD$HtRMtMHT$H1H4H9<MLLB1LDHDHSHCHuHHr1HHD9fDE13AWAVAUATIUHSHHHFHD$`HD$hHD$pHD$xHDŽ$HDŽ$H-HzHR(HM Ld$ Lt$@Ll$LHD$HHT$8HLHL$0HT$@HD$ HD$(gHLHtHt H9rDI9tsL)LLHD$8Ht_HT$0HD$H\$HT$ H|$ HHT$ HD$(HtIU01LHD$HD$H`[]A\A]A^Ð1H\$HT$HHt$@HAWAVAUIHATUSHHHl$`HLHL|$h Lt$hLH$HD$HD$MHD$HD$ HD$(M9,ID$H=?GM9LIFL94LHL;t$hM9LHHIhH|$`Ht$hHD$`H$HL$pHD$hHT$xH<$HHD$ H$HD$pHD$xHDŽ$Ht$HL$HT$HD$(HDŽ$3LHL;t$hUHC0 H\$HHHĘH[]A\A]A^A_fDLt$0HHLL1H+L$hLI(LHHZH|$`Ht$hHD$`H$HL$pHD$hHT$xH<$HHD$ H$Ht$HL$HT$HD$(HD$pHD$xHDŽ$HDŽ$%LLHLL;t$hHC0IvL@HC0fDLHHk0菿f.DHW0HATUHo@SHHPHG@HHHSHH?HHHs`HKhH9HH9rHH)HH9xHHƀ>ulHHHuHH|$HHD$@Ht$HT$HH?vHr8U'HC@HOHS0HPH[]A\H~Lf11Lw8%HC@f.HtHKHH?vHHrHS`HshH9tHH9r HH)HtH9HHЀ8lHpHHWH|$HLd$0(LLeHD$0HHT$8HHHHH|$@H$HT$H)H9|H@LHHqHV HN(HHrHHfH)H9sAVL5AUATUSH@IwFHHI)HHI;IMHHwHt1Ҁ<t~HH@u謼@A Hl$Mt M9Lt$Ll$HD$ HD$(HD$0HD$8HHHnH@[]A\A]A^ÐHH9Hl$HHLt$Ll$rL4$HCxIH|$ HSpLHD$HD$HD$ HD$(HT$0HD$8Ll$HL~L9l$t/HC0 Df.HҾHHEN@E1L HHRH@AWAVAUATUSHHHHL$Hl$PHDŽ$H$LHT$PHD$HHFHHDŽ$HD$XHDŽ$HD$`HD$hHD$pHD$xHDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$H$usHD$HHL$L$L$HCHD$HLLLHHHD$HHH[]A\A]A^A_@1H^D$<+s<-f1ҾeHHLIL;$HLL;$jMHLL$LIUHLHH$YLLLL1HL6LHLLLH$HH$HE1E1H @Ya^`vA K4 Lɿ H9}"LLHIHtEtH9޸"6D$HLHLH$HHDHL LV@HD$1Ҿ.HHLIBL;$M;L1HLL$LL蘧LPHLLIUHLHL$H$LLUL LLL$MLLLL$L$LL$M+1L|$LL$If.LL80uILLAL;$rH|$LLL$L|$n1Ht$ HtHHHH9uMt@IL9HHHHHHH9^IM11H\$L|$HD$ HHl$HLL$(Lt$*M?I96HL9LLLCLDO4H;$sHLU0HI1ҾEHIfHLL$HLH$L$HHyLL>LDYA DYA DHCL$L$HHC1L|$0LLLL$HD$tL LtHD$LL$H $L$HD$HHL$HCHD$HdfDL|$0LL LLH$LLL$HD$LL$LL$HD$H$1HmE1fHD$PH|$pH$HD$XH$̸HD$pLHDŽ$L$HDŽ$L$H$HD$xHDŽ$ H$HDŽ$(HD$`H$LH$HD$hH$X˲MLL$(HHD$ LE1H\$Hl$LLt$AMLLHT$HD$HL$LHT$HD$H;$LL$LLL|$0HT$LLH$H)LL艢LALL&L L&HD$LL$H$L$Dt$HLMLH$HHD$HHDŽ$HD$HHt]HL$H1HHtNHHD$HL$HCHD$H@H$L$L$YfDHT$H1HtHHL$HH9Ѻ"HEAd1HcfDHH9tOMHuE1AL\$1IH(\(IHL9HMtLLIHHHH)Hc IL9s$H#NJL9uILHIIL9sLL$fDHCL$H"HCH\$Hl$L$Lt$HCH"HC{EA@Eu7N M9@ eDLIIIAAMI)M9@ ,DIA  DIA A AWAVAUATIUHSHHL$L6L;$sHID$H9HEHUHLc HC HSHCHC(RHC0HC89H} Nu"LHĸH[]A\A]A^A_DHU HE(LHDŽ$HDŽ$HS0HC8HDŽ$HDŽ$0HEHULLH$H$vLHE841HLt$ -1LHLD8LL޽H$H HD$ Hk HHCHD$(HC蚿H|$@0@Hs HK(HC HS0HC8HC(H|$@H$H$H{0H|$HH$H{8LH$HD$0LHH$HD$8H$LaZ@L1HLH$H$HH$H$H$HDŽ$HC(H$HsHC0H$HKHS HC8HDŽ$HDŽ$HDŽ$LLH02LL=H$LHUHHHT$MHT$D$HLeLL!.-t90MH|$Hl$PH5r{`HD$LHHD$`LHD$PHD$HD$hHD$XHD$pHD$xjLLLHA-HqfHLU-tE.tPH f.HHH|$t@D$HfDHLH1LֽL-ƽ1I蹩fAWIAVAUATUHSHH(L2LjL$H$H|$HLHT$XHD$HDŽ$HDŽ$HDŽ$HDŽ$L$L$HDŽ$HDŽ$HDŽ$HDŽ$HDŽ$L$L$H|$H*D$WurIH$IGIGIG IG(Mw0Mo86H$HD$ H|$ HD$HH([]A\A]A^A_H$ D$oH L\$oH=H~D$W HE1Ld$(LHH$ML\$@Ht$0H$Ht$ H$HHt$8HL<$HHH)1Q01II:HL,$IMHLMMHHDH$ H$(L`H$H$H$L%JgH$ HLH$L$HDŽ$HDŽ$HDŽ$HDŽ$HH$H$9LH螆LVLd$0HD$8 I?H$ L$L$HD$H$(LLH$Mt5HT$00t]HHAHD$`HT$hHt$LH%H$H$H5;fHHDŽ$ HD$ Ht$LHҧH$H$fDHLLH $覧H$H $H$HEH4HE%HD$ HEL5eHHDŽ$L$ HDŽ$HDŽ$HDŽ$H$H$LLL$H$H$LPLH资LmLt$pHD$x IVH$ L$L$HD$H$(LLH$M_HT$pC2 H5dLWHLܦH$H$L+Ht$LHH$H$LHH$L$PL$:f.H$H$H5cHDŽ$HDŽ$HDŽ$HDŽ$H$H$L$ H5cHDŽ$HDŽ$HDŽ$HDŽ$H$Ht$LHH$H$|HD$ L|$(H$H$L$H4$HLLH蘂LPH<$GHLHD$LH;$HDŽ$ AAAڑf. f.fHHthHGHv^HHrVHw LG(L9tIHL9r HH)Lt5HNE1H9ICHO H9sHHwHHHfDHG f.f1I HD$HD$H|$HHHD$HHD$HD$HD$HD$f)D$f(D$fYD$f)D$f(D$HD$ILHD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$HD$f.H?ATUHSHĀL&I!I9HHwHHHhHHt$HHHD$rE11LD$(A@IHLǹ HHD$pHT$ HHD$xHT$HT$HT$0HD$f)D$Pf(D$ fYD$0f)D$@f(D$PHT$@HT$HD$ HD$(HD$0HD$8HD$@HD$HHD$PHD$XHD$`HD$hHD$`HD$hHD$PHD$XHD$@HD$HHD$0HD$8HD$ HD$(HT$HtjHT$HHt]H3tWHT$H H4H4HHH9(HHHT$HT$HHD$MDHD)H4HHI HL!L HHH!L9uHLǹ HHD$pHT$ HHD$xHT$HT$HT$0HD$f)D$Pf(D$ fYD$0f)D$@f(D$PHT$@HHT$HD$ HD$(HD$0HD$8HD$@HD$HHD$PHD$XHD$`HD$hHD$`HD$hHD$PHD$XHD$@HD$HHD$0HD$8HD$ HD$(HT$HT$HD$HHT$HT$HHD$H4H3H H4L A@AHHHADL)HHtߺHH)H4HH IL!H HHH4HH94HHHH H HHHD$H[]A\H?H|f.fSHHHGHtHWH?v Hr8U'tHCHH[HHtHWHvHHrHHH$HT$Af.DAWAVAUATUSHHHHVHHHHHLF(H~ L9HL9rHH)LHwE1H9ICHp H9HHH1HL3LcHLkL{HCHH@Ht[HvUHHrMHH9sDH<2HC HCH9uLuHLeLmL}H[]A\A]A^A_D蓊AWAVAUATUSHHHHt!HWH?vHrHHlHiLsLkLd$@HD$0HD$8LLt$@Ll$HHD$PHD$XkuE1HD[]A\A]A^A_HL$LHLHH$HtH$HtHHrHHGHHQzAtHC HK(H|$0H3HSHl$8IIHHSLLH?FHH:M91HHM9rIM)IIA1H9HCHC I9IIIM"IH$IAH$IAH$IAH$IA H$IA(H$IA0H$IA8H$IA@AIAAL9uH$HD$`H$HD$hH$HD$pH$HD$xH$H$H$H$H$H$H$H$HD$0HHT$8H?HHt$PHD$XH9HHH)HHHHH9yHHHHH9r1HL$XHL$0DD$H"H?HH9HD$@HH,HEHl$HH|$ HT$LHD$ HHT$(HHHt$`HDD$H3HLK LS(kDE1E1L[H;H{Ht$0HkHT$8LsLkL\$@H|$HLS HD$PLK(HL$XHxH?nHHbH9t1HHH9rPHH9roHD$P1HuLDD$LLzDD$ DH|$0Hl$8Lt$@Ll$HLT$PLL$X#HD$PH9pH%H$H%H$H%H$H%H$H% H$H%(H$H%0H$H%8H$LDD$薊DD$BH|$0DD$DD$%HT$8HD$X[H|$0HSHl$8Lt$@Ll$HHC LT$PHK(LL$X HH) 1f.AWIAVAUMATMUHSHHHt$L$HT$HHGH?H~IG0HIO8HHIG`HtIOhHvHsIpyBHIOH?rHHfMG IG(H1HI9tHIL)M)HI9IBLFI9:HHE1H9ICIO(H9ZH9QHD$X@HHHSH\$PH.HT$PH|$pIw&HT$pHHL$xHHHD$HHkHCHD$Lc HC1fCHH@H9AA$LE;HI9 B A LHID:IL9N|$H$H$I$H$H$H$HDŽ$ID$(H$It$ID$0H$IL$IT$ ID$8HDŽ$HDŽ$HDŽ$ H9AI9s1Eu,B4A3HHH\I9fDeI$ HID$ID$ID$ ID$(ID$0ID$8HD$pHDŽ$HDŽ$HDŽ$HDŽ$~LQOH$HH"III9CAAL5H|$0H\$@H5^5YwHD$0LHHD$PLHD$@HD$8HD$XHD$HHD$`HD$hcLLTL~H~HHHHI9AWAVIAUATUSHHH\$pH4$HD$pHGpHH$PHHD$L$PMt:H$`Mf0HD$H|$}HD$pH[]A\A]A^A_@L<$1Ҿ.L$LwLLH_tH;$HD$L<$1ҾgLwLLAH!tH;$3H$`1Ҿ.HHD$wH,$1Ҿ#HD$ HowHmHH9!Ld$(1L$$D|$0L|$H\$8)DHLvʃAփ BֈHLLysH;$1ҾfLvLLHNsH;$r1ҾeLvLLH'sH;$q1ҾgLvLLHrH;$FHLvʃaփ BֈAfLLEHD$H@^H$`HD$@H|$Ld$(D|$0H\$8HHT$pHHT$pHH HL谇H$HY[H9-HN,H$H9H)H$H51sL$1ҾoH$L$LL|$HDŽ$H$L$HDŽ$HDŽ$HDŽ$uLLHD$ rqH$LHD$(R1L+D$0tLLHD$H:qH$LLHD$P蒙LLHD$@袛D$8IHHyD$8HH$H$1HH$HL$(H9L$ |$0HL$1LH$H$H$HDŽ$HHH $H$PHyHIn0H<$yH|$yfDHt$L}fDHD$0H$LHhHpHHt$(qHD$0Ht$(H;$&f.L<$1ҾGL]sLLHoH;$AfDH$H0Ht HH^Ht$L{oHD$ H;$H$HhHuH$HpHhHHrHt<1Hu3fID$H9IB<&#uH(I9H$1ҾfHrHLHnH;$Ht$LH\$ nHHL$H$HH)H9H9lH$1HEaHT$pHD$H?HTHt$LH$H$H$HHH $H$HDŽ$MHnwHu H4$L͚H<$TwNH$HXHT$LU HL$1L_ H4$LmL9$K|$0H4$LmHD$@H9$HHL$PH9L$Hr |$8%H5 -LnH$LH5-HDŽ$H$H$HDŽ$H$HDŽ$HDŽ$nH$L<$LHDŽ$0H$ LH$HDŽ$8H$(HDŽ$@HDŽ$Hl|$8H$H$LLHVLLKLuH$ HD$ H4$L*lL$HLlH$I9IF0 H|$ DuH6q>1l>>fa 0?up$?QL<?vbN(ThAAG0 CAE H BBB B(A0A8GP 8A0A(B BBBG ?6qH?BBB B(A0A8Dp 8D0A(B BBBA H,BBB B(A0D8Gpc8A0A(B BBB xCpAG s AD @DAPDD6qpDni(DAAG0 AAC \H_$H,8HrAA  ABE (hJ AJG0 AAE LhMBBB B(A0A8D 8D0A(B BBBA OLO qBA A(D0/X0i (D ABBA HHP%BBE B(A0H8G 8D0A(B BBBG LR_BBB B(A0D8G 8A0A(B BBBG (TAAG0 AAD LUBBB B(A0D8G< 8A0A(B BBBF L`,WBBB B(D0D8Je 8D0A(B BBBD HXREGB K(K0T8h 8A0A(B BBBA H[BIB B(A0A8D 8D0A(B BBBH 8Hd\BIA A(D (D ABBC L]BBA A(GPR (D ABBH  (D ABBE D(_BBE D(A0D 0A(A BBBG D a-BBE D(A0D 0A(A BBBB Ld bBBB H(A0A8J 8D0A(B BBBG @ emOAE Gp  DABD Hp@ gBIB A(A0Dp 0A(A BBBB L< 0i BBB B(A0A8J 8A0A(B BBBE H uBBB B(D0D8J 8D0A(B BBBF L BEB B(A0D8J/ 8A0A(B BBBE L( yBEB B(A0D8J3 8A0A(B BBBI Lx TBBB B(N0D8J 8D0A(B BBBK  $ yt  %4 LAK D  AABA T 8qAG s AD Hx BBB B(A0A8D@ 8A0A(B BBBF H hBBB B(A0F8Jz 8D0A(B BBBH d BEB E(D0D8G 8A0A(B BBBA  8E0A(B BBBE lx T BBB A(D0i8K@F8A0\ (A BBBG J (A BBBG L (A BBBA H ԡ*BBB H(A0A8J 8A0A(B BBBF @4:BDD G0  DABF j  DABG dxRBB B(D0D8J 8A0A(B BBBG HPLLBBB E(D0A8J* 8D0A(B BBBG L0BBB B(D0A8J 8D0A(B BBBA HpBBE B(A0A8Ge 8A0A(B BBBE H BBE B(A0A8GN 8D0A(B BBBA dd` RBE E(D0D8Jb 8A0A(B BBBD HHPBBB B(A0A8G 8A0A(B BBBA  8BEA A(DP (C ABBA $ GCC: (Buildroot 2021.11-11272-ge2962af) 13.2.0 @]*@ @5f/@1 @!/@q @Dp!@ \!@P"@$@(pr@@'@0Ѕ@.@@@p^ A| AD@ ^ A| A"/@"P@ "P@@f"7@"P<@\"`D@6s"@"5@"p@m"P_@."@";@A"W@%5"`\@h"h@"p]@"@*"g@3"@u"pJ@"@B@1"D@"U@ "У@[ "`D@6r "j@- "@: "@@@ "Ъ@ "0N@_h @ "@ "C@v "c@< "p4@jc "B@f "P@% "@ "@= "U@ c  Ao @t A "C@Q "@@`  "@@?a "N@ "J@n "C@u "@@&"1@5D"pa@R~"4@%"@y"I@"B@6"5@" 3@E="P0@S"N@A A A"p:@"@I"S@"m@i @"I@6"@"B@?"pJ@"pe@"0t@ "I@"0I@p)"Z@_g"P@q"I@6"0N@_log2.cpp_ZN3ygg6StringIcEaSEOS1_.isra.0_ZNK3ygg6MemblkIhE8isWithinERKNS_4arch11AddressSizeE.isra.0_ZNK3ygg6MemblkINS_4PairImNS0_IhEEEEEixEm.isra.0_ZNK3ygg6MemblkINS_13MemoryManager10AccountingEEptEv.isra.0_ZNK3ygg6MemblkIKcE7compareERKS2_.isra.0_ZNK3ygg4stdc15StandardCFormat15isOctalModifierERKNS_6StringIcEE.isra.0ygglibc_signal_restorer_ZNK3ygg4stdc15StandardCFormat13isHexModifierERKNS_6StringIcEE.isra.0_ZNK3ygg4stdc15StandardCFormat23isFloatingPointModifierERKNS_6StringIcEE.isra.0_ZN3ygg13MemoryManager7releaseERNS_6MemblkIhEE.isra.0_ZN3ygg4stdc15StandardCFormat14cstringOperandIRPcEENS_5ErrnoERKNS_6StringIcEEOT_.isra.0_ZN3ygg4stdc15StandardCFormat18floatingPointRoundERNS_6StringIcEEm.isra.0_ZN3ygg10StringUtil5alphaImLm10EEENS_4PairINS_5ErrnoENS_6StringIcEEEERKT_bRNS_13MemoryManagerE.isra.0_ZN3ygg10StringUtil5alphaIlLm10EEENS_4PairINS_5ErrnoENS_6StringIcEEEERKT_bRNS_13MemoryManagerE.isra.0_ZN3ygg4stdc4FileIiNS_8Platform5LinuxENS_4arch12Architecture6X86_64EE5writeEPKvmm.isra.0_ZN3ygg4stdc15StandardCFormat20floatingPointOperandIRNS_7IEEE754ILm64EEEEENS_5ErrnoERKNS_6StringIcEEOT_.isra.0_ZL24yggLibcMemoryManagerSize_ZL29yggLibcMemoryManagerAllocatorcrt1.cpp_ZN3ygg5AbortEv_ZN3ygg7IEEE754ILm64EE10rawDecimalEbmmm_ZNK3ygg6StringIcE3blkEv_ZN3ygg13MemoryManager9availableEv_ZNK3ygg13MemoryManager12wasAllocatedERKNS_4arch11AddressSizeEb_ZN3ygg6MemblkIhEC2Emm_ZN3ygg10StringUtil5alphaERKNS_7IEEE754ILm64EEERNS_13MemoryManagerE_ZN3ygg13MemoryManagerC1ERKNS_6MemblkIhEEb_ZN3ygg4stdc15StandardCFormat15popStringTokensEv_ZNK3ygg6StringIcEplERKS1__ZN3ygg10StringUtil5alphaImLm16EEENS_4PairINS_5ErrnoENS_6StringIcEEEERKT_bRNS_13MemoryManagerE_ZNK3ygg13MemoryManager22blockCorrespondsToNodeEmRKNS_4arch11AddressSizeE_ZN3ygg7IEEE754ILm64EE14signalingNaN_vE_ZNK3ygg13DynamicStringIcEplIKcEES1_RKNS_6MemblkIT_EE_ZN3ygg6VectorINS_4PairIbNS_6StringIcEEEEE5resetEv_ZN3ygg4stdc15StandardCFormat10fieldWidthERKNS_6StringIcEE_ZN3ygg13DynamicStringIcE14allocCopyCharsIKcEEvNS_6MemblkIT_EE_ZN3ygg6VectorINS_4PairIbNS_6StringIcEEEEE6expandEv_ZNK3ygg6StringIcE6substrEmm_ZN3ygg9Logarithm11log2preciseILm51ENS_7IEEE754ILm64EEEEET0_RKS4__ZN3ygg11SysCallTestINS_8Platform5LinuxENS_4arch12Architecture6X86_64EED2Ev_ZN3ygg5ArrayIcEC1Ev_ZN3ygg13MemoryManager8allocateEm_ZN3ygg5FatalINS_4PairIllEEEET_v_ZN3ygg6VectorINS_5ArrayINS_4PairImNS_6MemblkIhEEEEEEE8popFrontEv_ZN3ygg6MemblkIhEC1Emm_ZN3ygg4stdc15StandardCFormat14fieldPrecisionERKNS_6StringIcEE_ZN3ygg6VectorINS_4PairIbNS_6StringIcEEEEE8pushBackIS4_EENS_6MemblkIS4_EEOT__ZN3ygg5FatalINS_5ErrnoEEET_v_ZN3ygg22PlatformSystemCallTestINS_8Platform5LinuxENS_4arch12Architecture6X86_64EE8csyscallILm1EEEmmmmmmm_ZN3ygg4PairINS_5ErrnoENS_6StringIcEEEC2EOS4__ZN3ygg4stdc15StandardCFormatlsIRPcEERS1_OT__ZNK3ygg6StringIcE6strposEcm_ZN3ygg4stdc15StandardCFormat14addOctalPrefixERNS_6StringIcEE_ZN3ygg13MemoryManager12firstHeapBitEm_ZNK3ygg6StringIcEcvNS_11ConstStringIcEEEv_ZNK3ygg7IEEE754ILm64EEmlIS1_EES1_RKT__ZN3ygg5FatalImEET_v_ZN3ygg6VectorINS_22PlatformSystemCallTestINS_8Platform5LinuxENS_4arch12Architecture6X86_64EE9ArgumentsEE6expandEv_ZNK3ygg7IEEE754ILm64EE10normalizedEv__bss_startmain_ZN3ygg7IEEE754ILm64EE10infinity_vE_ZNK3ygg6StringIcEixEm_ZN3ygg4stdc15StandardCFormat8snprintfIJRPcNS_7IEEE754ILm64EEEEEENS_5ErrnoERKNS_11ConstStringIcEEmDpOT__ZN3ygg4stdc4FileIiNS_8Platform5LinuxENS_4arch12Architecture6X86_64EEC1Ei_ZN3ygg10StringUtil7numericImEENS_4PairINS_5ErrnoET_EERKNS_11ConstStringIcEEm_ZNK3ygg6MemblkIhE6subblkIhEENS0_IT_EEmm_ZNK3ygg6StringIcEneIcLm5EEEbRAT0__KT__ZN3ygg5FatalINS_7IEEE754ILm64EEEEET_v_ZNK3ygg6Bitmap9countSpanEmbm_ZN3ygg4stdc15StandardCFormat8padFieldERNS_6StringIcEEcmb_ZNK3ygg13MemoryManagercvbEv_ZN3ygg6VectorImE8popFrontEv_ZN3ygg6StringIcED2Ev_ZN3ygg6MemblkIKcEC1Emm_ZN3ygg13MemoryManagerC2ERKNS_6MemblkIhEEb_ZN3ygg6Bitmap23modifySpanWordExclusiveEmmb_ZN3ygg6Bitmap3setEmb_ZN3ygg5FatalINS_4PairINS_5ErrnoENS_6StringIcEEEEEET_v_ZN3ygg4stdc15StandardCFormat10m_modifierE_edata_end_ZNK3ygg13MemoryManager14nextUnusedNodeEm_ZN3ygg10StringUtil5alphaImLm8EEENS_4PairINS_5ErrnoENS_6StringIcEEEERKT_bRNS_13MemoryManagerE_ZN3ygg6VectorINS_4PairIbNS_6StringIcEEEEE8popFrontEv_ZN3ygg4stdc15StandardCFormat6appendERKNS_6StringIcEE_ZN3ygg6MemblkIKhEC2Emm_ZN3ygg4stdc15StandardCFormat8snprintfIJEEENS_5ErrnoERKNS_11ConstStringIcEEmDpOT__ZN3ygg11ConstStringIcE5resetEv_ZN3ygg11SysCallTestINS_8Platform5LinuxENS_4arch12Architecture6X86_64EED1Ev_ZN3ygg4stdc15StandardCFormat12addHexPrefixERNS_6StringIcEE_ZN3ygg10StringUtil7numericERKNS_11ConstStringIcEE_ZN3ygg6StringIcED1Ev_ZN3ygg5ArrayIcE5resetEv_ZN3ygg13DynamicStringIcE14allocCopyCharsIcEEvNS_6MemblkIT_EE_ZN3ygg5ArrayINS_4PairImNS_6MemblkIhEEEEE5resetEv_ZN3ygg6MemblkIKhEC1Emm_ZN3ygg4PairINS_5ErrnoENS_6StringIcEEEC1EOS4_.symtab.strtab.shstrtab.note.gnu.property.text.rodata.eh_frame.bss.comment@0.@4A<A4F A  K0/(  .T