From f0f80f72f14d191bade9e1e542454d72f0d304a6 Mon Sep 17 00:00:00 2001 From: YoumuLiu Date: Thu, 11 Apr 2024 02:15:22 +0800 Subject: [PATCH] daily uodate on 20240411 by nitload youmu, camera complete --- .../stgsharpdevelop.metadata.v7.bin | Bin 409376 -> 409536 bytes .../stgsharpdevelop.projects.v7.bin | Bin 75606010 -> 78099536 bytes .../DesignTimeBuild/.dtbcache.v2 | Bin 189476 -> 189476 bytes ...2eda316c-117b-458c-ad89-cce182c68614.vsidx | Bin 114471 -> 0 bytes ...2fff2e6b-d610-4c1d-bdc7-e363f115952c.vsidx | Bin 118515 -> 0 bytes ...331f4577-f2db-49d3-82ce-156a7e0e6f9a.vsidx | Bin 0 -> 116149 bytes ...61b841a9-3c48-424f-8b01-7cc51a802703.vsidx | Bin 0 -> 542765 bytes ...6a862799-b798-42ba-8669-3f4ab2e56f73.vsidx | Bin 0 -> 118574 bytes ...8ab28b40-9cb9-4835-a588-666abc422265.vsidx | Bin 0 -> 114822 bytes ...efd3058e-096b-46a1-a77c-d099dfbdc382.vsidx | Bin 112248 -> 0 bytes ...fc425983-c447-4530-bd0e-d878aeb682fb.vsidx | Bin 541577 -> 0 bytes �代�/.vs/StgSharpDevelop/v17/.futdcache.v2 | Bin 5121 -> 5121 bytes �代�/.vs/StgSharpDevelop/v17/.suo | Bin 798720 -> 820736 bytes �代�/.vs/StgSharpDevelop/v17/Browse.VC.db | Bin 49979392 -> 49979392 bytes .../StgSharpDevelop/v17/DocumentLayout.json | 463 +- �代�/.vs/StgSharpDevelop/v17/Solution.VC.db | Bin 1806336 -> 1835008 bytes �代�/.vs/StgSharpDevelop/v17/fileList.bin | Bin 66205 -> 66682 bytes .../Debug/net6.0/BenchMark.AssemblyInfo.cs | 2 +- .../net6.0/BenchMark.AssemblyInfoInputs.cache | 2 +- .../Release/net6.0/BenchMark.AssemblyInfo.cs | 2 +- .../net6.0/BenchMark.AssemblyInfoInputs.cache | 2 +- .../Output/x64/Debug/net6.0/SS_errorlog.log | 290 + .../x64/Debug/net6.0/Shader/vertex.vert | 7 +- �代�/Output/x64/Debug/net6.0/StgSharpC.dll | Bin 527872 -> 314880 bytes .../Output/x64/Debug/net6.0/StgSharpDebug.dll | Bin 639488 -> 641024 bytes .../Output/x64/Debug/net6.0/StgSharpDebug.exe | Bin 149504 -> 149504 bytes .../Output/x64/Debug/net6.0/StgSharpDebug.pdb | Bin 192584 -> 192964 bytes .../Output/x64/Debug/net6.0/StgSharpDebug.xml | 12 +- �代�/StgSharp/Entities/IEntity.cs | 2 +- �代�/StgSharp/Entities/Launcher.cs | 2 +- .../Geometries/PlainGeometry/Cordinate.cs | 2 +- .../Geometries/PlainGeometry/Polygon4.cs | 20 +- .../Geometries/PlainGeometry/Rectangle.cs | 4 +- �代�/StgSharp/Graphics/Form/Form.cs | 18 +- �代�/StgSharp/Graphics/GL/Buffer/EBO.cs | 2 +- �代�/StgSharp/Graphics/GL/Buffer/FBO.cs | 51 + �代�/StgSharp/Graphics/GL/GLpack.cs | 12 + .../Graphics/GL/ShaderEdit/Uniform.cs | 2 +- �代�/StgSharp/Math/Graphic/Camera.cs | 158 +- �代�/StgSharp/Math/Linear/Matrix24.cs | 8 +- �代�/StgSharp/Math/Linear/Matrix32.cs | 2 +- �代�/StgSharp/Math/Linear/Matrix44.cs | 33 +- �代�/StgSharp/Math/Linear/Vector.Cross.cs | 2 +- .../StgSharp/Math/Linear/Vector.GetAngle.cs | 2 +- .../StgSharp/Math/Linear/Vector.GetLength.cs | 13 +- .../StgSharp/Math/Linear/Vector.Normalize.cs | 16 +- .../Math/Linear/Vector.VectorTransform.cs | 12 +- �代�/StgSharp/Math/Linear/vec2d.cs | 52 +- �代�/StgSharp/Math/Linear/vec3d.cs | 22 +- �代�/StgSharp/Math/Linear/vec4d.cs | 18 + .../bin/x64/Debug/netstandard2.1/StgSharp.dll | Bin 718848 -> 719872 bytes .../bin/x64/Debug/netstandard2.1/StgSharp.xml | 12 +- .../netstandard2.1/StgSharp.deps.json | 128 +- .../x64/RealDebug/netstandard2.1/StgSharp.dll | Bin 1202688 -> 717312 bytes .../x64/RealDebug/netstandard2.1/StgSharp.xml | 1930 +- .../netstandard2.1/StgSharp.AssemblyInfo.cs | 2 +- .../StgSharp.AssemblyInfoInputs.cache | 2 +- .../obj/x64/Debug/netstandard2.1/StgSharp.dll | Bin 718848 -> 719872 bytes .../netstandard2.1/StgSharp.sourcelink.json | 2 +- .../obj/x64/Debug/netstandard2.1/StgSharp.xml | 12 +- .../x64/Debug/netstandard2.1/ref/StgSharp.dll | Bin 196608 -> 197120 bytes .../Debug/netstandard2.1/refint/StgSharp.dll | Bin 196608 -> 197120 bytes .../netstandard2.1/StgSharp.AssemblyInfo.cs | 2 +- .../StgSharp.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 2 + .../netstandard2.1/StgSharp.assets.cache | Bin 1777 -> 4616 bytes .../StgSharp.csproj.AssemblyReference.cache | Bin 1144 -> 1242 bytes .../StgSharp.csproj.CoreCompileInputs.cache | 2 +- .../x64/RealDebug/netstandard2.1/StgSharp.dll | Bin 1202688 -> 717312 bytes .../netstandard2.1/StgSharp.sourcelink.json | 2 +- .../x64/RealDebug/netstandard2.1/StgSharp.xml | 1930 +- .../RealDebug/netstandard2.1/ref/StgSharp.dll | Bin 668672 -> 196608 bytes .../netstandard2.1/refint/StgSharp.dll | Bin 668672 -> 196608 bytes �代�/StgSharpC.dll | Bin 527872 -> 314880 bytes �代�/StgSharpC.lib | Bin 35638 -> 35638 bytes �代�/StgSharpC.pdb | Bin 1773568 -> 1773568 bytes �代�/StgSharpC/x64/Release/StgSharpC.cod | 401 +- �代�/StgSharpC/x64/Release/StgSharpC.iobj | Bin 711937 -> 729071 bytes �代�/StgSharpC/x64/Release/StgSharpC.ipdb | Bin 139104 -> 139664 bytes �代�/StgSharpC/x64/Release/StgSharpC.log | 16 +- �代�/StgSharpC/x64/Release/StgSharpC.obj | Bin 256453 -> 251839 bytes .../Release/StgSharpC.tlog/CL.command.1.tlog | Bin 5610 -> 6544 bytes .../x64/Release/StgSharpC.tlog/CL.read.1.tlog | Bin 110430 -> 131010 bytes .../Release/StgSharpC.tlog/CL.write.1.tlog | Bin 4262 -> 7158 bytes .../x64/Release/StgSharpC.tlog/Cl.items.tlog | 1 + .../StgSharpC.tlog/link.command.1.tlog | Bin 3486 -> 3716 bytes .../Release/StgSharpC.tlog/link.read.1.tlog | Bin 6934 -> 8720 bytes .../StgSharpC.tlog/link.secondary.1.tlog | 2 +- .../Release/StgSharpC.tlog/link.write.1.tlog | Bin 2978 -> 3344 bytes �代�/StgSharpC/x64/Release/dllmain.cod | 37 +- �代�/StgSharpC/x64/Release/dllmain.obj | Bin 139016 -> 138912 bytes �代�/StgSharpC/x64/Release/mat2.cod | 103 +- �代�/StgSharpC/x64/Release/mat2.obj | Bin 141808 -> 141696 bytes �代�/StgSharpC/x64/Release/mat3.cod | 300 +- �代�/StgSharpC/x64/Release/mat3.obj | Bin 144335 -> 144229 bytes �代�/StgSharpC/x64/Release/mat4.cod | 445 +- �代�/StgSharpC/x64/Release/mat4.obj | Bin 143577 -> 143465 bytes �代�/StgSharpC/x64/Release/stb_image.cod | 104425 ++++++++++++++- �代�/StgSharpC/x64/Release/stb_image.obj | Bin 450783 -> 450783 bytes �代�/StgSharpC/x64/Release/vc143.pdb | Bin 233472 -> 299008 bytes �代�/StgSharpC/x64/Release/vector.cod | 108 + �代�/StgSharpC/x64/Release/vector.obj | Bin 0 -> 139942 bytes �代�/StgSharpDebug/Program.cs | 28 +- �代�/StgSharpDebug/Shader/vertex.vert | 7 +- .../net6.0/StgSharpDebug.AssemblyInfo.cs | 2 +- .../StgSharpDebug.AssemblyInfoInputs.cache | 2 +- .../obj/x64/Debug/net6.0/StgSharpDebug.dll | Bin 639488 -> 641024 bytes .../obj/x64/Debug/net6.0/StgSharpDebug.pdb | Bin 192584 -> 192964 bytes .../net6.0/StgSharpDebug.sourcelink.json | 2 +- .../obj/x64/Debug/net6.0/StgSharpDebug.xml | 12 +- .../obj/x64/Debug/net6.0/apphost.exe | Bin 149504 -> 149504 bytes .../net6.0/StgSharpDebug.AssemblyInfo.cs | 2 +- .../StgSharpDebug.AssemblyInfoInputs.cache | 2 +- ....GeneratedMSBuildEditorConfig.editorconfig | 2 + .../net6.0/StgSharpDebug.assets.cache | Bin 370 -> 2364 bytes .../obj/x64/RealDebug/net6.0/apphost.exe | Bin 149504 -> 149504 bytes �代�/StgsharpEnvDebug/Program.cs | 16 +- .../StgsharpEnvDebug/StgsharpEnvDebug.csproj | 4 + .../bin/x64/RealDebug/net6.0/StgSharp.dll | Bin 0 -> 717312 bytes .../bin/x64/RealDebug/net6.0/StgSharp.xml | 1865 + .../bin/x64/RealDebug/net6.0/StgSharpC.dll | Bin 0 -> 314880 bytes .../net6.0/StgsharpEnvDebug.deps.json | 47 + .../x64/RealDebug/net6.0/StgsharpEnvDebug.dll | Bin 0 -> 5120 bytes .../x64/RealDebug/net6.0/StgsharpEnvDebug.exe | Bin 0 -> 149504 bytes .../x64/RealDebug/net6.0/StgsharpEnvDebug.pdb | Bin 0 -> 10832 bytes .../StgsharpEnvDebug.runtimeconfig.json | 12 + .../net6.0/StgsharpEnvDebug.AssemblyInfo.cs | 2 +- .../StgsharpEnvDebug.AssemblyInfoInputs.cache | 2 +- ...arpEnvDebug.csproj.AssemblyReference.cache | Bin 416 -> 416 bytes .../net6.0/Stgsharp.2C714B92.Up2Date | 0 .../net6.0/StgsharpEnvDebug.AssemblyInfo.cs | 2 +- .../StgsharpEnvDebug.AssemblyInfoInputs.cache | 2 +- .../net6.0/StgsharpEnvDebug.assets.cache | Bin 955 -> 249 bytes ...arpEnvDebug.csproj.AssemblyReference.cache | Bin 1009 -> 624 bytes ...harpEnvDebug.csproj.BuildWithSkipAnalyzers | 0 ...arpEnvDebug.csproj.CoreCompileInputs.cache | 2 +- ...gsharpEnvDebug.csproj.FileListAbsolute.txt | 13 + .../x64/RealDebug/net6.0/StgsharpEnvDebug.dll | Bin 0 -> 5120 bytes .../StgsharpEnvDebug.genruntimeconfig.cache | 1 + .../x64/RealDebug/net6.0/StgsharpEnvDebug.pdb | Bin 0 -> 10832 bytes .../net6.0/StgsharpEnvDebug.sourcelink.json | 2 +- .../obj/x64/RealDebug/net6.0/apphost.exe | Bin 0 -> 149504 bytes .../RealDebug/net6.0/ref/StgsharpEnvDebug.dll | Bin 0 -> 4608 bytes .../net6.0/refint/StgsharpEnvDebug.dll | Bin 0 -> 4608 bytes 144 files changed, 111879 insertions(+), 1249 deletions(-) delete mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/2eda316c-117b-458c-ad89-cce182c68614.vsidx delete mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/2fff2e6b-d610-4c1d-bdc7-e363f115952c.vsidx create mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/331f4577-f2db-49d3-82ce-156a7e0e6f9a.vsidx create mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/61b841a9-3c48-424f-8b01-7cc51a802703.vsidx create mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/6a862799-b798-42ba-8669-3f4ab2e56f73.vsidx create mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/8ab28b40-9cb9-4835-a588-666abc422265.vsidx delete mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/efd3058e-096b-46a1-a77c-d099dfbdc382.vsidx delete mode 100644 �代�/.vs/StgSharpDevelop/FileContentIndex/fc425983-c447-4530-bd0e-d878aeb682fb.vsidx create mode 100644 �代�/StgSharp/Graphics/GL/Buffer/FBO.cs create mode 100644 �代�/StgSharpC/x64/Release/vector.cod create mode 100644 �代�/StgSharpC/x64/Release/vector.obj create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.dll create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.xml create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharpC.dll create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.deps.json create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.dll create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.exe create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.pdb create mode 100644 �代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.runtimeconfig.json create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/Stgsharp.2C714B92.Up2Date create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.BuildWithSkipAnalyzers create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.dll create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.genruntimeconfig.cache create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.pdb create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/apphost.exe create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/ref/StgsharpEnvDebug.dll create mode 100644 �代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/refint/StgsharpEnvDebug.dll diff --git a/�代�/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin b/�代�/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v7.bin index c782e769c42dcaedb13124359f000e07a43ac001..3e1ce2f73a725d622e6d97e9eb6a1f5b896e9153 100644 GIT binary patch delta 338 zcmZ4RPvXFT2@Zz8VhkWKHIXf7xxxYYEHN64t#F>pub2a9Em} zIa^p*ntcXwoSaQuObslYzJNH!Ca%VAE~ai@K^zxHH)9JYbH{HWj-!!_xq*?3<9D!( ztEG{-g{Aoq5XaEf(ZtEk*zzZcW9;T;>SXC+{0qb}F*7%GvoLr34dOUjSU4Lix|o{& z0rDi>ixLYmGLwsA+Ju}|mP z%=(?NWO`r%tMznS3r3Ua3Hhw7+aGLURd5h0=3Bx7@;4_CXHS?|-4;201uvWScH6J4 zkrF~q_m_fY*?_XKAr(N`?Lb*cNx_6q9bkz}pu`6Q{u#fg3w~u)+5Sz9O-lj*1!Z3d delta 192 zcmX@`Ut+;O2@Zx&VhkWKosp3(Xu3lRvs7bAYYAg(2~%qcb8899))Lme6SrTS#QI2K zy6hI#cheU#u_{kD$Ya%??hwt&G2L$l6FV0pLlyTCZv8tPCDQ{FSgohqS}>YSPsnFw z-QKX3Rlz~%I8z-9$PzXnPFfK!>KiuQgO5#n``xdskrG0Vm+Qf@%s^Sa@@Sy!cA%`J bq|oDd7r4aVDGX61K_G3)+o!3sX-NP8MAkMg diff --git a/�代�/.vs/ProjectEvaluation/stgsharpdevelop.projects.v7.bin b/�代�/.vs/ProjectEvaluation/stgsharpdevelop.projects.v7.bin index fb8f0c83b6ee77031c43174652f9087e20e8ccfd..e20d425bddfca97df952f69b069e272281568182 100644 GIT binary patch delta 4458 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 delta 3211 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 delta 7180 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

`-`FBTn=q-_dw%& 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�=#;xnqMu{cVo-e>aaST$tJ*RfUi_IkD0Sc*PF6 zqxKCor(X4_=F!nWH4Tmis<|ucct>-OjnNT6H7||;wisin-HR|ZuUS;nX}_*r36#}? zeOa4LP@}(>vDc`R zLLDPYSsS;Z5mxx1yh)^I(k8oRT+YRL9$)m~ffPdm$dY+l>} zQ>}%vVk;wfY32IS-db?SL$#fhrwP2PU+%iArrb4zYQAdsdu=n`)l|*Jm`Jl@g~!I= zYF0G_=N@%VsO_qDch0=j?t|&8?6=;-TkuXUG}6^V|3nE z4b!>aoe7V<{#Na4UVp2Wq+^a+?rj*m*Fvi8!I4Kb*X8=g)puc?)%!rS zcQeY95ngZT-YY59-5+!A6>ND9zC4$y@7f&+>)DcZtT$fQnQE`l-l2U$`-VCm*xpq4 zaLXRkL`ut=sO^AyY>wQ|Q=LUhJ((tFl!2i`LQR#|WY(hT^vXar7T2e0IqM3{xyqW> zr8Bwe9e3N0YF?ZfRC81tk9Aq=-@3PNsn*CB?cHNrkF$(A3w1Ve@2nAZ6jfdMm3C$g zx(nc0$1ByoTkejOT{g!hZ4BA{c2$>NJE&y`K{wWyyD5g?+Q7Ajy8_Oqs`~`a2+qf2 zL#Kqg`gBd@j)V7Oj8XNS2KQ#&gYe4CQA^ctZCAo)b8RhUb}zlfI|jOUzge9gx*6&y zQQN<8HR7>-%=%IdxvcbEGrF2E9BWD)6RI2I@%gYJs3q*1ufx$ku=dWLZ~K*Z-qczA z-#5;>+wXCC*UtCiJetKwr@e2{soMMJn{3ket9<@!YUni7Yf^O#YX4GwM%gm-{SePO zO1lH$-5ak>R70@6IiJ`@Y-wtbP}A>~h1wWeW}f1HIyNQmjxgRc8yz|(bZn?~?s`Vm zjjIlI2I{lB?l@@UTwL3IupRoOt=AY{!_?kXu~)j^HXU_uM%9-!iS`BgytT41IOlWE^+A6 z5lNkmnl9&+NzG=LQE`1(k6Qaa={Og4@7*iLNukqF<3BL+bs+Kb!Lj_$@0<9ID*xNZ TkD>A3C++=e3EzR+ukil?xXq~- diff --git a/�代�/.vs/StgSharpDevelop/FileContentIndex/2fff2e6b-d610-4c1d-bdc7-e363f115952c.vsidx b/�代�/.vs/StgSharpDevelop/FileContentIndex/2fff2e6b-d610-4c1d-bdc7-e363f115952c.vsidx deleted file mode 100644 index c6f471da99e62bef74741da20bf2eb7ba76f178b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118515 zcmce<3!L0#bw2*=X1{Zv+3(zE)SAr=1AoLoQba_u2>}9P4I*A>DhYR#OAI%ym+Xch zfoct)6vXNh6R}hT0tGEU&4L$DQM6hqS_D)?Di|zEiU|ClbDn)CvopK7KxsdI(f~8_ zeZTMJoaa2}Ip;lS(V@i@aL@O9VE?yY-v1v~^ZzZ{f9YSHdiH5&EO)Rje)3tToVsG^TNm#$XP-Gsm#jSV-6tM@_93U9 zcH+`s|LeM6-S)XhMuwN}b>a!9o_*%ZaZo0hM9&(hZ4_B#Ho6&&qk1KH>0ADn*6-@Ftf;2fR2a{1|e{$$VAzwcY~rB!=e z@V_^Lqs~70s8g1&TyfCSbGbxkuH5VR?LQyb>+thGUAypqe*}w8Jno#6mmYfJnWvw4 z_R3RFJS+V5{YM?Y{InBSE?scO$)}y@^K_rm#;YG)Z@=uy6D7{PCetq zrAM8;@|@$()<1;hIc9kCFYa3XlFdOF!69d^JbkJC5uUqkZNAul?&bK%|J?}QddkWZ zm!GiUY%a}l=bUZp@aJC~bn`vu|6h;b)H6pL+b#1uIuB zfBzAuo^^KXsoT~7xbpN3FX29T)AF-VS$e28!_tG6pMK)X3FY{=c;^)g1T; zj^HU+zH%x5zVg)f?K7`)2*bx*b>5Pf>@;?dU~bn4GDrXV^8d>b%$wUe2b&H*;L`uo z5p>PLjK5j&{qtXfRR~siy9U{h#N*fB_>-evf}I#nz;+F?kKm=U%G*ZJGRWQL&`0o6 z*~Cdl&~6TW1TU3M+%|$kk63!>5vMFa^8_gf|trFYYxV_gl>cEBY3H-@&qI3Hpo7Lm&z(nG=eUJ z>?1hyo9AEiR@%fpAM=026#l;i1{)a2W1xWECVI2@GX0SVdnEJxTObkV_+{kMUb& zME;1lib&t8V0Id_6G#;?FNt|2^rg_3Kwla2_*4Gj-YNzvI53R^`CbY9fa9#7FO9w| z`fB#!84dK+(U(JC9(@J$HPP3Do&>(3F%(fuqUb+m1Dk^07=4lbr6+?PAOAqw9#Kl8 z#23%lH1d;fREsVDu~mFGk9ec{o&u(7z#GwDNUNjqyHLXzX<#B6$)6~#Nq;G zHZgMwro=cb!eJZ?-$GB<=lRR}x?YVxtKa00bD8+R0tTBHtf7`gt$_`7ye@~=<*}iF z-J955|5cy#KZkmd+L=8NmfqGyo1rxiz5(p5H6$Of?TsvMtl`Eo1`>!HIIWH=bGR~( z(+YTb6EDx&j182KO4$I`)v&ICnRTqqVQn5W3s}>{nhK_-F|~|`_zN|pvq(3vFnngA zW~_pqGxI~hg31EiJN0Q z7~#PfLlK5zJQCrN7|S9oi_sIIC&oa8fhkxr1?ysbFv16`nB9j|KYD9eoW?H1d;+=1MFQ!wm*8PGabkVqp@LvPkL zum-j`vd4YBhOam9U>y(T@K7EP7H~il2lU#s%<`kxTSSyZRKlDT=48;v12qK~m2hzi z7jv<=WDN|~F_gnl-o|5FI>yWhGc&lkiqaHZrDf%dSNz?1UWyn<+CmScFyNbkKhpl1 z1AI!;Hp5d{JjFd3V+D;ygcYNy_Fix4$Mh-=Z{m3#^VnAW`2&SD}_+9RH?)lhkes6@{G`N|2ljg|&JB9ytpS8dLl-wMDYGKvf;zDjz?$Q!gr?6T( zpA%le+tYY^8B2nB*_y$>RdLs3<|W1*6|9JGM;a?K_*E5mXJ8vUOye>9%|7!NL$Y-V zB*vS&bOuFEZxiVlqY*}BOoA8QKZX4hxTj&~j%VL2dBUprDa06z!qL!fmtTwV%Lu>JBRIS%I6sS%YdATW%8mXnFKghwI_BmuH;?G_?vo#gnjWBWpmklI}UG{K!R43wzPp#9gA{Ult)Rv zqlSf9ENoz1*zoJ*TZVo-a7lQxm-NpltGP~^Wj3Ej@CJcePo?e(ViCr`>`56xn? z8g^^o;yMn`;qW{zF5uNoyt)rP^aZUs(dzJh{Y{VKoANa$`%R88#z=&b7*iqx48Mu+ z8%-3<^`s*EfZWiU2y66rPF?uR(9SupAJBP~@h9wk!J2!$I1q#5E#p;M!4bA;BDGwVUfWPYI!3;QwR+nXygw}!c~ zS*^Jd=B6>Xh`CA3En#j7bIX{Uz}yDrhV43++qF7ox z%y1F?8epb((>!Y!We4gV*qff00ERA!o4kTKY0N32oJ6^VMJX)e2pfp=h-u1X;%Lw~ z@{BodZWSAR#|Swpxd~Z6I&OMx`RIn3lwtw7CUWxBm2foDhTi9Nd+M-9iY7M~)paX>ZXuBtbM-d>A+ICxIfZgu2y$mg*e z5uKnQab55o!m(r4SaFsnyoBRZIKGU#9O;d6PBFo_8C}`(|KJ+2==KeIFLn@$v6fJ9-9RwSscrC1g{`_S$suByxecg{EZ9 zW^z{N5V~{w_2T3*UO|V_K%$OB4v9Px+%vRn9_aB|G)Fm(6SjE_H1gy+Xj$fGnLo=( zem-UYo|tV;A1bsM{q{x#Dg#8n2|JH`7C&ZF#QoEU^&C$>*7L^&(iDo8P)(ugVJttx zG1E;DRt<))FC%dB?Z?wG&~M*e#^|PmN(vR74$e=<{0kv)=JnwWzEi~;Il~#ekHK0Q z3p3bS#eevG@`;yKahty#x5ST9_)!7}R!~W!;xEfZ986%uEzdMAAOGi3YOIjQee?pZ zP9Hwek5A}*`>@$(@?ROVaO$#1)ogvqJSd<@`Mc07+1$#hyCoh-a$}?rcenz&A)W}*0u{_iV@3i`X0WJ=MS8CutXIU>{(^cny=DbJ zNaF`ZY)WENFeVQsK>R#FyzTDKW zxmldsz;$&zoWsL;Tvx!eO+2f>wu1ji<3B=}$(=dVQHnxcq7+&l!e&}3gNqgXFvQ(I z93PE}`?BLH$4$58P{jUy2E(+>ij)a}34JI zsk2bAjwv}z5y<4E=|AalKu(xEi;*3nTIQz7(bvI>14EG}u_mO3uW;j%n#Dd3tWt_cwz*OVrg$CEq62wPg|3|4bl15C1$ zTf#3=_(jI}qJ0Dd1e+U}UdPNFX67-yfJIH)p9@2{v`{n}f0MuL3ra+>x{ftDtjS}w zI03ObVY4l3Vp$EZ&*JsL;@SMf_-=&nGUU{3J1NQ~Hh7?5gj1xTK7i*zg7EeUkr@nZ z&DhmD_~Kj-mhJyAO_%-Ew% zJj!3wS2)83Giy(9iUQwgJAr_iC{Cebz~loA<@6&N+@Ml%OZaw8AY8e>Z!&+bDl^1r&Pl?Q($V=F@J`Z4{&Wciv3s%cb<_;eDV4iQi; zfj(yc# z5}1;}D5s0T2%p;`3JB_GLTU45MtmA+b!7nORI$)W0DeH0kl`UmPV>8HLO?PZ2&rLW z>_Mfnr{E@ zP}g^9D>}YA#8swC62MMiV~qX?{T@~ASHpgcO)5CoGZE*8gz4TX?Cqq%J_*cgU``!# za+s6HoC0oWi_Q0L;s$Q83LcxC<585oJX5$h@9swA!|VQR`!dpyM($H(~Gv^_j@I!YysrZCD7nDMWUUI`bb zaAAy_BHSc{DLN&AD8`S-q(%4k@vO!f#_-7~w)qa`1YGr*OC< zTTW~)0=*B73{fI&@5A)S-N_)${}h{f<{!yaKf;fB?mih=@V-vuXLyQj!d_Dv@YEk5 zM5pkX#xurGBm7iL*@t61!}YQ%Hu5i3{91-I#-2`cQt;3sIhBJuge)J?Zv(Xeo@)im zt1<+b*Tk$WuCC!~ZI}w4@w3UD@W&+nSi&_aT;s$G(|^Bg;OaWA&f)4jt}fu}49Zn} zrHQL!6eAP^!XX(>q)n&xx6Zi!ZP+=M`fT9VIuzI6TEM%UnIRs2R~A33;b$GWY-X`* zmQUOgV-?xs2&+gShor6a9vl_p?q@>2@|gl&(`S}*E1CH!{-=r8$kleBqlwPGi9G_e z*v|GoBa1WqXwZ(G<#Tmb5l19(gcvrrW27ia0yCkxPY(NdLh~lKW2C8R9-nXGrV7qX z>VV`-HI;rr!Uhcab3!S4F0-` z_hfNj&C>TA;eGy@`--?PiTlC`7kirc8Bd?xm&1LYKD*CJwx^r+MKdYN&vJwne29Zg z<3sX9W&Fl@>CSYmwqnTm%#ScXWFI2p9DO%|cMw~O28{8~5&pRY^S7A5EH>4!DaNJ> zHbvN!#-_mAY)WBM8JiN=)WD`XHs!D>k4*(^s$x?Un-qW$DRIUsK51#JD`H&|>q=Oc zvSY|;WIW64+q&EsOkGFvgw8I;MUjaLET^ec?<5t2L6TH0Zd?YCOMHU3aVCA3@!=um z5mT5J3YtC-rvREicTUGTk1_x-Gg z8_yPTK@t}zIp`*l8j>OM4-H&Z$NC)B=W$iR_|;>pxUh-aLi9v_*x+1S^4gd^&kJZaWPSzz*5SY8fetf$f1!(gSf~~ zP0~-zw~3Kz7Q1oA$oV`U;TgB^bCSlWKbOLDy;xDkR^OcM5Q6yAFrf|(U60Ili1(L! z?qj*HujSWDI6H;29ovsOei+P+aY}>kE5Gh(ln*k^UBSP{I3mIkY5aQ;UrXX^B}6Gi zj=CRnVs>`b62x|3xd8~LDIlSGq=XGAY$)T33~E)&XMHA*&lGTM)6SYftZ>jsup5Og zUywnXI+oz$9;sN!|414OipVCB4UfLmz5H;8j|*O&OB2b{iOBK^w0xp0Lj_S9Q3eaD zM*F-ri`R;ZY~Vw|zzel(}xTe zkjP*S1Iebx?@V_(04O<%GrCelWd;T?oUR-o!6il_Oew7;H`Vh#C-McWQds3X>hX^G zbVWpwGwF85zQue2M^(Z*QfA@?8C%s6=f)C+T*q4&g;Aa20CI>PjegC)`vB)W!ULT4 z;3Z#^!fSd>BFLTmmkn&G?ZKC*!3BT6VO4fw75PUKyh? z8W9>T^53(%bILec;IM+zW7oi>aeAAuitduzhWLsbQZW=aq|u&w76YOwXiUMkIXQ~- zMIf}|6j`JazLvt*MEb>;T`@Tdi3nz#2~8L9q;nEv8E9H*R5j)h7*6xR&`6A(3=CbX zz^yx%8(xtMRV#t=vPsV3@EQ&mh;87~I!?;rq&zMyU_%od0+|^*@yo0w=WxIi!2_f+ z0!TAr-?s$)H4*Yan}(2Pd4OhFXy4;gIyj=R+1ET-2ieMYk|;_Ex2By!pFj4r%U7)90S zRrLGhXZ&KL+5D2*v&f7>9vulMn@cz_ zg#+DJ&Q4%<1G9sXpUngc#i-1oD6G~FOyCGlbRMWP>j&!ZrhpQlI7T8uf}xYdGbA*8 z%MCDUmUfOaz(`q^gyAP)1|1FEjaz92BP7!4)CNU*kDn{s;X3TTfo0VPM7+!FkLUWh zt9cx_D6|FxRLqJP4^N~W(-WzMvnMJ=NCllRp&lgPp-0rwpF@8J|5C*@1-!3`_mRYl z@x#axg%8koNH!M2e5T9E%PnjR5*emFLp#s)im_LOy?n_OJsC15YNc7DK@%+TsE|g| zPLm`?{6R%_w37tA;&b>dephx(pqH_y{3*jvPWTj)ro4q(R!s#_RStU8P6XJI2JOONMZ4aexqi8R0J#gCuNG zXt!t8FpDFMv9W?#5jLhVtB6@i%qn443bUw4Phb`kqYcceV^$8c@|Z=?>#F-%G0uo^ z20e8P)l0-eY%dJviLg15>BVx$8oMvCzn2jQP_5Uy~{#M{1yuTEf1mgjJMmnnVM}&}j*SU$Ng5yZXr2(@E`!abk5(k8i38I90;YV7q9mZPIq$b}{N~ zhiXE_0+|WCR&gKoW;9czZYm%%IVFu`I}=WETG@0y)UTeeR7f7@7cj+7)^ol&pKqF# z69}ZE;Rq+j!;1cR*gN()_qKvu0h<^%M@Ie8Inry;%M3Cd-xi?{x|iTG z_sEprqK%>%>33AqzbmN5ERVanpAoSTu8b$BiRTS~k-}w?PXDQ0A1iODynq|D(;}QE zt)mn5k1${_;ZG_2$sh4W0CR%dV?m`jjcc$jq03v(_J!Bvv8H@#R;xm+fkYX&aD?WEmNvdhFXAaM_YYTay7(0^l>9G z4)!RXn&FbtD2nA(l@?>1-Il`K=iI*Az9Sz$tzY* zM`M0i5$Pn-C8Sd(@=qslQ3L5Z(mAB_NEeL%G5tToMi0inzujPb29-7pa~R{aB@sRr zS)ScAs7x0I=?IT}lF31424g%H;W0^YLl)+If7bc_tY?yVri7oT@N-W{{d9cNa7Z~U zm!sHL1fmeH7jMPdq8RL+hqjM)gSH+$zjU-O? zTCa8_bOG9#=Q=Z&dlLV2T0E~@mx?{ zuBN6}zJQC%Bi4)ar-0==nh=d7>08<#;-XNvmf(&Lu!)e6cACHPNXXOZdE$WhjnoJI$mJ0(r&)-N&t#pZCHwsIv!|GdbWn0@2E6Xj zNzc-u)394nXN$++IAd&$ur)Y>h2)lFnAM_x)SPR5MFMCGd8#pXP#1^#1sk@bViJSP zI`&mS#SCw!(;Jd5a5|UEXVncM-(fSrc!xnsTRB6!q=&g4=JFWq6CF`e(8u`+)n}c` zTW-i8eC1Z>{^U~Hv$|F5QmQj5)L*zmyqJ!k=W6m#W^5S|@UYVYm^iIl$>vt5kEqWj z&F`l`%hg$?tZvcZBsAoyWmG-bAu#4yBQSndn8Ow@?$k0#vPFrVR=Ed@ssGVI2=H>7 zNFzwQO{!7BrBX+vacOvpsuEUneYIEH`L5u3_jS*^Z=2_p`h8N*tHCJN3z#PYOlLLxC9{qT7{1MslxE*-Gm@(&B;&SRgv6X{t`+e+pPF3aDwqS7U*^4&o-S z99c+jF4Ia}A%hl3p?gxeCxJI8_Utix^`45cK<`OouOhBZ;@T4SNMR3m5PwQwe%E2) zep3WWkWbsYG{RDDOM$@PEDY$D@!uYOli*SWN`lMsfFT#KoowvHxquK*a77sI5gRky z8}NGVM^kvz{UBj*JEc6}=aFHE3d~nApPn$uK|AL*?j(I#kfsFcV`ncJnTMow6x!+N=gZi zKprx(Ah%$zQ^Er&Jixcs&Jn!t+8d9nFkGi2#`hwNT*lxfH@O(U7_>qJf$#Se#;Clx zplP24{*44OVP;58u!8_t*!-aWVSir~oa9{=x_2a;*nT3z5mO*;^wg`H; zJKW{LEJ(w^J=xO{L9^_aVPn7RGwH19`@)ah?K5*XXD0keD-5TH9T$c>q+h_V_Zag} ztqWC@L|e zNBa{xZ;0U$plZ=;6e?IE*oli}4yBkm-7H*@wm?Z$htDK%*%bUtK3zLs>A$ezuXBpy zbvsYOWbsJN`frdMA*(=cgffiVlU9TI#}xip#_b76jq}SKe(7o)RyL7F{$>+TN{AxU zr@_>)H46&!%&LU?Vym=m;MtI-f0pT8H`gDJY=@8!=RsrN8`^(^XEA=~u?ZV2%$Bk` z92`>IPdcN^b7vYPT9_aNVqnMw>tk)~H^o=o>^J2B|3FLSFUvd{UzXGyXZ~OE_!n1v z4SHPmu9jae;X5gO$H|<&RzZ_Gdju5v(-eNnR8azlE7#2IY9HP~(?{z;y3aGMTOw?s z1#p9J`DkXwnI8|j@yn99tb~12*w;-rJtn8CJtxTA`g_Q2(x7=xoEdY`Su-66&Lj>D z-e-V0P2Y$7g$cZm@PK2gANn!>p~uec*!~H3l;a?QybOI42e#{>F2N^5U6zLoF>Gf@ zr88B;XcD73S)?mHX3uyDl2vAT2~w}0g%y4l-r>BZ;W5SnEcs#K4@vk6E+G$}#wA5u zlEft?{9_9LSjHu;p}M4wOLDj*k4p-;q>4+L_N|}M*!t?z&2jaMMXX4g=*5g!8Jihu zkw9zU-E};k!{d3po4r%|uxAE$_G3?1F5MbD_=r#bNC4r_y4au-gnRwzOy2`1L^wfp z_k{gQodh0ZGxH{)m&lP#9H|%dWxCCEVz;%a6gH=@xfjdJ_(TH#?YZwubGX!V-=A<+ zJnyXdy-j?g2VZh(?h6sVK!cFMYpeK!`1Tl2dJQkV*qrvw6H-4ko4eJqTMoNGsekox{;Ss-?^ZTxE63K(Xm!>a z$M{x+Z;3YuCuO-W*7B~Ca&7`obet5I(SE@bb_O;GGekh~@Rrd~QZ>fQ8AL~Txl7I@ zQaUJQT>=CDK;;8r*MC|eOI z^GDn05rqQ`?d5P~-d#D&z>N>umMZ1EQBIt}kyV_}kVLqY6bi9~@8?C{#)MPa$AC^D zHYMnO9NKq+*hq`h#k|F^u*h|W49_>yK}(L<3eWw=*HS;v?V&&*aBCa`5f?#qIb_Nd z))BMS8+afz|9OC3iOqjpCc#kR-y{5c@G=c5UMP2w_AJJ)Bm7z%j+45!heOwbDQx~0 zMhy4 zs8y{%@`S6;rB9d`+XlcW-nWFUYv3p9t2B2 z35@Gcl*JBFOe=r=zK$rPmA_`;54UdkoopIe5*`j(pwm2iR!3d&( zB|%%egyq8|E?7bAuQ2GZFen;IOHaOn9>LkI1#Za~u>v}cA9A*JltKl!Wrt(DA;KG6 zmT*@F`#A`-o#5FG?vQUs__n^qv!HyXo4zTovo))zs9y+HOQw%0o^7|8F{VbC>IE93 zkqN`%$buvLGpIobdUYxXL&>BCaUJtXEX2+*tom=@O?5nw!vlG|iG&_cI(>aO<^u}B zoT)RBZHPW-XSkY7`;wSir(9A;cP4V|OmX@qoYRLn{odYzy&d|ny5HLMj9GqeJZ3q^ zm)Ff{iy!Zaj40r%Sz?Iuz%DLM2OXnX64m2|Nb(gP0rF9tSbAQrJ6VD+P}sclLP4E( zZWtmEN|>Bl;q-ROiX3PybO+J-pIlnN9YqDp`4XSEnb{vl`0<1kblYdX9O26oe#R3w zmi`L_)Ls=F>dKizi`c2ukAiDuh&;r8Lfbe5Q-fT0kH~ly23>XB3Z@1-f~kEP7O6R#`USAi0@u|Pz|fHSfz3UH^@?fnnCWvS2OroKd!G@H9gJp zfGcASN-5k>CNy|??pXUkmzN)KL_Gl>u34<#5q#WpXr01fLo zFq*@t_Z%2?TuNubV1bPkMl<*nVR;Exq;Q3}mjvFez{I`MKY48OPmE29Se(S-khP(! z;xBiWDg?^zM{c5j)P>IGuXSfd;!o-rlMcp4JZ6W|H270D~<8Q%A~ux zhF@p#>joaH{DoSBsqAk_>&F(CU9|>NC#*G4 z;h2aZ4`FCY%vw^cLW4=AO6b7T?k3tb(y_YjhLcM;Z?{7-5BPj0-AOPJTfe zYl>Ktw7PQBae0TLHQv2MeI8g6OJV;S_FRpvArgP&>yh;f9pg)#DP7xr#$T|d4YBif zxT67&mq|fv<5k=WjXEzh$}mu|o8v%EZ_h4iYgxR>5>Ed?@b&Ag{+eZ5ABTjUftk{uRiYHvu_5nDe2svSs6Ql(Z+q8fPMTPxNb z=+-otAK#F~hEUAH{P=TSR^{;w_Hjn#*YqqxlCd|TReF>sx`KxZr_*?tEHNqKgaIwv zoWe!qN%W6WqB0h6q({f3h+rA}*;1UZEs?;lylk2O^|O(cFx;E6WVD^@wq9rE*GPK? zX)BX}tJ&#MpphXb<4vjYV|*jRHzX})!ZZU4Dpmx0VvWm$h&ZuhLldyxmDZ(l~aIV>}h%sUSO_fB<(EokSlaRvsiq-L^1k3ezg*=ql5h+!0McNqqyDDg;E$AQzRg^9zYwd~1 ze}0_}T4_MoqcyPWwj#dhS35a2?0t>cpJ&)nC9B{WNQw;H?5ru@h$43DD6Y;$L0qx2 zi{)U~vj1VUuC@a){=S0m(0QftogzM(#78B6Wj9o^8D9H#MIBe_bzF+_$BOQ!*9YTTCxD_$&-%>27);M^X@A@ z-}gWmjkn4XS-Lnt+(HzyCqhqiiIw@QsxckrTqI#f1$pocS3=kD@(59AD)M#?pB zVB0jg4+jYx3{%zJ30W00T5`}!jg0>suLmI6u1dW=(jD&2&6e&w2=uBDri_ndVw9#P zi@&Sk@5n?|@D-9#X?&%Ki;`AUeo+b+IrC2~)1wW1ypE6O@bNr8UckrNnE!uj;$!10 zEQB68>`uB#*d~T$zQ~_&b%NcP*ckSX^>k%LZM(>v)XhOv{J@vScyC8#HlJ;ayMtQq z7Yw#TFY(u>@cIPy(i_ojCGbHWaK#IRNg;qG{Ya>`#bGvEzqa~DT7J;`Mjq3^7eay6 z7YcZ%FYY@P>rr#qCib%cGg!<0-1zLb^HFLWiL{Pw873r=RA8cvGr2O?Tz!oNo>}Z( zvp{uswtZm4%FYi(?4HE#CG4KU?q%$r!0rv~UdQe^?4GxKF?MGu6EDbcW|-|k1_D*i zOe^!qQkK3ih4+Q%^&akCvUxjSVOtiA;tkKyu)O`L1il-18wbROuQjxGas!cqDlqLs)k;B}_7*%Ik%y1fvdKWPug?KQISDL*WSs^Lk-~ z^HZ2##=kl|n=k?KefL?E&68bU%_|i=3$GS`j0Z`guJEd7lBM*j3?&RjJDwCn`*YX5 z(=>H6w4+|gxs}2UpYZmvJ(9Gd4@-yjT4@Q>NkorZLq=??6R`7LVz(+3h| zYm&G|X~7V|acL+)*G(l%4sH#M3Zrt4YHJazl2}#3?^9N3NQ_E-%RV8CWN2TxB!w6% ztP7{W(4$Lp|4_xvA*D6UEWG1Sre>xq;}eR7Yedv)T%a^)8E^5OvmwMC8wxnRY3&FM zehV7CV8KAva_)qw4MxrEe!#%Fh(;0(!B=MFT~yQFn1zedU{Wv8+U(LpGtMqOEi|Yt z@wRSS+Yxfh;G35zgYsI|N^k;ME5S?_RoT=_SXMEB)r%agUepFw&*$w(yn<&ku$r|i zuKHckM|B6cBGnx<6!MkIO%n=I46{canH(~C?BP}X$Fh4;)2<3KI;CQu?no|;*LN%J z)hAJ_c3>!@=$GphY~zv9#-ly##%uv8EhBT~Y|Mb)sl@VgzBt>Sf7j`P$yjJ>FSDIm zMFlD1qg*RKMqIcI?;4+nYkVFCTt=(*`-7fh8|mUMhWtJwaux}HgnYfGpqA%_jcP3|)!FgV7%A>S|fnl)rUv>xjWf#)S@rFNh zsPOlaPilbYv^5Nzqi#QwXKGB<=1J#nGd}3$31+ww){9Sn;pRVrR$ZWiW+cXYz17Bh zz17C^-i%#4is9k32KEj;829!bj1SQewO8f130md0k(R_@o0nsJF))5tx!<{perH08 zfGuj>!rw{n9Evn8x)D@!$s*rtZO{R(b-t9_X*b^U;uR$ey-9UP`*| z&vtHYwsUKy~Y@?@k?ZEuI4tQMEZ&rnX|zhDU+n)*^+LyV!fFh{Ad)0Wn(Ynctn`clMkDW-zJ7Ox?1{j*j z8g$#k7zai;kUbK0+yX66=@hrqOzmEY!#NVd23I?dXD9YgV1G zU}vpnfZkA&b?$sQ6t@^-r>tWFT2uq& z$NWp=?K5_d-V@GiZKepVj6*Ya8`>~6;q9Sx2z4n_u?@fTp)R+LqkI4H9FAdV7U z>^lEJ&$$l-uI~t@z}mVrWKzg@Ej*72uUBX($;YyRoOx%k$=3FW8|Siy3N@R2l~i;w zhpie4D|2gAPjEsA$X#;(QD>G24;C?ca=p4O@q}3w)#Hd83~4EzJ{G|pH=dLujBhm& zrF@!^zL=ls4&=xab^y6^yMdf1&MqcvbvPGHb4^xB9X0YQ; zv|=TTWyGNR0ogumZm+1Kz>NBHBT;vbct0B&`@7ET{;uO3cHcrP2qey7LgdN4#Em5E;b^C$1A`%@ zwh1K6qwgDV-}jeE>#;Lw-GrUQ}ei)vXnLHXh>A-N#P#HHuDTkmN3Q|Fd@RC^)<(3@Y0yKrNW=GSRoT}CMCQ)g_p;;J2K(4sl+EEuXHvAetNfim0PHf z;Mlm+=yS>6>b^FXyOO_Mv3>s5H|?lvKSbQE;3XPtGD+5gN?mRtiglTM*a!Y~Gn)MDC8 zBOhQRVs9ba(S?}Bl8-Ya&saCb)ghH*;a*#p+73rUnbY^ZORcS}QW&gEbY0E1`$P5C zqR{E8fV9oYny=jiy$O-n$<2-L=E(zFke3!Z1)PAjLm-b4i&txcl7L%bw?9#p1uy?XZ zDget0*Cnzm6xoqOIzus9Ob<=%0+tdzk`f;#9&kFv`XQ*k%$Y`W2aZ5~LzJQpD$GqQ znJZDKn)`(n5v$3a{~W3QK=}^uD%8(nUJdhN5M9r6bUiOzFETHMd1cJ=<_7cXn3u!6 zJmwXw`#P^bnCC>+dn3G8s41jD4Fh;@b{?){x8LHMp2&r5>@V>>73X>>Zp+Qx%6s8M z#7fM@`QgFu3+p8e&ls(5d>>J&UI|Xt1X_S*n&JCNcKjto77P97jkWGG?+kK<_Sddbpm^{XvuYf zg)8Xp)Y7zJ;}_PDb1$k0xH`U$?_B9}b3k3@bd3?Gi=I9)d zbPJP|iZZF&b}u~D79EM~?EHqesMAUiHpq%Pc-YqcpbT!mR>p^P;(*7n48a)7DC6_0 z6kg@&o{j+a6pvm{i7`R1Fxj6_H^E2m7n$0BNCc_YXnZD}`*YCo0EfysVQ7$2RIY6t zdK+3do{&JCjCW$jdB%7%#Up85WmI70hi<*>h98Rgq~(L<;d5zYhrFkjZ7>&r(aTK0 z0|buuLFafMY~y%$P?qIs>GW*Prc-VVAm!^crQh1El2$u2N1fFt_AeDtRXXwMT z8GNhXvKW8kSc_`0uY`)og&sOt0h${(Gj}C?CWX(0aSr-8Wi1DHu6)cOw-!s`QUHXu znjY`7PKVXFLKfBkVm+Bmhs+n=uWDz2!a+*P4L)}4@{=n4azp8$Me{k8I!w$ zii5BDJTp6fW(6!G3{gQnTE@ zOyG~>GpF-1_%E*kBvN8l#gwZd^}`V+$B%F<^&{sV^dYO&J4gXbINI|apw920lzXv| z6~5i9vQBrZ_5gFPsZ5{i`EX0FjkYcWmk`bv@WfXil>xf7bI4N|`8+AlPPJ`upv{&m{ zwbYShQP#=LEaCS_ejH8;sDoQ;fuL`UcSm@)F45Bsmv6IUn3c@fT|c`4z(6z-!Q;00T3c}zMuZ^*zg(-55$A|`ny?zfrTU=!WJ zx+YNZ%iTyWr;*&rYe9I>l-={UzR}>{pvT*O7% zke^|QYK_PJrH&sV%3e`{pc@<}f{5jmT{TPNPhNe( zn$|TWv>geo77I$(8MtoqP*S@wml4t&?{1|zf}6gG7n2Faks08``VLosNue4^o5zKSP(de$%gfh1pfGT&7)ok~ps6zp#(@bRU&M6lc-x<6>WU(7)-&*k{HsuiKzMGySCiy1gM zMoapE-L(gKu7^D^2iO6FU_NM3=7b+)>ks}Qdw}dL@u<)^2p4U@p-k)n^3wg_p?e_U z7D6D~qHU1LfT*ia`#T_k<3QpTUc$vZk*Qg9FPlf)LPz9O32De(EKFNnw#oke>H)?h zoxRJb^k9hHrZkwe_+8#XOAsP%%4OL>acy_dtqOOa(y0>`xjV9*>crR7?mP7q!jMT2 zOTfeEbaA9UV`cm}lqb`Q(sc7YQU}f>d5+Q(y|~-Mv@OIQU%W=sJTqili%V?>csT0|(RFbjU~;qKXpn*pM+7(^zj+euTEy0g3Rx zf~ldD9Un$gLrl$di$nY?lb$Wgb6Q4!i`Zpzm%Pm15pBKwx9an9Zix3o8I8|9??BXulp-uu z7XX00?<6s%ol_yqz@H4j7ox{b0v_&fqDJALn|&cu9myL>vV<$1c3Gx0AYzk+ri-Ut_T2^yQm%Af^7XAK zcqdcX@;-j(Xp?#9n2OyNQM!FtLK4+C|6s?R5v>p=?3Nk6TW0LaZZWv-XIAtn_co6| z%^*jzZ@9fw!52GBZuKev5dy3NAZX8Itm!=!$bU=w8K4V)fkn0a1s2sRsdRe^w>$o% z(H`fO90Rbnk+lr3We>W*wVDOsMP|It%+(J3LAove;7H&(D}Inq3l}wZUuQP#GIhH{ zN?<_Mi0ZHCCFl0yC1{B$Q@^RZv!eQtv|V|ScD)c~5*=3_q$j-cAS?=P5uG3n3q5Uxz@CG_4x}R2c*sly;gdutY|N4aAMZLs!GNE0P?wP$-)iuvXD

N~P)k*5?fC5b5|yoOg{maVn^4BD9n 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�o@P4Qrzsdbi!YF@ede5c%h2)FS^xuHSyWut^{6^69 zyQRAav>bY+d(&iJ=yBtd3t$i22c-L3(0ERU+I1S#-s_?L?=qXGaRSHZm*>;MNO2d000atO418*~4#bT_4Y zB-Ea&8(Pj|p~uaG z&V#-HSAl!Ne(+n+<4#QflhS>1@|5&H6&lYq(EQwx`)^GDUqS2RAE4#@XJ~o80L|Y^ z(EfUrDdqSz;HtPgLhH>yxEdS+wQnf&_|fU!Jh>%Y4gam6`J9~oQ-%Y*`wQG&3#g4V1$FH00l-wZMIoSoSM!4?j z?wRbB+%(xY*)O?Sav-$421Da%O!tU%kA~W@IkcR&g_cii`p<=qLwiEw**pFBg~oRv zwB0Sq{fFoNBXj@P(tTX+KOWj&o{{^{PXBYE_36Ci`B1wqO!q~}i<6h+{>xw&!rcnB z`}W*_NAABf-FKz?9%w#(k?#9*{{!iMFx|g~*2~AB{q(cY^Su8F8on*}FM!s=gQ4l20!`=Cu1GpLf{|P<*k@SBR zYR7wUb-3E}(q0EbY0!RdcWC-Yr2kRS zay~ZQUx$5gUj~iua@ZH%3;V&pLc_ldjsF$c2X5G0+#4mkLem)m*MwU_kJ~EuPe}LV z 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

B}WiPZZ=W(=e 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 e$S3JRUggJmPk@H^%Dh^G%;=3VG9rX-U`M_%OJM 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⁡&U2FIRYP5?+~$nD&xtkbb1X+w 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 HZ5;f69$_Ip literal 0 HcmV?d00001 diff --git a/æº�代ç �/.vs/StgSharpDevelop/FileContentIndex/efd3058e-096b-46a1-a77c-d099dfbdc382.vsidx b/æº�代ç �/.vs/StgSharpDevelop/FileContentIndex/efd3058e-096b-46a1-a77c-d099dfbdc382.vsidx deleted file mode 100644 index ba6dc716c6b056df534eab629b931f04ae20330e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112248 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∨8Et*=?)U2j< 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 PetqKOHu(z~vu6E&y{KT^ diff --git a/æº�代ç �/.vs/StgSharpDevelop/FileContentIndex/fc425983-c447-4530-bd0e-d878aeb682fb.vsidx b/æº�代ç �/.vs/StgSharpDevelop/FileContentIndex/fc425983-c447-4530-bd0e-d878aeb682fb.vsidx deleted file mode 100644 index 3b314873bb20ffa1221370a504c04f6eae5b70fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541577 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 YF0s5k{I znr;dqa#f$aAYx8{bO&i{F-=_~7zwUkRS^ej20MdyxioIQk6bAVFmjT$kY*ST)94Z- zVz#>16gAhcxjju!;0`qesd+_oP}v}XJ@-6Dv$}Z!cu?dPBiM!$cgUYM4-UboCiGP#vjR4G=R|#IMIx>-b33C&GcNv%KOm zO_Q@#__`VGTDCmtCs1h^C^6qV-(^<0s11fAGv#=#kQZE&Yyy>@?lm*SxP^&9&dLvv z#q=2CNWQL%IHk_!XUEW0`L}6%sw`1a;RrD$62gb;;+WiVBuj2#N^oM+OgTmh=( z`)q-Dqw-+*>f*#yo$l`kWm`4C@TVxgB7fbmFT?LM#y4 zbvo5L)1}c8(j<&r( zW7bemqHr);rCr8VQ1)>ZTo>_9^Uy3N;=(LbLV&x~ZhCf;^M3(f9tid=!j}norEO0B z0HF~?sYq$umEAgjppVQzR_;s$GVv#bD8=Txv;`n~fABG#*||DU+wY5Gf1MyAK^x(Xj_tOL4UWU$4a1FXG)La!62|$M`Nq>@mdF zBfJ6bR`@%F9>mx@C+S$udDH;0kSM*{4f@*hW8k9*TZGY)6H;rcI{Tgb_l7&NSSNoD^y^-^B4z&^RZw!ypeE+ z!5abgIY|`58IRZm`6#z}f%-IJ3&BL?agQRj4`+6xpa`K76ime#JHxI6t17YTsG!oF zDXlhgH=%Yd<`-c87}S;{cOUYmBJU!~mZ128+KePurX4CSh$+H9+=Rm{1a@$ky*{k5 zaFd=Qq5C1|R{>3y@bmC|u;t#+N z_mi9ufDSlUpP9P^u}4sFlaPm__xtpIpLGmwL@J=q<|P=l0`-HzGz_7f!_q^tph^lA zL)PVqEd@xZOR!JLo695-7AhI%{_Bv|@g?}Yk=DZ)mXBe&FSxBpa#uc$*tolY8)Eab zi7lJb40MFgdL&08xetlm2$vu{6^RZ+DiPuNR-4c?22DKWstHjCQG%C%C2f!%mcn@$ zCs(83F@)Bmi04OdMnMZ=Tamj%`;ta#BVDhaZK%52d@|l)x#1KNY2R7-a|Et;D-WQ7}`|P(zzAY%R(Q zP(DUZd=7QsTqVv;!=g^?UWS54kb3|nT^JP-s>q#=QMaOGACkL~TY}uFNOoXxB^Fz6 zqG^bAqKPK~EkV&Tc!z?H+XcpET-i+`ngg5HZz(Wuos)sj?LbzD_MJq9o#zt<@8evvL zjKRpUS}c4s!fcp!9^vr_ClGGYF#QFD4%(w@7F7=A2!)8XDYjrDA0t0+#H-5?A_EU0L>}IWQQV~5 zo7r2Eo0=QBO{-lxaHH9^{=aHsqw43*c36jsJqFh&R?b^)Jfl0P&2@5bj9G9OX6Q+yjkraD1|VIN{s z!A)(d3lr~s<&D%vLQAmCaAZ@RhQI5?AKSNVYuI+Uhz7orO^_W3R|+tR1?ojb`j^A< zjz}o#73Abb31q?~CldB4#HhfKyopnj9aMOz?U0I6;4MRb z2>JWrmcg~DS`UG&rNvm$vk%?7;g<*p?%n~H&&Tu?!i3#`2^RJNHcDf+WTuJomB7Q9 zr%9?*hP%yF3=B^y|5RvA$v3klmnw9t8VIK7-uR^bO0}FL+go8WBCEd({JK&n6^!6h zfu~uaW14bncSMB_MwUCL#JNEx%sFs08@bVyc6={spnR5gAo(dzMkbtFaWjGJ;^tsv zo4Ji|O0uUjw7F$p%afXA%C7IcroJZ>ZVdqf1>0tOO+C8&3P0!TDr_|SmVL$U+cWmO z-SPD6_Se>8W7?B;-$s!8x^~K3j!aYQ`uzZg_T6k4X0OZKL^dmX#+(cWjqJa@>hnC9 z6({|WzCNSLHqEweS5I$+dJCK2JMf$On|{xG(B~;OFF^ zG50*&v*Mxp5#WaOF!wOr2;4z%2gA*Un-4b+?hv>`;SPse2=^wqs>!>f;f{by##Jol zgF69k6z(Lr({%&h3O5e-cDR$_RzbG#47hd#c|BYY?tHinno>9qZk-%+=2pN>z`a{K z71Ky}=~aFd?moDC;qHc80(T1BBDhoK#Cf+At`GMXxE*jS;T{#Ez-pMZM;ZUNjeaL2+O2lr;U6X90Ft$}+R+&kdj33nFU zyWq}-TMpNO`xM+-xYOWv!d(h~8T^&-AA;Wu|6x&|{B`gjgTEd=n>ucWzgKP4&L{&SM?MGKm)6`srHpAnC%PwBH9{)6yWz<&h(D)<}WuYtb{ z{sH)1NFI@HjVzH6ryS+uv+&QuKdV#8p?|lal!Z=IyBmQ`h|Y z(vOb9+Mfr%PK9*^-cP`%<+VuMWxk8PM@3ck_rfDvFR%|>7@E3Hhuh` z#HJ{jH)7LQY|^bn>Fj?tHvJp1>1Sh;s4V$xY!a1J>u5ZOW9RiK(g=l$K)&J)d+F z-Wh{;rirK(p>SW&yRRL;M{jK_uG_$QI0npM64Gm)x2ehuSC^D zXlX{v!>C=2nsw5<_|^5O-GJ)NXxWaMo%m=gYFbdU1GW26dk`&$(bA4Nr|{}&R6U25 zXVCHjs-8#H1yr9w&HZS704>YW@*rAPp!N||ufnSvQL_d$yYT7(yxN88BdF;{^^0gZ ziRyD`c@{0_5kD)3*Yp9kAvsX5HH?-BS_YwIFluvAm4}vm)DFR`L(wuEHHB!o3DqM} zI}A0WQ8NOsjzV=YTE?Sh0&1eDnS_s~qdJD#Tk&cfEw`g)GG47hbs1`Bpk)rK=i=3R zw0NkRkCq0h3$B`nsyfsxL`wzcBoMzF)r(Mdj}&r}Csgl4)n3%@MoS4=icmcTwNp{G z2UVr0@=A$$Hn_GjMeT+PQxbQa!ig*p~1VeLQ%)cdgv&Pq7Jj+nd}&N@-c zo%L`wz@gV}I~<0_wu<}CF>U#v9G~H|LmHo+hVz^p@aHfbKu`MxINVb#ZFnHqSu5Z? z0%sMRjd0e$*@gQK!0Cc>MC>f*MGa^M&PE;(>?kQZA#Gq4hGUy?Fq~Z3kCVA8hrr>k z91f=t&P{Me!WjlJNJlUNm6w7!PyIk&YU7RC2*#|nF?nQDoau6!?{K5 z8mAI88=U|zA0C6Fjmn*;;gEG~fwNZ6jP8N+B%DLwsZVll(Fr&OaL8E3UO&LdsfJSn z=QcQZz_}C7EI4;bw{zNzA1WORey1VQDOf&B?+3jc?fngzDZG5^F1Q~BW#YBSXHV1} zi1EKM#Pp7Mfy`o}!z3mi271Nm56N+mlifMc^!!F#Z9kqB!+SfBLo#mH!(6)X zemBmXmC#RL2=B2xWIEoDNzb%1r0{vDtC08tKex6C_mpF;gL|GrSuM(T;sC$fjy`qQ zFs6Tib5JjhsNZ{Vq!dRw&{rvb%N0$*gt`1__(3N=WFw0v2zzhBP+NYBRVlJjDq2a&?8g~S}_y#6NyqJe0aA=FS{#kShW@&J6$-qQjS#|Dmc}} zafJTEYAuG#WZ#A9GSWK&JvyVBq_MU@-a+#+#5TzGAx3`rf^>L@Z4|BSpiU!3ZAxjC zuCRmjKUd(FmdMnBw=3~>8-B6{!^aB8_=!0dnxyRAMrOv^HW%A=h#!pN=IxlU1sY0k zcVJMZbeJFPVDKI|r82`k4)!!k7e^+I{I?2x;NrivVKz}*j@iUAw;Ktb{DI~Y`2+1o zde7SNQ%;iZvI@{45r)f;_8+46cMkr}EL>uQxS(H`S}t|k&7#5f?U$x` z$4^V>C-;JQ`@=NT&Y*B33U;Bd8)r|V=NxjLMb3F#Ju3pV0EmS|$)rQor-n&(H(5B| z*)s4@nB!W{8}d-nfSh^KUx+@&!iC65;OgD|LAQcO#kWu2QEWG2MaZ3kScy0{=!=V# zA`)!RbS2Vs(bKa;kHkztnQQ?vPu--s+@z*A9zxIKsMlTTk3+p`i9KYkS=*4_V`H-; zYB6FO-tCm6@t#&Z?&9$#jCU~J+-^;XIqLc_e_f+&%p4}xwqtPx7T+rkr4(#>Yb&gxHR$OpIfGh{;hzJMW1;^=2EuB)MTUG(8FF71Lw1xQ-}hTEU*j_YEK@Zis?vl46I_|vYMhpBd^l`{%0%<)n#;o8+60eY?hT^Me7;@6e6f?_ z1?n3m&2v6KN0UY>5L3o0W*wt5>}bl+44az%n>4R_@Ndz)>d7{*Xj{?3`YdDl|Gs&( z6gf9CvEi$6XkEWnS*2oe-u6$?D)SDDR>^dc&thWKDo-xQ$Cy~(8hl|F$i!am`scLD zmmsk)CkIX#C$pItIaof159!w`zYu7ZRl{&-H2OyLYnAiHpQR>ktS)+(JF znb=E@idH#7nOMI{StMHJ2$SIVA{Y3MtzUiXc{c$P&IEfXr zv0{gKy{JU_szeDFrIe(iRVMCG>G8Wmz4V9C(~Y7SC^Cxp(+u?ZD7Xa$6xP+~v1j-z zf7*k2rI_by*pBjdEy6vb)G?0cQ5IWJZ>_4_j5#uJ#yH~;0kw?Qfmo%4A--RZ?~`G2 zGVPd9feC9dr~reqWBt_e&SD+yxR6wht#bog%or@Ksujo`jNDu}=TLA~!<{^4f*2=? zoA7HpL)pQvS4ymzie>H!#0Ddli(J(w8HGtPOJM`LTLhkewqJCHw$l<(rM1OaSonfC zz>Cg^T4k10u{vy-wn0@~a#=^oLATVV{)|*whMYOl-La@%OrCIq*gK5C=GRHO6y2(A z37olG3(3vi*@xV{=-G{iDd;Id!&I>uJKL~~Cgc``*J9*0GTbXJ^|?5Vza=%Q(_L_&3IZaL->s!I`BhBGTQ?Axq?*VP*Tr6HqHu#r@r zw~IzPjX_DqC>2Dr4kCOQ@3dq5DTE1%=QO??KqGtx-3-fGQ1U?yB{M8*fzdS*5somd z*@bQmx&Bv1Eg8Z-r{QJ>K#3qu6^MjzCMO7J4hkaCj0hW%Ftj>cqtZ8Nw3iX^(Q0{( z!pLHcqB3k66?J;rbaWGs457v~ygM0@D*V?n%$k9B=19CoBH%>Ce8Gi8jpvD4+r3Z} z@9_-9THy5_2`AC^{GY1a9-~*G2>){mj+JPHbPtY|;+Wqbo_@9x&sxlsbgL{PoE3nU zvuU^y7=G>P4=#V@aqWzELgVja^yHdx+9+=#!qxanjmDiBd%g39n6>PPr!*Q%Cs?Nh zL#vk}wG6*liPS?#H6!&fQmgUGI;0*$YCTdL@CTcb+K$vtq_*NqEl8=2@DB%(I*cE; z%BlRFsE0B5wsZ~gAL~0GbvMVYws7!_MiyWlFcqxL^AfyH(m5Wp!Qu#;?L24*c!||m; zq;5iLBvQlh%4noUATj@gd}#twQKTjzH61CMB)1|JM`|)sw>i6s^Sg&Ip&ApE4qb*?I>89IjLR z(<#9K-+eT$w_!Z(>xmfuFyfoBOxlkM|>rx1FnU6aGJ($-=n9Vo1nEH8#g{-h0?%CU+0W=&Y&U;zP6 zAYYXKiUV*b7?{||MNJYQZ{$?laA!I0q(ia|yUV2~f58Sx#>?%%Usd9-ET-8g+;~WQ?e|Z0sQ&Y+FGCd{Q+>^$>ij1A-GQhmruzPG+V7uq zsG9vwWz4Y>1Jy1*)uH+^)z?wgx8I?v_PZ#+>QEKumH#OY)i-Gc|La)pj)OM`^j<2x z?a~izK?Ry!EYPzj=9gnW&z_)KORjYaIjyqmV{?&X#3xpBAUO_ly=bGoAhdLZ@)) zjC30DmSgb)@E(M>0*OaZv!OKVf5G04f8;+7fcsHSFB>s9BO4I^krqHQkOdgMhK)3Ox zV{{C!X`s-%UDE0fSK*iHto!90Y3g#R9&~Gv47>)ZO{kkEes%W3>Ls`ml5iVRzq;p& zZWG#v&b`Rp4X+5HDU#FZ>E?R36z>LP@aszan*KC(+|eI0;JEXS!%HIcG`vk1y#?=6 ztKWv)9uzz&b^)V21y7*hged>?u8$sz_s5~&W)w`6SV?sa3T~5Qcf32{&4PCqyxEe| zVj7ND3vZen&O&2^!cN>cJ8@98(A-_f@6zbZB+#QJ>iT5lmx&{V%V{nWpI%#=oa)$C zj$ukmj?xm%8U92%X(pZQz=-`A#Y(^!MwDR`^GWy<@AC{7p0Tn6Me1Gedjt#4OP35v z-UTr+d`2n^SMghWP+W@Qd(p)g1M{jsVBG|sE7#_rqa1A;P@;J|vqqsrQ+LR>`TPNX zt6UE52|EEiZS6b_lN-&EvkuA4s6zWo2KDZTq zabzar&D)Vt9Vs&dnK{VJMW!AZ51IMMG$6A8nR$4t4w;3>RN$=yuHB8yB4qACh9G?u znSJcpu61-W2%v5|BI8Hyf1s`r%VRi06rxpEAdq|h+?Wk<8g*TK$7cR#5{bNr4S^iyR}x-$myc`kYdh8b;#vit0?kODY#*&lL9D_THY=j|?C1qGV1AjON zN9W>b1?Cc8Hp!%(F3OW<$BK3K`?Do~SSGm?>19Z-MEW75n~{DP>D5TDL;5kK*CV|F z>CH%QM|vmHTaj)-dI!?`kv@p@VWivfLOKWOFwzmE z2O&Ke>0G4qkj_VX2+~859*%S&(l;SJ66s+`k4Aa~(xZ?rMtVHb6OfL|iACw@NXL-A z73nzAlaan1=_;hlke-3`9Hi$WU5~Vf^n9cnkY`eNKZw257MPb`$*q{bO$U*bml11EZCWew8H<7jv;*<=_Jxm zBfSafEl96LdK=O`NI!}6A*3Hi`U#{@AYFj;7^KG{Jr3!ck)DWjHPSUm--h%ZNZ*O{ zETr#3dN$JK_#*vY*2RB+npuKavk1 zxg4)Ph~x?+A3;)eiR2n2cOiKINlhV3Y6@ABM@F7Q@>wL$BY9RjLRN7<)~QM{)v^Q6wiJsVQX1Tak<- zIT^{@k<=8jtn+QY(?HM3QaQk0QAQM`y~hYsoewk0E&+$t03bBe@C5 zEl93KavPF8NIr?ArjR9{K=K5V1xSuTa;%(^kmM-|6Oq&uvgB<@-ht$uNX|m?E+l6o zS*`~QK80j0lGBjv6pYZl!7xLrSi!yw_#p6=J7mklkz*@?Uy<}+S;)k z&@t$hN!T~mgw+mKGxM2&W(UPfC2R3b#)bJXt6esdV< zz7O5hWK?-0Kkp;IrB*|=jlN=2Gxlg3UYl6J{N4Kn@)vR>Ty>!dG)t>FG44>E3^yrP z;c)*FmHaxt+l0Sy@Hc8x@8&1errynI@4?%p64u{YE`|07nMG{JTkEt#78j;^xd$z! zlC~5kt7pv!{c_o!H>PATL)aA2ECcpWHX~;%7Vp5V1^Ao~ z^?!PAm{hM?Jtfzl6eDLm7EcFrLcUJLlCrWvODgJc#B_B|p31pu9jhN4z@Pz& zsR#t=F1*1{#E?4~Zx~1wKK&ZnYJARU?-X*?(RyVVK4;`N7rFF&GN-)>6B$W#FtJ?x zIo?u)R$|=_tlp2h6_T7hg%$lkXt1OluZv;zt(a1VI;NUaOKB4D_BwK&VDC~ymm#_m z(T5OiM)YAsS0lO((Z>*7kLU(OHzT?o(Vd8HMYIL0)cBfv5YfYkGV|&bqNfpk4$)^2 zeF4$u5xs!u8AR_#^Z`VdBl;ksD-eAI(N&0UM05?JyAVBqXcwYK5bZ|vMMO^`dJfTN z5j~ISSwt21(Ga3Jh=vi3AUX)q!HDJ}nulmUqC*fJis*1e3lY5u(UFJ_Lv%EvBM=>h zXfdMW5uJclQA8&pIvr6pzM^qNCnI`0qE(2NVeSk>=O8*4(RxHZMCT*gfan55=OJ2$ z=t4x9JeEN8ZbTO$dJm#R?xTqALv$~qyAhp&XbGZ4h)zXx4_+(9Yd)g4AliXwC89^M zY9>~(fUXU%9YgduqDe%bMsyRRTM%7~=r%-q5PcHSLx?_(=o5&ZK(qkSF^G;ubR42L zBRUb$YD8-gy$#Vj5WN%8S%}_+=xjvG@fu6>oh!)rSVd&(&<|{Qu>IYGyz&1@}Z;v#D=~UxicZ3+=JC_Vw_+>j~Ap^R6dUTM8}@ zqVhGN`bu_;m;vIFPmd9Qs}kR0JuJh-OE7MxWKwl8*XY=9NT_Cd%s-Qe+f(!D3DrI& zS9T&U1s}ILYpGTu^bkVL2tAC@YJ}Dyr1h8~x^r0vv|UW^&{l+6`n|`YgOXFh3g){-61Ee{MJOMkJcNcIG!&uX2o)l96G9^q8ivql zghn7lC$m;zhbABtMQD=voI^2$Zbc}L(Cw1j7OFz1OwT4(S4pTIArGPX2sKFhXlNcn zbqFm4(>96{2;D8NlF&T}>29T~B(xWy-3S$lt0Yu{&{Po|p;Cl=gl>`2QE|B+MQCQf zoXue~%;N~DlO#k-WD7!T5!!~%9)zBhe3B4PAmxdoClD%7J7p|FhiRi3Gs0N|i z5V`}QI}w_N&|L`47AFa%DizmIEke@}>J(fw^I%r>a*&)3GH}_1zf+$4cjU?R&C)Te z%89c}GzWjO=pN132v$B>;!Y(--W8h2p%ek2ZphiU#$BZl1jdCwv7 z3=(>}L>|q?GZ=C|5)a_=awHx^LcMBltU}L5G_FD8E?ho<%U#Gnf+5}5^db@`k$(<} zXOTFM4QG+pis8VwL-=715@B49ATbCD^{Oq(Ln0rShoEOD62sA0h{R2JVF5iwJRoGO9#0>m!4)W)srye{cG;cl< z4N}>cHxGGrU|aZvMhrL5yw(05)CPw?iu`?8q+Ydzy3`Uy$e)Tud$6b!i+n7)1&cb6 zs6^r-dXJ)U2_iGm*o41jvidPxK8{2Z`A;LU32$t{<+WI}4VQaR{3MDGVbkOI;S>1b z2_y=zXbj#Mi_7Ei!<+HLiMU*iO*JUK4aIlh@|{S`LgFqYW=rVDI{uBmN-bD-eGK@l}X#M0^e6yAVHsco*VF5bs9( zMZ`}ceh%?x5!X!kxJv4{x=G_<#3P6gLVPgdxrj63lZW^a#D^k29PvU40L4clJ`C~E zh>t*g6yn8*k4Jn0;!(sW;Y-sIXM)77h{qAX9r4MCS4qlud9J>nkX^AT^5 zW^wU(h}R*$5OHcy3CVFa=*NLVPOT+k=`?)R^m>>@#Bam5q}!-O=#JI_*%rbA>PxU1|JX7;Nt~|k3q{=#Dg^Wcs1fd z8hrdt#AhLX7vi&}YlOHRoo+ zYOnC@?4`2ndznq~5au_Fhum9@X7!LWao5`bZ!^5@auA!h6?Br*452a7tRC{Zb}T=I zdY(F@PVzeK<<)Qji8EMyKk6R9_m}s3$lrMcy{oWbBfK^6$aW6E>wLGuJT^;f;KOf!@EKm=*ryla&k?@A0d9-w^ z@J7KahBqGG1b9*DT1*c)xtw<^yg29~_sH(5&|8M)8K|3s#9Y+Zqs~KvddTb8HFO>l zby&PmGNqR%(0jL>v(|8r=(j|@w-4T4c>ub6yJ z(~q%|?Z-g(cwG{Sr%|^Fm$x9X78|y~>w)(qyhG@H9NrUBnO;|b4P$V5EE413-3)Ic zylV8;z`G6J9pWCZn}xc&P&Zpr^|ouQ#N6Y(o#<^uf#!1LJd7W##^T42zaBF-V8vz> zw&2oMlPk`9hB4(B(*_Cmu(XE}Va9MRUzaIK z%dnXG$@>1v2-fQ{ibtA{+%M`x-&wIbX;&`JQ9Xf$37X^Wk4FJrkqi^h6H7Uw)84TU z5v^FfRD>O@SS-P%sfg^svQjL&h`c3up$Tj**O$bp**K*;?%MqbpO;Vkl-Vf>v2B0a zgnHJNK7~oOm~;w*86j##&0Gv-sKu26BF=3wr!+}6<6>Rob%JRU{%~Qf=DL^Tf+OBe zhhbj^d^NY+p(#fJy%g>;bge|>Avn!aGv%&Em*(=FT#vOIkhd8Jw`0^!0R_?RXcm@x zu)jiNEF)#75qYk^LL|c8Vi%CdRPg)zD?}`y={|zIRmjL#MA8eN}OC&KUzYXOE@mxF2ec_-d! zL_X!_{Tgk_LH#G~bh=IGGijHj^uAdk6v7wcKc zl%ob7X2x0>=FQP8DJH7XKfr{FI!RQcKHMMsBgJxGJcZm^KLwq3 zm~l!EN%1-1(sXweFNC)RecSM%hAR5TqE90feG{d5V;`4xSdvn%ux)P@uFR02-gghl zVUTn<6ZXN(O(N@NO!)zEy82{vBFFJ`!MWDbU%&* z<8YuxDl$kvj0TbwcRvB=W-0UOW^|(+e^7xxXu=0u(7a9f^8x-k7R`K%&rB2-#|QU; zX;<`X`40SGjns%}2Ys#`i+G?jbEr5I>Nde-XkUD;Ud~Tkq-jW^PVB?Gd!<#5KLrUI zhEwrwQ@_Fxw#Grs`w9fTDEV~AFsD~p3ga3Agb*AumdRqL5JYs%N!y1uoNkgnOQ#*w zs&U5v;?2y247i808mEq8*%a|C(GImmn zqugWcr=>&O%L0=F$m#lcCNQ&im=!tytac@Zq(j`S++%DctDHf(hcl!<6ZqaB6Zqa? zI6YeG%jS+DJN*cKP-jqOmCp_MnlY}@bj_D+1dp6#o-h+;BTyW_p13g^fr=KjtWWA!M{lSY+I9@RS&0Y!7O6M) z$PIe>6A$VG_XraYyfGiIH?ObhPdwGwOJEB}Yx(wG=V(3GN zG$ZmbCalJL>kxSi|7ATcY{0_Jh-{bExSd-OX+cC?=zRwfIgAr(B@I4}(&rF)29X!= zbDs5f0e^7@&#ly>2nBZze4;){r!#PM?& z{455a$3L9a=GDNXAzWii-Y~92aA*)BgHf7`p?QepW5N(bh9WW?vkMWqNeb>R48wb) z5gCF1G71Ze5gCuj1Vo~UOhV^$JVPh{ttgEnayufE@p2U|YBI@*IXF&zrXCRwrSlPK zz~BWaorint@XSICRx9Zr?#5p%!q4yN*Q|c5A~>=ekrG6vAX0=Ms|YSFMQKnI6k%I1 zlI~G_Z3!;U#Mc7WH~2W_C-JqXF?16mTkyrT7_|+vdk}dNkwf^4AhbQ90HekrG8SJ9 zLff;e@fS6S+=j><7}^_$NBGtd5Tz zirVomo%VEf9zY2@eX(H?d91pRMo|-Ezpu&S31pH9g-e9~`3e;=NAZ=J_zLyFHn7x` z&YU`SH=?gbOGK#|exVj$IE?Tad}D@W7k{H&4tJmgZz9LGRc}JU7RivOxM?UrGkXV( zMQkD(Z04O(e$I5waJ$UsS9D}CMZZGA=)a<_*oLBV6sg9@WEC#qLHg%i{oP-Y{vl7=<;N3?sZ7|-=#kHF-txW_gS8>(B)eU->8uMhBU_h&ZnVIVT z`VxayR&~qJ)l&Sc#($IlqWJG$-5CE({@aNE{#ADTmyut_e;Eb-)c9{;82;aj{5D~b zgF%czw4$d%w8tJR>1~&!xZXDH#>oIBgOaThnqer)(}ogPw4ns4?uwB;3$DqrTQP?$ zSF5V$FqMmWT$;ITpWEH;y<)bo|L0ux251{}*>i>Cnhs5_M%#90fs4+ar9q7XMg)f3&S?@!Y4h z03my}JT9tTx>}KE7FI~566f%pa(st%6RZNZjlUNMr{Ew97MLWkTdG=mNE@x>2jS0^V=vxOQF$Bc7KUu#CF zMyd|^YbNF$3+klQHI!QbW*Ozy^t*s!nzr|AOOd?~wDk_zBX162m+1vkC3>(OZ*p!-q^!W3oY+3Rvm39M;Pt6^rwwnG z<4yXP)Tp5=fd0~A_DH8k^bjUhV-mYJvtx6B!9Kp;ivQ^1Kemc8z&*m1(g=Ew88z)V z$gfmL@STJ)m;@Z)&T#rqdfIXicct#osP53Hh34sUp|ho33e^d{A;h(X@7qyGvZ+8J zDTj%j%<9xEcYY38^z}Y#e`zVH|($(iWO3muY=aB0EM)jD<0W#Qp|UdYx{A`yDPig6j$%JJK#h z-ccbm*%8qEe{%7kTJe@1uk$}#{Et@5*8?4nx|*w|aQ=vW(Ul=ES&lfRRQ;|oF$dpm zLfjD-H1G753#rg8Jj#`1SKDh2Vc3c?SA1(DwPW*FdEA30TIXnJiTi~hwUMvcmT$sG z!T2Aw%1Ol2sXnoOnL3h-W@-`a*GIL12Lox6#)q1u@u5lER9Y_|5T?Ah8E zIa?}7)RY8M0VKVw{chK!1d>FTD>$XS|88)-$Hg8pE9>;=$TLQVIWBT^jdY+o8X3@r!^CZMK(OIYY|kX}F+ciXN(@D_q?;fYHA_ zX}|uO`dcfCTol>CbFJFPsTFlD>PSLaa5H|=tgCaBV(nL7XISD&UTA`uSFNz|ZC2z4 zWDB-NgOWkRAT!1l_p)#XvIX5o^IXg`>C-Ac?H7YF?JGi8x^c>;3{ve86y=jj8x%dAqz$srb__iufW4_sIL}ZQH(6+=4WsyEIY!xI#@O3& znPXPqvX1jwn;0@*WAmZ`@ArV~oA!Gvrshi!T-@E}>!xw7j_#?Cf{yNirW|y1$4ay* z2Q!N4;|dIc4~%^UNH?$;;tchMvY0Dk*9gPVA$PR6tdJFFtS<{l$lkK&{VZ}aq}aP6 z?t{e=??Wnt0JvxC%f<Z*{up4AQQ+(F_O#Y>$H;vbewuA)`AOY<98>d)MY5v$aBC z9%yB?z%G7n8;#08wS9IsZA9TRbcfKr8ZWJre(B%cEQt!_8@aHsLajBQ0mUOpTG;n4eSghqV9&Y+p>Q zF`TEwwp_>AQ!dPt1O9zE{+`R!YwMk5*V*?8gg!pgj&dELTt}Es%S)?usH(NOXlu`^ zaO1kEy?*>*mYH{#CkezU7#ZUL( z(Na9xfp1sh+xC`G)KiGnA~p?I)Lrv6V^G-=c_+T#EH;T&yiA~t8Loum978{Ixt4;G2(DYbnmdu!E$Vt zN{6M`O2i)e|JZx;=&0^1PyF+$N~J0gLI{Bc$l{f%3YALitH3NJAwVpNZ78uC5Qu%p zh{YhmD@lOZ%Pa=WRz7i-aZ*mYr#qeedeVmM>v5)&oXMQ@X)oy>caA47l6M^xV<^b(8urI(qC%rlBi=qx~pM^ai_5#=oVK0KcSeg#l%SEWlUMVFx zkyh9#*hgTuqv5IwxjZTT8thAwlBFqNuEzGj_QLkT&VlXklrONm!4AUCgWUr*i+Xy& z?k-&DAA7bs-m78n#hS-N2`XL)TMwOhIo9k^imwBEh)C;* z$iq>o0bvBhLxcv0WC{BO>@@6?(#gW!Bmt4V9d-xo!y>O2*$jIN>{GA{VBZJ3AMF0H z2S~ci9*M|k*kfRi7m+A?qU!8Tx}(KsmXm!z#!ZeP{Y6s@Wz1S}g;1}}>js7r?&}mo z2EJC4&gg^33ZoCPoJry76_8NJ*YiHC%%yM}+v)(N;%NhZPH3FI-as~6Jglon-4ZN)1i=RMTZ(5_AiD~|HTdCLyuJ?C zHsUvrN*(v>TXAt4j_g2p3W>BKa7fn7mDA{c27@mkcn&=-WAH`vxPtGVMZfvDvH;yw z`!u*1uP#H!a`a!1pRdF(cHu{@7?#4@M^N03#aGco<=VQRN6$-mUFF&Wz&a1=ytv{+ zH&tj1=Hk@=mUhFlK?L*AzX$sD#4maw*c}~3cs(E4zW8}>{ICzM72`K0xOhK~3`C#| zuMfrBHo6bPu;B=dMR6EE8iBP?ltIs9HKy#vKRkxd?Z&zY))ivPAbhSI|F8$9l63PBY&Oi0qj+Z=-q9M# z*N)?b6Zk|LpF4@*2FX+1YQ(cdhda=57##<(bTeMtf?KE1uK>^9hySj4@oNJhc=1Rq z9gU7LpfubI6YzD=#>;V%tz1Mt*oSo$M2~WN+55CXyaFt zY!7&Bgbc?%DT0%%P7N^iWIS-1O*g-7ZN#?^Nft=V$U+1c-~x4TT7_G?_;I002S}EF zLgM{fK3vEFmx@T@6yw|E#B#1jq32}P7Os^-0BeSXC-TUuKNH{`Dt(bjJZ8P@s2J^b z_HI!7Nrc@xh-nmO8!6Sc(1yO-5j?lcT_zCOs zXv2L2DfI0y z7xX7tU_wQ-z>ZpA=j#724gEokbZ7MYGScsohF*$N2IJjC8kFH-fs_KI`)uCp^I&bM^+}++mvSY1Luny z`E{@OjbG~?Xh^$_=c7aC{-E=MLRF2P6-^tAPHo!}{>=hq@nJ;Yc!kZ_|eDBB4%=g^Q%=fGo5d+UhVde|I zK*Y8SGoRwXo^_=_tYn; zKK((`eAc}PIo2+r^I55P6LOea;99lxT(BU797_o~*83B3ESHdD<$pNA=Wr*TkD#sP z5^}5>q4V7)Gw@7H4%1 z{>LX!v;&h`(8L504@6r`N)r=Dv`EZo&BcXg{DxIHUP$7%ZeHlOCbiol!h?-*91fwe8HX!ycphT)h%G_v5yTo0 zTZ-5U#8x4;2C=n>twU@hVvmZlbd22NZ9+f()jn))Lri1gIQ5;*Aa(($K`|H$ z$2^F6#mR}~Am&Fb7qI|h-4F{RmWNmm#Cjsu3$gBq6(N?7SYO0?Bi0A8V#Ji{92Q}5EV*L>tfLJMFBM}>o*cimdBQ^oCiHJRb z*d)X%5VsIJrlQ}25j!AN&&0XVecN)L{YOJ+bXe*zw0KYC2Pb1WJSqEX}QAof8Tr(2W#=o=~8epl1_?#nCf_Va@n`g=+pZ zVZCm~_2vdNZN+Qy9(YZY$a;;M+e-U+p&6$tl-$*X$MiFg-Tn+e(2Um@fDra2)N3F! zt;^soJx{Ev8P8YXd17P)$jorH;AXotw<18?9v8Hf_bFf#aY=SSj!Vjy(3|9}T2RdV zc3e;r8Xrkn@IHA1?yo0qrNTQpiALJ5{ z7w02IpZtoc!ey2JGLv;$Q(KcY%Vc`@kYURf2`jX}Awx5AUyn;;1!|$xj1#{7=c@2I zQjgNeJ%#HNaeWeU(-?FLsfkEU!XP#kBGYmrEVcwP!I~zH0-7uev`bLN2lRvlzLeFg zq~cddDh}Zlqs=&4r586Nz`DHt2rxW3f!dP@OhD}e2&~6n^~GPEK8LC?y2pkpy zKwyk~>v~9jC65q^i;l{VRge+h{q{fi;IXyV_c2$0~- zE}0yGZV0eNCTZRr3KQmQL4B5^w+X*(l(Kqi==u8Lw-ZFxvVh|`30W6LG?OA5-#nDk zI2j>2%<{Q+Xg<@R1IS^O%BibgXCItti#!jn7|Yqxti;- zd?jXbvU*}>5jt2A-xte!BiRRMi!nhNlKie;OL%^-_dmN4r?%rKo3VKdww?k>8mIbU zc7JRhfUTwYiPq@^^of3Nk`Hr)$!~6h4nIBr7sw-e5D89J*EMNi9Tycfk9Ozg-3O-~ zpg~CJWcd|ku2b~$A4B-Z4lOAft#lFhYVzPsoy-||oz#Aa$FX2M7E~ZXH+3*39uQ+_ zu6#O#)9!EW3t=A@KUcoVm%6_z>#ajWxhDJ|gdez{H&-w#-2AQ`k||5*-I{4K?>Kr_ z=I`1N*1Aj1eA4{2L-Jj7HQ7_{Vl)5i=oQTS`OFnG;YJ8I%w9HokZA;c|3zJ*&#`ra z%OxlY2~24|-=^$>nITyNRZQbB2{1)QOrEh`8%ny4ocUezjCSbGy@~a3N8q<1{MKD~ zp%6keq55|Uqf2-Ht_WcTMKam2hJCSnOI5||Av{5J*!1$?P}}e-=ZZ$vn-pBkYe_$X zx5zzaT8ZcBA$;qM9C?$@y+?(ZO^~(V&QG6TMOm%KrR-vay82Wk=0LGU&MRaHv!pH$ z{_eQWvzSV%VbDcqwaB;bB~YASEp;Cw;+XUn6iPjJK*Zy{j`BD0a8Hlf%ZXduC6mvpG~5zZzuYoj5I1o<|E zM2)5s56$^PIUw4eQF;ko6#lNo%aYkON7=ljLXkd4DpV4VCF+{tl$?5btpAE5O#5ky zy!4Cf-14qIeFRVlE4#Y@{CGUuGru4&IJlr5BLH!3tMiP>k(~!hkaxiuZ zb+A<_jvP<&)@;)wri;8AmmmE=%e2j6CzmE^5mm~gAt`-K22dE>!awYlo^g`N90Z@r z#5pEUXbRzz;(mzxWMSoClu~3y<-E?Tme={D%{TjZ~S#N zVrFykXdrjd;uQ=dk&dOIxSK0*i1;9nsx8 z8#s&>sqQoaXAro6z&QjiBXCjr69pLD%||gw_>`PlBqIC)dXme<%?_-@a?&qb5lDfh zN%W8dR}pwz5DmtIflH!gM4$5=h;l{1i((%FRIKuM%KiuFiv|(ML!gH+d6tvOL)Wwj zfqcA0H@mm6{TCIBvl_e~0focJz@gw(w_yk<945@q5wiCQhXp1hFh%*U2?VAIEhjKt z5R-sLqcpR1Oux($0sp{kIe^~Lj!4w-Cx#M;NJpeVp)`vpj1q_<;2D(PKLBT-;G&TvS3mUi&fqr0g!#E{Ss!ixd zYt%4a0+zr;7>|_aZ^HJ6Zb2)&dE!ptLkf%e`F&&9IB&de58V3q-;619Lj25|; zJabfhhWTW73z%hJ$J94fDOO0Kx6Na5qx2vkrdG`O@sRAG)-#=LSgnd{ zrZFOF;lmAL<)C;7iuWV0Qb52PN0FL~+;K=TH^O7$I0^_!ZxCr0D*P9BNg%T(g&`#A z3dQ$H63?e|M7jdA$9Zn{xL{IeTJPpDlvJU_m2|kC#6b%OjT@6h#zKZIDO<3g&&Vc^ zaqQ;}H)Cl9mfjsW)P{ufd|d;^h>|3^8o5o(L1~BXxaE9gj+n7vR!FReCv?Z*H{VLA z123O6HpH-kmte(WkvOw+aU_5h-NgcTV~0C)IMQXJM`YIaJY?$e;u2&YL8bwjrO2#6 zW)(7PkXeh&I%GB?^Qb&pW-Bt(D^MYe-?brg2$>dSP9sB++Y88?Lq^MsGFL>3IYU2i z0lu^lnMKGfMrIi@%aK`+%t~Z-;l);DQpg-Zrd5WVuWQvg~LFRsB1|n02 z%urBvmQ)78k#5Dzv}hs-Qw zW{Q4qhT+3%WcDKS7&5z&8H7wBG7-@w$aEDr-H%KqGDoHNZYGImoAIUN$echXjm$}8 zHXySJnMP!`Bh!J*VPp;>vl*E!$eco^0Ga!c>4!{zWCkEpip)r4Mk6x@neoU>KxQH` z4;T+G1465Psb0z(#9F{`XCI9X=J>;yv$skGAE zGF!#H&QxB?ZW&?kn7<|l z`SU;->;Gv`#`*wICURGmv=xQr+(R_JjcM4A2b4)!XzL2fY=Dmf!X}%sQxM*_blz#< z-{QO{W$NFlz&n;GFmS0!%LMPnWWiG$mm;4KIs{inV%icvxyk=}r`B9Z)HM z_o&i(Sp-CphvO(SwLc>z@0S=a#NB-JfJsTM2P_Gq>1!3NMU4v2vSczrB041{nTl6s zS5JwA%sWl+VmRuwPJCwt{$>qo*W$=J{FFzkX22}-ftA?W6I+XLBp-j%8?}A#Qy!Wn zQf1E_D&O4z;%KjJ$CAx>n^c_pL=xe({&-tSI7=47mm?VovH3I(v<&WR!RT95Hj_8c zJEx&&!4ur4Y8)7EK9Q81z&Jh&Z{F0VrDUv%ZFvf&j!&`2ZW2GY@bewok;;ZcFj0fb zlZ+@UaB`ItjYC#0AXC z0#+gEqlx))*-FgbZ?S|Dzl8zj4isy3QZch7EDCEDnIQU6%e*~!pq?XE2?yS|QPo(8oC~s5Ya`5s>VWe zIif^ERwB9!QPo(89znDn(W{6)j_8w!o=5Z&qECpCKLA8MhfWrz+%)J9Y_7NTK9$09lc(HNqm z5S@(Z6hvzfO^C)qv=&j-Scq05Is;Kk(AOb43(=W~&Xz;xz-mPIBKjDjyAh2bItbB1 zM9UG~gQ#jOM28^i${eMRB03l0afoU`-<0D514Yw_o} z5#565DMSkpy${iTi1tTx0HURcjzn}cqGJ#pkLUzMCnEX)qLUESc5-hYL$nIf!H6D^ z8KI%`>U4XVo@H*96uY=Y5ML){!ot@pM6W|yDKWdn+|-uu)Wk0_Kd?8K>{Z%}Rm1X(3}=)fIx9mr>(ujvx^{wM(h% z-h|_EsdPJT5Z-#}pf{OHM~{m2E8Z#RvPU_<;%qFCUU;6B!s_>{Df`YPaWJ@*d~`y5 z(&Wz54U>BcGv7<>Y@q6Us|oUtz;`IWMmjFxSF)aHTa@YK&`TL4qOzWHSAg_Eta9$s zAQgE8Ldkp(Wz`;1R;{rl*9vfmOj_m8UNd&XlsB@e+{5^R_LbZI2}uzYQ}C0jGVJxh zOwJ+In&xqEI|iTMNjh~Fqb4O-s?QC^IkSAgVlNz@sPd9`S`!eUt*#9DRHz`z>E=}k zyLb{3kK5HU7ktdy@pys8Q`d{ez=i=5lggGOc8)-a&a2ny02yZ~+CNwr8 zyd8}l2p>lHAl7b1;}$fYLbw3o`_R}Ajs4L$0F9++9Er7~5gvo^cr;Excp}0NAUp|S zLxMVn9aY#d7*h^l?Hp;!aAqxftP|}c9&H46KgsdziBA@x2lb=+NLzEBZp-;N4+`ay z_s0GyRB9sId@q%nRG_K70DD!PiHc-YXKJT9Qw9DjEx^M#J4cj2vh~O=LG}@38<1U! ztkwc#*C4wVS#7hJeH7W9cx@}P+mPLX>^@}MkUfNK3%+(5*)zyqK=vH6myx}Q>=k6s zB0C@11;{Q$b`i3RkzI!Da%9&dyAs)5$hIPzLiPxyvOZ*Uko6;*i);YdAhO+%%|o^avOSUQg=}|Zi;&e?fNXDMwasF-1ljwM9f)ih zUK@(6jqEUFha($Cb}X_Zkc}Zb3falXPC>Q?*#xrFkgY{_I|kUM$h@#YDqZ5f!_h;TEqxypf1Z+$e@T`CDGJ&jgi~+P zn4d$@WzhLNbQM))NKD3|8WhbGC4{PzT580P5r13-A4^AB7tiXR9r!^De!?yQOi`xr z2d+j&DAfOF8EKiQ+5ExA515mT;b(FDgv-*Q~M4NX2UDZnUC-nJ&Zq{0g?8C8&a^k0j=Unj~xZ|%Up zC^eBu42L8}m!{R9RK_CweIL{?)2NiKe<4|s;CNhu<-L1RSB|><5HU1kdpF>b`|yYv z(=A%?qlnNv|{Ap?(=DM?05Uv1_j;r z<-ynEef!w@H2U`4-`U5O(I1D=H%$B3axlljr$?u66nsXZu?D`xyZhMsw2!S%Pg37Z z_-1R>+iI;kF>tLOslLL_KDNFnd=7j=q<5sR627CNx8@lq89zE&ex9vL(;6Yz1F-lWs%@Q(z)|2 z5al|H^ew<)3`jSlNOa&?+v3smg~g>sS{I{ujumn9qn(0L4&jxwbgWB|@~!E5>#$U^ zc+6AWhlDb{S(f6{T)k&>Co7m#rGy2?u)B$0)MJSUOH|i_xymWbSW-vA!dtXygt~|p z88A92g$ev3b0f@YSaSuq^eAibE6Q5@3jde?MR$w4iJOQtxv7F0Ta3I|z5WQS1|cU{ zD`2haY~yaN0}FqwN5wkblPmt`q$Q2?tEJMfR0RD{Tyds!g0S*B#T%^;#}zlyuNI|W z$BLn_Mo7x#!*Ip#nU;K9eZ^j?MQo|N`1l@J?~|6Kskc6!w4_+wu4&2L3jb-OQ=^ei zjmd^FS6jx=LVL)+J*_An6aMhr+3BHZ1272AWRReuHaa9Ic#8m@#Fv2+7k{qxBQ8Je?(Qz+^&eKq2ng;DGQ&X5#TAt zh^bw)$7zBjFkw`}9Zgu%bkJj0$Hj6K5;T#bJmQt6ah_@NsI^6xX>Xak4`d>ZC@{L{Fjd(OfjE3t5CXJSkDOLyOUb|ICdU!hc?k26xbC^BdIo3mCm0#g)=3 z;+upoiBVekrW+!iOJbIVS@YnnNA41MAAz?4-lg!afOi$VYv5grUohZh|D#9Iwo^2I zz1!f`Kq7lKLcQ3kA+5qPO}RtRr7y6-_{ z6qOFVL*U&HZza4(;T;FB>+X6_z?+8mB)l8o-2`tVKD8a*4zwLc+d+6Y!@C9EQ}7nx zQ}@B!58nRp4uH25-jVQ*M%x&)jfZyvyc6Ml0NzP*(A=Vzcnsbucn2f*VFV8#cMi@I zn`qaqM*zYc_eVP=$VQWhMG8$Ld>x(Y^zW7+voN{>*NtVPYe!dv=Nb<+^7q!jUMnpF zh<%W?-hI6&{J->sBxkjH?p7pLkZws#^rSLyx z&SDBXw5ShHsf0NGz_~Uj_1zjQFIC{Bc}i|yg2W?8G;}srNURcVUV<-)b@y(pkZ2Q; z-b4!?JdMN|BwU@|#6={oAaNG6=rdClb75y=g~T!>mLtJ&Uit3E3W=*C-b)tcL+3@j zH^KYY{gUt?;YGqHt%nnSX+4|>NZ;W^P#P;Fx-?cuaK7?8r;K1w;x34Pn2E$}E#O`Kp&Ba)l6$n%bNgg7wjP(R z3JLmeCp%rZM5EM6B|19SZDMn0SA|4@X#dieOZ30fRUtuSZA@oZg~Y_pro;5Uwp#e4 z2{8sEap2GOzCs@lD109OS5)eS>h7x4J5MI?`$%WM+xyb}P6wFhvXzwjqw0^x2dlP_ z)71wvfawmrvk&zQ`p$xW(f8Sm=8|A!w|vqVsD==vjd$21CWiWIK`j|Q_2f?9i|OT< zz90WkDXiCY5(OJjd!NLlX$u9096JZ!+#!8G8S^?Me%sPXlgJTI-jE3ao>0|mb1rkZ z3gu{iUJ+#567*2~UN-?w*RIoKnM5~X8Ui#f?eJ|DJ21N*l5;R$S?*PeV!sr^OUe*t zqFA!TrYgtiu*veoG<|YMJt@+6FnN5Kk#Dnd-Z z5Rp_s?IHEhnAlHfVxQM1S1=KEyQmmH)5st&>}8z09(jF{$2>O4aw(zb-6ZF2s07GN zs@NMP*HmC?rqZ}M2_%>uuflPL5_HZl$?|4sFSvZY98V+_cvOLTGlzm4Di0Ejrj7iv zjm@MsaeN+>W=4#H>GaxF^2nYl!Sc9lh~qPK9jC9w_n-%&N{Lgo|0yLC=>ZtZ$qartE0g zxtmN+QZrEIuZv&vN#8|Y{l7QJVuZywE3cEh`jLYyMp%rqlx^~1$g6)O$STx0>z?G* z|NTLhsn&6ggQP&+*G@>xuNWnkW3!sC3I80zKQ~EUkwI38*8XfGdCdKc`Mhj@TBP?- zAI+7SdL5WVqlHG}5E>n6${tcW&#jP6(NRodvL%K^%*!?TIa(f?pbzsCc1UbpLT}rA z{yADO!+S9n!2Hl0FesDFl|;TJ+>B!KRor{{s)esM;a4I2>h5Rh`gC1i|1A|?&5tJW zZ42KvspGq^*+zzy`@H72=q7D77-$n(NvbjF3qvwj*f*uHZ^{K{{aU9M;yK7VJAGXo z5=!~?kW_p~rBxDtVM$kazXd zgp>h}-M?Q9;fqZIF?SBKrZjEl9=jYdw|FKtX^zw#y@XDOxtdo`+dEem z6FIs9&02a*HEGQ%GVhq{H0YgMT~=M!Z<*KTGuQQ+<_dO5?%%9r^G+VCncOjvdOddu znJb%5n%Cw!X5`H~j^3wvZT=?odCeV~Co+G{CsR7A<_a&chSBvv8uVFs(9>J!dY|SU zd1?X;#1V)Lnw7j8J|-XL%F!by!ZpFcyWWf)lE*afmceon#Ce0McU&Vj_PbF8aBXZ3BZ%D4vhqQ*_-z&LlX>wK4s`OnWe?*Am z2Onp0^#@%YdltDEN7urOJG5cCE(5YVBqr6xz%|A^JY5u<`<=$q$ceN5g~c!RLWQE| z!;GA>5s{spJUyaRosFCpg2V=EB|bs%b4JrmLTTuh11DD+oPDAQR=yA~2`)#<5Tp-7 zH{Nu5s*^bPDbqXhz0IDkNsZ59<1En;+8_i=XS%AI;~@)y!+T zT2gULWnkuT0h6D@TcWZ}js%QXso-P@ud>$6wV7o@I;9(&!b1AML$T0!r+1%F>5!0i zhU*DpZr=Q;d2MdVj8AupGqcQu*t%9kzUG#6nNON4moK-OpV=qEJ zAe)KM=9qAA2fSnjKOrN}Wy#cH(Nyq+9=VRj0?9g5#3I}uw?yWHwBN-Sz9 zx6H&}CPFd1cM_AxO4@;c;+rWcen||KAmX3sqI2OHx13Rcl0t2cp<&?fK#JjpjTFJ$ zdP&t12_-yT>j6`sOz72;efk)JgAmlgoutG&fV!hm`|K2wR$5Cxu#vU%{= z!@mUnN8oROe<}Pc;9mv*8u-`3zYhM5@IMOwPWZRNzYTt^VDh)Ye@KYO{?qWEf&T*h z=it8#|3&z(z<(D0`S345{zCW{!M_;(W$-VDe?9yw;U__>757S z;4g;11pfQs9|(UL{6pcl;U5P7aQI1*91GIDNR{-Df`2mnQ{b>*Ve=q!x!M_{+2>gTKFND7we$$xGfqw}6`{A#I|EQ3r z=xecf#D84$4g6{NPr|V!oMB<4)_nle-Qr7@Na?t6#ND7-v@s``1`{@0RB?= zN5VfE{xR^6hkpY66XAaV{z;w6Y%Ct}SHV9Rl)&xMNO8qQpj>BA+hqpVBe)X5T?n=! zm_qOfg6#-iMeuR3U1sn+f|n3<+hqnl2zn9pAxI*eU$}6=0D|2RRJqPz4+MK6sB)db zBFxN3urGqW5$q%FGJ{&57#xTokC>ry$^?fY$cA@g5ey?Z0>K!9qY%_~nZX(a6VjqO zSc{!9v~j5d_N-+=E~gK?lJh2=2#!sKkFz zT32u!f=RGf=J$>xcmlyR*ejEYoxx2AHX^tk!43ouBX|(O%?NHm@Dzdt2;PTaKLqle`rRlYZw6-<)c)CM;m zItjH%%#i4Si9VsV?16A0uHo!aG|a`*YbqdFtg_d}h#tj6XjcnZaZiZ6Hxi0HdBW12mY9g8 zx8bNdZX%+IpmO2O$^q^A0P75>!OL=A7-&Pk$nC(7S(bd#GNxV=aXfUy;A=Y0_y(Py zAyJ>z#Jl9=Vgk?!OCzLrmlg9_^s-OrWuGv7j3v1K2%H8%7+Y7|DFJZQiE_w*-HBFL zX0x@6%;tNAj-R|D;!a;DiF5(Z($`uf?$*o8;4DXaJ)D(N0?^)y&+v>pBHcfotM`!E zBpT>=;3(1bEPXS-xMwd1aJ?H^gK+YY?jel}9W4QHir_He))!81IO@4MC2&~kGEg|T zt$K{M4#Q`L!x<}M(yk={&L}u68l3{C22KLbG&r?zrsK(}qDJ-g87i7ucMqXsGnGyR zPNDSrbU2%Pa50LD4xAxyTsd5a-XQr-W}=VZrE+|To?)Xnhh3`xoGoxp!O3=x@vdeC*kg9F^z1R0)(GIC>YF{Y}mG0&9 zJyDttLS(ky2?KVf7CR0} zQ&gJ^Y!se0-gpwPGdXY&XGh{J`P&v==Tmca?UX7TIwZ`Tl$42=!e6AfP(tsW;&n~@i|an8GxCwo|)%sgit%jgm5wtDk1e1A7S5y2-0;rr!ya}Rb# zv2#C`R${3cd9%edkHIW@0l#HvNQM(-lBI5b!1yzENS>~%Z^Pe8xRJOMl6=$wlJ=Q% zV8X%uE}cVqiRORhbrP+Xv;dQ2?;O-5@sK47qO$9C--$0xL!s~V(|7u5g+BcymhceP z%w>liE$V4ub0yA>wjSpA(23=PwDLjrXw^9rM{Yj|rjLlf7^^}b+cJ)~@xi*jHklmb znvzVyNAt>8OG0v9 z(9aam5`1Mbp3cS70eoeiQ2QcF;ClqV1|it{R=~FkzBTZzg>RjZE#FJ+qx;89^2b5# zYgg;NA42Vmc;7?q>jod$eR+Q>wQsCK>PqdS`{(-*)V}svxJ~Wb|BE_#{=jA^1Su%xdJr!bNUi;g1S~B4fgMtg;bs+X4#t85_%HJismH1% zh&+Nw10qWiVU6S}MAjg(7GGP3r#E8oqmmPdY(-=nB0DfhYmSB-LPTqhB4-e}fXF#S zE+cXgkt>LtMPxoA3ov>iB8w1NjL0%XmLswrk(Jn@Jslz`L{ya}aut!s5qT1k^N3tR zD4nz(ka!?vNu%7hkQ-~B`zY@8>pjD+$m*Usj&>=Dgk@1L3 zKx85!4(COKn@OaGcGdmuH1}^nttbb`d8*2SPRdxck``z_h8w@R^5YT z*Z*EDyY3&IWf%JpEIZD4;GQhIy8)nB7nU8BOO1Mo0C^>MSa$tYy`+<6_Ync0?sv27 z7#)yhXOv4zA}ApMGzc+OE|neUbe7==dCUcXcv_L0@o}*12s$teaYwgg4yxw;S&~Yt zPXAewN_P9bC6!(QY!7TNY~P>TkcH8%ZQqepvcn%iQfU?8=~;Iqm0nrhMN+A-vmuME z#?y|1D5^cgZOEccneDlFfpB&b&FtDq1oi~%^!xT?vDNppPr)v@M^6@e^u1M;rdVh; zX{Eui4@il94&kSs$O)mDt_aCaP57}_Z2pgv_)pDv*usCRz{5>=lWiiEL2a48rsFE( zKGSrSqRRDXSSrC+jz)_KSIO-u#)&PM!0epHiQjL<7B?1?WL-BDFivE%?7Owyo*ITN zVSJxHr$%QJ=tu3vFCW9P-S|NSKNy5#<@n_ud@G7?Iob?#KVGQB3u<|WQUY!}I`!ZB z;Zzs#x1n6mgYgb+7jv6SB?nd0Bpr%tx=AKyFguE}o#^c@5>JStNM{#`smKsI(OwcG zM`9#^QYX5sbg}GpQmWv)tj)n0)Tg8( zsW%rbWAHvwticMGw&`N8G9mQdk6%{em&EUwY+;&(>um*ES85-tdtC9V>Ly#I*D;|SP0H7I;5)!b4$+SaX}v%aZoK zy>@ib>u^J0u@Xr!AddOpT{1yVSfDz--^vi!1lmavlH!M{C}lNCPK^KSVUS2w4GaIu zkin3b7!_EjnIU}C4Q4zz#%AmMn;flF)O(zo2Nf4Ch#r4X$Oq^RQ^( zlitSrn8xR}rBlS6t0y~?pPU6|Er`!1Ty9~C*K|eNrJX2i`nW?C9^$U_aZ9pDpX0Vi z8?ZKGW(8)p;K%x{AM^cY{6z)+qD6$Muf;{7`dTwyuE5I*kG`Wf%v{hr`bkj%YQbj} z;QOquhgT}_3S+t^+3%c-pEb)2HaAI6?ek>E>EhvS$PMci5+q5sAg;e2*LOtytVODH z(|l8ryR5$dj}`dG7IAO*baZccpR)FpsCiS-Ju1j?yLnoKJH)2RlS5JgI=KRqnTBEx z%A~%Tn$s(^^9p9mH>14*?JN*eTD!4bmNMIAzD#1LYxQU|mRDdo%`$CrizpSp9Ty$T zx0~@OJJh?ZNKZ(LG+#)GoV!C=zZhO%hSS9yWi@jBm^}FgC0DD%;BXha$#YpY2EsFU zehojEiv@;JxgSoYSduz7?^H+pop`#5;+F_>el)8I)}mk^=IlUU!oG`9y@ewSPE`jvLj(gIUMVV?QoXnxmdR$6 zO0AXvRdewF&A~s{;~@_ongfU1pDU0H?{?M9?UI>hB@)n0RZppaH>Nj0f2qJ&h69*p z>==#w3YT5L3?2t|r4aHhTK=BGuCxq!fM<=4v&AAE*5>R%pD6mcN)82;a!mXYh5+*| z^*HOn+0__Th*4%dd55HHQon`C7A959P$z{UnOK3-Yf-jNKob!#DMDF3PWM5=Y_9E? zxfy@G1z+orzaD_Em15=`wDJV!Np18o2IJWS_#!XMl1v37I17pU#pfhBmMfNEV%;Vj zZj^Cu+lu7GjFN-AAtLXYYc6$2Oi;^QcwppDx% zij`9Z%2@V{frm`*3M{r{shbRj1iZXST9{23-Vejg#$186wW2hh-%}jLynM8A7i`As ztb6K@*EQpMgC`NEkH-*m>~lpG_H&z2zXkRE@VWk|AAouqE@Q!N+dvvXnn6YubWZ9~ zm_nfkg+o!eS^+8IN`#P%+dl`doRz^LHtMOCoT^o+ng)~_Na1P1D;`u2#nUvf+@Z#j z>w|EIdRfm%&$*9#TIsLT_L|=B) zayuLTONDqK=FYv!8l4lu93xq&nm^B}hR<^*kTK4lN;Cb$!rK-2Ns~Aj33p5m5IJhb z(Fz>p%wEDnb$E#W3>|Xwun)>YqA$VEht)F)H{)Cd&b7#R=EY@TsmS+~b_O3A!bk!% z1ZDV)d_c-jQ-j(i)7~JNrwKDcm|Xgj-GuKPiu6ka6?t#w#$BqPPG-XMXZ}Gd5IUgHD`RC(hf9Llror z5O%3fR;lat(UBwm*uMh(b!ztM)a+|PZCrYb^BxYc2MurIAf6eCXNZ&$CTo(^ioY4H z6=UW?ksL%d_e(MEyY|W;Sg`|s< zv>z@`{tB}(d=MWarmjTXLwIHso-yORQ`$OnUWClhgo`1`kavVcF)tI69ttuqE*xp@ z!Tgqa-ww&zmJxFovw7Y1FTGj1wPr1q5U4f8!ktMcHga_gm(g=K6^)+sgckdB^;(`9((! z(M^)l-D{e6%qQP_hw=_d6lH?xi{EPkDEHURmAgJ~*Q<4XZ9Zv?hPe|n&cl_gXv|2S zlD)g$?K|4Ufj&R8MzZ_dnUcHJ>?lXco+9pgVL1w2S{-}C9iVQ8PkK)?Ge8+G9(hE{ zcwiNlhc^>VTq=6I{vkxetXYPFu0!#R{+dUB2>G|;Wg|9bA0b*w# z67Xv8ze`-Dec1bos}Li*Ew0i&9ko;8s}^VVo7~Il3*AOweTu*yxGklA~t`dKD4c|K|C-`0$haG({9G1@WJ#ko31Nd+_>}bm^uo?`(Va+-rn~ToF zT=ZfJ;u;Fwe>(eM$K1~Kw!UUS$~~yZ9FG8-`;M^>-QWt?7KT&Njwy~@*@FjmE303- z7|=3%=ms;SwdAm%L(-rLz`UJUO;J{p20V@H3sA6LlYx)pI$e6MUJn|4C~&iad1YA5 z#NcFHpMvYtrMZ|z9al{fG6a?d?;tTmTtrD2GW)^y&CD4#BEhm>%^ZH8$q>3dsrU46 zo%cs*rH3}&MJqkDLxl0kEBG+9Qvbp~kyh%*9a^dXBhpF_>8d8J^w7UIt<L|9!}%`5%H@n*V|1QoqYCAh~o+ zJ)WaDVGCBOdKFg@D?lkQSQN)fI*=x&RpZ)6Ze4U^gD<<^!gqx@o8GN)t1u7hqMXg@iE+NzFOT zK?7;POYkMlgs?{V)?&%J7b@$6`X}uHd`TmEsw*c|gpkKH2Vd%8BT{VZsHM7K9?Cop z!>D;OIL;C{kH9bzofY?HBswl5k%rD`ljF~!N5}A-(eVX1=io5hzStQlbJoa6bQX3p z5}jqjNOWkgR(6UKGd}$QMxui|j6}y}Bsu{&K{(xnk?4GAMxseBIm6(Pkr-A|;s-Jk zxw@QcI5Sjm^=?L@!=R7jsY#MfI-l_aZb9GvSU3QEM{EC-30U?3zPr?IZn$2$$g!8bG?D3x=P1+4_4%N5rF>_cUP=`U zziYZ2c4))I&G^g~JaxO{VSjvP0G=AHT@-ooiPHV>yA&sUSmZ08Uh}>U3SaoZ28A!Y zw?SctHbdNuU*FxP@YkkI;b;Zr-`lM4VdQDQLWw#bL=!O=S_ZZY>`-Bi&3JhWF7(IC z18`w+B@hAuZr@2OxKh#7bgGjzW0joFFDEw&M*Y{JgFC3aZDyU5Yn2 zWyg?Hg&ggBlE+MfR<+bKvSvO(OIqqf_>$In(d&4Tz6W>x3Zbgj^h8a*n5G3j!JuAgnL}1V>AN?Yxb5otT;Z4oxlDaSDU@9-{5I|S2iOro!o?(}tv*eSj`D)mJ z6!%e=g0GbB8cV6OG@cEXWZGw>#NFM-%pPl&nQ5Pgcs+(LLFFTeHz2+gl`9Zmh4>o8 z*J8suOxTFYkK&n~n6MRpw+)p$5Z{MkZHOBo;?szqLHq*Z=McY)_(jC8Abu9{`G_yT z(1nOELVPje%Mf3V__li z872%x+(vvD;=>USW9V2sGXk&1FpRkKWW=W+UW0f7@o9+HB0e4Qsn}4B_zcALyok?2 zd?wmP zPSR~i9}?w|^l7BeAbkPpb4XuC`XbU-kXA|m^a7+8BE1Od#YithTKW9xl}PVGx)te^ zNcyJ&wx*O8U=TG-Ux);*j zkuE|yA8D2JPxnE(7-^OCPY*Dehf|^em)jB0XD#zSFCb-i!2OxUd`PLAX$ebOh;gr1u~lMcP4n z2-5qJu0-0LQ@WPY$B{lEXIA>8bQmFFKHZ4)cBDIyK8*B1q&FkI1?f{r7a)C~Q0UYB zksg3_Dbgd69*y)Eq{kyY0qKcIKY;Wkq*Zx_jJR|a(u0vcfb_f%qQk9RCt@J>qp+D2 zVk&i;8|AgZJ|uZ3n~8!murCMXSD)r0qlja7r|Z(dl~HIu-A*-vvrD~ z(BbUWchlh_%4I5-T$$u>oK8C2S1a+=qpItYl$0QC!pA{`;~u0ZBM{hN2riHml*(q< z&SQ=qGB=UQ!Ez(0i3`%QncP|uzp?O}+r{;)QDPwylfxfS3!FrUg${brv?sJApO9m; zOtn?nbg#458}t0{t)XDf-&~)rJ6&{RBxyZp(>}Pwz)1eGz*7r1EY^6=mE^#Wnla77 zk18kU`ButAan`t!rr z7`b%4$tEleVPR6sOUaHPeS!oD5+}%!AVDID-|3kDPRG1~GzLYeg~mY61Ha{>eg*X+ z6UPxID#74u8uRcf9Nign8QV)-i5@tOIc+$(C}g3SNzwacR-BhQ~Qz-=|qcQ}s=Ydv?4@Lg-tmbxV1Xi!#GVKu z6Vk0?Zqv;5QQ^r@E-aChhV^A>u%})#i|@4Zj_q&C<_M#}Jf`Oy{_QeuUeyVz5jKTq zCT`AFNAw!LH5V`H*d{hev64dy2M3uW(1fde_7JX`(n4mii4`uC&Jlvoo|n=4Bnt^m z{a_i$St2~@sqHKq{G@qaEf}=5V9+*FFieE%$gfpDkaNA3TmnkyXn-%X!05hScpcyI zNL|%;l6ao}wsvp#X!mxHh39#bJJ3P$DuK%;kZ94Nv@2eXPyKn8kZ(W%BaZt}z>ew` zKF@M;J^d4h&}Tk=-;QT>o&27jzz94W6Pdm~TqH;F<#G5j52J&a#uH~GrX9le-MK_Y=(T=1gfAaQ zxAEw9OckE%yHrG~PTH+jNsRE5+)D4Rg(M%0iB@-ah@Ig&WS+SNfAyp$x(7-QHW9~P zxt|dN4?nX4pC+GwEuP;fkMN^?xPAz)x8Qdxk+%!pcA@mV-4l7_(ih?Re0;hX++05z zf#$Fj=3gI$*W-eby=`y=u77UogJ3d>tUS4g7SXQZUSsIT@h7;$c2UI^Qb|d7kUDGg zacs$ya$j?P>7ntH{ECD^%DGL@U@k%qmlhewWZn3YV}QH}V~d|9*t*?2*QUMFKs5hdCvD+fb2(2AR z?A6*Fw=hS5CkI1^V5lk2(Y~35+BdUMZ{YcR73uKTpYK|vL$q-PY&r&R*V&-8l6xeH!4?J^E{Zz6q*YtpgpBcD*}=g)yP2asXpIUZPUefuY7(kj@X#(L zJjC&kn+f^S5D7VD#;@s|hFsc}qcra%m^7pH`$h!{4LP<6;|xDGgmErKw*6id+4f@) zitG}p5q@ZusCg&WNs$qWG+bQ|&PU;5nMAWYYB`mfHZ06lePB~E+()W=XeZfp(xZjL z#62J69qvWyF{F0m)d*f4gj6|F*AS!+GZz=eiEAN?*(_tNG0Y<>T92#7T(qEO0cJ3p z$MdBLuX}LShZ#)k@qE$o^*kciOOIiQSh} zh-O+TH)aclp2le!mdA1WymWJ>KO>ft8qxPfoUsCdT?Afep;DSwafpS#qX$lUytUc;!}AxBL7jO+|B}%3G^I7 zNefcU311fJUFWPcrz;`UwO$Bar76k!rrMGJxZLw6>FjyX>_Z7rux{`a!P8d=?fE6J z?uRuHDP;!w$08L5`@-kPFnJV8CPTX@>+*a&Vn-&2~E%LSNZ7DLg6m9MNnFf z{d=%Kiv14u55fNZD6K@P+R__pOLZyKr8Hs zi_x|44e0D^kUtuS$KddI(J{DA#;JwkV<@dc>0mS;kV+h$aSfLE!#6BBk8(*Hu7_uZ z2ryb3rTajFM>(~62qn|iIfI1JD?W{av!Yk*Sqy8raF#f9RtkwDLItsSlw5+Pm`K6{ zk57tsScpMVlT{>?NDd%}E}`swYpmoeZr53Oc<4+)K>`W7sZ)`tmJ^ewkEOme2asnF zt15^)u%04OD8PYr&#DTIv#jIrG{WlW)D5-@V2y<3<~BXXg?4KqJO{K$nH?WgN%e2p z_d%6Z|5nZ5jS3ke8gMS-d`A!XRa?b!A`i)mQZqQRuo7;d~}IQ)NO7qgPxr42j`L=#;UBH$i`9 z)CY+|C)9=8Qun^1(B>eMc`O%hYN89~o2V37)CN`Okga|EV-bZG+j0zvDkKK0C^XN_ zYuGRsKO=H9U*>w9S8~oy2#u2`%5cFwNqh1NrnrZXd#VXz7-i564q?oGWlgg-goPo4vF%}`4xnVC>T)+}0?_=`@S$2m zhUz6!EMLZ>oX2-SND*ZW9-k1w-Z!U8yFFf(F=m2}Q?r(+ke)<7gCX-=Lwatfx9~st z_!an{+*2+s#8RhMzDTE6ofhUEY0v)`d+#15b$zCJe}2_X(KIa-r?NR#RZ|T#2Sq_Z z1gS<24U$a<8pH$0Nkt9<(wrNpf-25x7Y79tC7H@(t|WUUvy++ZzMI7AsIf7p$z-x) zb|<4|Gnd(9XU$GB>&(Q+dq3ZA7c}A_F>&90uWSF|YO1S$$M4~J?&rSm=WTa`ib(`Q z3c7q-H@L^OV19-d=R1c7_1<06k#@bU!!G30nhsiom-D!^Ef26~7t=TMyc4acWnM&n zAa}7s-0u~JHHoP*=t);o2=Qror<8NDD=XYs4OJPNIxbO6U-tCi@i@r6iPJO9iU()sL8*VhnP%WW!r*3`Ea9nwA z3zG#$tVFAK`k;|BL*rdfPq7dK{-6y2akO26kGDl~yVbZuk}6$IPDp?1pZ~3-w%3*{{ia&0#EYhq1(6 zQAS5g2bNivX{}Q-qKe5?q2SczTnYsnR&yy7tSsrQD|d0t{*Ly74IefXyqKZlu(jK$ z5NkSbaYcoq3*{`2JGA7zL&2%t-o2%hW*K<+bOeQ#*_YF4kuNg?3KoG8FW6ijGh)>FPwTP9cV8XPvcY9akM;gaYr0 zmiG;Ei{3|}w$|7f)HxtrK-)sv)aU&kURc8G%V=B9#Z|Q3&p$oDbF2B@S}r_H+ZJBj zK-)&zTz&uIe%eZ{5-*&f?KEwtXnTsbGqj!Knlv?`DPc|!nFCm^WAu% zlGm$v?i$*9@=7n-x^tl~&-LJ9l(s(nQ$M~}&4od<4W=zdTMaK>$KSYQs%I`jGfl}MS@_^;L*`zlzl1+L7EexziW0M?meQjR6w8Sl+*wlUfXXgDs@F9y;omIhCoXErKEMb8xocS=P)M{x=^aXj zS5qD|jl)-5{PVi5N_SVuzv;uyh^QYrojUQ|oDbh{kJKs*R&R*AJj^AdN$KO3vp>fuA9CH^S26U5Qs1 z&=(HOXRjDg++zEPDt)PDVl}o+#1$RMS$e)z_v{PmneLvUc%FKOT1CqQ(r#w7Yo`3- zNe=6`aYhSstLN}YUewp*-sbGuy4KQFr*10cIC{2M>cxzy)x>@;8Iz^6WPN)3E8MEs z)3s#M(Mn;4R(0!v=(-=qbtu8tf~<9SE@KLuU6>weNU^#c!x9G1YFF(cF!O%K%0+6I z^W4YVOJo)N}2SQUm#zxu~*I_jMn8d$V^B21l0& zirNq_MO@uPRFf9TLA7PdCd9S&9QDl%kbmX@_NYnIA{tb3&GJKeR+rJB+H0HvH}FGQ zYmQ@&>(=z9XL$NkxZC{NN<`pHPK&7o!1dB;X)FtE|gtl zXQS8c*ihNSs8Nh^{!u|^{MO|=Vt|Ms@kI$~mD8P~;tUlhEf)@y0=x6}6K7a5B_+Jq z(J#&yg+YlzEWPbGLfZAT+0|Pz8%V(&xVxlxD( zkXkUQVJW0h!?G9UBJQe{t&b{|EJ*a^Z6{hwbPqom#SbKdx|`+8oHx{R&L2Q% zQsgcUFQxoJF0Qc0)s&@}Cvw(+#J*iQT*2~dDAy@^66$UzIv+KfXwwY_0&l;Sh|9C`cn*gjAb`kD7EYsQv%BAsC<%XuY^L}li(hWQjNMM5&;PXji(s! z6#1v=(ahlK3{Xrshy3ly+LH=T@*-A<-pr3(aQ9SoA6l~p-?Tpik&yyx?`?rpB{vDCb>-f$BqoImOlfLJ}&`{5+ek#cE^n21!&);dr zn4+N`y7w{-_542L&x=Tt&c2^9rie7@a_hi;K5WLA??ppB)c5_2F}1z6#<@g8J+CD9 z2J3K?9{29XnCaUt(@@VgywezSza!G5MWpG?{$bX|-V5C#DYe%)A5!V~V{x3@7Y-+x&|Q+}n0ru-b`CqImcru+%YwUD~1 zYdKCeTy~X+rt%MFWB8GGD4uA+vl8L*k48RI?h;|!+&%D8vVOWC-=`!OWc}pfae+mp zYC=eOk*_9fF>E}vnOmI~hz?Fa$miKGWF)w_W_!YxE53zq8g}q&YH@m)u;~-NIV=N(Jm*Kz6QMgD&B50GC?el7Wj$!{UQf&51Dn>n$IGyBOOAg@5^IQbLgPm@1I zUIEn^^5@8(B)^FK9po32zmxo34am;8g|SCHRIejoV^`NQP17K7#UzAyP64lOIcdDESHGZy-N{GvmnLN`4yo>Eu)7XOf>meir%L$k&sfO&=Jkwb4r$4tO0FZ81>*?D!WrJ{lnJZN*#;WKGhIxN>9+-bA~ zA=tq%0#^?b)9>Hb@^91pd<;L|!}mw={UZ#Y$Z)@OA2aH2WDNt?@$5?LEV;DQhxDS0 z4=+Z{`D9>!o^?^;#UU*97Fezuskpx4_V}ss=acyJ(foX`MTV0XQoEeS)zq);WJe$i zsdI+IC>igy)j^k!8_In!L~WVfd#@fe_M^Vq0E+UV9sRsIJPJlqoNI{9!JX9Z;QTg5 zBpES`^TVm#&e&SUdib}KWkJGK3={4)e|_u&EDL_^X7`9mj2P{xiSwAhnXkJ3iE)7# zalWbqbEFk#W4<)AhhL52S4x!J@t@V7*BRB>dri-hN=v)yat1!YzpN&^(M-bSh%#a` z^#_dG)~evv@3Sjdw3S&}A+wh9zb!qNLRP=$I;ek9U;d>B1N)I3Y}#98ZCV)Xhce5R zoJI(P6?a$sF|n<7aA+GdhFS1GL(HoZyQ5-^`5Sy<6rY%Hy^^(GzqyV_HgP0phPR_0 z;*0%xWB{WE^2H$>xzYCVH{H`1Hi=;}+4$XA)4$xsf8KAb>C?)*-h(x*rR;rJ)5klp zrcYkUnm*}R)0#f5e^A!+FH5ZHZ*9H-x#HLa!0lT=T3Vohsf5^LHoWq<1^ z(|=o9%8WHFKY=u-$8dTNUmC@ip5af$ot|%Xz1GrXyqZ3Jx)Xi+WGDLc>8t3|C*OlU z?WgC-Nt_gY`V$0VP|qX3z?xOPxz-KN4ODM2LjaYcDl#tJgOH|VKi;e+EA5XPdxh)F z8^Q8@QAv05<_>mq z7fb7j<&qk2f)s>_)fl7l05M#?M-;8VW zUdlI>Y%1mapnNkqi1^?uh~GE)d~+xxlycr+DCmxHOuCix(>n6a^D{5!o9F9ExP0?s z1If9ZpF{k1Tc-4m;yW3;gTyvQ45sxtGTH^hQ4bZGI~5U zH&JslV!D)h11VZi35S%lZJ#e^6u$bUZgYtrv9}?U|a5KSVf++;I5KQf$Tgyu-m_#tz){~%#zYF*~y{1dWabFhq z%bK6yYWgsb!Wkm7ENXgA^HFoBhUff}q7YqQ`=t^U{Y~{5w6#ON554@Q4vJLUSnQJ zxM1)SF<`$M{;H>d8VW3A;}T=4h@Vg`mcjw5ck_l&i*v@35^9%PYAof3eOA+{%3FzC znPxh~#&Sm~>28b#3uD9*8A`(qRE?l|9MzrJP{Byv5M(#kRy@s9#cWkBW~*|OG@|l- zn(8rB@1bfGDu!kz8iK0ryIR3atKGF`W%Z`ZMod)^sx=dbn7c*QctYNeX{uGgtKEiP zHHoUy)Y~V{u=v3KE%;Z^`DN{Lk4|e*GEza@xSe$F#dvP9nl`3cWb;RS` zS6ZAesd6U0HyEhJ*@J<@t^@=9;=Fo?`EJFBIWRCud^oGObH0}I=?+!Siczd6fq{DO zuO0hHz`)ns*oaTMtjY-jo6*AhzT?^WidPk`Yqnk@+uRDFp>+{T* zRCNtO?gEYfyQ^hrerdG)cQ?A?I#->6#uXu}82+b#|Fqj0o4zF-iqp&JL)~eM>?rk3 zw?Rnp7jYXzYME6M0_U`NC*KLwCP%$r@FJb-P3A6sgkg z5EAz2(4^F2M<=_Jlo-fM2|1*(e1-YNr5(~J-b;Cwnx{$SO&O7LTr$<6RJI7P>yMO? z(q!*KDr_>MiVA{mHuo#4Oz>{5Wh%mUH%zsnWXY12prG2MUgd*3ELj9}gyKY;;9XoY zWj#U~Yc$2i(RizQ6r`tbJVOS@(_{7kkg1Z2!SM8 zT_XdDXm!1jn(f6yqm^*Xk13) z5~GDLRH}GCjSpDD*u0j;ht2qF;|3ZxT9=%?a`)X&;{kr@Lb%2gG@hpM6pc^Oc!tJv zG@j%y7twSFjf-i#lg7JfTuS4;G(Kp%Mx)$%_tBW4@i2|z_CHNyp2o8@JwfA>EPmWf zbd^msI_7y(IgMRt4Aa<^#tIrMY3xR06^+->*ptRyEbMMQJJiIyF-l_}OIMq#X&gl3 zU>ajI)|h^|G0xuWX&g)A1ZNa11%b05{^hMSPNQ);jVT&u(l~?0Sv20pC+hjj*&Qwr zi|5ifhsN7!OjroFc_$my0c0DENgAa!=*{NgY}`&`Esbd!$I!TkmQl1w!E}WA^UZ{C zzMDY`;Tj*Iv6aP-(zu4kbu_MI{w5j^(Rh%?9KZ0z{l{pGF#lQ_`_ove?>FAaFUHe& z6OA|1IGM&NG~PnvR2KVv{7S*X^U5RS*Ks$Ydk8Iab@SzfRuQ`2QI6dV6;3FMa@ht# zl0n>*Rw-T6kpSi~gogj4D%CDiP2%RBxj?hUHcL+iZEhcoQ5o<$khK3$AL;H}Z z8m>6287ih+=xM8%YleoNZ~)`uR*u&T4aqRX!Hl6Ugu+(i3sn&6<{-x^Le~&dF|?P} zLp4J~J&ep8>O;uQP(hKQ!GvOF;#cNo=vGyJ$C>~kG{H*1BD~EWXC-*e(9m>3DMB*| z%^)<3&~1e3&E+yQlDUE_=b9`lbi1(v^g=a5Lpun0-kO`Fq2Wf5`&=!bOLrp39dQN` z?o~c}jL;*5TG0#*t)X(=WdJjD(9EntUPbj7BKU=_rP9Hep@D>kICtw(BoLZxE)$_! z2)P+*ki}7Fdo`NSUZeZUaYdnyR&VvG8FYqUFSZ=#ujP8Aq^5>yx0ow<6WQRe=URL5 zz3%ef)NzCuc#X+?+c*kRt_2jNR-13HSnlWoNPnZ-Z!y!q-*||oh4wnyg_vbbaih+g z%5=&Xh9YBGA^c`cz@B}%O}pdovccANvqR&&WV(C-_?6@_r7qqxz(uypzd7| zmR_7**5yrhvk`UlWK`2peL48mt-G07T@?4J#*U`=e1z|>SMp#u0#g{hPa;{XdwJMy=jufAk4lMT zuPYPDdZ{5wiDb7AN+dTtZB+mIvjk5NJjt9=oDhh^Q)Wf{K#wSFe4apYLZyWYK^4I@ z)>t`^(5ZV#4iF{iL(q>}J;^}?gH0WvM=GvMpz!;8g0Tb>EDo1UV8aLk*E*_xnl)k$ zQuLZhFoU2JCuC+DKRIY%&RptUoDjG;A=pV`2MdJ~E0I(dIgEwFNo?;B%>`o!yrt3+ z`b?xx6RK-mN+i_>^HL&NCTHnVBKcaUM6&FvMDn%qT%Aa&4`!fRN#_k^A&H?8gv>LN#=k6~ zdbue*Q@%aQNh>aYLt@Xae4~PYsiazZ&(57t>aG0xmMFxXdzy$&+_|lZrxpjiwTm}2 z%iQF8!(CpvuBsDHCgnb~#a8&R`?=_TE-p8SBcfrsivgR-XV1Tb% zIRr)_S=z1h5r?-ZN!JRm7);5XEduVyzpmrg`g!38u?IzR+iZ!pvh@#1Agr+*Tx+c7 z5NeD~Nx0ojJDR(aZ6z9^Ov5_U2)kTKBiyE|)jRSRv)F)|St1T~vFR{N$Jg){amcUj z&rmtv=tFj=rFBn#ILJZtP2K~!xdR>_Iy2!*e;8RnLQhF-e6jc*VAyJw z>qRIy*+X(D;b&NA}}hCay@ zNQ5lxAJdm%V&;nw*pKCI7H1VpT*n`~`I}G(aRU#IW6G_RO=HG%#GO7egQ2rHSWo}i z%xqxFT>jl0Gr<-D5FcX>^F|Li!e33~uly5m;<#R|Ysn%UAl3d4y*2tgUi2G{HrXc(3DMZFy=I1MW~beDo^d8afdz^wt-x9v^`Nw- z-DZzEyPFsE;>Ot?`hwn93opngL}nm$yx`fef?t%=Y2PU~2*U6OH^wS7ctpS7PGv2X z?h_@U`b0_SK9TCD+1JXnJGAhZb^PTnM@fy_HkZ~u?)K|+U_X!0*?qT#Ciay2MebSf z0ZwajO-w&*Wu5&cr?s!C!OH#)r?r1nnklg8-6$?u-N@p1cUn8|5>H<%Pd`msu#(h* z?vcu4A+77gAf~jMw&+oG>FE8Mu5dPM-9Er+O|FUQL6>{K?stWxuX(4n2`1t=e}hq6 zelYHXDK7tb6~#pmR@ytQC9mlHn(jn#NsqEvXv7htxKvK;ptvZwO+P|faF*6v7x28X z^8MPs3fy~Rzz4T~we{9VU!$GhniQH_E_Yo0+ZxN!Y#^zb$TJq6X_c0bgw|3G34vX2 z35)QK^zL|^tryEtt!>rVe}nn!)>`CqzU z{n&l}V>zxo#HoRtYNmgJ{;GoQ=D(}dHPUdZp9lPW2cH|p=X6XxC>=!0-8`o5BssjJ z+vC0KtX6J2a(`0Vi?tEEuidNlQ-SDmvzl4qncf;R?@RNZrV#O6Y2HdaZ@tX%7CSdJ z*GRC_JjeUvv|M6P>pJ~{{0Y7>kM26Ji$8xZy13TZ1V2~7ZktK)Zc3U8&+M?2i@6K_ zjjTcC3%Z+CBU$A>KkYt0tu_SeLEt{IphBUA#(;8R4TB-%eTSh5Wtj0L{-9I}X>Q%B3?AG2X*Ox)P}%B35uWBC5q-;|dVH z=-1u#VUhP;l!&}s`Vpx%N0-Q8B95vNQJvIbdXce2CYXL)zSC;UB_>0!TOHSWI#TtH zn@MB_QB^~3v&OHH*=FK8q=Cp>OHm`Y+mbTwKJ%%L>>#p@NRr4fBE35dT77{a;@ULW z>~j#1@<%~Hz1&;#RXkM+B99uuBeKp>AY8pb!V^J2)g@#v;z9*^szgf2o+=2kjuZqG zaaFv?6f@BzNP#SZTG(a@XYdP{dj{>Sli-tYEye$1DXi zOFu#1z096x3G%Cfsr()bcubOWNyT@v!r?ac!_026emE<`^+8jeo7ZAcCWF_eu;UdoY zR6QbaTS&FQnW2UrlshzLw8()n22u9mzu)OlnnXH+&aU`JwC&Vp?9_|w2)f8rnMGE1 z4cf)#Ir6!lw({a;W+{J6FssQ-`Qn1^6*6sdbzYU9RBTd2r&!Lf|La|6_J=Gn5zKY< zhz2|i$9vEL58a+y(%5;tvWkJFLy7!+&4d|4i~%KMUJ#3Lbsf%v$$GcTjKs! zSF*%?zN3yETjgVL{iBs51e`M0cGN-6z}X*tXj|h;A53OM)9(*jmR{ov72jTTE3t ziv$t=-lb*e{JGqlH@It753dcEzOP+%kwbcg@s{E-i{IQC_1<+x9oavD@xCQl4dZ=R zvh9@BT3%p*))rHu{kn!K=l!12gmS8=z5c0sPk0xDDRvEXr zPPQE%u!XKe?$=r9H;*pDxayq%PzM>!pX@bz(#R7`KTBc;)3qbaCZVKBNrX}Wm5fye z68tOJRstd)K+ZGfgQC82LEjFAmT$lQYjCs{jdKomo=27cME~k*iZ(r7ov>P-k5}#A zQXHF7)avg`4?*jRxIoQRiUpLQ(oKpgO^O6ni!8*gF0)v-dXWXXqQ2;F$GXL&Mk`5z znnkvB6w7SsD7x3AoF$Yn8v)G-0b-hKfjhpjj1(KY<7;u#@omcJ-TBzqN6z{a_kEpL z*Q4|5dUW1i?!3L+c}KYOj&SFl?#?^?s`GYp=k0c7e6Fj~ld-v9ISmKijedWok^LCsy*s>MqCKX8u=#|5f_je`lHE+h*sw*^K|h zAJd=LU!gx{=i~dIi+aL(1+I67o$I(g8379^clNi%3@n|?f72h|f8T$iZ|YCJo8Y_6 z>`Ac4`}ld(rI}X}yyBmKDZ5F#ClF8AQ?mC`8cY6j|B1gge-|ltd|P!(Z_|I%|F-kb zcBj9+!=At9wQlM2WsBVmbee@%stsO{4Ws1heYKU0WT5Uslefv%gr#*X4P0@#nVt!H zt~NT#pEUDr1#&g~NrG>0cMjpDhNNbpFJ-+laWyI}cOv)Mw&!Y;j(CR9d^R0*QkuQy z)!fg66+XKZ&ZYsQ#avI!2f)pAOVCZ1p$llX-L`KNeFFO2f7vZicwkEOl8imrx69w@ z78s1MH+$JFaH6HIk6dLHC?n{aX8tk3KX!gQT2Hi+H1p*IU-s9af`v*IvH)`HUPiNC z<41$Xf3t~fV3vLMj#ipKL;9%W{FKJOf6IPk#uM+HHGU-c(d)6wh}kT zZ8Sb(nWH`|x{++>(sO$^W6!<5&rvCxPAY$t%u30l+(BFTd>x;cN2pU)?pGZ_yNNeQ z6lCW;5}mkmzwkE|7o1x$w)%6Du`B75pV)9G#+h#splwes{OCyct~Gv9 zN5<#l#(7qlR)uA(tF4UH`do5DQ&@*Duta7o5%y&`(UiT=>V;`J2Di_EcID z{R6k}y9iB+V?AoMzOwMF^X==#-J=#d-Er4`W4-!j{cT>I(q6j3E%Ykg#h=w!7GoPt zfg!>ZiK{!gdk3(RptpQMYFk#m!W!80s;~co2@L0m?@H>I<4c6y3JdW_K zgr^anPB=w)CgB-`XAzd9x}NZC)QW3E1L3)Z=McW#*}U9mYU{Ae#lkKZ3%gb+;q82* zmT#o5XqA$7ty1J`8g?V??e}Pv5`gK*B=^zjv#Y zx81O@_NJpztCa9Oe(XI?wI-JgPM1Alo85*>2B%u6wIIwechhAFHtgiC;oNnlyQ!@J zej+rR@!-dsoY$ptDCItPUtw~UT4lr}m6=kjjXIcm*!HGW$>b`fg?)dA$(0t^)Cp3j z@!X^iCozSE3T(9aFDB)PNvWlmO|DWJ;rl+oPxBzsiI{h)JoW z;f<-`?{0FHayyy=(bTbz#N;X!SXnVR2C3xoaRwR5W;C)2Ku7VT9<^rC|FfcYKyZjcYAA@>-DURqfA=$g$VVk zUP5*i{a5pgwS0CXzt}*}&HU3Y?r^KwvnP1q6w#;n_h%S$j^~fFsh|>BtLrGZK)xHs_z{m^_u@hHJ=?s&%yj6&Oga@WGD(A?igpy1%5J( zEz^mncwh!yXEEkB%IoPhn{Oz$ZQw_9d43N6{&rh+wO0RXBERw*#4*17h}i7o7Joe&vT5jgclPRA<^)1#M$D*C1T%5$k(TsGCUZ0)E7PV`a zkErX(KG7Y2LY;ZNs=zm0{s7*dOEzEf`0{q#`i_3z$!$o0!g-7jFgC*g}#7@ zAYrw_ijYN*KMMHKZe}(curN~($6fZkI_9~{UZyQ+!SAey7c3Ls|Iu304~2M$cp35X zD-{ZrA5sw?zusBXPq?gzkB|FcMZ6H~_}t5i_@Vc8QpERmJlLd>VB_1bu%?fXa*Fu* zMu>_x@zWM2XjVRA@`U)Km*olZO$PDB51MC1eEns4g0McrsT^43k2iDvI}0e1PI=ezlh3 z!{&bT&l@Oiq_~-)Jel{KEwg|ZDWP6ELGd)jQxu<~c*fLl#glw}k+p{_E~a=V#k=_W zQi}Ide30S_id*^dK8hLs@-W3L#iuFedFd?AKSA+HYb00HMZ$#;&zDgwr`UyJm||DH zUO};vwr&)w%*eFZlVUH5-6{5^*n?t}VjqhA_*FH@|SkKp8e?TF$#kmycP`uqDc|oP`riW zRGu#_M8!!IM|1HL^l)0mUn>E07=j4BS~e}Z_CA(csI{mHSW}{*bW(|i0$oM9KEy5k z?7>4DDylK5uB4D)iP4fnTa04SwAniCUi1YZ)h6!h5Z5bUzNjjL7y4DY-tJ=K*B~ufKtf8-SLGLRNyA-1TV8I6ztkb1}b-GlrKD3Lr{l8ah zutV=#u+B8|I2{G+borG9>uw*iHP|6vupY{x2_2pcZSP&M&eXqqYp}=f>(m-drO)0S z+_|(*{7cPEtYCe__4QUFte1XOsoIia6#)-9_rjc21JhEVJmxZGmnWuwi&C}roowe) zwFg!HZ+JPKREpHh4&Hm}HV2u`?y$gBCG_3HOCMV*$oxMfyj1ySp^?x+AHLrQV$#9lDYo{mV}5XyuY2S7-}6c66u~*@xDQp=J-EQG||ku%kyx&vony zcC_>hp_Lu>4)4m2R=qytxN|Dmhi)V^zC$M!x{@6o4j9>q9X-2=NpcSVL%|wN{C&XR zYcW^c==C!4gUTA$QGF{O9brzwU5-$gNWnF&sCP{(>W^}C5=Z5*k#*AeaYhcw95E-= z#6*tgoL=uJ*G)1btW?6xv0L?rZsX8)W6071Vhf4gP3#_G%ZM!@ww%~1V)qk!fY@qc zYl%HfYzwgs#5NM!jM%oZ{lpFs6C!t<*a>2%iJc<$6tOeJ&JjCFY!R_Lh%F{|C$YPT zEhTm@u?LB*Ahwm*K4KYShlyp0Jxwf6>@2Y-h&@T{abhaNK`cb9j959bF2usbx)Q4( z){R&tu_|KM5bH^-7qRZd`V#9wEJ~~ov3|s=i47t)m{`o524mMDsebHwVq=L7B{qTB z4Mr7?jU#p|v1!Dn6H5`BNo)qOS;TH5R!?lUl>%c8#O4y4L+o~931asV+evH(v2Db9 z6B|Y>No=^u|6{ep(!|CP+e2&=u_MGL5^EyXLhKl^M~Jl&dz9E3Vq&DMB({mzAz}xK z<&2;bdx+R$#3ID5CFYnav4O;f5WA7scw#pZyP4QzVpE9SLToCrI${B_qr@f=8%=Dl zJ#gW=LWBhHKD)fs#6*nNt9zGpw!9OyQglj>W<0>ljefBD>-=6_3hYpSbXQGB+Y0in(F+`f)@$F*hQPxgjaUCFX`o43UN_m>ZGK z%#C4=wvl`f=Ee~s6D@DGdg3u6kC?jiT{#<(9Fh0sY(&O)sIelG>CD-P1VoNvt@J!+ z!^5inwT@=lUK8=zT6E>Vy#sptE?S*G*LtO8YBO((dArrHg|~*#AOevhym5*!4eUb?P-w6jNTMRNp6Tw}!E(lsj8Nt<+oaig9@geY_OZIBkAge#@jhi%Yg;|*EI{3 zu*+vsK7;aElsibOe73V{Z=ifG<#Q;%-4$wOCNKTYrPlMqoVUE>Jlo0ElJ(G#FT|Ii zJXK`Mk5Ml0%5}0X7k0PKOwr4K@22zRLCF$xH0673m}$^zz-!QU{OpFMv`8A3`b1+% zqf{d&<;$s(pKEJ&lmk_8QX+CV;>s(+98|LOd1y1+6GrJgp5V9&G0oNmTU3zgzECR; zzZ@?e1Al)DQ|p-O%grjHsq)xt%zS;}P=Z6vd^N#WuRf!OtH!G1czA+`9+%M@eDPOe zJ&D~~cttkIBAPZ?n<1+-1x8QGs>!tn$K>ri&mi$iWz!)ll}G#KMYG9gRSIi28?v3w zu&;|5*zOa&Ji_8SZ%}jFC~i~j?9%h}oT4*ynPrXDtk=M1KIx|ICpB&NP(OpEVCgjhVQ9)(;E$Oo-1coFb-<^kg4)90XlFpGjX%0La z@~-QXlr>IPqXb06ytKGyN;h_P>i6V(JRPC;M0$%xa&>Db5lcF&TC{$)@EI+zb$rHO z+n!Es4jgy7T>MOpWbredLMmQsw110rM>9m6w9-S?hnALZ@6;Y*B`HbOe7#;zTVAO$ zN-dT056Usg7jT>Dov^F5H|s&IQfXMAcf6VB5xRT);U+2&-JDC#{VtP&)Ig&?Su8H+9l#=>&RW zKxxSNrSfu^;k)m-Wm7<_mQDRCR9E6@IPR9Z-Ic2(TH~N<^#rf`!Q5;mD!Cln zzU+se|9rdaM9@S^Re(Kg9L2`n)+a(|dDWd|dmY;svMj_hokgec$JdP<-~}~M)@9$o zr^oSv2bLWtSvJ3`Ze*2SZWI5pg(Cs~v5q56w6@Tzj$VN|0*NxMQD;HacB*TsPSbS^ zT|H8LA7i~`Yj4JS*H-`DH2UnaKvh-^=?y*SpLY+thKUL7Ut3~aOFS`RWyt89#H4cY6+s;z@`lw-*bB|Cxa4P-}f zQmT+!$xb6XootHiOtLe`&LVpo*?O|Gjj)|>9G`$gU*2iR>Y=2g&Bh zt|$8t*~iF6$X-jfKiL6f2a+8^_C~Vf$=*cvX0nsXP9b{>*{Njf9DU*_*-2zaligd| zn`C4pG`or4wDA4FB(dLjd_{v6{k(3n0sn64IdJTilHB%MW1aUuX^)f@NcJue%?Nfx4 z!|!Ys6RI>Fy<&BtL+POw7ipaTy|@G#dpjv}o^_Q;DrH+YoU-jquVs3=lMr4O){b>) zxru-skF`qYKE9(zad-t~r=X zFvsloErhs_!1#AWh(O&A}*wBOL}=YC)Sn_K_H5ps4qT{uhcC(MmO zqvh{lwpfT=NR<2szS5J)-3d7f^M7+(j;_^w&TXlRvc4cOtb7ujp5o99^CvHkq}X5x z;ot4yl~KGRQQrKLg5yz+t+7_QuejvsD{@qDE}(Bq{;akR*YX$rdBw@N-X6kNB%p9Q z=wqeIn&;kl8R@@kVrszD?ewapmug|Ef{6$9xXX^kWm2i@He`r0r{8-e}3O6y@|d`x8E&LS18-JbFA(|zTL*am-SFQWP58mVK%UZg%s|la1VuL z6qZm}PGJ>=`zbs?VKs%d6dtA^AH@w6Hd5Hk7u2S9KZOJQ`ELH=IE51wPE$BV;VH90 zE1aWnlENasa0i9O6z-&O7lox1?xpY`g%uRG^2hrqWGEb_pw`AuQ^->|OW_F$Pf~cC zf|d>_gea8pg>njAD1<3=rBFek8-+>=RTQqF(33(h3f(F6rO<;yltLd0{U}sZ7(`(( zg&2hzLDGaBuoln>D=`_C@!>{&G7)8OiX4Z1oVhxlF zk5Fi(@F;~f{A3+JSxI3Ng+mk$QpoZ5>nS`$;V}vk3fJ+Tl|6`tol6b|in>Vtsy}b7-W&5kd}qy5w}AukYZq z+xTXZZw}+Lt}n^QYx(#dzBlyI7=Wjh^P3oODm5K<-Ase1%3KjYZdzGPR=R^H5f`Lr9EB^35CrL=<~sI$J(VU znPrT{HfJ2MQBDd-GyC@G{tE5G^P{m{2iT6K&4R1&L1{e zwtKT`Y+by$!N z;y+i-&ix$L_nSL%kd}ZJwoj$CO>I&;U(X_30Lr>h}@-m9`K62Im_A zzT-jZfHJmKY2YlO8788UwN!nIde5|RbyflV9nmOmxtmaE;e-k-?Lm2P#sgwaCbq5G%#=7&q)Zh4 z7VxSdxINU2GF7-e#?p9xTN3g*-VRJiZZMtS$oz3Wh$8a&wd_+=FPYc|S|!kSbhu)P zBBGTfed66c4dmpUUd*9V+m7_Tm)mxv-U2{ zU(LQjv<@b%6r+Zs^E7BJQAE-uib!!>NkuiCbc*y$(lbcU>gYy@M$7sVj*h zA}@6&ihRnaHaC-=OnM4wwXmF8vUw>HMbx%KLw$%=1|J$pzWojiQx8@-*E^6*NxVIn zsloPMc%~X+%4*U@O4D<^8e#g4ygJn;;A;U5og<}Yrb&(7ZNyA+OssK%)A&?H8fmDWt_#=(>~S;o$V8-x`8z#Xc))K zw^FGlebZ@3(QPITGiaDax7&=0Ts519kyJIXT4>uGy4_BLq+$0_xsy50!?VE|csBH= zayWCgGpCk0Y37V!j;~@oV>X`i=F?>&^P0FIKfPnLKSDz*m5Z-aeuf zikRQar53#!Eem-`QJf1ZUQ)oOxWdOvC67Msq&w@_IgeIZKr~x7(jf`jS{PDi%bxBK#LkG}dT+02>*Ynr(;!JW;_OEAwpB^_2z zNryGf<8CLI8fih!Kete43063e;m|Yu$$SoJ9joJBH8FHu z3*){)VRxf*+h!*6UYoDa|4+XWX6%XmCQ6U)5)aB%p@~|%q%juk*Oy$o6JbQ+CXM5nK@)` zC!>*Y9~l=xWww#&O=cLGBpDY$WopTk+WLHQ6rb$mZT_2MWF8^YO6E~AYsjo4vy#jv zGKa_3nQO`PCo_P|Kr%zf+(@R>vnex~%oH-WkeO-|_BVQuN6Abg zGuj%;XBL=DW7*x88yAjUWesayy`Ntn?t{->hgAY&_+H zjl-vDKSldf96rP0a~wIzu|>4IV59v`+V7&h6l{EJ1>Y(K8%GXvEX&WHrajM*v$Q`! z`;+|iaqDILY$@1icfm$`nD(x;S8$;l?WJI&y(i!5MY{_&+I#S=DBmgt8$TVyw+8dA z7{_X8zm6lWdahuj-31%RZs2Dl_@N6nj<{f>J;mXfw9lY@7Kd-+a6QLn(>{`?8u;m4 zj?Cfk?X-(Jcppc0a>12g+Esr^(%zdR!@01X3$&&G55CQiFxqkRhPx6nS7BQ9@! z<0$QuXulL}EVu5c9{TRvlXwqnQ=4+a`FLQWyqZbWc-GBgXXV$05lVbSw$WDQx9{ET zyOS=>+!{7cjt)men_XvA&dUX98Qg({5a)HLiT7|0F4$TBT1>)KvWx z6ywkC1#1p5D|ZN+I2by6NAOU>Y787Z!?IZ{JL7WCRKImT^$w=xTfcoirDV!wQYZAfKblOcSHOwR znUqGa^Y{DJR>PMrYV^wJPs-~N{7R#)RGHd1hK+uV37uZz{DDQL@|6hrP6(iA;<-^=TS9I*xmD!uC-(r~UQKQ-FFZ_c3%L#CHj@ITq$vNWsspI5M zkULH86uGC!ogsIQ+(~ka$lXD1F`vGZ++Dn}lt=C*_n>*w=C+dCM=ryu!{oC3;AwJs za%agsLGDR%k2|mnav@HYkt-+Hg-?gcb>)o;e$$OyCAlhc*O2Q;t{1uPJkpnM_aGM~ z*N0p`a@D*rh}>XuF>*EJuH%%PZ?7jemfTQs6Ug1b4@Qt1XR6iQG;-6)rO3@BH-p?P za<`GICpVkiNKQ47n@esEx!W=1?LKllIkkh_Hcs^>H;i18Q^Ps6om?%sG`TV4O50X$ zBDp4BXyMDp$UQ=?mE5D`){t9AZY8-*4HqpAt6tB zXQ!sQX4BN8gp(8l+XC!Rei86nk2uLnqvFPz5G^^CFkGcfYeHZI>GDz@Jw?z>lL5l< z1x^4c!vSqun~mewMX0Q3(#`w_9K)FGW(*{<7vb-|%U^lGN5%-E_; za`TphceB}@J)}p}*m2>3GI=Zc-&n9j;^v-5s z{Uh|bmNWh7Hh^HDH4D4tMuPEIc)a(&rK4Hc!oa$X_nbt}(d>0Wd*JstPgM4^;2HMM zHxtnondhh&RL3BPDkwbDt5+Z=s>U^S#-I7F8)j)Y#?nn4vIT9sy);xh^91Dhaf#6D z>^_q30K@+fwBEFkD*@&L#{KNO`$M)wZ+-9DO4`*{(jTg}@|d6aWu!ItyO6$ATd5>1 z1#Xo!DoXbx-HUX0(tWR}t)x}t8g$t&I_+vJXrvHdT1(|QlB%V=Ff>vCFG(Rx3v&UCJIEv*mJx`kF({cLsB&sNvRR+#hm-=mLh z>-+YxZSB;@w)M(BwymA|*!~w+{cP<*Ynaxqv{umCjn+z9t7yH3)}FNXqP07%eQE7M zYn0YLwDzO5npRi+Y>m-cL+f?4%Cw}^$F|k=v27he>o{89yN_+_Z0lqD{RUdE>SHU@ z@78U!4x=?mtGd|^H{b8?)$+ZPK)!Vpt?FR=zU^zj->H3VYp3?L-@mGTZR`8CuWg+~ z>u6flyVi3lRX3OBD{i2c{B@%XiQY~09-_;LE+M*{=qjT36McZ_YNBh2K1_5A(G5g5 z65Y(TySR2g(E~(x6FpA!1kuw(o#jsS4AFB$PZC{3^bVp<)*8Kw=u)Eh5`B>93Zh$y z?jxEZdYEXI=+i{=M9&g+hSJf;i8d33XozST(Q=|)Ox7ChO0n9tB77hv?tMC zM7tC1OSA{kDA7Jd`w^`sI*90CqA{X1M6V+n=i2LujwL#j=merS5FNp_eO4$<3*CWzigbSKdrM7I%5675ZN7}4QGw-c=; znkG7i=pLRO#j{6b8Q zKPxOu>HQ{**l8LHCB;5kP^X4~J)&N;kP-W$j?9&CitWq(P`f!e(!75U)^Si#v7%q^ z6&bgnI^r4iUV`mD(eV|0Dgse0V2~KaYmL!Sw#Zz$bUhnF9p+k*Y9n}*$uX?6634~o zMX$$Ec}0P`n9?OH_}=bN6{VU~#l56fFvC}-ge*1ls}SW?)<9%NUsm*>rXRg^mQvBG zVwOeh6#}4Cx=I**&Z<`m$dxjLr$}rN>sFH-LUXGdpk1Qa$kmTJY?;*L28Ip%dW=TFxGEed>$tOsR%=K{86R4@u=v)g%Xz985AsvWDb!B;zEnCpnhnP?8f+gq$2favaH9Nlqg< zon(sSOp-H5&LVjmsu3h-lT=LJV9lnJb4cE9@%fbdNUAx)4wBnQ4kOu{WYYCY*iN#R zWSZm{l6y#wB6)=5MC+kYE0xMIl8=yVCHW}HH6+)OTuE{h$wMR$lFX4@Px2v>kCBX! zyq08tk^@K%BsqlSjU>mDyouz^Bqx)cLh=@pQ?cS>KpOT5lXOX=ObtiEhD#y)ykP1#!b(>nfiH@jToZ(`(; z>~h~D4^bzTFwcwDeywSEjEMp*4Xj)mZr~G=Lx)5pImu%1ERfmu4<#r z{Eb$X1b^e*u;qIuyECVW`v<3q`-c|B*C7M#LwZmnO-8Eg|5Tkd85!$7(OL9KxX$3s zK~9DDnFOC{=EVdr`X}jEBvo?#qw^>7b?wpCc`)rtFj|>qJD>%5nA-3?VU2IfXBhHX z?rDUh*|*n-yFI-tZ$M9R`Fs^yj6V0d=SKR^t6YBy|M}QD#$NUPGJhFbqV>xB^#`_= z>iudtt#E*hKL16XF$VRyetum)NR;6(pcGPOevfi+{-Y@e3z5kDA5ad?Us(A zHT#W;S0)2$ts5uI12%MuvZp#cU@K43dl6-KP`3E}`kC%KZ2e64Jx!ToE0sM#*^}&h zoJvh?s0p#JjIwgdem}>a8mGK|hhxva5!8&M%(0b1(t{0b4eTvLhXiJ$qaD>@jofDRVrf zvNar8N99U3Y%*=v^n=#VbYH2TX<38~*K(vkm7N@W_Ki2kp6NFenoQXg%5I^|@svIr zu(#ycqqSmR6I}wjxW*0tFMDqu9_4x73;*8HNE!(tMnb@d&F>5I!n|5w*o-jSNC*(1 zBm@M;Y!<7;4n`~n35~?2Vc!?CrfH7s_9VDHC$ZD3iR~+G;->A@o?J=WoHVhWG)GOH z1UJqX?Bfu=-+ezCkXUT&*r(_FuKwdo7NePW-uHR#=U#rx6h{IFE4PA&SdQn5(LdfyiPXBdz>w;!#wu$GAx zwRKPX(NZgFD<4*}{b=3OezcP9N6W%zI=1L3140dudQ9>#X)|(F6@>JtR80t3ad38Q zkyF58fl3af53pq5G`S814hpz1l1qq0*WYrrnBVK7n&@Go{-%oUZvD;Q85`C*QI&sI zeg}{y(q*fsKMerB88SHv;>lK+8OVz)1woA#hqu8w2OTIxBDrfw|%v7+@>-31QU* z7K3G1U=;#O5nz_pj6f3t3277uE+asQ;4>=qe?iQNm>Ttg>b|Dv>A)Ux8UpF!^B$nd zdxrSD2f8BA4FR%#x(M-yKJS5^2y{oFhj0V}eG%w~z#}TeF$5IG2@FLbDy{@loeh%; zl;*{BsfN)ni!yD1YN^fw%MjQkKJS732<$~*9RlkSIEp|J zfnEsYi_d$Y4+8zg=RGhIfl&yI5&Ou%I0VKbFkUhxCc1%x2$UdDgg_$#G&ebc*N@A< z;*E)ToofFqz`2UlJ7zyuk*UP_^y^W=L6T09N;I^#bBdKv{4bpe#XcRf`2FywtA97q z{@Q}(R^{US7wX9AF%+k*_8`Q=FlUfYRpWfc@EJt~=4|(45c`Ty-iUH?@E72>3ndPu z?G!%d!1-ufELyD0Y;UEbEd!|m{FZX-UGTEW>I*QC-^g&5b%n2DSA-1^539JO-(S{4 zcco9G0WUx#KFsKFHWG92)dff_M4}prMMx~c!R1J-M4|@I)#Cgb9DWLkE%^QhBsL`{Y#=)LQbVs5G&WCWgFB1Kbcm#<7`2G+iY#bemL==ffkr;@?FdUBH{0N+% zfW$;3%8*d}QlcD*Bz`F|6^R1;tOAFpBcb@E1n>L`BzEAdPb0AnhjWn#ByC=x-O?}dZ;INTeFK6tJ_4i3lRkvKRC2gl(2V@QlcVk{Elk?`<+@@@{| za0w0<;j4}KYNcrZTEyaV4$Cnj;|!Zxv~uPImfL@X5DfdXyTuvYEWysPM9Myd0sCdf zYBpVLjEq^c&H2Tt*>Y(p-B^jL8vJ!FzDqv>@^m(c@v-Po&BZNtJeFdEejJg&tZikw z+6^0W;Aa~o4}YDF8{JXW1K(9^fKqa2hTsV$wQ-s=hj(=~GS=eyChS~?o8&6?LWX*7 z-c-8c&do^QDQ38SVjZ_4rl(0|iU1CIP^J%*eqDK~z@I8RpDcf8DkdIhSI|VoLNo6+ zQ?r_Oz1$e-dm9wX&2xF5gpTsZ1=3FqnfM;*8r>dbx8%XcG=>z*zB)hExi-Dvc~=<| zVk1PnrCd)p>uChGiQs%7ETW)R5^`gv+p$7H(aUsuw6qovvZ6dBK{CcM_u6(DNozl> zz3{Drf4wlEV=5r&?;}(}-*EVnLr=!Tm^S?mCbLkhQ6!Rx8TQRV%0maj+CPyKcNV@2@STx6`D2I#XiCaG z5}+9xV6#4|1n59j0qraS%7VfddngIeAFpVSq-j>A04ue zz_%JcJ~+mCEhv0iQ1IFL*28xcJ_<+l63b3shk}AnkOhTL3ku&j_{OT!7UfW=wUT_4 zY*YCDQ@x}NvDk-~`> z#5j`{RY#P#nrwm%H|;E@WK5h)EBk};1dC!~MVQzq`agF*h?#JMoF>^6dD9LayPEvh z*QnCQ+@lIM+v5xo?0$2Pv-Lf@J;AP6cqhT`lT5I0*5c3_R3sDZl8tE5ykg$&_5^$U z0}||SD+%j%f?c5rc1RQK#mNM_MHB3b`z6@SD*`?Ql!Qe^3zJ}11cZTQ66}yB*o%`1 z_RVbcNha8bLa6AAl747OCfMw?GOy^EU{^#i?|l>OZ)<`*zH@@jyuu{d%quFxsMG|T zdBt4`_Rk9Ovt)wJJ73I$qeFsyc`d%E3HF~Q6YQ*YC|r*hlL_|ae0;Gt3j5&2{`j-u z$a+A6UCgIxMkmPx`*am@smy66CQ2}wS%(+N+TifT!Hc>Kw$f>le`w0XjsVpAp-+bu zV^|fsumHEvg^P^?9qtb9iv@Uoe!HmG^GRI99n;<=9|9Lq@{tIhGn)})f{_r@-uvPr z*cQ7#!Smz5Ma+C?Kypb%CxR#2Vs{9hVU>O*&6D-DaVm)`8Q;hoCIQLBMfCn;0Li_r z&eE?$0;^BfXk(J)V6<__y4N1dcw;Sqe<6t1;s}g+EE!w2?r{c|*V18U%IwL{UXvya z7OUU_EFt?(7vW^>n{gGf^tSopfCLkEI0flFLK=N^8Kx|)uS8l6aW1(68T>JJQA&cX zxi47w+H81puxbIkg;-S$ZxL24LGf~|T8Zas;MJmV4ZNpNyanC{6mLZFW_UZ{?S{7x z9{YGF;GKkb4&G^a7vY_UcM0Apcyr-Bj#cyEJ%Ls8;Vs6hC*iF^@lq6T#j0kkYJ!)5 zw+G&3c*o&A1Me)n3-HcJZ*V-|`LHSlo*%1H;iX|!I=le9OsvYlsw{Y2;dMiC4pw!+ zsyukvDDH{k?s%>T3PbSvqPQQ5A3^Z|cthaX@P=Yl6yBro24dAPcoBFb;7x!x5ndU* z7`(~w%Hd6cHwj)Tys7ZmpR9m49o{r}Go)8Jegz75zJ<)SbQZ!o;=@LYIt zc*XE`!7GG!0G?*No^lz!b_m{Kc*o!!fwvlkYvC<}w+UVgy#4U@!dr(i>oMjiydb<@ zD9ne~8)N!lOn-R8;f;hh3f>rakHH%UZ!Em=@H~8t6p4fIO5hd2YlK%RhY?RAKI^CT zSwGEZeWjguInkVt7A95-piVkMb=cuxM*||PGWdE{7Ha6mNSn#F0|#CWC^;on728>C zFNo=Osf^M}__m)(a`X9C$#O^0SXI4}Mal=fl4k z{wLvI1^-f!CN6J=zX|>X{CnWPEbw4IXI^LFzW~3gWrm?1Mk$cKN2-#n)8XfK%ak2Q zsDQsK{N3Q!%Fdq$e>VI*;qMNA5BNjy_f5)|vG+0rezq)z!XJhIQL#KLA0{HS-=Z1}@vajv zYa(XFFuNS{redF&*Kb$NSoUYC@EgN8w(y$$l?M5Cm5?^#5Qu6clw!76&N&O4^cXDgg$I8AU8aQ48t4Cgo;+L51ya{HNo=?R1-Dx3oRqyo-#IMd+FfWxzX1)Lplo`$mxP8d!uoI!8~ z!$~q7oMJe;;1t3+AU-Kh6&z}DAA)lj&M`Pg;H-wT7S1v_o8Yv-*$-zgoON*4!#N5k z2&WgEd^o+~^nueK&Tu#*;f#Va2F_z}#=#j2XFME=ds}c0!YP4M1gB9R6Qd2Ym$w;P z3J`PfcE=c^XcL1}dD-w{6vqSnMJNk!gGQYz=tQT$G-_FsB`}boj#6KCf0vjfApD01a z{r{0{g?MMSLi{7K72=0FX+Xu--mL-k(bx)ct20}HD6*ZHMPYmvRt@+Cd-5!n`Ow*r zAAq=x&yiXi!7Nr=1^5Nm0DDb?MLqt9E`Aut&|(Z_AyB1Ba!b35nG|IsJBaIYE;a{W zUn0)7GS_7I!{; z-H)lMNbLqI59{eX+g+sj2x3puOC2{5kzvS+V9^MKCLkVbm*?W@{dNV)r$cJP75KLu zh&~N#8?tioZ((F9t{|GMtV6{J?Lt-|vaaBj1Nhu5q>skusxYh`|HS(G7~-o@uneJ1 zc%ucTIn1`qm)GN^AVR%R&>LUwgO~c_4Qjfhs_N3%aP zK(u%#>UOsSM8|zH08t*n;rjwaS*jBw`r!eh#rFV22?Gv)5I}TXXMiXl+#P@@p`ivN zIvC-50isvLb2dB+ISLac+-}e(0}~x&p{*lKRO{3K;oyH5!anhw$z+eVS%wqTvG+B6 zdAsdVZY_dq5PC`^D1#di+}I8sxwTt#YuRePFByO4DUdl5?7#`?tDK;js}Ni&7Bk1R z_m!i)FB<;R_Go6(_GsQ2JYR>i_v?N24XCnN27+0b*%iTVsLFvMWg4M1Rp_AYv&xIT!tbTRb{h*I7Yu9c_=EF9n$+)SM?7f8KP= zoQB{G!IPZT-WPXhl|hvZLRGHxzHaYO5u&_ppTVS>4jKyMCm%oeuEwxE8@> z$lZis3xfMW=c8Y(LvTHUM-dDnw-2=+#>4}$%rkMygN?aoKJkKJ)T;z^oAc0gy% zI-bHjk^9q7zE0upr0=bkxgIn2iY0JsIm|c z@nQ;NljusqFX74qgb~A-nM!1`8hO}iOqNOqG3q!Gg7k zE=DXj_vR9utU=dW#Mj9C6LQ0$WLIV*OYvzcRq~YShEM0AYc@{yKs*GS(5Wc8astTo z!{jOoa#(Z>f4UlpwP;y}U7PS%>+mj}6oS~*3yFNR^v1htqwrVb@uv!hSX7DT*>LB; zT>y6>+-kUsM4ZQ^M9)fjKs8GB9sCsBEf~51?nbzq;qHXH8}2^14JbYV_axkNa8JX% z2=_ePOK?xYoeTGIxbxsX0e3#!#c-d5y9(}7xLe^i!)?N-1l&DvFT*_!_Zhfn;a-4y z1}?uZ;QHXE!1cpTg_{O99c}<_2HZ@zS#Z0;?FLu%dE7kI=$di6!|ee#gu#8`_JjKf z+yNLm1fy)YL*Yi@4utzC++lDda7VzM0CytXGPp6gli`-bodS0f+)}tx;TE8{0`7FU z)8Nj4t7oFS1Mbssx4{j=9RxQQ?qImv;kt0+aEsyYf?EiellKE~XJO!IxY}jq%)&hk z_ZZwGa987tock|B@g}$}aQDOA3wIsd^>B~E4WhUgzNkn5w-4O@aEHSk33n9SF>oJ) zI}YwxxZ~k^;LPG{2jP~$ErQz!SL0{*1)Xf;a+C2hs_`?Z@pEJ{eiF>^J&m6^WVM{Q zV;dK`i099XUr+FqnD%yzpFxeEL5-hzYC3a!b`aw3JASuq9G@m<2i;RXz&0)~89$@h z$n6k6DJgtAevVY|1GUy~$4}bCgd+If2;@vaP~&H)bNpnlGN|#BzRAJq2u{QE3=8@+ zIXigoY24a|MPV!&gj*Uv-`kEYF1EyxSB$)*Z2J=jkTVN!j25h&^f?b9sv*>v$K|d? z-ZJEELT(FY?#Il%vdu&55!Dcy*9*D%$m@+zA4K~jcQ`^LF>@4VjzP3T2qpGanz09w zQ-Yi#yr%T+TXXQEB?8R*O)bh;<7~kwz+sMFa2+7AzBCmm@Y+Ix07K6AasHJ2tu4bVZC>>{;T5$xtR=^Dt7? z#w&HT7(-v%gg;(~udl~@N0F*d(ARq7>wWNEfBf-dNF9gNu}B>+Z5H!I>=Kbmh|R&m z1&A#~tXga%V$5%sONtv~OssVzGIMJ%JdFo)?SPbBy7ADPmhu-7ILCSOT#x|r`cY&A>3sVsDBbJI-8e-{)1rWxbAQh|#Nh2x2y3LlKK2_9$WlQ9VpY+anO0fY?Nol_3_pdz3$8s??Y-R|v%{HVv^E zQn9|f0@b&TNWwbG&qeiMaFpNRq9KmPVl?hTtPn9xxrwD=${nl1&+GA{PiCP1BMU!2 zh*$|?MTj*bM%v(~1fJbCM@E)43sF;znnk$21Z~Svvl2BmxKWE6Yp~%dv~5An2Gnds zjUuKRccVtNaTsK_oy3iEs5yNt|noDRqg|@kz7e;9Bt2_<}7M1V8a>pq5|4{QjXR5#qYZ<4K?Yg37{qeHJP}c zg_^FY>4vr()O0~x9&Ti#ttV=_qoxOLgs`D6YWkt(5ws0J%@DMy@K;+DH3QN3DB6bM zdIXKCjng&}+saTA!;Q(PDM!r|)J#HKDcYu@hOEE}Y?zL=X{ec@o}MdkV}}TGGRQPC z!i3S7iyMQbx6tUKG5JhI-1q=)%)-^txRH!7+tog8#x*wKSuPM#2n%Z?g8ZW~-j?!mP zdKT6NWSo)S?;6}k_rnUn;xLqmyY~g&=X3_%vl~XBNPbfHBSnGtjS&nSfj1{e!fBPk ziXmrmCl8dSsVHTaxB?l|Q97;N17(eBq zx>pJB>^AT|;|Q$PuoQT|y94n4jdifrixj67#O_|W3wZy=$WFQ+26&%AAc2J&9dqwW zbX|nB&C(O|&6l3l@N|@ABF&cOn9srRU3j)oaPkZ3WMpBXhf)@09W^~}3wm(Sb6+(N z=lApJV+(~WHf@yP z4!`Rrvx%#=^`EZ7ttLsQU&_P&Y^3(YEiMnz ze#y;@Aa4qOI$i3NmyEd{2bW2hx4&3M4D{sMvkZQkv#8xzwn2#y*h9?BX3=f#N8{$X z0)s!MN&9Ols%2^;TNCwuG(P6Meg|^5so?EkM$3<$Y*r!4jBzkc66BCvpBXu3kjhCCodI^b?qU z3a97d^yB!;c{ny7gBN4_D*SLMZffTCdK0cCkhce{e6JqI>}T+!v-r^ktUMzMLd@JO z4XUU8_)BUgq+@UZ|C)(g3KqJl^U&>iBDQv`Cw|x+`f@LnO_(_?Y49*cv`VmO4y=jT6iq3Q)vX>V>_w3DdM2_BHK;eXT#H z88}(TXv`sagU)(5RxVH*FEb!BB+6BiB$HEPDT#(1X@+q=EKZ*p$t_(%c})0sqA$rK zTLlsQ9etX4Jp>l=oq_U)eMjKO+tK2pWfx8s;-rr7=yf8z68+--N(?uBY(==SW6bCg zH)FEd;`rIR0M{0xwHmElsLRo+km)vEs7wQHJ%!dSxV8bU8_}w102gX&G7Y$P5-*%X z>uI!JMB90^UBdNKXq}7J$8migTAx7cd|X?M)+f=n3fGnj*ZxK`TAR?CK&!6U*5kPT z3|h~k^#ZP+5i%@SY%8ruQ_$+i^;EQ`p*0=X0=SleR<7GDv~@*mH{8lWYZtWU$i z6W6+N#-nKMuyn6a#I-WC#_+;qw3efF3fd;2 zwG^#W(WnOC2LF;2^9f#JjXdN%6hh|~lD8UT{Y+TW`o!Njt=%C^G2dd$@k3Bk$ zQ_1vakJ_-0>k%Paib~f7qCM{HL@CEibQ9Ah#O67JBu^hE+Z%NpL(UWl&NUutEc{}b z_FfFqey+5v$E8RBA9n5%=3VF&Qg z;RTy&Vi&$$h;J{!{u-q0!yEHuQkhPpCBjP6WzLwLhZLiwHc*%pZ#)=Ad!P^pR)ZrL zGM>(C!ec?4>4iA?P5trML1dSJhi0QLGbV%qzuB37LCB9#Dne-pr6Z&oVxbI#vOuhLs2f5#2z5ay z520*?dLq;vp&kh7ydcyMp+^uJfY1$gwSDxbXX8tjnG1?yp73z&##LySMeqzb$8vvhH8Fxtm_#*I)fNz2rrTNO>i`}2OlU{*uO^0t9d^05b z`awtLPOdU{$ln<(j>bM0zIX>m*8}ZR0Kck7w?iTY@Ub&@x>@*@!4(&YzzA=epXi7y z7&uF;#NwQxQ}djH=T%6zkiJHa^+8)jDd^wXMjI$i$UzSNoq0Qx_A0zskDVTNT6l2_ za(O^-EAfmNAa?3px)J5!=7o``B;3d@1Pj}l)XR8$cvx165@I>(5ohi}M2Dh2n7{`u zygd8&vXl7SC!-&79S_hCp_fGF?_noFF9|wIJhYv}=Q`_$T<@qKLh%qvh|p2uef2|_ zS-tzo=!d+^C)-g!WVVoNju7acB-dmwL4-B<%7I;sfO*&DDbhZ=8$}9)7AjZi|S77b0kT1MP!pkd$AbddOc@M$f z--#4#C*NfEcGxa#?F+r;;x%^6wj=IJo5*q{Ws>k~@_f@cGEf=wSKASDCHn29S)mDx zSLBArXMbosJb`Ea-wzM(Z-&3=Zan;ka)$z`|pQ`ubcw^ zB=}3=pDHk2e+B&0br3&8j+N90JJ@w-VSCv@i&+muKoQO~TkLPx z%Ci^3u7f_BRfTEWp;bp6!R73Oh|mL*amsj0R-D z&T6;6v2$Q+)oHUv?kV;+b`L~DsP22m{w6X6wvFge*wJ?T8)umGV>ga~JpuMa*k!O| zuqVsd(VhZZ@ul`uIr>*ti2aQ{t&{x?rS0r(u*0x(#s0=t!k8~$w?(mQtZR9kBPIDy&BbPVJ{OC9J@ufv%MGgI@s%BAB7zh6P)UN*u7!*f!!bW zaM&a7Z-VnXJ$>vFF~PALW$!boSj;eGiO-i^g_#y+RtoX_ePmJ3+)oy@=T1Dj`(b5K zdp?1l^FOpK>OZ2BENagWl0`l9L9(bl?~z4)^ux=d{^P^RqV_CA&!jBsKh&ewCnJm6 z%fdf<tCuYAYJNx>|PYvL*QZ^7h?YR0~^Mn%u2+a<{S|wUfJb$NTQq>UprAK=ph? z7Nc5s>yV`w!eqD^_C33``Yh}Vu+K=UY<8=i0`Aso-L2K>h$tF-Sq7?;yLE`}*6KVI zW#jWbF+_K(9RgdLcE3($Rd$EnYU^&bAG}-bQZcJymv6`YcB^f6E4L~)tnOCZoOj9H zY8S%RekO4RuO)ZugwDIwUW;e%*{xgFV@qC~s5YcKx7a_U?(dCG)M6?FP!!Z0tpAzhMbOWLrrSJFrPDFPjx(`w6E}lU2B%U(BJ6pgcu>~ItCW+k-OcFbR*vb2VNn-B{CW$qF z0GK2O0h7d1J_ayJ>>e-)XRk5N}kR%*c}DENum_!9~s~ za|ZT){jBs=jg8|2KNW1uq^VNIxRIR#;K^h>v=QMwsSt5ycCe*6sdnnA7QRK`B|!*O zYUL>3!LB+~JE)!|C$-NKT@h!FkbQ0v>$nJmt1)KD2atWn@5HFxACBzPwirKq5(D3t z?6c&9$Ubdq>O`#L;4BR6iZMyD&(9u$>@)rzvd^dwBKs_P0NICFN2fE{hge6)g%iiU zWS_yGB-v;1K@2OwFhlmKl;I2E3e!1o-y`q_&XmhWV7gA&S-p1iL~VEiM^}s+^&()- z?hqG4y@UFtLW>Y|u9<+Cz`{!NBCayKCIIqr>Ef1BRi4dT;t4fnCH&*oG#NuvynU&Q zrH18n1-@CLt|nt34}Z>2sl+YfqqZQ6Pzs&J6F*6~TAagT1E_dL)-d~8#3@+=#JqUJ z2z-8mZ0caCXz+3)6G6l(KE}1Z13X@;X&@b{k)s9u=5*2Zp$*U!r{|K*G8@sh&GnO74l&JzA5UO*kTJA&)rzy94aRBu9g z5Y_!rp44e-n4{z&t=3K2^rAOGC~M~dd18>w!Z z6pe{nGVD%K?cyv>KY8TwU}9g99mOjA1G7i-(dKi_iehrOSs>yp)8b8X@jo9Rnq6@l z79VkeOdEf`0o0&9ohNg?pQh$N<^AdNNRvmU>vD1-r$Caf zyIt+kx07aWY^jrrVK>LV>XOXK@7r8sx~|@?!~b^hzdt1vS!50(3lLd|NHrph5Yawi zWF;ash}0so29c)_*@BV{h-^ee&zHz2}CrLk35OUDnyowctTM#B29=SgpgHx8Ij|NJcGztL@pq5MjbPOh!2qzMEr=* zJu?jv&Ez8)h-4y?g-BOKx`BPdNEbx%5Yawiq&p%#5D6jD7mLYC9X5fe0V^3Pg5b zy>{0N!YCMoNG>9Sv3@%uE+TP6ios@kq!1B>wMVEaH(GX$*;A3jh#W)Y2qLQyS&PUr zL^dJPg2;YE_M&JVBI^-3ibxQVUWnu)(i@RJi1bHfIEqFhG76C~h&+bKI7G%GGG1^6 zW`{;f5Gg|Bv&d*fgxxj;kj&XCTZsunoLWzHIOX7!frQoJ>o%B0Fk*bYO2V=UEHU#} z)a&CPa-CDA@AjYbyPJWD!{9?FvJISzD)yyd2|c0uYIUeZo1 z-;4?y6%qO2h6+{P;DxQjJH7GFdLdlAOLE6bg*x+7cri;cv>S$!%F$in#Jm`O^lE_u zk`6$#ctZY)2?t`AZ=Q-#M1-6oP#?2L%+C$T;s!LMeB$K_q-`4@U7b6K+sEu3Gd4B< zs+S$)mm&?&dQO-9c;w-hjkJL`I_o_w0QE$YErt0 zS0w0S0QmlVxKY;z?|ZBCH{wVCs4POkY)`5k9t_GWC{i5|R-bFpWu`oaUVQ?SRz z#({V_f*u})S@z5cCnFBTQXB}MnvBM_2zrn+acaD9FYpZI?jWCnbTc{PnGYoQ5q~)5 ziEua93@?m-%SWGSiB5uC)jh<$oFyM1TGgM(wB177Bk^Qp2jWTaB4$1W@g%qv!R9-n zRUE_z?;)OSR^mxe2@yeJc+wC|M=&77y_^go?ghIFaW9x8o{)MLd;sx8L~m^L??5~u zh>kak2)f(Ele>s}%;aNouVjp2%>MtP`c2 ze1%D@7TRR(8On)a?U8aq*4}N($!*piDJOTa_8vqz*=6A?Ny~1cQZgSnS*X> zes^0#K{=NJGf7ZgcnZma?MDCglFI^eKO#tT=Qk2icr~%;LN|>rgt%ur< zfvaPwTP4_C12o!m1wmrKbZrNC@s?~-$?=R4o@wgRzsADuxq^1HQY0Z^IO=MF*Kp@I zB>oSO-#@Qm>UoAK^XW|}9RkAPI~)GvR9={`jPj-K1FCgT~`prVSIu#~6aQy3dfvj5{3$c!$z8xtpQp~AciNDx~zubc_48s>j;4kB<>_juEW$?Gi zEOI$9=fkm_trZIclC=pHa=3ne!&OA|3jri1o+s=VFk`~>1B5kH6cX~Zuge!g8Vf{`Rn*yKFK zJKLKw9sMKb4+^V}CuH%*FC$JhiDwW$E1DAVGZIo-@Ib+kBN=z>P5&sT-QM(hbsoRf z9q}HBhwzQQ_pvu6th(h<@m!7%lhh?X;)Cr?;}xCkO!?)Mt?~e*f`Pp9hZ9bmsjc@nC-;-=U9PyDV*)az3#}FTf_*j|q zl20ACItzxJLG`5MA|zo`SHcah1OvBI4|G$Z{3Qb*b<6AUeWt#uQvQ9z5a9yjl2Z|N zP8$~!?l?!<1{uz?P@JVIufL{-haIVPF*y?=eH;@~1Xd3o?6@JRn_)t4aIiOTK z&N7Gxi0=h=w;5qrI=>(cz|1e=+}dMcJqBwWtg*24`1V=&=|RLx5HG?n8u7m>kx8XW zb&eZAkr3XT?xOKHK=b^ayhzSE>3yJFKT^8y08$JjsQ|Ubm!q^1A*kXDAyo z9e*}$K>ZC*RsL(X)|foYSYz@XSRVS%D3V7pU8Ss`ng4fuhdH>Rd1jtZT=|%4<{2_q zhf~r-vreDO8_xTzfN(yS{?v_Mp@v7=%J4BEWRh=Tk7ik^T1UgSBb-ZOa;veZ$jW0!9Pt|x6-se<}KloIQcQ{q!$x}71 zn=76?Rk^w1%Cn0zNoI;gjr5_2N824+%&FS);ZN20!=I{G@Z14OdwP$S%*XTt)4(5-^MBa-awI$pn|$~l&u?! zibhPX#2=cMk$l&TFkeZ1r-4#>bibWl50ZR1#_Zax{DWvN5&Ol-o3#~YxA(#1#+q$7 zN4jKt_|e23EEQ)Zi*eg0PURwcqdkf}<|B3?g=TOaH=W7MX&Xd9+7iK@QA5eURFHmT zDf+Vo+(oGkzoz$1OwhGGlEXh%f*YF#j3LjTME46= z5JUG0ENDX65R|c@bP`t=qiiW+&3KDruWllzP&O2A#iVH_bFS@*pNu13EO%gfA*S>VXxKOTUbWO`Zk>z{3J}s_KF3v$pR=R?WSvc2mFSCGU z-@6XW*cf-PtP1gD6N#sQpXc2o_!#YXBArd?2K>e2q8gpKRKSyIEP^gbA7iRdy9epW zcrjGD1!oq9jR@CAY3%V_MwgG#{*Xw~(4DSQ*YytK-xS~#EE!$8|K1CSi3gnKv z^3}e=cjnXCgiJny{-WCb6~1SqxG-P0aGeth(lco@Jr}=X#Guo3oyXcI%e#G^Pk$|r(R(@{$7nxo;q!cO2XU`*_wf1kv}f zJ7UZ+h6?%d)+Fh$N#HWkwHfP&Vtp01(hbl8O%o>7qG*E@J_GCUsU9d|qNpZcpW@uP z9s@lL%gSnZ@h0_VKuECM%o{(=44>a+8{P~H zk=9P4&f2ep8lLQ8QBX12@n&zFlSJu&J&lS%s4!g)HVMu3^B_BlzT?oBg`W8?W{6-~ zUaa?7>DP%hbC`E#k=&frC3v0prv~S0#lopVMI$+yVP?KZl`%|O-f{xDr;xK0C8Ue; z{_GKPa;D$so)Ixvrr)Q|Ae_cl}7)FnAc&BM8Dyw3aF1L-zC$6HD?^+3tHDn^LC z-MNX#)r@)%vF;iZvP+RO6^^FUr>3Ljb~?QSY(aA$F%(!~i3UMxxyRc{0VWj0d92r~ z8Hyh0_F5cWCQf$abnlaK{M)0briWcVjw*frxBW4W8-Ejx2uuCJh|DWyW@##DY-$VN}@mTbAV0*FZ@$E<&ziN2#<+iiEnq4%<+u2?-3Na(e_Tr{%JoJgM zz0A|}mB3e|Y_Ce8?7ce&6G);<@3O|} zf^QCx-o+ely4$%B6Cn+r%miflncYWOtswG}`|ewWc$s+?^EW;+tvL8THs9w;yJ*!! z;|*$nVT?Z{p6j3gVh5H!4Idk!gCtOw4#v{$O5E6mu7&8T_O;RjSNmFt1}1h@p^UYp zCFEk(7ioksaDd3VNiWah@@9`$f2J2=N2HF@1y_v6^+S+b~H_r86w}j zjSkoPdN~kH0ksub{6+&snw9T4J{dg6oAJtQ>0PsJC{edgmMg0p&cQ`JlAmIx!r3WlSBr6V7s?7z z#y8>LvY6r@nr1IYBnI`7#Md?b9wyyQpA5;a2@fFIkzq%kT^5?UqNy92a?sQTO?ha_ zMpI8Tbw^VVG=;plJx2Y%~o;Q&bstwm$*!q0$*!p*$&L)W|Eo;8 z=U^C*NG>)ihcMWx^XxEg*xTl_?Au(C&SVaGe}woF$4eJl`qj=xEu+B#ELw<+YUD4% zmzLm*%aO4Xe^Y~ZYH>xiYp9t0&IX)UOU*7j+r4GEWpj< znV{EzT8%=N{K!;GO$MSj16Y)aFJ&Mj3%$D{zZ-s#gN!a{$-_I@_+n4|Q+NDL4_r|- zoAYX^$?W2tA-HLy%TNrBinlE3*nc|=^CO~)KsB3|iRe;>t}zr%Mn*ZhO+nX5$SOtt zRCFo8t_r*}9j{J9(F}B@Zo>*p+<||78qaP+Z5Xw=m^cW}4#q!k$8{Ii<5*XWb-N(S zU{{cJ0Jn(B7%jo1q8^_>l(XWGh#LO4E=*kK49q2MrClf4E>q-<#ZnU2S5DK|GrLD7w`!>RY^h0sqP2_ zlWLO>8v5r{baJY?aM#eE6MxSAnRF$G{zk3W4E=+n+mla9^#(iWOq!v8P>24({UX&H zTz5yRH+av`KRB{osyEnKXEKLj{2+oQ2o_2GPRZqfPagD_d8`!3+}4~~BR!1dD^+~E zXaT|t5w1p<231QCUXJiegliBcE_4mTPa(Vo;SC6HM0hib7&=sZ`+qec{CkUU|K>8n z#}R%8;j;)|K==&)unt8)*oUGNg#8GoBAkY>QrN;DReZasv-tLJRFnCCJwSZ>4@(iA zif{qKoyE6{9$tK#%G)Zt&4WAqL9*MAu0wb|!bcGfBHRn%e1v-=+y~+Q2oJ}jBM}~j z@EC+2LwFp*V-X&Yuwpp*l*1(m7a`n;FtfGUD5s$40+cU=zgpav(v~2LU@G>sRbsS! zO}qQjw>GK)6O#>Mhjzoi4{Z&Yazfmf^3HW~Un)O^Jscvd9R1`cq>i4l_>TLMU^$xM zZ)#_oUcW5vOXW%TrAk(gTyj9U%9i?7wSID%cu!9WpqzqrY@1}YyDw25*53twRW!}& z+3vnn9_r-2^euH?Vg-8JeTioll^e-6ZJU7dr2A6dWcbT*yJxazs^p?mDo{Bcw9@h_%xLP^yzC{L=Y66z+|R}xO}B!}$! zK&?4A#a7-yO#K}x5 zjg*s7h@~1{J>K;2riDwh@Ai(Lu;fE{$FKVE?0a@N1I-V`z9#@C;KyC;`w1P`_af7$ zBPz1*1D^oJ{-zXpLgk*!(03i)cNg zC6NW==_752rJWkNpGr1zP4gjzja>F0Ov_O_y6n%Gj&523KCkT;HjO`}U6+ncU0>&> zu8ddM)V*&<*R*q!MLhwEEb55{WKmC;7Mlq^Z6@qy`8-?sjEgX#R?yK>-Rn_n%~OHv z`66L`gWXO=I@v(XuY%R-hy_HgdO{CK$CU#wO;_3og(`qmA^lIzYvP57Q`v*E9(pP{ z1TCypHs4-sHAC>u^u4Vl?(vB6#91j;BJ~{yVVs;2gs^eJ9R&k>NhbvZdkyTTM8Uw` z0DGeVR0@}G+Z+ll)t7*yBc8U&NDF$K2&j)H+5fK5O` zhF}uxuCV!_bMB*HV25D$y_*wVFch~H4D4Y7b|r=OK?(-drNW7}3*c6CQZTr-0=D7< ziF31ab(@3*>PGgKVN#emnq4Rxgy3GAdn(zT9?Y5k;X4Wj?6um<5Z-iu1p_95cK$;t z7!1~&!7jO@V8F-vOAEi`!CeE+sRjR>2Tqm)t5vvf69Vf*Dk0uWh5LGoNJ6|n0+r&j z!B&{`k+?7n^?=Kx0n-(L%7H?x0MnT`)uY5i3ESQ5IoIPeTzeiq!^9)1PPZ9VofLf2x!bK->{BK-Fy zLi8T9Qi$F}&Aqh-fA&;6(R<=XyrpD~ZM%i&&CbKk6WDSR+mz`2=taDE9^)_J*QYRS z?){10&o33C_o(JOL~qLHPB@NVKZD<##pnyTc}D1L%xt5+2NJ#idzKKrOO)t6Mv2}; z&5`K+yb`_N3gOTCVq!nM)q&`JBT4igr9^MG{M_(>R9 zieXdnn*!Xdz|HCS^)$RVLr9U#Y#&7Q{;G?wCW+o73o-Hlemxq$)(6C#_JzY3sYLG* zC3{la4yISwUbQKCd|dBn+{!(*RC zQzQPY68{gIPHa2yIIBY!_L_K*Y4f3r8O`YR2(pxa%WmWx#H!n+|L%-k3=+EmmuZqU z7q34qW9Sk>^7v4ELe_qr_E>(=#5P)dC7lN=g4~`Yq6e3GySP=kPxV88rxOsO?#HQm z@Ne0g?l}7(G?bUbIXh7|%+DL}CO?k4Onj4i{FR5lV!Mo8GDF5>JC}p_T8z^vnD0DB zZN*dy1@KQafxp!Q<2V!>h^bRBN(uWuzK`k3?!w!Jc$))p4)~ILitU=`>yfQ!974@Y z=SqisIwPcF&PyGgt&^h5E2MqiK}by4q6*=4=tclZfs8V{5xtY#n0`asxvwhtUBp#Q zeTk#H!&mJHjaImOei9x1x}u|BA1~u*FhGJyBfsxwuw3u_ z4G%YX<)6i0S7Or~jN~h|VClixSslLX!$|%K%NCu5^>FZAE)2El@hME5$8IXQ;nXXj zwt${!_J=vqY{l1^6K%l9eWLyJjLtG3Cz}27ooMzwCmKO_4?5B8G?}=vDBXYkJjTpQKY4SYei5B5;U{-IDYVr`GLwwF+_1@B@az$78 z6+<$m-z%3BEnm5o^j~xIUvutn?&M&v^4t@O&R@TJT=wG!T zOxslrERJEt7*-`rSc7dSQ7wYFCwSm*5v@lgUY%fc{kz~Rlo1l&^QZcrKjmKI=%*fE z^6;g7*tG}WABOLb5OMN;!_m)V_~x8#z>oqAG3;Z~5A{u6O7g6^wM(mTvmRqSjInT& z!#HKIo}hx_R@ldJ;;cYAiE3a#i1<+%-l+E^ zL4Av$$|1t1?$2w`YvcQK@yJzaDBDnnn;ObCIJlX#6Xn&m-_=U|xJpuPrexnB0fA3# zt{izxrR0e??JM>cwK$d~WwFiUAXmbmkrip+uZ54N8xaDE4e(Qal!b;mruEH7xBlqM zibL;GHc=vki13Wy)i&V^by6pO!I68&*YrJw%u-}F;a5ZOD@9Qwex7J$_}J{-iUZB4Xu_>$kaJdatFCbkD~N)?6-pTS zLzpu}ngib(ii&|aK)y5i>E$8^XH5kMCD*vrciV977JOMGDoPHL(xw!MAuZJ&@8@ zl#{>3Y?)OFKhA6)raC%1+sE12UR()cA17rxBfH|su9U6Hox)A0!HubDnfVA4(i;T% z(^w!$b)&xcB@>e=^T-dS(jz}8nK~ZwaENb3ew>48`r;HS9`HB(S%0792%%g4*KBsP z)A>Gp6McPOPc|uke%ZpyY}&A6V*;Ha$7zG*&y^}=PNHv^cP68XKaiZrznz1Z*(>H* z=EKYE5A#Gz=99t~tH)}_E)T02zQ_)%!Ym83st~piHkU;13CFdz>gsd;J4@&-aSQQU z86L@3Cg$IKYo2kGWmt>7~ftR$+ z2E51*RkYZP{OEeT=;6f%&AkiM8_pz()TZFeC{LlUsU}Q9)h%9Ab&J=`yEWhyj+hJZ z3P-y2c*7Ihlt&yqVqg_ULnEn-A>u`yuO!aI+q{n!(KlH{^Q7R-(f73UJ!ScsTa^4n zo)J{oh%3ND{#DPKH2p?Qo741a#b|&UXbo6iCx#Tu9kkYqG36tg^N-gT^OPB{FP1lH zz_0Z3ex<+R0awpg@`HGV{2-QN`mX`~*N9p_#Olz!KrWcL=qVni#5EhNhve#}cT_LX zojgtrfB=!hL<<|KXVaUyfbUh{d%KWVh`dG=R0@JFz(Hh^1rXyQQiSP^__X;AlNshM zMM!PL%cl2u1%FKJ=w?jViC1h)h~O1-p0a*q*|=IQbyzGgqo{?SkOswkvb2nAtB^p` zG(~&zTpP*8CdIv(c=UjuUBLk&Rcg9|tRTocOS|0FW3hpHo^81sSN4!c* z=~YdJNSwV9&hHpc*d0|vYO?7&8B$k>0IcC7lqgs+D_23kdQ6lgN9T80Q8%dpP?Ls* z5C`bQE>g0-C22xUnfiMyr$bC8J6lf2&3v3)ra9tK72tJc*mCrFq z-036YZN#LSEp%HOuoPa7DcFoteuB+7=;yPpc2ONibup?9Ux3kX8LG`pFo^1rikD_Q zEK;w%Ik@b@9*#sg59Qwmh9jV_F);hUUX?=K2dNYHB0gNnFMQ8^qGT8+Z;PUWYmvs~&3|PT zpN}-Y#vFx2bR=IxltPX&t%wWF=`ZiYPq9Xb!U?OtlziCzh4ggi^~o#Y5|!2~U%407 zaG|sDYR&iMC(3%`V&-x^Bo`oGXAFD?6-mx-!F!^Ie)S$$de-w3tCtDk%L>XhSV|4< zNS*?(pZA%Yhz}@vSA+Wdd%wHQ%N{0oiFe+-CN@H- z-}Z2k0_L6PQ+T-nGe?Mk(oAzVs_=t)ETitdg&*kkOY=vspBx!mevYgbpMC0M6KL4sGv(USGVeS8?nQLVEL6>mnJ+=E1)Kf86V)o$U}#_QVt!4O6FZGwArj13QJw# zq_x7uAHiq2_b0%b*zUt<1Z>YS=g|fZ6zro)*$5rhTAP{e(2(daSScS zPy+@&Algm7(d}IeHngq7BHCanKa|nQS_W$qtd{m8&+1^sNUkV#nXKNh`oQY1(J6WM zb!3cMCTTaqDMjjHQz?aWn6=4gz=kSU4tull&64zf-M+tE6=^9v6XOx>Idi$P*w>t` z$0gDC;2*L-U~9v+2k{0@QV~wqe0LAs`6m=WV};IPVgvf}^#f$W%gnPcU##^AcONm# ztO$0^!2-THkLjI~E56Ma`$YXCu1P-c_S^iEr2Q86lq8CL|JlM_{l_Jkxe}Q*7*UJ) zYml=MSE;488Q>x**o|!UPXLU@wlhg;CVp69!U#JH2n0JY3@Us+2*JZ;_BgV=LPo zig&M3W8w{%#}Vh|c5hqQnq;o@|dHrm-{k7UKLYI9-*+x!FkcyqPlGk|Qa@iw4V{K!}F7 zFA){xQTAxOO1ZHPeOThQmLicr({v=tkeDGRftG{6o+;qD0D7|}HO84EB|7`-D?8QA zV<@idQojxt>qcOmW+wWyWb)~y;B#^1xOl*Nh&!#rNo|m?YS>)cLA341t0p<|1QJ19 z?T3>c!V~E|_-Y(&W6?GNS0>){fF;N#%Oyj)TGaI1e@*>ppy@7<}v9h1mVDBw~ANk+9@j~a6$rp%!Qj2Xm3-ZSn$j1|!w{pB$x&a(mlCd7ERQQ_Pel1$|Vr~O2>5z*6T8oai<`&@+p9}M}nkS3X zF2ZpcBCsms-b>h7UFqKI_&b%zvXDi)B)+m~)6%(1vbKr*@SnUI%H+(b!{?NZnZauk z#^($aza8h8+j|yQ>*P#1Hw{-cz_-&UnGa_HoQL5ofl~!%DV%DoSPAD5tXhpZYv8QM ztZi_%W7=joTj11U8i$oFqEB>mZ1IgVaL&Pb49*2`Uv-|soHm(eKClqZA~+AhS&UCC zgR>mYS~xYBz5~;m;WT04VK}XDF2Xs5SsEejoQGq~Q~}2W$BPGia5CU@fzuVA@WTnf z$%NA#P7gS}FugaNZg8?OrzckQg>xTP^?{RvS%csVh7*Dl!L*TBXk*$aI8ivcm^Kd1 zXgI2%bf#d|RD7cpP6Ez!IAw5Vz@c%g14kpIxhFfbF=v+S$qw(}Dy-iFXEz+9Rm{Tr z0?{Qo#+}uLGXl;&IK^-X?j1q(Jd}?|wYjIq;2ei@63(M=*1_2zZmxXZokMUA!r2dJ zBb-fePQVGm=?AAjoB?nK!WjZ51}6?@ESw2&Cc>En=YBYo;iPwIr$n|0rx8vCzNh7Z zy;n-pZdw>{XHJCCO=;eJxDsp(r*9#@juOT5?m!eTP@;H2nkb&X1^J5GtWu&l>+m-} zB2hfQ26;P>M`e8z@(v@f6$Q5t#q(HtDN#J{LleaddLpkc^6yi-;~W&E0sp)R@TdJy8}@?&uJ%$zuB26p7&9R;w#6?5InCQZyv+&9qX}zx6jQVLz^J#N17o+Yig=ZrvZF24L<$%pHOYu{+wK zm$JiRd!;8YPuq(YE-C^rLlJ-(+M5d`!uFibJlx`p4^O=mc-1_Mc?z4ki77$#gEd;x z95u3Z)S|J)1n-jJ$*iJz_y@8A$OoXahY^qS?f6~>c-fAY27H~J-42<(3e4`6{;p-D zkaFp~{dHa<8ZXmznd6Uoyi+Ko0?&iOd#Uou>0G7lTl-vQFaCxMOdiv0_VuOMXcr9= z-^KsXOI?+Ps$FQNcGz%-HsFo^qD5sLO9m0YudAa6m!pSt-}j$sEagA%lxX~$r7OO4 zZ-k%!b|>NI?>1fWrOv|7f9ojx{BY@tO>`u_H|dHm(dedgx?-H;l7|srf_Rn8P2$yv zuSEP2#8)G}2J!WXZxixWd^6%(5Z4pDt_AS}h*Nib8u2rTpF{jH#4jNJ1maI2-iG*t zh%ZEZ5#kRaz8LXkh%ZNcE#ftZ??Aj6@g~F%Bi@SmMZ`}b{v_g$BYqz7G>bCM0gYE? zH1Q0?yCB{baX;djhzAhwj(88mdm-K%@otD`Biro z5nqS+2EXX6x^?>!m?#mZ4hFx%VDTNJM|m27NV8!ZY+il%JI_JN8ZT!-p};n1cE-%gplX@ZB)J zt1wiUxD!eBm3Y>|vqr2j|0A0hrRXi+B2yk;1KLi*cLu(5orHKkt*=C*u?RjD;`urV z@mOC~HpAES{@6#~<2TKVcvXEKHG}0aGy}daG7|Oq)w!sH5Rdhh5#rG^%G6h69FgPU z>u~7%REU={LcCm5vc%%liN^S2;F|(pT8QVH-bskZ`ierlw(?G~k1P-9Nk!F(Zzp_t z>Rgni!^&OC)N*wUx=$@5()HEXn90Jsa1YFj{>sAF4Em&iKM^xI?kli{3&6-XD5&8| z*dbU}h?eqP59-pu$BI>ikHi2IZ)6rpp)dfyQ>Xj~(_Hi4*;%I#YY`rDf!)AetHoGG z=w9?ns#QaN^1kW>LcB@+%8|#71ZGxNoCfyVigpfIt$e~V8gy`c$#?MzzBEfmmSub> zXk1f`w^h>nwKaHqy+}Ezud!-`j{7b3pJ~j-*Lvb@?Tp^e5e)_LeAWrynuiEKAw`Y^ z2@N)=ddBOjXB5PkI}CS~dNJbok6L8$KW$|3C%Pfrx1|-j<2h*I2o)U&6vHG8|#n81XW2`9pu$aA zB<-w6&Ni{@&n8`bi(vcw7Qq%7GBS*SmN+yQ3Z6soG0;EXNa^Rc;UsVOLY!QL{tqFz z7=xDK!R45%o}ZOFaI#ta^LrnbQEcNy@z3WT8+;tW^H_dXuQNnS&mjAt4<|Fwzl-3L zgZ%186cGRXx$2)^*;~lB4`w5)Ct`gORQQWy@ti?Io(zT%jEMgyaa~$~2BQd$6Y9}P z+H3Q^kHMc#!Q80`mf}_^{Ym;gYNxP#Hs;PkQ2q0{Ap|w3j>_C1XX{xarDxX=HGBYd zF)~Ae_OPUR;sMp(J{&`q3hHwnMQ|NBst&F|RtG`-&(dvIFo>*M1ob~lw_RBs1ob&- z*yQaJygeKX$zxB8Uxe{;17B4Q7qwdL5bHFtt>%h-em`O{#5jp2IhOQSLx4Bz_m0oL z7WpjZxr>sum6MMgx1D|MQst=Xm+hzL-nLkXYo`p#6Vim{YO}~3YzdLtk0{*NSxaYsB)W=s%(@H{@Uf$>R z^70lupU#WnZ|>IL+--i-dh>;Lw~5D_)|r5^M5QL=0fB z=(VDL+-5h;>?i&GEBgCaSbS=;$yadoCvrXOBvq=rHsdwgjMtbuRVNO3t$XqEFuZI| zLmHvbu7rL^>vTS{2Bn0U`k<81jrrJ|mJ&@O&ch+8SrX+OrDYEO&W?AZjm za8Sr#4S+|n8dqn&wAdBH(i(Bum3a-lI?qU;v!9dti&73*3DI0Ix1DvGcsf-}<}7Ej z6xD9!U+q9E|D>lxFmp7#H5aXV9pujPUTi?u{va2^PneF6?OG{}sc?7s{F;J%6>76k zTOlA`2478IDns*z2rDsc$Wwvt99i~7Vk7*UB+}78P&~jn+91)l`&4x2A;|F}!%P_! zT93uh%GJK;LD)@e3~pH!X^70P_?Tbuu|&R* zZ22%!f63eI7amFvecrdR>H5`D1$FZMiODe6fdSC ze!NOOqf&FGn5V#MGa(k!zFA@=EoPWnRu%BlFd{JZ_uC7EEs+jpGRBc-(e|q&yCs&Z}IyH*@OA zaMn>>CzA6Jys#c!)(RY*mxC@R(L5Q=>(P|{NfWbRCQD&ZmHtT;C)7H}&miwKBCQ%?!b;7sgat~&2a6j5L7ojb)*r_cIYZUY!z2GGCS!MZP-$MZAycD&o&d@MpvE(?($< zOw=|xhjdEi0=*B4Ke-yS*Wh#-ihoJr+_GByIWJ?2K=D7P0L;vZEg zKJ&0VQ$J5b@tkj7;klotF65}PHR1bEQ2gw4tH=Pd(>Wj%UzUdAUmA%_8-Lybihp!8 zey(HapDPr9xfC~`_$xY4vmCHh|Gt$}n+fK%US6?Vw0BbKm`_=I$7XI7)f8Zj-mdFHa6VJFps9t{{( zgHM`aaW8x_8$B2^*GCQlo5wNxtf(+6*lm%-IEtS^_ukK+#B=L#cmoctz`m{c#zy>V z6Iz4V*AIvLqist!SOH@*aotB$_$voGBC?UTtpa(iAVn zkW38e2#oLu*eQ2JHh)UYv{_5AY+%1eX`4B<8Lvq(7cCr3MWNvrAtqn2wrLO)jtUb9j_86fRE_Fe%+}NxO=?u%Dny}$R}~N0Mld9dZRGN? zQzL(m&6=*yUd%zZaD6rYktgywd9Nyp__FbjJOQW6yHruiM>TpqDm2rr!mMFMmRKJA zQgI|Jj9)fjCqH2kcJfozV;RF}>hbA9e7YLVJ>{t{SNrQkfv|VD1F$To455_Il)@UU zemlY%!8EK9R9GXZM?byj-v?`urx&~(tPyO}6gl$n$#_v%BgkPTsZ(natWk7JVGZ)` z2y5KdAuy=02It6xHH0&xu!e~R3JZ3$li+LwXSKr`L4`Fw zAQtdehd}n-!DIKtAy78(jt+sVg@sOHFqvldXd&Bkt}O;=q|_>()@Ciu{&xj@hwd0k z!d}}p%vfa?_}LRJfnQ5OHYWa+@INBUhU@}%F%(>o!b(cNe@lDPpTDIYwPVx7?#X`+ z{>R|I0L}>f?Dg8DpQQzmpTp~iq}$>M+rJ$CweV{N?r*+}jhJYZJd&d)0yGY|yR=85 zaMJA$2)n?qh2_1o5u*^B=Q4*B9c{$?t3WM@UrUtIFlN}%w>eM9 zQ7iQ4Z}5loPu3%TNWFxcQyyMs=#-q!@Ni#>lcuRQio{^YVUJaSZX)bSu{6BXt7Chhvq3YJJROjYKc&G~7m&9yyErdkujvW#Ef zjiWp9tvr0I07r+4E8{Eqc*VtKHQ9c(7_XXDN1vG+CNrHKX5<48$2I+^tZ%zm=)xv( zciNMUO#}~RZ3_ND+wdb=qSF^SQ#ytEVig1JmK}^lQgoozgHT?kH z3ek;kRDsjg=(`#{v(dAsm|OmeWw|9LHVK9m5_4v#VxgG9avt$Aug?K2qKcM9b*tzO z9L@!7ygV9%w4zRo!6H@HlHVxI-bzW6p$nxaCcqBA*Qo|6gx*j@@eM6|1RG(IWAIqx z)~+9K4nJEV<}lZiiI)14zWS5C#4Z$Wyh5N zLyV5?AvI_oe!SE7Bt4-8Qh9p3x1=Xz!V|bldV)up(w@Qagy13Kt=v2hV??4FoxsII z_1Q2L(G*M5JDy9xuhShhXEedy=8xu|%}!DM@E2EWmVP*9|D=V(?%(5$qzAb4jqMW+A-` zo_u(?6Y4g|Cyv7=j!}A=banm-e^cG~xesu;b}?3syYNT(_#+oz9)T~L83(5rOA%Sz zZj$WFL}aNnq3o9>a*i;azRu`+v=ySw63*KYp6Tqb*<3G>zvYVJ#90;+X(U|yi{as8 zepqIv#4-5EedG*uRRMJf96)= znaJ)W{7DeBAA|&jKOr4RjYPsmVpO~QhahuewAM>wkeGtRR4JSYjwRAORh~5or#SmmU67_1Jmro+MrFwD75;NR-HgBGD*3 z;lxwvPfM}~rRbN?p9G{8AljBVstJshSV_^SC2;+QI>Bju3oyGHKUs|xI?c&>3Ylh_ zLx|oCbaX0F-vo~t>v%AmpnZC{Q=g3$J@FHrQ*geM!)>SYh=(ao(R@Trr;}y}y)#~v zWqjyz^~z8`xLOrb1pf{B;hmrifUYad`_2$tp8!IF)?}>KGcNZizF2}UHlj}j-dio_ z-4HGSK5MJ6E=&A3##DT^l-8VPMvJ3+oqP(007bNgQuM8|LhgapZd*42t00 zT-Xlga6C6lKH+<-P^H|_$@!S+!=v{LsRiEXaSeN0P%h4xSR{+S%g? z-cT-#Hpv!GEJR`v5)TP=Jh4pFQXF+9YLFm)(tMXkGJ!vcN79TA6TF^tbkN-Kk>tb3 zM>6X!kK`^kJNM?1EMrV($49bO91l2-WC>^G3Z_Av{IZ41#Gm(K<}l2hhfGshRiJeN zGWo+=ytYU<{LLN-+Hgmr*~V-9&2*RQP{~p+NfVztiUTD$K>X*n?t*=UfwOrGp5Ydk zK+qBY4dIIK!LZ$E*oi&`XvjmKq2gEO%NHT`yTy3-2(n1?s7G(My*xGc<0_AgGzq+S z+Gg;7)0nYVM7WOeMdT54!xV7=vOEIwx+GNS&xsqe&dkt=BB7rZCKg*vC+&o^d^v0rY;PG136Ic2o zabNpIF1_9H`bJdLwIAttZRDMrjoImEndJ@FXJR)JJN01w5YMtSCY_(<$_?UK!Rg_Z zL+vmcC-QRBPv|+=50(8Gk-fyoj6i4UG2@|l@u2)4613iOv=CKQt#ctvTZ4 zD11d^+g#kvwn;z9-R<6Z;l^%beKuKu;24 zbK5zw8Ds9wiS>2n#J)ui1Ir}Ci8Y%NDGjWeZp(?Chs)z-_wHJc?&O``16pi%3tiKM zMjxFqn6Ai$WMdLbk&dB?m6{8DBTmth?s!NYUeMJ07wQGX8*)jh1w=OLl~Y7~gBve- zzh+2UA;hO^eDNY&(>kY-qMKXcng$`;l-w4XAvRy$I%)B&qvF}kDxT#$*Wpz6JZ7nQwo%2i^E-=Yom<4SM0=cWaI)d_grnkF zrw<;;fzv@e>x`6R*Xb;t-K^r-*Qdal3P;7W4|EpKzM$e+ryR3p!%2&08&{!v52|-# z0g>SXEFd_Xh3cWGHn%J-o^2>b!x79^@x}Z~JY0{ZY31y!4$9eS9h9@Lbx_Vu>-T=; z>}$7E&dw^tQVS2KYYd@){$`V}_`R8Y{mCE38g`qgxPViKXVs>brs8Hi3p z)IoG6wvdcbj_7PeXDKa^yYZck<*(=CdfHe%S}fG5lJTHbGE1PkV~8F{RE_1M>%?I! zx&mL`il`dPM`=B=5m7akj|TDOeu(x*bO54iEFWd^U>s33mXA(EbP}TXBRW}JzU#QP z9>v%aj2(_>Bcc^JQHk%?D-+eiciG+4$tG`w1?b?3!19>m0PfzwFoOGF7mHVqhY4AP zOpUaMaa05t&8hUD%$2%uf~*5{vWr<+StJ;zdxyCUDX2p%jM!}(9KQ8!8ytQZ<(^d< z8SD)KtoAkJ``y~tP`-DQc3z1d7J4j@sgt!{s-VkHz+NjISqpJ>4{VY``-lM`DrR)4ipzhq;b)5!5s`?EO zq^fk+S>^kEg1U3H>%4&=Rekub^AhG0*PVyG<7LPDA#Yaa-cvvZ?L8BB=si0j4|nc8 zx%K@pjYtTzTPO5>moqPx?$x+lBay6DFLduI`WJ3fuJJ=_z+hI+DqgdP2^V)T50s8| zGN~O@2auaVfq-c$=OeiQpMMz1B}i5wxfIE2JhKwXN03~NXV&0P*5mWrklcn%$Es{0( z@eVxGjARp@IgDg0k{6LYh2)b+K91yhyml5zeg%klE0ElZN%RAISko4n%SYk})LXNRCBv0+JJvoP^~4NKQslk%8n6*I{r z4Rwa3X>i3pUx}|;_$sNhY2J>or`T7LF%?vWj$zbP;u=4jg=;*2Nr*a+S9%L0=#__M zw#7Q6hJ==mR2Icg2<#9)Vbf}n@Lw-tu6?y==6~8~)}Ii=r1f|E6ptf3wfk_-AgIu~ zyRdzn*M;M}w9!ZA`zCri&g;UWMdz?Lfmu!m%8{wqY-BgS&l9Qu-`5#yr1M;FN-?IS z5n75OrIImoy&E{KneI&%V^vmeH>;ZYGJhwr)?Na;s-0kCue=Sx#_m9{v0K^+Ha2ms zGr#2kGP@2oV6&j|-i2Ue_r6K6VfA%ef{lF#f{i`q?gSe?7xwI%1RHx*=K!)irG*TY z05Urtw%bmyk>d79`%IaouYIf&wZ`5cL_W^5>_a!HHFla>WB2>8(POsNIjDth`LxRC z-F!rtQB*O9H%pO8d(vhe*-y56jmCLlvnAct?t}0kxGd49iV2T31I;sG(S%_iK2eNM zD2alk3qFbTeqrHZ^OYCCr9%Lg(hqr36^YHZxSr?QrQpjnz5dXr{J9&7`qp2m?= zIKl!WBC_-&Q*oq7l8;P{)Ob<@YlwyFF~<{uIRA9cmnkFFXQ9sxhDo;Y3OqdB=#OEj zCT8^9nQB6DoSYh*2eETxlURwrv+#GVC>@Q`rI_3-yphSHq<^Pyi3SK9rqM<+kB%qI7r9=G z?$j#QiJYxF1&Lu%op{qNiI*+8LIM12>}Z5nvlnBBVXOh4$w!?hy}!H^S)i+NVm&^? zU#P|RcfifYi5z^!#`kl@ws-6XRBpr7E0#`PqJ4&dhLVIeTh!& z#e21Q>kJNQ?P0Ycn|jhyvXN#ziLCR8*b;vI-W1tFtppC0A&V+b2iY@`RgMTNlS&1m zxn}si`0>_@esEPSzPkhE{3JQBZG1Nu<@C5Skcjzxv*&c2Z!STis-1o_ZKcp}%2uOd zjSM|kZoA`r@Z-(;OPhbov;K;nn5Of=G9ALM9P~l-8?OJvF!e~Eau@ndf_F{Ng^x4q zpV!X7NibRC-n3~mEaBDM91&KasZR7DRSSen5^Ta{eE^$AN~A2idp_w|^tv~X1{X7z zeG@ViR;n5)#zC&`60&!3Wt#TC4mn}uG$5}@BceuPSdmy^^Q8)@Ug49-XVAQ$`AwF% z)nal>!8^AXPd2*tL^gNqN+E%N?h!4YNN`;VI@<)vWmO{@hBJ0r#>3MN?H@hfI)5(; zTM#~ga07BbT)cJoBgR|54TL@KkGBpp-kRCgnFx1BxCg?$5blj|H-xhh?ul?;gzrO` zEif}H%;}9N=@GumPL3j$nQxPsjIDznVgv$_~f$%hh z9fW5hT!h@t@z!s@FW$NU;VguQBD@RXe1u(uM#O&(+2oFGbAi_fsjv*XJcr3yb5T1zeB!urrcrwCf zhv^t{y%XU)c}FH*vF%Dx30@(51_}x&2%`5LpGp!%WF_bdbd3jv8qzv+TuwA6_9( zri*aWo~3v>Ajo8Lvk`6)m$wjXKosY zHmz5AveU!)y4I_QO5rBpPKR425`K3YTnDa-XITinJX^?J?i}rrSK;a&keq*fCyp23 zcowea;kc6X-^<5)F5Ve|cg*-wJ;Oh%p5dQOuYtcj4)-KZJ_>go&Z`Le@3!KHhj8s6 zu4y>z^-Z{bLTH?S*AM4A=%9b7I_PU-acu(raw6PGaPNmZ87I?g;HxG0YMPw?mzCmx z!DifNp@Ck<^ATBq*u%KK1gn=~Xccl*d=YsBk=2N-L1aA&wn;X6WHTaL5YhWPr3Dea zzhh1#at2SIL*y|;E+Fy*B2VGzHsn5t$U@XCLgXRTEXG^Q@bAkJS&K*wB0Esjj7SqA zhY@MTvlkILg{PlHpcSL$1w-+M4 z5$T41&qkytB7G6L50O5IsO4;AFd`vDB8ZHXL!9?F5=CSjBDp9Ujc12pir(L+ry^2{ zNCHn!N2Cmq8Hh~7(++ZHB2t7gp{DVdPN6 zcA+*OwJxTNz?6L$S&Wf-f1lC&`-~zI_a8&-I3g$U^rMKZLu3OYE6}Loi<*Oo?8l~! zDA^TR zc*H!vk0a+v$SuH{i#24&WHNu-(PlT8!#tu$IGG3#$g!4p_~wnqVCko!$2?Y9W_y zis@pVtdo6%U&r!dsIT3{+UkmGI*f6u61YnMhjY6C4y$tj$M`u9O(m{c zxT=kVWx-o0fe}og{{Ir!;B;xtf-@vIn+Gv5TM@-{9`ye~OI)i(K4UKv;*gIf(%l4x zvU^I39LYlDws}-CN%+gdHde)wHl1^*;$g9R!)rGp)(z4;?!*gul5sDMm6?B~#gc@H zSfxxdbS6uPQi-rkWUjEVVO68^vbULaND!$2_P(_JI~gqXQWu3Q@a6)cUwYQdyT3;k zA8q<-k=ddM@BuN|Zd)rmiKi7FlG)CyrLafz2yNM&1K=WfPm$_Oq9`h{u}DRmsUaHt z3cGM5A4iU$Y`jp8hn@Urk#NH%OMj77(r&yq$&yRKFYAWkvT#}qi9o{D^lDFD4*vUVF#oA?BE0;QTrekBnbv((msf9s@_37`o%lQ zgl6)?*W=i&CPF4T)O@uDyg`qzBEe+-Q-A+mexpJm@N=2<(6!gYth$agHWU4jwq>&| z(NsDX98O?4do=}>iUN+1%%*Yh?D%@I!8Z(lqt`RkhzHfh%Zn?#N)KxL=9NB<|L&!q zi5K25N*{!FsdFDndB8Od|_OnK$}gUSMEp?r#!R|QU-;W{!VNdy{O`d$2=_b z$Dk34+F~%^{$2fopXNm?!l(IOhC|+fK6SWMB+&zx>d~KR^87k=sOL8d3+Tk-fH&fD z9iA=10q8}bc^#LfX`k&v5hwDkiQw^lxnlS0H`=e?Xn!I0 zH)wxdge?6@-$Kbz8p1>{rAN-K$3UjnF}+Bi7rrC!-CR02)niK`wlv^J`f5MYzn#H2 z&IZNeiu9SPM{}XdLhEoKBH!YGx&iaE@!k>Fath&4xD>{V z+!2^dP6AJPauRr~@4}&c9NLF7#W<6O@5sLjI0&R?BI2t+fhW@{(>XXyS^E27U>N1U zkbOjoQ3YP)$Kz*n(R&1Xn@x;r$}yrcuw$@Ks+#zK;?Mg9rFRd&ZdI+;82P^^+0Go0 z;hKlr>=*&|=>yW1=PyNA3ZTjKBvNQLF|$a=C0IZM&H68+cUXY28WE%@1H z^s2=#_F|#7u3tTa)sLa?1^mSm81WQdK8@`<+j6<`6?PbM3O{-rU7y5XpT`fNi zT6-X;H~RM#FyUu8_`)Fc8jPRW_{C`HlB5jQ*78SFvAq<16Ifk_t}`%VTKlx?uZ!^2 za{OR6UY>=&m?J7tMrr@|c>H(zGX6Q~5sPp-bN zoUpvqJg|6v9grQKIE=4V_B3v`+y{Kj=oup$zSL%WFheJFMXay#P&5=X<_RrLmcf2x z$0W1Z+_*Cl$On9$9zp4XuSA zKb%o^LhTJLpHx;>mvlH|KuLGqVf7H!jnx}gH(1%?&}j9Ab)W2$vV{&3GiNI#dLFm-jMTIYc_85hSo>#4Y`?H$L>ioqs5x=D6A4m^Ryb} zUL35$iXt2gV}(iRKC6!Itgb2W-+_#?su{FJsgW^FN_4v(wxtYGQv>ihrC4Sua;n9b zn>G2lHRxK4VzNOR(47JVF279Vs3qn(T4JgMsjH1*GDC{Q>D1JvmncS9f$STG4?$#i z_I$X+wM{3_2QY}@H7yCYXi2c868~(f0t^34t_X`Laz$7~5lHF0O8YN`RSjz;tVdw2 zma6*?c9r)3{jO4C7kQc@s)dRvJPcUW5yAM~t<&eqf{y{bXIXfP||%QWg`ot2Lo{%!AUr$)hwil&u-`N!Vb!X0-uvtYP# zZo6i5Vq)pUgs05!ZsnLVwI1In#5Wr7ts;EO{DhNtWyt)Pi4r`F8t@fTD|g`KCeS4& z!3CyccRvX*I$Zd1uDC8Q-~_n{U*SxX>y2(y?2Gr|?PBrg=ehY8+@K2a7sg1Z0$thh zvEBRdg1*g~Ma5m0isKge4&bxgKUL6|eXdi;MOhnK*-?_Qw&?aD7rtirn%V_@R5STb zp^O*^83pIjU8|sRxHp16))?cY%pgI|HwK@bg0ghTMfP;~NLnCYNQlW!yv~BY`eM`{LErIW#Y6UBkF=Vv`=eq*?ITXL0$sMk zcL=_N!npX+Ms@K$Atb{t{nX=kfSURa5hliu;+i-=0Y0t7eD@27gvw2d2z(t0c(od7 zy+afY30rJE=CT+F>r&CphooX2jt4AhDu;3Xq;1TlsWfy)V<%#Ys0RFsXbFFffJqU4 z#aGZJ^ebILzcS_V0g0%BsT=kLaK&CQbFIoRbW#gkRYqP1D_~#SwY$3kQcRY&kmEe1ykk3Qlx0l%x8Rua}3}&n_AE5;Z zJ&e#2gsKo)icmE|D-n7Gq16bjL1;Zf+Ys80&}M|T2%#lJT1yK;2gI{9bQ+;E2%SUd zF=4rcoeuM%DWg^rap&khJLZ~-F-4Mz~s3$^w5xNhd zJ_zL?Gzg)=2!#-eAT$yo8=+AMMG?wHXdFVL5hB@U3_??cauX^=D1p#)gvt<_fzULB z9E4^fL=sLpLbHX66Pkli7*kgvv z*%5>oYBpYs)I#+L9Yg3iLMIV=6rptpZ9r%RLR%3!gwR2R_9L_rp-l*#Kq!b%KZN=t zGytK22n|6fhEN=#u?S5-Xd*(B5V{|s$>MY!vJg6oPzgfA5o(m%M40Gg9S%j%pULlG z5gmxBj#-@Z1R3KNJ%pzuwWtfk5GIq$R#BTShK^0~oW2WRyxcPAR;l5(rr_Uqz zKsFBaYht(lya&(kgVYRsWs(oceB%ya^g(>@LtoNibF}6I$zMITgk5C`EjdKl0cvdQ?713{zStwczet_?L@cn&= z6w63-_NTPC*j$a?#pq4z9_oWCB!>HnB|iTSAI~BMb~?*Z)|($hG)2g?aTb%6ZL~ zBC}dzc3Gyn)G?WH-T@rpw!auFmcb?qx<>fe*PF1hRZJVM`ow)`g&*aa$m}kLYzYPM z+2&BpPBJGIPaAa($Xy~!=Uhkj;2(G6b30K{fY0TjVkrJ`7gpqB1ugw=Ty5Tqb+9%F z8A%m#i~7m` zWtwnuHuGZcMxX!z-Quoqz=9RH%rFtdJqzM;e=IQcGmRIK#mN@Nf=$1;TL_~5>fgTu z=N$>6WQS&c9D=Cd5JY(>kR$q`38L?F;N(2wCP7rk0UtmR<(@{OAonzmc>J_nICk%S zI3GZOR-7D7J|M3Co*RP(oiZHkIAsWn8^fR8I$y9PLMX2ewaU(_t(UafE`?ZWiKI(1 zo0J1kuBwD`v)H)Wxtv&uc?I4lzRmsQM@9HiB{D2z82zmN<~9AzYq~pez)IYEp-y(p zsLMMaE;-u|!(Af$9Cs<)Y7suTj|e}<)yLo626ww;QMt;`areS)5qy=~rh6JxG2E7) zLs5f_nUtU7E`z&VR3Uugh>y9=LS1tY3m)q#KgWF%uJUtS<>#CLTn}6?Tp!$wc7BfQ z7jljpfZJViX5C(Jd&BJ}n$<;|_wW{2Vu;@p(4fQE;Ph$4Twvjuwun zI|l9)Nd|XIaa(>4F)p_pZU=tOiB)jbh{oM1Hp^~SJDg5MiEO+s+!1mZxy3@za>-U5 zFKh~zN6ay}O3rbWoa1sgTcPywL+Y!xUxG_qZfi=;;pXP*=H}|=CJ=O7UDqbS?Lf|v zW6OejRE@cY3*(OWkt}7-bS$29I`ZH#x~LMrEW{!Uza%tQr*`pXJ~Cf;hItR8Y6->}|NrJu|K8i0sACmUd0Y<M#bVQq$BbA690dstat@+Eis?N&t3u*gas= zKeP93G#ynrH%(J7bH^SDZrYJiu%ocY;c_lUj)px9LpctZ0(&a#QrHRD(OSwM9krS35S)paB{qq zF&pX;Ifkm^I-Yn`gc4MCRINZ{E2<9R@(J z_3~I;o`9-}olH|B7B(D3RSBw0V6-Wlx65#|@j_~VUuWE0Bz zOIdG> zPe)^0jK=Pei_LoVW-fLi##f-3QPdnpGkBUGfb(b*GfjrTjeu#jY2p{}sgFQUo*FzC zXw$^%k-RuH*_H$`dL!uO$w!`aj#9GGXsAk%r#i%dV zY$g$Gfs6yLu8|!{(z`gS*dZ+{Cqxn?+6Np*G8>c^w!*}mx$4ep(zv+W*W-^hv5PYc zCU$XJVG_Ik*b)rcvp~M7X9+x2VxZxvzJojQZ*Nze*9;FY*I}KfUzF=c;uB>=p7ZdW zmA?3nyCS#5%-_JBI2ZHAeSCM~PP<~Bx)bw3zO5r}dRHu^TiUUE;!8}Bp|qp1135Wf zku3dO*Xl{G>h*Yo-D``$v#$`9<%3y+$vcDvo#OM@3zM^PvL}A7E3-5QZ?I{N%Iqv+ zh*d;E333wEbXA2)%fWiwzX8v(Y2AvYq*QIhFE-&l?OUH6fL{#6dqc2P)7kE)42_Qu z&+$GoS^i_5*F3m+Wb>rv@y&yqAB=CeR01ozGCYDXGPjWnLOx+5P`*}{hwBq?Aki0| zKIp0s4(o8ABh%#Tvyjm0nw=d9D($HXmAJ^bG;UmK4_>knuW!P;Y7hSUK)gEyCAy(y zSh)BA4w;lRlaJOhi|`VL&BGOnRvLuk^ddzoMM86Wu@ZyoF{KbwEDYjy%CID3GNWu> zdZ2j>9#SirXdEVTL#XJ53R|;{isS)IP>??VH&RAd-MNak7s6fyTdQcHL@t*z%T&>J zb9)tS-%>?08cb?GKp-hrfIiq6u)9bVZTn$o!oFJ-ZFi`mSwNa9+D=!|cCLhvu!^=n zL=|0C-boqFQ<7D*t#f}{t7tn#Bf24Y^pUIP^r8) z9;U%;sh=x(gi)TkQ$(rjs7^IDFSPQYk4GiK^y{{S6xvpsHfyZ|^@ElU`+Q;e(oVm$ zEcR;>E0e;+`&9e!ZN>pryYg*%On;UiiAl<)wpn^h2*RB#^^E1(oh#a1Hr2x6-dTZ7no#J1r%3d}bn zwgs_TT-%Gr7I9-E)Ja)i>L79+L{vE_)Z zMXUy~9T?Y)SQBE0@tmfm$4+6}lZZWzapy7dEdEOmz8FX6Uc`JDmw{Lp#JVEpM@-?P zSa-yFAl3`9-iUQWEE_RROOM@$SRcf45F3QpV8lXrj)M1*h}pO{3b80+An~GQ|VhO~iBUXlSGZ34G|8nr$OvJSJnK&EUW+6654Cr`##8me6KRXdC!2e_+ zmWS9-k$s6+-bHK#V*4QWESK=u5ya-k!+3*b2n9B6bMR z9mI3{@$-#{Z9?n>VnM|EA=V$U0f-GmY=~r<|2&T8#^O1ZeZ?jrc0Xd1G11IQ((~n= zjd+{b;78Y6y|Nem(ww><-mTYZNOU}wFRvjNmwO;guX zqqnj;=&h#R;(BVuZ?Csvcl@2S-ip&zdY%jFenZ^Bhh3!>k7)~^;w9}YwGdd39XfRu zokbQr)Gnk&78kfV82y3~BWyj!6MUk0Wnl9Vmie?l-ispL!^#SzKN1h*y zV8Xe@@N=tg#bV+KkHb&o-`r~-&SfCb6@I_)A^)1`Go!J140;)qo-QKOME)ktf_`R` z$VP&?pTL5;h1mJ96@YD>2LiCI<_X#$TDIv71dm}lzX%t*>WaeI4B=Q-{5<+a0O-&tIY~grkGp5Ig zK5At`%JP*JK2am`TRe&v`Pk+VInh?Mb&aG9Ts|OKmhOYFC;}y(rhTZ}jJziFX%+85 z=|Q}(C=S)ugL%-CwKFA>HghB>2)#TCc{+>993wfH^2HgrL-#7S;TpSBm5-`Rc-=7SuvfjVy=p@Y&V=?TD-uors04phffeRUk)y)z z#X+QgHJ0Lp&JrxBSbv6P_X{jQ;9&%oAW((CQUt0ISc$+R2&_h64FZg+--ZAKvNt2J z1p(~}11$&~K%fC5P9tyzfpZ8vhQI{`o{(Jo05uK|%7PDY**}E9Vg!~UupEK42-G03 z1A%4)nh-dQKq~?l5jcgwlL$PHzpLu2#l6aHZTT( zDF{qOpcH`w0@D#FLtq91(^Q}_6M-U(C`Vv60<#d9gFqO8RS4`sfP?RyI{VH-AP<3| zqUH$XBj6%10)c%96eDm1f$=gNryi>C7y`!;IElcc2&_Y30|F}$*owd*1P&swAAyYs zY(n4!0zm}&A}q&ROjK`W&%ZCV_z-1?09Jkf*7sO~@YpR`}1#kdX~97d$}{GoGgIBj^ZEj1N&0 z+g0{`Z2GiI70HZYyc_!$)o7Dd*j4j4`!eg{7=kMhJOs}{k)<%$F-VO`9G)qBXtI;b4Wdg)CHuTKsf9=_Lh2!;79+I` zspUwmMXCm=9Y{4J)r8bxq=;NyMCue$Pa^d=Qsc)s1Su`#Qsx*shSYJSP9pUvQtOb~fYb`4 zwjy;1se?%EM`|Ndn~*wzR8T@3QvHz{fYd;wh9DI~Dvs1xq$VIW5vfU%?~s}-792eN zd7Pz6kQ$Cuqh30G&b?SZ49m@N%+ikkS&MhLx@^3|pA&GSamRXO*W%1xe1foZ4zg{W zQMCCJW|qAVhD1c=)ZEGH?RFHcC1_=JQHvVVR(HU*QA0S0#MA`>k-bxkXZb@O0o<}| zJgeI~|L;4WlDu-O8Et356T&9EX!_MY zU4l;&mf<6O0B^4qM&fHcs))?=mADqNJzpDxx5E;>YUyLhDy#gYxLwg3;e|tZS2>3* ziX8g-qj3O;95Nu|g&11ms2_`WC!l`3zatS6=O2Ar$TX(a#!Q{}|#gRRbCwm@~ z&>4en6txeCZjM9q?)<))=*};zqnybPA%kaM7i2_apfj2G!rXmxr;N>Jr4H`*qM%ld zd2L)7h5~+tO1#8pcCtK`FLlh9*I4=MPhh}p3l9d$&%gjv6dC5K(aYQ@MbhE&tVV7P zm%mw!Xt?~%f@A?+T`%`KPob*o8a790@p%tkRg%Nl1-*q^3090=UyCc{` z=xsq}YjzWmFi3`5UvVsy(3Tv@Z3zxWFoYm$HZ8V$k3ul2&ZXm2S~%=C4yXQb7X3@e z^x%%2k0Q8Eo(nmlw#p$zHg9l0f*TRsgy0DTd0O?;({liV0}&h|hgUF;;8+BC zcuhob5`y<5$cIIxUQ0S!^jD*0HM%zlM%`G0o^|*|FG(z=!*EMqG!_Z%7mM(`z7cCtBGuMTSOuy^(E`A%@Fo{UBT$s~;rZ!2v9)K>&eKG;?|*$Mcn#aXW~|~j+WfraCd$P;?{WSp1xI&r;pte*4EP&zSWVnH6PvuXn7dk zCGb|kyA^Wk;j9Rcq?c#GjZ0xzGD@$i~w^BBCx z;XR42kHWhS-VN}sfOjjrhu}R3uX^2hH^F-X-XOgF;O!6Z0C)$&I|SYs#>C+r3-1JY zC&D`k-uvO5jIQbG%Uc5PaCjR<|IQQhq|%d4@?GTH-i_@ z#J4C#a2A^Q`Z}VjBl5fiiK=!V%f!kLijl2m71|;rs{czvhSMlL^N}+vOFN9H=3TsF z&RrcL0^e_EL{;5kL{& z$*g2laiYVBYHl&+nlf7rU~kPDDC1Juio~JzoV$PToO4HlO<6kUE)m1O$8Vo=H`hY_ zQ6&B!cW(k6<(ZxN|GuKCD1-p96#@e;39*R9F2rJtF_enc7>{WXV1vP8vDu9CU7lcBdETq?2)yo{78T?f=~O zQ-NfI-R@$+BJ@w-`*5wSb!q&GRH|5d&Psh!RvEvD{@#aa=QB8E&g_ToqqAK}vC6J=xRDn`yMe zi2p5Qvay#%!U`m-JY-JziB&|>X2&7cQ<+-{k!lvX!I~oHc;hM4rKX5Xvet0D#%sD1 zMNViUgI%h%l0onMm_}{-LJYs@R=T#1WrQ7RQ>}J=>zIHG;dSCXXym1Dz33u_)T2s) zgkT7r>-<@nfYJbGS0elU0nUD3s(E30X<54*GDuC8$e&d4Ck>QqEY2rrQywB3!v(wT zgO!TRwNF$|HTVJRcy^+x188(KEg>HII+YWsY$37DIqfT5pNP-DI=`II3PNiL-AAaA z&{{(432h?upc(jwwh-FR{D%qcCA5oB6QMnp)r5`^dW=?G+Y^M&5_*czc|y++lDg+I zp>rm%4Xq+1rLD@S)r8g&y5B5NLK{r}6KW%rCUl%ohQEB4P>#^kgq|dH$#mjYc0njW zs0X1SA?b5fh4my9Ayh`F7ol=OeF*g<)SpmqLW2lt#6XnLKth8FRWg4#p%H{`wAw8s zKh+qan+e4UO*e1V&}9B{9HA++&L%X6P?AuB(0oGk2rV#idZ^wMNp{;85n4>>4nlXD zg^PA;=pZ4#Sun=>1)&;i7K9EE8cirgXc8gcF!=u$)B-p~$PJ?pJx*vFp&f)a z6536uozO8tM;Wn`&_jeYr@n&F5JE!<4I^{|p^=2@7%`R5G(xv_n__Q^O6lcELNf?W zB-BdCnRBMskiL&}Bk8rI*Ymwiq#xwyW{zy($aaoDOj^^8ojGTE562(nC1=j5HI{yY z^jXqRkv>ma@%$p`%LcEdqy_vOIt~A;GKP>+eoKLA19r$BOsk4 z{WR$(Nnhfn3kC@M6f@^c%hV`HIz&25x+kY2q{~S6B3;f)eMtA?o&KbIlODv8zI-oA zdLTy!bEJ~v!_AyCeIw~=(l?Qgar|b|anl;7r8u5UdK@oJAw8S)9MVbB3DWaP&m+Bn z^jy;Qq!-!{=ky|8T1?sE2 z^i=~~hr>64^qke+Bx9ce$R_<)a(|ND`|iAtV#qLSxZ7+1@< zuKj`?bPT0qFPpV@s@bfyx`$6WY^O5qg7ZxzVti^8l{%;NuR7fI5uWRz$PA>J&pL|f zXMKvJi+C!3f{J*4taDY5wzFZ^uJF-1|Bn;+k4uc!BB$$sFcaU7`w-uhpRiEbH2+f< zjq)74hA znM-rUaU;hnUs83cu_+Z#QgMlj3#PVEM5+i_i=iS&MTm;9jSi`ZP;nh3VQJrwKoTl` zE+paJMN}-dM62RXXN2_t2M<#5i0k?ZNl@c&00+g(^?{=j#9cAL%*WJ!k+XsNFBQ%) z@BUv6o^Zch_`2c=dR}|X3`*SZMlqZvFx1UdQK_0e#&GEer_k4kAH9jVwH2BTs^zpC2`Zy&h~7uEk?2~6 ztS7pO=z~Nz6Wu~|JJE-U?&Y~%M4O22Vfv%2JVNv_h8$x06GYDveTt~_0*YQ_PjoBM4Mg`5Z6lf{dYov6kjsTmgoVZqlw;4EJbt@(ZfV15Pgo06AW3#AKt={2KMW@ zoMQTEqFJJk6WwNsTy!HBb`x!9w1Nvmhz=z>jOYzSM-r`L!2h|p0+s+Y;%vVDy1`>*{wx}zw1`l*AoOO&ynFAXpt<= z^6NAB^@&dYwuJM3?_jONX@3TR?YM`D>?N{`NKS>^@<(^E%&E-Mmj)TeibSN<}2o zZYOfg#M+UaL>?k?#yX*qA(RazGK|O#L`FLEy{SZ|5xJGfOd_+0+~#^8wXP{yYLZ4; zO^s4>O<}CM|LXf6vSF-`kGJ_{j|*1ymF$92x7bL;u;Y!tx082-Gdte+I}T@-HqELh zr8-J%1oYMNYtEf`g)|FNxX6xJzh6i|8kQw=`2VzzGG|jP_r(=1iPC8z#=8dJ$n0IG zm6~p9iWvvq{YFi(GTENU&P8RT{6PHVG>eT5`yat=q=i*?pTY-rR$*+&04>QmmXz)jF-kSfBDBI zrH^`)O-FvAab1mV#L_11jAh<0?TlS8QhE$x0polkKYp2EA^UY-l?*wI@+FI%tj8Wdt#eQd^0V0y+)KXx68EbSLpQ) zt5KaIG)9ePtu))(&Mj6S8dNLU_m%bE+)r^2xfE->OKDm-D&JSF&nm~q5Mn9Y+iIhK zv{muO0W1Le-mT3BLHB4j%p~DRS$cncmfk-hY-BI9s?A;b&MNNQ%Tjj%U#m9fSY5-{ ze7CyN7reQOo15ubWj0N_tJtl^Su^{D|5UNhFWj2V%jHHDS&G#@3rk}b1@efsCBBwl z=q+KW1XlA5vmKz{$IMkjJ$>Cb1ry!3iitF~QYmCru<8~P_ZXIySWV(d7ndlZnmtKG zNDQ_SZx*KXT*PMI;jlp;5|q^L3KDp$dul#bCU&3DTD|AJ_O?0-6G0MT67EFvdYJ); zwfJ>Rb~_r++Zx7jy78%9+nPu z1Wo>*=tr#J-}Z6oQ9Gf&5v-ywA#_(^w!`R!2!@RZ8%iPX1Jzl4!XC|_=us_z?E zYc2}WiQ#T=Qmj)4A$CM^3fbA_-kD00 zNZ2$1J>|p#L;t*ba~e;$co?|DMhOU2PU!yB7?|8m?{K1XMxLjoeu|FMB(ek^H()Te z!vvdxkyGuR4drCX%D~zXL*8#?kSsNnJ7$uYMdCIRw;N$E;h8g}4#3cL9>(aMY#GLuotzuSIn6xPkkg$k8^*G&bVP0POF*(R?MiJ)Jw82}2IhIpQ%ay@ zKoF>)7zdju?8H1Ll5*iFCb(5MT=!7Pxl(8?JT0mcg|gkFy}z1`$ycXFnL3c7Bh|-; zGj#-0Z)9pU|Kv#Z@tY~eX&OawI#VYza~!j#&@`L6ITVvLC73*)rg=0iVDelh*E7{k zx_{A`4AiBvy^8Dp7zfXSnooMQ4MCi^Br&vE7i)0Xj@ zx0t8>ZUIN9XgW<(mb%Aja-{kh8=1VD8STW65kJbz(!Beo3MM;J{fyGQ`x$l2EX})b znn}|vnr@@%cIq4wwfiKyXRv!BlUteWx@i+1HIH;1SQ9nuPnW%tuwy&F+Jmt6pv=P? z+yULpz$ykxeWn-tqBF5}TWF}I!EtwkXYriWMdn>*(K-HV zCG~D#iXY@(U&q((XTesJkSLu zNPVdDba*|&+r5~tU|!CGJ{Hmw3hBN1+8~mBX^isTKr7GRu4L|TmX08CqfH4(+=McX zw-wmqog%NqWQ*{PQ>dTKqB(3xQlDU+3vn+kVBTC7)$>;ic}WbVMRY7?(H+dYlX|y! z6zf_aap6wAvoW1Puk`@0kLLAMr^xHQ37wV~fm=E)FI34UPE(&{(c{!_{Vc8D)3uhXrrW|&gD@qAIQDXIQ{ua@8QtV-%wNkDaL zGtWC?3cakOis!ZVT5Rdo={3#HM99y_d}nNz*Qv6w)G=mNh7L!`#OBsASB6C^th7n! zgZ6YIjUQF`^(?1S1lA8a2lZV%cL>(_Z8dRABv07DUClfgGRp$5A9oEhKV%W8bc%^8 zW}USv9(>N;f3+g;wvq$bHSNC?pYO8E&_(JBm5&8{*1Bx%(*__1_R*GhMnI!z(;m?) z^^MYa+KF16&TKiMZ>RlunAikUz$vF1e!<>w_*@d|w5rGIlYS+7+G0RrP;V%ykpRh? zETaw{Llk4;~HSmuuY_4Uq$3L#HY3zAdTB@`8$yjN~U{?~p^2`S78fblvJ4d44RL{o# z68&3z@8vwdg4`M|-bb#H+*)$$`SB)l4|0ApU*E#Fwv&69++K3K$TgAML+(*>N60*c4xcO$uKayM~4M($=_h?5&dZaTTiTpCAi3g>5&n?o*1 zEumA;N5dn&r7eGwKbXNEOeEJzPC|)h6FWD^ z|4`0{nrow=;iAerE>l2YkpJwub>$_FM7e9#RgI=9)v3=)P9W(bjPgU%XKk~5HQ`qKS0{46 z(^8eMV2uK7Gru2TjSH>6?=JF-wR}<6+2AY_OEqlFvnf~MM`@1{9!I;rm%fy8X63i4 zgC_F#t$gk<)>xTHvekSqE%rXaYdO9V!KY6y~v6H!Kt@A@6f!DIr`J|x8#U_&a zq3hgvVtPAbYEW&vR44i5eReuGt38^%hMmsMYM8#yPDe$zvPvH((XsB>8ajHEEgaSn zFCv6Hbd-A>7H+8%R_J|&txwfBLEq2+dZ)}GdPz(-o?a5u=_c2rTWwr8f6MGOV^aOB z)TP5`upgjiG&L!npVXP0_{2HAW>giUe6h^s?n;^WX=EI-t?Vu)C+9IVh`4*0SreEg zX^hjwc-PX!sP=qw25(Mem2@$UMri4`-Y5`p<;-eQAF(4lu+@^@-x86yjo;8Um(kDh zNq%b(@xB~Y)~b9}4eOivjkv+W)eap}w>mX}l(QxAdBTm3kpK1$YBw@&H*Gsv{18ir z@OA~`hEh9>#W%2YByEn6->4uXTR#~VZ8pF}vy&88WgFW|0dO_t>sWBVvnsm8{ko)p zwG~q8w)dpG-16#qy;(4bfZU2I&2CpuS()(t3QBhyKS81CJyr2L9P3+^xC?zc6xwFc zw)|r=^RM*Ng;$UKx%%l@*H7>7`stO|>ZiZTb^7ULuBBf7@tFDIA_^ulX8v?LII@$C z=OF!8|JhW`p(05|f@{vy8@Z@kKmFAQEFbdX&l!CFfU8W$82{=WC{CS91Q1!gWv5e+K<0I=`!3hsJHj+n zbzXD(2Ad)Lxi*~l`=mYANmhYy>$KM%OG)lz-uVQByKf2QT{7V9kvmDSEYsw*FC zAiUsNZN{Ve3T_+z;5tT#VlTuF8L3aVYmj?!l_~|*2p(0<4v21cz_pWD`c+RK!H+9` zCi}1IlKq!#-`+byK(n_FAwGHFEPY%^{>BIFzkW^EFWfRf;Fn>FSnd4Q`br)iCotW)cDrF=GJE-32XzLL z1QG=1J8XOb0XL90pmv_)lLrw0LHA0_0|&d9BGxzuu(1RV5ExA$vSCe_Pbex<^k_ z=l+&Q*s`C78aw^B3@|8r%YhH@qQ%iYVc0@h3D|km0Xu@V6AsqanfMPI-_MRV%JCU| zSUWM4fAG1-Bl!?^^rM~?Sw66n_yk8=tq_=@jz*Pnam5x3tKF25TlwUDcbV&eo zAgaGvIfaT3O#n1EsDzU(VcrUN5dbL zW6T{!ny_r)ow;wUR(>*`~ zDH`|*p#cMGRK~i#-T;pQE3F}Tx`(Awr=KI}5L*3aj_b(J@mIBPfV0`|mA4zaOyIfFKd+0=!{UpkOKm^rDmcG-%YQs&?~bRTX*>VkwLjWbtt_y^G39I`7AI$pcoO@!>4(k~%$fXdM}rA727@iAm8qz3(C ziXH)0I6lT>ZZt+vapM4uqiHPl;HFGqO4qwIk>#yCwS*0hBk`u|XT9lO;3&1v2_PGyGG&(bGH`_uG(l75%?$py-VX~32Mi+XT5NLh&E&amZ2 z5!ROR8E4ostPdKl_t(y_rF{@T>C301e0v~&KA7h!`R~KIID+Gj-S?B5cqc~ho4HwF z!gMM}@nyLojdR15X45{0-bwl-m^j}ITly`a&s@su8M=_(8lAj|pDgB;JD7MUeX5Mz zH|HSVag$cI)UZXvRt7L4w6#m-6W^ySPac=s0G)sRh%20q2Br@1T3Z#u)4 ze{g2+pOM*nJMG74Kg!yjydhfM8HQHynIZgx?B9p+hU3@C1b*#Q+NaTeE3eMvu2~Fq zhAqFTal;;qPU4RleWR5(me9-Z6P0@9CWmY$Q)T5|K)w49B*2OFBuWXe(ON{V=$-%@ zO6(Hg#343)%mg^G;c8pcPkf6-9`VXYO ziSDUyqSVv8lKNhy1J#k3dbOu{h0!4>X}uKdS5jZ)z0HQnhZ>ma!;Bs?owB3{r<#0!cV>R4F83zq)}G3)PO4}w90 zA%bBWr4)=1EF;*9U^&4)1Re1y*qh)Wf_)uLWuVO`l6gyTc*&Pu5Z_I%UvM))=lmR; zZXPLWrv|4GlvcMi5ick&XwkhEbWX$*5y%i=6(EZV-a+tAN1T&c^g)7;5ER;6V}NsT zK<6}Yb3#ZFoMdyFOm=ailOSXmvh12q6O+9P<8&c)_XH zn22W#83#27XAqo7u+<1TpA;7D@kyc3GER|YN&{a}>E!VhS3Ui+$3H88xYr06(QE7- zmXlvWehvBi$TyN-OMX51P2?XWznT0N^4rO~p(puW2EzlZ$2Y{A}`b$S27s$j>J~kNg7ibII3}UuezW z{37y;$=^Z#PRsf850F1d{t+8`lCL2@fczNpW62*NKbm}s{3P2``3dAtkiUhzc3BJg zQ{+#R&ys(f{5JAC$Zs@v@qBydxRd-&@(+^1w57n=EvnsUjdKl+HzgMysap|9L3OBHa)!G9cfEnvy32IEWQnLkoRqhEv zVa=q3WmTC2p7yV&ovVuedhai%LH8#rvV=kD9hACz%5xldU0ua^6>EIrx`=1Z{CK>5 z;*VQQ!PG9F6Ggcm=2$N7kaCRH9yYePRf(m3uWV4i_c1{E#mSt_xf&`eUi}okq2A3; z$=o;6yZL`*-N^%_rCyXbU^Am-4_L+M7Lv6jT|-CjlWSpRrI_7Pa zqumOE2uZB!zKegy^aSlWiX@pUjcvNje^Cu9&7Ff#Qhv?uBG`Y?yPctN7L85Z^%#eR zgRNvyhQD$byl4b>P3Etra99YEuCT!##}}lim29>at7K0yY6hb;J>0Rc`yAq3bzAhe z>aA4ci4!8{gz>zqzx89Fdj}aWD8%WA3{ER`QXJ~*-9ts1d-aSY0KAEN9rmlI6Y~oV z|D0-OR+W*5$5ok1J*Iz^XO|k>ql|TPzYp~+F(OS?4*$Mb*sn@_s)_%zzo`5&e>K$? zZ0=08U(wGsEK$&t{-<}gdL)LYWbz;z_fua({a7~Y{gv1&llMcV4yL(wIKC#P?jEWo zN!Y-QF2gCRB}_O#&(ZYs0a8t)&?pLj4uwyZ(ZTwl(O>npZ;8LHddDSK0nxp5emO8u z2+Uif3=CgUZ`vZ&fL@Kw@QtP1gaYRqriPj>Kp?aF;DJ$g;zTA`Jh!uci4FeN+X{S+ z^|L;gildlMPLR}VxN&Q(`W95Rhu?dYwNIF^BG_j0Df$Zzit&4TbG_#{*3PE?9Qw=i zM}5@;w2!7eMSK!*pT^T*h=;1A#O<9AS9kKI!(CeW;z8+u?!+AckH4s8 z$=&YHRU}FoD(uKN+-P)($738=XO|RA6BLO~w_Rtw6TsS0u5(-@w<#RZv+$2v)jo=5 zI$@78ypG{BU1ZZydxqdFg14DsrMQOmt2zF(jZ9J^aXiBMg*GZh|D-pM2Ecdppd?(6x^zF8?HOkgcm?e<}`|nAH zuYRbHD7G-Zmht-BHnKOH)!VnL_;xejtuiOKbyciurlpD&pTyYA@G6Ek^I8?JN#-Dp zgFN;~Pou~2{Q<0Y^sdP$hodT+VQ?9?6)Ig19hE^GoQWp0CK2 z!WSCIcS5!j&CIM~rd}!Y7QI;hEzL$H631y`6%&=%D63JFR*2T2rW397U!6oclI+|0 zf(0=`SMz#LjCHxrS(f?wi*=?}tC3%8Zvmy`@^`T5QIbDg9wyL&Jrt?^(Ru`zM&I{p1Nz=|S%xo-53Su6Pl=GDh{nE63|& zEJUwAUT?fX#zpj^cmweU<5jvyG6L^LJjH)U7xZq%(**PBc%wRfq`fI0?IYc15#D0F zJB)1aX+8h!6U_b9?%I5xJcW1K`mo;P#sPkP2i``cQ}EjHj^Q1}b0kUc44%_0ygn4q zO-l7f;??0z?evlMX5!7lyAAJl%SJxwAtzOD2A;Eq@T95VKuAZn95ZxkD*$@720YOr z{K~7^k{R2Tchk7cUZ7*Nv(d1`h-%sb$Hb?S>`oJJ)gw5>D3wUfd|5S)#@!A#L*r3Z ze7S{D8yTb-MzxGuPNiC1YYF%a*e(3wc8=^aKu_x71Y zqT@+-Mnh$Y%ATFws6ctAM_C`JkULQU{R!m*o^!SnMs{N3oIOT8ir_ZsPYHd%w7a z;&zG;Q{2n%@1od5aSz2uDITHt7+-Mg{m-4H_!PzS6rZ7Zk$<|(=gv`FNpTg$dnn#Z zaW%zt6z`|FmEs19CH8*tIK>SA@+`$1pL?3(lN2xU&IO7Jo0#OV*n?t_Vu)gxVo!<@ zioGb7QFQG6Vn2%g`TgD$2T|-xF-p;~_luPjhf^Fu@kWZ({QgZ8V-y{Gzv$Te#mW53 zIEqvF!fZY_htDM`CMeFQIFI52{%J17dWs7v%2jU>?=0qXcTl{OqFedJgA^a3xS!$} ziUTOtP#jC~0L9T1QxqprJWO!{#S;{7q3GZIQxs2A%<|dCDQ=^s{ia+VsIKJ|w&DCLqj#ns!PtglD3>XdV;g>NG~Y{IgKc`NjJ`{`ze`qm!4O^nRU;)mRa|#E@s_IxqY+lZgtsSe%G;}RWiJ&?_169 z#+-Cf%Sj)1z&VckALKv8CA=)B8W$zv?)7O6@AhNVLEe0X-`>xkj^Vd!_|vhx>Hm4k zm9hStba^7`cg*w|s>1rJXwqeDHVwVGhJV4i@~S#4%1+f}QIV+jt2&szKvfluY8ijg`iuE);(l_gYC>Ei z&>ruQkC5OLmw9$BZ>??ruf(;`>T>^gWECSzKgX*~N$3AwR~1vHp)|vX0(7;yPCudb zQ{204>Rfy%ag9sx(a3{*dcQOC9LuL0Xl>yu9<8-}WshTt$4Cf5_tSU{gFD0zdVbViHdQsg(#rH)z&GhqiI#u)&C@Ms>ftx&T@|7LVG(d@&)uetrQPSSz z8rcWvGnzhnnqt!HH+?jv1#_mTDQ@7=e%&f3TF%@DBmztK0N{R6%GkL#Ne zS@==D8S32+=xkxDRT`0O{BEvrvkkI1ab4>St?duD&WJeO@yE8#&|Y3ncm=E05WbIa zBjL4#*Aw1E_(8&(3Cks8JK=}TgfP5|a1&vtUkD!|{21Xwgr6XMmhe-A&l7%z@I}Ix z37?~{WQ?l_-$VFb!mA0dBYZ#Mt%Nra-bc8NaGLOO!WqKP63!78)9FbgJB2S0ZYB)j z0IMW{3=$3z4ioN4I6}CLa4*8;g!>TgN4P)X-h>Ac?n^jIc%bw2s3bg`@Cd>;60RnE z6X6))n+eAWPbWNz@MIHTgr^XmO?VFBB;f?%`Gn^YUSOija6Nq;;VQg{@M6Mu5WbUe z72yX6A0+$;;r)aM5UwFShVWRzzCg76T+LkSNfd;{T;gzE@TB|MGrt%PS1o<;aJ!nbz{ zjl(Ai&mcUJa4TUEFq*ko#l-_|TH+z*D3pz7j*DQgjeC6*@LEpP4d+%3IW3B1)ijB@WV%H<)IE)S{n$&h~ZXf`0a(a)Wl zNmtp-BU|cvrn-TCEEUs3j1K=gORrCiwz5tb@0(?Y&%AlJ$pb&-@hJtL6};yJsu~p} zJ)`^_{_ateGoO6M@sz|C6Wvrg>oo6OutP!Ml8{&#sRg8qjGFvk6?(aw*d_Gx@5Y&M zI5yXSos)Ms^3nq|%GUA#|2CR`OLdWUKF24QQQ6??)-0>tINf;_HjBL9?W}h9L3wFv zhN;ot_KSj#6sHg&`XeCS)J1YDo}<-2XCaP^4re3c|2Qejh5rXtQHO82>(l=F#7 z_3!kFN(ms<9UEvjO~+PhIH?h&ZZue1z-dbH-*?*<>^$9ukLWl^O)25+Nm7Yx`$VM{ zky=dZ4pMhIB>w@!a#OzB_5f02I*;j;4_2p0O(Ny$0Ncy?MPA z^^(ffdww4O_OxyVoh$04U($+d`#38qT~BJE#fNnF6{WQ5>Wb2G(xR%dF~L_>RCbcJ zMNDW@T2YFJ>0ix?N-Iz9zM`_qFa;Ov;e>1kpP)_MwDY|63~#DteAcDG>e?vntVW>0 z36+pC9-Kp4lDE`xyMs6HbS0sLxAJiIn>)|(N6UDvfiJYsyp6vQ;^gzmhwvA|oqQ&F zEzKTZ*u$3}rQ?3bcI2Yg<70>lzIn08P7kvMd&BG?*#wc zWo|vc<749ocxf~*DI{uzpQEgvGN1XW->99cU#g?(cV1SQ6H&mCVHA*;sZ5<|ILPkdOTzs` zw>xL4#xSjd*?nj%ug%aL#mwo{U4MpV-2&b!&Cs0gDAw;T=I{q*Xztr@ zMj!jS%+P#mG;ejEp{Y!}Zke4db?(t%n!`ateZyN&oD!C z!E#gXe`!4z97%r67S?aKQ^so|u*-@p?=fbb<-~a+&zSb}cQ1163Fe7*xPeImvD>Ih z^XnP5K5KpL9#1p>Nk(0=zVNR>Re&$`W6~hT^yPw9<6zdi#zba>+2pD#@#|Wj8doG( zdoo+6Fl#nF<}lCkkWb8G)B=tVcUY^&{I!(pv>xV-3Fh_sja&GJ7HSJ` zo-%9n{#kZCPHY=XcQ8qW+uf`=%HW-R-Vy&A-N=}wLzy&;&pYDZnmPvGYKDIO)qKB= z*zN49f6G}{QLpyHv5{Sp`` zCV-En{Mh5ieqeOhrv6t#k+5rz!{MU(`Y$O_5v9tr82&?#ANo+?J_>>gM^O-3*g&>~ zNoL)*_#1tNTK>i-4@mGUk#94{syL>s)m?eYUAX}Wez(+5?6sJ+-VX7vy2$bTYn1^h zZKG|B=3zOqF1M^cvxdxlWE#n=C9|H)CNd9_*-T~&neAjACbO4}_C=Fzjm)EDj*xkb zQ->%#LFO!(r^uWq^9-4bWG<6AM`k6NRhDaI?j^ID%sMjnli5mU1DSnf+BlOYbDT_u z3(u0tk$IZTlVmQDxnPDH%55?MGCjxy$%M#+$@C->A=8UY8JTi2eaQ49)1ORlGK0wU zB@-nxkj!8*m1Ksay_UI=Of{LC$i&Fp%$YcuQDml*naqW8WTtRxHkmnOl4KHO=98I6 zW&xSGWa`N*Br~4EA~K7~+(G6}qq!=#$s8o}2$}t429T*CGltAqG6%?vCX*sFiOgZX zJb^De@knMF!`y7s7h3oar^uWplO^*wnQdftklAQPBAIqF$H*Mz)J`%FkvT)Ag3J&y zL&*#ya|4-?Wa>CImCQ6Ux00DjW)_*-$lPw~!vEm$f58Tu5$#6>F%t zkBUYr)>5(Fe7q$H5-+8zAV}Hu2OYNmZ<*EAsR$nBM8QrFBt`It3xX6AjMTCCs>620 z16>3`z8a|JI)Wgnft(cRK4EkcHC$f~TygZ5G^c*>a;y$u3jo z8m#SUW5|dV5O89a_60^W?lk>q=A|lLI>`4P;iT)QoOJz^?}?}&mO=|J)FR&!#e6Y0 zGR_M~D=O8%PLG{?>3fKEY1gQ&rmsrQ@x}nr7I0OXMjc?#va5=E5UIyCZ(^E&9NBod)3@(AO6Da`;g2pZ>gHs0s+}(Ub5mv zNAtg_e-R+8`Xy*kWFTy;xj=+KFEd&ce<08YG1db83G_C^NgT6)8*~*IY_^ku(x9t0 z(IFgn-RNo(CMyk_PTOSTwgns%Y5lt-fkZc9a-g2TLTkaiyof*-Ve-F~gvo9GK;$vB z4Y0Au0UwJ?brU8hZ?Un?>I)1|S$CR1mgM6$U`~CRz(xYQ3AA(M7)Op0C_#~3RmnaS z8K@&Ll_S$QqLQ$SDmhup0JR%Rs$_#Am5QwAhRytRi=Ev9xU|uP(OFKiftA|b8SCS` z=jSIPVDw|9yDK8f|h$qe^VHcKVAZ+T5iE zOt~zgi-=E&LFTy~j9$xGR2q#@Mz~T&q>vTR6LBHy1$V0j;EROQ)hsmNK>I6Zp)a_A zrj}V@1%)*f?xWC1VJ(IA{Kh5<&T#%yTPSR&@GynF6n0T)qTohyeE$fA$9Tb|MuoE! zo}zG`!ZQ>uQn*av9EFwq&MFG`P`H=EY6|Np+)rVvIhK4z>0cX#G=<|7GJNJ)3ONc- zQ+SfXB?=cPxYVc+pwNTg2~r4A2vg`uAwr=Sg)$1|6#7u;$7lLe=uKe|pX$qRI7Urj zFojAA!zqlQa3h6k3O8A{`Kg;J#3?A}oK9gfpBcyZr|`mT3UeqVDI_S&r!bGg0t#~} z)KgeU!KFrp#T4$Ka3=+KlM4qaJVIeVg)tNcP^h6WmcjuFqbZ~)Ormg@!UPH@_)oX+ zpBgB%P&h^5G=(gM$0=;1u!HY!lmAap? z&ep1sa1{vOY++0-V?4gO+~oZ4Y6sm%qR|%WYwJHk&GfxTS#`ubV-tt?$rIO>^LIFt z#>73HPP}49X)`9aIwRSA%+n%I^YU>L+L+H?L(TMKNCbG-nKULsB*Ita{IB)8D(6pV zcl5RmlIVNYbvB{;Xm~d{|I0DHr=1e-G-;ft%|4D*Q$9@1)UnXE)la&snST5Ldk&iU zUP5Z78Yg8Mz@D+@Oj|#i`V@;M8C>?w34HTJr<%z>&Jw51pEgkv@+UTS6Y~FjY9{|U z`{Nn>@kGAWY7=J^^kPE5noYQ&03NF{1%!+lC3W$A{8WXNtH9h#$Y)%Oc-+jPYC@`; z9OYO<%0uo<41Cm?7;tA|Krn&>oc%LV9sIzDo{51EoQZ)A-Oj|obES-tUEkFEB40Jye1En)DpfgdicMO4=>z;`L=hSgQINqs`aO%*R7c*i2zn|vl-sv( zzLxWXp+=Pk2u?&|Ro$-G6O`pBn@!mq%0zgR9@+mC1$ITziF~G&-&t-?KZb2{z4_I- zz!UlJt$aaEdEI{>fYSY($hKCV?*5xptKG(~uZbyz?*1Dk)rtVOj^|eYb{*!wPT;?m zuJd{IfP!Y3sGIzv?xcnw>yjK>TToa`gl%10*LlY&H`Lglme}=!95F^9)$6sqq7u*9 zimFr`#wD?fj{y1ljY=`9cZqL9cXTo*@5OZliNb>19qTiALXL61I>vce|*@5N; zlly=jXfDRto5^*t1I>-&;uLZpWe56vcRSFF50L9(2b!z7z8&ZZa<`Ck-IE`mBG=sr zG`A5Mf#ym^pt+so9wOJp2sAg0+zsSLlB*+EG6KzYHv$#9sD4&%2Dy?EXv$wa?l@EN zp3y-zkuS75@xqmL>z1gn$|`Y_YOU*`ez%srI$S9w$--lO)JW?@i^QMl;NpOCW?66# zbMaxAR3XbOirIX{K)G zHOT=q`DL=rj*%7Bd-Vox+~hN34_;%K_@_tn=@dVj#E(ij%-CBP>u9_9PWEN)A5_#yxIZPV7Nqn+a~AYM1p>q<}l} zgt@YNPvWVU1hGL@+r|b{CHjYQ(K#%dhqr(u3-Qz&I?P=YxJ!);tq}EnhOkuYM2v;C zCYJHGePC>TX@mb>6~8BJO@jTCPGIF4!N&bi3)pWNl!RadbOK5yCXLu3jy1D+ytNxP zJEeJSzoX997<)D-S$7M6Qfr6H7gz9!Jyu~2+Q(oGxC!uy7;{E3SVjSwaU%(dRR7YC z$SQD&Ll+e>o->25#9fx6i(X!JwMz;LMy6if38G+I50YG0Ck0>2Eb{#BNN)m_TKh00GPkXMQ##l2h4LFZhd z#im3h=4MdVZ?{oLn$uMCm~~XO%n}+&sRfqlw8?rtU;+oBk^S9}%KA!zF>18H+u;Z-q-lliC(4z54MAKyc49}5&bRX~M^iFFyHeiRGFF>bu6 zV$}tq$Cw_G@Dn3+Z=WQAg{Oxka7_qrS1Q|Y3w?59L4CH zI(p{X&idv9A3CgDDXYNPAy%F%Wv$TA^HwT^3IAff%SWF0KVmv?g$86qsTgQuGDI>I zU$J5Y6)p>vvB1?l=VSIRAL-t^RP?@TW~kn!8kYmE)4OyFOmmw2>A$v@<%FnmgXfl zyaAP0JJd3HNT@I40OYbNUiB>?{90APN^xnAfl>8R3P`u;>*B@lU2chG#~SMIGbp}e zJ@Yo%)V2;s5`K9*jSqLur<=End5>Cdu=I!<-zLV++3QSjTSZ3+hhMbL29wRx7x5?A z9XE%Eq(k7}u2IvUVQG(wWMW`>ML-4y?-1{5w-r>ZU^P(@_fd3AH`j>dIP0=y9m<+Yl1N-@`kP2ci)dVImdMhiE5LdV zWvze2P0ADM?oL=OnEDdxUO$QY!<`;tK_$$$Sfc)tu)FSq;a=XsD;ufb%`5F!2g7~s zA-;CTJW}e1@bXYz8OGOc;AFWjfjEp!-rQFD>CYwL;WQ z@UKB|t6)`!At-Nu(K9^iMRfoJZZgqbMiSGV5xZ=hdX!>bxt?QBN3!x!+;J)se5I#L z{8Gy0L^)G7s5e=2wM~;){}FAPcjPYO)`r?Njn`?@By`p*pDZnp_qA!3wq12yzGjjaXE1}i7$R1@kZiniLWQViMS(n z#<$pD2upCz6n{xtC?iMvUBrf7zEz$WpM@Q6SnK z1)}|06o}7@>Gx3-2yym4--QD4%S_tac<5#xlFDG54YIV(k$%<$YR#V3Z{&NhpG7q$ zUP$`{(H6T=^BU;q(NB9p0E<8sMds%$0^8=&xFyGZjR|7%91baBq0GYt)jBfCSI=4| zkUEE#xjGr=y?~{-!dKN%l1H~diBy7Ay%pVG70SBUu`;ed9H(XiH77dNMzdRZHG7T8 zIInul_H_`d9bDm%@_Q={9Pv0(s;y!ZtgZ9)TE4yqb?3jKmXoXdR0@4hrQbNdG2Vdy zcboR%lgrHKN4c@xH|4RPusTSMk$sS?oW8b@-A?vl zvU|zyBHM%n5$|eP^AWNdAbW`H6E;RR`xM#pWS=2>k?du%=g6)kyNc{RWbZ|5GP{oK z{baY2-9XkEhGf%ZkCV-ieU@yF?9*hQBzuYM1#@RokjVzf_8=Q18zLJf+mmdBY%j89 zWXs9+A={5^f3m%u9a&$pQL+O~;gYQ+JDltYvNw{gCVP`9GTxQxQ=F_b49QL=JC46} zX-Ret*(BKn+4*GWkzGJ`F4=mr3(1ZryNK*!vUiZZ6Wb#XkUdED5wiQq4j@}Yb`06E zWDk%XO*VzE06I5;b0^5&g1F89Ukkr`itK5!S+b9l-9~l?*^Oj(lWiw^jOts^^?>@>2slATF*7TMd#-cGib-xXeTlI#q!6Unxcb>0pM z^#S!vYpuJt*kiGJD9zlh9$Xc7YyG$IQ*D7-e(HYywEOwf&hkzhq)lJ2#dSc08OoN; zg`F?RjBbe?E6QDin$2;UZ>SE{d=207PGEk_(!6iDcEjKLhFya9-ChufzyDF{WZtD= z6Qbg4F0HEX6{G{C-39!EyMTXiKd*E@ue|KcKV`=%+tmi6ulLerloqOBjSjH_s%*ax z7|Q_H%vB>sxu3q28VcIuwwK-1KVyaMqH-@adk_jbPeEXnTUuICZpxmh)RiMlbyyQ~ zVkjSjeZV|V9(;r!jp0WFm^PLN@8)@T4Z1n9ntyM1sr})shTn6H9e-P?Gy9I<;vIN0 zI}%*HoDC~@c@6L0$HGREYe}vrxryY1B;9eaZ#&6{O|+HVMY4(H9+Ho;;Rwmcn0tt2 zPmnyzf~QQzHTM}7Tx7vz7N29;O6IO&?mZ;$B`Hs>b-e6mp(ZzwR8P5$WSV8iNoIKY zS?1=uf(7$Q z&SUNZ7R+UFJl z$w?-jnmd8HCrCP~;a6KYc#7m{=4M&^ICHo0XFFKzj1H3RB#)6i%F8=RK1A}2u>uYc z;m?M$co@kWNRA{~$IDYmP9u3M$(hWZ#oXJNdpnD3IjD2tB*_^hC-QPDFZ+SF!SEa{ zwp^`sLI=pO-M67@Hr7o{dGI_yEqtv*LImO!4t^8njY)S{^E`c<~8@K0RNu! z=*JzstqIcJ7qQm_qy*&?IM<9*JXMaWXoME-;LhDF+sV#{*fo?phq3bpc8x@ekHB8D zZ0%8P%Hkf~hkiDWrtvT*CU8Q)h)|IwJbK8CAGN{n)qQSZVJ!>&uBc=wkI_TjQg!4r zMi_fl`V`lcPiP9&6nf}N6z=vr_(f4JMfoJkOCH@lZlQ-XCZ}lJNO?OQ$LKgpWd-GR zXeLz0G&*jzE&tj{dd#4Q{HZ>H(7bod6il*P?;%_?ffEca$wVU{i;q^}6MP@z zGL+{?sk?f?LSjG}tb;UzqZl{YMv&6&Qe zGYl>C(?wAxQhUe>E2y^am`}FzdN1mBZY_g;JOd&R#*c@U> zVhLjN&2=rdz;ycgdK-TuG&r`Xo2ibFtC;JXclHDa5UcqJQ=RX*vLbexSeBTRt;Kd2 zF)6m2SUa&}#Ex3~GWHO$GsG&04RPa3h7r5L2u`s&VpEAtBX%pXnZ#xha}qW+%9Xi& z@1$#MPPDBQyZ&kyjDK~tcUkH}@2|VmuPpMPVTJc}EBqTDXN7;`B;8iHf2IqE7Xn|B zq%~I2=-3oq7w1NAJ>Dj~2k|!B1ZPiT#)qArQ2|!+c{P_s`EcY4i?>hUIZVtukN1rA zoxRI=%Hf^on4+PXPg!3s?6GRHTQ{9{!J*6ufKg_w&l9^$6H{gA!bED_sm7E*B zR(mcnIdN$ljyxoZxwmAsm9vL2*tGgG#(dOQ7_$nUZa(b9{IdxAk5So$>Mo@D7I zo`p~uul8f&+5+#;TRfVP9Yu%G@l^dCUm zSYGhQj+C4jQ%dib@mXc~EtG9z_C|JAuyY8rYfVpD<5A2DRLkqWc~py)13J;N zN>h~v`$zBt&dt75-z7ZP-qkU!SE_ZZSE@hjGrD7r%Uycq-+27ZdR~)~af=PV>$F66 zBEf+BTak9IIw8CFxj{L+5_qNVO4_ev>%Gs^vsd#;w}^h(EJeoyS>((84Xq_Gv|x!zr# zK=}3UeYVuHMWp3JW*Dx^4vaVRa9y_C2Fg?yI77cV%Kx2}-yHwz9AaKG4~=JD6%PqR z*l0kp>Zy6Y*}@_Ey6f!g-se;;r}i?wbe-c%*J;<^Y}I!{vTL7;Uu_UUrT*%G8)7Ay zj3g~O@Nu zK@8gv1W8b08GsEejtapdR5YoyLq$swt zZc6@9`8!&zqs`LZU0ZQ%nfrX-#Ym(~DX#hFf6kuc;{$<%JNJI~EARWf&-*-P3GWvj zZW}!_f7>(jz2>hZ4rcGLqrJle@?>x1r3f!I@RG=rjZCorI>G*{rt1V{AM#tY-%=%O zLi_u);OlLsF07}}xT&@9r}p;BQ2XNcbC>kyO#d8+mQ!-pDVL^@i8R8@HX^ zd-(f7{Jl5AdyK(ZfhaL^?Qt(SIx8bgy^P$|Ci3Yl$%W;nXQ!YG@q9#D?mUQ^b;Q?` zYuj6Ndd9mGx4kVoH{<=xbQRg&oRy0GbRsA%6&J!gSp=lZDMP1#B0vnb9IrA4Qo=xd zs{ZKSwsK4Vy4-B?*&WT_-qPLb0|zPEPp1)d8cERsI+fAM?zbOON-V7?CWP6W#*)$A z&rMG&+f&B&&g+Aw=3+|c^1nD>^>63Uyvf|E4zGgCJm{lY0ZbT2BU5cOjkA_puMKad z=srC{h^-4~YxRlJY=6%7&?K*5eT>QqD$kgHNnb|#CZ_7iK&w(>ljWE;PbC*y&93sP z?aUAJPyLxch)?ac#gvDPp0R3g zZu$8f8fo0jv+axaxZh#Rg}5!za&IE7;9vm0^7N8#N-jmAoO+FIkrJh;zgqk~CN}CufY-a`W%~TYasa_$OzO{zts&99@***@Buqs-G*c58_ z@cz?VZmJ%tHm57BHL7U2QZN&XL!VSfo<7_Up9eN-$!NWJLE1yaj}fRK;Awve@DbYM zVLN9DpUFhg-j!8mI+Ll_ctKs}ka83fcv-Wz8G4XxCR_R6j;V%p6g=x4g*E)Z;RiJg zcNp$TDA*%I8>2STxO#X?&7tXi=9I%J1vB>g-fzrxynQ~i$ydog!fOY%lBC*x_qk?6 z$SFmox6zJ4)L(UYHS_J}jH_XY!;s8VBpeb-6VSgzb-IeOvHD!UtW#%u!D$$FS7FD~-h z79KXb6Z*YsoncQa)e1vpU&5JYelPw*8=2Prtbx*G*7>_%4pt2e)qj>URKKYq;1D=! zJC$^wbBM1Z{+M|v!RZPQPMl-F71N#^lc|s%^E{o_8o8U>QZukdV_6r-y3Cu_XskdF zQjQhia|%bx zL^w}B;$_DCOKFrdu1#ZHnpb9Ij?uY-&Y3<18JcSZq;R6cF0M+h4!cJgDYr679~Uyx zsvrM9dnp@CSp)xK2lHQa5hdWu%)1s0ep?>s%Z(_|QeC8@Nl~YE;dH*qDCM-cR2Tff z>pXJ<&GI*|G3|H*C7!H`VP>WL2bcd)V@iajR<+||#LU2p-u$;GzGkw*A@c2w?u!D5HhvjYnsEJC#<`zQ-k8JEhMjZ7h^!M(lt0r*aV8C(vUeg;h8) zomSdn;$+EZDOA?-_Zjq{4d1rjG>VEl$)4r_rUIy# zS^Lc66j%d@XqAy)NT?!dm#uEY(H{TKaHU{wfsPBqn z$y5qIv=#ep<6+(|@~k4qR;$R7S3=%iOc7IO^m^-BrIT9a#e>#bYc|0-1Q!xqM6j0N zVuH&Et|YjM;A(Q&_Y<^sguzP$FA%&;FiEhUAOw8`vj}Dr z^b>4HFo$3+!2rQLf*lA333epdiC}wzT?pnA>_)IN!L9^*5bQ&+FToJOB7(yRh6xTQ zD5=~21VPBXf=ayAC1g+~q@HoK}1Wyw@NpKy(^#oTC+)VH= z!9xTO5Zpj;Bf(Py3kY^6*ppx{g1rg$BUnbToZu*eV+r0za2&z=363XNO3*Q`2f+%0 zLkKo8R5AtHdv(6Z`C2~I;u9X=sWP4tpYR}0jpQlq0}6XCkbB8ASmjPOQVb@8@D7U_ z!VY0C@>H4cx=GD8du{Tfh1456iTx^k*p@c|2W&cnLtmn`T!2v|xogD&<$opk=F?vf?*$Fxfp*ccqQDK+OV+ z4W1*xmMZy^Hd3x<*-qS|!BSMq4VX}{$}$We?r*gCl<1Y~YAVgBBBOoJUd?Rd+Iw|W zUFK3m%3en5gQPZ88Qp%NRd-trGsczUtZYncrIY%=& z@B9W@1gMr86{BqRs$}?nd5iGegcU31t|WJr$ysvcE+O*R7UQ*gPetN}kKz0MhTQvS zxwi&LUVvQD?>l^woA3}(*ZO?aP54*k`*|854R`bXp8W{lPh>wG?!UnIyHf*XX9JCQ z^ZkBXtouem<#+S_7TSWK;DYCsf!6aC9}BZk+@+#tEW-0HU$I$|=D$wK7EJ)nw8cym z>t-7{TbUw~fJBL#O?-7Az(g@yipU8wWjME0M~Ili>p%@ZY~XO@f_yd&x_WcmRzY*q{;cWo^pwZ?C9x{l= zkyK1D27=)#1mNG8au-m@WFT%KZw_FHE#E|oiN>iI zO2uA=3}%Qe--sz8a69E$+aEXVAi?-I6s4>qyxzQs3Jc>G9WsExkPRQg_!YkZ;}0pP zXcR@39rOW=f5V1(81g~6M@dAzDFQ0e(=K#4qrG-`A$=Ab_nA4{$lAj;OHC2N z^McA}3wU#h@jlLNraEEDTLwT=9W949bLkV{FWVba&N)S74P%h)4XjpIpzRRZrpCYs zFKFWJ=G#`N=deOttJ3rBo&2DfAM9nzV7BPsILbE#?u{|FN?HqFJI>SV`CO(4aLz{N z^yG8BnA4j%UhCgjp4RLwHTBc~Qo(=mI+3LsttfP^DfY>#Pr$`EeYFi)$17efWxOt~ zzuIPk&o}g$BD3MYq0fjRqvdejZ~zWxLaBsnifjFZCwr-x_FFY+p5^Enj@rK!C+Fxy zj(QE7y0Qr2UZGY!!ul4g<)SP=z^1B%UzelYcD^3w>;3tI#Ivg z8S#<+tlW>B5jr65#Rlw$W@M==fqrE z=g~T!)<MytKWUE-c*VzS zS+r);>Zi3GtvR&j(wawWfYuHi3DVk;S3A+#o>#iin$N4j#SYaXg$rbleDhmmG!i)pmj5?hq-u&iwAgj1Fvo5wNtbf(Au3>deYj9*Lw3>KU&Lp zx15WkxHy*9`)D0U>;1HjH?j<7c^;#+g4T>ZmRL-2QRpudv-OmiSj1kucZ{M6ii8Da z_TGZutXt>bT50hA)2`%SLus(^cd0a3cxRuE_r`Tl>W$muPjCFDWAr`33Z>@Ksh+u6 zbaIW^ilWdi3Kxa-iKS-KoUZf9)3GAPnx8!7JA>$|slFG}t750_&+QTL^I1IT!Jb}h z=>?PCndJdH-kD+{otqZYxtW19J1DDav@U58>q@3PMHz}mG_tsy@+<|G3Jg53Xo3i$ z8L-Gvl&CaKSFo)mhtHcsRwt|)Ob%CCD;!%=k(^g-lZpLALsD&SlP#?LfeI@F1hqaIIs?{m)CaW+7FJ@YNbQzUP)PX{C|l zt6I&ZHK_mPfh|05rH3ZfF=;E)topR%_+CHDM8)vuc&j}y4U|F}riRh~O<0(+mt zx--&4lPpKBYAutNGif_ZEl2LTBRs#K2d**t49{ic_#Q~|Ts^yOBaC7dpY*-`ZE}2* za;XaNoD}&wP!%+Ce3LpEIlkw*Fe#r&-I!!Ka?kbPfj&&?%cKy`tL8WiNl{I+968@; zp6}1n5j-%6rjfipf#)VNv5G*9=ceGBjBhGclX$L@=ck!E!t>QUFoWl&^FL-X+GY2n zJSST~Q4@Etw2k`;hOjDeup)~Df>0p)~<#~x46)YXX&s8#LLaX47*(9`f7Lr&*qL##B(knTzjKnGut7%z7;xQ6iNNh8XiitY2 z%HG|>p?xF{TGO<%B+ij|g2dw_1gTvlah1e*5_3t+BQc-EBP14(SVCf{F@8-fC$XJ< z%_I^ej*!@IY*-U#NL(UufrOg$lLo_AZj#Uv&LWX*7ILB;i5wESB=SfENOvF+B+-#X zCl0hH(S??L65U92Cef8d4-$Py^d%7@QN+GsB*MHqoJ5pFfA))K;c353oX&xGr?aXJ0q+dvJT2$*+s_ z;8yIYn^K7l+?7OF`J-<7Qm+K#6(6;03FJ9%6dgCI(sbF}M&3tCklMj41QC<@_{S9@ zYp83W{k>|D?H%gwEJteh(AwY1sXcu2ph?@6BedIZoL?&STwzXGe;@71-yCU3o0SoB zeB91(Y-Tqw;Eb|~?& zJ!r~e3hax>7IE69X74C9lgL#KUw8Pr-mh4i7A;iaKqZD+Wu~?)C0b5Q^m2Lp$>2|; zp^Hdxqn>v@7IQB^Ts>4^ke^s-g+5o+7N5Llb=C~0;QXwgf1~cCh62!3W*t#WM z;kMAofhGlZO3mY&5bpm*Vk#@dD41ecvW8tVi2_?y`K@R^E8_j#X+D2M9LDSzvp;Ih z>@53tOz;!CPjGaHU)P$szjbFGfuq{G_KFEsdCwNeoGCcAMy3tKskCKWm7=OYp5W)P z`$Y3AF;X^;h(K|ip*UWbac1)og7Lc}_;tFI;5VDl96}2TEh1D)XfdH>gjNz-MQAml zHH01`w1v<%LYoNH5!y;<521a84iai4be7OLLQfESoX{0Q7YSV@be_;$Lh}gCC-exR z1%#FmT1sdwq2+|O6KW=uAasP#enQs>ogs9I&;>%52_*^DGZ8{QLRo~e3Hb@NBa}lZ zmrx#|0HF?qf`mE}>O`nLp)Q2-33VgXnNU|kJqYz7)R$0*P!XYFgu;Y|6N(b*PiQou z5rhU28cApZp^1d52*n6ZAvBrLR6>&oRT7#;C_<>3&pM(wVZZ8~C?aVr!3gr!9wU=K~AxTx6vvxU5G*XHpT*YVq>%C)Nzq@x# zoc7bdS?}2CW=kty=GY`r@Tm&%yGq%mLj3kS zq$wL2P|uel43Hp9gVEv>5%)K-{jIPCjuDHftEFx+70W1JNu4z@uUJFbW2W)Bd>eI} zD6gY@tLady*hk$#Lo`)^9Nf5z6;dc8$6-lwG3k0(G|Wd4vW8Dr|wHKAW9>>e^A4Lq#ql@~8_?VNJ~I zI#S+=I_pVPkxzLy%B_icnQeS7?@M`z@*?VnvBfq%e=$m(?MW;jLD?WGMp8F{vWa}L zin88MU*d#M{t-BHTN7#-I}n>*Brt!Hf)A(Fhz=-aY z^`xQ~(cVM_0*ES{X?(7`kGgTx-A~V`0)i4m5#sOCF`(EfU^T2w^z z6~D_>Rma3DR&`9YD+RiZ24)f2BTr-x+18Yjr<7k4Oc`|ljQnYX;aYS$$R8_$Rb^an zM8)xu{IM6x?q-m!Wpo)p7hB61w3mXx1~yU0eSr$us-dfptuneyWYmB^%itl3OW(7k z4*5h(Y%sd7|L8FBD&O`vZ&r*k?lIqNL(sQf;vQe6j!)SQGtie$Sv*I?@2CgqsEDj; zjxFV==p0k6Spl;O`nqA&^!3UlRocLVQY$Ux!A5?d-$(d?e(!O3)FG};@CG`T(s7ev zg{kz@Mb$A;R`mO$wtZNqd`6^5oIN8oAl9GK6D1?!H;T=;g)SkwH1e6Vrg=GAOvs6* zs`43e4#hC^$W9+Hoy2kS#_Dc%lPaW&{0-`^tYHrB2Ly5-?gx~Z3=c;qk;jM8v0_U6 zUVUGMtw!p-%Dz|ASCPvW^y~G!*NyO|vKu|PDWf=MWb}3VLEmVqDm5%|SmGr$s={Z6 zSFrp?K!(H}AVcB~kRg!)84`O)SdihL?)j%~Atb!O1zJhvQfR+i$D)=M*2)`}1#` z8n}0-2B#jqqxa{ROAQQz?)dMd_s6jE?o16l^v2sgYUq!c*@yYe7@qZZ_~T@qVA^T^(@EN|yUQ2GQv!TtLz@PEZ;|1pp4Ss! zFMPf6iKAY|E9Gq(_*wTcZ5+Mtr~P>TlXq$yF{PFbsEfw zjg%B`G*DMcok9*3Ruo03u%h6>PDs=8U?=3>#l{jy&4yWz(Qykc>M>NO;WpE$F>xz7 z2a$8=?Q`6`VmQ*VtK3wmaGsWV^i!kvQe$}GEH~tQC8{@%(6XP7XSjJ8RTggAdA>KB zerf>Md+cCjwVWQFP--C{QaQfneXelyYiZ{dLjHX4o=Lk9uV&X{pP2lE4g9Y83 zN^BB0D`~OsNM(YX(+y8vFX*PN5j?LPIGe| zVqW=dfk3?pUV)(F2C_GjZL0%vf!BMI+m~W=+z>oO!mG{@pC9vw6u+bvvqaknY*^JgNh{)Pci6syi~P6V>f` z*{Yw->c*_jywsJKd$6Vtv-&bCWW2wthY<)fe>g8isqW89qv$(ux8B^{o5B&}vWjDHNXY^=SepskW*JFRfs@)j;cUh#m)6w}J0& zvvkLqz$-%s^;L;ifpZt~R?R1cxGiB{{{ zVB$j?vl$p!VVkX2DvQ(`5wr2OSe=^lDj8%M*j$NZ+$NHGKt*~RM52}(g6Pv;DAGty zyn`cvbvTH#@%WHBR~fS+USXrDtMmp~rv13cA%K#=ww33MXRoGom9t8TJ zbR!TVpo4E1m(-^=oIsR7e|~Q?ff4i?#L|(px05Yk3yXm%1SS)hN?;O!N{&t=Ah)|} z0(PdtchGA9y$abgkoF~9+DZFj+Q-QsN`6N6q5T-zYrt&^x$Xo3 zJIw;?xV4_Z3i8DkKFrI9c=-UmHW1iI;1q!Z^1E}ZCxKoBdK2hJpp0JSygZ7R$FlA| z0^^r$p%#8+9NjZ6)!-{@q6PZI~A(2Hy zYKbf+vW&<|BCCk3CbEXeV??$P*~U|wh}03;N@Nd_eMAnLR?v6P5;;fY2_laZxkBV3 zk*h?`6Pe54c|_(Dd4$LUB1?!YC9;;taw6M_G!sd1>j)9+jTJdVl}HaFeTeiW5+YK> zQ^U9wCNi8zl*niz{fSs_tjI_r6NpSCQbi<2WD1eVM5Yp%M5L0)G$Ik+ttK*q$aEqz ziP)JF*-c~@ksU+^5Gf=wkVpxUokWU>#I2pjULu2u93?V_NM`0lP8f56$VnpWh^!~F zg2-kfhlv~_a)8JNA{&XEB2qx4JCUA5dJ*YOq#uzoBIQIz5gAM5J|g3Y+;6-FBAKHn zQbA-0ktXwk!paGOQdB8(2TRo`xJsXk{B*t{vVK#Y8h(R0^sq>U zN-avJzB$9lj5OJn^Y8rfE$8*T0R8~q`Q^LLU0(R)#&ZuCY#?7#{qC;we9e4sd-Qfi zJI?QGDajCA`1#>G( z!z(Rp5(%54d8I{8B3^>9)yS`DlP^n{mKp7DYJ|}$);?dR`}89D>r8)`WeujkUcB76 zl}{Pq7|=4@-@rsSA2v;Sabef?|J&|Ct#gX;Y;?EK3kXH|&cuXzu8A`B&;ttMp2NMv zzdK^TmR~pa+w0?(iv51+z^}#fL%hIm@1234qCUlbzg*y_>}=w3OyKtkQQs$qd>Xnw znNmVq$fviU|JC!R%bWFl&E;#VEU2bXZ{lzT>+Y@#_(PMFPK`FwTSfByvd_PQh%i^(q3U@Jr^RZbh*&L=SulpqlrWG`MB=HODb)} zxy)9a)zjy!Fw_?zW14>LWfK#jz03O^r?;NhU0&DeGuM3S^(+&jI4;+{)2Goi(B(zw zshG|4*ULPGzVW*KMtw5Zmfckxec7eZKSv6b-_7|_Z7UU;dN`K@}Mjd085*#_R%0=MaK!Y0B3ZS*XL8=z-VQQlVMW3H*!>&l`& zHi>%VE%{j#$x*_isA=YVT{FA!TFi0>lWWr`*<=V;yfMifkp-Satxd`GpQb=BMUKbJ zWjk+WR>JWAvw9eBO>Hl;2GKc_zaKbA;eKOIy?-QyM>#)+^T&DWkbz_mt3$J#?6Ev` zjK8ViZ-fOMq;$Vk>={Yvak3AQdjPi#x18LuM%Jllzwz#jt0n)Cxux7PqaI&ykd^z5 z>AY_wD-Risomd&Ma?|qgLZ*fPg`>9bRT#)2Be&~aGd9+AJ;y7|_a5F)Y=qJEJ$%5V zHcIew_v5H~JJQ@kL79P_v!(rbz%-WX^TxpCxDl~$E~9y@>7;fltg3)aLd!BO?b^+> zmF>j{HrhBgX2aK*u!S!81du9)6ey|;PSLU=WC@7vG3A)Adtx1u2opQq!mZ;+^8b1$ zt4JyP+w=rf1?)Gad1JiTq0-1x7d*y*O-9*R`U$z6P4mKlK4gcD>VmQH zT~Eyhp4w<2_nKZj)tjfr8}kb@K36H6LE$+%UBnlo(^NCg`ehHbFsMU8Rq`1qPx+8M z<2|YOqSYDaO{zKkaGCjbk;i^?kY~5^$NNbqiTU`UI`>7;8ezQE#nPQY^7bC^)hx_x2_6F&D(0b`WEUIH+z+oT zz+}1^x6c*xIj=p|8@FX-X=-ibrf6f9EtXZpO;N=>843X}0z-E4R54GfU0sbZKBL(v z)w^u97JAp&X0q=N9tJ3Gs@PK^ql!Sa6JIgDSu`Kz>=@2^u2sD-nvKU8R>3g)=X&+d zQESrSsUKv14tyYhpogue%B9M?CC!R@BaWBlc_w=KrZ*ovX<6@k>$&N2(;J7(=glO{ ze7>OA#2X30Pzl>VC4%BGZe(~_2KlTvv1_>AD#>^ocq4@o3hT`=m)>u-g|B5%pT?KS033+!LTCXdRv*wTzRL<&U+oi22=Gu-)MTb-Tf5EhJGit#nj4= z!@B{`(x{%lbNM?Fr@b9g-095rsBiZ+WUV!`&wIP#osToenA*e>rZ{-ZN9{2D+5lYy z;;C$8p47Xhm)X@=o^z&2^QL2vr7Xq0@;b3bC*IG(1f*(sb0jwpGIb&gmAIJJ<6PSG(2qlO4NL(2Bl&(Tj@|%Q&ogw zdnm6hWv%zFGr^1rW4v)*Wfkgd2h(|PQ%OW)1@9Y%X3Uc&xa zrZM)fO86_Cr#eF$nI17Xydt-W-icphpqQ%JhV>Wz#J~21l=MBfcXx_*66^5G$Cyd^B*y@cNb&*T_;RV)TCY&^rUzmy6Te2w1zPqn5 zKsb+IRTwZD&IkjJwkd|_Yek*mfu?#utevD*TA9~qC=#Sff~06 z12qqKwu$E~9Lz%RaPczbSyU$Y!7zTHxgpzAd7d`%P(7C-JmeZD&{rGyVkuvgK+0^g z=HM*ES%g!IvlwUDuRz#SRnGlwROMVromkxodGR=^+G7p^CkrS0ZbiO4oWO6Bu;)(1 zt-^^J-wNj!2zwu?%Drc+a-DbK?7%6+8Gthor-aVl=@7pMVQ-<9wjxriWa3E4WF3|3 zO$_gB#yM;vRYxc92AqvJR@lVpPUSDB$amXe;hj}Ey}@NxUrTBy3&>q=&X@Oc$j!z1 zKxnJTY`@|{e7S+6>poF#%i+tV9M$Bh$M53zLd4l-Q}W%bl;*Rgv_gfuTkvfnsbHqg zRAGM4g06}H6+V5|mgap=n4rsd1)t)>tN6|vp)hrG_~zq#1fL|B?k=VIn(-y@*;1PC z8tu*?TNB>}e9~x2njKynh>4D}OgD$m|0|Tzd|fH*fv*qAzGT@_nz}g@di~yTe3??3 zIp8el>YHE{8)AI63f~lblT9~=ZxX&re72iIP?Cat-*kL44gXmi$j6n^OwjTRr8Fhf ze>lc~D%wUgVSKis!*`PWbw&w9^%~!1qb22)(mrA*-LB_dr8Hl8TPe+#Y3RrwZ<1e4 z7;PiI3Zp>fYchdT+)EFY87W_udUi9X_M7lSkiJN9r$$hyT*)TUYKfXYnCaIU^f0~c zO%C)9eO*(g^GY!FS9UwPi<<5ovf`!BX0NkJ_rFaq#RPy*Va%_R`M>BYJI)60NtToLX|8D%d_|y*k1Mm;zQ-%0T z@b9F!nBqA8q4@XWAB`T$i$vMH4(>!AZO#JKdufV?<|6%-x@E_pS z4fr?WKSkdH{N3^Q#NP{lZ~Xo6m+@*j{!#eHl5-zZ#?jXbm^_o2IbIR=Y3p~U5bm!Z zr-xd2 zSJ0o^*d{fAlwupN+S|Y(Jz%MkuN01_Kk1|psDUk|Y{>+xX8K9$P$Gvq&Xgl;<)%d= z`zQ@jlCB%mfugLz0*^P9&{=%4kDatmu}R^x2OAF3b!mNPu*d5X{Z@Hmt06~KhH>>L z_UP1YzpAIJA?_HlIFm4LC8pdhYz%Hxan|EUb*rUBAEJvE+E!lQ!<_S|OYwEp$SMsT zS3sG@N{E?0Y|7Tk6qFrgz*19C6RPPEx`b`k@N{OBp0?oUpW1PIP#iOjn?)X!7pril zbiTlTzR00SS{Bl*@EYys&}*4dWpUORO)%y4LdaF>au%41cFadFzm>i1Xwo!CHgH{y z>X)t=&=o|z6X|ZJO}M1py$)x+@wSk9Os+k=1W9FgH^TT5=5lN=p}^tlSsa=}JB!0V zC>) zIJrZ~-OHfC3_99o!KPVv_;(}8a#-)~PDvK8gG`NMAM}f@VD4sGHt^4ubuhOV|7`gN zE%p4+<%ji5aG8*x%P>Q6{7!`L)Npwnhu4$aox>6Zb-1ju_`@vlI-#x`I9iKwpv2ZB zFS&!*0AeNPbjugOB0o4`EHM3#o0SHj%0$wUsaI;q85-4w7o*&(4xMN9qYukCVDW>LRJDq|TF? zOKKipnosHxQVaN_C8U<})>=}_d3!slW>N`KM@a1_b&b>+QkO_wAa$9ylBBf%K+4DG zvq)w0B|oWlq;mM9TvBfGK+drfPWG z#!jgdq)wAMNopNmSWjvNsm-JglR8A|0I3b6Hj+9;s(@5?zR;6YFH*fp^&?eAs+`m) zQe#QoM`|3Y`$>&A^+at)ZyzI7L23wJYT`?>`&__)98;+3C}~Q2B)!|f3Ws+~Ss~w5 zTk85#uTxUas;YAd@`~`MdOEwsy(8ghEt4A3QrUG#OR{(ludgvGTM|Ha^lE&(-jxD% z7Icwbi}&{#nELGA~8Qq)u?XltJW7G_S^RRO}0FJF{w7>9BI2$-ixM!*7V-~d>KDqX$lQZYxu@v4BcYt z+A~F0Q*5krbDx2574zIaPkb)^dAzWIk|pe1%kAanRK1qNV_<7LW?d?uvw`XS;n)3O1H*R<38$B4>$GlmA(lduylFxA7jN*)@ zi`4=ZOnrMKw~BBXi83D54?@@)1mxyFMl_fzq?NBQA#X7 zt;8F^mZh>)%@7QZd+YOLQ8xy}?=Z5%Q*> zPT-s3I{ApHBSw}nYKpOeoLW&HRCC859^6HIpgCo>siNnwO+`H|MtPRmIPkFIz&U20 zzv0;xZ83t7aSPo~-eX!?Zd!8b;qy$F)Sk_7oioM(ToA6-zP8^RciI?*Ozb+@=BGDD z<5*q3@(JWlG(r%9`&7pf{HvXF+iw2rE^h5GT@ts{D^bX{68@_<{txhe-0F4j<=Mf8 zz3D}&MzLQ={tDw^aa%yBVA9Nhho$6yrxB9iQ^BNOcs7J35Ap3Lrp@B^91{S?_252K z|BCC`Ger%RFQ2uLj@HimlgyHNR`;neTVn5bLepMASYx;xZDcczyoTL#-jVN;+&@dX zDc>bkskR%*_w4=@Rhna3i|gHojfiNrYCT(NwlAnzFUaN&-ZOql6Qk7Z+mmaE*`(vI z9sXMTw(VO~?iP~thiAM}VmZPsg-I-Z(|}IJ2K* zsZQiod<2dyCcexRPh+cz*(57gXM|ZyZg|jm0X(>b_*!E+9NSM!uvLJ#BG2~3yAaDK z){R(aVm9rH^&!^REG4gCt*!OJ-NZ7Ht*UGu%(84K%W7~nOOF$`fS!`F*k)7xjBOyk z(NG0q-HnjG^0K(i%TzW}rC9s{O>B3Fk@e718+~bUbgz_8y36fq#dNsG#kd|=77GpP%-bA{Nv>o2` zKGOE&N}nZtj`S0xA18f<^hMHFNuMV@m-IZ+^GQEKdI9Mrq?eLjOL{r!?WCJYCrBSL zHL}~+NS`5niSz~1mrae>5Jey@u1FT?Y~vuGZbv$YbS~*U(pC>79VFe6bSKj7Nq6CP zKIv|xJCp88x(B!WknT%5M7oIdFw&X{!%0WYd`OQbJ;D@c(>nDgke*1oigb+h6w;GP zPbEExbS3F&rr#l5O?n3D>7-{`;>x3>cN+nO^bXPkNDm}kNV>#e_~~NOaneIc?9M5mBR!7v{iMg6*h2xW4$5=|=^><>%v*>HjJ4fl!c@Z+?aYo57o_Q$!qYL? zQaDC*OU0&qZ%?+digS12;Lu7V{pze{<{FA0!_}#$3a=s-Yvprh53UVb-V)BEnCh1( z9Jotxmg1}>XE`0Wlh=$RFz1LNNI2Jw3;lQcBtJA;p zqXyJEw+p{8y@3|iD>Q|Jb31X1aWjR3uMOsFN87A?&aU|=gr)I_@jk` zo&|L7&c&YOS@^~2$NgnE!pQ=a5`TauLZ|l8Z?$Be{~~Dw3;7uHnxgBe})k z|4CH=>PT)SxrgLFQ@s9iBgwNQ&yjqB^2Cuf4vxeRulMLxnb6QPSbZSG>m<>%QXA#S$po4Xd@4|AmCfQ0# zuA);Lk>;vH3psa~z z=gE>lfx}BR_#AvHY$=S_Cv_XDWa;x6=Nc2b$8BV5Mc$TKk+)^~3hi>UDUut@-9;(!7gCd#2WRaCkmj7dmR=!R~g3Ko(Sw6mQrvJ;=)i82ZwDR?B z>;EdUNrCU~qLrfGA~`(TP61yPSuxs8F-5DaskF150)@8!OC+Uc+bPg)rion60o1l!m1R2xvet3bb_#5=nRwM9 zOP|Yheq|M~sXIq)r+_ch`PFR8RaIm0-AC3qvhF9#b_(c?_s^88nwx0eMnH0K2~%nM ziy{ItJFsHTe<3^O9c>nt3iZ`>@?}0+mchuLB3{Fv**w8_7k)`&I?!gr;EIOmDcloLv1g%7I0=38C)Ru5k6LrY&;YzNs7hw&}J=EHeA zN{j6yYZ<{CHXr}m1X?HZd=)RmczX&hlX-qBZ%^WtO1?48`fXLCl2hw+{%IyJXoWsX z%WhhB(XxYNslUu!bU+gUL(8_2nr)3l^V|o5QUKqz~ zR@L(-naJc;1-Gn!hbm1kf4paqZ!kXHiSEby!y)ujLYg7ExQnQ*CA^sMGQukfuQGNX z;WdOGHBQM08Q)7M|E9 zpdFs_p@4R{^4<=Z;YaT#x`^eXQeBBbY{JEay-jtmWw#zR^d#RH6AgwNFig}>eWJFx|(Pl{tzYn&{ac6Yce`-DzStad;jNTNVxp1H3Tv8A{D{TD z{KNz1KnaH_8Et62T`Z3DSv`Vhee11pZ&@iroK49bN)|GF5hb;hET+kBrzNX+$0m9^ zY@+w%HimDaq>d81oi^>GwN$}(mp4^W#8A{Hu=@KOuD7nn0Bqeq`E%8y3MM*Zd{FJn# zB!}U-49}w^KvM@+2Px@DQzuH=Q_{sGdfHBhcjle0?68SmNnc7rJXyr>VLWNK(~>A9 z{n;^^Cr22cxTcZ3Gl5MLdAf>{7-ObTGMSR8te!+kB~MPH#DZ^|X0T~Gt7lST=YSy4 z;k$Tm2PK8v9ze-J-Ya4FPD+X?i8FjC!}l_AFcXDb9c9eJyfKC`-hdycod;+(*ecO75p* zJi{}as^`cir{?Q6><`Q}lYd;6nYZIk5|e9~EW_?M-3m<_+lcYCG5fr3%)7!ubeK+A zY$kwX{fkwtm^_czBg7VPYY8tcHIdslvx&7Mmcy+)rUVSa{C)>~L6dO3WX+Csa8GuP z^1RPJvhm(>xGm>sD-nO&E1F0p-d0R*>mIyzGjDuW(51lGb(zp^78lkqpsT6Eba0Hy zu4tJ)y$-kSP)OL1CARX0itk}_IL?`EypZbl&=phAuM_Au%M#QxL}(}eEA#E03PYd! z$w5;||EjK&!&h_p$q3^H_>rrr>Gh_z%}*roOC0#7N9*!N*c&kmQuP@}AAwZo&0FhG zY2I1~jfuu#wy6QhFe18$Xf08zr}TrBL|0L_ny;*3jMY<;y+w2r(K>@s3&f7@BYKc% zBhj-&&k=os=;K7M5WPtBD$(;q=MtSqbUx8Xh%O+ygy>SDYl+H`)T&5DEwM9diJj3i zL@yD&K-B6fMa7hcsMS-7W)t-jZAUbRXfDw_qE=5S8YJ40icUn^6YauR^7%nGqMfPh z${4Gs6zxkiWZXBR!w|7EI-F>fsN||f6Sc(7=t!ayh)y&VlxU3T6rz)fP9-{tXeH5U zL?cA2k)Bd?I?&H0RNR<;EMbuhFM8^@mpXhj^ zB8P~%ag1mMQO_#EYhbxR!6hpNInChnO%6@R$gVKF4sXs2{Yw;^BV(AuFfV8K682@r zF;+bS%3n-*$iAj*jc`71b~Zf%KFhMuR<9L3?rsCwadvTKYc8qL+y0!kKMR9ur&b`x zSVlUti3#UlNNf?YT4IZd3GH0@A>bKPo8cDIX=pG{A)i|fB__7dfS=k@rky2rj@T2% ztTT3{O`Rr7BanNy$H2GT(BDNNmIVB#Z+oy zHYbhw+jgE~5en*2Cyy8=y60IwE7kFo^4LVo_qFiS@VW z>mbuH6q`V7BC#rBF=A7U!C!2uk!Xlj8ee;5yVGp8YdRoinvz8AqlWtw+hsA^LgUdH z8(=sIA0W40E*u+dy8B~eOqr>wfoaEyogjAFSe?e!nVP2dWWl+y!^94mo+g31v5mw| z*~Ga!Dr?4i5$jE?Ut2#^Y?MKFWA_moM@&2Uc#~gG6ZiWVu?k{Ch&7q-5+lebgN#yq zUOsN$_&EE<%}me_do4dlEaHO%Mw&M8@Bwa=abvt;gWvE(Uq^D|G^f4Jo$;L3C&eDL zq`|-ee!q<0zax;iX)k`WhFK1?ytWz-YS1t$163PBy*Y7Q*G$gc4fsp(JLZQ1+sx~; zBqGhC7xl3sGm~@mULw3`Kd%(vr|Y@d(^QClDxhF1Eqj=vOl>)TrQ(|YL;?jJ`Kz!| z+fdKx6#bPLV)ayu59S(;g(I?i_P$~sFW0joo0q+>a9L5q->)aSf^dOxa@U&u`(Hpl zvzE0{rrp(4t}(8WT`lsNl|eqe)Y3U<40aU@-4ppdGS@_^ju=^w++|{3x!hErQyDg+ zkWbl0d<6OQ>lyEbd^$ot17r#O?C?>I)5?4!OH$bxx2q8+>3Rq9nPu6GN-c|Rsn-#m z!`epN9?5$XxF_=ISKIzHQ{7V`(wTuX9cLzv#@QmDjz^guU|G|aGVOTvlnnA|Kq1TJ zc+dK7i=yl$m@_SLdhtm^oEGJ*X@wz9w;bmELo^=X`3-!}vKgHM97{iI>c#ggo3W*g z=gVmv#rtEKY4K0T;-8B%v5*ISJ58qG9!SuvYVRf{q=b-fEe5evCCf-2{BV`pJC6Me73YlsPrL=aL|ys9e${bU6JBOS^w&Y3uEX zIjN=X*rlD9S=xD``q-kz)7Gfy*tt*AC_8fZ($>4y(sr6ZENaZQOIwaGcXmU3WN9C1 zXNj72Y4^X^(iVGDOWWyeiW+7L-LbUuhT(+C^NJd(X!JKljoE`t5A4&{5$0GGPVC;@ z5EFmxrJX5i=#4aGiW+{qsNb;^WleAAa9dI13wL)zykjZKPH$AyaLV|?-9-&=QR}d1 z(i=Z!`%j19*P@$7vF-8$4anr(@! zVj#5B1!o&l*3TCrk(od(fyMmeGV)h4V--hN6R;vPku3;zkdR}3o%ybxW<+LmqG_N1 zIFXrv6`2V3TS+7ZZz%mf1bqZOG6h-ul0 z85xn8eChLd=4e+WG9#&w{J!Le$S2PM;Au=Pn?^2!k|C-2*_W8iwA~W~z zCa{aaI|vLQFp$B8++RWc_1z0_6lo5g1G0ULrFmD>ylXH*BigQO?Mcqj!wbQ9^O- zLaNu80JWW^i2uV}Rw@2eCcA*z%O5jDjO40=1`kUbypJ{iVsj3;U5(2Y4X(Y zUIYK6m`!n-f;2BSyE7zHBv#5lIlOm_2P+Jv#A#q(Df^ThDHHL|7p1)tXWnMI8dYxS zqne9?UZLFk>7gjsN^8C$(PkA~#Geu9ZG+Mt!uAz{PBWUHeIz(wy9)~jP@wL@I30$X zzT?}2%~mXkDa$%BWm%zAVYam^=x~^uhq!rw9tCtLqenS6M{#qk*{*d${p=W76=V%T zKtZ^P_ve^UKi?)7`&S$I^x?;-+CsLh*_3ElFWqs=`AV}vY5vCZ3e?sbFm&IqSQt~; z$NsK7+=D7Pl@}p@F+nSBmb;ToOYArerbm;r9gY*%v1mQRH*@6x5~?*3Z+8~;WOydl zy&{QPtLf2c7QbI_`*7p7`m=|cLDV$xol?FdO`)yy)^DUK6sEU+uS{PUrU1-(^ZN9b zh=5NWLH=<{Db$y{e$zGzXUd|%9{1fLnkXGD8e+p?I?+OoX1h#JC< z0cnRf80T4mKS8S?p-0QsI5*h744v1ulA=aep)uyv-iy~lcuId|Eo)CH__vxZ>L;yN z$f`wQ1zQw3X!ESspLk0+6Ib-H7)u{vEMC|z%y28MUL5{G5FR!*WNi_+7qQ1}LDX>niA~(j-$@HJfp-OsBV~P#n$IakRrW2oOk|PDQMtk!Cz7%hx4&EBft)u+S z82-k4Besd4(`h!HG&Y(KuIGILiJMt?fUX;O#uk8TyYrx+#h$$1i)U;BXki&$$C7&= zoyJjnKjHCg@+Oi;N@+5<+|ry>MU$u$pP`gWDVcb4 zyT%ra6a3F%{Leevu00?2jA!NZduZNDZJ63YG~aWASvez7Jrzhls3+BH^%~M=|9f;s z2=VXH86ot`J0r*zVGN;vOHYIgrgbZKGI3F7Z5||uSWJ&Ovp6kK^ojwdbW*I!GKxUL z4`VK?yyHW7ps>3dzA6(Oj}e#A^fsku3$At%T&a>uMp5A%ZyI}3cW;{{h{=8I=HM>G zU4&bUyO{pVa9854LP&zU2G??^+-&I<}n}cgBl}b0<4!A+wj<}t0+v9e@&ByJAYmo%ka;V(CxFOsk++nz3#%t$^;*K`^ zk2}J&(TPLlPQbOz*KQ1V3hrdwskoDHD{-e;Rf=ld8MxDNXX3iJkK*pe-G#fu`24y9 za0lX+;AS{f?ocCF;ts|=iaQ3^5+mK?xF>K=@vwJ8X>qj1OK-iJF5_kP^*Ru{#=J!X}5hTt}t7ndC{B*_9vqiZ9Q z8kMA|GICgFUC!1s++}#JsY`zElEEZtT~P z?|0d6MK6D*E?OOPIzi;Zpu*^R6S%&!#7GPsOk{klBt$7{fm&H}`B{5z>ZG#=fe!IL zO7NB1R~i8ArZ&>u+!DuCrGFLu#dIy!af^~7N|klV``RE?4t<1$0A318vHMZ)$J78b4k0-d}nZTqGYp3V(R-tc5G z#QZlG(baSjUAeoF2+r2k^cA|kf@c+s>KX4czMgkvWmV5gmz6fQ$+xkMy1fi_yq=%A z{LH&Ukq;Z`IG4%#&nzYvnb4)99@%@?1`{0(S6M`d?_4Y3sjN!n23taELl5jf>FC#= z7k%XS`eo)fZ^+2FkqY~p3SGZ}ic(`hptttHXABn6Xav*bgYc&HL3p#&C>T4EC5)IT zv`I+2V0Ouq+P_+2ud}3-CEHA}daKB6LARv&Z~yf(`qvDm@g*_aC3tv{zt%Sjo7D#- zawuD_k^HrHhZz~n+XpyZX0Q(7pJDs4u)R*a*l6!a>r8*xQ@@cDx_9%kKF>U(cmM6` zX=fe2R2ML!%G>@AbzcG>Rdx3LpUD7|5MUBv2>VR9EED!k5P?b91VvE@$Re`IqAUU# z_Jm9zKv*3X*<=~3wN~raTHC&@75A;yT5HwTy41F|RjYM*wXMkaf1dMI%D&U zM>T$8=I~py%vWQ0wE~S2m{f#DQA~1VDs5&H__jLL`L^Q~JMS*!>5-x5D3;oP$zvRc zq;mx7@{i#rhM%sKVH1doDS-^Lb*SkgnLcHhbJS6!$Zyw{uI-8>x+RJKwlTDwi9b-_ zqBJMf=Y;0mgmv^+T#NEtU4;*-@x0QX?1xbq5_ENj1pUJqBATHi0--{?i;pY@=Uu1d zDCv#RLX4#$%to}y5T#=?L@AA5+V~K1t57Cf1&{VFTm|Psk_IVsyikD;tCa^%4?lfG zJo+KurBu4~rx}+%KlKUo#6Lj9rt(x3Ms&vr@(IZ#bW4zP7UZ`T!JlS zxQ*I7G@Vn^fP&p4e)vp({gZY zHnMZkvJqM|!Ef`B-4HcR@nK`!62^09;AhQntN?#&je~8lrJXpQ{jfVuL~vUV^q`gB znJ8$F-}SO#^D;XgCy&iqUlhvWKI|NHiKIQu`L?pkWaTM&ZMA@yKX&Jx^9M z@*(4E@WN``xDxX{%6CaZOu%`6_`lp;j6d(o zHE;c&r+G`wc|Vs~HK6bhg}?ao-NkGh1^>C`F2)~~5OV%C@UMpd6wOYG$IHbm`dV%T88#Hx{1&=^x1a=y?m!dhN{^rvKSj~iZ7WK0 zaN=;BkdY-zy<@~F_omn}%^V~26Ba1P)o0kA9Al^Bc9PZEUzl$%e=(EOhnGLY;XFm? z!zsW^FV73DtT(7wMM zWU44-%ZPq_D*B;3*Ejo%9AWuX(D{kz$M<=n9}>*jG)c>deng%-9^M3aQ{i0#Zw9<+ z@Mglh4BlLL^WafojIK?W!CMaRN_b1)skOeh0p2Efc$45whDY1~OW{q2cR9RS@K(TE53dT|7I@Y0j>6jo?-0EG@UDTkPh#hJfaiyo z1up=v9=!VMJs=1#2VOS3TzHM(HG!80uOYmq@EXGl!#hLO+tm50*9KlYc!lt~!;8S{ z0k0>#_VCVx*GoJMczxgvfft826kajB5%7k?8wqb1yb^flz$2%36uficjfQugaDBZw z@YcXv4R0kp4_-%j`S3cyTLrHJyd=DC@YccW0&gq4{-S8-(L48ccst;w;O&HW1-ymu zX2V+wuLj;`cpKp@g0~pnRq#Uan!{@WuO+-z@Y=%b4X-b}e(=tMHxS++cxS^K3@--H z2X7m^0r0xQtCUU?f_$xb)G0oO$H(Df<)RcT7p2(gL}j>n_fm$k7X8Zb%nH<0;WA20 zy5q74o@tMo&gkb@E*YlfD4t=r;idt&sS1(qBIBU`_Im07&_bL#0OTjrHvH7+)z?Tq z@8OKdo`#+aFyUh4Un-*Wob?!0g_BNRa}6Q^eeA6;7^{@E<|CE75~?6P}1WiQZSxCw8WOhL)h9O?d(oe3K_YRu$irt1)LZbzpo^ znREfV2qwMl6bmWA?1y5XICA7!@?%{>xo&^VmD7<8Zi{!k{RGJ2Btw;5O(y39jO60# za?Nu!vIIWMP#R^}K-+2_>$uNqv1BG}AWNAHQg^sh^TwN3O04snJ-klaMpvT>$V7ob zrDNQEc*+nmV+`Ich0g~c&8stl2{I-4xw&qz6Z}5-DIhDAczJTz^obfX&xv>HIq^=n z&akiC!Jj>*)%}?z$M9$Bfm3Ij+d(-ZT=U6oV-HuLFI!%OzI>x{$$a@3ZsY;beH48> zOCP5&j%OwAv(ir2$SO?kj>*m}olJX<%mnV@y2|kx#a&Ls!_#pT^^YNEoXC!cO_O~j zz_a0U#CSX`Lwqf=)syg~gUH$|${52gmEm_^6|UcfVf%6EAskiLcCRqtrXRz&+N)cJ zh&v$`BGw((M-Xq1`#K|g2!_QmOg#@@$}{6gWR-~C>`|pICNWs2hL{OB$2Bg@mcFBm zK)x59ge%cSSxKlKLQXP%3;|{M$OtUOd>`ghJDs}a3E8+K?s4rRZr?I6C{Cq-W9sLq z1rDde%zS*YS|E>^#s49-zzaD6uYvRGLps0M|8>*?hd0B2N-dC+V#Fv>Z!0GESk(ea z=YLhTz=z5)f+FS}|9Q2*5oBN2RtwZ2U2hVy>mgf5b-i`?b{Bk`g1q(kxCcJY=-_e1 z<4~c!9@h=dR<1mhYYXR!6Pb$89P<^T*znM$8YAARLvt86#6v|Ik7l*nn5;tym8={? zMm;sTG1+(w-Y7!>< zt0`x4tvH!N?oL&bUxacBvs$A3Y*Dbx%}k|a0-dAi?A9@=vQvY7zSutVJp03H+(%WM z*5cItzCQTjLi}0@^~W}%IwY&&uiN6W-l(STE7!qRH-G3cj5?_Sv02TK>??%Akb ziai^V9YS>r+}##?dLvuQ4^afKg_FJW`-S-1QncTQ{1*6ITeR&*_5pOm= z@`1Y}D}siOB&O7!RBp_(a!zUzhn^B_T*l@I|I9^kmB>p#4 z980*m_D2b0td!&7?Z{RY$C3<5oTVgjR*h*xWn~;Texl--m2udZ)f-uT&BQyqmWpFZ z3=jM8Qs#^!B(XcEXO`=F)9~!SAL#~PG0e@s7vm(ufjcXdM%)@gO@KsC5(z`c)O9 z9BL5JKUe~1MsX(DFKjtEFsx3uY0@^F%K;w($~dKcYjT0;Ns7wxChXu@<}iXsMBkpo zhJP>eE*BLeiV0{(Pv)4jN`5)R9EKn@#P?%T`-D-L_o+JQ4rOZjd9t7#F?m@d z5hy_(?TAO=W!>X~Y|Ze}5I-wbWcg)XZ}a== zTnKV5%oeYDN&1*wgrQe~gFo34LrFK%&pgLKtZ zmy0#T@5=C`ngl+*N0cj)T!=1}PUu{P_p6b+O9a7zecG{p^i*<-Zq4c!f*hXrBX}}n z_xHO~?EaqSN#R`m7IXeByT7ho(Dj&D(N?MFt14AsxX0Q3(de(n9Q@|e*6$SizI)Vf zL+$|NI%|E{Z3R3tI7XLJ-c{9c~l z^iyB2o*wr&e&#AiZVFeGE7Z|zE&rC}$#5o;CzEU|N7R4@9s4eWjz#fZe!ght=vs=- zK5-UJt?6R&{al1HE?iB;&?XYegePFRzauUtbb&&5B`V>)TP3`V zVSV#Bi44f|V^Rk^54LPD=}+=4$v|$czN}|BFV>WFXIxm%U};V&ozXL7;q)w5!}Ua& z)hFqwjl4(Fkfa{j0J>izp>6z3?(@9FTw50{eYmL2ake`{PJVEF6Krc>G z&d~N^K(tyXDOJ?Yh~pAEmoCO3ouqw6V!uvO%1|b-yGCJJXXN64 zP3LGp*XfH)=Zbme`rkPt7gKCq`;0sfL+NTjU5hu}D?aldqlzz=3)+h{#ZdYRh~T)I z(g&&Z%XMQ7hIYcxb$Fo*Uf_;UDjUJ@<`~Wi&Jn^LybK>xZ2VaCn=#g ziL%9&sPRxkk>WZOc0pn0U@IK9F}SZxJSUK&nB)m)JOUFCn2Nw92+Tl0ef0-OO{uB_ zkF+bu&QkSnDm(<1h{wefe1#1NY!dlCTN2oVzySoVM&K|4Bs-5FKu*_0gfB+!Bm^cS zFa-fJPNySqIRdkUgSvM;0#yiXL7*CeqX_ImfXCAPaxx`hCbT*vU|Apw;Q(^$Ay6NI z1_%U2?W$fj0=Wn@g6J11@fK)`0KYtOxOX~VW4+MIO56Qjs ze$Y!es}uSlFhmTa0z(lfMqmU2!x12rJ4^^&a@9y&@pMdjFEAQ`^HiIfq}LjZS&aZ4 zM0?^LIzURSlUO(k_aLc^*>$+S3$7=vtAy?c>f$M|1A!C*J7tF@t2sc3 z3Zdka?e*hQvoV4GRA`Kv!-2bExQiRpc-*h5WyRBQ-%OOu6(5Gf=HqzAnQ+OKC}DWP zGMuwXq9syS`8YKs57vp0{^As2W*(m|*1ILMP_hEk*9!;cxcb8xyX(_9>6O6!)K3fG z#ReD_6k~z=a%C`=P*JTZhBZcsS|)OxIj-)7OWL4>PH)t`@Hw>4Rd+Yjdtt2lXLxbQ zmxN8Pob#!N;prMPeR@8QpAt5GdKXMr_rkOhxR>l)HCB32W2PTpi2KyN@O_z>>0=k+ zfyH=0W2PT(f%{tGfmV2+E$-`$v6-0ZFAf%q)JkgpZ^QHfnBEm1SK{L_cxku9F{wWU z_2Y8rEAdIx)XfPjP<8hO8MgL7XGQ44z*6O{k@H-R>tnc{%Ku7@bHb7Z=i}_)QnOYC zCFQs*hRez%pmy;l4I>zlV2hL#6!(G84alwLVlKi1mlGLm7USa24JPOt03U-1s^?oN zlcljJcit=&DMK+i>IYG8q#T_4@-&ygQ&Bv1jjrm-+`DtUxbY8uT{r$ib|bh4!2<}Y zZhY{d9A<-Ddnd~BOMjKY$)e{UycEId2wtv^m+2yGJ%UvTZjlI&!J`P$ec2%d_p5(h zjSJ89BuF7qmRQyVsgzY;Oap>J1alC~Mlcsab%`9zL$D!&O%ZI2U|1p{2Ad&RfFN0U zZ4gvF5K5ZFCb5Tldp=YBm}!U8|3lFELmLXJ*#}36vT<-Ef*Kb-c#bGg4I#JfTm(lW zc%J$1VlMu1WlvVa-_B+wF4;{+V7Nb1F3~b%|>b| zQZ-0z7VG=eBBT~0brn(}q?#ku0;!frwL+?`s(SWCsvlBkAvF-GK}emA)L`|Vk(qDT4DT7B1dCIIw8ab00XGWdC z@R4f%AH{Gz8LYEuRBulGA6No zg(bK`Src6`qY?wux|v5~F0e^A0Jfp?0JVGKSLliyI>GCTn<{Y=y)`aD9xVc>INBP~ zHprvTy`>ns2s6~T-i)?Frv7K{>56nEI$y5di8b*0*30ow7!Q>R5k+c{8We?B3hC>$ z#?Uq>T!^MiQN2jKF*I$7<84K#@t?UT(}vEK$Z@^lT9Ocr+_v*EY6*tZoT?c{wMKOt z3}1-OOOd?@RV~oDC92wrxMY&vL)prt*4TKOd%nCJSG(JG=gYEIb0xC5bhJix8wpc# z;Ub9xa$!qQP?FTE+%=NAWqju97d^WO^;@ET?Y{}th**dGF37JG{ttQkoEOv|qd2}@ z6z!Z^!gA3NSWaDt3Uodwj&?gw5~iG=B=-tzb-D_NkhdR^Yj7LiA|P?o$X+vzg+kGt zpk)6U)mzxw8O!77JRFgcq7jr=gwCUI8z&c+vX#j7kjoX!2?{gEYAzioPgS4D@M&)y zfLpubZ}d4l2KSd@pAY*ggfsa<5&jXCQ_^6XS;a8ehb+?7q^QS;fByA8tS3XGN}04Y z`s4ARZO~l-Q29!n_TqtO8$T!mR3Fw0qs z9D{$Hs3=Qm8D`GOnG%*IXBKjsAh#)U8cVbk>E|^FcS3j!zDohhd|X7C{w(A*L0)5A z*bEm@z{K@|ivw2%Ev+XTR<7~E-F)X^%}L+Ji8*0$RJPIXnYd2f=b^eOsvTK14LP)D zoQuRfJTf197huQ|2_Mi#U5I3n+PPfZo19mzO4m7{#rJtis60Ze#xPEvfkZRxEx?f0 zXwyalYQI9?9Yx6EyHi|6#jUX@--?s{rFo=v>BDpS4opwsIk|a2=%plrHTRozE-D zf}n8|rOCZ;WglEO1ay}aDnarbIS!D}rSd~$HA*|8v=buhFsKU#ZAE^6(Pj0Ke5Fi$ zBVMLJyfk*1E_WwsJf)NX>4XRa$n z7|DYsHcC!JH8rEiNS`dc^yH;TP8XN{$yrFRKzhBHP9(QTSA6p*l9VeQLQ>5PlPX<$ z2}t^p%tCblNpj%p3llyW6iaf)Gn}^9EgtL+HqLIWnZ_yld}$_hldUx4V)U=G!?p)VxkWd-H|^bmTNClx~eK|7itVa^8E@pS&pb&l}GQo64e(d zQ6>MaQ1lGRZR5(2%XosH5u|3Ms4sltI+b(9$BmW=(8ai%Dvt!oik%8rH;PGy(g%tO+rKgRv$?{fAf+TTWq3 zOgcSlB3OdQlr@oi8rDRx7HfiPtDj*_h{9NgHNnwEmG9sVe8QT@`7+i-&cDZ+$mWo) z&6=nXCOHp}r#V#iY44fK2VRi@19xFb+mUPLiv7gAMRZGOTSoW7X;%Sxb%IZfg@r#6L zxor%N%*5__D4Z{ROK%oBBv94_9h#!BF?Lg`rTm97GEvDQSc=i=c=>L1xlD~a9yBf^ z-=G3l>tMUubxt{c7Q@e2ONHz;KFYIH9$g$0k3c8sn>W*$%;&I_m6mVHKgfTnPPxOZ^Ba1+W!l&K8wZ4C8Dzu6t+gr$l<<)I=-PbkvFLIRZKSoU#f{;}gg(!mCkam*c}2K1>Lk z}4-|rUKby(j8>nUbZ=CFSPvefa#g`66GP_>eB%nNmbJWOYv zK0Hi+o@LK7#6v&KOXT3h)+f3C5X>Jd>Z025x)%axron0d_Lj} z5MPG)a>TDhd8FvLp`KL_z5#77~1F5;sRKM!$Aht*s( zz8dkBh<8NXLtM>8HDOluzeQ5pa>Ow_Ha10IE&Ws`Qu~D1K6kSIhAWpP2do zLdENp9v+Y2czcnjm#938`eXixoT>fX8OtzSC7ayThEsi)QZN@%ybOQV@PB{i@GHX# zCtHtTg%hlop@BM?Y>+9Fiz+utmdTybCXSxhf;=>l{?W0@#et)gT}KL;OAQxrS*Ypx zjsKy0HyY`z6-G3dXtt1roE;I@!Q7N1y0M<^HdZpCNrz~kaMzaVR21S<;VdN!Nxp(x z>h&s@{g%ozZ%Ljxm9eSJ$=w#RiPJ|7YnO$ZRj*JNj+0b|#oHzzZz_D3z&8WFY4FYb z3TBMt6Z-bl(b@JLfp72U=xk?Cmw;Ske6jJq_3%|8Z_8-|a{1V1Kk~BR3#j+A`k(r) z^ksimXFI#85C*>R=liat&URkpYnn0oM%8gk>r{$FZo z>dG^mcFhqqXfI5L;TqukJqDWOj>*8;8f)@Bt}~et*sB|Qm7*a@CLbD-<{{6SJS%d6 z$`I8hF3KfNxvA}^B60~LGrlO&4Q*W`OJtcM#s0wtapE1Rz-?cPn|g9RB2`}$>E<2? zH?@7%DcsbYuk0(sqj{#XxrCcaR;mUaj&#NceZD->&24qLsrSq|EjQKKx<@d{&HsIV%y_?ho{KN?NHQe{VzlQrxS;Ku_wubxuy)~RW{ui&| z+`@c4;QQ*P=%2fW`*aPL1)R(H=}gfx8ZTVKeg8XaI49{RYdEEHzVQf8KzJ&`mmoX? z;b{oZMEEj<=OV0e62l7+UWV{;gs((+3BqLvuSIwR!kZALJMrBJ??Lzg!dD}F7~z8m zA3=C8!m30Uo`mpZgr^{UDZhvv`w>m%F%;UL1<2ABisk!AqdA29*S@=!XpqKj_^o?hap^o@Hq(6 zP5LN=&qa7N!sm(0bjC>xQ>?Zc;gtw`2zNv{U!`oT(7XehClT(3@H&LMAiNdf{s>cO zSdQ>^gm)mE!oHmdUxDyKgl7xKHC%)6W`s8)ya?gN2w#OTS+C87`xm98G)xc5{qoG(7>f}}G^H|`U? zwR@-pNW%?st4PDg#S5!1DnW9c3j&cotV3QGR!jPMIe9D^7rt2pB^m>W$({O9NSyCf z>b+Fo+8A-_3$#RiftDojjVQjcR# zFgEaENDK|MouvH59E1FDrTIVI&1-uc)wkgBgze#5@XkP~vHr--;~3)!qS&3d-C4T~ zZ|Px&FZdRBNpd6{pMlPM)vzu>L67@P75J78>2K-hzB7h9ndJZZQ4(@8?7YH3sBTb zW$Ghtnfi!(JBGLQp0Rq*Sa(l`Lz1Q1L>%oWsmMxNh_Xwb{^Alfk0P^TN-ftQzZ3FT zX}Ilm2z3!Fo+T}?WUPpLhK@u2<+z>`JdEqx%OI>8hx*j)rCzQx^rQC0NI6v9 zyiatD{nRlo#_?gIOYGmO{(NXCL^Gc;!a*VtA{CV*KZbnGp$fX6-gr2vd37QDi$OlQ zzZJ+%r>by-Cl1vRj2&Z$DgNA{n;Tnkd#J@QWyZkzrNI0CV>zgs(^jBZnEsn>@uKyV>==E~I@c+|?}J^Q2?FAkHEUsV2f zA3cWmaqDUVH%D{yJ>lxVa<=TqCsA;eGVd|j$vCUJDR zPndp3D65U)NT!SUvG~ex!vS3dFV=RREK zWqHCaX(1+HC8xGu2PBQ!igiHJmaRC`fn@d2{B1@^RX8}smST8Y3@^oTx{xZx&&t8b zEYp1W*=`(&BF!k{yZGQ+}IGG`y>9W^kia>)gdOP?C4ar}J9$d${HSBSg>W<)V#pZ3Nu-KjI( z;>O+={iURaH&a-{dTT$mTu+XLGE?g0*S?2(iBw9goAcRnGFNv-vC|E?W2hb{PJwQw z7nf4$>XUqNE|OHls_iH{lUa`&lb%w!q;svSDn^xRu8KH`qU2K9`x>}CU5DSLoYB+} zsO=4gqmgb-=`YV! zov;w^w7@%j<%{sp7-Ts^OJ|tl_F3}xGK~FVGVpc0h_5uY1M7H8M`93a{%S8_2M#6C?yU+M&x}zKJaG%L(6!8BngbYd2 z2`qu!NRkSa2+&w~58BgSxESr7$#5w;`6P^HBq}{nTWTP)HIpy3yH|5YowX$wv?!;C zy#&7J{M|+IJ*PiFcfk}hm8yz(DgNxkpDS=#k%-keoDS$a9;nOh6yiA|q%7-|+BF`K z5YJ3TP>IM>s~kPkiffKiGpUfinvX1Mk~BjW6+)O#{Wq1PiP}bOoeh@eXs{}cJ5Z{z`AS9k zaJ1`l(wrnXGa3}fDY`0!eE0qE4~Kuh+7l@?LfI3y+MfC@qJY6RxRJj}WLs^kWi0ue z#h7$IR)GIGfzT5&< z#&B32GlnMAHT}K}&1U{TF#T@&@0fm{!c=V5@T-`9e-)-;Q<4g!PH*~6ds13|ldsqb zp;Jx2RXIwIA^l~Pl79QYWB^{O2ffS;<-)}gDCZrwr62q2t z5JQ!6bcmsY68}F{;{T^k-j_fuikNfPyi5cfWJvPVM&|(Z*h9-2-V&B7*~KPQWHur-YDpJDq^~$bqpDSe@7PtNA38d)Of2Jgwn}zJ z;370tHxXPjb2edT1>U4{3{@U}fi55-$jNxX*r_VSZ&FK{aSXYAWbDWJ;$s+Fxdfxv zAW5ZVuI2XF4(LD?bn25Q zFq)PW&ow;5Da?>UEUD90NyyitJznsY#N zHZax_2{1hckb9?wyEO? zhCe3L!;KT3CU}&fn2D;Y5ce0!H8O6=qadGwn+W*~zAGdE6Hlf|nv{}34G~5RrM_rK z5k`EbnIevl~*$nTN0AjQcrQ=eT>jsbaG%CdLiS zKv-;Sn@bz~Y>BJUt(Go=KxWjvzLl=T`=)+>d%G`nVLm-%oR zbvCFVky-KFZpfB%pvsFYd$v&7vpfS9bE}#!Q)VM;Y$jSs8+9K2kw@c&_|78CU5w!^ z@ST>J+e&Qq|H#8KN3!#;k}>g4cSE{NdA|`QUrW*3hu)?5IlIw^pOX+};ra^f!#A}L z-z-I&a-?HO`_M*DAKc?2QE?5LWDh$fTk1$qLBd7-aIZt&rt8(UqLP%<&5IxR?>_vU zdhFT;ZlF0;LOpW1+n{!-@QG5hJ0v&?mKHos^>5r=e2j z*A0^LneZsec|M`GPObk_AyGIhIVDwF;|==dBR%7S;*lC>%sZuLPSQ=^Fr-WI6vNvw zlARAvm74f^s*Pe6Jq(w87T18LF*Gm*Xw>A6VHLwY{a3y@wWE^E?P zBE3XLV0tam8<5_FbOqA8k=}#!0i>@+`mmTprH>%J7wL&eUySr5q$eXi1?fwXo{se8 zNY66+g>)6tTO_`7`Y6)7kUoU;ex$EKdLPmWq=B>_=`5rJNY_KUKGF@44kDe6G%1!` zq#Gfv_6zBTNH;~gG16hA&p^5v(gjGjM!F5s?ZmZCx;xSlqCQ;^ zL3#+%aioVLU5xYyq=zFt5^45W3DW0CxWM!%q|ZfqG}7mZF;{wy#F0s_MtUXE9g)sQ z+C#b%(yNf}fOHZvL)RhQ1?jCw_m`eebM|dVdI!=eq<12H1=0(Vo{jWUq-&7gjPypN z7a>iy(p5-@kZz823#3~rm#M7=!tRT7Kcvq>dLYt+kUm>NW4jqmGnw=Nq`QjYBr7@= z!?D$<>4=&N>@ULpQk3~nmeG3h=-sXi53EH4vfm?kKuPolWQdU!rr{}Ts7X#ea4PzC zM$Ivy=#FtK_err!O7#poUiOQ1)8L;e-j=c!pvf}ayF@%slBlkv#D5do(iZjeJT|nQ zC>9f0)5T+h)8{!>W$qf9)NCiU{w?JQ(3-;ppwU#5SoT-oxgxa6h;E3KVHhk>>P{iI{b;hIV>M z#X#5U)ob;t==3Ip#4YAAjrly3F~0&c^`4n}&&(KRE*B2l3>88psSK<_s2MSplky(! zrxkcqAE(Okqx#hIF+8sf8Mcj`#{Q%ae`l*VifW-DM>k%Aao=v*_(UB8O|MH+(Eu&F#-%&#z154u*MI~ zpA6yZK5px%1YL4}`N{YR_`ZC1_cs|8)3!*NY`c-YYL%A2!a^}lB-!9A5&PLl6bt9z z<$U#z&9Amc0?uA=2s?{WFdP@0Bl6H+b(SdGc`@XbVJnjnY-J9Q#ykj*k-~YT%5$rb zdN1eyh0=4Bm2w_RBdFHUtCWnhktfwq8cP5xRd(SK$YfHCuxXE4;2jdeMEhOP%glz-&yKjg93sz!U>cEi-szQ zbPy_z{wE{-h3Y6`OmJswKL+F6NaJ*K#26=ChLOVMlpF)HPy&05VAtjl$34B=qYb&ios7L8DVGPfs;F zCD-WO|C!Ax4>gX_H$iQ(99!EhwmeJfIHX0}sh%-t)PIkvk`;0^$C;gV;J$cM<7~=n~V)N&iwVEC*Y6 zY8xYArpbi#>nSpaLC|W4LUR&iKBYf$Dt8rqURV1%$XQ;PHqQ4xZ=R?Qa~wa%MO}1< zAeZCbf-8U-lSp?Wxmmw;Yz zs-3Nbn-tCn)a^%n$BAM*%SHaaBeLZs*(c=2@O;YBig4e#a@;0c=DwI1c@?`FSw5S+ z9}gUoQ{EF?5QgIc-mi6S8`ivU*u z{`H@-mA@aw`)+S?Yg9s>Wn*gJ&zAEQq^?!i+(Dd5y%H4{0d0B4R|Z#Q5vq7Vb|!Bb z)`xrQohaUM6jZ8A~auDB+~PB<#HlslB_oJ+={t7>pn<18h0ql z(cDhz-gh@9NJxH4V; zkjX}F+c%^5rgE6cnPEOkrKE;-|?{+9wXb0 ziznNeB^=IAnQsXR(ZwLzhd+rUStKHLel^({mE_=eoS`}7kdQL*wD&yC=^R66_wJ72 zrYsI&1}bwy-X#-^(mlIGpIxHQuA^^K+G=UeYqiSfN6*!fL;gupIR@?M{bMR-Ofl{H z85u2$Y}!&~Mx7fi`BCJ%F~cK61s-JKr00w9pqB5fy4Gur>osRRO(WGQYeb#0a=R?1 z>dtc9>$sGK;^oHmm21DeT5Yy1xjGg2<9h8Aa&;KCrU-vz$!=YBk^-G6ah)k~_l-0h z=X!?Yq+T2);N*WY2s=w=9CnJrUHK$OS7X~sJlYZ4JUpsIsW4Qz08S9%t%mp0XP}bh ztj^CsTIJ&ImHCt;l7Q!s;MlmGN*xubr_HXXuNjK*EYYd_y2`K;S+E|{76*FFOQ;J2U`hm z)4^7vcgnO~uHh26#PQV02$kBH2yL_(fRZQB+HD{Uf>bw6>Npdp$l}aq7dJpPPyM9B zU3~U(EQn!21@d)4{(uW|5jf1~>ab}{`dM1yf+H-)p$b*1Da4^7QLwQ$rQICkqAH`6 zt4F}8tgtTLkXh^MQzOXH)imH`FfujWea)H1mkU#?P^}TUo)qYM;w%9#U?D}gKr5OO z!xSB9GjycQ$Q*Mxh40apSF+_QCSb!V%kh#1b^Var2U(rmI5c!7b!Mo@H)I0t(P5dS znw%f^=$PdE`e>Zclk(jwME!i@6|Y?w7H;95 zI*Vq{kBW&YC|`k{#>OXI%a@BqWL%rUMJBE-JVqu42~<+2nI-f}?bs`M)p6#X!Da>S z*8IEmDVY&GhE$ja8prlqpX56!QaP$)sIDvBaPw%MmNQT97kA~lywmRom-m8<0I`bB z=uTbSl#u2}=Uej~-8LlsCXu*|AgKn@)YeH`t{<1NxxoqFru!us#50y2ZNK; zT%=E3q)*LsBnl6nj!Mb&wk)s}7^HU&(mMy!oe_@-JP|u0jXF-`uJ8usiX7)Xb$j5! z7#`GP<2!n6i_a(_e+Qa2L*Y3mBiyFtz1N!a{WZqpyg7zL~D|?S?pe*2Z zgwBp1p-Qr&dND zpH;=1wwW z@#bjea-5*=K8?l9`wvt=24o=)6baLS?RT?)_4=8w1c}t>G_KufoF)tnS&(yNXjSV| z+hf?y*R0hW_Pul_78lBz@Ddp;%G_{E4cF@0Gez!Sg{lrRvt-sR$2>K7KT(KzMYx)8 zN3SpR(2@`*V7IaMPg<)C7Dw2yJ)h=l+~i`FnHE!a5JRiXOmX+f*rSiW3Ou7d(4q*> zXqiW1q63*!64%}749xio97P<}>?Jpnw`tBc&G~i=->xeaJ)W7T$20Sk@5^`ZPZzja zua~LU(-LNoWyHNKfxqc4_BZ+$ipdVnDdXOb?^65iMriFL^jSwLyQ{}lk}H$W&4s#i z+KuLlZDe{ViXfICkwZH@g4cG9GM}t*RFawR6X1Gm1Ce(Xy_P zeJCZBZeUcPQcJGXXWg>UO$+Cg;cnGU^Bcv`XsXE;Uz;MkIhok>_3G0l#nIKT#gxp} z`{mP25bBQeD33S$H5~u+jERB83j@9;XM6o^G)`dJ^UD^g|n-X z_-7RVq=_SMGPuy89hZ z-tk>e_kY!wsJR^ZVdNjfO^h{3GZUJYxSUKrbt-CH?X~N5+&R}mm%m#h*SHqeexpo# zgl(89L85}Xdp=s}gZ!gjjsBxn2;^6Cv-m6d4f&hH-)8)kYt0Q?7`8HOLzHJCmM$d9 zv)%X`;BPPf%JY2;`w^v{Gx?j#-=X}K>%;jg`6Ku%^^WDQJU^bla(#l~#fFm&rxNA9 z>4vi{e-1Ik-{qEGX}Fpw_g7fD(y+>KgW*QQ&4ybHw;Apr%6lHL^dVw>{-!Pc4a4h+ z_4xa3{z|>K7~VmY_xhfte_-h!8UC0k-{F4#%6mM`U+JG;89qal=btrvp4gPXZ}L~# z@h*Sm`uqHC%-<|NoK4InO1~En<$6oQ)^@!EQQ8@^{4R#wi2Ol!{*m(g8V)2%c_WEZ z-YCO!iBir5mcG!^rIwy(=_y1RKhucPPqQq4E>X&xZ|Q}WUTo=QM0u|yQTnOI^0yPE zeY=VB{9eO-h6n8WQA?+Z^8AgKzRB=AhPM*=gWD|4)m-1}`Ar>oi2T7o!$Fo`Y&hKVM-rt!FCfZyD7E~FhLa4Z z7+zv{so@O6S%#Mx&NZBGc!l9Y!^MV6h%%naEWO-tB~jW_Vd+Z4Dx$piMxs1dWBFT& zG9It8^e(%;mnioiu>3=YhYgP!ripUj^@cYZe#h{3B7g8*!#fS{BFc0BW$B*~rQP>g z{zJqPrW>%a@_iYzK+B;xLZ53)l=~@?(0rPAD;5wNF~0**-m8cx>&iePe=wMTShP4d zLIdJRqO{{&%O7KSf#r|0bgAJ)qO|8?!%0MG$E9|ChT$y3%M9ll&NsY*DC1`tQOYZ` z{N;u#4ObhkHLM^?eH$#j(bC(9QqFe69YlGrU3PsxQQrF?QTpYmUH=AA*7kwCS;{RY z%6&tLGCwB~c?+fz`Ge{FBlpd*^yNgke}Um5qV#KmDD7EJEFvBw%5&c&%6@V?F`sxJ zQJ#Om@F609@EHHd-q?bTmFumD1;jo?SqBCa`GcYSBjue>^oUD|^89k5^lycwtBCR* z)t0WY>nWm?zuRyxQQCQkDDQEtyrJkFKQqT7ce{A{p5T)FEE&ZUSA0|qB ze@T>jp0n#O5T$)DS^gi1{J~%ON8a~6qFn!gD9@cBo`QNHh; z#604IL}~Y{mU?mogwLlM0vgmQSQ$pO1qj8I}p#Z>w}5% z{f8LRftarU=Mklx@kDukg5kx6lZmVn(=9#IaJJ=NZs`Svi-=OsVxqKb8Bv~JMU;Ay zhBcPIlPL8vG=}1C!@Y+43=a@x-@U=oHxi}4e@v8e@3;I1iBkVVh7Vi*qeN-X6PA9` z@F}9S?^#PfZ}?lo-xYHe9iLzV)(k@n}%-@r5$e@{@wE5B}#q&u=KwSPY~t) zk1Z`PCH+FdjAFpBz9AV0nxA8sYuMP3(JJ+NK2iEDLgWuR^N*~*1BmiIgNV|PV~JAV zMTX-IClKYn$%fM`f4bpJ!`X&&4CfK$edZJ8`Gtl{3=@W{49kg9|2j*rH{4|THHKRa zw-crO9hSbzaF^j8!>bMV8y+;g#_$MH+IOv`ue0>GEd6c6n+0_NHhjkL zS;Oav^4(q_vMcciqSW_iyZ%?AywBT~e#h`V!~Z5qyFM`d(DMIj>3z4nP;k%aqK2hjtKZzFko&m%9 zhKv)Y`8kHUhK-3*ejZWkqxGuZ*W9oLQQo7aVJpjTLzMfYmQVcyea^FV2TOM%%6(ld z-OaFvVK2izhW&^#KF_xFU?QgkMp}9lv5@I2EWMB@_b)SCMU?khYu77?GA^o#vaW3* zN$*{DE)SW<=;e<`)?x(FQ+j-x_lS9p@Q&MZYRq9-z7@@KO{CIK0%cB z{+cN5c%CTr{EjH){hlb#{lW78OcZ+WA4DnVBvGDcfH&>;Y@+PTEr{}5E25Ow&aOv@ z6PR93l=mzrb|PL!l>5GAc(dVc#9_>ThbZN}XZarzu=fhzZ2zLlGVi3U(c`sQOapZl=ZHy|06_KA1FB9dyzY=8}yh)V%-yzC(`iJFzM3j1@69fZ9 z>CgI>&LPUU%O}eFdPM1$4u&0xQh!&X^iw~glyeqQ>K|t5a}3WTO8Mto`XWn@C$dX1 z)6%o;`aGhv{|cg%mmo@gYl!lFHxi}1%|vNejit8|r5!sh&G2uU-fQW7h6fA}86Gw~ zYM3_shT-*wHyGYX6ndtZlSuG6VsBy&J4@+hPk0|wxF+AV$#~NN_INorA;l+lNiPC?6xAeQj2-9b95=s9xGi+|yf++mL{zR#F zfZSRf zo#7MpJ$4gi{vEXRHAGH9+(eXldza<^(D1*AGTx69h0pS9BD)5ECd&ADlPKlAN0j+@ z!mc+V^IP6OpD6b=CrUYOh|-_!45OCc$z00>D9@cB%Kcf~B&FO2MCrH2M9FVz*wU`ICCd5|BTD&Q47(ZjFzjX6 zhbZ-&O_cIVEPohL>O05s&$s-sh8J1>#YB02x~1nBE+9(%i-_`mD=oi*DCJfW<+&|H z`To0!a{pe#eTD}N4;daN%JXTWwD$%}-(+|zQOdd9(sx?=E~3=;Q=&ZgfL(vY(m%KK zFAaZf`7aRVxj$I?uS6;T4a2_~zHRu9;d?}B=ZA(LS^meC_H%GbI~aae`-gHw#nwc5 zE@J2zb|y+YdJ^TiGcA9h z{woX@TYiEl?J75{w(B)^eW#^&6ZQKV?lU}Kc*yWDQNJ%y>c7GAZ#2BguHS0u+bw;k zrSBrj{J5Ja&);v?A12B;e9H2lHT)e>+Vzs*D~7Kc{?YI?!@m&aegAIhcZt&84~SCV z3Clle>3SrRB)=h1?rUOrhGBD})Zcr@9zcQT9_b}{T`*u$_FQOfOS>HdaiS^i+d z62lROqlwb4v4#_f@?O*I`b@()L}}kV!^;g97%nor(r_tJ%3W#c)kG<`%5V!&+Pi}& z_wBLteoG%QypAZ}>lV9yhvD~$(w-j}{>bphhIbp@LzH?SCQ3a|5M|%|x#5#UDd#D} zrwyMmeAe)J!`~YI&hRC}R}5b@{G;J(hJP`9-SADrw+#Po_^#pmh94OI!|-2*Ck#&- z`U>28WEs{oY+#se*wC<%VH3kV!!wA|-)$`2&M<1&-mrsVC&QRw7sGCbJq&vp_A%^d z*x&Fh!?O(s8#2s>exDM!SG_k$%a!6rx{Ks$~c{E z={bh;3@oQ6kFHMj{TdNvo;EXVW7pdmMu}2SCrif+yAb7ldRV%bVIRxy zZ|Sp$@;n2cxbb8-%y5L^IYb%%7ZIi036_7c;bfw;b0(2f537i>o~*X(YYi(5X`HV0 zRS~8B%|!WL`z(Fft{=7Z^_ITD(%-T4t(Lyi(svpDkSOi^iKTyP>H7>HGJMRg|IF~` zhQA<6yM9gNR)sf+@_z3TrQ8n}}YWDCG{c^dQ3_L}|}ROVg#T-gkjvsa?N>DC29sAw=C z-T!U*A6Y)AkR|zah^kmXlzIw@QXZYSYB^nr($4ONJq>#s_BA|{D9;VF^dQ3_L}|}( zOOG@hWq2-8p1Z(s98vC{M3nZ-GF)i+%ZPIS3d1!->G$=P-b9q==ucJe+e?)8?=w7L zc*yWDQOZjbrQRDX|3<@`48KE^`)()7_xmYP>V3%Y=R|q_S46q*Il~tWU$*OiGJM1G z-zG}?-Z6a7@V^Z|H2kL_U4m=9f!6N1`i4QG)SGJJ3>s-_i`3p!qF{ zQh%YPI~o=drJk;a-3@yh_BQNmc&6b1!+}JpcZj8nEj^ql?{%)>g_d7x=_y31_Y%WP z4QCLgo%4xO?n297Y`Da5nPI|k1ySx_W4O-plSJA7stnf~Zm{bc4L2KZG2CXj!|*D@ zU50xMuQuFoc+l_~!y|^r46il3&hVRt-!lBR;mwA(7~W=hhvD}Ozi;>h!yg&`*zj({ zdkpV2yx;Ia!-owYHGJIg3BxB1pE7*f@EOBr4WBpsEm6M5OO}4c@KwV<8op-u7sJ;L z-!y#7@b5$^?|s96SpL5ZPgp)WGOTCVz%bjep{j(d+%~4LcZiGK?8^G3-W^aovw7<(_5vXB!T-{1QtKBT73)8;-U7iwwsbPB6UK zaI)c4!)b=oiBj)uqO6mPEdNTwrG{mO%MDi&<+-&)X-^eV*54g={VKy5;S)r8?rBRuWB9D$^M=1Q{GH)ThOZdDYWPQ@l=r%& z-!y#7@b8B266HMeAyMxC*z(cNeRn@m)|D(v*CR^5HnDUbQTnZ!rJEbJAj&w18peoZ zDPs^(?k^_Fx;WHuI8o{uL6ml!XLu1&&RwOJoy} zFEd)L}~Y(mi{48$~$iP z_ZdE5_o~2dwu|G$&@prm-QC?GDIwk6(%s!90@B@$G>ANa2#5%XNJ*D;iHLyk ztTpHN&-?wXYwxr7b>cpA!}~ZK!xPf$pCX^evv>~AOV7I`z3xrvKJSyCN#D1(((^tr z9w}`wKc@8jc+%sEq}NF$-FIqCi|H{VW|m$*FF8LJ#KO|+7MEVPy!3umr0X@Xw)B2q zNUzt7+(LSOJ8}okMm0ssO`2t?TE7IfF@wW6n5Ad1v`tPLs(|<7)K41Sa zY4|+-H*n!u|D9oY-zmuYFQ~%%NsH-G|NUZkJu_yN-Y+*fFXqRBjO#zG58tOWxgxm= zxhB?=zJAT5`|UveOX=&=9eZML?2G+zp!9VaN*<2-@0`Nd87;lfWa)iolNXWodq~31 zYm@Z#+spVNJi+*B@&)o$={~RHO}veF@xJtRdqRGOFQof^jc@UTbievlG&JpM?!St~lyfV}$3@(tYYb1P{M{ zHKdQLC%s=2avO3d>@I!12a<G^x{ zh;+Xv89yuC$9cxDGk#x2QvHGS_!IIoe1ZDi0O9jqOYi@V{6R)k{*SExUN3xJ#0-Iv zF$(IRqYNL9fw3?ShGKk7h>0;NCdZT*hH0eFBLg`TX2EQj19M>>%!dWA5Ej8=SOQC7 z87zktuo70rs#qOA$68ni>tcOuh>fu+HpiCO8rx!f?1-JQtMs3z`;z3Vc>OmbXuJWPOzQ2$h7_;D%7sW3IB#q^jFGho&1NBbWMf!c#6Z=yih=Xyc^zjpM zHuZ0Co($3WBJvXHbytzs;5yuZo22J$C-21FxL1Z~{DAblBX~kaQa(vOix;S0k|7$u zO8qwVyLcZT;3MhvUyxtnYkVVpKl~q?cwhZ`tMK)slA~ixj4h*SUP9^P!eod{$9M+m z{j!mBU@pvq`LF=$S2Bk0Uj&O`2`q(Wr1z^JegCVIYf0~0pL%m_&v<9Xdtg7thv7J! zCVd@d;7pu_b8s%sm)>_Nc{#3>?sKhlpIdPc{!jY2AMt1W6))m7>3(jI?@6!sl=^dg z$@o9g`@Y9dGK#YPDUtAXqDmhhSNi@XlTl@A%qTsclbm1r^HEy*&-*nQZ@_pn>Hb>C zSh6#@D|W*k*h{*3tsH6Y9_K1-_C|HSewT=iw9eh*^SqH0eG<$%)Bfn2CB0%qP8X zA?d!#P_HE2S7oe<)$wzzg>|I&ZA@+|-DhiZTWl}AUuW!wy%_I99w2@EFzLP~Fg^*V z;53|pGjW#m@$<%+tZ{&;8>t2)LpAWo+ckmwmi4XCy z^ghp}pNIF->qX2O)T2n}Skis!pE?PjpImyslo%#GF9T+yo&$4X9?XXYr1vi(eS9f$ zIqChXQ?En4KDjBmCAP(m*j2i}ZrB5RVIS;=18|UZA0x=4r289(lVo(|ndCXr`^+UT zls3)NORB=_`duO6CP4iv z#PFO1lS!|inw(a;|BU3!m=&{QP8nVE3QEr}O1(JhHw1;(^;=oO_bX5Sj9dk)VGXQ_ zwebtAhYh6nYa;z~sU`K+*cRKPepgNSeEn+3@IJa>5A22dMK|H&{iLtQ5b1qJP#;Ae zhm)vJ!D%=HXG$MGhpb;#7QX&`T!{MhV&V0rxExpFYFsP5-bU%`zJvNM+=Kh@JNzE? zdx^r2|3Uivexm*}{=)dL(#PrFvkAAQ^!@5c?kdCIuh;{7VIS;=18|UZpM#~> zA5MKF>X&teuR9jU<3yY+ecW{NSJHjyH~od*w-t=9!41;qw~f3L_e%G_pYcP|KmSh2 znDT=3_$9o8`u%d@_3L;OZ{uCOj}N5xe&%nB4hwJ*E&?t#6q5B9?WI7oWmVba%S9C;FXru6lhMSU)LJ}$(?xKw(bwbJWuB=3-Z{=TPv z7=Of{r1$w5f59{OtMqwa#B0*)-@<#;A4{+El=@5ZU-&ome`RFN`#}98`WJ=y_(-VV zQWl=0Vswlty?2V7K`e|#u{f5L z?z=3xJXXZdunJbg8dwu+;}=*D8%W=$X5<#q`?Vpr!w%Sq@h_#1>rK5c_Gf%B4yQg6 zN8?x=j}vh+PQ~f?6@HDg@f)0n3vdxG!DYAtSK%65C;dHiGkGiOpTiEn-#c&@?!kTd z9e$7h!^6_o>A3WD{h9hNz3@Vq9tHztZb|lCfp1Ji-2EmNa9~VkaNKP)@Pf85KG?)%EU?$9h*)WH6ABCj% zD<-{P8OF;=e|{=5UIlAlZRz<9r2A=vO|TiZz*g8s#?t(5`e(xaf!adTTvmd1UIxgMEFXUhGcf5?(q}RJg zekk47V|wF?d%opSs(*4B2_|oeq#Kh8lro?oZ1#@8m>EjAv5iEu! zuoRY&-nRm|5?02lGKR*#knX#Q^!ygsMtZ+?()Y1DxhLa&aUk`g*Wm`-gj;YMZpWRt8~5UVJb(xB5FWv!cnnYA zNj!z8@hqOh^LPO-;T61!*YPIa#=CeQAK)X@zsnnbf1lwC>F3}r`JMFVKZ<_Ig1^Vb zlpaqYeIJuZKOf031@+YAw5Wg5E__}_%#2wvJLbgPm{)qAg5<(j6pLd?ERAKcJXVzc zK2b^f{ZNPeh4gdSNP3@U(&y6xTVWd+P4&*w^Lt3o@56XM9DswQ=Zzqb!ZA1wCrI}- zkvtiv;&l89zm{Hip7j2Ur0>Tn>Kn-0rO#t0?q>V|`5+#WUgs#|C#BarN4~`PRlG_4 zKKT(o!&lP#zQ#BB7T@6q{3v}sAq9ftqN4s$!SH%q8CT<}r29;Z88Iv7l z#jzyyvgGnu5kHfDztxsrr;&7DEwG*R{+-C(u`dpmK7Oq9b23GG|7ncRBF~XtXFm0% z)R*H*TrE9sJ#MDHmApf`zkSrdBOjLT<7esXc3Jv-Zb`3qPx`pW_!9NcQij+6!^j1L z{-a?7wcm~Y>Z8@ zxpZHx$!(>tLs#iOdNJOQ`Y`Has81kI!&%hlk{3(&vlN%(N?eU=alQ2UZ71)P?r$%7 zKlz|^e@DqD$fu?EJ4^jMUc#%4Unk!t-^KgXAK^3UeO}``>FX1zP*9I9yjd7*l zSE17VC#0SjlVWmAiD8%q(_se8gjp~f=D=K-2lHV8EQCd{7?!|NSO&{s1+0XXu_{)_ z&#@NP!Ma!<8)9Q@ip{Ylw#K&D9y?-Z?26s62lm1~*bfKbARL0ja0HIRF*pt<;3S-a z({P6LeV;|1gL82{F2u#S6qn;lT#ajSJ#NI!(%(C_lXv27+>87103O6ccm$8)G3oO- zNj`CdtMfeC*uBT9d6 zBV!bdhA}Xf^!K2o(m$_KOJC;<((7fzJXlEjJzNH>Qm;jBEWK}2Y>q9lHMYg}*bzHR z@7sgiOZxuwqdr7>|8dkOQJ;Zxq~BkQ8DB2l&q`d4YjHhp#Ld$CeM{bfyQuHO@1^_v zfqb0&i}ZeH@K@>=rTe-;{TANAd-x|l#K+S6yd?i6-QPdb>wO|eE)vwEVJr-lo|lxI z64PJ?>3%a|7R-h@Fc;>L?xzsBh;%Tb8Jn$Ew;yw z*crP@uh#?nQ16EWs1Lyr)JKuWN%uL8JQL?g_cs^k<3e1FOQnxrEB$%dM16~NU)!b6 ze=i=Senk4Xlhn`R1-vT#eBYN|=aFM^E2?ykDZPGd z>ItYP!4%T{re{2>^!)6Y6LVu;>2(W|3u960CCR0wuTMqlRiyW+O}zp2CgfJ+cH}P7 zeSC@Cu_yM%zStiJ;$Z3hN8)(tz9*Bv!f&MeS|a_P+(6zgJ%6`!AA4~>9>9Zm2#?@V z>Eln3PvR*&jc4&3p2rJ#39sN)ypA{VHr~bi_y8Z_6MTj*@D;wsH~1Fc;RpPP5sC%Z zClZEWRE&->F*e4M+DKHhL#a$Je4ajo>{d^35g^m;qUyKoQgll~rb zhQOPK z^uDpB#}iObBHeFl%q%@GD`v->m>ctAe(C)SlZ#?;>2=FX?^i{7UJdH?s5ik@*g^W| zTTgO->3#;{U>u6WaU_nG-e){{qV)dLsediq*8=Lxa1G-dr1#%ReZTbn2k;;s!XwiA z9V4G0pOW6^Jo%DzAJ@sZ8Gl6mh4jAfs7ERhtQ%E&|L7PKV`E&5hY6(jNk&c~y>3S8 z*~ta5H1&$o{nn5^pW5U`jJJ^PqZPKncGv+sVHf;TdcB_H-sJu`nEFuiNE|DD9+Sz_ z@oVYxSwvnY-Pa0Sg==sfZoo~r1-D7>vs=2){nFRr2=x=xPm#}&FOaWF?|+^8ZSq~b zj}Pz>KEY?w`@JE*mG0-GbU%?w2J44N*JF}nlM_hKOF~XXPAk1`R_Xq-V@}MCc`?8A zI)$b8DM`IFxgz6L$Tg+cZ-6ai`12vXPCMy!x{$kLZ|Qk`u|E#P!8jC$ORqDQJRT?F zWSolA@hkiqXX7_G4;SDfT!PDR1+Kz1xDGeqCfp)@{@ckraX0S8{dfQm;vqbONAVb* zz>|0iPvcoUhv)GEUcxJQ6|dt>yp4D9K0d%l_ynKf3w(vI@eRJkclZH6VuVt`^AQO{ zFe*mJm>3)5VmwSB!#@|80#jpp%#7KkpUa%&yjYNWVRCVDNi2R zjbC6rY=Dih2{w~HpH}2H*bX~jC+vb>Vt4F`y|FL$$ALH)hvIM?iKB5Wj>m~O8K>fO z{0hIu+4v34!v(lV`aQEs`nqnAz7AU$-$vfa_oIpT%={9xvb}ydu5d zb@ENTP5nMTlJ4&XzLDHX43_m_cs zCUQ1%4ssqWfJLPHD}$A(S0~q%?yo*J#KzM5H7B>k*4P%?OV8^}?n>?<-FH9g1E>$7 zJ_;w`G@OO=ajA5F%W);H# zrTch}FYzz@8~?$7@xAnV5z7R}N0#0vnshx5^-ywR#*85@{pwJ!E4^<^>K&!8TQBK#`cWT79>w?+>FYHOXW&eng>!H& z&c}tgSh}Cp(*13uzFB(zZ>jH*?&~o5xb*%%NzeO*`ft>K$BTGbdfqki4e}l7eIH8q z@sjbssQ*hnV%cC`G>jv?UVL&=>3))9N(_^pmyVnPGhr6YCOt0~IS=N;0$51;@BIs7 z5$eUT1eU@wSWf!17qDK?irzBRcmw#Sax8M|UP?18Yp*S2z;%Mph#*oM11nK)djXVQq;w+qlb7k5H`n~EhOrDnoWVCX@ z`NzUg>Hgx&h%x~tl)g?$F{SjpFib-|gN&kjRvA%dBj=X>dx}CbvMefnd~xY@OUsC| zjP&QDs`Pku{9Jlo9qDx%QE!6Hum!e~X*F-8^l@XUkC&;GSICHRCH2+P?~iZEJ7h%V zozng8k@}x}M0hB@-cy-CevvRMf$$PlCHbOiMZ%EJk zQ~ExyWTDZj`6@DoO?5R6Bb?l*??`f;d-N}p#uasuh~Q&A7Y)R;#4Im#&APfqFm zb7Nl2j|H(X7M0$w7`cQ@pt1?Ez-wtCGWsJ z_?`6i|6Y3DLHr*cV*Cgm#bbB^PvR*&jc4&3p2rJ#39sN)ypA{VHr~bi_y8Z_6MTj* z@D;wsH~3cix_uyj#0V9G>k0ICmy`>YFEV~vrdNK?_$TS_4Y8^P{U?;}KQSi7=f@^(>f8`uju) z>F4J+>3zFb57z66y`}dXE@R4x(${;sj3(zu?=xR|-fHRRYzOr{(#IW^?(+xg$MI*z ze3PYd&o>P@gY@}ilAf1~oQGTl%V1@!C4K$sOCR458%yug zT>5!vA>H>->HCwYRFbCxhcKRea0W)BbiwBPtyBEt{q(0 zIMVBcO4k!&QtHX2*G)$~6K0dKR4*v~eW#{$Uyr2czml0`(mKID=`e?MfBB@pAAc_W zUiwqIkB8EIJf%M2iy%*tes4^dzD_fw=g%a6O`c7jBfZXiT+H}V@=9DQ-S1Y$zm-0( z1LT7;oARGBp?oL3?nmk8B1+xhIZ7gZUa6$l%P8GnX3Q%6dB{&Lh=rxkr-<~rC8(E@ zUZ)cEsxpuAKl2|-(06?4 z;}c4scT(wow@c4I!1zJw{f`p`QcAC% zN%}tLmEOM~<0Yk!t0w(Es3p_Mp3>KQl=O89YZCO6LH1RiD;LXxO@sXk%k;{Pq}OjI zeSA0R>pe*NzD=dRSbE-a>Fc?Iyhgf@jne(^kUpPXxCi%1f1Z9PUzEOH*T^^Umh}El zG{*7`?sE-!i}Z2ZrTg0{z21KE0rC;)dB^Z1fO z>HhEFpZJ*Zr}&)uU*x~Z|B~P1fA|R_wg~o#j8QNe#=uw@NBTSxk`rT6OpYlr4AWpb z>GR2i*{J6r=OO3A0$2!(U@ zxDUU>@9}?l7=OSY@i_j3KjSZW27krh@OQk3m+=q0hBxpQ-obnLCqBf-_!OVxOZ*G} z#((f%e2@R(CydyV&kaVwXcz-yVH^y__?QqAV^U0xDKQMwU^>iznJ^1x!yK3k^I$$K zfQ7IK7Q+%)3d>+QtRVdySC#%b-$eTT+L7_j(m#KC$uK#c`d9ch&c<(W9xlK|xCEEs z3hB?q8uB{afSYg&Zo}=k6L;fY>GL^AK7>c8pCF%<-uE<~qkbMQ;3etxu9I)#ZRzh3 zcknLt`_kV(-$-A#j~KO8uwP7!E4^+a>Cb%9aOiMj8IV)zzoYLo!7Ykxh>GeyK z%j0KQ4QopG*+9CFM$*T%kY2Y9c98zw^^qK@b@2B$$)%4=DLp@p^!LO33yqUHLQU( zrRRSk{r#f_^;R;9a(fw3c91@g?u_@u-qQ01$oz6W^^MZc!*|mCAI9U->zt9kt{vM2 z>=Gx9~^)~aD?={QRHzrNqXIx(tpmIC%x|y>T6_(@&@VSH{llChTEl&+e_Y0 zJ|x|5qxQk^O|Y4C{k05{Z>9T)&>@%?Nrow=k)bj-^}N#aieg#nIXOmtp7r6iy!!lS2 zt79GMMhA_rLRL*>b-CP<3n%+^>Nbkr;%sjd|ZmFrT1MgeZM#2X6fg73wfLL zyq)CTxL5kT4@%GfA0A@-2>Ay*O8uCOqWM2duX_f6!;8}WTqa*5-@sdVNBTS;ORw`B z|B~+OU+Hz;=e`^V-$>rF)$X!!BFY@o}8Q#!!Qk|!wi^7`ub#+(PeJw{t8O> zR~U<8aV&|Yv8;@)`Bli(um;wYeootwJ76d5f?rBsub$-I*cbcbKm7xA+6{klWGhkxQje2h== zIlh$c`)~3;_%FW4|L_w=?9B6pQ7{_Dz*rauLoq%k#Kf2slVeH@!!(!#roI~8)H*!E~Du_wUfTz-DM@Y zL;5|lSNiWEj!FOh*ss#h%|+_>WOn7yF2Q|^j|nj`CY633Qc5464znEq@~ zpU+bAO6lvjMf&?ym99bG)vyNE#M<};*24za2%BIt>Fe5t+zvZX|B~EYy1(Ai{SC&^ z)W=I-&xz9OO{e}fc^-L@^m!EiQvW|0*;;zN&QgE18{v@jI!Ev*9+RGTntT?|;d#7( zm+%T+#p`$zZ{uCOj}Pz>KEY@B0$<^4>GOU^{(v7bLbu?&B1wNQTR>hUeO;H4SI7j) zJE`xLF_n)new6wN@=57^&q{wDFG^ph8;sw=JJS0O=^pek3`a<>KS{ceY0~S>VtfwH zrM_5t{nav!JSu(M2^m*jAYYNGmETI=&v(>6Vx%6yaZ#n$iz_`Zo^(GcsHey5)C*#1 z={_rxYhokmb()adN%z-D`h74^`g_43>ceo9^l@XP_n#)+*Br*@Grmyz`)|RX!T070 zGOltR=|5++lYYKGO7|DiD=?PcQAjUbYF$~1pQXPIx?l|UrL{EU+F&kOZPXJJQRoHNE|J_|3vA&)|0o& zWXi|Mzer!V4*Gv`c-=12`+O-2$>q}PtfjtQ`aW$SZ^A9o$8RU^l%BUs`uOi;WOTmF^%&U6V0l_*sF|YLVS6q7EveN69$BNSX*I@h$>AoLH?>BZ}a35Anud`LU z&mGe1?7}^`kMZyEF!dksM?8){;m`OBp21(G`@TrNEZy%d8ACo|`~|*|?&~f2BZdqL z-h)Y`$CF_S>GjiMX6f_GPR=VmKR*`4!dMiGOCML7To%hqU$+|Mn$q8A>S815Cb<6a&PJV`(l3_DBbsP@<{3HGLbwPr{Z*(P~*$VE2Z~ciyLt(3#N*zmx9o zC-TqI`~F7$9WUZ#{6o&uygq}2^XZ2Ja1ai`VK@Ru;TRl;6L1nv!D%=HXW}fJgL82{ zF2u#S6qn;lT#ajSy$pZ9kT>BL+=kn6C+^0*xE~MTK|F*n0eIXD;R<3e1FOK~}_#MQVK*W*UqEd7088+ki<7kQ8LdtfhlKOVq?cnFW+Q9Onx z@FbqX(|A_;b8~@w39sN)ye{3(4e9sqfT6+jIYh=$o=Bc5ODG?g{(18g{*1p!{~WtW zzKnn1HM}AHbNK=J5kA3Z_yS+yYkY%m@g07^j~HQC@N*}+biXk%Hpazxm;e(=zdw^p zU%xccpVthGXCh}K=fGT;2lHV8EQCd{7?!|NSVnrk3gk*y8LMJ-={{?dzmPtz0lATk zt=x`!C+VNVJ*Cg9zx4eYNggkK{AB90rT=`lQ2P2UW_&rWroI-}<3`+!Tk%`mfxB>z zbU)vd|A&XApU1|-gFp9ll8Kau%K0+!h~T)CvY>J;>FZHX`p<#ArJw6Q($`@GPLY1D z=SiRMBDp{o9vOU(Z74mzt@L@fm%dItr04gMY2_^GzUNENTZoHsDK5vAxEj~udfbSc zrT6)kyaRXP9^8lD$?!jakPk^8e^k1^lhXOL^!>jeeLgp(uh%{4{{O^>_!yt!b9^bi z?msfQj5jJcK7sT;Nu=-F7U_9AWlnjM`oPh__rvkh_c6_w;QH^A?&qL%pU0&8I)Nwg zl=Qmiq~Awz#s>2fOW)V@(&Je%w+vCvFTGwta#1WP{XVKht|}ud*N~oH6KhL9Cy&Ta z@R^LK`bQZeBaI9Gem-J#PbU!R?Iils;}h`2hI{`6wR46VmIQ!n4xn zeTnfa((BzM-9$?xR0>D2|q1Z!-BS{6_k| z&trTU^)=)zZ4@=AoUQ3f7Gx!_SKx3*%rY#>a%17?Wah zOewuy8ge=rT{#=(lYV|mkSkzytSf!K^|2u~#-`HiwEjR*WnbN zrG7#B`dz{+conZpA9ow?<0I*PUf>()em{~!CI{m&rPq&*aWS6sx{1h1Fd3$hUN1d4 zBWA{|m|c3E+~mBN9}8k(EQ-akB$mdqSRO0lXIKTRVGXQ_webt-z8a7lVH0eIEwB}~ z!FJdIJ7E|661!th?2Ub;_a8_ej6-oaj>OS87RTd6oQzX(I(~&;<81r}=ivfegiCN4 zu8{6`4S5}Iz)iRXx8Zi&iMw$x?#Bao5D(!IJc`Hg1fIlG(*2z!pTqOg@7>?=g7kBH zo$;H}pOgF2$3LR}MEd*Y_$k5XV`Q&1^!j7T6Q#e$&y((dfy^QgGybDotlVZsuwGy3dHr#qbf3d5y1zo_yGKCz|OjVHZM0&)^eK|Pi9 z@#&?nXLiPOV}9v%OG?ixPyI9Le!q}jzaBQgMl!DI9mt)ezaMlX_mI9HqsU{Vzh6uy zPnBMO9(e&S!X?t@w?cZKZPI_Gf|*&$};E$OvBt>&C`pGM>s=rJt9QSX=tI zdeZ0DfZRm-dt*=O{)Wo5a*_1)TO~bzjr8#w$eVBrZj;{cDESzkz>|0iPfP#*0q;oP zhletcOg1anF9oKO-Zw2~q@J0aotzVMQ_qiusTY;L@8zZ6GZo06%LK|TrQa8mrO$V& z^m|~n^q=QT&kpKkrTeZgeSMls--iK=55gfh3`a=MpFo}@+bTaHKf@RJO4iqSHS_wANK~|;YaEB^t`#j|KGiUUM_wv%SfM34e51j zN}oqPaszCHO|TiZz*f@hbR+kWMU>Y_KNoAI``XC(X51?Mp58CL?;+{=hh;)}p79&f zpWmm_@4Xk)-%EckW9jDQl0~J@qqy{XWo25~O8PnNBD2X^GLzgZ{r4(oWKQ{B`uP8( z`;DlJ7AoUOua`vnI;SRQ#O%_?<;2{WSEf_Fj`a0zPQ9fpqr61MkZYw*B|@2n!THpZ zDn)oGQ^?4Rg7JmY`>&LZYs$$N3XbU#O=-`mG!5_wJf`rVSgpSPvgxhq|N zfKTv+tgd>A<-xpC((6`|@nr+)>+_897x;?t$SZ>D8!Ej|d`u|acbN2b*-d?~^m*1@ z8PuOhU!Mr8g5x7epHDOyQAU@(|8ZrAOd$P!%P75mZtD4^pU3jj&uJy>3MhYf%NrwA$^~wtPMW@^QHG)h>NAK>k{%ZTp^>XzK*;BH{llChTCx`?w0On zKluP2lzbf4c*Ka9tv@81dO{ZCRqE4|JY@=Y23d`Mrv=hE|E z%INZ6@_YPGdjH59f_YJ-*9#@bm&uf~N%xgkdYz(-7neT1EV(@6)$j{!B4cV^JMx#< zSNizDIFkBA>GPOMo-Jc4FCnjyK5i3k$Gwan!V`EFFG(MFUB;9Tr1yD3{gw3fdW~=J zExyAK_)&Vjkd47{QDqF}Q0a9OQco;BFQxQ-OeK9iGccZsdS>Z)Ii=r=c`(0pUj-R2 zPA)0EPg$%;{WEektchP>18jmVunl&=F4$dq|DM3)5 zVmwTMi7*K!lYZZ3CTErYK2VZeTEHX%B7vLgXg3F}mts<|%b+`dH;TGJ6+i@rE#=X+(9>7D?kKj@1>vNiX zR{FhtNoJ9s$k8?j*C~eddnc3}9}{9?Op3`dC5B-dOotgT6K0X#CzlM9)uj9Sg7JEc zH7x(%-9RlfRMr${!*Bmf(9_4e9GvTl#z91L^1Fk&G+fO856s z`uauR8sxaLk#Yy=e!I)?_o4K9eaZcCAP&Z%((n5*&#(%uJk@jsjnn& zWPG#q_w>)U1$|VJKE8(ZpI07AAODi^zZm}q-{U8Y{H^}ZM)Pw>UzZ=G&+kWa^X)3^KONBi&a4#tUH)>3z;H{+smmzeT<${pW^%r031p8SFC? zXW<;2i}P_IF2<#}99QCM>HDw|zr{V$eSaro$z$Y`cv||n^LPbsGJY2yNZEr*y$h(65qDf!h7}DdR)Du!qEPXvTQ~y?a-X8LI(#L;K{RjMs`p@`_^!fct{!MzF z%j7@s8s5NLct?8vL-J$tOY&bbipJmKf70K3J~AF*caS4uB!H&&c}t)`z(@vFRhX8djoEfNtBODU%zA0eV!tpCZ8u?z)N@q zuS&0b6Yo;Lj}N5ReMWvEJ^!_gBO~q!auke#aiot+D19GNQcolOJnxad&ike39g?1R zLVEpE(&u%W@$-ydW&9@IrTzq8ORx7%`uGpjL-q#i$CloImCP?M$bvHFzTo){l|C-M z^z#rVJ%5+1BctvQ#-n3Q>3K=W$uI?`!qn3DGmXqBD^Rb5m9Z*Tm-996F8Mw_z(@E5 zpGiL_Z>4|ECjKsXK5|H3*8~!7NcH{TnVd6-2ppl3stCj4uyM&pR%?|4-yI_`CG{%hJ!&ed?=LLzw|mo$-|}h8Bd-lef(6pP-gi)`0s4%NZ0Gj1@gJ{I)79D7ypw!-;dJ!MK~B3 zNxB{xL#Ri^=yH+9SCQA?I^2Mpr1#w}eg6;PY3k?kiuC?hrLXe?@*~DykYC|ze1mVL zpTGCy|L_w={9mwsWQ>B*Fb2lLI2elYF`@MNB*!$;`=*z^FWIHfBPZs@ywb-N#*)-a zlPh91tj+irSdV%Wax-j!t*{NY!w%AYbtm`4-qQEC54j%>z(F`fdfrg-a2$!FaV(C< zi8vXjO8=Z*L|!8Oe6EmwPZmEEytjUnu3waXzWN*vo`(_A@2N@B=QC6Kdd`);-t%#x z^zlo{%cbY9CvRkYEBRa8L46N-AATpj&tb-YlK;&U3&kXGNSB7?jzmD0O|Rm zKLqO}md=}HB)Jv8#U0XrFLZ!>5D(!IJSzP;IV-)-dFmHr4&{hPgZ-jOkH?bUFAj!E ze;&hRh)gH_b7Q~syaRX;4@qB#W7602v<#8wr01W<3o^6v2l7XZ@MCb^^DytRV7HBb9di~qf@8W$KUG-<=7x)TaORxKm`~g2= zgr9qrv$D5u>iuv4^&vO{$KV8I{zU(@0#@Ysz>A}_)Pl#ypf(i{paBLukjmPAbp<8q}N+PUWZ$7 zC+?S?cK{FKAv}Ud@tE}WJBg?99A3aH(*53+e&4;2G37hy_h-~o!M@R@`;9C8xri^l zeq!nO&=&G`>Gk$YfA9OB%q5@56f){B!OyuQ(&v**`g_?9nOvTdIptgF_fFi?!9EFO z4doWn*YyofKNGz7=1Q+OU%Icw(tWJP%`%qqUg>%J@cu`nftJH5w zpYNcv!8${5nDq4-BYpe?>XW43a|_6e7+)rR9z}l*u16K=^KBu0d>iThyI^nW@2RoR z1^dR8KA+^|lo%#`Tqc=V7MK3qm5^SyjP$-2rLV(f{6qS@`u-ODebIR7^O-7rUsjVh zN*}iwx8k?b>+d4(!F|%}{EzV;$UiauGxaml-)Fj>57y}+-DkAlgZmI)di})G>!p3xsNc=Egqm3L%p`CNLRmol47aVfa3JEcDdwJt}9P*%>6&e^X7{wTfQ zPttw0`6GC)`pAsRbEWrPD&5C=>F0TmOe#-H?|(&l|En^Ed?TmGQCEZGC&?trOQrW) zDZSoi>EpKIx6;>Xk4!GlQa>ks+y(L_xmda1wcvRjDZS2U9E;3%j*--bJ-``M3&q@Vl4o_$NM;-uEf_xpdzXZU=qMkPDTw-wEdBmfk;~^t_*>$J^Zv@(1aDK9aw= z7hI=R()BemqFhUTm-PPoq}M$lJ@26O=d9uVV16U%=dO+Pb?GEMuZ#3?-N-$#m-Odi zvdk|JP(LXB-u{XFGyZ~S@K@LcNK16e3SG(JITA{V&%FIg87Z5*J&z!z1w3C>b<1<=qLU8 z9wq%ejHNyir%JCg9lw$ZlvgmmhWa|(fSYg&Zo}=kQ+ofslDC3(&t%~A;|07VeIA!(OnC>NO0WMC|Cau|PJ0s6XG+gsD19H+OMm~_Ej_R1Q+*ea zze~Tb|CGKDPo;lu#d{XK=Tb`F-we|GWx*WM_azrOpY-uXuoU%jGOp^i$aSUXHI_cU zDK?ir&lcoX()Yik^!L1o&x1Z<$hgW$rPm3QUMG!oe;F_f=8&FWO#1ynxzYNP4|B|G$F!HA(t=aK_iczPY8xk4g7=Lb}hh(%)-4{~gQ^c@un34U@jU*`%-6 z57Ngs{UO-Wz?+llI-;KeEj8Dd?I9>X>%#*R?O6lvdUKW>k7=J3= z_j6fLW_TOqOw#9hh$hC`{%w;5naz>DDQ(DO?o^IIaK=mlS*HYl#HiiJOlMC)N_&ZVIeFgyuEqC(9&qne@IZ7+-@Ma0}zx$UDiqaj$g0 zhosj%M*Rf&wDfa%iF}>$n|NFL`adVX#J{BPbEFSJe<9NMFM;$v$)wLe72~NfEv9EY zv-JF&IcIoSr6LU)+Us(F*ei`cJr2DBvt}H#T zmh}GhsW+6K*Oc+L)Z0_UdC5_F5?Svsr36}mGpV6k$zs* zlGo!#+>BeL=WUbTZzuKLxEJ?JpWh+r^F2X6jpy+S-jrVNEG?!ktEq2Bp*iX8TLDK6Ckv?u5c>;N+^g45KF|Ne*()Z_E>2-EUuk*e1`iG^D zKaRgh&pX5TZ`3bS|3iAcJB)FbPu_P)`i=f@$(m!6l9oRsk} z>S?HFAZKDc2j*kE5aUJ2CCH`7<)rtmOs>xO=j1x%x>z3@GTv1B_}1k1jCUk=C3nLf z*h~7j0pvkAMEY|+RR7oCH%8!S>SLs@*97V7GYO~QG{$G*9O-=)GQJp>;&SQtZi$Ey z!{19~rJsjt((l_k(%(B;OTX`X$OLkfEG_>h{r%>o94sqFiWvSqxsh~#O{CXpExm46 z>3(`izc&U;&l`%vaU_n$u{d7({3qjd>HX(R_qSGt$)nPJUXT@J^2ot?WRq!?t4hCz zYf8W0n@eBsR?^RNC+WVr;Fr>U_a^t1KA+*z-(M!ng)&n}aC|Q5`32;Bc?#P{i5Q`o z@?q)o_)&VFHF71dj25kK88piH-DZR&Ub=Lq`Xjiy~Wb^VLkQlrTaZD)5!bMeLccw()+$9zmZ(|VrI;W*)b>P#=O$&79f>=DPR6M?9lw(9W1jT=Um?BT8tL^mF}_p! zdhe!w0FN+!l6+Qr-Z}Cmye_@|1M)L`Ej|AY`2+c*bRUso13Pwl>#@jjr29`S zv&fRteV3El~4-a-0(&{_KZ+FSbgfjC@x{%DzAu99AF4X(rg^K>8J zdKBgR$3vAaMS2e{38Z&Ig6RpVx;#cL;apz<#R*NN0*1j^YyC# zM)B&Zzb@o+bCqukt)q8_`u{=khv60}|EdvgXnj5QgUht{Qx}EG1J>;N8B`n+S|>+V zd34BsZ0LN93%ys{HPrv^wSDh!%ap%R)-0}F{7}e$qtLt#51r?Ss{VJO{r(V|$G?V- z>*cUdxZb*5|C<%J4V~}N;kMzD&^SL*{8*^J14GAgc-0>j@?C4auKl{q}Msa`EEOI0tUj&BO3e|06@~$5eT2mB)v!%Ne0{=h>=% zJ~Yp-gy#L-DlfNj*Z*aq{=OEvKW+}Szdh97Jt5zFL+yTAyg!t`|1LBye+ljXLTJC& zL+$@td?$4LD{a!%uNLxIJM=sw0K0w_sG!k93NU2PYCUQe(3q+=Fs(cf9O5Y zW1(>!wt2Vz;i2RILX}Sl&C^*`KBstI$mc6nzO;CG@rqDC*H!t3(D}O~)>P`_)1#-@f7Jps*P4SVC&!38qhvxB#DnA?Q=bxeL|JB<5TIhaVW}B}4vY~Zgw(ER13mxYcq4Uuv)NY5WA5a_=irWi9?e+@Y z7yE_!`(G%3SglXj-x{HI>xKH;sOmQh?lTTIo>5$(seY^g@ z7@EJ+i|2-p=ltTAieC=R+t;dmWoVvm4mSvY9*Wz)EIt?-_isYuJg8sicWCJPI4YD6 zofYysr+8j%zc{r2WubYvs>;`f+FxJ1vG}dxEyY_y*{59;>cIvkjCPpF^WLi4hF zZQrxFci1=er&js&;+diIa(?LeE(`fyUFDlY=V995?mgR{p}gUs;*p{I(A=KZD(DtW8e$R*e{vDd1H$w4wnW0^Nae3&v7(T2!uF;|Xb`7=fDJ}^0v!u%V z7C#bte!4hxKE4+6{bp#r_<5Bd4BK@QYWK$~|0#4{9}CUv->UwJP(ROB`Jc7@#j1a; z>i=E!Zx-JUz4zR4c(?zDL%tJ2{Z9$a&*N49WYs?tI*tuSEYrSUnh@G=Qs}%qUgal4 z>+Q3l_2;F~`tyEhyeo|C=69{oac&suXXE0g#mz(Qw+Xinr-$ylMWJ!-89GlNukt5C z^M6FReRyT)Jl$FKKM5Vz9;3SZ^oUUV<3rcQ>EYn;uF!RLe`s943XSuT&~ZH)>gQ9V zyW?JY$8MY-42^4@DsLFJ;|j&??L+;J4z(K_8vpcA|GS2ccejwwo}vBsF78v@ueN_I z)X%}8{XP@APFESzmDdcnN_l9gpW(%kq5Z~$#xp&1KYy&YA6Ps%)b3NE{tvJE&lQiV z?Z*{QsQNF4+MizKGmB@3j_ZPO!|=w?JWkxH<6lC4PZXaH_49o3m8$=DXxz(;?atq- zq2pUUbRO3Wt;2&u*X0A@M&Yxe^ZiQb{o9%2y8h1(&Hp8#_Ct5B`6`YKjq~A9yGN`3 zu_`|m>i5N}|5xZZUJH%qf1%^(_2G^y7FR2-UECmazieLRZHn6$2Z#C{9y-szuKM3s z{hx||4UOj?q4B;Pio0)DdAaf3I93kzw|c1Ex}kYozqny> zL+jPBP=6yr$G=l;|8SM3)b?qi{pVGAesN)FzdftGcX6N4ct2j{gNmOhezN%K(EdkM z`N+_CkFE0Ot9)W;ykD&PldJyp(EjI!?vHPU=JBp@R``Jl-F_>Dj&qgpknnR=e`N8f z;?bdY#}+?dJid5h@ucD@#nVFLKC8;-6wj;r3#)ul@hinki8jpEhCYeGIZ zRQaaj&BbpQZ!6wj{9f^n;$5MB?kV0^{CRD^KlB{`k%`^>9vC{Gp9#&+VO2gRbX}ZW z^{0le`z6bK2X~q4_!~sg!+9c6c^qJ_1kN5xBs%C`T1&< zzgE05wBPli_TQ@dTZ*@a`u~2Y-H$@+?N6)xU}(SJgnh%eLi4-al+JgB(Ds#!t5^L8 zLwVfVRsK+I-=NAHRe7_J|JGH%ZD`%RCma&K8tVV`P~N`c)NY(>g!cPTX#UnKZV+1M zx2+aHRUq9r#WtF!IU8e&>`wb8EH#XF6 zYRGq&Q2#SS*TFx-EyI;&boHx*o`bHf^7X|VL&tSXsGr-a{`Syu{G-ax6<;X6RD8Mk zYS_+GmH!hO?>kj~FLYh6Jad^|)5Ce8@y-v$^+Q6(b$Ic(+Wv*&38C|~(X4L2O^TZp zw+Q)f9lCz*4*A~~IuDOl`EMcLCyGxMpDsRI{Acm`P=6=P?)pDDwEwA9KC{YaSNZ%Z ze<`%z_H(*%3=SRN=+ORSiep3L9$%bXoL-z&+_ku%xVX4iao^%cLq3Ouj{mUYQMLWJ z;t9o*!*)Ey(?k26Tid@>ytsH-ZNIX3ZD{}Ni#LX@%kPH9@x!YBQK;XaRrwcHeyI4n z&^$aEy564-{anPGq36)m=XUq?#v#8=i<=j>4CO(6LOugR{SB$@!$RZPDYTA{EsiVh z9Ll?<=+bRe`{#}+lt?* z`tKKiQ1y3*#&J*8-xs=H{t{ZJpA7jvAL{Rg&^){r+V9_?@w{Ez-wDmnvb%QemkZtZ zD;8G{^|y9t{|^<{D{fHSsJKaSv*H%T-o>qp+ZOv2`xSR64hW5FSd~YF#x=UiV~S&o zI~T_nCl)6crxvFdXB1}@=M;A>_7oQscPlOq&ELME^Y+oI|5)+B;=#p3ik~Werg&KK z@Z#r+M}_)5uF791o>2T^@#NyE#nX#t7SAr88|v>%RsM4E;?Qw?t;$yxuPT1Ccx~u9 zx~_PA)!!I8A2)~2)9s=4c-Fk`dYd20Z}tt_JcZ)$VWIa1w}sZjU3$7a;;>Nr<3r;* zEgT>IGPM6gq4!{qhpzWGL)YV5#kWK4-mmg9^SkZK6;~*JAk=Qv(0#FX)qf~-92?d4 z&8ob0ZQr)or`Rtv&LN@wMupa=nW5u)rs`h^#kn^^<9##a|8|w%ExsR`=UxlCd0j5l z?gOFyR<82uq5FL8Dz8`EDAaC~;%3DyioJ_lhsN8l$~%OPV_3*PBe?tAg7izccZXH)Fu2Nj1xOS-hM&ZbC*U|8B@{nLWC3E*I*5)zJC9iq5Y?Y z&hz}xaV`w)zju}QDef2YIiSiP53LhNh1R3B_v-q;A@utfPZU42cUON?sQ;To{oEGv zy(hH)ZcDm#Y5&mie=;=Q75C|W{&JhpetpA@!$~3k1)=s!YWqh*J|8W9taxB;KO}T~ zhgbdQiboZXDIOPUcXG)0^w4~rTjei>u8%9K{Eg5$cYSETTdV%Np?3F%_WybD!Qvyu zKZSh$8d`Ur3LVGOp}gm<+Wu~FnSHzVD}>s8AT*C(5BXmg>gQXbes8V%J45Y%5W4<< z8d?v37Hap)+WtVOpWjva55-4A?f(>hG#tBMx8L|szY{~__-mCP5513hC)D5aAL-hy zSX`;NN^!N&xYiB%tXK6Lgzfn<^j>**XuP9C$2l%^U(O9ZZ~d#bzZUjOdE@=N>*+h8 z{_hUQhHr(|n{__g-G^I+8>BoYbpQMzbR8aYK(`*B8#>POL;hc`^2MR?ekHsh?Dw&5 z`+(4OF+8*mkE;5eLh~`H>ZexyjF8{cq3h=5kl(At|0}*;{7-1U&;9r^?f2tu4BdZE zhK}ohq5a&YgBpd&~dC&<@JjjheK08JJfz|abD=UUKDz-a&Xlj z5;~3*4(j?_G32*OX#dqh$N!{yq{K?}4H59UN{KUJzQB zt_tmUZEe3kbiB8Q6T{a-dDt?a==NVO)cymZ@vjpa=Z&E}?uC%gOQCkJR{8%z?anx) zt3M~y?!4j!Rew?O(yG6_ctzEJqj*hd9WRei5dcK6wuq2t^n)cyM%n^6?ZT0S3IbAXeizs8|vr8sy`#-dsc0~sQC5b4Wa&T3+;DD$p7vt z-&fmzReYrC|5W8CL;e4~_)KX3=c@cdXntO-^1q6&6kiLyk6H0kT|X;@#<50dT#gYWu#Sb?lH(Kc5QyT*Vbt{(9&*uM72abLcv| zBb3klJapW@2+hl5p>|J%`g^MQbn)5HxSkK?!OI`owOcWi2Yju{R~D}dwZFE?*N5WQ z9aX+76lZ@I@_j6HpFJOL5H53AJ#U4MW7E*MHV^f?Rh731#i1XDj^p9bbNbVv<9jC5 z@9UxCe=qbrcFAYEeyUk>@aTHF6y<^L7m3HkRrylb~?sQ2SVRJf9!~ET%QT`e|V_f>YwX;)(wq!{m}M}i<^h? zfkCx>NNAo%Re8taPE|jl%9EhvOBI{hqnJF6xSaOy)S*e>i-k=NqMuQx^`QHejje<;%7tW{0D}%4-Z}M(?j>+-$VJ`E4BTN z&^X==-EZq1*OfO59e=;jaSjU|=ZH}MI~KbN!xNpe+ zz|gpk2=#w-=)O54bl+ZH^8#{%WY-|Ayvo#S^;yRw}L%x(==mjqB#B|90`VP``In`L5#Kq4qzo^8KNC z+ULZs{Q;qQIVd#mM~5TAZ->TnN9cO^Y4JCq^Z7{e_r*Vk+CN_9CyReCK2!WhXgsfm zuFvJa*!iy%>UWjmYQ;4|=VPrYFMhDNRw&`>bW6bFUI zHMO?S2+ilr+CIBDH#856tGq|JLCS}Pe2xhD92>TI3yuH8;z?D1T9wZTwLhKdtTe7at6bBYWpe0(~4&l&kF5# zL6t8oUR3-_=>EOB%GZRhqic)T6|XPeP`oj8p1&0u$9F^b?Oj!Wck!OkJlt31pB8@} zier19+O1;;hmQM`p?*Id>i5V{yERYi^2q+7{sxEQ_k*GKzYg8!&xWqsS3>dn%+tH$ zKfic!sNb)J_PerpRjA)9mTtfcNgyoH%|M&&ja zY-qfzRC%@H8liEmUE4Pbw@-O;Xuh8eo#$sm?Vb<$yjkV9L(d6ooV84^L&M`kdC~=; zaapP^iD(R{ifn*XJLr{?DQ7>xgqY|06@~j}7gATsQqt3_u*e_`{TtYi+>ND*Q3wv;{EBN<32O=e6aO-U3uHk@eQi- zkkEd=s`7*3fRz6i8t;3>WzX;SU%t3vsGl{fymqMldR5*a)bF=LdFQ>MaV)-|D<2pt zFZ-o#-c|^m?^VNn!%u{sTTTwm77Y_(s2cHa$>(EfV zJSz14*14g);l@zA?}YsC42^r&FL(X*g!bR9xJT$b?_K5niU)-9mZPiu`QnMiQ$qc2 zc2U<~?~q@g(75}B`t4u!Lqp>lQ|0l+siF4Mi!(ywn-glkTh%WP&HI6&>*nx~-!Y;4 z@$}I1##R@1+XsgF9USUsba8y>ex6d>rxkYz`OdEL+_0U8sy`s)duWx92%XP!L)XnE zRsYqH@7Jn)Rh7RP+W*$jc(XwWS~b+qTA}Uh6xR*;Zdltl53M^pgsy`fL&q^b zG~csA?RO15H|!JY_khrQ@RLIQpHe(6)c&k0pA%Z2FAl9+UkMKkm$|IF9@h%n_=@X> z*4ZtJ+lTxH*Y=^I`{sd=&%>d4_r;1M(pDq5g_g&P9p~^+`!U7w#i_+v#h&8g(0uI`+W(`Wb>r~beoSru zLTx{_>d&t7mqY$vtNL#iZ!F$g{C@F=q2v5f@yErV6n|FyMe&!#2Z|3B9}Zhwtnwqp z--p)GN2~l;@h_oyc`6j&K6piUyz7UKce~KI`WCk@_Ad?$&C}2-4-eZshvsc!ZJ%28 zvx+^T>+Z$SI&{+4I-gUDrxni#^?y#Nzl%cq4fuLDzoSBa<3ih~RC#7-zqz6D&kMH; zj|#2t>s;COb7N@xw~DtEZw=kAcZJsP2SfAsaOnE_OK88p6`u&j&o@HjcsF!EF8htH z-SVOFtQ1;b)(c%9TZG#82_46PP``sh?|)}ic}~cGUZ|giRlg|Yvsb9UkJa{rL;Zaw zbUhqeT)9`(wqwg!X%?%1?*R z+c8&l^LkQf9H)fl^McTG$n{nJZa6sQe}vjSSA3!PQt0}8r?}eHT|XOyd^Zd2w?(mc zXrB9p&i_xV{^!N}!y&2vU#Q)(-|Y5ZKGfeTp?O-P>eno;UG?i#d4te(Fd)>=h|qD( z3hlpZXk0zDeUB>d6ejyBk8|zo~e0@!Q4QinoWZ^E*T1yel-0dqeT~;m~pYF0`I};`(m; zp&_56!=uC3tNwqX>vs7YI{y_z`>#@5qw3eJ@`pls@t~0Jh}u4?w(k@g*VwAxxj4Q! zF*L5fhJ2o^`oD+f=ja=|`{IkC`Mf05?yI5s`C7>Lo1t;v5<0H$hvxk!q4vKBwf|-D zf#O5Ohl{@r_4jC%A1nT)__x~rbn*GBe=+3qO4Ywn^=}s6D!v^W-*Pu~<5{8jf#S-c zaj#q4ve>`24-EMXt@7~V$k2Whi*t&5gxW6&9sj>eMm%KO#|Hw^oQ z&eNdK^*=nc-`J|37}{@g$bVXucL`mOGeZ0C8k(O4;neW*(DgX{=5GIy;nped5z2!< zUiAls*30E@squv~QrVz=mxTKNNYx))G&oLZb-oDmxDoGR~H>FG7**vRL)X!i&~-F7bl<-aI=`=m&g1J<{$G{f ztMc;S>DsLly583gwO_C5H>vU#Ro*sqUi(!24x#;qh1R*zq47)(wVN91Z$@Z5yH$Fpl`jqT^Yzfrh1?q2?>nJ(-w(aFo%h|Y{R_ntzt@fP zjL`n)6)!4Y9_r_cDqmgYYl_zuZz$eWygB51TPXj!x9aZ;`P?7Ma~`ew$Ey5XXx?58 z#fz1{-}$c^>hFV9UaPoHsQt#FdETP9O~_~a(0&7pLqo?iyta=C?LV=$Pp$3Kt30c? zYjHuS{a#hxxA@VJ-@&2&52^BD#iOeJn9z8>Q1vGl&#did7tam(TwLW#ikF3auB`G^ z#cvj`t?l0m`P^FN?-zeq{7Lbbq47RYe5m+v=)C={%1?yWr6;TW_s}?=3;DcM^)H9^ zdneTX-Qs(p^RwI?UH$SQ-xZ51h5A`7)bHBG4XS>V(0puN+@ZD)sqG_*JBIq*sW`6q z;o^kiq~es~wBjzsnZ?dhJ*BI}``h_90asRvb|rRot<- zQ*m7J!^H{3NyRCl@$XXQnZ?<~xy5=FVoY43#2%WdDgy#FwP=0=Gm9H<}7;csNUx)7d zKZfGr6Se)R;?u=vL+9}yRerAcLTDVXh2F0$b64lPTycfadbLiK*A0zt*_~OLkBRduscFP#&>wl|K?1=fPDz zB((owq5VHs^+$z{^VBMzUOcmScJbWe`Jw&4T)d>}FDrgEj<-VB>)WB@{NUZ4@4BJ-^@|%8H!f~k+`PDD zajVd{`&N1TV*ld6;^5-Y;_%|g;^^X-;@D8WJGIKwi!+L|igSv)7JG^dLgU(_xNq@e z#Y4h&o~nFI@r2^3#j}fFDqa$rr^||8t@^8q*B5UoemB(q`&Is7@h744@r&C2%PK!q z<%dJ#|3m0H`DVHse9};RmqROK}@nTZw`%+m}HsN`p_7{fwy*f0mYpVW+(DUYm zA9eMUic>=S?Na5L#o3|p%&+po&^Y(4@<&2H=kxneyFZ84+gEG*|AmhGjVixce5?3& z$oKs!FLQ6#&j&*FtA?)2)k4RyMwLHU<+Y0I6xS`TU)->`adFe)=EW_GTNSqn9mn>e zJZ4mt#}y|PcPY*djcZ5L!<@S=&Edij=rd4^D+CI1H7ZvxZ?fVt?FCI|*c=4dnaUN3TPZd8?Jgj(l zXk14Xk1L)~+rL=lQ>%P>=(x@e-S?M;*1hX%`;DRV`rWX1_-N?-{;9VAIpp_vm7lEb zPle*#TUGydsNMTjUgo}T9+xYwQ2an~<>IQv)kD5(RC&$Ne5_OTA1ba}TrYHhCY;+W#tkl*+!Pb^LjT@SND^W9TiT-)~u z9p9c+-aB+Y4hnt$er%}Us5J! zDsL9L9=0tGsO^KQJSw!`xZeMoYPVL^uTxyNxPGYJ=Am`2e{oFJPYjKBa&c-X z4$Q6cyyE=g!s4Rh?!`Tedx!iE2#xC##Y2lnhUV$SP`fii`OlYY`(>f=e6_ZJGt~Z; zs=u}Po#JMG#XQ6RC6dLdEs{EJGd3mDB|E%r*s`4AP{jI8h zzqrEBx_(v-9mnd$4;I%dt`qXxu*w^U{5G%pZHn6$2Z!ciOsLVIAQP4SW9??Zln z3XSLS&^*6f<=1Qbf2;gn$fwsYIxbsWKD7TTRbH*iYlp_SQRw_`8}jQHnxA2z{dNrX zyHk}XRC!XBcd7EsD$gq}D()TfIUv;Ur$hZ6THB8-e!l9DFP>ODDKx(GLgTwI)Xx>6 z@m(G2|E8+{Ue(`Sysx(ZD&+fM@z+)V$56k2E98y=F$ohFj(*T;@cl72ZKRzR(wvO**>x7U_Zfdj>Tg}9b-{+Z4=QP!RQfoOmd-TpHTPNpt zsOX~Tl(w&9_t{=kn&Xr<4^!K|Q`=rsTm7_FGre?H+D~u2&1f|R4Z!=qOvs%rp zRx_*hIlI-&Zd>{F&ZoIe9n0Ldb#8N<+uF=+zVllByyntVY7To^&po|%ZJ*6jPn)Hl z=H>W%r)Y7TPL5pG%z)Iy*W&bH7z)U|!Ub zZqbbK5c8C?CtZMrgNM2G~FX_`bK1&+orEEQRi#h{1oo^=HC@njQPes>_2zi#UQLgS_RGIM`Rx!r_iy|5 z&w1;Uvb_f7|KCgPJGj*h&TmrstbTCS+jnsOqeGgGXlgcww7rJ3_Cs3xARQo(WS7M)b9;rE> z(9Ye2HZv1)AGq?gxBk${O|_iZ+E{t|VZRcWc zn)L!$Ni#5t;F7sOZo>tS7`EXUK@5wPyz4f$ydP1M|)6?c>e(TMu z)hD&~vT9L#b$8JG*3y0IN;N7gSf5;Z&f~&1{)KJ)3v*qlakW_4s6H3wCtv&Y+O74l zTRRqadY_z?9h#b-MXlxHR=<0jvE5tE9&OA^Qe$nH+;n==SxwEl6@@Nn+N~nH=d%@p zPd8_sr+Qmx_uqiVF-`Z1y36`zWbUdRG6#KguZ@ci$Wha|P1O&`k@d}b+?q|~t-mldO5j<8=l5^KM!o=$JNpy|S>Iius7YQx8VJ2V~m|3CF_4|Cct$1^ADI_Z~4r+$w%{yp1g zN7Ap?K248JE9=?Braev7sH1)JZ&3c*zRh4ax*ghTNylfr-5Iq``aB?NZKOWSg`Drn zO{YZ{F}mwqSj&R z^U(HrXzOQa)l5mfRhMcrEN8iY_E$5!)eLVnBU;UfRx`4F9#v{oqub|kIbY^zW>d!^ z>+7FmQ!_E^T>o6d#yO*nQ{L4-XHH8iO#jT1&(352+{?xzg3D6fC%xlB)wuUuNduz; zlFzxgZz`S)%5PKAQB6lT-Kpu6s2QgEF~d|pgIhml z+h_d@Zv6~y{S3~msL{{h%;A9SX>6h))!UH#NA)H?QoRjny$xx-iI{5irXAJ8(AI+( z>a#6FTMt8952C6X$2GL|FtmCw5)qaf!?4!Fu-1c^tHv0HwH}7G9z7+RIF+_LExsNv*w{d_Y>vYHB=_^L#<|Ho5gCdl``9*U}TyfZVHkmc3B*o|pz? zOzJ&14TzuP6@91?%47z#NHie(Xz4Ddw#sLyedRN>t9LB28fvQ*o2nPfD3>{H4AulO zQv12By?n-JMMhJiU^s^@{pM7)*Y?p*}cethnI zIgTq4*WtjFwQ;3UTU}RFy{n5Zj=FvZ=G>@potPba?UAFQ zMz}}oVUM=&vGEu4`Zkq|c&?*Un@(>!J1Rq6nzeWy^m(tSeW>^*H?b~uF|&(!U8L%w zO&2k`HNIP?yH&PZO-HwVCpMkj`tWv%Pv=0p|MV;tQ$35tRL_H21Q3gT*7KmO!_=4u zWoGDvro0AaW@zU)rF~u!^;}9Fp9n{_6TvBW5u9=t!KvdC!6|nUoN^!B+y^)J!MV!R za39><#dn{bk-@!;!Ba6ch9PYX-7$;%YLvu%Y7F8&H3o5?8iTk`jbTU|!;m(HA#Dsp z+8BnkF$`&A7}Cbz3CjF(AKKizxt24i;Vx&O+~o|EyPSb?morfAL!0~1=03E!4{h#4 zoBPn_KD4=ea&um}cV}0o;WJ;E2DL?|LHWuwC|{Wd(HM)6?ZeF6xp!VKx>6$XWIgW3R1jf9nb2Hhm};D_ z32o)+R>q0VYhv@7*t{k-mx-*st9nZ7VM^O~O51lz z+jmNv+c}BtgYr-RGBj%6MQyZ;+GrQGeipUSE^4D))JD6gjdoER?V>i?MXi7Dtn^?M zGP*&@-#T@jdzUn*c~f(;q`53<{V!=FS<-q~l04SdnN4Rk75$gAHEKy4xeQQEPkNF$ zbnlhv)b@FL)7eeuM`aFFjv#ZOdqri9^w_93B}-$iEMjTI_0;Qg_oUlBt#(hG-7}&q z)YA#&?pcA(ZQAu?US+s+_oyt@9C+_6yP#eEBJTP}yBOQWx-Rl`aiCk9yH&GW&$^Yy zak*1zcaL^=Pj{tvSK^emwL8y7Vivh|@4=149CZG)`_D*Z8q`Q+8q`Q+8q`Q+8q`Q+ z8q`Q+8q`Q+8q`SS7)#&0d#m6xcTtCGA;+NH9haqh|vJOXUJaUhvIaYW4vJN#$vJPrIvJPrIvJPrIvJPrIvJPrIvJPrI zvJPrCWF3^d+=H5pZrl6z1+%Q~o@WgS${qgv0hhoyI*tixwL%Q~o@WgS${ zvJUDfWF6E|$T}!5SqJ4M>!6N8d|G;+%R`nvSJ>ZY?s5;xSMEXi$~`Dwxd*kM+=KF! zdr-b|4>~_87A{>=WFS5}Mi~g@B?FP>b*^(MQZdXrsHy~!o0C^o6Zqe*S%y;ENLv?fpR z*_gcFlQSn>tF_3)O?{h3*xVz0hN$zN?|Wd-SG&if!Ic)9yXAwapt@D)W`MP-Bp>(5?r* zG8VdfRK_AI8^4T&8jq}z^74sx&*j}ya`(*2-E$kY=6TAYjzv~ZyG*>xlwGItQz}oC zpHRN?6Uwd24|x0BMdmI-c9Dv&b(iwBdQrYs6xyvK#^64q#^4&K+?_qj*N8ed+Wp5@ zWfx1MkC*#O7acLOTIyQ$u}r3`3B`B-=L0BzCroQH_R7DImXhg zuA4zQh8m7?49ZcCK{?7XC`UO4f%GX*<9jWYs@|9gsTVxlM zuk3>I^{#{R^{#{R^{#{Rm1DRXILb7Z=B#@3nWIdDa+GOM+hrP*qfCQxlxa|oG7ZX6 zra?J&KcO|4uo=-jZp5g5z1XQ;)>@e zCs~@8>&0h|auUi>PC_}#NvO7R63S6dLOIGwC`UO7Cd6lsvJuKr zHbObdMkq(w2<0UYp}gcFbbeGGvh?Y~$b9A^520M-A(V?egmRIGP%iQi%1a(XdC5cQ zoTdw-p8uCV$!P5}$BE5Rmf|xv+6gmRRzQ0uLq-k{E-9EKW$ z41gMgHz(9l%WbGJ$Ze=G$Ze=GOv-m6)JVKPp+@5U2{jV$Pw4cfVxlaF_B1sclk%+s zb>6*qSo&ONf1i!Yn-*$R-n3Ao@}`9vl?;j+k2fvUc)V$$`jcPLMN#<`H9ztz%3ZEN zxy!F8clj0NF2ADO)l=Tyi!#t*KFYn?#LS z=0+W(%#HRmo!@jpQzMkW4bAcQZMs8L=0?@X+3579vzpFsI=`uXXM7y7Q5M$+L)LkVvqjQ_uR}Ll*FcLW!)xR8!>eIDIyKhDG>Fquh+2mlxR)bZVT=KQ%(alA%#vGBnCdhDLeG&?qk%ni2Don^9iYGRjMCMwR4dl$YF$@{*fT zUUD<$Wt5|=jB=EfQI4`Q%28HEIm*hGemm$1 zd}+qqofVmw8ZI(1YKu&aa*>HqE;2F7MJ7hM$i$X@`zYgDnvv_pXD%`>%0cNo zd%4ikZ&E!)FMYZ&R-d((3sJsuA<9=SMD-&VqV|&uQO773qH~%qjLKx(6}_9f2W2VL z`XE1{Mj|RuBaxp_Baxp_Baxp_BaxrbaZQa!enO2$enO2$enPGMG85X<)ClDy?pQyk zC^MmYmR(Ri$SCNdsEmR-7T@MjXF*;;9gC<&9gDnzIu>~abu97<>R99z)KSPQsH2ck zP(8^gsPW4vsPW4vhPGUSs*y`jUUCVlXSoE`k6gmH=5wPm2dZUHYuVFU_OzDr2ld*| zZ=;e$49(hVoN@_jJTeOE*v%Am>~aaJ2U*0>WD({~E-^G&1Yd8Xx+hy|U-<(ya`^)_ zCo%^rrhD5%XErrXc>?Xp-tqyuL)33$cvJ6Z{bdEz{oyBI>C~pvo6c%FyXoAf3!6F` zc>>j^Jb~^Nl`Ra*HSK2tWDC?Y^MH(oTIs#pq1Ht|CrG*b28!z6I~=-uRQ@1x7_ev`yASR+u6NqdhyrPq_irr`&*cPojF3RBDskUuULro_CE`g3E}heKVbq%hs=X&D%H0{F+`UPl+`UPl+{It&%zBeR z?dMGbbr!rypvE9lQ`eZ^h@e(4k(wHVNKK8QyGBK7pN&DJrp6#rQ)3XRsga1()JQ~X zY9t~xwH}Jpw5O?g5UJe{&WK1&jmMKDH6FcC#4IQ%2U3gJmsr3AVe)>AVe)>AX!y#ZAt z)>DpRJ=MQhPxa&HOKI0$4}PDKy3%I1{{57x&)UcehUK4r95{cAuxV&(oXEj>-q< z4o$~I{R|CV7#01gdsH;HMr$d8Q;|~yr&_wUsMT5or&c}@oLXr_aN7NhSobqr`WL}z z_mfK9_k_GeZOTj3ro7B1uOopNyfQC?yiPC0stryNCd%CU3u6z?-fF`aT0(86;NKD>nShK^^}+Adb7{V(>>)VXP_MA43uMcp5zQZbCfes zTjUIsqi<3uN8hASjxq}8n2TJ3a`C)Gx!9j_@$Cua;@cC-#kVJvi|!un@y391@y391@$HFgl#4uva*^jyF7}~ZURr8e^A-p?UWV_4FBMI4_U zg=bPaqv@=sVuV;j=QZug-Xe=kx=+)oQE`NhX}VX`vm~{mh#>Opeo;??bcd$hZ?9=7 znoujNXhQ948+9j%Bh+;#j?l4D&v$fSQ+tRPRBz%1)tkAX`V=py-b4!8eRHBWKZ8K^ zCKgb=i3L<|&N0=SSU|h)GxaGJ(C*v6?%TQU8?){^tL{6Z?wtxpv4HXt3n(wKfbvqN zyu<>^ODv#W?$$e>y)&SCw(?UwTluM;to&5ZK2bee`Kg|V z+-0oY7`mKpc5Ab+X?NWjkLW;+M^vQ7BZg4p@sAph^@$pf=s>$wp}T9lyUG~cAJiDc z1 zl$VG=d5H*=mxw@li3pUJh(LLX2$YwVh4K;+sFH|4d0F!vr{1jgRBzUKsvm0;)sJc=`y^)tF%71nbzr621#H7e^l)tj}3>dksi^=3V%db6HWGhjWZX25z*xmeFB7wb9Y zVm+t&u^Llttj1Iut1&f_?p#`peKr!SG3|OV600%Q)>9`n5>K6UUewbi<>l#;@{++* zUfmVr>C$Ijo-Qdb&y|#y=Spf1&y|#yXGY4!Gb82V34wCansV{XNV$j_l#6FZ%EdDy zwV!83SF`n5WT6~AEmDr27AZ$Dk8v~#pFOizRv(Vo9X zwD?8!?73+~dt&l)Eqp~Ws%OtiRBxV==!~Ybnp%HEF51&{VMZ!8QERrhn$%q)Lb-=` zXsV57I;N>>+*?ZOD)Wp(yWhYtXCfEXhnPiqiCL7Fm_>PM zL3xQ>l$U25%F9oKQeK{MC@)Vpl$VG`d5LJ0mxxAr*+zMJx}m&8G|J1*aZp~KZYVEr zFDWk(jp|QCqr5~k%1bTfC8AMYo^B{F-^Ng0o^B{FF^=*Q<0vmNj`9-YC@*EoON^tu z#5KxGT%)`^-B4bhZYVGDi}Dh)sQ!JT`WLgP{>3b+fB7BNznDe!FJ@8wi&<3vVmmc< z@s0BGkMgn-Q(jg|%F8N6dAZ9eFENYqa*a@4=9PBy)E!OdqgKqKyu>WZOU$CY#3}9c zKPq<>9E}|9XB3e-{UGJim&s;<+%Ej{w<>L8;IwG;mm^g}Ml$R$L%1cC}ysS{v zSVc6dB%)DXo?Iv|PcD>~NavWjh;)>TNJqJdbd*asJ0hLWTtqr*i%3Vgh;)>TNM}yD zh;)>TNJqJNPM}=6+4tn)GZ%4?a`EIsxp;D+Ts*lrXI#We%0;ZCT*OMs#r~9wSV_5f za-m$rO3Fp7q+CQv%0-lhLGUX+HQC{K~QC{K~6lQ(mqP%F9gCZqB-+>3r0R zVw9ICMtO;1l$R(*d5L0_mncSgiDHzOC`Nf%v#9+=G0IC6qr5~h%1acZyhJg|MHHi4 zL@~-m6r)_a(Tid}a}mWT7g3CI5yfcd;`ODeauLfY7qN_T5z8nSv5ayN%P1H7 zQ!Zi|qB2tm6miHj&kxrkzvizr6*FN#t9i(*v& zq8Q~Oicu~i6YZ{4E@BzwBBD_)A{sR!5p7g^z8lq^??$!fJF3q``A1zLq8?Qv_ECL` zfOLA(8BJ$3o!xX!)45IOHSKA-py|TQy1%LBy>`E-m`KGpF_DT1Vj{J^iiy;kBqmb# zjD6^srtSkVk-CD!L@JLE6WzVMyqTo-78xl=k&$u~87W7Rk#f|UaugXUN0E_o6d5T; zk&$u~AE`dXN6Jxrq#VUZ%F(%}9K}bYwmP>v!d<>-lzauhu&N70k=5rp=jDC5zst2_{+r%(X45%McWbphQGfq!$9%Kmv%iG4 zWBa>ROMlPV%44jq9jn2ZjL=y8O|3C`pXIZkTNu+;QO7gB9o2-U6PxCC3Ho6c!Ex9Pm5Jx%9FcglAwJEdRk$H&=U8s*|=d+6e*zZeIr#7A5bVk#eO=mTo-E?l#c};to&TqP)>B6Rqnl6s|+uL+fQ+xTV z+y2tMK0O=yORoc?zH#gRS~u;}J`c)q`|H``^3UJ-_VXchdega0dzzXde@U0lY-+1( za$LJ|m;Tkcap~9J!PmysGA`GKzuqd(p_8Nj)*`jlwJ|PNg{`g%YTs#@=W+4V#yv7F zpS1D!52>y0nsM#Ck89`M-@Kca8s~Rh{`ow=?d$Ii`n)*0TkFSPha1=Knw{H|@`v+R z{+xf$)YRXi?f#;_zmV^*EI3uH= zR%ICl)xWij>e>F3ql|)@KN$rzTe1ksMHWH1$Ra2gSp@CYI6Z4k^(=FsdX_U#E17J8 zYAah<`aEF0_E|q_sea@GR6p_osyDy4LiH&hp!$>#P@|O(P@|O(P;(+5pd94`l%srr za+D8Hj`9J|DqLg&l#5J&a*+v8E^+{>e>nivzgSO=S(K;xvHp7gp;lozX{W9S`D~Y^ ziUaDqmDm-eS2g3?l{3DrXMRr7lahMtIdv8JnMrEpv%1orrpDthBU5{M9-;R2cTlN) zC+1rZYTt?ZYn*g`QzM+1>!0e)Pe@WfKkj!KX!jRd9kr(z%F8TMGw<1i^7U*&jofcd z(p{Pwzn^}j?phIn&TZ=0{X8T!HcvOyed#a8QzI1HC`YS=XGk?%sWEt_p!%HBdh>s> z7@sjYI`6-zy{6{4sotzJ)V@>mA2t4|ZOl{Kn5VWePi0r5)b~McgqD}f0_Ef zOg&%bEL^6fzWL#*6{oko<8CNU@5w^fjHfhFJ%n0A<+@6V zy#Lm=5_tni2)S~d? zT4aAEv5$IK|F^BYR2*tIZe!V3U_2q_T(5G)dY`^+ zzE&ykDraGpv#`opSmlac<%(V9id`itO2ScUW|at6iEx$LpfUU|&Q&6$#%((b+@KToox;-;3BS(y=EQIm*mZowO^`ceE?opZ-MU zpg+-`^e5Vr{zMrL`V$>XXQJ$&cQv8$8O2-nLb2$WcmeAzyMx$QP}SeEDx=lWs>gjbM;XBLig3H~?9r@KKy} z7B0eNcpI+5ZOF?gUwdZ3aoGQ`W?lo8+KdK@%8Ukz%8UjosTmDq%_soHV4ec~uH8Xb z3*Cg zk0Ph)QEU{rS`eG}YoN0CGiKUK+amPD5Q^=*{y|aE=O`-r92cRe&T~b1w&ywJcTm(Ig_M}ly(#oSq=t;B> zRe|i^#QsfLvdzAn7^)>%5mYW&GHh$={3c$g(33hwO;Vw#EP59d4~2>B=x>nsWq!Y{ zp2X;so!i*Cjh)-r(KGp7ZTo@}vO}$*lF}2%CZ&XGhWZN~Z_M!;pP@APf3&+g^GTAO`*iwI?s^z~?_ z(bq_j()a#7q~JWejo*sCz@Xh>-+UR$8_@>HzGth^U%hD<`JxTbp0ok#IcWnl7a@O$ z=2PXVux)Bh)jo=uen7SE9fw*#PrZ9$3;CrSkT3ID$iDe3WS^oy_FWCgK8=CeIZ6Zh zn#PxBv9-4LmAOLpWvh_QS!}wOY_my$Ae(duvN@jDXOj*=rIfQmN7E#zu4oeEi!woF zp-fO&T%*V@WrF-tCU_U}?m0i?i}pZv^!Vn&#iN%;`{?D7ZL>cp9 zMDbWhf#NYAWM-Hb3ITbc5RexN0ePVikQWL8d7%)H7k@)u#{4!fv;o>*cK=h2<&=G7 zRe9IHBk%fmg0hQ6p1XM;V6Hpn=2qMcA0`jj^=>KU3 zRJU?;A`rRn3!=L9Z8mg2QWPi#iUP%8-2#fix&;)2*?klV?SbZ&Wc*Q7+F2A8HG=+& z8bNu!)3j`-l{c`herOVOMox1^C==Vx2xWrna1$yWWrE_TPf+|;M4Qhz?on`qnbbeRyvZ}d3+kDBS;eUo= zrgBi^tJD=WXxn`utA=W9l^T;_v#ne*Y$!q*HdHgKXc$V;wrHs+WQT@CN70bTKgFos zw7)0!&6Fr(fAv;Q$+kG@Lo+Da1j-N(LhXPxOQ>{IB07pnL|&*wROeJ8Dk+tSBBT;g zBvc}bnLb1@(}(B^X?^H7NxVQ+N zA77ot`;aeh3_zBtO>~qmqoKe0%BZ;|k?hs|j`|NO6t&{CDBgzb)1oM2_qys6S(c$f z@l&BlXPI3^xe&S()jBPT_NPVB{HRQm6V_ zC6m!Y$I+$8uQgZ5FO7=)(x}KUjf(s_68V+;LVjhykY7qw@6Mw<7&?wpMPAIPBFmI2 zvTqM$UzQBnmn%c|saCpyeM%MCr&LjiXjD`d8Woj=Mn%5thkVJEAz!j&$d|cS>Vz*@ zGUSU=MK)x~kVjcEq7m9(hMWr^1LwnM?$P2BDywJMH3$2U1(7MPbt&42Z zy6CF5AG)e(UF3`6MZPFrsrTb0nB6h87u;UizHqy1${ksWFuS)lMyoly8F z20DMN^Pu*BEp_dT(9*~zEsbna)MG7(nSI;-Y6c(Kq^MCT%&j9Ya%3oGdm{_-pD0=? z8XZeNqiE@8bnav|(Xn!y$etC0zeZ7`GrLTQ%!b=`6h)1WGP{kArK_!CnS}PF%ut+k zHHwqEMt3)LjTa$nzL|@TlOsiuQ`*+YxN@jsWP##Ef3>b1d8Y-DcUl+K39akCb*ApK zzf7rZN720~s{7QZtf_5fypI?2zrWTsCpJnL?L!IwT63Kur-yMG&O-KSU=*9Zkw+RB z)eH@cVxWQ1nWceIBs4IpD@qvKuc#Jwg6DNu{xO`GVRqny#TPdTHtB=j@7?tGgbok=Ph)%}Z#7R{MYs{O>> zkS?Aia=O~~kMOBTU86l;R^N-t^|H=}cf^QazSr92rn2;#VP93dWZP^ZO^*7~y_AtM zA8oe?Y-^LOazrKdwQB6|R4eITO6r~Aw%sw5JSy*A$}7WcTY2S{^$luORvCGt?NPL} zJ3mdPIv)>1>Wt1umg#&{57a(7%WR<I{jW3W#;|t``_yXB5zCa$0FOWwg3sj%>K)%ep<6X$Fr!dg5#sXBD)}WtD7|$Fy z)+&Bnh4)1x1zBCKu9ge!X{|T1W4$)6i)Q4}{>BBUW{e0>wANQ53&sM-ju8Pa!`qPM zUJo@^wXkVKfZ{PHjI5b8MP-+br#Q6$X4O#pV~l|6-xvYa|ConS|HcByi@1>&8A{|! zmJxXz`8?4Y3t)R!+r|Z`PUKxszu?O$C@P}>c5Ob z#7T#v-&w)_D?3y-vO{&FNW2fnOosjCz|qmx591_s#;r*}UaT2Lz9=eW!O8?|3x2as z7?r{*1?1fdVHAT^!Kl}k6-PScD%Y6RzqY5L7_4eQ-pzRR;3`QcT z2Ch>BGW@Pck=&%_t0{9R**1Ui@EwNeUi<8i`VU;iLhtAhB=WCg3W|=->nLc8f7Gs${!u*0g--XK9 zPjf9Rhi_Y)RxO}X)8*(~FH-|n3)^-UjG@rAY|St#mr)feot4ALhLyvpq@L$O=VF;2 zVVN^xMX_JLhZM4LnUTDDuto*dgO$ekDpVU*t>7$FI!}3_av9B`vKYsqvKYsqvfQQ= z=1Odf-}+<}zcC$(-KEzdgjv(9;3=Sp6uuGYDd z*SV6{xsunplGpLF&bbyho4l-3>UBzO%`ZNPrmUK_?YwMqUN)&WGgE$XUN(u)nrhq5$fjx( zm1$G|pgY1U>(e?b;y0g#lh8G`O)0FqvhDhD{!lzd`pAp%{%Q3AVt7ayA5zALl<^_8 z{gB8Xa@0e-%M6^>k*?wXLWx;3+ee{uElYsB%Mzd%WC_sKD@%ZC#=G56{m2!dIOPgZ z{m2!d^C(w8x? zl#0A~?hkpfk_vh8+#m8{t_pdX#f!16ZC==tY30R87I`s}MP7_#kryLbdKB7J)x`B%nORd%nORd%nORd%nOR-`H6Ph?3j5$k(hZw zk-SSJBJL-NXrl=mACLUu=D+EczMT z5Ii=M9~GHH!SI8{}7sk>BCdmazk>Ti-H3wP&R8TeVGUn9fHwW!h2H zbUr$k&PVaftK)sB6cqaypHS(x)xQ-fzNWw$&Fq^BO~+ECs5PQX@nxvxp;1v(RuQAv zw3R3}N)<&&sUrK7D)KIuj>@~p6~0KVQl7?9ENg9%O?nU6q2JV+ztU0Y7di(;XqCtq ziP0psd88%!sZR7e6@g--B8=J8zqy2eBajtVL zg<$(jXkC(LqtJP$7O-tPr|XIfot<_4gGxaIpndeqzg4f}e0lB(MY64b(NX$bSD5z1 zsuFaS>MK#q`bz9;QOx>E6tn&jm0E9z;?x`BeU(yQhP&bW@Hq4|{-1vNx1wx0{yDTi zC4s+%o}-ls$IH-pmf6N_QO}4hPpT~Vqo{xUTvx!SkWJZUWJf+3X;_(L6tmtC4~u%1 z{*IP+kkbp^jfZ^6T%lvN(nj^3D3GTzw)a=9CHB*w{X36VW+GpnH^Nys4-dkl@LkBG zJQBLM+g^k?do_M*{m9k!9n8Nxg53X zD#4MHu&suTuu)V-qUfnpV@gyTMk=UIw72*WwmN&NZEXXpXMacKk{kJ4UX{*jMii$u z6WKhAP3saJV^6IpDvP!hMQ9Zwibwm2u7~qjkS&p&VZpQ2sNS@z$eLAFsAecgR5R)V z)sMCptvxi4iE8OGF=&%*i~lmU!MEu>6Mqael=qMv-&$`>w2pT7$ znzU{Zy}iZTH;^4|JE}b+V&vCo7uhsEMf(^hey*4tYix+>*$O=rxz_u0)t#t}eNfr8 zil6KH(|UMP1Kk%!8R)(+%0PFhXE*R|=x+7i9^_q%iel5EBEMQxbX90kQJlsdC{FDv zicRZ^t^utps`GARjWuk$cZ@YYXOw}Sl+^-T``c7QT1z}GY8!o9cwW@jSq=QU=-n;u zrJc~KG;3_oN-k?`@F-+Q&K#`|(3jwO=&INHVLxjwXXA-#6pw5RN5l!9#1_OS0VfK8;Xhs z!Mmcn5dETULEiP3s6C?AkY8#I`PJqik6MqjiccwMGZd{m)Cz31ZT1@d)jf+W%L*d< z?q6izU5w(i`WI=Co0N2sa>)>CJ=K-_8pR{;hc81l;2uZb-Q8$UcQl@b;&IQSv+vGD zmfgA9X!}!ZsD@W{-=V8ch6-olJUj>w!?&S$WUElk$Wx)%Xb}{T3>B&$nJ5&M>=W8c z_6ePR`VgOrGET@Q1%^teRk0?9cdZI4uU6%(?naii2FQZe07a-ZK-RPdC{C>behGQe zCLqh&1QfYk1Uk#w2UH5}13JsvhqEff_p+)rI8SSU=7?U@QK)WS)KTZP$B*K_*FWc# zS@5PLPic8V()#^3*=L$<@8R*Zq~B-RHqQ0rq+hJPMEjTz?RSGAUs?>*zZzF!zmr41 zq^&@`hqeM8MK$4zP*f*%<=}oOMrsPhHJ+J1$hL0)c%B&hdEa;0J`S~5-j|#trccJoDoyz0Y`Rx}O4) zY4wYk%~hdj=}+_*`V+-qP72k7*&<|tCv=qAA5wLv5fHfT#_WA;Eq_qLNb7sEqnhbS>#!P#NV?Q0dI?pwj78QMvT3 z=m>o)Di@WGdL{j=HK1(jPtj3wFDN!WEQ&|3hW59%5P6q-Fv z1GZT+4}$)SazIxd<$$hj$^ped8z8?_0rEu&pn9bQyg}_#kt%j=T5HP_F2ik+0IO3w}_hr#aHtcPGwYm&@+q&La`SG-#-{r|YvuDoG=%e3W zc~QNTw#pa;?PGj_BB2@ZD(pS`tx@cF0}%3}?(nXt=f#_%d(;nSH+hf1oO(e8E^6RZy zvT2T^z>yt3&{6JXy3IaDQ|PbmYqSrYjOvX}MlsX9=m?4z*|+u#9ZTzCAKSCRENC%M z4alJ4Zs_dEouW4{%R-=c4O^3ly#kSU${EE#Kch(GQBmy~8KT(y4b`Ex2t}(!!mpvo zDQ#4r)vzKR7Aqj+RLj9J;&Pov+p za_D!XB2)uwmZ|+)jzTBg@8#*tpWfaM{vib_@ zn(mtDGKpVq7R4Ypi()VeKs93&fZ73Lf$^41`hScc=zO+BrQJq<)o!D*+$7GMy1#87 zh4z&5L2**l=vcZMMJw}zqBYBgqSe2nm}P;meL0Wj-IR)#&O7TnY%6=0)|(-1v#C!( zcI1fUsZmA(J_yA?Gox7aKFA|&jA~v_ zJvj2N2S=sTgQGb0;Hac}aO+3ER~_rSaW{M&ekht}M7_5@9p8lJzo}f5Z+%gI(dbQn z%sXoT8Xgy4<*%MPw^r5KYJEDgAdiXKu)T^2jkfpxILi7&y*#q)=@m4Fux`iOZ^h;r z7TgQ>L(y8vgR@XPo?fwD)={2bK}T8PgO0Mo2OVYg4vN_vFpAbw=jb~1WQx_dJ0Z)S zOhJ~d^Ffxa^Ffxa;X#(Cu}q)XW|>MsmW>OLu~z3)ctKwZx;4f$_H66LPoh9nM^bW^~3>P&abBl zP`Ny1j3TFzP&_mevgR$$*vj73V#Wj);W896rG%~%N@=WtrjcwrR!$O?&b{Y}H}S{{ zqO!;YVn3OujOK{Zo)iw+-|R5jpOQf(qG7O~Do`RC2GtVXf=c9`M>R&hpa`iKR64o^ zmCm|I?DdJ?vfU9r)i%X~EKnon%2=Q`jDruu-WD5mfnuN~kY8CJE}){M)MU%DGx zc`1?JvRfvlQA=`t$fKyyp0a%CEa>Zzef>C!O5cs5(qE&f^wH>8J+)k+vtt!E^1CSg ziO!3@8|>QqjthCwcOx(Q;;}AY?`hlb`pQ;I$b$Y6S@0HO@8A}d>=5#+XGG=F4_?)NN@^u4 z`s+hl6{}2b&x=1w8_2y*L-FXjP<`sTkbONDDxIDS#i`Fib*s-pe)U->5`7kmU!R4} ztUgQ5cM|S~uS5Bdo$Af##huVTW^Is8*IS|M+POhWO`nBwa-If7c`11t^fc9^#<Y0sRAgB%Hge5-Rb#fcN}akOwm| zs0Pf)pt2ZaBFkD-RNMAOzKl9iRAy>W{dlel#bz9eVlZEWA~92g>ckruP@Q-K1I|Lx zdJ_hU*4zz>!blcHYi1EeOLd`Wl?p}c87ur6irknNMXp~!G3ysl%=!fsvwi`^W~C5{ z(3ltdNjq`sDNvk7yC_cMTok810>!B$C{BF@iclYcA{^`e#i_qQwQYopA~#=;V$f?K zU-}MY)2J5Nu}%$@)Cw|u87i;UVW^CsQ@XLLOXTICj^?=uc<3zRWnZ&+za1_>Q?WD_Sd_inDud} z)J7wy6vnD3e*GQtXf_AcjK0r|8o#Sw{u1(T#EPyuGdn0AGdrkFFtdZRa2_6nhvD1s zD0~+xg_#{x7JV+dZq4$bb72&WN@x6w%B9CbXUF^wDxDEAIy=U~=)CC1(bcOrH)|*c zBVy#&h!}Y>enVbZL0*iGk$pYBt4EDli;HUMKD9&x*j75DW@O(QS>#1ui!4(J*fvFI z?2LSw@j-hUL8E=Fp+(!@>)-1r2eiM{V(1*v66hRREr!mK)ne!z$#|o4WR?fj4Ap_o z2-Sf~L3Q9+C|cuXRC}}sii-9?Wwbs7ohb?goksHA!~^u0iR94hZvYphIT9j-X7#6Z6Eaj3ldH58kE4MnII zvua66jnPnvT*v6XG&5rXIVv(!Gcv*ZRu}%`5BdaCRnevo0 z?uR1ulr)OaQ_?6-&q1STJpqlPwWb9{>sbpFtr0q^H@Q(%Z(4lpx>JW%zo1fB{eo)J z8W?m&Jo}990;^(ZFXf_+P`Rv)K_$9PDdhHTD}|f@iupD%Q%$zTOfR7b#erh8`UOQr zFQKSB*Nh^emrx{>5{iT(LNRzlEQ*27LEdHck#|0jUm6DeMyt5C)VbBwXn*$+qifoieUd+nz7>i*k9k z2>J3n4=N)igKD@{vh!-2Us(|px$iEa+V&(7iiG|_UaWON7B;ymXrY_h;@x}!I`$#g zHnro?&!Zbc=aZBT@= z=;&D4a&+u8$I6h~b}SXNs4Lr1GURAaiU|3VZ$U@NX?u1~oN_6s>@*T8yPPvBJKc$2 z!~VLOJCcGz*61khCcn-o`kh`vQBgDcLgd1eIlo5AL@d}w=GYA zY*O*=7_sS9Q9SxvWX-=Q9_=eSRvX|iY^uwS8d>mnbd(+n?V}Gu_T8m=N@rXjf$u~0 zW*m)!K9idRMPkbUDvZ&%q5wJ=7G*xS== z&%$|l5NctJ9Puc87pfmEEs8-)iz3(3qIx!RL=kFfQJh*@R63EN)o_(O(j4AaX$fI5ZDcrsI z+N-kJW@j(H_Nta_>u>j}me5roPmXGLKQuqPEPqOBeimopJUj>wL#vbYEXaaB1z&_p zr#C@+>O1I5`^>VB9>g{;W>itF>P=9sS|^6;)4VG3=v{xvrZG73E5nbhnQ29K=CPwc zvh7%7c5ec5teIByi{1)tn{V}QAp2N*hU(vXTx89t-Q*KM)v8R0{zl}q1d5-QK=FHvCyL*CJQTkf3KYNhDWdqjcM!!-hoH#KS)lmo5EQ=* z47xU~&_ks#(~Zhv76V-;6bmYm))19T_6A)uv6&-$GbL$T3gC?0yu7+dM&g>VwO4&{YVeOl*&YSl^;6oWM*C=yx@ z)rJ)r=v>JfA&;^~s2=2bv13pV@j)B|gt zFBEPPA+sttb{}!sdp4lXTfNA z+iHV`N3|jEfnxq1FW%l|o1O28_Iv&RGBZT7Y1#yHLpTdvGiHTQoRmC@lUhb`Qt~KH zN*;NUIYD(!&!focc@#N4kK(82Q7PzoRIBv-vRaCr`a5NgyW#udpDJ>k7O8Z!4}Ff* z3Qdms1Zo_$Og*bAXJ^}WOqruAi!w(~Zds#(Vzkl{d7;?l9QQ+N>s8f{v871pa})!W zj(S&G9nV7X(CsLy&RtUPwnas~qe$p>6c62w--=dOqMDKUL9tmyiE6-8>&P0Fu5}P6 zWsdfoW=~JH+ZLOeMINU)iYAv=Ws@dHd(P@#RC_cz@H!7q0?AdWM3bxgxw=1JM^xPIYJ9IU&;2ja@ z9MRS2T(}2N%oH_>Sq@4|>Mv9=IxkeQT(jS)UsP)97e(b>LPt@*veNeVOcCnwtb5T$ zD>ZG2lhC>LMtO9W=t)$s6eFr7x)GI>Zbap!8&P@bMigN`ZACHKRs$3xikV`>uc7!^ z!H&~aN+qHad9$G2MGTZ7^3pl??scd>zc|+H9*R?D4B7F%5L9Y!)IocC0|zRRycsId zSsjNgSPzHdmuoXYY7%t)Q4GL$oJNh&x7-#^+geC1+m*UH8$>4k-N8$9akATU(Pf3nNbQ+qj+c=6qU6xsFo-k z6a$5WVxVns8j8Wn7E~5%T2Lg`w4ivbX+iN&J}4f_2Sr8spfe?hg(B?u=pWn8msKt( zTB}^JV|EYHMJNV}2%QUx2>Ire+$Xu7Q&_yU_^GE0?>Il^ibu^v{_s&=|WNKhj zEiNhr4Kr36b)9~X7w?Bszx$!{NR8kuoQH>@E5zy)#!g-{!$9cwXzfbHMFNJBEAWy;Vhho z2Vo!kHrq$xyU^MY`9{<~yr}Y`^%QgtYH9jeBMQehecV?qg=70Z^k%+E{TGVOdtA|6 z6NQ7UO{(6IwMncw$F}9CC$aXj{-5G!VK=|aRk}Akkw6il_$eY3KV5|4r;bpoY%UBv zxkMeI@gI$Z#zr!nsC0XYN8GkWMKz%rMXCv%FRIDfHPOm;TEXTV(NXB^$b6!+BlC&Q zj(5+Zv*X>f=Sl8+Z8CwimpIeRumge zh`h6f523Qqgvdfa(Pxg*wky-xZ~cKdJ-%sjf!f9 zM#YZD8K+KBZP2LrRFuO+kvzYT%C;D2R1|~N*T^rWiu_Wl$ge&Uodp^dd8AR1UrN@^*9ECt4y(&$80&vG%Y%7t<~7I z%?^EwYR~KQbgpMkEw zE{*-o-XiawUq<^=u*h%EwRcW%C}ZWNW03_q79H!!EV|k6)-0jltsL^My{5?J_fWlg zW*MC?Sw2*U+tl7RwYN>{B=6^U(aP+h>!+W`mcg^F9z4a2>fe_IP>=tRcs$+gokVI> zz7Cx)3K{3&L8w)vjZt0E#wZ5b7~L1NF*+!hk+|~6bC#Uy! z9aw{`k49r$eKEQMyo(R*e^O@$k3;K*`pf9P(P-NompADlYx-;a60+=xJJbT{!O=Y} zABwK-z9RMMw$+3uwvc_jHi}IjjlAfWWvE5#3ymmdy)#nK`eih`F3*F?BDaG|q%TIL z(8HqG^rv_iipolCQ3a1J#n=2i1c< z2$i%~-dNjg`yu4T+Gb=&--PVwp-{ADsZg}niPn=www-sYSWww}jNR>&8u1H{X0ohy z^oyAzbe&rvj2}Y2^g*ajth7SMSs#Py*2)(xplHWjy=e6vsO)22RODvTkOjGTWXBzj z&XG*K_Ec;#?x<$;ASh0~1M;O`K)&=2$d`TrS+<4j>lct0BWYxRj4#~_W{%L6uh&4n zC|u-`)vZ<|xvubu(F6^%^MUuF1F`(Y&~+Vf5JoMule zIq$2zu%{6s+H;ycr`dCsJ&pD5s~7RtS^hf9UybALt6yPxo?ndAJj*0=pdHqmYV(Ye z@G|tAvr!V7BQ;h+*OB(wie&0uTWVdhZ7VDE$~z(ZS~>h%IKErx7jI57;y}k5WgzcH z8OXcw1@hZ@tM2t(C4RBS*~kKw%Qyo4MUBXF`JJjq*0ge{)Y>`}iM9^;rKOQyZ5_7S zVAK3Q@<2Hw%Vx{a{&KnUYxdM$$+Go|Y#u3FbgY?cRCYbI6>$5ZW3>b3(A1=Rzvt6r zusqG_ibv~T=}R5=n7OW_W~NPxFe8d_XR4Ay91S- zqChp!cM3&eTZFt?gFY#`chGyD?8x3AJF+*(j_eJxBYT7F$ljnhWodl7iyhe*^vgUv2oFOU65sJc z84_RcdR=r6;`^ez4;P`C>CVHt*KC^&)?-YtWC`@470FUGvjPXahc?j5wJ(I|TU#$AKrH|q2a644rO zdVYXS_r>$G1Zq_uO0_#j)_&kgsAi1s(6uzy=J%Rnzw0ZJO=Bzh-AULpuK$tko;eh` z-VN2Keht;3xKSkfBlK6}F#Vg->7To=^Q{zrb;lzM&KUZgsz<-Ly z4*S?I*=E_@hicf}hsy5m!>^$T-F>L$`@T~W+ujW79z>ZobLeP{WKJCYRrVNVTiuo3 zb84p4U5Sp8r$xu^Rk^(d)f~GX5LxhbFx0>8*ByiUsQs!FJO~fNx8YIvF642)Y7F_^ zuNp(w?0(f4TC<~N@b*>S^{~jhwgP#V0Y=_sfRT3@VB}o}7B?aoq%l4V$&YB*^~`NHs`T9k4@hr^9wuk*qO)9Ja*=>V-J62#~V429pBDI@oN>m z3D>^bM(@KF&)aMt#n(~dKT7;Z6_>Z=+W)AIMz!Zl(5UvTG(fd?ln8wZ+P3ogRv+@B z1@_imwd6}@sFr-`40-XTGvq~EO)tJKQa-pU$_e9ncp2UmeMuSB5=Dgms+IO`Uq{Kx zqL_{Tuzz3Sy&K@d-uf3tjeJ>38qKJ@Xx(L}cenhcp`B5pf z{QYeT^jCTb-Sygb6a!7r?|nqpjPLs0QT>)96gef`Ps7t9?91sPzn-Q-t&JQVvSxgQ zY|6+XI~0+XdiK=X_o_Yfc*>|fM`ucVE_<;P@?s={FT>sNRmi(JA9OvK@j$Jg(F(G! zM?eu8cc9peI#6u#2WTJTA=--_+8LE-^u6{`6R19As8DR%(gx^QZ_GpXzvZvr^4A|J z(U1J{BX#)q+KbLp7MUeCR`;fEqkh{iyaA^KhpeTXv9p1eTWP@@Z6hivP)kbQlYj2_*j z&qD7}Hrt4@b$Si?KI1ce1R7WABhZ*hAAyIV{i#P}Upp*U=qT-{j3H{}wsj0@+2jzF z;;8Bb{i1ELj!+GlRkfN>wAMbMU#P*czEI0!m7#sKJZPmVO=#Vr-?cobq*@-dPd_`< zYZIwNc})A$il`>FIp`>(E$rW2bH-NIGTKLrG1fI|F~)lyJ#RTyI#P_=v>sMHI!fz- z-f*Ga@U|@b7$wP~+LkY}w!pSL53;HCuwv5hGB)UUBM@sS?WsLMHD<&vCu@J17VPKk z9Hrerzf*};FgT|&A?VEdN)*~ttAh5Y647`|3xnd0vIWSd5gDoh%FzAn zTK!fd9(*6#=OK2iqj0yoGG&R;mFZr_gYYnX8ym&W`}3i7@H@qhEK}^rTI&FR(}J)p8f(P;MmwTkL`E?v zk!R(GdSKDYEqjUB^(`J>a6@~#L(%F6vpnbxF|vzjt)lEAii)~Mt*M?4@51|V9g59L zUF{l=zQlw|U~UNgU1kzx{~-*ZPutoi5o;^e;-}PxUe&fzcxxZBECYiq z>t|7k^tQ-;udwf&a*y^|(F(J#|3%i!BB5jZ+1h@JwO8l&O1Pf$lOMN_dJv5^McIuY z&~Mgkps3_gQ9WCsf$G@^0@ZWp`&#*R-ykMEgc>%oKrtI%Adf~F=o)$cg0yXs&KSO zQ4F%dCpW0 zD^MBxnQdb<+e+H=$2}u5GQa#%S*S$MZ#A&Z=JPuPY_ry@GkZ?OnhJWt`C8_@FLS*u zbEPfQg3)aL%FB2PP#MQ_S}d?ji|mH#WITW1SSk)#cwUWeo1N#C*S6Jw^$(~Ht#L*% zT33wj9ivNBx1DioC8Vb4A(4#Ld}6R(48<_k{_sB5r?A{PyVg>CP*nCAvx_1bGi<#3 zm)_b5r=haboXD@48RS>45|z$46#4D>e%VXgY|3Gxqv%z%zuYR?M;;N~t>zj~J<9~3 zc2#RdBiqwR7VYD2G!*+36aN0of2ZGnthcD|lnT+(;!RPT`B-~jhnu3i8&8YwpvU@~ zUt|v+t0uQaHSn1DX_~#-HU@pHzuBfnAIq<8y6k89eNlW>cda!I-c{${pJjbnRENIZ za#;Hs!{TmuT-+@yPi4znbt$K(QZO%zloalVR!C4fJfHsZKNag$kzN}A`={FY*FXN_ T|L%L^_J9958|%rx3(6*>6<<0K(H^;p$Yn;F5vUAwd(!u6Bq zGmCDPV7|>P`1`kPLXUiW+V8MC92qB+XZ)UgpRr-`9X4@M!D9}cf^11(nR7jBnHPPz z%~3GD|a!u6Bq zGmCDPV7|>P+$+CCL`#>q^04+D4#POZqf5Trp8SxpZt@*AanbGfXRiA@g9$8mu4gUt vqA#~O3ML=q^O)SnWj*;Wo7m*J0wR+m1U)C;;?|iQ&%{4*0{i9{9Fp7s)Ac^& diff --git a/�代�/.vs/StgSharpDevelop/v17/.suo b/�代�/.vs/StgSharpDevelop/v17/.suo index bbdd21d430280ef6c0f6143a33126a95cc4fd135..eb126838095238947a224a7da50f12688852246a 100644 GIT binary patch delta 37968 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 delta 25201 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 diff --git a/�代�/.vs/StgSharpDevelop/v17/Browse.VC.db b/�代�/.vs/StgSharpDevelop/v17/Browse.VC.db index 2e559cbc93d62d14627346a4fc8e8510fde40309..fea1428774e00474f3fdf2c6bd9a96463cd1cba7 100644 GIT binary patch delta 4432 zcmY+^2~?C-1BY?u&cYZV;IN6%j40)TBI1UbDWYLQTG(QiV1Q|XpkiunsF_=dhDrO7 zCR&y$=A7p@_rA-S``$S-{XOTUL@=Qd&5&Z1mW|=-M!Q%f|U71%!wt z@S-tAZReIcvg5L;gft zNp1C}T=%NBIXkK^ZQL?r+tpdyuG*AQcI8k`_o>7Zcm3me^r=C|Ys29~s>Sg6u)#??sL@iaXs%5H1Emtel zYwC5iQoW(xRIAimYPDLUYE_+jTdh^=)Oxi+ZB(1oJ8H9fS8Y+2+N$1D+thaTzWP9Y zsCKBGYM0ur_Ncw;BlWS`r#?}is?XGZbwGWtzEEGPgX$}FNPVpit8dg1^{qOpj;Z77 zggU8CsnhB^^}YH*ol$4iIrXDDuP&&I>XQ0N{j7dbzpBgXiuz6cuKrMes=w6V>Obo0 zJpJ}76d16B1DxQ3KyX6?xDJ9K7($>SghCjELnH7&1Vlm1gE0d9mA&=OifYe<4N&=!)R9i%{eNQDm25jsI<=mKfb6>frVa5Hp=Tc8K@ zgmmZy8PFU0z^#x8ec?9f2U(B}w?lsz0C&KhkOKqZF1Q=+fqP*P+y{fHBQWyoJVGNYPSa=l1!FZSekHJKk1e0M3Ooeio z2Gd~%JPtGA377@5VGhiNdGI7W1@oZ-7QjMy8Y*ECJOhiN3Z8}M;CXlfUWAw6W$;5a zyaG#LDZC2Hpaz!13V01(hn4UKya}t|Em#d}pcd-jZCDHIU_ESrjj##cfz9wPYyk_l z!h5g{w!{1I0elEMU?=Q?-LMDt!bk8i?1N9>Q}_(_!vXjlzJM>`AbbUf;A=Px-@p<0 z7LLL(I1VS^B%FfN@Ev>)KfoC{3+LcRI1d-#B3y!>;Ai*+euc|$1%89y;Scx|{(`^Z zKXBEizdxga4Gh@90Zwp1Ah@9cTn9lA3?a}ELLm&op%Hi>0wN&_q9Mju`uj8KM{UWL z^JuIY>@eZmt-O=5W|7Uhd@9ydH?Xy{sxHKuB;yXW8{_bKT-KgTu_kT4V{Ks9fU3M6 zwn!_!yot%Sx!k#d1%dso(rHahu*-JZKY3OYb37_C%ow-3fxG?{5MXl{XHjg`v2t{VR^90qn z>St*Vt;*UE8E3LuxhA+u140L^uRfMM)8?<}8D|ozt~%nJ)@lti?CbMRB#*XPMSbGT zzF^xoS*wFv$BzGxD|25YYJS~p2S&XmH+KE(-Z86jn8uWe5R8lq$X-eRB68p#xB|by@5b6W@DJ0a G-+uvJo_nGiwRk^iC zVr8y9Izen+BG3RJ7Rp*y7VHKtyQTtJEpYP9B*f=BP}?%^ti|E zH!vkNH#;wWX^bN+Jh*&ig3TS?r(K`8xU7PL_@!}>){eBOp#LuR{b#Z2%A83qXH2v`&6FnWavNu>(&e6Lzc?oT??K~iU3%0L zZHwJju`}Ig{mH_{g`?M;pTGCkqP@3l$|$>XD5vsP^^}kDRrOT^)lm5nqLRbeVzMX1KAiHcNBRg}6-xs+QqQ_WQi)lx;P+f^$SqheKS6{q4=8`V~|Q|(oP z>Yx%;N7YGnR$Ww*>Z-b_J5+adr|O}4s$QzMN>+VTit4NSss3t!8mR74gH)S2|ovQ>^6qaIOXRjwMR#;ZIv zK}}Tosz6OrlU1QAQd87aHBC)dkE+Mi3^h~DQnS?@RjlT!d1}6TTrE%w)grZ6Em2F= zGWCRdQY}{{YK2;TC3Kn^=gCKs5YsW z)XVA>^{RSJZB|><>#9<1RohgR+OFPEZ>k-tTD_%qs<+iH^^SU1S!%c1qxP!z)cfiK z^`ZJm?NcAC{px`FM1870QwP=O>I?OyI;0M(uhiG-8+Al|tB$Jg)G_tFI<9_DHL6yf zP(P|VbyEGLPN|>OX>~^ZqRy&c)j4%uT~HU*Z|Zk-NnKV~)K&F|x~8tHKh+rR~G zXa>!p1+;`{xE)$S48%ffh=X`&18t!lw1))f0Ey5MIzeaX0!h#ny1^aL9qxo4&=Yz= zZ%BqdkOF<7AM}R-Fc9v7L68b*a5vlogJB2^g<&up?u8L>AKVWk;Q<&055hw*8qy&H zGT~v!f^5ivG4KeCg?0{-`3wFZWunXRScfo?) zum|?Sd+Pa0-5g({KiUfwS-{oP+al0WQLC@HpH-GEO$tI@4*Op|JpKoH~jZfGJuRuqXcMt2p#U`ffa>w?1 z-Mq>(df7s)sNzVIX7l9DjWjXVDtX3f`^z(HQKUH$=4hJj)zinv*XKW%mzS5r?y#5F zCfh=+C5t1?jA@Qtq19gH#Tla$tv2pvrmxKks_17+3bCp~o0`mXhk(=z+m^zo)+{jj7gp8iivic*+Ff>s=a*eal@RqeC#^x zS!aMNY(FzYoj3oPIoB}29d?YFABp+ntlbUm!nE6H)L(Y2C&!`((SgXYizT0%734y_;tVxcv} zK|Hj9w$KjRLjrVwMCb^epfhxVB5u`L@GxXSHsrtOoGW!2t_ajrouFs4v)fPFau`7ESL>*pcv-DJeUuU!va_ci(oMTQz>iP|C*dbJ1wX@S nI0L`HS@;#s!Fjj<7vVSf9WKFTxB^$<54dKmeZ#Mtq(OfJePX(v diff --git a/�代�/.vs/StgSharpDevelop/v17/DocumentLayout.json b/�代�/.vs/StgSharpDevelop/v17/DocumentLayout.json index 2f63c2b5..fa6f7ee2 100644 --- a/�代�/.vs/StgSharpDevelop/v17/DocumentLayout.json +++ b/�代�/.vs/StgSharpDevelop/v17/DocumentLayout.json @@ -3,24 +3,104 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\glpack.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\glpack.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\vertex.vert||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\vertex.vert||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\form\\form.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\form\\form.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\plaingeometry\\polygon4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\plaingeometry\\polygon4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec2d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec2d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vector.normalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vector.normalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vector.getlength.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vector.getlength.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.getlength.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.getlength.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{000EFD45-7F4D-47DB-8F3C-CD26612F0EAB}|StgsharpEnvDebug\\StgsharpEnvDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpenvdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{000EFD45-7F4D-47DB-8F3C-CD26612F0EAB}|StgsharpEnvDebug\\StgsharpEnvDebug.csproj|solutionrelative:stgsharpenvdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{000EFD45-7F4D-47DB-8F3C-CD26612F0EAB}|StgsharpEnvDebug\\StgsharpEnvDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpenvdebug\\stgsharpenvdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{000EFD45-7F4D-47DB-8F3C-CD26612F0EAB}|StgsharpEnvDebug\\StgsharpEnvDebug.csproj|solutionrelative:stgsharpenvdebug\\stgsharpenvdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matinterface.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matinterface.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", @@ -34,18 +114,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\vertex.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\vertex.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\shaderedit\\iglconvertable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\shaderedit\\iglconvertable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -58,22 +130,10 @@ "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\gl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\gl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vector.getlength.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vector.getlength.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -122,10 +182,6 @@ "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vector.vectortransform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vector.vectortransform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" @@ -142,10 +198,6 @@ "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssgc_framework.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssgc_framework.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec2d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec2d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -178,10 +230,6 @@ "AbsoluteMoniker": "D:0:0:{63382F83-D04E-45B6-BDE6-443273F6D010}|BenchMark\\BenchMark.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\benchmark\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{63382F83-D04E-45B6-BDE6-443273F6D010}|BenchMark\\BenchMark.csproj|solutionrelative:benchmark\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{000EFD45-7F4D-47DB-8F3C-CD26612F0EAB}|StgsharpEnvDebug\\StgsharpEnvDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpenvdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{000EFD45-7F4D-47DB-8F3C-CD26612F0EAB}|StgsharpEnvDebug\\StgsharpEnvDebug.csproj|solutionrelative:stgsharpenvdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\gl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\gl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -267,11 +315,157 @@ "DocumentGroups": [ { "DockedWidth": 197, - "SelectedChildIndex": 31, + "SelectedChildIndex": 0, "Children": [ { "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 0, + "Title": "GLpack.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\GLpack.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\GLpack.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\GLpack.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\GLpack.cs", + "ViewState": "AQIAADYAAAAAAAAAAAA1wEsAAAAiAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-10T17:55:25.1Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\VAO.cs", + "ViewState": "AQIAACQAAAAAAAAAAAAAACoAAAAnAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-10T17:51:29.819Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", + "ViewState": "AQIAAB4AAAAAAAAAAAAAACkAAAARAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-10T17:48:58.305Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "FBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\FBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\FBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\FBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\FBO.cs", + "ViewState": "AQIAABEAAAAAAAAAAAAswCYAAAArAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-10T17:48:51.705Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "Form.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\Form.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\Form.cs", + "ViewState": "AQIAAEQAAAAAAAAAAAAcwE8AAAAWAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-10T01:32:06.568Z" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "Polygon4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Polygon4.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Polygon4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Polygon4.cs", + "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Polygon4.cs", + "ViewState": "AQIAAFMAAAAAAAAAAAAywF0AAAAJAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-10T01:20:29.483Z" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "Vector.GetLength.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.GetLength.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.GetLength.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.GetLength.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.GetLength.cs", + "ViewState": "AQIAABoAAAAAAAAAAIAzwCoAAAAjAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-08T19:04:02.853Z" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "Matrix44.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix44.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix44.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix44.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix44.cs", + "ViewState": "AQIAAIkAAAAAAAAAAAAtwLgAAAAfAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-07T12:10:12.495Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "StgsharpEnvDebug", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\StgsharpEnvDebug.csproj", + "RelativeDocumentMoniker": "StgsharpEnvDebug\\StgsharpEnvDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\StgsharpEnvDebug.csproj", + "RelativeToolTip": "StgsharpEnvDebug\\StgsharpEnvDebug.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-04-07T12:09:22.875Z" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "StgSharpDebug", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-04-07T12:08:56.558Z" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "StgSharpDebug.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "ViewState": "AQIAABIAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-04-07T12:08:51.612Z" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "MatInterface.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "ViewState": "AQIAAAkAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-04-07T07:26:54.413Z" + }, + { + "$type": "Document", + "DocumentIndex": 30, "Title": "ShaderStruct.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\ShaderStruct.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\ShaderStruct.cs", @@ -283,7 +477,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 29, "Title": "IglConvertable.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\IglConvertable.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\IglConvertable.cs", @@ -291,24 +485,23 @@ "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\IglConvertable.cs", "ViewState": "AQIAAAQAAAAAAAAAAIA0wBIAAAAjAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-05T19:06:01.02Z", - "EditorCaption": "" + "WhenOpened": "2024-04-05T19:06:01.02Z" }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 16, "Title": "Vector.GetLength.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.GetLength.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vector.GetLength.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.GetLength.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vector.GetLength.cs", - "ViewState": "AQIAABAAAAAAAAAAAIAzwCAAAAAtAAAA", + "ViewState": "AQIAABwAAAAAAAAAAIA0wCUAAAAMAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-05T12:34:17.996Z" }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 33, "Title": "Polygon5.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Polygon5.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Polygon5.cs", @@ -320,7 +513,7 @@ }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 35, "Title": "mat5.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\mat5.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\mat5.cs", @@ -332,7 +525,7 @@ }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 36, "Title": "mat6.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\mat6.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\mat6.cs", @@ -344,7 +537,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 34, "Title": "Polygon6.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Polygon6.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Polygon6.cs", @@ -356,7 +549,7 @@ }, { "$type": "Document", - "DocumentIndex": 22, + "DocumentIndex": 37, "Title": "Matrix34.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix34.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix34.cs", @@ -368,7 +561,7 @@ }, { "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 38, "Title": "Matrix33.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix33.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix33.cs", @@ -380,7 +573,7 @@ }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 39, "Title": "Matrix32.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix32.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix32.cs", @@ -392,7 +585,7 @@ }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 40, "Title": "Matrix24.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix24.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix24.cs", @@ -404,7 +597,7 @@ }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 41, "Title": "Matrix23.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix23.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix23.cs", @@ -416,7 +609,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 32, "Title": "Matrix22.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix22.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix22.cs", @@ -428,7 +621,7 @@ }, { "$type": "Document", - "DocumentIndex": 28, + "DocumentIndex": 43, "Title": "Matrix42.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix42.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix42.cs", @@ -440,7 +633,7 @@ }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 42, "Title": "Matrix43.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix43.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix43.cs", @@ -452,7 +645,7 @@ }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 44, "Title": "Vector.VectorTransform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.VectorTransform.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vector.VectorTransform.cs", @@ -464,20 +657,19 @@ }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 14, "Title": "Vector.Normalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.Normalize.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vector.Normalize.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.Normalize.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vector.Normalize.cs", - "ViewState": "AQIAAB0AAAAAAAAAAAAswC4AAAAjAAAA", + "ViewState": "AQIAABwAAAAAAAAAAAApwDQAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-05T11:15:25.94Z", - "EditorCaption": "" + "WhenOpened": "2024-04-05T11:15:25.94Z" }, { "$type": "Document", - "DocumentIndex": 32, + "DocumentIndex": 46, "Title": "stb_image.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c", "RelativeDocumentMoniker": "StgSharpC\\stb_image.c", @@ -489,7 +681,7 @@ }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 25, "Title": "vector.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c", "RelativeDocumentMoniker": "StgSharpC\\vector.c", @@ -497,12 +689,11 @@ "RelativeToolTip": "StgSharpC\\vector.c", "ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAAYAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", - "WhenOpened": "2024-04-05T04:55:01.943Z", - "EditorCaption": "" + "WhenOpened": "2024-04-05T04:55:01.943Z" }, { "$type": "Document", - "DocumentIndex": 31, + "DocumentIndex": 45, "Title": "StgSharpC.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.h", @@ -514,7 +705,7 @@ }, { "$type": "Document", - "DocumentIndex": 34, + "DocumentIndex": 48, "Title": "ssgc_framework.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssgc_framework.h", "RelativeDocumentMoniker": "StgSharpC\\ssgc_framework.h", @@ -526,108 +717,104 @@ }, { "$type": "Document", - "DocumentIndex": 35, + "DocumentIndex": 13, "Title": "vec2d.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec2d.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\vec2d.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec2d.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\vec2d.cs", - "ViewState": "AQIAACcAAAAAAAAAAAAAADIAAAA6AAAA", + "ViewState": "AQIAAF8AAAAAAAAAAAAuwHAAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-05T02:02:28.988Z" }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 15, "Title": "vec3d.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\vec3d.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\vec3d.cs", - "ViewState": "AQIAACMAAAAAAAAAAAApwCkAAAAYAAAA", + "ViewState": "AQIAAMgAAAAAAAAAAAAMwMoAAAAIAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-05T02:02:18.194Z" }, { "$type": "Document", - "DocumentIndex": 30, + "DocumentIndex": 10, "Title": "Vec4d.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec4d.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec4d.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec4d.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec4d.cs", - "ViewState": "AQIAAC4AAAAAAAAAAAA9wCoAAAAAAAAA", + "ViewState": "AQIAADQAAAAAAAAAAAAQwD8AAAAWAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-05T02:00:23.829Z" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 18, "Title": "Matrix44.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix44.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix44.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix44.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix44.cs", - "ViewState": "AQIAAEQAAAAAAAAAAAAswFUAAAAXAAAA", + "ViewState": "AQIAABwAAAAAAAAAAIAzwCwAAAAhAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-05T01:40:53.572Z", - "EditorCaption": "" + "WhenOpened": "2024-04-05T01:40:53.572Z" }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 4, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Program.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", "RelativeToolTip": "StgSharpDebug\\Program.cs", - "ViewState": "AQIAAHoAAAAAAAAAAAAswIUAAAA4AAAA", + "ViewState": "AQIAADsAAAAAAAAAAAA0wEwAAAASAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-04T08:52:20.555Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 12, "Title": "Angle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryScaler\\Angle.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryScaler\\Angle.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryScaler\\Angle.cs", "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryScaler\\Angle.cs", - "ViewState": "AQIAAEwAAAAAAAAAAAA0wFYAAAA6AAAA", + "ViewState": "AQIAAEsAAAAAAAAAAAAtwFYAAAA6AAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-04T14:31:04.075Z", - "EditorCaption": "" + "WhenOpened": "2024-04-04T14:31:04.075Z" }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 5, "Title": "vertex.vert", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\vertex.vert", "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\vertex.vert", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\vertex.vert", "RelativeToolTip": "StgSharpDebug\\Shader\\vertex.vert", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAVAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABMAAAAQAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-04-04T08:52:41.724Z", - "EditorCaption": "" + "WhenOpened": "2024-04-04T08:52:41.724Z" }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 6, "Title": "Uniform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Uniform.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Uniform.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Uniform.cs", "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Uniform.cs", - "ViewState": "AQIAAGoAAAAAAAAAAIAywFIAAAAtAAAA", + "ViewState": "AQIAAMcAAAAAAAAAAAD4v80AAAAuAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-04T08:46:15.45Z", - "EditorCaption": "" + "WhenOpened": "2024-04-04T08:46:15.45Z" }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 31, "Title": "ShaderGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\ShaderGenerator.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\ShaderGenerator.cs", @@ -639,32 +826,31 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 8, "Title": "Shader.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "ViewState": "AQIAAEYAAAAAAAAAAAAWwFsAAAAsAAAA", + "ViewState": "AQIAAHMAAAAAAAAAAAAlwH4AAAAIAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-04T08:46:00.769Z" }, { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 7, "Title": "Camera.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Graphic\\Camera.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Graphic\\Camera.cs", - "ViewState": "AQIAAN0AAAAAAAAAAIAywOcAAAAJAAAA", + "ViewState": "AQIAAMQAAAAAAAAAAAAswM0AAAAIAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-04T08:45:44.658Z", - "EditorCaption": "" + "WhenOpened": "2024-04-04T08:45:44.658Z" }, { "$type": "Document", - "DocumentIndex": 7, + "DocumentIndex": 27, "Title": "Camera.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Graphic\\Camera.cs", @@ -672,12 +858,11 @@ "RelativeToolTip": "StgSharp\\Math\\Graphic\\Camera.cs", "ViewState": "AQIAALcAAAAAAAAAAIAzwMcAAABfAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-04T08:41:59.488Z", - "EditorCaption": "" + "WhenOpened": "2024-04-04T08:41:59.488Z" }, { "$type": "Document", - "DocumentIndex": 36, + "DocumentIndex": 49, "Title": "Image.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", @@ -689,7 +874,7 @@ }, { "$type": "Document", - "DocumentIndex": 39, + "DocumentIndex": 52, "Title": "GLIO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Control\\IO\\GLIO.cs", "RelativeDocumentMoniker": "StgSharp\\Control\\IO\\GLIO.cs", @@ -701,7 +886,7 @@ }, { "$type": "Document", - "DocumentIndex": 38, + "DocumentIndex": 51, "Title": "GLpack.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\GLpack.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\GLpack.cs", @@ -713,7 +898,7 @@ }, { "$type": "Document", - "DocumentIndex": 41, + "DocumentIndex": 54, "Title": "glApiManager.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\glApiManager.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\glApiManager.cs", @@ -725,7 +910,7 @@ }, { "$type": "Document", - "DocumentIndex": 40, + "DocumentIndex": 53, "Title": "GLhandle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\GLhandle.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\GLhandle.cs", @@ -737,7 +922,7 @@ }, { "$type": "Document", - "DocumentIndex": 43, + "DocumentIndex": 56, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\BenchMark\\Program.cs", "RelativeDocumentMoniker": "BenchMark\\Program.cs", @@ -749,7 +934,7 @@ }, { "$type": "Document", - "DocumentIndex": 33, + "DocumentIndex": 47, "Title": "ssgc_internal.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssgc_internal.h", "RelativeDocumentMoniker": "StgSharpC\\ssgc_internal.h", @@ -761,7 +946,7 @@ }, { "$type": "Document", - "DocumentIndex": 47, + "DocumentIndex": 59, "Title": "BufferObjectBase.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\Buffer\\BufferObjectBase.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\Buffer\\BufferObjectBase.cs", @@ -773,7 +958,7 @@ }, { "$type": "Document", - "DocumentIndex": 48, + "DocumentIndex": 60, "Title": "GemoryException.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\GemoryException.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\GemoryException.cs", @@ -785,7 +970,7 @@ }, { "$type": "Document", - "DocumentIndex": 45, + "DocumentIndex": 57, "Title": "EBO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\Buffer\\EBO.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\Buffer\\EBO.cs", @@ -797,7 +982,7 @@ }, { "$type": "Document", - "DocumentIndex": 46, + "DocumentIndex": 58, "Title": "VBO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\Buffer\\VBO.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\Buffer\\VBO.cs", @@ -809,7 +994,7 @@ }, { "$type": "Document", - "DocumentIndex": 42, + "DocumentIndex": 55, "Title": "VAO.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\Buffer\\VAO.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\Buffer\\VAO.cs", @@ -821,7 +1006,7 @@ }, { "$type": "Document", - "DocumentIndex": 37, + "DocumentIndex": 50, "Title": "Shader.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\ShaderEdit\\Shader.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\ShaderEdit\\Shader.cs", @@ -833,7 +1018,7 @@ }, { "$type": "Document", - "DocumentIndex": 49, + "DocumentIndex": 61, "Title": "FormThreading.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Form\\FormThreading.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Form\\FormThreading.cs", @@ -845,7 +1030,7 @@ }, { "$type": "Document", - "DocumentIndex": 50, + "DocumentIndex": 62, "Title": "FormThreadAttribute.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Form\\FormThreadAttribute.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Form\\FormThreadAttribute.cs", @@ -857,7 +1042,7 @@ }, { "$type": "Document", - "DocumentIndex": 52, + "DocumentIndex": 64, "Title": "FrameAsyncThread.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Form\\FrameAsyncThread.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Form\\FrameAsyncThread.cs", @@ -869,7 +1054,7 @@ }, { "$type": "Document", - "DocumentIndex": 65, + "DocumentIndex": 77, "Title": "immintrin.h", "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.39.33519\\include\\immintrin.h", "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.39.33519\\include\\immintrin.h", @@ -879,7 +1064,7 @@ }, { "$type": "Document", - "DocumentIndex": 53, + "DocumentIndex": 65, "Title": "mat4.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c", "RelativeDocumentMoniker": "StgSharpC\\mat4.c", @@ -891,7 +1076,7 @@ }, { "$type": "Document", - "DocumentIndex": 55, + "DocumentIndex": 67, "Title": "Square.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Square.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Square.cs", @@ -903,7 +1088,7 @@ }, { "$type": "Document", - "DocumentIndex": 54, + "DocumentIndex": 66, "Title": "TimeSpanProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\TimeSpanProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\TimeSpanProvider.cs", @@ -915,7 +1100,7 @@ }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 28, "Title": "Uniform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", @@ -923,12 +1108,11 @@ "RelativeToolTip": "StgSharp\\Graphics\\GL\\ShaderEdit\\Uniform.cs", "ViewState": "AQIAACEAAAAAAAAAAAAWwC8AAAAIAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-03-18T18:25:24.623Z", - "EditorCaption": "" + "WhenOpened": "2024-03-18T18:25:24.623Z" }, { "$type": "Document", - "DocumentIndex": 57, + "DocumentIndex": 69, "Title": "TimeProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\TimeProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\TimeProvider.cs", @@ -940,7 +1124,7 @@ }, { "$type": "Document", - "DocumentIndex": 56, + "DocumentIndex": 68, "Title": "TimeSourceProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\TimeSourceProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\TimeSourceProvider.cs", @@ -952,7 +1136,7 @@ }, { "$type": "Document", - "DocumentIndex": 58, + "DocumentIndex": 70, "Title": "StructDefine.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\StructDefine.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\StructDefine.cs", @@ -964,7 +1148,7 @@ }, { "$type": "Document", - "DocumentIndex": 51, + "DocumentIndex": 63, "Title": "Form.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Form\\Form.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\Form\\Form.cs", @@ -976,7 +1160,7 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 26, "Title": "StgSharpC.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.c", @@ -984,12 +1168,11 @@ "RelativeToolTip": "StgSharpC\\StgSharpC.c", "ViewState": "AQIAAAAAAAAAAAAAAAAAABAAAAA7AAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", - "WhenOpened": "2024-03-15T18:54:32.768Z", - "EditorCaption": "" + "WhenOpened": "2024-03-15T18:54:32.768Z" }, { "$type": "Document", - "DocumentIndex": 59, + "DocumentIndex": 71, "Title": "Windows.Win32.PInvoke.USER32.dll.g.cs", "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\Temp\\VSGeneratedDocuments\\2c3332ae-ceb8-c175-356d-4c8856697af4\\Windows.Win32.PInvoke.USER32.dll.g.cs", "ToolTip": "Windows.Win32.PInvoke.USER32.dll.g.cs [\u7531 Microsoft.Windows.CsWin32.SourceGenerator \u751F\u6210]", @@ -999,7 +1182,7 @@ }, { "$type": "Document", - "DocumentIndex": 62, + "DocumentIndex": 74, "Title": "Windows.Win32.PInvoke.Gdi32.g.cs", "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\Temp\\VSGeneratedDocuments\\79ac1c40-7151-2ce1-597a-25095d944cf9\\Windows.Win32.PInvoke.Gdi32.g.cs", "ToolTip": "Windows.Win32.PInvoke.Gdi32.g.cs [\u7531 Microsoft.Windows.CsWin32.SourceGenerator \u751F\u6210]", @@ -1009,7 +1192,7 @@ }, { "$type": "Document", - "DocumentIndex": 61, + "DocumentIndex": 73, "Title": "Windows.Win32.PInvoke.OPENGL32.g.cs", "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\Temp\\VSGeneratedDocuments\\0c87b10d-89a1-0d65-5307-332433f23145\\Windows.Win32.PInvoke.OPENGL32.g.cs", "ToolTip": "Windows.Win32.PInvoke.OPENGL32.g.cs [\u7531 Microsoft.Windows.CsWin32.SourceGenerator \u751F\u6210]", @@ -1019,7 +1202,7 @@ }, { "$type": "Document", - "DocumentIndex": 60, + "DocumentIndex": 72, "Title": "readme.txt", "DocumentMoniker": "C:\\Users\\Nitlo\\.nuget\\packages\\microsoft.windows.cswin32\\0.3.49-beta\\readme.txt", "ToolTip": "C:\\Users\\Nitlo\\.nuget\\packages\\microsoft.windows.cswin32\\0.3.49-beta\\readme.txt", @@ -1029,7 +1212,7 @@ }, { "$type": "Document", - "DocumentIndex": 63, + "DocumentIndex": 75, "Title": "Microsoft.CppCommon.targets", "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppCommon.targets", "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Microsoft\\VC\\v170\\Microsoft.CppCommon.targets", @@ -1039,7 +1222,7 @@ }, { "$type": "Document", - "DocumentIndex": 64, + "DocumentIndex": 76, "Title": "List.cs", "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\a49b3a21a68db01290f63b8f22e4a9e58546e0a62fe2ff69b472e6b354d1bcea\\src\\libraries\\System.Private.CoreLib\\src\\System\\Collections\\Generic\\List.cs", "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\a49b3a21a68db01290f63b8f22e4a9e58546e0a62fe2ff69b472e6b354d1bcea\\src\\libraries\\System.Private.CoreLib\\src\\System\\Collections\\Generic\\List.cs", @@ -1048,13 +1231,13 @@ }, { "$type": "Document", - "DocumentIndex": 44, + "DocumentIndex": 20, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\Program.cs", "RelativeDocumentMoniker": "StgsharpEnvDebug\\Program.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\Program.cs", "RelativeToolTip": "StgsharpEnvDebug\\Program.cs", - "ViewState": "AQIAAAIAAAAAAAAAAADgvw4AAAAFAAAA", + "ViewState": "AQIAAAEAAAAAAAAAAAAcwBAAAAAPAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2023-12-20T18:58:34.322Z" } diff --git a/�代�/.vs/StgSharpDevelop/v17/Solution.VC.db b/�代�/.vs/StgSharpDevelop/v17/Solution.VC.db index ff68073288068759c033270a183f4acb5233f631..9e2dab30ceacd51df5737f7cb1959c855041e946 100644 GIT binary patch delta 50171 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 INL>8jXjsO4v delta 24290 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 K0OGZ+#s3e94>mvm diff --git a/�代�/.vs/StgSharpDevelop/v17/fileList.bin b/�代�/.vs/StgSharpDevelop/v17/fileList.bin index 3106d91697c2de095f8bcb016d7bd263668e2938..b3b5347988d2e3fc8a98b610c05f3d3696e550f8 100644 GIT binary patch delta 179 zcmV;k08Ia#g#`MD1PuTH00000F+d6e0032!p$tf|Rpc|1rAA!7{g%g_i*g3?0~+7#Kn)FXZvq82ZF`v!CfzwaG2nB9j?)11CS&&%U`ohHLWV Nb!%-m&--vk7yugC71jU% diff --git a/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs b/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs index 7f9d347f..8e055abf 100644 --- a/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs +++ b/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BenchMark")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b207f16616b7bd967d647a809cc27e7174063451")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1")] [assembly: System.Reflection.AssemblyProductAttribute("BenchMark")] [assembly: System.Reflection.AssemblyTitleAttribute("BenchMark")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfoInputs.cache b/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfoInputs.cache index 2db69dc7..24b1b192 100644 --- a/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfoInputs.cache +++ b/�代�/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfoInputs.cache @@ -1 +1 @@ -4ce4fc9d63e9d0c453b50b0a1213da7fbcc35782793b4a1147ab0fb46cf62bb0 +366f5c2b7d0e718099c3e85a9ebf2cbf2a21cf7a6057af17e10cdb8df21f1f72 diff --git a/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs b/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs index d95efca4..e489daa1 100644 --- a/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs +++ b/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BenchMark")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b207f16616b7bd967d647a809cc27e7174063451")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1")] [assembly: System.Reflection.AssemblyProductAttribute("BenchMark")] [assembly: System.Reflection.AssemblyTitleAttribute("BenchMark")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfoInputs.cache b/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfoInputs.cache index 91f29c1f..90c5ac6f 100644 --- a/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfoInputs.cache +++ b/�代�/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfoInputs.cache @@ -1 +1 @@ -9d16836e13eaf895ecadfb558811d26297a9ffd64900f90ccf2eb7065c8ba7bc +37e23d756ce4575fbf467937553f24d34014d9c297f0c533ffac10c6ae12e798 diff --git a/�代�/Output/x64/Debug/net6.0/SS_errorlog.log b/�代�/Output/x64/Debug/net6.0/SS_errorlog.log index e69de29b..8115b1e5 100644 --- a/�代�/Output/x64/Debug/net6.0/SS_errorlog.log +++ b/�代�/Output/x64/Debug/net6.0/SS_errorlog.log @@ -0,0 +1,290 @@ + + + + +Info @ 2024-04-10T17:31:18.5750842+08:00 +Program start +Info @ 2024-04-10T17:31:18.6873832+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T17:31:18.6971576+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T17:34:29.5675686+08:00 +Program start +Info @ 2024-04-10T17:34:31.0505972+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T17:34:31.0747380+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T17:35:49.1709482+08:00 +Program start +Info @ 2024-04-10T17:35:49.7879359+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T17:35:49.8002369+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T17:55:03.8553506+08:00 +Program start +Info @ 2024-04-10T17:55:03.9730411+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T17:55:03.9819986+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T20:32:49.0545894+08:00 +Program start +Info @ 2024-04-10T20:32:49.2783385+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T20:32:49.2895609+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T20:33:08.6687250+08:00 +Program start +Info @ 2024-04-10T20:33:08.7880384+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T20:33:08.7966554+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T20:35:12.8904986+08:00 +Program start +Info @ 2024-04-10T20:35:13.0053044+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T20:35:13.0157656+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T20:35:50.4187466+08:00 +Program start +Info @ 2024-04-10T20:35:50.5406890+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T20:35:50.5494842+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T20:36:11.1335696+08:00 +Program start +Info @ 2024-04-10T20:36:11.2421395+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T20:36:11.2510348+08:00 +No supported OpenGL extensions are found. + + + + +Info @ 2024-04-10T20:37:28.5656935+08:00 +Program start +Info @ 2024-04-10T20:37:28.6826337+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info @ 2024-04-10T20:37:28.6917855+08:00 +No supported OpenGL extensions are found. diff --git a/�代�/Output/x64/Debug/net6.0/Shader/vertex.vert b/�代�/Output/x64/Debug/net6.0/Shader/vertex.vert index 7fefa48c..d3050afe 100644 --- a/�代�/Output/x64/Debug/net6.0/Shader/vertex.vert +++ b/�代�/Output/x64/Debug/net6.0/Shader/vertex.vert @@ -8,8 +8,7 @@ out vec4 TexColor; out vec2 TexCoord; uniform vec4 color; -uniform mat4x4 lookAt; -uniform mat4x4 projection; +uniform mat4x4 camera; void main() { @@ -21,10 +20,10 @@ void main() 0,0,1,0, 0,0,0,1 ); - vec4 temp = (vec4(aPos.xyz,1.0) + vec4(color.yz-vec2(0.5,0.5),0.0,0.0)) * rotation; - gl_Position = projection * lookAt * temp; TexColor = color; TexCoord = aTextCoord; + vec4 temp = (vec4(aPos.xyz,1.0) + vec4(color.yz-vec2(0.5,0.5),0.0,0.0)) * rotation; + gl_Position = /**/ camera * /**/ temp; } //struct diff --git a/�代�/Output/x64/Debug/net6.0/StgSharpC.dll b/�代�/Output/x64/Debug/net6.0/StgSharpC.dll index ee7b2ba179e096240c460fc685b589253ac27f85..e451fb234fc74f73152e5c3f481a2d38db277f35 100644 GIT binary patch literal 314880 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

_ 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 literal 527872 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 *$}RK9 za(+leJ}7wAP70Vm8!G03s_%h~iBd^6dYq<_r5oM ze~R%a`%2pJrt42NZk%R}=xmJsj`3tA_qXg@)6Hv|e)gT|`_M1xr#yBVb+lfSC)R5) z(Ad3-`S-|sS6i6wyvOn%8OKbti(;S5*4cVjskge;H{EZ5+l`!P9K||XpWE_p5*ue_ zGp0{ry!_1i^X3?9Q@1^#j;i{W`ETT*eHUY=&y4T0U$^|!bfdP$l++!&x|(j7$~d9C z?e#}54|aEAchpyw$7eh@Gk;z2>-l5L50o}Gxo*3gIKS@gWd0@QZ8G)h-i+q2sbT$y z3dT2izFxFT!~T-BvgLmg?>AU?BUrz^^ICrWSKIxHc`Zd$M@??rsY%4~j-4#ubKXW5`XB=0?Y!}8(e?X#@U-mJ?q#C5TE-Cs)bYd!dN;OB$C zmUY>Hb$O3<`4#K(AJ$_W=3xcvZv*2sfbsr|by(uC``yAiOpxFHHY6?@ePMbQb=ahg zrVo#EyDyI!-}uv*m;4$*zP@|k`sJa&2KU0x3f%_$lJ+^+Paf)bIpO}}5ZLW~)3v}! z;Jd8PF68IWs9X0F_X*j@uHCYq6Tq*zhm4cOer~L6dFK(vU3<)b`>3%Rc2_XpDbRoI zj^!T^KS@|87swwkz{n=n8$#UXeBbl~@^HV-EZlJ#=#B<7Z=6^>WdiaFt zHg$~aKQ#8GzeDX!cdKixiF_~mBiI)vd~Esa)P;|JGkyM~@w0pO?+N=_j=QGc*=zaM z2d001VR|_7+tkH};m5sTy(*s@&+wi0&>n7ArK0h>c9xef>3NUnY5pSQ$;m@2kdHoiG6x4Yin_VTihbEh=FOk3j~;(G$)m5eyK(aG($&@Mjv{v!5)W9$Q8eQUj{ z1TV*Tdfh{}TND@K3>i2!BTk`=5*a7D2pKF6D9i zk8$~$ai4|$+3D_gDEX!=^7>$6;;uFO=Wpk&e+T*77ftVhjtza2eYzR?r;w*a-kou7 z#rfcC@<|!!g2d(0%eG$$J5!qaIbV_=-YRN&oo?p0>t!r?#F(Dfqc-O{pbPTb#`anmR;v|rB)h? ztuiiNZ7iA7_8LH!r=CxReqrkQB($r8{$TWXueY80=+{Q?SLBb2TVA%X`+2va>Flik z6b7jp>^}E}B+uQW{uT6JcWvm0;V1?;k=vUci zx*Y4SF!XZj*9X*DcUswQEAmtt>bVZY(a9;c^Dp!V#N!9V@oeh8pP;LDw*EEjtfSpr z=$z>HM88p2>!&GbY(^YySYp2_d~W^;^4dW1S_R_g8}eFd^44?Y^N=SduPsGBn)Q2+ zyjGNWOF&+`OkT@HetJ$lHix{EjlA%jeWyHm;a}_y#NW*HcM^Yw-zV82F{ss2My87-ld_R8yey2&6Zy|rb+r|CGu4DXqkFhKG5%uAM z0d800kmY?g7$Z5aWq)q@51hMyerS5sed}c+pHu(~fepbrNxK8&+pNULG3w|A)QMlO zvHsAM?zaGSTF1NQPo?g9o$uX?G9PD0(%)F)Eb{-X6SgyBhcQ0mwv#&gAHI8-9^3N5 zagAf&F!sgH>-kKtL9Z5ibJ45xvE{j#ulU?soh1HFGd>?(vVSe+8DGBbcJbj~C2kke zZZYj{p0r-pId1m@=aAoculnl{^Pgt0UMqeVag2B@O+2O{9v_l-j}yNc@nb08bH6*- z_SUi<+p|B-V7~rffA5ml{Us%zM(s5HoPGwdZ%iv`{wC-G>?0G1(@g9K$?$7#Y3sLP zKe-4!2KqAl%kz({_XqpTuh>~le~H*{YQ1m0PRQHPPtLNm$8JaH$IuD!vnzf^(f&U8 zD}J2BkCpf_9eGW#JpD~#|H`w<TJYC`X^{^Ge+I9EDeuFe&XmpkJK&S-rf;x6#mHrP z5m-34>0RJQc}%aSeTEgbKM4EP;itlGM(pNfzsrl=qhNFF-UkO_e*^7jQ7`_8{a)Dr z5xWCcx&PhRPs;p!hW+)7cYN%3UT6L3(CeUc|G!@_PY>&LBTpVH;phII^|&;j>6z~u zTT^dU9Ax_M`Nk;=jBUZVU`cQYSQng|)90d(s1w_NXg?;uZro1YemuG9)NPFm;UDIn zX*6^?_OYC?tk<1$Rf)Q$OQIhO?ESC(?RLfTT4{}sJ~x)?ZTbFQ#w|;XUq3UhO=i6k zNsXnkmo%N}q=}6&(i_Kt2@;w9jQynu=iHM2n7@A`Yj-1u>nej@oErZsl=V()$W%T&hgViOkw{=Z)(alhxN&+l|J zy@-8$DD%6Deupy8t$EJT?BDmGm-TW#GfEjFINvquVLDzhWBViSr~W%e@q{mXjaG2asypWNka@4{N+@F&*miG1%<^FMBF{(a~!&?ngEt9G|MPCVnM#O)Kt zKh9_7k6_#jyk&Yl_gU1cu%7x5pGR1~ld-!A z{}T}Z-FUtYJYPrTf48&!n9#eSH}JfTc+RKzlbe2@(BC2CeTbu?j86vY;hx8BeyI zgM9Q`8{3}=T@S3ne4HmPt5P>bQU6~jzK4``yj(45+=}0y{()WelJMLWE}1_9y%DUp z64+^uen-|zU+lE_zdwxUX7n1-ZYTYxhAxHt4DF7PXXYWV&NvN0FBRk4lyO{$pHYl+ z)noQM0rMC^-s{LZTR?uw$$I;axXMC3{+#;!81iTMa{zxb(ob3DV-a;t+bJH`9^|<% z_t}qU}v?f*R0cq^v$enoFbck}Dh|60~} zobu*hMm`bwn8$A4{g$ygew}0A>W$rb#6ub4cRuqyiFwFPd^~49j>2C~{NJNpM&xPn zYc6@Q0{P}|*8L{(!(;ZPuh@?|!hcSF8P2}+0rvJ|uQm4KqkjQROS`4mOHIBxi=9n- zJWj{SAGxR>a!@j$*Gkd9EtsaqfxjHE-qdjmi145$E@r#LFz&ZQW+Q zG{iw>*3(=6e=hvW+0J?w>E|`#=e5@6_rtFV=r=+?5%ci}@e`jqDT2Jc75$Ouzn#kV zJ|%w2kvEGIH~ks+)a)O5@#8<%_hI5QT^8H9JJ92i`!mxM7MY&Ue8pm)xr+Qf^4s66 zlS9yLna2Upx0uI0?B9PgAN3j62FSY+U)5Oe-Fcpa=v@Zq^ZX6*=OyiHGM`)6PtP&l zJ2UxtT2l{oWPCo{X@2s3#^NuGEy2`#Oiy}h-17jvv&MtFjeq}X9E9HM`%T|G;_=JX z-E`6p#_5fWy*Q^f+ibcPdFw`DfU(CKPP`(g#;iL=@6dGLC6(;DAJ?E?JoTJu)+Qrb_)?q}GYfxY$EYk-{y+K&O#{@)Im z?}YuH$9>0W@Yp(!$8XdF<-drh9T< zylA26TMLYp=Nt3pbNh>&E8=huIQFvTZy|q+ahQmoxyD(ZhB&B%AIp2&-W~AZP3!eP zZ~pg;V|45$!cJ4}GaqcVUbjbXw~Y0$^rra}ix-aKG=EO5_nrc<=A zd|FlGSGA1!7>^Qs*U*;r8UKvs%eK4yI{X<$zWMll^K((p7No8?mD24>l()P9`7;mo zMiT0TUc}v_wbt8B{jmamKJXfOVLbFN=>JPUmB`;oQn}yS^fQfmusHOHUhd~x_L(Qw ztUnOF9r&3Ix)brV3VITBFP>`#e&qlYknhTYr-;+Z@!U^o+CPEc1idxLcNevPJ&50g z<4xz{J|-vny~wv~FIYYUEJ?l|x6%ET+hsfsJsEl}boSpY?+kwo^qPz2XMScZv&mQ; z`2*x7k)NXd2IObK3dHqV*2~>=_IGS~+e=G4wQFfQWqQlsga0M^+a8*~3;H64mZ7{yaJ;$(0rhjIgRAArSS;G7Z zrHqF^Fz)5~USRh_^2KK4?Xg!0{-5mIzkcEN8OSU3;n%5c{t4FeLj2f3J~&98d_ms0 z+S&T2>HpeekJIEX#y2K{MXlGSn6VSjd#{M;;b0^5W*0XwcPV2$ z0j6QRtJBX0?2f_io9|n{9CmwP_X&2hVP`b>04#*vB8=-X>@LFYFzh|WUTXX+P5Xu5 zhh^P=ZR~x|ynI4kzuk|9kVCtwzUEOZUJj?56Gd*Rh>88|^H(xhDDe{xV&wS#4 zH~T`TeQx&y_nlFrOwVFpyYR2+<*jY+R6=7c>aVeJP3Po$)ef7T&mdiIU$dn}LIYrOo_Sp9eF z#d>0#aM+jzdLQd@3v_w*k7swRw;L=7za#Zee&#K5hxKm$VJx@ZSRehy_*v_K`3L_o z)hX=oqiuMm2FL#G8N!aqcwOYy+t)s%T&#P}toet8Xy zcHeq`^W2&H+V7&d%r8U!Y)U=6a;Nzp5_cIpnJ&n_{t@^&>+hT9md^!eT(|v4)LTEX zPPVa5Zq~Pcnoo^i@?Aqwa51w?nL70sA|Sn0|e)D zU!3PH&izd%_L(=~Usz(jD~pT;m(p&raW7aGeq-n;=vdHM@b~o^_MrzuMawp)$< zzoy+j)_-l{x#3Lf*Fk?8>#{~6^P_!aJJ}x_W0E(%8fy6`Jby}_f6X21Md!Ts690b3 zzbED0?iT$O;Xa}n>;7-zx;yKA2lVv+$2;--;pf=ld&9|$V}0`GHQskmYiGT>e8-ol zr~TW7Uhc0f--kRpadx-8`NcUGJc{jh{qf^X{CJH#{0ZMbJt3a+lV3g`W;<~T7$5Jl zokhbJ1h&|RV1Lsx=Mea!7Ml1GQEH~k*@wo7mS zJ>4(;B@QcDvkjDBKnD39+*OP&L!2z_t zO#Ak<|4sgd-$869PLeWC`?#OI%e`%5^2Wz|+~2<&jDO}fF65r83GsS6zwLfbzvt+u zApZ2s>~>?2Kf|vt@hj&HxBrE8(I}beKJZu6bNlr3&7b(IamiuhqCbs)fy2Q6z(e3K z;AAj9^I4sKlF?60`e{!;M_#l2I;o8BAzz7ndRhCI@OR522O3Y4r=PGNPW;Sz1-Uoq zPoAyV#{6s7+^!3_i#$?``lE0&>rLl-!g$;x?&o}zHIwBxzO$VlsgF0XZ(kr!ot{FeHhoPO#FId&~k`U($iR)9;L0fKFuLJlU`_V^?!~M&aXS-^=48BdAjRNal zv3x5y6ut4>TOMLRtxjI(MIK0V#{NC~%a~)i?fkOLSOfa>|M@G-FS63O4jj75^bN4u zYSW9rpJ{&>yDg#b{hyEB8rVAsPQ_jXcAA4*!11)ZhTT5cOHBK5U~KIC2^OLK1n?So zg8j1}c`pul?4-vh7FZ9Q2R;HPqu-i17`D>wp074eTW_q6JQMA@f|+T*7F-YiWAgG! z;yT9n9^Zj=Z0}#oNiMGGOme3Z_Hx}c{o)VPjp%0_`Jf^B zCJpj!G=55NUg+`bO3|b^|jw^r(Y&xi3sB!@^V-7Tfgt;>0iXSKBo01bDvifzdPVhcIwX&_?3wMQ#5q@ zudw@iBhwp88wc@R-RQ3r_D)dW-DMwpI?w&@Zs2xJu=g|eYbWG6xVQVKt?64yj90*a zqM6=N)OHf#$M-4C&-MTD#O_@BX^h`h7{^=q9XqMp6~s=jbf#A^USBX?1sJbZJYP)4 zt2N{GI{iN4`M#vztN8If_8ZdgcIK-B<5mQ_KQnFz7`MBO+dS;n#qPJ*t;)DPVZ6pM zewUz!GA^0%uN>{BVW%kL5}$F|g@3Po?r|9MwJ{C(_9^x3Yb(qzmEZU;=l4PEi=#gE z{A90gOoqKT+nLTq96vm0dN+1|roT$`mjn7;`kRLRz1Y7-ySK1^0e^DUu-&Tk^DFH- zK^La}`i8t7<0tFSTW_pKUO!8{viOFdb140^$ZI+~b^X~MZue<+e+PTz3)8pxdo(+% zTK@p&g|4(8NBep`t>2sWk(^h)`2X`!|9_m>dLLJ|y(;M6$9^RA8R!fhtT%}Mmj7V- zhju*XPJTKr^{ztNWT@yhvTpxkNcEF(EEAbDZSn9!*ljC!E@7NIESU?+%|;$ zWJ+htv%X^-6xZ$c4>moP`8-0LzRmqi@^O}bQoy)?Ix;r*KM9lC&Q$tMS738Y9k*VFD&{A>XL?Ri(`nf^HkUVD;+Exiwwd0> z^UUpL{%+1uTiGwu@|@e~|9)-j)!S=)m*>33`Ry9|O*q#zI$^!{s3+=@ukx;U|9?|A zp5*>8g893OKT|Hc{oVt{v!{#=_}%y-{7A|A7@p7aZ{UA3!2NuD*ZAcz%Xi!~t|?-E zvR)f8miguJ^UJl?|M$81aX7E7-fenKMPs_B)=Ssg z^!Q80n%pnd%xd}=as2G6^;4uWzY6R53*uu6d13Qo%TqlxewEAEzq9dU@^QD0wwHQ> zu`Y2}f%QCy^XN|EYY%l*i=4LeCh-%O^_y*$?JUV-c>?ZN_T)8v@H@+E|6wdn{BApH zdFpG%J6DYrpl5haBr-fQ4#+IPclQ`#SZF2TC_YogmXhmOa(FF{4Z-NtGG5wdBS5r}S#eR~M);o=#Bet4e zJk)k_UNOC}t+6lppf2k>@pkL2pkxS)0v@%f>X!?t)Ul!*TFsD&-dKEAa%kK=tHa zcWaqG^T0UetnniDU!(rYy5IbI#9af%Q|U&iegVCNckKE+PT!In1zqf^(WzGi+)&bK|l zDc}ZS_~vyTp=-#=oTzYBj`;9tjR=D&kpSU*89XgrayhddM$abX!x<3=lT)<+riI+|CR9jHvFg#wpZr5aoY#R zea&n?>v_`|;rHcUAVm%Ht2MRW;9;h-;BP|mPd3*7iYb=Q`Ox~;dA{G#kNwExmgBtBZKn0w6gDQTZ+q+TcU2|xpSL&vpDe~Bd5n2EC)MJ2lv$|ve&T+(6yM8q z1}{_Ry^mi*7u$X$L|0?Etr+PQtK64TCZ&P2jW8P=}Zu!ImmQUXg{$^ay_e<|^-Y&^` zyE6MrPR>1Nc>j=;xQNI6v?MP6t8RORiHm5gx0(Ov6Q571zf;$;{*2!CZy*0(x-0y1 z@Y7*u3wG*bCkgt+(BF*yb@<=Ge+j=6b=X$sw;A<&|9SQ!Mg#kin0Yw-p82`HGyX@s z4rM=`47TFD@Ka8=KiJ9m3F|z46Vsg%8?XLje6ikkOWiOQ5jTJAvwUhs<5AYv3h17!hp7oIPsu#b1UF#s9Qsi_PY>p~4$pJxiTiEc%68sC zF9+jUg5OtM!=Hkz_ce@L@tbbH1$pi&wo`}ri$h#AWxkSQKLPf$Vn6j>+v)v=+ut2v z`mH#o&+Rl_gZ?fce*^h1+$(f#Z2bp3=V`DH{ZATUJ3~eqJCo<$xq*?FD}h@tvlP9r<56xj>>dC(k2e3w5D zhAtrv_?F_>#N*tv1f?hN=k#}j$Um$M+0vZR_puY*LMH|O|s#}^N&ywiLg zds2w{gSMM0vFUL}P zeX!5_bqZ+nJ8>kZzvJul5x!20<$e6yH>5Ac=jrqNN!OXL+XsIq|4DB5U)=853n^cF z9`7-HT^q@|102^RzP>Hv>)BGyf0wUo$$YN(n$N+0+~48c-y?V)UF3Gm*+cO(;db2O zdGQtRS9kb25;%eKJ$gyjpW8e89B~}q52)0Z+Odnvk2p)5#{1d|?w4E#NVkJ^?OFF3 z&#&HaAjEmToX4fx9pd}TsJyE@pBC`^?XjEu7ulxp=er#5DZL-xFNtJ-1-?GCU^|HI z^rMvj`6RNrIQ;_0*NE5M8@`V1=krbGRLWnU+q>l=#aWK6;Q4ccb?iUsnn<<=#~sCSPcBO3 zKWa+;kA5b*iQ74n^&zZ}E z{KNiv?6!Rs`93Z*yW zby<_+&E1;foy+CbKT|uN4k9*r{|h)r>5(hQUT3?P$LGU`lz;DH^3RAO+psR#VSGKG!EtpvOZlsx zB>$i+vTLW2T``LM`418A<#r_SKDvp^|NAuOJ4kj>H03Y-EAfoIWUq0*MDpi~Sv)=s z+LFI`C$b^y$(CT7!M4{1E{FG`N%srqo3WiZlkI69_g=gX zYd;|W%JO8FjwSmY_v`!G)V|Blxt|)5eZ>3qfl9=8?~$#>pI_o`Q8__p$TnU={#+Bt z?&b9`oAFUp0=?Z#{7$+c6u6@3I}Vk@yd`8#fVu zm_hbpBH2$*liiR)w&%ALS7lzuoq1i3;B|F@_nBQCDc^xBWRrN`?ZETw^ly|tjMwcE z?&ni~Q+g!t^Rsx}W37x?Z)f>6rb~7^86ddpNoEdO}fYI|K@)4`vYe>`1mLa|ZLDJa2aJzB6zP<*U#0fPvxZY^`l!eqh$gm!z6A6W+Dlc4o5OhuIjaoWnX`rDk#N5b)9bVSVhp9vW?f6>)QY5= z!nP;d^A9M0V^~jE&P3S1&<=k_wmHO&oR_VW)Bk=<>4|X8MSlrs$9AuFlsT`9-H;yg z46UbshQjsw0HovZ?xB4R*Eh8I`_*XicdOCj@1~-~-*H5Xf7go^|4tSy{(Tc#d>;!f zKCeKF_jl0Z=i>uj@!)g!!;p^8+0o*2d9?Wc1X_G=0xiB@ffj$y5H0?WAzJ*s!^2+X zHHGW(2}sA^??sF6SDf%_C;r{+8A!+P-$skyvyB$NR~s$f??8+9FVN!sjWb^5@42Fj zi;&)C8Cp%`nW~G&rY0_)!{-f}nDtT@MKn$9@2HDw;2+af7t>*GUJoRjnL*b0oAMn! zsEgkr-_u#dEknt!+eGE{gZx*6D@o4H?ZLp#vl0Qv{V zWqbf}si$PqkLjW~+yv^MwJSXRg6SF1A84^3-0er3#Ekub>>l5@ortkrn2zzIEeq{NJ8v+J z|8q`v&!4{gDV~AS8e$d1Rb{3jx;ccX2{vDXF6x0DZV1r``pvz5-0Q@>ZhY5)d;R=h z^Z(g!YA>w=L-dK$MKdV>w?h<9Lpjei@gv)OY@e_{?f~VZbpqqV{#-v%duiQhA~&qR zR!}aj8%>=1nRGKs3)wGISQovJbOP2b_E)|wx@Zr&kjuL00`_(riuVHBZBe@T7SgA( z{|NPeo(&r!WPOHs^)ID2;e5Y9|6#d%VIM?W2=*VerN1Sc zHH7RG=r2rv3hhJN9{LmQcGwruPUL*?u&$9ml>3??R=Wp3!NU>!n#mCt5~b}}B%xzpbgV#my`0b6sB z{XRF@PdR-Trw`%utygrJ-wEplb!#MR;y_F67fp1SqKiE#;d%@090vRf)?H7q z1~A2;iKu8@q(b_}BwZYuX^I@{ba4V~6}BVb+8TNLU=n+@tk z+Z^geyAbL{3&&Mymva6J8u10@LU3Khe7#x!75ne9e;oTKv;Pp6e}l_!Qi$~WTAYu0 z#W1+vjCRE!;!SYfLf#xqwm+;xuEg1TDy$X0=M zjojok*|Ouwehm8;rZ0ni1?@E0AJHB;N%lCGe}5El`hK#DFOx04fozc=vKKkNJ}~dF zoXbzi+N>W9>mSogbS3M|Pw}<;nRpI!HP{C*Uoq~FUH=eg#*zK87um00kPYchwmw`B zP`9lQ*(})qk-y|||7|C+AGbG(^EtU6nw=v59ZvuA7vj3CuLkoF%Nxt}*`wLd?Mmgi z@^X0txgVEu`>)4S{`WjiKf->5<&9%qD39ZWX_P(*);ap;^L%)}hPZT3vZuR|?a1@w zG?%+>38jC`^{(N1JIZ}9uULD4{QY^nQl1eP;rS8Sj=0=WvV%F!c5G*`O=i1#Hsw3S zR^LbbInRT3iNpsUlg;9G{u)KxpXcYV++W@0`7W<$1^W!P|G-Pick?^41O6s^k=Iu# zp67Qzr2Hl0$p4<(H3argEayWW&k{V2PhU~`m=8#IxjAv~^JGu+JouH@%L?wV^4w1o z2T{K8(PYPQc|Ezj<8Xe(de3osQEp!aj$<;H`^8eqw~oivpYvyM{2N&J1Fwr99>?6N zr0dP=blD8z#ckSEE8A2~LGFj*0pu^*itHAiZ===`XR+=s$N7}k_W~a8ecYY`tttN%E@v_Kr-S3) z)0X@NxSjcy5m$lhB=*Ov7R1YV9}MO7`D87nw}I;!=DT@}>}8%${kfh$cT;*t?zcfa zpMDIa^q-t$3&V95%W1{?$aXI0ufgOG0!|l62pSZ{{vO`9beZ=d1S1j?Gb!0E|x*B$n z*dNYgI8O805x3&~vpSD|X`Zi{+;5>gf99N}{JVKwm*e?yw>_o5D{&&E+7vp&wO|~nyryASIrzriS&SabNIq9=0#8Y_w&mKfvmFJCv8BCD#YWrhv#vTwd5bSjch*dFIN_E zIqsjjJg?@Tr}Q`6@89tJdByR6U6khQd-!~S^P~^YQw=`1Bj+1U>8p91{lh7JIs zcpX*b`CF3b#|+-*Kjwa&#QVW4jPz2j|ttnqu9^YTNzgoYgbiw^lm*;aj@5gKT zdOCa+fFxF+^_%e zx*9c?{K4zUR_66IlEqj1kJaOco{*-Km^JM#QJS+G*7tHCExc=WZQoaw)kX;@? zHn)rHmab%jxL>Amf7XTjc6gon`wjWKa(OYl@09OM>DPvl4di~`!u!Ei?*9Yl$UmId zd3(+m$ot^KN90f7ehJ@3yqf**8Oy4~);H(4O3iHm|_+SDcO((_hUjB_2UJ?||_+Q-gjbMeeD( zm<;!ckx?HRjQ1Dwi?C3@w5^;z!wwT2kjSr^%6 z!Sf7QH#x!HfH-upbf4Pb=YQ}V0p)K_a(DbeC3_ERbLmy&VTpXIr)8VT3w`m?$QV1Be~&XN6* zZ8un_m~MYhwh*jCE^UvV?zjFRRI6aKh{ouYR z=Fb894%#)Go=2v`bD7~-zroM{4bcUzw~c32)mp)Q)OKJ47YNZA>;gDf_5fRRm=L|e z2E+Lr)APc4t3TL@AwmrCYJWYruRa3m+ZsgnJ-i==T+^TIqE9r*R|1J|E+LEW!C*f8 z{SmY)-Q_^}$S>f19kj*L$o^4Jm%Q#Q@jiIJAN`XPiS-L)&t{TcQ;KYLXb0x2Kb&lF zj`MS9FQ)4Y$u8u${)YE3Fn#ZSvS-=$<#J1%p!B*NM;nfNGusNc$zPl8^_RrW;O_^p z+^{udH?W;vmfE%O3$j@a$!0bsTME`O>f+#i9kj@?2Cc*nZm><7S4K4m|J=zM~o=>QJ zAD35#>($}87Uo;X{oV@B1G1j{WM^`F-g0~X;QEil=QzxFoa_G~lXzb+*+XB`xPQvy zoHm-$hx2&u*Ou_7qQ=;{Y&IL^z3I>V0^|xT$7vk(v39S{%NBTydNaOfwr zZ=pZX)(Jy@UQwVU?(ZLp>M)+)SRabQFrNRJ#BPh}ZvX$<8e$r>clxXk#Ur=@y9Ua! zpqw@RC_NC;=Rmr1mY?{%3p~ek_*yDA3i4sSXxBqK=YstX+PM~N2WTgz$3i>N=7jd4 z|6j1^&jyW$2^M)aAGM9&QkqPIL|MrkR?-;UeVVtm@J}__57KL*R+Pp2OoCUkc zmIOVPo0vg1AFLzfpAQmKzZ;_BG~!6;e=LXYL%{njvVRP*67-lJDbL}Cp!bIiLGRJQ z`vwPNa;h^QoNpd zLiNFO^}bk-CK}1O;k}`~y0{DD(s>!_-SbMY|4X)ypnp-9lerk%PHfjjk)GZ=@SRux z7t?xr2=g3Xrxj1YZiIe*%j?QBFaQ7g=lz=d!*(Q`g?`$i3l09)!JA>G4D(_?;Hh4$ z0Y`c>=$CkLPVjH?Vhj8SBnPYd&U$ff7?lT-4?5a+)@Lp|!zH`RvqZ3DcX_bYz`p?D@*kE3Zyg3$B1!sP z;=*wlodDRX*^gW*0FHpnD}l=gz!t^48dhh`fLvl5>vw|xs{q)#*pJ*I050v!{{nXk zC@9K)f+;Rx!s)n20BmjW592`|7yw%vGtTZY0kE|(*MR<+5&%b0<~wjY4+{8LwC3_& zz$rT_poH=xCj|J5aQ5SDPY;m6%KDI(1e6lBN}KCH6&EM%b6{Jskn^9B<#kYgU`?F2Vx`DnD{s;0VR@ zl6A2ih>zl#+-w`-T`H_zVPF1`b`s-5Q3~`wAfAdrqw*qG>Kk}=< zNX4UDL4OCOC_W2Uv(JLk#X~t|T;g6YT~rF1qx{IVgXSu31mn>-Xr9O^r<6-{fp}X6 z%~yWpjzJ4W2K!%uzE{v<Z5Q|} zy+Wios=v|2&Y&G)FLNWwJH>IyceG!3!zm_cx40$wpg>N`wnzBMC45kP2X{ky>U%{2 z=DTp0a}sa|$yEQ*puM8EWNLpwZJ!wI2E-}RthL>M#1cRlEk za7m{4{s=lEmP&TVcT^l@rudGDOUxACF;Vaf&v+EnjtPIs)SnN6j*A-P=l(n{no6ej zJO+OoW{mfF&*7zz6mPM>8{$3rIo=!MgD+`5;(Yx) z_=YIRjPX_szA1_`W4zUaZ;49G7;p99-$Xsh6mR|D+oHW>cf5ayiOdx59TCDz@!k>p zBnLZ!hU?<%;5*_7a{_R4VEhN~tjhDtVDm2XL9Gp(3ftmW#7qA{tvPV-;J*|%03I9s zk2pi+Nqs@>nYbpI`eRz~zv3y^N9*@rp;f>lX#4`epPd=|!x{WsBr&;P^|Fa2`xzhcJt*8~eqt4Qs`_%{Y?S^;K^e`Bzr`AeqwcLZA+{_3p|?)d$* zZ<#6nY}ycJia(pSOtL%PY#M%BFI*qxez`Z;p&cYY$Lr9}OQ!bz0{-jF81J#*?Ajm9 z81L!e9NJ4}jQ4bKPR*1@5{mb7a4xNoWOux|wFb--ZypW5O%2;a@#fJYBvZVW$fG4n zrg&}!=hf1gF`hfY`LxB%7|&n9`L&JA7|&n91-0FhDV`U>A8Dr~yW=UOJ!htP3TtL% z?|2GpjU-b%?}H0#?Ilw@Mo1CuJ1@==QdH~jm48IGV%l&of8LPd+IVJ+zfj1>+H_`& zzeGq0Et(nQFA-8wOO;IVe;!gw!*5&gjDKk@i<#mtqg`XB{w$*vu7dg9<6lNAEt$r@ zQpl%T9rE+|f2y^ROzo=y{tnC-Z~c(Zv>wbDZn_-ktGnJNC7 z+Fz30{asUgDVgF82&tvzswUgR@z&CcOQv|8;4j0B@y3MI*1lxMc#}fvXbqV$-lULv zT5HJ^@BEMk8vbg6XMTL8IhiTmhFTIc#oJIjEt%?H7Sd3=A=w>&BkfPg6#v?g#u|P* z9?U0>zp?f~b!5_KfFHlL4jJSBIpk}tI5Wn-KctCPi5cVHAJR;#Cz;|u9@1QEFWKGS zEwqWu6n{%Cgqh-RsqK?Y^`8xCsbxua$KOi3B$?vB7SdXKM1GFHwf4?S{~P!%`H_j@ zzZcR*`+ynae;m?Q^Jm8RABVKp%1fsBUx#$m8cKG@-$@(9O!0Tt#xqm=owW^;DSj=q zv$k8ZJN_=(AuoT9(5~7^FU}jp@X%ZlHKtP(SBp5c!p|^nJJ#3+LyI3eu}3#{M1Md$rMl9&|z8wW{jt6=nq;m z$y8r&_=<<_lHK)<&}K4IeIvDS$-$0}!FZk@sU2ZI)jv{uOnxyS3GPRPj?_xk#&`l9 zA3VqN{z$E|WQy-oW29C`GR>!vp`*0M%y_<=7&=;ODVgG%89GMmDcK$0SS^T|;v1($ zOLoUMPCLPVif^3uC;4T3p`qinqIJCE8>f9P**%`)v}%%ReZ+>2*IJUF*T;CRhh*yC zB=GlR#{QiXIzb!CjN`pHbfPw$8OM8Z=wvNivQu6U)`U*g=1O+AZ<@BBnc6p9JH<@x znXY|M7vpzd52kBHh~@clQ|NRJzZJ(lA9jS!&?b6uV`G+)Xp{E6h*+HoqM?|-Ihw-Z3Z^Um z{v6z2bk0?rJy92xo%0mG41oI?&IO8deFtwFc(FflOXp(EY=H5)?F8Xl^<=IC{vOWdntwy`BlmNzRP|kj^)Sr&qvD%zep%(`;Vu_- zXpe_ir|4p&^Cy-64BRi6?1ZmKf`8cl*bKNI_-i=le#I4l zyXDGMTodBk>-X4IG$N>f8?z5u;Q5z&sFCU#m^V(;#cP}#o3nV;-2%k z;zMx%ZbqtsHz3fj9zlHvL>V&VjVgILa|LK+UjN+5Py>h`?7CtB_ZyR(w-o0EE)n*-;=8hc?_5dffv-A+?k<0wY`?Df z)nn`rLvc6hHx(yKwiMr#`TZ16k^XFo-_OPJ9EzL6e5@9hU2!kq+F>~qmuvx_7sB!? zt`1xxEWhGua=v}2_BXy~Bzto)Q7)|F9B@?}2`7 zSV_g@;OW!!uu_Um$nOj*qxcw<7a#VS;<3P~VV^5@9l`neh2o!l_}{B=Jq+{s|AzbH ztNhBV{KsK^Gzs(Yb>I?V6_o#cN8Dd3dw8fWR)l#t@3*>G8&*~MZ@z%_8&*y6>-kuI z4aFN^fA~49mg4=unPGJm$HM*OV_^*x_XWNb)=2SX;9Fsh74HN7Gwf@{A3=XU32UnO zp9pv!5%!JZw$T4pcnigu;Ljc2O7S4@7Y=WuI2&-O@OFyVLjEtqJ1D*hTr<3r;;YcV zYs0!IF1HK*>N⁢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�T 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

    Lu6^1?WnVU`e+bXkIyZx76IZ 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

    tN~ti{(-ML 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

    ~*VX_LT7}VnQC&(5GlpK5 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 @@d!o<+dpwL_poAfRraTsZJx`bCGtTh3KZ0dpg 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 delta 99 zcmZpez}WyqEsR^33|##U8H^ar8PXV%8B!RMfOHCjF;E0V8v?}=fzSkqO@T0(Ar&ZU e4ur`-oC?Io3>H9@24EVb#*!gvgQB(+G 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 delta 33467 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

    1b^2s*O1;@kYz*QaP z&)en0Y@P?^wm3F;Yan309l)!grp6wPxi>lRR}1AY*zru_u+!k$C|_Wg*G0L*Ea&iD z2jvUx@_5ewbt9Iz4sM{n#(BUEH0H?FNMj~!5>eBw&#S1Z#_WM+8uKcN*Ep8rU-O6+ zZUWx%XrVFZf|eRHVJnS)vUw5qh(Ft=$UTgZ3Kp zvh1KSd#Izv?4eE?vwr7@RsYD>MPu$jSB<^wlBYBWxtqo@;HNd_2D+mQojsg0Ho&W} z$9GXy-Y#Da-htW91MY!%%kB{l)jh#$0_?@7oUm@sawuN+&uGlE)?ouS2PX1bB;cUL zk*zoQWqSjB(a}faA*j?>;{}NC=Q8^LS2+5+jsOqP_&-Q6P~$jU3WGF$9rY759)Sxz zQR8P(f3U{Pm*g;y{~Gkb5XS*7gFP6kaRw3&)3`no4A=M()(j&w<_?Y2_!XSRqcmm@ zjJBEE$A`@E;q!^>{yMtWE!V&Y4CWBd6i7inDhTcjd|@)(ik16CI?uyFH5c| zS^$U2sTwokv>=|YaYK~P(3s;wvc}w@XEo*y%@nrhf9}yNEr5G8TVpohIgPnTUX8g& zK8;yFMPu&J9F3W8F4>v?>3CiX;2zD>n0qu|WA4!l8gnRKpfU3;)L7Pu;C1#@!m)ob z*y}iW87rLhORT4Tde?K9nD{%Ugi=gI}|mlh*-_d7tQ@ z#_X}zG%m#XKP_UTo1i=bUI(Yy3Asi)1b$uP!{9?Udr+Pp#BXREi}E)$E(JcKaT$(( zZ$&J06S4tsYs?nEqcIm5M>QSf=$2IoyxSh}(GvQ^8nec1O=T4XN9C0`Tc2oR)gYqNxA>qh(#b$0_KL3}g z1w_MlHHfci%*o`s##6z!BDT02;937Y_$_;b%y&m)-Z3Y?ZQ%WXwyv2S@D3`RfX(an zE&`6)3An*~8gq2Kukm9f{88gPDE}#9t6RUj#vCJf$RDEoUBjOL*`+^=1DWu+Y;y)0 zz$NoGn~#CHcN_5cYear^!fs$V_&1H&#eYP^y5%PL&mjIgqBK7LZzo_EJ&EwS71$sZ znZ-apwcS+MrA|1}jRukb#XKnm{VYvx}d&vVRE5z@{^Ze6YtY%0BC$(Pse@>0xA#oej zRolxhlC!Lo;tS*0nS#)8eCL*nIE?M+X?y=#Y1LQ(KY0RAh{QO3pvUNTN(ejof2iL7 zX$3pJx3)3e=H?B2v64M85sEcckmsMJ-j8r<;D?Z;bMhfH9A7);gSS@tLx~I__-P&HIf`b5;cJZR;`uX{v@kkwtZ+dd`-$;sp^5ruYWdG8WbpLPs|Bn1`p6;?0mZE#!@poI<*6&*x z?oERua7)>gk7NbLJwvUR4gQ8$ypEGzq8f_veCA(ZzzM_zPRMT%k5AA^e85vzHk+je zJ~7TmE%*)9-HRs^pKNDu3=gsme8G^d?G)tKjCJak-$FC4(A@+f#Jo=N0$}9OoJm!^;evZPIIUj_;cFlM7lJq zH_i`JjbpRCY7B})?URB@@rDTsOxaA7q|PR(vrFn|Nu5Jd=akgB?9?e}nt{){vu-RD zLm2V|-l*VD_|RXLn^b?%jgR6p-mC8!ZTyCvw2t5QcTxmGvm!(Aby_w$7U>Lp#{C;l+(UWi(cS`l)}N2(Y2UQnQOa;YA$^T^)km3=CN&$6=u zJ2O;WgB^xXL~wAKgv9^N|34cgcnjeFYFIhRK>Oqh3^C3a5{mUyV4iqE`r|g@!t9|f z%M)&USQ;4k0%uR4u9Kk_cGAS}MsQmvCEHN(j0K0NbJ7v@r6VrG4#yWj(U)F)&XXhl zDL@oH=flm>U$;QtT`>@CkA@@n@8U z$V?q-?+oW2eiev%34b_8%fJ_Moi;otr81@8;}3{{3TRasH| zx(YgquRQ|ySlPr6h6P^a;f)MC<_>1^s$z2u&X^YHoa$op7LU||hi?zz=D(<+tnvK$ zCq8(SgfUaSm|S_EC~((+t|Jo-`63W*>5Jb`(U@kMi5+iyq9$X5Vz(6KI-7OJVWHVZ z?6$V2&rCzL7n^q}7?U|G@U{tVkb?)&b$WK-CtCu)8bi+zd@_e?X`J4ohFbapf6kK+ zE{Pbk;YI$qB_Dl6@$=Zr`Gb#q^tU~O{a>#y=W0>uk1rN_h z+_SYkzr!@l|I7JgxHoY>=SPqUZ#gMobT`e&==<7We>h|QN{^yK#9hx?`r@VhE> zJ%;C5v1i(zs7;1FSv)76@hTY}bi!ssrHE&a9eH}2f#1mCW1j6fzr#>3h`qq}bjOd; zEfRY%6cehUF2VJpxR%;M-@RtwmtFW+ZhLlN4el3vrR}MYp9EViwq<)N#F}cY*e~0j zgJn&7X|logw8hUcZ4x_`nl^FcTr+RWTpWYu;gv-%SfT1pS=?vbT(RhN@y~_-SMh&a z6PE~Hi-)NcfAh_GbF4y1U2v$X-$40CZ!Xzju9W)WUoHMYI28|zHMKSFqDZNQ(u?Br z;r7>c@g4NPxw*WtKke$~_Tkz0B4DnEo7wHJ^J<@5JHcCH$+WJgZFn`xFn0KN>}=M= zhbuEmI^K8SjGUnK`B;ESU$1BF!*GObrc_>jqk`B_XZ)0Yx%@75)G9q zRy9}|V)cWSDb_+*m~6eMOs5C)Zj_?aC)U)#s3KO$BvcX0g2fRbO2y)>B9B-(FtWyr zwH#K0Sii&aiPajTVyak+V0pT*E%r1}_)b+SM!qN&)eB91#`U>YrdZs$1dNJ-8Xk;{QECfD^h}J4 z0be}E#wc|dBX~TPPf=>Z6x0xl+wi$oYQXZ}-B-}`CHlkncZlxU4vB^Y68Zb@?^1ig zbaVnn&?t2TR=il!KG#Ye?rbANEbQAi`#pxw|73sbXdi~!K%>+s|5FFLcs-*XN4#tK zTr1VJGF^)|JMH}vYc=MZ1lQ*i>lS>eV&%i!li`+Tx)y#OmRbD854Ml-jH6v~Hugs> zw0OqBV$pPDIF8hV1uDglcj6MnlHPNzRM+xM@Mj(@6kQ%mGT($iWBsA8HLUbL9H|rO z=)+ksRV!Z|{Q!H%hwX}BS;xV-awv-?i zx8xH`8YLD&J+C*do|)`~at_3)gHVrH?811lSSi8w`Io-lw3QDNWgvg5Sge#GR_`Tf zidd|!W-*SIM=aSp+vm@H=;^^3cu5weMlMAqvChF#&pDOi#VWT9TNjJTeQs&0Yh{SV zp3fAE{lR%w4%hla#iHeGa2zKOdGh;w&NfnAE5o1TaE&e*DNaeISYKlmqcGdsyCK$| zZs-}Y>a9TA#2N(4Cl=e0YFqvphl^E`{h#Zkh60P zMtmQ`@+OFxh{c#sEZHa5%5ber*TVN*?G1ZeD?XFH<~z}Ru{fh;x|X`iQu;iu6(6v? za3;7;pKGPMR)%Y3x|X`;CUmWM*Gh0LpIDqrGsNONlPT8Q_?=;Vk5zf26lYNn%qYcK zG+r#ulL@ZnbFEa@%5ber*Wzn1dyaLjc-KmBEuU+pdR^1^Essv}ew+)iqSTwPGQ=uz z0Ie2l2`v5$WR&_7R=il<4x*`Iv4+pJQpJkKa@li}HFz1|YpJl<3qG+a!YG6TxX{L z{*l6!WwG;vlQ6-xe6E%1SpHgX)$*p^W2{^~u9Yd4Wctx5O>ixrSaLpy#ZwpG7`3x_ z#F7C)EG`E#Tq{$o=RMfzpIGCN7p5m*!b*5ZCsU`2CCw76S1I(ESQ)VRnmkIy;kS7` zV#$>!*5~kLi1ip&rfcB~ov1;dN320*Ocf6cC-DlH3F732ePUgKFIB8qyx7SQs~xO_ zUzz3}ET34}${{Yx`ps#6hFEgmJfe>c^te{MYbD@&pmwoOtb^r|@OQ@-|A%8`x|Z)x z$CoPB#foUwU-Zf59@FyT^;m*f@%Ta946!()WQtW3KZ6_pH{<41X^cG)Gl%mtwv$H= z8CqRYYp8LFW1*9W4js}fam-Yh(?E%1CyW_dlV$#5M+?=RHZ*C<_(`=@()e*xhR&FR zf7CT){FKBoox7_cG{=KJ)dLHDxoY<(8w|d7W-G-NZ;at63TR*w5^5*T`@7G^c|CbN; zjZeFEs;cQZeXvQ=fDUJJ-K%rC&hlxSB9Gm=vFUE#&uhK;W9-VCiJskQbv`U%de&9@ zC4N7woguOcJ`TGdm5%yK2yr{RBe0VWc{N#?p1!TQT4V(mS0LUy&C&JWi@ZC_d-|L|)~X7wxZRo6lF3epLlAW zEV^Y#>#N@`-hS-6tE*ZS>G1ZHg9|?IWi0Pk=TMuNdZ+z&zbevqcH-sSZTj83pBCAx zT<>u|r~g%a)2oGky}t0yaeUJ_^XIjZy@n>${&#w7vM1!>k4s85op{^`kGMIqPu}0R z=M1|yZR_e?L;kq4<7lN(kNk<3Vm-d2at-SH zXk^0ey#6hh%6KNH9vWUYefgQNZ!cq%pDk)r=gP1} zBX>^>ANE3n*3$U5u5tH5_x{{$Aiy&{b_-jBXUHo`Eg8-yHOSU{gO80>ViKj z)Tmi+SkjQe!-mwVIc!Lcq{PJ9iFN8E4INUiUQ)fG^=j20R=rmJ#5xU<(kpyze9_GK z)iR2kx8qu7Q{_}W6Q3V7%;XqjPCjGK)5hFQ#`Eosc_oec2g9Rr!|Mg3T|91D`Q}+A zN|@D3ghhwqCSsvzynoR?9KTFpL?(wADW^-aV`^+E7G=W&VskC z?Iq0ir7J3Yguh-?1PT=1BQYbhEBtnTc2(5GEr0x$es)#GDpt}=^!7C}j7}pU{iZ{j zeh2A#Ha}{I$2X5a?K~K>&B$!rKzs{qpj{69b2c+Ff_HQ!cP=wB3SUu8j!+nHV^m4} z>p_KyqdcnNyBYYY{s@Ji{EuRSY=&>S;d^A}D`13U3)y>z=EjQ!W%R>dpozH|lbeo& zV8>9+F{~vbM!`|YjEr`hQJjGK_|0W*5;xAIbrEJ{m?|8O)}diJ6()il>M0ZNZgi*A z39XJ#SfJen`N@PL3iti;tLB&IWyXD&$WrRobSQt5zeQ&m*>ow#+ ze}*f}%F(J^IC=`lD2)4s-mDg$JEy9~mghHf7DqaKgQ1lf>5aqpw6UuQ`iDQu-O}SGk}-vtry=6; zrK3Ei^(5Bp7_*Eg?5V7?wn;mye<`!6(cW5D%Dj!Id8N%yj1E@MGG-q(@I(4dw|te%diA;^wj)CG@YKM+vdE@#^VGmD z6=6|#r>Gczd_Swmx>w08Qj8HvP6YlNhE}rhp*PIymbOet^0RyXroVR2?r_+#UwxIdl(#l2Wu#9B7VEE;eO zv%FOi|3e&_BnhT7BCmD7ni*}Cn1seP6ZZnTOIn|}71stT?x}`mO2lrrVijz;Sas7^ z8~6X@yl84h7GW3X?hQvXbYM9%5@V+AXaz@k*I}KjZuXFxjo`1V*Np#1AX2r41J}5n z%IaOi++*~%!fKksjNR6lnmBt}TeoVO&luCK_*!PC7;e5B>R>!79N4_Iv6i{o=$&4t zwuuj1O;0~m$25$P>B)Vq#JcE~vvtj#1sZTX%$FE=8XR~^YGA!s&m7W)dniLq2@G)| z_zwm3IThsLhJ5R=rBZh50-n@=dA9w-lisYpnb+vcq%%=a#oqZqWgk4)S!sB{Gw)xX zMgQ_F`-jKc)4<$0lKIEM@8p-mG8v8vZoeR6MzCYH<_I)k&c8e_{KI1%ZD{&%44O4E zWAT*O$UGxQHW5*S%}Df>eF_Wd4|HcO9gX5u?q)2)T^ z=6yURH#e8!7)G`*zX`)Jz1h~BVd8v9=wN;t?v*hhyw-(ps{5(w(VphCWdbbW8l?qU{d z{TRW8F=*w+>+uwnmqIzKq~x;;^0VL#WmK_qrBn~zU`j*lQFpVJm*;b?R%PX>P1)S> z$kHB3%9@cSWVe0G;pqxbY3F=kNA!ThX>A?}=>reeAAz0`&%l3qh6JY>8I?_TL~2=| z_b>+q9oOYmtu{T)xR$(zo{BO;(bIjDkuAA^Zv{Mkkq?7KjENOYL1ly|hZ=QAP+Hr7pQu*o@=f-D*G%eM<26WY+yi$D3i;~RRHg5 zvv0Tz!HMh)@7_N6hsA5G`+dxw*;d`))=w4nt+l%J#q{{HHL9=K!dPeR?Q1SJ)~7e< zXXZ4F4OYAU<}zbr`WOApvWBtA`g?%+rjcsBG0?1OY_{$UG#lfo!XUE_Y7QJ^PRTVQ z3aiLu!*>>I$ya<^tgC~}bH-L?En{6wFc%uHq$ebz7FI1A2Agje-1vP~FGOJZI?POI zoX5A#nvi7H44IHJHGNx>`8S8PSB9Ft;@h!PzUQ&9Z_e>0o@-(PkBE=O`?tc3IJ*O@I5{@Yh7gVA_=z3weBd;9(y-FCX&w z_QKN+9-Mo2%szOy9zu88p8eLX(PsN<2T)KK1tt0F0*xuj6RZTfN4ZXL8C)jDvUAvsJO~sXo>mD(flE1zC$RtjJ_BR1lPD;4H(c z2UbTLCm>x<>)i>mSbH+TY!z55C0R$Rn$;p2%ED=ql^AE%j%Xz?$6ZBLwpU&&U5_lt z>~-5Vdfj#2gh|cDI_&}-O|7`e=2#=mT0a?U@Yk(Nlg$anA*<6AJRP>)nSz&Q z=~lg|W|QzV?9rUD*5=7rC9a%m7BSM&_fIvS!{_m>xapWK-$)-g-Sivbt8pZsYRWZr zJ}Y~&In8)8eNM7Dw7c<^b?b~-&v-lC^RXEoV!UIOKZkBRn*Q`TvqGNy98|Ji7BmY3 zV!U5=)f}JqU2K_)YmB0DR^{=%Yvs9Sew8l+1-_jqDQ1_%_%f^~*RaStW(~V;R?K&t z0bd{hXR}l-<~w0+y^iJhN$Yb281Gre4V*rwta5yM-|Be7Of){Q_TDfn;OXKGv%m47 zRqI=``B?WXwMVHuzSBrv54mf&vm-scc52$gOdy8CqqBa>u>w_gOC)y8+x+I!RNYJ6cmzG;@i zljoLM3{Oq?^rhAJ7LMIl*1TJIk#^a-atk5fSmtfBwQSOMa>K{9Br1xlpYL~T(jD_R;}2`p4|wVNr}gCz7)SoHI^D&Jb zGu!0bjmx6zS<~>y60Jo!-yz?V^d0vwLg5p0C+=fPF|5u%B8!>+_K#*HZl - +

    Resize the current form - A (width,height) representing the new size of current form + A (width,height) representing the new size of current form @@ -79,15 +79,15 @@ New width of the window New height of the window - + Set the size limit of current form - Minimun size of current form. In form of a of (width,height) + Minimun size of current form. In form of a of (width,height) - Maximum size of current form. In form of a of (width,height) + Maximum size of current form. In form of a of (width,height) @@ -412,7 +412,7 @@ An IEEE-754 double precision floating-point value, clamped to the range [0,1]. - + A two dimension vector defined by two elements. Vec2Ds in StgSharp are defaultly usaed as colum vector. diff --git a/�代�/StgSharp/Entities/IEntity.cs b/�代�/StgSharp/Entities/IEntity.cs index e908b5b0..70295c58 100644 --- a/�代�/StgSharp/Entities/IEntity.cs +++ b/�代�/StgSharp/Entities/IEntity.cs @@ -65,7 +65,7 @@ namespace StgSharp /// /// A 2D vector presenting the position of an enemy entity, position can also be visited by X, Y /// - public Vec2d Location { get; } + public vec2d Location { get; } public string Texture { get; set; } diff --git a/�代�/StgSharp/Entities/Launcher.cs b/�代�/StgSharp/Entities/Launcher.cs index a41fb1fb..e2e9f958 100644 --- a/�代�/StgSharp/Entities/Launcher.cs +++ b/�代�/StgSharp/Entities/Launcher.cs @@ -41,7 +41,7 @@ namespace StgSharp *用于�射其他的实体,主�是�弹 和 掉�物 */ - internal Vec2d _center; //�射器的�考�置,�动轨迹的方程应当基于这个�考点构建 + internal vec2d _center; //�射器的�考�置,�动轨迹的方程应当基于这个�考点构建 internal Counter _internalParameter; //�射器的内部计时器 internal uint[] launchtick; //�射�弹的内部计时 diff --git a/�代�/StgSharp/Geometries/PlainGeometry/Cordinate.cs b/�代�/StgSharp/Geometries/PlainGeometry/Cordinate.cs index d5b77d4f..215abcca 100644 --- a/�代�/StgSharp/Geometries/PlainGeometry/Cordinate.cs +++ b/�代�/StgSharp/Geometries/PlainGeometry/Cordinate.cs @@ -80,7 +80,7 @@ namespace StgSharp.Geometries public vec3d axis_V => axis.colum1; [MethodImpl(MethodImplOptions.AggressiveInlining)] - public vec3d GetRealLocate(Vec2d raletiveLocation) + public vec3d GetRealLocate(vec2d raletiveLocation) { return origin + axis.VerticalVecMultiply(raletiveLocation); } diff --git a/�代�/StgSharp/Geometries/PlainGeometry/Polygon4.cs b/�代�/StgSharp/Geometries/PlainGeometry/Polygon4.cs index ef34bc8f..2ff65fdf 100644 --- a/�代�/StgSharp/Geometries/PlainGeometry/Polygon4.cs +++ b/�代�/StgSharp/Geometries/PlainGeometry/Polygon4.cs @@ -50,10 +50,10 @@ namespace StgSharp.Geometries } public Polygon4(PartialPlainCoordinate coordinate, - Vec2d topLeft, - Vec2d topRight, - Vec2d bottomRight, - Vec2d bottomLeft, + vec2d topLeft, + vec2d topRight, + vec2d bottomRight, + vec2d bottomLeft, bool Orth ) { @@ -76,8 +76,8 @@ namespace StgSharp.Geometries textureFrame.mat.colum1 = maxCoord; textureFrame.mat.colum3 = minCoord; - textureFrame.Colum0 = new Vec2d(minCoord.X, maxCoord.Y); - textureFrame.Colum2 = new Vec2d(maxCoord.X, minCoord.Y); + textureFrame.Colum0 = new vec2d(minCoord.X, maxCoord.Y); + textureFrame.Colum2 = new vec2d(maxCoord.X, minCoord.Y); } public Polygon4( @@ -93,10 +93,10 @@ namespace StgSharp.Geometries vertexMat.mat.colum3 = new Vector4(v3x, v3y, v3z, 0); } - public GetLocationHandler MovVertex0Operaion => moveVertex0Operation; - public GetLocationHandler MovVertex1Operaion => moveVertex1Operation; - public GetLocationHandler MovVertex2Operaion => moveVertex2Operation; - public GetLocationHandler MovVertex3Operaion => moveVertex3Operation; + public GetLocationHandler MovVertex0Operation => moveVertex0Operation; + public GetLocationHandler MovVertex1Operation => moveVertex1Operation; + public GetLocationHandler MovVertex2Operation => moveVertex2Operation; + public GetLocationHandler MovVertex3Operation => moveVertex3Operation; public Point Vertex0 { diff --git a/�代�/StgSharp/Geometries/PlainGeometry/Rectangle.cs b/�代�/StgSharp/Geometries/PlainGeometry/Rectangle.cs index e812738d..5f3fbee9 100644 --- a/�代�/StgSharp/Geometries/PlainGeometry/Rectangle.cs +++ b/�代�/StgSharp/Geometries/PlainGeometry/Rectangle.cs @@ -49,8 +49,8 @@ namespace StgSharp.Geometries v3x, v2y, v3z ) { - Vec2d side0 = vertexMat.Colum0 - vertexMat.Colum1; - Vec2d side1 = vertexMat.Colum2 - vertexMat.Colum1; + vec2d side0 = vertexMat.Colum0 - vertexMat.Colum1; + vec2d side1 = vertexMat.Colum2 - vertexMat.Colum1; if (side0.Cross(side1) == 0) { diff --git a/�代�/StgSharp/Graphics/Form/Form.cs b/�代�/StgSharp/Graphics/Form/Form.cs index bbdc8e55..70da823d 100644 --- a/�代�/StgSharp/Graphics/Form/Form.cs +++ b/�代�/StgSharp/Graphics/Form/Form.cs @@ -76,8 +76,8 @@ namespace StgSharp.Graphics { Interlocked.Exchange(ref _frameSpeed, _frameCount); Interlocked.Exchange(ref _frameCount, 0); - Console.Clear(); - Console.WriteLine(_frameSpeed); + //Console.Clear(); + //Console.WriteLine(_frameSpeed); }); } @@ -102,9 +102,9 @@ namespace StgSharp.Graphics /// /// Width of this form, represent in /// - public Vec2d Size + public vec2d Size { - get => new Vec2d(width, height); + get => new vec2d(width, height); set { width = (int)value.X; @@ -204,10 +204,10 @@ namespace StgSharp.Graphics /// Resize the current form /// /// - /// A (width,height) representing the new size of current form + /// A (width,height) representing the new size of current form /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSize(Vec2d size) + public void SetSize(vec2d size) { this.Size = size; InternalIO.glfwSetWindowSize(this.windowID, (int)size.X, (int)size.Y); @@ -231,13 +231,13 @@ namespace StgSharp.Graphics /// Set the size limit of current form /// /// - /// Minimun size of current form. In form of a of (width,height) + /// Minimun size of current form. In form of a of (width,height) /// /// - /// Maximum size of current form. In form of a of (width,height) + /// Maximum size of current form. In form of a of (width,height) /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSizeLimit(Vec2d minSize, Vec2d maxSize) + public void SetSizeLimit(vec2d minSize, vec2d maxSize) { InternalIO.glfwSetWindowSizeLimits( this.windowID, diff --git a/�代�/StgSharp/Graphics/GL/Buffer/EBO.cs b/�代�/StgSharp/Graphics/GL/Buffer/EBO.cs index 95188ef3..343184e7 100644 --- a/�代�/StgSharp/Graphics/GL/Buffer/EBO.cs +++ b/�代�/StgSharp/Graphics/GL/Buffer/EBO.cs @@ -39,7 +39,7 @@ using System.Text; namespace StgSharp.Graphics { /// - /// A collecion of handle to Element Buffer Object in OpenGL. + /// A collection of handle to Element Buffer Object in OpenGL. /// Each value indexed from instance of this class this /// is the only handle to one Element Buffer Object. /// diff --git a/�代�/StgSharp/Graphics/GL/Buffer/FBO.cs b/�代�/StgSharp/Graphics/GL/Buffer/FBO.cs new file mode 100644 index 00000000..d16ca341 --- /dev/null +++ b/�代�/StgSharp/Graphics/GL/Buffer/FBO.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public enum FrameBufferTarget:uint + { + Read = GLconst.READ_FRAMEBUFFER, + All = GLconst.FRAMEBUFFER, + Draw = GLconst.DRAW_FRAMEBUFFER, + } + + public class FrameBuffer : BufferObjectBase + { + internal unsafe FrameBuffer(int count, IntPtr contextBinding) + { + binding = contextBinding; + _bufferHandle = new glHandleSet(count); + ((GLcontext*)binding)->glGenFramebuffers((uint)count,_bufferHandle.handle); + } + + /// + /// Bind the frame buffer object with name frame buffer to the frame buffer target specified by target. + /// will be set as default target. + /// + /// Index of object to be binded in handle set + public unsafe override void Bind(int index) + { + ((GLcontext*)binding)->glBindFramebuffer(GLconst.FRAMEBUFFER, _bufferHandle[index].Value); + } + + /// + /// Bind the frame buffer object with name frame buffer to the frame buffer target specified by target. + /// Target of this frame buffer should be set manually. + /// + /// The frame buffer target of the binding operation. + /// Index of object to be binded in handle set + public unsafe void Bind(FrameBufferTarget target, int index) + { + ((GLcontext*)binding)->glBindFramebuffer((uint)target, _bufferHandle[index].Value); + } + + protected override void Dispose(bool disposing) + { + throw new NotImplementedException(); + } + } +} diff --git a/�代�/StgSharp/Graphics/GL/GLpack.cs b/�代�/StgSharp/Graphics/GL/GLpack.cs index d79dda56..6c53b268 100644 --- a/�代�/StgSharp/Graphics/GL/GLpack.cs +++ b/�代�/StgSharp/Graphics/GL/GLpack.cs @@ -68,6 +68,18 @@ namespace StgSharp.Graphics api->glBindTexture(type, texture.Value); } + /// + /// Bind a frame buffer to a frame buffer target + /// Same function as glBindFramebuffer. + /// + /// The frame buffer target of the binding operation. + /// The handle of the frame buffer object to bind. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void BindFrameBuffer(FrameBufferTarget target, glHandle handle) + { + api->glBindFramebuffer((uint)target,handle.Value); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void BindVertexArray(glHandle handle) { diff --git a/�代�/StgSharp/Graphics/GL/ShaderEdit/Uniform.cs b/�代�/StgSharp/Graphics/GL/ShaderEdit/Uniform.cs index 2ffbbca4..2804d899 100644 --- a/�代�/StgSharp/Graphics/GL/ShaderEdit/Uniform.cs +++ b/�代�/StgSharp/Graphics/GL/ShaderEdit/Uniform.cs @@ -203,7 +203,7 @@ namespace StgSharp.Graphics public unsafe static void SetValue(Uniform uniform, Matrix44 mat) { Matrix44 temp = mat; - api->glUniformMatrix4fv(uniform.Handle.Value, 16, false, (float*)&mat); + api->glUniformMatrix4fv(uniform.id.Value, 1, false, (float*)&mat); } [MethodImpl(MethodImplOptions.AggressiveInlining)] diff --git a/�代�/StgSharp/Math/Graphic/Camera.cs b/�代�/StgSharp/Math/Graphic/Camera.cs index c19d851e..6214bcfc 100644 --- a/�代�/StgSharp/Math/Graphic/Camera.cs +++ b/�代�/StgSharp/Math/Graphic/Camera.cs @@ -43,30 +43,31 @@ namespace StgSharp.Graphic public sealed class Camera : IglConvertable { - Uniform[] convertedUniform ; + private Uniform convertedUniform ; - glHandleSet uniformHandle; internal bool _isLookAtAvailable; internal Matrix44 cameraAtt; - internal vec3d cameraCoord; + internal vec3d _target, up, cameraCoord; internal Matrix44 _lookAt; internal Matrix44 _projection; public Camera() { cameraAtt = Matrix44.Unit; - cameraCoord = Vec3d.Unit; + _target = Vec3d.Zero; + up = Vec3d.Zero; + cameraCoord = new vec3d(0,0,1); _isLookAtAvailable = false; _lookAt = Matrix44.Unit; - convertedUniform = new Uniform[2]; + _projection = new Matrix44(); } public Camera(vec3d position, vec3d target, vec3d up) : this() { - SetLookAt(position, target, up); + SetViewDirection(position, target, up); } - public Matrix44 LookAt + public Matrix44 View { get { @@ -74,11 +75,9 @@ namespace StgSharp.Graphic { return _lookAt; } - Matrix44 att = cameraAtt; - att.Colum1 = Linear.Normalize(att.Colum1); - Matrix44 coord = Matrix44.Unit; - coord.Colum3.vec -= cameraCoord.vec; - _lookAt = att.Transpose * coord; + Matrix44 move = Matrix44.Unit; + move.Colum3.vec -= cameraCoord.vec; + _lookAt = cameraAtt.Transpose * move; _isLookAtAvailable = true; return _lookAt; } @@ -102,28 +101,36 @@ namespace StgSharp.Graphic cameraCoord.Y -= distance; } - public void Perspective(Radius fovy, Vec2d size, float zNear, float zFar) + public void SetViewRange(Radius fovRadius, vec2d size, vec2d offset, (float front, float back) dephRange) { - if (fovy == Radius.Zero) - { - fovy = new Radius(0.000001f); - } - if (zFar == zNear) - { - return; - } + float + distance = _target.GetLength(), + near = distance - dephRange.front, + far = distance + dephRange.back, + offsetX = offset.X, + offsetY = offset.Y, + width = Scaler.Abs(GeometryScaler.Tan(fovRadius / 2) * near *2), + height = width * size.Y / size.X; - float rad = fovy._radius; - float aspect = size.X / size.Y; - float tanHalfFovy = Scaler.Tan(rad / 2.0f); - tanHalfFovy = tanHalfFovy==float.PositiveInfinity? float.MaxValue : tanHalfFovy; - tanHalfFovy = tanHalfFovy == float.NegativeInfinity ? float.MinValue : tanHalfFovy; + _projection.Colum0.X = 2 * near / width; + _projection.Colum1.Y = 2 * near / height; + _projection.Colum2.X = 2 * offsetX / width; + _projection.Colum2.Y = 2 * offsetY / height; + _projection.Colum2.Z = (far + near) / (near - far); + _projection.Colum2.W = -1; + _projection.Colum3.Z = 2 * near * far / (near - far); - _projection.Colum0.X = 1.0f / (aspect * tanHalfFovy); - _projection.Colum1.Y = 1.0f / tanHalfFovy; - _projection.Colum2.Z = (-(zFar + zNear)) / (zFar - zNear); - _projection.Colum3.W = -1.0f; - _projection.Colum2.Y = (-(2.0f * zFar * zNear)) / (zFar - zNear); + } + + public void Test(params vec4d[] vec) + { + Console.WriteLine(View); + Console.WriteLine(Projection); + Console.WriteLine(Projection * View); + foreach (var item in vec) + { + Console.Write($"{Projection * View * item};"); + } } public void Pitch(Radius r) @@ -142,27 +149,42 @@ namespace StgSharp.Graphic cameraAtt.Colum2.vec = partialCoord.colum1.vec; } - public void SetLookAt(vec3d position, vec3d target, vec3d up) + public void SetViewDirection(vec3d position, vec3d target, vec3d up) { - vec3d direction = target - position; + vec3d direction = position - target; + if (position == cameraCoord && this.up == up && cameraAtt.Colum2.vec == direction.vec) + { + //no difference with precious value + return; + } + if (direction.GetLength() == 0) + { + //deadlock + throw new ArgumentException(); + } + if (Vec3d.IsParallel(direction, up)) + { + throw new ArgumentException(); + } + _target = direction; + cameraCoord = position; + this.up = up; + + _isLookAtAvailable = false; Linear.Normalize(ref direction, ref up); - vec3d right = Linear.Cross(up, direction); - cameraAtt.Colum0.vec = direction.vec; + vec3d right = Linear.Normalize(Linear.Cross(up,direction)); + + cameraAtt.Colum0.vec = right.vec; cameraAtt.Colum1.vec = up.vec; - cameraAtt.Colum2.vec = right.vec; + cameraAtt.Colum2.vec = direction.vec; + } public void DisplayGLtypeDefinition() { - Console.WriteLine( - $"struct camera\n" + - "\t{{\n" + - "\tmatrix4x4 Perspective;\n" + - "\tmatrix4x4 View;\n" + - "\t}}\n" - ); + Console.WriteLine("uniform matrix4x4 cameraName;"); } /// @@ -176,48 +198,11 @@ namespace StgSharp.Graphic /// public unsafe void GainAllUniforms(ShaderProgram source, params string[] uniformName) { - GLcontext* gl = GL.api; - uniformHandle = new glHandleSet(2); - byte[] name1; - byte[] name2; - Console.WriteLine(uniformName.Length); - switch (uniformName.Length) + if (uniformName.Length!=1) { - case 2: - name1 = Encoding.UTF8.GetBytes(uniformName[0]); - name2 = Encoding.UTF8.GetBytes(uniformName[1]); - fixed (byte* namePtr = name1) - { - uniformHandle[(uint)0].Value = gl->glGetUniformLocation( - source.handle.Value, namePtr); - } - fixed (byte* namePtr = name2) - { - uniformHandle[(uint)1].Value = gl->glGetUniformLocation( - source.handle.Value, namePtr); - } - convertedUniform[0] = Uniform.FromHandle(uniformHandle[(uint)0]); - convertedUniform[1] = Uniform.FromHandle(uniformHandle[(uint)1]); - break; - case 1: - name1 = Encoding.UTF8.GetBytes($"{uniformName[0]}.Perspective"); - name2 = Encoding.UTF8.GetBytes($"{uniformName[0]}.View"); - fixed (byte* namePtr = name1) - { - uniformHandle[(uint)0].Value = gl->glGetUniformLocation( - source.handle.Value, namePtr); - } - fixed (byte* namePtr = name2) - { - uniformHandle[(uint)1].Value = gl->glGetUniformLocation( - source.handle.Value, namePtr); - } - convertedUniform[0] = Uniform.FromHandle(uniformHandle[(uint)0]); - convertedUniform[1] = Uniform.FromHandle(uniformHandle[(uint)1]); - break; - default: - throw new ArgumentException(); + throw new ArgumentException(); } + convertedUniform = source.GetUniform(uniformName[0]); } ShaderStruct IglConvertable.GetConvertedGLtype() @@ -227,16 +212,11 @@ namespace StgSharp.Graphic public unsafe void SetAllUniforms() { - GL.SetValue(convertedUniform[0], _projection); - GL.SetValue(convertedUniform[1], LookAt); + GL.SetValue(convertedUniform, Projection * View); } ~Camera() { - if (uniformHandle != null) - { - uniformHandle.Release(); - } } } diff --git a/�代�/StgSharp/Math/Linear/Matrix24.cs b/�代�/StgSharp/Math/Linear/Matrix24.cs index b7dce672..0b9ab0ea 100644 --- a/�代�/StgSharp/Math/Linear/Matrix24.cs +++ b/�代�/StgSharp/Math/Linear/Matrix24.cs @@ -44,10 +44,10 @@ namespace StgSharp.Math [FieldOffset(0)] internal Mat4 mat; [FieldOffset(4 * 4 * sizeof(float))] internal Mat2 transpose; - [FieldOffset(0)] public Vec2d Colum0; - [FieldOffset(16)] public Vec2d Colum1; - [FieldOffset(32)] public Vec2d Colum2; - [FieldOffset(48)] public Vec2d Colum3; + [FieldOffset(0)] public vec2d Colum0; + [FieldOffset(16)] public vec2d Colum1; + [FieldOffset(32)] public vec2d Colum2; + [FieldOffset(48)] public vec2d Colum3; internal Matrix24( Vector4 c0, diff --git a/�代�/StgSharp/Math/Linear/Matrix32.cs b/�代�/StgSharp/Math/Linear/Matrix32.cs index 78429b1d..4c3a1640 100644 --- a/�代�/StgSharp/Math/Linear/Matrix32.cs +++ b/�代�/StgSharp/Math/Linear/Matrix32.cs @@ -114,7 +114,7 @@ namespace StgSharp.Math } } - public vec3d VerticalVecMultiply(Vec2d vec) + public vec3d VerticalVecMultiply(vec2d vec) { return (colum0 * vec.X) + (colum1 * vec.Y); } diff --git a/�代�/StgSharp/Math/Linear/Matrix44.cs b/�代�/StgSharp/Math/Linear/Matrix44.cs index d7558340..05c4f484 100644 --- a/�代�/StgSharp/Math/Linear/Matrix44.cs +++ b/�代�/StgSharp/Math/Linear/Matrix44.cs @@ -42,7 +42,7 @@ namespace StgSharp.Math [StructLayout(LayoutKind.Explicit, Size = (2 * 16 * sizeof(float)) + sizeof(bool), Pack = 16)] - public unsafe struct Matrix44 : IEquatable + public unsafe struct Matrix44 : IEquatable, IMat { [FieldOffset(2 * 64 * sizeof(float))] internal bool isTransposed; @@ -152,6 +152,36 @@ namespace StgSharp.Math 0, 0, 0, 1 ); + public static Matrix44 XNegativeUnit + => new Matrix44( + -1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + ); + public static Matrix44 YNegativeUnit + => new Matrix44( + 1, 0, 0, 0, + 0, -1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + ); + + public static Matrix44 ZNegativeUnit + => new Matrix44( + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, -1, 0, + 0, 0, 0, 1 + ); + public static Matrix44 WNegativeUnit + => new Matrix44( + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, -1 + ); + [MethodImpl(MethodImplOptions.AggressiveInlining)] public unsafe float Det() { @@ -295,7 +325,6 @@ namespace StgSharp.Math Vector4.Dot(left.transpose.colum3, right.mat.colum1), Vector4.Dot(left.transpose.colum3, right.mat.colum2), Vector4.Dot(left.transpose.colum3, right.mat.colum3) - ); } diff --git a/�代�/StgSharp/Math/Linear/Vector.Cross.cs b/�代�/StgSharp/Math/Linear/Vector.Cross.cs index 673f19ea..e337fe8d 100644 --- a/�代�/StgSharp/Math/Linear/Vector.Cross.cs +++ b/�代�/StgSharp/Math/Linear/Vector.Cross.cs @@ -33,7 +33,7 @@ namespace StgSharp.Math public static unsafe partial class Linear { - public static float Cross(Vec2d vec1, Vec2d vec2) + public static float Cross(vec2d vec1, vec2d vec2) { return (vec1.X * vec2.Y) - (vec1.Y * vec2.X); } diff --git a/�代�/StgSharp/Math/Linear/Vector.GetAngle.cs b/�代�/StgSharp/Math/Linear/Vector.GetAngle.cs index aec170ef..c135e3cb 100644 --- a/�代�/StgSharp/Math/Linear/Vector.GetAngle.cs +++ b/�代�/StgSharp/Math/Linear/Vector.GetAngle.cs @@ -33,7 +33,7 @@ namespace StgSharp.Math public static unsafe partial class Linear { - public static float GetAngle(Vec2d vec1, Vec2d vec2) + public static float GetAngle(vec2d vec1, vec2d vec2) { return Scaler.ACos(1 //vec1.multiple(vec2) diff --git a/�代�/StgSharp/Math/Linear/Vector.GetLength.cs b/�代�/StgSharp/Math/Linear/Vector.GetLength.cs index 24a6a72d..e4707b73 100644 --- a/�代�/StgSharp/Math/Linear/Vector.GetLength.cs +++ b/�代�/StgSharp/Math/Linear/Vector.GetLength.cs @@ -35,19 +35,12 @@ namespace StgSharp.Math public static float GetLength(this vec3d vec) { - return Scaler.Sqrt( - (vec.X * vec.X) + - (vec.Y * vec.Y) + - (vec.Z * vec.Z) - ); + return Scaler.Sqrt(vec.Dot(vec)); } - public static float GetLength(this Vec2d vec) + public static float GetLength(this vec2d vec) { - return Scaler.Sqrt( - (vec.X * vec.X) + - (vec.Y * vec.Y) - ); + return Scaler.Sqrt(vec.Dot(vec)); } } diff --git a/�代�/StgSharp/Math/Linear/Vector.Normalize.cs b/�代�/StgSharp/Math/Linear/Vector.Normalize.cs index 2f72fd22..03b57233 100644 --- a/�代�/StgSharp/Math/Linear/Vector.Normalize.cs +++ b/�代�/StgSharp/Math/Linear/Vector.Normalize.cs @@ -43,18 +43,16 @@ namespace StgSharp.Math public static unsafe void Normalize(ref vec3d source, ref vec3d target) { - Vector4 s = source.vec; - Vector4 t = target.vec; - - s = Vector4.Normalize(s); - - float dotProduct = Vector4.Dot(s, t); - Vector4 projection = Vector4.Multiply(s, t); + Vector3 s = source.v; + Vector3 t = target.v; + s = Vector3.Normalize(s); + Vector3 projection = Vector3.Dot(t, s) / Vector3.Dot(s, s) * s; t -= projection; + t = Vector3.Normalize(t); - source.vec = s; - target.vec = t; + source.v = s; + target.v = t; } public static vec4d Normalize(vec4d vec) diff --git a/�代�/StgSharp/Math/Linear/Vector.VectorTransform.cs b/�代�/StgSharp/Math/Linear/Vector.VectorTransform.cs index e3ed939f..779f22c8 100644 --- a/�代�/StgSharp/Math/Linear/Vector.VectorTransform.cs +++ b/�代�/StgSharp/Math/Linear/Vector.VectorTransform.cs @@ -36,25 +36,25 @@ namespace StgSharp.Math public static unsafe partial class VectorCalc { - public static Vec2d To2D(vec3d vec, CordinatePlain plain) + public static vec2d To2D(vec3d vec, CordinatePlain plain) { switch (plain) { case CordinatePlain.XY: - return new Vec2d(vec.X, vec.Y); + return new vec2d(vec.X, vec.Y); break; case CordinatePlain.YZ: - return new Vec2d(vec.Y, vec.Z); + return new vec2d(vec.Y, vec.Z); break; case CordinatePlain.XZ: - return new Vec2d(vec.X, vec.Z); + return new vec2d(vec.X, vec.Z); break; default: - return default(Vec2d); + return default(vec2d); break; } } - public static vec3d To3D(Vec2d vec) + public static vec3d To3D(vec2d vec) { return new vec3d(vec.X, vec.Y, 0.0f); } diff --git a/�代�/StgSharp/Math/Linear/vec2d.cs b/�代�/StgSharp/Math/Linear/vec2d.cs index 1a6d4dc5..b17ce813 100644 --- a/�代�/StgSharp/Math/Linear/vec2d.cs +++ b/�代�/StgSharp/Math/Linear/vec2d.cs @@ -39,7 +39,7 @@ namespace StgSharp.Math /// Vec2Ds in StgSharp are defaultly usaed as colum vector. /// [StructLayout(LayoutKind.Explicit, Size = 16, Pack = 16)] - public struct Vec2d + public struct vec2d { [FieldOffset(0)] @@ -55,56 +55,74 @@ namespace StgSharp.Math [FieldOffset(4)] public float Y; - internal Vec2d(Vector2 vec) + internal vec2d(Vector2 vec) { v = vec; } - public Vec2d(float x, float y) + public vec2d(float x, float y) { v = new Vector2(x, y); } - public static Vec2d Unit => new Vec2d(1, 1); - public static Vec2d Zero => new Vec2d(0, 0); - - public float Cross(Vec2d right) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public float Cross(vec2d right) { return (X * right.Y) - (Y * right.X); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec2d operator -(Vec2d left, Vec2d right) + public float Dot(vec2d vec) { - return new Vec2d(left.v - right.v); + return Vector2.Dot(v, vec.v); } - public static bool operator !=(Vec2d left, Vec2d right) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static vec2d operator -(vec2d left, vec2d right) + { + return new vec2d(left.v - right.v); + } + + public static bool operator !=(vec2d left, vec2d right) { return !(left == right); } - public static Vec2d operator *(Vec2d vec, float value) + public static vec2d operator *(vec2d vec, float value) { - return new Vec2d(vec.v * value); + return new vec2d(vec.v * value); } - public static Vec2d operator /(Vec2d vec, float value) + public static vec2d operator /(vec2d vec, float value) { - return new Vec2d(vec.v / value); + return new vec2d(vec.v / value); } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vec2d operator +(Vec2d left, Vec2d right) + public static vec2d operator +(vec2d left, vec2d right) { - return new Vec2d(left.v + right.v); + return new vec2d(left.v + right.v); } - public static bool operator ==(Vec2d left, Vec2d right) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator ==(vec2d left, vec2d right) { return left.v == right.v; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static implicit operator vec2d((float, float) tuple) + { + return new vec2d(tuple.Item1, tuple.Item2); + } + } + + public static class Vec2d + { + + public static vec2d Unit => new vec2d(1, 1); + + public static vec2d Zero => new vec2d(0, 0); } } diff --git a/�代�/StgSharp/Math/Linear/vec3d.cs b/�代�/StgSharp/Math/Linear/vec3d.cs index ae762b27..9775bae6 100644 --- a/�代�/StgSharp/Math/Linear/vec3d.cs +++ b/�代�/StgSharp/Math/Linear/vec3d.cs @@ -88,10 +88,7 @@ namespace StgSharp.Math [MethodImpl(MethodImplOptions.AggressiveInlining)] public float Dot(vec3d right) { - Vector4 vector4 = this.vec * right.vec; - return vector4.X - + vector4.Y - + vector4.Z; + return Vector3.Dot(v,right.v); } public bool Equals(vec3d other) @@ -200,8 +197,23 @@ namespace StgSharp.Math public static class Vec3d { - public static vec3d Unit => new vec3d(1, 1, 1); + public static bool IsParallel(vec3d left, vec3d right) + { + return Cross(left,right) == Zero; + } + + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static vec3d Cross(vec3d left, vec3d right) + { + return Linear.Cross(left, right); + } + + public static vec3d One => new vec3d(1, 1, 1); public static vec3d Zero => new vec3d(0, 0, 0); + public static vec3d UnitZ => new vec3d(0, 0, 1); + public static vec3d UnitX => new vec3d(1, 0, 0); + public static vec3d UnitY => new vec3d(0, 1, 0); } } diff --git a/�代�/StgSharp/Math/Linear/vec4d.cs b/�代�/StgSharp/Math/Linear/vec4d.cs index dab8cdfe..7e572307 100644 --- a/�代�/StgSharp/Math/Linear/vec4d.cs +++ b/�代�/StgSharp/Math/Linear/vec4d.cs @@ -34,6 +34,7 @@ using StgSharp.Math; using System; using System.Data.Common; using System.Numerics; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace StgSharp.Math @@ -58,6 +59,11 @@ namespace StgSharp.Math [FieldOffset(8)] public float Z; [FieldOffset(12)] public float W; + public override string ToString() + { + return vec.ToString(); + } + public vec4d(float x, float y, float z, float w) { vec = new Vector4(x, y, z, w); @@ -68,5 +74,17 @@ namespace StgSharp.Math return vec.reg; } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static vec4d operator *(Matrix44 mat, vec4d vec) + { + mat.InternalTranspose(); + return new vec4d( + Vector4.Dot( mat.transpose.colum0,vec.vec), + Vector4.Dot( mat.transpose.colum1, vec.vec), + Vector4.Dot( mat.transpose.colum2, vec.vec), + Vector4.Dot( mat.transpose.colum3, vec.vec) + ); + } + } } \ No newline at end of file diff --git a/�代�/StgSharp/bin/x64/Debug/netstandard2.1/StgSharp.dll b/�代�/StgSharp/bin/x64/Debug/netstandard2.1/StgSharp.dll index 85053ed32885b7462206a1534f6215543d7322f2..731ea064aabecc73c5750de8b2f6abebddc5a4fc 100644 GIT binary patch literal 719872 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

    Uz=R-hj|F-yl2^xli|AWkcMN6nARRDfD810Lv4K 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

    _Pp`ZkD9uR*4z6 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�CyylPF#WsA2cOsa3UB7Ki6pY_K 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

    t(H(jvIICb~`EO~VGQz(<@w3Er~D>haO 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

    B}w$9Vs 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%0AS<+@ug5)1FSDmz8x;0)tsDy3wq(reYywW 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�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 J&HtO>e*tll;@bcK diff --git a/�代�/StgSharp/bin/x64/Debug/netstandard2.1/StgSharp.xml b/�代�/StgSharp/bin/x64/Debug/netstandard2.1/StgSharp.xml index 13be4ca9..e3a0fa47 100644 --- a/�代�/StgSharp/bin/x64/Debug/netstandard2.1/StgSharp.xml +++ b/�代�/StgSharp/bin/x64/Debug/netstandard2.1/StgSharp.xml @@ -64,12 +64,12 @@ Set all necessary metadata to current form instance - +

    Resize the current form - A (width,height) representing the new size of current form + A (width,height) representing the new size of current form @@ -79,15 +79,15 @@ New width of the window New height of the window - + Set the size limit of current form - Minimun size of current form. In form of a of (width,height) + Minimun size of current form. In form of a of (width,height) - Maximum size of current form. In form of a of (width,height) + Maximum size of current form. In form of a of (width,height) @@ -412,7 +412,7 @@ An IEEE-754 double precision floating-point value, clamped to the range [0,1]. - + A two dimension vector defined by two elements. Vec2Ds in StgSharp are defaultly usaed as colum vector. diff --git a/æº�代ç �/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.deps.json b/æº�代ç �/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.deps.json index 78a86d98..94d9af4b 100644 --- a/æº�代ç �/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.deps.json +++ b/æº�代ç �/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.deps.json @@ -9,21 +9,13 @@ ".NETStandard,Version=v2.1/": { "StgSharp/1.0.0": { "dependencies": { - "Microsoft.Bcl.HashCode": "1.1.1", - "Microsoft.CSharp": "4.7.0" + "Microsoft.CSharp": "4.7.0", + "Microsoft.Windows.CsWin32": "0.3.49-beta" }, "runtime": { "StgSharp.dll": {} } }, - "Microsoft.Bcl.HashCode/1.1.1": { - "runtime": { - "lib/netstandard2.1/Microsoft.Bcl.HashCode.dll": { - "assemblyVersion": "1.0.0.0", - "fileVersion": "4.700.20.56604" - } - } - }, "Microsoft.CSharp/4.7.0": { "runtime": { "lib/netstandard2.0/Microsoft.CSharp.dll": { @@ -31,6 +23,59 @@ "fileVersion": "4.700.19.56404" } } + }, + "Microsoft.Windows.CsWin32/0.3.49-beta": { + "dependencies": { + "Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha", + "Microsoft.Windows.SDK.Win32Metadata": "55.0.45-preview", + "Microsoft.Windows.WDK.Win32Metadata": "0.9.9-experimental", + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "Microsoft.Windows.SDK.Win32Docs/0.1.42-alpha": {}, + "Microsoft.Windows.SDK.Win32Metadata/55.0.45-preview": {}, + "Microsoft.Windows.WDK.Win32Metadata/0.9.9-experimental": { + "dependencies": { + "Microsoft.Windows.SDK.Win32Metadata": "55.0.45-preview" + } + }, + "System.Buffers/4.5.1": { + "runtime": { + "lib/netstandard2.0/System.Buffers.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.28619.1" + } + } + }, + "System.Memory/4.5.5": { + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "runtime": { + "lib/netstandard2.0/System.Memory.dll": { + "assemblyVersion": "4.0.1.2", + "fileVersion": "4.6.31308.1" + } + } + }, + "System.Numerics.Vectors/4.4.0": { + "runtime": { + "lib/netstandard2.0/System.Numerics.Vectors.dll": { + "assemblyVersion": "4.1.3.0", + "fileVersion": "4.6.25519.3" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } } } }, @@ -40,19 +85,68 @@ "serviceable": false, "sha512": "" }, - "Microsoft.Bcl.HashCode/1.1.1": { - "type": "package", - "serviceable": true, - "sha512": "sha512-MalY0Y/uM/LjXtHfX/26l2VtN4LDNZ2OE3aumNOHDLsT4fNYy2hiHXI4CXCqKpNUNm7iJ2brrc4J89UdaL56FA==", - "path": "microsoft.bcl.hashcode/1.1.1", - "hashPath": "microsoft.bcl.hashcode.1.1.1.nupkg.sha512" - }, "Microsoft.CSharp/4.7.0": { "type": "package", "serviceable": true, "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", "path": "microsoft.csharp/4.7.0", "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.Windows.CsWin32/0.3.49-beta": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iAXplVDKESFyLz/MShuVYVx62YFvFePpq3qrzREl8KScQqG6Z2kV7r9UJTjQS1g+hfy3V+e4m1x9lsu24YNSg==", + "path": "microsoft.windows.cswin32/0.3.49-beta", + "hashPath": "microsoft.windows.cswin32.0.3.49-beta.nupkg.sha512" + }, + "Microsoft.Windows.SDK.Win32Docs/0.1.42-alpha": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Z/9po23gUA9aoukirh2ItMU2ZS9++Js9Gdds9fu5yuMojDrmArvY2y+tq9985tR3cxFxpZO1O35Wjfo0khj5HA==", + "path": "microsoft.windows.sdk.win32docs/0.1.42-alpha", + "hashPath": "microsoft.windows.sdk.win32docs.0.1.42-alpha.nupkg.sha512" + }, + "Microsoft.Windows.SDK.Win32Metadata/55.0.45-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2i1kVIk8rMuMCYtoeYeWbmCRLqNgb63Berac3Gv+J/pjp0oucopasKgLQNslryhsgBl4xex9ENhJX2MXEW5vdA==", + "path": "microsoft.windows.sdk.win32metadata/55.0.45-preview", + "hashPath": "microsoft.windows.sdk.win32metadata.55.0.45-preview.nupkg.sha512" + }, + "Microsoft.Windows.WDK.Win32Metadata/0.9.9-experimental": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cncPlxLqR25mFOuvpxZPgXgJqRmXyV5eTULj/9w8AQvO/c1xJDEapohRsWkYaia7hCR/EwEzBHr7RU9u93T03w==", + "path": "microsoft.windows.wdk.win32metadata/0.9.9-experimental", + "hashPath": "microsoft.windows.wdk.win32metadata.0.9.9-experimental.nupkg.sha512" + }, + "System.Buffers/4.5.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==", + "path": "system.buffers/4.5.1", + "hashPath": "system.buffers.4.5.1.nupkg.sha512" + }, + "System.Memory/4.5.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "path": "system.memory/4.5.5", + "hashPath": "system.memory.4.5.5.nupkg.sha512" + }, + "System.Numerics.Vectors/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UiLzLW+Lw6HLed1Hcg+8jSRttrbuXv7DANVj0DkL9g6EnnzbL75EB7EWsw5uRbhxd/4YdG8li5XizGWepmG3PQ==", + "path": "system.numerics.vectors/4.4.0", + "hashPath": "system.numerics.vectors.4.4.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" } } } \ No newline at end of file diff --git a/æº�代ç �/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.dll b/æº�代ç �/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.dll index 8ea4f7c7a0cd594dd228d9d9c5d73e226a12ba14..3f49618714762c09edffe3f895a86edb2901dde2 100644 GIT binary patch literal 717312 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ΜO{smkN^bZoj?LpQ3v#rZt*g@%_;Tr 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
    &$cO_^1{t
    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
    u!IBv-^s(tIv1u+huHAZCwOfe;m#;f46TR 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
    #t9*|Mkn=qayUu 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%0Ddp1;0+o@pQl*05utWff;S7Z#%?DDP?CaV+W$ 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 - Add a pool to timeline controller, and return the instance of the pool. - - - - + Get the status of a certain key on the keyboard. @@ -22,25 +16,61 @@ Function handler to load an opengl function by serching its name. - the name of the Opengl function + the name of the Opengl function An intptr value representing the pointer to the function - + + + + + + Height of this form, represent in - + - Constructor of a Form, creats an instance of a form and - initilize all the customizing operations. + Width of this form, represent in + + + + + Width of this form, represent in + + + + + Necessary operation to init graphic elements this form. + + OpenGL library binded to current form. + + + + Behaviour of current form when in a frame cycle. - + Init an OpenGl context if current form has not been binded to any context. and set the context binded to + current form as current OpenGL context. - + + Something goes wrong and StgSharp fails in creating a new OpenGL context. + + + + + Set all necessary metadata to current form instance + + + + + Resize the current form + + + A (width,height) representing the new size of current form + @@ -49,23 +79,6 @@ New width of the window New height of the window - - - Resize the current form - - - A (width,height) representing the new size of current form - - - - - Set the size limit of current form - - Minimum width of current form - Minimum height of current form - Maximum width of curent form - Maximum height of current form - Set the size limit of current form @@ -77,205 +90,174 @@ Maximum size of current form. In form of a of (width,height) - + - + Set the size limit of current form - - - + Minimum width of current form + Minimum height of current form + Maximum width of current form + Maximum height of current form - + - + Init this form and render it on screen, and respond with operation - + - + Create a set of . - - - - - - - Call apiClearColor in OpenGL - specifies the red, green, blue, and alpha values used by apiClear to clear the color buffers. - Values specified by apiClearColor are clamped to the range [0,1] - - Specify the red values used when the color buffers are cleared. - Specify the red values used when the color buffers are cleared. - Specify the red values used when the color buffers are cleared. - Specify the red values used when the color buffers are cleared. - - - - Bind the indexed buffer object to certain type of buffer - - - - - - - Clear buffers to preset values - - - - - - Conpile the provided shader code in string form. - - A string represent the shader's code - An enum represent the type of the shader to - conpile, including vertex shader and fragment shader. - An uint value as the only mark of conpiled shader - - - - Creates a form and its associated - - Required width - Required width - Tittle of the window - - - The instance of created form - - - - - sets the framebuffer resize callback of the specified , - which is called when the framebuffer of the specified is resized. - - The only signiture stands for the to be controlled - Method hadler - - - - Set how a shader parameter read data from a VBO. - - Serial number of the parameter - Amount of data each elements contains - Type of data read by shader - - Pixels stride of each sets of data - - - - - Set data value to a float , - all types of parameters are float. - - The target - The value to be set - - - - Set data value to a int , - all types of parameters are int. - - The target - The value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - The first value to be set - The second value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - The first value to be set - The second value to be set - The third value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - The first value to be set - The second value to be set - The third value to be set - The forth value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - A packing four parameters of the uniform - - - - Set data value to a float , - all types of parameters are . - - The target - A value of the uniform - - - - Create an instance of program - - New instance of instance. - - - - A value represent this shader. - - - - - Inti a shader with no program attached. - - - - - Compile the vertex shader to be attached to this shader. - - GLSL code of vertex shader. - - - - Compile the fragment shader to be attached to this shader. - - GLSL code of fragment shader. - - - - Link the shader to current context. - - - - - Get a uniform form current shader, - the value type of the uniform should be provided. - - + Amount of EBO to be created. - + - Let the current context use this shader. + Create a sets of + + Amount of textures to be crated. + + + + + Create a set of . + + Amount of VAO to be crated. + + + + + Create aset of . + + Amount of Object to be created. + + + + + Create an instance of program + + New instance of instance. + + + + Mark that a method in a + should be called when rendering. - + + + Priority level of a render activity. + + + + + One level higher than . + + + + + Two level higher than . + + + + + Three level higher than . + + + + + One level lower than . + + + + + Two level lower than . + + + + + Three level lower than . + + + + + Highest priority, in , it is . + + + + + Default priority, usually is in this priority. + + + + + Lowest priority, in , it is . + + + + + Interface of all kinds OpenGL buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + A collecion of handle to Element Buffer Object in OpenGL. + Each value indexed from instance of this class this + is the only handle to one Element Buffer Object. + + + + + + + + + + + + Set data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these data, defined by + + + + Set data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of data to write in + How OpenGL use these data, defined by + + + + + + + Load all aupportable OpenGL APIs and bind them to given context. The used as current OpenGL context - A delegate that can get o + A delegate to get address of OprnGL api @@ -284,9 +266,98 @@ Name of the OpenGL api The funtion pointer of the api in form of - + - Tick counter count the frames passed since the program start. + A handle to an OpenGL object, + must be indexed from a . + Direct call will cause + + + + + A handle to an OpenGL object. + + + + + Release all resource in this handle. + This will release all resource in this . + This will be not usable. + + + + + + + + + + + + + + + + + + + + + + + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + Init a program with no shader attached. + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Link the shader to current context. + + + + + Let the current context use this shader. @@ -309,6 +380,104 @@ Y position of an enemy entity + + + Init an instance of OpenGL program, + This method should be called before any other StgSharp api. + + + + + Version of current StgSharp platform. + Main version represent in hundred's digit, + and sub version represent in ten's digit. + + + + + Write a log message to log file, and mark the level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + OpenGL numeric type. + An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. + An IEEE-754 double precision floating-point value, clamped to the range [0,1]. + + + + + A two dimension vector defined by two elements. + Vec2Ds in StgSharp are defaultly usaed as colum vector. + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Part of a circle. All points on a arc has the same distance to their center. + + + + + A collection of all point on the same plain and has the same distance to a point + + The origin of this coordinate. @@ -338,7 +507,24 @@ The game tick represent time passed by A 3d vector representing movement - + + + Move begin side of a line. + It is recommended to override this function rather than + loading an with same function. + + Time passed since current line was created. + + + + Move end side of a line. + It is recommended to override this function rather than + loading an with same function. + + Time passed since current line was created. + + + Move the third vertix. this is a useless method for Parallelograms. @@ -346,7 +532,7 @@ Geometry overdefined - + Move the third vertix. This method is useless for Parallelograms. @@ -359,6 +545,23 @@ 平�几何体。包�三角形,对称四边形,自由多边形等。最多�由16个点�数定义。 + + + Tick time this geometry eas crested + + + + + Get all sides of this . + + A array contains all straight s of current geometry item. + + + + Get a flat cincide with current geometry. + + + Update the coordinate of the point. If this is a moving point, @@ -379,61 +582,1284 @@ A square - + - Add an item to the tail of linked list. + A linear data structure with dynamic length. + It contains a of , + each is twice longer than the former one. - The item ready to add to the list + - + - A two dimension vector defined by two elements. - Vec2Ds in StgSharp are defaultly usaed as colum vector. + Init a with a certain amount of elements prepared. + + Amount of elements to be prepared. + + + + Create a new instance of , + and fill the begining ones of elemtns as given instance. + + Amount of beginning elements to be filled + + + + + Length of this - + - Reurns the value of ArcSin(x) + A pair of value - The sine value of the angle - + + + + The first value. + + + + + The second value. + + + + + A value. + The lower byte is , + and higher byte is . + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. + Length of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length of a single time span is defined in microseconds. + + + + + + + Time source provider provided in internal framework. + + + + + The method this will call every time a new time span started. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + Name of all related uniforms. + If you fallow form from + - - - Get the value of E ^ x; - - - + + The COLORREF value is used to specify an RGB color. + + When specifying an explicit [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) color, the **COLORREF** value has the following hexadecimal form: `0x00bbggrr` The low-order byte contains a value for the relative intensity of red; the second byte contains a value for green; and the third byte contains a value for blue. The high-order byte must be zero. The maximum value for a single byte is 0xFF. To create a **COLORREF** color value, use the [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) macro. To extract the individual values for the red, green, and blue components of a color value, use the [**GetRValue**](/windows/desktop/api/Wingdi/nf-wingdi-getrvalue), [GetGValue](/windows/desktop/api/Wingdi/nf-wingdi-getgvalue), and [GetBValue](/windows/desktop/api/Wingdi/nf-wingdi-getbvalue) macros, respectively. + Read more on docs.microsoft.com. + - + - + A pointer to a null-terminated, constant, ANSI character string. - + + + + A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. + + + + + Gets the number of characters up to the first null character (exclusive). + + + + + Returns a with a copy of this character array, decoding as UTF-8. + + A , or if is . + + + + Returns a span of the characters in this string, up to the first null character (exclusive). + + + + + A pointer to a null-terminated, constant character string. + + + + + A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. + + + + + Gets the number of characters up to the first null character (exclusive). + + + + + Returns a with a copy of this character array, up to the first null character (exclusive). + + A , or if is . + + + + Returns a span of the characters in this string, up to the first null character (exclusive). + + + + The RECT structure defines a rectangle by the coordinates of its upper-left and lower-right corners. + The RECT structure is identical to the RECTL structure. + + + Specifies the x-coordinate of the upper-left corner of the rectangle. + + + Specifies the y-coordinate of the upper-left corner of the rectangle. + + + Specifies the x-coordinate of the lower-right corner of the rectangle. + + + Specifies the y-coordinate of the lower-right corner of the rectangle. + + + Contains message information from a thread's message queue. + + Learn more about this API from docs.microsoft.com. + + + + + Type: HWND A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message. + Read more on docs.microsoft.com. + + + + + Type: UINT The message identifier. Applications can only use the low word; the high word is reserved by the system. + Read more on docs.microsoft.com. + + + + + Type: WPARAM Additional information about the message. The exact meaning depends on the value of the message member. + Read more on docs.microsoft.com. + + + + + Type: LPARAM Additional information about the message. The exact meaning depends on the value of the message member. + Read more on docs.microsoft.com. + + + + + Type: DWORD The time at which the message was posted. + Read more on docs.microsoft.com. + + + + + Type: POINT The cursor position, in screen coordinates, when the message was posted. + Read more on docs.microsoft.com. + + + + Contains the window class attributes that are registered by the RegisterClass function. (ANSI) + + > [!NOTE] > The winuser.h header defines WNDCLASS as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + + Type: UINT The class style(s). This member can be any combination of the Class Styles. + Read more on docs.microsoft.com. + + + + + Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. + Read more on docs.microsoft.com. + + + + + Type: HINSTANCE A handle to the instance that contains the window procedure for the class. + Read more on docs.microsoft.com. + + + + + Type: HICON A handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon. + Read more on docs.microsoft.com. + + + + + Type: HCURSOR A handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application's window. + Read more on docs.microsoft.com. + + + + + Type: HBRUSH A handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR The resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the MAKEINTRESOURCE macro. If this member is NULL, windows belonging to this class have no default menu. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpszClassName; the high-order word must be zero. + If lpszClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. The maximum length for lpszClassName is 256. If lpszClassName is greater than the maximum length, the RegisterClass function will fail. + Read more on docs.microsoft.com. + + + + Contains the window class attributes that are registered by the RegisterClass function. (Unicode) + + > [!NOTE] > The winuser.h header defines WNDCLASS as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + + Type: UINT The class style(s). This member can be any combination of the Class Styles. + Read more on docs.microsoft.com. + + + + + Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. + Read more on docs.microsoft.com. + + + + + Type: HINSTANCE A handle to the instance that contains the window procedure for the class. + Read more on docs.microsoft.com. + + + + + Type: HICON A handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon. + Read more on docs.microsoft.com. + + + + + Type: HCURSOR A handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application's window. + Read more on docs.microsoft.com. + + + + + Type: HBRUSH A handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR The resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the MAKEINTRESOURCE macro. If this member is NULL, windows belonging to this class have no default menu. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpszClassName; the high-order word must be zero. + If lpszClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. The maximum length for lpszClassName is 256. If lpszClassName is greater than the maximum length, the RegisterClass function will fail. + Read more on docs.microsoft.com. + + + + + Represents a Win32 handle that can be closed with . + + + + + Represents a Win32 handle that can be closed with . + + + + The GLYPHMETRICSFLOAT structure contains information about the placement and orientation of a glyph in a character cell. + The values of GLYPHMETRICSFLOAT are specified as notional units. + + + Specifies the width of the smallest rectangle (the glyph's black box) that completely encloses the glyph. + + + Specifies the height of the smallest rectangle (the glyph's black box) that completely encloses the glyph. + + + Specifies the x and y coordinates of the upper-left corner of the smallest rectangle that completely encloses the glyph. + + + Specifies the horizontal distance from the origin of the current character cell to the origin of the next character cell. + + + Specifies the vertical distance from the origin of the current character cell to the origin of the next character cell. + + + The LAYERPLANEDESCRIPTOR structure describes the pixel format of a drawing surface. + Please notice, as documented above, that certain layer plane properties are not supported in the current implementation. The implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers that enhance parts of OpenGL may support some layer plane properties not supported by the generic implementation. + + + Specifies the size of this data structure. Set this value to sizeof(LAYERPLANEDESCRIPTOR). + + + Specifies the version of this data structure. Set this value to 1. + + + + A set of bit flags that specify properties of the layer plane. The properties are generally not mutually exclusive; any combination of bit flags can be set, with the exceptions noted. The following bit flag constants are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Specifies the type of pixel data. The following types are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color-index buffer. + + + Specifies the number of red bitplanes in each RGBA color buffer. + + + Specifies the shift count for red bitplanes in each RGBA color buffer. + + + Specifies the number of green bitplanes in each RGBA color buffer. + + + Specifies the shift count for green bitplanes in each RGBA color buffer. + + + Specifies the number of blue bitplanes in each RGBA color buffer. + + + Specifies the shift count for blue bitplanes in each RGBA color buffer. + + + Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the total number of bitplanes in the accumulation buffer. + + + Specifies the number of red bitplanes in the accumulation buffer. + + + Specifies the number of green bitplanes in the accumulation buffer. + + + Specifies the number of blue bitplanes in the accumulation buffer. + + + Specifies the number of alpha bitplanes in the accumulation buffer. + + + Specifies the depth of the depth (z-axis) buffer. + + + Specifies the depth of the stencil buffer. + + + Specifies the number of auxiliary buffers. Auxiliary buffers are not supported. + + + + + + Not used. Must be zero. + + + When the LPD_TRANSPARENT flag is set, specifies the transparent color or index value. Typically the value is zero. + + + The PIXELFORMATDESCRIPTOR structure describes the pixel format of a drawing surface. + Please notice carefully, as documented above, that certain pixel format properties are not supported in the current generic implementation. The generic implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers may enhance parts of OpenGL, and may support some pixel format properties not supported by the generic implementation. + + + Specifies the size of this data structure. This value should be set to sizeof(PIXELFORMATDESCRIPTOR). + + + Specifies the version of this data structure. This value should be set to 1. + + + + A set of bit flags that specify properties of the pixel buffer. The properties are generally not mutually exclusive; you can set any combination of bit flags, with the exceptions noted. The following bit flag constants are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Specifies the type of pixel data. The following types are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color-index buffer. + + + Specifies the number of red bitplanes in each RGBA color buffer. + + + Specifies the shift count for red bitplanes in each RGBA color buffer. + + + Specifies the number of green bitplanes in each RGBA color buffer. + + + Specifies the shift count for green bitplanes in each RGBA color buffer. + + + Specifies the number of blue bitplanes in each RGBA color buffer. + + + Specifies the shift count for blue bitplanes in each RGBA color buffer. + + + Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the total number of bitplanes in the accumulation buffer. + + + Specifies the number of red bitplanes in the accumulation buffer. + + + Specifies the number of green bitplanes in the accumulation buffer. + + + Specifies the number of blue bitplanes in the accumulation buffer. + + + Specifies the number of alpha bitplanes in the accumulation buffer. + + + Specifies the depth of the depth (z-axis) buffer. + + + Specifies the depth of the stencil buffer. + + + Specifies the number of auxiliary buffers. Auxiliary buffers are not supported. + + + Specifies the number of overlay and underlay planes. Bits 0 through 3 specify up to 15 overlay planes and bits 4 through 7 specify up to 15 underlay planes. + + + Ignored. Earlier implementations of OpenGL used this member, but it is no longer used. + + + Specifies the transparent color or index of an underlay plane. When the pixel type is RGBA, dwVisibleMask is a transparent RGB color value. When the pixel type is color index, it is a transparent index value. + + + Ignored. Earlier implementations of OpenGL used this member, but it is no longer used. + + + The POINTFLOAT structure contains the x and y coordinates of a point. + + Learn more about this API from docs.microsoft.com. + + + + Specifies the horizontal (x) coordinate of a point. + + + Specifies the vertical (y) coordinate of a point. + + + + Contains extern methods from "GDI32.dll". + + + Contains extern methods from "KERNEL32.dll". + + + Contains extern methods from "OPENGL32.dll". + + + Contains extern methods from "USER32.dll". + + + + The DeleteObject function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object. After the object is deleted, the specified handle is no longer valid. + A handle to a logical pen, brush, font, bitmap, region, or palette. - Returns the value of ln(x). + If the function succeeds, the return value is nonzero. If the specified handle is not valid or is currently selected into a DC, the return value is zero. + + Do not delete a drawing object (pen or brush) while it is still selected into a DC. When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently. + Read more on docs.microsoft.com. + - - - calculate the value of x^y - - - - Returns the value of x^y + + - - - returns a random float number between 0 and 1. - - + + The ChoosePixelFormat function attempts to match an appropriate pixel format supported by a device context to a given pixel format specification. + Specifies the device context that the function examines to determine the best match for the pixel format descriptor pointed to by ppfd. + + Pointer to a PIXELFORMATDESCRIPTOR structure that specifies the requested pixel format. In this context, the members of the PIXELFORMATDESCRIPTOR structure that ppfd points to are used as follows: + This doc was truncated. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a pixel format index (one-based) that is the closest match to the given pixel format descriptor. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + You must ensure that the pixel format matched by the ChoosePixelFormat function satisfies your requirements. For example, if you request a pixel format with a 24-bit RGB color buffer but the device context offers only 8-bit RGB color buffers, the function returns a pixel format with an 8-bit RGB color buffer. - + + The DescribePixelFormat function obtains information about the pixel format identified by iPixelFormat of the device associated with hdc. The function sets the members of the PIXELFORMATDESCRIPTOR structure pointed to by ppfd with that pixel format data. + Specifies the device context. + Index that specifies the pixel format. The pixel formats that a device context supports are identified by positive one-based integer indexes. + The size, in bytes, of the structure pointed to by ppfd. The DescribePixelFormat function stores no more than nBytes bytes of data to that structure. Set this value to sizeof(PIXELFORMATDESCRIPTOR). + Pointer to a PIXELFORMATDESCRIPTOR structure whose members the function sets with pixel format data. The function stores the number of bytes copied to the structure in the structure's nSize member. If, upon entry, ppfd is NULL, the function writes no data to the structure. This is useful when you only want to obtain the maximum pixel format index of a device context. + + If the function succeeds, the return value is the maximum pixel format index of the device context. In addition, the function sets the members of the PIXELFORMATDESCRIPTOR structure pointed to by ppfd according to the specified pixel format. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Learn more about this API from docs.microsoft.com. + + + + The DeleteEnhMetaFile function deletes an enhanced-format metafile or an enhanced-format metafile handle. + A handle to an enhanced metafile. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + If the hemf parameter identifies an enhanced metafile stored in memory, the DeleteEnhMetaFile function deletes the metafile. If hemf identifies a metafile stored on a disk, the function deletes the metafile handle but does not destroy the actual metafile. An application can retrieve the file by calling the GetEnhMetaFile function. + + + + + + The GetEnhMetaFilePixelFormat function retrieves pixel format information for an enhanced metafile. + Identifies the enhanced metafile. + Specifies the size, in bytes, of the buffer into which the pixel format information is copied. + Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The metafile uses this structure to record the logical pixel format specification. + + If the function succeeds and finds a pixel format, the return value is the size of the metafile's pixel format. If no pixel format is present, the return value is zero. If an error occurs and the function fails, the return value is GDI_ERROR. To get extended error information, call GetLastError. + + + When an enhanced metafile specifies a pixel format in its ENHMETAHEADER structure and the pixel format fits in the buffer, the pixel format information is copied into ppfd. When cbBuffer is too small to contain the pixel format of the metafile, the pixel format is not copied to the buffer. In either case, the function returns the size of the metafile's pixel format. For information on metafile recording and other operations, see Enhanced Metafile Operations. + Read more on docs.microsoft.com. + + + + The GetPixelFormat function obtains the index of the currently selected pixel format of the specified device context. + Specifies the device context of the currently selected pixel format index returned by the function. + + If the function succeeds, the return value is the currently selected pixel format index of the specified device context. This is a positive, one-based index value. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Learn more about this API from docs.microsoft.com. + + + + + + + The SetPixelFormat function sets the pixel format of the specified device context to the format specified by the iPixelFormat index. + Specifies the device context whose pixel format the function attempts to set. + Index that identifies the pixel format to set. The various pixel formats supported by a device context are identified by one-based indexes. + Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The system's metafile component uses this structure to record the logical pixel format specification. The structure has no other effect upon the behavior of the SetPixelFormat function. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + If hdc references a window, calling the SetPixelFormat function also changes the pixel format of the window. Setting the pixel format of a window more than once can lead to significant complications for the Window Manager and for multithread applications, so it is not allowed. An application can only set the pixel format of a window one time. Once a window's pixel format is set, it cannot be changed. You should select a pixel format in the device context before calling the wglCreateContext function. The wglCreateContext function creates a rendering context for drawing on the device in the selected pixel format of the device context. An OpenGL window has its own pixel format. Because of this, only device contexts retrieved for the client area of an OpenGL window are allowed to draw into the window. As a result, an OpenGL window should be created with the WS_CLIPCHILDREN and WS_CLIPSIBLINGS styles. Additionally, the window class attribute should not include the CS_PARENTDC style. + Read more on docs.microsoft.com. + + + + The SwapBuffers function exchanges the front and back buffers if the current pixel format for the window referenced by the specified device context includes a back buffer. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + If the current pixel format for the window referenced by the device context does not include a back buffer, this call has no effect and the content of the back buffer is undefined when the function returns. With multithread applications, flush the drawing commands in any other threads drawing to the same window before calling SwapBuffers. + Read more on docs.microsoft.com. + + + + Closes an open object handle. + A valid handle to an open object. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. If the application is running under a debugger, the function will throw an exception if it receives either a handle value that is not valid or a pseudo-handle value. This can happen if you close a handle twice, or if you call CloseHandle on a handle returned by the FindFirstFile function instead of calling the FindClose function. + + + The CloseHandle function closes handles to the following objects: + This doc was truncated. + Read more on docs.microsoft.com. + + + + Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count. + + A handle to the loaded library module. The LoadLibrary, LoadLibraryEx, GetModuleHandle, or GetModuleHandleEx function returns this handle. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call the GetLastError function. + + + The system maintains a per-process reference count for each loaded module. A module that was loaded at process initialization due to load-time dynamic linking has a reference count of one. The reference count for a module is incremented each time the module is loaded by a call to LoadLibrary. The reference count is also incremented by a call to LoadLibraryEx unless the module is being loaded for the first time and is being loaded as a data or image file. The reference count is decremented each time the FreeLibrary or FreeLibraryAndExitThread function is called for the module. When a module's reference count reaches zero or the process terminates, the system unloads the module from the address space of the process. Before unloading a library module, the system enables the module to detach from the process by calling the module's DllMain function, if it has one, with the DLL_PROCESS_DETACH value. Doing so gives the library module an opportunity to clean up resources allocated on behalf of the current process. After the entry-point function returns, the library module is removed from the address space of the current process. It is not safe to call FreeLibrary from DllMain. For more information, see the Remarks section in DllMain. Calling FreeLibrary does not affect other processes that are using the same module. Use caution when calling FreeLibrary with a handle returned by GetModuleHandle. The GetModuleHandle function does not increment a module's reference count, so passing this handle to FreeLibrary can cause a module to be unloaded prematurely. A thread that must unload the DLL in which it is executing and then terminate itself should call FreeLibraryAndExitThread instead of calling FreeLibrary and ExitThread separately. Otherwise, a race condition can occur. For details, see the Remarks section of FreeLibraryAndExitThread. + Read more on docs.microsoft.com. + + + + + + + Retrieves a module handle for the specified module. The module must have been loaded by the calling process. (Unicode) + + The name of the loaded module (either a .dll or .exe file). If the file name extension is omitted, the default library extension .dll is appended. The file name string can include a trailing point character (.) to indicate that the module name has no extension. The string does not have to specify a path. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). The name is compared (case independently) to the names of modules currently mapped into the address space of the calling process. + If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file). The GetModuleHandle function does not retrieve handles for modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a handle to the specified module. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The returned handle is not global or inheritable. It cannot be duplicated or used by another process. If lpModuleName does not include a path and there is more than one loaded module with the same base name and extension, you cannot predict which module handle will be returned. To work around this problem, you could specify a path, use side-by-side assemblies, or use GetModuleHandleEx to specify a memory location rather than a DLL name. The GetModuleHandle function returns a handle to a mapped module without incrementing its reference count. However, if this handle is passed to the FreeLibrary function, the reference count of the mapped module will be decremented. Therefore, do not pass a handle returned by GetModuleHandle to the FreeLibrary function. Doing so can cause a DLL module to be unmapped prematurely. This function must be used carefully in a multithreaded application. There is no guarantee that the module handle remains valid between the time this function returns the handle and the time it is used. For example, suppose that a thread retrieves a module handle, but before it uses the handle, a second thread frees the module. If the system loads another module, it could reuse the module handle that was recently freed. Therefore, the first thread would have a handle to a different module than the one intended. + Read more on docs.microsoft.com. + + + + + + + Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL). + + A handle to the DLL module that contains the function or variable. The LoadLibrary, LoadLibraryEx, LoadPackagedLibrary, or GetModuleHandle function returns this handle. The GetProcAddress function does not retrieve addresses from modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx. + Read more on docs.microsoft.com. + + The function or variable name, or the function's ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero. + + If the function succeeds, the return value is the address of the exported function or variable. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The spelling and case of a function name pointed to by lpProcName must be identical to that in the EXPORTS statement of the source DLL's module-definition (.def) file. The exported names of functions may differ from the names you use when calling these functions in your code. This difference is hidden by macros used in the SDK header files. For more information, see Conventions for Function Prototypes. The lpProcName parameter can identify the DLL function by specifying an ordinal value associated with the function in the EXPORTS statement. GetProcAddress verifies that the specified ordinal is in the range 1 through the highest ordinal value exported in the .def file. The function then uses the ordinal as an index to read the function's address from a function table. If the .def file does not number the functions consecutively from 1 to N (where N is the number of exported functions), an error can occur where GetProcAddress returns an invalid, non-NULL address, even though there is no function with the specified ordinal. If the function might not exist in the DLL module—for example, if the function is available only on Windows Vista but the application might be running on Windows XP—specify the function by name rather than by ordinal value and design your application to handle the case when the function is not available, as shown in the following code fragment. + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Loads the specified module into the address space of the calling process. (LoadLibraryW) + + The name of the module. This can be either a library module (a .dll file) or an executable module (an .exe file). If the specified module is an executable module, static imports are not loaded; instead, the module is loaded as if by LoadLibraryEx with the `DONT_RESOLVE_DLL_REFERENCES` flag. The name specified is the file name of the module and is not related to the name stored in the library module itself, as specified by the LIBRARY keyword in the module-definition (.def) file. If the string specifies a full path, the function searches only that path for the module. If the string specifies a relative path or a module name without a path, the function uses a standard search strategy to find the module; for more information, see the Remarks. If the function cannot find the module, the function fails. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). For more information about paths, see Naming a File or Directory. If the string specifies a module name without a path and the file name extension is omitted, the function appends the default library extension ".DLL" to the module name. To prevent the function from appending ".DLL" to the module name, include a trailing point character (.) in the module name string. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a handle to the module. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + To enable or disable error messages displayed by the loader during DLL loads, use the SetErrorMode function. LoadLibrary can be used to load a library module into the address space of the process and return a handle that can be used in GetProcAddress to get the address of a DLL function. LoadLibrary can also be used to load other executable modules. For example, the function can specify an .exe file to get a handle that can be used in FindResource or LoadResource. However, do not use LoadLibrary to run an .exe file. Instead, use the CreateProcess function. If the specified module is a DLL that is not already loaded for the calling process, the system calls the DLL's DllMain function with the DLL_PROCESS_ATTACH value. If DllMain returns TRUE, LoadLibrary returns a handle to the module. If DllMain returns FALSE, the system unloads the DLL from the process address space and LoadLibrary returns NULL. It is not safe to call LoadLibrary from DllMain. For more information, see the Remarks section in DllMain. Module handles are not global or inheritable. A call to LoadLibrary by one process does not produce a handle that another process can use — for example, in calling GetProcAddress. The other process must make its own call to LoadLibrary for the module before calling GetProcAddress. If lpFileName does not include a path and there is more than one loaded module with the same base name and extension, the function returns a handle to the module that was loaded first. If no file name extension is specified in the lpFileName parameter, the default library extension .dll is appended. However, the file name string can include a trailing point character (.) to indicate that the module name has no extension. When no path is specified, the function searches for loaded modules whose base name matches the base name of the module to be loaded. If the name matches, the load succeeds. Otherwise, the function searches for the file. The first directory searched is the directory containing the image file used to create the calling process (for more information, see the CreateProcess function). Doing this allows private dynamic-link library (DLL) files associated with a process to be found without adding the process's installed directory to the PATH environment variable. If a relative path is specified, the entire relative path is appended to every token in the DLL search path list. To load a module from a relative path without searching any other path, use GetFullPathName to get a nonrelative path and call LoadLibrary with the nonrelative path. For more information on the DLL search order, see Dynamic-Link Library Search Order. The search path can be altered using the SetDllDirectory function. This solution is recommended instead of using SetCurrentDirectory or hard-coding the full path to the DLL. If a path is specified and there is a redirection file for the application, the function searches for the module in the application's directory. If the module exists in the application's directory, LoadLibrary ignores the specified path and loads the module from the application's directory. If the module does not exist in the application's directory, LoadLibrary loads the module from the specified directory. For more information, see Dynamic Link Library Redirection. If you call LoadLibrary with the name of an assembly without a path specification and the assembly is listed in the system compatible manifest, the call is automatically redirected to the side-by-side assembly. The system maintains a per-process reference count on all loaded modules. Calling LoadLibrary increments the reference count. Calling the FreeLibrary or FreeLibraryAndExitThread function decrements the reference count. The system unloads a module when its reference count reaches zero or when the process terminates (regardless of the reference count). Windows Server 2003 and Windows XP:  The Visual C++ compiler supports a syntax that enables you to declare thread-local variables: _declspec(thread). If you use this syntax in a DLL, you will not be able to load the DLL explicitly using LoadLibrary on versions of Windows prior to Windows Vista. If your DLL will be loaded explicitly, you must use the thread local storage functions instead of _declspec(thread). For an example, see Using Thread Local Storage in a Dynamic Link Library.

    Security Remarks

    Do not use the SearchPath function to retrieve a path to a DLL for a subsequent LoadLibrary call. The SearchPath function uses a different search order than LoadLibrary and it does not use safe process search mode unless this is explicitly enabled by calling SetSearchPathMode with BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE. Therefore, SearchPath is likely to first search the user’s current working directory for the specified DLL. If an attacker has copied a malicious version of a DLL into the current working directory, the path retrieved by SearchPath will point to the malicious DLL, which LoadLibrary will then load. Do not make assumptions about the operating system version based on a LoadLibrary call that searches for a DLL. If the application is running in an environment where the DLL is legitimately not present but a malicious version of the DLL is in the search path, the malicious version of the DLL may be loaded. Instead, use the recommended techniques described in Getting the System Version.
    + Read more on docs.microsoft.com. +
    +
    + + + + + The wglGetProcAddress function returns the address of an OpenGL extension function for use with the current OpenGL rendering context. + + When the function succeeds, the return value is the address of the extension function. When no current rendering context exists or the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The OpenGL library supports multiple implementations of its functions. Extension functions supported in one rendering context are not necessarily available in a separate rendering context. Thus, for a given rendering context in an application, use the function addresses returned by the wglGetProcAddress function only. The spelling and the case of the extension function pointed to by lpszProc must be identical to that of a function supported and implemented by OpenGL. Because extension functions are not exported by OpenGL, you must use wglGetProcAddress to get the addresses of vendor-specific extension functions. The extension function addresses are unique for each pixel format. All rendering contexts of a given pixel format share the same extension function addresses. + Read more on docs.microsoft.com. + + + + The wglDeleteContext function deletes a specified OpenGL rendering context. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + It is an error to delete an OpenGL rendering context that is the current context of another thread. However, if a rendering context is the calling thread's current context, the wglDeleteContext function changes the rendering context to being not current before deleting it. The wglDeleteContext function does not delete the device context associated with the OpenGL rendering context when you call the wglMakeCurrent function. After calling wglDeleteContext, you must call DeleteDC to delete the associated device context. + Read more on docs.microsoft.com. + + + + + + + The wglCreateContext function creates a new OpenGL rendering context, which is suitable for drawing on the device referenced by hdc. The rendering context has the same pixel format as the device context. + + If the function succeeds, the return value is a valid handle to an OpenGL rendering context. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + A rendering context is not the same as a device context. Set the pixel format of the device context before creating a rendering context. For more information on setting the device context's pixel format, see the SetPixelFormat function. To use OpenGL, you create a rendering context, select it as a thread's current rendering context, and then call OpenGL functions. When you are finished with the rendering context, you dispose of it by calling the wglDeleteContext function. The following code example shows wglCreateContext usage. + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + The wglCreateLayerContext function creates a new OpenGL rendering context for drawing to a specified layer plane on a device context. + + If the function succeeds, the return value is a handle to an OpenGL rendering context. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + A rendering context is a port through which all OpenGL commands pass. Every thread that makes OpenGL calls must have one current, active rendering context. A rendering context is not the same as a device context; a rendering context contains information specific to OpenGL, while a device context contains information specific to GDI. Before you create a rendering context, set the pixel format of the device context with the SetPixelFormat function. You can use a rendering context in a specified layer plane of a window with identical pixel formats only. With OpenGL applications that use multiple threads, you create a rendering context, select it as the current rendering context of a thread, and make OpenGL calls for the specified thread. When you are finished with the rendering context of the thread, call the wglDeleteContext function. + Read more on docs.microsoft.com. + + + + + + + The wglCopyContext function copies selected groups of rendering states from one OpenGL rendering context to another. + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + Using the wglCopyContext function, you can synchronize the rendering state of two rendering contexts. You can only copy the rendering state between two rendering contexts within the same process. The rendering contexts must be from the same OpenGL implementation. For example, you can always copy a rendering state between two rendering contexts with identical pixel format in the same process. You can copy the same state information available only with the glPushAttrib function. You cannot copy some state information, such as pixel pack/unpack state, render mode state, select state, and feedback state. When you call wglCopyContext, make sure that the destination rendering context, hglrcDst, is not current to any thread. + Read more on docs.microsoft.com. + + + + + + + The wglDescribeLayerPlane function obtains information about the layer planes of a given pixel format. + + If the function succeeds, the return value is TRUE. In addition, the wglDescribeLayerPlane function sets the members of the LAYERPLANEDESCRIPTOR structure pointed to by plpd according to the specified layer plane (iLayerPlane ) of the specified pixel format (iPixelFormat ). If the function fails, the return value is FALSE. + + The numbering of planes (iLayerPlane ) determines their order. Higher-numbered planes overlay lower-numbered planes. + + + + + + The wglGetCurrentContext function obtains a handle to the current OpenGL rendering context of the calling thread. + If the calling thread has a current OpenGL rendering context, wglGetCurrentContext returns a handle to that rendering context. Otherwise, the return value is NULL. + The current OpenGL rendering context of a thread is associated with a device context by means of the wglMakeCurrent function. You can use the wglGetCurrentDC function to obtain a handle to the device context associated with the current OpenGL rendering context. + + + The wglGetCurrentDC function obtains a handle to the device context that is associated with the current OpenGL rendering context of the calling thread. + If the calling thread has a current OpenGL rendering context, the function returns a handle to the device context associated with that rendering context by means of the wglMakeCurrent function. Otherwise, the return value is NULL. + You associate a device context with an OpenGL rendering context when it calls the wglMakeCurrent function. You can use the wglGetCurrentContext function to obtain a handle to the calling thread's current OpenGL rendering context. + + + + + + Retrieves the palette entries from a given color-index layer plane for a specified device context. + + Type: int If the function succeeds, the return value is the number of entries that were set in the palette in the specified layer plane of the window. If the function fails or when no pixel format is selected, the return value is zero. To get extended error information, call GetLastError. + + + Each color-index layer plane in a window has a palette with a size 2^n, where n is the number of bit planes in the layer plane. You cannot modify the transparent index of a palette. Use the wglRealizeLayerPalette function to realize the layer palette. Initially the layer palette contains only entries for white. + Read more on docs.microsoft.com. + + + + + + + The wglMakeCurrent function makes a specified OpenGL rendering context the calling thread's current rendering context. + When the wglMakeCurrent function succeeds, the return value is TRUE; otherwise the return value is FALSE. To get extended error information, call GetLastError. + + The hdc parameter must refer to a drawing surface supported by OpenGL. It need not be the same hdc that was passed to wglCreateContext when hglrc was created, but it must be on the same device and have the same pixel format. GDI transformation and clipping in hdc are not supported by the rendering context. The current rendering context uses the hdc device context until the rendering context is no longer current. Before switching to the new rendering context, OpenGL flushes any previous rendering context that was current to the calling thread. A thread can have one current rendering context. A process can have multiple rendering contexts by means of multithreading. A thread must set a current rendering context before calling any OpenGL functions. Otherwise, all OpenGL calls are ignored. A rendering context can be current to only one thread at a time. You cannot make a rendering context current to multiple threads. An application can perform multithread drawing by making different rendering contexts current to different threads, supplying each thread with its own rendering context and device context. If an error occurs, the wglMakeCurrent function makes the thread's current rendering context not current before returning. + Read more on docs.microsoft.com. + + + + The wglRealizeLayerPalette function maps palette entries from a given color-index layer plane into the physical palette or initializes the palette of an RGBA layer plane. + If the function succeeds, the return value is TRUE, even if bRealize is TRUE and the physical palette is not available. If the function fails or when no pixel format is selected, the return value is FALSE. To get extended error information, call GetLastError. + + The physical palette for a layer plane is a shared resource among windows with layer planes. When more than one window attempts to realize a palette for a given physical layer plane, only one palette at a time is realized. When you call the wglRealizeLayerPalette function, the layer palette of a foreground window is always realized first. When a window's layer palette is realized, its palette entries are always mapped one-to-one into the physical palette. Unlike GDI logical palettes, with wglRealizeLayerPalette there is no mapping of other windows' layer palettes to the current physical palette. Whenever a window becomes the foreground window, call wglRealizeLayerPalette to realize its layer palettes again, even if the pixel type of the layer plane is RGBA. Because wglRealizeLayerPalette doesn't realize the palette of the main plane, use GDI palette functions to realize the main plane palette. + Read more on docs.microsoft.com. + + + + + + + Sets the palette entries in a given color-index layer plane for a specified device context. + + Type: int If the function succeeds, the return value is the number of entries that were set in the palette in the specified layer plane of the window. If the function fails or no pixel format is selected, the return value is zero. To get extended error information, call GetLastError. + + + Each color-index plane in a window has a palette with a size 2^n, where n is the number of bit planes in the layer plane. You cannot modify the transparent index of a palette. Use the wglRealizeLayerPalette function to realize the layer palette. Initially the layer palette contains only entries for white. The wglSetLayerPaletteEntries function doesn't set the palette entries of the main plane palette. To update the main plane palette, use GDI palette functions. + Read more on docs.microsoft.com. + + + + + + + The wglShareLists function enables multiple OpenGL rendering contexts to share a single display-list space. + + When the function succeeds, the return value is TRUE. When the function fails, the return value is FALSE and the display lists are not shared. To get extended error information, call GetLastError. + + + When you create an OpenGL rendering context, it has its own display-list space. The wglShareLists function enables a rendering context to share the display-list space of another rendering context; any number of rendering contexts can share a single display-list space. Once a rendering context shares a display-list space, the rendering context always uses the display-list space until the rendering context is deleted. When the last rendering context of a shared display-list space is deleted, the shared display-list space is deleted. All the indexes and definitions of display lists in a shared display-list space are shared. You can only share display lists with rendering contexts within the same process. However, not all rendering contexts in a process can share display lists. Rendering contexts can share display lists only if they use the same implementation of OpenGL functions. All client rendering contexts of a given pixel format can always share display lists. All rendering contexts of a shared display list must use an identical pixel format. Otherwise the results depend on the implementation of OpenGL used.
    Note  The wglShareLists function is only available with OpenGL version 1.01 or later. To determine the version number of the implementation of OpenGL, call glGetString.
     
    + Read more on docs.microsoft.com. +
    +
    + + The wglSwapLayerBuffers function swaps the front and back buffers in the overlay, underlay, and main planes of the window referenced by a specified device context. + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + When a layer plane doesn't include a back buffer, calling the wglSwapLayerBuffers function has no effect on that layer plane. After you call wglSwapLayerBuffers, the state of the back buffer content is given in the corresponding LAYERPLANEDESCRIPTOR structure of the layer plane or in the PIXELFORMATDESCRIPTOR structure of the main plane. The wglSwapLayerBuffers function swaps the front and back buffers in the specified layer planes simultaneously. Some devices don't support swapping layer planes individually; they swap all layer planes as a group. When the PFD_SWAP_LAYER_BUFFERS flag of the PIXELFORMATDESCRIPTOR structure is set, it indicates that a device can swap individual layer planes and that you can call wglSwapLayerBuffers. With applications that use multiple threads, before calling wglSwapLayerBuffers, clear all drawing commands in all threads drawing to the same window. + Read more on docs.microsoft.com. + + + + The wglUseFontBitmaps function creates a set of bitmap display lists for use in the current OpenGL rendering context. (Unicode) + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + The wglUseFontBitmaps function defines count display lists in the current OpenGL rendering context. Each display list has an identifying number, starting at listBase. Each display list consists of a single call to glBitmap. The definition of bitmap listBase + i is taken from the glyph first + i of the font currently selected in the device context specified by hdc. If a glyph is not defined, then the function defines an empty display list for it. The wglUseFontBitmaps function creates bitmap text in the plane of the screen. It enables the labeling of objects in OpenGL. In the current version of Microsoft's implementation of OpenGL, you cannot make GDI calls to a device context that has a double-buffered pixel format. Therefore, you cannot use the GDI fonts and text functions with such device contexts. You can use the wglUseFontBitmaps function to circumvent this limitation and draw text in a double-buffered device context. The function determines the parameters of each call to glBitmap as follows. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + The wglUseFontOutlines function creates a set of display lists, one for each glyph of the currently selected outline font of a device context, for use with the current rendering context. (Unicode) + + When the function succeeds, the return value is TRUE. When the function fails, the return value is FALSE and no display lists are generated. To get extended error information, call GetLastError. + + + The wglUseFontOutlines function defines the glyphs of an outline font with display lists in the current rendering context. The wglUseFontOutlines function works with TrueType fonts only; stroke and raster fonts are not supported. Each display list consists of either line segments or polygons, and has a unique identifying number starting with the listBase number. The wglUseFontOutlines function approximates glyph outlines by subdividing the quadratic B-spline curves of the outline into line segments, until the distance between the outline and the interpolated midpoint is within the value specified by deviation. This is the final format used when format is WGL_FONT_LINES. When you specify WGL_FONT_OUTLINES, the display lists created don't contain any normals; thus lighting doesn't work properly. To get the correct lighting of lines use WGL_FONT_POLYGONS and set glPolygonMode( GL_FRONT, GL_LINE ). When you specify format as WGL_FONT_POLYGONS the outlines are further tessellated into separate triangles, triangle fans, triangle strips, or quadrilateral strips to create the surface of each glyph. With WGL_FONT_POLYGONS, the created display lists call glFrontFace( GL_CW ) or glFrontFace( GL_CCW ); thus the current front-face value might be altered. For the best appearance of text with WGL_FONT_POLYGONS, cull the back faces as follows: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + Destroys an icon and frees any memory the icon occupied. + + Type: HICON A handle to the icon to be destroyed. The icon must not be in use. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + It is only necessary to call DestroyIcon for icons and cursors created with the following functions: CreateIconFromResourceEx (if called without the LR_SHARED flag), CreateIconIndirect, and CopyIcon. Do not use this function to destroy a shared icon. A shared icon is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared icon. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Destroys a cursor and frees any memory the cursor occupied. Do not use this function to destroy a shared cursor. + + Type: HCURSOR A handle to the cursor to be destroyed. The cursor must not be in use. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + The DestroyCursor function destroys a nonshared cursor. Do not use this function to destroy a shared cursor. A shared cursor is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared cursor: + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Calculates the required size of the window rectangle, based on the desired client-rectangle size. The window rectangle can then be passed to the CreateWindow function to create a window whose client area is the desired size. + + Type: LPRECT A pointer to a RECT structure that contains the coordinates of the top-left and bottom-right corners of the desired client area. When the function returns, the structure contains the coordinates of the top-left and bottom-right corners of the window to accommodate the desired client area. + Read more on docs.microsoft.com. + + + Type: DWORD The window style of the window whose required size is to be calculated. Note that you cannot specify the WS_OVERLAPPED style. + Read more on docs.microsoft.com. + + + Type: BOOL Indicates whether the window has a menu. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + A client rectangle is the smallest rectangle that completely encloses a client area. A window rectangle is the smallest rectangle that completely encloses the window, which includes the client area and the nonclient area. The AdjustWindowRect function does not add extra space when a menu bar wraps to two or more rows. The AdjustWindowRect function does not take the WS_VSCROLL or WS_HSCROLL styles into account. To account for the scroll bars, call the GetSystemMetrics function with SM_CXVSCROLL or SM_CYHSCROLL. + Read more on docs.microsoft.com. + + + + Destroys the specified menu and frees any memory that the menu occupies. + + Type: HMENU A handle to the menu to be destroyed. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Before closing, an application must use the DestroyMenu function to destroy a menu not assigned to a window. A menu that is assigned to a window is automatically destroyed when the application closes. DestroyMenu is recursive, that is, it will destroy the menu and all its submenus. + Read more on docs.microsoft.com. + + + + + + + Creates an overlapped, pop-up, or child window with an extended window style; otherwise, this function is identical to the CreateWindow function. (Unicode) + + Type: DWORD The extended window style of the window being created. For a list of possible values, see Extended Window Styles. + Read more on docs.microsoft.com. + + + Type: LPCTSTR A null-terminated string or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero. If lpClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, provided that the module that registers the class is also the module that creates the window. The class name can also be any of the predefined system class names. + Read more on docs.microsoft.com. + + + Type: LPCTSTR The window name. If the window style specifies a title bar, the window title pointed to by lpWindowName is displayed in the title bar. When using CreateWindow to create controls, such as buttons, check boxes, and static controls, use lpWindowName to specify the text of the control. When creating a static control with the SS_ICON style, use lpWindowName to specify the icon name or identifier. To specify an identifier, use the syntax "#num". + Read more on docs.microsoft.com. + + + Type: DWORD The style of the window being created. This parameter can be a combination of the window style values, plus the control styles indicated in the Remarks section. + Read more on docs.microsoft.com. + + + Type: int The initial horizontal position of the window. For an overlapped or pop-up window, the x parameter is the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window, x is the x-coordinate of the upper-left corner of the window relative to the upper-left corner of the parent window's client area. If x is set to CW_USEDEFAULT, the system selects the default position for the window's upper-left corner and ignores the y parameter. CW_USEDEFAULT is valid only for overlapped windows; if it is specified for a pop-up or child window, the x and y parameters are set to zero. + Read more on docs.microsoft.com. + + + Type: int The initial vertical position of the window. For an overlapped or pop-up window, the y parameter is the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window, y is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left corner of the parent window's client area. For a list box y is the initial y-coordinate of the upper-left corner of the list box's client area relative to the upper-left corner of the parent window's client area. + If an overlapped window is created with the WS_VISIBLE style bit set and the x parameter is set to CW_USEDEFAULT, then the y parameter determines how the window is shown. If the y parameter is CW_USEDEFAULT, then the window manager calls ShowWindow with the SW_SHOW flag after the window has been created. If the y parameter is some other value, then the window manager calls ShowWindow with that value as the nCmdShow parameter. + Read more on docs.microsoft.com. + + + Type: int The width, in device units, of the window. For overlapped windows, nWidth is the window's width, in screen coordinates, or CW_USEDEFAULT. If nWidth is CW_USEDEFAULT, the system selects a default width and height for the window; the default width extends from the initial x-coordinates to the right edge of the screen; the default height extends from the initial y-coordinate to the top of the icon area. CW_USEDEFAULT is valid only for overlapped windows; if CW_USEDEFAULT is specified for a pop-up or child window, the nWidth and nHeight parameter are set to zero. + Read more on docs.microsoft.com. + + + Type: int The height, in device units, of the window. For overlapped windows, nHeight is the window's height, in screen coordinates. If the nWidth parameter is set to CW_USEDEFAULT, the system ignores nHeight. + Read more on docs.microsoft.com. + + + Type: HWND A handle to the parent or owner window of the window being created. To create a child window or an owned window, supply a valid window handle. This parameter is optional for pop-up windows. To create a message-only window, supply HWND_MESSAGE or a handle to an existing message-only window. + Read more on docs.microsoft.com. + + + Type: HMENU A handle to a menu, or specifies a child-window identifier, depending on the window style. For an overlapped or pop-up window, hMenu identifies the menu to be used with the window; it can be NULL if the class menu is to be used. For a child window, hMenu specifies the child-window identifier, an integer value used by a dialog box control to notify its parent about events. The application determines the child-window identifier; it must be unique for all child windows with the same parent window. + Read more on docs.microsoft.com. + + + Type: HINSTANCE A handle to the instance of the module to be associated with the window. + Read more on docs.microsoft.com. + + + Type: LPVOID Pointer to a value to be passed to the window through the CREATESTRUCT structure (lpCreateParams member) pointed to by the lParam param of the WM_CREATE message. This message is sent to the created window by this function before it returns. If an application calls CreateWindow to create a MDI client window, lpParam should point to a CLIENTCREATESTRUCT structure. If an MDI client window calls CreateWindow to create an MDI child window, lpParam should point to a MDICREATESTRUCT structure. lpParam may be NULL if no additional data is needed. + Read more on docs.microsoft.com. + + + Type: HWND If the function succeeds, the return value is a handle to the new window. If the function fails, the return value is NULL. To get extended error information, call GetLastError. This function typically fails for one of the following reasons: + This doc was truncated. + + + The CreateWindowEx function sends WM_NCCREATE, WM_NCCALCSIZE, and WM_CREATE messages to the window being created. If the created window is a child window, its default position is at the bottom of the Z-order. If the created window is a top-level window, its default position is at the top of the Z-order (but beneath all topmost windows unless the created window is itself topmost). For information on controlling whether the Taskbar displays a button for the created window, see Managing Taskbar Buttons. For information on removing a window, see the DestroyWindow function. The following predefined control classes can be specified in the lpClassName parameter. Note the corresponding control styles you can use in the dwStyle parameter. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Calls the default window procedure to provide default processing for any window messages that an application does not process. (Unicode) + + Type: HWND A handle to the window procedure that received the message. + Read more on docs.microsoft.com. + + + Type: UINT The message. + Read more on docs.microsoft.com. + + + Type: WPARAM Additional message information. The content of this parameter depends on the value of the Msg parameter. + Read more on docs.microsoft.com. + + + Type: LPARAM Additional message information. The content of this parameter depends on the value of the Msg parameter. + Read more on docs.microsoft.com. + + + Type: LRESULT The return value is the result of the message processing and depends on the message. + + + > [!NOTE] > The winuser.h header defines DefWindowProc as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + Destroys the specified window. + + Type: HWND A handle to the window to be destroyed. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + A thread cannot use DestroyWindow to destroy a window created by a different thread. If the window being destroyed is a child window that does not have the WS_EX_NOPARENTNOTIFY style, a WM_PARENTNOTIFY message is sent to the parent. + Read more on docs.microsoft.com. + + + + + + + Dispatches a message to a window procedure. It is typically used to dispatch a message retrieved by the GetMessage function. (DispatchMessageW) + + Type: const MSG* A pointer to a structure that contains the message. + Read more on docs.microsoft.com. + + + Type: LRESULT The return value specifies the value returned by the window procedure. Although its meaning depends on the message being dispatched, the return value generally is ignored. + + + The MSG structure must contain valid message values. If the lpmsg parameter points to a WM_TIMER message and the lParam parameter of the WM_TIMER message is not NULL, lParam points to a function that is called instead of the window procedure. Note that the application is responsible for retrieving and dispatching input messages to the dialog box. Most applications use the main message loop for this. However, to permit the user to move to and to select controls by using the keyboard, the application must call IsDialogMessage. For more information, see Dialog Box Keyboard Interface. + Read more on docs.microsoft.com. + + + + The GetDC function retrieves a handle to a device context (DC) for the client area of a specified window or for the entire screen. + A handle to the window whose DC is to be retrieved. If this value is NULL, GetDC retrieves the DC for the entire screen. + + If the function succeeds, the return value is a handle to the DC for the specified window's client area. If the function fails, the return value is NULL. + + + The GetDC function retrieves a common, class, or private DC depending on the class style of the specified window. For class and private DCs, GetDC leaves the previously assigned attributes unchanged. However, for common DCs, GetDC assigns default attributes to the DC each time it is retrieved. For example, the default font is System, which is a bitmap font. Because of this, the handle to a common DC returned by GetDC does not tell you what font, color, or brush was used when the window was drawn. To determine the font, call GetTextFace. Note that the handle to the DC can only be used by a single thread at any one time. After painting with a common DC, the ReleaseDC function must be called to release the DC. Class and private DCs do not have to be released. ReleaseDC must be called from the same thread that called GetDC. The number of DCs is limited only by available memory. + Read more on docs.microsoft.com. + + + + + + + Loads the specified cursor resource from the executable (.EXE) file associated with an application instance. (Unicode) + + Type: HINSTANCE A handle to an instance of the module whose executable file contains the cursor to be loaded. + Read more on docs.microsoft.com. + + + Type: LPCTSTR The name of the cursor resource to be loaded. Alternatively, this parameter can consist of the resource identifier in the low-order word and zero in the high-order word. The MAKEINTRESOURCE macro can also be used to create this value. To use one of the predefined cursors, the application must set the hInstance parameter to NULL and the lpCursorName parameter to one the following values. + This doc was truncated. + Read more on docs.microsoft.com. + + + Type: HCURSOR If the function succeeds, the return value is the handle to the newly loaded cursor. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The LoadCursor function loads the cursor resource only if it has not been loaded; otherwise, it retrieves the handle to the existing resource. This function returns a valid cursor handle only if the lpCursorName parameter is a pointer to a cursor resource. If lpCursorName is a pointer to any type of resource other than a cursor (such as an icon), the return value is not NULL, even though it is not a valid cursor handle. The LoadCursor function searches the cursor resource most appropriate for the cursor for the current display device. The cursor resource can be a color or monochrome bitmap.

    DPI Virtualization

    This API does not participate in DPI virtualization. The output returned is not affected by the DPI of the calling thread.
    + Read more on docs.microsoft.com. +
    +
    + + + + + Dispatches incoming nonqueued messages, checks the thread message queue for a posted message, and retrieves the message (if any exist). (Unicode) + + Type: LPMSG A pointer to an MSG structure that receives message information. + Read more on docs.microsoft.com. + + + Type: HWND A handle to the window whose messages are to be retrieved. The window must belong to the current thread. + If hWnd is NULL, PeekMessage retrieves messages for any window that belongs to the current thread, and any messages on the current thread's message queue whose hwnd value is NULL (see the MSG structure). Therefore if hWnd is NULL, both window messages and thread messages are processed. If hWnd is -1, PeekMessage retrieves only messages on the current thread's message queue whose hwnd value is NULL, that is, thread messages as posted by PostMessage (when the hWnd parameter is NULL) or PostThreadMessage. + Read more on docs.microsoft.com. + + + Type: UINT The value of the first message in the range of messages to be examined. Use WM_KEYFIRST (0x0100) to specify the first keyboard message or WM_MOUSEFIRST (0x0200) to specify the first mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, PeekMessage returns all available messages (that is, no range filtering is performed). + Read more on docs.microsoft.com. + + + Type: UINT The value of the last message in the range of messages to be examined. Use WM_KEYLAST to specify the last keyboard message or WM_MOUSELAST to specify the last mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, PeekMessage returns all available messages (that is, no range filtering is performed). + Read more on docs.microsoft.com. + + Type: UINT + + Type: BOOL If a message is available, the return value is nonzero. If no messages are available, the return value is zero. + + + PeekMessage retrieves messages associated with the window identified by the hWnd parameter or any of its children as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. Note that an application can only use the low word in the wMsgFilterMin and wMsgFilterMax parameters; the high word is reserved for the system. Note that PeekMessage always retrieves WM_QUIT messages, no matter which values you specify for wMsgFilterMin and wMsgFilterMax. During this call, the system dispatches (DispatchMessage) pending, nonqueued messages, that is, messages sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. Then the first queued message that matches the specified filter is retrieved. The system may also process internal events. If no filter is specified, messages are processed in the following order: + This doc was truncated. + Read more on docs.microsoft.com. + + + + Indicates to the system that a thread has made a request to terminate (quit). It is typically used in response to a WM_DESTROY message. + + Type: int The application exit code. This value is used as the wParam parameter of the WM_QUIT message. + Read more on docs.microsoft.com. + + + The PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately; the function simply indicates to the system that the thread is requesting to quit at some time in the future. When the thread retrieves the WM_QUIT message from its message queue, it should exit its message loop and return control to the system. The exit value returned to the system must be the wParam parameter of the WM_QUIT message. + Read more on docs.microsoft.com. + + + + Registers a window class for subsequent use in calls to the CreateWindow or CreateWindowEx function. (RegisterClassW) + + Type: const WNDCLASS* A pointer to a WNDCLASS structure. You must fill the structure with the appropriate class attributes before passing it to the function. + Read more on docs.microsoft.com. + + + Type: ATOM If the function succeeds, the return value is a class atom that uniquely identifies the class being registered. This atom can only be used by the CreateWindow, CreateWindowEx, GetClassInfo, GetClassInfoEx, FindWindow, FindWindowEx, and UnregisterClass functions and the IActiveIMMap::FilterClientWindows method. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + If you register the window class by using RegisterClassA, the application tells the system that the windows of the created class expect messages with text or character parameters to use the ANSI character set; if you register it by using RegisterClassW, the application requests that the system pass text parameters of messages as Unicode. The IsWindowUnicode function enables applications to query the nature of each window. For more information on ANSI and Unicode functions, see Conventions for Function Prototypes. All window classes that an application registers are unregistered when it terminates. No window classes registered by a DLL are unregistered when the DLL is unloaded. A DLL must explicitly unregister its classes when it is unloaded. + Read more on docs.microsoft.com. + + + + The ReleaseDC function releases a device context (DC), freeing it for use by other applications. The effect of the ReleaseDC function depends on the type of DC. It frees only common and window DCs. It has no effect on class or private DCs. + A handle to the window whose DC is to be released. + A handle to the DC to be released. + + The return value indicates whether the DC was released. If the DC was released, the return value is 1. If the DC was not released, the return value is zero. + + + The application must call the ReleaseDC function for each call to the GetWindowDC function and for each call to the GetDC function that retrieves a common DC. An application cannot use the ReleaseDC function to release a DC that was created by calling the CreateDC function; instead, it must use the DeleteDC function. ReleaseDC must be called from the same thread that called GetDC. + Read more on docs.microsoft.com. + + + + Sets the specified window's show state. + + Type: HWND A handle to the window. + Read more on docs.microsoft.com. + + Type: int + + Type: BOOL If the window was previously visible, the return value is nonzero. If the window was previously hidden, the return value is zero. + + + To perform certain special effects when showing or hiding a window, use AnimateWindow. The first time an application calls ShowWindow, it should use the WinMain function's nCmdShow parameter as its nCmdShow parameter. Subsequent calls to ShowWindow must use one of the values in the given list, instead of the one specified by the WinMain function's nCmdShow parameter. As noted in the discussion of the nCmdShow parameter, the nCmdShow value is ignored in the first call to ShowWindow if the program that launched the application specifies startup information in the structure. In this case, ShowWindow uses the information specified in the STARTUPINFO structure to show the window. On subsequent calls, the application must call ShowWindow with nCmdShow set to SW_SHOWDEFAULT to use the startup information provided by the program that launched the application. This behavior is designed for the following situations: + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Translates virtual-key messages into character messages. The character messages are posted to the calling thread's message queue, to be read the next time the thread calls the GetMessage or PeekMessage function. + + Type: const MSG* A pointer to an MSG structure that contains message information retrieved from the calling thread's message queue by using the GetMessage or PeekMessage function. + Read more on docs.microsoft.com. + + + Type: BOOL If the message is translated (that is, a character message is posted to the thread's message queue), the return value is nonzero. If the message is WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP, the return value is nonzero, regardless of the translation. If the message is not translated (that is, a character message is not posted to the thread's message queue), the return value is zero. + + + The TranslateMessage function does not modify the message pointed to by the lpMsg parameter. + WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message. WM_SYSKEYDOWN and WM_SYSKEYUP combinations produce a WM_SYSCHAR or WM_SYSDEADCHAR message. TranslateMessage produces WM_CHAR messages only for keys that are mapped to ASCII characters by the keyboard driver. If applications process virtual-key messages for some other purpose, they should not call TranslateMessage. For instance, an application should not call TranslateMessage if the TranslateAccelerator function returns a nonzero value. Note that the application is responsible for retrieving and dispatching input messages to the dialog box. Most applications use the main message loop for this. However, to permit the user to move to and to select controls by using the keyboard, the application must call IsDialogMessage. For more information, see Dialog Box Keyboard Interface. + Read more on docs.microsoft.com. + + + + The UpdateWindow function updates the client area of the specified window by sending a WM_PAINT message to the window if the window's update region is not empty. + Handle to the window to be updated. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + + Learn more about this API from docs.microsoft.com. + + + - Generates a random seed in int value. + Represents a Win32 handle that can be closed with . - diff --git a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfo.cs b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfo.cs index 5d8e4cc4..065e8866 100644 --- a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfo.cs +++ b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+127fcdbfd32fd1caa4a55ced77c7e738f038a59c")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfoInputs.cache b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfoInputs.cache index ec9228b6..672e9494 100644 --- a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfoInputs.cache +++ b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.AssemblyInfoInputs.cache @@ -1 +1 @@ -5bdfaeb828f7a682fca2531a3fe7bdbf99d72f6a17b3554b2957f0377659471f +2ada11ce10f85a06de358a4bce8f696ee557358f3cc0800e7c9895081adaf694 diff --git a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.dll b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.dll index 85053ed32885b7462206a1534f6215543d7322f2..731ea064aabecc73c5750de8b2f6abebddc5a4fc 100644 GIT binary patch literal 719872 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

    Uz=R-hj|F-yl2^xli|AWkcMN6nARRDfD810Lv4K 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

    S4s9 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�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 literal 718848 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

    _Pp`ZkD9uR*4z6 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�CyylPF#WsA2cOsa3UB7Ki6pY_K z((xONy-wheRQi#`K^J8A-}1K^RTkhNdbgMQg|8+F1+L$7yuNKTqQl?H>F0>{#;5AH zRyx;K>bOYM#R{&i#0EQu2WjY%*ak#1w`hmg3pmn#2%Nw!SHE7qW{3r+!$ZK{zI<71 zjvpV*zE~oGEQ^x%l_XdhQjyVvW-x0U#< z74IBELzaF+mKsxYp&r6&y9ugG!%d*|wha*%sYQJX_1;8G~f6c zLmf0i8RntvQ$rOW>gVmSA;K^hVV~-J(LTgKi2bfitgAqc&^Th6j~Wpg<`LSb#9_Zx zf_=E_B$d=zCP_&Swqj&{@Qix1<&)qt6jxZin5oDj=y~L>qHc|8_P>a_-S10_m*Um$&Qr_M0H%uqr-#o3GeRgmAoi`8vN{ z`H?V)O-3 zcnEa{^ApjeL2_Gam|1msGuk{NS8v}r5e6CP5AaVRUg_04YwDa5MI6k{ zk%!=3Eneg@e0M_ZZ#&RI7dq@hM+!kz@Ur{~2XvbS7F?+2ljU3~oi3*nTn`arJeG=) z#RgQ}dT1!NHbiI*BVz?%;R=i$y#SJ=_2x0kNuNndLSzuWp1;^eR6_}P2N!fDY#zb6 z1yw$D3)zF}my$;hvNT=GT4`1|?l z&4PET%(}43VwuUdO+V?CX7jSf_DYl?F#+V%Z{$0F=v0`$wHP{)rjR`pR_66$`}Gz> za}lc!nJKspQTjbu{10;Zij0e|<$`wpW4=PgDx=h>)$#EI>Q7M%eU`D6(lAonyLAYI@FKt{0eT`qJ30d=$Z8NM|q z0Z6r(+L2dhs){y+jn@{8(s|T{xCF{u*#KHQ(*z8caNey&MQzyN*}ksl-&FsjDg;reM+d^hXo-GW;TVcF3l+a%hM90C@x4z_(1Cf77e)_bjF8X(-N zd)F?cv)^<(n0j#+X{kl@_3zX5+p|_)Vr_Tw24kl!WuEbdje;9%j85~7#(=K)vRsL` zcPxOIc1h#ud<8ADEQ%5~*wzU433IZ^PF~hz8n_ox{i-mN*pbVe!B0Rk#72z{bhR-+#&O$_z0D@&ULZa(RfV2x9v4C0B z8@gIc^g^=uUMf--kTQ9JP>2xsONEGllp+G55OGL9M}>%hlp+G55Ft*O3K0P*MFc`! z(4BPXke1<6QcVrcoHQvVdlr-HvB0Dv3&ecx6<8Rc(h|I2&;hAI>uDNA;1J_-rn!g( zjl;DrxNV~Qj}6Wic+g^Ofrl-|76`}nGGbWyONpiOsE8drW_R1ioCsADvWSTW?X_+z zGOd{|&s-;5N?}JpO_9ZboL9)C;1U;`*TqlW)a-w0RZ0Vd!}!ivylsK-*WP7pfpCDn zqf$y@%9sZ#E2W2-9@-^}s!}p)1&>)y&e}3Tx`rN7Ww2X?nTD0EmS{?9rZubA$UY@v zZT*BDOY+C=>E21_x~~zY1$Wcl3aERPnu5I55K6RxdSV;g-TA-4zDk4|(Y^}h5%aBIJ-*Q^LR^zKj6r1S&S8a$Q+xHm`*55JU)|n!B(30k$OY`p- za9e`qmp0$SmTU)Iwtu^_Uo&Uge*GwSK^~w;ObM1>nwXcgExR zXzF>bo=Di=cCl>>JZLetz{3_}3xuO?X$>(sTLVQP@J)z7@T$@3QibJBZE+hguA!^`*Z3D!F#{)M^jc8sPlL!eL zzz$6tdIyH63QI3-_1)*@9eT1caJdctOzJbiYX{A7MSfNXHuXx>*a?d8CG1E4BZx7ohGx+AJ z5M1i65V0_3m|y*_KJDFI6%eB2*<%GGPJN?L;b3p#$--Gd#WT-a_!l^PkBjQa5I)V+ z8hlA*4AweZ@F}bVmR$CBqX>CB8VwCV>CuzAyiqB5U`#rHk4NJ>|77K{hGz>a!=6biDAm=B?$%5kASeKuItTt#L%gXsyFh38ui z-iT%d?{CgvQEfVXpIhYny|cxa_si$U^}jK?KHw8>@8_@VAKNW}2`+9j7tx_xu9r>1w{kr=DJD z63&0B#NqPu2KRoXsPI@JHEOn8DG0YjhUX)J%x2smt~~C?U_y~uxSm$BIN@Q ze~6`_^6mWMtp{HC;H?;56rR~zE;Gr6Qn??!<5MTSt)FkNi#Wc|DCu}o!#6+l%q9lb zFFxGv!_f1^2QlTADYHxn28)!_tpG_ddo7_^pDIHP!MAzB__VtHEEiIFr$dnR;74Ao z{?}}JIrxw*>k7E9AVz1kZo(&MhQZVG>4|!TV>q)-=&$DSrboo-D=%18uyh_B92upI zy$K$+WkAG{QmRND?nHV7uhWtoOSFHMX)vA={ChJdSWs@1Rula15c6^Ptv}6o6fH{2 z_=$EQf(^HKG6gB6PmQnPp$vKP0#?uTqq_LN0_Q+7Jjp`f7UM4Z|@f#i$ zBqHu^#vJw0d+g~D3&G>1Gc?+ML@D6yx$q|gmFBudz{HOxOh+}wX(H*44R#v%fRw^h zRA;bC!WvN65|W#{J~?Fwt569|!!Gt*Ow4m>U@LO^1v;hW1a;}50o)~o6hDU>fkOy+ zcCSyQYf>AP0A{|dRb2Oj$?Y9lRbXK~ducYvsQ|6OdqM^nL#nua5Q|A-T)oU~)xd>l z<#_yoOqMx*PZfUOq@hrSc$ zlWh;6&N^b>vLr}1Or~gr-BK@emzk&$+{-SMh{{iB zOYIhZSv<5^O>xxJ?x@I&tc=-MCv}?ggsd&@*1)Uf-nK2q<|9BVth$&L4T}QP1oWNVq_Yu%|aRV=jy& zOtXt6YFRik>%q;&z(!1>RN1;P)1kyaQXC=ySzoBOkXxj zUI+BUH4DJoDjm@8r;3zXv`4w@jnXMqlnxhBI#@*Mpu`Uqrhhw=oN{-px} zV&k0KE+((&^qG!v>HWUIxitb(+CV3`a2=9hyliw`6fX^5x+pgPT@c#BO#}Ag_LBbc zBPEVcQ01y)hvtOP0zFvO9+J4CK_nC@Z4-(ZB72+QsHb%4$w36YG$-U-q+nGp5?&-W zp>-}2p@<=&Ax#ps5vEwr_&~+i{WP8jTVc1@v)$c%fC51F7!8V#QKmK(ZfM-FM1fZ}K&X zcjMs*{=jIZ$=nxx*prX*>k&*D3}Dd)t2_dsJYC_iQX+;^lQEYb79`P(DE@cf3*-OCE2 zX?l@EsQny-l)m>Mq@@Jd;f9}S6f{p!No_;5YRH*jHr6LxrJbY*pk!K zB0o4jbIFh7W1zky4IOH9GyDj%QXeoZ%1?DuAwSbu+Pkq z{+81*!R2J_Jv3(W#gW}BgTIe&2GbF|>rsH5+F`58qrBvhS}Yr~bkt21EZ<r;D57HAr@G}e7=j&&89$GR3l$2y~MtV6@XDECpu zI{Z#!-N(*YCsZHnkc&@yA3yELNQ0I#@+qHseUkV;N&KJo@J{G$F`Mmig*yB7uzC1A zN5lW}Z!D;;*Lcl=v#s^!+Z-?17_5e{E}CIW_IbXV&G}{&eiLtJ58r=%Qz6sE>*XAm z`}dyY-^~IyAm)3g=sp`|{rrR<$CH!U54l!4o6|%6F$IG8h~k1ko_jk6-ARUct%MsAF-`0Rt|`y{+38<5b@Oz zqpGnSizGruqR(;wWUH9Hw`Z;?p-5fpv3$rkc$dCf1ZC{E$n^?+ic>- z5ptU}*EpY6@m9*w&D-a_f4waqzM=m1a3+jfbf5SB&;Nbc`}+8>_ha#}H+_A=y|&HE z+2Zrt)8B^cr)9?S=awv&oB99uHIf0m5McSd>iv(|m*onYkJ%gwm^Gerzktl1wu3zV zwS8TD{~L4%E4&SaLT39nY_g#}dDw$a^Na0gXGj9xG|xWc==uTMe3G9q&Z+4WeB2}O zdV}{qz*q9#pH{T+Tke_LZ#Q~C3N;Ov!!P{F6ylhE@pC4h*ql+_Gllv{!oz@ye;_(V z-S`$5!bXZTyW1uk1dNJQLP-h955{zUIh@IdjEQskd9TaR;}ur#knr+LfBBt8rj=I+ z_Es-no-snnZ>UG|N4{Mg-x|2 zde75pF?*CymKyn8rbeJ5HAi(c01yrSMKnS*Y4W?225A2BGI+$Dm8aYFWd69f*lgAt zYENiRVDCXLqNLA%%e9vDNd?&6*O%qzUk9_V{EhR*3HlVq0_>$0GtBRgdzbUC_@ zwUDVr`pE59Bhm@+*H*X4J$HqTb9n<4W*Gy`nE zm~5UOXL#=|W+yTY#oR|ifnqMvV%pq2a}+~yO<;53$D%=Cj#Lzf*coOE#E1Zh;pydV z_M+YQ@3ZfV@0rN-V{&+YSgvO47cA;HJ!CQ-4?RM!jM8E2go+;Tyjf+K7NiMHU-+pd zpue@%4lva(zbrvpre8^Q0+c1$S8ShG%h%cV0YhZXTN~4jKuk$6W9HG1{`4fR1VcS7aH)4Xpgn=Ler6?iL?eE`K-{#NL zw-=hXqZD9Ryf2g7M)yn&|(d?ag~5NwPaZ2L$~g4Fo|DghoSXboL0sVzAnp%A;GW zqcxicGmG1Ku#;KUtrZ3V9zim?NCrECWRj&3cE7>?z2A0!zjwI3XYL;E!R$d*GTfg% zyPv(wo|&Ig8)cw6Yb~kfWh;Q4%VUXiFA(w8B^Xp0Tq<(h{Lc6vxCw|4Hp349a&5&WpnvUxOj36fdDS8cE1COs)h?A9Pp~?k!b-^ycg1N1mqGIh-5wsp`ATICyl|m6K z0uhO8y^&Say!d=~bePiaU;`$A&2S6jh+qP+G`yI1@LydVz$k4YALk$twD7~bx7uEL z(@wZ9B`rBxo-bFt^ly%}jUmJDci-=w-LDrAO|Ry+&^pC>!dM+cgQKLESv9iSScty7`>&acABu;D}aR?e7HQnZ>tg=0d=G6-sHVKxL;3bjY)Ux z;kT+Uz<#kbI3-(ZyI4?foh_LMipbHLirlB=C+Lv-a*$RmzkQ*91HcoTU*G6OnNU_W z2ecHWR@h7m0kuFI6@qjP<@)n-#;bB@_kX&-!d(>l{0)w6$n)jS-2xr~Kw+GU%l=At{vAmj`)IFhm7|r#Ot+jRH&XaO)>k3 z6G6SNKt-tBin3%tPTCPX4h1K?VP&Mtkhu!YfVe77y7XnJa6WauYXl6wCkWSs= zuqjZ6;ewlAU7wXQ$vXSs+3gDX#Rjw<(e_<@fvQrfl(oyAf!YUUZS>K|NW%WmV%fHK zoDG(QT);bO$)U|6H@>C9%qDBg7gl$4zQ96m@m`4C_AL*K2)neiB8}LiRPP;7oh*q5 zOB(EI;+W(D{!BS_0xdv)Z=_h96uG$iwB%({oI9LPIWq;D!~@X{LuEE+Y8(M$vLd!; z*Gol!S}ylFU|fsR+Z^Kl@=J$Hqzxjju5d*<J_CEx0pnGE;xoodBMb+aAhVoQ3>JvzP;K#ue8Sts zXE^~m5VBDLrD#(CbuUAU!Nm1LSIa|OK#9{r>zT+A+SkK<4TZkBDJqS}+# z752=dbYTDITvBnv<|ULX+S;1bZrWt9=1}7@r?|5_LGK_>P|>~q=n$H1Ax)*v8%E>$ z?Q;43^Xuog2a9t79kfr3Z4l5dnJ&WVm}BP>F=6@$npD?$v&+S@6gN7p7O)xUQnPEx zz;~az2p0|{GmWhwz5F!gW4hvl2WwG?B}5lFE!wQt5^$(5WZEzh7e7c6ZSwS{!&X4h zIt*2U_HPTCKbFBhvLyuEp;hsrRO`~HMl?eQb->4JJB zmWzRK-psGQ!))JO&-M>a>|h$tqG{UOgL}QVwTl3O1zm+&iOh2@z?5xOW^%!Pv7S^K zlBhP=$+ZAQEzogp&b?*U5o%x751&o%DJ%wPnD+Ma9G(|@hR!hu!D9#U)FA8i5v&t` zJ3Tir>SXz_F)j=OCkIV`d;4L&T6zhhRoaU!WqVtGzFgbmE3yq(X={{hAn0rMqyw!4 zVIUDDqL3Q^(Ma4QvNz!i_DsubzB+?N1seFou@wO>(Al*(UcutQkVqofy`tZ_*BK3o zvp_SE`q6z;NglKwE0*sIC;_oCbPmB{j;&@N(hNb2>w9&9IMLp6C?Hi8G^?k$wiw|%LC{sY5#E(~K>TrrEf9c}~o$`88 zt-LyANF@^gyY;D8JBkRLnxN}(5cU&*Trncdp5f49f<&FdG@-%tSW=*}2yQF9#U~+J zI;=4U^iVP8R@k=5o^n$3{O$@HIq>|(qRg<;wfSjr4eA0XkFRk50*Jr-IVG0|s}dKi zJe+}{Df?>9?02>z#_{L<>wEd#xzne$yrixi7|5+tLLm^3lUo> zNAhTL-8M=Dp1`)}^$&6$Ti&2D2l%`B<&7aJ;mC{43+!!q-QRyXgLmnY6@xt< z>4W^WnTIbKX&-PYDLv!*rYZ^iWDFyl>xM>y$)p}gX9yH?NG*MYA6g&w>4aA#OoE`j zJewbVFHa<)7t7V9ym;V%rl`8tK0|)V^EK-^TjCFN21tF`R1>X1&Qdgs@GM@gm7lek z!4Y-|nS}!0;(~O zuI4;j4=Ap9mS~%9N_)|Ki@k*W^p==}f|#%iSsFmDu%zMXr`piSK8-waI7Q`>w-e|e z^5CkPVpB@W6Cw{V$MT3T*!cHo^qnzQ@`U&e`NbH???Mk)u-=_J-|&|dR{n7gS#&9{ z?g-fz0V^Q2f#gvwlQy5un!HkV4X2Q2g+LC(y(-^C zE||SQd^bW>oG6&&`AR=TbnJ_=`GAj-Qj^1UVIvcYoP4OLq|5k1y@Nye+RBujiwcBU zPmNnbN;Yqxo%dm9l@4VatUp5Er-ny6u<-*cWdi&*0O^Y#$~ zxe)UdA>#Ur05CFtW%EV)WiB)%sdu1-*i9HHw_lzI_V zuageJr!a4vkrs$J3?yxjw9I9kH&1aV4B@iTjD`#Q;)nETks+?;Ty{4hLGTDohY1Ln z@y8FB-(Eqs_@X~nynSUp^xvvxKx^HXv^&q1wo}F zc_LaswK(P9!s|t5x18KryHs>>fSt3u0s`;9I6S|n{ZAc916}cLpXSv)`nWhMfSn5j zWFcm#K-f9h8Y_tx#Sn$07R3FwlH*(I7Kr_!-z}%KIO1(@-{7G@VC*UJ3+z2?j0|~h z-4HXdAac+V)P^3a-B3~xF$ISjv`p39O2UUj`YEnMZCVJeE8gN(Fh3o@hpXQl{frp; zk^oxJ&khyPjvF!sfqUedEA@hJz4EY4WCNA(7J`TZUjtpt;HOMp6u z2(2)7#JTP-DzQlaz@;^*K_oEfVj$+K7lu$;A|gb z-ZKEPiwZD9n^xvZAy_;5z&YUR zuns*^0-D_(z$Fc~JX4Xh*0#lU^Y{cKX|5f4He)`5BL0(rFV7iYKoS3Gz?bKYFQAD3 zEa1y?#s`Q)^?^U9m-yMGdX8UsBg~s8kooaRQFuYh;ALE2)GI!6D}irf_tW<)ZxT%) z2q(?i`~rXQ&w{Rq{Yh;WSx^u?E5hJyfF7|*Fd>TsLC)|_?n$x-^<$3_t3f=5*jhVP ztw1$2H zIXMV1fab~2vDs&dWG1}z(Y%B#!dDpK>cD`4r$Ut6TwV%_p3^aL@fAjg$^cWSB>d)J zCC}7aVb;=x%gS;%fv`l-*L*4dX;28=l~ROQ)F&8D-r?c?5ts{_Yy=8b1-XfD91=%w zt`3)o5`^Q#!Qf3Da2EtF)xlCmX&ti?{Zt!jglGuW=+J)yt=WLTCehoo(4A2`#5mkH zY~8W!JM+n`Hfb^j`87^2aN|)VKzz|kTF8mxQQ8}?-pD^)-w8JVM z0fOJinM#b5WVDsUI6o$8n3ZpH`xi*h0Fk0Z zb+O=+h^8)G$1+~%PF2!WTY{w}m@YvFaaB{U;?w0T#9^c3`!k7iJI6C;LuUa8QBIrB zDtF(lPq7!mzuZPVrkaoTzCgc^&Kive#xX#! zZ1hZ~3{i?i+XE*%YtArVvb4nD-#b{Z!NQg|0D>lGeL$sxHU;~(f_}k>b>?>f*4ybE z&UQFny$x3(8F8^-rfXDwE+I8#(c=o1vxd7i)NGp`ZCBd+o5e9w*+_lDofFX0^%=^B zJsjM%kk66<8h}2KoxGKA{WkC_*%LX@r9EST*^|C%Vtptgx0_Q=9qZx;S|1Ta15VdK~QbtW6=`$)|Ttej}};aN|+#%q4wBG z`(8VXC8gz?L{s@pcZ_6W=#9Tf{a)3=&SxH65zqL4t7;GiTBRvQ&oqSsA=MXR2&-F^ zG6V%U!E4<|3a3LPVWCmseeZhZvf?=oouKM8xA-Di1=>@Plc1#M3Ge3F#aGGdVhG9{ z?(p%~vjfGn()A^m-YseuA1td&SCAE>FS(d*9)4?~E=ECCjK1Vz2t&XZ^6m6|;au}u?wdNzIN>Ph#obZ9;n_H1ZU78^e`4l zX=5UhE)N4sptf>*>R}#aH-N$5r8bFdS;$$JBn^o+jmi>aeW3QfWUY5N1!k`t4Qh*} z)w~bxO+PRq+`Svzfs5~C`-TRKpy08^eQ;~7HV0*=OqS>o0d1uQ-#?=6T0=#0zPP!* zUS8HouW&@YhT$~YssoeLuREBNPSOsK8`SuAkwpz=(FloHci>Vy0(I*I9fg$O6RocH zcksKlnOY*~NmI3@Cn1fuoGNU~qcZHPz2CX7N#A0gK+&qwgQB^;}$=_-s5IYv%LI< zul6RKP(29T&4jUYI8)D#a6?N$2o=H*J%M?!u+g@;gM`I$pX}-N@(HR(#rT?&hPo5{ ztRMX3dik^m8-?_NQAi&cg*@voqz{Zj0=W0=K6DbaT^7sd16=or&cIpNtmBJxkLT zaK&JhJ1KO(T$V|&WMs#@**QIL=J?m!cbwEl)JpSyjX#(Cqt^m(TOB2skC*__>e~eIC-lHIT>RkXuEPK1dx=;yaJJIdz$aea!Cw)|67a;g9qcrc zr8RF}?ZUZoj3-=B{eI`Iz2Gir+y!PY-|p{xbR>}J{M=qzHwv>;@X^KJP<4?9Lh#XM z!YUm=y)Fz6G6#%|)WSbVF0(*i$SwQ?w>)hlUK%?J2}>yS%0ns%x4Db zN;ILJ!8D7-R6+C^AqC|HUiKJ+#UVk%a9OVE`7(ywDl6|~%>Jgh`@-@a=HV?FD$5hR zhPiVJ#76}If5beL^4e&yEKjbiiBXI=j8j9l3-;u7~lS%5-KxH?Bn z@?Ab)d-tOG03IyfBz5aFZN$_5`Qidrm3)h4j*|oU(l|Ks@&fz;XSQ2c(Z&1++}119 z`(g>5>7qH*A9NjT15pDPpc0GGGL0U)q+~JvCj3hSi5vum=8x>!A(n(V?{74Ap3W=v z^S9cw@_~Hjf~~^QEJPE?MJd?m`mo==a6H-F zhZl{>T`jYNqa(cY;0UYv z!NsZEhQ}T+Rq*SMJ19=Vov^hJx$g|@6He(|HlN|FQWq#3-S7pVK7`TBwNCF2@Sw^a zh5*kmJ=8*9F;JKKB-Qu}X2qbA3A2Jj)o7epNQg+e)dy@->BAu{CyBB9uv+l(^y1{| zT0SXe0O$pT|DUjyF&g-DMvV|lHP|)+fv#FKM$pfi$FCI^qlc=gqRj8U7IFry${@Gk z$Nk_Z{otnse2yJw9DsU(Qxc2$>cu@jn1sU7L#vM^V`nMBSZobrnF?bZ8+wXBO|0iR zcKn#xm0kD&3vh*l*^;`vn!Q@sGb~=;oNquQ8gDGU{jiTV2|it${wy(zm|ows$Jlxj z)jGkyIQZRi)xIo1^8Uh!z^wc0tz}?yeT8s?4Z4{WL`r^Z7gV4kN-~&{>D~%}QD6_0 z$m%-_B>=S#W(@VCZ5g#0ATn^N-|f5wNM+d2wdh*oDLJ_Y!uD+u*wHqcU-zeR$VYGB zkV$J3jWd;0C0E~ldChATz-KYnn9Xl5aWC0>Mq2sghm&`>3XLaGfC)a2)lj^a7F30j zuqlGGM;d9-*d7a=+ZKF*Q~u@I*EUN8;o3cMx>BSX&RV-v0=!VUEQpA^_q8r5fdMbQ z=khY5)gFKeJHXr81I%#uzSfmnY7g(Jyb953AHojsw)OyPYgYzQY7g(Z_K<)At@Z#+ z*a6B$Yz3uMh#`e6_ zkjCLknR^5J7U#a0zMiN-zdg&>5j+}-ijQ&y@F}P>`pV9N%kjD#rc(9uXRmgSV|bbh zJ^^mb@IE-x9H^?P2XU&>fUPcxq463K4j@-f$)^SpC!{g-qMa#Rnz3B#3&$G1C4J!u zd&7Z@_{fl(b-9<4o&+>|)eolO1PS<(YM~;so{#DFBvDhlpb7$CtGMg*CMN2YjNq}i z_seUKJkx zgi)Z!a;C;cp*A9(AQDN(CpfdrE>N z8wAD16#Aqy2;fP9O(W$f5-6+xcvN0wm!984mw^fulyMyoK0bne_r5+V)+tV`(@*{h=LzT*Kx#-_P&;QPCF|vc-u2q5a?s zxu2GD%O`%Y)TwQufqJ?Fn%@$^a14@w1&*t*s0CQ$n>_B)-zZPG@rVaQ#w%fbLk zc@#68yJVUTjAV7?6eb|9)=yAA8QcGJfAJII{#b(+CGwna*eB+ z6oD-L|H27p(XU*~yu?j@SIf`PkC!JiT%Ch5vERQq`f!D(HV&IM$o$)@l#?eXc=$pL zL@%xdisBv5PzWm3Ml3Km57{27W4_Yo3 z(eC;r@fr~{iWSNTfn#>FCaBUN4_JqQ-Dt4MA+n4329^-#Z*Qr0IO{tKgu90QM{o$j zb2La&{DlTb2!;es@?fBAL!jy3H$S{SSf%wQhbPgHHSS)P^+@V&evrTB&uw%yG@vQJ z%?rBD5www&)LG`UH7#ccydU>$4B;FICGrj&&1#cXiwdTF^*jjNU#?43hw@+v-VYaeEW){ zo0=E1;v=zE2np5$S`7pw+|YAo^CuxKr$@M@xn#J8agOhoh|U_})rOTY?LHXWQ15QZ zjKdp%G%u11p$m}{V0OGdG@}YUGN0iKoJ5?j8W6KRozG9M?GcWmGk?~5xOr|7*dpNU znLS?o=bA_RAI1vji3$(_Qkt_8P!Tpth7d3#XbiuXRh|#|6(!+URhoDiW+TCq3 zS246w9$si+Cs#OUgF94Oz*XBIhBH7d_Pa}U7Xl6(&R?7S(I&A499rI& zdaV?Wi?bv-49UAV{1};nj}A3j0psxzOsajUgLYElyL3quvhuV?yf>=(XT+cG9{&qI zI}r|zH2=)2MmxZG-$5r)2#k&Cq_mE@-c*PMJ>%cWciC4Me9axigS+{<1H^XeIq&rB zrnK$pCW)@B(GT53)uFp^Xs{iiy8mpFj^&o2cE&!bR%P$XFzp3A_Z4H)?e#SmZEFCv z1z=X&XPHoY}(J@EF`p_aB zAnwovQo)fxZ5$Zm$Ww}HItRF9P4?^UexRrs9m-W3xx*ko zH0acFi|P)=646!gE;yD79^Cq8SUR8fg4n_Ka~BY_GG%Sj3mg!thl~sjOeG_hGAj5w zzq7yyIU$9V>QJt7%@$PGUL}XJsuZ4!BI~n~$co?a%gOo>83x)lf z4`h?+R$=jLWXS9wUOOyVIyVhVwk{M~velKuk{udK=N4iqp*MjlMHf9P$9i3Fv*h+~ zydj;JDcIf!=G0fUZkFiQ5Gs`Or7af5u_RrJ0kpgY0Wp*z;$| zJZv|9x>IIEqZ#tW873f|ISv6g@=XN?&EVtoXY=XtjOnW-ziy%@RYlUt(R5V_1Dp%U0#AV@ z*M0B+4z3Tv;j{)a0)M%+-q@_PMm;Z6R~Aq}SKQAluUc7o4*~1#e#fmUe^)eC=qun2 zT!+w-B~0S^2_d@QFLC?Y413f~Nk$m~i59zhdiiKivm^1qpkvAcbq{D)4iq6z2EXkG zJ5&UUo@$4x_BtPGM^Wj{AOsYwJfm$wdfZr@gmNuxuTFtwJdlDs>hI{u(oMJtjk#hx zF}luhHc=jB7~~L%zaCMi1Q^Q%{v%Q}RDMK%sDZCyL8Cql(hYYuT9J4&3{7B-DFvIr zxXDj!4I=|JHxNujIK|8X%td_tNp8B^J6No+BL!dS6`#mhbi2!>2{+NPT4smyvxD2k zQfSI$?q{4EC$Xn{FQJf3uBQ;P)LfCr9R1Cr9TQ)>I=`C zT;k4D299b7kJy`>WU|AOcDYoXygX#*7&#qE#sOYggGKSF)4;4TWaqLAtvu1BNQSYC z6%zTU#N=ahhL2oKW+&T??Urz)#&ZT1?1W`6XATr5VK25??G4_R0Jm@fgTM*S-~oH1 z)8)w9XrEFL7d4b;ZuFwEG1*q2*3I41bat-gJAo>Umba>EmjnT3lnB1 zSC4;z?rD*7V{Cge%AoMH<5L&n_in_C{|Oh2>nra{#0Cg1EieG5q2+QB2&SkU&ViVs z46v+wxWxm@#?d%G7gjhY0%IU1Ha2M>K(!S(ScVJF5D(eFkAB2oIcm)Z2|(lnFW}@a zZFT&7i|t7V+oP=~La*=-MAEJql|PTy72rt?cv=IVtr6HLXSil-hU?+)IlgVMPD&%b zX@Cf)gLT&2`=K)aiv9d>ZKljia!lRLX~BhhOIu%mA^X3R1pD zS-lVxwRg)qR=K~FsnacKX28WM=#j|eJ;t|O&!IUPu%}KnAStoKAK{n06+>34K4@e!Victan@qVs!<@8GVmv6AJxQwXbGVQi z`jHxLPczz5Za0x|WUL>3k*Is}Uwze$hUd0LPE{ttIZ(J>l6R!wu!H`BlEJNTc3Xy1P8P52iTN;W~w?^yl!5Ywusu-4G)g5@hKbEH`j4D1dI1MJRbPk2|I{C ztz!&hU^7=&Qz)m?0w!@byIEdhLaByo4f@1+-Z?+G!fyO0=9MkldOMBxgeD>stM(HcJ=Rq1?q{o<9 z6e^-$T|o{4b8x*!V!YW>+{Pk?AzBBU5q#DL9ZOo+Zu^R9MhyQY8zOYZ5D^|E@ExC) z9RY(kmkp*?mlK72Ag1ufE@Hb9N})KpB$mQh$JJtW8-XTZunqP5uZpeSN)`{z`D(Ad zsmKaa*PAGYFz#iAnLDn)T3a6B>k^-{rXhZ;8lBspAkZD$_-CpZZ9902+SnY_2JUJl zd!UU1Ba`eRz_bdc3^<5LEDVXX76v)i*FG*MMr@RVNS^yNDk06$N^|^*RPO_KF{8iO zr`l=ROFKKjcXtsRjsY_da`XJDCD@E#<4|2nDD3teK;Bkmgi!arMHK z{Q52?V@^7Heq#=Bu-ft{v-O#(2oL@gOG2i?B(&rq6QJE8kH zy)F*nGFTN5{JVna7)OV1$y`H`y9RNT%pJ#kT3P_;lm!6FXy15gjj>D4A#^a@bOS?? z@d)Zw1Ju;rZ|3Jv-bCmNAExh3`FZ#-CN5Gjx15eM8VA-3cYXyIuTlg`xJd^}&e{QT zaTxoOX{d_MMy4$WWte>nLAwCn<-UB(Jnpp-hmz!))1;&Iiyp=Anm~V|vONpwnNL8S zP%{yx*A+gj2d~h2jj#Y6V0~j>Y=q?UMDs|gBUwi-!HHiYw#6wEUR7a-ZYdEB(CeCi z{`y~L_%gl7!3f97kFTZ%^2;SkUr5A}4-^2BxYh_yTn>oX3K)L;YehQ0{pR2r#wP!8 z#;ASW**ENUSK2t-l?~aUgu&W(D3wrb)^zj7Kz8e-PqwGAisAs%IrTK54Uv_I*OHAS zl;yX(=|zOlk)EGlogILI@{z}A%DbGZ39kk5BR&FDa`>Cz`wMgoMR|dn)&g?-D%kBC z?_*Oe-FIZ^;_FkO#g@s7#ZJXCr7dr$nFnZjm#WGuCesn&S6i+mkFac)MciC?%WF)< zvR3&NV0yAn!%%hql0+c4?!5vpwT(;RT=A9K1a*uR_7d=!(HSCC7}KhBBC8k5EP}0C zI43YJM))5OBoa}x$zCM)!dLJpupIUQ;aulC4CsYAULKjk15K9lxjZt(LL;=Fyd7!X z?BSa_avk7V`)W$40%-I?SYnjcz-9!SC1aQ903V1HFg~5fRCZ&2dB*P~_2OpT$hWKc05`b+z`J>aeJvAV%wGe`QiJSh6Ck}Uqy$+ z3W4dp=jY2xMth>00gm@$WB#z~z#L#BpJ>NlBV_8DLMKacu?|JHnC++llAh0mL7>WI z2+AtQ!o|Ajz4}UKTz6UyMWfZ=1U97y%8F%o#W#{l?N@RVRJ&tkkd9TIL4k=<9}nnDhZ=d!)uX%yz6Au%VwsR_YFGmpQ$xE}es!Bq z*b?7W2^3+0Z^%Fo7MFuP;&rB<&=#mYid046&@&iRtzqNh(6dL;N_fOc!>yH3r3mci z&XVr!mo+g+(E?EA5#guudrr72srzROK10K_Cu)!ODB7Jqvor~Dl&A)M($nzzjFR<% zh~LOfjM71S#5SHk9o+fT;_^%pvBPIiD@IY`LYejVFN8-zi59GH!U(4-nk~-InY8w;~n;OudfQjw4Vym123_y=-4) zBNN~D(dEu@gkN_hdN^MMQ}RK%lxt13D*CDyuyC)=xL4~*m@s2MMJ<=s!Wrcp7cu9j zmr~-+zsk}p7{a16surIl7sM6RFrIy0Ua~W&P(KjDjpi2057qAh5eP>s zafm}8@GVSy1Vidxf*}eDH$jHHJ4Z_dnpw4@I3#M5uAy4JL=(Xg+%mD!xa{Cgl#*da zygT@Q?ync&nItG_x~=LcUB52kv@VaVJZ5q`9C{Z|XbCOD4|%Tk4KrJ<&n2SZ<=ZtDa1EY@keV%nEtP05t<2+xc=ng~yz3FV)h_5BM4 zlA^E419u}sBS!c4bzJ?bm2%s z6qZ#tmi%Rl-0n$rdZY{*74@^CEu+w$`+o8ar*(bmI_*w!8 z*)J{^R)%>KKB!K>_7jCIQwDkZVKy=(6c8F;rR*b4W&ig;L0f5f2&wY}HURvVTh`nO z%L#As<=5-x8^~JpsIen@i~%T16q~OqQ_VJE@ENwg1)n}#27zK>YZzYJ9ZA<4K!i+X zbah7mL$*XMY$&={5yYw5% zD+UYx=L=rMcFvYDI>JK*6oOmfv8!{9qo*tUJ;KUZ@tZ6S94&h{%9@JvhX-kp&=en# zLm0Hm6jWH5AnWVnXHUO2-wnS<$VkCm?m`M3Xp}Fq3IO~w0o0oU8Y4TwPN5w~!vl9} zdBu)L!ceZdY}zkr=JM*^Q)NonVc9-DG9*e{sv;6uAmh;-zMEg(;8UXfYemX4 zxN^@NFMRpnvE)p!Z^6isODGIS1`jSgY2ypV@Lrzcc z`Ve!Pm8igH8!~uW$}n8Mrld|i?Q}{ZR-(S-P9+3wSiU019z2cN^(8kfAvgi`A?CEI2g4b#Vqz0) z90q%!$gu~{Vs?GWJxB=N%09%LmU@6CFx(_dOBsgIHKke!Qn>5SwiE;gym!U0bC53& zf48dTHQv=vf|mDsLrgHKE8&!3s~LD{z3{zs1Am437ACD;3`*N7B=#g&+(f6=Ubxtt z85OO|01QzF76}Aje~1fPUNVI!Ldx?b=Fyj&M`0Bd=r9`*QDSkZVqU>v_sW;5Dlm-V(;C$SksYze!YcPvE&I8g3lXmauDlcvbIDM%0ZFL|!^<0i z=cOGo^(XY2A~t-rA!6XVwe7O^%EZh*ls6WI$S%Ztb}%Z*r8ox&YCC*X37y1*X%AnQ&PkDZ4<(b zSnVzIrJij3yh*1hgIQ7bmW%4i#&4N)iZYlLWpBBto^1S{NvEhDn1QTxd&{L8u;OpK zT7JE_4BW?#HA78%CBr~Uq>qB!1C8_h?7h~8c39U6uWD1AOSJ$))%U=e0-#*WO~}y>rnobU~N{qa8Gfrj3MqQCl>#BT|=I9AWu7x-De$859ECZ33T6q z^?}|i8pck1B-TfXV8H>9JHEeaKTav0aDvRnYu{bdZ2`6%2p6l(r{b1?58r)Mm#@5? z!j1oa`MKG{Klgy+G3@LK_{9CsR~9cxPdV`Dqx%L&#&nwnhx^(`rqC&l2qsIUH@v)Q zYnpdxw%|FSnMEVcxTrm8VH+la$91+kWaGMyWBDu((uXe&-RK>)B7VE z!ke^ltvsQoEne}N|{c(~j02rqzSmaDEso5cRKocg#q)K|eU-r)*lNGVKGfjI2T z>j$lhU99fJpLaW?RFPLjpmj>6f;TXl%o&JfoO zw^y)dgN*@@zpT}L(ly_5unJ0Iu;mNv11c*rj1;n(QpGrpg{0KM1a$6p$&ZwJHK4HF zwY@C-fjbu38(Gp45Mw*=xNiWBjHy`XTBHLdRH_Ct?hqf2Jda56orG0F-5g7H{}BOn zCzOcg^7P4!8@b2eON3&p2z#QEXv4lxM>bDFDnpaKbHoMmD?4zdlGL$1gD7GLaAWoN zavsbuxC#+xjJ+Ei|9P>zlVFnsU;!oBrj~3NEAk#I691my-&6d1cHhWlfiLa{mf}5E zJwCUfOv}DJE}TFQ;kI8RZ{FaJC;c$FeB=~?xu6pLk>H~r zH*-Z~)QDcRr|-B25bSsT;Y43?d!jykTI#Q={rapiCRPKjMB_dY!dq72JE_C@#DU}? zwaI0C`Wjh`UpT4(X|3479%j3|2Z6RzW~&ZFa3QM)*jZ2*4&DFDyJZ zVzlx^-huD8hn*R$j<85hhU`LdcW#A`MuDa-2?aI%YTl;GBS3mgjBjM}ck zU)&>jU$(~@VUI7dGlu>cD?}g>m^R))fi+0AJHz1Av87-Ma=HZj?aauiqPL5~6`%Pv zEq|7Sng%B&AB*aUdL#nEUv}5}#KOH`uJRRq47zeXI6GW&fYC>7*clbn)(G>{ftt)B z%f57*r3MK_a#pQ2A>r!%g3dxx6%J+>Olk81(Mvepjcs=b5(a>;tsJIS%`5Gapdaou zwTHxKhz(gGR`;`Ihg_PUB9^je|Mvz&vmlq0U`rw(D^{HcIaTSDUN}RHuwBnlV$|9b z^@<7n=8LgA}0yO-^YeBY#fvxT5K$Oq)YXVGMJfb&$q8i2)+F_xYkWc3}sYb0f% zH}=H1Iv($34H6EE=@8(#A_yMs{r`UeOp{Ck3bPx0^B4^8tYXU)91Xil2u&(E57&9XUe zZW?@mtZDx2syS#@_;=BKo!%Y;_v_}a`FFto5x@V@G(X*M_L~`Ut?=Ix|L`5V=Ct|B zew)7}?te6Y()=Iz_wUVP=J}&#)BMvXso|*k9(j+ON62;9{0`4Y%{9t?guiUVDInL# z`6tb%=DxYY+dm@zpEk{h{{h(RW&sF3#n!x+*3JRTaL-l4zXSd``l~rm-hcTY(kr%< zxY|;Gej+^}9GJf>EnhVFfDYPvAZ`BBwgk_8j`m%mjz>sg8OZ(kIa+%R_%;45k;-;F z61)=`zY8f%)Bce;7Ow$W087USK_kFFlDxNo;jSxb!4+`+4o}w&=k*ch^#-MLG_|Zp z7`>&`gD5BDVx4RJ{XyQAn6c)UyU1~cd@NB@@fj9*y95-Utg@W9(rS(#>(hB@{%@Sw zN4YmrCtFDRVND0<1?T?X^RF&*a~uW>4^N9tywOV)pEx2Jyc`?s@asF#bbF z_Qzihl+*mDuNu$M{3p)HF>>Ew1vqUsfBdH$>3@AMV_T?S=j9RleS`5lK`xHlXBpv3 zJh6}G_|NG8pFRh)9(hpg|D=*JXaCRt$4MhOaS5H^FPF?xhMv=L4+vAa)Y-H`N+cFe zC_8ZjQc$8<;+dUv(pn&WE`&n7OZ=w<;lxVfe}o)5am3&t%t=mv^r&h6f`rP2c7Y|z zzs=wNn=O;S!!OwZf4MmL`xL+b9Z${QjAJz~pQB&evn%PpE{)G!G&%cl7b!@DJ_%BRv0oclqE@ElMYeDCux< za*WEd`x(g4nOF1YZ-9s3L0?jT_N|cCHOA!$7%|Jg29a}Ko8N1DAE9SUHFqgl4DQ)*!j%3zZ zA}Qyyl+U(&#vAJ*J78Z)KR*MZ{=d(WKtj>=MW@N_3BBofU_^5qN{CPXShAO07%V+Kj_3ex_!c)CF8=Q4}9IstE2c!SRJ zQ^kAQ;^C|cFr8~R&%5c`3ewIT<#N7R8sBiJ*xEIdT0db4G(Xo8oUVcY+W&IGZ!~m-x>6ZSkI&!HnQF}mc=Nc5jw`m9Dwm~ zR?3{?uyUBCJVKLle8_z|ky@zJ#9D?Za)uTi%X}#dJZ_qIaU{REv^UdQ7gxy)V~?-N zfLdJ)tQ&lFI8f+Nt42%to7|dH%sM{Dg}TTaNex&FKZ`Z>V*Ep03TZHxGLsU|vC6p8 zl;?p;h5nq5PK9KwYUJv^1`qf})BJC_4}I+m*jtqT3-GwIrVe%nge=LpG4Y??JVCH`l^T-&Nnka49`Wbi=`=ES} zeG(4xzs4CE!L8_Pi8hiuQAJcaG;4m3H;&=Gj2yKOj#{R#E%H@TgHjOJZ;EW7yindi z9zvCi>#{2~Cg%AsnUZM_Qj?#C?%J0h&E6Iq?xDMSARGrLj+>@R{iJ zsvA;Ya(#d_sy)q;@{3E`&nqLBH(gdx-mrxHM+$^t&v1~L8U0vl9xJY2u4L8W$?EM;sqFzJ{4&!!ODJ57 zQk3=6OGqAfhrWs(0k!X13Pnf?bTvyz-sN=5&YtvE4HRg=5zIODbcODpVNWQnFI>WUZ#vB)Ro~{FNNvR02Ip^borjVupA1JHhXpES?9K(vJKdTyk%l z9gH^}sT}uc{bqjYBfnLic2$*J)LPj?>IOv)9EgVOR>U^gv>Qt;G5@?mPjrwU;t3wf{4WV%BMu576Rp zAH|lrS|3Hp7xiTJf_f!uI6&RxM((57B8S-2dG=W5A^P(SPGh)@#WNOXw@MfPPF(`s zxEzst(3fyYvF~#!9USpN<&u0)hdw(}k?MY}cT6ZdmO6spT83qWYN-+CtwXCDaC_ER z9|xw#SnNTwKw>+(lB30L^_zm9`A%73^uCpyP}grBmM_o6aE)Qigsa6FnUt&5U5DC9 zzbf~ISVTo9_BWW%N+cUYE$q@**XGc z>MeuV z)y&3S3EzkAu`$xjPR!HFWba4uw0ATRlgSe>ZQsUclX{JE2lKm$4l$To^`5yYO}Wyu zG*3J=^?qWWiY{WVYW`$jCAQdG)Q4B-m?bWt6X;r@j3LLwKAmv1SY9ud^eL9cytK;e zkqAC>S*xYw2{}5WpnGOLtGXJ6LA(#HBPy*ppYUBc^TZh#n5tLvzi&n60$z$K@U$_jp|^q{U8J;I1m`Tu980OUo}Rqo*b6zxVwi`T}RD zovTrIanzD3T0!wSm6kl9j2`+Wzon02Y|k^+JCdW-4oaRYNbbBw8q*HOaq@c8l8Tqj z_q*zH0!C*&QBUTGa}Q-$+R$IU39qz^b4E@$w5zLa8^o$+CEB%_zYcMgNja)niFwEs zb(cTS$^cF^o)IhakSx77;Ps3E*Jh?k-EVI>cH*lndo)KS$Kno}ayW8WavXZKG$0F_ zjkL}A_ryHHmm_^pBk%5)aI;bn|nkY!Q6H)PGX_ zi3%Q&U+mM;e~pzmg+0rWqaTiZfI1gPT6qGgkZB&}mWt8XA?P=b2Y&5^hDa-7$zIt7b($ zuTk{ezsQ{H0r`7rmJ}N~`3y9=1kLLDrHnaisTy2Ddg1F<+puK`l@uK+BUx!licZSW zOP}4AuHiX&1D{SGeQv<6N~hnJRtwJ}cuht&Dyp)-@h*6F9S|_#A4EuK0e~w`B zTt+u03pmvp?<sxfA+ ztXFOFD2`&cyH4Iq>I3BQ8b$4U*W|r1`pkEow#-$naJFtrZP+KW2+Hm1L%xc0u|`@) z^kyC7m$f@b(f5Ojb4|)ojiN_tWhth$o}vZh%j|g`#mTuUis;Wr+9MT%J0>6VD0Zd$ z6JNDvkA|YHq(@t_?!OUJxL{dnG1k(($k`*&i&3q*h?8xUXm4gqbYh;0x0hToo-gzE z0i4RFEm)+z68VyC+Ci*JQf!X(%#vaRx1y@e*jQPKsz$LZ{n@!A{Y12ri@vOuf%`J` z%t_Xtx6E5gUb0P;|{3&bplQ(=~93XA=5*wPe+y~^ZsJ6rhWY1o;x0?JX6Z2Ga zSk6=q$fGoequ3QCM||o`w5&9~ob4P9L#k7K!t}~&4kqR4P1f_W-TMp5siapd zi9CeSWLbLkVpJ60heKU_jkeQE;(nQ|B}~p$QA3nlUGG=zZ5zd|w1kZBwkGKndUWy- zZp5slTg2sFVYI-};$#Pn;8wN-`AUD3JtKG-XP@IGCg2OL6%I3;!!@wYar~<3KDd;M z3$YxRo38WHK2raGXJiu>+A?n?Z=DuYu9K>#o*?iMi0zz|Us@k$VrmJXDX~zT^Gt6$ za#mjWoHw0E5INdkN5ZQ(Ze60DR-h$8xkZgvR$G!;6Z2G(J?EnArG5v0pJ>JXEe}{5 z$G_<5PLJxPB7JNg|B;-X6&`0j?om@Bik>1IvcEUI_?VksM`LcOHa78vD0-T=*f16B0mZ|pC} zx7e@IA4{7`_r+=5VO4MF?-r$0zMMR6bvayv^?vT89MaYy=~3@k`JSaqw>A=8b~gHX z%j7aDebHO5d|qoN$G>SQ?lEpN!ktLTLYkbb+CLr7$7t2BMXM0mAl$L;@o-zK+*{Yq zk|}d;M2E?{x8rTEa&KKbWfyy`{oA(oD)(P!d&gTZJBL5+;}nuIz_B&%ovV+2HS;s} za_nKuNc}3MsRL$?mSa?C|I^>ygV$+i#LTO=o?=|A%SUk1WV4r@ssZedgy49W(~)uXjgl(~F^d1Ans)D{{N}GR z-5RvgXjytbiRI_qeGQPWX8-NPJQaP!o+>4iTIsQp8WMes;8yg}#nu=Ll?X%hF*#SI z<8<@IIOnLRTM0dQL`S@@$V>2bJXC1Irj4>Dc$M-;q}0=DO=#h4a<<+#~I= zzoxM!YinYjO4>}zMefVnXO3`dQ(RkH=YC-AoZE-j-sZ0OUAOgm*Fo!rN&IdUyRtmT z@Z-*Dw*0rsIl^nmamml=ZGlF*k=InXJ^V6i+>WiZsrzWq@;B1tK%SAcR&vpzAkU_! z0=#+SS{uwYLIs|W7q;{Sw%BP9CTYc$Mx}W5%=kS$ErrSy`1eF8k#7wMGq# zkwA{ zZrm07Z0kbLs^R;&fNhpIqq#?TOWYNrzkqvGa&~$nZyC&0>Adxv(4j^gQ<9bU2^t;hXMCffZlrHIwo@peE=WTi1j< z9jP|nK8?I2mH4?`=!cb5dtfQQCU=N)HKiPne$ew$Ja-f3^+V=2UtC^?Z+M9sn?Wl* zMwHb$;0Si5ebuKgaumU^-MmGD0e9?*q0)-;f(ny0#bF_*^)nx{&%3imf}k+0&3IcGQt_P3GV2eB&MrpAjNiZm-S z!u_q^K%135o@>j|LRlXl$1J=e<0em>j9q`L6J8}-bBTT@Kkt(G8Zln{eVl%&5h40M z$<{9^W2kSXB~PRk)N53`(ZAM?WD5?pV`B-Od8_Y#Qg5W(VU&FJE_=xnc_(4yBr0i3 z-{K|bs>{P)oV3JVjCMVIYIae6*=3J(h>~nQj9|4ksN&@_kg4@XOQU%0*f}P>DIP<^ zHu7FGm=DZrE443ox#Ou* zqe!AH^Vk~c%f*p81y%E2YTje3Yh)6pNvl5G?K*peI<4< zD=Or!vfi`ASVsMT5$)ynMnBPRyyQ{rALsRR1TJ%r*cP0GleJRHY2j5bDX)}PNn6~( zqenxjIrnlSrrCm}KE0Po&j2x+GV{8^jdid40r{%+$JSB1)G=-2@6-Al!0F78-?cz~ z!L`TvDd)s9pJ169H86l((J1ltKA$YBRY#BGFpO2WPPwlqj&J5V131U zxpzn1-_O57mq~J2ubjY1`L=$Ylpx{}^b#1&nrtPI*jq~)?c^}bp!ttY+W z17*cWYnm-22M66HPCbfUN%=AS7@dl-mgtDmc8)P;qQ7NT-ib92?2=5Xc_8n%Svn2% zxj%OqX|78Bei(Og^Uq+_Hb}_%BrC=-3!ja+ zl}3|f+6KHzN|L*tLLa8bbW@2N@TwBYDg7HomDeG)aRXkpwuUh||KL$cHjH9dl(h+8 z{lF5ZnJ8;wo{A=DC6Tw1f{V9A?-tE8u@SS<*$VHCKIx+KL!QZaI`vM#ulPX8k>YET zwmN|GZ&@Z4Ece&DW=Xr(zcS&m&6~Mo^RLkl@dqt=cUr4sgkh;ajnSJaZJba}W$~5T z;yCt35QrzWJNMJ_70$ybeV*gc$gZgOQx6VaWm#Qb-{f4v8HQ>L{?}yH1CX2lS1l4yOyc$~^*l_cryFo9TbnH)ujQR2 zSzGyA=ABS8BcIh9$QDJ8m;DQUHE+mk5z2)YVh@LG{_w>^Y59Y5i_TRzM;_nt+I6)s zf||6g->#$X0RPT!BIo}DmRrfCTyi|&&y}X%V|4kaTDo{al3aRV86BF5GuPh|ax>bu zShLA9G^GV0Z^b9;+oF6c-8<`<$uxsa~`<6l65`RDvCC!=cDopo0zl1DV3X%L)5jxi(PTbjkuM~ zs8Z4+K~$qC-#1}2N46QK;z!QFQ7Sd)`3Q1ko%w9D*X4JxJF}Zh|13NoyP4JO4q#Ot zAK!_Kw=`srPcOz#vc{XKLZgeE3aYe9Lg&<{&8td6_oP=APR58Hvb@)^0k5(!Ys~EX zj*>L*DQ=Ok;um#JN(e@*sTSoYyVcuX&R6!2u*#Q>xgS`2dpr9_c>p!U^iq$rb8To{dj3Jd>H`e=aPOjRHosM&`&J+4a=6642?(!dxUQl zeCovHMEuP={=@C><{9QJuE(oZtaP3={cb%`L$(~1CDWhBbzW*!^nLMOEwS{HC9`GT z5xr-P8gxH!v)&W%MrkU=YmU%V!W}KSds=arq7tsGmN?73o`2DDONqTWm1WrV>(bLR z$A9Hp>@~gAp5UGw6&HxnQ%P4%TwoBZvSo(w$nE3#F&~Ku_|2!qj*hfZd*oa@P%R4z$MaxuUsH{| zS&5mjwI;oqh-*B47hgDfC!_D*ii~SiBSuGXOwV_$vM<6Y4bIzO+wZj?W*VGt;KzikT&{wZI{zTk%?BC;z&yJkT;kamA1NX)_ zM)@nbs_U@)$vNJrS1{(`c=Ue-H?9ocT%q(#Y`xv!i%T(2Lo7$7(a?E4N%m#1shB?7r6PYqGSb`6Lc2ziD2y&sV8$9X&`fw=~ti~lJ0EWm%7bLdwd zNhNFv^v9pXe4W&4=DQRe?Fa28J?HU@Lf*?Q^X}$$v$gCg%{2eX!XVoCY?Bz<+Y7$&0}Cy$@*718q4Z@sIGnuu%C!?B$X{oF9Avu{^J<6bD! z&#-bq5j&A09$d;7x90p0(i$seKU358y;@_{Qd?A=?kV+$Uw_#+^^|C|LF;cHa_qO5 zle(p8!?7r!<$ zgEtZRq=j4OGEKGQBR}Ij=>1Zzjq5J*D3S@LARky@#0U60_Hty{3}K~abJN9!lAe6@8aVIC>3d*6H~ z93Q+3>>GZ<5pFWFgs~ol(JddA9%4al4d0c_I z8n(fmwPRFD_8SfvxkPS`XdJOVy5;s@8qafF^6JYrvVOP@<#}7@GWzs<@zJ6BRODJim_6pZ_ zn;pA&pT@bD#?L({XQIk&c_wK#*_nYVzqqWx2|3bbJYrl0*CO>1+Z7P+Lw6iDEApPH4dx|h4M+Du7UDgjlp_~(t>_E#noKyAM%^7Ic{?*2nstapfz zE_82Ack`Tb)dJscBu7f@P_o|b!jE^Fi z47QH#t8E5}1{S+@0$$=0vA>=O*sD@{DJ zT3&B@lA{_4r9LSACTZD=jVBz`lj5Z^dTK%*@g4g}1fBk`3NHxIM0*;s>6TcIuh6{` zZOcZyG^gb(F14NF=Z$iF5T`0hZ)^Tw8ZC;t10dP=5_#ktJ0rsRXVVfbuiX;?nsi$*mtC4 zzh+uLs+=OT%L=K-AnS4Z)gJnCG-{DD*1vW$RQse7grcUlf_gPM9{0ZO%fjMyoYsP# z+^PZHNCZDc*^&1iwhm%#5jwQrR>*=IWMefiyI66@~z6q;b4eQ{Zd-n;isCM=BPK{oWYuLHEJH?w{R3}%8dSD6WSNAgXuA(B_+)Ji@ z^=VjTwEAv7!YBp)?>@86EG0?Oj|EF`v?So9bu&~FR}Rlw$8SthtHM50ST_&IEiJ4^ zBvK7pD7s1>+dd30h2FYz_#2Wo_|u{*^rk0jE8InIlZ*QsnQx@n1(C_x&Igu|v|MUN zet!}D2D~4t6LBu9TkD*T?<1vi%H4*0lug}_ac4(ZIZP41T#&63u#--h@#BdNj-l?i z)2fa-;p9AtZkUS{!E!aGpK>MA%>YK#-ih2?y?M<#hFW54t z@LQklzNpX;dDD8xsaqW3KaCFY8;b&F8a3Z%)Sc&OX^|VN|D8ULILnjsq)}6f(fbNj zbI2Mv+kM#l4t2`Sx?$9|%xSxyI>X!Lg?=e*eqi2YyRc@;v%HH$&H{gAu$wpHB|Bjg zrmr3PGN>K#FJ)%*NLHHy+ojel+$9wFM1f6gSC0?rSR7RqjHqmQ)gD;2=(t z@|3mYC&~eNd2_CKXR2(+|#^ZNKfj=q#7np*MJnc+BNbB{EOMH>CHg`pU?*PU>z}%lYJ*%OdIo|1 zB;BcHDppJ2C0pf7t7cQq;zNt8W?~L$o%6_PdH4;p5{KZ@kaOD|jnX#Bl`N>uwO!#v z)-N!+oU3*>G+0m%$US*PRXR$G10UK{W1XXaM6-v5t541^1j{7XF@V3JA2|m(8tEU@ zKG=`J9EqRic6qrT*OALex}{i)%EP{_jQ$a=<81wQKk|C_7K-g1EY7+eyt$%8>JFBW zblqGArANHKlU6Xl#jQGrScgH^-8%1v`BpEEo`ac%UJTFoV2%x(Am?HG)tk?q#$isd zF;~($d_-zJEbZF#tdfoRRev}~TnUU!D)*ie!d-NxX=%AXlXIooRGXk)T;FC(iYU>c z@YsljsOw{kTuBROzB|zvxX(r36HjAO_C+mx16Gop8IR*b9OH;=X0mtdQYnM`BIIweCgHyi_U@KBlRaPOB_;7r8?D_nX2?oe zzh#airx?uBp{JaS`+*)G3wHkab5${)wgGc;snF0Sjt(#@-sJvnY7>kJbqytI-o-24!K&Ig{GIE11~+0R zkDuE*^yuq1v3ZJ)r^J2`y*_&UMsbavKghX8%BXu;A*xHUd`4gCoi_BRs*i0lws8W- zueErUH1_$$$xR8x2J$uHJs3>?8y|xq z46JFXDy#%o9lvK z=qjxMnd?z3lTZaO?lo7OS4L_Qrs=m4x9mw5TT#o`(NVi{`y4Y+3fB&4qVR6_^2Qhm z(7(*gw)n9IwZ&JcN!LO(Le)%;VB6X+?a8G*;~n9$_BUdfJ~xCzDXy!P^hZhF#_)?i z_keuHABJ;Mvg?@(Qo8OGs+VlbJfk&HLm>U6ehKvr*VLP*vu5*L(7q?9A#}z4v1+DA zusdtE#^-3kJ5{aO0jv%$tnt({t^T%}7jDG;Yv;#YQM}cHb7xY z-B0p66XMuSz)oXV;}>of$8G~wqA23UbDGpV{fsju@ug6&->;z*H93!YuuCre0*1yW zQWCHx-BYgP71V?Mpq!%jILBgJx!!qCh{>9tD?*BK?sbw6)JTR=~Ab1q0lE7VDUqwKj!YfGJ5QtScwN7N)(`yih1gIuDXf>|QZ3Cg1mq&j42q3bURCrMQW_M3WDxNAv1RP4)|nl|E! z^oVWqy(!+@tY5<^?Mi7qZPNI3z4MuRI@@NPy_$_!5@k=q?P(KzuNLzv8cl3dNb9WK zAwNOP&uEe~8y(K7ahkMe*;3Mh?u3UElCr~4N}Z6SLvva7a8!=*AL9ckuWKD^1p9fd z_tp5+=xdul>D>P<>lIt)w>_6QCOPItHDu~*_H_>#kuC5$x=r22Vn?%NQSNulYjzz%Jl8kXaY?{g<2q_(EEoodA zoi!xwFLOD9-C6Mk|DeN#Qd*KQq~C0(W^b*wXAH}^VaDT%R?8x4XM;G2Qo0lt+Zjp@ zlrlL_E4jagZ;$lFvQ@L8w9@ax(o2PrG|4>yQ&vAmg1BC0*J{X~2)~&eTGTIM{NK{W}%F& z(kSPO{iI}ZJ{4avY*zem_rQ2*Q;>^?j~nT(R6T=dru z#D9$Be1tkRTDQ(kJAHw4x8CVJdek)U{tkZ`0ZDE85lT`lTG{t__flE6>f4V{{t7AN zepmR9Z*0{u+w!!uo$Ha@x^9QglJ@|4e*PMDsZPumF%p=qRJ)tHD0{^gvMg_3^T%H` ze~Q+BGI*&im;VU6)n6eN<&pKz`_tR{ACVGY;2+2MxOt5pQVVYWobZUN}hcgGnUSt>s`vFoOkFaPbD;er8Se1&e0zFD4>T+J4@MZJ1clw zipaNu{}JVozERR&viw&vHZ7kwY+BWyF&aUC_zPn1Aa9E+5S?>U2hL~9SiJ_G`U|wJ zuQ4{9&+F0$S-Wr0hHKP8os6T-c0uQp7HHZlq)^H-6)7?vnzDm3St>?d`mIpbthdDg zJJhi&wfooFa@r@9eFttpnm@&}`U|u?O?xY~GdgS!I2;*rQ&K(eK1XSy^-aye(>==L zVvd25MJ8;exeB+LnF%@}^fWPi@yzq+eps)V>}jGyV}+)czCArIb=5 zWUbKdzN{cWKjW4gXU5l7yE=p#^15qRh>S~4Bkxs8tm)%1_cNqjb;=W_h*hg8eRHZZ zcQ_riv9SbYr|d`x?g>U}%d;-KWwvS8m<3;7 zoZp|ZBS zIGr^sc4^_2z4BNr+|4-PucIYFE{~QZviS?=mh-gj-2Qy4xz&^Pm(8y+2b3<@QL$N9 zyR@sHMaV0e#{<)1Vv4TOoE~Lp#DydjdWz}Z9%?m67afQC?Qy52T#J`Uj|9H-K~t)d zgcIrdjcw>si_D+UULSTPk%bz%c-1HbEN|64bgy#jNnK|@){XG*(#PvCCQ^co7B#on zL)D=PEv2d^LCyFo+Q&ay8Ki9W z47%Q_Sln?rgujJ1=8z*9_YxjoxL3{HI$TVs*QJ4aH&V@(P7jIly*;$2oVavDbI<@6Y|11hDz7!G5H==S9gs@>@+L3_sdmN`yx8rq6gP~ z6CGUXXV+KJ!IOUGnS2cDR2k8QyA4^VK(7(W*@gG#crs82;X^t4>v*Cvt*0MP2kIca zzmBIUtFIq~_vd&vPzT{dIr{5(rgg}A&!fmW_PshApAjtU;Ru$s(dKOp3altsxXO2^ zoqH~NYgY$Hd>lh7?lE$yPP_>N<1|tV=+W9juF#b*q}cINz`I9ES&x?TWVA=b7;B4A z|Hii1JZ~JAC)968N*V8wd^2uiDa07-k*u|mQpV@#>1dCLfwl-`57E>!?8+Wa!je@z zTGq50=_gbvw5eUhLi>d~Z^o0hO~8}ZZ5;V$TIWVudNxYe#2BLj;f5n^5h@tLk-m?# zcZ~L*O`;T=j}aO$yJ-|l=0c?O(A;MI=1Y9-ZryBa5l!^9i$=If4&CAWlFa1)iRL;t_-s-2*?Nr%8d;v+#9k@&EHq&RuQ>t!(QdV<^ zj8L&%s~n#oKe>Op#@umN^a6XW)$J0p?%djqHrfm1q?VvErw^m}#Wf<&ak#TfpQU?s zI#z}7gN)7Hjzd^4+=Y;y$m(;P*vEvGO3JIycUQdq)M~ib%(iuElW}_qF92gSz8}D% zeoftsyV$BXa_?R}wzbc*?CQrcbbfBxw4DJ^oV0d>nt zi#~w<@j(BCuSLwEIRI{_)c%L7`+JpW)pHNr1-AMK&qz6;5%Rb2z?6OZX1^X>V;$GLEtSnmZ zmjkN-vngv-afU_#SfQjrx)3g;C2{q0mCX?e5YG0$p{@^#oB(Q zq;3hjz{{gDjA>lspGr%|*AVSQ?gD6=lxJy+vKC=w3y0A3OasMl*lqDJX5@49&X7-d z{1N4&wudSGRIe5&(}(7yl#pA|N)@44sRFaI=Mk|nI*~pEwi=MKvc9}PAr1dr*BkgME zW~5!>bsMSCJaD5}Q^u>E{gKklZXRhp{dQxc8hv}ivuzgZ$f%ME$Gsc7IJG@xELxhL zP^(zCqLmEy;SXoux>dA|eak!(?OW+DHDbn#MSflFyqeZazMLbpDBIWI*|eq@D+f=f z?Ed-gRvl%~gD-qlWnkRB%6yT#iTa(a_o$1yhwhY3&nKKl=4~ubTSL&DhFi8)9u`U- zYB~E(dlYBOW!$wL8C!7}S1SAVGM4m5FVJVTZ*P%8iKwGaKX52l{QoM+;%urGm}@E{ z>el1}?ZZyo7ufwydD~L!#3(h~r(aR`yQ@tvB^U7S(FQF@|?TP4&{ra2E{55#q3i)EBb)<%_R=kkg z|6HakU9yMQDCHFYR+4U-`=Dme8w62?$P+E2UndiPne(U#NN&>0C02Wt z7AUT6Q)xqtZ72~uIeN$_IPm>`OzISdD}2T2IJT?1%FL1r`~SHoeK}006}p;Mi>$6K z@MYD>YSdL1`=C)7Welh(+!$ZLtjRcy_n}DMaa`-K$j32k?1u_39LED!np7fm*hwWy zkEHjJlc;xuvicA!o;VB02sw4LQODjh+hy~9m}5DI9jbW`y9eVsuVamuX7;0u-*BDN ztckrz`nY4EZC}U(lr>T~PSJ*)>y3L4RAx_)odd-R?;OtIG+i); zqKSbi{(~+iQY_MK4(aTtIA{%Q+CzcwLspYZ>=FUDHl1}LdWw9nPV{HTtYy27X}}i# z=GYTPRpi!me0rg%L6H}#pM##X7(3fH%PO75TZ3^4G9X$OYIQMgino9-Q0E-G_-qBV zIq`+53>eFkHT|}PUlvd1b|nbE6N=aRbA${>OZ{~<-q5NLJfRJjX|(2Zzsm^gN%3LK z+}qBsS{Un$**DrIe+DD?WcObIU)g>@?W2=j9{j%QTHR;kjWT9kUv)`UEwFXYjbD5oC(BjMoWJvk(bs3(WT z4)x@aD4m`h7Ms(PLn1nQa#$RP$mQG*YX8?5HJ;_PmI$S8!s4E}^l}2`w3?@tr?CQ4 zY9{8inhk5DCmK;OrDlyN5KQ6Pc^v!J;9B&TFO&W*$+z)DFwaE4nQ(y2LrbK5=8mc* zy9SWcct)4|tMq8dtx;m-ls#-(M0zG3x~@pbm!M3Kf_EN5{*cSX*qOhh$m@(z*9@5? zYoXLwycI=mqg;^!eOQHG7i+H%4?U65BR{{a+TGKtz=`AecJoEFRv{x8=pp3VwX|Rr z=DzD(=sul($*)hU)oo$_LcDtL_vO;-d?M>advXbuDTR?0v=j8~#A~q^E~FpPVja@F z-zwjcS)oMQ+!o!v%Q$H?q@0}Il|_&;GPW5nuWOM8J*9QAKvNS+1Jz6@O>Ex@rJ)BC zN-NsT=AMeRCH!(6Z%S`PE{?X(WYcJGCCYX}Y177zJ7eQxM=a+Ro5sW})zPtQ_s~Xr zD;mORZ%w*RC~XSeS-jkY(x!}^?eR_M!!){k>e6(yeU$v;a~rjYO>-+zu%o@O_{9lr zn=*E`!#JVVX=B&!3yKY~skc2^HwCVMdERPFY?W@A zXZwByEqbedg-G44^F3r7Rfm`UZ8auV*OqyBjci??@oce3X!~kZ zDJ|xxRnyn@_m%I_N!qda;&OVW7mE$Q2?KIdbl%vGq@xM1{8p^{%qfZ= z#yw1%Pc7A&>gI@^x3G;MAEfqSZPcv&jnN`+#jYMJ$@H6%l0@E*w8>~>q$IAAu{POC z65W4z465i4p^5r_p+q&-{(J*brW@Bo>T+rd6OeHqnkCRzf;b?J*=Ea8-rzwKiB&??sKc#25Nm5 zTQ^<;`Gb44drBMdFF!{vy*v9zBF=9x*6NdtF$JRUw|2e8q$t)U#`at+XP&cA`y5m% zob(;|t$$~dm$=p zH~}JjtoVrHEcnS1^&Ir$sK>3vlsY{EtgOijOE@0AIft+&P7%$Zx1y=npLc5V9<)RJ z@|1}BcZRX`c0+pmahs#qenYrQrKAV{;(?x#xDq;|r`#np_e(q`Y%>naWGpmSg6uqr z4$vP@)9d??7OO93sNLLyfLC9%62+WeKGue`Nb|9^!|TXm5JbW#evD_}sf9!I5~C~@ zQ5RzmWv_4pLyH$`&bmcuhkt=VR=ntxT5iUtPQ|@%zjr}LU1Hz1RQ#6!6RtR;O~qyIm1=K&v8vG)J1+1+H5%_e}023#9b0)!@@ zprHvUP3eM4AfYHt5)>4#2_}dFii#Q)6%`c~6&0^wyQtW)T~Wbax%P$)Mg9N2Gv{nJ zfaTuzz3=BAmhV2(o|$>(nK^UL?w(_2((YyUbY!nr&RieoTT7?=P2Dwl z`>CDHQD5gDd^^opeotlo;2Ubjg0_tNy+U^nYS;Pn;}m-ZRusMgvrCVRKmA_bdRM*8 zF5>rc_SbcO`-@F>681BZ^t|h?^-K}iBI_g`$Zl5A8X8xqNw7#d>^txS& zt*5Td_H1m|^xf8z|KX_qyZ4A=Klc~!5m#?i>s!%&4&r(+>j2+lc8@vSPn*x}`QFEP ztuLux{~pG%v+nn}f0iG6Gf&JfbIp;d&YE>)(?=+^FEne#pXJ`=$n?8q_S_rutKWaS zjP^(WW*Ku_HlM)lsXu#eoAW&ov-(kr&uQ6fvKw=DuFhEe-u*t^)pA#VHRmt?VOeu_ z^BtN>;b!sso8C~CF=X|9((q0T#U?+16iI_9ot>AKzTH#v7%G)J!VbasgLJJ7T0&12~@NBH!-yRE^y z<*09c>2Q3yt_Q=+s_|F8lb2p|`U;-D3v<8o$EVZouSoZtH~qM8XD8p6`!~uMpWgE? z&-d)5X-7QcL7Ww&KW(?Zt?K<^I_<2?J$uB0+~u2ZF4QlXb~NfYNd#_3^Kl)ykT7cJzDYcDZwB%KGU? zuk<;&%X%`r&Wd$4?0Jq_ui~1*WOF2B?cGzK)$SgDUF+{?NISQzYuE41-`~-Z_AL*0 zWvKtFy7aS+J^g~D}yuutetw;T}a;nShVQiV-of&Co^!4)$kXN6o z|G)bzi2tahIi9C^YW+HQADi8Ock$;Xoa29*cmG)#^ZC`kk>B(p?OIZO{kyFnX=DE9 ztGpd?bN`35G5;&&OqqJNWv%+7BZ}!qTI=?Fgy8x>sXT$_W0X3-CX;uiweGK!Gj*Bs zAnTEPF0-qD*gFLM*!Qz8+Of+cGhov^!L-#=8`!B zsh@Lq-*AqH=6b-N=XF*ebIs?^a_dv-J+yWA7MK!PeX7^wDjEZXl_PY`GY;^b1^=-cUZy?h&m^F`2p7#7CDy~S{qmR8tK2$Tp z{*J(Y=EyVT(m!?jpIRELrM?riPyMHz^-)c&b!~K@@_2tIjVE$?8}43C&(z!{cBnKd zb|hzxd=kbJ_sSJBL)XB0j%M8_$~@naa|)h!$u~zPsYHcB$UObheR^e?^K6}|8huaq z`p?f~{`34yN^sr9t_Rdp_Zy8vmE#OO74uAwXYTGtGM+Tbw^sN}isxpcZ>DKO`mgtB z<6JXFNpmHGUhy=)Wa@iPyZS~Or45!g#$WbmRi^=KxP2^_$L;o9(RS=ixhkDZed}h| zCwkIOK5yV$Ojc=!ua+C@%`|2C%#5=&dWRkP&c|ehCYV<1dlr6=$1{QFiE?ew)m|dW zTB^PUd1@-Pku%-0Nn>TkkZ)h6_v;LO*YHeQwy)I}kzQhWZ|}T!U_{Qa*KFPPV$t2L zkLFUf+}7dxh5arP*OssoGuJ-Zi*t;FO>1`7#IyhCafRCE4JAF@Ro3Hg?(u|Lcn;$k zt9{sS%#t>Axpv{{w)hCPtZ+uuZN(l(FzZz1onU^i=gH?R3Z3@%i2NpT_qYywi0imZ zoc*?P{j$XETGoEcxPCtS4c*=2b}dUj)qBJsS)2av-n(5rpw#pZ&v9pnM*WojW;B>n zSk2nfO;39E*NRhT<^5F_U**#zt^nf$b{;aztbcNKmG7X{&skTeXWF0DI6^&QPW-Rb z=DBrZpk4NJCm+3N{i&6Q4SVKdk6-I!AnEmngF?I^VoosW^X7<(=xR97uq2~l-fVBY z(7qMfw~qF$i+wB3pipI%4UMyJrS@%d$P}+!?7S~^-fNxr<<9#G=Y6H~zRG!D?YysX z-q$+s8%%S3HdN(kt8%neIohf=Iq5Hi)VaLMcf(G23#Ai2`knA)BxH_E zCpSJU90~<|@s5!QM#%LkMDB$mt6R%vMwJ97AW%y#jK23rO$19iV74&%W zs%}={CczxE+QfB%kT+hOqujoDvHn#q*30Patx9{lfy$){RW1!@(T4O~-4x$VxpHVq zf=RD0-_tA<$;>3lEiA)-hZ4Qg z#7NR(LiwIlY#`}TB{;%*=?Qxf)FzDZqm1CoDDY?Gdlal$s$g6zLRG{oH1y|H#S2Uc zWsg^Voa0f<*YT?F6x1ts*NjnZ=O~-6N%eJJN>6sc>M6h;RXgHUzvMLXC=N~W`Am3~ zs!~^W#9fW4B2mSp0+~sFz8@dR_hl(Q)xM-JUmeT$(uHNJo%dSjeYx|#!g*h*cMXxr zROKO%kykZ9sN9)lhD#%+ml`kQgd<76vhYv#%d2XVOAn3JoHq?+Rbx`J&{Y>%)6W~P zdO^M_>Lu0js;>4G4Eg2gCh38A)fyvgiC1lD63UFl=O>y3n*_sVA=<~|3rAu>`wveD z%PWX6c2*6tb4_8UW+Lv?#CEBHVtpB5>tc$F&=Zr&c(l;;ao**UOuRrwyed~7reS7n zjc5vm!wr-P?^1dD3QMW=Cxw;IR}fe6`gx+BpbW7@{Sx#o9c9i zl`5s-L@2U{Xw{Y<3Z`YZx&0x{UFmBr+b*+0UQH36UA4@gskVE(nF$G5`XAOHHwjAM ze^ispmz(dA0v`ieQ{->b)T8W)%!npmURAqzRVNmhoV?0AjlL~fMKmV%Wrm2+^JPTk z!}KyfKc1lq@~Vn8VZ%x?c{azZHcM+XnicZJ6sa{`g_>$WSekOoiX9A_3TkPRQcb`t zzEvyKJoGD8FQljyBSu@TaTb3p+9x-f)gTm51mxrADTTDeC~PLl$gwt}b?sWcmD z^QB7KW?C(d##EY7y^AWFGo0)5g`0YsdIOopS7=E}v8~qhYLkX&{y`d?B$>@F|ni~i>3Yz*eGL0{@kjnO0u)BR3 zYa(M!CptrO+Bwoxb+yshJ0v4xTIo`1R?y?kX_CWYX-2~+?H{k=Wy?5{jdBKyxM(O~ zi!gYmtsfX}=7<=Po8(m;lUFsIqf6CrIYEKeKeG)vhJ_&RMx zBSc1{J||K$S1pX1w+L^Fk18jHqkDyX4dYd#Srgvy>geXaXG?f76>E+X%9ZcQu9rKN zo!QmGn^*lAN6`5#beQ$&EvDGCLxV4M1h7kVPC)~AUDrf<*UWsa>bsOGDDVXB;-6!4 zn1hL%Ia7jN*b7+WUBz|LK8!WLlk69t-_;lM%KNHUX~j*@;$+GS z1=Bfb~Ys10rx@s2fAs)C6s4h}OZvP0kN#_rRFA5z3#XK9iwJHp~sl!ANg{ zBK^i4!Gff1*X& zjqp)2rVWcXvrg1mP&n4qW7H;8C0g~)1|sI|qvNofk{|M`@(lG(|6&-+8_@!(?Vc{8 zq@r_abA(JRk;<1{FJ!vpS2JWX^XAw_v(8k_dyd(bQEfQFvf&Cb;y>6&w9|;Atrs0-!Kq9*?9kha0tG0ed85?7(3@P7d zl~_5SbFsXdsmiJIEzOjv?!q=T8VcrwHAkkJSRKkI;j#baYWTn5wDqP{41Kp`HOPdX4mDn@t36H-NKyQ zc*C2{$p7ux)^8pYUUS5WXT@L6JT&0dwa9=E1V9+%f+Q#gmB6En0go~U^iMBk40x0= zpvyu+F;GU7BtbE#^#10RcOsG!qK;amBq;U-xDp!Bfl6l=AOy4t@&t4>&=bf4S`mQ{ zP`8Q%7MjMW4T{SJ9-RT|!Uf0$rZd#Lfz(RyJXl!Sbf{;jp6yb1-I?EzOwtue`<}gf6T}-ez5LKqY zZ~6-yj8q6(16`H#1lock&<^NIq$i+DfS!P^`FR4Jz#*VB=mNTe!$5b?1M~#FKyT0o z90~e@exN@%3LFgvfPr8T7z~DhW5BUsC>REYgArgP7zIXyg&790=8fos8az{{xk zfFIymfgs2LArJ-;kO{It6l8-0XbkoS`+x$lKR5s!2o3_xz`>w7XaQP+R-h2H25mrF zPz2h6_Mijk2s(j7KxfbebOnckV$cKh1ie6S&<7j|`htF-KR5~;4F-ULU=SD#hJayU zI2Zv&f>B^JI1Y>fV?j37%>glEXJ&*C_yJQ>b4bv^k2xf0Kh8uFGJ%)r;{$%cJXQ%o zhcikDVW6WbB?Rr`H8Mb#3sn~QK>!3n1_%M2=%_5n1X&;ovOx}rfn4BC3O?Wm0iX?n z^Z_m5(g$?HDSaRdM1i+R@Bu&Y783+sEeq-Xs$679jyY2!J5)77IS$2i_qB zfp;7d@Phydf(#&wDiwIOGf|a-4_sTRF}e<151s>?!1Lf)uoBz=ZUi@h+m;GjFA~mO zB%B9E&li>;eMdt4T;andLcjBcZAg8Q`h$0>g#~0jb(do1Jluxd!2e02RR@Hz9C`RMUpZaOX^OW3l<9J(Tq9ZaN-hZX+%ObakIc- zBrHYx8|X%`0r@T?IEiNLceXGADT$Oz>OdMk7z_gczy^C?D1>}MlvZT}Z$kwGzz5pW z%ahRjt4Fwqwk!iTR|%`Y#B+p6;AfQn3XZ4VLeK)70LFq1q&@~72M>ddz)Pz>r=`yj zd>UMRiEs^glHgO|3GgU*1gs?W22jKB45W@e49WrEKyVPagwbzc#*!@KXm~InaGVPq zK+jL3tA2uWkZzleAi=v)e+nP@p2tRs+pTJJA4>P3zv?gC$us1IedaBtzz6(*qrVm& zAp?ZK=?va}3}_OJrR-POG#f<0$y9lgsW&0%3i@_Am`&UPn5h<%RFnBs(3-dvOxRn% z4-E2B5~{%2U_N+<%HIW_fKS0^;B)W=_!4{tz6Rfb?chD|E%*+64}JhYf*s%|@H5y6 zegW@;U%_wS1Mnf(2L1&;0w04;bZh^pa5jd$6vP z4x;A|G9~W^%?QpS;dAm;Ae{=nAUFr}y=_8?YUmPr?OY4XIxdS59+JF`xwx(b5M%Il-ezI12OwucLko*a}_)Z-6(! z3*bfYPw*1h3|G|vX7f&OS-LaPQM4FZF~0B}7m{duXd6RgMf-(ktmDZ3r4 zAUFvWkXk_8W{rDQu!jJTolB?F!bdkH3SX7UZ62(L`xG$Jy=?f1_QuA zFbE6=L%=cMSTGa}13kfTFanGOqrhlz92f(}g5$vnpcgn1j03$vA8;h-3;Kcn;3zPj z3E^)jM8P2}c%8w+%#RJ=Tzb9`w8z-(KnKu~UY>{{db3dU0sq3L?|@rKxD}ko+PNC3 z842B(Btt)FOWg%XmA*4j!V7A!6u7wTSaDl3rB}{M*1>_r#C~^2lQtc z2ZN)*5HJu70t3KNV45j`)C=hywDd$elDK}LFF4u6fuq3DpdaWD`htOA0GJGp0Ykt^ zU@({h27&&pySmV#?Kz#Pq6?Q|oJx%SF@5_4jKUD3!EwOLA?quo+n7wNnb;n1A#qE= z9Rvqcc3(!TDJW-9eC#N0ppF~CO<*-zZly#ut*Rj3OmGgt){O5CY`-_bPf#_3I;MkD z$agf-ETmiM!p-0o(;58!60jUx0j>m>lX?ZX3|x)HCorl-7$So@&L-{)q%T1WTB;8- z)z!E#6_1?=?x2@FD0@3nG14Rwj;B@IiTfOU4L$>7NcaY6EYcT9UxKf|AduNWXde}h zWCrvHM}fZJXfOcu0|UVzuoL_Oeg$3>97G+>KwD4*+JW|<1Lz122F*bW&=Rx)g`hQP z18!!tZUjB3;|S0T^aRBq6Thm(uvu6m6GXrp^zD1_1NaUE{K5qoI|FGE(m7xWI2Sac zY%bUf#KGwxk3q=?xgZYq2K#^nXbc*Gy+8xd5EOtW;6N}JecyP5Z$SycPw4MQ;A7B? zzFmp51Rt6Uiio?ORpmBtF>#AQA#U4()F{@NjJ}I0dkN@3LJkQhk&ulv1!-RrPQVF| z2PXobPlz-WHej&Fz{B8i@B(-d{1dzcHiMVJ6W~ek6nGju12%zY!E@kwumWSpX+c-& z?E?J!3gcLPzQIgif$xFuAYm+7z9l#YsU2v-bSVHuz{_;WqJ!TuiMNA;Sw#;Zb$?I+ zeESI9u-X;O^CMAu2MGho9A!c@VOnJ%Jw}6`1W$p-!PDRw@C4Wdo&`VBqaENU@H4oL z*w4B+tTL%kn(!CN@Po8VZ2(@=1{847~gAP2-iE{KCXkPkc{6NEt)h=Bgo zb`%KEpmH!1tYlD%uuGEmEiz^@o`XkxMq9oC*AOfwb3>#CAQ!|zBajbnBFl>`RWE=% z;`RcY3AVpfcnRsBporiiQeP&RKx#mz;~)>@gIw?cO}ihwLguaDb?_RvnR-`&R|$?l zdIPBgb@W8Rxu`!6^dh*PEcby2QQDYFgFnqVVJ zyhfG`pKu{@7lGH%ycKlBMf)><`+}pvQJ^2tr8a@Rz$IuY!<9?GP_$$*#SbHRC|Jai zWHDF<&I9Ly1>hX85L`+7ZU*0=^gHk)>)HwQ<6ERwSfeF45F89zfI`q5vV#lb0ERXG4VNA?KIGaxNBL+ZUq+-w*b_Db?CbftOxgizk_>0 zHFXT51(gJ=Kmd>U0Hq&-ZQx%ZhlG!jJ^`PCcfh;gJ@7slK)p?9%m!! z<>_et7eNn8-yOuQ0k?tMfxaW4MaCoOR710e5(m?&TWH@280UOud^=DCE&xlx5^y27 z7+eH0SR(yCVG5(=MXIF*A=>w&X+aGM>_NQEgd0d*32p*2$ugMCwT$%T;4?AH^iF;apo3rMX1y+}9$^ad9ZR|)zMY($A-q=rcQ zQg#WcXMn~8&q10EE(TTLDv(Es#^F9Efs?^hFbzxx zGe8L#4<>+8PzEM~NnkRV0{Wt~512{tbZ`ck2hIe4180F#z${P>D!^=TDmV?y0dv8l zU?X@06mtCCfHjH;K8^GY*aV&h&w=N`3*bfYPw*0W7__78W~7(FE8tbI1#AVcf!Dzs z;7#xdXiwR0X5p3nwyX-p0r8W`SA@?nZMC z(yJ7E5&VR|Oa${m2eydq!Si@nSJwMUEE#VQoPpF7>01EXPp0f^B($c3{ps&7WNt*8 z_W}vf5G+CIKpOrsN}mTGkoj2@9DwEn!8^nqM;)({(1I~~m$*XecpK?Wa29==MwTv& zLM~-LBCZPDhx%7=vmP|E41J|wJm^Z#yMT!VOTZxn$01DsBMDvy4g+!GzDMZ~;79N@ zZu=~F4r~I?fSy!&CM7!KiC+_UCvjQeHV|fQ`VQ$H@GZE3ZrupJCwMJb3w{JYfVT9g z4Y-?N4!8qc4{ilFfm{#+2V=jRkyfDjTCfEL5n9j()Aa^7kR?dmH3Uzj_1VNlL36aU zU>IMe?2nB8M_?rSMw264xJn|3bk>U>aJcf|J0Z zn0-3Z6wsOAWTcb9^#r?tml%p?!86o0mFAvJmMsLUkZQoW;4HA2%+G;MWSK^Z1te@G zI3MXePznA9szEDka0;1cfnUt(13F|2?;-u22F)b%d1PJ$DnSvx+ZIg6JCA0j?4;94 z4DnCX7BB_PuaRXd_z=8DzSgYwPt(5rvEO63)Dz$-@FaMJ)W?xdp#>)+4WOb{)O!@t z&!}3-2)>0h2K9$#3+*^t{2RdrjNsR#ehY4-N2|b1pcip@HMwE~5pHE09cf+Elkv6?a3uIU-MR;q(BJ-;a~TG^3L~CESMQ=&9=7U8 zOXm|;1zLepioK7jj~T{Kzz!7TG!*=JQvmpYrHISk$*b$=Y`GW@xcHqQoy#9hN_+Rfm5M)d*`&H{e}aXJ(92_+1C zfXa`em)FtXOEE+f5?T;9gI-PtgD6&xbPAXSD!@$eD-Ehd)ea2tF$!+MxrU+d?@05J z4x}@y2sWgp+c{)?4SoRMfrX2N!61)(gOJWPanw;pmWf~|#vVcUM}lEsI2Zzs0mp)& z;C=e`F8Bz%2L^zF;4L%Sa&RHI0$c>H1Q&y9`g;zV z&j*)*YET0%1Q&pF!F+HLSP0Goi@@ce7Ayc~gNwm3a0yrn7K0_=QV?n=WP>blC2`Ba zgWxJ~6Icaq2DgA)!D?_DxE1UG;i!4)7F6fR|ugV{n3Bhwm>Cis^gQob`0;5)Db!~O(3Orc+h`mc zgq;K?f)11&4u*jdpdDxrJ|)ZN;Chs<1lNI~q_zTGah1ct5ugv~4SIo|pa&=hMU?0Q z4gsH``AcvYjl2_F1TF+$;j!Dn58y}e4fq~>2fhXRZGjGGsE=m}`QTuJ%|IT(66#pN zL45*JF>zfn&OSI{XQVE`*HZ8T59mR@p;6&}Qtt)#fxm-)g7x4Yunw#R2Y`LS{-7y% z5$p$=fFvjY<7wm>U@n*kP6t2oWr|j`uO%2ySLa~+512=%Ar*pi=+>7UQy#)<^9WwW z@ngyoVLuYCCODeRqriK__276^4Ax+hAXp7DSRQ_(wiCffG9OKq6{MaDW`p;sZ3WW7 zq_(D!ZNXi{g~9FMI&cfP5oCf0C|)FdfR<1dq+=GzbrwbQR$Hkx#W%mXRL1WMWB*0Lz z^rc5V!I7Xh=mUzuGO~Pv(tJwn1rDV%Es1LlI)IL#7C(5Lemn^t15bcwz|-I_v$YnybKxzltgJtMD*VKk19Sp{^wQ7#!iwdhqy#=gecotJ^2{<2|LEKz$Cb$p$ zir;_lk>uxNlSbHn8LnJPtHyz))SE>enIHmIV2x`*h+r6GfWKk(Gl702rr`nm;Z3bT zA!rTSfVQ9rv;*xy2hb7h4?2NEKxfbebOnck!$3FC9UKl007rmga3DAcGy?~N=AZ>= z34WvdTGlk6Kz5MVfltBb;7jl^$OjEU95lu;dtk7k;3jN;EK)AMaVx=L1b@NDk3s4M zdV?WgIJgVH>WSp#bMa9a*4qMb#rjc<_z2hl9tK-5@%T#NXfzKccoqY&kRF{2ikLVH zkUAipgVYh}P>PMfBfg>w`_P4h2^NC3per~OT+ZkhAsq&~fmWb1=mIVwO9=Nl7R{r< z45sc-q+wtmeC=F1cpA8Z5`#!+NW$5~odO0EcP&S&AxPti8;NubxPai9;8GNH$GTza zJ&x2dU~lv-B+IGbO7aaSp#cf=iJJ*V5O)I=T@OYPJfDPl;4+G>Bq2$$%Za-hTt{3t z>b;mOTUlxL#eTJ<9)q-kEai;RMPzA?g)T%21%yvL!e`(M@DW&vt+tWxcoyjmsCpEX z5Ig}qOmHIz<0@HT0tuyHJU9_FW{@8tpBJU$h>Id+gU3i1PT3K7=gpPETDs7HVpkKq z2CM>ilduBmR&Wa#La`%ov%^7ma13$Bg4JX>1miq}PwtN)?xWuO!4a6G7#t3AqrwOr zJ&rUSX(`@$39J0U7;HJVKY_S*1aDxiy8|3g+;Lzm7z0|PbQ=9wi>kZ9Js^)(EumFE zF-c+#g`;TSyIA~3OmYnQenNVaPTxqvN^k?XorHc^@@-PL(Y}AuqnE(j;AOBGEGFL! z^i2elz+^B5oCHn=Wne0p2Bw2CU;?-coB-|w$Aht;6x8y5#a2VX09thv7zFx*fuJ8a8eC7)9;DMdu$9j*gu(f=TvEw~KS0)J2lfT{Ft78Q-de%q+%1MnfZ1V{JrmB=Li=OxYq z29nu_6m zmJ*lC+`1U47IcUT4`Jf9;6d;Y@E#@J0V^>3yGV_=^0XI7fKH4;d(aVd07J5czEs%{ z96_;vF|o_2w=HIxMM62a7tJ0T{tN#1DL9RMbHVB03~(x#1B&TU50FpUMxY_s3p4=l zQb#$s8y8p$?gV#%cFd@*G^i&y0vryGqxENkv%nD`h?W4D&BEA}7E~}i3kiNrGd{*? zz68q&?n{>0WI2Z{-w^i+sb7Js2%bv9TyPqg1AN-C1UAr&hr!d}8L$aF3!VedgBQSy z;Gf_n@CeupUIwp#SHTvr6}$#s2XBBk!K2_U@HW^89s`eqC%}{7Dew+Mo1kx#G2-!z z+i37E344<;g#-_y-~%U+dK{QR!b#u|Mqx1M2u>s}pR$8l`nnNUK(Gl2pd| z@BnZn!7ISE_~~7Y<=x;;u!6WRY1J!aIf!NC3W_a4)f~{4xa(LCR)Zhu??ogm1m}Ts z!Cczhhi2r{-w0A8qy*R-Gz5Er#$YfNT|&L5px`KijnL8rYcvH9k-G?j}kh&DKrR>{CpOdcyG$ga1%*#|x+Hf?kRpO0W&MgNi02O#u^8e=l+C zz<21I$eJ^jgk0(!hWiW$lZeZpTW>Lp*V4Bm$Z{ib{W!>djjbL)RUb<92E9N}a3si} z`<1L4W$3$r68E6$P4GH+3%mh3)5uxm^U)7K@Q|=>k+2@z2hK*{K59l-$6NCk_y>xk z^d%egqsjfj{X-3Y#h z^d9I*uopN26oW%S5AYePjzsDMmSd``z*kiHHRw%39L%7X&5^!bB76a664#NqmY@Zg zPTb*0-9cAy80Z2zgW)vyyQpv%CW$eME%21)pd~mMyiBJ%fazrUni4e}AllNjMyUFR zxM`$*i?kiIr^K~r{)%7%RbKXh<8k};WIlw{AaP%@sC*5+0o%bNI8Kbz?+AVmegL0= z&%qbqOK{j?;SiMmM5`uK$Kk|vB5o4F*BQ6h8ISQ;d@`5-rht>dR8R&=!6YydoCID& z!HZb@74T2+D#)a7*~V4`UjkczpJJPlVo0NKq{j(90iFb%vB6%n)K6C@($WsJxeTcz z(gdVZa37iP2S?!`*HP>iG+zm>00)qIAUFs#0|$fVpauAdMe1X)4g3py2p$F>fSnBJOGq2CKj@4DlV!J)hJjWNr%f1N(vw;B->wfiu7m zta}_71IB{m!3p3*a11yW31%))RKfj^z9^qO$lyh zE_iTdKL~;V@BuFffd~kL4Dd3=2BY8=q*uWfa1*t)Vt3gRti&W|Fj_YteTi|t07>#4 z1+K#xdLgyL@2hBEC3qgZ2);t|OGy6&o52g90_;cGsYuhnbT9+V1gC&mpd5U}H24Bs ziP8w;5e2y*8^k~k_<}5rDV7iR!_8WQBxnu}1BZgHpbO{*nt>LeC1?c-!F5@}@n}8~ z%wxSe6Z{Q~C2l0rF<>Yd4n}|>;8-vWi~*y-XmA|Zh=QlVQ{YMP1b7@g10DkxlX)q) z5L^V7flI(ba4t9xECP$c5^z4a0K9~%e}c0KR)cdu4OjqPAoWGC2|Np)1J8rMgPZV; zOTeYzGH@efv^T!igy5m5>Ix=-+Zgk!@#57;w}M;1&EQ6`KmM18i{=|gXH|ZP66?X~ zU=ElEwlKaK4TYDH+A~n=ae0t??1X1*&l|6G`J%kskls~TT@7B4pdHIwX)5}wlb#Xl^ zDrQX?Kf9u=Fgd-fqP(JHdTGh5(!%73vRM@A-o8z{HbrfU3X{ENPpz0etE~Ic52tqJIt3m^yDcsrD@8< zDHBR6q)zu*%k?$Q@HLJ3Gnxc_89}}I{2B34KHbSHBcfY%RxVYrpD!bzw*mS;gt(Pp z16TzvQT$B(uh9QF`ah4zh5n4Zu?Wi*Q>y>t^uLgZHDIkjBc|G7eqTmo?uB|=CO0j! zx8NoHLGS|D%>7b_n7fL;s5_GlK+=6w?LAbhx+qK4W^OUc-BZ>4h%duOvCq)@75Lb> zBdKm%OYm#-6&o$)KB@!*nHf!V?<#W(RfTIhqLtdKw)ir#OkQ&fP)Fh(pc&j=iX0E1 zz}(feIl*-R165(0stvx3Y+ptO;!@BR)Pm(;1^57T7iv}`^#{uct^u-Clc?!}xxJ#f zxm(?R6;=8CT+=Lb^TbF7H?@kytE$72{Jw}9FG2S;3)vLirOf1r1+ygR9%tq+N3!m4 z=KjSMjMfDe9aN0Rn<+|XED}?f&>D7>aBH+kBSmHF{%Da{7QsZKv5}LC-m5N}TfpjG zX@)iy9X@Zox=1h6YE!c!xtp48r=MiWbdNi}MG`b6Xr#u7CNdVGAEr-gL?V`!5{xP( zr2Jvs&sMjvtP6zEX=<`2l5*2G?&qcidg9iah-52@T8;WhstrzFuYM?mnRN^5fbB?j zcD56dZ6mlpo6Qlm5we355w;N-85vGQMyh4rhAKnrHLj_bYYnN4GGO}2Us|f$X5E8M zX>y5hOz*l&t@9^c3P)362E`rrx;(Cytj4x+5&X$mTldp*?5^7hx)w?__BjrrvCs0k zWx`I*#>(l~EYVo?Sxw66YElNun{nkndy?t3lquw7*S+wNG-BbHriCNb#W`x}gZ0sD z`)2H|+tF9eqge>muKvbGztb|^{nTwQH8@R^m=+sxTB$z7yjU$ut)ae`DrwH;fl2cp;S zMOQ548;&-qv9$*Em#Q@w)2#%twvBb2vu>)`t|^P|dYt;pQ#d;%&75>cI1+RG*Qr}d9lthB#hhmTXk4p{sE!3e zw}lL2van=T&Mh7>6bl_~A)Ko)Ju*W_L@K{+Z7SUkZp=%USsK%Z+i@eO21kKgfm2~h zznj^rcT-*Mu1C^KnMZYD1>=MWj>j0wNOmmDO6!VJWJi}4Mj{QQf$3>m>$I6ltVxu` z7|2?L0^!ush&$64lV(d=FSFXn?Btaay&SD35J?>u(Bh_8C5}!4=pe`(rgMXYZ&UB zvi_UxEKfeuAq?RhDO8iqVP`X?=IP~XUa9wn`E?N$|m-J?E@Yv;LOs;~~}l;mDA(s!}newXhQ000UG{FN%VUnU4SLk#t;1TLBd|UZJJUOcdQYzPiXd zBx`1!*JY**Y>!!ZV!fkr+L6%s7anJ)6lT^SI!mRU){JVt8inJjN$$TO2g^`;To5PM z(XGyHRKOg+)OFo|+*T3HG8;E+mFi~D>`Bew(v?it`?FFGsM2+AsvHz|d``FVc1^9e zyIUC*$aYJs<@NHoZKAKnt#wCTEkhbaGibW!t_h*l*{wQ9VKXXbF!d}GHB=*Eyp%hx zyQ`n7Qgu;GXtv=B>d+jE;%&?em0^@!Gny{CuHiI>me3W)@l8GWyS4#DyZ)n^OMm^wlGCVQElM>K1!q&eeg$#Oc! zVKS0%hF`mhd8sl{cW!9Ckevu=v>fA@3VgQnnvynX_p?5{p6V2@BcLRmA6h~8@2~!d zbHcds1FOr?h$V2Rgm(NX7sNC9XDiYjv2Dk)>|rp=_^O7{F1%qq0;9UI)M)pX79-K5 zn8koeWh@|plTqb1vy0_j3jl7R1Boq-J7`ARfTdZPRMhys-f^#3>cGV&Af}_YT~avu z+pRX!wQhspoE%^hvqNyV*~-G79UrsQ*ySr63lS&VxXBVZCORXfSVvNvF}JES8yNWw z&2yJB`tJBWqTP{67Xf!s)T0RG*{V)fWtw{NOJ_Jz;kqT1qHce!PNxE^v@Rg6wvpPB zIY(p(6txqcW*Vb1-~__9QZx9r73QQ^%epy_W_dR!))Gwj^{&$x3`LSe>mrd1YeeUHYnJ|c&94g3V1IiP24k1Q8y$#BqD5@R+p2<~9%e8Y9S)H)E(G#fS!7Fp&1fnL?;dY7tm#Z3K4H5sz> zCsBPMuiFP67U1@QF1Y($)sbnAWaOtPWlj5i_PFQBrmU_CYT`IYW&AYePGO%lg7HmR zkt1qYdvY@>c4MKf2xax(%wt`&Gy|y(isOnjFm+Kwn+dy}&~VxWNF~}|nZ%e0$yJ<- z8MIpt%0WEpxJF&UsPQYE|2ReMt^`sn=BIj|AzI4zv zyF@#4?(nk3y7D zu$D0iob}T9oXP1% zkkv$_mORR0IWrnciujzh71_yb`{izqOa@&MGBbxfS?)DZ6G+!=#>5$CIeDrclhM(N ztQ}kyCr?_!Qd;S7T?Z45>k6x7dMcs2wJ~k3OGH_{kU285(&=GODujnHSKR<}BspKCJL8WtV(y6 zqs7RH$#T|3mN4ruEMShL70Z#Zqg3d;ObeIwH?!zDA}-~K*w_(S@f?xzj>yu7C|!Db zOKQ`m2f0uKkD+wVU(ED!j+2gTE`qa5F%zDnhjh3r1I}mbP-S{fkF?nwX`gRI5-Ar_ z?nG)ZQIlZYDZvca^%_T)nQ%(c1Rz(c4gz*u^!y&va(h);?%-NC;#yZR?hz(sKjPeD z2{y6z#a*p+B&E*d%^|>ethAdw8o7;}L2kAV?)7o5jHzP9I*XTc88B==Mv*(&i(&|= zBL#b8sT2_OtevR+c-KCtM==YeEWQ9`3yQ#jfU&5l z1l3?6#aHF>d2iY?;0o%V7wSH%ZPzS(0KA|h=mNTdVxjs0umP+E>x2cpRm%c>o~T;v zBhnPEZXVR*c05`hJ^Ir#i1fLL(8SWGCxhr2xA87|)JHg8#8ZKdphpB}>dQFsA{NDA zPNt4}rc)$uG%-kebg(2nWJKArblqBNio(*6lIuzqnFpsXj#t*Y!U~nkOXis13VnvI zYV}CrywN#4ERe?wD{_r_aMwDUX`RAOJBk&b*F0WCa&f#!k18P));qy)rfEywXtmUe ziY<<0dxExw;fNkXoED13dj~w8yyil@7!>JYob)`b&QvZ<1!4;5Stv${R69~!zj<}K zt`r++4M}NQDXw8uvW2LJx>{PNz_q64?M0P5sPR4E8}x=a^mwi7AQbtV%{cBf-KF;O^i?0mm0L@)3Vjd9MN|n;+3o1 zL0V~q)q1$H6=LzJ)KsLL7`;Hlr3b^r$4QB_#*Br{lbBcP1D=^StTHH8SVcqXK(+BO zwX%q^vVz14TccaiVijT}3gsjT!+2prHTvR(3MF+prjW7k;$$dNws?`vP!umR8Hy<1 z(UgbrjyAcY;waydY*RFlCZ#x#^uz~9^u`ColJ(7&pVW6U zmeiRsukylza8mPYwW6tToT(7T$62-G6i0>Q=ufF0KCN7(CKrsC+FYfIBUdTOlT9*= zPqxXE6-V-9DZ#JMRk=7UXSDWRoIz^k;(%K1QzEj>Lr7!3)P$BsY>A~rm=a5as;_dH zQWN$~OxR4Cq04NhWx*n^ZntN$*4nJRX|6k2YbDyOwIol2<#)njouf@@mFE77Td=cUf8!3);jr;UrIy*5kcN*Q{NucczEmrmuC=`F&8l za-FS;HwB!k))8-pfHx&v8%gTSqVke>jTX0U{d98Fb24mC^X#c3J<6d1KwDQ z8*5q{{TmwF(c3_T(Z4}T^pz!Q(N}-W;=5S~T#j8bftFs*hUX_Devc=imClPew`Y6Peg46vqMscYWml|oIq=iPR zmQ-z|v699bX`ZBcMyixlX{1q-Mj2_2q&aG^_N-W)7RF=@jgB#-K0PC#7Bjw+^-_>) zYcdzcT`up*#t*V+tj^0KIgDXdt^41$y-GhfGZ#>ZUy&v+S9(-&%bhr$+U%wyr^nYi zx=5!CPjPnh?kcDzPHv5yFXh4~x z8G^p%$HbZ+Hi7vJr`H$J2~I%{PdL@g*Ejmep|9^H^*q?B0eb0pq63AMId-V5o)o*p zWYZx>MRpo>&Rf+0J?h(hfslu%t0{VsJ-qswMLf2iT zN^)3r=G7E8(bHb_T-rH$q?^v5GQ_YR3ZGPiGYMom0h1Cj0i`?7Kj)e3R@(>mjl+(V zHV+kfwT;z*M;fxSpyraOB)xc0wRTs$X)=dYBv)T`)Vohl_FiVfI@u4SBiAU=dst2K z<|Ygym@8Kg95(NX+=O|L$&mH zR-a443tNHob6HRsQym>oe?MO5wA^S|fVw+fRqhht@x z97r^qMf_}zrmSdRTBocKmE?$4!#rb;d1i8I1@&gft13-YWj6CQ!^jJH)0b5jX2>P< zP+6tqgymv#)u#BLG}csT$MpjA58?6;t&K0mPqX0QowF0)$lyDnubK6EgsSJ9Vk_fh>jkS&5WOCR> zzhLBbc0@Oss+G)33e*lqvO-FgVr|Q9UTc4;QgCB_GPln2-3fqyzhEn|tyE@Swh~9O zQK?E4YkMlKk~dlNbT@NlvjS085p1>DzN{_+rtb*OO5NXGb(rKT#+%A*VNc0oWJd%+ zFRR9pY!s7@VtSd{ZNX(+Pc;ctr3q#X6!%~d-89eImnTkr!LX<99vOWkH{c7?7| zmXlXCP)~@~)=cZXKCIWf_GhxEb{kP0aP`1x^+n&nF-xRAFVPxl5A5dK=gxuM$T8=5 zuLahGb2VGdLEnwQvbq?hzUe#as@tnKRpZM_1`|1U!4JoiAuYach}xpbK*A=nDr;TU zXU9>ql1m_iR+&VOUBdM&YIDR-D65v>y8T_u6tH_e@=D`}y3H@Gp=1iRTK zuX32o+13QwCK78aR7DpS$U@quITq3(#xy}k6Ky)!dQ$@j9`+20m^Pp}w)Kc^X6@(H zUS*O%oXxBKp_^BtQxzNAq_ZW=F`FH;J0#WiMQ4|$Ps>aT*lX*+DLG*@=n!l+pfW3M zvT7;FfsjPAD^=Lb0bgHmHL?2Hg?7+7=2UK0g!UV>!m15B$4xpXM{yf0(diuLD2{QQ z7U;A^TCk4JIFe~6EqTWDsdE^&Pi%G_4Q9mE5M!q$+Ae0xt7OI{fh0R)C1feUUc#O@ zIRmeL+MbdvXzjGrvC~phz&#zZc2N_k9M?(+QDxN$hS~jRTVpCj4mHI{s!|!uNkJ+@ zbt;1-j3x_dn9W$Y!)(v8*4TmMgv&UWQD)8|Qpze*$|Tu&pmP}ON!iAaOd)d$k}5PW zRY;O;qB#pmWtfx7AW0tToLO35pCZwWOB$=^z|3pcGrEJa~`+m$*Gzp8Qban$n{w{B~w_fF=u9}-jt>aNwU4+T-Vh( zE|o0F84pLNPK{GK&G}qP=h##sN!EnslrEKFR4RicXDeAZ9_DN|m3K%guOzF?oV2Dg z3`k{=WHXp^-&BTvsSJ{o0aLQ9SwFWjS&Vgh>x{E^s%Y<2QAt*}IfqVVC{AUNq@JYC z*mIMbc1xVo_muW-(%vmqxLc~QB&)rPGIU90=#t7H$+`=>Yn}EhTgOzkj;U;tG=|QV zgdDpva8ZE_=Jdy%Oj>-2(>x7pISJ`pMW2(#0vb}&?z*5dWoaMCr>G>ylhU=s4LK^j z1sPn<(^qF%L-c`<^125P$>h@VVNy~DgjK}i?k2x=cOw$->d_YqQhK6hg19N!*>x#) zDragZZ0io^n(LuXAg!L2Iy3~-e5I^3tAeF=xP7j;J0`}a< zlu#(W-TFd8s@)Nz%k60-)q+)KS?2i87DaD)^L2pK_vgYn8r;t`%p~ZA>2%6graXBy z?85b?kMMXauy0A@6gA!A)tpM|gtr)dd|o9b`gqDj>QgEuRh^RMVT(~!rQ)7OI**T6 zP19M`DSB~EZ=&<+N9(gKJvq?7OQw+YkYXCr+?=k4)$Xh!ug-jRW*e_gm{!y@;J_Tt z(X~6%r<&Y&O|F#^@tTBnu6X5oeTyU0l(j{rUE1VVIq~_r5{945mtC40Lq_!TLLJAn z?NVo(E0d_L7;g!aK_9B=>bnvPO>AMD^ziF z>5}(ot}Lb+Ouw_8fHh#2F5Kvwea1LBx!%-weoXCr>>t+kERCl9)us00F&i8fV0W** zY+5o~Te@j->w|k&)KSIbCw2f^*l3R0s=yFGfoL?>6C`LA62Zu+qv|KlB|Ga>^X!06lQ2sjlA^nOcVEshv%|O?^4>B2&?@fDJeG+iNw2Mo~?n_KK>f zI7d2jJhplHo_s|W=9=ITKf!z%y)e&24AXrRiOBae>S~QH5=V6&ZThR$gthdj_+)*W zDz}|V>vQy>s>VY)rs}0D${t0;RJ4hm6;fSOAyw+7M|VN-1;YAh2y_HpKyjeCK9)fm z2TH+YU4M*ME;Fn(TyD6+aHTYb^*_gi)&-k$EnVdIyUkNq|BUEdt_!vNzKKL7ZZR3V7`eHThZuQ< z;Yvf(4P6W&|C(TPt_i3<6vNGiTWlxn*^Sd5_hd#HIDH9weCka?YP94*Elu#0jOH4k z<`^eJ)|%#qg(kW%LY|t!u-6mj17$gpK3yK>Ycz6J$;?4BruUgMp=>6<#~wC$){N82 zHCH@7ldrGW)40u`KEsB(zXNxF27ao32QCdc4UU{uGOg^i8M99AJ*9l+)RMV_6pT|O z>6S?BqJL`wz z<0qDOXg{&E-Gq{ojwPKsO(-kv+<8Lhvd$g4Of2fqrKD5W2_8=;wQ%5+3A1LD&zM-z zX5^IVrRqSNUgeTHv~N_@rbC;KU0aVYt0-yJwcW%{6WVp^+NHB@x}(q4jV1EEp6o$0 zDv}dsOq)5itfH(`34OetBZf_$Ql6YvRxx=-X;RX3WhqzB3X^kZ%uY@#nVXzdR#KWQ zEvYC;PMk4oTC!w%vTWMSin&QOplnVX8L!amX*PU%dCA1ILdrU+tRh)~a=m7ilunsl z-o}2;FM}WK_3YQHWIB~inLY*Z`}+xH$r%%EnTokH%anVf*K@r4tNtm|Crwoi|GU4{ zw}by*uSVzM`und}6EM~6?e#PmQX+3nV#VZa*>zS$$&~4`XO`Dvnj-PP--6Z~h(Us#F70-X!UUpUdFITeP|Ao0K|1T=x zt4Z~y%JBb+f7xY7M++mU&SqXu^~t(`r$bkEkEv5fXSh_I&HfzZ}MCo4{X{e(^ODpg1MEG5~$EdM^2 zd%OdOV2p$GKd~_4Nt_gMQmuk~g$~yL?n>*PmPV#ru%|z5rC11Gs`h$HRjyR!jvd;2 zXvKRM%>3enF@08?_{ixO6wT9p+&vz53)E(2>3Gl3em&ZEI>h7T3nra>wDZXP`}fNn ze8&~umapG1a7gc-%cuH0pFJ2F(qQ1`f4u(8{tKI*H*Uka^SX|Er24vx`V1M8>%TGB zXjDzG#QSjJbqnKE%8fd;PMm;o{35*?E2uQTl-Bj9=U13ypuNGbl$vK9j10{+qqLTJf_tpi%Yw1TJ!6OVB+=1PyXSN zIbXkh($rRaUv|a0a~p4KRlD!_HrG~;9qrv3E01l;FM9s*d6Dv_+um!oba=C+ua|sr z-rT}%m)FKh9;$4dQT*`gWlP75`~LCOPjvHbKYY_o?aq31YDwnSry9%}v+4b!NfQpg zU`Nw!`v;Skwe@Tbl^1OruqmtP#7A~|%13v2@}6gtq47D7cFW$Lw`o$lw;vw+M!^$L z6x`KzThrPn#$A2xj-qYP)Ls(Y@AU@NpUq!?z_uQ>Pn5iM{*J`N{H!M*Yn?ppk%IYi zecRU8UQqJTf~{+FOJDD~w0qHMk1s!OZsxZ9+8N{8j6e7N3Fm%3A?M)-Jll`l)Vb&% z8>Ws-JaJRe2cAuPZ+gGo^N-HU+}?WAh(5`Y&F8;=Zr5mevu(lJ!Q&q~ckAPscRkp! zw9~dZo66hW@#wsLxA)!j@}i#8PiSygMtPnxy*mE6M|WnF?-;-3xA9BwANR_*tLM-4 zZrfh_<+wH{EqQ-J_WIV_lGO0{yhhunZF=my_rGuS#4r1nkK8n+_NH-%FW%99+x~}a zc__Pd@TMNM=ZwF4;oN<;U0?h5xDi`=-d>iqHB#POH7_cf@yNWrw(qm4;Zen>HurW- zlpnFFLs8pD=S8;rH$8Urdk-C-cfpyP9&C5Pqsy10woBG%G zo$%Iz9nH6WS(|m);}fp!*fguQZ^_jQb`)&8zxKAzlOykX^v=iLXj0yCTZ`HsN)BJN zqrltE}}0OzgDnl-j%7?YnVae0ywD zpQn3FADeSmXxoz73&xFDcFx%Ax_$7}hwpB_H+OrW;RowmzH!a1J*OYn@SBwL9!>9kLJ{JPb1*YI9XPTRZJ_cIo+Z@g{dy65k$EO^m3 zYgnr%&pz(m_0I%nwcYE)O4HE&X#pZA1f+!Cg$Jcd6{MF4p@gpV z5_;$*^iTr)`+3hf-}=hGR%Xp+@0q*JJ=a|KUJ1Ip$PD%?zJ^!uCr@Lfug@sFqC_a$POqk}cu&SBL%}3z9 z5Th85#$fY(MLZLMYvAOj@0Kby0{vv>lzcCh5JLz=HeNF0snMLw_Y3Cg?g(%Ic>-tr zW|iLV=`BJH|AfZr@r-r zAF*-y$ne+NYJ)>Wv zW9<8a1XChjS3ggBZm2T)Y*e+hP1bs=u-M7-wU8}UlF#d-=QlVTct)^lc#RAO)4N@7 z(#RNM1&trx-Pi8rkw87yQR#nH+Ggr#eItDqT>I+;4VA-`XJN+g@fO?NJ@WiNK2wqA z;hwHfwio!E#-|=7MSS)eEU)?Za`WB2BPkkqdPg*m(HoIplK0H+_Vsh=mD`Fhr>CgC zVUNg&Z2V##UiC+b8!{SxY%EZLNF(Fmw&I-SL37Q{DP+a+>pY>hmFVX+q%yf`!e~M< zadYkS`=`~T8}<%k$Xx_-FV> zcre~C!;{bcF7l;II)l5|Lvl@!4J4#7tTCt&=^qT(e$UjWPje79tLBg;t}MS+>z1?F z92zN*;(@|+Y@xB_rq`$eC3Z0s<<<1|%(iB{!txO(Ro8EDS&OB$``vq3 z!SN838VL@~_~L2L1KjIVskyH6v|oAq$+jx{^USA~Dl2gqROP{(Xp#(LnHTy#*US?8Pu3)`A zeCdu1`VD&K^3>BDdeqtN2x@x)9;$In)KY8MgUlGis9v{q_2I_l>$gyI3{D36&G!YH^6mN0(5SsDo$Ks&8Y%v1}QT z%`1Zw4C4T7%hJnIrbd~El0FKrk-LN+r~r|B3YmB5OL!M#5&J!suQ5m#%ZBa2GOI;+ zJz=ci8)RFHz=ifI8}42OJ;_w^IwZH}DdX;&6iQ+Bd?u<=s>=Sv@_F;KG_Na3Pe)bj zIpLfXoRu*fF#@q-F-(EKP1O*#+#U)ZOdbq-*Y?Nn|DMlU3g?)sV!Qa6P|%}?lkKT!z_tec_R3fqx5azl>whB%4!+fiV@VFg7(xs>rd^IqlS_!Rha;DH;CDZFyzs7E>ao7sjO51YSUVnwudID0)eup>YO z$*_yqee6aC4+B-l@KW%>A4Bh+``D8tY68jXZZ+qh*gDjaWN8PPD zP#sMjO0S*$zcE3({+dWkdrWQ&V~j!UhnT1sZFfP39Qi?t3CanYwa=dQoKxKAG5-Y& zcV3~u!y~n-25*XdO538{4ej$|$7HuAEONfFmP=JgR!}^=Gr>H;A$tYL114D(Sq52j zIxMPvLMJn#k_>But;7mpr?3>*73=`kO09DH_X5^K4Q?x9ONO`2sAO3lRnzUSE>`ro z;&I>Oj>kg}eg}CejykHkpAA0;wkANCQWySJKiE$CQthmrT+HfIbX2ZLMN^;zA zu6*vwSYV}NrDJttIAXgYPc-{WdvBOftOZ3r6@BXZeC8=crCH_T3DYZJor^d(+`Vj~ zvG;9nc(Cj#402z;IWiNM1OdWfgdLoJ!bpGgnZ5YNa)+8x4o3yGgYGD6q4NKOI?J2wUR=~FR{*2A zHn`Jyra0xfm1D?aFfnUb_5b9a9rgqE9X0^_9azhvjHU@T+gvsB4a{544cHG80Jj}( zda9nfhgRrd8L`e-`3&n#y1`e}!u^HTUK#VnQV!Rb)kbf#gljDiR|tz_bb2{nHhx*{ zWOte$y7@OCh(h+m=5>c#)Y}xeP+Sj7Pbm-7{m7yH+a2NP52}{(PLKD$eg;rWeR80dqOH4Lcdw4Jj=}eeuf*wqCF5&aAN8yD zg=9&}lRO)17w~{(bk=3y#n}mA<^Q}ulk`4S%^4j&9v{3c-MT!Z3w&Gg*uSixtDnvIcW5T7%GGEnBB=19P9q{0`42>%dL$S)MRluC7Y zNWeI$nWwRI$3lB>gLJ7(HP4SdFcq?5G;EOY|-6 zc@z6RCO+0PRw(8yMjFUWK87HgSPLM_jqyr&c03=R)pnQnwWO`QEprYiH8cZ>`_%Y_ z^jTQ`%4+mx2sqL_SRuL*rO!`R#B&~d9@~YT$4X$e@LG5cyh)A$)gM;bYqE58?7l1~ zQA0tAtd3xHie-h{8geml{T`*At-ht5_B_elHLy{K{MdGit3sU4T&g?{oXMV2uQvdL zQ2&CT3~L4br=VCh#fLPqG<7jUvG0^EO>g-};3}{CfKC{k>TcbQ%82lfc4-9Hf@Hn< zb{;&0KYmenL*|+ZT%^23?w^SpuM2`$gNkCiMZ_OQ$)=arskIxvmbF#372<959{ue5 zzcDd)TR9I=4~jkTp41-K9^W3%p1`0B>mMrMCsZ60cP6eDs=ST;6vGfB6w4Zmj4_G{ zsU{QRG2;o4O|P*0pY4Tz2?P#6S-f;k7wGk4TV4Q|m^@fK1oj>c`U{lbst~Q9d3dEz z*`AY`8^w9~wE0P(vgzh4aR);xmQXDvdrlw#oYGvho57xcP4JR<0o&c_C-VQ&99y9r zfeJE@YaU0gj_(d#7h!EvopH)oR;)CZLv2X$H$8SzjoB7%%lQy2dp9-2{G)j^E?fcS zA56kdd^vwMxkWyzB=tl}xmx9va84BZ##9_(J{7FJTt}X+t|5H%RGrb*20t9oF_|Qs zzLK=5uqWm4a?}S}zH|W{TWy~tAP3;rw~-Dtum6+DPg2kz&1u>)vh;_GHM9}pJ|f38 zQ+tKCcQtN7m=C5jA0E5>$?9RI!)Z8{-QRs9b3Tz-Ro+Om`zSh-c-*VEQ2o8u zTbbT02r2vC%mzj$+Q$1%WeAAcz!= zyxzwh4n{Wy6!QEPL;YC0dfcVsJ1QZ>ikxOTqDOGDz`pdd<H+3_u&+B6v#&zmqG1*MQv@r9k^x3x8K;N~r`P9tyhZq{LJTlS^t!k?_> zU?LA_CF1_VAGBk(r7HN88PoLG1R)GtwL$=oWfsIUciXHL4%@O3l)(b@$XyL?&^a6D zumA({BG27T`BXke=D_h|LWG*0F~I;w$s zjR0tw{R<3P1DZ{kGD0#;`Lcrw5)BMh03=+`4&(+p-tE#HbSf|;J{)tJcN=*zaND0B zHlAtHW(~Ke-m;^HAOV%4z#U(ubN_{MMe5py*ew$^aJ7JHfz>ncDLO^w06_^`y?h1e zvkMjz0G*pX1#Z78uzC)3X$|sgv-cMMTvh=(HUKlm0AE}=LFZHVkNE+g`+(bKpHEAG zZmJd@bKwfipKci-vFD)W0gJpTo6}`7&_{q_n~dv3AmW=V+v=yDA7u^%l4X8*$H+v^ zasgs6K!jC4pMDSK-~pY>ixv|;zd!(yxV+;nHh4J%Jahn5_tPUUvUotKOJ86CsDrI| zK_~(rV0DkuIU~>&;ilp)EP?q=qQkR*g=lr~DIx+8A_c?=8a&GdI&aVfZs`^b0E5s2 z)9D9z%z{I1Dzv) zrN7JsB$EM>Ra>BdTLHk+OYUI=@bt1{8hJpF2PD&GUkCu5*uoz~-tpES1UYQAEPPI5 z;SW>~i0Cz?CO{8b*4t_j9Spe0q!a*z0s$z@Y7J)Q04&QF%2a;F>&^L*bk2_iil#DFRsP7H> zdjOFvQUw#d!&F*0C|C}1_%$lbKSN0yrm2A$$u=(tbN@U zc6@#@tOr~t@`27Y;S1t3Y@hw0KzD&7>+X?_eWBx|r9pGQW@X6c`Aa6PjzvnCPh%$4;lSt96{;iEbLti=dgO@}YPZKz0{>Ex`O8hdNg z&*3a3oO0KxNH_*!mLk(Uqlwe9cBlD7tevy`JvXlvRA!JAuMm8uV=r@2T&t?lgV{)b zuHD@On$pv9cW#NGc2x!&x8{7?3~#e`d6P|xtFk?L6`afuD&v@>LoOEGg55<`w81e_ z477`SzAZwxk^4^1t$i6`ce6Cwc2CUQ;n|muwH}<$KPE4G4o)f)86Kls-=IhC7k!$G z=0B>yY~)6TqvrJ(76Sd>YJiW*?Azug-s*r)7XdgK0#;sdSe^m75n|YSYRZ7(+HRd| zx_&|GY7$GGZO=*D6gkFgfGxAUctB_A^2Gb6Bz15Si2u3{_z3m71%A7%196Cl zyxP<8Uw^I;EMq=Z6{8R(xPzk}Lp9Z*-k{5Lf2&H8Ly|`l6ut_&&uI9sV*(-{UB2j& zOqo9~j*deuS(;8-?!ay}6C8aSM{u2*Jw`9@`dcVgnSG5pNY=1`ht-qy_*$_9a4F>t_W`cV-hf#A14!;|%+!&Gc=R&_FpAuqWe0j_ITvGd9H|T6ucwvVmW47Z0Kq5JRlpT^N&kSU( z1qkMIVaeNzHs0ZD-O~(NN~YW|lXBvh$LW?xIC05?%bWpd+X%xPj`;y-!+L%8-;>Q< z@u$g-NL$0MQ<1vR#Qdo>D{v%uwRqobj+ar$Yyj}ji@F&p<6agXv03UrsoE%ZS(W8; z4TfprwV}|$O)w2+nJ<(>!FSeCsXkqxm7T@5dD(^Qu#`()fM)1W9_EunmBF*L0J_Sm zf;%=EUm%_qpzjY`(XWd!Aa|RTz?mGS^c0qoP6G1gv{nKj#MjAH_p;H@Gn(zG9KYj6 zj5YwGHP_K1$NxFnh&JBg7|&J3Y=~|FT5K44dz}N|AAZlknN}RsJy5zNga$Yo<$$Zv z+-}WZX|pC--Mo0UV-$?$2l*?5t=u>vNxFp3r^H~yZPNF-tm~Ir;OK0zwt3QyLBS>e zFoJmiIwD4WL-FqH8I+F807jqNRjfOb6W287gzoX;>h}HJp5BU6b-KH^fgqyE*cO6>v{r zIGK4J0Hn?$Zdh%m5gl+5SMG1uvPE9T?PJhVL}~f;SOPMlUtew!honcIU9HXf(H?-( zryUrp3dfveN58O2u5o)`%K_sAO_`yNg&`vXAe1**3oF%3m`uh1I2?26X0w1f8UB1` z*)_i(s13}@Po3){_vQv&EFt~=PF=|dUxPfY01)K?;4qtSb3BzpA zWVVtlmEiBf7ZrJ6<1=1u)`&woT(XS0*e~WrGMGQ~$!Zz80>g2>p$6`#jGw#ON(xd6 zaA^7T`K00Ip#?dibo0La=6(x~s16#VRSc6?YtCY^M1MZ}o{6JXJ7gqBZbVsjKS>gj zZG`+um%*Wq<^x}N_?)X~gV_geFSwtBHNZ)U_QbY$9Fo+Vu;0v+%XA88)3B1D4k1{w~0U`L_eoo6g!d;y!vn@ZUjVx>|mR)ye z5jcp*TXvHWPHGbW#6<|sO?{u1f14+Y z`S{%pL{zsp0z^dQoXnrP(h=ot8zWu8W$idZ?4k`NP;Vpw3EOAaX5E;?fV2_1Ylgb{6y@ju3y|x7u+|L%N!ZAR{9GBU5Zg z)%J1{doCesDFqzpPLi;@Wg>0!V}?K!ramv#P;U|D79HOETuiEiGtpjj$Q8`=e;Z9X zaiNIIiraly5BQuFdqVU;i1yK5N{&GmXaKKhN#rc(bDUM&;>s16OtS~DJJvY?>B?>M zMOMg=CDhF=4ujBc&;Y74%=!3zhR+q)qE8T-dkPVJ=KRo7MLL@KnDybM`nKByVIx@& zH>(aJ%IAk;&U;z@BcFk!$TCoggT^dwfMK=la=PH?PU<#me=z{7nx26>h!y1|M(Y40 zV4IFUwyWKA_Xm)#lSs2rbn-s_UuDOi5WI`N5oZDqF92oGV~2;A@3yUSPON(`xY*nB z<=cb+=HXC_XzV#>^(Ae?E_Eh*05)8w3*I*3xb5}?ckBbfU&Mn6D1fCBQ)DtYG6A$9 z0IZCZ37`$3?#~4^z(bqxWAQ4;UHEfwskapal6Ww4^CC$ma!h`q9Dx=9P3;E(bqhfJ zDSHr1>*)Jc6%9LUMRT*j5*~b&*(`&GVJ;5i&%_2V#DI#c_n-!IhNjvENZj$Q2ukk| zd^zm{ASRyyt%~(mU_Q-KJkezcpoqA02dA{76l_Md#mKZCar68qePe-B!sgDYn#98K zX|mI=O>szjIOcfrHgd5&Nk##Y$O&3Bijx7;=4#mhyvN&Vn>=g^R>Qd=#^Yl$br1!Vm#CaZT#jm2plTwLaBLJ5X#DKJ0xt%vnBzTtZQ(5#25>P47?b5FD?WS z2dlBULzPS6x+tX}f(0rD7ky^8wp-YBW~7paxRLc1R(4;uvH4~CfZKZ?C|hGi>&{6O z-KzkaZGNh?vu}AAW9@drzLCZD2R@|dKV-1GvwnGy;voEvpMSu@&Z!pJkp9H{K0nRL zv8+aOjBZq|G|%E1_RQvet<^hgsx0esi`h7tKugsEH@@K-ruC_thoX7kFABW*wl#2u z_jIMVOR%JE0C@Kv*&&AEbjZUh#`UIMoQjuEK(Qjs7>!<&nV8>QR|7-b z#?=deqjrOu7j)(ZuMDp^d%&{s1Uw6UoX*=2t=kiZSwR82a?H%=b|=A&^04Uh>4?(# zz3jk}7igUVE3sj>+w0O)hv}bB`;^X^vIC1=ptTETMTZHu*S)C@8$O>-E1k1v2a3Ut zIoyCEcYthLpgB~R0!V`x%|_ZR5Kszi#Q^WWKApTzk=aD30uS8vcWm0Sn*dsHILgpA ze>%?#lUddQ_G-kC(wW2OqXDYJmFrMlaKCqQT}={+5$5BH8^{;JS>*cpoF6=Z`2^PM zfcufsVVLty?FDy*Y3^u34N&}%Y^1c0<~2USJqAKLRjqfbap`GyA+%K6eNDOH^CvWo zY(!25%<1odS~1BW!uCB}azn%5&Pk~}Zc1~5RTX?x@~lh#{+(mvmcs>$ZMNJKRR-kA zndXdo8pj1{32qN5mh|=CyN(t+CTrnH>q}tkM+1B5SaBIZoLWf0o22tjk}f%d|JW1A zI-vP_R{B<8hys=j$ipTs(15oaP}Usi6d-iLrAUZ7Z5()88sb4vA~6t4<1iZyS#{n# zhgP-T$-t@|Cc?|{?&l{_aN4fL{iW1r4{g1wvcIrx0PwYsBkt$g3Z z#pj&%#|a4CsV#dFK)x;bswoRkR%aBuF66=SELxgzx1w#{^m^v(0~m+asq=dqgpenP zQpeQl3)-_}MPjxsqV!Gk3op_I@XA2YOf?#1@?_*Ea80BnrFhMgcHj z(*gg~&2q)V@Wr!EAi+Z02pSMA>tlakxvYCI4xLN{_}{|4x+eTYV`=HPS(xKs3TJ#lYk;_*OAZ1d11$YHdN*p;Z3vU(bCsjkfbvcr+~S|TGiCM z{ko;N&iKWysI%)`$valtZSyDNpL}#%iqs%4ClTp;UGZnUh3utEO<@%KR`0?wE98yg z=s7+4mVhvhMYMmo(Gtab_=3>MaFCB%Gv=5M3B9!{_G>Km_!&gyYgqEqIW1>%Vhyue zBm3n@>akE@)NS4aH1+NT>7R`UE(qxb&y(S4{~^L5CItZR?-a0c1e_kZ_?>yTRptho z?Pv@Fu+jp4(8}lA*-bB6FxSU`%A2PZIMsxe#xvEd;lEms4j3m10xr4<<%)k>k5)f# zh0{$&FgBv+V68`O)KlM?s|B8pXFkhr;$7JBTfefM+6KI6+rS96?GpNcv?Jm>^8VcpB@VWpFK=}}w8*&KGJ@o*-B+zKdHE|chucAZ#Y zHD%7j5$ml2_x(Ufpem z4!_!aOm%$eb8C!)wXTeB1*Hwln(3{XU3HIi0bZ(2sen6dN4$Zkdy$$IVRMo#SqwPtZM{F=BZqV)*9e~d?&}xOvPU?FVD}8~6eVA8 zaFELov`0I2@=izjPkNOyiP9wn(FVp9EliTpYxQfQ2G`6QLaS_k;=xDrSC8_!lDs=_ zIfybSpi?WJ@hPZ;*E0P>PCvsEB->y!0DnyjzkiXxr{z*dTk3uHXm*F=<&C)v!94L5 z^Gyu@=8Cwm$(Jd|lzqYy6;mW!|DkJ-+|X>V_=$W?#bx0ULYZRl;@QwF-{pWTjcVbw zXf*Ya=hf)(TfHkVJX|nRe~uI?8LK2Wn;~$9_sZSBD%@`lagf&!iQ75{Kzx_2pp(5vHH@;L^N%T-O^sV0&~XArfhm9tC%k#lg$cNxDl- z<8Fa1=h;_Eixf+1n2-KYI(J%ck-2cOnz?uIY<#5e=l#9|P7hicx6gAYHH!x=j+H|r zTdLp-e^;V<`~`t&l-S)ATzAoih zYx!1^@tcq;{@NyuYF1TB_J(W6pe=ObB~%_m8dxd4tm%hRt(oMpE(^)DhVHKu=oeFu zs9fO{;jme~+pWZA;9HNf`PROyU}cf&I(m-BtYF|Q6k}@(aH50s2>%XPi=r?6CjdsO zi3<#!_oLwxxHVu>JNChV1Q|P@VOp#d@R$02C88~0@xjr%+`-y>mZbA|GZ-ySE3;up z9NoF6!mGv~|mnSI^{bRmv{4lyl5m(tJSKa@F2P>eJ?C>2J6kRue~q_5MsV{NA6a_qph6ZMDbe$g(qDK zmV-Adzw5see-c#o>8|D0$G8VqL(wCGFO(C|SfgLTIlS}s3Tew- zxvNQ>oZTSQ==VQ(_1bIb65Hcm#e|e+4~(sP&tv#<_U2=$)?Ao*62(idS*40MqG|XZ zSbpow`1mWfyJ2tdYD#==TzaD|=kn7I*mnMJ;si}usIvO&glo{Xx5tf)nI_*(jBRw{ zHFWml{-zA&#;r8+lI=A-UX;*{8TENaaXHlT(U`oaEv{=YgLRQnn0jBo(DsXE zOP)=pHCWm5A@#mXVcX-ULEZ(SV_Um*4*vxAbv8bEz|yAaAujeXT0zVt*tbyM!zbq2 z<*QrqrAsH7GR7^2)|MiP#a6|?bup}^&)lz9-`^p8ZL!jqN;sJ6A8<&iQR5Ri?pu=T zoyw)(vcy=;NLVs%tB5{p-F56p;Gg(Y*_`OZEQu13)|yZV zd6U+q_aM(nVd+g;s~&rvg*XR<#|3#J{%&57Vo1gK+K?R3-ex8o`!`%0jc^hyW**{J zvya(++LO|(+>^4c+=F)R|N}5*xD0IyFzi#@E;@Jvrb}!eg6a zTM4yKraM*E-7f6|9__E2)BT${g(Fs^1;SH8cd2Lei<>ac`PL>smp2#D;q*>e$ce_z`9%GXrKoeTo$9gEA8k?U)(Tb9v%3$H z`QA)u1TJVM_T*Vl$ONwU#P(FbPL0kYc`Q}*7&G;V8SUXKP{v-uX~eQx9D3n};peRN z&7}%{W2RnRUsn&4+evl2yBA${;h`tTU1A2J>7jNo5^oAm^1GIbEgPRpJRqhzgCot? zV?tH9auHcNsIr|!V>z_)?YM?ulSze^35gB8EBm_T~BlK!g)MkO)3<9(Dko1 z6D_Dl#J`TopM(%~MbELzM8|HIDU*Ri&0Eu;=SpF3=!@Q!J zYM#WCZ!WvkrEb!ivbluk&wnAC+byW7Q|HkgA77D!%gn&x?>xxYmtDdN8tM3Yyh@6j zijPmvP+CfOkPnt!>K4@1=^pfedw9g_6=b|xO89SaP69Oo0@AV}-GT->vL4-udYKss zcK9Rw|E;0;|3^do|Epo||J7jf)Kyo<)q^Tg??;9QK0zp7K~_+xd#kHUTPNE?BT+9p z!(%ByKp}y^3cSx(q*1;hwhH5^_!UA7`e%uGt){7aUzBx!#9xeGU;=RWflg*SbHX z+Tk>8EgY@8UM}tu<%BV=HDqAycrya?E0OCK;pZ2PeD3_=)eBnj&o6BKwUo>YLN)Iq zN8LwNLM< z(XW+6j1_&zzW2QbMX4DUr_I17YUKEy^3}4lH5bgkP>m_~@AFlj)TG&wwKs9ss z5>Gll|M;HsA$C*ELr<_X6v+~YV^OCGkWkYvhH?ypNI??yWm0W=thw3GL&+V(&6Ldj zwQwAKFV~NKO#eJDqK;5MwYbJAB7K*`I`Zo=ncF5a2bJ=zDE*E1Y4@4v$Uo8lvx4$@ z6d_F-Tz|uGa8aJERW$aj^7>aP1^(#E(e(p={&%0Fp);mz5#d8BJ65~?3-Spn%w{Y8`pBXbdMv39u0VV8SZ|#`U zpKJ6qBIJ&5e4oEB{x#&+-p<=rag%qpa8Y^j7gw50bNIUWMFb%&!$+xHjj6UYap+v@eK|n!fxaW*}coNg1M45%#CM7 zhgxhLJ)IFD?W-psrljBBE!mi}|L*%ioOrkowK`Wi4JyZPN6$1ZKHBwvX6>kCL;v0{ z@cQ1lRJ0h&kU9ffJQmgGV_6U#G4yspd?WVdm1ee3i%;#mtMke4`RBbs>NEA?eODX} zBd&VUDlard^6TVB??nzBtdM2)GJnxt<|$s1M?q4F#$$$TjN2^nDUk@Ep1PxGCK-@k z6}7SYQ{B*M$S9En9{hP|y-z(Fe{CFs2FH^RXeM2ZI6wb+^c~vngUpjV5}e}0{75rg zsdM_!A*Z`R3-w-O%M(UR{0?Yz_#3L}?b3K#|M#iwGRb~xMX{{j!*KCo0JXwp-N|O{ zu-8y2JTwxw=2`WR(HWOq1bee{Y1aMf?`6$5C1KtVCZ84|147*luOV*6Q$y3T4joUD z1gNW_X-#=AKGkQwTn{@|dsl4odMfmgb+qO{db8bK-%J4~v3Aj)p}LP`zV%1-`m-O4 zZ~CT>pR~6>OZ9a+0A=qcDc;GePF#QVc5Aw@;fGe{K-g+`10u3UH?vgZfn)NArKV zTkFk;^O{vwdM;WO5k8tWm&v)PLi^K1@2x)vFMY-;grY~`mS-I&JlbSlv(;ASn!6tc zu8$emeK~fF%MIMmrM|TEtF7w}B+0&elXALpq?v4W=2k^5C1~Zd)F~FN=bE;xn7QnG z)@=8W)IHt();QN6a+tt&TbHJF7=C_uJV2Q}so5sKzHZZCdIEF0k&nv)2Q=IjW@%4; zAN7TDOF$T6Y_QqA-cOg`uQRF8xL?`ks+-_OjeBghnh2lj@@vg**F~o=AN<)>)+h=W zTmKQRFR=Humrs;CQ(EtttNn55JW}6{jN@I|8;jD~>O@_&kg?_|Z|(bO0T}PWHr=61 z%Gy+U?t(DYJJ5aK)klB3T3dOv4A|D$EFY6P8&b9vtq#?6{T@45e3g^uzi}4rn_y@{ zRCwc+6^yXxe}1Uj8l%$QZ^+(U6x!Eff$mrIoMs8!n$M`D9bw5-J`#q@cHfiF+N9Mj zC*2W|iYXqnyIyoAz1sZ2dqmaZ)LY*2sJ*c!d*Fvb*-%5#_a@c$o+v6`R@2+bxa=>1 z_x86ZrgezbezQ#{{o5A9^3p}CG_<2tvy&6U*1nWP>7?eti5KPvP3uv8+8-jil{e00 zydw)_PF;q+$vTMIDf(6HsZ~bWb3~Vh|0E?}P-bRWgwed zd|2c4_8xfApd_WxsU_^1!)%AE|7Dfgk!1rLT~)udaBGc9kz}>~GClKy>IyiX(xC6_ zh~Jo)MgB@g*ycDhbvH)@s|@C?aw1EEN2RoGm4>>@+xfgG>b}{aX(tVXtbIG-8~m9+ zrQ35RMWrcN6YoJr87)j>~!yAS5B$>%|?8Gj+UHUEK z)geOS+jpHUO@6sX9OJe`KfAL6vBU`Y?n*_iE$V7^nsIF=cDCc{NLTV9&P5=fZQJlc z*%@Z&xzV)AdC_TA-2`;@-DJEv6h>^C!%gOHhl8N7N3m?Zmh`i_dO4WF1 zDgWDqEjB%2#zu7=!(8b6_DDn6PW0>b5b^*6b!oi;Xpfvko&9b+wRh5#DQPD!rQ#xj z2!beF_~a|AR`7gjSu)a32(|Lt=_x0P

    t(H(jvIICb~`EO~VGQz(<@w3Er~D>haO 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

    B}w$9Vs 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%0AS<+@ug5)1FSDmz8x;0)tsDy3wq(reYywW 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�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 J&HtO>e*tll;@bcK diff --git a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.sourcelink.json b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.sourcelink.json index 7a2e3d97..3d27e0be 100644 --- a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.sourcelink.json +++ b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/127fcdbfd32fd1caa4a55ced77c7e738f038a59c/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1/*"}} \ No newline at end of file diff --git a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.xml b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.xml index 13be4ca9..e3a0fa47 100644 --- a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.xml +++ b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/StgSharp.xml @@ -64,12 +64,12 @@ Set all necessary metadata to current form instance

    - + Resize the current form - A (width,height) representing the new size of current form + A (width,height) representing the new size of current form @@ -79,15 +79,15 @@ New width of the window New height of the window - + Set the size limit of current form - Minimun size of current form. In form of a of (width,height) + Minimun size of current form. In form of a of (width,height) - Maximum size of current form. In form of a of (width,height) + Maximum size of current form. In form of a of (width,height) @@ -412,7 +412,7 @@ An IEEE-754 double precision floating-point value, clamped to the range [0,1].
    - + A two dimension vector defined by two elements. Vec2Ds in StgSharp are defaultly usaed as colum vector. diff --git a/�代�/StgSharp/obj/x64/Debug/netstandard2.1/ref/StgSharp.dll b/�代�/StgSharp/obj/x64/Debug/netstandard2.1/ref/StgSharp.dll index 18115c0b33758370c21686984447852ad29f3904..b89a8dc6938ea62388f5d6cacff9bbfd12f6e206 100644 GIT binary patch literal 197120 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�f4W)9R>(($suuYCaNt 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 Zf3C-iNIFiEpInJINSeD9&kf)M?*U7xbp8MU literal 1777 zcmcIlOHUI~6t3D@P$>wAiU_lS5Eo1f@c|eUu?RLwZ77e;xVX$*+8d@b&D<%{#DyY8 zVw4(1h$KE1vLVs1P$WwD5&i|~i2uN)=afQ6TSKGqPQFa$&YAO_@7#0Fgs%2>9dbAv zji(x$Qa}1GP8-q%PyN!uizlnE*5&fyFL%YqV>fRtE;_*|yY|AJ`8%aSP7N*vnW^fM zs3juQl;T7lBN57_7?Ta1>!YSPBCBGQ@TjaSRB9FBk__tUY_hni4z#W;HHC$sc}4Ek76)$PH+8uecJba!vQTCz0OcP5p!|aXJhU=^2T%^E0NBX47`z$1 z+b&QCxa?9x+Hv=wT}5LQ`A&MElvMwvJpbg(1chL>0nj zLSeduiKU7ZO!QJSlr0qWh0^}xNlwI6RE5ialK71K|5V8;8!5h$ksa6Xm0SsXRe);1 z5kL*#DBu|2FY}TYSK$iZj>w)DtnlN2LJ`%%{`Nu@{hKo%)2X@i!+X|R%6k9OdbVsm zdS}hAr0;+FKKr~=*!VoNvG#g%{i*fgjy1cIo?f=5Qt3By-xj8X%h!7ZYkE%b2^*_R z>9_Nn4<^6fp2Q03LhU1Qc7T+k2+UZZ!nsiRqdv(??|?Vnzd6w(eSB z1bKfQLEge$h=U-nb6uIfYR+@wvpLDl5oeIZs5=`?Re%R#ah1t1Hj~|Slxb9P^$?ZQ zl77l{b(|{B0V6@381MOAIx)60HS?$JnWDe7&&C$0oZ=Hx+Qm6F2a<8>HWHf2Vzkt+ z$CKA|nW#<^R8)3TZZeISa1P?$O|X5I_DynWluLF5lsg=8Gjx7gM+Od UK3_?gj#Gn~N%t@@G^Ry<0+}@xN&o-= diff --git a/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.csproj.AssemblyReference.cache b/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.csproj.AssemblyReference.cache index d05e3e183f0acfdc7a410683f086ed745ec5936e..950133b6cf9f4a72fd72ec44fdc2d7f71a4d3052 100644 GIT binary patch delta 394 zcmeytaf_3cjgg6gVRHbJ1`{)5C*wp8`TF9@;*!){y`s{*lFZyxz2yAdg3O%MqT5Jn7&AQsJ%gB>%%qsS)RN+o#JrTmq7);bP%uP)5LCZ2RDUo`e<)bL zUP?|5BO?P41aFGlI`t+8BO{|4NUJx{ZUTB4*+BY`0LUCLt_Lz$8laqsj1v#2rxNEK ueXw`*f!@(a^^QJK-kGe!s5QBnxz8w*DCMa-3Sqzy&CJiUHJhx<;tc>byMR*w delta 446 zcmcb``GbRljgg6gfq^k|vH_EPeQsuQQGRiLT8Um#a*kd`VsS=teoAVLp&k&%6s4xc zYae@-QZwkWE8`$6rv2I z6a*$tkz_2KxX#c9*>-)f?fO95^-*ot$8O|gen!oD@3teSD?(g zZ!8%~SVYa1KR$i4KAz<~e`{grib;K|G++M}JimLb^>V&{%l9r;%E{_A=kmGC{9VK& zJ8zFtWa}~uce%W;g=Z!$Nwi_u@hkP3%((}rpMFj@IJrRHu{m_U^m~;vn&QW93O`=z zXly0RdUM|;Z41NGj2uA!oT(Q6e^&QyAY&wUr|Kw#r4|)u=I7ZOPVQ&XP)$xYPck%4 nOG{2MN=ZpEH3SC=10z?NiJpO;v4OFnB?DtDD55s1voQex^AeoM diff --git a/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.csproj.CoreCompileInputs.cache b/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.csproj.CoreCompileInputs.cache index 1b5d57e1..6f0f082d 100644 --- a/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.csproj.CoreCompileInputs.cache +++ b/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -14600979b7047444373c4005ac1629cd56f39a50173cc96850f6c359889fb1d1 +e4e38d06f2245eb242b8b57f041e9aa530a505c39a7af341bfce0c12f0b62443 diff --git a/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.dll b/æº�代ç �/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.dll index 8ea4f7c7a0cd594dd228d9d9c5d73e226a12ba14..3f49618714762c09edffe3f895a86edb2901dde2 100644 GIT binary patch literal 717312 zcmd?S3wT^r^~OCpXEKvaE+tJf=>9_RZQS#(ul% z;3vi&`LV^h_EY<^r}Uk$to@`DmM_nq)_&rm_P&+N+ZQiy|Ipld?aQ(!FPhZQklG?Bw&k*uQ>x+iT9+pJU_N>%1wk*dJ5sm`iAv!0IZV81|xM`Y(U8>O{`4AN$C8 z#gfdDR2;U^K)Z_= z(xmJtpZ#l(#Xd5rFV}YxgyI`~l!p5g@|eF_#X=k55JCFj#j0Z;zPu`S@n4fMsoNpg zEs3}Hg0Zn!Ds!Bkz1B60VzH`@wEx8dRK_!VgmS+;$~H8)=1Z>DFBVYuHdk2`%^lC| z>J3!m+!~Cdqk#Z1syoFESa>8iKdrquFAA#dcC|5UyQ{P!9G0v z5QogJElY9}kZCn7&{Cqr5@V&7_AOWK6#tz%w~rL3L&a2)i8W90VhyNRR8o^)m)w-{ z62S;M0NI!+eryKLsG_EH%Iivd!(-VU;gpvRa12(0tLv=mL*7$!6CpV(>BobSkk)TZ zCAtz`7Ftrz*HBj#y1j>glXr?qXK9A+#?WqD?D~mdj2fm-FvEGF$zxigt0ob2Lf3*+ zA_%Hbo_3JITR5b1&;oDAAkT8-LBqgTzuOF6i=XYrv7^4Ly5^F_-PP$$b)B^} z=}Xx=Hq{L-6KkshWvVNdsWzG0mL}22iRSpmh7tA8M`de56~?Nz)v_IPoJ?g>&f`yT z<@~_1p!u~dtzlVM{#{TOG<}m7mBiDM)OA%SwIr#|+GJRgR6?CZmq}y}^a8X-BKR~8 zt+@ph9f}T#3M`RH`?Ai^6HsUA3bk<&66;YLXqd2t{jRh>yh?h3uf2c_YYZksrlvL? zpwd}e&Bdxpb|rl64_ar^AL6ki7sQ(30{UTftO@5Nd}$0jM7%l?OopD!e!)&S+42! z_jMZV39VbI(r}E$WAo;_I<1Md!WRsSK>Wjx^~T@rK$>^)+2JH98LKV}5gWQ}w3icvHM9)f880bG)&(YgA)x zI88LxY7e=Kjwd=B!?EXP#^D@OU$dz$*;SL&vR4>AbiSdp!4+GgwMm`84nbOQ zH4f<=kzlFkD?fB2nLr~tr#m^L$-dk z;-C*ON0+Zw)R`IQ`2~y*PK`xh;A_+H*ya}WGcSSFI8PwGKA417%51MuoO8#})dMx| z3#7;-OkgJT$?h7l#c@l4+^ zTZF#RLaA?*7~kklita@9iaAs275zZ#mFcEl1xLNEpcPacN_Q6zN0y;@54jiF`m?SrW@Y{hwsu9aE@_bj*;(YN4}RQ7k#H4 zeQd`Hjig+#h?F@TYT!nkS|&n(BS#d0uXX`4`D%0bsL zCE5Oz4t*c(d}q4xU2yn*JFUQX#(g}P@2i83y5W^po`*_h`<_o4;e<`{6<3)ez(2H~^n#0k9q~GEuQTr{^P1_5O0zFA9XnV$eIYw>& z^U(DQ$;G;+9e*XQuLaQOb)(09iDJdcs@uSLF>Cl`IE9e*XQ(088c`|CyDMPrHYlo;R929)If z$}B7h%5BK|B6R zT46bOW;v>nQ?D19v9uhNl$L`M?bIyCZxG{b6P|M^>cRxbxG%?WwrL36D^Dx>w!Qd< zPAb0fOy7nTeWS)w-zYJ@(VbU9cfxb7Idq3{KhI<6PC9a@BrTe&+r*#F&>x=Z&&Z-b z%vS0TC1w6#07>8TD zUh&*ClDx0MoHT~_Sew)IF}o|}tp4AH#SPE73G^JrW!#se6t~#sCB1o z@-m+-?+)S{rN#1&M0pR8@>1M0lI1;7EyDkL4drn2W6Ri4)T3o&Rxjv+-P~@jjF`K^ zGSaW8jK2qqCO{eVz7usObLk{da&1h&j9uX|c7e;-W!%s67>(U&NDIeqd2+F?Xvbek zD;&E#v#zFVUEy9&G?vVzl$idAxm1`cu4k8c!>WSaQC6Jx(9@oJ+6$*(Z>s$%nHehG zTTc@6xSNt%fJBjc!7N5K&spdNufnbuFZ_Y0>H^k@xYrmj{1Io|3j1DsfnU8KCl+vL zEXjFh>EVqsDKF2gJ?yrWcaK&nww1sO}H0ph5Z~Wm{<(YxdWJhe$Kcr$8efC7zy;V zJWcwKUSsVj?K&lFSDx9fhf<^5!&7JQA$s8M;VHRzdGQ(xCI1usfllt(pl{2cO0#p2 z)AO@OL*K@2CTvDs63*@i@r37@hx;zv5vv^$^D&yMJcR38Wt)5p`sV*f`i}5gTXXxv zbb(HI!G~F_UA^qniCDr9Zey9z-~HGvQi514cL0FZe*qijTaA@G-j2Pjm^|?q#m%bJ z>Ng=AIEbOYF+{$tp*=Ao7Rw$CsS0Y_L0ot<8g08V*jN4p;!x8xz^anw-%4-#PJz?@#k-&f2J_%d z-SDcuJj-z;A^~>QQsQm}uf_UY5?q^Rp2BEq{+b-E-5lHquK-qDW)u$Uer_|J5)f`Xu;gaptrnuz7>3AeJ#l7rD zaOR$7N;A~9E@-I5GpeaSPWJ7N46@CwH@Xp&>^lQVzS=&KcH&*hB=YmMmPDLKW|jX#c$*i!GVlIxq$r+D={)?1tvc?ZQ@H0$QrIEj9Jon$`vN zHEkzP{g!H4O6|;&{WwEnzC=4zEledwF6kY$WZ~*j0F_w=+S{CHppoSW=dw7g-j?Y+ zWKTsDWpj0p%MUFZp06c_R|PAO967KNPblyxrVm0)bUM$~#71nZV{xkZ=Swj%yM~b* z*a>{z>Ble(V^|%Vw30+CdR@(M-&i>f_zO>?l54y0_(Tj`YWecWqO=Nh=&_XCke8!^Xzp)tl38s0*FR z(e-JdYYzlMMQNufDf*j|St*`V@lv^p&@Wl4wHWL%dt}~!|9#ZCKHq7KwRULzd3Zx& z;+3&R6bS3%y|MAnYxwBgS;)1TO)jNd&2GRMX1nmbeR#%ghREA_j;1Ew7ob*RJ8?|N zL^iBybGn@csB{YB{&HOiu#C(!ji^Qm!^rbY? zI=nWkjbS2{KX2gD|IilmNoKXhsH;A(W`hQD})e;^pbjq5|&qx8&9R zrC$9$@`@>;S6UZyx7M$CdP-92VH?j?i}j|uq+0b2dkAAhg!kDYNa~1kt}lh{!kWv?~H!tdwEtykNUFHu}~$IqxOR@78_Jd zWp{!jp)Sm7sRChI=$l1A+lYlViY zl7jvz>^8xRSnvxwBbOI6#1Y(u!E|A&NF)(^CUI}%n#o){aElbr?2CJTI)|47f&*Dy zI`^KAa^ju_`((`AmGtt=nep<}j^UNazllIFidG~jyYCeD5^1II;rQqiJdIYelit8hvgZHfG|)WN1KlqpW+ ze_4{mxyOqwflt%nQ``>{s7&;lVSX?YA-uCSoVANV!`@*$Obk-ba#RnJvbvK-s(m~& zsqb)HA?dA-&NEG3EVdhb7}zup{ni_qI}?*qVJBpdU$Qv(5_%-g^);<~z6NJ&M$US% z3Zv|LiqlugyL1|9)ks}ObG$3jge-hZu%Q$8XyMCs4PKr~)7gILPvjr1j>Vg+v3Cxu z*^fX}+f+SqcleQAj>rhy@I{)i2aPwM>WZqGF;h@i>rlGzMpLOWFVCTzwk`xWpbR%? zLaWuM2^m+$zNcAX#{o8_O<&dbT8Y?{o8Bg^x0o8XSn{T1nYU#{ud&K%tg98Ov8kp^ z*?&;<+>I#hS>fKnwV{Hmyx>Ea{etV!JYlUtG~0>ru3J@XJ9H8LsgGTCdd{vwmW@d- zz>c77MTPfhu~Q#`32m|bMJRgoMiru$FO@K ze^`)kvy}=b_}1J_h;+2BX~+DX{R+Z`o0*y}e3hr%EtGsM3f{_Ko`Q7t>k_6!!+L%2 zH(1#N{j$_fZXGaH?Qcmnb{_$@;=Z+WZ!b?*{Kz%jk#DQUlg4A{f>ibO59IRuIqc7ci!KWQfa5(%EGa1 z2mH@;hK@oXeLXPJyIh@JLT`5|^Y(65x(v<_ZVG9OgZ_tlLyvJm$I9fjxSU}p9>a6a z*q)qwWQNLq3&0*vz_uryu5|&{Ep|1G_7iu`;vSO|Ve5%HA8L6-6wL%+n4xt+fhWw0 z?7U&oB}F=5+Lz`AOjiK&^<>IYolBK9YHFx9oUn&bq(!|47U38t<1E8iN;r8Y z#J^;TqGW4=6|g|o1uu3)*fyFW`)%aXpji{b`n*@t#D)aJMPkV1K=vcKPqCM@2_4Gb zheN7!H(amZj}SLmCnRfR*ftFJbqgxI(f$t7yQ*99@_C0$?)dz{)Sn~YcOmb70Go8U zBgc(XxX+i);0=G>%dC&hIb8SL_{;-V`FWBiUn)e(*P03=bf&IzN9>T&nS``^eYz%{ z2)>87LN&4~CR$I#TjOf`DcHu=TVxxzZtNb?M-XNok!JN1(i0%!f|-2)hurs>$S9;z zlaZ8Bw;wwyw#y-|3|{Oklwog_f%kaDTCD3lICMN+-;i#OcTUB2sMKV0_3-M!Rau*; zS&mr)teda{$sPJWvuygDYN4&fS(Kl-{``~KMLjfD{ACIGAP593+ z|2U`PZe9M+FF1V+wMrD1k)8Jo>tS+9X&*%1uwqa|nYC2m$b}V)oYCUiiTvwSA)V8# ztWq851~R4>;XDgPFs+{IoMFcFSU0Bod_Q(-?ZxfLCvUn3KY;S$aDJ|@0m&kB1N*-6 zflZrkTpxI}RvG8|qafdhKFGC&Uh$?=og*~f&#U8(gIiBNij5PNgBQiE(>7`>p;ye3 zyPwy|9S60wCwee7o_r*2Rs4t&O*cbJ~_k_@1_!M2*56}TS@m9mfbX!LH z-S#N!AnsA<3j7k7I@>C+`DbxQy1Wz~(tf-|CG2~=SBTAqpK|}GpPLIygg4@VXCIRy zvNDD!?R{DS*b~?)T-w%;jjK==sh{Do)_7S(u{;%dR*~?7>#D1g{$jmKree%B3GGa( zkk8aHGn%N&sdGq0A6e&OuC(%LtFwZw(mEI(8(Cdi8AH}Z(%E64)US$mO8gQ#B@WUK z_S**c%@RA3PbH%o<3Xuu>E9J~RJJ`lMjh6RbHc8b{V_UWcT-<8rmM6(=gvJ2$ys=5 zMu%w@%Uep`-Q(QB@q_^voP}|Qx5S3WHmx`lL-1@KGJVU+l<2kh6y*C5@{I_4KR(Vz zqg{=DBEJDcY$Z11#vDF4H|uFaxy?G*Ob0b+h$9E*(7xi@r0C~1lBX7V0$ekvUaXLD z3${{QvceiG~H4j;6=w!Kv@OQ{^M_MaXLAYlZo=)`ghhmxW@`uQAE{?eexm045ABKpZ z{aP41yd-u+6r+#v*lF;Ue_s9+Bn7jOYn!T2dH=^C%J<@c*8$fcC8*;H|0F`8;S%EF zGJ;NdCB!8qMCR|_h|P(0kmYW{p+LV&CG@>iLjS$s2f#CfDr6qh^7G}07ippjISP@e zLhxRri5(fmwp1UYyQD0iEh$TAw}kjy89|>)>*IhFPYa|@o z+U1fWFH)V%fFwOx41Eyf-h;;YkZV3XZ^L`g16mHx&;1zHQaFY#$2EK`U4~U@_oE#b zA_Ykut*czIQ``U@XC3F|kE5EXZ|kst{P;?8j028|9vKlF6XJwvRIBNmC5`9h>4t4y z%idkWX2ec|ydy(XrA>MQ^%Osc&QEbS);6YatPeIojn{uFfc$!~Cc$SA4BkdNg-Jh; zl78Wmg1;dhFSb2`1-(_@e#3SYO>tZ5saID&l@L? z>P`ghp55o(ft>&!(GPLCNpDagumal>mub)}Mph%fHlrp%mx5w*eR?E2k7dkU&dwTnulCrT3~3wsNisI(|I8VA#wNSZZ0QwyQxGn#CgcvYyJkNOvizhS+v zM7{6F>%a1L^s_%jqo?9>(weTTHj#QSS(B8usHxl{c$CGus1aY2TWFC)d1E959-!OINAm6v0YYc4+4;NFE<%IKjks)I>nE57*7u)wW8!{DB(lJNGwVQi$#fuz5d0{wM2nRj38Mcr-EeuXHcHVug5X>2D_Wq z2XiMREostNCE;AdJyrhwkJ~0HBldmZL1ACbxW~Rqn+4C(bwf~OtFvt1HHiu z{u%W>^ijsV;9rppeUvdT*c{2wM;Y@1d;^i|-=j6=1=Je$+Y>cbqV+)}tR!c{R+6)!2g!M#gT1pD#uDD=3?70nJy@Vvb@nDEkxigras#MuoJBpk z6ib$3QLiq=YD%%FhnHftrC8M4OR-cb=Gy;E6oMn*tni!<&;8-K5S|Bk#t2x2bN+`o z6nhpWc4}r~k$iYdBom9|kG4cIu}D6$C6b9n^3g4kOe~U*ZHZ(e#z=iQMuwMu{UWIXJ6M!Bt~8N-DoPw*n#gVxCGJp~$et4=c9bTvvqXs#N)x4jxGfiy zt9eR;e7D;HyuPlyJ8=&uLcOYpE|T-SMh@PD^6>IEA6+L$X?4S6$>6VmWF4D;&u>-U zBT_%`cv}7{_<^gmU?TKjpF%%tU%JP{{Lwo}rPrdXSsf*J4rdRNoI^>t%Abqy=9W`& zm81JPzI5rep(Z0_!9CprPA;%;cFpf-Brh~(kl9&`BHK@ zQ|8j3Ynn3W23=i?o0yNYyzVqynTvV46mlaiN4bqtzjB#hmCJ3sqJDSL$#O>*mMnb~V;zJs z&M6PLc8qojusI(piopvN#qEUb^wKe1RySMBx?5@1vf^wp>+Ypl!^W0f3N&(V zHisv6J|q5c@~q1!z3aYcQ+X0s|Y-g`}L$n`!3A!qYjx#dTA_S zax@EzBGm|XyeWiam)X7Jel_fXSqs%k+#WDtkt#Y=WBRFyo(i%BD%&IEdP}3BJ9}F# z*cgGww4quzSMi%4=;a0U5+fo!=MH00nDD7EAw1{ixrB=~A$K$d$Qj19+I8L=g}!tk z=kNZ@0H^R}rt3FvI~~tzdl#(WDKmQDSFCl;k$kp)5Ll6<+J@D2ZkNC}z}DgUpC4=h z)pueX@53B}P%7ElQ`Z>;gnY4;#IevVZpRC!BTC<{(ZS2YC#W`h!m3TWchrw?|!8@Yhol)?vDEQ4N zcy|>1RusG^3Vu5Z-Wvt)i-Pw@!S6)D??%DzG3e`_OwwR6`RDa>8_1Up0jYzq`ComTxkkG9g6 z+DaFj%kiS^k3o6;Kf!Tx3p)~u@;D-yUl-FD4bv>wPkGosB^-8AuHQXcgxJ>U(5)|> z>16*)`n>9Fln+nEOrnegeCy2$6vxZc@!ZE*fj{shM_vY@207fYjYUWEG72@wvDw?B z*FE|!HuiP#jvcF_dmpSp%ut|atr*FR3qT{Gih`=7G*OW8-YT`3`KxM>@#l*&9g4hG z4wG~=ieoY)nUur(Dv8VuHgoVoSr!o}$a+3AtY>_4PgEU)>~0h#^wTDZU6W*7l8K{o zQZZMKpEc7uOvY~Cf*(JnT}~E((MSt^UXnOz43Wgi!zQVV6&0GKa)l}3-w)+zFy{_N#d{^B9{zIQyJ=DMO!AR+?Giyw`G!wwsPkW?p-gI_bv*w zcj;Udpl+}e+B7UCBWKgFDm@3!;Umqd#0pLrGWrt1ulVI3oWJmHmHc7sKY=>%`q^Ha zTeyID{ZC3*<{6Ru1-+~z6ECpkl&>zZsi3bqcE-P@Z}5C!3^Wd!X^h22y?rw?jkth0 zS)cnH&bhlad|mjXxO~tLmBdF*iO2allSt$R_`>N&Wp5J zf#}dlP;#P7W%Hm^eV$bxPIl;+8VpBcc@hW95J_ep95UBX^WY#qUZ5XRT{`rQMoD5< z9PEcANp)4u^s6NdwC@fc9#R*R!K}? zr-{{#{G`8pji-Bj$}Xpg*xRWoPi3#u>y|Cg>!T{n>-w;cmH*$(>;JKCH?Olt$h@A2 z{m`|GJWA~Q1XiZeYg+k0G_948za8+!7eFGrNOGOQ+o@254I>fV5s5~HqC1PCU=s#F z-?f8v-&I7oLnVrM`&FjQS68lb=B$F4Da_7mVq>PaR zE7%X0FR2=_Y6W7;3dDjga7M4W&X+EjXHA6b+aFvoTs+E?%=#utjQjbDxlB?q*HG)* zAU|HGA7(i+en^s8-^!EB`et0Ls8C(3sL&)86;@u~2KoMH`fk=7l^wZ$3w;b$hFLlf^fBy4oVAd`4fTmM`p48 z`~$|BE^<+ikA|E)FB)Q;nOtI3b4kHuX)KNhkM|_<=k-4ehc~yJE{h-E01m_H0`5?- z2=L<1t&-^U}bxO(!t$Q;iC=^T$s-{@XMj9_Dh+@K44ouMU3heR=`FY#W^ z85$l&nZqf!$oV?u3JBktr z__!;vRcMlmxpHe|A>wxh#_%p7|FADK$oHSRVpx5gx9x44anK|cr&UiYLw&EP&?GTv zZJDHUg<7nN3QbbELX%WfnEMhdgU@{r-$Gr;6lLap(~ia2%et<0AxUN~F3%-XmZ?E4 za79}t$;|tv&s4N!a+TZCx~OQ&B$eATN#*4-Nkv<^+XoLQT~*A0k~KpH)KJ4#C;TXj zj!)^&GU4lJAXdgKo~8qcFQdGajT?I~@9#D!m!ur3FiOc?tbZfVe`)8W3;3y`~g zCx*?w)8+qjo0$6bUPY&Vb|x(ef3r{TQ#6I`t10*`zsA}@TT+;x%)Lv6Ila=J)R)m_ zUOy}AgVzgQZw|E7C37xNHcA1kF_ot&r+pRMU9IK5!2OuOZT4UAhG zl(CAx_r}kkDnlXLAkWaUB{7u-37_P7S@#|6o|HP?GZwB=-MMW zrQGr2d*+zGrS9@9QRwEsXiH}ok%~@z8OKOPaU_+O>$&!ptZRdG7Z*rtKuTf8rm>>7 zE9Npu#T5!a(!_G8ZxwTyq++hh>)IgSr9SEFVBaN)4h@k+t2Rk}uc*)@l`Aw!;+?Giy+R}BcboA=F_5uxyd*R)Z2t5LE*27;T+3Wuej&2QnMZ&rUVxOeA?)}b$ ze;CV0C6aj`DD;vE)M*Owx61%WHL|y}&zVt!9OP@LFAbepKN) z;6K*w7Gw4T6v90}nlI}ugMdDIrOEQF ziEyI*1B1Nr4_B7*q~iL99}gp{vq8mNCaFA^P81b$nWSQ_%4_K$-(Ppd80@r6XJl38=glh#$NCdpM? zb4psjqAjh9indHrxh<1aZcFQ;qAinDUM`bVZp$PUZRuKy`MY!<(u_Y{ShZFt zmRsL_SRiW`6>;rirJ^|6e7bf$Z`Up{h>Z(!gC4YSdD%iz?tZR3*l&z7hf9eF*dXD4 zqku9-O5Q_~YR|LU!=>_Z=S4W_mM0bGcl=@;QSI#&bD5;_Tsjac<}yj;xpa(F%w>{_ zxpLppWf}8A$==+cGXInXG52#)uv;MXWMa$6>83ku7VwCXF`GD+pOOwtw<7L#%t22UiqNScX6 z)wg_bcVGD@3G4eOl)HEL7L*dx-JYJren^oS{A1q~68fnnLWz^mO;a(H(57JStp){M~8p_JkH5B{r(fywmsB}++dBPi{ zVlce_lQ^e1Es))Bl_Yu=Cdq8aRXF!3>w}+U_$31TBm;JDii+JmUZgo(ha-J@OD9?e zufx(c@+@7r4wvs)mM0ZgIsEDMywoFpFEtABc)P}CZr8A4J!>imRjUAr$VjP45; zgW=|Hq)%rt>1n!tN18QBdYasj%Iqbd;F8rr=CP7J;y2)r*Z&tB-QMY6C5*>>c$f4| z6aJeCzZHf30(T1r?GdY9CON(Tg^hmdaeKrJyFFrt-5xQ+WqZWy+*+3|{2%zkJ>td& zy~^MfuqSTH261DfirKkTj9YPh)6OszuPcgmYq)V6m9tm5b$TLv=W|vsctx&4SbbZ* z3gLc=&)@g@ck;O_4Au{SFkFn~X)N~~*H7r&CU$gKkJ#N_Ju`Y~wj}hQB+)S zSZK=2=9DM4^hKZ8Vkqn9NJfFh2Q+aFbXs@~#51pfeodd#D2R5MJhkYD=s3=f3(KLY z@*z5NJrhdVW`m_{vcXa|n2`pJy0O50t&^NBsnWh}@ZdXo_m*Xn>xPTDRUz-*iioyD z5#GHO5e!&ZpHhbaDgi}Pxvxy@yf`Pkr7_IRm>&s>0MNLE^*Y{VCmIQ zv5|+cC8epH%On+T4R!4{sLZdkcFnb$DYGP*3z_ny;)P5}byQTS)lpHQNh(*kjx88n ztJ_vFN#!1zq;iE?Q{qN>kxf#$LX%WfIMlVWs=HmnWS=CCW%3*4Y&Mk%^b+9 zsUhY-lSHfGL?;fIBwDp|Ad_?sl*=<&xW4A~zYT123s;5k)9vptpRBZne=_J7{*Dtr z()___Joh_T(G2^##e4Nk`F_I;1@5ykZ*VT|^W+U(eJ!`wlecsArCod?`ZzC7yS^NQ z-_!X&xe5Fq;RJqQ$ONwzlZ&E16h)<)UMtESsuunTx$G_MiH&j zn%9l-*bcCPYc9N_N6&CImr}RYDJ@W9d4N~>qJ5;f;uCp%U8p!e1z)<$LUdN)bH$p8 zBG!h8GI#c6aCN1s<#R*Ihe2`@3{IfetY7S($=`NsmY_Fvr2Fz#BS7 z_8lleXRwBGmAIt<30b|5BKRj7ErlQT<(1?FoZrQ{K3OBz*L7Y(e$dxX%1P$Z zNDq4i^zgJ5dZhm(bsD8V+rpoZz#smu5jP6(`^5Sy#B@l^>3tfxIU&c%fgE*-{Y&pQkGCz&dgxM z7dFW-z*oWj3tpq^1@DFD%{=p7x(Obf2)~BK@WOD%LGp{`#~+!%r}NndhfF`vtu^>A z9^MBwc`Na$#i|s3tU8f>AIh`%5JoEFb^9YaxAC4r>8pZsD6WEdC8Kr8u4GcFz=P1_ z;<&@S9XpwNQJ!zkUYJTG7BB5d@k7>1boFq^+ky~J7jYUaikpjKdI)39Q|e+^1!MRE z2>ssnnL8)O9r=&$Ss9iRzt7I%t)7{|@7zgzmjr%^Z_zd}uTJ7KcbOvTjNl99iQsta z*D`y{afUbU!cW!g#e(U-`p&b4S8WQLw4<%{Wc>8urUTmsdYa>C=2fxd+o=J+F*m$= z)1jghKien%G?~-7nTY-9t>5jfrx`dcz3g6VCXL@!PSw=();Hk?ahsF)-Q@VxKPS5Q zO8@GaH4E!&w4SSDYhVu_K$EiL3%e4zYEc=@CI_AYBXxu>3=AwYAco*lne&FM>f7c5lI8~85c>hJZUKEAd$ewMek z7xCCke7Ti`po*corQ=5S?KHDDxnO`TTl0kl{JQpuGRg6{5M!b)HmWMd&s>CUG^xg? zs$%PC_3zwhrK?;EhSEuF$yh8C>h4XY>s7K#b!&ZMk@Vx3Yfo);NuQaJ_LSp{L|J>* zp*>MoIz<2P+OtmDGnwqIv+Y?Ewr6r-UDAzxj+@1(rvZ)zeB59vYLMlg6?7t0mrV2| z(E7nxM8am<*{i8b%HToo*x|GTdh2UyFs`NXP{YG(#y#1Q@(E1v$X5j*9CNxeI=IW5Zc$9f6F5f%z@zCcj&%cA_-G(8msW~1_)lG3XHP`ko z2i z%QBWHI~(1~3ufS$O>$!ItjE+|gHW~>2ZU2Nb-$)R5V;3(XODoM=e_Jc$P)hcD}I}* zQ-34USvk(jkA!*A;pNjV$b#TWf_$srSmΜO{smkN^bZoj?LpQ3v#rZt*g@%_;Tr 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

    &$cO_^1{t
    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
    u!IBv-^s(tIv1u+huHAZCwOfe;m#;f46TR zn!m&3R`1;YeQ3YKb6C{;-9Daf{tm0s-c;JVZR0b=`j><6^O5a&)$y%XN8S7#VtfWO zKJ9FL+;{sLHa-rY+xR%V#Q4l(eBvb1c;&GD?7r*gwf*eY*8w}XT)z&`zbrOh?z?_% z8!w0LY`h$PX1ub|?;MQRK$}0;@3Hjz4E?@ob=~#9oSkc~-)HE5X8IpU|Fc+qyl(z} z{Z$7xS)Fk8V3DmShjFZ~JTd)fdk%B>b+FY{t7qLu+I`#bv)z|n{?o0FI&3*i{_X7^ z;QWg|SNqGXzPdcp4$=3J`R4Dwcci2Lhw)!){;qDUG=GQV@PC4T9rJhJ8G_8;VFUc% z;U8%@?;XwG-Dj`jpW4oK*M4E(s7>noL`=_`2y~DM{tFcJ^dBC`j=3MB-IB({B zsA}!GdwxEtHucn_q#1dR7F&W|l8_1>e7ji-D6(SN;u$6b}*Yb>F@9kcfwuFh?; z_T0L=VeL8evwP5cn}-T^UvvL1=f2&Kz8Mc=_Zx@h?0)0^J?2!yu0Kc2KfCd+_&;X6x-ec-7_at>S07t1 z19Sli2=s{z2#)p&x|4H2Qb8 zkKOOYPp~gfSY2}O>2K}UckWhubT0ebJ<2^NjI?`>drxxioZf%7TFB=i<-aN zza8=aVE(Rd_QXG@jf;CPywL6^?)_dls~7IQ^vno)|F+S_-Tj`Vc^Gd`51W^=HlObM z@ZX8`Tzfx-zDu{gs`uejZC|_fu(7Y|{i+A5@87(2exLJEU6^F=G2Q#zHwA1T8x}9; z?FqE_-%Rh`>#nlr=ds4i*}8N2?Qd-FnT=1hbAN$hB0CpW8t%9Hy~(hv)$QGe-_6c_ z_eo{vXLZB1CU?Kjd}imM`+poxB@=dQqTj;?Cl~&(dxrb{ftPWIG3|VE;}AIoXwOsb z`8tp39rm>L-TV2Hrgs>no_+tY_D7rE;R9=bn#t#x-eC$`pLGmxTl)?-G*P=x%-($$ zC}HQM`z{dExWk^bpOp5CTKn#Kxvc3OuA}|hv|rlVci#zSo8Dnk>$hunBkjMnc28Sg z-)JwD;a<~cCw@KS?)kPI@zxr@V)jSypKSL}_g>!Do>zX@{~zl0*<=4NXtlu8;P_zi z-ZO-irwfaNi4u5)+V4vtjL`+Vhr&*2C9io$+%JuI2lTy=*M~QU&je!)kzc*x!l_Ax zzmqFYp26Y;77MLxhUW7&jIen`p-(j7w;00QafDmq3FpQau1hHFok-Z|vM{SX|G9CA z;4hrqM)r0`Wr*{55qc;2bR%VrX;VH}e) zj+-XS?&b?&EPtWb5aHac^1H@G|UW@rI!hFw6AbA$%yRt{z9>YTOSmrD25=FSqPv}d$ z->jpT#63pb$E+huGc=Bso>0sdPI!fQS)+@$Bc7GxP&@l8qM=xmasNzzUecemw7ZOU zC(>?P+HFgJP8?R8BtwM>ifi77GVfpPeXJYrlgwul)_E1?t2pcORYuKg8|+%3uY>+K z`T^)Yti!6=-lzXp>3=NxKbijbqyIJOe@fbY zm|E@EVjWH!p?LOpWJBX;C;kQEA18ho;twHyJK~ojeqF|Q3iF$Q`Mtz?na}**V!h;K ze#^#HyCLk8k153aQ%@GMPsg)Q<1;>a!3K;^9Q?yDufP2jCvi%l|3hIW`kjjXwVUyX z#Q3D4e)nZu>Q9s3R`_=ESxi3X;d|h1p38m|n4h=_zDQoayKsA6%|mV55N^F){0BMf zanPUo4!-*={aW}r{2O+aJa%Vc1@deOZbZMmnAZ8AMY7vU9_z^K#S_U>a$W_cll{?z z%Cl4=;WPL`@GF=E{YH3Jcrbh{7$q)o82^?()b1_%HGjJJO7aQ6PW;Iy;YP+`G3Rg? z=BotzcP`_Sex&Tz;TMK}o?9z*zam5hq7tFUZVVcc@k`@9fd*dzSDR~UY{>`tr@hJg3LEGs2%Y5O#x{XLJA z?SujQI>r*7v4NCyX@GP!#)M} zQL#@|RQ3mvZ%00-gybbJC{Fm%!g-s7{YME$ZxBXpCj02G#P{VEgert0QNKd*4vJbI-&l78br* zC|sLQ7`?mfma#83Z|S3`RU)F9O5B4g`=|wgEJ`Z@h-x~&lgTfW}gjvoAs~#3kKPk+~^FiLRivNzf@)da(?hDsB_ZKp62ky(i0{4T_@RgS& zU%|Rr%lco=ddyK;`Y()MGS=M$>P^w-%3}=jAIw{wFl&?`Xrs*3RSQToBU z+V)XA;#cXLeHL%S_)MqW#@VFrOun(nbH2aqQBjnB&Nw7wd|EL+dD*Ye81FYhYA4l4VJ7O(wgSp~ zd3fQTw8GL+h3nD@%oemXcj;U)hD@KJbL~KZ$iUnz~zI znC!!_ziU&UKQ58H80+i>_tn>hC0{sB_@krRDL-EP9s6Q_9&z`#Zru6g#eR*;ejQD_ zv2)0-({SP0ZNhCkgatYO5+Sd~xSv6PhI{9Z+?tcOELa zZKu$2ixx&WEP}8X>!UR5Vo7Yt3&#_tjW3KtU8%cLyfj#nd)}RH%A@6ZVLH}%)du3t z*2^#PR^jT;!kEj2IYFQI;;|XmQt!lL9aWrM%v-LP;%PV+mT)eN>?3)fi^48v^a8TGM}N+cXHMc@eV}-s)(F#s z`A3KcJ(B;Bg5tk!iNEI_+-9}pBk|h}J z;TZHEGb_(Cr6k`)-F;tKd{h?ce^CdvGoSZ5OFxr+c7K}eYUL6x;CUiD_sLsjC9m^A zxSw__R1v=f&&@m^&L(*S_DPzy;`h4<2V?i0^*jf=>#V15ZDcpVUzmq|7Q(r@DT(Cy zh+Ba6H@uQO>>FXUx5BI77xV>QOCAUw0?Xhx2CRzTY4}ul0_x$r3yPDH^|_II=vVra zmwmdA{n#Um?7#SH{Ogtz4~FM}pCV2z_D?JNACYm(L;NW8zaH{CjAwuJcNoVC_^)N1 zB&eYFlQX`f8JD|^!*lw(k^Y`T9~*r=a4zVNeG4!Xe#_yV;GeffqTinHmmxaY30)g#HDaemK_CHdCkl0Tdz zjB#E#jr~!Ud(fSolBet}?8x)k>l=zwgM09F?#ZpLN#5tDuo(Bp8l0!u*!L%HNxv8j zL;dqxrFNPyKHl^wL+e--FUoLb=YY|3}TA&o}^-rx4< zCV82s!X68RGvJ5e?R!do8ccCrankbq{Pn7M@8iP5tfz~t|4z*3e!CdCb94J(VYZ>d zqwJS259NQmr*I9=cN@>j?j+oMkMx_k$6n*y+F4O{{$Q3LvTMV0*y>>MQU`=}usd{G zeq$Mzhn2;{@P5LlrR+blU%sCZf95Z{8Cis{$$J6oa2@+056>xSs>$!vJK2X^5x>)0 ze8eSToRV#uR2KlR`P!C2UZER}!#@51=(zX&{+lw2ZtrToI> z?Bgh$`*q7o9-Domk&mvzB9uMH2kPx6yDh1r)W zzg-E0Z%Rmh3Vvs&_`XcSdOQ!Vr+yCReccf5fzvs6CexoF=4&hXhI1(Y47JxMv*M=V z`Q=3h$=hUBe=0{8Z?nq5S%Cp46bu4BjpIi(SI~ynpJMUH&15gqNR5AC+_ZH|@lWBzegQ!YomQ z>yh6=9=5#Xv8Ye6;d$8iB@RoUYOC67LtVbj{%yj2p(pPfhAza8`j>_Rk@Em z-6Fd#8-<-d?2IluMJQCdZo$~#`^G6NjYxhY0H|x`%_4$(Z znT$Hwjrm&lMEPuuAly|*{;~bUM{$qq6H7dNG3i%C6%U7gKxFZng{7Z|eFE%z#~>ch zmy57(jeQB)n?=0Y+&3Q;RJ{DOcO3gj#LG*(e-FxT`e=_r&lbL(qan{L5 z?hB7tFD>)QZz6f5Wxbr*E_s$Q!h>6d^I2E@xd%`Bp!TOxXY(GBUBtDLpQGOHXPw-D z&*M3-1L(a$_N&44o5Uk-7M|KJ%z?fM@3HD(7lhqU?6&NX{SR;s>wOLD{lPosIf}ei zaoUM{U#~iVEiwm?@65M?5m92H!Jl#qz`^0EXQ-lHTIW3xa)-U6}VqagCBaKIKNr{Yya%i%aUhnEWeW7#TWb( zhGE?gVci!>DZ4s7q+bZW1pfxxg1^BV-~ez7_z&|kk$D`=JccljbJnQ6{nV3S#`Pfe zJ`8o;-%t6Bp!jp3D75a(7E^4>$<$;tC7=ic^WT}8hXd#>i9u>M5pS%if-#}0A6+>RyrkK*!A zH(A*EywI0A6`A|V+?kTsnJvuEIvqAud_Qvkx#BIm2-{{A7AdFpVpBhZDvLM4zYgoS z#Vpycog+NlNp?rSiXR*-yv;qQ_Dk^!%=fjE;;|aaZw!8|Gl);qc$yM}hMD zK)*k-kCJ7Q{!2_@xU|9%@r3304iTC66g!(p-Y}WsZ3ep%CtNq_ueK2`;k-WGRQzyT zVIcFBxx4tG1j3)C6!!^sQ;D02xF1JK--Gc@#r)kMucnMgPUijSQ^id=LVnqpx3by9 z|J^TrHh=NN#BEtx@}BhX9{X-+H`$G6z6#T&sVz;{#knnafV9d)||`}00|u3}v-%Bl7O zS)com??OHUc@o~69b{kDenP+4m(|m&z0S--+}PqNy36h<`=k>4a2fkBHS4igcG(|d zT^#Nq9*%q1?-b&BrYPRyE5fdqh1038EvdV;;A`P;!EDIK!_R?_k^lWd?bIu%b0Rl* z6Wjs*24{0GxqeZ3oabJf^r`derZKvzpld4oR7`GR@94^<)oifP*@lHP9GGn{s+kezY9~)-ci+&Y@?bW5v2EMN^{_V+vS ze;B7UpTraWlKngMHLi*0LEi12>^8L%<}IRme$`8Mo5~2kx0ik~`j)*V_hTOpqz*+X zD*q7l^{F3A8Ml6&>>f_oJE5=x@{!2LAP+=73;7)68R*Ak>RU_Bt>uhM z^FHd&TgE*c_9b`^`D&`#U5$P}*q8A*%YM&@yykt`PXn`poxm!bt0#ExTNHU9c$+$M zhUbH~)T34KIjrNDkJQcv;&@TlTJW4YlIP7`oL|B8bNNN}cLev@4cup=GH>Gpr0-Z& z7@K%+QCR$Kfc=W!kCM|kSTCGKB!x$oX)->%*vzZDyWi#7?P zZxJp}ul^p~EWS3a_+aekrxWjo-!AN5V4r1|{PttN6T7s;Z$Q0S{g>j*t|$A6?Eitq z#S>kSz8-evvCD_uouaaPiu@k(k|iY{jQ`iZ;-y9_-jz+lU895tHwf=xzv-0t8us0M zcpUDpbwi}D*-CNGP^X4+Z@kPpDl%Jkjaj!#;Y;BWxIZRj-EU@p2XHS;id`i5B-Zm? zr2HeWe?OtGOB5zYBd&+Pg-+ zeTch<{HBxNF!DQyeSv3+_qDfhD|s#>&w=FW#lMSLT}gJ^?`V9Fh8Mri{%8?Z{1p2m zR}Aqd?2iT)#p_%WmTsgtd+c|w?sxR1kzf5s`qWjVpWRj1iF)+*r1%YRFZaW!)v+&~w*^j9uTnEkr4}rU=e?70u?l}0HyyNiR<>4FYpYk53 zFTbBT)J^gj$JK5h_T^OMoxz&Oy*ST)aPPa$?>CmC&q+NT&-y6HJvu7(Z?~zPSMk;E zEbeJnxDR+=mAni4dLiwV7$?8$lZ4@@|KaFw*rW36!MJ6j&Q|B&4}^&z{e14-A(6x% zK2*Fe*~AlLw*$LK;D$QVPiDT_vHprwmVYt&zxRRoDZVSWpuYD&UJSoz_(jLB$_>RI z&pHTyP&@_SantghuTcug&(N=etjCqC$DyppdYo5Qa) zEc2C*eR`ez`#+F>YwmqbxgS0)Ah{29KPBhLEY63YtkW@^2Lm_{B5|IaJFj-jz(2#w z;olVheE6ruKLPFa0e8^uRqW1TH>rg3%f~r#1>OMOn|5x{PHX(@;GY(K5%lrUhe5v` zz83zQ^J^;SSy%X=4eDnY?hSKkKQrgw0qhrHzZ&~0*dNFK?iR+2`FOy(zZfieV(P&J z=KligBA9c2J{WeZ#-$y20nD>a^0{DM$lHMzK%edM%LTRqXMzjJ=K=Y=B9EP5 zQsNH>UxHPLza6ZKd>jsM(PtrUf9CT%JlPKU_n@6? z@G!KKbf@%F{nyl_h~(9l3%!_+3-E5>a_}X% z2aH60+{^v$Qg!9=Z$x2w?(K!*i4SQjjD|c9?{7Zw-f1}J*d$-s-R6F|tcLh<-UoL8 z?|)O?Hy=sABeAf4d*O<{(&qqEuMvOyU6>@U?3TqAt|VUnB;x&J3fm(> zxPa%}<*&t)5kH=v_#5Phi5rVJYZFO7u(a}t9bJ42`uyY+(R-ilYSs^E)(~{GueG-zJJCMpHfoxrFRJ5eU}dzkioez6aPJx42Jqf=A%~^pJbbU+j}I#Pz~%3Hfayzcj4d9ppELbvllIKPswr zKhpmXPnBm(*4YR0?aF?7!1~PFPImtiH)UDH>BaiLN&ixyze4}2p>Ge*0#A`v@eVV; zjarLOq1}eGmz!~Tz&ct;zejN&zI#=E{solJQO4&v>t!PSEBaV=Gam|X!MnW@FL6eg z?1}K)YhlW_!d%4ba9aElaSoB!1o|<9e3Me|y3&t~%#SbiX&>@U%ttBaXEXb*HTVCD zrPQyNC4?2QPeXnugO!gjcKyh69rvF1^zS|UZ5eTb*f&?$FAs@x>Q6q5XDZ?z#xE24 zA@CK%Db9Y+i##&&t&G!4_+ZBUIO7-%eQTb(HeXSHdNGeJiF+lL0S{3g^zznbFRnBS-P9}1CuTl!Hp zyX>mH5cXrd?!1>>BHn{k^_4y?b{VLT`)NN3>%24LUk?2*^q;@T|Mp8^5P6lPp5JHu zB7>{g2T?*~|C@Q3!un{+`p?h$kHa|CW<8B&zJ^g3BT;wOQ4g#AsSDJb2Go%^oJUvC zH>FOz<6K%wyd1Dys3?WVl>S@X#jc+01PG;VwaBih%{$?{D)tRsS z#9K_A+st^BWL|?>YP_2A`-{Uohx*P|d*N7rX%5S7C~?QKpGHzw&(hAM_OdI({_RLR z9jV8U*tb8iKa71J?DMgHda!<4GT&+F_Xq5!B~UvjSwCx7Pm5VMPZ;+hjQe!*XwLZL zA^vdoT`lg5Q`#u*&z0(b6waFt%u@yG-dyTiHSBYf*9GSBDf+6+ch((>SB-w}XFd)x z&o`OpEsXbV`jZP@4vf-4`5hvk7R2BFRq<0V5td~CW=bjhv)qTSFh0AFNj{J|u=uC= zX>iC%@!#yHte?ae-xlUVU+s$cbL_gD7O%o{=;WT_{W}W7G!WiHe`25b4)$Z=M&iGj zm$THtf2a@NGD*J|{rgVhJ+Nz=TD$;tG9Go(Z-&O@2hRup60aD~$?H{`?Ja5(Gxyr-y)I=}|&rfT?NceXzpmx&I-VEBiPJ2sfuM75lXm2p>ji9{@w6hB= zOFP%VnD~Vu-gz)Aagq_|AlQ;PpTS{&;_&=8I&h;Wy0y%6t4`=6`gqx81hj1 zk?2PSOK#tg_Oz^}5N;uGgL{2u)ZOJ0AopL&&5 z{54=v*6F`d)UTEJH$;9EyTnnY&w~CA>%I3>#+UUx3Hy80+a&j;4+}1*UVq!8cx#Re z3+)yD3r_-{cvSLh$UnmqbFUctUHVnnZ$)1h{c`k0PslC>=U@qN9qT#?>#SB%v3iA{eW@{;IRz|p+dXWnKCE{&BUZ9ce(!xhk zSN1oQd{Qd8Fted9L!pX4H)eUB!#hegOBIf4gdYyG{r5$?jZ!;Z^!u8~MAu zk{^agC@9{SeypMY8H-7tskrbuSh$4v(2~Nfw3C8(pTVBQT|?YE#BE623B>yZ)+O#d z;w~tp_yvjQM?0^H*NFKULcEp4iAJ2=;7;Os82>%o>!Wh+mF3)f!9D7CH?iZ{bK*PB2y=1&*@xZmo03-tm!A-C6D&*%M*kw-oObVj6EBZ`GxFHraPo|R z{>pvXpM8ZN{a!*|xygS3{sHtWCh`@G+q|3dZx0s5{{45!8}!t;d-oR(gtz3pxz71H zk^4Y`qq4if{BK5n74$hFeP`?r9T!gnWM7$t@gMUHW^BS0uiF zgyDApp8{kzm-DtX_p!gZ-=^a{PRe|K9VYvAxr7;5M_q!{&LGy?grU+GY9;wR?)UjP zuj3q&JOk_J^B3&7FBGKy2ThWEG5uYfSbkTRO5PKB={4fzR|)697sIoymV6KLBgk9B zJHW@$ewRvW=OKJQJR)(t>DOK4Yp`1Y4}VYX9cF#5=exu__*1a`O4${q?nOMQc0-u| z0PejPJ4l|4`uU`Y{F2h{QR?Iz?ls-Z$v)S9VU+H&KbuwfvZ65E0qMhJ70&zfdya0> zSK&Ff1$DA8=S|RQ>A$j0=3kZn6xQ90Q{q)i$?k0lVdbL24Ai6M31s(y`|VcdHB}bL zKmR5BYOL?qjMMdel21M-JKu8RqY4PebB|a>yGMAw=*qd;lKp*y{hf|Hk7J*WJV(IS zlvLc(JRcQA?uUFf?O*Are74a3TlCr4|2tXFhvqBZF6@2Sm)r74-lnGFOyvA*Pu+Mk zT>4}5Kal<>ekc33(g89W~RPQ87X~Qe#h4qzgit7UyNP-2=aTv{_J^I`i`uJ zJ@_}QB>Bw7vcEV&ymJm=1MVk&W5mlcUYWTMtPGL-@+IMO>fS%$6t7!&VI=SdcnSRm z_>e2|A00*ZFL#Ph;r@KRul_&XTbzSYxmWDsy!Bcn`+?j$cBNIEbnM5SoYzZ{M?$_3 zd9OsWFU@@K?WcGHz=z;d{LA5g3IB}fQ?X9^zg4{KSA@0h2#-)#4p6Teb1y59N&09N z)b3H%YYpb%BJGx>ojKs$l=AzGz6p6fCa+2CkL0yv=NDJ;A0UrgTk;XhB>#0#7~_J_ zk9nyCzP>DZb9inrIruO79`LQSGl2Hn)6ON@nH*m6ek2giMIY~wco?3idXrD9!IBp% zue=*_9{y@0KBuzq33YaTYw-Z?A=jVCKQs4`9rS-b=j(TV7udbB>~h4A|9F34<*Aa# zq8_F=DtT$@REdA2-_JRpj{SF)_3)~T^m8i6uOI6?+H=W^a_>w1O8oLm;dkysdl`p1 zk0hV)SXhpJO}nkQAHhA?rNQnM_=9_2ZtinisSEe014C~qPLt=tzt^jspNDv-!Pe?$-WHt>Eu7ed$2Ei5pNXn8d#lo{}0zU-g~64tGJV2 zNZyR+)59qw|3*DHM7XQ=6qa$%1`72%#k8m_~`37;$7L@&yyu#_evirAy_?tN5 zm&s=$_s{p_)ra;6)x(~+UFwVb7Z*N1uQ)epZw2uR6R#HW8WArG@s1KN5%GLuC{EU* zid(&%`25(y8Q>Kk@eKK8*Qc1UDC0JncFxdFB*yOu?QCKkt1^yzh&zWk_mU|7M8@kD zqCyF_gO72;Px;y&}8xjkgM) zKNEgzsyrrE6b>L>&-UVzX{X*f@hrqm#Qxeqdw(OJO?y6^yV;t_F97{W;+M{$_9s`8 zelzW)#qTP7KKHLL)b)1M^~k&Aw~xAB;*fZB>e(yWIh9524CmfoqPOf$^8e42=Xs+B zJQMF9a`L=z1OK=9@5BE-_O0;0#q+}e?*9i;s+|Mn)cz*y>kz*cyf}Om&l%5YFAjC9 z2=nx#x8m$%zE%yUU)h9VsfX(;iGL%0cjEVf=OAA%?zy|UKlkGN_{?+IkYbASlJmr? ztN8e=!sony$uUekg!Pq|`aCU?`af{8^v9U*s8uBI#QUG#vBkZ4pB7kB_MO^F9*yS~ zf7*FOJ8QE_zr2F%A9FvvpG!PUA>o>1!UAJ{|pu z)I;(tQH5zZFNe|3bTedMhx@@k-apNzp8?$e0vNZWmt=qVn&Qpn`Fjs_WjgoQYTOfw z@EyD*c~k(s9>_o2Sz(Er!h`mA9o>2FcS=0)pzvKb;TQ7z5~w^5yc0g=xhezWkT{>@ z1Nz9X(?wycvyzWFBb?D(@+~!m2?K;-stVWM7e3xD`^G=TJM+Aj08Cs~^5G$}8_s*J zAM|s33+cC~78Yb3H+draK?x+^#NXAs#rp7~E~NS@{oqf+HyMOax(E-nRh*lhghQqY z_pt8Pv7euJlzk@VFY6N7ok}lxPwI9z?vE1|NFO7!^u73Gf_^S<-4 z?1wxN)&$pqzE35;0nZNK#QMArdJ(58*n#!3@reBYVO)GpiwCf79F_Z44=ADMkoiT!+rewXj8{`TLgctv*$`|J>YM4t7!c-CLS*3|zG ztfQ*fZ3bHr$NRACBeUL{c2|4jvFivH18)-dIQ}`oW$c?u)R`c7cla{aW%mtg@A^hz z@Fro!Ey6eKi;RrtBJQhymyrH4xTBPKstUp>*M$$ksW-$E^4>i8aP{jK?{(f$FVozV zT@dp-;DhXjeUQ9aW^sSoi^KUduC(;uxo3^St_*g0uv?4WTJ#;z*G7L9y+7l)1Khe^ z@fWgw$}w)eax0&M)ax3Y2LtHWh04+|k178Td?$Ix`|N{!k150Z?CbDVJWp)kIbt>S z#)tPHZ|P@_&x-#S?|;Wl7x%lZ_R65|&bcyUkK}hkga_CMkD14UfA0U>?{a{H&~F4| z(%u-xFMxW}mGN6cJ<7{^i_ZVM`jynsUyD2d7X! z3sNrvI9J;wk$(!>_iLv(cX&_RC5(99xWd}p!5;Q^U;2|2e0@iLy|_1T9VcF9jBqvbGR)UO<|{q( zm6-XO(_8lEn78=M+g~drUk{F6DZYyRKK-NkSokZ@>!b2N3y+3fMKCLv2>qOQijx=q z`@OhdBE`w_N>~NV%6gbkPIgULCy8Ik?%WSyaq9YK-alXGz1&N%G4(s^cEyPdCIv%S zXCBtqNaUF~|EF*-oOen7C58xJhE@AbGYZ4~BYEl+;yJ0mx7k-CYDvBdoCWR!^YT1% zu#fCMH5YbgUDV<}RGj;V7x(Wn)T55vzs8@I-#*seLB^#tFIKo@-`|-pFXB6&e9fypWz4F zDSkzsyTkU@`pZ#U7>&AL4UEu1_B*g2gnc>eXO5IUGtcLl@#_pW=qP;?>{s#}vMHk4 z%M(f1G=i}9Oxoj|I>df>pF{F^6=nD9r1(kvPt&hPQUU;(nqWz`-)S<|H>)s z^jR45vGk+KCl2|n;d$pK`~TcuvhU6KCMDnaoC{5Po~oW&@$&MVG@a+99sC}A9QVD1 z+~-#C`0VqG+6UCd`)wBheY`~H#lQk)t*XAG&L_QUp*JPCiF z{s!`r$cGarHF5S6rwefwVV?^7e8l;Vyan>B+{4oFTzP`~`;(>0qg`F)(U*D1lSlH& ztk>qO*H@gU|AJ?j--H?DpR0@T82f!hL-DIIg%#cio9$Bk70-opxSv%e-W|TX9AV#t zpDMe4`&h@0uHKWdrXP@Vy zPN!zyCZhjQnUC;{!`QRxUr*}ep048GzLN*fhvQifUpXJb5U(@yb%lFiQ`Si*)=AJf z#c9}2ct3@(0MCDI+lU90QM)e}i9e|$9-nzW#B=Odo@<&h@8?s>ZVdJT+*8jTmi!6# zyb#t+KKe1~rP|5E{MCvl`-H5^8PvU=ktNSS9(`zcD);EitEHdCy*wzX;^s>xoCyAC zExScQ!YN&(Uu>A7ZneP855(UgZ&prrS>{Q8ZHVx|cgaU{pU!_s@?A5886QfYi~V1X z{r`*eY8&%?m2>S9e(6rh@Ad-4iNttDJSTYo=h_eM6)QPc+Oy8yFy6teqk^0(Ui^M# z73WXEy`8dcjuf)#`}bA z_>EsA`y;-xi`+)Im-D_d^|vVXH|%)X@82uCg8PI&e+WDCe0QApCGW7CT2X%M!PDS_ zlk%(2xzQbY0dP6{t`^@t(pFZS^wfdH^f%E}$^X70Z23T#4!;kaPoMgzy`1dh0nB%} zX|hkn{LCIL-iGfayLkTDa8UklnU93%tFyj(vcAS1l7BE}B68NHr^x3d)i~Vl& z3%^MppYvmBJH^e&^UYoM^-|8W*X^aBj=m1}V4t#z(`BUe9`3C#(O0T0{S3~xj-AAd zc9i{S{OeH1y;$eNxnI;NFZ)@#p z{$}zVPoDkAa|iZ0*r#uLEAATdolCww$Tx&|i>P1g?x-Jo!prYdLGk)g#jmn1GsX}v z%X`p~A+l@SUGk{egh$x#t(nga_`Sw20Qs~qvR}@7*0-_6hoW!D{@%oSpMY~B3FmzZ z{y&)Ssg+0E^TMV(geP_iJ9CdJ%Kn_STk@2gC-cEYha?X?BP{jj9Oryq&-~tKE`2@j zV@0Zpr>!EK+f~@5ny}w4^{Y1bnzo9|ntU5>G)LdbnMD3i=r6KY$~tM;VyshhTch7tU%X|Ic@Y&ls;2%u{#vLu&TJ zuNU$QQ$!et`{o&*H}`T5-oie3s_cSu3IjPe*Kog#GfMJVtcNPh+gh+8@{8E*gm*!I z8tjjJbSlP!I+vDlSdP3i`E@71(<{}!{|e#8p2EDmZ=MYg&vRFN-oJb(AiH<$tH|81 z=P`~yxi73|Tw<^fvt^fG8}7f~xtHAHeZ;)l%D-58VZ$cE%58-U+X=tL5+*F6c(vMy z=W8!KS5Ej6`)pffH|w(G?bnNkfLAw&2W%9c2Fq^}kGEOaA1pXoeB60q-08wYbrk;} z_VF(2OECMY0Q!vklYts_+ET3 z`#LxG{D$oJ^WUW}4c0`z_MPN!vkFTNS6*4Er<1tP&O0W35cB#L43|jq2*i!_Q+yEj zpkOd9`t<1MA^!k={3gFAJU7%uz89>TQ2LCZFZeNm0t3K6aIZi4UQ~PUyoG1Mnb_6ympmVFPj?YNx=2_IeOUCB zz}aBQ_-ZFyMcL=?FD%9Vpd0*970Fk_6I2zi$ofe}Jvr4`^2O}$#-|nkTz1JX@;n11$jj~(C?*#hsJG89uZD8SkvTIJ9`QY~rlIMrt zf=9TkJpSgr>N4uapwKwJz8&m+XTmx)13SIG|ZZ%%*9>X*ZdABF4Q344LBkk^2R*gekL-JG(>oUEZPl{e(mJy9tNx_Z1G^-!pXR{*IwT_xBDz z{U_dPdtUx#^6Yj`bm)Fx@$EnTbpLMlx5?fAzwOZdKidv_fbM;V<1OLt{l@SA#P_}C z?eXbZGqCz%hhCm?y}dntVZ1#4Hm;Y#dU^JI_Vz^a^78zw;_V4<`sFpeJ;8OnJh20X zt2PM>y^>x1Bi^29X7|@X@y5wzX|s26`%V=;3HJ8HH~V?b#2ex#!VKEs4TqF$L%LC zkNmtmANP2B`Wly?ujlnHZ%^u;zMhKvy*(Ms|A@8g#$!8p2;9BS+mqGw7cJkMh7}fi zd-57ix~%q-?U3K`*4~~77QZn1z8mD{b>8iJFHZz8>s#6PweffI;N9MyLKg4gW^Ye% z!{dxg5}OyNFKOfB=4F?SyW@?`-(iZA-k!2%pJlsv1IDBKdGYG-w(!|o)oxPjZ$S|2(dKA!wGPHw&~-0=2Pv+?|V-P=>! zFiH_`Pt&@-o^SSjr)gcUP`Ml5HEk8AxW#k*`W$+%wmg>pZ(N*wmW_u)Hx7UL@9=D8 zaW@W*|C!&^)x=%DoZRK_Fsk+2VcV9P{~+Xl)=$I($|qVV`gp2YUJZNtc;bZjc$yg| znCR_kZCKsMoqHPp|qi|w*&y7@#nVgCYgQ7(6~OHT;@OB#=EqQ$85tf$GtrZ4D*)q_AE8K`RBYnX)M3A zjfAn^TO8x7+<4aU@^kxoRZlNJx33L7<858I|GUTS&#i`6SU=8gm+=hb^DlWiKUXLE zvhJM!KC>%?-3F^)PTypJ@^^6$oBq$fm~uh#KkIsK7sq`(!)-hrHUhi95x)RWV(Z!I zk0H+$Ebbk;Z+$!;LfiB4VStU7lh3jKIh;{a z*le$`IChI{UpxI>t1Au%;o;3`3<1`?DTgme)Z?eKa$O#i?ag%5mUr#GoI@L z#f#CO>%^OH^}+cyqF;S%e>h&RrSLv^RiYfiyyG{=Jfr+AC<)8 zR1@wAZO_)Btt0nu-8b9$>CUYTz8=p=AKMp^g$G!lZ_VHBpIo*cTUcF9V(*Dv{Mi${ zJ!fp6tk~%7=}_0lQ+1iQr-b3jr9uyOs+VTZIJos&E}W0&FIz`f&Hqnb>~hW9bIbCn z8HzrhZno}&>)8JM=Gr&^(0u-P?+hQ-<9TBDjh+#Ov7-s2BJYnpA@bi>y+iFUUJ!
    #t9*|Mkn=qayUu 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%0Ddp1;0+o@pQl*05utWff;S7Z#%?DDP?CaV+W$ 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 - Add a pool to timeline controller, and return the instance of the pool. - - - - + Get the status of a certain key on the keyboard. @@ -22,25 +16,61 @@ Function handler to load an opengl function by serching its name. - the name of the Opengl function + the name of the Opengl function An intptr value representing the pointer to the function -

    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%0DH~Bo>P;r{=h+gMoyiZElgoqoN%tLj^PS^7zQN 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 literal 1202688 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%0Df!nbM_=z*nq^p)<+41M&r+4RkEL0LWmzuEWBDv~ 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 diff --git a/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.sourcelink.json b/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.sourcelink.json index 47d8fd92..3d27e0be 100644 --- a/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.sourcelink.json +++ b/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/8148c10acd65bd764d3e12418a1ebd37938d8501/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1/*"}} \ No newline at end of file diff --git a/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.xml b/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.xml index 8dc7b3b8..13be4ca9 100644 --- a/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.xml +++ b/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/StgSharp.xml @@ -4,13 +4,7 @@ StgSharp - -

    + + + + + + Height of this form, represent in - + - Constructor of a Form, creats an instance of a form and - initilize all the customizing operations. + Width of this form, represent in + + + + + Width of this form, represent in + + + + + Necessary operation to init graphic elements this form. + + OpenGL library binded to current form. + + + + Behaviour of current form when in a frame cycle. - + Init an OpenGl context if current form has not been binded to any context. and set the context binded to + current form as current OpenGL context. - + + Something goes wrong and StgSharp fails in creating a new OpenGL context. + + + + + Set all necessary metadata to current form instance + + + + + Resize the current form + + + A (width,height) representing the new size of current form + @@ -49,23 +79,6 @@ New width of the window New height of the window - - - Resize the current form - - - A (width,height) representing the new size of current form - - - - - Set the size limit of current form - - Minimum width of current form - Minimum height of current form - Maximum width of curent form - Maximum height of current form - Set the size limit of current form @@ -77,205 +90,174 @@ Maximum size of current form. In form of a of (width,height) - + - + Set the size limit of current form - - - + Minimum width of current form + Minimum height of current form + Maximum width of current form + Maximum height of current form - + - + Init this form and render it on screen, and respond with operation - + - + Create a set of . - - - - - - - Call apiClearColor in OpenGL - specifies the red, green, blue, and alpha values used by apiClear to clear the color buffers. - Values specified by apiClearColor are clamped to the range [0,1] - - Specify the red values used when the color buffers are cleared. - Specify the red values used when the color buffers are cleared. - Specify the red values used when the color buffers are cleared. - Specify the red values used when the color buffers are cleared. - - - - Bind the indexed buffer object to certain type of buffer - - - - - - - Clear buffers to preset values - - - - - - Conpile the provided shader code in string form. - - A string represent the shader's code - An enum represent the type of the shader to - conpile, including vertex shader and fragment shader. - An uint value as the only mark of conpiled shader - - - - Creates a form and its associated - - Required width - Required width - Tittle of the window - - - The instance of created form - - - - - sets the framebuffer resize callback of the specified , - which is called when the framebuffer of the specified is resized. - - The only signiture stands for the to be controlled - Method hadler - - - - Set how a shader parameter read data from a VBO. - - Serial number of the parameter - Amount of data each elements contains - Type of data read by shader - - Pixels stride of each sets of data - - - - - Set data value to a float , - all types of parameters are float. - - The target - The value to be set - - - - Set data value to a int , - all types of parameters are int. - - The target - The value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - The first value to be set - The second value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - The first value to be set - The second value to be set - The third value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - The first value to be set - The second value to be set - The third value to be set - The forth value to be set - - - - Set data value to a float , - all types of parameters are float. - - The target - A packing four parameters of the uniform - - - - Set data value to a float , - all types of parameters are . - - The target - A value of the uniform - - - - Create an instance of program - - New instance of instance. - - - - A value represent this shader. - - - - - Inti a shader with no program attached. - - - - - Compile the vertex shader to be attached to this shader. - - GLSL code of vertex shader. - - - - Compile the fragment shader to be attached to this shader. - - GLSL code of fragment shader. - - - - Link the shader to current context. - - - - - Get a uniform form current shader, - the value type of the uniform should be provided. - - + Amount of EBO to be created. - + - Let the current context use this shader. + Create a sets of + + Amount of textures to be crated. + + + + + Create a set of . + + Amount of VAO to be crated. + + + + + Create aset of . + + Amount of Object to be created. + + + + + Create an instance of program + + New instance of instance. + + + + Mark that a method in a + should be called when rendering. - + + + Priority level of a render activity. + + + + + One level higher than . + + + + + Two level higher than . + + + + + Three level higher than . + + + + + One level lower than . + + + + + Two level lower than . + + + + + Three level lower than . + + + + + Highest priority, in , it is . + + + + + Default priority, usually is in this priority. + + + + + Lowest priority, in , it is . + + + + + Interface of all kinds OpenGL buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + A collecion of handle to Element Buffer Object in OpenGL. + Each value indexed from instance of this class this + is the only handle to one Element Buffer Object. + + + + + + + + + + + + Set data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these data, defined by + + + + Set data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of data to write in + How OpenGL use these data, defined by + + + + + + + Load all aupportable OpenGL APIs and bind them to given context. The used as current OpenGL context - A delegate that can get o + A delegate to get address of OprnGL api @@ -284,9 +266,98 @@ Name of the OpenGL api The funtion pointer of the api in form of - + - Tick counter count the frames passed since the program start. + A handle to an OpenGL object, + must be indexed from a . + Direct call will cause + + + + + A handle to an OpenGL object. + + + + + Release all resource in this handle. + This will release all resource in this . + This will be not usable. + + + + + + + + + + + + + + + + + + + + + + + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + Init a program with no shader attached. + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Link the shader to current context. + + + + + Let the current context use this shader. @@ -309,6 +380,104 @@ Y position of an enemy entity + + + Init an instance of OpenGL program, + This method should be called before any other StgSharp api. + + + + + Version of current StgSharp platform. + Main version represent in hundred's digit, + and sub version represent in ten's digit. + + + + + Write a log message to log file, and mark the level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + OpenGL numeric type. + An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. + An IEEE-754 double precision floating-point value, clamped to the range [0,1]. + + + + + A two dimension vector defined by two elements. + Vec2Ds in StgSharp are defaultly usaed as colum vector. + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Part of a circle. All points on a arc has the same distance to their center. + + + + + A collection of all point on the same plain and has the same distance to a point + + The origin of this coordinate. @@ -338,7 +507,24 @@ The game tick represent time passed by A 3d vector representing movement - + + + Move begin side of a line. + It is recommended to override this function rather than + loading an with same function. + + Time passed since current line was created. + + + + Move end side of a line. + It is recommended to override this function rather than + loading an with same function. + + Time passed since current line was created. + + + Move the third vertix. this is a useless method for Parallelograms. @@ -346,7 +532,7 @@ Geometry overdefined - + Move the third vertix. This method is useless for Parallelograms. @@ -359,6 +545,23 @@ 平�几何体。包�三角形,对称四边形,自由多边形等。最多�由16个点�数定义。 + + + Tick time this geometry eas crested + + + + + Get all sides of this . + + A array contains all straight s of current geometry item. + + + + Get a flat cincide with current geometry. + + + Update the coordinate of the point. If this is a moving point, @@ -379,61 +582,1284 @@ A square - + - Add an item to the tail of linked list. + A linear data structure with dynamic length. + It contains a of , + each is twice longer than the former one. - The item ready to add to the list + - + - A two dimension vector defined by two elements. - Vec2Ds in StgSharp are defaultly usaed as colum vector. + Init a with a certain amount of elements prepared. + + Amount of elements to be prepared. + + + + Create a new instance of , + and fill the begining ones of elemtns as given instance. + + Amount of beginning elements to be filled + + + + + Length of this - + - Reurns the value of ArcSin(x) + A pair of value - The sine value of the angle - + + + + The first value. + + + + + The second value. + + + + + A value. + The lower byte is , + and higher byte is . + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. + Length of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length of a single time span is defined in microseconds. + + + + + + + Time source provider provided in internal framework. + + + + + The method this will call every time a new time span started. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + Name of all related uniforms. + If you fallow form from + - - - Get the value of E ^ x; - - - + + The COLORREF value is used to specify an RGB color. + + When specifying an explicit [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) color, the **COLORREF** value has the following hexadecimal form: `0x00bbggrr` The low-order byte contains a value for the relative intensity of red; the second byte contains a value for green; and the third byte contains a value for blue. The high-order byte must be zero. The maximum value for a single byte is 0xFF. To create a **COLORREF** color value, use the [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) macro. To extract the individual values for the red, green, and blue components of a color value, use the [**GetRValue**](/windows/desktop/api/Wingdi/nf-wingdi-getrvalue), [GetGValue](/windows/desktop/api/Wingdi/nf-wingdi-getgvalue), and [GetBValue](/windows/desktop/api/Wingdi/nf-wingdi-getbvalue) macros, respectively. + Read more on docs.microsoft.com. + - + - + A pointer to a null-terminated, constant, ANSI character string. - + + + + A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. + + + + + Gets the number of characters up to the first null character (exclusive). + + + + + Returns a with a copy of this character array, decoding as UTF-8. + + A , or if is . + + + + Returns a span of the characters in this string, up to the first null character (exclusive). + + + + + A pointer to a null-terminated, constant character string. + + + + + A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. + + + + + Gets the number of characters up to the first null character (exclusive). + + + + + Returns a with a copy of this character array, up to the first null character (exclusive). + + A , or if is . + + + + Returns a span of the characters in this string, up to the first null character (exclusive). + + + + The RECT structure defines a rectangle by the coordinates of its upper-left and lower-right corners. + The RECT structure is identical to the RECTL structure. + + + Specifies the x-coordinate of the upper-left corner of the rectangle. + + + Specifies the y-coordinate of the upper-left corner of the rectangle. + + + Specifies the x-coordinate of the lower-right corner of the rectangle. + + + Specifies the y-coordinate of the lower-right corner of the rectangle. + + + Contains message information from a thread's message queue. + + Learn more about this API from docs.microsoft.com. + + + + + Type: HWND A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message. + Read more on docs.microsoft.com. + + + + + Type: UINT The message identifier. Applications can only use the low word; the high word is reserved by the system. + Read more on docs.microsoft.com. + + + + + Type: WPARAM Additional information about the message. The exact meaning depends on the value of the message member. + Read more on docs.microsoft.com. + + + + + Type: LPARAM Additional information about the message. The exact meaning depends on the value of the message member. + Read more on docs.microsoft.com. + + + + + Type: DWORD The time at which the message was posted. + Read more on docs.microsoft.com. + + + + + Type: POINT The cursor position, in screen coordinates, when the message was posted. + Read more on docs.microsoft.com. + + + + Contains the window class attributes that are registered by the RegisterClass function. (ANSI) + + > [!NOTE] > The winuser.h header defines WNDCLASS as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + + Type: UINT The class style(s). This member can be any combination of the Class Styles. + Read more on docs.microsoft.com. + + + + + Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. + Read more on docs.microsoft.com. + + + + + Type: HINSTANCE A handle to the instance that contains the window procedure for the class. + Read more on docs.microsoft.com. + + + + + Type: HICON A handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon. + Read more on docs.microsoft.com. + + + + + Type: HCURSOR A handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application's window. + Read more on docs.microsoft.com. + + + + + Type: HBRUSH A handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR The resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the MAKEINTRESOURCE macro. If this member is NULL, windows belonging to this class have no default menu. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpszClassName; the high-order word must be zero. + If lpszClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. The maximum length for lpszClassName is 256. If lpszClassName is greater than the maximum length, the RegisterClass function will fail. + Read more on docs.microsoft.com. + + + + Contains the window class attributes that are registered by the RegisterClass function. (Unicode) + + > [!NOTE] > The winuser.h header defines WNDCLASS as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + + Type: UINT The class style(s). This member can be any combination of the Class Styles. + Read more on docs.microsoft.com. + + + + + Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. + Read more on docs.microsoft.com. + + + + + Type: HINSTANCE A handle to the instance that contains the window procedure for the class. + Read more on docs.microsoft.com. + + + + + Type: HICON A handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon. + Read more on docs.microsoft.com. + + + + + Type: HCURSOR A handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application's window. + Read more on docs.microsoft.com. + + + + + Type: HBRUSH A handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR The resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the MAKEINTRESOURCE macro. If this member is NULL, windows belonging to this class have no default menu. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpszClassName; the high-order word must be zero. + If lpszClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. The maximum length for lpszClassName is 256. If lpszClassName is greater than the maximum length, the RegisterClass function will fail. + Read more on docs.microsoft.com. + + + + + Represents a Win32 handle that can be closed with . + + + + + Represents a Win32 handle that can be closed with . + + + + The GLYPHMETRICSFLOAT structure contains information about the placement and orientation of a glyph in a character cell. + The values of GLYPHMETRICSFLOAT are specified as notional units. + + + Specifies the width of the smallest rectangle (the glyph's black box) that completely encloses the glyph. + + + Specifies the height of the smallest rectangle (the glyph's black box) that completely encloses the glyph. + + + Specifies the x and y coordinates of the upper-left corner of the smallest rectangle that completely encloses the glyph. + + + Specifies the horizontal distance from the origin of the current character cell to the origin of the next character cell. + + + Specifies the vertical distance from the origin of the current character cell to the origin of the next character cell. + + + The LAYERPLANEDESCRIPTOR structure describes the pixel format of a drawing surface. + Please notice, as documented above, that certain layer plane properties are not supported in the current implementation. The implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers that enhance parts of OpenGL may support some layer plane properties not supported by the generic implementation. + + + Specifies the size of this data structure. Set this value to sizeof(LAYERPLANEDESCRIPTOR). + + + Specifies the version of this data structure. Set this value to 1. + + + + A set of bit flags that specify properties of the layer plane. The properties are generally not mutually exclusive; any combination of bit flags can be set, with the exceptions noted. The following bit flag constants are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Specifies the type of pixel data. The following types are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color-index buffer. + + + Specifies the number of red bitplanes in each RGBA color buffer. + + + Specifies the shift count for red bitplanes in each RGBA color buffer. + + + Specifies the number of green bitplanes in each RGBA color buffer. + + + Specifies the shift count for green bitplanes in each RGBA color buffer. + + + Specifies the number of blue bitplanes in each RGBA color buffer. + + + Specifies the shift count for blue bitplanes in each RGBA color buffer. + + + Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the total number of bitplanes in the accumulation buffer. + + + Specifies the number of red bitplanes in the accumulation buffer. + + + Specifies the number of green bitplanes in the accumulation buffer. + + + Specifies the number of blue bitplanes in the accumulation buffer. + + + Specifies the number of alpha bitplanes in the accumulation buffer. + + + Specifies the depth of the depth (z-axis) buffer. + + + Specifies the depth of the stencil buffer. + + + Specifies the number of auxiliary buffers. Auxiliary buffers are not supported. + + + + + + Not used. Must be zero. + + + When the LPD_TRANSPARENT flag is set, specifies the transparent color or index value. Typically the value is zero. + + + The PIXELFORMATDESCRIPTOR structure describes the pixel format of a drawing surface. + Please notice carefully, as documented above, that certain pixel format properties are not supported in the current generic implementation. The generic implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers may enhance parts of OpenGL, and may support some pixel format properties not supported by the generic implementation. + + + Specifies the size of this data structure. This value should be set to sizeof(PIXELFORMATDESCRIPTOR). + + + Specifies the version of this data structure. This value should be set to 1. + + + + A set of bit flags that specify properties of the pixel buffer. The properties are generally not mutually exclusive; you can set any combination of bit flags, with the exceptions noted. The following bit flag constants are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Specifies the type of pixel data. The following types are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color-index buffer. + + + Specifies the number of red bitplanes in each RGBA color buffer. + + + Specifies the shift count for red bitplanes in each RGBA color buffer. + + + Specifies the number of green bitplanes in each RGBA color buffer. + + + Specifies the shift count for green bitplanes in each RGBA color buffer. + + + Specifies the number of blue bitplanes in each RGBA color buffer. + + + Specifies the shift count for blue bitplanes in each RGBA color buffer. + + + Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the total number of bitplanes in the accumulation buffer. + + + Specifies the number of red bitplanes in the accumulation buffer. + + + Specifies the number of green bitplanes in the accumulation buffer. + + + Specifies the number of blue bitplanes in the accumulation buffer. + + + Specifies the number of alpha bitplanes in the accumulation buffer. + + + Specifies the depth of the depth (z-axis) buffer. + + + Specifies the depth of the stencil buffer. + + + Specifies the number of auxiliary buffers. Auxiliary buffers are not supported. + + + Specifies the number of overlay and underlay planes. Bits 0 through 3 specify up to 15 overlay planes and bits 4 through 7 specify up to 15 underlay planes. + + + Ignored. Earlier implementations of OpenGL used this member, but it is no longer used. + + + Specifies the transparent color or index of an underlay plane. When the pixel type is RGBA, dwVisibleMask is a transparent RGB color value. When the pixel type is color index, it is a transparent index value. + + + Ignored. Earlier implementations of OpenGL used this member, but it is no longer used. + + + The POINTFLOAT structure contains the x and y coordinates of a point. + + Learn more about this API from docs.microsoft.com. + + + + Specifies the horizontal (x) coordinate of a point. + + + Specifies the vertical (y) coordinate of a point. + + + + Contains extern methods from "GDI32.dll". + + + Contains extern methods from "KERNEL32.dll". + + + Contains extern methods from "OPENGL32.dll". + + + Contains extern methods from "USER32.dll". + + + + The DeleteObject function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object. After the object is deleted, the specified handle is no longer valid. + A handle to a logical pen, brush, font, bitmap, region, or palette. - Returns the value of ln(x). + If the function succeeds, the return value is nonzero. If the specified handle is not valid or is currently selected into a DC, the return value is zero. + + Do not delete a drawing object (pen or brush) while it is still selected into a DC. When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently. + Read more on docs.microsoft.com. + - - - calculate the value of x^y - - - - Returns the value of x^y + + - - - returns a random float number between 0 and 1. - - + + The ChoosePixelFormat function attempts to match an appropriate pixel format supported by a device context to a given pixel format specification. + Specifies the device context that the function examines to determine the best match for the pixel format descriptor pointed to by ppfd. + + Pointer to a PIXELFORMATDESCRIPTOR structure that specifies the requested pixel format. In this context, the members of the PIXELFORMATDESCRIPTOR structure that ppfd points to are used as follows: + This doc was truncated. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a pixel format index (one-based) that is the closest match to the given pixel format descriptor. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + You must ensure that the pixel format matched by the ChoosePixelFormat function satisfies your requirements. For example, if you request a pixel format with a 24-bit RGB color buffer but the device context offers only 8-bit RGB color buffers, the function returns a pixel format with an 8-bit RGB color buffer. - + + The DescribePixelFormat function obtains information about the pixel format identified by iPixelFormat of the device associated with hdc. The function sets the members of the PIXELFORMATDESCRIPTOR structure pointed to by ppfd with that pixel format data. + Specifies the device context. + Index that specifies the pixel format. The pixel formats that a device context supports are identified by positive one-based integer indexes. + The size, in bytes, of the structure pointed to by ppfd. The DescribePixelFormat function stores no more than nBytes bytes of data to that structure. Set this value to sizeof(PIXELFORMATDESCRIPTOR). + Pointer to a PIXELFORMATDESCRIPTOR structure whose members the function sets with pixel format data. The function stores the number of bytes copied to the structure in the structure's nSize member. If, upon entry, ppfd is NULL, the function writes no data to the structure. This is useful when you only want to obtain the maximum pixel format index of a device context. + + If the function succeeds, the return value is the maximum pixel format index of the device context. In addition, the function sets the members of the PIXELFORMATDESCRIPTOR structure pointed to by ppfd according to the specified pixel format. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Learn more about this API from docs.microsoft.com. + + + + The DeleteEnhMetaFile function deletes an enhanced-format metafile or an enhanced-format metafile handle. + A handle to an enhanced metafile. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + If the hemf parameter identifies an enhanced metafile stored in memory, the DeleteEnhMetaFile function deletes the metafile. If hemf identifies a metafile stored on a disk, the function deletes the metafile handle but does not destroy the actual metafile. An application can retrieve the file by calling the GetEnhMetaFile function. + + + + + + The GetEnhMetaFilePixelFormat function retrieves pixel format information for an enhanced metafile. + Identifies the enhanced metafile. + Specifies the size, in bytes, of the buffer into which the pixel format information is copied. + Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The metafile uses this structure to record the logical pixel format specification. + + If the function succeeds and finds a pixel format, the return value is the size of the metafile's pixel format. If no pixel format is present, the return value is zero. If an error occurs and the function fails, the return value is GDI_ERROR. To get extended error information, call GetLastError. + + + When an enhanced metafile specifies a pixel format in its ENHMETAHEADER structure and the pixel format fits in the buffer, the pixel format information is copied into ppfd. When cbBuffer is too small to contain the pixel format of the metafile, the pixel format is not copied to the buffer. In either case, the function returns the size of the metafile's pixel format. For information on metafile recording and other operations, see Enhanced Metafile Operations. + Read more on docs.microsoft.com. + + + + The GetPixelFormat function obtains the index of the currently selected pixel format of the specified device context. + Specifies the device context of the currently selected pixel format index returned by the function. + + If the function succeeds, the return value is the currently selected pixel format index of the specified device context. This is a positive, one-based index value. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Learn more about this API from docs.microsoft.com. + + + + + + + The SetPixelFormat function sets the pixel format of the specified device context to the format specified by the iPixelFormat index. + Specifies the device context whose pixel format the function attempts to set. + Index that identifies the pixel format to set. The various pixel formats supported by a device context are identified by one-based indexes. + Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The system's metafile component uses this structure to record the logical pixel format specification. The structure has no other effect upon the behavior of the SetPixelFormat function. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + If hdc references a window, calling the SetPixelFormat function also changes the pixel format of the window. Setting the pixel format of a window more than once can lead to significant complications for the Window Manager and for multithread applications, so it is not allowed. An application can only set the pixel format of a window one time. Once a window's pixel format is set, it cannot be changed. You should select a pixel format in the device context before calling the wglCreateContext function. The wglCreateContext function creates a rendering context for drawing on the device in the selected pixel format of the device context. An OpenGL window has its own pixel format. Because of this, only device contexts retrieved for the client area of an OpenGL window are allowed to draw into the window. As a result, an OpenGL window should be created with the WS_CLIPCHILDREN and WS_CLIPSIBLINGS styles. Additionally, the window class attribute should not include the CS_PARENTDC style. + Read more on docs.microsoft.com. + + + + The SwapBuffers function exchanges the front and back buffers if the current pixel format for the window referenced by the specified device context includes a back buffer. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + If the current pixel format for the window referenced by the device context does not include a back buffer, this call has no effect and the content of the back buffer is undefined when the function returns. With multithread applications, flush the drawing commands in any other threads drawing to the same window before calling SwapBuffers. + Read more on docs.microsoft.com. + + + + Closes an open object handle. + A valid handle to an open object. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. If the application is running under a debugger, the function will throw an exception if it receives either a handle value that is not valid or a pseudo-handle value. This can happen if you close a handle twice, or if you call CloseHandle on a handle returned by the FindFirstFile function instead of calling the FindClose function. + + + The CloseHandle function closes handles to the following objects: + This doc was truncated. + Read more on docs.microsoft.com. + + + + Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count. + + A handle to the loaded library module. The LoadLibrary, LoadLibraryEx, GetModuleHandle, or GetModuleHandleEx function returns this handle. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call the GetLastError function. + + + The system maintains a per-process reference count for each loaded module. A module that was loaded at process initialization due to load-time dynamic linking has a reference count of one. The reference count for a module is incremented each time the module is loaded by a call to LoadLibrary. The reference count is also incremented by a call to LoadLibraryEx unless the module is being loaded for the first time and is being loaded as a data or image file. The reference count is decremented each time the FreeLibrary or FreeLibraryAndExitThread function is called for the module. When a module's reference count reaches zero or the process terminates, the system unloads the module from the address space of the process. Before unloading a library module, the system enables the module to detach from the process by calling the module's DllMain function, if it has one, with the DLL_PROCESS_DETACH value. Doing so gives the library module an opportunity to clean up resources allocated on behalf of the current process. After the entry-point function returns, the library module is removed from the address space of the current process. It is not safe to call FreeLibrary from DllMain. For more information, see the Remarks section in DllMain. Calling FreeLibrary does not affect other processes that are using the same module. Use caution when calling FreeLibrary with a handle returned by GetModuleHandle. The GetModuleHandle function does not increment a module's reference count, so passing this handle to FreeLibrary can cause a module to be unloaded prematurely. A thread that must unload the DLL in which it is executing and then terminate itself should call FreeLibraryAndExitThread instead of calling FreeLibrary and ExitThread separately. Otherwise, a race condition can occur. For details, see the Remarks section of FreeLibraryAndExitThread. + Read more on docs.microsoft.com. + + + + + + + Retrieves a module handle for the specified module. The module must have been loaded by the calling process. (Unicode) + + The name of the loaded module (either a .dll or .exe file). If the file name extension is omitted, the default library extension .dll is appended. The file name string can include a trailing point character (.) to indicate that the module name has no extension. The string does not have to specify a path. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). The name is compared (case independently) to the names of modules currently mapped into the address space of the calling process. + If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file). The GetModuleHandle function does not retrieve handles for modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a handle to the specified module. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The returned handle is not global or inheritable. It cannot be duplicated or used by another process. If lpModuleName does not include a path and there is more than one loaded module with the same base name and extension, you cannot predict which module handle will be returned. To work around this problem, you could specify a path, use side-by-side assemblies, or use GetModuleHandleEx to specify a memory location rather than a DLL name. The GetModuleHandle function returns a handle to a mapped module without incrementing its reference count. However, if this handle is passed to the FreeLibrary function, the reference count of the mapped module will be decremented. Therefore, do not pass a handle returned by GetModuleHandle to the FreeLibrary function. Doing so can cause a DLL module to be unmapped prematurely. This function must be used carefully in a multithreaded application. There is no guarantee that the module handle remains valid between the time this function returns the handle and the time it is used. For example, suppose that a thread retrieves a module handle, but before it uses the handle, a second thread frees the module. If the system loads another module, it could reuse the module handle that was recently freed. Therefore, the first thread would have a handle to a different module than the one intended. + Read more on docs.microsoft.com. + + + + + + + Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL). + + A handle to the DLL module that contains the function or variable. The LoadLibrary, LoadLibraryEx, LoadPackagedLibrary, or GetModuleHandle function returns this handle. The GetProcAddress function does not retrieve addresses from modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx. + Read more on docs.microsoft.com. + + The function or variable name, or the function's ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero. + + If the function succeeds, the return value is the address of the exported function or variable. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The spelling and case of a function name pointed to by lpProcName must be identical to that in the EXPORTS statement of the source DLL's module-definition (.def) file. The exported names of functions may differ from the names you use when calling these functions in your code. This difference is hidden by macros used in the SDK header files. For more information, see Conventions for Function Prototypes. The lpProcName parameter can identify the DLL function by specifying an ordinal value associated with the function in the EXPORTS statement. GetProcAddress verifies that the specified ordinal is in the range 1 through the highest ordinal value exported in the .def file. The function then uses the ordinal as an index to read the function's address from a function table. If the .def file does not number the functions consecutively from 1 to N (where N is the number of exported functions), an error can occur where GetProcAddress returns an invalid, non-NULL address, even though there is no function with the specified ordinal. If the function might not exist in the DLL module—for example, if the function is available only on Windows Vista but the application might be running on Windows XP—specify the function by name rather than by ordinal value and design your application to handle the case when the function is not available, as shown in the following code fragment. + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Loads the specified module into the address space of the calling process. (LoadLibraryW) + + The name of the module. This can be either a library module (a .dll file) or an executable module (an .exe file). If the specified module is an executable module, static imports are not loaded; instead, the module is loaded as if by LoadLibraryEx with the `DONT_RESOLVE_DLL_REFERENCES` flag. The name specified is the file name of the module and is not related to the name stored in the library module itself, as specified by the LIBRARY keyword in the module-definition (.def) file. If the string specifies a full path, the function searches only that path for the module. If the string specifies a relative path or a module name without a path, the function uses a standard search strategy to find the module; for more information, see the Remarks. If the function cannot find the module, the function fails. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). For more information about paths, see Naming a File or Directory. If the string specifies a module name without a path and the file name extension is omitted, the function appends the default library extension ".DLL" to the module name. To prevent the function from appending ".DLL" to the module name, include a trailing point character (.) in the module name string. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a handle to the module. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + To enable or disable error messages displayed by the loader during DLL loads, use the SetErrorMode function. LoadLibrary can be used to load a library module into the address space of the process and return a handle that can be used in GetProcAddress to get the address of a DLL function. LoadLibrary can also be used to load other executable modules. For example, the function can specify an .exe file to get a handle that can be used in FindResource or LoadResource. However, do not use LoadLibrary to run an .exe file. Instead, use the CreateProcess function. If the specified module is a DLL that is not already loaded for the calling process, the system calls the DLL's DllMain function with the DLL_PROCESS_ATTACH value. If DllMain returns TRUE, LoadLibrary returns a handle to the module. If DllMain returns FALSE, the system unloads the DLL from the process address space and LoadLibrary returns NULL. It is not safe to call LoadLibrary from DllMain. For more information, see the Remarks section in DllMain. Module handles are not global or inheritable. A call to LoadLibrary by one process does not produce a handle that another process can use — for example, in calling GetProcAddress. The other process must make its own call to LoadLibrary for the module before calling GetProcAddress. If lpFileName does not include a path and there is more than one loaded module with the same base name and extension, the function returns a handle to the module that was loaded first. If no file name extension is specified in the lpFileName parameter, the default library extension .dll is appended. However, the file name string can include a trailing point character (.) to indicate that the module name has no extension. When no path is specified, the function searches for loaded modules whose base name matches the base name of the module to be loaded. If the name matches, the load succeeds. Otherwise, the function searches for the file. The first directory searched is the directory containing the image file used to create the calling process (for more information, see the CreateProcess function). Doing this allows private dynamic-link library (DLL) files associated with a process to be found without adding the process's installed directory to the PATH environment variable. If a relative path is specified, the entire relative path is appended to every token in the DLL search path list. To load a module from a relative path without searching any other path, use GetFullPathName to get a nonrelative path and call LoadLibrary with the nonrelative path. For more information on the DLL search order, see Dynamic-Link Library Search Order. The search path can be altered using the SetDllDirectory function. This solution is recommended instead of using SetCurrentDirectory or hard-coding the full path to the DLL. If a path is specified and there is a redirection file for the application, the function searches for the module in the application's directory. If the module exists in the application's directory, LoadLibrary ignores the specified path and loads the module from the application's directory. If the module does not exist in the application's directory, LoadLibrary loads the module from the specified directory. For more information, see Dynamic Link Library Redirection. If you call LoadLibrary with the name of an assembly without a path specification and the assembly is listed in the system compatible manifest, the call is automatically redirected to the side-by-side assembly. The system maintains a per-process reference count on all loaded modules. Calling LoadLibrary increments the reference count. Calling the FreeLibrary or FreeLibraryAndExitThread function decrements the reference count. The system unloads a module when its reference count reaches zero or when the process terminates (regardless of the reference count). Windows Server 2003 and Windows XP:  The Visual C++ compiler supports a syntax that enables you to declare thread-local variables: _declspec(thread). If you use this syntax in a DLL, you will not be able to load the DLL explicitly using LoadLibrary on versions of Windows prior to Windows Vista. If your DLL will be loaded explicitly, you must use the thread local storage functions instead of _declspec(thread). For an example, see Using Thread Local Storage in a Dynamic Link Library.

    Security Remarks

    Do not use the SearchPath function to retrieve a path to a DLL for a subsequent LoadLibrary call. The SearchPath function uses a different search order than LoadLibrary and it does not use safe process search mode unless this is explicitly enabled by calling SetSearchPathMode with BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE. Therefore, SearchPath is likely to first search the user’s current working directory for the specified DLL. If an attacker has copied a malicious version of a DLL into the current working directory, the path retrieved by SearchPath will point to the malicious DLL, which LoadLibrary will then load. Do not make assumptions about the operating system version based on a LoadLibrary call that searches for a DLL. If the application is running in an environment where the DLL is legitimately not present but a malicious version of the DLL is in the search path, the malicious version of the DLL may be loaded. Instead, use the recommended techniques described in Getting the System Version.
    + Read more on docs.microsoft.com. +
    +
    + + + + + The wglGetProcAddress function returns the address of an OpenGL extension function for use with the current OpenGL rendering context. + + When the function succeeds, the return value is the address of the extension function. When no current rendering context exists or the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The OpenGL library supports multiple implementations of its functions. Extension functions supported in one rendering context are not necessarily available in a separate rendering context. Thus, for a given rendering context in an application, use the function addresses returned by the wglGetProcAddress function only. The spelling and the case of the extension function pointed to by lpszProc must be identical to that of a function supported and implemented by OpenGL. Because extension functions are not exported by OpenGL, you must use wglGetProcAddress to get the addresses of vendor-specific extension functions. The extension function addresses are unique for each pixel format. All rendering contexts of a given pixel format share the same extension function addresses. + Read more on docs.microsoft.com. + + + + The wglDeleteContext function deletes a specified OpenGL rendering context. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + It is an error to delete an OpenGL rendering context that is the current context of another thread. However, if a rendering context is the calling thread's current context, the wglDeleteContext function changes the rendering context to being not current before deleting it. The wglDeleteContext function does not delete the device context associated with the OpenGL rendering context when you call the wglMakeCurrent function. After calling wglDeleteContext, you must call DeleteDC to delete the associated device context. + Read more on docs.microsoft.com. + + + + + + + The wglCreateContext function creates a new OpenGL rendering context, which is suitable for drawing on the device referenced by hdc. The rendering context has the same pixel format as the device context. + + If the function succeeds, the return value is a valid handle to an OpenGL rendering context. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + A rendering context is not the same as a device context. Set the pixel format of the device context before creating a rendering context. For more information on setting the device context's pixel format, see the SetPixelFormat function. To use OpenGL, you create a rendering context, select it as a thread's current rendering context, and then call OpenGL functions. When you are finished with the rendering context, you dispose of it by calling the wglDeleteContext function. The following code example shows wglCreateContext usage. + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + The wglCreateLayerContext function creates a new OpenGL rendering context for drawing to a specified layer plane on a device context. + + If the function succeeds, the return value is a handle to an OpenGL rendering context. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + A rendering context is a port through which all OpenGL commands pass. Every thread that makes OpenGL calls must have one current, active rendering context. A rendering context is not the same as a device context; a rendering context contains information specific to OpenGL, while a device context contains information specific to GDI. Before you create a rendering context, set the pixel format of the device context with the SetPixelFormat function. You can use a rendering context in a specified layer plane of a window with identical pixel formats only. With OpenGL applications that use multiple threads, you create a rendering context, select it as the current rendering context of a thread, and make OpenGL calls for the specified thread. When you are finished with the rendering context of the thread, call the wglDeleteContext function. + Read more on docs.microsoft.com. + + + + + + + The wglCopyContext function copies selected groups of rendering states from one OpenGL rendering context to another. + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + Using the wglCopyContext function, you can synchronize the rendering state of two rendering contexts. You can only copy the rendering state between two rendering contexts within the same process. The rendering contexts must be from the same OpenGL implementation. For example, you can always copy a rendering state between two rendering contexts with identical pixel format in the same process. You can copy the same state information available only with the glPushAttrib function. You cannot copy some state information, such as pixel pack/unpack state, render mode state, select state, and feedback state. When you call wglCopyContext, make sure that the destination rendering context, hglrcDst, is not current to any thread. + Read more on docs.microsoft.com. + + + + + + + The wglDescribeLayerPlane function obtains information about the layer planes of a given pixel format. + + If the function succeeds, the return value is TRUE. In addition, the wglDescribeLayerPlane function sets the members of the LAYERPLANEDESCRIPTOR structure pointed to by plpd according to the specified layer plane (iLayerPlane ) of the specified pixel format (iPixelFormat ). If the function fails, the return value is FALSE. + + The numbering of planes (iLayerPlane ) determines their order. Higher-numbered planes overlay lower-numbered planes. + + + + + + The wglGetCurrentContext function obtains a handle to the current OpenGL rendering context of the calling thread. + If the calling thread has a current OpenGL rendering context, wglGetCurrentContext returns a handle to that rendering context. Otherwise, the return value is NULL. + The current OpenGL rendering context of a thread is associated with a device context by means of the wglMakeCurrent function. You can use the wglGetCurrentDC function to obtain a handle to the device context associated with the current OpenGL rendering context. + + + The wglGetCurrentDC function obtains a handle to the device context that is associated with the current OpenGL rendering context of the calling thread. + If the calling thread has a current OpenGL rendering context, the function returns a handle to the device context associated with that rendering context by means of the wglMakeCurrent function. Otherwise, the return value is NULL. + You associate a device context with an OpenGL rendering context when it calls the wglMakeCurrent function. You can use the wglGetCurrentContext function to obtain a handle to the calling thread's current OpenGL rendering context. + + + + + + Retrieves the palette entries from a given color-index layer plane for a specified device context. + + Type: int If the function succeeds, the return value is the number of entries that were set in the palette in the specified layer plane of the window. If the function fails or when no pixel format is selected, the return value is zero. To get extended error information, call GetLastError. + + + Each color-index layer plane in a window has a palette with a size 2^n, where n is the number of bit planes in the layer plane. You cannot modify the transparent index of a palette. Use the wglRealizeLayerPalette function to realize the layer palette. Initially the layer palette contains only entries for white. + Read more on docs.microsoft.com. + + + + + + + The wglMakeCurrent function makes a specified OpenGL rendering context the calling thread's current rendering context. + When the wglMakeCurrent function succeeds, the return value is TRUE; otherwise the return value is FALSE. To get extended error information, call GetLastError. + + The hdc parameter must refer to a drawing surface supported by OpenGL. It need not be the same hdc that was passed to wglCreateContext when hglrc was created, but it must be on the same device and have the same pixel format. GDI transformation and clipping in hdc are not supported by the rendering context. The current rendering context uses the hdc device context until the rendering context is no longer current. Before switching to the new rendering context, OpenGL flushes any previous rendering context that was current to the calling thread. A thread can have one current rendering context. A process can have multiple rendering contexts by means of multithreading. A thread must set a current rendering context before calling any OpenGL functions. Otherwise, all OpenGL calls are ignored. A rendering context can be current to only one thread at a time. You cannot make a rendering context current to multiple threads. An application can perform multithread drawing by making different rendering contexts current to different threads, supplying each thread with its own rendering context and device context. If an error occurs, the wglMakeCurrent function makes the thread's current rendering context not current before returning. + Read more on docs.microsoft.com. + + + + The wglRealizeLayerPalette function maps palette entries from a given color-index layer plane into the physical palette or initializes the palette of an RGBA layer plane. + If the function succeeds, the return value is TRUE, even if bRealize is TRUE and the physical palette is not available. If the function fails or when no pixel format is selected, the return value is FALSE. To get extended error information, call GetLastError. + + The physical palette for a layer plane is a shared resource among windows with layer planes. When more than one window attempts to realize a palette for a given physical layer plane, only one palette at a time is realized. When you call the wglRealizeLayerPalette function, the layer palette of a foreground window is always realized first. When a window's layer palette is realized, its palette entries are always mapped one-to-one into the physical palette. Unlike GDI logical palettes, with wglRealizeLayerPalette there is no mapping of other windows' layer palettes to the current physical palette. Whenever a window becomes the foreground window, call wglRealizeLayerPalette to realize its layer palettes again, even if the pixel type of the layer plane is RGBA. Because wglRealizeLayerPalette doesn't realize the palette of the main plane, use GDI palette functions to realize the main plane palette. + Read more on docs.microsoft.com. + + + + + + + Sets the palette entries in a given color-index layer plane for a specified device context. + + Type: int If the function succeeds, the return value is the number of entries that were set in the palette in the specified layer plane of the window. If the function fails or no pixel format is selected, the return value is zero. To get extended error information, call GetLastError. + + + Each color-index plane in a window has a palette with a size 2^n, where n is the number of bit planes in the layer plane. You cannot modify the transparent index of a palette. Use the wglRealizeLayerPalette function to realize the layer palette. Initially the layer palette contains only entries for white. The wglSetLayerPaletteEntries function doesn't set the palette entries of the main plane palette. To update the main plane palette, use GDI palette functions. + Read more on docs.microsoft.com. + + + + + + + The wglShareLists function enables multiple OpenGL rendering contexts to share a single display-list space. + + When the function succeeds, the return value is TRUE. When the function fails, the return value is FALSE and the display lists are not shared. To get extended error information, call GetLastError. + + + When you create an OpenGL rendering context, it has its own display-list space. The wglShareLists function enables a rendering context to share the display-list space of another rendering context; any number of rendering contexts can share a single display-list space. Once a rendering context shares a display-list space, the rendering context always uses the display-list space until the rendering context is deleted. When the last rendering context of a shared display-list space is deleted, the shared display-list space is deleted. All the indexes and definitions of display lists in a shared display-list space are shared. You can only share display lists with rendering contexts within the same process. However, not all rendering contexts in a process can share display lists. Rendering contexts can share display lists only if they use the same implementation of OpenGL functions. All client rendering contexts of a given pixel format can always share display lists. All rendering contexts of a shared display list must use an identical pixel format. Otherwise the results depend on the implementation of OpenGL used.
    Note  The wglShareLists function is only available with OpenGL version 1.01 or later. To determine the version number of the implementation of OpenGL, call glGetString.
     
    + Read more on docs.microsoft.com. +
    +
    + + The wglSwapLayerBuffers function swaps the front and back buffers in the overlay, underlay, and main planes of the window referenced by a specified device context. + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + When a layer plane doesn't include a back buffer, calling the wglSwapLayerBuffers function has no effect on that layer plane. After you call wglSwapLayerBuffers, the state of the back buffer content is given in the corresponding LAYERPLANEDESCRIPTOR structure of the layer plane or in the PIXELFORMATDESCRIPTOR structure of the main plane. The wglSwapLayerBuffers function swaps the front and back buffers in the specified layer planes simultaneously. Some devices don't support swapping layer planes individually; they swap all layer planes as a group. When the PFD_SWAP_LAYER_BUFFERS flag of the PIXELFORMATDESCRIPTOR structure is set, it indicates that a device can swap individual layer planes and that you can call wglSwapLayerBuffers. With applications that use multiple threads, before calling wglSwapLayerBuffers, clear all drawing commands in all threads drawing to the same window. + Read more on docs.microsoft.com. + + + + The wglUseFontBitmaps function creates a set of bitmap display lists for use in the current OpenGL rendering context. (Unicode) + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + The wglUseFontBitmaps function defines count display lists in the current OpenGL rendering context. Each display list has an identifying number, starting at listBase. Each display list consists of a single call to glBitmap. The definition of bitmap listBase + i is taken from the glyph first + i of the font currently selected in the device context specified by hdc. If a glyph is not defined, then the function defines an empty display list for it. The wglUseFontBitmaps function creates bitmap text in the plane of the screen. It enables the labeling of objects in OpenGL. In the current version of Microsoft's implementation of OpenGL, you cannot make GDI calls to a device context that has a double-buffered pixel format. Therefore, you cannot use the GDI fonts and text functions with such device contexts. You can use the wglUseFontBitmaps function to circumvent this limitation and draw text in a double-buffered device context. The function determines the parameters of each call to glBitmap as follows. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + The wglUseFontOutlines function creates a set of display lists, one for each glyph of the currently selected outline font of a device context, for use with the current rendering context. (Unicode) + + When the function succeeds, the return value is TRUE. When the function fails, the return value is FALSE and no display lists are generated. To get extended error information, call GetLastError. + + + The wglUseFontOutlines function defines the glyphs of an outline font with display lists in the current rendering context. The wglUseFontOutlines function works with TrueType fonts only; stroke and raster fonts are not supported. Each display list consists of either line segments or polygons, and has a unique identifying number starting with the listBase number. The wglUseFontOutlines function approximates glyph outlines by subdividing the quadratic B-spline curves of the outline into line segments, until the distance between the outline and the interpolated midpoint is within the value specified by deviation. This is the final format used when format is WGL_FONT_LINES. When you specify WGL_FONT_OUTLINES, the display lists created don't contain any normals; thus lighting doesn't work properly. To get the correct lighting of lines use WGL_FONT_POLYGONS and set glPolygonMode( GL_FRONT, GL_LINE ). When you specify format as WGL_FONT_POLYGONS the outlines are further tessellated into separate triangles, triangle fans, triangle strips, or quadrilateral strips to create the surface of each glyph. With WGL_FONT_POLYGONS, the created display lists call glFrontFace( GL_CW ) or glFrontFace( GL_CCW ); thus the current front-face value might be altered. For the best appearance of text with WGL_FONT_POLYGONS, cull the back faces as follows: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + Destroys an icon and frees any memory the icon occupied. + + Type: HICON A handle to the icon to be destroyed. The icon must not be in use. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + It is only necessary to call DestroyIcon for icons and cursors created with the following functions: CreateIconFromResourceEx (if called without the LR_SHARED flag), CreateIconIndirect, and CopyIcon. Do not use this function to destroy a shared icon. A shared icon is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared icon. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Destroys a cursor and frees any memory the cursor occupied. Do not use this function to destroy a shared cursor. + + Type: HCURSOR A handle to the cursor to be destroyed. The cursor must not be in use. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + The DestroyCursor function destroys a nonshared cursor. Do not use this function to destroy a shared cursor. A shared cursor is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared cursor: + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Calculates the required size of the window rectangle, based on the desired client-rectangle size. The window rectangle can then be passed to the CreateWindow function to create a window whose client area is the desired size. + + Type: LPRECT A pointer to a RECT structure that contains the coordinates of the top-left and bottom-right corners of the desired client area. When the function returns, the structure contains the coordinates of the top-left and bottom-right corners of the window to accommodate the desired client area. + Read more on docs.microsoft.com. + + + Type: DWORD The window style of the window whose required size is to be calculated. Note that you cannot specify the WS_OVERLAPPED style. + Read more on docs.microsoft.com. + + + Type: BOOL Indicates whether the window has a menu. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + A client rectangle is the smallest rectangle that completely encloses a client area. A window rectangle is the smallest rectangle that completely encloses the window, which includes the client area and the nonclient area. The AdjustWindowRect function does not add extra space when a menu bar wraps to two or more rows. The AdjustWindowRect function does not take the WS_VSCROLL or WS_HSCROLL styles into account. To account for the scroll bars, call the GetSystemMetrics function with SM_CXVSCROLL or SM_CYHSCROLL. + Read more on docs.microsoft.com. + + + + Destroys the specified menu and frees any memory that the menu occupies. + + Type: HMENU A handle to the menu to be destroyed. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Before closing, an application must use the DestroyMenu function to destroy a menu not assigned to a window. A menu that is assigned to a window is automatically destroyed when the application closes. DestroyMenu is recursive, that is, it will destroy the menu and all its submenus. + Read more on docs.microsoft.com. + + + + + + + Creates an overlapped, pop-up, or child window with an extended window style; otherwise, this function is identical to the CreateWindow function. (Unicode) + + Type: DWORD The extended window style of the window being created. For a list of possible values, see Extended Window Styles. + Read more on docs.microsoft.com. + + + Type: LPCTSTR A null-terminated string or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero. If lpClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, provided that the module that registers the class is also the module that creates the window. The class name can also be any of the predefined system class names. + Read more on docs.microsoft.com. + + + Type: LPCTSTR The window name. If the window style specifies a title bar, the window title pointed to by lpWindowName is displayed in the title bar. When using CreateWindow to create controls, such as buttons, check boxes, and static controls, use lpWindowName to specify the text of the control. When creating a static control with the SS_ICON style, use lpWindowName to specify the icon name or identifier. To specify an identifier, use the syntax "#num". + Read more on docs.microsoft.com. + + + Type: DWORD The style of the window being created. This parameter can be a combination of the window style values, plus the control styles indicated in the Remarks section. + Read more on docs.microsoft.com. + + + Type: int The initial horizontal position of the window. For an overlapped or pop-up window, the x parameter is the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window, x is the x-coordinate of the upper-left corner of the window relative to the upper-left corner of the parent window's client area. If x is set to CW_USEDEFAULT, the system selects the default position for the window's upper-left corner and ignores the y parameter. CW_USEDEFAULT is valid only for overlapped windows; if it is specified for a pop-up or child window, the x and y parameters are set to zero. + Read more on docs.microsoft.com. + + + Type: int The initial vertical position of the window. For an overlapped or pop-up window, the y parameter is the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window, y is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left corner of the parent window's client area. For a list box y is the initial y-coordinate of the upper-left corner of the list box's client area relative to the upper-left corner of the parent window's client area. + If an overlapped window is created with the WS_VISIBLE style bit set and the x parameter is set to CW_USEDEFAULT, then the y parameter determines how the window is shown. If the y parameter is CW_USEDEFAULT, then the window manager calls ShowWindow with the SW_SHOW flag after the window has been created. If the y parameter is some other value, then the window manager calls ShowWindow with that value as the nCmdShow parameter. + Read more on docs.microsoft.com. + + + Type: int The width, in device units, of the window. For overlapped windows, nWidth is the window's width, in screen coordinates, or CW_USEDEFAULT. If nWidth is CW_USEDEFAULT, the system selects a default width and height for the window; the default width extends from the initial x-coordinates to the right edge of the screen; the default height extends from the initial y-coordinate to the top of the icon area. CW_USEDEFAULT is valid only for overlapped windows; if CW_USEDEFAULT is specified for a pop-up or child window, the nWidth and nHeight parameter are set to zero. + Read more on docs.microsoft.com. + + + Type: int The height, in device units, of the window. For overlapped windows, nHeight is the window's height, in screen coordinates. If the nWidth parameter is set to CW_USEDEFAULT, the system ignores nHeight. + Read more on docs.microsoft.com. + + + Type: HWND A handle to the parent or owner window of the window being created. To create a child window or an owned window, supply a valid window handle. This parameter is optional for pop-up windows. To create a message-only window, supply HWND_MESSAGE or a handle to an existing message-only window. + Read more on docs.microsoft.com. + + + Type: HMENU A handle to a menu, or specifies a child-window identifier, depending on the window style. For an overlapped or pop-up window, hMenu identifies the menu to be used with the window; it can be NULL if the class menu is to be used. For a child window, hMenu specifies the child-window identifier, an integer value used by a dialog box control to notify its parent about events. The application determines the child-window identifier; it must be unique for all child windows with the same parent window. + Read more on docs.microsoft.com. + + + Type: HINSTANCE A handle to the instance of the module to be associated with the window. + Read more on docs.microsoft.com. + + + Type: LPVOID Pointer to a value to be passed to the window through the CREATESTRUCT structure (lpCreateParams member) pointed to by the lParam param of the WM_CREATE message. This message is sent to the created window by this function before it returns. If an application calls CreateWindow to create a MDI client window, lpParam should point to a CLIENTCREATESTRUCT structure. If an MDI client window calls CreateWindow to create an MDI child window, lpParam should point to a MDICREATESTRUCT structure. lpParam may be NULL if no additional data is needed. + Read more on docs.microsoft.com. + + + Type: HWND If the function succeeds, the return value is a handle to the new window. If the function fails, the return value is NULL. To get extended error information, call GetLastError. This function typically fails for one of the following reasons: + This doc was truncated. + + + The CreateWindowEx function sends WM_NCCREATE, WM_NCCALCSIZE, and WM_CREATE messages to the window being created. If the created window is a child window, its default position is at the bottom of the Z-order. If the created window is a top-level window, its default position is at the top of the Z-order (but beneath all topmost windows unless the created window is itself topmost). For information on controlling whether the Taskbar displays a button for the created window, see Managing Taskbar Buttons. For information on removing a window, see the DestroyWindow function. The following predefined control classes can be specified in the lpClassName parameter. Note the corresponding control styles you can use in the dwStyle parameter. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Calls the default window procedure to provide default processing for any window messages that an application does not process. (Unicode) + + Type: HWND A handle to the window procedure that received the message. + Read more on docs.microsoft.com. + + + Type: UINT The message. + Read more on docs.microsoft.com. + + + Type: WPARAM Additional message information. The content of this parameter depends on the value of the Msg parameter. + Read more on docs.microsoft.com. + + + Type: LPARAM Additional message information. The content of this parameter depends on the value of the Msg parameter. + Read more on docs.microsoft.com. + + + Type: LRESULT The return value is the result of the message processing and depends on the message. + + + > [!NOTE] > The winuser.h header defines DefWindowProc as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + Destroys the specified window. + + Type: HWND A handle to the window to be destroyed. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + A thread cannot use DestroyWindow to destroy a window created by a different thread. If the window being destroyed is a child window that does not have the WS_EX_NOPARENTNOTIFY style, a WM_PARENTNOTIFY message is sent to the parent. + Read more on docs.microsoft.com. + + + + + + + Dispatches a message to a window procedure. It is typically used to dispatch a message retrieved by the GetMessage function. (DispatchMessageW) + + Type: const MSG* A pointer to a structure that contains the message. + Read more on docs.microsoft.com. + + + Type: LRESULT The return value specifies the value returned by the window procedure. Although its meaning depends on the message being dispatched, the return value generally is ignored. + + + The MSG structure must contain valid message values. If the lpmsg parameter points to a WM_TIMER message and the lParam parameter of the WM_TIMER message is not NULL, lParam points to a function that is called instead of the window procedure. Note that the application is responsible for retrieving and dispatching input messages to the dialog box. Most applications use the main message loop for this. However, to permit the user to move to and to select controls by using the keyboard, the application must call IsDialogMessage. For more information, see Dialog Box Keyboard Interface. + Read more on docs.microsoft.com. + + + + The GetDC function retrieves a handle to a device context (DC) for the client area of a specified window or for the entire screen. + A handle to the window whose DC is to be retrieved. If this value is NULL, GetDC retrieves the DC for the entire screen. + + If the function succeeds, the return value is a handle to the DC for the specified window's client area. If the function fails, the return value is NULL. + + + The GetDC function retrieves a common, class, or private DC depending on the class style of the specified window. For class and private DCs, GetDC leaves the previously assigned attributes unchanged. However, for common DCs, GetDC assigns default attributes to the DC each time it is retrieved. For example, the default font is System, which is a bitmap font. Because of this, the handle to a common DC returned by GetDC does not tell you what font, color, or brush was used when the window was drawn. To determine the font, call GetTextFace. Note that the handle to the DC can only be used by a single thread at any one time. After painting with a common DC, the ReleaseDC function must be called to release the DC. Class and private DCs do not have to be released. ReleaseDC must be called from the same thread that called GetDC. The number of DCs is limited only by available memory. + Read more on docs.microsoft.com. + + + + + + + Loads the specified cursor resource from the executable (.EXE) file associated with an application instance. (Unicode) + + Type: HINSTANCE A handle to an instance of the module whose executable file contains the cursor to be loaded. + Read more on docs.microsoft.com. + + + Type: LPCTSTR The name of the cursor resource to be loaded. Alternatively, this parameter can consist of the resource identifier in the low-order word and zero in the high-order word. The MAKEINTRESOURCE macro can also be used to create this value. To use one of the predefined cursors, the application must set the hInstance parameter to NULL and the lpCursorName parameter to one the following values. + This doc was truncated. + Read more on docs.microsoft.com. + + + Type: HCURSOR If the function succeeds, the return value is the handle to the newly loaded cursor. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The LoadCursor function loads the cursor resource only if it has not been loaded; otherwise, it retrieves the handle to the existing resource. This function returns a valid cursor handle only if the lpCursorName parameter is a pointer to a cursor resource. If lpCursorName is a pointer to any type of resource other than a cursor (such as an icon), the return value is not NULL, even though it is not a valid cursor handle. The LoadCursor function searches the cursor resource most appropriate for the cursor for the current display device. The cursor resource can be a color or monochrome bitmap.

    DPI Virtualization

    This API does not participate in DPI virtualization. The output returned is not affected by the DPI of the calling thread.
    + Read more on docs.microsoft.com. +
    +
    + + + + + Dispatches incoming nonqueued messages, checks the thread message queue for a posted message, and retrieves the message (if any exist). (Unicode) + + Type: LPMSG A pointer to an MSG structure that receives message information. + Read more on docs.microsoft.com. + + + Type: HWND A handle to the window whose messages are to be retrieved. The window must belong to the current thread. + If hWnd is NULL, PeekMessage retrieves messages for any window that belongs to the current thread, and any messages on the current thread's message queue whose hwnd value is NULL (see the MSG structure). Therefore if hWnd is NULL, both window messages and thread messages are processed. If hWnd is -1, PeekMessage retrieves only messages on the current thread's message queue whose hwnd value is NULL, that is, thread messages as posted by PostMessage (when the hWnd parameter is NULL) or PostThreadMessage. + Read more on docs.microsoft.com. + + + Type: UINT The value of the first message in the range of messages to be examined. Use WM_KEYFIRST (0x0100) to specify the first keyboard message or WM_MOUSEFIRST (0x0200) to specify the first mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, PeekMessage returns all available messages (that is, no range filtering is performed). + Read more on docs.microsoft.com. + + + Type: UINT The value of the last message in the range of messages to be examined. Use WM_KEYLAST to specify the last keyboard message or WM_MOUSELAST to specify the last mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, PeekMessage returns all available messages (that is, no range filtering is performed). + Read more on docs.microsoft.com. + + Type: UINT + + Type: BOOL If a message is available, the return value is nonzero. If no messages are available, the return value is zero. + + + PeekMessage retrieves messages associated with the window identified by the hWnd parameter or any of its children as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. Note that an application can only use the low word in the wMsgFilterMin and wMsgFilterMax parameters; the high word is reserved for the system. Note that PeekMessage always retrieves WM_QUIT messages, no matter which values you specify for wMsgFilterMin and wMsgFilterMax. During this call, the system dispatches (DispatchMessage) pending, nonqueued messages, that is, messages sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. Then the first queued message that matches the specified filter is retrieved. The system may also process internal events. If no filter is specified, messages are processed in the following order: + This doc was truncated. + Read more on docs.microsoft.com. + + + + Indicates to the system that a thread has made a request to terminate (quit). It is typically used in response to a WM_DESTROY message. + + Type: int The application exit code. This value is used as the wParam parameter of the WM_QUIT message. + Read more on docs.microsoft.com. + + + The PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately; the function simply indicates to the system that the thread is requesting to quit at some time in the future. When the thread retrieves the WM_QUIT message from its message queue, it should exit its message loop and return control to the system. The exit value returned to the system must be the wParam parameter of the WM_QUIT message. + Read more on docs.microsoft.com. + + + + Registers a window class for subsequent use in calls to the CreateWindow or CreateWindowEx function. (RegisterClassW) + + Type: const WNDCLASS* A pointer to a WNDCLASS structure. You must fill the structure with the appropriate class attributes before passing it to the function. + Read more on docs.microsoft.com. + + + Type: ATOM If the function succeeds, the return value is a class atom that uniquely identifies the class being registered. This atom can only be used by the CreateWindow, CreateWindowEx, GetClassInfo, GetClassInfoEx, FindWindow, FindWindowEx, and UnregisterClass functions and the IActiveIMMap::FilterClientWindows method. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + If you register the window class by using RegisterClassA, the application tells the system that the windows of the created class expect messages with text or character parameters to use the ANSI character set; if you register it by using RegisterClassW, the application requests that the system pass text parameters of messages as Unicode. The IsWindowUnicode function enables applications to query the nature of each window. For more information on ANSI and Unicode functions, see Conventions for Function Prototypes. All window classes that an application registers are unregistered when it terminates. No window classes registered by a DLL are unregistered when the DLL is unloaded. A DLL must explicitly unregister its classes when it is unloaded. + Read more on docs.microsoft.com. + + + + The ReleaseDC function releases a device context (DC), freeing it for use by other applications. The effect of the ReleaseDC function depends on the type of DC. It frees only common and window DCs. It has no effect on class or private DCs. + A handle to the window whose DC is to be released. + A handle to the DC to be released. + + The return value indicates whether the DC was released. If the DC was released, the return value is 1. If the DC was not released, the return value is zero. + + + The application must call the ReleaseDC function for each call to the GetWindowDC function and for each call to the GetDC function that retrieves a common DC. An application cannot use the ReleaseDC function to release a DC that was created by calling the CreateDC function; instead, it must use the DeleteDC function. ReleaseDC must be called from the same thread that called GetDC. + Read more on docs.microsoft.com. + + + + Sets the specified window's show state. + + Type: HWND A handle to the window. + Read more on docs.microsoft.com. + + Type: int + + Type: BOOL If the window was previously visible, the return value is nonzero. If the window was previously hidden, the return value is zero. + + + To perform certain special effects when showing or hiding a window, use AnimateWindow. The first time an application calls ShowWindow, it should use the WinMain function's nCmdShow parameter as its nCmdShow parameter. Subsequent calls to ShowWindow must use one of the values in the given list, instead of the one specified by the WinMain function's nCmdShow parameter. As noted in the discussion of the nCmdShow parameter, the nCmdShow value is ignored in the first call to ShowWindow if the program that launched the application specifies startup information in the structure. In this case, ShowWindow uses the information specified in the STARTUPINFO structure to show the window. On subsequent calls, the application must call ShowWindow with nCmdShow set to SW_SHOWDEFAULT to use the startup information provided by the program that launched the application. This behavior is designed for the following situations: + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Translates virtual-key messages into character messages. The character messages are posted to the calling thread's message queue, to be read the next time the thread calls the GetMessage or PeekMessage function. + + Type: const MSG* A pointer to an MSG structure that contains message information retrieved from the calling thread's message queue by using the GetMessage or PeekMessage function. + Read more on docs.microsoft.com. + + + Type: BOOL If the message is translated (that is, a character message is posted to the thread's message queue), the return value is nonzero. If the message is WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP, the return value is nonzero, regardless of the translation. If the message is not translated (that is, a character message is not posted to the thread's message queue), the return value is zero. + + + The TranslateMessage function does not modify the message pointed to by the lpMsg parameter. + WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message. WM_SYSKEYDOWN and WM_SYSKEYUP combinations produce a WM_SYSCHAR or WM_SYSDEADCHAR message. TranslateMessage produces WM_CHAR messages only for keys that are mapped to ASCII characters by the keyboard driver. If applications process virtual-key messages for some other purpose, they should not call TranslateMessage. For instance, an application should not call TranslateMessage if the TranslateAccelerator function returns a nonzero value. Note that the application is responsible for retrieving and dispatching input messages to the dialog box. Most applications use the main message loop for this. However, to permit the user to move to and to select controls by using the keyboard, the application must call IsDialogMessage. For more information, see Dialog Box Keyboard Interface. + Read more on docs.microsoft.com. + + + + The UpdateWindow function updates the client area of the specified window by sending a WM_PAINT message to the window if the window's update region is not empty. + Handle to the window to be updated. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + + Learn more about this API from docs.microsoft.com. + + + - Generates a random seed in int value. + Represents a Win32 handle that can be closed with . - diff --git a/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/ref/StgSharp.dll b/�代�/StgSharp/obj/x64/RealDebug/netstandard2.1/ref/StgSharp.dll index 068495aaa3b3e5696f1510db669875b3055e021d..014a67e8328a0026e70d9d7aa364ac46350ff6e4 100644 GIT binary patch literal 196608 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 z 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 z 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

    _ z>{fzf`7|lh_P=_j{ZN%@`yb7i|8CnmtOm1MN)4dangu$m?f<9AXQimreu8?B+M*;~ zUshcbgvV%t@PMsl@PV5DK*;i=x#JO9N`lKItp=v0sr9F8Qq)od82QkQSVlRvA@S{# zB9YdKTnK3yj0f4+mz0JPQFr67<)6}bqdK2im>wpJZ%h zjL}E&3N%Fn)_-2jRn1BN$1zi$!L5PMP&yNy4bHX7EXo;}{=#MdrPmut|Idj?Cvew# zcdg=F2t!``?X?$LzwOelL@8!Y_W6@3>c4j1Z2WD0j(-+=DRdL87*5uLx<2V2j^0TJ z4ZQt#8ht=~)cM?p#8jbOIB5ssqs~kE?*ifYe`;cnU~6-Un3;{psGM7OdL`LO)3JXTrM)!H4_HTadO1&WM7tJaB`-lslulr9+=@L$9M74a;Mp9~+(Dc5J)Q9fIbW zEC-U#u-J%h>P2QCn{qW{5|f&CtEXL%VLHPvm9$gdnshsr!#El}i(O`8|Kk>QCNoPK zkEH)g>6tPZ`oO!wXf2F=k-*qti#`<(LQlyd?_C8hx~4Ldwdp36W7*twI2!PJK=x`k zaTUVZTJ-VS`V-r$oek^`9$x9m+~3P(Kmlh&KE8Q1@rh{Bw(_oxeRigb2f&7I2=d2N{P91AD60{lH^^dVo=g@+?3fensumY-tJo zI>%Ei@U@oEJuICBe$*0r0y&!t!2ZU6K2P(XkAz?J>OG)2DRNzlD2Un~2g_#mCdS>$ zfS2^YbhAp$=_ZWilm0en&TdOxFBAv&9G6l#RA3V~pt-dxbCEMX->z>RUkK9^rG`9Y z(%31z*%3s%B^@!Jh*&qXz9s}Itfx?zq>#VwiOx;UH=?3PT~HMd<@gqd*%_?NpWP*p zZ1yd#{mwM`>@)DF{nmwZfq!se_DqQBjL8p2SLOSj@P(P~%7a5!&RXn1YH?5{G?zxC znmoA`Y!)ITVsB7I=5De`$prM^QSAtFH7#^l*&sSl)FlFVB}TU?zTe*^L8vKN$C(%Z z7a$VHnaP4lz{;-XprSQ0+`G8X#ISbo7oPqHanS}3-8@+bn}y9CXO<2_fAxiAjII=+AB z_da$5YVKHQo0Ko!hoA@!cxMcRgWkplEQCa_8>>WetEKVJCLnr$8+VI%rEj~?Odlq+ zDU-B=C#QnOYZfK_2h&!ZS^mcxJhn<)G3e>3)=A96z!vuUh(4j&q?%(LlSE%MAH%6_ zOK5hfApl%In>x&ig&yNGkCDkPQhSrQ6PoMP-4%3xF(**=RnWQk-eB1dT4GY$Opam3 zLiG;EoLb!G)6 zsITiWWMqC_VSstYQ?GsBNo|F}c)ub#MV{{5oaEHilXqj;=fSdfSY8$-E_{p`5+6hv zy>uCw5q7-KzpgVaD}7JBC2b=HYYyHn|O^z zpnz3wGPLKi0mQ%vFbBB-Th5F}Ab!Rui$As_zRKcz2rsKGXJln8+6cj&TXjw*7M;z1 zU(+0#mv#{=+fu{s=|&pRY+46)?+2Y}=_lE}gh|D}Tz>e&O{)A(8m}^PhSr{jwoFx% z5?7-lWo5^X2r2uHUw6$3xX$9G;^Vhm)0a6iRBtSb&shmv(};kfSr}X84de~D5)QE< z!y%9iVxZnLG-ZDUlhiB*p)HCHlT?9k>zUMyi*#Grec|m(eV6#&n!-w}EsgDexy-rPiY=7;T12x8cW|K)L&rH{LYEW3ekl1=D zf$e!sdxsYbKJ1NI51IY=N_xwc%iSSX6N6+DBVEMEg$A0aUQir%mTNCM>AzY9AKFqE zlz>vonk(rqP;pX}1qt7q+PSo5+QDwiU?l61I3cQWw;3Bh>q#Li3lyb}puHSF*b195uM{ zzQ`orqn4!m5`*S;ny*qbD@9~I2Q?U7knLnePxX!c{8{Nq_GwFmT2Ub!D0_+Vp<4Qs zAY+S5Gtw(JdT@0#ny=_gZ%rk~sGe;~F@RamOR}>@I7`u!&}>&g5U%B1 z+8x)*HdypL5YD$td*F_4)}aYs)wfCiNMU!I-TUaKe1qMc^q&CMSObs(dH{v_VQEhj zvtVl1ZN4gYoeG70d#M(;(Tzn5b9}+K*(bYJ^x$SyXJd4Iv5;ohx7-@(TcbZC>P2L% z<+)|GWV=WYEkV}H*@zc`; z<~@s$nAyDax;hgkwb7{XDSd(zPTO5wQ{9MYe}`?roVp{HQm%UT!O$={{@@O?&^Hr( z6>Iw?GgZIQIy(IDTn!ei-lJN&&(IdPAnXe%uhWnjih5cOFEkvkx6Qtg^2(_)W0KEh zaN*wopXTqrCMWT?yqfV!wYPci&gcU7QZC(>{4Ao`s2Q_=8ng{vF z<7-?DXeAb72i(U*sv9NNoupXPlK$4W6>DZ^VodTxj!!9r2vMA7?qWM^krUj>@c%e* zC?x~CH53p#vi-$HwvuBns8d~y(oz`}OV30+v(Z~lfh05+GyCW(^LaS;TqP)TgfbJC z)NJyp`YVH8+RvOspS=Cabe~jnnyriUntKC!FK1^1ueX%nWUb&k!&k;|@Ooo7c)iPZ zw7ImrD>o+vv@LIzBurO>>{i9-w1r|y?78SIX-bUU zVI`DTZ^yBNno&jZ6w zo}~T#hfJ@G?8m`&LVmH-n?XyrooPhHd7efQ(M)nU5S**2Qq^rzQI|ZIoy~9HW9Y*dtRk10NN8yJ&I8$M| z$S8VKB8QFDbTnjn;l8I3!J&VUcw1L6^f^hpkz=r43&spC;QT#ikP6$KGU5eJt}lpb z>p95Hrax#Ev+kh8N#9^dX)+JSOgURW#DpPn>c{Gvn-U`-UwiKsyeavNX@>c zN+P-Ip9O}G`=$+$&v93(@tS+waeyjv|2ycm1FTu4JPfiAT0ZBrNlwl0opHZq_3;2Z znD@ve<>2UzQ?Lf-De1gbu@SwT)27g&SvZgA?VL8v4S?}!DnPMw+U0J564^=nnx5|> zPOz*Z=?;1Om#_+ojBzVe+gQ!pRCfhZRZD1vBpY0;0lrg#LNAwvR>wvZv29-#YKe{L z>4e@W3%!iy)d{^_7J3auY3s!%{Y?qy2uOG$4wG%;FTC`Zqi~vz)O4^L>J?hZtZG`1 z2O~BdGH5C0n?WR*N?+6G7)At#ERs;`Yy1F**(}v;(TkEnESc}pYRnS@sD_Y44&K0|b+NjQ~} z$zbdM!``>RM^#+^=Lr#r8Q%vF3Ao87Apujf$u8Mo0+9gXqrxWHKr|$2vMZ>l z#0}zlSzoo*U$ttjRcrfiZEZ2AKMkM+#Rq7s_-IA#PdCO^YAa%;?*Dt{arfT4k0iW& z03SBCv@8hq&H+0-(1d=@Hjg6|n;$C2w8$Tl0s zO~4GAxQ5iN924&+HLFIurG@aC+!wKjd6{dQ&A)9IX4WT``8Vu<8~RNpa4ngaOJ?Qz zKFA=lb|g|QtL|j*sKejjDu_74{$04;xDgpZ*EakebWQELHe)Q2vyI{HmB=#zNM1q~ z^Ouf*A($ucgs;C2(55t?x>J2$B%f?~^jb;<59mEs-Q=`9`oX$)M%X)_P8xU5Zb#}n z{b>}1I@VCG&M?_jhBCm$(DF}dcJu&^#k{@56%O-s%gS@mH2;$%w!knt5a>G=e=0$x zL8dKT=O7_8jaR@$tL#$pi=pqJj=s^ziWy4N6QpXpQ~k)k?(Y`+XMeW)|1UX|hGG~m zhrRP}ba{fF@Prfy_qH%vG+X_<=lC-0PfS5t|H<~w-P0)(BAjSTe-xupCS~2Ukv>YP-Dih`%go@9G^lg zfHOGj&sdEWWCr%BTS6*w(FdLCKUli@f+4w?K;MDyRjR$?cVL)Ylal^PgO&d!(c@65 zcZAEo%W7FU3waoQwyeAu-oCT&r!#yahSaiZBK(%FGW-RepVF#VEdu)>BK@hw$r{(__$w(AtlIxiEhdSVNimHX;vSDcQPo z2^cVrrPt_qV)65CEXWI8jrYBxgUJw3SUbKyO@a^1&Sm=2A0S_dsZdfM)PI<-H? z{sfWA{;~EaFz~qd%lHFioA$Z)c&KwC(R);9csRKuv3hofN5bn%f1GmLv0AAcS3F_8 z4uNFv$nZKB*{9w${HlKc=fkfWN#Ymqahsbl2@0VD2i<1qXNXzksi5P7jg2>H6T z*OJ@^_=>e>C%Ce^d0(pnz6T&ey9388L~8NA#u9V|G_?0xs)9O3WALei8jPAcpCo37 z@j5d>!#~9~%Cgdiult`Q>W#o@2-wwUCSFU_5Hg%ic6H;#Yl$Wj2}HyeN&bi|!p}%z z|B*x~U!Xs)Qa(zf53i;V2Y$mSYhVr4($|ka=mX<=fE3is&|GBedl^0&S3D<-+1-oc z^fmsKi?XMV!75Qb9r+&8^1U3%w~4;`iRGfqBazQ?Zsw_!{Y1)s1+r@lA4z8Q7|IyF zML5Oo!_)GT;X4&x;^L0En6(sK+@H7NrI%6qio$?aR7Ed>OX>SRqzKLtECU1oweKPR z1qA$8wLza1=Wg(M;iI!^2&x4g{p~w)m4)&L+T4W?Vnl95U@d#^r{xa5cf1BMd@@7! z3urN3hqxcR`laQF>fic?`LCjrVSWcoo&~Q!CjeBC{}4z8h6U7!5K7$wdWbDeIJ=Q@ z5VI;O03*p16=B55@@Q}9W6We(>bI;E))CmPLn+nyU=ag6^zhC=g%iP zA4zpSo?M>Bar{#tBN@-wf=+>2F+PsIWjXzcaXr-0N9mw^2P|~<;&dF|T{sRec;rY7 z=LHaTUsUoSyuL~S7T@6D!jv;j^(F)k!pceL>h~{!dfyb~GV0HsO8y5lY^}B>#@k^n*egGni z^GPIDsiAQ8T}Vg6=c*ict5*^75@LqB?2Mvex?+qrq7jajVapA-;6u(}V~R`t4A+6^ z~m3_x~UQjc6c2OepvA}lFd1SFovr3FoR{gApfC8LFXp<7GjZKIy>O_ zG%55n<;7Pj!yCi2mvvN4+qwK+90dNhT75=+HI$F`RH?onpRHCQ_if0HoRsGu{h5>l z7Y<(xS&*p`YQ;+_nHsdF5ma?@XPATl-fTt@6e))NuT2Pzga0swFujxLi0NO zS0HW`@+?H$a|rJ~4pU)N@~D*5QS4t@I-FtL&;Ab27&YoJU3ft6hyim%XBav1@S{?a z=r;p6N^LTSDegU_osE9X$xcbCIVL4(8GaAow*$X3K(78fIwk3^$EGArp)lMF5XbtL zoIHyEPl1DuqLaghN4G+YNlQnk59q%kLD<|fg7`=wFoHe}gcP&{LrAgUULmBQV`hKJ z)z4$BEnSV6n7GlJVSAGlXC?t4f^!r`5E3!EcfXOYQ~w$Rd17F#Tzyg%Hqro7tv_rG6G+R zkZ$E45Y1FNVPG!%|6#~T9OnvkKz2*_FmuD3z%wkJ=enIZrIV1%WEH{8*%9`tv z9(hXOSxlaMc$Sg}FA8Q}OP*8U36kenY)|rFjV$vK~&qP4Yj^hSJjYQ%Y4wQd_;)ACqKXVLDaxrmTEB!_EUC8Lstuka2pIS~$w7oav|uEF^P^TaEK-k;i^t)87hc%8AA5DP#L|_A@C(Q>ED0-FAo2o;Aj*qd8Qj5hmeo3 z3ls3w2PpW&xD_l|@;2I}%}21!do&*}heB%9d_3U@LJpdb??Fyyo{uXxor2`l7qD{) zX0FEy!sg?%uC_2 zr8Xq@m14n(MP4o|D9PdglUhAx9a zaj%#D%=P~V@6xYEG7Oqlr9aU9=hn6~WqD_?iBx(-D>a0Co)ap3rb)4)sl;l-_=&vCPskhm!te zxd5B5&Hu8@$6oBB*Ful798cSU3!vH9m-;tmIHoiRpPM{G&eger*n(UxIB=RJ^|B-c6w+vn*7?o?3RnRgi_IFl>3>G+i%uou$-Ii z#HjFmZ(@oe-_Nle(Aewq@eGgg48LF&1dJI_(QY(|=evdSt#SU8SxeF9yC~Zart@Ex z3$uT92KJN}^L%$bhN)-x;6>RNhY*~ z);zc3S;VhdhnO^kC=2bVH-|nf(58CzXSBGS=b~u?1FaYd*tNzZavi0W>J=`#WkLsb zTNAF>UMZfHgFc|?x(wGpkDOOy{T)F}S+L-}-?Q}>V26}lEOQ^{)3V0aU<;durE(30 z?Dy;)p))*47kObG|Ir~ZU-1(#bp~rhmPWVcY)9ILjIQGnr2UfX+O0r1HMs~ zt|j11Dm!}=V1ui3Jvn$TZF^Qy(pAs$`@W=w2URENJ3&oe-5t)p{XBxFWhLbWoR$S^ zvO@ROf#|U7!7L|^A(&R~5@aRednQ>5F0BV;>BlUgLUwgGQGH^n)z4h1JMI4EJ2O%& zD`~wWqr)^b%dsASwk%f=2jc%Ai2Z}T&Ic*@7|v_J&pErp*~$DH-X)et=l;R+sPo}< z?`DnMGOc#B?*bC&220UQ@!aJ_vvrl@6=zDK4O;79+UJ&Qh?nk%>MH6$%U=wg2T(xk*0S;_HdL8gpCZQV3g`|$ zOLzvwe{80KCS$;I(V@f<_zGW@U%C(g!eJ>xzcwTtJ`AHwdFLZ9DJZ9Fd4G<)eDS9A ztiJmr#pZ4T+^Pbek01)_b#BT*yRe!#pU0o-x3o`Fb$>c3m1AOyt%2R!vy_=T3aQ4aPQ!k)l>Iym``e)B}Rt3u^03m2~<7Q5Yo+#Y(sC_OY zBRTl+WbMOaV|;i%K8zLbSk%#Z#fdeQj(NVa#?C8FsdV_JsienzHC{uNnLMW z_u-gzp$xk3HUZ=tMlQ3HQ8~%aybG-{{w`%vMhzrfSnqsoccypeHqB`=QD!&P|&xJc`((|)y`UI zPjgL652Qehh%+7gC8*QCDdBYEDWXj#dttP+Ng{Y@xG&3R6r;TfJ`6w3EwSz{UK5JRis4?F|S zPP&oLGCYVl92oO&Qm5`_5hSSSrl}hk#@0L4KE|bvVC)T0o}J9X9YYbhj_$GzR$Mk;>et6*@-Jkd1 zD7-CGHrC%`MJ!bw7#1!Y+kf1HS>B`7G6j(sMuBf#OsENzn_&Apv(gIdx9mk2$}iaJKPT-L1$nU_QY&0Az8_8N!a_|0|>}o3n^v16nYD*lDdQD+ZHw}ZlprA zHY)b+2>=pZ_1gx43YH{VOa3CO36)<1>PLsYP~hTaFvg^u^!rHe547Cbl)DAF)sbp? zHzZ}9pC>1!Ci$lMuYit9HfpCveoXm?qu+hsLstJ4uo`-%zhpHXviWRCKO;k?(>WqF zdIaSwxtMZTy8es5{t`D2>_C8W6vBnJS&t()J4JjH_q(#xv&Vk6?f4%1sp}D`pe4gV zgp>QTv50nlo`MM6dVdb9E;C}KZo+UC*N(P0HmT(b7-eihrW9xIhTy|{MoDrOijM&L z&T(IZSz;+kp@^d>Vm2ahg$mx9dF1tPN>j_np)}r(eFmlRc5F#X4RRl&uE*zl9bGj) z25R;?R@VUbI9M!6rqnS}skb9n@SJ4-6=RaTC;Ll$tS+7n(NxbPxx5~lCy*8SKTpOP z3n{iuR@aBuQ;wTa2h1Mh=3!M=4fD9_pW{ilAPLv&0%(U5tv!aNQkh$28AkviCs@)* z+G#h7`e0uP6-Lm4DtF=i3aS9D!P0meR(c>PLs|?Hd-O1zy$~Xxk{>CLTW6;Br+o%+w&{z$HzQC7C=E!&l#itQ! zy@z;SJ*$L-X4x%B?RyRh@Lx}U9B@g*hCNv9%_FU4^Poh2CN%A8wBc6D4uc`5;%cl* zeIcA3M3I#}cn~<4T}N5TvQj7uS^JwI-8trPaSrPW+*kuFK$I6z2+ilAVHOrz$V0n8 zo{_eghnRL);Knu{`ZZ5mhEP9!?Lw@;+%)C8v$=e2H76Tb=z6B29!UL)h_FC)1CH(` zCr;y-{wM}7y;jwhITz${ewyRnF&eF8o0nFq5StgM?FTc9r7CNB0g zv}h{gMgOmo5DO@zd%$tySEzT2Rc%u!%9M51saT)^9r$f?8&Qf;~75THj zF!O$7h8<~23}&uH03dk?p>TFHk9&s4-NoYO^SG@%?iLp3;BkNEaTl>TE024J$IV74 z^eN5(@QL>k6-Zx9G4Ju1f3ukLDP}8=Nx@*@y=01cipONIm@~=B7L!jgckq}T z7IPZK1b7VLb0B>T#VqA9H7sTX#dvtkJQlO%kBF(|F&DC!^%P_0F?B4ahhok^3?Ldv ze-0rA*Y7hA;F=E)&Zx=EIbDffrm-NH5JFUtJOwadvn|4oz+PNtA89#bue)-45JFyE z8hN3QdoCGlC5h>;aRCPttMj9642ja)R-qt?G*@y^g?y zgCWT2u;YV96`Sr8pzDC(3bxV1JDMm>Y)KV#ooqc$5(N9v1{jy@fZD_Kj!{fV9GeP@hl?> zjEm9JycpZy@6adp#lA3PJZP9Q5e0qQah>HPLwi%HzT}&Nh|Nvm#;{pMnsR_vF7q`ef0DWU-CFr)eER;6ja^#4dlbx%^35d8eWLxY*^#najTol_WmD(hcPbf(JhL9akhKK{4tZ#L?8)o;Xsk}FVAS{Z)2@2)SPWJv_g z(sdfDGbHv_6kT6K#jD!t>L>{ z=&zUZZDKNN2fdp^ryE@<$hC8wV(I!EYPpuj-WkJufbzd~ zHem}{LZfw)L~49J4fYV+vD2708E)s(+mOl)KP-@PHF>{|-nZxhGST_V5#j8DUxSnA z#p{cxfa>tG%W}lOkR4718<6vn1D|@Gavwvv$yV}oc=~bHkj~1}P8Dx^z{z6!FmV)R@I0yj66-MGt6Us?lbC?E}=PWd*nwh}T3W)7GR& zy_=4=KYP>SVjkFTJ^~~O^dg*n3$pwBlYO5Oiwg-VlO9py$mZ{rC6TL)jFaW?p!2rO zY;+>@(P$c*Wi?PXqA&Pn=o;Mi1J>XvT7ws`2=8fhO%GCdwAvOXfi&!`@-`1IM#$oP zn+(_#`Add9getvw)=W16v9~)lK$L@gQCVl8(1|Gx;3^bD37 z#&}PL@fPooz}SybH$XKtcpeG7tU};rMI&L0Cj+_=km(gK8s$A5dGNq4vfK^;kg<|E ztF6JxWF{zEZT$j~0mrS@;Q7fU&&t-<`Cp_#nzhzq1KS34`-iLg%tBqcVrTTfL12vJ1-dosu{J= z!ev!A;GQE*9R*XH@)qGUaP!FxXa5QLT!Cu|g^0Fcl;7M!88O`T434W(Rk3x>MU+7@*ShOY27i>T z5hj12^}7`75bPmg_XKMA$;}w0VCK&$gr%Z}ZH!6SFoA+r?_t66WGn|TWJdD9`Rc!j zdM|XTUvPdC!#UhnC_hNSstbYTGCwoO|IzGZd@h6<3lWxa+ zZ~`Fq3&j`eUj)F4kV}k%TJ^kw^OG|{CpIJHG^Aj+e(SnG<`+OKAYDE_8d?R(82l4h zPqL3?JxM=>QkL+P!+DB@r({t|El>G3RfBVOp7JF^p<A!-tZ8cB%3r|@?DO-6;J5PC&r`$&=kMflHJmqzsato#W zl&5@;r@Y2fR#1wcr;Ot%f95GIl+wggM(~u)Jmo@4nZ;9f(1}(sdmT@iK`8}1&rWh_9qf>1#R3y`^P1X@_&CLU;F0Y48k zu)w7}uz&@cD4?dFj{uO?(sdq%NoNH|K1q+w1yRMFpe_7qGw-qC?ALFAo^KMOasHXU z0s)%N{iBLcSO&kP>p_~_Q2hvIZoxJ+^h2DVBN#}(2&ssCg(7h$j7L`U$X6+{Nk*Q@ zBj2IOIWqDL9{CYPo+Tqs52kJ)=1#e+^1;XWq3peqm4{X@n-ZA8a7 z-MAB)v!P=csWTG~sKdUy8g<}3V>sb#`aXyc>N|tiw@|C^F0H;Qs;`$8ooHgDW?qYm z*vRAkP1d{~GP;U2B(sY^{SAAX)%>-~ zBE@cD#jM6+$yDsute7{QU8!U+W#C~nK5#+{$_Yvz%noQ<+ukV*1IAD)*o{n_*O51H z!Z32w%vmB~R452J72?0g;>`#^>l^J4QR0Q`c~#h)mQmi`^hXgx|B#p@s>=#}kE-iU z@0V$8%g6RP@()ujU`htGBxXePoz;&ZxL<(^VQ;-k?dvQirqii@;LGO57uZ3yv)BhE zP3J#xaE*&}#M0E|cwuHdd&$Q@Xxj6KHWw04fW?~Xl2#dE7fj7O46UjPR=co$qNk9~ zr!LhyX+5PHYN-asRRrSHfYo~$Bg8nx6FOLUp)B;_ROqFuP8U^;ulzhfAO>060j_FW zIQw4|uCI16QGDosk(pWRb8fM#;Xw60#nmp$4L75yRq7JFN45;=HYcK{`%u$)tfp7& z-DeU1nSC#Uombv>0};sSNS=x?az1G9wjqkKj#ndUr}M!y>p0iql$ zeZThA@(aCc^*!LP{2Mc-UFlkWEm{D}wICg^HK+Pu>K~jeeAPvv&vt%^XmpmJ#qphz zOLdhZZ>cMg(Km}t_{;~umZM1z+q-G+%$oEOqEzR@i2Z{-P_fJ2eJV@IT#k5_VKd9{ z2W03*hTZn=Q+S38WQK=WhHhkd0wqZKa?!PhvrcKjbe+SD0Jw-SS!{~s&|2V`fk}>^s zNZ&~zhQq`2Y5u+#nnl--)aosv>C8i?$15T603Omq1a|C`%xEs;E1e~-C8S6^3>|#k zH>z`O1|};>JH61;3UC(tS#MV821q<0mZAvy=Td(N76UZnWg?WB+pZ-Vcriht*G~x| z51^st`2)){ljorXmPZJeFzGdU4T9~^ppw+*==Mqa-=0rS!YO_F>JPa4YvDdG z+%&udM(I_;y;Znx3D<#xXI5UgZwdF`!X5n~Prp#OcMA7UyD0BtG3&xv0(esl5j z;P-v}mf+{ZZzX;|!tbZ}1@XHQzhB@dX(PEBys##wt;A~nW(wiJb#lybzxtKX2M~P` z-NLqj%K#zD`2v|a$n@1Q`t2{tz62u^k?%c_%V;D~=T0WOOIZli&}4VlMUo-AW23DR zaxO1?=3+yA=jscj|E!C(gg=|a^Z&@0|2vWVvA&-XNyhgXMrz-Wzy}K(=U9>lEUM6k%Lu9q5FN?X?CdT%NHY#q;&kAM76qwmQ%pxb*DOG zoHKQXg5OyD#&k|)REo4Pj@cpCzTg>5YVb!!&xOR!rFP%LpnJko_+T|`RCN6xK4w?T zve+^RdC-{%jE3v5tEFQ}vT_PCkWeM#Smu)KhQg(glaT9z^n(OX=Hw%e zBxFh|_W2Z1fQZMi8K)98Hn>jJm4Vk9l6}MN{$)`0`Yy>^NY~3shD`A7QB0T>k$pj< zfXTkX>rnuTc+}bRX`v@2ywE*RriFNN6EXopBz&U%1yzR_oTR_fU+BLaI(k&ciG4Zb*Ky)%+9B` zqrp&Q@_$6?PJip<<^TH;ElrujXobS~DO^qgcry@qwa2ib!U;qpIR~cFvSw;*`p-}Y z@k8h(sFLF?$R{>X08(LOrL6}6?s0s9^HsT%1l2)h!R!r)51mLgshQ_eO}Ot$jR~Zm zgHR}qr*1$X^~1%jU4O|sitv61zNeV)1o-}!`Hq6`appS=aIma=3M>J- z6+or@$l{C~*7U{5LwtEw=y3W*Z+a~i!asJ3BVRJ(^Ih=Y1zM3eFJ?s)Q3M2s6Iwy_ zBlJcM+(RwLcfhn~Qu$tnmGmLpsd-o=W`+8Q?DYB{R@GY!A&?5t%jF$`;zS1#*mGsiEdoD)1fPSX}$!}M}? z4W1N^^DZx4wg&9LkCXA>0A$o?xtL>G^ZEYBU-HL#bUL!WR`8ET)>qa+ZGD{(Nyhrd zdZmqG6g^GXe#ugZlg)Ev9AeFjg4zo5gf1NdC# zLqqJMAubJP{|3MSlge@TW$$tPJ*a6a;jV8K9qLc>{~CU8sY`t>lm%+*sz*V#cXZWL zJ(k~Y2^E15v694m2K-bT6%DYWcr}%3!wjK;v3DnrrX_?Z`&Jx)0l$s`e%%GGl27Ri zp>hUPwnCcAP9keSpINxC?DH@2o{6h-9i1Wf&B1k3nm{zZY^v1I*%|Ke-V6p5PeNK& zzD@HI6KUaNm@XjLtQ_ezE)E@2fb;7gQbyZOdcN=>WTp2}O6fxFH4qb6PRBVP-3R>{ z*i~ExMSIyz(CL&0X?#Rqg02v4#JwgwU;i(c<-5<)pB`LlU1yo_Qt0Pn>88_p8)3!; zcR1(wgnq*amY;e68|PaZ1Ebqu5qcYf!n<8~!y9?~rhU@>Q(V%-_bn6X=y3uX$)-Cg z{bBp~Qs`{#Z5(O^_7^{-YO7OwT&g8>1ima{sdg4SDU9Qb?=q|xBe&wLYV0qD+j{}46=!Kg3?vpgQUWQInraV3ECDd`_Pkb}Uc=z!i36zy zDL`GxE1)t*6oH*(4(m;t4Ed{8H`UOaLRost(u$DMTb4mmir%tO+{xn3Xo%lsDM_#2 zc#Lk#1ZVVxegf*yo5X4<<+YUZT1t5>rM#9>R!eUxz@jJFv|c=R9wM=-yMU$k?)AtJ zD!}bf$UXQ~Bdpn=H+?^YoP*(G273<)cXs%Tjm4dWX;91wW}hhWoSXGcYDjVPM(Uf0Y4p2;jlK~-^4t4;-QCmasvM6$>TgT;NJpIum4Z@OQ_`kUXpi#Ix{WU z8NPdW_?Orh;LUR!=wS`><%d4{KN9nKr&g)YxJb8nbLgS%&@(wEPL3ql|IK2s ziDUWJ_kBs~2++0bhpqT4YDm>U-Q3Gs2%zD71AlPs7lh-L(0EAr{8#6bh#8;w0P>lB zJm5vVYNUYw>T%3$(B{yOQIby;HjI%MK50M===*&4=je|vO5!Kx2hTobLQg zd)?A?E2{CYWv7Rhu2ocLAafO^e2FAnfUUWQPk{8Y{6xE+dVzAunZTf=b`o|(0ER8t z>)45F5loh%rvESECUz1+;@&;z?fX5j+s|mwv1>47HOGm(#4n z)J{TPNx7InBy%ykYFU$(!R>Dc?J)1R)Ut{;-Trl7`afS{S=CO%QNIpz`X@j6FYe`c zrQC@P1%xQu76GP0h_dKCFyO?BV4v};KScbsy7;qo{&Jmvn$B<2`6uf9r|SI2>-^S`I_zp3-TqVsRo`8VkNkL&#J{XX)oH+B9yba{TL^Q$_) zU+2F<=kL(@FVXqyb^Z%<{#u>?Y@NSc=bxtY+jRbkI{&FU|M5EiQ9A!foj+CQ|Kgnp z9A5if#Q&1c|EA1C@?zY>dj^~l-9rkMog}t<6G%RGxhEy*TKsOo?=Jiv!f!-lO48Bz zor2$F{HEeJ9lzQ5U4-Ao_+5(M8suG%-;4NtiQgOeU4!@=@cRjV_v80_{GP<`Is9J5 z?_K=3f0yBELT;P*bh^$C72 z!k?6!lA4x2Y8zfcH5}<783-ARX)N%|w!hvH1yA7g3u zox*7E>j=@m(CSTJhWV02LB0U=b~3WAg~d|99Id`PM14oH`U0}PGf|%;hjsw8!u74fXGF!`qbWc8hU{-&2z`*P;Pr>*ol6C)`Lu z7soRkqRNr>Cps zUb3NmGS(lmNQ#FBpT%oO@V$nu!6s%$=Ay0G0eqs?F2oD+-ovmMzN~<+v8c6+WyDrQ zsJqnK1|9+X?jlFCjJTU}>|jf_udw)WYKkwT_z`M}_cU1X53nd4>a!?Xm;c`TC3XuN z$>PK2(2i&1@{7%cFk%w8ndV2N*MXa#H-uyIlj`esa2a4|*em59x~4tnI}eENI}6Ld z@ATqF2;0%H#|f<7V_}m$z@l)oiA7Oc9IRmu5@u{xA$|xwLc<%2y^3Nfny~$J;kqbl z`Nzfxwq6JHi7;=Wa+Ygz=mKD4|NU|}VT0m`fMI@;W~=Yi;+t8UaZ!ljg7?S(i*N*3 zu}&1Q z(Sw6l^SMqlihm#buj0(7u#>jj+CwoaZ>O4m2jU#l)-Nw~r~!hzL(N`|DCe}T%TEnI zm&zJ~^sA3n1N8Cmv-Z?y9n-d6J&ZB7cnO!+ud=zx{RA}V9wWCtOtdEwX7jHUTwD1$ zm}?|BCvgwy(*s8ezp!)vy)*1{MoEN5^+m< zga(p5-C5Z00FCf26+Ae{WWi039hR2V!^j4Nb!So>owQ?PShV&S)B*dlh@-tNQ+<5l zbnFy<DZOB{diwfwU|AFOc-RNYv)?_h37gzJ$VR`bKgB=~GC?jhv1H$7YUn0W@*B|Wqy&7_jOY00!YMB>%VXJ%2wRcVThB%RP5G7<%szYdmy z?q{K6^!$@}cf1skfSybiwVc`Cve7n|25%t_Q1LD+rJ%3HE`P(gBDA22q!380B8@6Y z{K--PBHNhY8w(}2pAhxD50zmoTj7-DzoQ}KrVH3v8Wz%GvPCw5{u~V@+=z^P!iLav z2=)8ZL&w0etf4WOu%Qw%CfaSIMq06Pz{!GR0HX+PW@iU>de%jO&=e2Y+MW%qK_y*K zo7#kep%O?FuHSYYKwkQ2vcII@S^$unsOU`}j{rd&dN5SNJ1gXeoFPQkpF@541Fq~< z2(bXfUO1sGkY`|@d3tC(&#oZ-exCkgN`DCHz3E$4(mm6pq|&_b^_xT2L(`|UE9^Tf zv;{uW0)U}UC|=+&;5F7v?-&4*nYUrDYNl4<91fM)!&}4YO{j`ZQvNO)ZJ!wZhC%_3 zBA!<47j3|K48Gijx^KdSU~r*5p|$k-&(-wPQGR95)tMMq(AQEFu`bvU-V{jBLPCga zOEbtQ{*n`^(LP&f3VIfL7tIg-5f%H#4?}zsy0HOmwY^+={Y#<0uo2qE;EJ0e_wxp% zQUh+nol}s3`ASuwbW8yDrvk2wdFQgh!DW&i>VGgiSSu{W**D=-?rJh&@(;8=SVlJ0 zmpU;^w!aEi86X}(=O{EX{iDO#M;!$!u?^J4O1f~rM=T&l@437fx(_mhND^(9X&iP>?_r( z&C`9+dpb%^5=}lVI6oOvz}i1r=EeJksDihlf0*q}N+s1SQij3QuwS%*y^RyWWwx1z z^dHx3)qj$fdV1&%)}>ysN9v1Wjg$*`-;HQGjXC62)v6t&_qj@SYY5uBLSjL42Q`M%){-LH*5wJx*<$~QgP}M)qAPP&`!=G(I@O=sb@1e&O%sicF zXn6ef_!{6A%sdw1zISO}0*0YqJx0uB#<)=4E6kIEa)2O9`yn!c7@q8LscEDogHO0J z`qN$0HhFQyafi$DyG%M5^!+1`)2@e;`#%$76FQfd9Ui(DldJ#OP%Xp=nEp5L=(N0^ z{^6lj2s}*6&5$6VEg)i(fc_w2KjQVtx|Ske7erksbYzHLPe5RJ$PG{bN4oMMdSf9p z1Ajy$m5(7GtW-azi3xn`3q6d9jahOuo-Ohn!KQ&reZi&n;$99YFp>WGOji=H#ZWh6 zfdefnMUx@fd;(<|oGxLNK-2}ja%?=PLw%1TF0`K4o*w!w%NptDFGRTSPUiV&0vO5R z8`FP^(#fGVqQrhAh(3=FUCIN80Ydbx{tvYd^8LVyk_MDa0t>bX$K6XW4!sVbW8@}4 z7aq!LnKO|ZIteAwRchrt3R_s%I~h>5(cN?R%d}(P1XJ%@^%&w#Tr z{c~&^l34>FoLh@Zl0yH%A2ugJ*4K4cpAX4Yak?88^nA-)^_jQAgGJ*Ua#Ek`EUs~a zU0%>V5-n~lwvX}6shYUn^5{9E@j&w!SL#;FqxNCA*0`c7IO;i9VDz}kX@W%f}^MNxl)l!(nh!7+Q`IZ`fV`dT0Xx zYkL`R8QJxwZ@6n!_G#LNNy71X#3Wt+x;L%sW#6dKm$X=H4t)kkc9?Jqc9?Ty4v|s4}hY+F1V*pu%zIVY3k+|PG5_PU>hDY8STb2w|8%$rDqDF zDTsSmSczTgPeU}=Elx^vtXKnl7B z1Tg*GbCHh$mkS3^c#ULI z!ICYevORIit_SiGoygM8rEviqudLq-5tY;SCQQfKJ9o5rJY^8(jWeOH`oGY={OfV1t%!GEI(h@G1>u{Ft#^#Tp4o& z(ti(c|8T_p5}s}hLXsos`eNFS<)=}z(GZ793vZfihUKyM4(k}<9JvliNisT+Lfs_A~@_HWAQO>c*XP(6^|2A_TB2E|+C-=y@WpNAmE8VTpZ*PWDpC# z-%Z+49lRrH2XuNjrc$hLN0o}Q=po42(^=?E8onvN5^*En3vZ9aMtr(-*1yuZSeGz1 zA6{QwN^8~k`*soIqKj5S?<3|WmWW%nGC$9JE)I2g9M-%KVSrA>)Bru90f%A7asMLK zIA@zW7ki`Xg`wMb@tVMHP$^adX2Xgw&~#TwU59u;VZZ!)mDmgXdsn#s5bl@49sP5j z{$1ft748h-o-f=M;a(%$+lBj(aAo6%-O1}aPPm1_og>`E!d))h+lBiZ;XWRrPY8FDaNiK_iNZ}1cyYLJ#|rm*Kjq*3t_YV3cfN3&g?p87Zx`PT{89#rrc_xMPJoLAVa#UMSp4g}Yj~cM10o!rds`ZNd!+cb9O7 z-Oax@PPk>ltr6};!fg?5mvDa~++Pc~Te!~)cbjlS!u^kM4;Sz{MYt~uSK@2Nk9m7` z+{WGah5MFpUl#5r;mUH8Z|C_}i}EslstDgD+#caxWXgA&2p@SLujhPGpRDKiB7D1W zuNCex;Wi8RPr}_H+ziuvd`^B>q`xJ?GlV-wxZT2iSh)8Kw@8#*EW+0aw@tXRy~{+n zPUPPy!sA5vIN{3tvrS>gWXP5z^EEATFY+k$tv=M# z*xD|?+f?7$!YVZ8YiL^HY3XQcZRv=a86{+X(f%b(Elo>&O9t%668Ew}<#TtmdFs7N zyW88;3b;&-2bb11cYTxhGG%;YY`D3-fJvRt>yc2A?QZupwtG4j(-#QvT7SIgIn~C* zB;k**7S%$~nVOWm5I+$?uKovhi{50>e)2njuh+B8tJJr9s4p#wy{1yOg{so>H8*)M zG^W&~r1BW$JCuf2rKQ!YEOC457b|rh?^2Ja1%t~z)j`#2_0DSZv{Y0nmwMW1IMLI| z9F+3ABE7A>wXvyLgHq(XBB4WZw|kVykDAqOPf#hOMb%5OrGhb(-4ktTlB_rc1cDx7PVOye*!N4rNJe zL!^UI`8>@YcZUbST%apcOn$PVX#Ct#o2o81at(SOOWc_ly#FUPelT|14>)?>M$oPiI>_0D^ zlr*zd17IVFLxa-PqL@aNS11Z3$RE`PDl*&i1D~hE3w$xv$}llUSp+neoz;*tRykem ziHb7#b9ggST2ZyYKD%r|gQw27XhEyb+vfAKo``q@I#Pm&kDv|9&ElQ&=PZa7f3|D( z0)cJ|8k>C`i&?0>wV8@8YAy$2wI`LkTlkE<1XS49-cFN!X_I%c;+CY?yV&hj7P~tz zvn8y6h8n)f=`GqL>g!nQZd2-fjg6S!N^9eu)`t1c+t=aoDy&Z6ClDB@NsR>DP_t~d zXi|d4p^c(G3_j2u1duN$L$A%L6>V{YGS~BF)_Fh^6wi`2&=3Q9CPnfmo(IPE=_ch6 z`+IIvi!E=eGTja8*`Rn^6?b!UYdtM0bE;}FnHoIH*oaweT;HbAo!7v8xking9GheI zT!+IsJEz&x=v_9|ZDpRzrn+-;+M5B#TZ z7xC}qS#3r7FXj~0HF+CabKFzwa&zjY)>(7v-1V0rV9jZ0Lxn9<7h5Oi!%xj2e-Zqw zAr#0%z}H5;+?++erUuW{x;)n24&X|2gQtCJT_F#9n^>(j76Q3j1iCo2u80L=^fFR@ z3h!)(s34yQwHk^wsMs{9je}sIIleqg1yxT+-y-2jGe{G2sxJ+n1Z`t}~7wZ{KvAbsse9n>U70@QK224L(Xu z`?mql^E5m!7y_QhqX$-Nu^yeQ65pqn+pOObfbAJ!5CAjdm$k4UCcLWo`~&$ULOMj! zNwig?c_+#hRhY*n0%BOzSi8>>m9Y{+rb~~ z)p8d_KXVHb!b{1EwHgd@`AfKXNXCCZ?i_|bYdLMBzh?X@EQm|r2*17+@Y)*;lkl?U z^sos#>N+HZ$I zWN(%xh67RXGH&lQdP4BpM+}e=6%LsEF9Ist5cZ5Q;A3FG89ssD?nC%|eb}9$07_64 zGraQR$Rle>fE0^2jD;OT*>Vmb0g&y>mHW&%>nCd;lW5e$mT2tfc1i**+bij_O}1N4 z&lvuZK#n9ZU$6FBWe4=_bzr{4+0gHAu*&90c;@CA5kOlX;w?PGq&}=W~W-QkGs}zF{YDSvzE4L^%KYzX_ zo^U-@xA)zK)7(Cr)g}eoY@p?SBYyjaNG$fCJ52b7F7L@gEc@rSTAAX5EiXp@us>z} z(``@V;Of3-xCX!?t^GD@Jq<{nLHcR6=GdVh*s7G17IHO|*J+;RaU~9ZsIKWO@B=6) z-3b-62n%S|Nz?Rlib?&9HP9Mc`yz6F(Q^$`4W4cJZXtA{#fg?*Bh zodg<&om2&fq(W%KZLS9+DHPX()I`dI*NTx92>nT|2BBDpc@a6N$&->pHgb816bH@x zsWq3=aa#eKCkU}{j=g;L-1*Af+A;vC+Nspo9U8{~JY%|+Lxxj4E-N9#xF9wmvd)bFn0Wdn&{Oow|P!_$W2CHifRuKm)&-Gf+$l zaB$5!2``CH*v}Xa%nrfJs5)93`-o#u`g@t5GoK%PGj5S3yTS)4JQ4yA@2(Xb`4I}z;7us zB9$9YOeAJs1b-yG@)VfpRhb)iAKfjB4$keNwtub{@|av(fswxge7vx@(dbcTv|h%r zo*-37BEKmDmCU-Hd@dNth)JO_R|<}7+KtnKm}4pNS?u;+a(0zZ*rN@Lbd$ZyUQrZ@w7j^Y~8Wfr& zxH)AWZ)=;9mz!5O{a}-|5lYGVDB*)+4#Ndc0iUwz)%xp?23BT|ugZTDPsz>jDzq6- z1O&W{ayPb6gMHaEX?KEk8lb0CZJizRLXEYT%}T9?2pbbm#+_Jz8x0?m{zaK{&a4`x zeAdi4vu9OR!OlbUfz!8Hz#Rpj{6qMoH{2oNBl#DQqgeFlpr2nFdx_T#-SV zf&DpO?{!!Czv0AL+hY#muwA#_7g>w=If&sj=T({AyZM2P1RQhie9& z=-YFoJ%Csz3SPM~hD$7R$__GkG4?3Flt)4bt3KDq$>n+_ntZ3My|wicrP|%zaZpMy zBzy`B8#(1Rto}rw+I^5;RKc!bOT!#k)Z2R~eMS6rJgu8V()!4Lt)VEF+fOrC!y@?1 zoj%=OHA^Y0t*C)+eXdgLfpNtSh2T^`QXWlUNVZ+}LOn@HqGL*)2V+V_N}xprL)wVs zM#N0)kayzV zpRG)iwB2x=uTlBItc&LP1~X?|k|4wi5@&K8o=a84f{FiZ?#FMo6q8#RD@wo(A zq3A0n;LtBCOVtL=ig5uQ>n7fr@Gi>rYf7=$pP1zV4j+tZmtoyMx3ZF&x_9C?$yV}n zkcc)5KM0Z31jauHWQ)YXhgL+eNroAsT@M_btc@Td;ZfHh*&~zy_o*WGxLh^Qm)pT+c0a%1_)b5jT9goCEM+|`^yySfw zYq3E+fWxbHaVxG!unRW_D||Hl30z6ikO`g~r(LP7nKgS(Z443RL9G8@S0wbQ@(thu zyqZ0D{6K%W%}`28Nro)QHBPy&$Bm=}YE^Q+Y49;#Up@pMaXupDwT*?jOl~XZ9Pp>f z>(Q;bd&thnh0Lsbl?Z|Mo)L`6Gw+dnM5EV@ru*E^`Ob5`b=+QjA-|kY@_rVmvvL1K z@K9z?=Qkp`L2(7L$-?~#qgZOK3AM2XRs$I%!z7#zw{AY4$Di zOjPW?20V4eBpA9~C6fouq{mor*sIjyagzGQU(KW&jA+{^V%q~9oA{h|6g5)M-K9@oB(d_lZNVfa?gz>ixStn8k0k@-B1 z>6y}Vd*!W5mf+DdY+M1tLgGI69%y^ADt@&SRN|8cFXQ&!niB(F1>Y(_4T*iw_Qx8$ z%=$VSylUy7P@xAFmHhn;Fii>&W$sLnb}fTu<#3Qfvnc#9a0l4G4X(e%Lp{4qJd?EU z48FfbgOdoE`x|9{WO`+VYfk0N3Z-^VW%=34y!}o!_MoqW99troQ;G_U3q4b;QwpZ! zYkilS1=^pp@ntd;Wsb9!5P9zo2j#$;C18BxAUi8<-$W#2CPaq7UA!cbSWqteB=zfH z#@@)!(UE|e<)|sAe(phl0a*YBA<8nWpPD|40b0NZ2CsRQWrpiG1`)*2_3IPx z8pZ?Tp@YhFUW_|KY#(7bE;dR165i~R_$1Gp@(S||90r3={k}S45|hO!9mXb@0ERB` zITU$oP@6pw*=7u__{0;2VL{}N?5~_Z`GvWL6@c~Ebfl)Yfo7EKLrD<}0ks}7{{nc~ zV8CyK9}hIui7OVeBYP(Z7f@jDE(&5XAZ3*O)#L*WCiwta1%go^#iq=eJG*Sw{$AN5 z(rbd62A2bIaU%YvE`lB!KLo3^oO6_FsA3Ia_<<8g_LvHe4PwA6*6iPdj%r1Q#Nx>D zcGnAgX$>-lcYw9Ow&|d^=O^KlFV6w><9i4`u!?20izUFr*UMVEvZqtwH*iqjbcuap z!J3>++Wn7M^nt;LT>|yB=y{_6Tjp3uQX|nojtogV(%$4KRa#i%Dw^8`U_Qyog9dYCXldkr3Gg z#!zr!8=*k}Ou`FL;&wmlj0l!fQQ<7M7AsJMZf$Cox`p3J(MdcgB@~@V_(1KM(ewH| zqe5X$MN=yoNG06aJE-glFEey`$sQd34GBJZx%CE#l7vqT?Vr5^SFBy-SGbu@2&4!( z*Y?vIKG|a9lQM69o{3dH1TSz=_4$Y3)!J^f$*4mw4Zk#f-U8!+Uk(<$OPe|rs0rcd z%I(F)AlkSJ2@X*)lTu!+c_#M=Lm)p|ks(QMBK)GJzk&zZG-jIi4=(o-w^Cc*+WwW< z78(K+B!L>z<-!4Fnz6=To?qr0tT8coc{_Z#qEp>;iBEyzs)@*$M*jfp$G=+e$@LwJ z7MFYHdW`Fr3)97`xaLi&C`@4dd{0!`X=Z8DV(}y`^i#!8^Rc6o30>$HBxIIIyqmrrBRQb({?uGK;Z%}wI`&($^ z{29(|jOR738IDQwqd5DapJB!8o{`DlkFTOf*jG&mqtjx~k0XVV@R9T&kKfYPNNA3$ zwY`ZOXEQ3z*bJ|C?Q^U!9tRJB255*BIq8dW1~w?%A-ZXXPl4g}1EQC4;FGURfJza& zO}js7rq?(NR?HU$A7zfOy{w7hTV^(FEy=~TmmCdb6S1vE!fSqcooNdb|Mc% z+k3DLumxnNL=mZ_Ns$YJ&cW(t#9EK_&#_J^vf6T7vu0O98i`Aa_V#*r1FkzmrQA7x zQmqsAE`+ejZK>oQR8j6-6O|)j=lUquxFA$8Y%1$mRebXiNfxam6wCe z3@@YfQNZgU77du;Qy9g+VLp+*(*fdVB}N!g>MLHfwb>WFA1E{(STp*g!E68Xx3S^% z^_hZZ{4!c6jLbja*Yp~uUc7%;-b4zxUms{ii?eugO#J!bwf-8MU=ccLw$fK=Gvt4QyZ$3uHJw;l>8^Jc~gX z7gqr{QX;O@irqtqE1uK(BlS;n&F9lDU(<{xNVI17z(Cq!0v_MUW39vQuVnd%H zQ8H?cbTQp}Hu7=oJj(Xh6<8Uaf)w7MfRaLwSBr*)zd?%Kb==^MA)3l8fOI)T^Q8YhJOBFL=2;`Q`4!#AVkF`W2XY)H9*Be zjG>%5Na`0^FXa1VfQ~_8m{Zy2S>#q~Dkc?M^P<)K_7+aYRl)?PL0BOWfRL+%8BPL> zhTBF%gOj8V8hmW=;ZrmPwiL^neRv_J)w@_zIG@On`m(8{-R-Co#@SPQ0}_ zC9Xatq}NhAOX8bZmWF#&k}Zi)Yz^V^tlAyexFlQRn+7lAb6i$}SB=e@J6Ge^G~igJ z`uUy#$FP>|ziWRn*fowu39tQW1S<+YCIx+h&s`;HYeA^Ld%Dk@4nx4k;;Z zOn8ssYYDR`cuk3(f9J+Rr@dtVO_OU7OP+ZyMb@|&C^I*QBkr2&i?*#`=(cC$Bl{CIKHseVX!a;={J;amTQgv=H=%xNmP`6(~R?Kne{HR zpRK>R9$T6=Sk`7x3pNPy0mr3*q*4-}B)p1@*VC|G#eo;Yt$ZO{8TwWt9>9!f7PUb$ zEoghc9UJJGrg*dL>$}96 z;gy>!9>x_5oDQEPyzmUiB3O1KXc@TUz1&fVGaV}e#L2`dni!vG;l&`8>dfPBjoUvWtJUrn@rsC09Nd=# zmJ?AOMWik#6o;C7Er_Z~+%ESDF)69+zpaR$#}yVD1)e$8*j$#oy_YNHljlsHJ-KRf zWG4llZr@&oIbh4MevKIh1R2byGbV%Rk7u5;MGT z1tiXVo#V`7a=C~>7Df$r&#OnNX!yjNj~qTw!){u%*vn?h zfr8Hv^sgmI_t_1RDEJga^RxBD{)^j05$M1iw!$8*I#6I5g4(qNlg`|6gfI;Wjm+?| zncvsMdYAw{`*~U98z!x{U%@;x!zVWeeAxD}c6#MJlZqoD&faaH4xQ*C#Y+vl9G)J~sgm}8tX<;S`(4f;)+WP@G(CH~~O z`TMPSe%ic#0lo3!+x|nAuUzVo2$Ljyip4zwcSD`QASC#qWkLmDUQ@f59;b}F9~6Z& zLw<%LmYjRPk(&XohOlK_!b7|7lFRMHYUlmc?#mjR-5rbNWMcCu3J^jQQPVUriA*?3 zB$T}g5t0TB<0X*-viw>Y!{&%=zdS$9&o|kV*V<2Jr%ZG{nCm= zHb{a|8R7hD zfT4t+)K8dVxIKaMcMX54-HV#)m6?${h2MVV1l|5o&aZ~Nc=)A<&)#V##N$E^*uoNz zw@sj@Ag83nrv{;ynQL_$?+?bur*E$KKOVdWA*7J-((Wh9h=@E}tUqL)+}_}B^WufI zMwk(VouoyuDA-NGHg;L+zg4e^Fn?3pm7WRO)M@X3I6iJYpNV@2|r0gd1 z6AWWw9ux_Lk=>Q+uLlALx%QG9p+Dy~H7Vs-i90}rVz4A&{Edf4{1FtQzw8;5h|zX> zGKIa3lA9xET5P(l^=ZHCgBWPy+-j4vDI&j;^am%V#`j{h`2_gPWyU#Zq1Qo3LmIvQ zykWK5OGS>aoGc}pW)hnu{PLpsBbq&q_NGhOBfet$xR*1=beOE^Sw@t-;!X+KUU}Y7 zXfvO0RaLM9adr||Yts$1j+--0g>Sr;W&9DA@TxE5`@B4Nk--9IPW7w`yE4C~V3J*_ zX^!y_z@DpC3K_V@^K&X8m^IuSBGRLg5WYc3xC0P8vaG-?L5QWntEmwV;^r2oDN*pM zJ7DlKE9-wF;guT~zhD4r-{RM|1730Q>kzzXM#}l;_@T}w#FB##*Ta1Xa;+4_ho;;GFf*k?$1Nq(`gu*k#@)l4cXDlAlLeQjWr znUW^#@6y_60M=egu8g$HxU(O^BYTq8oA0nhKonzZF&MFy#z0DV72>Ht##iTB4HnLF zX4=bV%~UGNCm}h;d!$3=4JAu$re0q;mzYQ@s)0+JkHvYp?3_5iF5h60Du?XEl(fbW+=>oq{gG-3xh8&p zW`%=^++w$Xu$(%Z11xHT8dlkU?S8V!fM}%swM(14xVA&)G>zhn{d0tQz{WhriZ%G_ zwi^9~{d7LBZDO7ap-|4u)((vOl2&DAegRS5eF81BeKI4k_)?}#aK7(Lh%D0ZO>7QG zr$rE%AexW>s|V=D;8v>${|GyPY~P!kFE1!_faT1bSLvv<>rhO&)S5fl$`62<7ziKa z@&fj1@E{0!g#O1{><#L5#>4Z$XonfWXW9tMRl~qPYDAa4lUN-8okTf5^YJt?=ZB0I zkaK39clIpBUO9Vu6?=<#pP&~YY@j#d?1yuI;?-#ly=3P#xq?_=MDE1$)&bE*_Ft3F z+f4HLnYHICOYu@$gI<;#mtn}$ETBkZ97UQ?Rl{h*O)tQLFQD4oFn|WkbJY48!MDBS zH}s^5zG{ZK7M>EtZ%ir5<8o=YLEXZdGpnT;vct%gXCp1gqug~6Kg*-CA=|qV6U;1X zg1Co4jl+<`S2lhyJ2cZEh`Zxj4Uz3fgg$Aara~HWkO~|~!^BP$W=KZO#NSAKD{Lq* zo(IjUsflsDckkrW@yL>qtebXigBSA0+qLZr9YZ-kBl|TY!sX1ugOiK&^8J0b2%4#s z*vE?Aa`0#7$E-E5r+^2Z zej0qR+Od6qW1-b3U#iJxw5uWREjvu|L6O}El@`;_tP^A810+J|cO|T^5<^TIsrW|# z28tu`LE1+IS7gA5oEk@sGSAcA;p>RJ!Xqxs8eHX6&|6@n@iJ%l^vqV;L6g zvNfls2?PVCT$aHyz!G-GW!ec1ad3^R^#PNEMHV6*TQP+Fb$&hHPc*nq@~@g^_hq$S zH-DUKFgr&9uc1p0jKm?D(J@bcqsn6fnW%mO$nlr`wN1%2o~P^kJFm&>)}&WJiv$Pg zWZj10DTtzWfF4`MH<(4iM9}nG>%;0&spx>OLqP1qmOIjjz|m=JzFQYUM)% z&~>}igJYO_cU^NdV{?!k@JV=qNQv_hiAmhesj1C1?R*YO{!jA9Qwj|15cp#wd?2lf zVuS{J$nq759mL@=SgIJ4j)~qAuvAg_V+0SuXMetne!%t*LfjB_&0rw5TEa)_8{j&c z@w{~a_)5~rjbneZ3%+N=|7Snu`ph;WNdIDuPye~$o3 z{G^J95k7`FXNC_4Uc&9aKohxd9=hIBf~Cx`-<9%@!Xl$Z(V@VHz3T9$tf*fAR3kK&ectAIH6f6VZ4$gPCj=LbGseF&$t12AYW`cs25KhunO#JSB== z9n=ClIUnWykAgzCncuW2v!^R<`{JSDLE)B}$`2j6%v640ULihiN%%;ioKahjuYZNs ziOQw9lM4&u%eMCoH>Gg~5+0s&!kD3-qX^SwiK8`3k8}oNz>9I3rUmSpqG%O zr6Q6{GLt4W$qX}-Uhoza5fvrk4Foj;tLUm*@v^A=m#C~0ou#e3AMxT0p+>Y^h3 zf1h)C=Y8KyO3T$KFkv&Y1iewoE6lJFLEu_O|eTd{cvW90SRv zw;;W%B#%~12PY{y==b1htprV>ZsDst(0TaPpHRu z*uV}@>;b~inHw)z2aS&j9bvO*`wW2cj*XJ}qS~y}Aoc&q`Bz;y|DL_W^nsavXg2nO zkGx&|TTxZ%zQYRUUt|0#zQf$OKatT#jRK3c&q_aUE5=cLU>}@<*zf6G!*iQwg_k^@ zYM9^&q%rvszJJ%`M?<_f*O|=3U-U}0$K+R7evi$s7qwFDG5KZhJ$Eu|naQulc-Iwu z2&T3!b2K8*?2dgL7VNjp$kPer=kO3o{?Mm4pz-az71W_JCV$Q`_fWi)Kf&`yd3hZg z&wKTUJ5;rDURD~lzNzOyX{f7G!BNx;-p6^u9mAOV6$`DGnEY!>X7}e_Q+U;~ z3TZ?8&#hpV7XE7SX`isSgMs`!ATU($^@wA}*@odhAJVp`*YUahV7FG!kAt;|_1MOB zwVT~UiJME7>pSOPkdfvQGXc4xpS$4z<4XTrWZXGpIQ^>vxARH*lc;F3qi)XHE`QE7 z@BVE!qA~duSk3<1$*&iFW@4mHIKRf+ANo@Ll4G^rZ%lr@RKJe+jb=E%0v~5GXc{BG ztD`$M?|iOTx(drM+T?R0!@bIbA)Fso!R5bDejv|xJm(#n*Cjoz6<^o4=eO0K)_n!8 ze_#1j?P_t zFRxpB{-W*bk9R(}(wuwEuU91Zq`Ld`=c!{=1wH@ss26%NJ|@4ajyAudRZA<+t~$dj z2AonK6b&M!2k*zT{3_a^qg z^f{=nKX>{U(8>{zz{_6BuYhjHaQ&+4cqzY*bTGx`S9OQo=MRs!GJU9jS62gqI%eK4oA_`)KDOE`Q?oyW+}thufFcLyBchalZ9O zV(o8BWp+LD&M-WV)^@AfE4YmRtWMAh>x{|YB&O#Iv3 z$xYKpT>EI?1GHFleJazQj5hZ5@CAOsVrN_B*(-Omq2(pz=$FH+pbee)IP%dU_SW1H z$-+5hhSX#8D|G(MD{s_ujuE#{d*?5#TPv{f7dj*K90}e6?c-SPv$p4HX&i;yNA>F1 zkt&wA*mJZe_Ku;W`kR&~ZR6ChHEYIJuVc<6cdRkIT=TbEy~eb^eE#Tq<;g4Z$J_=G z?4$zYL;uII-V!1eO!867RndAr{>QN|WG+4R$>zfHisQZo$3LjWK;VxNSpWNKRDR#% zXoox|qwN21{i=!;9xw7)I$LKi<(JDZZ@gGpSiTn=GaTbk!Ah%R>I+|J+3xa(dp6Bh zD_=_ZrXMlnRqx(7$L!<#MYC{ka=b%)Mnnf!(CwbZk-A|QK4I#4Vb$t2fgL@`j9$Rm=UAI@pPZ#-2v}1!EK%joL3iy&>Gu&T8{b(#3yGo7MLknBCF>|Chv{`GMXU zlwq|0w@lyWxFOk_%ywm?TSUv;inV@K+-}a`4Xlr5w@Vj8pH~$#!bT!wSc<%vci2IQWd&SplNf(s+B8ORy3{E-|qwt%0Bz& z(_I<3EyyFbmLs26&nr+aFlRmX^Xe{t))dMg^C@*8Z;p8+5R@Iy+gK^z{|C3GkLv59 z{QjrY9~R6VssHI@GO<~%A!(v;cPFFk_34WaXG=!39n_>ZTP~ZVcwtQS5)W z$L!Ai$~B?>O!7xx)6&e1wFz&{gMoKY-R%FpypdkZ$)7}}yQgVQK!Pr7%EkFGEA+|m zGizyX7H8I9{W8?Ih!*O+S&5K`#~_cweYvYwc##)K!7=wyv^kew)FxezD%aS1%WNk} zekGIL9Ix(5W~DCKoI1vlqc0!$PD^Y~Fdt#D#I9OmW>);lm3qy(?Cm zX2bWF;rijFH@ZHP^xslz8ql$?A?eh+&5R=?*mIIkVgYITlu67F-hA!BmG6qmBcvCJ z%4jspyglVBYn$w2{+PH>vfUO;s1o>&&dXbckEfWi?KrjK*}1JXFF(BcvHB?TYv<;% z+2!@ufqSuKl|!ck#Q>so&nnt;5~T2l*Dlk7`#aCeKK)Zl5Z9i(^JMK#?ivBItf~2; zigRLB)w-7s$l3qPpGA3X(B)4@hv~0ZgcR&8Yud4HYjkHtLv6j+Rl7YLsVvV}_pm2u zkG_q0ujCt5UJiLZ%v0@bm@IJVclzTiD?|4mnQPf3?SZ91ulXG9FvT^Y7i=jtpGCpJ z+_;~z=nQiCQ@s*RaQv#O?6}VBe=ptg@`{FSm#k}yHq?!KX~>HuyS(w8cOK!Kz;UYB zvSu?QzJx2ax|3NwW_eLoEGvP$`sL1V#JO4N~;>gz?sP$g)&Ze4O!XxxbF1;P`N^>uLSU+xaGTsx_HyOTIri@-+BnFp1ZT356 z?kNhKFkaT2Z13!m@0h!C`=dKoRjgROV@$_%%+jV%eJDJtK~Koh)(+=E_&85~^qij{ z6xcj1yvyuz!^xM*m2IK?>CE(Hb3O5F&RutHH@Nh77~e#MgE{!7=dEv9}Y zoA$=jQ9k1htyes=40}35rRQa~apa+rmSbb`FLtE*ww_TyHplheW-D6XRpfPau9+V5 zF0{?RBkzNmPSESYj=jCwR_XbW7i$IDtLYbyqQQ>Izv^SnKXWeq#UkijemQ;nvFgx$ z1kGK@vJLSbxzFirQI@XF`CCc7OW^YxNv3!3s@*fx#2-F=boAST<8`2g&ck|hn*0|` z1vT-z{BrZXz+nf*nai3}YQQ4^2?uH-gw`Q&sLw)7HE>onlGtq ziZ*v`U>$E}@|3N><%heX#PYvY{LX|7u7#|pUEqh>ki-XmF*W<{#qwR6rT~x7UE@$jH z7H_N6PQuKtU~rG!Y8^P@LZjW`uzi`GV!57*j!MS^9|}yl%(dV;V-UFG^=K}CyzkA! z>usU@d9l_Xw|^K5>+=fb&;N31?d_f&owUxc*LK9r$wjtTgX@u@{CWOYhMt$%!MH0! zu6?=v)#~v6YAAo6&HD4ajTY?@m}9<7(Ko+z_f64%1x~;&llj7dLddE8t|@P$slTf+>Vje7R#flEK*f1U1lqAeLn{~qdiv_83~tG&Qc z!Tj)6j<(BO@m#)w^@g`HKad5LmEQ2yb}8QQ)*cA6hu%V`=IloM5eK-8w@r%}=iD5p z8QmB+KS}aNDSC`M?$}>yh|8aqNxNPX58aowvn{pHtbup!Nrtwu0)yS>?(n~;10H8l zYK)+;^(pk}a)p}!kk8MZtkIgUi0R_JY()nf1+diwgN-W+q5{f(`B9Z^cz%<{>rc)J+~qhB*P9^Tm%PhHWab1d7Hso1b$uhgz*HVk%c z?{DsG;!_WZUHz&&N4~d>#j3;iiAsKLG5K{Qc||{TjE7lmrlGbYSkr>Du27eF^oLyC zz#;T`LA=m5yLZ5Y9{0$f7kK^QIjdK#k)6C%$)JYcWjiOv-%B6p-^zyH?rHZ}Q#$b6cz0@+YYabc9b` ztH#PNMx$nbBUTw4k6ya2aa+UY?M=~!>ZlxoO*rBIT+hK=g9?tsU+8l~(hj8!p0o0t z(3jt46z|%j-QkEX-LQH6C1;FX&drZ75CFEX3CblaNb*(6DK%Z?ZZ@!L&CE!Abzod> z#`y(C@}ae73DO&$g+-VBpoA0ivY4)i^-h6C;m-)DR)PEp%1mb>-rj7g^?n<#%9a9L%5kOkYp*qORPFEr;B`tca*M)CTQ?_KTS# zLx9q1TtGdJ76w0m-!AsRva)+F!d@Qo%P+DiC5w87D`x!!lrC88;(je5a&L6Q@LoiFP%n1JHtnIg>s#6v)o9V?6KY|=kM<1{^*h}<=Ks2ZRXer51cz2 zema%y(!nh0h%V{CGxxl!M~>wrx;Pk`Wg{x9*U!yMI!Nb^vg%F5Gl{76&?VMAzrtOd zyQyBsYuaQNW5JONlv@1Al;tzm8tzD)QvLUe`LO=|{%~z~cdFg&g=M?0N=8$Al9`U~ z)L!FWspd`&4>3fHcFUewW`ES?7m8zYU6jOC$%J-_yG+tNl&EIpylXpmDJ1t%`21Xa zJGk0vlg6Z!_igu-Bv_0M{mAZ|W zdT4->;e;w#uB*07+L(NC@0*C_qWhELNs>%@3U5OB-~t$%6YClqw>6#{-M;mrt=lfy zYO0pz*@ANQMCwfIIX=<97a?YB1?H+48AH7KG=wZr~9BmEIf z&Oa|kv=hIN!Tj@Fg{6X8vAlYDj0tA%imK=(8#YI`_H}nh*J0S!v?ZC1v!$Hvi+9&W z>o;%K;k$4-D%BH@n%XP^AjqfYr=z;viA*_s_;s(_)7QN_&Syf)6W!h7(GG1tH@Z0$ zPw)+qlxjz+uh-T-rS|OJkj!oB6*1ACWKXWWHj$8g2)&m`C5@a*?h`Q=9q%>#TSueh z=Ga`)`MPdj&Il>IPbV`uG-K!_>VGbr^|UvtST03tM64&-`#2`A#`;5>7I9;f7DbSl zSkPShdUNMSm*`j={d-yc%8rX#F51}GlI_cM#M_Y$)=q<5QI+Rv{uZ9~#M@KZ5P#jy z<`x82ygS4ffA=9K{cPv|zV;y7@%P5}cO&5QuQc_wxAPgVs*QFeWduxiyCuN3Y{bu(mf!S<%d-$LrdKf@LGn{ro<cf#d&@suU$(Ou`BWH(3M6XmOT$MpX$2XN0PhV7kkS_NINbxx<<-id_N?Zo<*_M{!M zC*Gdx-oGr$I8XZ4C~JRIcWM~}Nlz5(AoB5%YCt$dM@Fkev%Qn5LW3t186)T>mybd| z9~m9wI!#nuR9);%`6artbX5Cw;8Dsa?n{#==w*njlf&RDYAc%zh-eBj^5p$gA2qo- zFn+S*5-N}@CB|^Qv@IjrjHJ+O?NT%qgwBjUtsBc_}4`pBnxPimcf zG^z8-CZ9Cvnkw1X-rXgwR0ft=217iO(QwPwZ7n8&cWpmuOX|P=ZRT~~QZr|=-A(*f zRGk|w&>b=zlIchvML?}c*r6%Klvz>bdV8hDyf5-VN;=?5sitI3dV9Kx`i4!ld*c}^ z(d%@LGr7dTBuiPZ@9JiBy-sFVO0DaaO0YH6Tc;CNpYCcxrLe(a&;Cn4&X{4g8+s89pSntGrlb%Rzkzql5);&$=3EXNg;q??k zI|CW^idNTYp(^AdfbH0%051oi4rD&7-y5eVMgMMz9H+Q^p0) zCGb=?%IdDttwNhswzEBzN#?^VTn@hc-;$yy)I(nFac_9Yv8swudi5*q9KwNkB8=cv`{l*p-(#gQeE(;}xwmPXEqERUQWiA5?SRgo2u z>d4ASz1pOjR0FwKt6q*D+k1ESO3QY#OysFqIgmyxs>R~nJGzqIeAQ2N>I<1m69slC#oFeL-9EIY6YO{ z#m1DsNWDE>i6q@Ri!E;0J+_{hQEHE=l~II}$zbar+f7V^^3$Cj`N)(0vufokrB1Fl_awY zS>+YrnXv#1^l(? z*lT)J+n~p|v-xja<>#+ihC%JJ`X&=se)c`r974-h-t&C*wEl)2jtSpR?vv47-KjPP z=cez}Qw{p&bX$tWv3&S>|5?`B9el?h&%8TkPQB90Tc5^+Pd(A{$8(~GJX#ouhk7F2 zU}p>UdJ3bxXfVTjE#bKZQYPIDnY?^(qir|4?Xk-mg{GtVv5gL|PWO&Fko;K8<$pe1 zHh*nEcD&>@U+2D|JD!u_ww^VG*YuRSyhhTfYHl#7E&5--HTGBb@4xrljkj(2*v+p@ z{C3rQ)ksm#?f?Caf17#l*X!3cH7oVgko{*N`=OBi4_Bb4B%eM;T9L zQr+E2uj37~T|=_*Gc^l;H*ILqL5{7bx?0#-v{%pa^+Dvg5mZq|<8f&~%z9is$h$Lg z+`4QJ4w49YOt?OOK$y%>oR&ud0vt_-AQ^>t*cisZGC{d8MXS#EDj%G=$ zisk>ReX{%GH=Es{m=TKj?@qlrH%Ei=wtqj)h2#7-i0AzB8JJI~e@tsr?UFk-A8mVO z#gheiy)>o$CBK>PWYx-8^_uGHm8;~xJn+)LygDoKSYpw|O~0%TuVqnjy)m2r5nuu& z?L$^di=nAd88iuEZIjhmJE%!_?c)%HsVUL89K>J(>|1Yl?(>QF7XJ#rnl=9C-6xXS zc6?=q>I({QjXN1k*@XvhUdy^ml8sL)f?cDCZbO1^FsrWiy}bV&WS`8BWw%r&zu{oQ z@#%@9VVkNavmLjOA<+rDYwwmw6xisH?qpYYenzMBGany4n+v-U|M%|dHiBJ5gPCdx zTln=T_RA&5@|j1t1z%Y)G(X(S{KD+O)Yr-TdArXK_*+P;b*RH>>SPwVnW3Wi6^ggC za(~|G{x{Lr)3e{@mJL7jo~_kmU54E0d=I#CnHxygI=2X%6=mqXyI6`n;`7=@J*dPD z=?&y>t**^k&jHUx_tYk7eymt{9-I7YklM-A6^UtH?Al}BBpodnTY6aV?8>s7Z|C)n z-yxe@ZG9ab$xKU@L9C6gOy_-it-#a2mOE;_s*zlFuB4i@0ebMZIyJejS^ zyOB7!_=VhMQf-XPWy)_OI*z;EREwGMxOB*>nvNyin)6@BLuR_!v?tJ8iL_i%H{8L3a)7>$SryjY%(O`D^po_oTj$=TwsC{dBxo ztWRZFgJGA}TMe~h$u$q(a;_{Qx@-t$zpP<~w)nLFM#8a*rwjS0ymF--_R{a)x~8M^ z%2#>9-WfSjFSns)qMnQnO6Dlf^iJ!NuH|;NVCBnGyhr@TysG0r-g~lOmtRH>=9(=r z{l1>0i?s7fhm4oGx3BoTMcBNDUL(XW?N45=n{o`5xdeGccO=mH8FH7@%XCpTe)Xz{ zj!b_0*rv?A>xJ_aqj_;x9%YXdIu4ou&4K1Z$3yd=`OpIB1ZW|23Un%TB6JdTG8Bat zL5m^T0=1bJ-pL3|C&ZoIm5%EjE_&sB&N5j-O_uD(iMtMOFVUO)IS1yPM6jIcPR-tz z;#b>C3t}lTwX0XoCiq4zL@z&tF&nb7dzEG#%dF6guXz{UbcDt~qEu%`1m5Wdud3@& zsovn_P>MvJlMigv%2JiTcqD52NBoR`9bLQFL$ik=#`jM559~Wg2O>W5T3OeMXU6r%=%3finQ~_++|4GXJ_ex|)EG@Otz<)p%_$Nr<497&2so2;jWH{eGk&4{ z7OA=U%@%ns{cRJ2Ar}7fReJ3Dq;|J8m9NxUoXZBW-51l(^Kw#;$6fazWoJbhlCW~Q z>`)xN`zk3vmM_d4`sm&(?7we*fH!rzkx3rOFXV5b`GH*QpV^T*qwm#T*Q=47U)ix#149`?12)$Hz|eqN_nF35KO zya#vnrZ!vIpnccwEkF1I?u|dDVR=((!tJzLI?E8hDx6oVSZrt}<5-appfP`Q0{XP0X()jP|lQCYt+2uuBU%XkBes0Rk zjadTamUl=z{NwpujLTtha8hr9=UY_BofCJQXw*-Z_{%{K>X-preqMzueK07zr8`e8awa@oBRw!P&U9t2od+<1w6R4&Im}7VTBo-3Q+JEEJ#wTFGE9cMVv7%82 zWS-agMHGt=?!5rth)rA3%zI-+mEi|Ok}n)ts*&1d#FIQQ?%~%b)49$9{Lm7RaqrKU zBa0^I-m61yH1E|pIS_4J<>Q0@X2M(Hn=#ocZe~)pkM~Z;gu<~?*)h{yuRQWYhG5my zndRk+Kb_vvqi&ye$Xvib&s{=t)Vb5=Ih*>JN^DJ~(ot{SSor74Cxv6TFZH1zw@j7a z+f-`#7alqPbmCY6Er-sAUIzUg^a|*e(3#L#&}EPWCPKdoS^-rW%%0%?SW)d`YK3% z!~bRWN79cOG+cL1+?*Dd|9y68*qkDgQ(eX-hlx@hobnS}h9L!Wz0+loL2siSaE8#G zu-EoBW+eLHtDR?wUGFD$(>>)nZ7Y&*7821;I&039>F4@o{s}*k?DjT7O?d1u$f^2v zJ?M=~esSK_toQW9GrJio%6s*Vo1z5c#iRb>W_>h)11Hsu!=?kR5;Qd+WXMQoY^#qpK^} z8P~5VW^N{`fP8UgxYRMGeu-SClEa$a%wTM>Y5xkvZKKVL9TuA}rcR}zP21Sl*JyVY zbpCAJ?8V2~UFc$GTtuhYBUMp{C*|%6Se{F{yJDvv$>-u`M2pDpu?Z7*boyR;uA(>K z#Z0Czt$BKi%Us^QDq+b_-qUVv0TOrJ)v_6eA|vx$;wJsI%uU68nn^P!UiJIZ{h|S@ zZ&#<8GrM?q+3!$Tb=5NvXE(V_8p{Kz*euY5RTn(Is@wB3a1I69h|ulJ6+S!(q?idC3}PTgK{+R>FEk0ezlVlLhd zo152(Pr1geP0@G=Q+|t&{IqjVvkxonU7yF5Mn>W|x5{10vOK`q4UVN|XfjT&ZPF)08MCk@m$qli z+`$CXsXD1B=`rV?#2<;rsTVZX)^DoaTDQ)8fP{U+TFiOAb^}jbn|MphSih}tOKtPt zt*DY_(30s+wq$m-;iEslTsc&{JR0EZeQbM>^{kyy?XRoP36=mkM;(=ODy)KW;8pi4 zI{zBBZlU~hNjWIYxhf9I=D&LCiSM&tYn&hD-sTn34~Ku!5B?SU6ZBuuPoXbCS3?n@ zC!r^x$DvVZ1R8?+4<9c38~aUqo_`a^`MGRSk+SkhMH42^oEM!xYf5p+)Z-Q`S{gg! zloMu8E1fuf&cajAtX#dO>a4{l&Yf}mNlTWkIQM1M6{nqi`tp_M{oSgw&pH2s&`P^=w#?rNXBg|AQ{uuK~0d1HE3Sy z4bbh-SD>FmMY7@U`-!y(ngF?YNE~GEUBZ92~~MVH_OB!C@R6 z76-@hld$|GY4?-lgP$Z%{3PY%C#>G@!u3}0MO2BDrTofg&QfI)CzVbvnNmD;!nC64 z5lJDx!`pSL3Uni^_G9fiLk?}tghvrAm%=hEOummY^M-Y$L4E~x$Szl^yo z^mmvV>i;A6$i6&1GW(-te)_=3{WJaal|S7-(@(pLhiCaIH8=Qo>B8V2(d_qAf9RL| z#Ro?GG(79ye(k4^mM!>=pWb;W`1k$=U-^@tUi;_ZUyW3j=ioPVZ*hMiuSeckr1_&3 z#{^yIr7@14J;u_P7mnv6Hhz!0cwTGbU1qV|qQvA=*U#z@l&U7P!0TULtggSv)MEEc z+Rtq037$O>dM54ZeqJuWv{;pI4!$>?XGi)yewm4X^pysO{$#Mm7eCsZIm6gr)L%pR z%kZ!pjDoLA6{){K<>?}o>?=~Qf?l?-NG;!Aq*|d@y{bs{L*InTt0HRTyoie8euM{X_P#vKlie&T{&4d+SHriI7nvy zWxpDH*RMYMxnF~lb2Oite4a4on7h6nm1OVAN4X8q2voZzBEZ*_RB8}9Q@+# zzZ$&yvZmZFIa8FbTb@p|;jjFpPZJUuHV4{J*SuLGHPTHQWCLJvkDi#15La3MaJ7$kXmt2Y8#cJIc-%#%AqqV}RG7-8BSx+TG3ouUWfmg(u}?;@qs=rQr=c z7*WeJcJf4hSSoI`eX*V!&^Gk?kmc=3b?15#xRLt383AnhS6y{gqK&Lk4_{Vn;+@I0 zFWywE!yXCnF4bW_;^#FRccTHGaYx-Y{^h!5D8xdSsk6(mFUCrp_nt4l)V#A4-c3>B zw$G$%=rzS^@ht2~V?TI9u^Q!FTgFuw)k6ctx@}sX48_zV@O*Va&zbIjPqAvCv08Uh zos>FItkPuea+{6mA?$0gx49!vB`SR)_Ox{nEm5t!wmg%~v@ecH)m5$VL?~LGj+5}8 z&0nN^f-3K%Pdr7b$m|JfwllAsqE_C?x#pW9>V)fx)ZBd&)b!3`HSspwO)gfGt4r17 zs?v0%v`Cd!6~*SCHd)P%%u&-ur;JP*o;XyJE^eLBP!xMSTcmCx!jai!YIXu@o~UN? z?(C}a^!#YCnjV=JnK)W9B<`YRj7LwMs!lyPF*5I=vdHY*q)2&Ua%5`rlt^*))JXZs zN?i!uL0K-sPrrTs38iZ4U1g)CBgN?nttQ+C+{|B4s-|Qnj`-uVTKLh4guPhhpC~19 zC?~%oCrwo+<))~U5|ht7*>LHQN#CNqrE2fNDJq?t ztV#||RW(ak2ZeTCE^%Ze1yAu@@jUnp2{^_*6502DWLl}3);vW`tC}=4FgEU-8V&z(o$c}BKPAG7IozW%C_Vo$|n3w%FOZ=Zv5{>D8t;LNh(F$ zr&Ujuav70wiR_=M_8%-(xra)4HdW1OoH;sUXj*z|>y+61Gp4BHt7Gc;$Z4v4bo$8D z;mJcfr>UH}&P#o}VXnI2@iO(MM<%J)Jv>?My?=_z+&xwG+&N8k-ZWjUxo!q>t6ZJY zIa5uJEMXp|+gw_wjkc6#V)zc|hpkc`)TJH#&D@ z_VBEs^0bM^Fl{0-sYp%Al#DDYE>gv$rGZU@Zm2qrzb8*sCm$+SC)`)6j?Yb0$0eq! z8Pv^U@-{R`VMrD4om6;J^UCxvcc!h=2z>Yd8KMzu1w8D29=OUC><>7{CV)#OoARwcF`O;&@r-=3nK$~)rU!D+T0g`P=0;+d&S;b$t~PlU;PQ4HB9 z>CPcr6B9^lks5v#G_NzdcejQPt!q8{96dro1Tj$oVDe{2Xb!0VLyHB{Vg((bn#xr6MfE>Y7)$p87pYCdIOLRiCB zD|HAu&%WokoA+j^X?IN;)$;0s$?Af;8He2&QK#Hgq>j6ebnT@LOz!< zj=C?V2Hr^7UrQb&h{tJV>a>GrBlj!Sam`iuy+S{`p63hYIrUQ9=IwM=xL3GWxK{<- z2mF^=v$!W*|2uv+^G}_qX0oV4ts5y#moyaPRN{PquyvdhQPui(=KMD(^%)zdpq)w( za%1{xBO7&IBP&PVK|bHeoHr@yl6Qi<$XQd7`DJQeVv3sAJXy`Fo}}hg%^nqLG5?f_ z^pW)uN_e;i8OwFN<&PhyEb7-S;s%DNDc`y-qK>I)*MCMLXb0c%rj8SUm(4=%(>%@jq;-SNT z=wvl=8)MGfk%u}Q#{2<0=?%Gwkfu`@3!E@Af9Ux1+=e;Muf(b9z-OtepQEqqAT7rg ztK$wWQe_XFqIn;IUn6|VN8IG?w0+zu+^Mi1I=_Sd&Od*es>t0^RFQaJQAPF5MHP`7 zi#(~=VDh(rHto5Lacz|u-z=I|tfn2J52G)NenY9-pob(b(w^w!#r~6Tl6D)vpk3l8 z^>Gq)H}pPf@%tA!ZHhXr`VMtkFp5r; z|3dzYzq1*i-#3jh$t=y=e2Dq7@FfrE!^Qp)=%9^5*e?Ef@5m~a&J)IJy8lOZ6Q08F zK$v<=CwYgvaC~&x2ICl6Fj*~N%(8&7?*jUr1=QgMRdYw?H%?QHiE>rjJX2LwFHpxt zW~r&8lSlN(GHuFyA9*qVM8>IKMj{L|;!Mk^$~>##nXUtpFN`_LOCsvZ(ulgBF}l=8 zzdf?BOf77ltQOLa7gp(-)vEJ|b~aiTQ8Ok*)YLBXp5JcT;w0K4?UC^nZE@7puToVr zIienz5>fT`y`Y^ob};BBQZ_-A-G&?{{)_6Ts(SjO)%4w!_m!z7tDq3V7vJL;{H6!1uk#{2FMv!q8b z2=k;yGe4NWaH5*l<`2!3*HX$PasuP0MkGw@oLHndqKem2zVxk=d4Fv8)^FYj z&E9SN3D~7AQU0-}h1;le9rSrj&FMr)Wz=^+M&{l6J|nFb{d?cVpihg;&d9!pjfd z3-GMFLEJpx-08fWsO>+3*RR85?1I^E_rEj$v=Z9hKTr=otV$b9U5dIoko%Y#cvVC_ z4Ban&$+#x*QEh(&-iY;Ip8M^AccgsqNAaGYZ|cevH91pi<{7k;18osDpdzZKhp@Jm zs;%VjI`UWAWZ;>|NS>*J&sZAq`J>xG8+BUprn5+mUKvp{GZA&Cgdyb-;+gdd#=Gtv z@_q2Ci24omuzrWJwa*^W$Z+n>A6_$&8qxOVEVctnERA zA~SS-EYtQC@XAy0WNn8zh_nsiT>~u^KJqJU7k|9>c<%Q*vSflB+cHBb7t+aJyaflz8IYG^gY*ahDo<=0bY8}!(QlvMKTY)?`k6{M|5UYCk1#j-zS8A8B(rYg=MW;mq@jW|EcMb5BP`P% zmZ{cnQ@5c38;0L*`Yu@yG4r4Ki)1czhMEyMMful~l%#)tiJE+yTLm@YZ=@d1U&OnS zvlJ_&>5|ssn2a@a_$RTpd2p$k_0Sn=%6(_5V&<}=-$DjIfIP^W^!n{4e@|Dls!vn1 z2;b$e4qN8i)!!tIU-Qx!m9#Sl>8Spini%=IS@ZJp<9OW8_S_CgJWnc7QzOe1vx!!z zk6t`QZd5bR{!T>IL3c~sgqK^P?G5mTg*U5M%{p`@^ZT=u@LHjR&TZ#xZGQ~j<2G&b z+;0!OLwqDG&u{Gh@XeYw>)wnXXH$=7H!^l)ZKCY1&>FNJ<4x0jsZI~x%%8&;@4=$9 z*h!|D%TVV_s;8-uKSosSe~{70;YB?2+x2@ln)U4(@#jQj!;O=5c^bQ{sUN2p?GAf> zFP%!;ou(EcXHLw`ply{SYiF`{H%s;ZETaA%dR&JkeHHT_kw-iaK0|iMvoUgmnKc z>j9LTj9CMGJ*FGWH}!Qo^>rHcb*h?uW4V#bjB8>~FqebeTBF}S|Mbafe&pnW^Pv%< zIse2G@}xvf`ZB#*%;aqi{6#Y6J~&lPNgRhU^*~ieFpVe#tL5jsGFwh4qc(n zJGfh|%w^P>i7P4FZbe?lifwvon7Yirx>#M!I!@`0MixtaP2HKQT3J`0xQaAhMH*#H z#XeXGZAW-j(0Rhgec0}Q&-B%&Bmbg-zIs&Rer6f%>SboVSLU#`z70wF&nsq}buROX zIu%=8r0UibsXHV*U9TsqhP6fNHpt9BIk)S#iyOv-qwrSN71^;Lr>uN-+fHJ79e{aI z3G*} ziagGkzJI1($CkCT{5tkL&YBRCT6|@ZdM703Oyu`R%#lpqZuhGiW=fr7Tp{CUd6yDV zFT>rXP=$RrhPfA7Z|!?Azuxy;>~HWrpTvIn0?KYdhW)?vajoL7q~Y_p`5?0HQv4Cr zacC@Rh)iRhnKAIR#?ppKvSxJ(XI<<&@7!CY*H{L4N7h>OJ{D~&GDp@dzCe4sTd!G| za-yBGwliavj2KP61yKB+C7k?^BhH7#_UIdmbsXP^S?CeYZZz~4tGi!ctoqB9rUP^@ zX=n&PWW7e#Vq|@6^zS2TXchfsE91j+7+0}|bzn8)`8ew%&G5m7?Z{VX7*cP?9nV!8 z?x5H$Jl~D^!}tXbbwfS8-^+YF1rMr8!-Jw%;tuyCQ2DKlJ)r?;2r7R+>pk-P73}9+ zMmVpeu78B*@5Fzem2bx{?6Uqb!1~7!)Jj~2cs{`M5hz_t9KTE49>zU#SgpbRxrF;N zoBS(iD0`||VQL$M2ZA36XW79mz+)Y8=zoe; zYYc=2p_)n%8i2~FLp9I9rJ`k;3~AA;_Jz5@LK`Xe;y`eGG@&V{x^yP>_% z0CWd*FZ5IB326G;SoeW8L6<{W=o;w#&=;U@L%)CyL&v|pSe*&gL5)xwl!dN_Zh`(0 z`e*1N=;zSm(DWPVcc2rYv!PmO8}xE04yB;iKyQU^hCTv)7WxYG?~q8wA~gY7U!qFY zM9#4>2IgylshqB!&MEqGPJGYeYk}FEYMjd#1M@h=zksg>7OE4~Nu02cszvG)b*fsd zmZ;Oz>Fg(*!8f31akjI9Z$!`L8_=*O;x+1AzA!kCuSU;jq*LTvB?o7G#?Th;aIZR+jn1~s7G!I{!`s&}b(tM{n)a<=Sdl|TO}mzgBA z4iawE$W{5w)tGa_T;Um7^mlCBMBzBqYFBs1Ui+=JzSqgeKwr1MAPG%&T=?XBU=#|B zVK~hY;$?lZBhGhv#^pw>t--Lh8Wo?9_B(E$m!2j%z8N+bN9mB(r`r3nK4_a zRZ2(*!Zs@UoED2bmsB*Qvf4MC@jZOV2^^<>!@dN^pDKAv>*KJG*XLExHSy)8^O~ME%Moyb>Z%b@qdYKA6;l~r>fn@w`U>VT775M z81{zko9e?(H^$MU5qjMpZx_sV)Z{ma)(yUBv(7I{?)Mq}FYyG`_gaaub76I=>kRMB z@f3X;)*t)G?}24G<-h*Cb&vApXgLL9XrEk?%Iro}5!%yD{jh8=-CN|+GLvV{iTS49 zuQ0&A>mHC1=qd;>{b~g41D61!W43_eV&{WX)#2GQd{vs+Z)2M0noEd8hoB9i(Oj~? zadJ`j+@ACrkLRLUuB5T9#hh8Mm4o%Rd!?tjJLFa{=Wd5lD;Kf`TiFiLT<))|9>WV7 z&1<0+M*Ce+Rhx*Xef3E5LMhd}U}HBnt3b!5$M6bOD)U6QPk-$(?6HBN2zDEq6uY<} zFW|LLT$oqKdKRvC8_5^rR(rLn9lh-x`~4hl7ch@7)Or_eNw}ilM}(#K*yxzvEEm_9 zcIVpTrmPh*+NtB(8m4(#5r)zHV+EpR@8iqwtNc-Pl`kl78&IOWPVO%<#Ys-&*7c-w z`!!E{)fnHao6Z(}-Cyu+sh21jGRdaU@JGG@mqa$g=bL9=jx-^&`I?~)Eid{aMR8?$ zRIuzAegUyB&hy=rXIm!%Ys~xFp(|R?EsU_sdM>I7^K=IgW`;U~@MA6Mb>ayvDE46l z#XbyIoMCSqKV0Q_1(6$eZEN{B>;iuH%r4Et%E`nZZU`VzR7IwY`<=WCB#(8Ql1F?0|M9(iPytMl& zlyOy{LYW7R$qtkvbQTVh1geQ8u5QQ_2Cp_6K8XipJ_1{ zrDn+`O5&x7j3*ZJR$qT)nEtHm;#L-J9ph{Ct{f_?`A~f~UrZrJ8B6VA*rwzotPS0A z*`Xb)YL5O;zh0Cm^ooiCxrI}S0*uXgmCM9?vuWyVRW7w6V5`pCR^(Du0h`Yy&wMVc z11_=oTw<%{gM9s=n5YiWF=D1v^KO|hncvd)G9SH$Zv+&v6$6n8t{kq@`*{e1t^&$~C~ zdEdN^cdste-xRrY+(%OG)@lnfv)Y=;@wp#49*l+Px ziw7)z&0>S~XReE{#cKO}tF?Dqyx!smEZ$}DYZf22_=v?nS}gj2NzZJH3oS0SSa0z% zi+e0yZ}9^bKV$K079Y0wh{eY(mVVHLx7gxZiwzbpx7cg(8jJ6<_;HJOTYSLc!xkU0 z_-BjLZGN3%@j;8O&Xyrh!f=dIENml7lI;_>M=2S)(FDLr?hgEk1O=+xJYOmG%>DKjYtOj-@QyubY5KrO>RyF0O zR|1guw8Yypxt6X}TZ@cPSRK`A>Pm^WubxzI%bpHygYV6Cus*0mCu_>bxXET&g&~Bu zh@19ox|dZ%Okz+86T`l4R$0S-XRY7!)s-xn<)J3sh^@PPX)Nxov813u@B#h^80)rn&6gJxccO=|c09 zT&&G8kAMrbyzN7kkyVv+ifT#jOSW@uN=x9uT*4D~Xm?3>RrF*l_ICAFked}Ktx8vP zS5{P3*m4g&r_yw#{0_!E7v- za2yD)dBO&Lmzv3_4r|-aK)!u9t=if*YuhWVO=p(6zJx?KYkl(Tbgd@oX0`Ya#oRbq z$C4S>&yy>9;qkA++nh@6?n|$?*R@m3qQSMeMDC~T%H+5maeFUSKcUnwOSbnK@t9b* zuO0Ph_>DpdDGGImggfrzDoLYVK9bCkmB;%^yeXe!sXHfZ%34b*v!08GiK|`l#dlPAk_2rUlcXk>j=%_?N%1KI;=|g zOVrmUZ09NjbIsq_=X`^um{gicsbmW^g0w`ct7#N&>UTd_b9U)V_p{4XYmWE zopNi4@0-9p*G16J*`M+ErHG-z?XGC++pH zX33atB1?YY*Z5E8M9{vH?KD}h-chuLVTQG+*UOu>MA>^#qY{p_i(*LAUtR5UmFI3P z+GKaGc64R+ectE5(Th^__Q$EU(yti5np4dw`qu`YUz+0fXWGQAMWR92+v{RS(kz_0 zRZzZ|mQXzhX02eA#4p5qMClb=kIUH_c~dW?F~X5IYUwq+L|-8s+04_kwZ#7 z>1vdfOiJBYv?aSsiUJ|5r7Ai)x9RKSv+5h-Q{c8@Msg->no)*+!QJKCB3#-`np*d1 zdCQthCN%2nK8^KF;>zY28!@d6VfH>Q%-8=)zDY! zXL@l9m%UcT$RqR+>HDFT`q%_hKn-!()ueOCnwC32J79Q$TqjW`dFpc#KI{K_=~`E~ z$EXiR9(rtjWoK6XQ^2ieipTVzpC9`~B)i()w64*~?`j*@`npTh^>%E65L0iJ{=>){ zYG77fpSR~1*p;p)#+8qIhV^r;z4W%p+9m%RclD|pY&fR&il*o~M(DX@{id~USjA|) zt~15VfZI#l{bg!^_e8^ITY!7Bl%C(2`pg9XMF|_~H`&CVsp>QFU3%0c{T?NCR-R+3 z6DJ(R&3Z=Pax?Z4ZL4jUPF-Hfs-}(WHoMO6Ng21hY1T{le>?|T-){7>4O<+&!Po}| z3?6ug!I2vcmcPs3sKudo8+-qI3^u&iVEQJ5H8&d^wy16~_SmfkTiLnz02Uhr!D_82FpKdaM)t{bC&;4*4^C(TR(5G{|g2Ozi4py9)s$i4aV*@*g9lz z;7bOFzHD&xD+Z%qHQ4$!gZ*DOIC#Iop>Npd-?aR1861AV;OM^?jQ*R!nqh;j|8B7V zL4$+eHaPT_YC%b-{9a63=aR$;OLJGmjA?H&4|JNpBfzcnL%~X z;x7!werd4vR|abyG1%~HgZ=+$aPT(okM?(+v*JFgRRpP|Y$JJI>l?Tl*Y?t#hsYc!SY- z25aWq=L-z>pI~rsp}~O@4IVhj;K<1a)gptV4o@-m=wgF4OAMw@GdOs@_&D&*FZA<*zc>@M?qouQ7PwwFZY@XK<+B@~^i1*IWJ@3=Upn`ENAH zU{U9L>^g(3Z#LNf7J~=gYH;{^gQIUVSbl@S*nq)?cNpxy(cs`a4Gz7_;OM&zM&E0& z;U9Q~|8^-l)N?>1QTd4uUM z7>s?GxouMHaK#xb@wHMHD5NE{))lD`wR|!)!@k243^(-u;v>E)i({s zzGblW0fPhoV(`Gf8XWmIgXRBju;xL7t>3oKEe<|p`QI^E{vQU1EslQI^1o*=_I-m5 zKQP$;Lxbrb8EpNr!GWI`92zk=@>7dHGsuFZsjt5<*!oL@4Zkv&e#GFwuMH0Ur@_(R z7>xbaVET6k2Y+vHc+{YJ%wX)l4YnRKSpEmg|D(Z%|1p?;+~DA!3=aL-;K*MLs=peH zK54M#u)$VUtkW?NF?gWJ;NS#{#TH8p4wV`looFyR$zaW7gXt*-2d5ewo@P+ZFc>R0 z*gDf-|15)p#~B=+ZBWfM7(L!#%{+rL28g65@V^ww|1=+~#{LOvCMwt7=nH7fQ>BJxYn9Au#A0-gvAgFl z;on9M$aj3l@eQBo{g&_e~iHqpt#69>esO)mi{DD2EC>6z=1`k3K zhf(mer*ggn{t$R2or>`L!OA7ZTmxPSiGFFp9cK_{%z`&S*I*VLh6XVUu09iep_u(T zpZ&U`MMw0!3cjnwjo?|3YT-LMP;@(&WA^KKz7O6!I;7R`1+RcQG5hs3`*k^sPUk;B zx8g={8lBSt%z`h2hA<1ZLBrw?_**)vM=<;KFN^->QaYHjR=!09UrFb&5VPRhq1BiN zz$pm*X3XW_aqG}Wj5!LfK&V}Zxdu!$p;s5PUw5+TP@dOJdB7K33O$ZlaHTcZfLqXY zJT=ZY$e`1Y?ALiLx{&8x&b}3H1W$zaVHR8rU57aaPVG|aCd__a#iH9d(~V9z_=5iq z9mFhH+QU5&;vRH*iv@3hX17u9;CrDMX1|_d(O3Lsr~$qpAK$42X2A>kl8D<`^X)45)~nI4ig_431c`28!C$^!sm+)L4?zjc91!w!2m5sdUk|_O8l~>UjbIA8 z2eaU7p$9Mv?s+46VKEE72|9$?uY-5$wRs)C*JIxPCh{}EcctK!Py=ScZ@*2cR?LDw zfP^pjIMk0>F!pxRk6G{%NcgRw)88xj&H?fbzTjQZLCk{RgAQR9y2z2^j1<#+%xAa}b8ZW?HjoGj3 zRdm3fH4T5^3)Vv2m<6{%uf{C+0m~l*|7p4j%dhKIbiQsZkEmO5FIayZdg3rQfUj5( zQIBG71shI?sIn{IgS!`^2aLLx1}B|_oRouj)^s=x)A22S2|8U3r-Ox?4qu>z-BU66IaN8=+Cmg71YC?gj6%e9>p|RdiWM z97LzZN6=RxaT9$IkDhDzq7UL`NZg2Ch<~?c(F@T9314(K+zyFZ^f8=zfia6-hIVTf z{S3ETv*>7Og2cV(YIvtLi=Kv`L)stkRCF|mS@bo0+L}dI!(SkYr|4tY2Z8&5#vjp@;`HAN-Umgykw4%!plZy5k3t(U`*qybwno&o z&`$V*?}EB9`}NoQb=!)L+XZpl;YP3qx)ZbDF6eH|qL<|sNb+BFuzVPj^!jziiVoT{ zpv^t#)Bt~T1#KI%;MwSCc{OH1(c5wpX2G99;-~0vxu@IYmFRN$bdNQIJ?M1Nc?+J0 zUKgoXqT}U1A>oUzmz8PbkLY~4%bG>^%bY6>Uv$7^ty%QF{MMTNdTm9&Z8vm)xC!0> z-G^E9zI+~%c#8g)Ut6>2Yq=$B;vjlkR_BaabhYe;#J%Whx!syYXUos6S#-9vL)s0v zdk^wN@)^7x68-`3=hi$5F4}MF68LUN(k}X3j=RdZ7kw^G)+~Bm-f7LE-^JzGb>WI0U8gr!@D}KYxDm|071@hf@ZFF~QJ=w+uebRRu6vs? zH-Ha7Qcpy0Pzxk^CHi(I4%obUM_%8qUtjJD_)fR3;J2aGge7VW7w`Z*+V^Xupp zUA-4W58+<$X6O;je%-vHqxTEY6YvG!cnA8}(UB|oWpr4HS#(+b!-q}Ti9V`zA2H#I z9;shLQof=?YQvqjeuA%sBtHG%+dhsyWBeHayFY=v#q8I|D|&ese-i)U3!Verf!VLq zS9JY;^8n=sU+^1uMN|&+F!&#zrj27B0k8QC^%(O2*zsB7hB*x;K4;>S2KU`fx-!HK z-2O$AmR9g_NY~GMs4tM{-4%@dGvh+cg1>-vVjczm`elI$uY@|Gc00$h+Y0zCqn$PCW{~`J0qG`~mRnZxIj7G4LR?Q{DxgUR=R1{0p)O zzM%S7`bW%y%m1A?$h%+`k}+XFxbxf8L)`dv`-;xrEe}!eaW8lXx(Bmg&#YeutzSQ_ zUw5tOuzlr!P$$s`DtIfj7_(r>cj?D53w{Qw$1Eti#F{Y+J^@KyiEgoFkeFlO6JnNh zeUJJ8i5#c_Yrb#NB{=a1l;d9NGx(<;QpWfh{SoyY(tQUw_s7N@1>XsY|9+jNqSLhO zC&XzFI`qKx&_T?C*FsNV9smzRQqQ9!$b3lJ-6**2r{pc+wt{y-nh##^GZR(~coigk zzpmQ9hxeVIqw}?|SmUoTS7R1D3^iaDoPCh^V-`FIdNt-6@Dsw9wh#Upk~?+$x@Y}* zX+=M+(_t%kGju=x2>t~6A!fk^ze46<78KpFPhj@zkbMl^V~sh{|4}T(8HMhx{yUj@}|cbN5L1o47wk4D>x{2;yeWY9+EhZf)oB^(p3(wfFxc0 z;FH$u*GVh7YJUq|L){j<^Dn%M`2cw86NHP|uP0aZ=e`eG3SaP6=se7W;8&kSW@7g1 zZxy|+rxX{dp?&B(18bm%Fbj@A58z(#;S$`489bf4K_o3PaLvRbEn8~9H$lQ50GE~( zsm1sc1Ahofdl7wst&o(d;JuKfeF&U~eq7=Eb>oW8+*wnKSomN(2F`(_NFI&Xgrb>d#I`h+6Yk6CcjiG16R*{|DGbiV%Rq#||e{$h;{CzD>xg0G08 z^ANLNXRYY6?KuT~p7KbD-{8X+d=To!JOb`M-Q-Cc{66$*;e%%_ zHF?qiwpWn$s|XkDJDV_Y(+~a_lDXap*o1!A>u}@O_v+ULD>`ByIR`zDxDos<)QMTJ z1f8z?F#C18ijLPW){u7iL*S#3l+h@7L9H>@fW6i%`XGM-N!g8n^=obXL8lv5a2R?R zKLvjdJ&M_{3s!W*z5;pzzTiHn{8gkE{P;%vC!hVgVMRym)=kti+z7sPOOdLTLE(cda5>^d(9VC8=zRyph@ADvTMDOQcAaNu5Kc9qzuh2pJuaJxr{Q747 zx@bj5?YE(MuV#(_{s^kZEV!nXvd8@Yn>%|DN6Ijc4~s$+gfwz#l;IGQ=5BM?gmc%M zLL`O76f368-fhmTw|g5mduvubnBs~Q77;8WSiIj~6C{n0!Xm{LDHKws5dtu{0>6QsKz|GV3iIdXxq-a33H&dB z4`2_WJ-=_`THQyESnyAn@7L#seigaSecb}shWUKwCt!GQBdDVM7Wg5|m#KkYt@YR7 zWUW1aUh6rSJ6)Ccd~K~mFoF5&>^WTfJs+;M=U;0be2R4h^XL90_y+Rn?qEEgRhajC zezMjNz#q@>>_QpO+-IwM=lSkhSHVZ0W9^|#@&)D?YzUo!zrzT0{{AZOuz~jZh<#q+ zA8-vleNJJoJ$+tauRVRf-w5SB4eSK^`QGsR0R{+5o*bvowTYj4pW%NAr{w>aq8`2& z+{f4Zr?;&eox_6=@y%_7k8T&QT`dgy) ziXp;<_irQW5wXDk_J*dyaO>n4?@jjsMC;Zr|4(agT|Tdenr#G&BdYmqy${cM)N%Wy zu@@ijpCWwbqelDU;NyocB68nvoHh=^1OK^Q+(m%Y>Cv6WaWTBN?_+S^yxlp0%Ig`wIMXxsaJ$%0T5+kjFd9;A?(| zkMc@)2z0d4eM@W*W6iPUw`*=$tNSMwc{TIhJPy7P1m6vkHq?mBp;a>a59H ztiux4Wj)qsgc&wuBQ|CeHf1w5XA73GB@1|t=XrsLyu{1A!XsYgF|YADZ}JxJ@Pv1H zkM}v@h7b9OkNJd8`Hau`f@gfm1CbMXQ4pahiL$7ONK{2EYN9Thq9r;a5na&}eL;i~ zLopI#F%eTS6LYZ;nOKTI=44(LWGG9rEGsgSRT;~gtjnfs$&O59SN3FI5^3a6j^tQQ zw*q-Ntbm+N4lzGUDI{l)Ggi7iSFv2?rWmW`D_^LiJt12p6i9q^il^VXY!_C zLQ^tjQ!$aLn)tC9lbEjQnZ6;$n4uY&v6+~unVGp+n9M9MW>jcPwrndlvQ-<~nyuTW zZP|`ZY}fXzpOwZA?Z}Sp#7^zZ&h5fxc4-5bb9q;Ap)0wvtGLKjUF>SE?wYRUIxcZt z*K>VGoN+@pa$`4fQ#W&Sw{V$Tx**M^`LvLRX(=tIl{8ALX`I&5dfH1(I!0G)_?rRL&SyEqbGrQv;%-xf literal 527872 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 delta 475 zcmaLTu}cC`90%}kmv@(`nPu0x)FojwWJ_1Hgf*y?_y>qfkfaa_Ap|WAspmNfKk%=R zFb;$W9L1$2oShF^9Qp(L>1%0e`0#!2_kKLy`}I3gzazDCPgW6_8*{Q`RcI!Fxh^NO zbs?1o=6amWt_iI?Fq1Zf~G_Ef03z)U?WG~xi;M18;o)*10S0wL*AnYB|>Lh%P9sOD;l}-6;(``bTv$mrk}pK_M+(2R<_7h{Pd}4fl|3t zO=Td0o>i0X)NOh@3eiy2=|YVK?+e#AnaVAG)A>?QBbP-B7_({;NHl>i({27<3h1#K zuk$UyNCOk@neyJ{ab)X2ya5b2M|>_>PI)IPc~z{!2S0+&$F6T---9)*V*_F6JO&vG bmf*!Q0tjIR8veE$|2Hp!4Ee-4jH!hmIG=D= diff --git a/�代�/StgSharpC.pdb b/�代�/StgSharpC.pdb index 1af8355b7d8fb8f241b959102982d79777cea886..b3aae16508958eb69aa80d5ffafb41f015a5c30e 100644 GIT binary patch delta 392425 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

    2KIX zJ5=I{DOlETiX==t%#7{QunHU69(Xc!J!i@C>-D0)_h+oI=1OWb-g@T9H)g@~P&3iY2cf8Eto zuk+Msi7WkD+DWqK9NvaB`<0m?7^vW{8%JNN+Ix1$YslGc*>%Ot*P}YIcNL z_7XMEjQI^R1par@-z|}`K<>BnuB`vSA25Sf;z01Lw0&i47bmumrIt+>dw2F(Kk;jk`2j(totdcIB$U! zMa#w|SSI0w4Ar14>*h4p6E1teK(d$U+sPKICe2EFQsMYMdZk9I$o zk0$GN+GR4iT#hr}Lu}n`K+F#dObI?#l zdPAeciwaqe4Khjl#>4>di0lkFUDS6@< z*`Q>~*u~0QuKP{q55IxseTHZoWH}pxXt&no^kvU$}@NY0eFVVBALW+n+V?NN02 z$}Db@mqe1Rj!=nQgO9V~hDNG~427FHLvy?IV6$v!JY-enNe}o-L-M*ZHl87*-@7sWBQT|W5JK;Pq>4A-z3_RGU4?y(VOHUyJee~;=P*Rq*;=9pOnA~ z`epp>-=W<;Nj-t4tBu#DP}B5Oy*#w9>@BKZq`yg4YKkoB&QGO285N70)O?s@RWdIs zWW`v?dqyuWFkdW93w0h|U`QkNqlbPpVlAHAQ+P@I~6Kn7;U3$)B2<*`en>d$Z{Q#h6Wp%zowAod!@Y9&p8LGbo6I_ z!F(PPs|?amQ=m)|EZf!niWPOLvldSu*iIcgOkI%G;DI?{iF99g z`qLzi)JVe{Z0T=uU9Hcg>1z^)Jkf-#>oj?C;~u7G{fRpA4Ao2Kf>w4{cBS+OzfZOQ zl3H|x>L!6F&06fMRK@sbqQ&db;$aCyWwHwzlTA#Cyb&$7um_@Lxz!Z2qN)jMrtG3t z?xZ~;FT4hQP1d--#x9WwD_2t!WVzKzK*>b(L8CQOZ?d8a3DpTt z(N2@~-kDE3Gm`ZLK26O#PVG!(y5T`;`;@HzR@so+$c9%d?-l>kEZF)(s;>_VwxYY# z1}%iqE|XNm2cDhac zw@`BqPz`5UVM!1*Q09=?t4yy5r`AaRVHu*~U|IiZ!7R8UF+NX1Z;dw#x^*+%Agf`j zn*Mf2`ctN>^Do@9Dt8tp-utOctt9el3!qkqZtYi9J}a?m8mlXhOt3>H77)}g!A zN!0o*HTGvL=O0H6e}ZbYi|NtVQIj@O`+BHevDC3-<~Pmlr(?K{n)MgS_y{vh$&(qz z>2F`_(z~VH{nQ+JD~1o!E|59m6Ucf-EUA&(sIhzylO_qv551}xdz}fsKGf(yR@5L} z+7v{8XD!u6damDTl^y}*Se2E1;#2yhF zuk+P(3)u!P7@2Qcp0Kl#c8d6o_tMU^W4VP5TrFcC&<-!7PFNwIy8cUKKY8Lx7BtA$ zJT7OLG3i!n$}3E7HRr*{4X@L0_Yieu?W6y{Xy?e2x5{jf-9o?9wW0`ExHZ0Em&xa3 z%NrQonZfrOYUpM3+y8_1%r5E)nRID|OwV+szeqyw(tWf?7ReGRI9UElGk+1B0V8(j$nd4QSp+E!s>SmQdU~ zPJ7`w>R5r=5Ujs~m)W8$ncaD7t3e{;(i{ua$S3S23B49SVYvk8dfeDTHkBjJ% zo&E)NMP6zX2C46QsJi}B?vyT(P2r3LkUZI9^~v(9d7k-(4^f@UM31n-aEXk863Xk= z%57vmc^5Wh0@t z6J^vnkRo$qL~Jiv@4kqfYP|_n%r|_6i7hdc$=56U_N0??L)r7C$XjoElKwh*Nj3bG zc9wK$g3OiXwK-$P`mP`Ogy!IQ|LNon3h1%fH6|LC{Mb~?jvRlzlQnr5@PKR z)8D>G9h6T%32!i;T{!)jzoLdpU@DTHG4OMQNmKJrW~h+O;>fRQN6OpGDV280UTTdr zw5o=-+j`!xFGDn!+903#(xRC!K|Wt(%IA%V)zFM?SZQW~B6(6fH`<{xiH0Qv2R=l9 zY$z+NlN-6ojoZzc-YievDKD{tLgw$6@_o`nzDJN>UH=KPBUzAwt?#lx=D(>viPQqw z#p;`BJITIaMtZQ_Tk>yULrUCeH_Hu6WC)sMD5EQ6{ZGq!jC5jw&T3XrC(C3>y1x4W z)3cnJo+E)O;f$2Ki~i21slz{@KTkq)sJtWEuc3dzUDp4I1dzO^n4pyi=W#bHYR;$5 zJ;`)42`JqulK*PzN&&SYnQBm|nX>Nl^t2cLM6FsohooCtHX|Dh-)nipsiV}1G!{6K zL%T_~XsyrCuYHz&-%YfGU#E^_P%A>1-tI#?)`mK0lJ|Uf5;H7Gq#Km=nrEQDa}(9= z3l_{ArdF-aVw|WZuh-65`t=daKln@9NfI}rGsCf@iWB-R*CtIsf2|)g`*^Kt$jqGIAc%?Icjr*$Kq)9kRM?(TLc0Ne0l2Gd_ zPqNZVztwM;-|04LZyB}fX{w9#Xs|3luO9mCq=y%ZX{VK_^^WJ3~rT-N_m4io%8pa#nm z_RF$zlE6|UPZFBRe4!Gm>s)Dh%Cyu9w$n*?aUaNh~j!qV3kke0^_Gmm2u5DZ`&IeNHyD_6YUs(Bpv;Nn`Ir|EsUT z{>xcVtD_b?MeTfy>EY7ADVYNevQJo%&+}yxzyggdw<3GMh8UK&k&TO9CTpE6?^e@~ zn86@huwXoa+QJ$Mtz)~H9xV;akx*?fT^=d_j5GLS=3BUd8u=5djZEey+2o#hhyKuh zs>#sBi>5&8#AW;)N$UyP(K0uhK9h8L%emdmC(ZJw-yrY#DtU)2-Aez6JfL1)N(s^< zb?jM_W<~-_k<8i!dHqHoWCg=>)Nb)N|DAS`OtMV5VecdK+eoCVIzan`M98GWQtnRC zYgEPfN6yf(@F<@sMJCC&2L=5P8J{du-j`+9yWenRFz z<|6$y>Z-u~HF**!a%7$Q$~yLvfHZcJ1!lzG=Rw=B`ULp?;49i?vaBpl%7ffZHQdDX zr5k8BCsJ!Jm(Ty1GKt)5n9*yDnovj`iK7nYvEXz*?Z{eciOiKUStU6Vg0n8;vbK4S zMm!x{tEibWT({n zByHa!rWeVWYhCCM4x)efR@!4P&^EP7SGdS0nVIXEuq1(}B#m~GEI*rPXjfQMgFRVc zgM{Eg31q%4OmC9Uj+v*JZ_tD4fr)@B@EhYd`Td{A1s3SvMb%!(j4raF(8kctJjV3i zWNMMTEmvfx6fGN(F?zM+} ztWs|Jcd_HH%s*ZEovB&B_+I(ClYja8v)+_PPGwzdwe|H3&!b@6SvE+hYpzv-)`qrdv< z{-HlvXPW-q_Tl($#rC=@e)M@w;Wv{tZ=Wc9|5vYn{(jfh;aaD_m-e{)M%fpA&lg?R zi-+FUocDA*;Q6Rumep0a{qgdR!9N>Z{_~3K*N=R$z07sk>6_r>JLh}KMrhd=8y}{SG&D-y`Jo4+5fuHQVD(mkK-wa!tTwnXL?|9b0 zSB+nPe8d- z@r$qgq%^kwj<;UB;>%Y%%C`=;h5zpIm~S80V2u0GAN37swp;%C@v{H?*H2ZKxeTZI zKCr*%sjJ`n>f@f*+J@G@arwZFFCDz%fvl9$y!pMRYa%B8={fLz>wNk8cka5n<>sY3 zcRgn9^=!mT&wi&HPWZzA?Qgd_YwUJ5eX?iz@Hgw1GlH)F$^CD2_kR4e<aU$sAYsOXL^7}gc!CfR1>(U;kPk{hHE0BFpa%?q zQ49Rf{5s|O{kpC85$n-HkPI?FE+_`|phd|U(e6|lzq-uQ6o!Bm1JXeuCYw!S1R)>_#Di3D66AwY&_?fOv2cF(46SZ`AD36yl;5oCY1>3>X3zfHhvO zJAgCrRQv;V+pMZ_*$CPcW1#K^QygYh2FL})pc2%B7SILGf^%RNSZdJ>;0*#m3`hj& zpb*r84sZqxfpM@1%yno9*a4h@ABYF3I{cxrd|Z@*M$iU&zi}GVHwXYRAQ7a4Y)}ZwK?gVk7J;=M?EoPl3dDm{a1!K$Qc$heD3{-< z(?$-!7zOh{b0tK$sO(_l1ZL!M7rm+-ME1f}Tlr5r;JJ<_?Kmlz;Xxr6F2}@;0*#m7)S)^ARCl}TF?Q`fD6DJ8r9$_Tr`3f&VqAb63i;Gck8xUgzZ8rl<-fq+kDR8atJH}^$++s15XeFqCh-I z1t&p1C?)5q$&VKnBPK#h?<@gBH*Q&VqAb5-bBtC-e<)00AIO@$lcU z%}|TW)1U*K0YhLMTma_Rpi2~Eh;FA@zLFK9+wOB7o_Vn8S_~9$1nyujhycl;7*v9K z&;q)^S*0Jv!(E**kw5?l12G^Gq=Rx$3r>R$Fa#EXwF|lkcmh8V0-``XNL7mbH|*4n z;_^J02bw*~>*LyMln8SxYyIpVJo9yUX5b0}l!j2<&hXQ?>;PxL5V!yqfw?Pg1w4Tt z2mw(b6`Tb5pcFKMHZTCr1C8QwP`BNb?1s?*^`Hw(f?2Q(EU!mPfCF#^0U!*-fJBfE zvOzgG4LZOXFb)=h^$l23z!`Xg5D*38K`Jpu2Pz)+TJ?H{w!8tGs zmcf==F($wjc!Pjj@fT{taFGoPK`l59I=~q)1jfOR+b}S|6NG?xa1!K$M$iU&zyLT8 z=7IVr>1=^J*b5>QkHfmnR`s}S0bNSLq;|JUfG>Ip#DGMQ4hlgn=m2NHIJltH9M)}f ziMkzQ2J%5EXasFw0GtQ&KywFrNHLqzZZj3*vJ%vTE^ro{1CwADSo)z;fGh9@0U!pX zgKSU;%0VqS4LZOO7zY=Cxj$A9*a19&ABY0+Am3keqox`cji3$mfB`THH2W~GfGuzY z?jQ)nDTDXuHk(>-*#*vlNiYkR!Iu3PK;R0zK^TYui69+hgF;XaYC#9M0L%k0e!vs> zfhZ6UQo%`(52`^U=u!V0y8&E`f_dN`h_-dmGHl5x4DIdpmiV-WP?Ib z4r)OMI0J^jA~08~?$vG6M}?wQAQhYh`AR3;rcqp;2bzOu5O4(UU@r&)5g-m^fMQSy z>OmJc3nsxVusnqR1Fj$dgn<~42+~0zI1SE#3&1=KV-}{lUE_=kPv8gQK`O`xrJx$L zfdMcI&VzZN2}fgrqmp)?ZnJ+fE;B$Ss0S^e3!DY#z$BOjmWMIEz#9aBFc1S0mG1j= zyG=v590wPG^*v}Fa0Z?r3dDm{PztI+Bj^F6;5^tAf$;?HAP7W&WRL-hK_#dMUEmy; z1hc?05?vRmxlH4Li!f#8JOWY&E{DK4xBwQxj(gD_5CY;sDmV%9K`CeiZJ-B?g7d)f zKC}k}fd~)>GC(n?1TCNooCA|!7C1y{4r^Sa&`%%$#DGMQ4GKXys0F7%2RH-9fq67K z4mblp5CY=CNl>i}PGjF`dq1WYhy%$W1LT5AP!G<5S+EQ&A3$4xHwaMt@7HbiD92?j z=m2NH5Lg7}F}O3>0i1y!hywA7@$cHrHjTI(0HfeM(8OZ2l-B!oyUi+<667#V!m|vv zJcxS&SKtl8Kq658&}AX01*gFoFb>R*;HJPC_<;}*1x|u|&Ol+W0%yTFFbQVCGO&zCZvqDp z0Kz~FNCerS9GnIn;EXc%1t$HD1au_u1b!e2#Di3j4@yBbXahZ90E`07BWNyP&VorW3zn6^ z3);515qFzq=I}<3aUXPXahZ90E~k3U><0WVSs@xa0KpPF9-q= zAP!`JTu=-uK^Hi?1OIalOoCak3@nf1sepsh^bf3%L|mqWY)}q5z!@+O7J+#>CMIwO zo*)E7fq0M#@~ghiS7m7AO@s^Y)}ZwK`l59 z&VV5>4laO2VEz>53vdRWAPS^{lOP{dgGSKy6eiXHE=IvT&^(Qn16$w-_JSY~2a-W9 zC=hzF@4AC!V>&n2B!gm5 z3F<)$I16UMGT8Dg8VSNc3`hj&pb(UUT5uY4fHPnmTmXx}{5dopI0H}M2SPv;NPX@; zObT4&gKE$S+Q0x%|3POHum$cQ2t2mw(b9;AYN&<1+I0GJ1w7tl;#3mm~-5CkG#P&*eF z8K4-nfU{r{ECb7YbS!WHuD~0Fff$eo(m^>m4bFfeun4RRFcW|u2mw(b9-IXEpcGVt z#)3Q0T3qyiQE(p21I>$QF|Y-Wz#RmEIFJl-K_#eH%>IQ4W%)z26L^CdkO&GvIj994 zU(oN$E#YjOm`Rw@RA&&wgs!TEbeHLJQTO ze$06Ec}a%1`v|9i8>i7(~(&@t_Gz^0@wb|RVD;##I3=w5 zs_nMd-g;}?jrgAp%o;Z5^p7bY<86Qp1C@=TwT$Sg~==QvPM(3$`_v!Xp-Kg21 z-)4ZWtt7P=*9F+R^b?#T|G?uHk zJ$5|lse~ix_>$F9A7qDx6nWo05r>s``gL2cyi)Q+h8#M0=aI08!?^!D);B+xibo6E zALM@+%~s19pg(vx(Rd8?sAUYeX;ARNdm{V~?hm{q&wYmu2f$n{b5On4{?(hU+E=P| zs`t?-#|Cw~ZcyuO!L$t9ueOI}u0+|@ENgYD_X#}|5E&Av+&Qc>=+r{HkQlIfC*|{Z ztat5FeR{R>dx8!fj!^#zj(H-&j@%n~_@3ZH2bGUM(CtzN{&>X}#qmR(wPN|M^$t6= zm;R{6?RGG>Jx{oKC<%4-_UWX448$6Of!7YD~g5{d@k~HAkN~mSRlCbcJ85SAQncb*H*!l8!#|MDi1l zBLDT8D^~}=64&cA$I~B5I&$R6gkz`v__dvq|G93*bysON=|k0m1L}`Tnc=aAl8o5q zuJ(yKdWZlw-FPHj`R$)|c8c>~bUUfLXww7YQ22i1~;xTR8cUbpRHeLGfjYQNO&c2IMLBbURUFKJk6!lOsx6P`+X^eLlq z^6$DGiuI7rR(m6|s_i_jKD?s+hwfU%dq}s#>K+u&R*RqNU)-kHPU&{UUX85L>b?K+ zzqLLUpL9I^$V0~C32N}%q`zA&c1ij}DaPZEqsWzr9=9UROmk1fzThK|9!tp7sI63Q zGoa=_HMh8J_370AGA9bGKc)S8o6S~~drY-h?#O{7#wQ4jn4p3AS)UyoD= z++p1*kFU2YG1EF*CH(`PyOKSDzE+!j0vRHP)LYanZC1uV(``Y2Z_;PNow4ffUfQml zp3#|GJp@<2>QeO6xIxa}&C2F*NM5wpABKYpY`Vht5i={0yC%{Go2g z*0olzyV&XzsrcuwC#Q5*E2qDZcKM;v%c~9WShP_dx}dw-?P3oP|7Q;;WZ<2Fu(3(6 z7Ry%CPlYdTR!-x2(MC?xO-NdIs{8Amry9SuR3_W5xJvoMhdQ0IcNU%E{!g^-5V z%0qWwVYlA@@IK`q1y@|7q>kt;m5{&coK4qY9jQN32s?1_&XE0w!Vp%X@E*h;kzR*! z!^t3Lss7(my{7pqu`2vBM@_dFp$5Mq_I_&rZPX--^{e?3Hqq{$q0ZqKJ1B3`42IK@ z*-OpA{8KCT8Khlx9W_sG6#Fpky8Ee-x-{xJ~C*Go#tP{;r6+8T- zzcOQqJi*lOXixu|89R?s+vUmnq@h}AsFf|#^QKs?zf+jIgobIGt|M2)XpGkSqJmw=xN(X4;ueQf2K4*E81{7^ZABRea=vW z$Jgfk$6`*G^XA!_U| zs3xlwUbtPxmKEW(rgnXq^o((g={7P13Ewi^_jgk6Pt@*zQ=R6-mM4yUpZVv`Q~RxW zpRtct^O-buA2A_I)@!r$h{ZB1D!GOl`xwC0FUK0PGsS_R4s;{Ue zqtt{cRk8lU573c>u)MkqJ!tEtNrh{#VfNE0b+F zgtq>#)QT^l>iTcOj~>+<2Vcd6F?sR^8Pn(t`m-c-ddOVqevp2zA!;{6s%D{ywl;-Y z)=Zr`!~2XB&`!W)#ZUF|OW|+nII)pqGZ#R+KyIA&2@7i1GrfD6wnZ27t?Z}jC4j~L zjCQv~zTRhP*UYoru)GUAN@V>Py)6~Vx()m%ZG$YAspn`{b+Lj@Y=qQ?H^{2!-of<9 z>!`6Z_6uJypPQ63$Q((zzRwX?ty@opYKR zD6`w+9MhNV=?|9&X!?=Zqf(!#osI&T0|r?(9!2yoy~~XL5?D&g=a)ysEy{V4=s!r;P%%KVi zOmijlclI!UQWkByN2q2pv|efeQrG{CbY<}C%upedrQ$W(y?Uyf#Qr&X9eeoEZ#Tyq zd9>1=Xs0Gf!-`~*dQ{QxD;t&eOj-XEvPbLhX9kNGs8z2@fz8x9dB1ze7`jLR>K

    zg;<#*MtO%U{hsA>Ca69#2QvS}a;-+`qE1=gkrKOOCB#O{a%+%v-!GFfMH-yn*>LVT4q%MF^|=Y>rqwKIZRwSl^T4?$`V^$*j|JWsW=pa%bz z>LTmBU>ogUJIFw z4VCnFT1tbLXb*o%_5Bw$S|)Ai8>_ZS<0DUGl&&q1Sv(_SJ7Xgi$tKfF#&}{u#@3bT zc283$WbatuNW112Qr?$Z=0NqhOI57D8QES(%G+;30)&+Wj&@m&Zqft(GUj8l-L{iR z>08f=i)4(KbhP!qrsl}HHp$=J%;1$rZIJcsWu!gvDm6u3Qa%T0&%{w{ zBt$n$0}V39(X!v4aACfJE2#DxI7DukoU8AD{Rt*?N|*Y|r1O$lt9_4M9W0ZsM7na} z36@Kcv7L|}a2ln*Dur5iH`PXlWa$&yzVovFyJhm_NCgWLV8&zvQYCZ1OxC|)3oFQx zCz<;lZF?D-m6vIc*;BP%)b6XPHN(_22NN$^Pg2MHshK&{EE&6`%h_dlvemL$dsh@N zU!Ny6(u3M0yIrrp(;k-3iV3nDS7bR(n+(k0^B6Tpy53G&s(+IHJeiDTGWJ??`t{#X zv!0?(NdPmGZG68p_=E(U)(@G_O&;_nt8N+F&zLYLEo_w=FIduFB3*9WyzV#O{bG}u z!^_z=<|g~w<+gKDTHc*z690PL=y#KuVD=;0Uh>jUkbWAzpZ*&8cEM#)>?Ufv#N$?( z80{6SejIer%?uV2;q$6#`$$w6kpYhVnEr}esUEWCJmhgJ);^~EiRo4^QJs!ceLr9~ zEyzZ%=Fh4ht9MWuP$C6ua#$eq4=fNVH;Udtf3GZ7y%X)ed#M#arnXBID(PhTqRZ)D zlJRL+d&jCXR*fD-1I%FdFf~xRzF~=W=zePRBz0KULQ@p&qz9=rgVgSIoa**3)9(Be z8)ES&?FLzsnOJkH(IZL5WTuiC?BvFs=V^PiQ7e8!%~RtZ8tx)*61UZ^#K#|wsm6Ym z>7k|6C0XRnvT0xGk@Anrr-wWlBePeS5H4fv5$Cst(PH)lv!OTPgpm` z^od@M{nXR6LvNva$cw^MAfJO8T9~k)r;hzm^jB2l&n5i>YOGXPC7+k{@*qap@MY#P zU(*k$y=!4n_FZoL1ZvW>%Vg-qm!qqn2!~jp^K+{IZmRJ^YPU5tRAzl0n~}+ACOwsQg!S~QJ*%$&g)ivPOQ0D0E$xOW@ymL)l7QkPW8ZWo)1&1RX46^r zpg|_Jo4h-RgCw7hTC$yL#9Ucj|G~?2BuE9#zo+dblgLH_Mw9eZXCl*wCFGvCgSJ7w zgIoHX4QZ0emvcYUgT+phZy!#?%KEpL$u*P3jDxZqhoflgpQ2_aQAgy1oJS|^IT@M} z>3YMrY(THP8fOkOpYLC(IWoD6{v};CC}ZAN#SGy;q4vtIA>mcpbLP}x*{;|~PnkVW z{|Q+IPO`JCc!&N98PeG6X^*@`^)<wxNd3Q}g7;Gas_+E98ruskOJJG(2<|&#%68!lkRzUZbHPsjU8HD|4UCrc+A2?! zCwsa&`PyPwB3p&bl@uA{;Tu_RxO_V~ECFammZ9mymCVp8%VT5@?E(obotM*2lQ`id z0VF}rh*mvZRGR8)V@{Qq!~NUgoKx4(XW?(^0JqglZ6cRu(}gc*MIXYGtS*XEs?LX>K>%+ zCCkt2w4_T!OS_eJuf+D&RNDQ=sR>)DdD5_zF+RDCEXQd)$m;qp2xG=FS-&nadFp!U z_mPU5LTT%VsnK1m(8Y{)zr>G`7injz5e^Sn^E5T@8)}j)@BUU<|5}+m1-CK7*c2=F zl2~se--E2IJ(+w64Rm0B`vcU#ZPdJHsSP`+1-aC*pHgikx()-;8{w%anDl*DzyU z0X64W)Pz4!dnF`?yU>npr~1o&!R8s-S+a>ulI5IvjDDwG)T*1H>iSQ*la9d{YUUnl zpiHWfyJ%NP07{atJ3Zv9m#piVp0u5+m!Cg0%cM*Ami~TuyZXxzq@hPw*T4M_m|dH~KqYr{>Azn~-(iG)n)ljB#r^ZI@9l;}rQSD@TSZ>tUuZjpF&$0AVI$ z6aF<5=43LtgwyUkD=KjyQW{ovi2h!gJAE=K?W9MX+?k#ypDm*$Aozm(b}L)auAK1XDTgJoOaEj`hmM&&~mh&OA4wt9;TR-ckdDh}VtB0>I3h#8bgn} z;~h8s&eN%CyX)!o=FgoDd+w#`uC3OVxk3Blo9fK0uQ{Cl;gyTkJIt;99m2P{hoA2; zYjX2kZ*Hny|H_ujx*iRj+~~JE?@(9bRq0`&Te6++FZPHG?%rayao@`8?+=x3G2dur z)n)6~Z#nRyeM?{c(QJKv)u!y+Dq@+H_Jpn5XlCv9r{Z;+ zetNz?$gr-s_Qm5H4{S)a+m~bW*L>X`OLON9`sZ)`-HWdKW+T>}w8Ve?@Vjf*o4bdZ zyIr;}r`Z25UhW&h3_sLWKXSmN&(~W8x*aIbzcxaB7&iLQjmVSj+ zmwnJNJ^!8_cmJ;J4R^;ntUI&G)BF+toG8o9=D)|O0uB+~e<{Cpq&mv%u+6|G`@-ur zuG!C8e6-Ovyt?t`o{aJ8(p@r4%A&`x!26{n!KpHJg!-v zdyTt8?)F>Fx@MgWmh1QXl{ioKI9|3ZJnl{ZW2bZ6qgNhsv@}=7&uO@M>HjOQC1bacydd+1T^(d`mC44`AEn4ZL zwY7=C&)O5grAKDfDpmV+I}O$rXajHt>WNu?;CrWKDf+K3+io_hOpIu+Q>+7YTkN{< zo8Yrx5~$~2Ic&g_18>DYKzB>1Iew694V-}=2m$JuSE&GVWcAFeQfM{!Kb?D}{z(*D z;HY#5;0L(sF;{1Sdd$_bGJ}(}4C;wi=^z^vf^wi9Y<2NaE2aCd+HK)$=UMq(j)s6J zkP1$Md{7E59&&~29xwn#!Fiy;k2YnN=YCNl4((z0(HBUp+KFr-K7UxWoywI zP!4L9IUJ!Cs-9_e>3LS3I&=#N0Z~9b+v+4xkF}}>-#gk0_IWT5G*_T8O7sEUbx!IL zS1sVuW3DD)tH)ef;uoT;M_nmR2k;}=$&a+wW*y4hN80O*>IqhBr&q0=T-69)8|VRR zhgY4)_1XbeoA5Jy^$;sZuy&AD1g_&i2Ke4VR!Z!hx@}7K?B(W)-zys}wXXOX`1en- za{JyXR!HsuXTT5`2a90sSSx3x`%c|X|LQI16maoWD_qY5jSV^k*aAne7pxw01&ssA zAOqwoc0sz`{^}7|TYv*tJL)O`*Z)t)T_N8Y#W-%Y&B}Qj)(P-aDuQ&^n)R$6dS$O3 zdgTcI+rd{EilNhTo5v)QXTdVqg5UW&0B;ZgVn8BD2ic$ylq){Lx}7f8S7CjE)$_5S zejo%yfq0M#PJ(H%4cz}gkWhsw-tks)JVf^R8So84V2h#ubaI84^)dRBrZ--;eB9D4N)}@DI zdGACQf=dp_Qa<`vt5v%0(m8H5cR=%iCkO#iAl2bF-+sAior6U_jA~`B^774!?cKT^ z7JCi&CA#8YxpA{q3og6BStT6jUYWTnIR}v|;u9Q0bb1$NEjR-%fJI=w8$AJb0B4{c zgyjc9fO;6#e>(`P5&kyN0|vk-mJIk{Y6OT|EX%b1fDSSUUnM2-oTnSaCo-1}g*Pg6|!NrF7#kEhTPT zyD3;b`$|3cDjO7n|91Y>IQ$oYdIr`Gpq_(u=^0q5u=ACYLzizhe*X+Cbi^Js4>$sM zuonb@IFJl7KrSc-EuagW1Cu~KHftGJUWdg7E*_n=+wgxnHp|)-EdEN>+f=WFR}ugB;B^=zym zFs{@c)LmzD$q`tqr(ZSRfa#%hPiVKB0#cYIE3RYE_5d@Q9Tap3{a268V47^+R<3nH=+-KdOVgV@B<-0Jt`{|s7Gbx z1NFG9YS0MUl;}@!Jm=X%I$NJh&&g`J2}=m5XJjn{OHV9b-~e2KHwXYRAW>=hRJ+~j z3@(SjI579Zqyam?+F4qDxQZ;aFVrpJ5+b8?M`; zY?;*VuwOeKYw=bzJ z9qd(VHdt-;D8^+as0S^e3!DX$U=}O`%l)_mP>;C^Q1lVH?RM&ER%gHvP*1g51nS9F zJCu(^h_()185zP zbFFk254K8&Gg}#sz>f5SG8ch2m7k)=iBihR&$X6{XCzMN)C8d|z*Y%If-wS@ap2NZ ztSVuvCt0q>e7>~YL(_l-A*g>yD&$=4rMS> zx9#P>Y0ceE!dyGdsu9=fVO9e`JC)iO}euW|tD`Bfc3>ooEITBjMpKaO;Lv`!O;e}UVP z4mGUPc;dUSRD5T#BW#`K9KOql!xtwR&G>>mj&0p&R@MwQ(3%Da}wWCx%RHp z^x%8RAbg*+e0-gz{K<8ifNbQ$SA&i}TBk|Im!bLpA7gI=mQ|5H{yz|pf&%9p1VIG_ zU-7NLm()%3K|!IwFtxBWK*1nEP_eMpz*fsPElh2w)xxq(TP{qI|q7dcwRA_>n4tfgnqyV;W`sQI|4nSr2r`i z^sHcys>U1WIl!J$J^NCdjs|+pu#TO~7STS>HJ&X{_dUBV-`^JKDPk=e`z6%n2YOCk zp*$7nS#yf}^sDBPa{~uvDheUwZV);V=&2qM=;;Z8XQDwMi7{0S2rgn^I8+^^Bfuir ztB$+~5|M$PU7G?uhp12c7M68@+LS;~GaIAXOF)?GAy8iVr$A4pqW?aC!ofU{8_+Y5 zA2bGeD6Jd=2ib_LW`DAo2W7(#fb^4ro{@;4>g0?-PZE#$;@5!y6z9Dh=-CMSmu{tm z!gL;H4BsB;+0H&y?BAGtSD>eXNwz=FWDkMda@fxV^0w)j-*X=^#B;9^VroFF>2>b0 zpE;7rlZFL)hEp$K*FPIhAI(MnhmHY&6Rjnup@yetshME?F>U?n0G5^PE9b3*OAIzS zv)>#Gi$S8|O(p}-@_)iDHcnTdE9$ivvmZHT_3XF|d(@}`X z!Fty5C}7Q+K+kT*#bXUMj{@T(sDG9}5Uais`4?bLHEiK0K8Mo$1%Q7*Uf;vwE6Du` z>agkPbbyt@8TK$Ybwe~C2J*Wo0A>64B$U+MPkSm>!t?9K_n{uEsbPia z;lJTp6hzTCr;@R3F;AO-{2Oo*i=g=XttbW*ZR~+KFt;KA=3uKuT^MvN+Ik<_KNy)8 zVRqsd(2bUbxiyPh@(#fICzoX3GS={X*hfc1QItxOd&`= ziL7$aZl6%a6V#>eLTN*Qryvx{c@h)KVW=1$eAF^v7hA)g_vm{9B-lJ{=!!O@1Le;! z2H=y?oA3X@L_C=}G!@_wb$mRC-@s%qqDLGPTn@Jz;A}da+ua8dR58J1s2alLTWYcC zG*}0ldn&{+76$>_wpTDAda@3aF+H&P9VTc(gF&(xYHGNj$OHxWiJsjlH=>XrT73tT z%Y=xfA)0GAJ(>F@KOvgyK?=*MD&hImQYbA!M)7aL+F$^5gnhpS0CKL+g}sxYibsCm zgIqoBu^^hc5RUu?u{{9tM{%_c$QV;zilWwX9w8IteQ12lzv%N7ef|yte*+m1os9Ji zz~t9OA^#z;q2L2#hn&`o$F5PdP&()E9I85;jZ;>78Wv@ zlKv||x&}l~UQhWjCCDe<1-C*#AQ49f$C`t%2K@e+YVM&&C;y22OCDr06sT@*fM?%8 zsDiTLnG2jeT!nr+>xoF)@^LACHE5 zqA!Ut5W~1iam#RNH&h=*qGOYFU4wZgWa)|5V3m=L~!)_YY<-g zDwcqLC1RdcB}A*B&$&4UHp9+}=ita3FuQ_g$I~&6@@}Zh;r@rn3>L2VEnGq4r}Y6T z?)g50TO}ZM0!sH|b|1sqN_1&F+ys#Ww8y+o8~r1X&`$^h{_+FJf7-P)yn|AKRSXCW zub`ev9dj`YL7e&i91fNR-nAp678mj0o0^Wjy*)`ETT3_g@qN?2ZC- zBWFS*rpd%zw&xH6mTkC6Sl$Q%)FVNAm*CIP7; zU`|76Be^&22{_5UIu2r8!dgy3cqJT-r{5rV8iK?Rn zicAoxMjzI-g%W%~0rf@vO`DGFXTnxo?ruad84W**ST@1tQ2JiF%Jl;v3+K+g0%w+h zG}PyXpy)rLFLFS_dpJ2yvbHGgRfl zLKJZ_Hhu-J6rp%AxZ5H3gM1q(yB(yKLn*$#3HCQL*$T>}9U$`qh`kM`|ABa_&cGHb z=Z2%zCqcvjD-RKH6o_3y6j{g%=QIG9S_5Z%PkLJ>+uC1&-AV>*Mw#$*iFcxG zC{`j0B`>0!H2tZLSylPJ|nr#yy11Py03X zk!b(l13cx6xQ~X%pjay!X@}+U8xbY4u7P{Oz)mC!3SI-E5S9tW6~G+12@&7S-(R3A zPgsX6>W+Xt+T9!mkVp_h7lQ5vXf$$1aVm@GLpcpUaR8+|bQA?;;(gC>?^!55joi_f zP3xEdWljAj96LvUtmW%lL4Y;ENfdPrqPTL9cE5<)d1Ky?RkKc`K13IIi3`yL}6~hzTwI)VnjCA1vsK< zFVTiO-i_?HT!#{UP24Bi)j{Q<%Wx3Sm!3{v5IOWN4(c;PH_Bc61TudgxML968N}0@ zemTfL8_MfKP>y-9i|e4%Ab~=DpTz`-q8VfkbO-A~aHsFO)6=DuK0bH)27_7QKi#f5$ZrY#&N)?t`O<)^{Pmld}r>@1BD^a28wsgeb13 zGmDDjYXN{0+6B80VFBC2u@KDkD3mpfLp;Hy_xoR z;1Xn}{TYk-Ey#C;5WL{-L);_Y3`l_+RorYwOTYgkSYbxBGq7bk7u8~Ruy(rwC>p(P zF#5nGhiFgw32xOuZ8OwkHEST^B%ygt3}atL(STL(H^#gf;Mx9HM8scuBchoGkp^&g z6ZvpxOHUyGU1MQ&Fq2HA0}~y^Y}VYwB;KKnllVE`aS&ZK8B1uj2J+JBq1h z!-2?3*gq9yiz)GNc_7n-2o`+%enxF+|L1-P#i)njwSR{ zFdGhl8<^xB0HAE?Z$L4tBhO*9`WD!C4Si+<7!hQSf3M|TF652zbK`bNaG#Nz_M5_7wHv`EDb|HoeR!Jt> zU$7T0?Le{q%illn3kqtb9XI_o#3V94`%^eE1_j4LDv5@X)0ry-`7ej1>-xhwHWhX~ zj8fGzDb6JHJy--c(jP@Z`Kts#(7Sk3B*RzZy?ryxN7c% z>UM|;WX}ylpCBZOfVGcES-SyI!pTDt|G#ffWk0OO3bK)71zLK1J4nIO$ag?20(1F{ z$+*t$%b*^}{5*(WWkO7F2$T*eWx}T_A%_tUwo<-vCjF8h|(b9(FGxP-VWzm`QN<0;c;u2z>)`#q_-mJ3Sr)CP82b zd)A?3o1ngCF%y1*Jij1JCc?V)+=qpYD9wO4l!+{;q#MWpdV4H2z}+GGBJa&op13h1p6~@2lA8= z|hN5*%AC2gc{JEB$lCT7`(g;Dwt@?t4xYkRA0{|fpDW2 zB@yR1S?Dg?06UiqwTNgb8OQJm*cjL5kLU~Ta7agxsYiVY_68_L6QkAh7e zK5#ka6^Vh4B>gBtuG!B4`~wsd7JdzoOZQ?CxV^gbuyZm={uMX}5kBrGpnMe+1LX08d9hR`daD6tRx{ zdL3em!359r=l(vlAN|-=39M+i1s9th2f2^oKqjK?hX@hViaFe?2T@FP4b-nWScTHy zoI?+h4}o3v5GKO>QnBA5X92Jc;0v(*DDL60YM;SGcT-1^Hj#&qgsoSQ@%A?W2DRx} zPij1V0;DeGL+PVTK9*}j-0(*H_Hia34BUzQ0W-B~KT1%_fYD5Z+!}UbI+#tt?_kxn zh#`Rz4tbd13jN9vNfRPEa2pB;TXRsR$|Y#>?Qjs^(U=OH2$0wWk~7b3rhc7>;H13`PFp0n4%f$;hJt zD)+5Ii-Wno05V&l{5}wy4`-&sMl7M`B*-v$=}|;OTOE@Z{FjpJq;F9|CaruJ7=Pe; zHE#D)CY;G11T04{PPP^58NVGpTZCedpnTEdVh3_-2b*68%Y}hEuem+!YOq%xn-!`2 zVQr(I%nl2w;+cD0w8wJ-R^kyna~IlWMvh&UCOKsryDXk;mj~zC!Wyl)4tU9sQz9_}P$cd7D29ha@Q>jNDn+tbmmFK|S);1j#P z>TA24C=@aN5qyG_E3epP=}EgxAo5E4H#_b6#9J^^Y1n}YNqPPiyIfBuD)kiXTgp+6 zb!6Z{r9Kx=C*>nec6ky1A@#5nyZolXE<+qyAI9Cw{fRf(?aQ3|3!ba88}{FAmz{_K z(s3akP0GvP*yROB$woM`&S+=1pLfjia=z1#L`BA}Cp(hz0*+70>5eWX53~E7{k>go zm1l6$;i}W&;5Bx=Q?Xs1c9iq#-|hNzhtm8z?D|tgQ5k>nE4zL%(JqgDY?qy4?eelC z!Xu4#eIlzJ8CP}IvFo@W>>C+x*yYsiPU#?!f7GszAQs5LkYu|)*I{|FV;!pqOmaVk z%t)8y22x)5$!Y!DZVz)19^r6mx`X&KvMm`ult?P&+BJ6n%h^sTen#wn+Xr^TQ*m~=nfR|U zZ*SN8{?RVyIvkj~%C5h@)Gj+^*ky=imq!}x@e3RWG>UL6@D4hnS@>_eUlzH8w*U1( zcEe%EGbMj+*ZVpYo-efP32)lv!aTbyjI_&T0d_g@m|gY?wad-D?DF7ZyR;mgh-0B5 z2))q5vHz)#xp|$5UwGXau*@!_HreF~$F-hk=_LTXE_}xxxZmMeloKUSIV>F-ZudL< znO#nqWS3`OwaZe+5lv;GBJ<9zavaCSf7u-t4z$Zox7y_ihsB#ewCgJ!`yT4}i-uc)mx0cKwuNhWi~qv$a;YS9wzYV0Q?+#V$9z zWe+UA!LF}&w0(!;5f?a0xS+tkzogtQA30!`#XIbB%4>FcI>|0eAGFK8JMHpVpp@9( z6o+MN9qnJ`$Y#`icE@}NaHm)7dX#I|WV=G)Hv=4ijwp`&#jYnfeq;I*c0J9hdmX}7 zik}es-|)5#D8punXT$yWfNeAFGRg@S+Z>i&cI~e==|5F?*Shf@Jjc6}>LJejz!1NVs2e{+?SFl=^QW0;eAr8#!K%JER zvFnd~YnQ7g+2vvL6CS!fqev=*kF(!aaTM_KZ5aToP`V zo#Lg${?eR@cQ^ntoLumN;S3yPmj|5*y-xPKqBeo^2q0QdBO3FQwH1h zJzv!^G z)X8vmILgzvy?y`0mv(u$$u2iI(XjNiUEk{H(A86ReXWyI77}YFPvNs9>ewgY#*;T1 zLF)UVX0$OR^|tI=Z{g^(e0e~bD*QVmy7Q#8oXK{p{)R?81kIOEZ!DOp9z7X8QKjEt zc2L7kgnXf-PQsLI+b3B6wDdV&7zG}-D zBe+vZ5D&OLC1v>qx%bHDF^Ws&vpC?xF@GaoC9OBws^OpWX`I+5K9p0_6h27JSYpPs z9W*6FP*fLk&1hwQ86L`U`tY7A`wagyp5cQ$*=PC3{3?91S4ay~r*GkNFjv0{H@bH9 z^s$)1bIz2h=M~P+FD)-A%$-+uUoP)Rs0ruz2Fk7mBTQY5GJ@5fQX?!#PxagL;l0(l z^Wm`pz17@WBU&Z>gOAG;Jqz`p|H<&GMgIVc=6{4I@o@`#hKdMgPys)NN3MSBr#9;O zufuz_xfX1CS}OdI(M{bm$!MoO|290KWki%SqKiuUE<8J+y9&6?j8zA}3-7ODoB1xw ziQ7$69q4O>NApn(NA+ALHt?px$hAj| zICa-g;WO09pO|e{fRUu`Jy$9J=Gh*Mq+oH z#qk_qcl*yQDx5hxw|vgsxkZKf1%>leb%>G3S4r%iK90AKRHND<;e8=|-y`BR*b?8) zFx9knM)$Q(m=P+eJu{pPMZ*t;83R=0pN$UcyIYJl?FLP{&0)dL_J$D2I9ql+K3d{cI$+8Tjb#dkJ_sLIa9(`rx`<0jPdmIqaPex*4*B7DmzF4>y6NlkMc15tewm?#TSEGlj>x#BahzGyt;*EZ)F~KNN zMconG$KC1oR%au&eT!0Ft5&X~=bj$Mhda0QGaziFmCDM_FeS&FZz}gs`&$qseZ?Es7B_DOE9`bEq&r= zedmZoZd4l#EO*X$)aySrMu=)R(CFv)z>#ZOjVPYw8qK0YPZtv$f~GdUaltBv-8@aM)v?!eZ6tN>N?E$y)uUz>8f(LkrUS$HIwK&yJ%k7 zoU-}33kbN$*YoW%{_CoeD-dwj2;(}x{DODO#NNKB`pOZ;Z2!dddwxD~MOki1!94ZD z2;;y0vA(@Bc6~o1`pK8fE-JIs4Bpx024iS|zsL5&(qm$Oqr=YZk;b?H^~NaU9#!Wv zR;cn6V~AIR;c~V2HDY*E3IXD^rDja%-9QkD9E&<%dKQ0w&sfMk zeg)GRl?tjk27NUbeHW0 zS2R0gdk_XEMw^}54IbyZ7L_?3^V?O=q=%OoVS$4)l^NZ9gnZ`Ch zl*#~}^|jo6^!Gm0yAPR}x?2E^KUZ@Pwi4gj4+mCBdacD_2n7!VY1cZu!L(xq%c zMef~L+RQTfX14m|R^wj(H06;p&4|%PkDb|*jQAGUcBqToczJ0+m!0L4jlTzyQ(Uz3 zsjNaXxQ!jJ)t{!Co!slka`2=la|l1NQ;nW}EwAh@fL4u0aCuX?ne#e+@aR;eH1ZD2 zvEdG+Ooq`}9WFE5smwc#bL#6O2z}Nx?4@oRW*j-4es$9sduF?Z&GmZEs3$Ux~0zlVsg>l*vNxZQY)Z&@B#q)=F$n<<*6!0OWURPunI3qkj&<_JaotjlZaUvzRpWZsS!a!e^!m2OjYeN6y?WA}J!OUYd!; zj;<$dT~S2*`>M$3N3yy1X0xjuiGEW|>kYOjeCp|rjSgDGCnD8d(~M5)uD`8G<=NNCP$-m?3 zfilE8?N(C3ZeP-+Q@JtF;YH|F0lXoVe8Wu^((ja}(L3ws8Epa_NI3;EY;dC;Kfe||E;r|9jrv!$k(TCiw`e^#9q!Jr$e&k{J2Ste zWJdnX+4ib)0ke$H#AD7XE-WdKpQf;FC;nLhx^k+~WyBe|^n)lUF3S~mv~;~v_sje9 zXBU@)yiOui!4l(;pY^fNwe+pHJKu@bo}Je{Xgu83ao3mr`13v$h4Tr`>eWY#FZ?!C zu#-M&$#jFwNzcyJzcr!){P$Adkb8%xBbnG>oYgyz8ejEw-O6xwvRz{CFRU!jpHsjW zG;NyA1{t_5&*%~DeggOko1RX0(GvAxp_u#%SJx`Oq+j zdApdH{7`;5qY>bl41j${-XOhQgr3tqF zswQq^J^O7q*==SG@d8M@HysD6qxcc^nKVMwozrlB@Iinn~FquE~F8V#gN z(Lkz>G5ZAtTagj!v)j!sAsN>X$<=!)>XS}plIpjGoMvrj)7tq%XR~7fY`E|ezISn~ zd7nD)DC?1%;+Rqgz=k+8U1fF!WK&l&77Vr?Ag)aBhSv#PX2jTJe9+B&PL{KgYFdIB zOk7wz(ClvCy05$0OI3bkbZW=S-CcF9?qT-Vi{7@*7LQuo(;TRN=xKJ}So z>(sWj)*EIAZ>7HM`-T}C%T5&s zYAOrzEArtS(>`YQ+Pmj^_~ntLtvMCaU~5%q|3yFzd5Uyz6f8 z>sjh`;0Kvde(UJp|Ts{GH*{vq#mj|D2_3`ff8cpshN++KN^s z_VvoYab06yuitHU;r6PY5gpVayXnMkvs^Q%%aE(fSPpfRGRnNfkG17FQI=G9smi=+Qgu6t;uoXb0-A7IQ&Wcla{MEb>XC7=l z%&446DYvENj=Sa7tdz-gQR=VeST$!a&g%GI%>hxSObzFX=jZeJ-u&Vc;hEa7*X)qe z8J37^m0uKdyA;lm`vv;D%yMrFdu4KOR{p(Z^Qeo+J5a`Gil!eo`+MW{<=$H&qC@1< z+T*|}TV3~BbVv1I^dY7+%w_^$+gb!BhJ?)8fA3ueUe5(=fn%&|g%-l^=Nl8KRy)2fyw=%b0YTI!% z=T}Zs40hU8EqTVePF1{XrmCawngs#TYTyIdpF50)a-L|FzmH+=+VrGu8o1x=5-w`_ zdt{%jnX3L&6cMG2!)7Oyec0?7EX;ef3lgm99>aFuVKYd5eb|)EMVk>p%pa%nk4XgE z(7B!Z>LW8eAWkKJOh|n8W-Fvh3vDRy6GcxET4ix=KBW8GlUmyEciT76KgMmJ+0tLy z<6GKwf3dXZY0q<%V*X6YycW!xS2(94caG}#zS%WllW49dxBS-p`}|-37P>bwPTx~g z-p7=D0zxf(-|W>X*m|3LIAnoVP*Ni6*xZVR<%R0m1LinxohKSmkPcJ8R2J!pn_ zc?w9~`T**`JIJc(z(F(ATTcv%QU48W+b`UoW^Tt}>5hH81#R_hZ`(vO$-~B+4OxD_ zkU`$I{nWD`m?6>WA=EuCCVXVOJilUQkw@L$XvXNXA&zM5#xwaLMNs*e zI8obR4ky()g2$|qPsDe{bN?@`miGUp)!k_SUs^5gztn1hFYW2BwwJe90qqk!*)2D; z8Mp&--1dr}4e;c(wCnz&{(mM`_``=C7{n{tfnkXx7L8PgsU@F~gPQrlq2a_e+wMmq zVQ%!a`Y7Kga9r{Q-LVhKXm^Q4=)+XNA3OK(d#gs>lu&A2N9ePAtw8j{__av0|IXl_ z%*=rNPFUUeN$IQ>N($$Vl_wi5!r-`p=l{Jwwyd$yT4D1~Bh1}jut)awmuCD_@wUSL% zvx2>Ke-QZI0BfwbVTfF21#rt}Mg)6JHs=D==>X!`wa(y14)T#l23S49TzEyC;R{qD zfz~j8Q!~$k0@dO`YqYm{tX%GuOOHI;SKe!^9^OrLGG^d4)?jaQlw1~GLx(0*i;PM- zR7Xhb5owKQ{~}OD1##KH`ZQ2Y4Qe%e^;H?OP3|_nDR(ahK}im7B~Xp>0x4T#T zdxLfBTCa7Tw{es7J?ORic}lZYrmZWqM;c3KOVG+kobB-v0pdOzuI4ldcx~0|VgDSaqm(02^yR4+-rm}_eD~e~%p0J># z1Pu+hV3)_Yi0&TUCwCUYo<&=4=U&4g0TmF^N`A7@5vV4Hz>Vf^a+k$jA8-8A8o3aw zN2n>pVgALW(JEnV5Sly4K{AiS9)YS?JFAah(0O=f#MBO|lGw+9742bp(sWr0jcN~p zu9EmjrO=4>bTsk)XheH!Y_A6P1|8%x=9Dj}m^5=9bhfB!^X&pNE0j@rJLGazD6$)_ zCAvS<>gMNP_By%i4YO__z}k#4F9UmZRc(}dEX-=>t<&hO4}-(?$wK(qFfeU;P%gv5 zxs+e=3RFYGEnm<^xmp-5xN52I3AcuMP0r{As>|VUE?W+jDW16X@aAa2O*EKTxGr{< zq?x%x?l!zHV@}E4ehykmSYLq3H?722*J%{z>S%DiJ6;>)3nof;pimeoF#pvjZ^dCrE4G4w$!#VKyhgFrE(9kf21l3W&sGV?m;Bm*8_+E~~YJ?G*<@YI3E+^f>8|E*&<=W%&z&(%Cps-rdq6 zq$`R?2FvBdu5_r`C>_>zg(vlgr1fA|fXUn2Xk0gIuwQrT9v7esx}k)jLr_9f_deB) zfgU*)s;qdcTS7Hj!Yh1*vUSCddxdN`yV_T?M9&(}te!@hHR~g*lX^Mc3il>z_1zl} zZXSN)5;PO&Rn2w{jwu1ZkfbI5NPscqE1^YY36mk>f)JKAI%zHGHbz{nW=@d@)wlI;@I}No@0X7v7WHI?$^@Q zj!Uu!UpCXWU;ug!XcrdM%SsG-OlV5!1x-y_MYr}s!<#YeKy^%7>q$)mRj1zKh;%YF zsyD$jT?d0ldL!W#I+*V1&9L~lr0?0@0!;huzJ2@}O#0kMRre9?xJ@{^vJbsHTF;M2 zuj8PFS|tLe4(Eq=Ph`sS*Q7Nok-j-E%dl06=t2B@(t1K#M{2hd*O$I^TctxvUpnL* zmdi)_q8&A)eF18JU#mx4gz(W*T1cXNuOwuynO1)&y}kVq@o*hZlluW9U3=1na@o*Z zVC?Nj7s{kH40DlXN>2lbT};?Hfbl+Yk*jyX8iO4OjY-y z#&LjkgEvw0_}~DmOO8|>qrtL5uZ2GMdJpOp9p&l;X2|8d`?q5d2wdK?&I#*X)8-lYCD&`S2!>p0Z+ zT0uBP$jHAIGJJ2y za1u6G|Elorn;}k<0u+ z5=^tLAZ7Npf}E|zJ%bQ$V|TfKTDqocz3VktTECOljKPAZj(95vBY(3@T8~NVIW7NA zLok+0Iv>dzLWkqpudN+I2Qy8uIWYua=QPKz4uQyK2{Wso{aq)F(G{6_uRu*3%Af<< z$v!d^s0~`j_Y4(d`-A3;bg0oClCKvpyjfZcx%4Y=-6Vmu_j)=mCv`#phgmmdROd6N zNAlhAg%w$4ER@D9sHm{lm9AQqNFwK|)sR86W;tplD-^Kz#NQ;;Y#jzRO&o?J{Tc>C z&FF|Am6vG+`D$7vxbrLKRg^6#!Li$FU8nC={lZPoESqz0A@0(4ld5`lM5I3zs?iFw zERzWD+J;Am#+2c(vwV&wd^iZi_h3O)u5sIwiKW#f2&wXDF|+J$(C+AiZIQRLRxP_PtBh!-EmPDVFrI2JG&`|n*8IXkR_^{JsZI>tzNezIEUQHt z3$+MFAdPhG6EjAT9tg*Uqcx*N{ikQ46u!@dxvRp+mTIzCARW;9@$*qX1bikOh>in9yI}%yHsE98DaGddQB!c92F6*u8goklZ7OCm)q|s zhK|Y1#@(ddCq z_ss>6U(e-t?a|H&;wVPqI3{SwD+RI(#pN-Y=_0oq8lpB*k{udCfJxX}Wndo^H9Ol>jQ~~RPfBx>-cR`Agum?+`2564SH>ya+~82 zg)g4I!k4{1!27q6bjq>tHn`{N#sLkkZ%Qk&tA8hCpVc$QM+EmR5j@?DA$eR@TIx+V zkI(Rx`Iy7i(j+Z}Z*H@?@es*Y+`OKsgzGxdN_lYY&YIX>rWkcQnA>@--Ya#{9Ntdu z?zkN^U5`?)*>@s^uvT|Y=n5MHT`rFr2&HTtjDbfb;qa*X2Tj54)JOWP;9diSiZp$xOQ0Pae`gs|jm1EuD_g4dcMs#X=>dom{>EnFY3(+oxb@vD+SHUEqvQ_*b zyzzgFwbu0)Y=({no1|~SPJS;oKpo7nx~P&#)N^#mUO5)oxdheSCh%u5 z#8gbMZnc1TBvpLm3vzil)fzkSIM}%HlO$vkTW*D=S%nqzif7ITPrv7D?je*exs%Z~ zI+fagC#iH&p#btu6Ap_lU)n77QE8}GjpoC$G>{QrC9sC;U6v))5gjAaD%s6;ov%+~ zxLPs|=PO->KdIXL=|}o*q7y7{5ZMoC4oo8!C+eMrQ;fPvfH$-R``p{}iz~7?X(lhy zxKX`sfS=Y7cq&JNPXTi5liX@!_h^K=R$oAkR6hzHBH5=_kimYYqU)4RVJx#&f9qfGip zE*ug+;9bf?N}?2xA^fPuJ}UqZ0-&#aHqP%QbP#RH^Sb|xGC9GZuH*tSZ-mScl4p&s zYW7Q3c8$~Svr{Jp4ExRO|}GfX~DmcN3eCdSgjW%18>5sx@Ot@u@E1Uk6BjN$z@8u z)x*D`G421lp|PN%xP+5C?uLdN6ROXEn99G|>Zsnn$qMnSLf$HwYJI*~>jZe1Ew-;N zf|$2HQv?)uGdW##t&C2&*=o@tbAb#z&A=z`j|d6U+ueX~$-nacDv)~3K*<`}&t|`n z%Qo>mU%{kaSzvLBO*Bq8oy{LRpEIm3h8T-5SbpnM)}^0q=o}a2^G!|3$+^Stc(SiZ z|H}gUl3wqRn%T-qJlX;8xtS(cQ))C-+h(>3Q#FGH|6Z98e&r~HFMnI=$7Z(5c|0#^ zv}Ns-cQ;AXCcV*}UjT3FB<)g<6u_J1I?vf!AmLN5EicNY9fL;|B4F2F%lCoUbtwev zN-G9ZjD%rTESFn8l*^UHj@uA)m+LXdikattcEeYTA+Le3%u}v=0P4vV zed5d-h#VH6PswEs59wKF+yl=V_sV6+Y;i5x2aT9b2amiAs`8~ZK20!OH5*{QxfL|8&jy2Q281Q@|5GT&z?3_6W4QkYx{Wo(!Aztt1CYMRf(~~Wf z%lKo0aj$rKgVb&8LgsLp2`}toM|+vefEd2{L`>f=p7d zAX7Tmv5K@I|5vy3^9=&OrRF^;ptlKV&oY_#;#{j+Xf61--gWiqgI&V?yQfXX(rMc~ zE1HMGPFmF3)$$gHYfk1L1l42ntYML^A8Bso)z!oyK^;`td@ID8G+%lyo)1y}J&+VR zhUwxUNn-h&mTkKjNlKgzgmLo<3p0yn%*&s*uw`mP09q9QY}&ytRdslTH)yF~KDWY( z9^eMQ<9do;Zl(O(LEBp?Zs_%$7a(gZtRB-%JY#@;23wz2cY%ifUnMfXf`i*`7-(4> zcs`RUj#XgV>6(K93sC;%*QIsT00dPI@A` zgMLKp&!!se)Uy(*>P`s!!h}Wn;A*csDYITm#KwRlGGbf9< zg-qX|z3%yifU^%LB;Rj!@HUT^4jK1DevJlKdOyzxNk!STy&q-COT|;wB}jeZuZ3M} z>A(8ACwR{CYpZ?GNx88{ZkT$efJHD`o@9`XEy7;?Q9vi~ix*k_{hB|#)sjag{K|b~ zEs?Z|^;Ce`0W81gvI#joG$KYtEw&7A-65H|?_z6oLQ^Y1?7htbfL}0|w5Qs-*y@o` z->TazEX3_56UJ*l&(S{)9%wC@_`V!weZY!jB4P5f2dw_R%9BM@&ORsW(XnN7Dhey@ z=O_ZLUJpI?0K9C@67()V0Am_n5&)yBh+r-^8d>e~Jgo}BHR)J#qRQ%#A&H(KbEsHr zgq#GCRaJ3*N%8%Ht-DuP+lmm}Kt&m;iaXX^spVZwoY@xCK*Ut^tcIf>L9In?n_rTx45I48Hq?vsFHy{`(0YPrING4_nu@)%NVked2dr z9H-zW=F9cKv-I&NX-#hm8Y7ky`rUP#$KEac-0b6Dh7UngR9*{2l7Unc+s^|U|1*jwc4p8fV%X2`TJRbZlxcgwPc0h8B+*YbQ zog1xv6rm2+u4TVmW-peREPpIYg_SRnsbwPZ}-gO{t-y@1k5jRm1re?IKUr;C}T6Pt+jM_3ywZAhdd#kYD-)RF!LSZhJx$<9(U)ytL+p%H_b-tvq429=>_CHH`E5 zyg|UTtfw?<*YN1IT2te`Nzvj zcD_7raot0>M)q3 z<*M`*u(X$Z8(x9lN^OV-Ujc6YDUC=yh?su^F%RdK8SoT!eM+NQ8`<1?0MuwF`9eK7 z7Qs7Gn|kC>tA#Ug8(@8U!*I$rz&36YFi&j*jPE31&*{*z?J28IFH=0Qme!>E^2^8Y z(;bELWaGoNwYm-h`;-i=o59egRQj*}>4}zOc+K_`h^JfWRimCdm+M~@T0YPMc@9~0XWbNSa}&bq)X}`DtXH!w)OG><7!u)-ix^KwAC%EyBm^)(eA=1Y3zjT31d>y z$NGGX@@E3OT4e&I&S?#oZ5+6UZ5MtA+w|_<0llrY{*TrTgWW0QqeT8Gl5fr!n~}}S zQohlHnB+z$aOKI`i}X~skB#kCh)&-mqE+MFoftexHN9j-s_b=E5NzPvq_PVjyT5XT zV94NM?z3Juf#IgUFNYNgmbVtptneo=b!oyWC&x+~pP9;W{gV8J{!P{#ZG0!zS=~mu z%r%$$G11Rh-E_dswoGwGvhP@0>eHtgl9Gm~)4Qw~Rrg>-kUxwzW{QLd$_d-1F+49y z8fgU$ESKj}_NG}@er0hfnV7xdYNzUcNhC_JP;=K?(Q*B>*CH{SSz0dKa0QYVCtY4x zFV^soT%MOp&k|9wfzP0A>Dq%#e1;%7QkyRCrf?KRCzX5X;Mb;0Gc{8G&slF*uFEx# zraVhHi=d}k_$-ij z2MJo}ssFEx8dV3sYVNe3uX%%X9yetNB<#|DVA&1`t2rw@H}9aQewMlX6+vN1T`PO7 z)mV8M=%;d|?fridvRlnh4#$f2HPRlJkcN@cw3sH_d1Xh-#912zMZM$lklYX1V2ysV z+zJZ7!OAUd9-Fj}KKmLtxklOYYM{TVfjLQto+ApFlJKg<&ykzdXlM4+bFDVc8ugK& z={o_hm)rH-tf0P4%;6}L|A@DvM}GZo^@g5Hl^H2ieDj=3)pG6I*6xCESE%w@3Xj}& z;);DA%jLjb2(v~fU~_kodAOmk2Cu@?hv!iUH%)8Q+G4%lYG1cOEJmH!W%XBI&%z~| zJ!MqN>#g=ulJ0vWjec^B12y+gVGbx?J!wH$p$;oq>L2a0B$ zlLeaV=90&!-I6*kd;B=x=;6MWcps#d^7Qk#VgGw-E!)iLvckr^|9{WTwR+GhGrRQr zHVMx88`0T%9o$xNX}C(@BPSRCC(Cnt5#oxa{8uvW;6})<-!GS8FQ7c#9W%4vjXLoL z>ffky$|)}}L9I@1mT}oD4;0)e(mL?DXjRI6b@h!_N|pB;X*%`-+}+X*vD8l$>mK+f zb0lsS3?{zmJRC=)o)vl%l6Q3MB!(8xam~n;4DhcM%C*H#{5?x;arx3KT?fS1-z1nf zYkV)i3Fj~Au?f3T{UUvtwVQeC_0ud~C+edzV?ilfZ@n)2J-2r0v75QnswODe+aBj1 zh=`4J^xp5IHRq50zE#F0#>}n{vuN`Z%qn&EGIWoa-(R)V_Ox;sc@K!FoX~L_Nknm( z_$&Vsw1#VPkUdtHWRa2}RGy`!YsY0yvg^Z3V@o)#-||?mMxvSWzQv@?*9uC>a=A&j zPJatSau;3awEqqOJHJC})aU2Fc?%tB)>d5lqHP)>@?m(k72cw%T~p&>sqfuGoij&4 z$`@?~^-32X>aHq_%I>p6PYXqfIyM}95hPr#tZ5@~lHUeSXd#QDa% zX=v3u>1Mf`v5DUL(Q=;Nx#7HWWTdU^{#{N}NMCI{BX8xnUZ+SCymAw2?^<__-cnr2 z9Nva((ax<6cpq1%%@<|53ooM6?s~RaH?4o0W2%y6B+i%c)86yO7lK#&BE@$H+uZ zl9V`arwOXk(f>AKi;3#jGt~<(k#hS8lbrc`2@$%q6-by=NA_Ah^s(PX_JWbur_>wo zSnU$ZH8cIYmP0Da2K!G8*Xu><&_D2WS5h-!i-(1}6QU$h)mG|?yLzLLJNFOP4Tft! zdN;|Ft5$u&Ynyp5;sEk0q|=2zAf(KW5y5HkXq3?T|LdJen2P7z?O$QKGt_7wH*pIB zcAM&E3KIg}rOC}G>vj6IhhE+ot&}IWAXr!JeA)p|d>6HI*?d4dr(W-(5iWVndM7Sy zE86Tf`SikK!4~TVe^yd|oiIoo2AQjEj~P5j@So|(ldXSscq^FHBT%xut*}CycpXm@ z(BFMH1No34JGc8B-zJUCrS3&OZ0(IgLV(-l{+ zK~m~ZTz%{&a1?4kbW}f%h^xCwJ?t}aYBL0f+z}jRyfiO24g?GB>EhApcfOti%?7J}@qI-1y9!(#QB@N#cLfjY@&Q>HV$Jk%mvC z>C|W7cx3}PHYbD4>PMe#5pT`=!pVU55U=QkusrXSV4v_gfw@_G(utpwm53|jrl*-d z7fE}Wmsuup!Ov{s2`7!;gALVg6zm$#Tgdis^Ie&555WDtIjLMmoCO70TzG@@F6G6~ zt#0~BLA*wx@B75s92=YWQ4e>vybuAm<9%lH3=y<1zi)Mk^JtNAIDLL$h2ZQ?o}?G_ zi{EGerH-{U0pS3g(F^!`E%3A^B6d9|m9^8Tw>Q_Ca4UB?=vQx+`4$|oCiz{p?-glU z*wkw4F)ve^&Ncx&HpdE1ixJ5AFk~VqY-+ty9=k`xhvy(H)HRp-aKeUdFwS1 z#}2~fbUhj8b)wa0cSZ#JpD%Ah9Bku#VU6|2fh4UweLsMoMOrrbAE1103=7r?dEYN! zj2j0{u?BVO3*z8`=LEm2UsyK`m1rP}7gL}u?H3EUmX~o|-o?w>+zuMd%+-tRFJ z1j;g}9ugEJ)uCs&t(R^wZ%Td12dz%J=^xZU=J%GBun6@MGMzI$=4TgqGxdDuJ5kY5jg7*G}meJ7aoH1E`v;c zH|4C=!*9uFTKkkiH>GBe_syH(YuT_7EhdDHkLVDUQdul}Pk#5hnuk1vhPM&ft zgstaLFy9!>nsbnqIgnE~Iu>6L{9I1OKO#N0e&pA&Iz8)onCVX8>n||Kxgy9KE%Xa2_3X zHP~ZHoR*(3@-xA6lMFoeckywsh&OzH9T7XkNy0^v!dCfDel{m%#{9C91r>#N6wWJ? zHoviGZM7P$K9TNJ%UijE)vJz1hx@5->L;3#)(G{yw?d|Nr*=wCYU6)|r&B;T&w`a2 z0sD7*W|idMJ>S1`k*6OKKJs^t%SSk-(o=^g` zS*jzBP;K01g#>v;kQarmyo3-UPjxt@@GYU$wbpF?ByPu%Rsli$hePX>a(rhYiZ&s? zv`~nav-oaYuX#y;FFwKsh2Sh~@~7ZEot#TB-o+o=0e@yzS2u#SBVG9|p3D_R-3o!W z@Xw&ybe$EPkoQ|Z7L&?3kvAqg+jEn{nk2n_yywrH*~%70k+)JiInO3tczFY4)}em^ zp1UI$|W~C&fdSkd)Jp$ zi#e->-&wJVJ^jeGdb4JdepK$NN4$0$XaB<5NVpRGw9K1w6ja0OxgrkoooPLi+aU3cve9{@~|O8XFB`K+;_n>lbDfzHKTFa z9O@=mHw)cztRiWx)b}5yzNOg;jth0OxtZk)WeV5THER}z9AiT!DOrYO90S_%2BGFi zGj7t=tOM^z(@HvO2PW!K^BZB4vni5Igq~GKYTxqY!4@VtaA)=1F;0gMKO`UmK5pfj z8m^J1{EuOXt4!6p*T9ckEwU0nlwNZ$z+5*J*XoFJ{$rxRa;D^=`CqZdO?H6(t6o4$ z>xK(1L-M8wjKaTCx08`K<^Boke(87~mo6`WjH>Sk53lHyZ|Xmthb>IwIW7}8;b2@z z{`?}_bNI8L+D!stGr0H-f4D|(>v3?Zzg0Bs2$u=w5|?-W?b;SgtQR10#|e$DcaGd5 zO%pFz9sB|Nmp`}VDpa~&rOQv__+@uV@4Br#fjC{&$(t(VXPkgmecrQKhvUBgVuQk! z_$BQ(k1@(G@$5TYtO;1o0}=U+U{@+JT2T3)AeDwFnPAl?F28+6Qje4Rv?&;-?J~Y^ z?0dgQgStDm;?s(7_){y|p90skJXpDv zpUy0s_w(l}E#?y@GlZNJ^UVrSqD_Kfu-M z_XNh)AJ8w?Z8gslrOG(Pa-ce2I9PlNmc?HoWX1Q9`o$lp>u7Sn3_d8g8*(|PS2x@W zs)}*f`~DyFa+XVOyZ;Al>~>#EyWSt@=Pqgl z+n6KgJV|A>{(-WLKbXX{e@Zy3_rR(0J{PXFcO0LF@zAiYMkc>Oq4WRXo~K=1PvN3v z)(jv=U8_0%FFL=NmxrBdW4sMdp{rcr?ZJ{8oi^B6*RXMwEG>81MJAEUMiwr4ISq{uN}RGfml#}}vDiqz6Vun}oo@s5|z!jJ4p zHTx?th2wEH_%Pny4#efNRZz<`;p%Zd8=`?EI)Vh&)Vh2&EU%_2_*6a!@Ue4TY|C$} z8PBI85oqSOp^4O}w}@X|Px04N{FaNJ=xBjA_pG5%T_errQF^2yO1s8W0irskZ;e! zR3BFmvTj_u!0e)+&1pWPv$CMAPP{{fcE<|Z(Ca6YUo6Pda|s$hrbGx`5+ItbrUmB` z&`2SbgFh2&&EwswV>T^>UpK47hZRENF8DY2ghCLTqrCZA?;RFYo9E2vm&k-GCf`mJ>B@#%s<}Ot`^_Ztg>RLvYRx|z(sxyKEtnZ#ZfB% zetzxDug(!@r1fVvln(4DZYx|VdhN2&){vU}9TJtczge?+0 zW}5*>2^&_3`GP7omVgRRU8eC#38ay#tn$wi&~{UWSygN>K|k6TUfpKXCNLQkKV@SM zIJ8BU+Y2-(X@jFuo~%ttC<+au^cZ}_gJvsB+A7q_=9LVy%m|darcIul)(;yg;8@Hwn)ftPeJb_$yy4WIOCMXW*sN38TXg9phu{gmKobIQw?$ z8&(>oC7vqlbCwwIlsuON6$F2|{I#JHnu8Mtu)izkeEp5(NtuC_v-nDC?p=Gdttlu3Er63)#ummHH4nQLMX ztAH+JN0&k8cq?+_)@qg7tjawVkenyt#BWuAkq%IOrbI=XIq^n{xYRMYB1)O8hMI*H z;fsO~FuQM6gxB1{Z-pwcOwUqjuSzgCiHUs$NiS8hb&XF@HC^u>*6`~}eudHF>lwQ(a!Dus4bpN|Ktsp_dQug1YTwKJb!iohY&lQz z*W)}PLG_5Zsu<4<xdsm`kop5Pp}c^>bBiCFAX7dGhyF zq1BG7zqtKZ4RvOQI(Qf`3Cl*=O2S`Z{pzv-KbIm|u#XbktD!2aJ{IIpgR9#bsCzlt z$N(aY>QHo{2s2%!I!1S?H`cIPiyNVFFUlRRj>O%Jg#y3xE5k*&w;KG_bZ<3K6In-j z!k!u&o0e1m&o$T=XtRM5_tL$hs1UmsVxBqtx{zNJRY-G!CnPAJ{{6k0H}Z7ki4$su zds(eH>}3-1Htf-Q1C+Nda=3VX*_JZN^jHtOJ}vg6CO5elTM99OA>b`)2isNNsM zt2!kE3+mu@6#Y0=r>I%@@w%wFs^PhZTNS+_eu~f9z*Gj-wY96|VccZZU!U%MdiUwv zv5Rx06H3Hb94c7*vkpu`^rx#_eNX*zmR+6IrlS@X`o3dZm#$}P9Z38UFHYwKSaIzF zkvXp2&-U2f5r*eMiYPO__N8xTMY|TV;>@>?agBcTESw`H4^^|6b}5gy)$x8iWW^68 zs7f1L50xf0k>g{ch3cawJj405UVW`wJJvHFmpj73_%K3s#~p*b==Ibh3k5OT=F=5i zW7i4*f)lBb9sD-A6V$6`2yLOV&*8K;?GONY&THWc|a(BmQo zKW5Sxz6H+TWjJuEuHLjWGUnu|fw`S+)eAJ^w_Tl45cSrueHZl}bHJ}j80%L*Ep*t- z=X9u2tzXM{0E;}#oHx%(BD)=>FEa_Za?_U_7?HD;*S(Fe>R}Tq@T=x99|IUWZp_S4 z_>B!q=2Js%m4;|dY5rU4`cLOBXns}znPWwPs|3*1!m zluBJ~+Ox8D>WgfYA(xddsH|`Aia|}<4qg%}OE=QGwNJ)pZf{^#gFncGdvy)>SC%<+ zg=NMYj*+-7XBTx%NI{Jw1E7=f{$spP1?4OC6SF*27uOBtP|;n+M?5~2qPc@q74o)8 zu~jZ5naI|nxIlMDiSlJt42Sy?5y#?Inm%b{tJ6^WX4XkoM)=aRx{=X-beac`mOxA@ z)_ICKFVWc6u3koWt1Y^5(8TQzPul2SX&w)r3qos%x5%KMS>Fd+O-8H*UKeV1HP-rm zmYqLcYK)>Ke98E5k-X*4UUP zP#c;IW6Bx9-2AvfUtTG+T;--a&WWrD=TZiJrU|kr6*OQ3dvthr0n?z(ok`TrCsN)J zJ;M6GHEe+h~LO`F1SM7K{}t8LQ* z9bHWI%Ks>k)-)V{(c)&RtJSmK#ug!B5=m;%7}EoxQ6l0Y_cv-WuG6tyN zLa~-#GP@Wb`|mf7PiRVBT_u=wv1Y6{UK7a1;EaCEV|D%ein`_dJrY$_NVSPn8yMV^ zBjHBoV`0y51(P~eAo_hX(2%l_V$HScH)j@on`s`&rF*0?=IV*!ejLhq*XjxPBTg|( z1qKb9+Zsf|U{o?@v`ua8N-*YP^{J^T8tb9Jumb3oDU;ah$C^QpOk7qd-!&PTYnjmn zr7&j97?q~hgpSkGZ{H3xG9 zObjVwHXl~~j$99Lk0agQ64^wbPl)%a^5IDl>*3cE%K*j3miS?MmZS1LH z<-s$Dd6?D;g_`rCDqkxEwJw$J@2waus?1kvZL3_C6}W=7Y^HDCcQb0(#1S}j zpRKeR8;pkj_5W_A7ZQ67s+)oBT?mSOYQ&r73ioNMOHw9>1(fSl@hQ#bFf5OfNl)g= zNVxLjg3pjCgip2owAQFC31a-}>ch`2TgT499uNp$u;AL@=5qv{@uKu}%a(JXA$rQz zNCl|uEH1{Cfpx95(9_<4)ibOgYRci@*IoS(E!k5Ug+c@d+#hzh8Icc0%KoqnpBim9 z_P3cU;bzsO$}0CE!_sk6-k_e#tPa`gEi-gY4>4#3bNdW zw@2rGy*u}8+~_}71EqdEs(#M(4_gx}+oPtwXYNBSiUZxOe!A8l<&*}ykioS6ybqm# zKe0A8sP}-l`-deM+{d%J4bUoxclAS$g!2^+R`?Jh9S{G0Jx78vWR}zb|eW0yfn=H*YPs75?yn`hU)T6Ok zQ_N6O+;2u>)tZCQ9+D476DE9{2|Jy(geq>;v}O-LcUN8LI(9#L=Dp#N zFF~d9^B|z3$1AG;7E85N>qbLK;6h_}*gZmwGQ^G&zP!Zu(-DWw znm#7tmOWoH^M#zK5p`uSgAeVl@3SdlLD}j)!vrVFA_nVG9%d2pUGeiEhiaA#f4CJqB*6nk1#}OscK*-D2$8JMZRWFVbAWZPYYoFf_T8r`bCgxeyoS zfqOvw(H?VvEc8~~jcOmhpq0)-2d)i9O^PaG7k_Fqgk7Z?R`yF=4+(Ks6J`#YHECiR zLlQOy>(!+$qL%J}^7zypvNj!T9cwL#8tD4;>e{Dk`<|Vgvz(BSHp5q3X(>0vW-stA z)7;wuX{s=$h3ZG&4}rT+Rbf=E2YBJ)X`VIs0k!~FwOXKN7e9AE=B2)k{jA1gLu}R5 zZFHvK*4j1v-eZ^PQzwU?c!=a?lG6731MqI{{?t-#C~DKED(F&px$~lB#HzEjfZyQ= z#EmRbvLarZlq=LsSSl!6y}8&c^QC%imX&B0kzgxSQ8nmn=&-9eJ8ibDa*YJ7Dd1?-lY7jtRf8&I9y1*EEUjZ4XJ#%^kzX}T zl{x4diMWu5k#`Q-Ox-aVuZ-jJL&%im)2}RH!U#BDYpbp*Ma&F`I=e^;&^C+_@HV>U3^-Z4Lbe>lFjOzSpqZ5<50b~-aPc%-dyd#bwA_D+lhXsEtP zDu?Q2__Pt8=~G9JQ4ukjLyZ)NM~25Ms(Mq|#Nh?Vtc)k&dBrA#{*^}IB7u}EvICZN zs;>nbq~RzGJ=Zgt#bKjR`*vl-i$=joJg?NB8il66phm81qqL@X;tne=yDvZquc&~u zt>o0 zhg_?pYs-23Cz3V2JF6#&o&x!fws0y6?Fe)%hJtVR2VGJM{YUXnIVbnklCY`wc z`7n$+Bbi^zd2JQ$%BhX7Mxf4|66MS#*_hI!stVJ*xCxM|`6FCQ8Z=@0%vouZFoC{b z%Y6#frHw(-o{;LqE{}Y^2g-ao$f|(CwWnjypBR*3KF$lGH_| za%0foVnW&`pL)B%8!>V_L+$l1?}#k799+PPG%wKenO1K7A>*r)-8Jwh zbjG{a@N2p8xcZGMz{*ME(VR(eOzT}N*wG~o^sD3ZO&j+V{T4OK#i!;p4Y_T zxF6B#GfUNHu?KNV#`|bKzv^g*AHmJb&;g!(`w<}XZMP*n-tr)--cyeSxcDF}ke5lY zi1b8TS?emPlgWgy$#Hp!%7LAa*y62L4F#F2F^g%*@Vc1PEXFiVsTsDln+8%n&y6B|xKmX$GPtFyN(ficP{jz@V)y`@sB#Iro! zP7xK2xpp&4mzTh2WxY>yiO9Ylb(8Tb(X^#VP)1Up8dL^PWW`Dv|N>9Np5L%C$JzpGF!<3Y+eR_58(bGA}2_|-Ul*?zBdw7Z+CaCByZHlc$ z0Y5XceF~a8L0SE!DcZ!*?PVFeEw`CVU^7L#+?*d}-kdKZ15stV#2MDT0I}f|bWq$I zTaKD`qC;SQ!p(-Ioea1o)WZr?=L&wCumaVYD7#=(N!RANeA9(1jEJZk*95s#Ck52X zJ&*JFAQh+={|q&<$9uGpAw`w2%1W5k1v6w=srxt=6}0p~fw>A`CuaAQ$JVZfi#UvHXr?X(3vJg#FP0n5@-)$`3&R>9Id zDzkl8X+1r-lLFhPX@->eI)9olO*14I9)60Oj>M&|GU9mFu~o>Qvl1=Db-#z2LCHO(y8x7rq{Gr6nL zQZVY|DP5|TyrND-k6uEZIJ0En$E~&rDz|*&Q*w(IGip?CIyKdO z07Q-GzDDN~uWdFp*073SBG4{WpjhC+ZMKnSewV}RM%y4P$3@& zZE4la`rul5lftEBrgr?8iHlzROV*{b3ls@tZ@0NsN?f_RSh&2n+-=*HBYi zBxswgs*zzZ+l8lN0%^SX?oU4j{7+M@?=G7vqp21iw|V%yV)!hvwskf>@Yh^ZyLy*x zvO3*`i6lIzali}0(ocN4zUEtcbvF*fM)GYs6TH0*^ zr$7GgC^O{Ncy-bE%zPqF-gUCqF(qZxvc%B9zWBr_F+Mo#2xpFSncv41#qA3I)wVJR zF;9F+C8i3*7b00dOv;AOS&bbvC}9|N^`sKxOQ6{kB=_UCRqJQfDw@TnH5xM^PGwy9_=@o&TGO<8P?CWx#Jfs9Y3S zlx}M$dZzjkN^d%1OQSACR^}hoZG#iQD5BJr#pi}aV=#j9ZWv{S?mQqH?cKO(>aHEbeF3>UH&mY*e*VfU>S7Nc!fx7!lO@Stv zwtM5+1U}v$seq~WyGjQp9nen5|A3Jd_+-DWhv=An&^D9h(lWwJKZp`lMk?U5@c;4d4^ zzF4oIz|^dS(t+UrOm(%)vrK(lIE-1MKGxN(x|`;iJk@v#t3pM}H8rbXO{oa`dZ;X*hmyW*-Sm)}fEKJQPQX$ax6|+*bd~i8kTtiU> zs)En;)ywv$2E$koc=we^K6)HCJ40aiX*?v{FYx2>2%Bmzl4Mm@q_=Q;57S3F+;mIy zkxDaWEHlHc*91;sT2w~YzGj>EpPs^fk`6$G)m|Msj+R|L%TzVkSP{0V7XRsZADqzg zT*SqdA=F=L;My5DllmbH0O7tq)elooc*Cros7}gvAWaYEaNi5@^c}A}YO3jEDdZF~ zKB^Q`-FKA_)O*v^mu#MIF!^j;fuSR$^QjsB-TY{46bKx9Gh%|i6Q#-odc9>E!`jeQ z7?bni;a5|I{BEk~U?c`Ez7yIDE=hdc9*= zkM$YL3t@33Tdn-_jORhi=Y2JVGHo|)ELC9rt>p;;N2aZI{)d%JgF6>~fonDn}4IKH&%zs(tgC7u9j}IWj!$G;m}2Y*;Z+l|D1*qXnH8@?21nxnl^cKvnE4Fjh{GU=ET5> zkZmmers?z$c?bGtMEv5}4BHHg#&r*zJRKR#x}Gt|>cIO4Y}Mli1im|C>lbMCo~=0| z!s+kX<^||d;z|X|p0#xj9NllbC;#0>C-|~Lwe20d^|aSUQiu1$(UvoA1y0N_U2>f( zA>cV@D;U^$);27Ve%f|VfqRTjrP+Jc&+W2ogUz2S8FTVmKYzxbPalW+Dn_Y5iNwMc zc=~A7#rcf9**z28DN-HkbCNM$sYrYub3VA4h98&1v7z&l;Yy1TkUbB#ug1nnl0vRFORev%#2~s+CMLFS(qJJE(ymaa;^GyqhZY-V7))JCaV6tsC1F9Zf3?!P3f1Qv$v_^A;24CTn$APBmS+gFPcV!p z@}d1j>66~qPYDc7Gz^%9#r_!7;vZpIU`4dHpHOCp#j+>ELuzt^Ui|TEOKu8cE{(-y zwwg=-qjKt>Y8ZcO)%Mca^(a%AO*4#knqdD!Pn{H&1%@Xjtc*4u+9p|;ftFsbWpwEi zg~T>$eMOwfVG9iv(4tR{bS6T#pbT+-5%zBcr=Hp2XCF_>r>UHf;tpfLO6 z2A`m@5`3WRhj4Xfjb?*o!k^e3UenDk9$uQGyUI+)9xS-1<@Dc`AFU9UvlsWv;1#75 zd#8_jR+#;mVXV=*?@r&z?}TN%iV+r0O5_^EHLar<+dp*9Fka9~G2@MST}04_J}^t` zG8b-?4+t~9G>j*;nsL8Zs)w+QY`Ev5kpxd(T5sv}|7;jraUwJ00aSBIsLY zQ=tA&?|TR>XSTh&aGYA;RNCp$FCMUlN>`CMqk@*;vn4|7M9xz*&cGdatMt{j-A2bW zbtV>%GwN%s@SDB+3v+t!jx%;>uC#Gr?QDVBD4tKN(hE}#_Y>wW9~adtZq{CTLYNDE zu$7izsV(0!m`28LnAtu zR`CntLP5IR(PpbV!2Zpgaum^F!QjW1_u@VWPlk<#=eJxm$a1Bjdy$}4h^xB?Rui3k z!{B2aNCAH;@Lh3Xd{(I<{l7r_V-1E0Nm;GiPujmmko6Vo@?P9DHo8f>+$3*3vz`06@MT?9{EJ#KYFzE!R#*l_2( zb0U{mH=5nJ_DOkRToqcS=MA_0sc%}oBalmeRM!%GH#OcNEC_~bvoiBT>({>*#z%>D zxpozweL`4HF1aDUv}GqT)clXH;pj?RAFmIWWR~8Mi+$)_g+R?@eB42od%x6%lfpb; zjd38gcDww^&cZUlhMLUl=8uKjUa_j1E9!r4Ld8;xKX;Jlu$j2gfUb1niJO+UFkP_LA2)Z2Qofdu5{C@`DzNYgR$;K?s}7U z3x)Z>I^~bBSMS}?Tv%3f*#9g|u;>FPUlzzcJ6IK>^v9*ITGf50M?XZ4+bn;LDxw@~ z>T3DIFAC$jHSNNllx&oDOqtpOxwFSDIBya3Hos=MU_Q4^lNEL-q1Qx_F+zhyo-Ey71i7~7dW~(Jy}@#&+?q^=W|m^_sY}m` zoD1xJO|D#-ikSD9Hp7=V={hAdPtR}TbqVAWWMcWKA?pztCcyX6nKKHK%~+LfIT|iy zCoY(5;AA^O*szg;RmFFa8#ZVeZPuX99I(Rl{{pv9>N`!Kfv0dJz@XB&yOwnqmI#K3 z{El+m87(ilJ3iTi^i^)`-Q$d&VWluuaM+b zOBi=Cp%NC5Y;}#tw+Z9>h>18*^FP8OMNgL%$SoC|I1s_s?KWBcHzzD8Y|EJ;%$v## zS3?tfqRx&#ulZFN7ZYdDAaeebd$-`wod0nJo}wBof8zIhM38U)>!tYR{W(d(xKPl; znq2j)4?7Cu9yVPyR<-7=)xttxEWMilF{f{TaWGwA7T_uc&1!q2NZ^bxckejkRgFD1 zW`7}JT&m`@#;%@yb&0SXu%|RusA{H}8MZ%P45B$p)pQ=#pXaJ7<+?3(G}e4@AIynN z#`PQrYwYobgIT3Yj;oYCt+B@jcK=EkmvRjznCW?0`WX|q)DcWUfFt#0&X1|1F8(y67fCkB3DO-MrC7?8V&?AHW0uAlJ_ z4wX`F_QDy6WaeVs_g@j_935>l^^H?Cgn7VZNM`}P54G@E-GXl^>M;GjPuNRTf;nK7 z@m&&}xxNwQ72}?7c8#s?vd`)jd{bK2`N`tne-t^-7|j3v)&%d``|U&vj*S+q_xfwr zXvj?ibfqUo?Mf9nt|{9PK3g*S*qL9gSimtM4$sO&Sj$n~(bhaJ2q>c(i`K2c&7dgd zX7+l5?ihr$?2c3ecDYR-#}W2TnM{7 zt!KoqPmMD^Di~p#KbTrl^-J4`1a_ zt(Y?x>;KF9mxQ^&*k48N?nZyN66OPgpRw3qDMQx^^P9|T!QDR|?kO+`xJMIgRp%gW zPi2NHCN0p|iDSKc3(EpS#aKG!Q3IAf`;H9dC(OAcG#NK$8KEg%-5_&44wW4DR;#A5 zPmaF4SePFSkLX&NsqyO9?+D{oysTb3=YOp3&koLH)TESp0NE~5rTctObQi{jo%AYw zeEKh4gmKSIx$;4si_ffnR2bLnE{+4yxo-INie!j?@gv|`EvE~PFF#61cBjXNg>l=* zayX#Uczk|dsQ*vGvcV)lvax-RloqBvXY6%zB#;Mm1qvcTN<6uFO&9Up~5RS3tDJ3pkX>Y019jSdUac-pOe`)Lt0mSWNob|z#aPrk$P zNGY{1k6daYyYl0On!>mmob-FLX@8ZvAdI`TKY;^gv>@Ag!@fVR3FM}&_h|{f+vqwS zq)O1WDpGnXU6fLrm7y5-C}@xGN+~|iys)2@s8|LVBU@oZ{ywrzn3rpq&e7o8FErUL zFaxZv#>O0Z&m$}wELmfJ90~Oh#yz|A%q*(5>^Wgv$V=0S>wot~ZXEifq4CY8O3b(_ z1=stbdz4Zf@BJP}W5p8J;EJclx(ps;xnRC|+CpQWf85B9LnY^51N-lw!3)jKzAi8u zf)8k{X0eb}rQB8feOR4jX6W_rt-yo}zAe$@RyFv>sx>asq}xRe@1&cICsl5804r&N zy}!HX17V5l;*6CVE55gTNLXGE)3aCbMgAjUd!n&yE_Cl{k>koh-V!)sDG0Ak+q7O_ z4&cig8$0BG4B=Epxo_Y`jXifc+ZxrlP{|gJ736j&UG#lBQia2y?BkrDV>zJ^ShA*c!|S_fI;!+J zV0|>^o#U|#(TQPFhGr)CMZTq$zwo_}`5(HeRl*LRu9_f9ogYS~+Z60K?sZNHRD#@? zu{*v?&Ac|_O_wm^yjdvd7hev7y>KF{x9&%1^Z|bYjW_;ho8QV10c+k9^^gjyPFGudt zGc%`FPqK{0^=%~dBHJ4H;Wj>$TsGJOEu#ZZPP3w5_m#+1RLa$IJ!5&qAed@i&i@E& z+iSCTDWzP=lpaY+G4HVrL1A2uO}C4}D>_@T0N>56rpY}&y}=(M=LEY`Q>gi$3sB~2 z%uKQ49XY>Hnc@Btc`37UB%rK6kjs4VN$%!)QR?YUdQE7 z90{Dfqu*8&;-UfAO^uD+-C&``eve#WW@hro_gOB?aU;$sq}j!V^KW(%=KMpGWB=QE zdh9iUen5I1$;{mGb1l#2xEU9Izs|IofBG$8uT)i<4aV7t$Za^E$^lTZ#6RP#2UVHT z&kmm5EzIi%9DySd{C3#3Cj^GTQZ?qDdbbsr*#C;InWug$c0%Orf5#bfwbCD(y3Mku z;H@}gZ=#i+*JxfGVJiOkUtVv)Dt321qexgOjjq}Yt@?@__h(PQ0SiH+~}a%|pw##i|xg6jtK=p`__Og>{Z4n*nN_V=zA#(gd5=7gPiWS0!<#e_=JAHc_7~^^EE%>^=5+YwGK{E{pr=wkBVH@Tck`Mr73QlP zep4b``hwH0^Qw%J%j-p9X2x9|>o)EQm;P@2&}e3dh9byyDQH0~1zFNl`>zOdfUQP- z3tN`*Yj0s82VODOU^>(7y8l9ZDXj@-{FCLrBFwHDI*i?n0`(G5@1!9F3LE9IzGi|04K=t4vT}UN1_s+A>`dfpEY-&&Li92|4rn$;S!Bh&Ho6GUdd=8FbF7Z zNVcy?H9A2vGhso=%-)JS9uj8nlF!(S17U+Yygo@-7Fc(UZTk1;FK`&1|KSC5CM1Hz zPtIE_f_c4st}GafJYvSJLmN$gS9FNbAqKPhUY&CQzm`- zwm?51n#mIEak9EqZ9y=)GEsUx`IR9emjPx@Dovd)KmY6}7V8=D2~4l***&yb1Mx5Z zdPNH!9q2EmApgT_^zY$A5-eGG&+EeSdc~eK!(Ds^hiisI-FJlx4ih=2E1&g_ftN7f z&t67GhN@CP{>B9P`M^C*PYUD8=`<2yBa(_*eLDnJTVoSXeeiVtkPq%ORxEkU$|-tJf6Ko1i7PJO--=G;pcx6#yy#20CVYIB_ncL2+(<%)D>E0;Ln%S7KYbG4rS$f~sZ3unJ0^yDl@6-#`y62o zusWLDjczOF3v+|1>;IzkaJ}TA0=YOMO2@&LmUQsNiECv`42u6OTaR*VL`>twExL+&)gi-jq^nA+a3+9iHr}-p|O%3dxS6B z!u~S=X@DYlt?TAJXyukURtf_beR!dlB~Z4k00(3yfS%#0n!FJ7*06~dd> zG9VP>>e=_FkMP760>-uvu zno$WVji%1tVBWkSH^Iw`alhoeSYE48un^oe3NeeaCthVoWbOTp86wQ;diq9FMd$nFbd+w@E=)X43-pw*<-L|#$S=#NOIwB7=yKl!JIJ| z;{ZK9+MoJk30=8h7@6HL26M+?<6|%npTE*`qbE2ghM+G7TM>i#|HH!NXX!Wp2b$R- z3kriXX(+kGCt12M7*y9>EF%UxO2+hQiMa(sF$6P(Au|lI<&T-k5(b@}1>lqH!X20@ zKVkMAAmz!f#9%ow*v%M>iqZ7A{&R<%CYbP!EHMVd1$4`va+ltIM~3p_cO&_Z&}5Dn z43~oQOwbvFr3mxhq4c;~mZ#Fx7|b1mVG3|Zorr%i9OePZ=EPvW7;Hrh=8rJ%f2?$K z1pbEwW3coXEF({b_CJ~@G>lLTmKlR(#b6h7rurYMnSc1*$kw6y)%=g_N(`10gWZh5 zybQ?21?TQE+_WSwmKcL2#bEYm7AZeVm>dnQ@{@5_<-9V}A_jBDU@7^LeqKslF$7a% zFn0_#J~xx{vxJ`9FkF7JIWd?o23rw>`N6z-m40&!!C(xQ9)o54mzm{f36K64s`8VC zVzA5@EGq`PpcvA>(*TqmL-0xrmJ@^Byc1*jSwgNhlUGwD#9)arSW*mT4>L9Y%iZsj zV+eA$lDsm?Ra5d}&O0-6{+DuRsA`65$}6Rab{es!!hfu_RACrJQv~3X%pHS`w;1Ms zxdlBI{4bjmgZW~x6~a&mUfz>G-2cE6%mPu0K0@%xQf!XFg2JGb7c1nCa_PdLv$p_z zl4WSjn;Rb0U~U$Q!7_y*GrSKde@rk-7&4<@z5(;9C91_}azVA?SzhdlC`E$xB{h69 z!5m>oP`~O$b~B2Z{zr)u@);>fFt=br494Y`^OED1qIog9HwH|O!5qR+dWXus`5z0> zLKsTV`#thU=FG*c@)M@yg1Vq921|{>+%eercy0cdJEweJOR6n50V(Bqh1{u@m0F+zsXbizn43;Sj8LgWuGg-or zUbiq)8yt1Ljyg(6O&zu!E$1-nR@1%Bd;niosH2 zFn1ozoc{rqM-E|#PJ9^ammm6xpR5@_SOt6vD^=>mSHd#Ds%osz-aqaYb^)xq#(r3{ zbg3|-AfARbnb*l5zb==2k)KS^0jMiIaH&?3u+&^^(2r-;!$*|!^~ zx3HwbhI&ZZ%4ow+`G|m$OD>H1FRlqX+l^fyumuE*XzXy+<|-g!W>Rt~Ez^G7ZIR>N zOhq-hi|-zOQrLJfyT;~vtKJ+Wa0Os(4Stwe)+*sqFvfUNipz~(-!5`jz)%4ed;GIw zU4-4trSrK88)gVgM(Mn|(omPK8wI8UGTfE~UupW~Bf_{XTvLrzIR5l;VVPjXG&cLM zKeL5h0OOr@(RpIQ60g;_xv67m4IcUWu)0gl>P|p?+BEiFLTDHc4KjN!Hha+PDZ;p= za3vf_f(82y`b$_USOWW>z*VPT!kA<#iTCvPWM{wrVB|th!df;|WukzMB`mwPt`u)LRv$%=tZF7$$1slJyA61jjo#b7gt#0w!dC9n|trImLkY0ZzHWK)|Q_*PZ;mt>o&8ZZOxB_IT}VY@1M>! zlLflr@O3L~Gx~fFVSe00e*y9 z3Etb5oAtFqM5DnPJ$|x!MX)u7UybGKGyQ8(%AKfnHlu#S_QDL9tIj6ZsE{Mf(GHCF zf2B$;%^FJz{jywG5W}SIg!(S7RzMhMpgZXQ zrSvt%jlCq$jj@-HP73?_*P^gnGowM6r0z`mU0-1JimaY^u1AxrIkY&2t8nRiAx6~L zi`$Y=K$JfpPO$eusI9>*%Rk5#L8mL4J-6-ZL1AvVDqXJYm~Aw6rPJ3hntfX4>{G&m z{lg6J|Eb}(`trWWpD7p`fJujznXI2UA2wO`z-U%Fec1?MTw6hJ-~5x3J{9Ijjb159$7atnuW6%zDg7R`dxE0 zj>&R{S>4d9N?-AtC*bK#n27S!)dU-)46>9u-GEGGC31_o0z^ z?@MEKx=)5Crbqi9Z5V&xLvrdL*U}m+xLQKQajMl$s+r2Pxi(h>9Ud&VpeY@*``MR; zIj2Fn#>%`=_;q2f>E?3Z;o9~Z-+c7pDuF>%QfEzY#o6=!6P7a*!>Y!b#oq^eH%pQD z5Uv|&?5p30T@vP;jmTPK-*(Bee1c~VD&jkwDQzFf`08^J8?cSkCpfP1v(#z_W8G0zPDYN zdvP=?*ZA0FVZJ5N{$lqy?^$6%B&|2o{?UiL7$VH7$y#QpB@`qxd#~(=shBLZJeoaz zCH*sD87rdgqUYz=t=^QiGP=6I=~xd|Wa{L*oi+IWl_a>Q_2bC93Ar!09zt#SbJ9*> z45amDy0QC>Na-JoW)t?#42WECZFFXKZ#-2&`5$(*EL6N6T>1yi>mq_&k5Okc+U=0= z*>J3no&ha6u-39}V?(suv***ch)%~wvnj0k-}jBzV>mWT@7{zA;k(pK*=yNTggH>2 z?=?36^Y}`_?3<%YfARAIFk4fn6G`hKTlTY)SwM6C=iVAUSp1Un;RO-&JrT|9D}Jpj zEVvEc3GN%K`fX-z77xY8)$Ru_vROB6#Ax7Zrp38FqvPx|mm?$I=@k3ub~YIOCEU`(b+R*1|k!X?;R+;Lk?vTn6na=>1=GDRLIJ zq)C|YsA0T`?@}{Qxk?NW<~bJ4k_(QvA|WSyx-K{D(>LK;O`VBoKb?8k1&V(rFdI;h z*PkBV$Fx$Oa6Gz%`z!CTtlR!-^bp%3S_XzIb}vyH<^QLg@ecld{$bVJ5m2DZD3pS}wxqd0Q1rfZN zQ~$YWHZ-*ES7BN2M+cty7C(tHn{vj7(KgfXxvMCa$?WG9i_HH{{duyxK<7t#A2p00 zI!!_)n}Y6-qXUcrpA51L*az#;yJ6M%$KaMsx!@d8_I_R|67kJ%=I%WQsxW5fN zeOT$2(Q$t9j$2U4CQG~&9hg+Qaq+q^=U36}eAaBs(RjYblMgsiGFpA>YGe=PXX!oP zL|5C5)FP`1$^3|I+GwSB_}fkumi4Wn7AO{_U$!b@*@f>r!)Tz%z4P`!ICE2H27G!r zx-#c~onCp^8Z5HEx1gGIOzFA9YKp`kquJ4phu{ZIrA`C_ddT)!<($gGJQ%?1Yne&9 zbWW9C&HsW|qsQjgdYVgXu=H8KM2~96rgoSuN{wrVS}9vfzvjipR=*E|{fQHWwb?rx z^m>ox3{n`A6hzu15tYW#Br-;oEQrA%Qs`vR#*x8 zZbTO_^?~89i%xIGAJJ9gsQh|of!VMa-DqYM@Sqc!rN~C{^l8ElylvR8V$Whr&kk;2=v{K4ip+5IoeKG#y`<<{*Edi77&*8uet4-)XcQbm6iz$ z8CWL{2f~idwj<&&Gm{Yq|Eo`p_kHr_Qv$Ovh5bqs{4S+ePhp|_aR$APC>`ABtB%5g znB42v47&H-*hyGcd|cF}yEEQ0h1Uu+3S!+S%}RH_zS9zPBt)|>m!97xa_&OdQbUt# z@cF70!hG;tdS;pi>$DJ-f#r0(dg-6YY4nP~tfFyIL$hnig-XJ5ibdC2i}D2*2}{I9 z0bS=OGn$PP=17c-ngcj?*7tT3=)&Z_npTR@_inOWsSj5eqm_=nAaX%Ce4PzWTLlv{ z+c$)(mS&u9US-?0_^j1Mb1)mJrqBPLZ85+KAnmwxrDrCs!^87MsSDTUbasAm(+0wP z$cY|c%uoN=Ei8yO(hc#UyK67w_+uzHi>rvb(tf)Oz9)hqOb&GR=&?sD2+KjdrnBx- zQg;ZmBPaTG;*p*1?kdb>H#ah{=70Ci9=Tj#B4(TLCzf>&DgIzXi@}=MnZ@$o>t1QI zFy;iF)?#~_d|pi$H=lZ5V{bp)9uWY_&(de$u7mDqvfC8?Km;?;fO<%N;GxJBj2t+8 zeQ;Xy!8_JC;=sjT^foIqt(I-yE;^m?T&D91&;O<@DR-|x53Zr=p6#y&S5t*?FDSiz zrv)!B6vpkBbT;YIx)Q>&(GGfab^Yr`2xHLnY=1jCeQ_3ar{ZG1npo2gUtVs_PrW6b9 z6&A#mXHwZzg*wMY-9LD9+*Ygf*NN4#|Di%?zpd&$Yq1kVuek*)goC~a6mNke7WvXVeWx2QucoleC4xDt7;Ml#Tl<@?8v&` zteVLJ!{BAf6+FARkSNW$KQ8Ka-2Ew=9l{a^M-S;O%l#H$`l|GfA<;p^LJ{Z}79I$fZD zM6^M5dhcKpVcfr^j8=Mootl=<&rXXTN7~MsRZ!%zN1EGrN_wsSWGkWk9Dt0`aZ$I< zx^LQVIU(*~f}C0z?OOZRSyAd98(sR+o$?GHx_wk)#N3L>0d zO%QT53-uT;O5MKbF8XOsH_Pk!7e!}u=7D`ynD6EO9^XNWbc+wZU1oX2;Nmz=axHfF zuY%UpDYzsq>dMySkvHZ@W`awxYldcsFCW>63p!>`3oVNZSiQzuQ(iwQFlTvm=vBY# zQp?!vE2HE5D;3sQC3LQ`3`$)y7+I|J6w&Ef9o@X$TJByiEchs@R1c90I$yCO)~q$r z{l51C-vANhb}0yGt(s|Dyyq2R4u5p7aQFMenpe2jMZ4fl-gayKBItWOy4vb*Uun%` zg6pFbESPlHgCdu;A)0+OvqOq7V^g#}eckMLD`>F?;D7ZIuiLy8-9*s2IXb|&|7M|f z!rWW1x-Aa)Sm22lHi-|4imNjEM7}+>er`u zV0x9FT=YhUD7EKe_wAo#IksdlJ)r5mZ}-kAqaglE0V}JqL(958 zBFqiO?k8>EVT_%5Qwfd-(`}~bUk`K;=Fym%|FwT3$BJg>XpqY1e#qFzRO$oc%v2J5 zdxhgkVJmXUU4FClK4E^aa!StWqJ*T?{@uE8G;m^<9F%`bpe)Yz)jFRcsA zH*?8-_3Ob9PF1D1Z;O^&Q}TDKS2)3>`xapT>#+Eb=S9#3SOo`c3g-0H5~Hj*a1K~4 zjRm{E_PWTWgH_YmXAd-bS6CL9UckYH{~asrrZ*R?|7*Ti1=_bGDAkm%*|+a6VJ@(? z8f&+)fz=d#FkZvukj_GEYo1{l@CC4YH97D4Gq3l>v8py>N2EJZFtc{ouZ7vc^fvr+ z+gVnWlH*o7V)>LSQntYcVQ#QQ960eZ6a7Z(lK+H5FGOBDF#nT2O4#w@uU6^(5MDq-FGTJRDwsr>T2x9zYXUKy8rE=}t%TEeIsV27~Lo;qLhsOMSFTc+8Rh9Yx#p^Mr<7d86 zLzo||G!7)ABR1}%VXoO+o1lbm3HHDK z;kzQ3ygRzuz8ziI8h%}1G!jYB_R#N{BIg4es+gJ4?%nx9hM5`epw(P4r&pEY)eZyS z7MS#uxkZ{Nt&;k*6=1l)#67e0#SVA3t{M2i7^O(f{4?)JRneIZrq|lv=_z4DMEg7U zn7h}A;BTjD&K5yG7$Z$#r{4_j?J;K_xvM8GxA4(*+-+c^UceuLYRZ zMcMy;o5AOnO~`$~=yfE)mOUz45pouoxKf7SQT(5z^6fo(AWN&xhW>u*hOonE%xRkRjl*)_`tUSK6X2{N6s6JX) z5R48Y%)G|xaYvR23<0VVh6TG7=*k*XO0&Sk%~EOKL7#ppEC;MC4kW=gbKV~$EFs;D zbcMb4{9~PjC8c|#OIYy1%B=)CASi(X6YS{x$4bzdi~W3c;=dy20@Dkz{GT142y^F> zYvr9hV5dM&F8IuXzyx7FFd0agnOEkQ8YpZtn7D4Td4K%6Mp!yn5gbVAznwYYd0|Jv z)cbb=2iC~23(NwfGGRmC+HqZ2HkjVNzrED*HDSiyNQ6xJzE6}(6P5&~XJ+kLxAH%# zeUkz8Hmp6N{^qbJ`gq@j9y3Nu5A3Xi!dKpdHR2W zx62l4D=-LHUlV-##%inoW`QMZ?0CHg4~pDPF#2QB+5eZ*FAKBpGq-3F)@J(5znH!% zg$uBjF8Ijb&xzmyFa{(HOjxB)zt2$9l=Fj`#^zG2*Md=Wf=XvF7wh*?+s(o~T{-$vISd zA9q-1Iw7`yQZD#!PSau{Xa|$b@W&^d(~k*D$;JNt`_>_09x3a$sc#;$3^5x_jFjxnnYFArK;pqjHzfPgw!IxblukRC zF89}hkG6!F*Kh%fVNh`Qk54@v7K?xmb&^@SOSB6CA#^wi@^{}Sc| z<3$3I^WIlz|2ToEfO^~id?G1Z*a|Q^4n**uc~h4NO9x|=Bdqm;i%ww~xmd|{1#b%r z9m4!iyccu2YD5`pkja8z27cqjk@hk6?kCyY1})f^5t)vWt-STum%{vDVl!lSy?oKC zwe(zUb3@GD01xx<=bsu3)umVcXp)zxE^VP3~rGQmd%*<$` za&L7KHXck2m^v?}mo3HgRc`!%()NU}b@=jIVIeRX)yOthACo2Q3RrC%NX&`m`@b2+IO}*on3nJ$StFE!#k2L;H*wILOUX{~wRmXoLFdI;+`~MVoCU8|$?H?a-LnTAGm(A_E zTkqC?{2cGheCIjmJj>Z;hI^?pY37DQn3aRExrq&U&2a=Xj}L6k zm)N}5KJUrQS71BuwAiFF#D6FtPcTUER)@rV7K{PowoUA-jgRIqO9kV}2eDE z0;6;6iinLD_b|%^BeyDy+TXqN>$H(8A5d@Zox5j#$Aa|J%X*V8$w|;+#%YJG8B)O$ zQ}Z+>{K0s-PORbVCv!PZOSAwNJu&SZ!+Bs$all%n{^~M}SuU8Xj)mQPN9)-Nz3;SJ`F>$#%ewr`+W zCIGCZj$Lf>zUGRULahI|Gob>n?(F{)J|r4svLHxpgfkuY!5{0G6@Zy^Z2mK^Q*W)v z6@%&HVuvB?9cE=f zT#seB7%=KOSuTCb35sQdor2L~~9pCATSpz8|VTC`mUd zsK6H2mTPN(Ot6tUxzE0s_!P?(gXx3&+(m=s2t%iT+HQ+brmpvLw8cXJSU)9GwP*XZ z|Hs)ZmkAcEFtsvA6Q`4*l!_h(qnfeytA9Lkidi|BH?6-IMtA>5Btwsn@Y119u;RIw zCo_u%)4SrU*w$Y#%LL=Do0KT)F?|`cY=PxW@4Jx7S8AFkzzJ{r&SSv>fo*Y~r*%R_ z0`qIx#KdyNU^HbS1*uZ+dw14aQ>B$D&;JPSXf`E_1x>r~TBS~~PC~R+nHVtYbIJE4 z_v_ZeTP#-q7NleG?au9FChc}mete4MT#FkW08`h05r9*5g6_|UX}&K4WB*ctKR0@c zIzh#1E_)oLQ98Mwy)He=ED?-5FOqA2aj`b}$O7|LI;0W=f^*B zrqbT3Y;@MEiScPV8Q<1GT5%W2nvxeoO!8k4~1oK}SOchs5nhD5#0_Xn0M5#(~BieF;pvd=*pjsy1n&41P#YGoEF29W09tl{-W$2C`^ zf;s8fwd8R-tb)=!Fz)lIqVIhDoF-&pY9E0!6Jc$O@0d#NY!e^V9wZQB@S(|eKB3BAa~|Kuk|cfZUN-k4iz|JU3g!H z(*CNJk!ycamzfI~FIGry$s=F1V&)Cj1P5H1PN6+cFbfcvC3*exa~Vbh>PpMkl)2CF_(EotU~V|z0-s-!tF?QV1GW*CX95iJNVdTH;c%re3Bap894 zNGY!v3<|32KdPzp)fno`6j%<(LoBh0-G<#^ z=JIjX%B*^;>i}ln0&~qxtO5oG;Khm(pW4rgTpmeBeyPp$hd6Ah5m_F0` zY3-h4W&+du*L(N3>L7y)LczGtr+y=PX795kr>y@{b(s=O+`9gEhrIQR@6e6fj{r2w#}4qk{1?#=K#7!RW)_}Q+XwT`9? zjN*eHO3-ln{2b3Tmb)UbwwGJ%W>#L6S)_WC9{rBt&8kq^TH0YGvr2(gtnt>m*?R)J zczS;<%SlJ7Rt=%^h*osHjRkEB(U|SmZe1lnAf%!gnP^*kLn9}~)hi@UD8VHMOk)F2bs;OJAEnFR}M z#A5z(Sk9t4+O<1=cI@(hDq?YGqjesqHtb zlj#D(3_t=DP+yij1?Z=U*!^UM@jpE>nYz|{5M5&=4_q3=6VEt4g% zmxEkRFpz;I^cmvx2Mgu{DvJ(0c%TtX|83_5 zEQr-_3$O`?-df3WMPR(JcmyX$@4g=co%N);lBiQ$>!dbRMvl0(}*DZRn%z z6o~)Iz<6Onf|(!P)kd{Sf#sIZn$L1hM{V;2k{kE#j8B+(fbn=>AvkbKf345=)j?vH z3;Qi+!B8-AHfu33?_345XfU!QvklIj)-p>4Q_OAEe&SA_b5>@NG6D4(M$J&Zdq|?e zB^!)aM^u@wE1S`!3d;lInGmszH@oa&RshE93St9}kI|;xMODg!{l^tQ`YQ_-SAlrJ z$oqa*W~D-=9a9F6U{((1fdkgwr@=c~6LtEus)F%xOSGAghed#wK417gXX-65U)SPJ z%>2Q4WlS3Od}31(vj9P^IOdgTW)WZwaljR|9NY5KAcir392k`8n-O2X%50ucV9a}y zw2?9sOdl6X3AR7Y$OfYuhg{%_MWIQY=Y~(Q{-Y%=bwX6&x6$99V7LW>dNy;}cV5i4 zgVoc?yD&FbU(b88T$#WIH$J(7StXd> zGESolHfifWr{h)4-Qv*Fc`RrG(?|EW3k~O)`GV=KcIYkJv%vr`nl*Fezq{@AeJmFZ zrYu%y{YToLIpDsTVJe_r!_Cdh&CD{v^sboe62FF7Hke++!E26beMugezM`XhMIIqJ zW&T$Hs1J;#&uq{#JuGDUTiqKkbAcs7rkPFuSkJ5sOy5B*|6^b>vvQl9MbUn8`{Lyc zrO&FGd%=B63^NxneWstxAFnMeJiru_S}i&}YJ%2Z_zH5{hkT|Ezcl~y7hq_w3q!cT z05E+77a7`V)2j$U?%a_16)YDGrgy~{PxmrriC|h6OzrRXuS2y==jkC>mu}s(31pT~ z;DMM$T4$0iu=B6WT4i#<^Z}eOX8-eC8B4xU;C5sCjtqB#>9v3EJ==GD9u^90b#<33 z%N2v^19*GI6klegV7iXYBK4@8y_jJopnek3(BqpYn7N#&I=yPU-HT>tO6TPbrjLt; zMYAU{^98Ge10G{CJCDj_=6?d~KRt{e@zivN0T9%8v&Yx3j9?Za6u76dtejaim;(+1 zd|i~_PVsA~&4gmW^p@#padXu&O$F4q?f5tL9O6tf!AM>1Od5nF7BkBQ(?|Z#?>wei zrT|Q5ZmD9GWgE*K22}}f{%w=GDb2m7$t%&8y!L;bcN#|a! zQOxdv>4)uCrD2w>44sOrW?FF}w33+%m|lDTccwLC<_$)X$4b=cy_38q(MZ`JthU0` z`NhyDE4DBT0P~>s&w|J2-q$JOXKPfzeN>1(+fNXtr|lqv4mBWq)OxCH2S2FDGQY z$}AU*weN$I-@G2JO?K8=nX>*PSlVc^R$v|=YeDSPlc(-*ruhO(?%y|sS%FaCW$%z| zX4?hUq3-H0z|{5MP60mlbw16e70VQXxnQ3j9#Lg(M=c}QDy&#w#@E~Y!mLzah9;xW zFe}#>zW;?XZP=~P0EW`3ss)~JG9-kVi@@g09-ha{Brwap{p3-lqP_y_kp1#bg^~XQ z1lZ6q_GK1~5ZDKSTeQhXjKJEQn_IwgsRH|U!*AM1nWsQt@ zlfJI%!j3ohYf~?mDh&279(G&P!c+xH(zK^{YonU4z~skY7{~<%fCZq_ryvc$$(dQE z@0ewlI7q2D2r&85SIKLe62+EptoL+rvw?D3Im!JYx`LoLSUf(f6I=#H?XEg@4@~Lv zt0~asw1Y%HT+DLNU)`v{k~7wJkIJ;dvHs3SsU22khn3r5m1nU2gVj(Qmm<<$KU7L* zt=%kskdC^osfi1;?%4!Zlbko0I&k?0^o87@@2|at4~Z1?)3JUyZm`Qjm#8oRkVX}n zC=g7#l|Gc&M4cc_*ZYP{Y|AVWOzkbzLFVVBLw%T~f|+o@laFV&mS}R>V9NWK3_o(c zppEw%2GE%fR$z zd-k;ByUe8Ts%jW}*R_P13z*(&pDfCbVb%pq2~v9hlT11+zQach{Q-S(z?SKH?%PCW zi9&%BR!pOYqqu1vXKKwe^YUY9%$9)ZmH4*e$bMqV`fn|u-lUT}E-Yrj0-?Z51I^l! zx=3JOfAE;5M6poduP+=q$9b07@4%TwObRyobU z^yYRQs(jm?Vi|vdjailbv6?61KMGK9nzJ*vTOqz1Ob{IKOy%2LnJh4B%vL` zwgpV@!W)Oa{)E{XFs;9!_V@Pfy;=`-9#HR!4ilRXW5G&+Wt`4h$jtfss(r$?woRXA z<_D$~h?5Pkf4qU2r9Ys)z_TBHm%uPW$TTVKvNjsd1Jk$dgX2bO!*-UyMxNfIt*CRs zbXK!SOFLzJ!v*dV1aG`m|0c6zV0t%AdCp6#=y`#ydgQscSni&X=kRA|Ypufh2TN7c zynNA5>$?pxMS$t8z2DMrn5IR%P~gbu zLp)8AG6mNE*KMac)3ri@<6qCx^4tQZ_kCj7_|7c19n7L{G9M=FYrwEr$kcz@GJj^J zV0taKro61po^J|rk2dJ4O+0J=Xd9ZT)B8Or!*ZN6bpg~@ruNs1<}m95rZ@LD@BTKI zS$~0r7?U-tg@fs1rt_1HyRlrnB8T?J?f1DJ`*$(S5HbxY$W|r_G*T`B(?zi499{M@ z%jJXVEz>P1TI&;b33(=DZ}8F9f5!wk_>|`doaq@by%xj2OmD>OrXXkOF;|<+);?cV z&RnrWvuHCgs;IL5BVR0Cv}7n}>I-PX0b6EK=#Os9BEa;ns8cw@k6DZ$x50Ij7KoXG z+}5wB(+o~s|78Q}P5Mnx_%_aTJD5H$!Y9vO#H<)hZ|=~QC3LCM49^P%PVas{iP=p} z4)qh5-U=_aoU-Wl>;y%QQQ`K$|BdgV_{>%yX^Z9?60W0rh_RA*$6BX1PLvB@e&b zo!J&JZya!o8QI}UT0$rlJqgAO60*$5rEPy;R%!v%*Yx;1=K>g33I*=*efJ?|&KLDs z;2V_Q%XxxXGcdgp_jVM_V&*T%S?;{)FqmPeAb5J?(I{r|V0t%Q`sum4%;pK~wMYN4 zo!K&>z!J|lv=+1WBG!Kos+jvcnBJnN zx-a{Z**!45619g~R>w1RDXVJIlFeaSS85X2lGLb`EawZR_x;JQm%qg<8cbi&gTHq9 zjadd*mGxgs~2YXY;wLV@3OU7o}2ypU(k#v`YdHbc$n z9-ysR;E&FJ9iiPUbiP#8Y_pWh{75 zU?ZLPe#PtxnBKqb?~HtknbYN}ti$~J<;>cGDemR<-{O?W2!{OuO*r6I(Yhpk5VMIw zrrG^oEM+!NU>|JD*~)As7;E1jC+B|rtg^09)_-|`JV_+zlQm7NX+9V?8Dg;o*TOl| zU4q>2NU zzCUTRBm)?0NbLOAw#lpsOkbJ0-Gct0Yn1mt{Q>m_26QytQz70B)fGt7m0sx$mNT0u zu+Ps%En$|bE0E;cw^;TXvn)NM_UHBGKeP!(9w2K$f(1oMmsoHMmyvd~OI~<|42kuQbv6 z3lkW}49RsoH&$bQRhdQlw0Gey&NNiWbmN9M_A`sFDu{Q&>%Yk?Szw8Uo}SDy1(tB9 zlQtJvc?Ih~eN8>aZhe{s^M%UnoBzpOW;+G8ebhfsGdm2%!A9E8?opui`K3Z-&R9-< zqzynf1-RP3lQzL{`lYHXeB!%kH>f-WHn3#JlUx~ZFnwjrV^Xy-CIHOB!A3Q`a_2)W zpuz$5mWd3g_XB4d1J(=&6o@3(u;S8mW(x(@YVL%c%yPjvNJ*|k(-jtN5|Izcoe;tN z!wJh+umDV7nd5K2-Un!+s0%9QmVnY*BInl@N$5Hg)y{*E6DZU^IvV*He%7vChL zbV7#(_L|eMRm{!^?4<(@HiD_^zj9rHlxhEs!{1~<>6*=?#O}6vv?ntcFnwiSzGv9P ztgXOq8E@@l<`1T}3atMq)8GxRGZ;n)1*Xk&Qie)u8ZiQU_Om`qSuRyzW6$}mW0ncV zE~H^F`@>yJ6h{63G6Alf{-oAJ<$|$>B>2IeTH1VW3mCU;Vn6ua)Vl720^6OLe^@CH z|D6HjAhnR-*Y7WSk>M4gz~_3JyD*c=ZGt4%e(mQgn7Ih-POQJCy$MXO{ZYqGe6PVG zbphmdPnmig^6kKx`hn>+{9xC++nI%f=`FJ>%=Ya@F<`7A<(Y3-M%gGqnp#B;_V#{ruV?uYLxfm2SdMMW~ivjEDiH4of&okWIxr%$=0is_YD-Y z`Gc{!i9PvP;%Jr&2lK`O^`yl9@tdr*`wTF41u^|2nI#oi|LF^CTl8WmXPPY(xc{4C zcV-&|W?B5Jwldx+u*o5PwDrL;Ft!X;=BH;Z*EtfU^Mc^|43A(guo8^>ZW7#lb$J#u z!}Y4#XAd6Vf?0nsasgY$^~}X9%!0wR^&e$gXg+Rc7!9a5+e6RS$!C_RE0C-=Cw^=g zvurTdkXZMX(OO0GsX&~g$`Cs?;Pa8x|0w?5r7Mu&{HDLHWOhtoy#wBRo7ovKwhYNV zJ#a7`DtT6d=_~Wi=U#NEFqaz&Q`dhan7yvIc4NRB(1deb(~E(huEn7u7z)OgA-Nsy zr3K8Q!St1R=+u#)nPsR2YI)A=>$_K5|1AU5n`X$(Pg=5Io*+2MQuZ{nodSF5!amLS z#X_FXb*0}tRFyc-jMjgoMI*P%&oZnOGWCD4AeouV&8iih)c&0X%-VwKEi>rb)CtV| z1orBU<;RFA>%U+D-q|xRodu%=_TJQQy_m&=vDK*k4d49s7-sVXR(nKjD`v}V%o0F? zC*K<1lwqE(Kw_g4KaOQq0LB4D?Cy;~Euanya+q9dbITHet$xw%mYOHxzf6Fhow}L1 zz)CQ^hE0z9H(=)ctF7HrWl}O``!n+c<3J=ff6U6Cm_>kTN}znadNuwe!$d%Rfv;`5 zn!#)#82gtp)h|?+334UZZ9in5C$MJmd$g8j*)G7Ps}E3}l%{rAU=2oWJjm<}n7%T< zo^c9ic12+A9=W)b*}bX^-~V=WnKtcqzE#z1A1;`f$AaEqn%Qu2Snn%Zj~D=^ugtjt zk=iUN0*t$0vf4Mvg<77`x3K=B=0_b3!I=IN&*DSTK3>T5Qo$I_G8tfcHx-UMqAf_W z1iAY=ZijN7xq_U(#pS-1=@tRL@^Wo0f{TPq_3w2Q3vzAtE@;OEo(I!gZIowJM`riH ztl$5sYMr~t|RIiX}bkm=e@Ph4fe^E%cDCx1G2qJ-H^ zu(mj$0*S@HWQk+uamQv+VjF9xl```N^Tk1cFV=qqcey9_WEc&|H6_-0X!sds$wH>r z9U5tKfrSE#nBCc%<(3I7_xLUKkqkBdwSamp-YdSZJv1&71pE0auLLS4Ee2!%Qbo6q zDeA@rmI-W6&lM+_Nq21nmxTlu?YpA&&)$Hn{lj20X55!qu)n}U(u^ILMSyW-NN(In z<8@|w}UZaFmRW@Q#>o&cv`cdTT=EHI9468xZTSIxg01h#74WUUJ>0@GJ!WJlXi zZ?o|<#q!V?g4`Sx>TUEKu$6wM$LlYSH36yv5 zy3G?<&f5aWH6>U!zIYkK0D)z6d2uGQXo1OwkGC^R1!D~<&$m2FrZHOr#tPD><>@z4 zwCG+b2o6dKn8;DY2!7{w-PV7#J%^?A7lJDddy@KK~ome_R`a z(dF&mXLu8WJT%iFacNRmAT#NnEmL9#k31I5%ma*LhS;u8Z*F1c2gcq^olef5Rf|3-(_OkuiRFHAX)d#aU{N@rJc+$?*PtftheX1=8>tl$8GqvkYCH#MVxDQ47R{ zU~q-H{xbpoQMd>vEzUWKTv08CL3ZW>@c zPvt9uMS!gk5dkJCpqBm@aUVQ`(=-Y`%IZXzy=_ z1=wMsc9rllEnH1k3HPN;^zy@_@Bf z{YgWo2ce=rF&8_`!wxgqVcrTu`S|<42cp~8j-bCC7GQ^kR>w$x(lDYrXl2oMSd1N( zXosa*8Pm~~Uvf4S8|#WHzzSiT)rzzmfU2cVtI zd@TV*$}0`l>X0jnH25GpY=;%wVI?&&@_%Vf5Uk7&E4RZc?J&vJ)(kD8_D(t|G8a3{ z!wxgm%q)_3%~0~S!~E^A06Q$S3RC+Z#rsM#tOAwO8jH5WV(hR)J1o^=2hOv@GVQP| zJ1kpZn*OAHt^iqoVtIC0z8zLzhwXHAv}nVx7;Hs$1P|L`#dcW91I(&FX;}IIRP`rT zW`~vAVU>26WI!{d@~I0JwRa*|19P#%JnS%2HB8Z;H1w_p;@XKQ%)<^d>6z00 zPzTzSW~hhiX^r{XVgAf8+Yy)P0n89jp+cUPP&+Wf4vV(KV(hTQs?4Up(hM0w3-MOV zJZ8{hq@YEn9hSumd5U*avW>d+-v}YoToy!uBFnSG^6jt!W~hvEzlilG?RPRnfy0H$ z6xm^i?XY5IC{Vm#R05{0|H6d=OIZ+=5m}iXR&Iw?KFC!4Nqfo7)(pi0o$N3dJIsR_ zwAbJDqVh}%L-{lS4HLBYX2EKhuN~%ZhXqu}NPntLXm!xaBJ8keJ1oWyOSCd&{U>Ul zYDaLM9hS)q<`(aGW-)_BhuW-d{rkV_p<%f$hJvw%V$4L@VUu-C=t(V7BA`0cH9gP_Q|+*Mx=eKe zrNqo)9TO|MOvgql&);?0uhtbPcEPXfn4pEUQJ1M$V1Z6fWIHW(V396UvB0BXiVqQN zVy0)n=p8KzM3LRn?KZClLL$qrKS+pv7Ij?H%g)n~Y-2X4)}dD$!@-m>p%hYhZlL4VS4 zGN3a)$rWOz)4@0{L^jV3dlrmaj3}24ro@b;ngTZg)};L*FnU&8T}97;an~&tc%=q8 zW&P*a)E3>MpaHC=0z27Z0bn&*ZG^2n%LC?)0jx=jR510;h6mlW#7==P*O({#zut~u zfgQF7jN83vwGyzJDtbjPr?fw7v!Ot&+pK0mFR+^8qBj^lVy`YPqU_{pNwfnO+9@y> ztfsj5haGkhOlLKl{-pgmJAyaCYBH%)b8E1nFA*O+xPh^pc$ckHbHsm5Z~z235JkZe zU~F!YC4-r)t`ONWFdjz~#`=@?uLIUpnQeC1Au&_rMH}T=0#=g}WnjwtUlcTAO>Y5m zk0>(77J?Q^acY4EFdnu=xn^KOo~r&-Q*S_yZc#88j7LL}O$6hB64@Lu4pNaV18YL_ zpX#)K-HzaPMX-9gLv~mR*aNO0{Ym?>>Y$ZXf^k;WyT6-@!F$=pk-XX^Uz6~HRZ0vXaqme~R(1dYaag4NVwj@gkb0aKN*Jg9vc zU`>^|Yp1|QrkX3$8m!tp$^U+UHE9@7lOW_G!D@<&7&|OQm*)e||1tqz(cCJnEERclgM<~~?WLE5O5o~iwh7Emn!Ytq86il8E*$pwSe zprI6DM=r(!Sd$iMcGwa-Y&BR-R@(r^lTzwSH2tZm{lkvnF0h(3JPcNo5~uC3E3L5p zt0|zQ)-`L<$PQ~}hjjw0>Rzk2- z%uz7K6`1YxfIM%c#3^Rz*2TByeyD~i`jg;QKyEUk;C(PQo5&1pYG$3lYRa>p$}EcZ zVx~jw2u=WFSBP>ccGzOD2bF;SqG zlM+D;@JWpBVsk|Y3e0jCkml=|xZ52ez+yYBqy`3KDO)uD4=_mqgRIB&K`aI-(?Mf4 z{p(5fq=x_`$wB%98|~%Kbd>5V=Nz?j9*E?I%DGzFxl&X{y{@))F10zItD~JOg`9d_ zUF$hqln5I+Q5(U=1=Hs!DMsG+gwb_HgqNkZ^b9JO<}lY`p~D#mv*QnrQ)=z6HN19l z?QwMu*9of|QFlz;@pUKJ`4?BWwC<#Or|U&KJ>_)Y>52N5`jz#g8<-o!*!ic{3IEHV zK4GlCBEq9#ZRsf~OG&O)o4X#d4!D@Bj-5dv(X0COmMasV?rH;yHZE3#Ta+1Mw zMMMM3-LaDN=r~DQh4c&3p+5N0QKSIen7fPj;cpI=q^4*i!x16thvBQS5m5B^tX-q< zJ)H>G2%I~Pn}6Qn2&%65Qw^jZ7=63~C8;?Y;RQN}{nluEYmnz^?BB&_Cj>y=K(w=K zzA!ZodIVsli{`cw`{$8bBV1#UE}@_e@Z)RPUxRDkL^oB6{YX^oC@RtbU&IgwxflCE z7UyyitrPp>_rURa6P3Dx{Q+PDAH^R_prZ30k)&6!|0@)6=#Mx%iW5(chXrt91+@GG zwI4hRe>{TPH${K>74}Ob@h9`6C21%M?}`1_knz|N_?TlZIqwGCe6p z3Xw9TM0FK|buEf{sfJWDsued8t_+!uD)QtQ)xYF(>P)CYWFc|^SBNyD)}#;G{g9&= zq4=QSoStHt%6KWex$(qtK$Tp_7AmR3LY{S z_w`RsQkx(5^GY*>_SBb?#^is!Pstr*8ERe}L+oM-R&p_S<#U4Je|>*W?Uj5^W+S&y z^WsRRxS(jJIH8E<{+;{wD*ZaNqd=r!Cim!Lfm#c-5^62?ET|2&X^v=)WHE|)q$77w z1*lJ;{(ys(3m{jLxk(9b+8@D!)TAkZDR?<>DQGR!U6Q#eddct9$Lss`I}oPGrT(3| z(?=$&eLQK;{XA(yeLO`q4cQ#f)KybZQ&&x{qP|}r;1~xi4|KCMu!vnPH!F^O?ov7O z6*I%+}q&VQnmlSZ^w<~=* z0*?kOeUHjrJay~TA81{@1%X7tM57$_a(_1L>Rt114!Kogz(PUrBz(&L|96Jm)QMGx z-2FIij<~6Q$gMKsTB-!ZUmbG)?co-#VOOXwK>HVmTb|4PH-}kniu#zKCiyA(-`)`W zzm5k>b)CY=|1ci()2}~?0n5KV?fUP;0Q_IwlijwN&RZbLc<{qxjbgm@|ni$e|JShGi4ejX{M}iqBLW!W@Tild1>@OU;V%6s^Nce zNyL5ic$i)6uW7bKQ?Wm5vfO|C>9o#*%s6=d)p^}%RIsLb-JebCzQvS|rgavc*U@^9 z*6#nMdEH-~)>)Lh9{>G$of^P@KCQF*|Gz%3Lzn)Srgii?bN|KLDG&4=9x?X&4$FV{ zcFMopci?;8FlYa--A?%neMZ&0De(W_GS91Nh__%#Ot(_>V?1{rR59xJ=?2vQYDsRP z6$y=E)Kk$wB&^T>bljH_V04p0zdWZ=Q0eRON%sbMsZM>3{{A4=j230V_@Axe|Mj`S zWK^04x?lRj|I|)tw40J^xqlifDJwEr@>7{@=WP{vY2xx3J%6z@TOKzjpgv zy%DiA?%%$9Zc*-3aKzIjgzjk2NXYK6d;1(~eVV@U{QN0b7#gEE1!cVf+mZXoo@CfZ;NlIvjX9;a^Q_~I4{o6~@Q*|WifKifMal8@fQFloS zX^HOz$0yx?l=e2kS1CE*-cAeL)iz0zXI)8}g7g_Oex?ELezcXO#>l)eGA?b5`*sZ_ z>2nnHKCYSUB1z*>SSRE$6zsYap8Z1ZH3PmQ&J)VDLcaAeb;I?)VZT1Er5|B%$NmdW zX#ZaU(hp^Sj)MG=u^Td+fLiu-hTk5Nqz{pHw#I}K68&S@24~rz-K#lG~v->y^4)}9D zeDk>@{^F$;0tf}?;`1)jZDbS*Gk1e2FQ9;?D0DvdyLLdFw3DPRF!f=4(l*cmHyM$~ z6JV!cz29J|521Ak@{WfkWqiJfYX(_huEn@;4un@ja2qPJ7+P#VMOq^>876%LR>?vp zA0x9oSmkG=|J3j7cFX^h-xas_^oIZcfBepFhyV3{C!dq=|L1;Zw_E<7{LXH-{LSrM z@%u7wt+`wN=Jw8hXSc)u)ZYJgzq8xvcQ*gd_RfB1w_E7 z-46f%t?ixt&ThB-Nk30bg+{h_JF7!9bxbtS(11mQ6^2l0OeZ|y#)$YDKB+gQL5N0D z8gytBr9p>AQW|sy;d&ZJ26R-1WXmXIOhYVgNnvjqJ)lEuh z@<9_5YUVsSq49r)C;ZPd6q=ooIcbJM=5*_#^-{`gg(oCr8L}8zi6<-eCMf#J2~R}G znly2_OYQ%#N%bYqRwy8;QzBpUjD==3$1yLUnGFqC%A^I_(4>SXBs>`*|I@^SHky3U zf4bC;|8XHvxtJ$=4Y= zU$aly-~ZDID1Fa*braCPYe2HFfB)49=pWHl7c8_|;zzD@W04=_(=v{hVzdmS=fkwV zq}8_delza>4pAQt>mLmN)#rfp7?$oG^6NHq(}5qw@-t$3Bs*w4n%Z#nwHtaDfS&;t zbcO%5XR*E1dja%P2`xzJkt{u$r)RnR4hP+mp@+!yz?mN+SNF`A9>>!&V|wL=9>?>` zEqrg8o*C1v+c_4PN`I4?UO=Fm5cX~yX9cLQW6^CEzIRNoVbKDUZnw~SQoPkdD{6iX zi{BZb#jb^x*YwhW^?j@dZXg~)VYEV~`-JoyUw@UdV-E7B#ztqkc1zL| zTtm0QIlYWa9pv)v#@e#U)mTR!vDJ{Ml3{&}(GK$M-G;$(Orb%RU0jV17cT2-jILd{ z;UhzsL*Y*YjJqA>%XS1(|UDg|h6$WoMcsVG$b<-0v zrq4{3KYzzymYcn6NRqunP#e^?f&5(v3Vt@kI8t7_*WfI7XbSO|j}5)#(nE#@vTupO zO+8%xqhX9(f2gsgT>h=WOD>KzZjyIgG*}OpB^XD@E@ur+t1m&yvy7z%Ofrt;^9|+F zDaM5)-c;`B1{+<9GftGvmkgujhr*0w=(76q>+#0!vdc_k6ZuNA(M`_#&d^VO_oTt3 ziZ!2!YU8?k^7DrcBh@{pudw&skA}MPi$@J3-aHg_@;z**BbOdDILR)< zpkwJ(=-B&HLn`ImS8jRC@Q3_dq%lIiG7&j1i$ZPdPBe~}uTCO?%+~-?^yBu>JW+=LjoR`iqdXSO)<)0#q!{pLY#=7!%M-3jb%Xfyh@(@pB z3ppm**jvtyKpCZ@@t;zw*2iH8#hBTj86woGz24mj8;mu&l589K-T@d=sp-HIxFq13 zp_N>8)-X^`ondT7dwt}($xtiltf95)rl`*i7e*DqGR+fw$OW}KvEuLQ*l-$Q+p zDBLp5c+!EC8!vYYtXo(9EyLJQ-m}k;BHwX0TJyg!%IK-88CC|@O#TX<3LOJGef_B}VZ1qV5|1V?VEk(bWUtoL1@vBd8 zCNCa>d(w_WXVYiM9p3ksOB0MuX>Wl1f*YC(_9m*e9T;PDlJh1YKgAB27Z7Vo#QGMY zwmmBhzOw0{!6;9xG-S)qoHn?sH4Ab#c9M&{5PyH%GE9?8%b}I!y}EAlt{KJ<*>@B& zoj=%kN$z$PUVL*u4D`q2#zE8!YOhW=c9v83Av9(Vp@^sEQ83HcU%fUj34SR(4C`G! zVhER0XBu;5pHyR@JnS-J74;q{uku0$#kbKp?w(`pAjhN{dlKj)Kaparpj_IhnQl!r z_K;2c(U50V7+#cT{$%J$ptU@!+~6a}%rXYc1vd=A@~m{@qm-XPK78HKNj5!h9IT4n zzm6WT;8%l7;hdX>evZnnytApXmAd!#ZS;OHle7Hf9T=kJV53R1u5vC|?sgLn9e5p$$#fodLs+@V8_Lms|9B4_p5rz{n~uIA-TMXy z2KV*x4G!`1@$>D|+o$i~zCk{H`~!RR8XV~B*Q;0WMO`yyrWXEOY1rn_sFCv55%iZ4 zv=z3AZF07e^Zjf0@q>|AHY~t$BJfQ^aAAatvEX4j@PNUm5ElNluDf~6=#WTrU{F-p z*s!Sa=7`9U(IF#(LUQ){wa6LNtEHP{j*2h`1%`(Y3Je+s95yl%*U9gFjWF2uNuy>t zd;8VRx!$)~PEo%)Ijsh`=1hO2fwMF-HX|)*UXPivsS-{$b&%xm55P2Cii`~mlG!}7 zdk=ppG;GA^s6douHY>PkJFA!)wJXv$fr-*Tl_A$w-)&A+P({ z=sH}j!1UCFX}0XGdsAknn&V?LVr^NQlNZdD%t^B->#&)z(-Nd1$+7W6!h_TtCApx$ z-Pl4hM@9viL(PqGzW5R;v6@~7ua^w+o zQ_Xj3dmp*CYiAxF7z87Rm;(@G*AK`5fu_0rCdV9tub^MZ4M0_ z5gd*vQv@b`fm%%d(%rv}IV3tLBqAzol5rap{kALIdQr`Bh zyP=n2FvQ`=pg{8or5E2m>;uk1Jd-Y6+p7e|XS{@JU&je@(pI>u-R322}?k8uJ zBPZeQ)a~{NOI91?nVb`)gKw4~IGS!t5IyRJtI*`c0C>n3J1&Sscr z&WfL%oS@_{udDCTO8%h%q+2z>W#2dSX!VeJv=Ts}A%Vdmk@BO?9vvS_&xr5WZ%S;u zIW9ImLvG&0!=tx$Dq&t+LTX0RENY~oM+sX@9FG}as% z88XBSkDVRi*#2yZvV$!Al zvr|&2rT8SI%%15pHzR5E{F&(^2Kn|KAdO8(3q}t%D0$Wt+7C}knW0o_^!VXiU|8?b zf#$%mfnni+gTlhm|4UJkfx{!zssu%hF-MJ$2vLt>(`Kg6P0EN%B*-s~yXr-f=VJ-&cFK={|a-6gn(qJjN5gY@8IvHjtnXRa3%$%IEM|@$$eAJ>6<4 zJKH?HoQ8}JlY&u_{K$u%UcG_`4NY z%&p|u1Uq~|&mOoWDncIcp{M(Rs0hkR(TRA_tmN4WQDlfS2*`fv6ip0_-#O<`vA%T%Wp-Lx4fhWl?I(xN|&(!g1CEtI~ z(4p5~o=`~f{U)X)WhBpvjZeyH{EU0p)a2M{>4{0H6EhNf`1bIf2)(B##AQrPN=}$~ z;h)*(KYH_G-cu9PGjLICT58=bhnje=cgO_?sgl;5Pgybu35 zq^+7&&)wo(864H-uK>4%7}Dzi*aiNjo8YCSARV{tv-DF@N0r zaZbix93g{&xcl^FM`SS9cFp-j+$^>h`a=ixO%)qe_tyB}@pu{@dn0v2VXr{Z@)j!s zy(}3}i?(eI)ld4rIZEq^ThIrl*v=h?ByFYmT!uS7yj@1^Xj@Vb_qK2w`gNVjrpBwx zh}yn{yG7!5cn0qD>$g8y+Gc(>K|pTO?oR^EL@U~7lb z^5dnBu9oYFh%+$dn@EN5d?4=JdnLiVaMnJn!%o1dqmbb$tJ8PmnM5?MpNw-Kx2c-_ zTacyg1#sG4hPi3m<*$Cy|3>5+gF8Wwv1u1iz|)$kwhO|MaXY-p{{sqs%N;BQZ(Yns zN=1ZNE48hQB<0|dQ4nrDy@`t5hRhd_++k z_IY#~%rRb)9ztbb86rs?tm@Jgm+?UB6wbfrg-3e<@F0Tb8Y<&87E$j93!uW|ny7hw z;)tJ-QTYY>P0ScV?7=-Gm7t#O0Xk%Vp-K>p)&a~=8|Et@3(^mv`vNUh2 z9!-A;JsA|??NxLVy!Ao&>9=2JA>zS_ceQulA9o zBq-?7P`$2vywp^B6C(j{oe>nzOi_>OWT5hnFU>_a;h5TqI^bJO=^676w( z0*SW@1PE<|;ZNGiYvbK8jjsrE>$)5{$vAVsKL z*?WPS%TzdV`vggfMdP_4cYoihsiS)$f_LyTR62Srlo^cQFh!+&ap5P{fF2F6H>iic z5rJBp%+&#W9GZPH-ep8XiMB??nvpP5*Ih8d>Igh&LN2t8Mkp^sRoX%NUBpuyI_;ij zyjM055$d!eaIhsDaf;vMl72*_3=C1FPQfU&{f4V)8!mJoEuffwYY5xWb{wVnpje-wd->fVPPqhLe&Gs3 z*%+(=uv3P4M(>ciq|-;5kDKkyj@3>$_M~)`%Q2V@i4UTBpCX| zV7%;z{9@YUO-{`r*4hunX91#*wjitV)guh{7*%gVyQdLh!|{1x5GDsYtI&0)(2VpO z6qG7qZr&c9hknl@k5Z3chBUpYpx?S!?aAk^%ti-nLTOQa28|cB^y?@|`<+nBG~4;P zh~yVrqr0%4>x1?)5WbU;%7<&$b(Sn$(NJb;CzPFldR31r5fDC@uC%sz3x=TU`e3Z* zt)pOsGBj7(Ho)cP=4heum>r|auVFA8hW1X|V-F*Itj$S1gJy?tI;RW2i#{-DJR0~_ zxNbATJ{z`*LEB6~Ab;Qo%Qljv_ONbF4?N|?u-9VHOlUd<{&{pXz8%9lWY$9U7NDm} z6}rp{-SHLVV1{hZS;)n46};qT3D#MhtLT7Io1mAOg~mwRTts&e@*jzqnGQ3ZhPT$h zu#u?Q9R%>E&ZtW_jO#cbj$r810N#tk%oU!w2f2=YFh_(2Q%x8WAio*v$M`E*tM2&C zL{(WZA0dY>O5C<0+uDff)gx?V9FA$rh{5;tpb>6GF-_nFKNK?x9(Vyf2qVyzacG3_ z)G1VHDXJJ4s)$Le;Hia?_-2BhFfNQeHNzyYJk%sYKDxV!sqob1CY@@_`QLekx1`tx zm*|rdWkJ)w92co@MzPoTjmFja43mU*wWRvH@Y>KK1jCeCk~19b4s&$x<0zf+caW~F zsU;ck#dj|*c97;?MitW?q{lBiN)LbRAZ5XdZ~g2b4egD2>|h5eW?(Jp^YfBC>^rYX zJBq!+AO4?~(5u2z{VFW_da6t4#=4kmOLK8&9|pw#Y6Q{XK`9^S!UND%7WRtp`to7? zdIx&!_9vV8JllNm3zcW5Odi`eGG1;T<26B^9^*CK1rCs&K%(u;sGbgmCrg`jc^EnW z*iwFELxUDQua-F0KHNEJZVSl)O$p!sg9>CMq|Ho9p<9WOx3ik~?0ae0^@>hb{*ghF zAD`aX)39)S-s00UzdhK)3d$fT7hG@Lyy1_Dj=eXQ2JOCay&|W4&}37j^|rvAxbA*E zyQaoZks3JEQ3~^kGxA#H~9pQ$oVWNpuzB99F9hspVKrr ztX^PTy2)p7Y|g%C+SQk?OKK)L-OIbzvzC$LIe2-F+mLn*qzVlOKHDQ_($K~^9z$|H zO+I0*gZfR3NSiec_l>3N6<4j9$m`Y^{Bj0|uFol2+{jr%)in~h($FHuH|&T{MQf?H z8#S4in;`m-RwAuJT8-ob=XFKehzw;M=d>CY2C0TQ8^XhL(uOy&tiZ`!r0W%4QZ2VS zk|!?qLh6K66KidUHMPUKJ;?mE0;8%xR@3A&H@=r|FF)8f$mEks5s;pqG$+AF?y|z` zReAPyub!T`^HLi>aDl%hf*x-meFkOo@G0+m*(*wp$nko9GL5;Siajx$>Qz)D?O`Ln z5iWV^+;K@M@w4WJCZ%LZ6&!_Y-BmUuAp^dO3yhD)lc02|qHyD#CKKxVH$2+iLFvJu z%0?8Jf^KcT&|-4Y=TI`CzB}ODBJF$l;T@%3x%DlZE1(f9u@Duw z*3m(_9_T1-+Klgqyyzfx*-}f|eH9DGdXCb>Rp_hl;cHvofmKe`l0N;zQTohMOWIt| zK^ifqmegZ9I?osIH4y9Yw`eJ~B-!8~&BX5vY`*Rwz4LV~={-!7zkJnET67l^wPASo z2pwx`ilapu_OqkZa}QRW-#bd)CI{){TMkm}9Y^U^bc|~jIZA_;VO{kVG)}>yX8}5W z3?4=Kj#63&M`_tNn23JvC^fx>&n_rzA?9mc9i>sGT2jb2wWQF0I7rVluO($iI!KSi z;Ah<*t0leoBW?kp%^rNNmh{p;QK0f&dN9gYuz-gN06umOz$6^*XcF^Y;Ltjj#lXJk zYEI%a9(`Jy3I}N;JjGia6sIpDjG~Z27hHsoV@}8pfl-eAP^8Kh7}p=cfQ8ZJ9)cnp zC6}Qd23O4M@wvqp!VNLgz+jh+>$8v+qRR|5O6`>cI^h8!`h-m$O!B&NFITy!+zUfa zxtFuDXYt0BlwAPQN^7FyOeFdw9*klr*L`YIHMZ)^hUMM7;yU# z$J=3@VpO+3td)!FvhW!LUW)xvoX^GeF<9wIsW@4NlTJ7hfQyprLdRw(0Oy@yGZ)Nl zsNnuM7y1wi>4Xemk7De*c)*t6{&WrnE`;rhkXL~VS}tUKVe2!Pxa9UhzNj!U`l`mA z)@w3r4@0woAc1HI&?jxl0qVCFQgfn3i2-z&V_ z@lMliuS^GD`Mn!n?sdB1dQX10JNVAciL7Ia!4{0gVe54nUmLbu={Ss0((jufMk)A?YjI<7E3DUDj z6ou$ur00;HM_P{bBGL+^e;~b#lp~=Py@wqNXY@+So5$Pn`2o@zq*st$MfwowpGa$w z_8{#=dPDyHmY1s~54-D;K1Di)^d`~?q++BENM9nIM0yKpBhuSQ>)@32NN*x_LF$a; zgVX~lAAB3q`$#*G3Xv#|K0?}sv>T}iX&=&l#K(8Hyy~<%h=Wr|N0E*reTMWo(iccy zAsvx@ZhLibD3!$oS9Cmp%5;|#|8V!le9F<~C&=i_ykN~kRoX$i zC_f(S{KgI!uZ?fXe%W5Fn$wgH^RnzajBnmGXGl7rKc7ySbX=!;n%NM^tMjBOIpem znf2N@PhAuH)Y*O(gll-c3w~x7PQ%`rVH$>Qr>K7Di-LkxNr!qerF8 z3)kOYXImE#dauOAEqLc5>(z>~S z@ce{rPm0&dE7~?T1TS9Na>wSAYf3~~C8ziVC8sC$EvfTUDRwepJ7E{1+?TN0y_ z4!n2{w6#^0Gi2BFghVr*Xu|a7c-&-qd(%;;1~bN=<$9NriJCQWHy&8DF1qsTk9uCO zVu{c9HE!mc@$2j_3-%=}!mM7M)_#JfV~(R23#3uwgGYV#^2AcjvImf1g|Tr9w-)1^ zGW{|idmI&FtHVh0D6hr_xqOOKgQ=a|Q_nZQ6!j}EXm8C}XGMyaq}b%71qssIB{`>y zDvG_u>te~;y6arVwTXOm(=VNE*HL9qpwac)E&qHxqw?5h_A;rxykBE4x7ZD!zmLHTbsCu|vIzF)$*{(xN9g*9&a==jmC zf8TQA;}Ba-bfV_RXD7wYFe^FKf2CyY{`=Q^R5AMR^&2@3$64PiSr_h5cKl#F{LrR@TjBk^UXBs}2f^;>6951J delta 357056 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�+DE%%Y@mYL7>`T5+yU48aOM!{}k)KniKvoJry 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
  1. 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 + + 0001e 8b ca mov ecx, edx + 00020 ff 97 80 22 00 + 00 call QWORD PTR [rdi+8832] + +; 36 : +; 37 : int success; +; 38 : context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success); + + 00026 4c 8d 44 24 20 lea r8, QWORD PTR success$[rsp] + 0002b ba 82 8b 00 00 mov edx, 35714 ; 00008b82H + 00030 8b cb mov ecx, ebx + 00032 ff 97 48 1a 00 + 00 call QWORD PTR [rdi+6728] + +; 39 : if (!success) + + 00038 83 7c 24 20 00 cmp DWORD PTR success$[rsp], 0 + 0003d 75 1b jne SHORT $LN2@linkShader + +; 40 : { +; 41 : context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog); + + 0003f 4c 8d 0d 00 00 + 00 00 lea r9, OFFSET FLAT:infolog + 00046 45 33 c0 xor r8d, r8d + 00049 ba 00 02 00 00 mov edx, 512 ; 00000200H + 0004e 8b cb mov ecx, ebx + 00050 ff 97 98 19 00 + 00 call QWORD PTR [rdi+6552] + +; 42 : return 0; + + 00056 33 c0 xor eax, eax + 00058 eb 02 jmp SHORT $LN3@linkShader +$LN2@linkShader: + +; 43 : } +; 44 : else +; 45 : { +; 46 : return shaderProgram; + + 0005a 8b c3 mov eax, ebx +$LN3@linkShader: + +; 47 : } +; 48 : } + + 0005c 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00061 48 33 cc xor rcx, rsp + 00064 e8 00 00 00 00 call __security_check_cookie + 00069 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 0006e 48 83 c4 30 add rsp, 48 ; 00000030H + 00072 5f pop rdi + 00073 c3 ret 0 +linkShaderProgram ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c +; COMDAT loadImageData +_TEXT SEGMENT +location$ = 64 +out$ = 72 +loader$ = 80 +loadImageData PROC ; COMDAT + +; 51 : { + +$LN5: + 00000 40 53 push rbx + 00002 48 83 ec 30 sub rsp, 48 ; 00000030H + 00006 4d 8b d0 mov r10, r8 + +; 52 : if (loader == NULL) +; 53 : { +; 54 : loader = stbi_load; +; 55 : } +; 56 : out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0); + + 00009 c7 44 24 20 00 + 00 00 00 mov DWORD PTR [rsp+32], 0 + 00011 4d 85 d2 test r10, r10 + 00014 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi_load + 0001b 4c 8d 4a 08 lea r9, QWORD PTR [rdx+8] + 0001f 48 8b da mov rbx, rdx + 00022 49 0f 45 c2 cmovne rax, r10 + 00026 4c 8d 42 04 lea r8, QWORD PTR [rdx+4] + 0002a ff d0 call rax + 0002c 48 89 43 10 mov QWORD PTR [rbx+16], rax + +; 57 : } + + 00030 48 83 c4 30 add rsp, 48 ; 00000030H + 00034 5b pop rbx + 00035 c3 ret 0 +loadImageData ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c +; COMDAT unloadImageData +_TEXT SEGMENT +out$ = 8 +unloadImageData PROC ; COMDAT + +; 61 : free(out->pixelPtr); + + 00000 48 8b 49 10 mov rcx, QWORD PTR [rcx+16] + 00004 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_free +unloadImageData ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c +; COMDAT readLog +_TEXT SEGMENT +readLog PROC ; COMDAT + +; 66 : infolog[511] = '\0'; + + 00000 c6 05 ff 01 00 + 00 00 mov BYTE PTR infolog+511, 0 + +; 67 : return &infolog; + + 00007 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:infolog + +; 68 : } + + 0000e c3 ret 0 +readLog ENDP +_TEXT ENDS END diff --git a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.iobj b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.iobj index 2357ebc47afbef067717adb99f0e21be3679d435..976294e33e2eb3f60e5019effb02dd5020dbc818 100644 GIT binary patch delta 140383 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 Cbw`h@}*l!-J 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%0Atpa&8Hu+CjYkp^Ue4sXMAOF;Tv{a?d-N1v|`}4 zOfWGN!9}?-`iuX|*WFU#Zt24EthMTcmUg$bu6H*OIYVxaek`>*_y6{()r>8EK@@nb zV{pb6zkKkZMI@&y-$~BESWtPpJ;GkWv@L$Mf|K-GsNh%sV4GcPNPyN9l@&K$|0pUb zl|He5*`NRNWJpl^O}~uu1isP;ZBYf5 z@Ow-bUL3^{CGG6opz*ur`LjWz?RJaUnU@>YBUHG>XCvd;mgIhQ#xDeOx7(ZEVnGys zA-ejjUHv{zuU-j`ZTHIrl@SoHqVW5hSBtIH<8i^4vfv9d44m3rGC^N92g}~F@`BN* zWYM6iYKpNhX;B?rn8w?Ka&Q0p-bUNQUF5F58;p578(q3xWLJ0dYR(6FLDzMD)hhG< zkvdM%bEU#_{m2zF*O|`#l$9M7>^=$F@Ay}7Jj_~h*`IQ9Km`X!gJnDX@&)B}i3*p# z4-S}L1r>CO3YUHj%I&n_00N{WDx}U|`NB+%Lu=Lj{Ff&<=@W$&f6z|C57O$1fKG%! zf8i%iS&DwFG2l%9?I<@H?A+clz)n|Sb~y?VfB$!Z(LJ^i+(-90HIq@5 zRRu#X*&lqpl$9(MB3#GWdH=9GU3OHkyC@l)xy3IR+_2joal_!{T{gXPYjALv70shQ zwBq>kWbn16@u1dwe&GUq9F+l4!Gq>O>-YXu=v2uM_J3&Q!ZpFN_bl&J-fJGW3l5kr zI4g3G_d$iX*e)pcz6A!edN=;-;f%Md_`$=WJ;FQTN4v-xH&`|nl-lc8$my00eqHZZ zs$AzEH(gV4rh*@Rf?eMkB-^1v4iMUtdr^=omjNa{+Xn4XSDkLBp!n>nZI%a?V%ga&0Tf43H;-!Dbke)(Lup?qf@XsUKQKIA@<_ zrxi&yj`x0O&GYH|?XJV%*oRgDZGnC@IDfBS`K%KS<5jpT_p@B7l?u1GJ{erJ!E*1M zz2@D_kIaiL!5Z_T;364Q!T9aqm%V{_QP2K+d2mc%Jx2&iGdV z&i_O1ty!8dzdZ}XoO{*0EAc1l#Qr1RCj#Id!1Eqf!)1T|D}c{}oA+CH<@ba3)W614 zF9=@UZ-wN=dXiLlRzC&@_FMT!fP16DBl|HZcEEDjf4TZSsCU3B>i={V-5q-K<^J)Y z|I3r(k!36|$ICl6XOKB?0~%1A{$z=ciBP_ogvHqM7P4k>#zihwUYl z3Z5}tfC)p!lnM{IRB-Skdp|JCDenjQKlr69@haZV2^XcJc#btT-wQ?@wp#4e;O2vV zwSV+gR|H>u;#X`?gLf3w6P3)~^HxN^Sx;cq1LHu2IM4;G>f{7pe`0>u3W^@G-XTp8 zkrU2njBi9-OXCK086bLx-7A^x|7(EPnuFV2fc2vQ3;r{};JZWigns?R9%SR-l*3jZ z;8ZlG4JyR2X>i?PE3YShVP-9Z8HfGK|0qvJN73T1W^zmg$5=0G2@B6`L+!{c>jGD4 zhxbo~XGRyWI%fZ}KmYREH!tD*hM>X6R;TkCsxGQ>xDy*1yM182{DT~XE9?q6Y80>cWQa&I}_fS z&m1vF%sJ;A@XUJZ_phFr?&aP4-tX(@aVdXYRbAC#($37Lk5lu@KJOTQRm16xI?}iQ z9vyq&dyI|pZ_)7`#oA8q{~sOutY!H9-=gb7yYJ&D;@@)AMu0tZF}%p$NT1?B@_yh_ zM0dj7uDSDrq&Z;+i~kQN!$c(6|1}a?_W&Epf9sf^=;{Nke12+Ho3NV1ZA~DzhuFQ| z;j3QLDCVI{5x-cW#t~`~N64>Yx0uR7nrxy=&s=;f%o0Rw1-oR_Yfz2CZZ%7uteV7= zRkN53sexJeFwdhbkFdZsmGowsas!MyE_85%5quxGI;7!HxNsl;o4porFW3*)8(TrU zAL0B+#iL2Q*IXf7^Vh2b=;AY+AFU?e$1XW_-SmNJy8Oz3ahmR5G~h9MFvoNB;5J(K z7;V%RJ;*t061TBUwBZlQo7|qGjXmV?#3g5LO@rIeBwoa8;@ z29DFhCunTK3tRy>E<84cejPL2dG6xt!FRx`E^3OAdV$U8aSD5iO_#90M9rSU{?kkN zxnD`q8P4A7iM)Jw8t!z zBVMHofNQw$7-?3h)+J6;v*%MyS0}Bpca-uBM`sP?MAalV`@&V($@Mv|nl_U4n#A=u z7cP1Nhk7+wp|MoZBvx>?QupULQ!Dod`SN?B&{Mn*KcHPi*kqpn*EeJT`!cB7F-qM=js5Oau zOKWTq4p+Ww_T~Wcdx>Q&ei=xZX%d?irur{&EUN(?HBI863yW4WLrTIwqx_qbV(H>z z3oaa=YDkkfKFu%t9EX3RaC86WxC~`^g;}`lEoNbPs{YC)pI=kay}V>JiDND=+CK=X zorUJT#ZXkCB46>TsVBK3GOFN;_$V`_QL+X-dG)Kljc&y?&|+_ zyUR_@M7-=wlh|1!+M0%gt!JE8b9xHduenfT|C+=JHWzX6_O*zK?r>UdDdsh<$Z0Bm zQrRC8KYC&jhonca$e|q3S*E4AfD#HvqS&pG8)8FZ?USxKmk?&o6J^5wI7L)y9b3S_f-X(8&en3WFS$uSil23eU`-RrBKQxK^ zL$`pGEL@n!P~A5;(f!|blcBp+)1CBx>28JYK}~lCxx96Wrh*?ZK1A)_;`Ii7X!=|1 zG~3G2)Fkf11+@Jw&R;IE_LAA}a8!5nBgBb?Ton>~K#Mz~4dX(n_&Ww-$1Iu$7$;Y?K8HJzR(~cN4i7l^C;s+f4c9T__ z#8tOw%?IpJ{`!W#c|gxUV6XKAa^+{*obbqC^0;rq7by5IN*nR1ooXfsZ`^U3#QmdL zu~w*=ZhgZs$7?mW8oCJkP(4^~U9;r1ro3qutTjgSVg5ijKVtf8D(THM?Ae#6Ed8tZG;xP`Q6hke7-@2$By%a;u zDE#BX8#Ya!`$3bqsUV@vw@Bj4#OB|zz)Dc%f3Rkhb4}s}mQN`2mx;GCXv*QV9LhwT zMn$^KhP_1^9F-=qVMSrc@pxyTDcnjlRsH&3mHCGY>gdX~DETWk5Sl-ZT9degG|zRQ zJY7?cs3-GBwTav0!ue}foWJs<+4GxzKWg?)@iwva>Bct~w^@H#y_{NVAU~f|8>OF| zT$;pA+uIp>CrSlPVuh}nf_XiSH(T>M^|FcYb*SlgT+ZRw5oohjlUTn$4gQXKF-TTv z5?2kORj8to7OR(eB;91SAB7tCjwW&MjGX0R#q|hiMT|?=EfrA7g}X&lXRpe|NTEFs zYzeMVSggKIQ?%goC4w1cu#8NT*vBukj#vZi_V)ZGno&}vz9zB$ujFI4+MnL|YQTIFQT8Kqj#B#ugJiyiQjMn?HJC%bIoBp}~j zJG~JydQIZ!_futywO~t??pYjG8)c+4&?GiED$>;tcfwfHSf4CUmlm4D7N_Wl#hS-^ zhOE*guDYPFH}?!yx9q=21x;dwYZR8jny1!GS*1x_bw>q~O*>V~0cw<4(n6Ei;t^X= zy#bbdv@L@*GW*ZaF^d;*aYSZuKksz1WwhqWZpIx!+FI5mHn&nFs_bT%{W@}z2AaeM z?t+=|G){)fT3p7R4*Wlhw9q8B;FsshV@c7uB{f6wnSpCP#DW*1STVWiaYk#t>=~su zO=55P$TyQUASsiq(j=}566`>DrAepGbe@>Getg#QXD+qe95|-o%VkkXkz49{UTMB0 z*!X{q3xgK~CYHHk{C`d4qpJ_Lp1)}Pe?}FTzt>hMvDoz%v)Rli=zv)4-g z6q_gXQ-kY~$5x)t`CGoL{@1$?_;F3=p*nIV+AJ^dHQDAIQJ+Wcz>q!sO!s07!tMA%vOULY1mlc%a zZ(U41c3NG`Z)m_yYZ15i`r@kJuY)tK-DyoThtT3()`RqQr`63l3;Nk&o>mIAOC*M(* zUfGL&-UH=)DNs&j<#?7XDUhbH6wcCqmU=<*xcMd!d}m zK{+>7-V5b3tTGHLn04O|_JY~3%nBTUbPAGZu!H-8vk$=gG}b700J;ZR>I2EMu!C+0 z{m#n84npMyD|cqe^B|-JEY)D?+(85|?jX9JmtgvyD@N-M!a>DDP=3bB{aMO)2(6WH zP%cUJ4?+13t4x6kj%qLO1must>1bYSM*~GzpQ}R0r_iI_D`AL{PU}**<&*l!wEodJr z*EtpQYA>9?H!amP~X!~ zHlKmYYE~}8(mj@Xu$1!*q$MoXf#li6!9iCVaRv_D&q8GfD@U{Rnw7gdC?`<i*IS_*2#FIlUZN73L*)&gZlNwv`)CQ}NlNkSk|IE7OrnRS@Zc^Jdh zN9|AU%hmz`N-ZEOzF0xyiZln=%7i*V6^7&S$FA{XsDGT!;uQ$L7gzbnfm;~(pkfr= z)qG^S0w1b=4C z+gv7^aAar-P3$-*(Z5GeCX=b#HMpGu(PB?!Cg=xH=S70frw%vKe8rp4`%MthJgsBB zaZHy8IusGjrH@QcF3=)^+4hbYvvs*}DB`PiE>bTZ4 zmQJ&S6>#AEr=Vfvb(?1flhuNFQ41zzZlme7g7C9LHcGw?%Os}j1?7j=JSdInVbFlT z1odZKNL)5J1hkQCcdP}RH=)vEcB7&A55?cH`nqiqgzu%muhbm{p+$`O{u_(=p91`| zb(Hlk@FQT?9Re@KHwH1(E z_M*~a9uHLy3cCjf&iCMUzo5KvDMW*q)?s>3(9579l){vl9u|~u8^^M^4|)sK`KX|2 z6nh`(2Hl6=aY0VwGZW2Wy0C2-Oqfz$LEzFp4<)sj&4 zrrr;%ooU(wxV<2#7?{});q?+jK99GUPe3&{RcD&_A?OuBBXP3YjHWZ~3>t7vP#;`v zuM3IGRfh|Bx(;c$Q5&XZo`Aj*R2#Kqrb$d+3%U^=f+>yZ zVWw{cO@@bTRQ4&T`%}<&f>s4}p%F~uK?6Pr+62^CIqw~k_(*e~B8g8z6`O91u*WlN z5WRYey>0Dh)a}gfVy;hmX7zUcE~pzfK#!lH**(y8<_jJcb8ZTGj%n%q z9D!H_;T2?Tsh!OKxuwoPHKFgCQK;U>rw64xM?;IAqakNO`Smp3M{*_0qQE~2#kjp&0*S$X=Xta(3>H2o9Py&eE&aYE4n9+f?tAuXUdNZSk1 z@)PG4a~qMtbf%q|<`Og#vHH?wrfZqM%Vf}#N|g3 zX^1PI<^Z2rXdOEkmj<`|ET_dBi|z`ek4#T74G>hUZHjsgn&UN=P>`VOuzkF1q6r|> znlV2uZ!st5G?~_z=?vo){E_)@bQpSTFlGstLJon2(9_oltcb8*j08qgo4?UmnZFT2 zQ9(~*ogd}FZ1ycqrHM`hoDy1xM}C8(Fs9l z;?skUFkQqnT+n2A@FkD8ppQTU`0+4{nb)AdmV+t6A&E#T^cG2!7pnK6mWdX#gMn}1 zwxXcx;5HjQX1a%IB|(>pVGnx;>iiD0ilG0v^GoOlF|ETiT2Nl_Stx}mfd=sNtJ>5z z_C7HVfmNrg?+{oGq1szCR`)#|1ign_zHQQC)()xWFzv;(wxB$lJm@ylElleO+5sNC zDfk2Ecc%3OJph`UdNZx|0fF(IFBWqYK88qvbaHBkV81-X&f@ zA18|bXw6S~KcbzIxM4QMauWvmDOnwm>HhXgv%u}?^#qfniR9>_*fpWz_K zXSnSwXm5PF(RikhGYXl~Ilbt#1@F&!tU z53cNuCztP_x0p^4^fFQlrMgUmz9X&y$Jo2yBW_P0NZWZs|5V z*a8Qx(*)(=ahnxv!x~{YL%^~~*K1a9Ti#jKY&eq;ELJFP1)ByoOE5R?mf2>oOE#QI z2sRnan256-BAP=#m~A+d5URZK@}udnr_N?LohRrKj6gfO%ycc&1%ie^_XqNG0{y^r zk)YZkNEfCRoj`vRv;#g}XdTmWOqU3{7@yhbBhyn%mkG+7Rh&&&Kyz4-#0o*rb7XqA zE_X-*XA>4Au~Mi$hFS(X%??(;f$N`wCcuFg`D6fn#dNix|3KG;+AuAX0d%dPyuEj$ zWTr_>*9*%1orThv9tI8gOHh7j6sNMHY;Xt+XB8O{*e0R65uY|1kr58!Gs5i_K}%-G zks%#nx`^pELHS6>gFG^UK4Q8;39@uV& zz;IrX34!eust2H!iNc)Wz}XpY_Y0~m=s`^DFg+-!8$Mkqg()#TENCKn*MnSKKyNWU zDyX()ugf&Z1@yR}DfrAnbC~vGnkr~jBoRornQj3MI3*|#yD@i9IwXN}3l}7DMyL*g z13&6*g@bBVxIHK65s}(frqh^S5cB{(v(2^vUSfDjz=rs=QFW$yZJ<{KJxNKGz^4cKxx&E*c6&=u?eMz`(~7Qedq>d4h!#UE%54X? zcWIQXtw7Q}p(;-Lb=A8Ls`rIXZ@oTgep(Cuz6;x;4jtR|@9f`zD;@})hP*Cxz5BvX z)r5rFZM%wVAEvP;KNA#Cwt4DGbluf9&HRuO+-wD?b7q?#t#z|`(*l+ruyii74OiGR z+k8ErpoR38a-LGv%rL8$1u98Up>Zs2Vrdsk&miHE30oFh0rN`=#UCo@4#$16z;SDq zR!Whb8B1klwLW9+DUTpl$jtaB`x~*=+f} zoE&N_PP70uo)(9i40JY|t$=3+hl-5k;)$-xNFkoKQc2_GXw|`i3YW=}wA9H&K{|9y zY~7=6VhPrnDs{T+I@2W?rjyx{Ow!3rNq*JI&)x$0$Hp0(9n(y>&qT4=ZMi%yWh}C0 zrZ{)xHdpx2!0fibq=2_8uPM4q_vDN`v6@lN>ST^^tw$}~&z0@p)O8k0@?0m2CHbtA z`GO$CV#V2gH2%%Szf30ks22(nI!Jw4hvyP-;ACuw==yI7b7d-cDtVT_Ezo0Z=Q}wR z&6$&q``dhdj8m$$gLcndC~XSnBy#}LKlCQBk)joG`oqOlrr%H}1I&JUhqTv8q9lWK zGDwn%IvFm>Qk@KzWHXZ_{2MCKL0xHtB!h(HgLPt)WRgxiBw4PLY?5r!ND^L`X>{xnT`575OFHQy z$wQrVljO5bu47(lGu9=SNtEeQ$6F^oB`Ktnq)rl*)zM^0s_A5+BrS9@Rg&&H*(}Lm zootn4nohP$vQQ@*lO$Sin8`d+3^PeC>13xQZ*=mz^pjCvBO9cSmrnepP63_lHYFLI zR$NCZ(kxmheWh7Lo%EKZy-uD=tKK?kC3VK=t4{7p;*&?X!!Mf|iTUf~kkl!slMK+|-zP+=ucOmISo$bQI(aV5rs$*{bTq4l zI_V(EW}UQ=q({bO_EEB=`FnGM%Db#h3OqB=PuNt{lONzzg$Z)IaW zbaFuI{HT)@K}7qbb+lV5{i>67($Swf*(k|wom7xkCv_4b$xWU7F0EebWV1%N{ck!t zCY7@01x8tHHu@vKPLicggie-AQcou{rB#AX=1MX_Cv$X?gm-=EXtq?^s+0MWoYKis z+1O2;JeK6WPL@lnY7Yvig_iqOe< zNowolvLx+va#oVQIx$JlBXshQ)R~%Je+uTCMDul}&yxJ16Bp@dlTMaOlA@C}(kfLa zPEzNxPJWi;If%&rB#@IylmgnH6O!0;@?N_3)=3m}EJD4sPIgLCQzsXtRU4gDmO8ze zaQpQo8mBA$AS)vGQoSQ_`D0Po5rS7Lf@PCvYj;JK@^WtD}pXF@h_Yxf-W<)Oh?dV zct*lr2U(bEVC;oe5;tFpqh4qrK{#rD`IK_aQJ2GPkfc~~nDNghGZB3zvbP}U%OEQI zkaUFow2~yr$e!O_t;{(4t@cD@|1urn?D@Cpq*W=-zEwKH*>6loIC~c)rduWH+4C>A zC`X+AwseG}=4U&kPBF2lbRx3nm_<2>Fttg|&2u>+i2dob8-n7~>FnA?sXFdCMh_5| zo`gOn1lWSyvp;_mqhJpDoneg)2UjLa%_4M}p}Fed4GPwzEP=MXIdThE7;9K)-w!b8 zL{$S}vEHv*4+Y25U|9GV7U6CkcMO$ntPG&_fjGN=Gjr(yMN zVgTg{vIRze4;WlW(H8+)NZC1glYMvaFZNi>eyB!InR1PBv*wn*EHpj{5ifoGzz+UE zyMvIU2ei4Y7+L3qkF*G*w`_5G$fTMI)}%tgu<+3gOm)8fT>A%U(Vp4_!=mTXt+N#z zPP5sj+22yxIba1a@rK>4= zCy;s-L`M+RxC0S-CxVziipQH`Zz>eQrcCS~^aPE9y)W3)@A^^RBUsxFDqz zMvh}kSWhchmEN<3F^-!DtZZqM7Of~G1Qz+`-TPg^fz*!S$-0B?Dmabi0DA1X(CLMO zD}(7&h^>&DBKw0WV-aNPpP}G4kKEJQ%k%IJ$ZH$P!A3c#<)jlss`HCXR zYi+#a6!oCSMUf;91VmYqeC4fnKM4P~Buy@AD_lu|T7@*V@(u}B5D6M{m}i8SOt39| zEQ+CAvTf&D1&2~-7%nEWzi!ryixZ^wZ0Zn(?ikh}b&P_m3(>qVee7oSEtO5x>@P%T z!q64wJUMSEdaV#S7qjb%8QbPYs@gY&sC+SO8gKV#yH-)x!di0C4#~xc~#}x|Bq0O)m>z21oRXwsa>?WgHSD0QDw*|)RXc}NgPv{xecE~VJWN2)d z8*MqWZ@TpLs4z7xfgbMY+qb-;UklT;5;kACq{mfh|5p1RpL;PI9Vmf_YgSk^U%^oN zTtd&0b$Ex-Nw!jh!b-v-JUME&f~~1jNmv-us@u$AH784pM4Ata7{A}fY*cVk2)o9s z031?mEC-Q?^=F&A4-|EMDsmdATUj|FD z+f47u3a%_d&CBRZvH9qb6jigg2+b&i9!b4=d4!@@i_qaRc3ZNS=RH$Z?VBR>6*kdv zvsX4&)Gbs?u%p8$c9NsW8hl(eQBH^e>QWX7MnB6Nr(k7TSk`U|@s??-v}i@=*&_05 z!WjkolPw$;e(=u=Yt-{+-#1H(NfZ^1F4>-v5~bkpp)@cYDcWyEw@Q<(p|m<2YjMRW z->iyW&{OQ;kYZ1fqOq@-7}-AWcIoSNDCLa6Mtt{gMF%PBLU9p@*w|N;=un`ss`RDN z5y){$i*E%KEKS?l!k8%aYYp0~D&r`PEy|_tj8U)?1(t(_aeUe~Dx&mO`AyPrYEceL z@%*%=(-oXm6upPi-yuVOc@J)H)~Zb_N;iAFUAp?SC>oy`0@rj2+mb zma2VRluAXSS5hjp3{cdCx<%Uc%9Tp>OQ_0VS{#WSza;q-SFk!=WEgVZHebOm#eL?Nszg7_BXj+>F7f)ul$V zs(lZ^Hs_OJ6_G_{xZQ@~`!>C>Tz=E8FGh+UeOq zRT)oj*<#nlFZUH3NQJ5(M`IuQW$lCps**}j+bYPhn18ifif$=ERK;#V)QeozQq^86 zL8-8bo^W@Xx1t~P^ZW%4IW81A8Vj;yRHZq}DhHLViimf7-07oW8S2S!@BOBk6^y5) zfF8$oTgE6juq0ipYBv}cN^LB9S9Tzkq^!|M?z{Wc5Jk6_q-snjC6;Nd==G8`4Agx= zt=oeYHPMD>TVYoP{ONHtLR+)((ia7*lW&aOm{fW{#;&;pY8ZpKH!r`lL0L>MMU!Im zUAX6iE3;J1#!|F52GR98+VQcXmrK!y802ZJ_{>gUZ#I$Z>Yq|nq#6dK(&rk#DC)r% za8On|3<&@Fns$uB^?Vd~NcLF)no|u44%q*uwt|)EWHo)67#101>upL?#_EWe_u+~r zm8Npl^^xH%!H4*!olZ-e1*NGE+e}W~c2v=`rD+9h!@g28H%roB#rg>VN$N~sx~`K zu8AaXH2JxTf)Qo4BzHL^xmzS@xSCY)LAbJNO&{UPo26YuZUY6#ujeTG4lQz%G(izye4|w7ns;CoXinUu3`OoI^Q7ZaVB{OW^`a*z$E$AluHr7IkCmBZ_lHv3tuiD6Z+`xYA z6r2%GwQAdq)1Bn^cUA40a2i<~S?8&_I8M>jaN5E)#z8^%1^(Am?elPY0h{Q@k;n5Y z>KdU9RI0;3ofHFQgnYE!jGo72$c3m$9Fpwd?^RgAN;Eajt^;!>mfxT%0 z*y0C8&qvTXrXAhJcn44l? zxYxK0xtyz31=$6+%h5LY^0-_6$s9#LmZMko^aac|!z!;&jgU5YO;vqF99Q&cB?W`1 zS$*Wl>y$gXQ{P(tzspTa1)9zlw?=>eqF`e>#1_Ve<=Cq8tyEkx;2s(HNf>cMb1Rh1=gF?YV>VIpGJ~vLuBfQnE6;b ztkLpMs@6hL4G~3Xt}0^{%uNFt+ReiGLFd9$Whq+47QcE0ZdWjl?l#0MQJ^#VG=kPy z=X1vu96@o7;MZS|#Qf9VIjZtk8Vw7NCiN?3R&Yak+R;eg#g^!qTv^o|FHf%f5(Vs`(RiuzPQJSguRrq%m&(<*jik+@_z z;9+#6F%m3XXT@a&>(aNzb_r&2Y4Vq<>_sKxZNctNMcXPiy#jTQx7((@-L#^ys$E}! zev3zrX*WE56g^vkF0qZVk?8k$kX;CGDp2MoSjCH8UJ6h)UR1dWqCLDU&93oMG>GBa zr4L3c&BnB*2~sfjMp45?G*^`a={_txyfQR;t>B!Bl&h&-JXPX0lvlOeDpI|s$f2TX za7#t6RitrEF|OS2Q_jAcsy$Q8|NB~zc0oUSRYK%2MRP}Sok_e6KK-Q{{^4?q*$B7Z zfTP)zRRje$LxPLW&2(0<8MSI=x8aEz+x>v592`ZnnjzW)X}3QqIyZ`rH$#TTzO&xL zU$)Mbvub-3nVZAr#pA9u6}=TjWtwBz8Ar@7BZ6X8t%VYr;|QV44xbMS7ObQtnVC~c z_oY%6k)$!;W~T~olvN$N3|HyKVRx)IH?m#o92xMuN)+7!0hg(^e6XTB zD$$S@`c&jN=-ipAv!%_|O0=GBa_4`ySJ6+E=n-t>UflZ1)px$M$w9eWBFTP__m5Su zbY(5c><&rtdn2{`av_+O6{tH-Sv92baOGb6-o;-OOr+f{?M8Bu)69yha%N?E*Af92 z@-k;ubYo>I+{$hw`HcUuT+`<(Q`=UsnYyk214Z9fCW1}6s|3qslAd&;6(aNLTBc zThA2i$~TUq6mdv0R3vFEyYk=b=T}x!qUqOm2sq|vKX*mfN7Jcxc0<|W^yH)CMqu+9S#4+46N)upBLKZ?}=QoP6x1DqGQY zSj7B(wAWPyN5*JLmU2k4bh;$>EXg`aSuKsB8XXXD=sWjjiXM)kqz*`u_v3sd)GKA; z>ajA(r!lk%Htu;M_q|ipnVxn)#KwO4l=<_$;?kr5`E^8&eC(`Xd1~Ad7RCgxK6wA{ zs&7USK*r+=6P@)}@j1fs1JBlnhtyN7`L4rQl4u3FxtA zSJO=juBuMiyCAnU-6KCMdZ;?p>Vp0-M#JgF#Mi3!c6A!bHgDaZ3{muRb=m?OIfChJ zyy$rsBv+%;(kNvTT0={&wnK7pBDpZF+BE&^mJGo%x$4xUE0Q~&|6H7cZD?v&^sF&Q ze_61}8YnFW(g9d_{B5~EL&51a=u21RXq;7-`fy-wh%`yALB+Zu#~$IqwG=&FgF1JE z4X<4;#d3C?7%FW()Sv~hiEd73QxwfxQ`2qakYr<#ByVrH9GT%0T1fheA(!q*a@!x} znkd+bDs;yl&={3piY^LLm1AmB|L%ymYwDk!6kT4E{_L)2iRMg+n_pB?wTElc9kw~W zF>8B8AJ?QD2^dLZ&vC(Tja{vkViPcuDb?q!RVIaMi5yHV9g=J%k~F3%e^XvkCRvNN z!j*gEr8yfE>_jgUY^CrzCjTB7vu>MS)+#Lx=GUU;J&=uYWXAjRzvT{MOD&qw1KG^l z-lnsn=WEg7|FkJ9J*L&7uds>sDX}ECqVBO;IvpL-=_JxI#%#dWxdpwYuOif?C(?O0 zE&mJ!<7i<|eY?g!CuW@Hw@*gglg_in`EEBz!HHz+g;6$gJUQ{eq65-mSu9oRg&cP* zes)^Xy|FZ~mp(5Mpee`C^`lhn^;lXBo9N3quC!D1lb&M_ha7u~9F19a_OY@E#hnL?5Zj!QW`8g9=Szt zP;f>4>xn_Bk46@->MMt)H?cWP_H*xw<=0U|}Cix&p`H%YKH)jKj_qpB=QCHr!(OtQXKum*MOYu77tEpLyw{*}4MjJ{u_i8PIHWjSq-c!d=a4R~mDTw; z`Vqc7PJH}%p`vf&Xl*~cBa_CzejcQ1z36^FMErfqypsx+q#qJ-QF_qW@O6WyIHbHhi&>ud}Jj z8nXw$;KZpc@rre((gR>%^m5{q!Pivf7)pRe%$?(R3M#myu9nyohs37J#2}d5w}quC ztG#vU$^Z;l->Zi+D0-_dxevrOA(NcDU+Ypdh^r!=GYNjCGL9;L!2 zx=y8P(-pPV*Ya85kPqKVY%v?7+3-R5Rb`c%$__@7yK4VEO~EkgIoNKEFZt7>psK7& zOW9)Bp=sd?HleF*VQhMM5B9T+H-S8cz@potAA%JePccLEj^u;Jo9CZxJt-}g&`?-- z@a;Sb?x|0I4MA6Vv>bWsgjBs+pPn#%eQf?DMW5HFyhG9Hyr9^9{FcN8+Iyn7lfKrc zMnkbJy!H8BYelot#G#0YkAm35`*nk}QL-6-N*RhAGA3PiQ!tj^vjz7oTa>wW>G)1* z(T_rgVV!KMli5qbX$_!6f(WC%&{q5heh8rVEv? zz$Qyy1#~N+V+!r9p32@OtT+M)rqBMnA1SLSw&L7{5;YrzN6^{tP1*k~8qt_hw!nhL z%MKr)Xdk_`Jz9*33HqZlCQ}Oa9)aCdidLbbFzuz~s7T`9&*3<5n>>8*yw+5iyaMsV zU!{|=vG&>pr4sMYQ0v+-cn0$u5@ zB&&6DU6LI-xhzSlPOb{lwP)AFYOy9!E(+4SZ`YoQoiuXOoMbe1OE)_&l(_ntPRMyjrspm z`z$-J%Sq)zEq=mM`rPdIDhm3>YyS3&uC#Y`K)5otJo^gQe|}lIDnUo!N^EZxtWDp3 z!a6n@KNEh?{i?L+L?uVVf^R!ka0GQ5ZD+x2@S?Q%l@`MyXZrOOM)AD$?!c&%H-KztO$VmIReCJ(6UfvXuJ5nO-u}UNc9jF~_Dq7WK?NHvNT6 zD|PzfEK5!QG%GSD6-L>=>Fraz<=a}*ho$HCRaff0ws-q^Hq6pbTbYq+j-}EzuwQwE zv6S9uWd+7;veXyPc&E2X_Z)vlKjF#rbnBzv@DkgpKW%4Oee`Q^9PXnx*_obmee^GI{Q<*-Oizx!u6=4>{Yx;@ zQ@pPmta4vn(x2(6!+tGz*MZ^FecenXBgvucF`akwdAFjk{yRse=Y4i<#V%*2=hMD! z4!&l;(|z5HoCidj*ZS&EAk!1>=N^iUcyp7?^d#}FFz+(hpANNjKR0{#^>g!Fzn>dh ztA6hBbm-?s+P9w+)k|zP5gs_~*=)9gqu9u2|z(iv0%gZs-6vyQA1|A_t$v zey#syXYYIygV?-tqc2oN;Mv&OXh3p zNgbkJ$d~Df4sm0wK16>8SM4GCw|tp){UKhpd8jU&KN=|Vf>&j};MGp0bh|vXZC^3Qk*6-rKk|7(CXCg}x9QTx~=uR1+Re++pMa`$9?0ilwncvZEj9MaN9Gm;Zf zA`b&x(7Hx))U#=(oBFAlURBG{Q$RL2`rYJAJ2=~`mdD5K< zNe>*^h1TWTQ{^-uxL0R zXx>9!mG!+>=SoTUPQ<=aN=D$@?{VaZy}DycdZfjXe@3BGXlRI_o`bzdiA5J>7Fhp=zN8#7Z`B@MRC%r7pA61ZkDp8YRjKqwINksNR8SvO8ZoLMO~m!)NWMSr!GFEYZQulSJw0Cmc=vd z{15xovif=oe6QB`sbE9B9`c!nKJ|EGeXJ15u!&ElHO1+~FXYBQ9yMzWNRH;ZY~iT) z?dCpxC0}|-ArCLN@Tr$u>k);ccF8tAmD*On0r^Z@pQ_tl?=2jS-00v_8#{7rem6F% zf4_n}-&q$f5{(@0%${y~dTZ%q>XQBhJljS0EfTehb@i!=UG*%;YLGd)>1_zrpqo#v zdYVIq_0a;!31OvDdL!1sI%gWLj-mgIwMhxo5|A6ibceL4=c5<(OKF*Q%i%sXE~ei} zi+a0`^wBA?hm7>8d870#AoUWX{4e>`{iAi$^r$_5v`=*ys|Q1VIM%18jMod&qmefz z_|$?aoLnjQ2&)CqI!yDa@s7R#+Z=O!>fAzIAR4t_ThsRU= z>Re&Htyt9VndVoor0Jg^XF%4C>YN$T$d;&I9l=IFkDgy7#l8gBj-t8)JZ}{Bt8y9a z>DPrSq}ZL|%3ngilM%I-mGr9zO6hMQyOi>)P#Jv-LAI4)b2mcWzM9*56)x*nUCQaE znNj=Qa(`qMyo& z+SRN0)zzxH2IQ#w{Ho&pE`9iZzq<8+o{|-fyz-!5t;fcPR30+hJ`2~g>s$E-;C?1V$tnF8khd79P!a_7ytPE1H zuHH)qb&>me*>MhU=(hZ?0{m287cPOi*}$*HHPjD7&TZ&dn;YrAC8Cj)jZqTKI8*`m zm{Hf&X^`%%^)?ukdCad0wPAwkQ0XLTL^W2s9!xfj6>Oaa$1T# z8?G;g>!zimk<<}>H7AxGC6(D0oSitxpqKQ5Qc?T)(SEgTjQ$vM=NP{#I!<3eu)O2_ z>g@^t3|0*_@-q;7vaV4&8mTzNulCPkgUWjHy~zoQN}ZUEqgtV-l#bdjukowJYxR1_ zPuKd@#&!Bw>1d$Bdw%undwxCc-on%~UWIexdR?|mG*U0_S5r4~d?8(^UW$DMuA1BQ zh%!-6ksbQ=GMVrD0N|Hz{JKcl^vJejes$s} zHYn!ysRfmK1}1BkrTyjb-El4b(Koh^UEeD zU|4&zyshR}*E!3f-FV1WwI0@0Ab)w-R+}2@4&|beJdbh+H<&(JGR58j@_RG=4m|5N z|EDKKiSkcwX{!yb^)1Bn=VP|2*G6ZSkJ^v6u~pZ{b<^_E$hyaEmDZL+di1K=DfYc^ zt$9K(fM>IIwtDKxY)=|5Aj%g2q8;@G#M88st$KIX1u8`C^PO$AxVx@VA?i)&VY@xe zDP*%<4_npjsi#zkMuzpY)#P3rS%gZGBFpu(t+qd-k0FLZeQfneUu{>6+DrS|s=)wV zwqi7L-#}Z1Uf@uVxEH{UTuNPd(N@1q(j#Cn_*M2aWs;F%uLfx|L+^#>$r=CjqzmJaZ_S)*%Z*4ubN_u3&ceeWe33)MVL zC|tp9Kn~{7WvfQ*-FXA5O#%HFozAqZNT{NJ&WO9%s^fbu{xa=Ba1=Nkwx-a~Fp;@pmW|IjSOfIP){`EP<~y#Mv6TNuKOD4 z4)7e`D4-IWuxC!as&I-u6RtkZ^*i@R1G!rURPB}leXwNI4;gEvZz0IZRsmJ$F%H5# z!AR7BdLX-S$vqH_yx$gaKFJ2T-2zL+ajXN`*I6%kAnF;^Re$(ErXA}VP>s6j3kWi< z8=Jd@thZvg4>ccf0xr1+qme`11FCILwu!g{E1a*x09E_xDGx^ND+2=RyFq$Am1`&ZW0Q<4*MDz$BGKz+Mi7p@)+WbO*6)K3Gt ze)aUgpPvTQ{(S-6uX=i9-j@MY;{bOdn&Q&Ab-g!Hql9aAeBWjmYL3Pm59cti4$rHpdiS8wp;jwW4-`q@X%hNY|(pjl7#4R9lO3 z$befDN+X!JSWuPA)Kg$kDeIrn(!i@3NLq1y44zLG530S`=x4j3yWx@#l?bZ7C3V@_ z7-p4(XDK%Dx}6OC3j=H`tw+?3dIpx!uh-5D>?#vfwaW$dzJlqIJ>`Pxa(NDdkzOUY zP4rg?sza4@;fJE$f|dF3&mzq#m4m8q72WrtsQqx2pvqZQ&w`9r4XP>k>unE3Bab~0 zR2{I<&vG+(1F9!Tw+D63Iv7nq7*waR(a)pHluxn$f-6#8cc>G!$5szgZ}>9ga>y$+ z^g9R=s~J=qvC)qQf#Y#d2SGa4*0*4g_aXLlE!;)|{sRCr>guL-qxOWlL3OLC9t=6V zSx|k^T`#B`jeOEKs2=H;oz?cmQ|wl7o$9YIz;4Wdpt}EAU7#KY@y`a;=Rl-H}&CfOkgdDe!MGGN^ugiTxAYqpya`yz%Iu8b4kis~7c5dqsO5&a~&h z5>%Zh>aq_@GZ+HXt?s&}XBy$?ri&#OVT z?^XQ=-;3exES#4)x^Mlc_l?*1BOj9H71IV#lcYuGfH-qXZHu`Zb#Po?OxFV>g zzpdYC5VgNth1#=9e+zjMa^*Yv7J{95C#XuT=3pLoSclBi1n{oaO&dn-_}ZZQb*&x@ znec8k?*SQk{4-{VlI(M8-Fhn4_E*Xs-LKe#@q{=h~*FPfheJ6}AgN^j6L z9*IU?+<-#EMn4NfeP`!bTez+<5|s zXtUR5zr^g89$fiamv`1NJC%zh~1UeV`{}5=Qk)V0^=N2J;x1yzxcf;v~5^hkAR`RPIvUC;LLT-Y+*I}H0u zPiB(61BsG}ybt}Q34`{sSxVqATxZzV>)*w>P2Uw%WuQ@R-bRMC0qY9AuXTE46!Z#g z^g|1YSa!p8fPDj(p$mQ-)CZr7+8+m19Y~6(Gxk&zeZYo7Bl}**u$5qOW|428f5vtv z^1$w(%DdY=rbq?o+Su;+c7&@pe5p7lK+nI+cQahOIc(rG^i}9HBck>vD8o-o8A8j? zEkl6z@GLUgwVMiApXEkKlx*Z6EY6rP$JDjL5q0gI$(9HBtwLc50q|Z3{%Fy+&(T~f&D_s5HOF<_? zuQ0xRj@QApox-+H4;+QQ3QdLZISS$Pp#EW$E1N(*KfsmGL(++!35%`R=*Lm*hU)-) zsb*d_KCZW(-znApBB=6z!Kbzo_IXET5^4!qZc@~PoqHVtO@^kcawW9vN5R0Ea)Z^TAF4s#H$lki1J2dup~O?%Ob zJ|49pAB3dS*%rDNwmX5w!KL9#g|HU-&|SXQ;PUR{Os4M(s_NM8glz{`5BMTGfw9nY zpsT(RwIO$!KtGxQZYbU78IP~PZd{@F1hc8Zw z_Z#f5G|RMsZW6+ko$?iDIP0sRssv4Sqd9ahY(Xr7S;D^MI+NEo7dB1kE8A<<|qjcldM?0t5 z0Qa+}w+;4G=v~43LDPji`K|y>+PMK1Qvg)X?eIKo4ET(khU+r>dUJil(UtlpsH#F! zJ!%a-92@=2IfP5Ym(HQ_;LOoE1lR>XDz1~z*Ng$5ul(NzRrUDZWF-niHG$-8{5?=af_j*F}mbbV}hV(t#t0Qe$PfvM0-pqCGi+K_u7DgVD>U#Uf=eJH4M z9pdblfv%11PCOmq>P^15%pm7L(iI1}lfwjlguV(*&EEHD_P*z453&g)HG7cHL(++# z2`xW8ynQNpu7D?w(YqUaD$s*qCk?X>Gs}G#H5Zz$fCr&lVxu3Q?)Gr?f-jwdamL5> z)~g1k+5pSp852Q@f!jUzC?r40u1`LO50(>bW%b~a5 z<$DyapV>DMIEvCZir%^nrYwT0AtWW(16qE%PtR2HoJyW(wO8HcNtG2~7d+j{3VqEO zn96z#mGv0=)`V_}jehJq0IuQiMZtULVozne1Z*{j2<(CW5jv?4)*OQ>{DXTMA|-yn z#f$AuL~Y>e3SWw76!u+T%(Q`KLQ=lgLGQjRz-hQHb98}R$59N&xfmcDLb}BOJsKPR zEL~`3stv~+cv6gU=+BKOAIr~hU4<`Q3weLUJp(rSv2Sg-n*8X74fKYNK|kLPuC%MO|1Kkzdot%tg9IB;xt zLe_?>$tgaD-q6Fu_x!7=HXO^0=T7JY;(4=~>vyt#j3mi`m2Bxp*b5p+LnoCck5IOf39J>Sruizjt2 zKf`quzV7)xgTuylCwsNwYI4RLHuNy@rNf3}8F}Ig-3fhIJSpP8;PRgh>Wi;L?X&1r zA(JM$vOOd&dMnVqg>5F0ul8E4DjXI1JYr_)-S_ z=h4PtyW?9Eu14qCw-@x-yL^|xwHm%uj(ebw-sO88uD}H@my8P>s~fdDYyr3*o|J4G z=t0H+m+;h78;<$#qEJG z;YqdSB0Rm9v*V@gr^8j|GLNPjK@SpNI&wJX!_z%-=+DK|J#x6N8sEIX;Y!8E87AM_ za5edjBkm2Yjj!c){&1{-C$%HHv8T$i59}~BAGSJ<~Tbg#R7$HAqI z?^@_xcln-#>mq!MG%u99JaQQMonz)AI@%`H259&@mu?T}iN?UvG(v@AF+5Q>yxXy- zydDNS15KTT|0=UWSA(hqGz!aG->^1dU7_iiMnTWScBhEe!L=Q}RO^mH|8wdEE2i)&j8dt0c2d`0CljZ z0FQ#TgQf!+iamAuKr{&3^_c0#~VDFgYQy$mzod1h z4RqQd?`;m6>vmA3K+`36zhSMxIzv;F5i@KYn08q-2c-Nojh_K_!H*8(B=j|7;MPDp zze-T)N-t;`jnssE6dNBSnl8H!Ttk&E+$rjD&~D+*dEkmk|I9>|}Kx!d~MSKzv> zblE{gb65$gGB*0LUro3gS#CPLAcu-4hW~yzroyj%G_neEm-ta0_Q7@7(mC5iBY#0g zJpYU}39h0Zy|;BVQX8_D@#I4r2bcD^Nv?(bKs<5!{BZp0p;)a1UAuXfUC5iDN_chO zXQPq&kUg;7$@~DghI@65woz-YYrO%4U4N_T;YLR7E z2WZHkhYR`v48t1q%&2FMPkUx%+8aSG`*hh^Q7f1Jpk(EXJc(V?);VVvwjVF7RC`-j zoSo_Evt`{Av;VMkm)9mGTzm z+v!ivFKwN6F4L15aMqN7^XY)z0q1)Gr&&ojRZw?2pXq55)N9UXwwQw}CCz)`XtNeg z!_&@|S@(UV^EGxgf2sJQcfNkIcBR{oHW*v-x2N_iMQwVTw^a3M`SX8s@#%SM{TG(4 zf9v|vjhnkyoBr#D34hgGH)CM6jY_pmaLSiPDmxPNw2PUZ%#d@u6r9h7^rZ`#o{vJh z7HH0}Gm?zjgmwQjnV!vIXFoapIrMS(w#ebEDFWx59D2tIJina7DPIB3G7%@SEcVYw zbQ%h6XT<45&PYyY4edMToK+6Hbvd18*jqQ8M>DJ}PuEiWS0+21=ycvn*8Ooh zpDgHHBD}odEIO-~3hG3h)du%Ci{P|gb1s&&vaH|q?ekflhAFR}$}BlEh0b8Jg3FSp zx32ehENlIlPijo+uwi)RD&zkyu&%^{-a~%+BUS^CfTrl>MYWQbb<@?OVi2M8>Tz zog!sW?xoV4@=^H4(sZrUc&i}I8A;B9>AKeMco`yHm&f(;S-PGE&s}|okAGU6 z`88loARct)CtJClIZt~No&7IagPr|7yteMRrLMlTrIoWIXf<++*5i zx!uV--PsedUemR{%%v+IZsA;<@9pZ0m}sTwOFJ7mX^Xt6y8JhDoJ9dE;FRj>y#_qZ znHEA)pHH@0IxD()6ZP?J6?OYRXE|GES$X5gP!7vU>*a0Xlz-aWO0PNQcOLBRO^zpe ztwd|x(vOoY=l&U1H=XuL4+`n*n_=~sWn0&sPVZTTTyp##tAXynIq0nRSPh*1Db^-r zHeIJ}tQ6naALrTWKgc@oEYjW_di9nj&ZV%mT<`e1p?kE>=5f|sC-E&Sms6{Q_n}!E ztcY{0gEyCxmdk46wC;rLcG_Ca@wNB1bk@9LrMU^_Ot6xi{jb2F^dj#=`qWyi}5wLZ0+ zuixuhi7-9%xgJ2x%s4L$91zaFv6E_xX~6^%q})j0PLc-G|wERd(d9abZZ z3OQ?2t%8={nnv&ep{O3K$^&s~kUAPDNB!PR70^EZ<6>__b z&$uJWXF8JhrUzLbc6*TD!`y>B$UVpy(}V2G!97Sp?m@bn9%OZddk~9zkk+OLS-?Gr zpL>vJ^tiKG)-Jsoe@k-*q7!v9^a_8Qe&ivyADQe-&7{u7bR@O8Bbm${$nV&pi>SdJ z$28NA9LmcbNEUY>Gr0pfna}M&?lm3ADDFV^<>wBh5O*NYnGR$}0k;E5WrS{PB(-0y0NqRT`Of)#H!$|nQ1-jlz$Z+#2SzFh=X3IuG2Tg+VbCaHkY0LFI#z> zr=PW&P;-yoW}oBsIRE{A=6${WtGm0I=iQFQK|k}b^TTt9#})>TGH{^M+Uj{*~^flI4_Z;cYRipjFuE|AIA(!c22Jwm5p5M2k8m=je-8 z)9l{HS(s{-y3><9=d3Jb<-4mp$#gChvU2{rPx1Vp(x*5JaU=5YPUSzk@BDYC^8db5 z(TQg>oe>qRPX9&wlUlW`fA=T<+3m{ze1Ed9?cM#!;V1sxpO{&$|3mLloPAyX-Jkr& z^O*ncPyQG6C*St{FWaAB4lJ+btQ=vT`1ei9e>?~FKi{di^Ki{-W1e!PW0f?wD^7>a z*0avx4OR|k)@&>1T{kTm@vmlErPE>;@giVYVI@M53aMnwpbf?rR`g;wsgSCOzZYD) zDn^A=7pU_td&;PgngDgqWs{8xsdu4H#dch z3aOS*KfA1rQ6cpv)I>M%+eU>HK9iy7Si|a=Q3!;2hN&*27xhSmR3_APmz6Xsr0`7% zHKT(I+mmz+&qB?1**T*S7%xZ7;lM_P)WcA(x$F_6Lh41R({83m8g;=hQ{mAWEXR4OC%lSfvKeO1^F)HX zYF3daJ6{a(s@X1{0xe){-~3(~K6ssY=*XtJL6<74+^-GvEd|l6|a4g zJKg$D60g@?Pjc7m8Yc5}tCQ@m*ImRC92LR?1>Nb^R|>l8bw@CTiuJl;_wah%^H_qT zg}IOJ;q|(t6nDMuxfEWn+mYg~*CnL73w54$sm>)@zgw3|Yjn4aNaBi@M8l-Gk95UScbbS_mP<=&7J8k%RONxNZ;fM(m%`uX#+Dsx_~E0FJ#fZY@R>R z3nXHrUjvB#5vN%_Z`1!hx3{hDOaeN4Bi4Lp;}okPulQ}rY2|R&>zZ})=Eus|1OM&f z+%nzlEB{@yt2vykiCERb5?>C?P_}bkT!-0JEINfaorw{v4i*ai&ca8$kNyuA^ZeZh z4(!{{`SK0#L0-~}mwU{cYB@C7DuWucrgt;Gpq{sx<*otVHQQR37BK&X#k|AsTTPw) zj@NhBVqTH|wM%%f>Zw};{}1OwhgNlHwGZQHso_8x>YFg}p6o4XJp&joz77>|2SAR7gDmKV}__3aMejV!~z%n4aYc*T#2=Pxe^QJDt;hWyzOT1A}jWd_3cDwl*$iP+tjyjOwqDp*!oC&uo3KCV>~P>b$P}rtDqvJdl^1re zux7$q3F|NHSz+|C6OQk=Fw~`caTd$xN^E#vu8;TE&DAFU{Z8)?tKVTM1yWoJ%%~KY z4KpgNDAUa7*x8P%6f>$)%&1B+%ZDs5qbhYc{=qKqSu6Ivq)LiYWk#toqg0tus>~== zW|S&3N|hO<%8bgM8I?V=i^8rX3v7%`u_2Z2_wibvc>lCwha`KXID5<}d(0?%%qV-z zD0|E(d(0?%%qV-zD0|E(d(0?%%&wFWNZDgZ*<-`In!4kkd4H^bQnE`bq#j3jW=|T$ z7bLT}!l;2`_8zHt@C$EQ%i0pJy2rcL7ds`flHvxGSzA~$8){To4HxDJqm5^}nRJMl+)t&5UX^Gb(##RHK$@a>0yp!HjajjB>$@ za>0yp!HljeW^`RKqw9*9d)YIj>xv;=SEu8ZzoX0kC&?Zu&K@($9y7`wGs+$_${sVy z9y7`wGs+$_${sVy9y7`wGdFt-DSHeldq2fL`rf-g7{gZ@G1EYoG(Lm}H2{h}hv!pI zz-kaSpW2SUja)`kF6{dY6wMj<)Ga7{PY}$;2Vli9QG(aD8wP!;90A}h~1~2 zgJL$U3M9VD2siP~ARRqjqnh15b} zONEv%lf z9x;Kv1>Rw!g*jq3SJ-M{>xAtV_PMab!hR5T(WqEhQ4`3eKn))s2{nAoN(n0`tfsI! z!deQW$vO_(Rag&UgM>X#ioVE*$|aB*O%8lU*ssFMp{{cVD;X71b%fOy785pF*i>O! z*b*OF432QQz;$967q(m2=fbG5;;=sp`%BnOVG$f6+vPSYq(0APF+9M}-XV238>%0K zT@!X)SO6bS;|Rk>h13*b^u0my4XFjfUKdsm4GM>)Ps-Ku@r-!xC9?P$pG;cb-PdRMiCqDIiCxm(}k@S_P(&a!oCuA zS=d!!`B8H?Gqj?|=~lx37cj7@z~;hQ3+pRvpfLP*026kauzA833EL{{17U}a!XO7< z#W%URD27*r0?E9`w?^i66`tWJ@NpD*CM*J_6kk((}+RLH%(WY!5*%$_kS>~^lq#tWMyc1MIA zCl!A&+4qdquD_%}Dx_M$kJ;l!g%qX0jJj{Odqdb;!gdJzh*Z4JJ-**9$JrB1jI{-z zkBWv>d!s^Xh_DxhQO4PhGENF3WMS00Gov=0?M@1#n{{S%m&tb2O+(>jcSZelwfNpt zUw_N_cuBBW)xNMwb@MdPsE|88V)lx#FT`#?sra12zK)iI4~Zow9H--_OdW4Bewg5RJ>)HueQ|=ALln`oK#4)fgiJWMupTMVRXyRc2k9EVN{bi z>{(Lri|M{xd1D0;uTS*>Ip8BT3TiMmpZnMbPd3n(?eXD#urZ?ch$?_^?AsJJto*nx zSRE2I36-2#-=I>%QT{&lYz&eU9uGxBFrS(w-t)wlCMxKI_&!xAXLdB*MXeI$&6Vx@ zEL3kd)1yUgf$HZT=I2ne5FdJ=1CScht8yeV^s0PN%vuX;FKo83MZz-kV4=%Rt}m21 zIw*5+P`TXfPZPEjDx;!X)Nc#i0cE>}p9nhwMYAG4{6h>(=EPT3@%f9zl93pXuStc} zV~B|vRYPV^342-?RX(<(%ExxE3Y#Tty|7KfJ{I;Fnobk=yui!CZVI!IaZaSTQDH?R zXlC~bt0t_mux7&Ou^`SgJ>x?P<7-FYTrs3kH5;xJMx$zGn}r<~_Jgq7!n_!^P>7Jq zWmH(@6?QKv>bk@35Q`0I)|nG&EQU1y%#7xr+3s0kLxjDekAY{F+3vdxUe8DSPq=SD6CuwyH{8(VReNy6V@u5#Z)JO-Lj$TFYH-iBZX1x zVUAANB4KNUy(jD=VfgP!ChRF!;rPSqtiVKE)qHgMjKa|gyH{8(VReNy6V^)Dcwv)- zEfw~r5AzdzBs&CtB!)iDKjl?XMQFz>t72Ud25r}{FVGJJ;_Jptw!tnnw zjNL$CuLz^LDo&W@r8wa?gsm4w{|&-z|3d0Bf%wl4Ch!GezX=PW^Wg|{8ij$pFdCk5 z!cB#>5Y|`NKw&dt0_ndBaNxIvtr50E*hj)>x{NbJ(`6j?vaqYd{OI)9F2N`~4`~!` zT?z?&Kn!aLdqh}MVI72Z5jIfRU}4k)bHc9)dq>#2r1;k5LxCTQA$|Lg1JhUS_~`J3 z8^h>ZEX=AH6;=-jYa#40VJ{1NMc8Wzru_@61p+sT;WlC43p*w(FJ|#LgGok(6io{< z%Mw;cSbbrgvRO=Z6F4LrsuzX5DeP@wTZHWp_Jy$h!YoV+a%TKSg;ct*3|Ha!L#n;N z&SLnIu$P6sCTxMQ&xP$1c39XC!hAWhGZQolPr&3b?O#|W3oI>$<%Km6M)Q$;-unm} zAZ)U*>B2S&+bZmsu-FNKzX|+9SQ7r*5f@>KQJ8%eR!&$mVXcJq7xt{MMZ%V{ilO*- z2>eJ4_Y3=4*d<}V3-e*f${7qA6;f%!iV15btd+1yP-gr$P2fB+TqJCZupPqo3;SBw zpTcek3u0Kz8O&i+NL3J4IVP~SzE2zyG{Kw*Q0(f>r^MCj2*QX!RMR9F=e)=$_V zqiB9r;Ak;iB5b*^b;9Dp(sO4goMBW*Efcmv*hXPng(c-hSRVhSkaTlh%BZj^C+rDf z9fXz2mz{7qqeAMquv5ay=FhgPXjDi&BCKhC8UOVaI8Y213tJ}aS78^0c?)DG5-=*H ziU=zzte3Dp*(|1p3LKsd)l6Y?ge?=cLfD_eZU{?E%Fawaqe7~*u=2tNyUHE^y&&*a zF`Omrw6LFr-4tdeb8@(IGAgW|5H?WQU}3w2eVQ!ezoPtVM=_x| zY|N;TnhC`T&oL^beu3h!7og1e&%&b*4E;uhRBmDUg{2G25LQ80Wns02)f3iSSZiUO zV*=3Ei~+4GW)YL`z(p96ejXs;j7hqFxj= zNfh0_bJWYAIO;V}*W9RgiQRXiPKfg3wwA(TJ)iE&IdEYp1rwj5RSwP!En=~vMGjU2 zL=6=+O4I~VwD7?p=7?G>ir!%AO}&6m9T0d@)Ok@iMFnuX$`R6I6s*!kjTSXg6#jj& zv7`HB4na>su-fcJE68%Ez|Tb;5Jl@9YgP}vwM}gxX~GE$ zkK#?!(j1tk(SMIu8{}IRaVI-@&Wxr#L+&&!sj$0b$!s8EVm8>QkeV)Rrm)4rmI>P_ zY`3tVg#CiE-?(Rv))Z8R#Rb_t`ZO1>B~ z<;1yW!#qZXRAFKGKg6zYNX^3uVY@{}g%tifuwiS2(WD34eIktJ3Yg_J3Zn{AJZ35? zu$&lH5;j`cIAL0tBkZ`aQ^IInh7*jC(4Gy5Qb@+TQmdj#U&_Zdb{)UhGmp0iyU z+_o~SU{pv|7gk%?WMR{V%@?*fo871AYvdduzL{+jq0iBYbH9N!5`J{}jU;!V2R& zl5bc=jl!Iru!_QHnSkwReUIa#dckafFj_ibMz8(46R06YO9u=WiXkl%FxxKdfUtwY zP6|6CjFt{KY``c~Yhm~moUg&h_~JvP#%^L$-k7`fxj&~g|l^bNv_3M(h9lCY-2S_q?e3phS{q?hBPchZ@? z3>9NYcM}X>6T|hwHVOM!*k{71NIC2;!u}BUw=jB8o9*r~3NI@}1=8CJoS7ZMX!WL> zbAF!h;}TR8eX1dfirZp3AAIUxhvJh<*VyX#k@>!vR=ZN}IV}%DiU%{yx(K7e3^N+c zuw5e3p|ry8i)^HDpN+q4SDsY-i-o=dR--2*1yXqL9&s>hV^m1dZ3eS>!WvA>U9ZxP zi7kRZ10ft9OLxjF_8qE3|7V^%FjCwsGNWdZ*_%d%)!U@v_rLDzYj@}8>C;eJbOYg2 z^oY@eh{LDe$C#yxt9IZoUo}5Mv9E=J0INJuT%2i8T%4t#9Hin?^gqZ8$8)Ukbq~iX zA~ffc6b5FnVAjJZUUX;nys&r0ZoRM%g?%jSD`DRX`$gCV8YObV^rjpqQr)PKYACFU zu%5!65k_}h9CoCzdBPS6qj4qMQL{n{qr?jW>A7}-A>~1dvmw2c!;J2@m{Bcf_JA<@ zJ_NHC!X6X$g0K<7=f^iO|@VBcu^6vpvEN2|Fr`z8S%Gbf3jx>1K!- zJ^RIM8k${ZGw8{0hKmH!${({<$Q&C!ZdAy(pwd*Cv zM~WZ*Vb%^wGaF=7SW!E~Y^pHoLYVz7j7D0$;z;Hpt6dLCffTpL%&0wPMjZz;stwFu z6*fy4rNDNSLJy}_tzf?R>mT^mTkQtn$b706FgL*Uptu2U29<%$r>KbOGV`g^qNt~0 zmMW^hD4I1I9$&Z9_l+ku1li}RK#CtWXGWERS%0I#>RDlvgiRAh9T1154v53jNQc=z zVdsTirY4&WsfM#5J@~?m#y8Ape8cQPVKs$a7Isybg{F+d(v%m6%`GgyQMu8B3oK76 z?(Fti{uq}$U7q~d6HVKFgc9iPi5=bVKD+DL6ZG)JDOwXAhPl#b3F&qMw;Tlr&8+Wrc18Re-WJHZgWT-G4NzNLMUT{S;2okq5=9dk?E3}OHaEn6sO_%$T718Q z+Ul|+!j6kNMT(}dyy~pLb5Jx&@v2KuAGqpws1M`S_xkDu9A9sLVyq*IggTP2JMbWd z$$4RP!84m`hyap$n(giRDSmtL~t2p0<6ChS9D^te0QeJhOKaAQW75+_1$xH0Q3Y(CC8U4~(` z*eHC!is}Iv9_*lsOfsbC-3h8DVYSsLJn{lXl_;$C8ihB+ps0T0d3K{hiYgn`-mqKQ zNQD%=d`5LPtStN`g(*S&rRyTB@{pq87w*aMmoA$y{tXQ)JWmBh*H>84)8wQuromsj zO2h68BBbz*3H+sNIIJEs3S(#}y28V5A3+N5OX066L8Gv`M9-u%{7K+%V)%zJ4~9!@ zXB&n0rGym_78RB$teUV|!Wv9?rdZlzZEClQhY$G<`%KG8eLS~$Pe5@?M}rG)>F8R_ zz=jud@t506y0X?ImtOTQss%H8_mX3&h4N?BP}HMP9CLdpj=3kboZN^~E4jjr@I|P% zTs0DErK`q3(WCfYHD1&tQPi%oFSV<0yLQyBGNX2NmCF`Ez2hosSIHMGCsjx`r25E; z8dg@+uC8%|P`kR;Rn)Gs?+&QdE~9pp*(ajD5Jl}O`%=65t{Z~d)pa3PQp5UQyw4B5 zbUXGG2zT+MLaH+gnpt0PNO<%DcO9QG1*@oX4G z+ru!2Q6ZHkteCJ`!s-fZCXA-4I6k^(+3-7IM}%D$ zc3W5>R6!1#ZWNy85LQ`OD`AfdqlZ_YqGlnio)P#08Z)Zr_^%#Dh16K6_gpr?sF0ck zwa#U)85L5?q3B$P)k>rA76ug6qOjUx6h0CNMRhE!_RvZfN&cuGRW1IgAE}U{wJfT? zVMQj<5gKSKAjW0Y4tc^Z1jliK#dWpL!UInkOvPK~YnLFBCx0D^NZ~)AbxS z4JWTR`$BPxnE*GdR46J(pGwDHZZS(kWgrhe<%nx0h zQp^Sjn=WjoFq+I^yA{Gd5Jn4?oW?ga_+mqv&0%<2*w4ZeP%GFjVibQVlo`$Xa9DaC zof$ok&WxTyXEt8gBBL<)S}Ks5BsQcbi39H!_O&n{svg?~jlzq=!qSA57k00(Uc%_U zs5lS4#tNiqPfnPIjGPD!8JW?Tkl6>q=#phd&y=%WAz|slCJLJ>Y%UGHIPgM&IWXPC zEYT<&ov<`vrG=FjR!vwfVXcHcF0Af^#>LWFwtlQl{Iwgtoq5dQ>lIW|zRYJs@nyaQ ziso5;>MN*zIBdL>glfTxK88W7JYIM4dl`TiL!#E=$}*s!osAw}y*%*qPuAgqh95yD;)HcQxR!rq`(mm_>j zAYC@hP6+!$*x$nFF%q^bU=$W{t~WN2Er9UZ^33$#G%y8V$3jh4mG-Lf9%{9|+qe z?2NG3uLAR;>*0ixj0&kNVWouC7uHDFL}62f{UGe5FmEV3jQ}fpmw~>4!wFY43ePAA zqvw(Mh{p&UFO1${;jr`$3)>wRc1qaq!u}MNjQcaU{llFMBnK{T6kZh-)=gMXVdI5O z684F(FN9g>#yNw2qe3dbu!1pxB?Oic)>qg-Vbg@o5Vlmb#-KR?Gtug*ll6q+}VlbGAg8s3o9+Gny^~J+PezJA6A_O4iLlV zgv}SWSlA|E+l1{E_LZ;-7;bSrs%#YIZH3j#W7GIyC>q~mI^3v`x(OZq3A9FY zju^#{RWK_gjGn4sMo(36SbBC-tZsA_Iy~-ThGG z5xY+{5cVWJ@jljtouPh?pRDbFE*NWypgdDbiXRwY)(y7I`WwX$3^1E2j1Gv|LSajU zZ5Fm&*a2Y&(c+uH^qdGMOwWmMg!FI#GkQ3H89gz=>``GIg>@CSLD&{yG(X5;X?~Ct zMjXXZlnjd-#a|3#R!tb)5;A*77_EXb`&d|RlrA$mHKam{P7SjX!bXzf5eLo0vEei^ zoFR-p?!bZ13HwtRP49D9x~*fo97f>|Ll{lEu^r8-vE2lE#*5)hfpf(0vaqYd{5T#C zoM2SQeX@pGA7MkqZn&@s!X{_4n7bgsf$7GLGeawx%tA(m6s=@3yGIy(JAv6?VJ{1# z?aRexKj=z2PZNy7dw#-}3VV}Od~_54QjdGx_*5rU-!{m$ zPmP9Z?kc(-TDwZ2lJVvGyr@l39O8Q@DleZpCF&X!U&4OWC!Q9gC)cMSPM`b1LT((Y z(!?}J(*~-g8x2iDbKsFs9GKSgC&s^O=KsqVqnm2J)JfsxM?}i3t5N)X1+ziI=zy5f zlNKCyiLm9uz7V!w*l}U>Mz0A>4K_y@apooZ3dMQ~c*ZC^uqNz9VLOCTJ zF?AF7I2T?G1mpAC_#0T=i@Il&7NL5&Y6%oAc=;49%JS;ZPojPo3lrZYgIX>#dISuN> znT^H?g{q5Up+{pFYNIgP6t+aza$#G9(bMfwr)>v+DXUz3YzO~FD^^y@niT(k0%mP- z@XVeyD(rp=ju~BpY)981vyX*+CTt{*f$hc^6;cy1EL5s{gNeQjXKN>a!7x{b+<-qj zKX&pTay~w8Cl+l9H_f);Jwl`Sp>}3e702>u#_HlPZk6B_%{z6F8as~I4`rGzsEl}v zuKumwScV)qDIRDrqq@b61{%z$446^fVn!nxW^V|4OW1m0n}kuhaM-;x(BQxq1pX$> zLm725Xd8uxXoM9IMwboSRTI`&STkY0h4nKE1C5x#(PFqz*b-r@h0z$0GyNl~5+_Wn zfXprnyDH2=bHa9hqp(Otik>40F+P0uZxv!Y+|=mh|y=DnaXxK2;E)I5wXu zhQGAl;Zs$i3cIW+sd(wW{?1mr=Ol4b{2(#24zOZ20g7V7Aj2s9%SYqOuL!YSBGTco z`A9iu`}wEk=cd0t%vn*i!{d|t`x88|W|BB5{PRorF?-4=UQJ>)SlFv#H%r*-!sue- z_&yQ#g)nNfIld#U1kz=~kS-GrOec#Ooh)Y5Ml+)}npuBg&yu2dG?SfI2K!%dt`G7T z5A%3x0FoLQFZ-7^O!@YyWLWiyZyxH;Z?$_y@bZtr7N~uv@~Y2ccN_ zU(<4Ysl=SOV*d6;xX|(Jl3Q(js-&oUNyRfq`p;Xj(rz}&gOK7Ub(qnm%#1R`Y@o0y z!st?FJGy|`jxJzk=Y?GsMsp!-S3TLtko#^K!)e5vw_ft^H8q>2bOy#pkM_6s#OMx$ z&mt-QA5P4kgcY-%M&X$`VbmwE-3(!ige?_D1u48>%@J_H;Xq*Js&9MN;2e1GUP?FzG9=q9uRv{480e+ z#grD^zA5&;*xGQ^JF!Z~qZ3RcjCSd8fkl$+WvH<7W3k__xHRnB#P9J7rDN(Cq$i%W(T++@g`WT^1ShKY?3L#;wPlmptm zAoh|N;zYZ*(ch-w7QyXesEBBYiimb4ES<>E-65+kR#OZe3EH6}LA&l^y}Yvi_7K6L zG8`}VnAo#ov&3EzTPlW%f&s4+n`XI}Y^GQCEpe#RT=Fj##7rR#F;mD`Zx-7I-=xGWqEki;BjAL<3Bxl40tUMQxEOR&lFM z(QO**U|2dYm3mMLD-wA%W7(L+y^Sd{?0TZYCxLkNV=1f;A=@SOkR=se;J_5r1uddM z9g|U$(Ex{@FxJnRYHG2J2J^+1o4U}k_rRt%Lj*;8VR#V`P+f1AX%qCgP-Aoz2%+PtVl%{E7kf+WQ?bv*uy>CU{7o!k8K#gk z-I&&7AXtb`!)ju6#IPivc9)5@6zeZGP^^RHK>CN*8+40r5|UYkn1{{m=@VY&l`Y>E zdr}OC^3V>4^3X%9<0Qj6PO{6zt`x(19ok{NjdhW98;YbZ_`klkP|$okf^4D~x@u%|#L$kDeJ+Mx z5gB?wP?_Mju>F)osy;SM6QC1Gqsn5(iJc;LTDWXVqEd+k0xvriUeGvMDp&5^*hBez zvB$z<4!qVZ`sH3*8EaaY#l{-mH579o8FC;QI*4Sre=@X(WOy4)hW3zbvRF>+HL(q1 zn^4;6c%LBJNV1GYlpYrMif0Otq1@B1jqI)yLn}x-w1TvoYPo@IhF2$~gBJxCd6f=6 z5L@R|uKEYDnfVWzHuv$11}#lpWxm@7O-=Q&1dImVOtp3lMF*ip1N7Y6Ifg`_-5Oo} zRtl9wCuf(ke@8imo&dW*C!%n4b`Wc}2`@I))-l{BEUedL|K9A>1pAlX;N2syqAN?c z+f1=1i1*w5?f;^|f7F?~S!#w?*=T^n5t)hbjVC&JM(isotfZkG-q<1^M+2OI&+*Hx zQg@hQWJa5+VJQ&}Cg|$3QgdKu;oIdmOrjEr2KYb`J=`F*1%}Sk6~b`k3?cBj~oJj({71o1UEI>u}RBZJunGVBi}!~RgRgry!?#w%OW zCw8*fIbw~(kn(?F5lJQ(F8G`b=Zd{4hP|K+c&ixpeUkkmc0de0G9N*&Y|E}#11wvl z;|m0v%CL>tbz%d=?h?Zwlz}`VhNA+=-WJ;-wp%QFQ1DMdY%ieW5?>xi4Z`DojxCS$%kBI*wkDE|xPa;!hvFO$Sw}I<@sQmr z_NW+UcIbAx*mGj&#L+GKw6we3qCs{i-c3YuXZ#jxRp8Hh`r6E}-Yy#aXlj5{=-&@< zsb5FWa!0`p?^!( zO$={t$S_cZvR=nXL5vjXc)HkgVhhD`VxNd@5NlnV1jHJ)ADx#Y)o zJ{n%_m7Vq?hTVMh5It$yVK*Py05P=MWLN;&HCN*A*o4TbmGpq2*sUZ(Q6fVDBI^?t zou8~!9D{HI48kidipDF(Gkmr1tNBtncXB+wq-YkcA-k+l9P^Q3%tr>l$@+-hC3cV4 z7_o=MP*Ug?C58Si7h8$ULx{XZ!wq6zi|rCSAa+O$nT&3c$>`q+Vke1V97sD12B0kS z3=%|fqvM%k*sMy1Q4<}%A%<{yxNn#l9l3|bwl?fK1%SwpTn+QLX;V)tb#BgLk?J((2w-v;y zh@C1{U#zv*wRx5e(4(b?z49!5OI_@miO{~AzK(X;+m^Y`} z=fz$WdtK};u{BiavVJ7EMTXnO{t)|H46DHz>0(~lP(=)f*fKH~iD5r4S!=OtO}YBd zPRbNSN1KMXi{Wd^WDkoyE;dzchS-Z@i^T9fKKPOeJ{J2jEBKY*&tm(C_=yZL zXko0e3z-qbE@UzcRmd<@A;SQLtch4Fv9@B5=2euf={5J0Om;+NJ?#@X)?1k4)O4w(rg*iq zHPvsstCdVW?^GjGI8iVf;B65VW;tm$)YL+Eb+oB>oO;9*-C`{P**wg&((nsYsOY1? zE>oB)jRrr64YM|u43kDwHOz()Jk1oNzgP?rq0jH@>L;cc@IHU_#;99tLU@doH^#84 zDMkhhyvR;B#k)IK>LOFT_o1ff0)uR_Ri>WHopVC`#q!}3{p_$#B=fZf`6Y9xbbuZr z*)Xrt!6dP%Vt5?1TPB9iE7^LnZ^bZ}Vii6&g5Viq4aKmYgLYSl;Y3g}>>#3tgT(F@!wL}EJuHUaC787*c%4GW%VfAh3^S*6 zyk2aZ*bXtwtJ3aQF_a6kq*u1XRSXNmu4Q|IE+-AolwlLGW@0#$ly)7(aE>1t&hdjv z2V=w@62s|zw0lPE1*|S0d`WPv4DtObdWcz9+WjK-k659VT-sIkif8eWT_Dy}c3tx< z8}twym51(xIXa#tHcxh_JQ$g^Vtd8D7b|9IK|9nU^zRh0)0}ec$rXZE%dn4FKe2nn zhKWrTn<2JB4Al(-{#tC8SR!uapE1OTnrT?UEBkt;SVOV%#oCGC-4xvp61!UrXTLBE z%*4`esaSTI;3h$=L!#l|Vg=UwA*<|_J!7%+#4ZrKQLL-jP_g@{aB|6H!Ra!5Q*5~y zPSEF_;Aj{|247ev!xxsxYKYYmYc6)VSWi=~{N& zJ0$jxSOx0_(Z4ELFF9*Wh)x;rq@4_J5W8FKUa_aerid*STPC(iY^zr`pMdTe14j3Z z0avho5Lp$kEP`T<#5#+06B{lzQVcyY`iGtv!&nZ*`Gl2%U(0Zp7`kF~jIJ0RpDI>g ztfg2hv0KH^C!^bOVvlBg{bvV(3NDo4Ct@4K4vGCER>3-Nj9?Y7EVaZMiCr(&G0(EW zU_rbNU<@aVO&41(wo>eCv0Y+?Hg(R(B)qalN9;tgCQjM?XM$#e-DKEPY_M2X>?yIy zVy}w5A+|+qyVy@+zZLcMpPfQsQ}v8>8L!d-Ci2NJkX|L?` z5wSDHT8ZJ5M@G88*g&yI#X_-#VmT=G|2`4iAj4n84u}<&%11Eam3^B`44<`TWKI;r zSFOn|7Q0leM=ACHdJB${;R9l`#O8^u6nkH6m)JhBMCp8_GhXrN9Yo9OU!1+e7~*st z2ZL5(I7o+VpcszNA;a-Gbh}UthvtxdBDO*7fY>3YT>r0%Z8WBbIQWK+8;La$>nPS) zEGsr#Y_iyNvE^bb#q5jT`Tie1>CJ!-$?zYs;$`y@EajEWH;LhZ9J*~O)=KPFvHoJ? z#IlbHE)>j(Ef-rUwn1!@*deih#3~${k8~BUtW^|iM1}s}^@1H`I9MzzHd$=C*ix}& zV(Y}#i|r8GEq2h9@BjTNSf*S)*5$pjQ&7ZeiCrjmu^7HX&U}RLkn@rB5yKbB$wr8c zX)XAi;9Rks*lS`d#oiY?t9(A-bD?tcuZ%wzbIWF?N_yV%x-i z6#G>S(>~^3ISUx?-x)C0%QBGT!WRndJoEMfon(YJ_cXdw>}jznV(*H*Cx*9ubc?rr z3^ZlWhpebqwyKT_{S&;;r{VcByin{0v75y15yK=Q-99Ath}bkS>_Vd5hhliemnHm4 zaHkCa7AvrPLpz)m1!bQ?5vweAoY-k%XNX~Pg>EsqLjQVZ1#cBxCH8^XMzPIeI3%1N zp5;|KxLoW?v1wv6#oqAB`X`v+WNa{nNe{6xiR??Uuf*=O6rkM@uWV?JTi* zVoSxAL9u`Gf#5nB;-x$TIVhI2=>jsWB4Z%6#p;S-JsIt=o{V-o#CD4vj9WpZ;h%yy zkd_Pw($aBFvD#v1iQy#^?Yf9{7rRqzh}e`o%LX_`iH@;bg#o`TcAO3B$xiSp9pJ=S zvJ1to5W89or_j>wCb7mg1Sh-5soeUT$ZR-0mtdWw}BUOmSYul6y;tD{V@9{oXAPeCc*<%dl%xF=2dirEyssbpD@ zSL>M~TW5-HFR^?=Hp&#)J7Q(*0sCl~qTM^DaO?K5k55eU-oG@}F!z0*`0OIt>&-b= zgFvO-0(P>VmKtP(y~?;+oou2QYIQQy<#da>oa_y;x5dz8((W@f6EwthJ|U`gvZ`KX zg6d**#ZDJ%Cw7C_En4$#Ah4)_^cF-;4b$R$xz;0b5Zfe{vFyY^ihIRxh>;yH z)=YM`3o+|G#8M0z;$QsPSI)#f6#GK#OR>FT-;1GDpnq5qLI2u|brQ?=66`BDL~N+o zrB-3n!z;Y9JyK#fiQOf3kJv+EkBB`(h2GILK`b9&AXq-YSbrgg*=w@6)%LVYdu7WG z#c;4W?d}&FE%vzB1XHzWI71Lemy==Amw~K+$}Jumzpv1@Bd1wq#kv$-^~UxWb%*M) z(w%MpPn9#p>ik5jGuQ@U2O!-xHbu8soW|<>HB)rEM+_fSXN%Gel?%PO!xX(4YKkL< zDwgAK%5AzY{&_6h-tqz~b|_ZtWT@E5P_dJt9wtM@PKJt|Y>pVJc(M<~)`{&F`}VMh z2L(~Z({VYwHwIGCE1P~3LlsXutTv`yOEJ8XCBrLO+6@)E&nv6g#|u6t!&;VBbc`Lx zbbNtWQ?UtRSWibgY!IW{C1UT0trq(fiWNIH%+qmido*;6t;uBfirp_ZNo=avi(*** zMz?Q?y(5N2ZwzBkVXM61?}C5Hu$om`G_2v3?W+)LAXd(D4(%#Jq>;aRF@G29G5!)e#e9}7CU|js}s9TQ4e2Rr>cKESfgW_@mvL0f+y|OQ@iH#PU zDmFvxMX^OR@dSS#Z|pzH;DD|D&xK^L%XG7 z%b;*VT=j6(6Y;Avtc5N%dVj7)7{5P~?Wi!Ixa^#)qgj#N>Xn_~EjCtcoER3M)9qxj z*TmiwdtYp=P1g88P*u<|s)~-e3ns*?M0|u%8{MDlIWhiXLAaw-yhIlFf1``}Oj>m6_!-w8eV0BT4I-o;X%<3gAj&+K?u~1>EJFwj7Mnrhm~j=Vp4`IZS^%7CS}O5 zL6;1ZGGwQVoduQq)qu*=-|wyU_+0yDsvHH`+HP2K6#?WUNPXcvF5_wpHc8t*qw;VC?9!9@df7qQqn z8mu%`IrsRy`11wfqS3Ju8QkgsyJSTo+%Y=VG>bexd`Ao7WOoCzO<~Lv4T_o5 z?oJ`to1MZL1bo~m7gYC3J!Oi?g{F~NZ=R{2%+F}BN>@MB)z7iy@?m#5Zjr)*qiArN z6wZ(7=@@qRP<52TJ|D7MrEt0o87ASWMoVFcjJ{DcC~GASM{(G8Sd4-T9Bg5V$NsgI z!emcLclB9QCs}l(!8}tX9Q(o)BaJ~TdJ~pz)(s=Wx4Ot~FqLsGu+*!+vzu(nZ;qc~ zlF5Zh{~9hmwwYo{{mv9iDkl9|QW1BS)Z6ATJuG(Tauk52EVi;f1EuJ3j28v;EGuabf*{BMWWP~$ih~=$hm^gz<2Pm9m zAB*9I3E5t;{bGNJ;e;sK;UxI3zFR+c9U2?u>oROc}lmBQtF1twZS{b$%+a$JC?10!Iv9ZPSfsFGi9XusAS!}M@d{eIeLwwB) zDjnc!W@Kx{Hi>N&+b8ye*dZ}|>Wuznis$_+?v;J8rI=t%s9d*o@x767$9p!+>tI#h zy%rPuo|IQY(rzgnifGq^knJy zEU|ON&<&;?y1_$pB|eL9D9Ey&#ce?GHpp%i!)=h^HfV?2Aj55t;Wo%{8)Uc*GTa8) zM`CVLhA?T7qG1uQc;qh`CJ$+c-YXe;uVk1gB*R1@SzW8v$N3!?GQz%Y%ks+&) z_3(;kmXqBthBPL7TnuSUhHMLEUpx~F?e@u@!o({L7YM!#6@I@Zev8HOx-a9s3$k}B zmQai(8DdF>Sdt+pkRg_2h$R_fNrqUGy(os9K(RKBMHTB7Q-fM z+73G>@R+aSYYM_$Ta(xLxoYG4$PO zSZL3Z9%9~@4D-gZ+(+NV&nXCZwvUx)*2>IJa`)5LD}Kv~tiPCb-Mrm!vB_f7!>c;P zDqV*7&>`Xjl@1~nB3aCR zYsWu!`aS+!DhuD3%b|D{4H=#_8K#5Dkl)EL9ZZIIV`MYM=7_y3_MX@mVqf9`(D5IF ze~V$3gn=C6m3>59>@>0S#ZX_+KU9cxiwcpfpV$Deit@9CG@KAV)Gt{n`;M$u%jF)i z@5KHRi`WBW2w3Sx&q|76kVb|v8tpC+!|OFN)J>*P0itpu952Ji#HNTnD~6#NTx8rq zjdZ(NY@6)<6hqriyQ*Hd;j?1cMo6|w>;tilVpv&9yMtnXiX|w0Aec8N6>>m=4itgqPZ zVvmVEDfX<`EV1`v*6K4h80Rw9yJh&TSOcp}Xm_?(>7c0?sv5e*xeBzyD!DeO0n6o{ zNhB&pvs?u5u@(0-%-d*ysT$0#MFX5;I@10MgEQ^l;Z9)>F6|yLHNi2I2~@F#K^w~# zbc+|roLGCs6z8qpHN{!Ek4!bRaH7H1a=MJ{#mfgxP0C$WBvC1ut#46b)d*z=x|uVw zu3n`BG|FUmh>aIRN0@HW{iPkczhukAR)}pB+l;D_hIlhf$7s>XirZb2mGa8=V~L$8 z)=Ui3T6Bwj{B+wGQ=DZ9pi`@I_~L}9pfN2SnN5mxnjNSq0%kN3;jbkkZfqIQ64@m zI7No@#1@D>W>Y(K{3KLvcG<+q#k03qfYG3?JvhD%Ku7IlbHi_pa7G-{np7*KK9s_e zK4#rdv@|6fE`>!D zWKHZQ7=^Z`2Dm6-MuJySJ<#WpcH`)Z+c&~Yf!RBNB_?T@uo{4>jntE-=oqVGsaBc7 z+-uYwiE^sDyNhi8iu2o3P1SS^hk-C!Uz++ZjqMh4`0wW`X(-z-wY?IgzrZAwkH)5c6+z{56zg zyG^m$|I1Y6+`w9ikIH57f{xWb6uYgpTQ25~ zf+NHoGT@yu+%JayGVS7)iD{SiienKnj74aNzA+ib(q!$#Zt%*geY~KjVILWe5qn5% zqS!NHFNrM{`%vs-v0udwilG@fp4C3u5ylYH6pT!5F;rz_=ZZBKyIicjSSK-5esqh` zKEpsag6v5w{w16zxIl(0#L(ZS9qLdz-Y0fQ>>sh>R-4kUlvg~qgAB)ZIRCN%)({h( zlZOG`nUY~Yi8BnaUYKmKSSa?C*!yB@#eNX`MXb10?Z@*dxKd6c_n+)lCOB2>GO?Co zXnz?Q^y(PFabk~(p(UmrT4LJ0DYhI(!4Ym1{91;1F-gb&@hTmhAcpZc-8K|EU+hvb zyt1Vo-n-MkTg0+x?g`P{(-4h3*~?<<#WsrV5JQ_tw^3{U=ob4}$Z+Nw8P*?@-A9Gt z-zY)!Bxv}w*sEf1h`lF<^VR4fHoVa7w_-J|WhKLo7TRGS3t3}RuKu$fMS?gjjfRhl z;pj6moS8w#JH_6yhL>!$SN8c>YaPhSdX)~)vXY(QRXVs7#}yD>A$YUcEn)-2?h?Dk znjyMv=aqfoQ*40POtCp)I9&j4u{BDtgS89v@J6rfvq55m#Ab-i7F#0ry4V)6?PA}F z{RG9~UrBqD!+^_pWqaquYKUDT)#VJIxTg(+1CJxDliD9CeY^vDvVlRrV z7F#2Rmj!gY-5!_^q`)FYh%OOSI;bjET@34EX@{W|?a==x!%`2jSFG(OTk2IhaP#NQ zN8et(MDx)@s+YUqn&!E+S0#oO_&pFKEHX^BhfU42zi9A^{mV3cS64qWHQQa?s;hVk zbbHX$Ja-kdh=>9gZry27vrjD>JI66>iyr6LwdDkFGIg4}+|N|~-0s$i?a^@ml4yzS zwdN;AQ#f#tDjoC^>nrxCSSW@ZK)26{VeuRp`lV3m07*}l_R7xVphDAzm#j3zV3vlL zi#4_wlU?MMt*clL^}9?1HOA={D- z7sH}QvMFK+nrwmCdtx7oeL+>x()dfkZ!Kl%7^^tzhFv-)rrYW8$xewuk!%SU%erO^ z#g7h?T_@JVE57)n9g>T7V`YbYLiUsxiWwP-8QnH+bxqp~T3^uSg0{^U-;`)y;Fm~Z zMu8Ip@RB2Iyi25d))dqIB~yH6ubYCaXn@xRyjsM9;nibtxAqqeZnb~u3(7SW<^-rl zV$?%9*AyoKmYd=P;zm0y%@|^wM)tJT4`frkN(b}AuyT}kOU0InValIwu`8K&JH&S5 zyv9uKw_XX`fW|q%$1Hi7-9M2+qLQ_i!s1#o>_lZg#j^KeF8@uG!geOwb+=%7b&nKY z5i+0NTH7Sc1y)oOjx}|R1sM&-n_@P8%~a*wp#F)E(mhcCn0cYN!G#P}9a&GW_@PiT zlw{hClN~AtvdLmg#g>JUZHao>9|eAuQ8|ks9b$P41Hj}pS!Xd6cQTY^+M&3U4HtV> zY?j!|RNh+YEycSNpP~LSLvX%7+Pi8q0y!tw#Sn-6T3_d`i0x zD+$q{suff;@KN_dj8zeuEH2PTr@mkA!{Ldu3&Jf=+J{3?xYA~BFRP(K+mBT`955pB zrT4CiyhBff-rX+mraJHL9+_AaX@*2)sXd*w&+k-<4nr;k=T?R6A8OYH8A-hX#gxDCdX<{?Q(37Iu#bOwgkh#T%3}n0D zH!?&-X_)ki3lParL(}aAvTG{VL#($L#+r1C*N{-wWtb#5RfaE$EfT|03OdG83I^Op z>^iY)tRkUZJFjf0Dt3z)*4$L9?2;evA?e|G8RD}W)xsi+V`oQB&e<1n&x?dFwTtp& zxK*92z@k_JG)vVi;1;Ery|Vix!t`mDmSa!Oeo(#1K(BMqa1mYGO6S{uV2+gr^-E zLAtFd*0@z08wgxu!+_!6p4A*RRPOaKadCb;aJL1_R9h|8z`Q0yr~P+JqiE362Nw-6 zG-m3KFvZlxQb62wG{GEFcw0hmel|sK{xa3i{;d33{43|4otUT* z%kJ0Xf?@$BLjfg2pPmdeA!NhEP*lmD5Su850!p_iptO5e%zfmN5LF8ef0JR%qDz+Y z$`@A1gHAkDskbHmt zmMOL(7zHsGV#L$S{-Oa=hb<5m^RiVseDK8?#%frA(cpYjbbGZaG!fCDttsZ^Xzt^g ziH`9swt_KbpqP8fkbB9Hd&!V{$%cs`_mVv#hI~x+f*A5K8D1Yl*#tW(8^SGu+r^Nh zX^0$6yND$M8S*w+O|jZyjm40+Y1dT@jSraR-a&#$a~e(-n=ZCcEGLGsDO_ZNwPILv zL3X@XcFL<5y8jFVb9RSpRfIXlV4u0E`*c-=h2U7e?^uj}e6 zQ#IVxji#=|Xf+z(EiBo@kNDwzTN6j6m658FNN4z43D4ed^A&pHwoS>hMpx22ZU?eC+lUgZie7h8GS7Fnb^-_`^B)&pKjA$ zr2}*l$W9PL*MJP0g`v^`4r?^k*pdn_jtKAZ$~L%&VUI8!PZMivl@HnV;l3M^l`^vh zo)1s#XshavwLC!!e2Rp=*B3ieY^T^>vA8`{$P3%omwdnYL!L>5PbP5C6 z4VC-rqr`*JEXz8kSE$hYpu#L4_Ps;{9Bsx@Q^yob%~__-HQQ)#iLPSx5U*l$_1W$! z&K>k6PFEi=)yQ2fkIA-vxuP2qlakq}$`4dJ=wvyctczD^SG$tATEp34nw#uN**z;Z zOY8%&bz&HV((N`^NjVP##LYzpGZ0YrIR~+`#M+BtFhe_6_c*uriajVh3>9gI{y4*U z#VhM9?iAcBLp1R;L={fQXvE3tiCrSrLJVb%b|`9ei%DKGO!AV=gyQRqIf7rv@Jlfq zzCp)7i=pdBR>mt^Ln4OxUIx-s3^|6Zt5^?o770fSJ}ATI#O8{hfq1{7XrGtr1RYL3W zjNr>Md<80J8ydbz`>8|pEm^3LX<6jZzq%H=*?sKo|J(0aB0H3VtDPM>P;H#5XSt1q z9LRNM@=>a%e*Q7kZNg(N;XvrtNqBZ8HOs9!bh&ia4ZO;ikgP1fhk`7$P{mL zt0~;3&6n>r*~G>AFH>}a6>l^wYl`Vn&D6!t?sQYMyIiWXDGbe`0eT<|ZlA7Jv}&Df zfGPTXpQ$}oM(rVuGkLl58f(dU`2}2dSC^Q jTs6ay}9H7-4TKAh^MI_ES6oR<_JG)U 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 diff --git a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.ipdb b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.ipdb index 99e1bce0ef14e4c3a1868e4946cdbfff992f53b0..71f1178c24ca4163b56b5a51b6a9ff6504b09e56 100644 GIT binary patch delta 31100 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 T6Yo(m@vn~U=55EXxt;cZLMRaf delta 30938 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 diff --git a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.log b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.log index ea955296..95c9c521 100644 --- a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.log +++ b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.log @@ -30,12 +30,22 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharp stb_image.c D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC\stb_image.c(832,17): warning C4047: “=â€�:“stbi_ucâ€�与“char [33]â€�的间接级别ä¸�å�Œ StgSharpC.c +C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared\minwindef.h(130,1): warning C4005: “APIENTRYâ€�: å®�é‡�定义 + (编译æº�文件“StgSharpC.câ€�) + D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC\glfw3.h(123,1): + å�‚è§�“APIENTRYâ€�çš„å‰�一个定义 + +C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\wingdi.h(36,1): warning C4005: “WINGDIAPIâ€�: å®�é‡�定义 + (编译æº�文件“StgSharpC.câ€�) + D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC\glfw3.h(133,1): + å�‚è§�“WINGDIAPIâ€�çš„å‰�一个定义 + D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC\StgSharpC.c(23,18): warning C4047: “=â€�:“charâ€�与“char [27]â€�的间接级别ä¸�å�Œ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC\StgSharpC.c(67,5): warning C4047: “returnâ€�:“char *â€�与“char (*)[512]â€�的间接级别ä¸�å�Œ + vector.c 正在创建库 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC.lib 和对象 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC.exp 正在生æˆ�代ç � - 0 of 175 functions ( 0.0%) were compiled, the rest were copied from previous compilation. - 0 functions were new in current compilation - 0 functions had inline decision re-evaluated but remain unchanged + Previous IPDB was built with incompatible compiler, fall back to full compilation. + All 176 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. 已完æˆ�代ç �的生æˆ� StgSharpC.vcxproj -> D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\æº�代ç �\StgSharpC.dll diff --git a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.obj b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.obj index ff33c977c2d8b7cae4b2f5eb301ca09338b01b50..7116ac6ee144b69c8fd15eb51b2cc81a7f3f19df 100644 GIT binary patch delta 56778 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 QF&FI-$_L_=i}tqv4;>hJ82|tP delta 60263 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ⅈ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
      i8Bk@NX4(FLB1>&$(;FIc_M&OlrdpPG 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 delta 7 OcmbPW{7QSnD^UOrU;~H% diff --git a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.tlog/CL.read.1.tlog b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.tlog/CL.read.1.tlog index 3d3e91a3c8a3050a37b5f824c118d48f06509490..440d5765732629c4aeadbb0ec6096b2e084fc1eb 100644 GIT binary patch delta 429 zcmcb2kL}QZ_6>fF+p`uiYB5e%NMPjJ{K57P)AU=pj2fE{gjz5!ckpCnoLpeSwf#f_ zV-xe{zQ_o+&2%b$ zJd=6Y6(%3x$eCOad;%i)&+*0NH+%{}?@2IE-ec1--EJP^ipd2@O_K`}_@*Z z(J!XSJsmC6fxezLEr*e1^8w~5j4I^M@vxx*M-8JrnH82lN6ruWA)PKIgQL}I{YIsW4V0H6S@I{*Lx delta 406 zcmX@~pZ(rFwhexale^4YHlN^ZV&1;Ng>ezn^bK1XXKeQ24P%=e$Eq>C;2&ejw!@4^ zbf?$FGm1=}7dT_PUMAxwrs+J389Sz*NnqsJe&GY-C%)-%>lwQ?e+q~r+B}5>MlO72 z1udkWS(`pm&8+EszZpfgt2r^s$q^NDC-kSseP&#--D@Lb9`p1Ko{VCUpo0cy-{d@J QzR6k4+qUod!pO!A07;jo761SM diff --git a/æº�代ç �/StgSharpC/x64/Release/StgSharpC.tlog/CL.write.1.tlog b/æº�代ç �/StgSharpC/x64/Release/StgSharpC.tlog/CL.write.1.tlog index dc1ff6da98ad2f29bf0c759daf059e38ec4aa3bd..e3b871e1967fba06d20c92ea3651a850b682dab7 100644 GIT binary patch delta 76 zcmZ3c_|1HS2j|9lOw5x_7`wQ`7+e{g8A2HR8GGR{>LtbEI3)7V=|8(LjZ#dgA)TU H0~Z4T=L-!< delta 29 lcmbOrwMcw}2HWIGoL!qU*q^ZQ=rIH^xG*>|@G@{Q004^<2P*&o diff --git a/æº�代ç �/StgSharpC/x64/Release/dllmain.cod b/æº�代ç �/StgSharpC/x64/Release/dllmain.cod index 83d95d93..a274bf1f 100644 --- a/æº�代ç �/StgSharpC/x64/Release/dllmain.cod +++ b/æº�代ç �/StgSharpC/x64/Release/dllmain.cod @@ -1,4 +1,4 @@ -; Listing generated by Microsoft (R) Optimizing Compiler Version 19.39.33519.0 +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.39.33523.0 include listing.inc @@ -204,4 +204,39 @@ CONST ENDS CONST SEGMENT __real@3f000000 DD 03f000000r ; 0.5 CONST ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\dllmain.c +; COMDAT DllMain +_TEXT SEGMENT +hModule$ = 8 +ul_reason_for_call$ = 16 +lpReserved$ = 24 +DllMain PROC ; COMDAT + +; 15 : switch (ul_reason_for_call) +; 16 : { +; 17 : case DLL_PROCESS_ATTACH: +; 18 : +; 19 : return 1; +; 20 : +; 21 : case DLL_THREAD_ATTACH: +; 22 : return 1; +; 23 : +; 24 : case DLL_THREAD_DETACH: +; 25 : return 1; +; 26 : +; 27 : case DLL_PROCESS_DETACH: +; 28 : return 1; + + 00000 b8 01 00 00 00 mov eax, 1 + +; 29 : +; 30 : break; +; 31 : } +; 32 : return TRUE; +; 33 : } + + 00005 c3 ret 0 +DllMain ENDP +_TEXT ENDS END diff --git a/æº�代ç �/StgSharpC/x64/Release/dllmain.obj b/æº�代ç �/StgSharpC/x64/Release/dllmain.obj index 6841febf3b5369a3c1762d20248304f010c9289a..0a0d216335910b0cfc329950b1b257aaccad2671 100644 GIT binary patch delta 27280 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 diff --git a/æº�代ç �/StgSharpC/x64/Release/mat2.cod b/æº�代ç �/StgSharpC/x64/Release/mat2.cod index a288a4fa..c735ecc3 100644 --- a/æº�代ç �/StgSharpC/x64/Release/mat2.cod +++ b/æº�代ç �/StgSharpC/x64/Release/mat2.cod @@ -1,4 +1,4 @@ -; Listing generated by Microsoft (R) Optimizing Compiler Version 19.39.33519.0 +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.39.33523.0 include listing.inc @@ -8,4 +8,105 @@ EXTRN __imp__aligned_free:PROC PUBLIC deinit_mat2 PUBLIC transpose2to4 PUBLIC transpose2to3 +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c +; COMDAT transpose2to3 +_TEXT SEGMENT +source$ = 8 +target$ = 16 +transpose2to3 PROC ; COMDAT + +; 6 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00000 0f 10 21 movups xmm4, XMMWORD PTR [rcx] + 00003 0f 10 59 04 movups xmm3, XMMWORD PTR [rcx+4] + 00007 0f 28 d4 movaps xmm2, xmm4 + 0000a 0f 57 c0 xorps xmm0, xmm0 + 0000d 0f c6 d3 44 shufps xmm2, xmm3, 68 ; 00000044H + +; 7 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2)); +; 8 : +; 9 : target->colum[0] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + + 00011 0f 28 ca movaps xmm1, xmm2 + 00014 0f c6 e3 ee shufps xmm4, xmm3, 238 ; 000000eeH + 00018 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + +; 10 : target->colum[1] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); + + 0001c 0f c6 d0 dd shufps xmm2, xmm0, 221 ; 000000ddH + +; 11 : target->colum[2] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + + 00020 0f c6 e0 88 shufps xmm4, xmm0, 136 ; 00000088H + 00024 0f 11 0a movups XMMWORD PTR [rdx], xmm1 + 00027 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2 + 0002b 0f 11 62 20 movups XMMWORD PTR [rdx+32], xmm4 + +; 12 : } + + 0002f c3 ret 0 +transpose2to3 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c +; COMDAT transpose2to4 +_TEXT SEGMENT +source$ = 8 +target$ = 16 +transpose2to4 PROC ; COMDAT + +; 16 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00000 0f 10 41 04 movups xmm0, XMMWORD PTR [rcx+4] + 00004 0f 10 19 movups xmm3, XMMWORD PTR [rcx] + 00007 0f 28 d3 movaps xmm2, xmm3 + +; 17 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2)); + + 0000a 0f c6 d8 ee shufps xmm3, xmm0, 238 ; 000000eeH + 0000e 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H + 00012 0f 57 c0 xorps xmm0, xmm0 + +; 18 : +; 19 : target->colum[0] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + + 00015 0f 28 ca movaps xmm1, xmm2 + +; 20 : target->colum[1] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); + + 00018 0f c6 d0 dd shufps xmm2, xmm0, 221 ; 000000ddH + 0001c 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + 00020 0f 11 0a movups XMMWORD PTR [rdx], xmm1 + +; 21 : target->colum[2] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + + 00023 0f 28 cb movaps xmm1, xmm3 + 00026 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + +; 22 : target->colum[3] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); + + 0002a 0f c6 d8 dd shufps xmm3, xmm0, 221 ; 000000ddH + 0002e 0f 11 4a 20 movups XMMWORD PTR [rdx+32], xmm1 + 00032 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2 + 00036 0f 11 5a 30 movups XMMWORD PTR [rdx+48], xmm3 + +; 23 : } + + 0003a c3 ret 0 +transpose2to4 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c +; COMDAT deinit_mat2 +_TEXT SEGMENT +mat$ = 8 +deinit_mat2 PROC ; COMDAT + +; 27 : _aligned_free(mat); + + 00000 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp__aligned_free +deinit_mat2 ENDP +_TEXT ENDS END diff --git a/æº�代ç �/StgSharpC/x64/Release/mat2.obj b/æº�代ç �/StgSharpC/x64/Release/mat2.obj index dddbd1b343c0923484ccacb85c97946de3833303..346a09fd1a8ff29dbdc772d1e0e8e313899603f4 100644 GIT binary patch delta 28138 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[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00000 0f 10 41 34 movups xmm0, XMMWORD PTR [rcx+52] + 00004 0f 10 51 30 movups xmm2, XMMWORD PTR [rcx+48] + +; 8 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0)); + + 00008 0f 10 49 38 movups xmm1, XMMWORD PTR [rcx+56] + 0000c 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H + 00010 0f 57 c0 xorps xmm0, xmm0 + 00013 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + +; 9 : +; 10 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 00017 0f 28 c2 movaps xmm0, xmm2 + 0001a 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H + +; 11 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 0001e 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH + 00022 0f 11 02 movups XMMWORD PTR [rdx], xmm0 + 00025 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2 + +; 12 : } + + 00029 c3 ret 0 +transpose3to2 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; COMDAT transpose3to3 +_TEXT SEGMENT +source$ = 32 +target$ = 40 +transpose3to3 PROC ; COMDAT + +; 15 : { + +$LN4: + 00000 48 83 ec 18 sub rsp, 24 + +; 16 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0)); +; 17 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2)); +; 18 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0)); + + 00004 0f 10 61 38 movups xmm4, XMMWORD PTR [rcx+56] + 00008 0f 10 69 34 movups xmm5, XMMWORD PTR [rcx+52] + 0000c 0f 29 34 24 movaps XMMWORD PTR [rsp], xmm6 + 00010 0f 57 c0 xorps xmm0, xmm0 + 00013 0f 10 71 30 movups xmm6, XMMWORD PTR [rcx+48] + 00017 0f 28 cc movaps xmm1, xmm4 + 0001a 0f 57 d2 xorps xmm2, xmm2 + 0001d 0f 28 de movaps xmm3, xmm6 + 00020 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 00024 0f c6 dd 44 shufps xmm3, xmm5, 68 ; 00000044H + 00028 0f c6 f5 ee shufps xmm6, xmm5, 238 ; 000000eeH + +; 19 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(3, 2, 3, 2)); +; 20 : +; 21 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 0002c 0f 28 c3 movaps xmm0, xmm3 + 0002f 0f c6 e2 ee shufps xmm4, xmm2, 238 ; 000000eeH + +; 22 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +; 23 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 00033 0f c6 f4 88 shufps xmm6, xmm4, 136 ; 00000088H + 00037 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H + 0003b 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH + 0003f 0f 11 72 20 movups XMMWORD PTR [rdx+32], xmm6 + +; 24 : } + + 00043 0f 28 34 24 movaps xmm6, XMMWORD PTR [rsp] + 00047 0f 11 02 movups XMMWORD PTR [rdx], xmm0 + 0004a 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3 + 0004e 48 83 c4 18 add rsp, 24 + 00052 c3 ret 0 +transpose3to3 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; COMDAT transpose3to4 +_TEXT SEGMENT +source$ = 8 +target$ = 16 +transpose3to4 PROC ; COMDAT + +; 28 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00000 0f 10 41 34 movups xmm0, XMMWORD PTR [rcx+52] + 00004 0f 10 61 30 movups xmm4, XMMWORD PTR [rcx+48] + +; 29 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2)); +; 30 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0)); + + 00008 0f 10 51 38 movups xmm2, XMMWORD PTR [rcx+56] + 0000c 0f 28 dc movaps xmm3, xmm4 + 0000f 0f c6 e0 ee shufps xmm4, xmm0, 238 ; 000000eeH + 00013 0f c6 d8 44 shufps xmm3, xmm0, 68 ; 00000044H + 00017 0f 28 ca movaps xmm1, xmm2 + 0001a 0f 57 c0 xorps xmm0, xmm0 + 0001d 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + +; 31 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(3, 2, 3, 2)); + + 00021 0f c6 d0 ee shufps xmm2, xmm0, 238 ; 000000eeH + +; 32 : +; 33 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 00025 0f 28 c3 movaps xmm0, xmm3 + 00028 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H + 0002c 0f 11 02 movups XMMWORD PTR [rdx], xmm0 + +; 34 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +; 35 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 0002f 0f 28 c4 movaps xmm0, xmm4 + 00032 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H + 00036 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH + +; 36 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); + + 0003a 0f c6 e2 dd shufps xmm4, xmm2, 221 ; 000000ddH + 0003e 0f 11 42 20 movups XMMWORD PTR [rdx+32], xmm0 + 00042 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3 + 00046 0f 11 62 30 movups XMMWORD PTR [rdx+48], xmm4 + +; 37 : } + + 0004a c3 ret 0 +transpose3to4 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; COMDAT det_mat3_internal +_TEXT SEGMENT +c0$ = 8 +c1$ = 16 +c2$ = 24 +det_mat3_internal PROC ; COMDAT + +; 41 : //let adding row aligned +; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + + 00000 0f 10 1a movups xmm3, XMMWORD PTR [rdx] + +; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + 00003 41 0f 10 10 movups xmm2, XMMWORD PTR [r8] + 00007 0f 28 e3 movaps xmm4, xmm3 + 0000a 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H + 0000e 0f 28 c2 movaps xmm0, xmm2 + +; 44 : +; 45 : //let sub row aligned +; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); +; 47 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); +; 48 : +; 49 : //multple all add row +; 50 : __m128 cache = _mm_mul_ps(c0, addc1); + + 00011 0f 59 21 mulps xmm4, XMMWORD PTR [rcx] + 00014 0f c6 c2 d2 shufps xmm0, xmm2, 210 ; 000000d2H + 00018 0f c6 db d2 shufps xmm3, xmm3, 210 ; 000000d2H + +; 51 : cache = _mm_mul_ps(cache, addc2); +; 52 : +; 53 : //multiple all sub row +; 54 : __m128 sub = _mm_mul_ps(c0, subc1); + + 0001c 0f 59 19 mulps xmm3, XMMWORD PTR [rcx] + 0001f 0f 59 e0 mulps xmm4, xmm0 + 00022 0f c6 d2 c9 shufps xmm2, xmm2, 201 ; 000000c9H + +; 55 : sub = _mm_mul_ps(sub, subc2); + + 00026 0f 59 da mulps xmm3, xmm2 + +; 56 : +; 57 : //main-corner sub sub-corner +; 58 : cache = _mm_sub_ps(cache, sub); + + 00029 0f 5c e3 subps xmm4, xmm3 + +; 59 : +; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 0002c 0f 28 c4 movaps xmm0, xmm4 + 0002f f2 0f 7c c4 haddps xmm0, xmm4 + +; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 00033 0f 58 c4 addps xmm0, xmm4 + +; 62 : +; 63 : return ret.m128_f32[2]; + + 00036 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH + +; 64 : } + + 0003a c3 ret 0 +det_mat3_internal ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; COMDAT det_mat3 +_TEXT SEGMENT +mat$ = 8 +det_mat3 PROC ; COMDAT + +; 68 : return det_mat3_internal( + + 00000 0f 10 59 10 movups xmm3, XMMWORD PTR [rcx+16] + 00004 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32] + +; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + + 00008 0f 28 e3 movaps xmm4, xmm3 + 0000b 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H + +; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + 0000f 0f 28 c2 movaps xmm0, xmm2 + +; 44 : +; 45 : //let sub row aligned +; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); +; 47 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); +; 48 : +; 49 : //multple all add row +; 50 : __m128 cache = _mm_mul_ps(c0, addc1); + + 00012 0f 59 21 mulps xmm4, XMMWORD PTR [rcx] + 00015 0f c6 c2 d2 shufps xmm0, xmm2, 210 ; 000000d2H + 00019 0f c6 db d2 shufps xmm3, xmm3, 210 ; 000000d2H + +; 51 : cache = _mm_mul_ps(cache, addc2); +; 52 : +; 53 : //multiple all sub row +; 54 : __m128 sub = _mm_mul_ps(c0, subc1); + + 0001d 0f 59 19 mulps xmm3, XMMWORD PTR [rcx] + 00020 0f 59 e0 mulps xmm4, xmm0 + 00023 0f c6 d2 c9 shufps xmm2, xmm2, 201 ; 000000c9H + +; 55 : sub = _mm_mul_ps(sub, subc2); + + 00027 0f 59 da mulps xmm3, xmm2 + +; 56 : +; 57 : //main-corner sub sub-corner +; 58 : cache = _mm_sub_ps(cache, sub); + + 0002a 0f 5c e3 subps xmm4, xmm3 + +; 59 : +; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 0002d 0f 28 c4 movaps xmm0, xmm4 + 00030 f2 0f 7c c4 haddps xmm0, xmm4 + +; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 00034 0f 58 c4 addps xmm0, xmm4 + +; 68 : return det_mat3_internal( + + 00037 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH + +; 69 : mat->colum[0], +; 70 : mat->colum[1], +; 71 : mat->colum[2] +; 72 : ); +; 73 : } + + 0003b c3 ret 0 +det_mat3 ENDP +_TEXT ENDS END diff --git a/æº�代ç �/StgSharpC/x64/Release/mat3.obj b/æº�代ç �/StgSharpC/x64/Release/mat3.obj index 0466d79dcfbd59234e0b17769834b9a35bfb5336..6c95f0b87c64a07e66748d555a9892e71dd574c5 100644 GIT binary patch delta 29244 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 delta 28695 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 diff --git a/æº�代ç �/StgSharpC/x64/Release/mat4.cod b/æº�代ç �/StgSharpC/x64/Release/mat4.cod index a891618c..655f2c5d 100644 --- a/æº�代ç �/StgSharpC/x64/Release/mat4.cod +++ b/æº�代ç �/StgSharpC/x64/Release/mat4.cod @@ -1,4 +1,4 @@ -; Listing generated by Microsoft (R) Optimizing Compiler Version 19.39.33519.0 +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.39.33523.0 include listing.inc @@ -11,24 +11,451 @@ PUBLIC transpose4to4 PUBLIC transpose4to2 ; COMDAT pdata pdata SEGMENT -$pdata$det_mat4 DD imagerel $LN12@det_mat4 - DD imagerel $LN12@det_mat4+293 +$pdata$det_mat4 DD imagerel $LN12 + DD imagerel $LN12+293 DD imagerel $unwind$det_mat4 pdata ENDS ; COMDAT pdata pdata SEGMENT -$pdata$transpose4to3 DD imagerel $LN4@transpose4 - DD imagerel $LN4@transpose4+80 +$pdata$transpose4to3 DD imagerel $LN4 + DD imagerel $LN4+80 DD imagerel $unwind$transpose4to3 ; COMDAT xdata xdata SEGMENT -$unwind$transpose4to3 DQ 00000681400031401r ; 5.65385e-310 +$unwind$transpose4to3 DD 031401H + DD 06814H DD 02204H xdata ENDS ; COMDAT xdata xdata SEGMENT -$unwind$det_mat4 DQ 00000a835000b3501r ; 9.13753e-310 - DQ 00002881b0001982cr ; 3.52071e-309 - DQ 00004680e00037816r ; 6.12794e-309 +$unwind$det_mat4 DD 0b3501H + DD 0a835H + DD 01982cH + DD 02881bH + DD 037816H + DD 04680eH DD 0a207H +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; COMDAT transpose4to2 +_TEXT SEGMENT +source$ = 8 +target$ = 16 +transpose4to2 PROC ; COMDAT + +; 8 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16] + 00004 0f 10 11 movups xmm2, XMMWORD PTR [rcx] + +; 9 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00007 0f 10 49 20 movups xmm1, XMMWORD PTR [rcx+32] + 0000b 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H + 0000f 0f 10 41 30 movups xmm0, XMMWORD PTR [rcx+48] + 00013 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + +; 10 : +; 11 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 00017 0f 28 c2 movaps xmm0, xmm2 + 0001a 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H + +; 12 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 0001e 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH + 00022 0f 11 02 movups XMMWORD PTR [rdx], xmm0 + 00025 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2 + +; 13 : } + + 00029 c3 ret 0 +transpose4to2 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; COMDAT transpose4to4 +_TEXT SEGMENT +source$ = 8 +target$ = 16 +transpose4to4 PROC ; COMDAT + +; 17 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16] + 00004 0f 10 21 movups xmm4, XMMWORD PTR [rcx] + +; 18 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); +; 19 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00007 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32] + 0000b 0f 28 dc movaps xmm3, xmm4 + 0000e 0f c6 e0 ee shufps xmm4, xmm0, 238 ; 000000eeH + 00012 0f c6 d8 44 shufps xmm3, xmm0, 68 ; 00000044H + 00016 0f 28 ca movaps xmm1, xmm2 + 00019 0f 10 41 30 movups xmm0, XMMWORD PTR [rcx+48] + 0001d 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + +; 20 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2)); + + 00021 0f c6 d0 ee shufps xmm2, xmm0, 238 ; 000000eeH + +; 21 : +; 22 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 00025 0f 28 c3 movaps xmm0, xmm3 + 00028 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H + 0002c 0f 11 02 movups XMMWORD PTR [rdx], xmm0 + +; 23 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +; 24 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 0002f 0f 28 c4 movaps xmm0, xmm4 + 00032 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H + 00036 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH + +; 25 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); + + 0003a 0f c6 e2 dd shufps xmm4, xmm2, 221 ; 000000ddH + 0003e 0f 11 42 20 movups XMMWORD PTR [rdx+32], xmm0 + 00042 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3 + 00046 0f 11 62 30 movups XMMWORD PTR [rdx+48], xmm4 + +; 26 : } + + 0004a c3 ret 0 +transpose4to4 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; COMDAT transpose4to3 +_TEXT SEGMENT +source$ = 32 +target$ = 40 +transpose4to3 PROC ; COMDAT + +; 29 : { + +$LN4: + 00000 48 83 ec 18 sub rsp, 24 + +; 30 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00004 0f 10 61 10 movups xmm4, XMMWORD PTR [rcx+16] + +; 31 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); +; 32 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); + + 00008 0f 10 69 20 movups xmm5, XMMWORD PTR [rcx+32] + 0000c 0f 10 59 30 movups xmm3, XMMWORD PTR [rcx+48] + 00010 0f 29 34 24 movaps XMMWORD PTR [rsp], xmm6 + 00014 0f 28 cd movaps xmm1, xmm5 + 00017 0f 10 31 movups xmm6, XMMWORD PTR [rcx] + 0001a 0f c6 cb 44 shufps xmm1, xmm3, 68 ; 00000044H + 0001e 0f 28 d6 movaps xmm2, xmm6 + +; 33 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2)); + + 00021 0f c6 eb ee shufps xmm5, xmm3, 238 ; 000000eeH + 00025 0f c6 d4 44 shufps xmm2, xmm4, 68 ; 00000044H + 00029 0f c6 f4 ee shufps xmm6, xmm4, 238 ; 000000eeH + +; 34 : +; 35 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 0002d 0f 28 c2 movaps xmm0, xmm2 + +; 36 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +; 37 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 00030 0f c6 f5 88 shufps xmm6, xmm5, 136 ; 00000088H + 00034 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H + 00038 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH + 0003c 0f 11 72 20 movups XMMWORD PTR [rdx+32], xmm6 + +; 38 : } + + 00040 0f 28 34 24 movaps xmm6, XMMWORD PTR [rsp] + 00044 0f 11 02 movups XMMWORD PTR [rdx], xmm0 + 00047 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2 + 0004b 48 83 c4 18 add rsp, 24 + 0004f c3 ret 0 +transpose4to3 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; COMDAT det_mat4 +_TEXT SEGMENT +matPtr$ = 96 +transpose$ = 104 +det_mat4 PROC ; COMDAT + +; 41 : { + +$LN12: + 00000 48 8b c4 mov rax, rsp + 00003 48 83 ec 58 sub rsp, 88 ; 00000058H + +; 42 : __m128 mc0 = ALIGN(matPtr->colum[0]); + + 00007 0f 10 29 movups xmm5, XMMWORD PTR [rcx] + 0000a 0f 29 70 e8 movaps XMMWORD PTR [rax-24], xmm6 + +; 47 : __m128 cogeneration = _mm_set_ps( + + 0000e 0f 10 71 30 movups xmm6, XMMWORD PTR [rcx+48] + 00012 0f 29 78 d8 movaps XMMWORD PTR [rax-40], xmm7 + 00016 44 0f 29 40 c8 movaps XMMWORD PTR [rax-56], xmm8 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + 0001b 0f 28 de movaps xmm3, xmm6 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 47 : __m128 cogeneration = _mm_set_ps( + + 0001e 44 0f 10 41 20 movups xmm8, XMMWORD PTR [rcx+32] +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + 00023 0f c6 de d2 shufps xmm3, xmm6, 210 ; 000000d2H + 00027 44 0f 29 48 b8 movaps XMMWORD PTR [rax-72], xmm9 + +; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + + 0002c 45 0f 28 c8 movaps xmm9, xmm8 + 00030 44 0f 29 14 24 movaps XMMWORD PTR [rsp], xmm10 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 43 : __m128 mc1 = ALIGN(matPtr->colum[1]); + + 00035 44 0f 10 51 10 movups xmm10, XMMWORD PTR [rcx+16] +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + + 0003a 45 0f c6 c8 c9 shufps xmm9, xmm8, 201 ; 000000c9H + +; 44 : +; 45 : //let sub row aligned +; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); + + 0003f 45 0f c6 c0 d2 shufps xmm8, xmm8, 210 ; 000000d2H + +; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + + 00044 41 0f 28 d2 movaps xmm2, xmm10 + 00048 41 0f c6 d2 c9 shufps xmm2, xmm10, 201 ; 000000c9H + +; 54 : __m128 sub = _mm_mul_ps(c0, subc1); + + 0004d 41 0f 28 c0 movaps xmm0, xmm8 + 00051 41 0f 59 c2 mulps xmm0, xmm10 + 00055 41 0f 28 c9 movaps xmm1, xmm9 + 00059 41 0f 59 ca mulps xmm1, xmm10 + 0005d 0f c6 f6 c9 shufps xmm6, xmm6, 201 ; 000000c9H + +; 55 : sub = _mm_mul_ps(sub, subc2); + + 00061 0f 59 c6 mulps xmm0, xmm6 + 00064 0f 59 cb mulps xmm1, xmm3 + +; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); + + 00067 45 0f c6 d2 d2 shufps xmm10, xmm10, 210 ; 000000d2H + +; 47 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); +; 48 : +; 49 : //multple all add row +; 50 : __m128 cache = _mm_mul_ps(c0, addc1); + + 0006c 0f 59 d5 mulps xmm2, xmm5 + +; 58 : cache = _mm_sub_ps(cache, sub); + + 0006f 0f 5c c8 subps xmm1, xmm0 + +; 54 : __m128 sub = _mm_mul_ps(c0, subc1); + + 00072 44 0f 59 d5 mulps xmm10, xmm5 + 00076 41 0f 28 c0 movaps xmm0, xmm8 + 0007a 0f 59 c5 mulps xmm0, xmm5 + +; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 0007d 0f 28 f9 movaps xmm7, xmm1 + 00080 f2 0f 7c f9 haddps xmm7, xmm1 + +; 55 : sub = _mm_mul_ps(sub, subc2); + + 00084 0f 59 c6 mulps xmm0, xmm6 + +; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 00087 0f 58 f9 addps xmm7, xmm1 + +; 50 : __m128 cache = _mm_mul_ps(c0, addc1); + + 0008a 41 0f 28 c9 movaps xmm1, xmm9 + 0008e 0f 59 cd mulps xmm1, xmm5 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 47 : __m128 cogeneration = _mm_set_ps( + + 00091 0f c6 ff aa shufps xmm7, xmm7, 170 ; 000000aaH +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 51 : cache = _mm_mul_ps(cache, addc2); + + 00095 0f 59 cb mulps xmm1, xmm3 + +; 58 : cache = _mm_sub_ps(cache, sub); + + 00098 0f 5c c8 subps xmm1, xmm0 + +; 55 : sub = _mm_mul_ps(sub, subc2); + + 0009b 41 0f 28 c2 movaps xmm0, xmm10 + 0009f 0f 59 c6 mulps xmm0, xmm6 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 57 : } + + 000a2 0f 28 70 e8 movaps xmm6, XMMWORD PTR [rax-24] +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 55 : sub = _mm_mul_ps(sub, subc2); + + 000a6 45 0f 59 d1 mulps xmm10, xmm9 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 57 : } + + 000aa 44 0f 28 48 b8 movaps xmm9, XMMWORD PTR [rax-72] +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 000af 0f 28 e1 movaps xmm4, xmm1 + 000b2 f2 0f 7c e1 haddps xmm4, xmm1 + +; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 000b6 0f 58 e1 addps xmm4, xmm1 + +; 51 : cache = _mm_mul_ps(cache, addc2); + + 000b9 0f 28 ca movaps xmm1, xmm2 + 000bc 0f 59 cb mulps xmm1, xmm3 + 000bf 41 0f 59 d0 mulps xmm2, xmm8 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 57 : } + + 000c3 44 0f 28 40 c8 movaps xmm8, XMMWORD PTR [rax-56] +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 58 : cache = _mm_sub_ps(cache, sub); + + 000c8 0f 5c c8 subps xmm1, xmm0 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 47 : __m128 cogeneration = _mm_set_ps( + + 000cb 0f c6 e4 aa shufps xmm4, xmm4, 170 ; 000000aaH +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 58 : cache = _mm_sub_ps(cache, sub); + + 000cf 41 0f 5c d2 subps xmm2, xmm10 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 57 : } + + 000d3 44 0f 28 14 24 movaps xmm10, XMMWORD PTR [rsp] +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 000d8 0f 28 d9 movaps xmm3, xmm1 + 000db f2 0f 7c d9 haddps xmm3, xmm1 + 000df 0f 28 c2 movaps xmm0, xmm2 + +; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 000e2 0f 58 d9 addps xmm3, xmm1 + +; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 000e5 f2 0f 7c c2 haddps xmm0, xmm2 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 47 : __m128 cogeneration = _mm_set_ps( + + 000e9 0f c6 db aa shufps xmm3, xmm3, 170 ; 000000aaH + 000ed 0f 28 cb movaps xmm1, xmm3 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c + +; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 000f0 0f 58 c2 addps xmm0, xmm2 +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c + +; 47 : __m128 cogeneration = _mm_set_ps( + + 000f3 0f 28 df movaps xmm3, xmm7 + +; 57 : } + + 000f6 0f 28 78 d8 movaps xmm7, XMMWORD PTR [rax-40] + 000fa 0f 14 dc unpcklps xmm3, xmm4 + 000fd 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH + 00101 0f 14 c8 unpcklps xmm1, xmm0 + 00104 0f 10 42 30 movups xmm0, XMMWORD PTR [rdx+48] + 00108 0f 16 d9 movlhps xmm3, xmm1 + 0010b 0f 59 d8 mulps xmm3, xmm0 + 0010e f2 0f 7d db hsubps xmm3, xmm3 + 00112 f2 0f 7c db haddps xmm3, xmm3 + 00116 0f 57 1d 00 00 + 00 00 xorps xmm3, DWORD PTR __xmm@80000000800000008000000080000000 + 0011d 0f 28 c3 movaps xmm0, xmm3 + 00120 48 83 c4 58 add rsp, 88 ; 00000058H + 00124 c3 ret 0 +det_mat4 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c +; COMDAT deinit_mat4 +_TEXT SEGMENT +matPtr$ = 8 +deinit_mat4 PROC ; COMDAT + +; 61 : _aligned_free(matPtr); + + 00000 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp__aligned_free +deinit_mat4 ENDP +_TEXT ENDS END diff --git a/æº�代ç �/StgSharpC/x64/Release/mat4.obj b/æº�代ç �/StgSharpC/x64/Release/mat4.obj index 2449896827b9abf55a21e5cb1edc9f32bc744adb..58067b861d8401b52d5e77edf4e7033b13a57e56 100644 GIT binary patch delta 28633 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 26) & 1) != 0; + + 0000f c1 fa 1a sar edx, 26 + 00012 83 e2 01 and edx, 1 + 00015 8b c2 mov eax, edx + +; 210 : } + + 00017 48 83 c4 10 add rsp, 16 + 0001b 5b pop rbx + 0001c c3 ret 0 +stbi__sse2_available ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__start_callbacks +_TEXT SEGMENT +s$ = 48 +c$dead$ = 56 +user$ = 64 +stbi__start_callbacks PROC ; COMDAT + +; 288 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 289 : s->io = *c; + + 0000a 0f 10 05 00 00 + 00 00 movups xmm0, XMMWORD PTR stbi__stdio_callbacks + +; 294 : s->img_buffer = s->img_buffer_original = s->buffer_start; + + 00011 48 8d 79 38 lea rdi, QWORD PTR [rcx+56] + 00015 49 8b c0 mov rax, r8 + 00018 48 8b d9 mov rbx, rcx + +; 1059 : int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); + + 0001b 41 b8 80 00 00 + 00 mov r8d, 128 ; 00000080H + +; 289 : s->io = *c; + + 00021 0f 11 41 10 movups XMMWORD PTR [rcx+16], xmm0 + +; 1059 : int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); + + 00025 48 8b d7 mov rdx, rdi + +; 289 : s->io = *c; + + 00028 f2 0f 10 05 10 + 00 00 00 movsd xmm0, QWORD PTR stbi__stdio_callbacks+16 + 00030 f2 0f 11 41 20 movsd QWORD PTR [rcx+32], xmm0 + +; 290 : s->io_user_data = user; + + 00035 48 89 41 28 mov QWORD PTR [rcx+40], rax + +; 291 : s->buflen = sizeof(s->buffer_start); + + 00039 c7 41 34 80 00 + 00 00 mov DWORD PTR [rcx+52], 128 ; 00000080H + +; 292 : s->read_from_callbacks = 1; + + 00040 c7 41 30 01 00 + 00 00 mov DWORD PTR [rcx+48], 1 + +; 293 : s->callback_already_read = 0; + + 00047 c7 81 b8 00 00 + 00 00 00 00 00 mov DWORD PTR [rcx+184], 0 + +; 294 : s->img_buffer = s->img_buffer_original = s->buffer_start; + + 00051 48 89 b9 d0 00 + 00 00 mov QWORD PTR [rcx+208], rdi + 00058 48 89 b9 c0 00 + 00 00 mov QWORD PTR [rcx+192], rdi + +; 1059 : int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); + + 0005f 48 8b c8 mov rcx, rax + 00062 ff 53 10 call QWORD PTR [rbx+16] + +; 1060 : s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original); + + 00065 8b 8b c0 00 00 + 00 mov ecx, DWORD PTR [rbx+192] + 0006b 2b 8b d0 00 00 + 00 sub ecx, DWORD PTR [rbx+208] + 00071 01 8b b8 00 00 + 00 add DWORD PTR [rbx+184], ecx + 00077 48 89 bb c0 00 + 00 00 mov QWORD PTR [rbx+192], rdi + +; 1061 : if (n == 0) { + + 0007e 85 c0 test eax, eax + 00080 75 23 jne SHORT $LN4@stbi__star + +; 1062 : // at end of file, treat same as if from memory, but need to handle case +; 1063 : // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file +; 1064 : s->read_from_callbacks = 0; + + 00082 89 43 30 mov DWORD PTR [rbx+48], eax + +; 1065 : s->img_buffer = s->buffer_start; +; 1066 : s->img_buffer_end = s->buffer_start + 1; + + 00085 48 8d 43 39 lea rax, QWORD PTR [rbx+57] + 00089 48 89 83 c8 00 + 00 00 mov QWORD PTR [rbx+200], rax + +; 1067 : *s->img_buffer = 0; + + 00090 c6 07 00 mov BYTE PTR [rdi], 0 + +; 295 : stbi__refill_buffer(s); +; 296 : s->img_buffer_original_end = s->img_buffer_end; + + 00093 48 89 83 d8 00 + 00 00 mov QWORD PTR [rbx+216], rax + +; 297 : } + + 0009a 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0009f 48 83 c4 20 add rsp, 32 ; 00000020H + 000a3 5f pop rdi + 000a4 c3 ret 0 +$LN4@stbi__star: + +; 1071 : s->img_buffer_end = s->buffer_start + n; + + 000a5 48 63 c8 movsxd rcx, eax + 000a8 48 83 c1 38 add rcx, 56 ; 00000038H + 000ac 48 03 cb add rcx, rbx + 000af 48 89 8b c8 00 + 00 00 mov QWORD PTR [rbx+200], rcx + +; 295 : stbi__refill_buffer(s); +; 296 : s->img_buffer_original_end = s->img_buffer_end; + + 000b6 48 89 8b d8 00 + 00 00 mov QWORD PTR [rbx+216], rcx + +; 297 : } + + 000bd 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000c2 48 83 c4 20 add rsp, 32 ; 00000020H + 000c6 5f pop rdi + 000c7 c3 ret 0 +stbi__start_callbacks ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__stdio_read +_TEXT SEGMENT +user$ = 8 +data$ = 16 +size$ = 24 +stbi__stdio_read PROC ; COMDAT + +; 302 : { + + 00000 48 8b c2 mov rax, rdx + +; 303 : return (int)fread(data, 1, size, (FILE*)user); + + 00003 4d 63 c0 movsxd r8, r8d + 00006 4c 8b c9 mov r9, rcx + 00009 ba 01 00 00 00 mov edx, 1 + 0000e 48 8b c8 mov rcx, rax + 00011 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_fread +stbi__stdio_read ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__stdio_skip +_TEXT SEGMENT +user$ = 48 +n$ = 56 +stbi__stdio_skip PROC ; COMDAT + +; 307 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 308 : int ch; +; 309 : fseek((FILE*)user, n, SEEK_CUR); + + 00006 41 b8 01 00 00 + 00 mov r8d, 1 + 0000c 48 8b d9 mov rbx, rcx + 0000f ff 15 00 00 00 + 00 call QWORD PTR __imp_fseek + +; 310 : ch = fgetc((FILE*)user); /* have to read a byte to reset feof()'s flag */ + + 00015 48 8b cb mov rcx, rbx + 00018 ff 15 00 00 00 + 00 call QWORD PTR __imp_fgetc + +; 311 : if (ch != EOF) { + + 0001e 83 f8 ff cmp eax, -1 + 00021 74 11 je SHORT $LN2@stbi__stdi + +; 312 : ungetc(ch, (FILE*)user); /* push byte back onto stream if valid. */ + + 00023 48 8b d3 mov rdx, rbx + 00026 8b c8 mov ecx, eax + +; 313 : } +; 314 : } + + 00028 48 83 c4 20 add rsp, 32 ; 00000020H + 0002c 5b pop rbx + +; 312 : ungetc(ch, (FILE*)user); /* push byte back onto stream if valid. */ + + 0002d 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_ungetc +$LN2@stbi__stdi: + +; 313 : } +; 314 : } + + 00034 48 83 c4 20 add rsp, 32 ; 00000020H + 00038 5b pop rbx + 00039 c3 ret 0 +stbi__stdio_skip ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__stdio_eof +_TEXT SEGMENT +user$ = 48 +stbi__stdio_eof PROC ; COMDAT + +; 317 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + 00006 48 8b d9 mov rbx, rcx + +; 318 : return feof((FILE*)user) || ferror((FILE*)user); + + 00009 ff 15 00 00 00 + 00 call QWORD PTR __imp_feof + 0000f 85 c0 test eax, eax + 00011 75 13 jne SHORT $LN3@stbi__stdi + 00013 48 8b cb mov rcx, rbx + 00016 ff 15 00 00 00 + 00 call QWORD PTR __imp_ferror + 0001c 85 c0 test eax, eax + 0001e 75 06 jne SHORT $LN3@stbi__stdi + +; 319 : } + + 00020 48 83 c4 20 add rsp, 32 ; 00000020H + 00024 5b pop rbx + 00025 c3 ret 0 +$LN3@stbi__stdi: + +; 318 : return feof((FILE*)user) || ferror((FILE*)user); + + 00026 b8 01 00 00 00 mov eax, 1 + +; 319 : } + + 0002b 48 83 c4 20 add rsp, 32 ; 00000020H + 0002f 5b pop rbx + 00030 c3 ret 0 +stbi__stdio_eof ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__start_file +_TEXT SEGMENT +s$ = 8 +f$ = 16 +stbi__start_file PROC ; COMDAT + +; 330 : stbi__start_callbacks(s, &stbi__stdio_callbacks, (void*)f); + + 00000 4c 8b c2 mov r8, rdx + 00003 e9 00 00 00 00 jmp stbi__start_callbacks +stbi__start_file ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__rewind +_TEXT SEGMENT +s$ = 8 +stbi__rewind PROC ; COMDAT + +; 339 : // conceptually rewind SHOULD rewind to the beginning of the stream, +; 340 : // but we just rewind to the beginning of the initial buffer, because +; 341 : // we only use it after doing 'test', which only ever looks at at most 92 bytes +; 342 : s->img_buffer = s->img_buffer_original; + + 00000 48 8b 81 d0 00 + 00 00 mov rax, QWORD PTR [rcx+208] + 00007 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0000e 48 8b 81 d8 00 + 00 00 mov rax, QWORD PTR [rcx+216] + 00015 48 89 81 c8 00 + 00 00 mov QWORD PTR [rcx+200], rax + +; 344 : } + + 0001c c3 ret 0 +stbi__rewind ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__err +_TEXT SEGMENT +str$ = 8 +stbi__err PROC ; COMDAT + +; 431 : stbi__g_failure_reason = str; + + 00000 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00006 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0000f 41 b8 00 00 00 + 00 mov r8d, OFFSET FLAT:stbi__g_failure_reason + 00015 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00019 49 89 0c 00 mov QWORD PTR [r8+rax], rcx + +; 432 : return 0; + + 0001d 33 c0 xor eax, eax + +; 433 : } + + 0001f c3 ret 0 +stbi__err ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__malloc +_TEXT SEGMENT +size$ = 8 +stbi__malloc PROC ; COMDAT + +; 438 : return STBI_MALLOC(size); + + 00000 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_malloc +stbi__malloc ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__addsizes_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +stbi__addsizes_valid PROC ; COMDAT + +; 455 : if (b < 0) return 0; + + 00000 33 c0 xor eax, eax + 00002 44 8b c1 mov r8d, ecx + 00005 85 d2 test edx, edx + 00007 78 0d js SHORT $LN1@stbi__adds + +; 456 : // now 0 <= b <= INT_MAX, hence also +; 457 : // 0 <= INT_MAX - b <= INTMAX. +; 458 : // And "a + b <= INT_MAX" (which might overflow) is the +; 459 : // same as a <= INT_MAX - b (no overflow) +; 460 : return a <= INT_MAX - b; + + 00009 b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 0000e 2b ca sub ecx, edx + 00010 44 3b c1 cmp r8d, ecx + 00013 0f 9e c0 setle al +$LN1@stbi__adds: + +; 461 : } + + 00016 c3 ret 0 +stbi__addsizes_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__mul2sizes_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +stbi__mul2sizes_valid PROC ; COMDAT + +; 466 : { + + 00000 44 8b c2 mov r8d, edx + 00003 44 8b c9 mov r9d, ecx + +; 467 : if (a < 0 || b < 0) return 0; + + 00006 85 c9 test ecx, ecx + 00008 78 21 js SHORT $LN3@stbi__mul2 + 0000a 85 d2 test edx, edx + 0000c 78 1d js SHORT $LN3@stbi__mul2 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000e 75 06 jne SHORT $LN4@stbi__mul2 + 00010 b8 01 00 00 00 mov eax, 1 + +; 471 : } + + 00015 c3 ret 0 +$LN4@stbi__mul2: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00016 33 d2 xor edx, edx + 00018 33 c9 xor ecx, ecx + 0001a b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0001f 41 f7 f0 div r8d + 00022 44 3b c8 cmp r9d, eax + 00025 0f 9e c1 setle cl + 00028 8b c1 mov eax, ecx + +; 471 : } + + 0002a c3 ret 0 +$LN3@stbi__mul2: + +; 467 : if (a < 0 || b < 0) return 0; + + 0002b 33 c0 xor eax, eax + +; 471 : } + + 0002d c3 ret 0 +stbi__mul2sizes_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__mad2sizes_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +add$ = 24 +stbi__mad2sizes_valid PROC ; COMDAT + +; 476 : { + + 00000 44 8b d2 mov r10d, edx + +; 467 : if (a < 0 || b < 0) return 0; + + 00003 85 c9 test ecx, ecx + 00005 78 2f js SHORT $LN3@stbi__mad2 + 00007 85 d2 test edx, edx + 00009 78 2b js SHORT $LN3@stbi__mad2 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000b 41 b9 ff ff ff + 7f mov r9d, 2147483647 ; 7fffffffH + 00011 74 0c je SHORT $LN13@stbi__mad2 + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00013 33 d2 xor edx, edx + 00015 41 8b c1 mov eax, r9d + 00018 41 f7 f2 div r10d + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 0001b 3b c8 cmp ecx, eax + 0001d 7f 17 jg SHORT $LN3@stbi__mad2 +$LN13@stbi__mad2: + +; 455 : if (b < 0) return 0; + + 0001f 45 85 c0 test r8d, r8d + 00022 78 12 js SHORT $LN3@stbi__mad2 + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 00024 41 0f af ca imul ecx, r10d + +; 460 : return a <= INT_MAX - b; + + 00028 45 2b c8 sub r9d, r8d + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 0002b 41 3b c9 cmp ecx, r9d + 0002e 7f 06 jg SHORT $LN3@stbi__mad2 + 00030 b8 01 00 00 00 mov eax, 1 + +; 478 : } + + 00035 c3 ret 0 +$LN3@stbi__mad2: + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 00036 33 c0 xor eax, eax + +; 478 : } + + 00038 c3 ret 0 +stbi__mad2sizes_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__mad3sizes_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +c$ = 24 +add$ = 32 +stbi__mad3sizes_valid PROC ; COMDAT + +; 483 : { + + 00000 44 8b da mov r11d, edx + +; 467 : if (a < 0 || b < 0) return 0; + + 00003 85 c9 test ecx, ecx + 00005 78 4a js SHORT $LN3@stbi__mad3 + 00007 85 d2 test edx, edx + 00009 78 46 js SHORT $LN3@stbi__mad3 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000b 41 ba ff ff ff + 7f mov r10d, 2147483647 ; 7fffffffH + 00011 74 0c je SHORT $LN19@stbi__mad3 + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00013 33 d2 xor edx, edx + 00015 41 8b c2 mov eax, r10d + 00018 41 f7 f3 div r11d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0001b 3b c8 cmp ecx, eax + 0001d 7f 32 jg SHORT $LN3@stbi__mad3 +$LN19@stbi__mad3: + 0001f 41 0f af cb imul ecx, r11d + +; 467 : if (a < 0 || b < 0) return 0; + + 00023 85 c9 test ecx, ecx + 00025 78 2a js SHORT $LN3@stbi__mad3 + 00027 45 85 c0 test r8d, r8d + 0002a 78 25 js SHORT $LN3@stbi__mad3 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0002c 74 0c je SHORT $LN18@stbi__mad3 + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0002e 33 d2 xor edx, edx + 00030 41 8b c2 mov eax, r10d + 00033 41 f7 f0 div r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00036 3b c8 cmp ecx, eax + 00038 7f 17 jg SHORT $LN3@stbi__mad3 +$LN18@stbi__mad3: + +; 455 : if (b < 0) return 0; + + 0003a 45 85 c9 test r9d, r9d + 0003d 78 12 js SHORT $LN3@stbi__mad3 + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0003f 41 0f af c8 imul ecx, r8d + +; 460 : return a <= INT_MAX - b; + + 00043 45 2b d1 sub r10d, r9d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00046 41 3b ca cmp ecx, r10d + 00049 7f 06 jg SHORT $LN3@stbi__mad3 + 0004b b8 01 00 00 00 mov eax, 1 + +; 485 : stbi__addsizes_valid(a * b * c, add); +; 486 : } + + 00050 c3 ret 0 +$LN3@stbi__mad3: + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00051 33 c0 xor eax, eax + +; 485 : stbi__addsizes_valid(a * b * c, add); +; 486 : } + + 00053 c3 ret 0 +stbi__mad3sizes_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__mad4sizes_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +c$ = 24 +d$ = 32 +add$dead$ = 40 +stbi__mad4sizes_valid PROC ; COMDAT + +; 491 : { + + 00000 44 8b d2 mov r10d, edx + +; 467 : if (a < 0 || b < 0) return 0; + + 00003 85 c9 test ecx, ecx + 00005 78 54 js SHORT $LN3@stbi__mad4 + 00007 85 d2 test edx, edx + 00009 78 50 js SHORT $LN3@stbi__mad4 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000b 74 0e je SHORT $LN25@stbi__mad4 + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0000d 33 d2 xor edx, edx + 0000f b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00014 41 f7 f2 div r10d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00017 3b c8 cmp ecx, eax + 00019 7f 40 jg SHORT $LN3@stbi__mad4 +$LN25@stbi__mad4: + 0001b 41 0f af ca imul ecx, r10d + +; 467 : if (a < 0 || b < 0) return 0; + + 0001f 85 c9 test ecx, ecx + 00021 78 38 js SHORT $LN3@stbi__mad4 + 00023 45 85 c0 test r8d, r8d + 00026 78 33 js SHORT $LN3@stbi__mad4 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00028 74 0e je SHORT $LN24@stbi__mad4 + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0002a 33 d2 xor edx, edx + 0002c b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00031 41 f7 f0 div r8d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00034 3b c8 cmp ecx, eax + 00036 7f 23 jg SHORT $LN3@stbi__mad4 +$LN24@stbi__mad4: + 00038 41 0f af c8 imul ecx, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 0003c 85 c9 test ecx, ecx + 0003e 78 1b js SHORT $LN3@stbi__mad4 + 00040 45 85 c9 test r9d, r9d + 00043 78 16 js SHORT $LN3@stbi__mad4 + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00045 74 0e je SHORT $LN23@stbi__mad4 + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00047 33 d2 xor edx, edx + 00049 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0004e 41 f7 f1 div r9d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00051 3b c8 cmp ecx, eax + 00053 7f 06 jg SHORT $LN3@stbi__mad4 +$LN23@stbi__mad4: + 00055 b8 01 00 00 00 mov eax, 1 + +; 493 : stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); +; 494 : } + + 0005a c3 ret 0 +$LN3@stbi__mad4: + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0005b 33 c0 xor eax, eax + +; 493 : stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); +; 494 : } + + 0005d c3 ret 0 +stbi__mad4sizes_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__malloc_mad2 +_TEXT SEGMENT +a$ = 8 +b$ = 16 +add$ = 24 +stbi__malloc_mad2 PROC ; COMDAT + +; 500 : { + + 00000 44 8b ca mov r9d, edx + 00003 44 8b d9 mov r11d, ecx + +; 467 : if (a < 0 || b < 0) return 0; + + 00006 85 c9 test ecx, ecx + 00008 78 44 js SHORT $LN19@stbi__mall + 0000a 85 d2 test edx, edx + 0000c 78 40 js SHORT $LN19@stbi__mall + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000e 41 ba ff ff ff + 7f mov r10d, 2147483647 ; 7fffffffH + 00014 75 09 jne SHORT $LN11@stbi__mall + 00016 45 0f af cb imul r9d, r11d + 0001a 41 8b c9 mov ecx, r9d + 0001d eb 14 jmp SHORT $LN20@stbi__mall +$LN11@stbi__mall: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0001f 33 d2 xor edx, edx + 00021 41 8b c2 mov eax, r10d + 00024 41 f7 f1 div r9d + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 00027 41 8b c9 mov ecx, r9d + 0002a 41 0f af cb imul ecx, r11d + 0002e 44 3b d8 cmp r11d, eax + 00031 7f 1b jg SHORT $LN19@stbi__mall +$LN20@stbi__mall: + +; 455 : if (b < 0) return 0; + + 00033 45 85 c0 test r8d, r8d + 00036 78 16 js SHORT $LN19@stbi__mall + +; 456 : // now 0 <= b <= INT_MAX, hence also +; 457 : // 0 <= INT_MAX - b <= INTMAX. +; 458 : // And "a + b <= INT_MAX" (which might overflow) is the +; 459 : // same as a <= INT_MAX - b (no overflow) +; 460 : return a <= INT_MAX - b; + + 00038 45 2b d0 sub r10d, r8d + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 0003b 41 3b ca cmp ecx, r10d + 0003e 7f 0e jg SHORT $LN19@stbi__mall + +; 502 : return stbi__malloc(a * b + add); + + 00040 42 8d 04 01 lea eax, DWORD PTR [rcx+r8] + 00044 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 00047 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_malloc +$LN19@stbi__mall: + +; 501 : if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + + 0004e 33 c0 xor eax, eax + +; 503 : } + + 00050 c3 ret 0 +stbi__malloc_mad2 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__malloc_mad3 +_TEXT SEGMENT +a$ = 8 +b$ = 16 +c$ = 24 +add$ = 32 +stbi__malloc_mad3 PROC ; COMDAT + +; 507 : { + + 00000 44 8b da mov r11d, edx + +; 467 : if (a < 0 || b < 0) return 0; + + 00003 85 c9 test ecx, ecx + 00005 78 57 js SHORT $LN23@stbi__mall + 00007 85 d2 test edx, edx + 00009 78 53 js SHORT $LN23@stbi__mall + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000b 41 ba ff ff ff + 7f mov r10d, 2147483647 ; 7fffffffH + 00011 74 0c je SHORT $LN25@stbi__mall + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00013 33 d2 xor edx, edx + 00015 41 8b c2 mov eax, r10d + 00018 41 f7 f3 div r11d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0001b 3b c8 cmp ecx, eax + 0001d 7f 3f jg SHORT $LN23@stbi__mall +$LN25@stbi__mall: + 0001f 41 0f af cb imul ecx, r11d + +; 467 : if (a < 0 || b < 0) return 0; + + 00023 85 c9 test ecx, ecx + 00025 78 37 js SHORT $LN23@stbi__mall + 00027 45 85 c0 test r8d, r8d + 0002a 78 32 js SHORT $LN23@stbi__mall + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0002c 74 0c je SHORT $LN24@stbi__mall + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0002e 33 d2 xor edx, edx + 00030 41 8b c2 mov eax, r10d + 00033 41 f7 f0 div r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00036 3b c8 cmp ecx, eax + 00038 7f 24 jg SHORT $LN23@stbi__mall +$LN24@stbi__mall: + +; 455 : if (b < 0) return 0; + + 0003a 45 85 c9 test r9d, r9d + 0003d 78 1f js SHORT $LN23@stbi__mall + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0003f 8b c1 mov eax, ecx + +; 460 : return a <= INT_MAX - b; + + 00041 45 2b d1 sub r10d, r9d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00044 41 0f af c0 imul eax, r8d + 00048 41 3b c2 cmp eax, r10d + 0004b 7f 11 jg SHORT $LN23@stbi__mall + +; 509 : return stbi__malloc(a * b * c + add); + + 0004d 41 0f af c8 imul ecx, r8d + 00051 41 03 c9 add ecx, r9d + 00054 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 00057 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_malloc +$LN23@stbi__mall: + +; 508 : if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + + 0005e 33 c0 xor eax, eax + +; 510 : } + + 00060 c3 ret 0 +stbi__malloc_mad3 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__malloc_mad4 +_TEXT SEGMENT +a$ = 8 +b$ = 16 +c$ = 24 +d$ = 32 +add$dead$ = 40 +stbi__malloc_mad4 PROC ; COMDAT + +; 514 : { + + 00000 44 8b d2 mov r10d, edx + +; 467 : if (a < 0 || b < 0) return 0; + + 00003 85 c9 test ecx, ecx + 00005 78 65 js SHORT $LN28@stbi__mall + 00007 85 d2 test edx, edx + 00009 78 61 js SHORT $LN28@stbi__mall + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0000b 74 0e je SHORT $LN31@stbi__mall + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0000d 33 d2 xor edx, edx + 0000f b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00014 41 f7 f2 div r10d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00017 3b c8 cmp ecx, eax + 00019 7f 51 jg SHORT $LN28@stbi__mall +$LN31@stbi__mall: + 0001b 41 0f af ca imul ecx, r10d + +; 467 : if (a < 0 || b < 0) return 0; + + 0001f 85 c9 test ecx, ecx + 00021 78 49 js SHORT $LN28@stbi__mall + 00023 45 85 c0 test r8d, r8d + 00026 78 44 js SHORT $LN28@stbi__mall + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00028 74 0e je SHORT $LN30@stbi__mall + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0002a 33 d2 xor edx, edx + 0002c b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00031 41 f7 f0 div r8d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00034 3b c8 cmp ecx, eax + 00036 7f 34 jg SHORT $LN28@stbi__mall +$LN30@stbi__mall: + 00038 44 8b d1 mov r10d, ecx + 0003b 45 0f af d0 imul r10d, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 0003f 45 85 d2 test r10d, r10d + 00042 78 28 js SHORT $LN28@stbi__mall + 00044 45 85 c9 test r9d, r9d + 00047 78 23 js SHORT $LN28@stbi__mall + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00049 74 0f je SHORT $LN2@stbi__mall + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0004b 33 d2 xor edx, edx + 0004d b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00052 41 f7 f1 div r9d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00055 44 3b d0 cmp r10d, eax + 00058 7f 12 jg SHORT $LN28@stbi__mall +$LN2@stbi__mall: + +; 516 : return stbi__malloc(a * b * c * d + add); + + 0005a 41 0f af c8 imul ecx, r8d + 0005e 41 0f af c9 imul ecx, r9d + 00062 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 00065 48 ff 25 00 00 + 00 00 rex_jmp QWORD PTR __imp_malloc +$LN28@stbi__mall: + +; 515 : if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + + 0006c 33 c0 xor eax, eax + +; 517 : } + + 0006e c3 ret 0 +stbi__malloc_mad4 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__addints_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +stbi__addints_valid PROC ; COMDAT + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 00000 44 8b c1 mov r8d, ecx + 00003 8b c2 mov eax, edx + 00005 41 f7 d0 not r8d + 00008 f7 d0 not eax + 0000a 44 33 c0 xor r8d, eax + 0000d 44 8b c9 mov r9d, ecx + 00010 79 06 jns SHORT $LN2@stbi__addi + 00012 b8 01 00 00 00 mov eax, 1 + +; 526 : } + + 00017 c3 ret 0 +$LN2@stbi__addi: + +; 524 : if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + + 00018 45 85 c9 test r9d, r9d + 0001b 79 16 jns SHORT $LN3@stbi__addi + 0001d 85 d2 test edx, edx + 0001f 79 12 jns SHORT $LN3@stbi__addi + 00021 b8 00 00 00 80 mov eax, -2147483648 ; ffffffff80000000H + 00026 2b c2 sub eax, edx + 00028 33 d2 xor edx, edx + 0002a 44 3b c8 cmp r9d, eax + 0002d 0f 9d c2 setge dl + +; 526 : } + + 00030 8b c2 mov eax, edx + 00032 c3 ret 0 +$LN3@stbi__addi: + +; 525 : return a <= INT_MAX - b; + + 00033 b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 00038 2b ca sub ecx, edx + 0003a 33 d2 xor edx, edx + 0003c 44 3b c9 cmp r9d, ecx + 0003f 0f 9e c2 setle dl + +; 526 : } + + 00042 8b c2 mov eax, edx + 00044 c3 ret 0 +stbi__addints_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__mul2shorts_valid +_TEXT SEGMENT +a$ = 8 +b$ = 16 +stbi__mul2shorts_valid PROC ; COMDAT + +; 530 : { + + 00000 44 0f bf c2 movsx r8d, dx + +; 531 : if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + + 00004 41 8d 40 01 lea eax, DWORD PTR [r8+1] + 00008 66 83 f8 01 cmp ax, 1 + 0000c 76 40 jbe SHORT $LN3@stbi__mul2 + +; 532 : if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid + + 0000e 44 0f bf c9 movsx r9d, cx + 00012 45 8b d0 mov r10d, r8d + 00015 66 41 33 c8 xor cx, r8w + 00019 66 0f ba e1 0f bt cx, 15 + 0001e 72 14 jb SHORT $LN4@stbi__mul2 + 00020 b8 ff 7f 00 00 mov eax, 32767 ; 00007fffH + 00025 99 cdq + 00026 41 f7 fa idiv r10d + 00029 33 c9 xor ecx, ecx +$LN8@stbi__mul2: + +; 535 : } + + 0002b 44 3b c8 cmp r9d, eax + 0002e 0f 9e c1 setle cl + 00031 8b c1 mov eax, ecx + 00033 c3 ret 0 +$LN4@stbi__mul2: + +; 533 : if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + + 00034 b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H + 00039 33 c9 xor ecx, ecx + 0003b 99 cdq + 0003c 41 f7 fa idiv r10d + 0003f 66 45 85 c0 test r8w, r8w + 00043 78 e6 js SHORT $LN8@stbi__mul2 + +; 534 : return a >= SHRT_MIN / b; + + 00045 44 3b c8 cmp r9d, eax + 00048 0f 9d c1 setge cl + 0004b 8b c1 mov eax, ecx + +; 535 : } + + 0004d c3 ret 0 +$LN3@stbi__mul2: + +; 531 : if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + + 0004e b8 01 00 00 00 mov eax, 1 + +; 535 : } + + 00053 c3 ret 0 +stbi__mul2shorts_valid ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__load_main +_TEXT SEGMENT +x$GSCopy$1$ = 64 +ri$GSCopy$1$ = 80 +comp$GSCopy$1$ = 88 +tv1050 = 96 +info$11 = 96 +p$12 = 112 +__$ArrayPad$ = 152 +s$ = 240 +x$ = 248 +y$ = 256 +comp$ = 264 +req_comp$ = 272 +ri$ = 280 +bpc$dead$ = 288 +stbi__load_main PROC ; COMDAT + +; 589 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 54 push r12 + 00007 41 55 push r13 + 00009 41 56 push r14 + 0000b 41 57 push r15 + 0000d 48 81 ec a8 00 + 00 00 sub rsp, 168 ; 000000a8H + 00014 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0001b 48 33 c4 xor rax, rsp + 0001e 48 89 84 24 98 + 00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00026 48 8b 84 24 18 + 01 00 00 mov rax, QWORD PTR ri$[rsp] + +; 590 : memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields +; 591 : ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed +; 592 : ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + + 0002e 45 33 e4 xor r12d, r12d + 00031 8b ac 24 10 01 + 00 00 mov ebp, DWORD PTR req_comp$[rsp] + 00038 4d 8b e9 mov r13, r9 + 0003b 4c 89 4c 24 58 mov QWORD PTR comp$GSCopy$1$[rsp], r9 + 00040 4d 8b f8 mov r15, r8 + 00043 48 8b da mov rbx, rdx + 00046 48 89 54 24 40 mov QWORD PTR x$GSCopy$1$[rsp], rdx + 0004b 48 c7 00 08 00 + 00 00 mov QWORD PTR [rax], 8 + 00052 48 8b f9 mov rdi, rcx + 00055 44 89 60 08 mov DWORD PTR [rax+8], r12d + 00059 48 89 44 24 50 mov QWORD PTR ri$GSCopy$1$[rsp], rax + +; 4825 : r = stbi__check_png_header(s); + + 0005e e8 00 00 00 00 call stbi__check_png_header + +; 342 : s->img_buffer = s->img_buffer_original; + + 00063 48 8b 8f d0 00 + 00 00 mov rcx, QWORD PTR [rdi+208] + 0006a 48 8d b7 c0 00 + 00 00 lea rsi, QWORD PTR [rdi+192] + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00071 48 8b 97 d8 00 + 00 00 mov rdx, QWORD PTR [rdi+216] + 00078 4c 8d b7 c8 00 + 00 00 lea r14, QWORD PTR [rdi+200] + 0007f 48 89 0e mov QWORD PTR [rsi], rcx + 00082 49 89 16 mov QWORD PTR [r14], rdx + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 00085 85 c0 test eax, eax + 00087 0f 84 5d 01 00 + 00 je $LN2@stbi__load + +; 4818 : p.s = s; + + 0008d 48 89 7c 24 70 mov QWORD PTR p$12[rsp], rdi + +; 4785 : void* result = NULL; + + 00092 41 8b dc mov ebx, r12d + +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + 00095 83 fd 04 cmp ebp, 4 + 00098 0f 87 1f 01 00 + 00 ja $LN22@stbi__load + +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + + 0009e 44 8b c5 mov r8d, ebp + 000a1 48 8d 4c 24 70 lea rcx, QWORD PTR p$12[rsp] + 000a6 33 d2 xor edx, edx + 000a8 e8 00 00 00 00 call stbi__parse_png_file + 000ad 85 c0 test eax, eax + 000af 0f 84 99 00 00 + 00 je $LN163@stbi__load + +; 4788 : if (p->depth <= 8) + + 000b5 8b 84 24 90 00 + 00 00 mov eax, DWORD PTR p$12[rsp+32] + 000bc 83 f8 08 cmp eax, 8 + 000bf 7f 07 jg SHORT $LN24@stbi__load + +; 4789 : ri->bits_per_channel = 8; + + 000c1 41 8d 44 24 08 lea eax, QWORD PTR [r12+8] + 000c6 eb 09 jmp SHORT $LN27@stbi__load +$LN24@stbi__load: + +; 4790 : else if (p->depth == 16) + + 000c8 83 f8 10 cmp eax, 16 + 000cb 0f 85 bf 00 00 + 00 jne $LN26@stbi__load +$LN27@stbi__load: + +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; + + 000d1 48 8b 4c 24 50 mov rcx, QWORD PTR ri$GSCopy$1$[rsp] + 000d6 89 01 mov DWORD PTR [rcx], eax + 000d8 48 8b 9c 24 88 + 00 00 00 mov rbx, QWORD PTR p$12[rsp+24] + +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { + + 000e0 48 8b 4c 24 70 mov rcx, QWORD PTR p$12[rsp] + 000e5 4c 89 a4 24 88 + 00 00 00 mov QWORD PTR p$12[rsp+24], r12 + 000ed 85 ed test ebp, ebp + 000ef 74 41 je SHORT $LN31@stbi__load + 000f1 8b 51 0c mov edx, DWORD PTR [rcx+12] + 000f4 3b ea cmp ebp, edx + 000f6 74 3a je SHORT $LN31@stbi__load + +; 4797 : if (ri->bits_per_channel == 8) + + 000f8 44 8b 09 mov r9d, DWORD PTR [rcx] + 000fb 83 f8 08 cmp eax, 8 + 000fe 8b 41 04 mov eax, DWORD PTR [rcx+4] + 00101 44 8b c5 mov r8d, ebp + 00104 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00108 48 8b cb mov rcx, rbx + 0010b 75 07 jne SHORT $LN29@stbi__load + +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + + 0010d e8 00 00 00 00 call stbi__convert_format + 00112 eb 05 jmp SHORT $LN209@stbi__load +$LN29@stbi__load: + +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + + 00114 e8 00 00 00 00 call stbi__convert_format16 +$LN209@stbi__load: + +; 4801 : p->s->img_out_n = req_comp; + + 00119 48 8b d8 mov rbx, rax + 0011c 48 8b 44 24 70 mov rax, QWORD PTR p$12[rsp] + 00121 89 68 0c mov DWORD PTR [rax+12], ebp + +; 4802 : if (result == NULL) return result; + + 00124 48 85 db test rbx, rbx + 00127 0f 84 b5 00 00 + 00 je $LN20@stbi__load + 0012d 48 8b 4c 24 70 mov rcx, QWORD PTR p$12[rsp] +$LN31@stbi__load: + +; 4803 : } +; 4804 : *x = p->s->img_x; + + 00132 8b 01 mov eax, DWORD PTR [rcx] + 00134 4c 8b 74 24 40 mov r14, QWORD PTR x$GSCopy$1$[rsp] + 00139 41 89 06 mov DWORD PTR [r14], eax + +; 4805 : *y = p->s->img_y; + + 0013c 8b 41 04 mov eax, DWORD PTR [rcx+4] + 0013f 41 89 07 mov DWORD PTR [r15], eax + +; 4806 : if (n) *n = p->s->img_n; + + 00142 4d 85 ed test r13, r13 + 00145 74 07 je SHORT $LN163@stbi__load + 00147 8b 41 08 mov eax, DWORD PTR [rcx+8] + 0014a 41 89 45 00 mov DWORD PTR [r13], eax +$LN163@stbi__load: + +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; + + 0014e 48 8b 8c 24 88 + 00 00 00 mov rcx, QWORD PTR p$12[rsp+24] + 00156 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; + + 0015c 48 8b 8c 24 80 + 00 00 00 mov rcx, QWORD PTR p$12[rsp+16] + 00164 4c 89 a4 24 88 + 00 00 00 mov QWORD PTR p$12[rsp+24], r12 + 0016c ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4810 : STBI_FREE(p->idata); p->idata = NULL; + + 00172 48 8b 4c 24 78 mov rcx, QWORD PTR p$12[rsp+8] + 00177 4c 89 a4 24 80 + 00 00 00 mov QWORD PTR p$12[rsp+16], r12 + 0017f ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 00185 48 8b c3 mov rax, rbx + +; 4812 : return result; + + 00188 4c 8b e3 mov r12, rbx + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 0018b e9 1e 06 00 00 jmp $LN1@stbi__load +$LN26@stbi__load: + +; 431 : stbi__g_failure_reason = str; + + 00190 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00199 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 0019f 41 bd 00 00 00 + 00 mov r13d, OFFSET FLAT:stbi__g_failure_reason + +; 431 : stbi__g_failure_reason = str; + + 001a5 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + 001a9 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 001b0 49 89 44 15 00 mov QWORD PTR [r13+rdx], rax + 001b5 49 8b c4 mov rax, r12 + 001b8 e9 f1 05 00 00 jmp $LN1@stbi__load +$LN22@stbi__load: + +; 431 : stbi__g_failure_reason = str; + + 001bd 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001c6 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 001cc 41 bd 00 00 00 + 00 mov r13d, OFFSET FLAT:stbi__g_failure_reason + +; 431 : stbi__g_failure_reason = str; + + 001d2 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + 001d6 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@ + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 001dd 49 89 44 15 00 mov QWORD PTR [r13+rdx], rax +$LN20@stbi__load: + 001e2 49 8b c4 mov rax, r12 + 001e5 e9 c4 05 00 00 jmp $LN1@stbi__load +$LN2@stbi__load: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001ea 48 3b ca cmp rcx, rdx + 001ed 73 09 jae SHORT $LN47@stbi__load + +; 1078 : return *s->img_buffer++; + + 001ef 0f b6 11 movzx edx, BYTE PTR [rcx] + 001f2 48 8d 41 01 lea rax, QWORD PTR [rcx+1] + 001f6 eb 1b jmp SHORT $LN211@stbi__load +$LN47@stbi__load: + +; 1079 : if (s->read_from_callbacks) { + + 001f8 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 001fc 0f 84 f5 00 00 + 00 je $LN153@stbi__load + +; 1080 : stbi__refill_buffer(s); + + 00202 48 8b cf mov rcx, rdi + 00205 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0020a 48 8b 06 mov rax, QWORD PTR [rsi] + 0020d 0f b6 10 movzx edx, BYTE PTR [rax] + 00210 48 ff c0 inc rax +$LN211@stbi__load: + +; 4870 : if (stbi__get8(s) != 'B') return 0; + + 00213 48 89 06 mov QWORD PTR [rsi], rax + 00216 80 fa 42 cmp dl, 66 ; 00000042H + 00219 0f 85 d8 00 00 + 00 jne $LN153@stbi__load + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0021f 49 3b 06 cmp rax, QWORD PTR [r14] + 00222 72 15 jb SHORT $LN212@stbi__load + +; 1079 : if (s->read_from_callbacks) { + + 00224 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00228 0f 84 c9 00 00 + 00 je $LN153@stbi__load + +; 1080 : stbi__refill_buffer(s); + + 0022e 48 8b cf mov rcx, rdi + 00231 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00236 48 8b 06 mov rax, QWORD PTR [rsi] +$LN212@stbi__load: + +; 4871 : if (stbi__get8(s) != 'M') return 0; + + 00239 0f b6 08 movzx ecx, BYTE PTR [rax] + 0023c 48 ff c0 inc rax + 0023f 48 89 06 mov QWORD PTR [rsi], rax + 00242 80 f9 4d cmp cl, 77 ; 0000004dH + 00245 0f 85 ac 00 00 + 00 jne $LN153@stbi__load + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0024b 48 8b cf mov rcx, rdi + 0024e e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00253 48 8b cf mov rcx, rdi + 00256 e8 00 00 00 00 call stbi__get16le + +; 4873 : stbi__get16le(s); // discard reserved + + 0025b 48 8b cf mov rcx, rdi + 0025e e8 00 00 00 00 call stbi__get16le + +; 4874 : stbi__get16le(s); // discard reserved + + 00263 48 8b cf mov rcx, rdi + 00266 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0026b 48 8b cf mov rcx, rdi + 0026e e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00273 48 8b cf mov rcx, rdi + 00276 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0027b 48 8b cf mov rcx, rdi + 0027e e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00283 48 8b cf mov rcx, rdi + 00286 8b d8 mov ebx, eax + 00288 e8 00 00 00 00 call stbi__get16le + 0028d c1 e0 10 shl eax, 16 + 00290 03 c3 add eax, ebx + +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + + 00292 83 f8 38 cmp eax, 56 ; 00000038H + 00295 77 10 ja SHORT $LN158@stbi__load + 00297 48 ba 00 10 00 + 00 00 01 00 01 mov rdx, 72058693549559808 ; 0100010000001000H + 002a1 48 0f a3 c2 bt rdx, rax + 002a5 72 0d jb SHORT $LN44@stbi__load +$LN158@stbi__load: + 002a7 83 f8 6c cmp eax, 108 ; 0000006cH + 002aa 74 08 je SHORT $LN44@stbi__load + 002ac 41 8b cc mov ecx, r12d + 002af 83 f8 7c cmp eax, 124 ; 0000007cH + 002b2 75 05 jne SHORT $LN45@stbi__load +$LN44@stbi__load: + 002b4 b9 01 00 00 00 mov ecx, 1 +$LN45@stbi__load: + +; 342 : s->img_buffer = s->img_buffer_original; + + 002b9 48 8b 87 d0 00 + 00 00 mov rax, QWORD PTR [rdi+208] + 002c0 48 89 06 mov QWORD PTR [rsi], rax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 002c3 48 8b 87 d8 00 + 00 00 mov rax, QWORD PTR [rdi+216] + 002ca 49 89 06 mov QWORD PTR [r14], rax + +; 599 : #endif +; 600 : #ifndef STBI_NO_BMP +; 601 : if (stbi__bmp_test(s)) return stbi__bmp_load(s, x, y, comp, req_comp, ri); + + 002cd 85 c9 test ecx, ecx + 002cf 74 3c je SHORT $LN164@stbi__load + 002d1 48 8b 4c 24 50 mov rcx, QWORD PTR ri$GSCopy$1$[rsp] + 002d6 4d 8b cd mov r9, r13 + 002d9 48 8b 54 24 40 mov rdx, QWORD PTR x$GSCopy$1$[rsp] + 002de 4d 8b c7 mov r8, r15 + 002e1 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx + 002e6 48 8b cf mov rcx, rdi + 002e9 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 002ed e8 00 00 00 00 call stbi__bmp_load + 002f2 e9 b7 04 00 00 jmp $LN1@stbi__load +$LN153@stbi__load: + +; 6141 : int r = stbi__gif_test_raw(s); + + 002f7 48 8b 87 d0 00 + 00 00 mov rax, QWORD PTR [rdi+208] + 002fe 48 89 06 mov QWORD PTR [rsi], rax + 00301 48 8b 87 d8 00 + 00 00 mov rax, QWORD PTR [rdi+216] + 00308 49 89 06 mov QWORD PTR [r14], rax + 0030b eb 05 jmp SHORT $LN3@stbi__load +$LN164@stbi__load: + +; 599 : #endif +; 600 : #ifndef STBI_NO_BMP +; 601 : if (stbi__bmp_test(s)) return stbi__bmp_load(s, x, y, comp, req_comp, ri); + + 0030d 48 8b 5c 24 40 mov rbx, QWORD PTR x$GSCopy$1$[rsp] +$LN3@stbi__load: + +; 6141 : int r = stbi__gif_test_raw(s); + + 00312 48 8b cf mov rcx, rdi + 00315 e8 00 00 00 00 call stbi__gif_test_raw + +; 342 : s->img_buffer = s->img_buffer_original; + + 0031a 48 8b 8f d0 00 + 00 00 mov rcx, QWORD PTR [rdi+208] + 00321 48 89 0e mov QWORD PTR [rsi], rcx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00324 48 8b 8f d8 00 + 00 00 mov rcx, QWORD PTR [rdi+216] + 0032b 49 89 0e mov QWORD PTR [r14], rcx + +; 602 : #endif +; 603 : #ifndef STBI_NO_GIF +; 604 : if (stbi__gif_test(s)) return stbi__gif_load(s, x, y, comp, req_comp, ri); + + 0032e 48 8b cf mov rcx, rdi + 00331 85 c0 test eax, eax + 00333 74 17 je SHORT $LN4@stbi__load + 00335 4d 8b cd mov r9, r13 + 00338 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 0033c 4d 8b c7 mov r8, r15 + 0033f 48 8b d3 mov rdx, rbx + 00342 e8 00 00 00 00 call stbi__gif_load + 00347 e9 62 04 00 00 jmp $LN1@stbi__load +$LN4@stbi__load: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 0034c e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00351 48 8b cf mov rcx, rdi + 00354 8b d8 mov ebx, eax + 00356 e8 00 00 00 00 call stbi__get16be + +; 342 : s->img_buffer = s->img_buffer_original; + + 0035b 48 8b 8f d0 00 + 00 00 mov rcx, QWORD PTR [rdi+208] + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00362 c1 e3 10 shl ebx, 16 + +; 342 : s->img_buffer = s->img_buffer_original; + + 00365 48 89 0e mov QWORD PTR [rsi], rcx + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00368 03 c3 add eax, ebx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0036a 48 8b 8f d8 00 + 00 00 mov rcx, QWORD PTR [rdi+216] + 00371 49 89 0e mov QWORD PTR [r14], rcx + +; 605 : #endif +; 606 : #ifndef STBI_NO_PSD +; 607 : if (stbi__psd_test(s)) return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc); + + 00374 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H + 00379 75 26 jne SHORT $LN5@stbi__load + 0037b 48 8b 4c 24 50 mov rcx, QWORD PTR ri$GSCopy$1$[rsp] + 00380 4d 8b cd mov r9, r13 + 00383 48 8b 54 24 40 mov rdx, QWORD PTR x$GSCopy$1$[rsp] + 00388 4d 8b c7 mov r8, r15 + 0038b 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx + 00390 48 8b cf mov rcx, rdi + 00393 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 00397 e8 00 00 00 00 call stbi__psd_load + 0039c e9 0d 04 00 00 jmp $LN1@stbi__load +$LN5@stbi__load: + +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + + 003a1 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@ + 003a8 48 8b cf mov rcx, rdi + 003ab e8 00 00 00 00 call stbi__pic_is4 + 003b0 85 c0 test eax, eax + 003b2 0f 84 af 00 00 + 00 je $LN156@stbi__load + +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) + + 003b8 bb 54 00 00 00 mov ebx, 84 ; 00000054H + 003bd 0f 1f 00 npad 3 +$LL77@stbi__load: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003c0 48 8b 06 mov rax, QWORD PTR [rsi] + 003c3 49 3b 06 cmp rax, QWORD PTR [r14] + 003c6 73 08 jae SHORT $LN82@stbi__load + +; 1078 : return *s->img_buffer++; + + 003c8 48 ff c0 inc rax + 003cb 48 89 06 mov QWORD PTR [rsi], rax + 003ce eb 14 jmp SHORT $LN75@stbi__load +$LN82@stbi__load: + +; 1079 : if (s->read_from_callbacks) { + + 003d0 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 003d4 74 0e je SHORT $LN75@stbi__load + +; 1080 : stbi__refill_buffer(s); + + 003d6 48 8b cf mov rcx, rdi + 003d9 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003de 48 ff 06 inc QWORD PTR [rsi] + 003e1 48 8b 06 mov rax, QWORD PTR [rsi] +$LN75@stbi__load: + +; 5901 : for (i = 0; i < 84; ++i) + + 003e4 48 83 eb 01 sub rbx, 1 + 003e8 75 d6 jne SHORT $LL77@stbi__load + 003ea 49 8b dc mov rbx, r12 + 003ed 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_04ELNJHLFH@PICT@ +$LL88@stbi__load: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003f4 49 3b 06 cmp rax, QWORD PTR [r14] + 003f7 73 0b jae SHORT $LN92@stbi__load + +; 1078 : return *s->img_buffer++; + + 003f9 0f b6 08 movzx ecx, BYTE PTR [rax] + 003fc 48 ff c0 inc rax + 003ff 48 89 06 mov QWORD PTR [rsi], rax + 00402 eb 25 jmp SHORT $LN91@stbi__load +$LN92@stbi__load: + +; 1079 : if (s->read_from_callbacks) { + + 00404 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00408 74 1d je SHORT $LN93@stbi__load + +; 1080 : stbi__refill_buffer(s); + + 0040a 48 8b cf mov rcx, rdi + 0040d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00412 48 8b 06 mov rax, QWORD PTR [rsi] + 00415 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_04ELNJHLFH@PICT@ + 0041c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0041f 48 ff c0 inc rax + 00422 48 89 06 mov QWORD PTR [rsi], rax + 00425 eb 02 jmp SHORT $LN91@stbi__load +$LN93@stbi__load: + +; 1082 : } +; 1083 : return 0; + + 00427 32 c9 xor cl, cl +$LN91@stbi__load: + +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) + + 00429 3a 0c 13 cmp cl, BYTE PTR [rbx+rdx] + 0042c 75 39 jne SHORT $LN156@stbi__load + +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) + + 0042e 48 ff c3 inc rbx + 00431 48 83 fb 04 cmp rbx, 4 + 00435 7c bd jl SHORT $LL88@stbi__load + +; 5907 : return 1; + + 00437 48 8b 87 d0 00 + 00 00 mov rax, QWORD PTR [rdi+208] + +; 608 : #else +; 609 : STBI_NOTUSED(bpc); +; 610 : #endif +; 611 : #ifndef STBI_NO_PIC +; 612 : if (stbi__pic_test(s)) return stbi__pic_load(s, x, y, comp, req_comp, ri); + + 0043e 4d 8b cd mov r9, r13 + 00441 48 8b 54 24 40 mov rdx, QWORD PTR x$GSCopy$1$[rsp] + 00446 4d 8b c7 mov r8, r15 + +; 5907 : return 1; + + 00449 48 89 06 mov QWORD PTR [rsi], rax + +; 608 : #else +; 609 : STBI_NOTUSED(bpc); +; 610 : #endif +; 611 : #ifndef STBI_NO_PIC +; 612 : if (stbi__pic_test(s)) return stbi__pic_load(s, x, y, comp, req_comp, ri); + + 0044c 48 8b cf mov rcx, rdi + +; 5907 : return 1; + + 0044f 48 8b 87 d8 00 + 00 00 mov rax, QWORD PTR [rdi+216] + 00456 49 89 06 mov QWORD PTR [r14], rax + +; 608 : #else +; 609 : STBI_NOTUSED(bpc); +; 610 : #endif +; 611 : #ifndef STBI_NO_PIC +; 612 : if (stbi__pic_test(s)) return stbi__pic_load(s, x, y, comp, req_comp, ri); + + 00459 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 0045d e8 00 00 00 00 call stbi__pic_load + 00462 e9 47 03 00 00 jmp $LN1@stbi__load +$LN156@stbi__load: + +; 438 : return STBI_MALLOC(size); + + 00467 48 8b 97 d0 00 + 00 00 mov rdx, QWORD PTR [rdi+208] + 0046e 49 8b ce mov rcx, r14 + 00471 48 8b 87 d8 00 + 00 00 mov rax, QWORD PTR [rdi+216] + 00478 48 8b de mov rbx, rsi + 0047b 48 89 13 mov QWORD PTR [rbx], rdx + 0047e 48 89 01 mov QWORD PTR [rcx], rax + 00481 b9 88 48 00 00 mov ecx, 18568 ; 00004888H + 00486 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 0048c 4c 8b e8 mov r13, rax + +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); + + 0048f 48 85 c0 test rax, rax + 00492 75 3f jne SHORT $LN98@stbi__load + +; 431 : stbi__g_failure_reason = str; + + 00494 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0049d 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 004a3 41 bd 00 00 00 + 00 mov r13d, OFFSET FLAT:stbi__g_failure_reason + 004a9 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + 004ad 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 004b4 49 89 44 15 00 mov QWORD PTR [r13+rdx], rax +$LN7@stbi__load: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 004b9 48 8b 06 mov rax, QWORD PTR [rsi] + 004bc 49 3b 06 cmp rax, QWORD PTR [r14] + 004bf 0f 83 b2 01 00 + 00 jae $LN132@stbi__load + +; 1078 : return *s->img_buffer++; + + 004c5 0f b6 18 movzx ebx, BYTE PTR [rax] + 004c8 48 ff c0 inc rax + 004cb 48 89 06 mov QWORD PTR [rsi], rax + 004ce e9 c2 01 00 00 jmp $LN131@stbi__load +$LN98@stbi__load: + +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); + + 004d3 48 8d 48 08 lea rcx, QWORD PTR [rax+8] + 004d7 33 d2 xor edx, edx + 004d9 41 b8 68 48 00 + 00 mov r8d, 18536 ; 00004868H + 004df e8 00 00 00 00 call memset + +; 187 : __cpuid(info, 1); + + 004e4 33 c9 xor ecx, ecx + +; 3539 : j->s = s; + + 004e6 49 89 7d 00 mov QWORD PTR [r13], rdi + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 004ea 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_block + 004f1 49 89 85 70 48 + 00 00 mov QWORD PTR [r13+18544], rax + +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + + 004f8 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_row + 004ff 49 89 85 78 48 + 00 00 mov QWORD PTR [r13+18552], rax + +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + + 00506 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2 + 0050d 49 89 85 80 48 + 00 00 mov QWORD PTR [r13+18560], rax + +; 187 : __cpuid(info, 1); + + 00514 b8 01 00 00 00 mov eax, 1 + 00519 0f a2 cpuid + 0051b 89 44 24 60 mov DWORD PTR info$11[rsp], eax + +; 3310 : if (stbi__sse2_available()) { + + 0051f 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_simd + +; 187 : __cpuid(info, 1); + + 00526 89 5c 24 64 mov DWORD PTR info$11[rsp+4], ebx + +; 3310 : if (stbi__sse2_available()) { + + 0052a 48 8d 1d 00 00 + 00 00 lea rbx, OFFSET FLAT:stbi__resample_row_hv_2_simd + 00531 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__YCbCr_to_RGB_simd + 00538 0f ba e2 1a bt edx, 26 + 0053c 73 15 jae SHORT $LN105@stbi__load + +; 3311 : j->idct_block_kernel = stbi__idct_simd; + + 0053e 49 89 85 70 48 + 00 00 mov QWORD PTR [r13+18544], rax + +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + + 00545 49 89 8d 78 48 + 00 00 mov QWORD PTR [r13+18552], rcx + +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + + 0054c 49 89 9d 80 48 + 00 00 mov QWORD PTR [r13+18560], rbx +$LN105@stbi__load: + +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + + 00553 ba 01 00 00 00 mov edx, 1 + 00558 49 8b cd mov rcx, r13 + 0055b e8 00 00 00 00 call stbi__decode_jpeg_header + +; 342 : s->img_buffer = s->img_buffer_original; + + 00560 48 8b 97 d0 00 + 00 00 mov rdx, QWORD PTR [rdi+208] + +; 3543 : STBI_FREE(j); + + 00567 49 8b cd mov rcx, r13 + +; 342 : s->img_buffer = s->img_buffer_original; + + 0056a 48 89 16 mov QWORD PTR [rsi], rdx + +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + + 0056d 8b d8 mov ebx, eax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0056f 48 8b 97 d8 00 + 00 00 mov rdx, QWORD PTR [rdi+216] + 00576 49 89 16 mov QWORD PTR [r14], rdx + +; 3543 : STBI_FREE(j); + + 00579 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 3544 : return r; + + 0057f 41 bd 00 00 00 + 00 mov r13d, OFFSET FLAT:stbi__g_failure_reason + 00585 41 8b c5 mov eax, r13d + 00588 48 89 44 24 60 mov QWORD PTR tv1050[rsp], rax + +; 613 : #endif +; 614 : +; 615 : // then the formats that can end up attempting to load with just 1 or 2 +; 616 : // bytes matching expectations; these are prone to false positives, so +; 617 : // try them later +; 618 : #ifndef STBI_NO_JPEG +; 619 : if (stbi__jpeg_test(s)) return stbi__jpeg_load(s, x, y, comp, req_comp, ri); + + 0058d 85 db test ebx, ebx + 0058f 0f 84 24 ff ff + ff je $LN7@stbi__load + +; 438 : return STBI_MALLOC(size); + + 00595 b9 88 48 00 00 mov ecx, 18568 ; 00004888H + 0059a ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 005a0 48 8b f0 mov rsi, rax + +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); + + 005a3 48 85 c0 test rax, rax + 005a6 75 2b jne SHORT $LN114@stbi__load + +; 431 : stbi__g_failure_reason = str; + + 005a8 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 005ae 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 005b7 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + 005bb 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 005c2 48 8b 4c 24 60 mov rcx, QWORD PTR tv1050[rsp] + 005c7 48 89 04 11 mov QWORD PTR [rcx+rdx], rax + +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + + 005cb 49 8b c4 mov rax, r12 + 005ce e9 db 01 00 00 jmp $LN1@stbi__load +$LN114@stbi__load: + +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); + + 005d3 48 8d 48 08 lea rcx, QWORD PTR [rax+8] + 005d7 33 d2 xor edx, edx + 005d9 41 b8 68 48 00 + 00 mov r8d, 18536 ; 00004868H + 005df e8 00 00 00 00 call memset + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 005e4 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__idct_block + +; 3526 : j->s = s; + + 005eb 48 89 3e mov QWORD PTR [rsi], rdi + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 005ee 48 89 8e 70 48 + 00 00 mov QWORD PTR [rsi+18544], rcx + +; 187 : __cpuid(info, 1); + + 005f5 b8 01 00 00 00 mov eax, 1 + +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + + 005fa 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__YCbCr_to_RGB_row + 00601 48 89 8e 78 48 + 00 00 mov QWORD PTR [rsi+18552], rcx + +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + + 00608 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__resample_row_hv_2 + 0060f 48 89 8e 80 48 + 00 00 mov QWORD PTR [rsi+18560], rcx + +; 187 : __cpuid(info, 1); + + 00616 33 c9 xor ecx, ecx + 00618 0f a2 cpuid + +; 3310 : if (stbi__sse2_available()) { + + 0061a 0f ba e2 1a bt edx, 26 + 0061e 73 2a jae SHORT $LN121@stbi__load + +; 3311 : j->idct_block_kernel = stbi__idct_simd; + + 00620 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_simd + 00627 48 89 86 70 48 + 00 00 mov QWORD PTR [rsi+18544], rax + +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + + 0062e 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_simd + 00635 48 89 86 78 48 + 00 00 mov QWORD PTR [rsi+18552], rax + +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + + 0063c 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2_simd + 00643 48 89 86 80 48 + 00 00 mov QWORD PTR [rsi+18560], rax +$LN121@stbi__load: + +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); + + 0064a 4c 8b 4c 24 58 mov r9, QWORD PTR comp$GSCopy$1$[rsp] + 0064f 4d 8b c7 mov r8, r15 + 00652 48 8b 54 24 40 mov rdx, QWORD PTR x$GSCopy$1$[rsp] + 00657 48 8b ce mov rcx, rsi + 0065a 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 0065e e8 00 00 00 00 call load_jpeg_image + +; 3529 : STBI_FREE(j); + + 00663 48 8b ce mov rcx, rsi + 00666 4c 8b e0 mov r12, rax + 00669 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 613 : #endif +; 614 : +; 615 : // then the formats that can end up attempting to load with just 1 or 2 +; 616 : // bytes matching expectations; these are prone to false positives, so +; 617 : // try them later +; 618 : #ifndef STBI_NO_JPEG +; 619 : if (stbi__jpeg_test(s)) return stbi__jpeg_load(s, x, y, comp, req_comp, ri); + + 0066f 49 8b c4 mov rax, r12 + 00672 e9 37 01 00 00 jmp $LN1@stbi__load +$LN132@stbi__load: + +; 1079 : if (s->read_from_callbacks) { + + 00677 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 0067b 74 16 je SHORT $LN133@stbi__load + +; 1080 : stbi__refill_buffer(s); + + 0067d 48 8b cf mov rcx, rdi + 00680 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00685 48 8b 06 mov rax, QWORD PTR [rsi] + 00688 0f b6 18 movzx ebx, BYTE PTR [rax] + 0068b 48 ff c0 inc rax + 0068e 48 89 06 mov QWORD PTR [rsi], rax + 00691 eb 02 jmp SHORT $LN131@stbi__load +$LN133@stbi__load: + +; 1082 : } +; 1083 : return 0; + + 00693 32 db xor bl, bl +$LN131@stbi__load: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00695 49 3b 06 cmp rax, QWORD PTR [r14] + 00698 73 0b jae SHORT $LN136@stbi__load + +; 1078 : return *s->img_buffer++; + + 0069a 0f b6 08 movzx ecx, BYTE PTR [rax] + 0069d 48 ff c0 inc rax + 006a0 48 89 06 mov QWORD PTR [rsi], rax + 006a3 eb 1e jmp SHORT $LN135@stbi__load +$LN136@stbi__load: + +; 1079 : if (s->read_from_callbacks) { + + 006a5 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 006a9 74 16 je SHORT $LN137@stbi__load + +; 1080 : stbi__refill_buffer(s); + + 006ab 48 8b cf mov rcx, rdi + 006ae e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 006b3 48 8b 06 mov rax, QWORD PTR [rsi] + 006b6 0f b6 08 movzx ecx, BYTE PTR [rax] + 006b9 48 ff c0 inc rax + 006bc 48 89 06 mov QWORD PTR [rsi], rax + 006bf eb 02 jmp SHORT $LN135@stbi__load +$LN137@stbi__load: + +; 1082 : } +; 1083 : return 0; + + 006c1 32 c9 xor cl, cl +$LN135@stbi__load: + +; 7067 : if (p != 'P' || (t != '5' && t != '6')) { + + 006c3 80 fb 50 cmp bl, 80 ; 00000050H + 006c6 75 30 jne SHORT $LN129@stbi__load + 006c8 80 e9 35 sub cl, 53 ; 00000035H + 006cb 80 f9 01 cmp cl, 1 + 006ce 77 28 ja SHORT $LN129@stbi__load + +; 620 : #endif +; 621 : #ifndef STBI_NO_PNM +; 622 : if (stbi__pnm_test(s)) return stbi__pnm_load(s, x, y, comp, req_comp, ri); + + 006d0 48 8b 4c 24 50 mov rcx, QWORD PTR ri$GSCopy$1$[rsp] + 006d5 4d 8b c7 mov r8, r15 + 006d8 4c 8b 4c 24 58 mov r9, QWORD PTR comp$GSCopy$1$[rsp] + 006dd 48 8b 54 24 40 mov rdx, QWORD PTR x$GSCopy$1$[rsp] + 006e2 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx + 006e7 48 8b cf mov rcx, rdi + 006ea 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 006ee e8 00 00 00 00 call stbi__pnm_load + 006f3 e9 b6 00 00 00 jmp $LN1@stbi__load +$LN129@stbi__load: + +; 342 : s->img_buffer = s->img_buffer_original; + + 006f8 48 8b 87 d0 00 + 00 00 mov rax, QWORD PTR [rdi+208] + +; 623 : #endif +; 624 : +; 625 : #ifndef STBI_NO_HDR +; 626 : if (stbi__hdr_test(s)) { + + 006ff 48 8b cf mov rcx, rdi + +; 342 : s->img_buffer = s->img_buffer_original; + + 00702 48 89 06 mov QWORD PTR [rsi], rax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00705 48 8b 87 d8 00 + 00 00 mov rax, QWORD PTR [rdi+216] + 0070c 49 89 06 mov QWORD PTR [r14], rax + +; 623 : #endif +; 624 : +; 625 : #ifndef STBI_NO_HDR +; 626 : if (stbi__hdr_test(s)) { + + 0070f e8 00 00 00 00 call stbi__hdr_test + 00714 85 c0 test eax, eax + 00716 74 42 je SHORT $LN9@stbi__load + +; 627 : float* hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri); + + 00718 48 8b 4c 24 50 mov rcx, QWORD PTR ri$GSCopy$1$[rsp] + 0071d 4d 8b c7 mov r8, r15 + 00720 48 8b 5c 24 58 mov rbx, QWORD PTR comp$GSCopy$1$[rsp] + 00725 4c 8b 74 24 40 mov r14, QWORD PTR x$GSCopy$1$[rsp] + 0072a 4c 8b cb mov r9, rbx + 0072d 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx + 00732 49 8b d6 mov rdx, r14 + 00735 48 8b cf mov rcx, rdi + 00738 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 0073c e8 00 00 00 00 call stbi__hdr_load + +; 628 : return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + + 00741 85 ed test ebp, ebp + 00743 75 02 jne SHORT $LN13@stbi__load + 00745 8b 2b mov ebp, DWORD PTR [rbx] +$LN13@stbi__load: + 00747 45 8b 07 mov r8d, DWORD PTR [r15] + 0074a 44 8b cd mov r9d, ebp + 0074d 41 8b 16 mov edx, DWORD PTR [r14] + 00750 48 8b c8 mov rcx, rax + 00753 e8 00 00 00 00 call stbi__hdr_to_ldr + 00758 eb 54 jmp SHORT $LN1@stbi__load +$LN9@stbi__load: + +; 629 : } +; 630 : #endif +; 631 : +; 632 : #ifndef STBI_NO_TGA +; 633 : // test tga last because it's a crappy test! +; 634 : if (stbi__tga_test(s)) + + 0075a 48 8b cf mov rcx, rdi + 0075d e8 00 00 00 00 call stbi__tga_test + 00762 85 c0 test eax, eax + 00764 74 25 je SHORT $LN10@stbi__load + +; 635 : return stbi__tga_load(s, x, y, comp, req_comp, ri); + + 00766 48 8b 4c 24 50 mov rcx, QWORD PTR ri$GSCopy$1$[rsp] + 0076b 4d 8b c7 mov r8, r15 + 0076e 4c 8b 4c 24 58 mov r9, QWORD PTR comp$GSCopy$1$[rsp] + 00773 48 8b 54 24 40 mov rdx, QWORD PTR x$GSCopy$1$[rsp] + 00778 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx + 0077d 48 8b cf mov rcx, rdi + 00780 89 6c 24 20 mov DWORD PTR [rsp+32], ebp + 00784 e8 00 00 00 00 call stbi__tga_load + 00789 eb 23 jmp SHORT $LN1@stbi__load +$LN10@stbi__load: + +; 431 : stbi__g_failure_reason = str; + + 0078b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00794 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 0079a 41 8b dd mov ebx, r13d + 0079d 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + 007a1 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@ + 007a8 48 89 04 13 mov QWORD PTR [rbx+rdx], rax + +; 636 : #endif +; 637 : +; 638 : return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); + + 007ac 33 c0 xor eax, eax +$LN1@stbi__load: + +; 639 : } + + 007ae 48 8b 8c 24 98 + 00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 007b6 48 33 cc xor rcx, rsp + 007b9 e8 00 00 00 00 call __security_check_cookie + 007be 48 81 c4 a8 00 + 00 00 add rsp, 168 ; 000000a8H + 007c5 41 5f pop r15 + 007c7 41 5e pop r14 + 007c9 41 5d pop r13 + 007cb 41 5c pop r12 + 007cd 5f pop rdi + 007ce 5e pop rsi + 007cf 5d pop rbp + 007d0 5b pop rbx + 007d1 c3 ret 0 +stbi__load_main ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__convert_16_to_8 +_TEXT SEGMENT +orig$ = 48 +w$ = 56 +h$ = 64 +channels$ = 72 +stbi__convert_16_to_8 PROC ; COMDAT + +; 642 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 57 push rdi + 00010 48 83 ec 20 sub rsp, 32 ; 00000020H + 00014 8b da mov ebx, edx + 00016 48 8b f1 mov rsi, rcx + +; 643 : int i; +; 644 : int img_len = w * h * channels; + + 00019 41 0f af d8 imul ebx, r8d + 0001d 41 0f af d9 imul ebx, r9d + +; 645 : stbi_uc* reduced; +; 646 : +; 647 : reduced = (stbi_uc*)stbi__malloc(img_len); + + 00021 48 63 eb movsxd rbp, ebx + +; 438 : return STBI_MALLOC(size); + + 00024 48 8b cd mov rcx, rbp + 00027 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 0002d 48 8b f8 mov rdi, rax + +; 648 : if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + 00030 48 85 c0 test rax, rax + 00033 75 2a jne SHORT $LN5@stbi__conv + +; 431 : stbi__g_failure_reason = str; + + 00035 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0003e 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00044 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 00049 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 0004d 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00054 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 648 : if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + 00058 33 c0 xor eax, eax + 0005a e9 4d 01 00 00 jmp $LN1@stbi__conv +$LN5@stbi__conv: + +; 649 : +; 650 : for (i = 0; i < img_len; ++i) + + 0005f 45 33 c0 xor r8d, r8d + 00062 41 8b d0 mov edx, r8d + 00065 85 db test ebx, ebx + 00067 0f 8e 19 01 00 + 00 jle $LN14@stbi__conv + 0006d 83 fb 04 cmp ebx, 4 + 00070 0f 82 10 01 00 + 00 jb $LN14@stbi__conv + 00076 8d 43 ff lea eax, DWORD PTR [rbx-1] + 00079 48 63 c8 movsxd rcx, eax + 0007c 48 8d 04 4e lea rax, QWORD PTR [rsi+rcx*2] + 00080 4c 8d 0c 39 lea r9, QWORD PTR [rcx+rdi] + 00084 48 3b f8 cmp rdi, rax + 00087 77 09 ja SHORT $LN17@stbi__conv + 00089 4c 3b ce cmp r9, rsi + 0008c 0f 83 f4 00 00 + 00 jae $LN14@stbi__conv +$LN17@stbi__conv: + 00092 83 fb 20 cmp ebx, 32 ; 00000020H + 00095 0f 82 ac 00 00 + 00 jb $LN16@stbi__conv + +; 651 : reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + 0009b 8b cb mov ecx, ebx + 0009d 81 e1 1f 00 00 + 80 and ecx, -2147483617 ; ffffffff8000001fH + 000a3 7d 07 jge SHORT $LN28@stbi__conv + 000a5 ff c9 dec ecx + 000a7 83 c9 e0 or ecx, -32 ; ffffffffffffffe0H + 000aa ff c1 inc ecx +$LN28@stbi__conv: + 000ac 8b c3 mov eax, ebx + 000ae 2b c1 sub eax, ecx + +; 649 : +; 650 : for (i = 0; i < img_len; ++i) + + 000b0 48 63 c8 movsxd rcx, eax + +; 651 : reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + 000b3 48 8d 46 20 lea rax, QWORD PTR [rsi+32] + 000b7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL4@stbi__conv: + 000c0 f3 0f 6f 40 e0 movdqu xmm0, XMMWORD PTR [rax-32] + 000c5 83 c2 20 add edx, 32 ; 00000020H + 000c8 f3 0f 6f 48 f0 movdqu xmm1, XMMWORD PTR [rax-16] + 000cd 48 8d 40 40 lea rax, QWORD PTR [rax+64] + 000d1 66 0f 71 d0 08 psrlw xmm0, 8 + 000d6 0f 54 05 00 00 + 00 00 andps xmm0, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 000dd 66 0f 71 d1 08 psrlw xmm1, 8 + 000e2 0f 54 0d 00 00 + 00 00 andps xmm1, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 000e9 66 0f 67 c0 packuswb xmm0, xmm0 + 000ed 66 42 0f d6 04 + 07 movq QWORD PTR [rdi+r8], xmm0 + 000f3 f3 0f 6f 40 c0 movdqu xmm0, XMMWORD PTR [rax-64] + 000f8 66 0f 67 c9 packuswb xmm1, xmm1 + 000fc 66 42 0f d6 4c + 07 08 movq QWORD PTR [rdi+r8+8], xmm1 + 00103 f3 0f 6f 48 d0 movdqu xmm1, XMMWORD PTR [rax-48] + 00108 66 0f 71 d0 08 psrlw xmm0, 8 + 0010d 0f 54 05 00 00 + 00 00 andps xmm0, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 00114 66 0f 71 d1 08 psrlw xmm1, 8 + 00119 0f 54 0d 00 00 + 00 00 andps xmm1, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 00120 66 0f 67 c0 packuswb xmm0, xmm0 + 00124 66 42 0f d6 44 + 07 10 movq QWORD PTR [rdi+r8+16], xmm0 + 0012b 66 0f 67 c9 packuswb xmm1, xmm1 + 0012f 66 42 0f d6 4c + 07 18 movq QWORD PTR [rdi+r8+24], xmm1 + 00136 49 83 c0 20 add r8, 32 ; 00000020H + 0013a 4c 3b c1 cmp r8, rcx + 0013d 7c 81 jl SHORT $LL4@stbi__conv + +; 649 : +; 650 : for (i = 0; i < img_len; ++i) + + 0013f 8b c3 mov eax, ebx + 00141 24 1f and al, 31 + 00143 3c 04 cmp al, 4 + 00145 72 3f jb SHORT $LN14@stbi__conv +$LN16@stbi__conv: + +; 651 : reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + 00147 8b c3 mov eax, ebx + 00149 25 03 00 00 80 and eax, -2147483645 ; ffffffff80000003H + 0014e 7d 07 jge SHORT $LN27@stbi__conv + 00150 ff c8 dec eax + 00152 83 c8 fc or eax, -4 + 00155 ff c0 inc eax +$LN27@stbi__conv: + 00157 2b d8 sub ebx, eax + +; 649 : +; 650 : for (i = 0; i < img_len; ++i) + + 00159 48 63 c2 movsxd rax, edx + 0015c 48 63 cb movsxd rcx, ebx + 0015f 90 npad 1 +$LL15@stbi__conv: + +; 651 : reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + 00160 f3 0f 7e 04 46 movq xmm0, QWORD PTR [rsi+rax*2] + 00165 83 c2 04 add edx, 4 + 00168 66 0f 71 d0 08 psrlw xmm0, 8 + 0016d 0f 54 05 00 00 + 00 00 andps xmm0, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 00174 66 0f 67 c0 packuswb xmm0, xmm0 + 00178 66 0f 7e 04 38 movd DWORD PTR [rax+rdi], xmm0 + 0017d 48 83 c0 04 add rax, 4 + 00181 48 3b c1 cmp rax, rcx + 00184 7c da jl SHORT $LL15@stbi__conv +$LN14@stbi__conv: + +; 649 : +; 650 : for (i = 0; i < img_len; ++i) + + 00186 48 63 c2 movsxd rax, edx + 00189 48 3b c5 cmp rax, rbp + 0018c 7d 12 jge SHORT $LN3@stbi__conv + 0018e 66 90 npad 2 +$LL13@stbi__conv: + +; 651 : reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + 00190 0f b6 4c 46 01 movzx ecx, BYTE PTR [rsi+rax*2+1] + 00195 88 0c 38 mov BYTE PTR [rax+rdi], cl + 00198 48 ff c0 inc rax + 0019b 48 3b c5 cmp rax, rbp + 0019e 7c f0 jl SHORT $LL13@stbi__conv +$LN3@stbi__conv: + +; 652 : +; 653 : STBI_FREE(orig); + + 001a0 48 8b ce mov rcx, rsi + 001a3 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 654 : return reduced; + + 001a9 48 8b c7 mov rax, rdi +$LN1@stbi__conv: + +; 655 : } + + 001ac 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 001b1 48 8b 6c 24 38 mov rbp, QWORD PTR [rsp+56] + 001b6 48 8b 74 24 40 mov rsi, QWORD PTR [rsp+64] + 001bb 48 83 c4 20 add rsp, 32 ; 00000020H + 001bf 5f pop rdi + 001c0 c3 ret 0 +stbi__convert_16_to_8 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__vertical_flip +_TEXT SEGMENT +temp$ = 32 +__$ArrayPad$ = 2080 +image$ = 2176 +w$ = 2184 +h$ = 2192 +bytes_per_pixel$ = 2200 +stbi__vertical_flip PROC ; COMDAT + +; 674 : { + + 00000 4c 8b dc mov r11, rsp + 00003 41 54 push r12 + 00005 41 57 push r15 + 00007 48 81 ec 68 08 + 00 00 sub rsp, 2152 ; 00000868H + 0000e 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00015 48 33 c4 xor rax, rsp + 00018 48 89 84 24 20 + 08 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00020 4c 8b e1 mov r12, rcx + +; 675 : int row; +; 676 : size_t bytes_per_row = (size_t)w * bytes_per_pixel; + + 00023 4d 63 f9 movsxd r15, r9d + +; 677 : stbi_uc temp[2048]; +; 678 : stbi_uc* bytes = (stbi_uc*)image; +; 679 : +; 680 : for (row = 0; row < (h >> 1); row++) { + + 00026 41 8b c8 mov ecx, r8d + 00029 48 63 c2 movsxd rax, edx + 0002c d1 f9 sar ecx, 1 + 0002e 4c 0f af f8 imul r15, rax + 00032 85 c9 test ecx, ecx + 00034 0f 8e c7 00 00 + 00 jle $LN3@stbi__vert + 0003a 49 89 5b e8 mov QWORD PTR [r11-24], rbx + 0003e 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 00042 49 89 6b e0 mov QWORD PTR [r11-32], rbp + 00046 49 89 73 d8 mov QWORD PTR [r11-40], rsi + 0004a 49 89 7b d0 mov QWORD PTR [r11-48], rdi + 0004e 4d 89 6b c8 mov QWORD PTR [r11-56], r13 + 00052 48 63 d8 movsxd rbx, eax + 00055 49 0f af df imul rbx, r15 + 00059 4d 89 73 c0 mov QWORD PTR [r11-64], r14 + 0005d 49 03 dc add rbx, r12 + 00060 44 8b e9 mov r13d, ecx + 00063 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL4@stbi__vert: + +; 681 : stbi_uc* row0 = bytes + row * bytes_per_row; + + 00070 49 8b f4 mov rsi, r12 + +; 682 : stbi_uc* row1 = bytes + (h - row - 1) * bytes_per_row; + + 00073 48 8b eb mov rbp, rbx + +; 683 : // swap row0 with row1 +; 684 : size_t bytes_left = bytes_per_row; + + 00076 4d 8b f7 mov r14, r15 + +; 685 : while (bytes_left) { + + 00079 4d 85 ff test r15, r15 + 0007c 74 47 je SHORT $LN2@stbi__vert + 0007e 66 90 npad 2 +$LL5@stbi__vert: + +; 686 : size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + + 00080 bf 00 08 00 00 mov edi, 2048 ; 00000800H + +; 687 : memcpy(temp, row0, bytes_copy); + + 00085 48 8d 4c 24 20 lea rcx, QWORD PTR temp$[rsp] + 0008a 4c 3b f7 cmp r14, rdi + 0008d 48 8b d6 mov rdx, rsi + 00090 49 0f 42 fe cmovb rdi, r14 + 00094 4c 8b c7 mov r8, rdi + 00097 e8 00 00 00 00 call memcpy + +; 688 : memcpy(row0, row1, bytes_copy); + + 0009c 4c 8b c7 mov r8, rdi + 0009f 48 8b d5 mov rdx, rbp + 000a2 48 8b ce mov rcx, rsi + 000a5 e8 00 00 00 00 call memcpy + +; 689 : memcpy(row1, temp, bytes_copy); + + 000aa 4c 8b c7 mov r8, rdi + 000ad 48 8d 54 24 20 lea rdx, QWORD PTR temp$[rsp] + 000b2 48 8b cd mov rcx, rbp + 000b5 e8 00 00 00 00 call memcpy + +; 690 : row0 += bytes_copy; + + 000ba 48 03 f7 add rsi, rdi + +; 691 : row1 += bytes_copy; + + 000bd 48 03 ef add rbp, rdi + +; 692 : bytes_left -= bytes_copy; + + 000c0 4c 2b f7 sub r14, rdi + 000c3 75 bb jne SHORT $LL5@stbi__vert +$LN2@stbi__vert: + +; 677 : stbi_uc temp[2048]; +; 678 : stbi_uc* bytes = (stbi_uc*)image; +; 679 : +; 680 : for (row = 0; row < (h >> 1); row++) { + + 000c5 4d 03 e7 add r12, r15 + 000c8 49 2b df sub rbx, r15 + 000cb 49 83 ed 01 sub r13, 1 + 000cf 75 9f jne SHORT $LL4@stbi__vert + 000d1 4c 8b b4 24 38 + 08 00 00 mov r14, QWORD PTR [rsp+2104] + 000d9 4c 8b ac 24 40 + 08 00 00 mov r13, QWORD PTR [rsp+2112] + 000e1 48 8b bc 24 48 + 08 00 00 mov rdi, QWORD PTR [rsp+2120] + 000e9 48 8b b4 24 50 + 08 00 00 mov rsi, QWORD PTR [rsp+2128] + 000f1 48 8b ac 24 58 + 08 00 00 mov rbp, QWORD PTR [rsp+2136] + 000f9 48 8b 9c 24 60 + 08 00 00 mov rbx, QWORD PTR [rsp+2144] +$LN3@stbi__vert: + +; 693 : } +; 694 : } +; 695 : } + + 00101 48 8b 8c 24 20 + 08 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00109 48 33 cc xor rcx, rsp + 0010c e8 00 00 00 00 call __security_check_cookie + 00111 48 81 c4 68 08 + 00 00 add rsp, 2152 ; 00000868H + 00118 41 5f pop r15 + 0011a 41 5c pop r12 + 0011c c3 ret 0 +stbi__vertical_flip ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__load_and_postprocess_8bit +_TEXT SEGMENT +ri$ = 64 +__$ArrayPad$ = 80 +s$ = 144 +x$ = 152 +y$ = 160 +comp$ = 168 +req_comp$ = 176 +stbi__load_and_postprocess_8bit PROC ; COMDAT + +; 712 : { + + 00000 40 53 push rbx + 00002 56 push rsi + 00003 57 push rdi + 00004 41 56 push r14 + 00006 41 57 push r15 + 00008 48 83 ec 60 sub rsp, 96 ; 00000060H + 0000c 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00013 48 33 c4 xor rax, rsp + 00016 48 89 44 24 50 mov QWORD PTR __$ArrayPad$[rsp], rax + 0001b 8b 9c 24 b0 00 + 00 00 mov ebx, DWORD PTR req_comp$[rsp] + +; 713 : stbi__result_info ri; +; 714 : void* result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + 00022 48 8d 44 24 40 lea rax, QWORD PTR ri$[rsp] + 00027 48 89 44 24 28 mov QWORD PTR [rsp+40], rax + 0002c 49 8b f1 mov rsi, r9 + 0002f 89 5c 24 20 mov DWORD PTR [rsp+32], ebx + 00033 4d 8b f8 mov r15, r8 + 00036 4c 8b f2 mov r14, rdx + 00039 e8 00 00 00 00 call stbi__load_main + 0003e 48 8b f8 mov rdi, rax + +; 715 : +; 716 : if (result == NULL) + + 00041 48 85 c0 test rax, rax + 00044 74 78 je SHORT $LN1@stbi__load +$LN2@stbi__load: + +; 717 : return NULL; +; 718 : +; 719 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. +; 720 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); +; 721 : +; 722 : if (ri.bits_per_channel != 8) { + + 00046 83 7c 24 40 08 cmp DWORD PTR ri$[rsp], 8 + 0004b 74 25 je SHORT $LN3@stbi__load + +; 723 : result = stbi__convert_16_to_8((stbi__uint16*)result, *x, *y, req_comp == 0 ? *comp : req_comp); + + 0004d 85 db test ebx, ebx + 0004f 75 05 jne SHORT $LN6@stbi__load + 00051 44 8b 0e mov r9d, DWORD PTR [rsi] + 00054 eb 03 jmp SHORT $LN7@stbi__load +$LN6@stbi__load: + 00056 44 8b cb mov r9d, ebx +$LN7@stbi__load: + 00059 45 8b 07 mov r8d, DWORD PTR [r15] + 0005c 48 8b c8 mov rcx, rax + 0005f 41 8b 16 mov edx, DWORD PTR [r14] + 00062 e8 00 00 00 00 call stbi__convert_16_to_8 + 00067 48 8b f8 mov rdi, rax + +; 724 : ri.bits_per_channel = 8; + + 0006a c7 44 24 40 08 + 00 00 00 mov DWORD PTR ri$[rsp], 8 +$LN3@stbi__load: + +; 725 : } +; 726 : +; 727 : // @TODO: move stbi__convert_format to here +; 728 : +; 729 : if (stbi__vertically_flip_on_load) { + + 00072 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00078 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00081 48 8b 04 c8 mov rax, QWORD PTR [rax+rcx*8] + 00085 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__vertically_flip_on_load_set + 0008a 83 3c 01 00 cmp DWORD PTR [rcx+rax], 0 + 0008e 74 0a je SHORT $LN8@stbi__load + 00090 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__vertically_flip_on_load_local + 00095 8b 04 01 mov eax, DWORD PTR [rcx+rax] + 00098 eb 06 jmp SHORT $LN9@stbi__load +$LN8@stbi__load: + 0009a 8b 05 00 00 00 + 00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global +$LN9@stbi__load: + 000a0 85 c0 test eax, eax + 000a2 74 17 je SHORT $LN4@stbi__load + +; 730 : int channels = req_comp ? req_comp : *comp; + + 000a4 85 db test ebx, ebx + 000a6 75 02 jne SHORT $LN11@stbi__load + 000a8 8b 1e mov ebx, DWORD PTR [rsi] +$LN11@stbi__load: + +; 731 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + + 000aa 45 8b 07 mov r8d, DWORD PTR [r15] + 000ad 44 8b cb mov r9d, ebx + 000b0 41 8b 16 mov edx, DWORD PTR [r14] + 000b3 48 8b cf mov rcx, rdi + 000b6 e8 00 00 00 00 call stbi__vertical_flip +$LN4@stbi__load: + +; 732 : } +; 733 : +; 734 : return (unsigned char*)result; + + 000bb 48 8b c7 mov rax, rdi +$LN1@stbi__load: + +; 735 : } + + 000be 48 8b 4c 24 50 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 000c3 48 33 cc xor rcx, rsp + 000c6 e8 00 00 00 00 call __security_check_cookie + 000cb 48 83 c4 60 add rsp, 96 ; 00000060H + 000cf 41 5f pop r15 + 000d1 41 5e pop r14 + 000d3 5f pop rdi + 000d4 5e pop rsi + 000d5 5b pop rbx + 000d6 c3 ret 0 +stbi__load_and_postprocess_8bit ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__fopen +_TEXT SEGMENT +f$ = 32 +__$ArrayPad$ = 40 +filename$ = 64 +mode$dead$ = 72 +stbi__fopen PROC ; COMDAT + +; 789 : { + + 00000 48 83 ec 38 sub rsp, 56 ; 00000038H + 00004 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0000b 48 33 c4 xor rax, rsp + 0000e 48 89 44 24 28 mov QWORD PTR __$ArrayPad$[rsp], rax + +; 790 : FILE* f; +; 791 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +; 792 : wchar_t wMode[64]; +; 793 : wchar_t wFilename[1024]; +; 794 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename) / sizeof(*wFilename))) +; 795 : return 0; +; 796 : +; 797 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode) / sizeof(*wMode))) +; 798 : return 0; +; 799 : +; 800 : #if defined(_MSC_VER) && _MSC_VER >= 1400 +; 801 : if (0 != _wfopen_s(&f, wFilename, wMode)) +; 802 : f = 0; +; 803 : #else +; 804 : f = _wfopen(wFilename, wMode); +; 805 : #endif +; 806 : +; 807 : #elif defined(_MSC_VER) && _MSC_VER >= 1400 +; 808 : if (0 != fopen_s(&f, filename, mode)) + + 00013 48 8b d1 mov rdx, rcx + 00016 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:??_C@_02JDPG@rb@ + 0001d 48 8d 4c 24 20 lea rcx, QWORD PTR f$[rsp] + 00022 ff 15 00 00 00 + 00 call QWORD PTR __imp_fopen_s + 00028 85 c0 test eax, eax + 0002a 74 14 je SHORT $LN4@stbi__fope + +; 809 : f = 0; +; 810 : #else +; 811 : f = fopen(filename, mode); +; 812 : #endif +; 813 : return f; + + 0002c 33 c0 xor eax, eax + +; 814 : } + + 0002e 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00033 48 33 cc xor rcx, rsp + 00036 e8 00 00 00 00 call __security_check_cookie + 0003b 48 83 c4 38 add rsp, 56 ; 00000038H + 0003f c3 ret 0 +$LN4@stbi__fope: + +; 809 : f = 0; +; 810 : #else +; 811 : f = fopen(filename, mode); +; 812 : #endif +; 813 : return f; + + 00040 48 8b 44 24 20 mov rax, QWORD PTR f$[rsp] + +; 814 : } + + 00045 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0004a 48 33 cc xor rcx, rsp + 0004d e8 00 00 00 00 call __security_check_cookie + 00052 48 83 c4 38 add rsp, 56 ; 00000038H + 00056 c3 ret 0 +stbi__fopen ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi_load +_TEXT SEGMENT +f$1 = 48 +__$ArrayPad$ = 56 +filename$ = 112 +x$ = 120 +y$ = 128 +comp$ = 136 +req_comp$ = 144 +stbi_load PROC ; COMDAT + +; 817 : { + +$LN13: + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 56 push r14 + 00007 48 83 ec 40 sub rsp, 64 ; 00000040H + 0000b 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00012 48 33 c4 xor rax, rsp + 00015 48 89 44 24 38 mov QWORD PTR __$ArrayPad$[rsp], rax + 0001a 44 8b b4 24 90 + 00 00 00 mov r14d, DWORD PTR req_comp$[rsp] + 00022 48 8b da mov rbx, rdx + +; 808 : if (0 != fopen_s(&f, filename, mode)) + + 00025 48 8b d1 mov rdx, rcx + +; 817 : { + + 00028 49 8b f0 mov rsi, r8 + +; 808 : if (0 != fopen_s(&f, filename, mode)) + + 0002b 48 8d 4c 24 30 lea rcx, QWORD PTR f$1[rsp] + +; 817 : { + + 00030 49 8b e9 mov rbp, r9 + +; 808 : if (0 != fopen_s(&f, filename, mode)) + + 00033 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:??_C@_02JDPG@rb@ + 0003a ff 15 00 00 00 + 00 call QWORD PTR __imp_fopen_s + 00040 85 c0 test eax, eax + 00042 74 09 je SHORT $LN9@stbi_load + +; 809 : f = 0; + + 00044 33 ff xor edi, edi + 00046 48 89 7c 24 30 mov QWORD PTR f$1[rsp], rdi + 0004b eb 05 jmp SHORT $LN5@stbi_load +$LN9@stbi_load: + +; 432 : return 0; +; 433 : } +; 434 : #endif +; 435 : +; 436 : static void* stbi__malloc(size_t size) +; 437 : { +; 438 : return STBI_MALLOC(size); +; 439 : } +; 440 : +; 441 : // stb_image uses ints pervasively, including for offset calculations. +; 442 : // therefore the largest decoded image size we can support with the +; 443 : // current code, even on 64-bit targets, is INT_MAX. this is not a +; 444 : // significant limitation for the intended use case. +; 445 : // +; 446 : // we do, however, need to make sure our size calculations don't +; 447 : // overflow. hence a few helper functions for size calculations that +; 448 : // multiply integers together, making sure that they're non-negative +; 449 : // and no overflow occurs. +; 450 : +; 451 : // return 1 if the sum is valid, 0 on overflow. +; 452 : // negative terms are considered invalid. +; 453 : static int stbi__addsizes_valid(int a, int b) +; 454 : { +; 455 : if (b < 0) return 0; +; 456 : // now 0 <= b <= INT_MAX, hence also +; 457 : // 0 <= INT_MAX - b <= INTMAX. +; 458 : // And "a + b <= INT_MAX" (which might overflow) is the +; 459 : // same as a <= INT_MAX - b (no overflow) +; 460 : return a <= INT_MAX - b; +; 461 : } +; 462 : +; 463 : // returns 1 if the product is valid, 0 on overflow. +; 464 : // negative factors are considered invalid. +; 465 : static int stbi__mul2sizes_valid(int a, int b) +; 466 : { +; 467 : if (a < 0 || b < 0) return 0; +; 468 : if (b == 0) return 1; // mul-by-0 is always safe +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; +; 471 : } +; 472 : +; 473 : #if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +; 474 : // returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +; 475 : static int stbi__mad2sizes_valid(int a, int b, int add) +; 476 : { +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); +; 478 : } +; 479 : #endif +; 480 : +; 481 : // returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +; 482 : static int stbi__mad3sizes_valid(int a, int b, int c, int add) +; 483 : { +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && +; 485 : stbi__addsizes_valid(a * b * c, add); +; 486 : } +; 487 : +; 488 : // returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +; 489 : #if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +; 490 : static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +; 491 : { +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && +; 493 : stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); +; 494 : } +; 495 : #endif +; 496 : +; 497 : #if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +; 498 : // mallocs with size overflow checking +; 499 : static void* stbi__malloc_mad2(int a, int b, int add) +; 500 : { +; 501 : if (!stbi__mad2sizes_valid(a, b, add)) return NULL; +; 502 : return stbi__malloc(a * b + add); +; 503 : } +; 504 : #endif +; 505 : +; 506 : static void* stbi__malloc_mad3(int a, int b, int c, int add) +; 507 : { +; 508 : if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; +; 509 : return stbi__malloc(a * b * c + add); +; 510 : } +; 511 : +; 512 : #if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +; 513 : static void* stbi__malloc_mad4(int a, int b, int c, int d, int add) +; 514 : { +; 515 : if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; +; 516 : return stbi__malloc(a * b * c * d + add); +; 517 : } +; 518 : #endif +; 519 : +; 520 : // returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +; 521 : static int stbi__addints_valid(int a, int b) +; 522 : { +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow +; 524 : if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. +; 525 : return a <= INT_MAX - b; +; 526 : } +; 527 : +; 528 : // returns 1 if the product of two signed shorts is valid, 0 on overflow. +; 529 : static int stbi__mul2shorts_valid(short a, short b) +; 530 : { +; 531 : if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow +; 532 : if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid +; 533 : if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN +; 534 : return a >= SHRT_MIN / b; +; 535 : } +; 536 : +; 537 : // stbi__err - error +; 538 : // stbi__errpf - error returning pointer to float +; 539 : // stbi__errpuc - error returning pointer to unsigned char +; 540 : +; 541 : #ifdef STBI_NO_FAILURE_STRINGS +; 542 : #define stbi__err(x,y) 0 +; 543 : #elif defined(STBI_FAILURE_USERMSG) +; 544 : #define stbi__err(x,y) stbi__err(y) +; 545 : #else +; 546 : #define stbi__err(x,y) stbi__err(x) +; 547 : #endif +; 548 : +; 549 : #define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +; 550 : #define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) +; 551 : +; 552 : STBIDEF void stbi_image_free(void* retval_from_stbi_load) +; 553 : { +; 554 : STBI_FREE(retval_from_stbi_load); +; 555 : } +; 556 : +; 557 : #ifndef STBI_NO_LINEAR +; 558 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp); +; 559 : #endif +; 560 : +; 561 : #ifndef STBI_NO_HDR +; 562 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp); +; 563 : #endif +; 564 : +; 565 : static int stbi__vertically_flip_on_load_global = 0; +; 566 : +; 567 : STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +; 568 : { +; 569 : stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +; 570 : } +; 571 : +; 572 : #ifndef STBI_THREAD_LOCAL +; 573 : #define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +; 574 : #else +; 575 : static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; +; 576 : +; 577 : STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +; 578 : { +; 579 : stbi__vertically_flip_on_load_local = flag_true_if_should_flip; +; 580 : stbi__vertically_flip_on_load_set = 1; +; 581 : } +; 582 : +; 583 : #define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ +; 584 : ? stbi__vertically_flip_on_load_local \ +; 585 : : stbi__vertically_flip_on_load_global) +; 586 : #endif // STBI_THREAD_LOCAL +; 587 : +; 588 : static void* stbi__load_main(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 589 : { +; 590 : memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields +; 591 : ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed +; 592 : ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order +; 593 : ri->num_channels = 0; +; 594 : +; 595 : // test the formats with a very explicit header first (at least a FOURCC +; 596 : // or distinctive magic number first) +; 597 : #ifndef STBI_NO_PNG +; 598 : if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); +; 599 : #endif +; 600 : #ifndef STBI_NO_BMP +; 601 : if (stbi__bmp_test(s)) return stbi__bmp_load(s, x, y, comp, req_comp, ri); +; 602 : #endif +; 603 : #ifndef STBI_NO_GIF +; 604 : if (stbi__gif_test(s)) return stbi__gif_load(s, x, y, comp, req_comp, ri); +; 605 : #endif +; 606 : #ifndef STBI_NO_PSD +; 607 : if (stbi__psd_test(s)) return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc); +; 608 : #else +; 609 : STBI_NOTUSED(bpc); +; 610 : #endif +; 611 : #ifndef STBI_NO_PIC +; 612 : if (stbi__pic_test(s)) return stbi__pic_load(s, x, y, comp, req_comp, ri); +; 613 : #endif +; 614 : +; 615 : // then the formats that can end up attempting to load with just 1 or 2 +; 616 : // bytes matching expectations; these are prone to false positives, so +; 617 : // try them later +; 618 : #ifndef STBI_NO_JPEG +; 619 : if (stbi__jpeg_test(s)) return stbi__jpeg_load(s, x, y, comp, req_comp, ri); +; 620 : #endif +; 621 : #ifndef STBI_NO_PNM +; 622 : if (stbi__pnm_test(s)) return stbi__pnm_load(s, x, y, comp, req_comp, ri); +; 623 : #endif +; 624 : +; 625 : #ifndef STBI_NO_HDR +; 626 : if (stbi__hdr_test(s)) { +; 627 : float* hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri); +; 628 : return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); +; 629 : } +; 630 : #endif +; 631 : +; 632 : #ifndef STBI_NO_TGA +; 633 : // test tga last because it's a crappy test! +; 634 : if (stbi__tga_test(s)) +; 635 : return stbi__tga_load(s, x, y, comp, req_comp, ri); +; 636 : #endif +; 637 : +; 638 : return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +; 639 : } +; 640 : +; 641 : static stbi_uc* stbi__convert_16_to_8(stbi__uint16* orig, int w, int h, int channels) +; 642 : { +; 643 : int i; +; 644 : int img_len = w * h * channels; +; 645 : stbi_uc* reduced; +; 646 : +; 647 : reduced = (stbi_uc*)stbi__malloc(img_len); +; 648 : if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); +; 649 : +; 650 : for (i = 0; i < img_len; ++i) +; 651 : reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling +; 652 : +; 653 : STBI_FREE(orig); +; 654 : return reduced; +; 655 : } +; 656 : +; 657 : static stbi__uint16* stbi__convert_8_to_16(stbi_uc* orig, int w, int h, int channels) +; 658 : { +; 659 : int i; +; 660 : int img_len = w * h * channels; +; 661 : stbi__uint16* enlarged; +; 662 : +; 663 : enlarged = (stbi__uint16*)stbi__malloc(img_len * 2); +; 664 : if (enlarged == NULL) return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 665 : +; 666 : for (i = 0; i < img_len; ++i) +; 667 : enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff +; 668 : +; 669 : STBI_FREE(orig); +; 670 : return enlarged; +; 671 : } +; 672 : +; 673 : static void stbi__vertical_flip(void* image, int w, int h, int bytes_per_pixel) +; 674 : { +; 675 : int row; +; 676 : size_t bytes_per_row = (size_t)w * bytes_per_pixel; +; 677 : stbi_uc temp[2048]; +; 678 : stbi_uc* bytes = (stbi_uc*)image; +; 679 : +; 680 : for (row = 0; row < (h >> 1); row++) { +; 681 : stbi_uc* row0 = bytes + row * bytes_per_row; +; 682 : stbi_uc* row1 = bytes + (h - row - 1) * bytes_per_row; +; 683 : // swap row0 with row1 +; 684 : size_t bytes_left = bytes_per_row; +; 685 : while (bytes_left) { +; 686 : size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); +; 687 : memcpy(temp, row0, bytes_copy); +; 688 : memcpy(row0, row1, bytes_copy); +; 689 : memcpy(row1, temp, bytes_copy); +; 690 : row0 += bytes_copy; +; 691 : row1 += bytes_copy; +; 692 : bytes_left -= bytes_copy; +; 693 : } +; 694 : } +; 695 : } +; 696 : +; 697 : #ifndef STBI_NO_GIF +; 698 : static void stbi__vertical_flip_slices(void* image, int w, int h, int z, int bytes_per_pixel) +; 699 : { +; 700 : int slice; +; 701 : int slice_size = w * h * bytes_per_pixel; +; 702 : +; 703 : stbi_uc* bytes = (stbi_uc*)image; +; 704 : for (slice = 0; slice < z; ++slice) { +; 705 : stbi__vertical_flip(bytes, w, h, bytes_per_pixel); +; 706 : bytes += slice_size; +; 707 : } +; 708 : } +; 709 : #endif +; 710 : +; 711 : static unsigned char* stbi__load_and_postprocess_8bit(stbi__context* s, int* x, int* y, int* comp, int req_comp) +; 712 : { +; 713 : stbi__result_info ri; +; 714 : void* result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); +; 715 : +; 716 : if (result == NULL) +; 717 : return NULL; +; 718 : +; 719 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. +; 720 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); +; 721 : +; 722 : if (ri.bits_per_channel != 8) { +; 723 : result = stbi__convert_16_to_8((stbi__uint16*)result, *x, *y, req_comp == 0 ? *comp : req_comp); +; 724 : ri.bits_per_channel = 8; +; 725 : } +; 726 : +; 727 : // @TODO: move stbi__convert_format to here +; 728 : +; 729 : if (stbi__vertically_flip_on_load) { +; 730 : int channels = req_comp ? req_comp : *comp; +; 731 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); +; 732 : } +; 733 : +; 734 : return (unsigned char*)result; +; 735 : } +; 736 : +; 737 : static stbi__uint16* stbi__load_and_postprocess_16bit(stbi__context* s, int* x, int* y, int* comp, int req_comp) +; 738 : { +; 739 : stbi__result_info ri; +; 740 : void* result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); +; 741 : +; 742 : if (result == NULL) +; 743 : return NULL; +; 744 : +; 745 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. +; 746 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); +; 747 : +; 748 : if (ri.bits_per_channel != 16) { +; 749 : result = stbi__convert_8_to_16((stbi_uc*)result, *x, *y, req_comp == 0 ? *comp : req_comp); +; 750 : ri.bits_per_channel = 16; +; 751 : } +; 752 : +; 753 : // @TODO: move stbi__convert_format16 to here +; 754 : // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision +; 755 : +; 756 : if (stbi__vertically_flip_on_load) { +; 757 : int channels = req_comp ? req_comp : *comp; +; 758 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); +; 759 : } +; 760 : +; 761 : return (stbi__uint16*)result; +; 762 : } +; 763 : +; 764 : #if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +; 765 : static void stbi__float_postprocess(float* result, int* x, int* y, int* comp, int req_comp) +; 766 : { +; 767 : if (stbi__vertically_flip_on_load && result != NULL) { +; 768 : int channels = req_comp ? req_comp : *comp; +; 769 : stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); +; 770 : } +; 771 : } +; 772 : #endif +; 773 : +; 774 : #ifndef STBI_NO_STDIO +; 775 : +; 776 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +; 777 : STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char* str, int cbmb, wchar_t* widestr, int cchwide); +; 778 : STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t* widestr, int cchwide, char* str, int cbmb, const char* defchar, int* used_default); +; 779 : #endif +; 780 : +; 781 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +; 782 : STBIDEF int stbi_convert_wchar_to_utf8(char* buffer, size_t bufferlen, const wchar_t* input) +; 783 : { +; 784 : return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int)bufferlen, NULL, NULL); +; 785 : } +; 786 : #endif +; 787 : +; 788 : static FILE* stbi__fopen(char const* filename, char const* mode) +; 789 : { +; 790 : FILE* f; +; 791 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +; 792 : wchar_t wMode[64]; +; 793 : wchar_t wFilename[1024]; +; 794 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename) / sizeof(*wFilename))) +; 795 : return 0; +; 796 : +; 797 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode) / sizeof(*wMode))) +; 798 : return 0; +; 799 : +; 800 : #if defined(_MSC_VER) && _MSC_VER >= 1400 +; 801 : if (0 != _wfopen_s(&f, wFilename, wMode)) +; 802 : f = 0; +; 803 : #else +; 804 : f = _wfopen(wFilename, wMode); +; 805 : #endif +; 806 : +; 807 : #elif defined(_MSC_VER) && _MSC_VER >= 1400 +; 808 : if (0 != fopen_s(&f, filename, mode)) + + 0004d 48 8b 7c 24 30 mov rdi, QWORD PTR f$1[rsp] +$LN5@stbi_load: + +; 818 : FILE* f = stbi__fopen(filename, "rb"); + + 00052 48 85 ff test rdi, rdi + +; 819 : unsigned char* result; +; 820 : if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + + 00055 75 27 jne SHORT $LN2@stbi_load + +; 431 : stbi__g_failure_reason = str; + + 00057 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00060 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00066 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 0006b 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 0006f 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@ + 00076 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 819 : unsigned char* result; +; 820 : if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + + 0007a 33 c0 xor eax, eax + 0007c eb 25 jmp SHORT $LN1@stbi_load +$LN2@stbi_load: + +; 821 : result = stbi_load_from_file(f, x, y, comp, req_comp); + + 0007e 4c 8b cd mov r9, rbp + 00081 44 89 74 24 20 mov DWORD PTR [rsp+32], r14d + 00086 4c 8b c6 mov r8, rsi + 00089 48 8b d3 mov rdx, rbx + 0008c 48 8b cf mov rcx, rdi + 0008f e8 00 00 00 00 call stbi_load_from_file + +; 822 : fclose(f); + + 00094 48 8b cf mov rcx, rdi + 00097 48 8b d8 mov rbx, rax + 0009a ff 15 00 00 00 + 00 call QWORD PTR __imp_fclose + +; 823 : return result; + + 000a0 48 8b c3 mov rax, rbx +$LN1@stbi_load: + +; 824 : } + + 000a3 48 8b 4c 24 38 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 000a8 48 33 cc xor rcx, rsp + 000ab e8 00 00 00 00 call __security_check_cookie + 000b0 48 83 c4 40 add rsp, 64 ; 00000040H + 000b4 41 5e pop r14 + 000b6 5f pop rdi + 000b7 5e pop rsi + 000b8 5d pop rbp + 000b9 5b pop rbx + 000ba c3 ret 0 +stbi_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi_load_from_file +_TEXT SEGMENT +s$ = 48 +__$ArrayPad$ = 272 +f$ = 336 +x$ = 344 +y$ = 352 +comp$ = 360 +req_comp$ = 368 +stbi_load_from_file PROC ; COMDAT + +; 839 : { + +$LN9: + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 56 push r14 + 00007 48 81 ec 20 01 + 00 00 sub rsp, 288 ; 00000120H + 0000e 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00015 48 33 c4 xor rax, rsp + 00018 48 89 84 24 10 + 01 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00020 8b 9c 24 70 01 + 00 00 mov ebx, DWORD PTR req_comp$[rsp] + 00027 49 8b f0 mov rsi, r8 + +; 330 : stbi__start_callbacks(s, &stbi__stdio_callbacks, (void*)f); + + 0002a 4c 8b c1 mov r8, rcx + +; 839 : { + + 0002d 4c 8b f1 mov r14, rcx + +; 330 : stbi__start_callbacks(s, &stbi__stdio_callbacks, (void*)f); + + 00030 48 8d 4c 24 30 lea rcx, QWORD PTR s$[rsp] + +; 839 : { + + 00035 49 8b e9 mov rbp, r9 + 00038 48 8b fa mov rdi, rdx + +; 330 : stbi__start_callbacks(s, &stbi__stdio_callbacks, (void*)f); + + 0003b e8 00 00 00 00 call stbi__start_callbacks + +; 840 : unsigned char* result; +; 841 : stbi__context s; +; 842 : stbi__start_file(&s, f); +; 843 : result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); + + 00040 4c 8b cd mov r9, rbp + 00043 89 5c 24 20 mov DWORD PTR [rsp+32], ebx + 00047 4c 8b c6 mov r8, rsi + 0004a 48 8d 4c 24 30 lea rcx, QWORD PTR s$[rsp] + 0004f 48 8b d7 mov rdx, rdi + 00052 e8 00 00 00 00 call stbi__load_and_postprocess_8bit + 00057 48 8b d8 mov rbx, rax + +; 844 : if (result) { + + 0005a 48 85 c0 test rax, rax + 0005d 74 20 je SHORT $LN2@stbi_load_ + +; 845 : // need to 'unget' all the characters in the IO buffer +; 846 : fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + + 0005f 8b 94 24 f0 00 + 00 00 mov edx, DWORD PTR s$[rsp+192] + 00066 41 b8 01 00 00 + 00 mov r8d, 1 + 0006c 2b 94 24 f8 00 + 00 00 sub edx, DWORD PTR s$[rsp+200] + 00073 49 8b ce mov rcx, r14 + 00076 ff 15 00 00 00 + 00 call QWORD PTR __imp_fseek + +; 847 : } +; 848 : return result; + + 0007c 48 8b c3 mov rax, rbx +$LN2@stbi_load_: + +; 849 : } + + 0007f 48 8b 8c 24 10 + 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00087 48 33 cc xor rcx, rsp + 0008a e8 00 00 00 00 call __security_check_cookie + 0008f 48 81 c4 20 01 + 00 00 add rsp, 288 ; 00000120H + 00096 41 5e pop r14 + 00098 5f pop rdi + 00099 5e pop rsi + 0009a 5d pop rbp + 0009b 5b pop rbx + 0009c c3 ret 0 +stbi_load_from_file ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__refill_buffer +_TEXT SEGMENT +s$ = 48 +stbi__refill_buffer PROC ; COMDAT + +; 1058 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1059 : int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); + + 0000a 44 8b 41 34 mov r8d, DWORD PTR [rcx+52] + 0000e 48 8d 79 38 lea rdi, QWORD PTR [rcx+56] + 00012 48 8b d9 mov rbx, rcx + 00015 48 8b d7 mov rdx, rdi + 00018 48 8b 49 28 mov rcx, QWORD PTR [rcx+40] + 0001c ff 53 10 call QWORD PTR [rbx+16] + +; 1060 : s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original); + + 0001f 8b 93 c0 00 00 + 00 mov edx, DWORD PTR [rbx+192] + 00025 2b 93 d0 00 00 + 00 sub edx, DWORD PTR [rbx+208] + 0002b 01 93 b8 00 00 + 00 add DWORD PTR [rbx+184], edx + 00031 48 89 bb c0 00 + 00 00 mov QWORD PTR [rbx+192], rdi + +; 1061 : if (n == 0) { + + 00038 85 c0 test eax, eax + 0003a 75 1c jne SHORT $LN2@stbi__refi + +; 1062 : // at end of file, treat same as if from memory, but need to handle case +; 1063 : // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file +; 1064 : s->read_from_callbacks = 0; + + 0003c 89 43 30 mov DWORD PTR [rbx+48], eax + +; 1065 : s->img_buffer = s->buffer_start; +; 1066 : s->img_buffer_end = s->buffer_start + 1; + + 0003f 48 8d 43 39 lea rax, QWORD PTR [rbx+57] + 00043 48 89 83 c8 00 + 00 00 mov QWORD PTR [rbx+200], rax + +; 1067 : *s->img_buffer = 0; + + 0004a c6 07 00 mov BYTE PTR [rdi], 0 + +; 1072 : } +; 1073 : } + + 0004d 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00052 48 83 c4 20 add rsp, 32 ; 00000020H + 00056 5f pop rdi + 00057 c3 ret 0 +$LN2@stbi__refi: + +; 1068 : } +; 1069 : else { +; 1070 : s->img_buffer = s->buffer_start; +; 1071 : s->img_buffer_end = s->buffer_start + n; + + 00058 48 63 c8 movsxd rcx, eax + 0005b 48 83 c1 38 add rcx, 56 ; 00000038H + 0005f 48 03 cb add rcx, rbx + 00062 48 89 8b c8 00 + 00 00 mov QWORD PTR [rbx+200], rcx + +; 1072 : } +; 1073 : } + + 00069 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0006e 48 83 c4 20 add rsp, 32 ; 00000020H + 00072 5f pop rdi + 00073 c3 ret 0 +stbi__refill_buffer ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get8 +_TEXT SEGMENT +s$ = 48 +stbi__get8 PROC ; COMDAT + +; 1076 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00006 48 8b 91 c0 00 + 00 00 mov rdx, QWORD PTR [rcx+192] + 0000d 48 8b d9 mov rbx, rcx + 00010 48 3b 91 c8 00 + 00 00 cmp rdx, QWORD PTR [rcx+200] + 00017 73 13 jae SHORT $LN2@stbi__get8 + +; 1078 : return *s->img_buffer++; + + 00019 0f b6 02 movzx eax, BYTE PTR [rdx] + 0001c 48 ff c2 inc rdx + 0001f 48 89 91 c0 00 + 00 00 mov QWORD PTR [rcx+192], rdx + +; 1084 : } + + 00026 48 83 c4 20 add rsp, 32 ; 00000020H + 0002a 5b pop rbx + 0002b c3 ret 0 +$LN2@stbi__get8: + +; 1079 : if (s->read_from_callbacks) { + + 0002c 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00030 74 69 je SHORT $LN3@stbi__get8 + +; 1059 : int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); + + 00032 44 8b 41 34 mov r8d, DWORD PTR [rcx+52] + 00036 48 8d 51 38 lea rdx, QWORD PTR [rcx+56] + 0003a 48 8b 49 28 mov rcx, QWORD PTR [rcx+40] + +; 1079 : if (s->read_from_callbacks) { + + 0003e 48 89 7c 24 30 mov QWORD PTR [rsp+48], rdi + +; 1059 : int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); + + 00043 ff 53 10 call QWORD PTR [rbx+16] + +; 1060 : s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original); + + 00046 8b 8b c0 00 00 + 00 mov ecx, DWORD PTR [rbx+192] + 0004c 2b 8b d0 00 00 + 00 sub ecx, DWORD PTR [rbx+208] + 00052 01 8b b8 00 00 + 00 add DWORD PTR [rbx+184], ecx + +; 1061 : if (n == 0) { + + 00058 85 c0 test eax, eax + 0005a 75 14 jne SHORT $LN6@stbi__get8 + +; 1062 : // at end of file, treat same as if from memory, but need to handle case +; 1063 : // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file +; 1064 : s->read_from_callbacks = 0; + + 0005c 89 43 30 mov DWORD PTR [rbx+48], eax + +; 1065 : s->img_buffer = s->buffer_start; +; 1066 : s->img_buffer_end = s->buffer_start + 1; + + 0005f 48 8d 43 39 lea rax, QWORD PTR [rbx+57] + 00063 48 89 83 c8 00 + 00 00 mov QWORD PTR [rbx+200], rax + +; 1067 : *s->img_buffer = 0; + + 0006a c6 43 38 00 mov BYTE PTR [rbx+56], 0 + +; 1068 : } + + 0006e eb 11 jmp SHORT $LN7@stbi__get8 +$LN6@stbi__get8: + +; 1069 : else { +; 1070 : s->img_buffer = s->buffer_start; +; 1071 : s->img_buffer_end = s->buffer_start + n; + + 00070 48 63 c8 movsxd rcx, eax + 00073 48 83 c1 38 add rcx, 56 ; 00000038H + 00077 48 03 cb add rcx, rbx + 0007a 48 89 8b c8 00 + 00 00 mov QWORD PTR [rbx+200], rcx +$LN7@stbi__get8: + +; 1080 : stbi__refill_buffer(s); +; 1081 : return *s->img_buffer++; + + 00081 0f b6 43 38 movzx eax, BYTE PTR [rbx+56] + 00085 48 8d 4b 39 lea rcx, QWORD PTR [rbx+57] + 00089 48 8b 7c 24 30 mov rdi, QWORD PTR [rsp+48] + 0008e 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + +; 1084 : } + + 00095 48 83 c4 20 add rsp, 32 ; 00000020H + 00099 5b pop rbx + 0009a c3 ret 0 +$LN3@stbi__get8: + +; 1082 : } +; 1083 : return 0; + + 0009b 32 c0 xor al, al + +; 1084 : } + + 0009d 48 83 c4 20 add rsp, 32 ; 00000020H + 000a1 5b pop rbx + 000a2 c3 ret 0 +stbi__get8 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__at_eof +_TEXT SEGMENT +s$ = 48 +stbi__at_eof PROC ; COMDAT + +; 1090 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1091 : if (s->io.read) { + + 00006 48 83 79 10 00 cmp QWORD PTR [rcx+16], 0 + 0000b 48 8b d9 mov rbx, rcx + 0000e 74 22 je SHORT $LN4@stbi__at_e + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 00010 48 8b 49 28 mov rcx, QWORD PTR [rcx+40] + 00014 ff 53 20 call QWORD PTR [rbx+32] + 00017 85 c0 test eax, eax + 00019 75 06 jne SHORT $LN3@stbi__at_e + +; 1099 : } + + 0001b 48 83 c4 20 add rsp, 32 ; 00000020H + 0001f 5b pop rbx + 00020 c3 ret 0 +$LN3@stbi__at_e: + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00021 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00025 75 0b jne SHORT $LN4@stbi__at_e + 00027 b8 01 00 00 00 mov eax, 1 + +; 1099 : } + + 0002c 48 83 c4 20 add rsp, 32 ; 00000020H + 00030 5b pop rbx + 00031 c3 ret 0 +$LN4@stbi__at_e: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; + + 00032 48 8b 8b c8 00 + 00 00 mov rcx, QWORD PTR [rbx+200] + 00039 33 c0 xor eax, eax + 0003b 48 39 8b c0 00 + 00 00 cmp QWORD PTR [rbx+192], rcx + 00042 0f 93 c0 setae al + +; 1099 : } + + 00045 48 83 c4 20 add rsp, 32 ; 00000020H + 00049 5b pop rbx + 0004a c3 ret 0 +stbi__at_eof ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__skip +_TEXT SEGMENT +s$ = 8 +n$ = 16 +stbi__skip PROC ; COMDAT + +; 1106 : { + + 00000 4c 8b c1 mov r8, rcx + +; 1107 : if (n == 0) return; // already there! + + 00003 85 d2 test edx, edx + 00005 74 4b je SHORT $LN1@stbi__skip + +; 1108 : if (n < 0) { + + 00007 79 0f jns SHORT $LN3@stbi__skip + +; 1109 : s->img_buffer = s->img_buffer_end; + + 00009 48 8b 81 c8 00 + 00 00 mov rax, QWORD PTR [rcx+200] + 00010 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + +; 1121 : } + + 00017 c3 ret 0 +$LN3@stbi__skip: + +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { + + 00018 48 83 79 10 00 cmp QWORD PTR [rcx+16], 0 + 0001d 74 29 je SHORT $LN5@stbi__skip + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 0001f 8b 89 c8 00 00 + 00 mov ecx, DWORD PTR [rcx+200] + 00025 41 2b 88 c0 00 + 00 00 sub ecx, DWORD PTR [r8+192] + +; 1114 : if (blen < n) { + + 0002c 3b ca cmp ecx, edx + 0002e 7d 18 jge SHORT $LN5@stbi__skip + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00030 49 8b 80 c8 00 + 00 00 mov rax, QWORD PTR [r8+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00037 2b d1 sub edx, ecx + 00039 49 8b 48 28 mov rcx, QWORD PTR [r8+40] + 0003d 49 89 80 c0 00 + 00 00 mov QWORD PTR [r8+192], rax + 00044 49 ff 60 18 rex_jmp QWORD PTR [r8+24] +$LN5@stbi__skip: + +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00048 48 63 c2 movsxd rax, edx + 0004b 49 01 80 c0 00 + 00 00 add QWORD PTR [r8+192], rax +$LN1@stbi__skip: + +; 1121 : } + + 00052 c3 ret 0 +stbi__skip ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__getn +_TEXT SEGMENT +s$ = 64 +buffer$ = 72 +n$ = 80 +stbi__getn PROC ; COMDAT + +; 1128 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 54 push r12 + 00016 41 56 push r14 + 00018 41 57 push r15 + 0001a 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1129 : if (s->io.read) { + + 0001e 48 83 79 10 00 cmp QWORD PTR [rcx+16], 0 + 00023 48 8d b9 c0 00 + 00 00 lea rdi, QWORD PTR [rcx+192] + 0002a 4d 63 f0 movsxd r14, r8d + 0002d 4c 8b e2 mov r12, rdx + 00030 48 8b e9 mov rbp, rcx + 00033 74 47 je SHORT $LN7@stbi__getn + +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00035 44 8b b9 c8 00 + 00 00 mov r15d, DWORD PTR [rcx+200] + 0003c 44 2b 3f sub r15d, DWORD PTR [rdi] + +; 1131 : if (blen < n) { + + 0003f 45 3b fe cmp r15d, r14d + 00042 7d 38 jge SHORT $LN7@stbi__getn + +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); + + 00044 48 8b 17 mov rdx, QWORD PTR [rdi] + 00047 49 8b cc mov rcx, r12 + 0004a 49 63 df movsxd rbx, r15d + 0004d 4c 8b c3 mov r8, rbx + 00050 e8 00 00 00 00 call memcpy + +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); + + 00055 48 8b 4d 28 mov rcx, QWORD PTR [rbp+40] + 00059 4a 8d 14 23 lea rdx, QWORD PTR [rbx+r12] + 0005d 45 2b f7 sub r14d, r15d + 00060 45 8b c6 mov r8d, r14d + 00063 ff 55 10 call QWORD PTR [rbp+16] + +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; + + 00066 48 8b 8d c8 00 + 00 00 mov rcx, QWORD PTR [rbp+200] + 0006d 33 d2 xor edx, edx + 0006f 41 3b c6 cmp eax, r14d + 00072 48 89 0f mov QWORD PTR [rdi], rcx + 00075 0f 94 c2 sete dl + +; 1139 : return res; + + 00078 8b c2 mov eax, edx + 0007a eb 2a jmp SHORT $LN5@stbi__getn +$LN7@stbi__getn: + +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { + + 0007c 48 8b 17 mov rdx, QWORD PTR [rdi] + 0007f 49 8b de mov rbx, r14 + 00082 49 8d 04 16 lea rax, QWORD PTR [r14+rdx] + 00086 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0008d 77 15 ja SHORT $LN4@stbi__getn + +; 1144 : memcpy(buffer, s->img_buffer, n); + + 0008f 4c 8b c3 mov r8, rbx + 00092 49 8b cc mov rcx, r12 + 00095 e8 00 00 00 00 call memcpy + +; 1145 : s->img_buffer += n; + + 0009a 48 01 1f add QWORD PTR [rdi], rbx + +; 1146 : return 1; + + 0009d b8 01 00 00 00 mov eax, 1 + 000a2 eb 02 jmp SHORT $LN5@stbi__getn +$LN4@stbi__getn: + +; 1147 : } +; 1148 : else +; 1149 : return 0; + + 000a4 33 c0 xor eax, eax +$LN5@stbi__getn: + +; 1150 : } + + 000a6 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 000ab 48 8b 6c 24 48 mov rbp, QWORD PTR [rsp+72] + 000b0 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 000b5 48 8b 7c 24 58 mov rdi, QWORD PTR [rsp+88] + 000ba 48 83 c4 20 add rsp, 32 ; 00000020H + 000be 41 5f pop r15 + 000c0 41 5e pop r14 + 000c2 41 5c pop r12 + 000c4 c3 ret 0 +stbi__getn ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get16be +_TEXT SEGMENT +s$ = 48 +stbi__get16be PROC ; COMDAT + +; 1157 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000a 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 1157 : { + + 00011 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00014 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001b 73 0f jae SHORT $LN4@stbi__get1 + +; 1078 : return *s->img_buffer++; + + 0001d 0f b6 10 movzx edx, BYTE PTR [rax] + 00020 48 ff c0 inc rax + 00023 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + 0002a eb 23 jmp SHORT $LN15@stbi__get1 +$LN4@stbi__get1: + +; 1079 : if (s->read_from_callbacks) { + + 0002c 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00030 74 1b je SHORT $LN5@stbi__get1 + +; 1080 : stbi__refill_buffer(s); + + 00032 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00037 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0003e 0f b6 10 movzx edx, BYTE PTR [rax] + 00041 48 ff c0 inc rax + 00044 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0004b eb 02 jmp SHORT $LN15@stbi__get1 +$LN5@stbi__get1: + +; 1082 : } +; 1083 : return 0; + + 0004d 32 d2 xor dl, dl +$LN15@stbi__get1: + +; 1158 : int z = stbi__get8(s); + + 0004f b9 30 00 00 00 mov ecx, 48 ; 00000030H + 00054 4c 8b c3 mov r8, rbx + 00057 0f b6 fa movzx edi, dl + 0005a 4c 8d 0c 19 lea r9, QWORD PTR [rcx+rbx] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0005e 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00065 72 15 jb SHORT $LN16@stbi__get1 + +; 1079 : if (s->read_from_callbacks) { + + 00067 41 83 39 00 cmp DWORD PTR [r9], 0 + 0006b 74 2f je SHORT $LN9@stbi__get1 + +; 1080 : stbi__refill_buffer(s); + + 0006d 48 8b cb mov rcx, rbx + 00070 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00075 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN16@stbi__get1: + +; 1159 : return (z << 8) + stbi__get8(s); + + 0007c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0007f 48 ff c0 inc rax + 00082 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00089 0f b6 c1 movzx eax, cl + 0008c c1 e7 08 shl edi, 8 + 0008f 03 c7 add eax, edi + +; 1160 : } + + 00091 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00096 48 83 c4 20 add rsp, 32 ; 00000020H + 0009a 5f pop rdi + 0009b c3 ret 0 +$LN9@stbi__get1: + 0009c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + +; 1083 : return 0; + + 000a1 32 c9 xor cl, cl + +; 1159 : return (z << 8) + stbi__get8(s); + + 000a3 0f b6 c1 movzx eax, cl + 000a6 c1 e7 08 shl edi, 8 + 000a9 03 c7 add eax, edi + +; 1160 : } + + 000ab 48 83 c4 20 add rsp, 32 ; 00000020H + 000af 5f pop rdi + 000b0 c3 ret 0 +stbi__get16be ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get32be +_TEXT SEGMENT +s$ = 48 +stbi__get32be PROC ; COMDAT + +; 1167 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 8b d9 mov rbx, rcx + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 0000d e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00012 48 8b cb mov rcx, rbx + 00015 8b f8 mov edi, eax + 00017 e8 00 00 00 00 call stbi__get16be + +; 1170 : } + + 0001c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00021 c1 e7 10 shl edi, 16 + 00024 03 c7 add eax, edi + 00026 48 83 c4 20 add rsp, 32 ; 00000020H + 0002a 5f pop rdi + 0002b c3 ret 0 +stbi__get32be ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get16le +_TEXT SEGMENT +s$ = 48 +stbi__get16le PROC ; COMDAT + +; 1177 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000a 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 1177 : { + + 00011 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00014 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001b 73 0f jae SHORT $LN4@stbi__get1 + +; 1078 : return *s->img_buffer++; + + 0001d 0f b6 10 movzx edx, BYTE PTR [rax] + 00020 48 ff c0 inc rax + 00023 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + 0002a eb 23 jmp SHORT $LN15@stbi__get1 +$LN4@stbi__get1: + +; 1079 : if (s->read_from_callbacks) { + + 0002c 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00030 74 1b je SHORT $LN5@stbi__get1 + +; 1080 : stbi__refill_buffer(s); + + 00032 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00037 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0003e 0f b6 10 movzx edx, BYTE PTR [rax] + 00041 48 ff c0 inc rax + 00044 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0004b eb 02 jmp SHORT $LN15@stbi__get1 +$LN5@stbi__get1: + +; 1082 : } +; 1083 : return 0; + + 0004d 32 d2 xor dl, dl +$LN15@stbi__get1: + +; 1178 : int z = stbi__get8(s); + + 0004f b9 30 00 00 00 mov ecx, 48 ; 00000030H + 00054 4c 8b c3 mov r8, rbx + 00057 0f b6 fa movzx edi, dl + 0005a 4c 8d 0c 19 lea r9, QWORD PTR [rcx+rbx] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0005e 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00065 72 15 jb SHORT $LN16@stbi__get1 + +; 1079 : if (s->read_from_callbacks) { + + 00067 41 83 39 00 cmp DWORD PTR [r9], 0 + 0006b 74 2f je SHORT $LN9@stbi__get1 + +; 1080 : stbi__refill_buffer(s); + + 0006d 48 8b cb mov rcx, rbx + 00070 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00075 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN16@stbi__get1: + +; 1179 : return z + (stbi__get8(s) << 8); + + 0007c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0007f 48 ff c0 inc rax + 00082 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00089 0f b6 c1 movzx eax, cl + 0008c c1 e0 08 shl eax, 8 + 0008f 03 c7 add eax, edi + +; 1180 : } + + 00091 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00096 48 83 c4 20 add rsp, 32 ; 00000020H + 0009a 5f pop rdi + 0009b c3 ret 0 +$LN9@stbi__get1: + 0009c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + +; 1083 : return 0; + + 000a1 32 c9 xor cl, cl + +; 1179 : return z + (stbi__get8(s) << 8); + + 000a3 0f b6 c1 movzx eax, cl + 000a6 c1 e0 08 shl eax, 8 + 000a9 03 c7 add eax, edi + +; 1180 : } + + 000ab 48 83 c4 20 add rsp, 32 ; 00000020H + 000af 5f pop rdi + 000b0 c3 ret 0 +stbi__get16le ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get32le +_TEXT SEGMENT +s$ = 48 +stbi__get32le PROC ; COMDAT + +; 1185 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 8b d9 mov rbx, rcx + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0000d e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00012 48 8b cb mov rcx, rbx + 00015 8b f8 mov edi, eax + 00017 e8 00 00 00 00 call stbi__get16le + +; 1188 : return z; +; 1189 : } + + 0001c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00021 c1 e0 10 shl eax, 16 + 00024 03 c7 add eax, edi + 00026 48 83 c4 20 add rsp, 32 ; 00000020H + 0002a 5f pop rdi + 0002b c3 ret 0 +stbi__get32le ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__compute_y +_TEXT SEGMENT +r$ = 8 +g$ = 16 +b$ = 24 +stbi__compute_y PROC ; COMDAT + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00000 6b c9 4d imul ecx, ecx, 77 ; 0000004dH + 00003 69 c2 96 00 00 + 00 imul eax, edx, 150 ; 00000096H + 00009 03 c1 add eax, ecx + 0000b 41 6b c8 1d imul ecx, r8d, 29 + 0000f 03 c1 add eax, ecx + 00011 c1 f8 08 sar eax, 8 + +; 1211 : } + + 00014 c3 ret 0 +stbi__compute_y ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__convert_format +_TEXT SEGMENT +data$ = 80 +img_n$ = 88 +req_comp$ = 96 +x$ = 104 +y$ = 112 +stbi__convert_format PROC ; COMDAT + +; 1218 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 41 54 push r12 + 00006 41 55 push r13 + 00008 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000c 44 8b 64 24 70 mov r12d, DWORD PTR y$[rsp] + 00011 41 8b d9 mov ebx, r9d + 00014 41 8b f0 mov esi, r8d + 00017 44 8b ea mov r13d, edx + 0001a 48 8b e9 mov rbp, rcx + +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; + + 0001d 44 3b c2 cmp r8d, edx + 00020 75 0f jne SHORT $LN43@stbi__conv + 00022 48 8b c1 mov rax, rcx + +; 1259 : } + + 00025 48 83 c4 20 add rsp, 32 ; 00000020H + 00029 41 5d pop r13 + 0002b 41 5c pop r12 + 0002d 5e pop rsi + 0002e 5d pop rbp + 0002f 5b pop rbx + 00030 c3 ret 0 +$LN43@stbi__conv: + 00031 4c 89 7c 24 60 mov QWORD PTR [rsp+96], r15 + +; 467 : if (a < 0 || b < 0) return 0; + + 00036 85 f6 test esi, esi + 00038 0f 88 11 04 00 + 00 js $LN145@stbi__conv + 0003e 85 db test ebx, ebx + 00040 0f 88 09 04 00 + 00 js $LN145@stbi__conv + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00046 74 11 je SHORT $LN149@stbi__conv + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00048 33 d2 xor edx, edx + 0004a b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0004f f7 f3 div ebx + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00051 3b f0 cmp esi, eax + 00053 0f 8f f6 03 00 + 00 jg $LN145@stbi__conv +$LN149@stbi__conv: + 00059 8b ce mov ecx, esi + 0005b 0f af cb imul ecx, ebx + +; 467 : if (a < 0 || b < 0) return 0; + + 0005e 85 c9 test ecx, ecx + 00060 0f 88 e9 03 00 + 00 js $LN145@stbi__conv + 00066 45 85 e4 test r12d, r12d + 00069 0f 88 e0 03 00 + 00 js $LN145@stbi__conv + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0006f 74 12 je SHORT $LN60@stbi__conv + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00071 33 d2 xor edx, edx + 00073 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00078 41 f7 f4 div r12d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0007b 3b c8 cmp ecx, eax + 0007d 0f 8f cc 03 00 + 00 jg $LN145@stbi__conv +$LN60@stbi__conv: + +; 509 : return stbi__malloc(a * b * c + add); + + 00083 41 0f af cc imul ecx, r12d + 00087 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 0008a ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00090 4c 8b f8 mov r15, rax + +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { + + 00093 48 85 c0 test rax, rax + 00096 0f 84 b3 03 00 + 00 je $LN145@stbi__conv + 0009c 48 89 7c 24 50 mov QWORD PTR [rsp+80], rdi + +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { + + 000a1 33 ff xor edi, edi + 000a3 4c 89 74 24 58 mov QWORD PTR [rsp+88], r14 + 000a8 45 85 e4 test r12d, r12d + 000ab 0f 8e 3e 03 00 + 00 jle $LN3@stbi__conv + 000b1 46 8d 34 ed f6 + ff ff ff lea r14d, DWORD PTR [r13*8-10] + 000b9 44 03 f6 add r14d, esi + 000bc 44 8d 5b ff lea r11d, DWORD PTR [rbx-1] + 000c0 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 000c7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL4@stbi__conv: + +; 1232 : unsigned char* src = data + j * x * img_n; + + 000d0 44 8b cf mov r9d, edi + +; 1233 : unsigned char* dest = good + j * x * req_comp; + + 000d3 8b c7 mov eax, edi + 000d5 45 0f af cd imul r9d, r13d + 000d9 0f af c6 imul eax, esi + 000dc 44 0f af cb imul r9d, ebx + 000e0 0f af c3 imul eax, ebx + 000e3 4c 03 cd add r9, rbp + 000e6 49 03 c7 add rax, r15 + +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { + + 000e9 41 83 fe 19 cmp r14d, 25 + 000ed 0f 87 23 03 00 + 00 ja $LN57@stbi__conv + 000f3 49 63 ce movsxd rcx, r14d + 000f6 41 8b 94 88 00 + 00 00 00 mov edx, DWORD PTR $LN150@stbi__conv[r8+rcx*4] + 000fe 49 03 d0 add rdx, r8 + 00101 ff e2 jmp rdx +$LN45@stbi__conv: + +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; + + 00103 41 8b d3 mov edx, r11d + 00106 45 85 db test r11d, r11d + 00109 0f 88 d5 02 00 + 00 js $LN2@stbi__conv + 0010f 90 npad 1 +$LL9@stbi__conv: + 00110 83 ea 01 sub edx, 1 + 00113 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00117 88 08 mov BYTE PTR [rax], cl + 00119 4d 8d 49 01 lea r9, QWORD PTR [r9+1] + 0011d c6 40 01 ff mov BYTE PTR [rax+1], 255 ; 000000ffH + 00121 48 8d 40 02 lea rax, QWORD PTR [rax+2] + 00125 79 e9 jns SHORT $LL9@stbi__conv + 00127 e9 b8 02 00 00 jmp $LN2@stbi__conv +$LN46@stbi__conv: + +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; + + 0012c 41 8b d3 mov edx, r11d + 0012f 45 85 db test r11d, r11d + 00132 0f 88 ac 02 00 + 00 js $LN2@stbi__conv + 00138 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL12@stbi__conv: + 00140 83 ea 01 sub edx, 1 + 00143 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00147 88 48 02 mov BYTE PTR [rax+2], cl + 0014a 4d 8d 49 01 lea r9, QWORD PTR [r9+1] + 0014e 88 48 01 mov BYTE PTR [rax+1], cl + 00151 88 08 mov BYTE PTR [rax], cl + 00153 48 8d 40 03 lea rax, QWORD PTR [rax+3] + 00157 79 e7 jns SHORT $LL12@stbi__conv + 00159 e9 86 02 00 00 jmp $LN2@stbi__conv +$LN47@stbi__conv: + +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; + + 0015e 41 8b d3 mov edx, r11d + 00161 45 85 db test r11d, r11d + 00164 0f 88 7a 02 00 + 00 js $LN2@stbi__conv + 0016a 66 0f 1f 44 00 + 00 npad 6 +$LL15@stbi__conv: + 00170 83 ea 01 sub edx, 1 + 00173 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00177 88 48 02 mov BYTE PTR [rax+2], cl + 0017a 4d 8d 49 01 lea r9, QWORD PTR [r9+1] + 0017e 88 48 01 mov BYTE PTR [rax+1], cl + 00181 88 08 mov BYTE PTR [rax], cl + 00183 c6 40 03 ff mov BYTE PTR [rax+3], 255 ; 000000ffH + 00187 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 0018b 79 e3 jns SHORT $LL15@stbi__conv + 0018d e9 52 02 00 00 jmp $LN2@stbi__conv +$LN48@stbi__conv: + +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; + + 00192 41 8b d3 mov edx, r11d + 00195 45 85 db test r11d, r11d + 00198 0f 88 46 02 00 + 00 js $LN2@stbi__conv + 0019e 66 90 npad 2 +$LL18@stbi__conv: + 001a0 83 ea 01 sub edx, 1 + 001a3 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 001a7 88 08 mov BYTE PTR [rax], cl + 001a9 48 8d 40 01 lea rax, QWORD PTR [rax+1] + 001ad 4d 8d 49 02 lea r9, QWORD PTR [r9+2] + 001b1 79 ed jns SHORT $LL18@stbi__conv + 001b3 e9 2c 02 00 00 jmp $LN2@stbi__conv +$LN49@stbi__conv: + +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; + + 001b8 41 8b d3 mov edx, r11d + 001bb 45 85 db test r11d, r11d + 001be 0f 88 20 02 00 + 00 js $LN2@stbi__conv + 001c4 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL21@stbi__conv: + 001d0 83 ea 01 sub edx, 1 + 001d3 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 001d7 88 48 02 mov BYTE PTR [rax+2], cl + 001da 4d 8d 49 02 lea r9, QWORD PTR [r9+2] + 001de 88 48 01 mov BYTE PTR [rax+1], cl + 001e1 88 08 mov BYTE PTR [rax], cl + 001e3 48 8d 40 03 lea rax, QWORD PTR [rax+3] + 001e7 79 e7 jns SHORT $LL21@stbi__conv + 001e9 e9 f6 01 00 00 jmp $LN2@stbi__conv +$LN50@stbi__conv: + +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; + + 001ee 41 8b d3 mov edx, r11d + 001f1 45 85 db test r11d, r11d + 001f4 0f 88 ea 01 00 + 00 js $LN2@stbi__conv + 001fa 66 0f 1f 44 00 + 00 npad 6 +$LL24@stbi__conv: + 00200 83 ea 01 sub edx, 1 + 00203 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00207 88 48 02 mov BYTE PTR [rax+2], cl + 0020a 4d 8d 49 02 lea r9, QWORD PTR [r9+2] + 0020e 88 48 01 mov BYTE PTR [rax+1], cl + 00211 88 08 mov BYTE PTR [rax], cl + 00213 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00217 41 0f b6 49 ff movzx ecx, BYTE PTR [r9-1] + 0021c 88 48 ff mov BYTE PTR [rax-1], cl + 0021f 79 df jns SHORT $LL24@stbi__conv + 00221 e9 be 01 00 00 jmp $LN2@stbi__conv +$LN51@stbi__conv: + +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; + + 00226 41 8b d3 mov edx, r11d + 00229 45 85 db test r11d, r11d + 0022c 0f 88 b2 01 00 + 00 js $LN2@stbi__conv +$LL27@stbi__conv: + 00232 83 ea 01 sub edx, 1 + 00235 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00239 88 08 mov BYTE PTR [rax], cl + 0023b 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 0023f 41 0f b6 49 01 movzx ecx, BYTE PTR [r9+1] + 00244 4d 8d 49 03 lea r9, QWORD PTR [r9+3] + 00248 88 48 fd mov BYTE PTR [rax-3], cl + 0024b 41 0f b6 49 ff movzx ecx, BYTE PTR [r9-1] + 00250 88 48 fe mov BYTE PTR [rax-2], cl + 00253 c6 40 ff ff mov BYTE PTR [rax-1], 255 ; 000000ffH + 00257 79 d9 jns SHORT $LL27@stbi__conv + 00259 e9 86 01 00 00 jmp $LN2@stbi__conv +$LN52@stbi__conv: + +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 0025e 45 8b d3 mov r10d, r11d + 00261 45 85 db test r11d, r11d + 00264 0f 88 7a 01 00 + 00 js $LN2@stbi__conv + 0026a 66 0f 1f 44 00 + 00 npad 6 +$LL30@stbi__conv: + 00270 41 0f b6 49 01 movzx ecx, BYTE PTR [r9+1] + 00275 48 8d 40 01 lea rax, QWORD PTR [rax+1] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00279 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 00280 41 0f b6 49 02 movzx ecx, BYTE PTR [r9+2] + 00285 4d 8d 49 03 lea r9, QWORD PTR [r9+3] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00289 6b d1 1d imul edx, ecx, 29 + +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 0028c 41 0f b6 49 fd movzx ecx, BYTE PTR [r9-3] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00291 44 03 c2 add r8d, edx + 00294 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 00297 44 03 c2 add r8d, edx + 0029a 41 c1 e8 08 shr r8d, 8 + +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 0029e 41 83 ea 01 sub r10d, 1 + 002a2 44 88 40 ff mov BYTE PTR [rax-1], r8b + 002a6 79 c8 jns SHORT $LL30@stbi__conv + 002a8 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 002af e9 30 01 00 00 jmp $LN2@stbi__conv +$LN53@stbi__conv: + +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; + + 002b4 45 8b d3 mov r10d, r11d + 002b7 45 85 db test r11d, r11d + 002ba 0f 88 24 01 00 + 00 js $LN2@stbi__conv +$LL33@stbi__conv: + 002c0 41 0f b6 49 01 movzx ecx, BYTE PTR [r9+1] + 002c5 48 8d 40 02 lea rax, QWORD PTR [rax+2] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 002c9 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; + + 002d0 41 0f b6 49 02 movzx ecx, BYTE PTR [r9+2] + 002d5 4d 8d 49 03 lea r9, QWORD PTR [r9+3] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 002d9 6b d1 1d imul edx, ecx, 29 + +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; + + 002dc 41 0f b6 49 fd movzx ecx, BYTE PTR [r9-3] + 002e1 c6 40 ff ff mov BYTE PTR [rax-1], 255 ; 000000ffH + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 002e5 44 03 c2 add r8d, edx + 002e8 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 002eb 44 03 c2 add r8d, edx + 002ee 41 c1 e8 08 shr r8d, 8 + +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; + + 002f2 41 83 ea 01 sub r10d, 1 + 002f6 44 88 40 fe mov BYTE PTR [rax-2], r8b + 002fa 79 c4 jns SHORT $LL33@stbi__conv + 002fc 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 00303 e9 dc 00 00 00 jmp $LN2@stbi__conv +$LN54@stbi__conv: + +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 00308 45 8b d3 mov r10d, r11d + 0030b 45 85 db test r11d, r11d + 0030e 0f 88 d0 00 00 + 00 js $LN2@stbi__conv + 00314 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL36@stbi__conv: + 00320 41 0f b6 49 01 movzx ecx, BYTE PTR [r9+1] + 00325 48 8d 40 01 lea rax, QWORD PTR [rax+1] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00329 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 00330 41 0f b6 49 02 movzx ecx, BYTE PTR [r9+2] + 00335 4d 8d 49 04 lea r9, QWORD PTR [r9+4] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00339 6b d1 1d imul edx, ecx, 29 + +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 0033c 41 0f b6 49 fc movzx ecx, BYTE PTR [r9-4] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00341 44 03 c2 add r8d, edx + 00344 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 00347 44 03 c2 add r8d, edx + 0034a 41 c1 e8 08 shr r8d, 8 + +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; + + 0034e 41 83 ea 01 sub r10d, 1 + 00352 44 88 40 ff mov BYTE PTR [rax-1], r8b + 00356 79 c8 jns SHORT $LL36@stbi__conv + 00358 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 0035f e9 80 00 00 00 jmp $LN2@stbi__conv +$LN55@stbi__conv: + +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 00364 45 8b d3 mov r10d, r11d + 00367 45 85 db test r11d, r11d + 0036a 78 78 js SHORT $LN2@stbi__conv + 0036c 0f 1f 40 00 npad 4 +$LL39@stbi__conv: + 00370 41 0f b6 49 01 movzx ecx, BYTE PTR [r9+1] + 00375 48 8d 40 02 lea rax, QWORD PTR [rax+2] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00379 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 00380 41 0f b6 49 02 movzx ecx, BYTE PTR [r9+2] + 00385 4d 8d 49 04 lea r9, QWORD PTR [r9+4] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00389 6b d1 1d imul edx, ecx, 29 + +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 0038c 41 0f b6 49 fc movzx ecx, BYTE PTR [r9-4] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00391 44 03 c2 add r8d, edx + 00394 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 00397 44 03 c2 add r8d, edx + 0039a 41 c1 e8 08 shr r8d, 8 + +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 0039e 41 83 ea 01 sub r10d, 1 + 003a2 44 88 40 fe mov BYTE PTR [rax-2], r8b + 003a6 41 0f b6 49 ff movzx ecx, BYTE PTR [r9-1] + 003ab 88 48 ff mov BYTE PTR [rax-1], cl + 003ae 79 c0 jns SHORT $LL39@stbi__conv + 003b0 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 003b7 eb 2b jmp SHORT $LN2@stbi__conv +$LN56@stbi__conv: + +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; + + 003b9 41 8b d3 mov edx, r11d + 003bc 45 85 db test r11d, r11d + 003bf 78 23 js SHORT $LN2@stbi__conv +$LL42@stbi__conv: + 003c1 83 ea 01 sub edx, 1 + 003c4 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 003c8 88 08 mov BYTE PTR [rax], cl + 003ca 48 8d 40 03 lea rax, QWORD PTR [rax+3] + 003ce 41 0f b6 49 01 movzx ecx, BYTE PTR [r9+1] + 003d3 4d 8d 49 04 lea r9, QWORD PTR [r9+4] + 003d7 88 48 fe mov BYTE PTR [rax-2], cl + 003da 41 0f b6 49 fe movzx ecx, BYTE PTR [r9-2] + 003df 88 48 ff mov BYTE PTR [rax-1], cl + 003e2 79 dd jns SHORT $LL42@stbi__conv +$LN2@stbi__conv: + +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { + + 003e4 ff c7 inc edi + 003e6 41 3b fc cmp edi, r12d + 003e9 0f 8c e1 fc ff + ff jl $LL4@stbi__conv +$LN3@stbi__conv: + +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); + + 003ef 48 8b cd mov rcx, rbp + 003f2 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 1258 : return good; + + 003f8 49 8b c7 mov rax, r15 +$LN179@stbi__conv: + 003fb 4c 8b 74 24 58 mov r14, QWORD PTR [rsp+88] + 00400 48 8b 7c 24 50 mov rdi, QWORD PTR [rsp+80] + 00405 4c 8b 7c 24 60 mov r15, QWORD PTR [rsp+96] + +; 1259 : } + + 0040a 48 83 c4 20 add rsp, 32 ; 00000020H + 0040e 41 5d pop r13 + 00410 41 5c pop r12 + 00412 5e pop rsi + 00413 5d pop rbp + 00414 5b pop rbx + 00415 c3 ret 0 +$LN57@stbi__conv: + +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + + 00416 48 8b cd mov rcx, rbp + 00419 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 0041f 49 8b cf mov rcx, r15 + 00422 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 00428 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0042e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00437 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0043c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00440 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@MHDBFHD@unsupported@ + 00447 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + + 0044b 33 c0 xor eax, eax + 0044d eb ac jmp SHORT $LN179@stbi__conv +$LN145@stbi__conv: + +; 1227 : STBI_FREE(data); + + 0044f 48 8b cd mov rcx, rbp + 00452 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 00458 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0045e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00467 4c 8b 7c 24 60 mov r15, QWORD PTR [rsp+96] + 0046c b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00471 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00475 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 0047c 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); + + 00480 33 c0 xor eax, eax + +; 1259 : } + + 00482 48 83 c4 20 add rsp, 32 ; 00000020H + 00486 41 5d pop r13 + 00488 41 5c pop r12 + 0048a 5e pop rsi + 0048b 5d pop rbp + 0048c 5b pop rbx + 0048d c3 ret 0 + 0048e 66 90 npad 2 +$LN150@stbi__conv: + 00490 00 00 00 00 DD $LN45@stbi__conv + 00494 00 00 00 00 DD $LN46@stbi__conv + 00498 00 00 00 00 DD $LN47@stbi__conv + 0049c 00 00 00 00 DD $LN57@stbi__conv + 004a0 00 00 00 00 DD $LN57@stbi__conv + 004a4 00 00 00 00 DD $LN57@stbi__conv + 004a8 00 00 00 00 DD $LN57@stbi__conv + 004ac 00 00 00 00 DD $LN48@stbi__conv + 004b0 00 00 00 00 DD $LN57@stbi__conv + 004b4 00 00 00 00 DD $LN49@stbi__conv + 004b8 00 00 00 00 DD $LN50@stbi__conv + 004bc 00 00 00 00 DD $LN57@stbi__conv + 004c0 00 00 00 00 DD $LN57@stbi__conv + 004c4 00 00 00 00 DD $LN57@stbi__conv + 004c8 00 00 00 00 DD $LN57@stbi__conv + 004cc 00 00 00 00 DD $LN52@stbi__conv + 004d0 00 00 00 00 DD $LN53@stbi__conv + 004d4 00 00 00 00 DD $LN57@stbi__conv + 004d8 00 00 00 00 DD $LN51@stbi__conv + 004dc 00 00 00 00 DD $LN57@stbi__conv + 004e0 00 00 00 00 DD $LN57@stbi__conv + 004e4 00 00 00 00 DD $LN57@stbi__conv + 004e8 00 00 00 00 DD $LN57@stbi__conv + 004ec 00 00 00 00 DD $LN54@stbi__conv + 004f0 00 00 00 00 DD $LN55@stbi__conv + 004f4 00 00 00 00 DD $LN56@stbi__conv +stbi__convert_format ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__compute_y_16 +_TEXT SEGMENT +r$ = 8 +g$ = 16 +b$ = 24 +stbi__compute_y_16 PROC ; COMDAT + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00000 6b c9 4d imul ecx, ecx, 77 ; 0000004dH + 00003 69 c2 96 00 00 + 00 imul eax, edx, 150 ; 00000096H + 00009 03 c1 add eax, ecx + 0000b 41 6b c8 1d imul ecx, r8d, 29 + 0000f 03 c1 add eax, ecx + 00011 c1 f8 08 sar eax, 8 + +; 1268 : } + + 00014 c3 ret 0 +stbi__compute_y_16 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__convert_format16 +_TEXT SEGMENT +data$ = 64 +img_n$ = 72 +req_comp$ = 80 +x$ = 88 +y$ = 96 +stbi__convert_format16 PROC ; COMDAT + +; 1275 : { + + 00000 48 89 6c 24 20 mov QWORD PTR [rsp+32], rbp + 00005 56 push rsi + 00006 57 push rdi + 00007 41 54 push r12 + 00009 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000d 41 8b f1 mov esi, r9d + 00010 41 8b e8 mov ebp, r8d + 00013 44 8b e2 mov r12d, edx + 00016 48 8b f9 mov rdi, rcx + +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; + + 00019 44 3b c2 cmp r8d, edx + 0001c 75 11 jne SHORT $LN43@stbi__conv + 0001e 48 8b c1 mov rax, rcx + +; 1316 : } + + 00021 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 00026 48 83 c4 20 add rsp, 32 ; 00000020H + 0002a 41 5c pop r12 + 0002c 5f pop rdi + 0002d 5e pop rsi + 0002e c3 ret 0 +$LN43@stbi__conv: + +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); + + 0002f 8b c5 mov eax, ebp + 00031 4c 89 74 24 48 mov QWORD PTR [rsp+72], r14 + 00036 0f af c6 imul eax, esi + 00039 0f af 44 24 60 imul eax, DWORD PTR y$[rsp] + 0003e 8d 0c 00 lea ecx, DWORD PTR [rax+rax] + +; 438 : return STBI_MALLOC(size); + + 00041 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00047 4c 8b f0 mov r14, rax + +; 1283 : if (good == NULL) { + + 0004a 48 85 c0 test rax, rax + 0004d 75 33 jne SHORT $LN44@stbi__conv + +; 1284 : STBI_FREE(data); + + 0004f 48 8b cf mov rcx, rdi + 00052 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 00058 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0005e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00067 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0006c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00070 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00077 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); + + 0007b 33 c0 xor eax, eax + 0007d e9 56 02 00 00 jmp $LN150@stbi__conv +$LN44@stbi__conv: + 00082 48 89 5c 24 40 mov QWORD PTR [rsp+64], rbx + +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { + + 00087 33 db xor ebx, ebx + 00089 4c 89 7c 24 50 mov QWORD PTR [rsp+80], r15 + 0008e 39 5c 24 60 cmp DWORD PTR y$[rsp], ebx + 00092 0f 8e 2a 02 00 + 00 jle $LN3@stbi__conv + 00098 46 8d 3c e5 f6 + ff ff ff lea r15d, DWORD PTR [r12*8-10] + 000a0 41 b8 ff ff 00 + 00 mov r8d, 65535 ; 0000ffffH + 000a6 44 03 fd add r15d, ebp + 000a9 44 8d 5e ff lea r11d, DWORD PTR [rsi-1] + 000ad 4c 8d 15 00 00 + 00 00 lea r10, OFFSET FLAT:__ImageBase + 000b4 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL4@stbi__conv: + +; 1289 : stbi__uint16* src = data + j * x * img_n; + + 000c0 8b c3 mov eax, ebx + 000c2 41 0f af c4 imul eax, r12d + 000c6 0f af c6 imul eax, esi + 000c9 4c 8d 0c 47 lea r9, QWORD PTR [rdi+rax*2] + +; 1290 : stbi__uint16* dest = good + j * x * req_comp; + + 000cd 8b c3 mov eax, ebx + 000cf 0f af c5 imul eax, ebp + 000d2 0f af c6 imul eax, esi + 000d5 49 8d 04 46 lea rax, QWORD PTR [r14+rax*2] + +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { + + 000d9 41 83 ff 19 cmp r15d, 25 + 000dd 0f 87 58 03 00 + 00 ja $LN57@stbi__conv + 000e3 49 63 cf movsxd rcx, r15d + 000e6 41 8b 94 8a 00 + 00 00 00 mov edx, DWORD PTR $LN125@stbi__conv[r10+rcx*4] + 000ee 49 03 d2 add rdx, r10 + 000f1 ff e2 jmp rdx +$LN45@stbi__conv: + +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; + + 000f3 41 8b d3 mov edx, r11d + 000f6 45 85 db test r11d, r11d + 000f9 0f 88 b7 01 00 + 00 js $LN2@stbi__conv + 000ff 90 npad 1 +$LL9@stbi__conv: + 00100 83 ea 01 sub edx, 1 + 00103 41 0f b7 09 movzx ecx, WORD PTR [r9] + 00107 66 89 08 mov WORD PTR [rax], cx + 0010a 4d 8d 49 02 lea r9, QWORD PTR [r9+2] + 0010e 66 44 89 40 02 mov WORD PTR [rax+2], r8w + 00113 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00117 79 e7 jns SHORT $LL9@stbi__conv + 00119 e9 98 01 00 00 jmp $LN2@stbi__conv +$LN46@stbi__conv: + +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; + + 0011e 41 8b d3 mov edx, r11d + 00121 45 85 db test r11d, r11d + 00124 0f 88 8c 01 00 + 00 js $LN2@stbi__conv + 0012a 66 0f 1f 44 00 + 00 npad 6 +$LL12@stbi__conv: + 00130 83 ea 01 sub edx, 1 + 00133 41 0f b7 09 movzx ecx, WORD PTR [r9] + 00137 66 89 48 04 mov WORD PTR [rax+4], cx + 0013b 4d 8d 49 02 lea r9, QWORD PTR [r9+2] + 0013f 66 89 48 02 mov WORD PTR [rax+2], cx + 00143 66 89 08 mov WORD PTR [rax], cx + 00146 48 8d 40 06 lea rax, QWORD PTR [rax+6] + 0014a 79 e4 jns SHORT $LL12@stbi__conv + 0014c e9 65 01 00 00 jmp $LN2@stbi__conv +$LN47@stbi__conv: + +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; + + 00151 41 8b d3 mov edx, r11d + 00154 45 85 db test r11d, r11d + 00157 0f 88 59 01 00 + 00 js $LN2@stbi__conv + 0015d 0f 1f 00 npad 3 +$LL15@stbi__conv: + 00160 83 ea 01 sub edx, 1 + 00163 41 0f b7 09 movzx ecx, WORD PTR [r9] + 00167 66 89 48 04 mov WORD PTR [rax+4], cx + 0016b 4d 8d 49 02 lea r9, QWORD PTR [r9+2] + 0016f 66 89 48 02 mov WORD PTR [rax+2], cx + 00173 66 89 08 mov WORD PTR [rax], cx + 00176 66 44 89 40 06 mov WORD PTR [rax+6], r8w + 0017b 48 8d 40 08 lea rax, QWORD PTR [rax+8] + 0017f 79 df jns SHORT $LL15@stbi__conv + 00181 e9 30 01 00 00 jmp $LN2@stbi__conv +$LN48@stbi__conv: + +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; + + 00186 41 8b d3 mov edx, r11d + 00189 45 85 db test r11d, r11d + 0018c 0f 88 24 01 00 + 00 js $LN2@stbi__conv +$LL18@stbi__conv: + 00192 83 ea 01 sub edx, 1 + 00195 41 0f b7 09 movzx ecx, WORD PTR [r9] + 00199 66 89 08 mov WORD PTR [rax], cx + 0019c 48 8d 40 02 lea rax, QWORD PTR [rax+2] + 001a0 4d 8d 49 04 lea r9, QWORD PTR [r9+4] + 001a4 79 ec jns SHORT $LL18@stbi__conv + 001a6 e9 0b 01 00 00 jmp $LN2@stbi__conv +$LN49@stbi__conv: + +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; + + 001ab 41 8b d3 mov edx, r11d + 001ae 45 85 db test r11d, r11d + 001b1 0f 88 ff 00 00 + 00 js $LN2@stbi__conv + 001b7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL21@stbi__conv: + 001c0 83 ea 01 sub edx, 1 + 001c3 41 0f b7 09 movzx ecx, WORD PTR [r9] + 001c7 66 89 48 04 mov WORD PTR [rax+4], cx + 001cb 4d 8d 49 04 lea r9, QWORD PTR [r9+4] + 001cf 66 89 48 02 mov WORD PTR [rax+2], cx + 001d3 66 89 08 mov WORD PTR [rax], cx + 001d6 48 8d 40 06 lea rax, QWORD PTR [rax+6] + 001da 79 e4 jns SHORT $LL21@stbi__conv + 001dc e9 d5 00 00 00 jmp $LN2@stbi__conv +$LN50@stbi__conv: + +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; + + 001e1 41 8b d3 mov edx, r11d + 001e4 45 85 db test r11d, r11d + 001e7 0f 88 c9 00 00 + 00 js $LN2@stbi__conv + 001ed 0f 1f 00 npad 3 +$LL24@stbi__conv: + 001f0 83 ea 01 sub edx, 1 + 001f3 41 0f b7 09 movzx ecx, WORD PTR [r9] + 001f7 66 89 48 04 mov WORD PTR [rax+4], cx + 001fb 4d 8d 49 04 lea r9, QWORD PTR [r9+4] + 001ff 66 89 48 02 mov WORD PTR [rax+2], cx + 00203 66 89 08 mov WORD PTR [rax], cx + 00206 48 8d 40 08 lea rax, QWORD PTR [rax+8] + 0020a 41 0f b7 49 fe movzx ecx, WORD PTR [r9-2] + 0020f 66 89 48 fe mov WORD PTR [rax-2], cx + 00213 79 db jns SHORT $LL24@stbi__conv + 00215 e9 9c 00 00 00 jmp $LN2@stbi__conv +$LN51@stbi__conv: + +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; + + 0021a 41 8b d3 mov edx, r11d + 0021d 45 85 db test r11d, r11d + 00220 0f 88 90 00 00 + 00 js $LN2@stbi__conv + 00226 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL27@stbi__conv: + 00230 83 ea 01 sub edx, 1 + 00233 41 0f b7 09 movzx ecx, WORD PTR [r9] + 00237 66 89 08 mov WORD PTR [rax], cx + 0023a 48 8d 40 08 lea rax, QWORD PTR [rax+8] + 0023e 41 0f b7 49 02 movzx ecx, WORD PTR [r9+2] + 00243 4d 8d 49 06 lea r9, QWORD PTR [r9+6] + 00247 66 89 48 fa mov WORD PTR [rax-6], cx + 0024b 41 0f b7 49 fe movzx ecx, WORD PTR [r9-2] + 00250 66 89 48 fc mov WORD PTR [rax-4], cx + 00254 66 44 89 40 fe mov WORD PTR [rax-2], r8w + 00259 79 d5 jns SHORT $LL27@stbi__conv + 0025b eb 59 jmp SHORT $LN2@stbi__conv +$LN52@stbi__conv: + +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 0025d 45 8b d3 mov r10d, r11d + 00260 45 85 db test r11d, r11d + 00263 78 4a js SHORT $LN129@stbi__conv + 00265 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL30@stbi__conv: + 00270 41 0f b7 49 02 movzx ecx, WORD PTR [r9+2] + 00275 48 8d 40 02 lea rax, QWORD PTR [rax+2] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00279 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 00280 41 0f b7 49 04 movzx ecx, WORD PTR [r9+4] + 00285 4d 8d 49 06 lea r9, QWORD PTR [r9+6] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00289 6b d1 1d imul edx, ecx, 29 + +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 0028c 41 0f b7 49 fa movzx ecx, WORD PTR [r9-6] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00291 44 03 c2 add r8d, edx + 00294 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 00297 44 03 c2 add r8d, edx + 0029a 41 c1 e8 08 shr r8d, 8 + +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 0029e 41 83 ea 01 sub r10d, 1 + 002a2 66 44 89 40 fe mov WORD PTR [rax-2], r8w + 002a7 79 c7 jns SHORT $LL30@stbi__conv +$LN154@stbi__conv: + +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { + + 002a9 41 b8 ff ff 00 + 00 mov r8d, 65535 ; 0000ffffH +$LN129@stbi__conv: + 002af 4c 8d 15 00 00 + 00 00 lea r10, OFFSET FLAT:__ImageBase +$LN2@stbi__conv: + 002b6 ff c3 inc ebx + 002b8 3b 5c 24 60 cmp ebx, DWORD PTR y$[rsp] + 002bc 0f 8c fe fd ff + ff jl $LL4@stbi__conv +$LN3@stbi__conv: + +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); + + 002c2 48 8b cf mov rcx, rdi + 002c5 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 1315 : return good; + + 002cb 49 8b c6 mov rax, r14 +$LN152@stbi__conv: + 002ce 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 002d3 4c 8b 7c 24 50 mov r15, QWORD PTR [rsp+80] +$LN150@stbi__conv: + 002d8 4c 8b 74 24 48 mov r14, QWORD PTR [rsp+72] + +; 1316 : } + + 002dd 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 002e2 48 83 c4 20 add rsp, 32 ; 00000020H + 002e6 41 5c pop r12 + 002e8 5f pop rdi + 002e9 5e pop rsi + 002ea c3 ret 0 +$LN53@stbi__conv: + +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; + + 002eb 45 8b d3 mov r10d, r11d + 002ee 45 85 db test r11d, r11d + 002f1 78 bc js SHORT $LN129@stbi__conv + 002f3 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL33@stbi__conv: + 00300 41 0f b7 49 02 movzx ecx, WORD PTR [r9+2] + 00305 48 8d 40 04 lea rax, QWORD PTR [rax+4] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00309 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; + + 00310 41 0f b7 49 04 movzx ecx, WORD PTR [r9+4] + 00315 4d 8d 49 06 lea r9, QWORD PTR [r9+6] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00319 6b d1 1d imul edx, ecx, 29 + +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; + + 0031c 41 0f b7 49 fa movzx ecx, WORD PTR [r9-6] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00321 44 03 c2 add r8d, edx + 00324 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 00327 44 03 c2 add r8d, edx + 0032a 41 c1 e8 08 shr r8d, 8 + +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; + + 0032e 41 83 ea 01 sub r10d, 1 + 00332 66 44 89 40 fc mov WORD PTR [rax-4], r8w + 00337 41 b8 ff ff 00 + 00 mov r8d, 65535 ; 0000ffffH + 0033d 66 44 89 40 fe mov WORD PTR [rax-2], r8w + 00342 79 bc jns SHORT $LL33@stbi__conv + 00344 e9 66 ff ff ff jmp $LN129@stbi__conv +$LN54@stbi__conv: + +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 00349 45 8b d3 mov r10d, r11d + 0034c 45 85 db test r11d, r11d + 0034f 0f 88 5a ff ff + ff js $LN129@stbi__conv + 00355 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL36@stbi__conv: + 00360 41 0f b7 49 02 movzx ecx, WORD PTR [r9+2] + 00365 48 8d 40 02 lea rax, QWORD PTR [rax+2] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00369 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 00370 41 0f b7 49 04 movzx ecx, WORD PTR [r9+4] + 00375 4d 8d 49 08 lea r9, QWORD PTR [r9+8] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00379 6b d1 1d imul edx, ecx, 29 + +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 0037c 41 0f b7 49 f8 movzx ecx, WORD PTR [r9-8] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00381 44 03 c2 add r8d, edx + 00384 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 00387 44 03 c2 add r8d, edx + 0038a 41 c1 e8 08 shr r8d, 8 + +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; + + 0038e 41 83 ea 01 sub r10d, 1 + 00392 66 44 89 40 fe mov WORD PTR [rax-2], r8w + 00397 79 c7 jns SHORT $LL36@stbi__conv + 00399 e9 0b ff ff ff jmp $LN154@stbi__conv +$LN55@stbi__conv: + +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 0039e 45 8b d3 mov r10d, r11d + 003a1 45 85 db test r11d, r11d + 003a4 0f 88 05 ff ff + ff js $LN129@stbi__conv + 003aa 66 0f 1f 44 00 + 00 npad 6 +$LL39@stbi__conv: + 003b0 41 0f b7 49 02 movzx ecx, WORD PTR [r9+2] + 003b5 48 8d 40 04 lea rax, QWORD PTR [rax+4] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 003b9 44 69 c1 96 00 + 00 00 imul r8d, ecx, 150 ; 00000096H + +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 003c0 41 0f b7 49 04 movzx ecx, WORD PTR [r9+4] + 003c5 4d 8d 49 08 lea r9, QWORD PTR [r9+8] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 003c9 6b d1 1d imul edx, ecx, 29 + +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 003cc 41 0f b7 49 f8 movzx ecx, WORD PTR [r9-8] + +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 003d1 44 03 c2 add r8d, edx + 003d4 6b d1 4d imul edx, ecx, 77 ; 0000004dH + 003d7 44 03 c2 add r8d, edx + 003da 41 c1 e8 08 shr r8d, 8 + +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 003de 41 83 ea 01 sub r10d, 1 + 003e2 66 44 89 40 fc mov WORD PTR [rax-4], r8w + 003e7 41 0f b7 49 fe movzx ecx, WORD PTR [r9-2] + 003ec 66 89 48 fe mov WORD PTR [rax-2], cx + 003f0 79 be jns SHORT $LL39@stbi__conv + 003f2 e9 b2 fe ff ff jmp $LN154@stbi__conv +$LN56@stbi__conv: + +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; + + 003f7 41 8b d3 mov edx, r11d + 003fa 45 85 db test r11d, r11d + 003fd 0f 88 b3 fe ff + ff js $LN2@stbi__conv + 00403 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL42@stbi__conv: + 00410 83 ea 01 sub edx, 1 + 00413 41 0f b7 09 movzx ecx, WORD PTR [r9] + 00417 66 89 08 mov WORD PTR [rax], cx + 0041a 48 8d 40 06 lea rax, QWORD PTR [rax+6] + 0041e 41 0f b7 49 02 movzx ecx, WORD PTR [r9+2] + 00423 4d 8d 49 08 lea r9, QWORD PTR [r9+8] + 00427 66 89 48 fc mov WORD PTR [rax-4], cx + 0042b 41 0f b7 49 fc movzx ecx, WORD PTR [r9-4] + 00430 66 89 48 fe mov WORD PTR [rax-2], cx + 00434 79 da jns SHORT $LL42@stbi__conv + +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; + + 00436 e9 7b fe ff ff jmp $LN2@stbi__conv +$LN57@stbi__conv: + +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); + + 0043b 48 8b cf mov rcx, rdi + 0043e ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 00444 49 8b ce mov rcx, r14 + 00447 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 0044d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00453 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0045c b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00461 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00465 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@MHDBFHD@unsupported@ + 0046c 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); + + 00470 33 c0 xor eax, eax + 00472 e9 57 fe ff ff jmp $LN152@stbi__conv + 00477 90 npad 1 +$LN125@stbi__conv: + +; 1316 : } + + 00478 00 00 00 00 DD $LN45@stbi__conv + 0047c 00 00 00 00 DD $LN46@stbi__conv + 00480 00 00 00 00 DD $LN47@stbi__conv + 00484 00 00 00 00 DD $LN57@stbi__conv + 00488 00 00 00 00 DD $LN57@stbi__conv + 0048c 00 00 00 00 DD $LN57@stbi__conv + 00490 00 00 00 00 DD $LN57@stbi__conv + 00494 00 00 00 00 DD $LN48@stbi__conv + 00498 00 00 00 00 DD $LN57@stbi__conv + 0049c 00 00 00 00 DD $LN49@stbi__conv + 004a0 00 00 00 00 DD $LN50@stbi__conv + 004a4 00 00 00 00 DD $LN57@stbi__conv + 004a8 00 00 00 00 DD $LN57@stbi__conv + 004ac 00 00 00 00 DD $LN57@stbi__conv + 004b0 00 00 00 00 DD $LN57@stbi__conv + 004b4 00 00 00 00 DD $LN52@stbi__conv + 004b8 00 00 00 00 DD $LN53@stbi__conv + 004bc 00 00 00 00 DD $LN57@stbi__conv + 004c0 00 00 00 00 DD $LN51@stbi__conv + 004c4 00 00 00 00 DD $LN57@stbi__conv + 004c8 00 00 00 00 DD $LN57@stbi__conv + 004cc 00 00 00 00 DD $LN57@stbi__conv + 004d0 00 00 00 00 DD $LN57@stbi__conv + 004d4 00 00 00 00 DD $LN54@stbi__conv + 004d8 00 00 00 00 DD $LN55@stbi__conv + 004dc 00 00 00 00 DD $LN56@stbi__conv +stbi__convert_format16 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__hdr_to_ldr +_TEXT SEGMENT +tv691 = 32 +tv693 = 40 +output$1$ = 48 +tv698 = 56 +data$ = 160 +x$ = 168 +y$ = 176 +comp$ = 184 +stbi__hdr_to_ldr PROC ; COMDAT + +; 1347 : { + + 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 00005 53 push rbx + 00006 56 push rsi + 00007 57 push rdi + 00008 48 81 ec 80 00 + 00 00 sub rsp, 128 ; 00000080H + 0000f 49 63 f1 movsxd rsi, r9d + 00012 8b da mov ebx, edx + 00014 48 8b f9 mov rdi, rcx + +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; + + 00017 48 85 c9 test rcx, rcx + 0001a 0f 84 1d 02 00 + 00 je $LN67@stbi__hdr_ + +; 467 : if (a < 0 || b < 0) return 0; + + 00020 85 d2 test edx, edx + 00022 0f 88 e9 01 00 + 00 js $LN50@stbi__hdr_ + 00028 45 85 c0 test r8d, r8d + 0002b 0f 88 e0 01 00 + 00 js $LN50@stbi__hdr_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00031 74 12 je SHORT $LN54@stbi__hdr_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00033 33 d2 xor edx, edx + 00035 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0003a 41 f7 f0 div r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0003d 3b d8 cmp ebx, eax + 0003f 0f 8f cc 01 00 + 00 jg $LN50@stbi__hdr_ +$LN54@stbi__hdr_: + 00045 41 0f af d8 imul ebx, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 00049 85 db test ebx, ebx + 0004b 0f 88 c0 01 00 + 00 js $LN50@stbi__hdr_ + 00051 45 85 c9 test r9d, r9d + 00054 0f 88 b7 01 00 + 00 js $LN50@stbi__hdr_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0005a 74 11 je SHORT $LN53@stbi__hdr_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0005c 33 d2 xor edx, edx + 0005e b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00063 f7 f6 div esi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00065 3b d8 cmp ebx, eax + 00067 0f 8f a4 01 00 + 00 jg $LN50@stbi__hdr_ +$LN53@stbi__hdr_: + +; 509 : return stbi__malloc(a * b * c + add); + + 0006d 8b c3 mov eax, ebx + 0006f 0f af c6 imul eax, esi + 00072 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 00075 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 0007b 48 89 44 24 30 mov QWORD PTR output$1$[rsp], rax + 00080 4c 8b c0 mov r8, rax + +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + + 00083 48 85 c0 test rax, rax + 00086 0f 84 85 01 00 + 00 je $LN50@stbi__hdr_ + +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; + + 0008c 40 f6 c6 01 test sil, 1 + +; 1355 : for (i = 0; i < x * y; ++i) { + + 00090 8d 4e ff lea ecx, DWORD PTR [rsi-1] + 00093 8b c6 mov eax, esi + 00095 0f 44 c1 cmove eax, ecx + 00098 89 44 24 20 mov DWORD PTR tv691[rsp], eax + 0009c 85 db test ebx, ebx + 0009e 0f 8e 54 01 00 + 00 jle $LN3@stbi__hdr_ + 000a4 48 89 ac 24 a8 + 00 00 00 mov QWORD PTR [rsp+168], rbp + 000ac 4c 8d 14 b5 00 + 00 00 00 lea r10, QWORD PTR [rsi*4] + 000b4 4c 89 a4 24 b0 + 00 00 00 mov QWORD PTR [rsp+176], r12 + 000bc 4c 8b ce mov r9, rsi + 000bf 4c 89 ac 24 b8 + 00 00 00 mov QWORD PTR [rsp+184], r13 + 000c7 45 33 ed xor r13d, r13d + 000ca 4c 89 74 24 78 mov QWORD PTR [rsp+120], r14 + 000cf 4d 8b f0 mov r14, r8 + 000d2 4c 89 7c 24 70 mov QWORD PTR [rsp+112], r15 + 000d7 4c 8b ff mov r15, rdi + 000da 0f 29 74 24 60 movaps XMMWORD PTR [rsp+96], xmm6 + 000df f3 0f 10 35 00 + 00 00 00 movss xmm6, DWORD PTR __real@437f0000 + 000e7 0f 29 7c 24 50 movaps XMMWORD PTR [rsp+80], xmm7 + 000ec f3 0f 10 3d 00 + 00 00 00 movss xmm7, DWORD PTR __real@3f000000 + 000f4 8b d3 mov edx, ebx + 000f6 44 0f 29 44 24 + 40 movaps XMMWORD PTR [rsp+64], xmm8 + 000fc f2 44 0f 10 05 + 00 00 00 00 movsd xmm8, QWORD PTR __real@3fdd1745c0000000 + 00105 4c 63 e0 movsxd r12, eax + 00108 4c 89 54 24 38 mov QWORD PTR tv698[rsp], r10 + 0010d 48 89 54 24 28 mov QWORD PTR tv693[rsp], rdx +$LL4@stbi__hdr_: + +; 1356 : for (k = 0; k < n; ++k) { + + 00112 33 ed xor ebp, ebp + 00114 4d 85 e4 test r12, r12 + 00117 7e 62 jle SHORT $LN6@stbi__hdr_ + +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + + 00119 33 db xor ebx, ebx + 0011b 49 8b ff mov rdi, r15 + 0011e 8b e8 mov ebp, eax +$LL7@stbi__hdr_: + 00120 f3 0f 10 07 movss xmm0, DWORD PTR [rdi] + 00124 41 0f 28 c8 movaps xmm1, xmm8 + 00128 0f 5a c0 cvtps2pd xmm0, xmm0 + 0012b e8 00 00 00 00 call pow + 00130 0f 57 d2 xorps xmm2, xmm2 + 00133 0f 57 c9 xorps xmm1, xmm1 + 00136 f2 0f 5a d0 cvtsd2ss xmm2, xmm0 + 0013a 48 83 c7 04 add rdi, 4 + +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; + + 0013e 0f 28 c6 movaps xmm0, xmm6 + 00141 f3 0f 59 d6 mulss xmm2, xmm6 + 00145 f3 0f 58 d7 addss xmm2, xmm7 + 00149 f3 0f 5f ca maxss xmm1, xmm2 + 0014d f3 0f 5d c1 minss xmm0, xmm1 + +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); + + 00151 f3 0f 2c c0 cvttss2si eax, xmm0 + 00155 41 88 04 1e mov BYTE PTR [r14+rbx], al + 00159 48 ff c3 inc rbx + 0015c 49 3b dc cmp rbx, r12 + 0015f 7c bf jl SHORT $LL7@stbi__hdr_ + 00161 48 8b 54 24 28 mov rdx, QWORD PTR tv693[rsp] + 00166 4c 8b ce mov r9, rsi + 00169 48 8b bc 24 a0 + 00 00 00 mov rdi, QWORD PTR data$[rsp] + 00171 4c 8b 44 24 30 mov r8, QWORD PTR output$1$[rsp] + 00176 4c 8b 54 24 38 mov r10, QWORD PTR tv698[rsp] +$LN6@stbi__hdr_: + +; 1361 : } +; 1362 : if (k < comp) { + + 0017b 3b ee cmp ebp, esi + 0017d 7d 2b jge SHORT $LN2@stbi__hdr_ + +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; + + 0017f 41 8b c5 mov eax, r13d + 00182 0f 57 c9 xorps xmm1, xmm1 + 00185 03 c5 add eax, ebp + 00187 48 63 c8 movsxd rcx, eax + 0018a f3 0f 10 04 8f movss xmm0, DWORD PTR [rdi+rcx*4] + 0018f f3 0f 59 c6 mulss xmm0, xmm6 + 00193 f3 0f 58 c7 addss xmm0, xmm7 + +; 1364 : if (z < 0) z = 0; + + 00197 f3 0f 5f c8 maxss xmm1, xmm0 + +; 1365 : if (z > 255) z = 255; + + 0019b 0f 28 c6 movaps xmm0, xmm6 + 0019e f3 0f 5d c1 minss xmm0, xmm1 + +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); + + 001a2 f3 0f 2c c0 cvttss2si eax, xmm0 + 001a6 42 88 04 01 mov BYTE PTR [rcx+r8], al +$LN2@stbi__hdr_: + +; 1355 : for (i = 0; i < x * y; ++i) { + + 001aa 8b 44 24 20 mov eax, DWORD PTR tv691[rsp] + 001ae 44 03 ee add r13d, esi + 001b1 4d 03 fa add r15, r10 + 001b4 4d 03 f1 add r14, r9 + 001b7 48 83 ea 01 sub rdx, 1 + 001bb 48 89 54 24 28 mov QWORD PTR tv693[rsp], rdx + 001c0 0f 85 4c ff ff + ff jne $LL4@stbi__hdr_ + 001c6 44 0f 28 44 24 + 40 movaps xmm8, XMMWORD PTR [rsp+64] + 001cc 0f 28 7c 24 50 movaps xmm7, XMMWORD PTR [rsp+80] + 001d1 0f 28 74 24 60 movaps xmm6, XMMWORD PTR [rsp+96] + 001d6 4c 8b 7c 24 70 mov r15, QWORD PTR [rsp+112] + 001db 4c 8b 74 24 78 mov r14, QWORD PTR [rsp+120] + 001e0 4c 8b ac 24 b8 + 00 00 00 mov r13, QWORD PTR [rsp+184] + 001e8 4c 8b a4 24 b0 + 00 00 00 mov r12, QWORD PTR [rsp+176] + 001f0 48 8b ac 24 a8 + 00 00 00 mov rbp, QWORD PTR [rsp+168] +$LN3@stbi__hdr_: + +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); + + 001f8 48 8b cf mov rcx, rdi + 001fb ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 1370 : return output; + + 00201 48 8b 44 24 30 mov rax, QWORD PTR output$1$[rsp] + +; 1371 : } + + 00206 48 81 c4 80 00 + 00 00 add rsp, 128 ; 00000080H + 0020d 5f pop rdi + 0020e 5e pop rsi + 0020f 5b pop rbx + 00210 c3 ret 0 +$LN50@stbi__hdr_: + +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + + 00211 48 8b cf mov rcx, rdi + 00214 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 0021a 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00223 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00229 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 0022e 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 00232 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00239 48 89 04 0a mov QWORD PTR [rdx+rcx], rax +$LN67@stbi__hdr_: + +; 1371 : } + + 0023d 33 c0 xor eax, eax + 0023f 48 81 c4 80 00 + 00 00 add rsp, 128 ; 00000080H + 00246 5f pop rdi + 00247 5e pop rsi + 00248 5b pop rbx + 00249 c3 ret 0 +stbi__hdr_to_ldr ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__build_huffman +_TEXT SEGMENT +h$ = 64 +count$ = 72 +stbi__build_huffman PROC ; COMDAT + +; 1466 : { + + 00000 40 53 push rbx + 00002 56 push rsi + 00003 41 57 push r15 + 00005 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1467 : int i, j, k = 0; + + 00009 33 f6 xor esi, esi + 0000b 4c 8b f9 mov r15, rcx + 0000e 44 8b d6 mov r10d, esi + +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { + + 00011 8b de mov ebx, esi + 00013 8b c6 mov eax, esi + 00015 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL4@stbi__buil: + +; 1471 : for (j = 0; j < count[i]; ++j) { + + 00020 4c 63 c3 movsxd r8, ebx + 00023 44 8b ce mov r9d, esi + 00026 46 8b 1c 82 mov r11d, DWORD PTR [rdx+r8*4] + 0002a 45 85 db test r11d, r11d + 0002d 7e 25 jle SHORT $LN2@stbi__buil + 0002f 8d 4b 01 lea ecx, DWORD PTR [rbx+1] +$LL7@stbi__buil: + +; 1472 : h->size[k++] = (stbi_uc)(i + 1); + + 00032 41 88 8c 07 00 + 05 00 00 mov BYTE PTR [r15+rax+1280], cl + 0003a 41 ff c2 inc r10d + 0003d 48 ff c0 inc rax + +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); + + 00040 48 3d 01 01 00 + 00 cmp rax, 257 ; 00000101H + 00046 0f 8d 51 01 00 + 00 jge $LN34@stbi__buil + +; 1471 : for (j = 0; j < count[i]; ++j) { + + 0004c 41 ff c1 inc r9d + 0004f 45 3b cb cmp r9d, r11d + 00052 7c de jl SHORT $LL7@stbi__buil +$LN2@stbi__buil: + +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { + + 00054 ff c3 inc ebx + 00056 83 fb 10 cmp ebx, 16 + 00059 7c c5 jl SHORT $LL4@stbi__buil + +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; + + 0005b 49 63 c2 movsxd rax, r10d + +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; + + 0005e 8b d6 mov edx, esi + 00060 48 89 7c 24 48 mov QWORD PTR [rsp+72], rdi + +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { + + 00065 41 ba 01 00 00 + 00 mov r10d, 1 + 0006b 4c 89 74 24 50 mov QWORD PTR [rsp+80], r14 + 00070 8b de mov ebx, esi + 00072 4c 8b ce mov r9, rsi + 00075 4d 8d b7 08 06 + 00 00 lea r14, QWORD PTR [r15+1544] + 0007c 42 88 b4 38 00 + 05 00 00 mov BYTE PTR [rax+r15+1280], sil + 00084 41 8d 7a 0e lea edi, QWORD PTR [r10+14] + 00088 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL10@stbi__buil: + +; 1484 : if (h->size[k] == j) { + + 00090 49 8d 8f 00 05 + 00 00 lea rcx, QWORD PTR [r15+1280] + 00097 8b c3 mov eax, ebx + 00099 2b c2 sub eax, edx + 0009b 49 03 c9 add rcx, r9 + 0009e 41 89 46 48 mov DWORD PTR [r14+72], eax + 000a2 0f b6 01 movzx eax, BYTE PTR [rcx] + 000a5 41 3b c2 cmp eax, r10d + 000a8 75 47 jne SHORT $LN21@stbi__buil + +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; + + 000aa 4d 8d 87 00 02 + 00 00 lea r8, QWORD PTR [r15+512] + 000b1 4f 8d 04 48 lea r8, QWORD PTR [r8+r9*2] + 000b5 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL11@stbi__buil: + +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); + + 000c0 66 41 89 10 mov WORD PTR [r8], dx + 000c4 48 8d 49 01 lea rcx, QWORD PTR [rcx+1] + 000c8 0f b6 01 movzx eax, BYTE PTR [rcx] + 000cb 4d 8d 40 02 lea r8, QWORD PTR [r8+2] + 000cf 44 8b da mov r11d, edx + 000d2 ff c3 inc ebx + 000d4 49 ff c1 inc r9 + 000d7 ff c2 inc edx + 000d9 41 3b c2 cmp eax, r10d + 000dc 74 e2 je SHORT $LL11@stbi__buil + +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); + + 000de 41 8b ca mov ecx, r10d + 000e1 b8 01 00 00 00 mov eax, 1 + 000e6 d3 e0 shl eax, cl + 000e8 44 3b d8 cmp r11d, eax + 000eb 0f 83 da 00 00 + 00 jae $LN35@stbi__buil +$LN21@stbi__buil: + +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); + + 000f1 8b cf mov ecx, edi + 000f3 8b c2 mov eax, edx + 000f5 d3 e0 shl eax, cl + +; 1491 : code <<= 1; + + 000f7 03 d2 add edx, edx + 000f9 41 89 06 mov DWORD PTR [r14], eax + 000fc 41 ff c2 inc r10d + 000ff 49 83 c6 04 add r14, 4 + 00103 83 ef 01 sub edi, 1 + 00106 79 88 jns SHORT $LL10@stbi__buil + +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; + + 00108 49 63 c2 movsxd rax, r10d + +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); + + 0010b ba ff 00 00 00 mov edx, 255 ; 000000ffH + 00110 41 b8 00 02 00 + 00 mov r8d, 512 ; 00000200H + 00116 49 8b cf mov rcx, r15 + 00119 41 c7 84 87 04 + 06 00 00 ff ff + ff ff mov DWORD PTR [r15+rax*4+1540], -1 ; ffffffffH + 00125 e8 00 00 00 00 call memset + +; 1497 : for (i = 0; i < k; ++i) { + + 0012a 85 db test ebx, ebx + 0012c 7e 57 jle SHORT $LN14@stbi__buil + 0012e 48 89 6c 24 40 mov QWORD PTR [rsp+64], rbp + 00133 49 8d bf 00 05 + 00 00 lea rdi, QWORD PTR [r15+1280] + 0013a 49 8d af 00 02 + 00 00 lea rbp, QWORD PTR [r15+512] +$LL15@stbi__buil: + +; 1498 : int s = h->size[i]; + + 00141 0f b6 07 movzx eax, BYTE PTR [rdi] + +; 1499 : if (s <= FAST_BITS) { + + 00144 83 f8 09 cmp eax, 9 + 00147 77 2a ja SHORT $LN13@stbi__buil + +; 1500 : int c = h->code[i] << (FAST_BITS - s); + + 00149 0f b7 55 00 movzx edx, WORD PTR [rbp] + 0014d b9 09 00 00 00 mov ecx, 9 + 00152 2b c8 sub ecx, eax + +; 1501 : int m = 1 << (FAST_BITS - s); + + 00154 b8 01 00 00 00 mov eax, 1 + 00159 d3 e0 shl eax, cl + 0015b d3 e2 shl edx, cl + +; 1502 : for (j = 0; j < m; ++j) { + + 0015d 85 c0 test eax, eax + 0015f 7e 12 jle SHORT $LN13@stbi__buil + +; 1503 : h->fast[c + j] = (stbi_uc)i; + + 00161 48 63 ca movsxd rcx, edx + 00164 40 0f b6 d6 movzx edx, sil + 00168 49 03 cf add rcx, r15 + 0016b 4c 63 c0 movsxd r8, eax + 0016e e8 00 00 00 00 call memset +$LN13@stbi__buil: + +; 1497 : for (i = 0; i < k; ++i) { + + 00173 ff c6 inc esi + 00175 48 83 c5 02 add rbp, 2 + 00179 48 ff c7 inc rdi + 0017c 3b f3 cmp esi, ebx + 0017e 7c c1 jl SHORT $LL15@stbi__buil + 00180 48 8b 6c 24 40 mov rbp, QWORD PTR [rsp+64] +$LN14@stbi__buil: + +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; + + 00185 b8 01 00 00 00 mov eax, 1 +$LN68@stbi__buil: + 0018a 48 8b 7c 24 48 mov rdi, QWORD PTR [rsp+72] + 0018f 4c 8b 74 24 50 mov r14, QWORD PTR [rsp+80] + +; 1508 : } + + 00194 48 83 c4 20 add rsp, 32 ; 00000020H + 00198 41 5f pop r15 + 0019a 5e pop rsi + 0019b 5b pop rbx + 0019c c3 ret 0 +$LN34@stbi__buil: + +; 431 : stbi__g_failure_reason = str; + + 0019d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001a3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001ac b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 001b1 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001b5 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@DEFOLMLB@bad?5size?5list@ + 001bc 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); + + 001c0 33 c0 xor eax, eax + +; 1508 : } + + 001c2 48 83 c4 20 add rsp, 32 ; 00000020H + 001c6 41 5f pop r15 + 001c8 5e pop rsi + 001c9 5b pop rbx + 001ca c3 ret 0 +$LN35@stbi__buil: + +; 431 : stbi__g_failure_reason = str; + + 001cb 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001d1 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001da b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 001df 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001e3 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ + 001ea 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); + + 001ee 33 c0 xor eax, eax + 001f0 eb 98 jmp SHORT $LN68@stbi__buil +stbi__build_huffman ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__build_fast_ac +_TEXT SEGMENT +fast_ac$ = 16 +h$ = 24 +stbi__build_fast_ac PROC ; COMDAT + +; 1513 : { + + 00000 48 89 6c 24 18 mov QWORD PTR [rsp+24], rbp + 00005 56 push rsi + +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { + + 00006 33 ed xor ebp, ebp + 00008 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 0000d 44 8b d5 mov r10d, ebp + 00010 48 89 7c 24 18 mov QWORD PTR [rsp+24], rdi + 00015 48 8b f2 mov rsi, rdx + 00018 4c 8b c9 mov r9, rcx + 0001b 4c 8b da mov r11, rdx + 0001e 66 90 npad 2 +$LL4@stbi__buil: + +; 1516 : stbi_uc fast = h->fast[i]; + + 00020 41 0f b6 03 movzx eax, BYTE PTR [r11] + +; 1517 : fast_ac[i] = 0; + + 00024 66 41 89 29 mov WORD PTR [r9], bp + +; 1518 : if (fast < 255) { + + 00028 3c ff cmp al, 255 ; 000000ffH + 0002a 0f 83 82 00 00 + 00 jae $LN2@stbi__buil + +; 1519 : int rs = h->values[fast]; + + 00030 44 0f b6 84 30 + 00 04 00 00 movzx r8d, BYTE PTR [rax+rsi+1024] + +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; + + 00039 0f b6 9c 30 00 + 05 00 00 movzx ebx, BYTE PTR [rax+rsi+1280] + 00041 41 8b f8 mov edi, r8d + 00044 c1 ef 04 shr edi, 4 + 00047 41 83 e0 0f and r8d, 15 + +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { + + 0004b 74 65 je SHORT $LN2@stbi__buil + 0004d 42 8d 04 03 lea eax, DWORD PTR [rbx+r8] + 00051 83 f8 09 cmp eax, 9 + 00054 77 5c ja SHORT $LN2@stbi__buil + +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + + 00056 8b cb mov ecx, ebx + 00058 41 8b c2 mov eax, r10d + 0005b d3 e0 shl eax, cl + +; 1527 : int m = 1 << (magbits - 1); + + 0005d ba 01 00 00 00 mov edx, 1 + 00062 25 ff 01 00 00 and eax, 511 ; 000001ffH + 00067 b9 09 00 00 00 mov ecx, 9 + 0006c 41 2b c8 sub ecx, r8d + 0006f d3 f8 sar eax, cl + 00071 41 8d 48 ff lea ecx, DWORD PTR [r8-1] + 00075 d3 e2 shl edx, cl + +; 1528 : if (k < m) k += (~0U << magbits) + 1; + + 00077 3b c2 cmp eax, edx + 00079 7d 13 jge SHORT $LN7@stbi__buil + 0007b 41 8b c8 mov ecx, r8d + 0007e ba 01 00 00 00 mov edx, 1 + 00083 d3 e2 shl edx, cl + 00085 b9 01 00 00 00 mov ecx, 1 + 0008a 2b ca sub ecx, edx + 0008c 03 c1 add eax, ecx +$LN7@stbi__buil: + +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) + + 0008e 8d 88 80 00 00 + 00 lea ecx, DWORD PTR [rax+128] + 00094 81 f9 ff 00 00 + 00 cmp ecx, 255 ; 000000ffH + 0009a 77 16 ja SHORT $LN2@stbi__buil + +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); + + 0009c 66 c1 e0 04 shl ax, 4 + 000a0 66 03 c7 add ax, di + 000a3 66 c1 e0 04 shl ax, 4 + 000a7 66 03 c3 add ax, bx + 000aa 66 41 03 c0 add ax, r8w + 000ae 66 41 89 01 mov WORD PTR [r9], ax +$LN2@stbi__buil: + +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { + + 000b2 41 ff c2 inc r10d + 000b5 49 ff c3 inc r11 + 000b8 49 83 c1 02 add r9, 2 + 000bc 41 81 fa 00 02 + 00 00 cmp r10d, 512 ; 00000200H + 000c3 0f 8c 57 ff ff + ff jl $LL4@stbi__buil + 000c9 48 8b 7c 24 18 mov rdi, QWORD PTR [rsp+24] + 000ce 48 8b 5c 24 10 mov rbx, QWORD PTR [rsp+16] + +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } + + 000d3 48 8b 6c 24 20 mov rbp, QWORD PTR [rsp+32] + 000d8 5e pop rsi + 000d9 c3 ret 0 +stbi__build_fast_ac ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__grow_buffer_unsafe +_TEXT SEGMENT +j$ = 48 +stbi__grow_buffer_unsafe PROC ; COMDAT + +; 1538 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 8b f9 mov rdi, rcx + 0000d 48 89 74 24 30 mov QWORD PTR [rsp+48], rsi +$LL4@stbi__grow: + +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + + 00012 83 bf 2c 48 00 + 00 00 cmp DWORD PTR [rdi+18476], 0 + 00019 74 07 je SHORT $LN10@stbi__grow + 0001b 33 f6 xor esi, esi + 0001d e9 04 01 00 00 jmp $LN8@stbi__grow +$LN10@stbi__grow: + 00022 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00025 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0002c 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00033 73 0f jae SHORT $LN13@stbi__grow + +; 1078 : return *s->img_buffer++; + + 00035 0f b6 08 movzx ecx, BYTE PTR [rax] + 00038 48 ff c0 inc rax + 0003b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00042 eb 26 jmp SHORT $LN12@stbi__grow +$LN13@stbi__grow: + +; 1079 : if (s->read_from_callbacks) { + + 00044 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00048 74 1e je SHORT $LN14@stbi__grow + +; 1080 : stbi__refill_buffer(s); + + 0004a 48 8b cb mov rcx, rbx + 0004d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00052 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00059 0f b6 08 movzx ecx, BYTE PTR [rax] + 0005c 48 ff c0 inc rax + 0005f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00066 eb 02 jmp SHORT $LN12@stbi__grow +$LN14@stbi__grow: + +; 1082 : } +; 1083 : return 0; + + 00068 32 c9 xor cl, cl +$LN12@stbi__grow: + +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + + 0006a 0f b6 f1 movzx esi, cl + +; 1541 : if (b == 0xff) { + + 0006d 81 fe ff 00 00 + 00 cmp esi, 255 ; 000000ffH + 00073 0f 85 ad 00 00 + 00 jne $LN8@stbi__grow + +; 1542 : int c = stbi__get8(j->s); + + 00079 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0007c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00083 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0008a 73 0f jae SHORT $LN17@stbi__grow + +; 1078 : return *s->img_buffer++; + + 0008c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0008f 48 ff c0 inc rax + 00092 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00099 eb 26 jmp SHORT $LN16@stbi__grow +$LN17@stbi__grow: + +; 1079 : if (s->read_from_callbacks) { + + 0009b 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0009f 74 1e je SHORT $LN18@stbi__grow + +; 1080 : stbi__refill_buffer(s); + + 000a1 48 8b cb mov rcx, rbx + 000a4 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000a9 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000b0 0f b6 08 movzx ecx, BYTE PTR [rax] + 000b3 48 ff c0 inc rax + 000b6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000bd eb 02 jmp SHORT $LN16@stbi__grow +$LN18@stbi__grow: + +; 1082 : } +; 1083 : return 0; + + 000bf 32 c9 xor cl, cl +$LN16@stbi__grow: + +; 1542 : int c = stbi__get8(j->s); + + 000c1 0f b6 c1 movzx eax, cl + +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + + 000c4 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 000c9 75 57 jne SHORT $LN6@stbi__grow + 000cb 0f 1f 44 00 00 npad 5 +$LL5@stbi__grow: + 000d0 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000d3 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000da 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000e1 73 0f jae SHORT $LN21@stbi__grow + +; 1078 : return *s->img_buffer++; + + 000e3 0f b6 08 movzx ecx, BYTE PTR [rax] + 000e6 48 ff c0 inc rax + 000e9 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000f0 eb 26 jmp SHORT $LN20@stbi__grow +$LN21@stbi__grow: + +; 1079 : if (s->read_from_callbacks) { + + 000f2 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000f6 74 1e je SHORT $LN22@stbi__grow + +; 1080 : stbi__refill_buffer(s); + + 000f8 48 8b cb mov rcx, rbx + 000fb e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00100 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00107 0f b6 08 movzx ecx, BYTE PTR [rax] + 0010a 48 ff c0 inc rax + 0010d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00114 eb 02 jmp SHORT $LN20@stbi__grow +$LN22@stbi__grow: + +; 1082 : } +; 1083 : return 0; + + 00116 32 c9 xor cl, cl +$LN20@stbi__grow: + +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + + 00118 0f b6 c1 movzx eax, cl + 0011b 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00120 74 ae je SHORT $LL5@stbi__grow +$LN6@stbi__grow: + +; 1544 : if (c != 0) { + + 00122 85 c0 test eax, eax + 00124 75 37 jne SHORT $LN26@stbi__grow +$LN8@stbi__grow: + +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); + + 00126 8b 87 24 48 00 + 00 mov eax, DWORD PTR [rdi+18468] + 0012c b9 18 00 00 00 mov ecx, 24 + 00131 2b c8 sub ecx, eax + +; 1551 : j->code_bits += 8; + + 00133 83 c0 08 add eax, 8 + 00136 d3 e6 shl esi, cl + 00138 09 b7 20 48 00 + 00 or DWORD PTR [rdi+18464], esi + 0013e 89 87 24 48 00 + 00 mov DWORD PTR [rdi+18468], eax + +; 1552 : } while (j->code_bits <= 24); + + 00144 83 f8 18 cmp eax, 24 + 00147 0f 8e c5 fe ff + ff jle $LL4@stbi__grow + 0014d 48 8b 74 24 30 mov rsi, QWORD PTR [rsp+48] + +; 1553 : } + + 00152 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 00157 48 83 c4 20 add rsp, 32 ; 00000020H + 0015b 5f pop rdi + 0015c c3 ret 0 +$LN26@stbi__grow: + 0015d 48 8b 74 24 30 mov rsi, QWORD PTR [rsp+48] + 00162 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 00167 88 87 28 48 00 + 00 mov BYTE PTR [rdi+18472], al + 0016d c7 87 2c 48 00 + 00 01 00 00 00 mov DWORD PTR [rdi+18476], 1 + 00177 48 83 c4 20 add rsp, 32 ; 00000020H + 0017b 5f pop rdi + 0017c c3 ret 0 +stbi__grow_buffer_unsafe ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_huff_decode +_TEXT SEGMENT +j$ = 48 +h$ = 56 +stbi__jpeg_huff_decode PROC ; COMDAT + +; 1560 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 0000a 83 b9 24 48 00 + 00 10 cmp DWORD PTR [rcx+18468], 16 + 00011 48 8b fa mov rdi, rdx + 00014 48 8b d9 mov rbx, rcx + 00017 7d 05 jge SHORT $LN5@stbi__jpeg + 00019 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN5@stbi__jpeg: + +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 0001e 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + 00025 41 8b c1 mov eax, r9d + 00028 48 c1 e8 17 shr rax, 23 + +; 1569 : k = h->fast[c]; + + 0002c 0f b6 0c 38 movzx ecx, BYTE PTR [rax+rdi] + +; 1570 : if (k < 255) { + + 00030 80 f9 ff cmp cl, 255 ; 000000ffH + 00033 73 39 jae SHORT $LN6@stbi__jpeg + +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) + + 00035 8b 83 24 48 00 + 00 mov eax, DWORD PTR [rbx+18468] + 0003b 8b d1 mov edx, ecx + 0003d 0f b6 8c 39 00 + 05 00 00 movzx ecx, BYTE PTR [rcx+rdi+1280] + 00045 3b c8 cmp ecx, eax + 00047 7f 5e jg SHORT $LN12@stbi__jpeg + +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; + + 00049 41 d3 e1 shl r9d, cl + +; 1575 : j->code_bits -= s; + + 0004c 2b c1 sub eax, ecx + 0004e 44 89 8b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r9d + 00055 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax + +; 1576 : return h->values[k]; + + 0005b 0f b6 84 3a 00 + 04 00 00 movzx eax, BYTE PTR [rdx+rdi+1024] + +; 1608 : } + + 00063 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00068 48 83 c4 20 add rsp, 32 ; 00000020H + 0006c 5f pop rdi + 0006d c3 ret 0 +$LN6@stbi__jpeg: + +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; + + 0006e 41 8b c9 mov ecx, r9d + +; 1587 : if (temp < h->maxcode[k]) + + 00071 48 8d 87 2c 06 + 00 00 lea rax, QWORD PTR [rdi+1580] + 00078 c1 e9 10 shr ecx, 16 + 0007b 41 b8 0a 00 00 + 00 mov r8d, 10 + 00081 3b 08 cmp ecx, DWORD PTR [rax] + 00083 72 0b jb SHORT $LN16@stbi__jpeg +$LL4@stbi__jpeg: + +; 1586 : for (k = FAST_BITS + 1; ; ++k) + + 00085 41 ff c0 inc r8d + 00088 48 8d 40 04 lea rax, QWORD PTR [rax+4] + +; 1587 : if (temp < h->maxcode[k]) + + 0008c 3b 08 cmp ecx, DWORD PTR [rax] + 0008e 73 f5 jae SHORT $LL4@stbi__jpeg +$LN16@stbi__jpeg: + +; 1588 : break; +; 1589 : if (k == 17) { + + 00090 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 00097 41 83 f8 11 cmp r8d, 17 + 0009b 75 1a jne SHORT $LN9@stbi__jpeg + +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; + + 0009d 41 8d 42 f0 lea eax, DWORD PTR [r10-16] + 000a1 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax +$LN12@stbi__jpeg: + +; 1608 : } + + 000a7 b8 ff ff ff ff mov eax, -1 + 000ac 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000b1 48 83 c4 20 add rsp, 32 ; 00000020H + 000b5 5f pop rdi + 000b6 c3 ret 0 +$LN9@stbi__jpeg: + +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) + + 000b7 45 3b c2 cmp r8d, r10d + 000ba 7f eb jg SHORT $LN12@stbi__jpeg + +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + + 000bc b9 20 00 00 00 mov ecx, 32 ; 00000020H + 000c1 49 63 c0 movsxd rax, r8d + 000c4 41 2b c8 sub ecx, r8d + 000c7 45 8b d9 mov r11d, r9d + 000ca 41 d3 eb shr r11d, cl + 000cd 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__bmask + 000d4 44 23 1c 81 and r11d, DWORD PTR [rcx+rax*4] + 000d8 44 03 9c 87 4c + 06 00 00 add r11d, DWORD PTR [rdi+rax*4+1612] + +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! + + 000e0 41 81 fb ff 00 + 00 00 cmp r11d, 255 ; 000000ffH + 000e7 77 be ja SHORT $LN12@stbi__jpeg + +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; + + 000e9 45 2b d0 sub r10d, r8d + +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; + + 000ec 49 63 c3 movsxd rax, r11d + 000ef 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 000f6 41 8b c8 mov ecx, r8d + 000f9 41 d3 e1 shl r9d, cl + 000fc 44 89 8b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r9d + 00103 0f b6 84 38 00 + 04 00 00 movzx eax, BYTE PTR [rax+rdi+1024] + +; 1608 : } + + 0010b 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00110 48 83 c4 20 add rsp, 32 ; 00000020H + 00114 5f pop rdi + 00115 c3 ret 0 +stbi__jpeg_huff_decode ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__extend_receive +_TEXT SEGMENT +j$ = 48 +n$ = 56 +stbi__extend_receive PROC ; COMDAT + +; 1616 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 63 fa movsxd rdi, edx + 0000d 48 8b d9 mov rbx, rcx + +; 1617 : unsigned int k; +; 1618 : int sgn; +; 1619 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 00010 39 b9 24 48 00 + 00 cmp DWORD PTR [rcx+18468], edi + 00016 7d 05 jge SHORT $LN2@stbi__exte + 00018 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN2@stbi__exte: + +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 0001d 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 00024 44 3b d7 cmp r10d, edi + 00027 7d 0d jge SHORT $LN3@stbi__exte + 00029 33 c0 xor eax, eax + +; 1628 : } + + 0002b 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00030 48 83 c4 20 add rsp, 32 ; 00000020H + 00034 5f pop rdi + 00035 c3 ret 0 +$LN3@stbi__exte: + +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + + 00036 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; + + 0003d 4c 8d 1d 00 00 + 00 00 lea r11, OFFSET FLAT:__ImageBase + 00044 45 8b c1 mov r8d, r9d + 00047 8b cf mov ecx, edi + 00049 41 d3 c0 rol r8d, cl + +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; + + 0004c 44 2b d7 sub r10d, edi + 0004f 48 8d 0c bd 00 + 00 00 00 lea rcx, QWORD PTR [rdi*4] + 00057 41 c1 e9 1f shr r9d, 31 + 0005b 42 8b 94 19 00 + 00 00 00 mov edx, DWORD PTR stbi__bmask[rcx+r11] + +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); + + 00063 41 ff c9 dec r9d + 00066 8b c2 mov eax, edx + 00068 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 0006f f7 d0 not eax + 00071 41 23 d0 and edx, r8d + 00074 41 23 c0 and eax, r8d + 00077 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + 0007d 42 8b 84 19 00 + 00 00 00 mov eax, DWORD PTR stbi__jbias[rcx+r11] + +; 1628 : } + + 00085 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0008a 41 23 c1 and eax, r9d + 0008d 03 c2 add eax, edx + 0008f 48 83 c4 20 add rsp, 32 ; 00000020H + 00093 5f pop rdi + 00094 c3 ret 0 +stbi__extend_receive ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_get_bits +_TEXT SEGMENT +j$ = 48 +n$ = 56 +stbi__jpeg_get_bits PROC ; COMDAT + +; 1632 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 63 fa movsxd rdi, edx + 0000d 48 8b d9 mov rbx, rcx + +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 00010 39 b9 24 48 00 + 00 cmp DWORD PTR [rcx+18468], edi + 00016 7d 05 jge SHORT $LN2@stbi__jpeg + 00018 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN2@stbi__jpeg: + +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 0001d 44 8b 83 24 48 + 00 00 mov r8d, DWORD PTR [rbx+18468] + 00024 44 3b c7 cmp r8d, edi + 00027 7d 0d jge SHORT $LN3@stbi__jpeg + 00029 33 c0 xor eax, eax + +; 1640 : return k; +; 1641 : } + + 0002b 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00030 48 83 c4 20 add rsp, 32 ; 00000020H + 00034 5f pop rdi + 00035 c3 ret 0 +$LN3@stbi__jpeg: + +; 1636 : k = stbi_lrot(j->code_buffer, n); + + 00036 8b 93 20 48 00 + 00 mov edx, DWORD PTR [rbx+18464] + 0003c 8b cf mov ecx, edi + 0003e d3 c2 rol edx, cl + +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; + + 00040 44 2b c7 sub r8d, edi + 00043 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__bmask + 0004a 44 89 83 24 48 + 00 00 mov DWORD PTR [rbx+18468], r8d + 00051 8b 04 b9 mov eax, DWORD PTR [rcx+rdi*4] + 00054 8b c8 mov ecx, eax + 00056 f7 d1 not ecx + 00058 23 ca and ecx, edx + 0005a 89 8b 20 48 00 + 00 mov DWORD PTR [rbx+18464], ecx + 00060 23 c2 and eax, edx + +; 1640 : return k; +; 1641 : } + + 00062 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00067 48 83 c4 20 add rsp, 32 ; 00000020H + 0006b 5f pop rdi + 0006c c3 ret 0 +stbi__jpeg_get_bits ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_get_bit +_TEXT SEGMENT +j$ = 48 +stbi__jpeg_get_bit PROC ; COMDAT + +; 1644 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + + 00006 83 b9 24 48 00 + 00 01 cmp DWORD PTR [rcx+18468], 1 + 0000d 48 8b d9 mov rbx, rcx + 00010 7d 05 jge SHORT $LN2@stbi__jpeg + 00012 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN2@stbi__jpeg: + +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + + 00017 8b 93 24 48 00 + 00 mov edx, DWORD PTR [rbx+18468] + 0001d 83 fa 01 cmp edx, 1 + 00020 7d 08 jge SHORT $LN3@stbi__jpeg + 00022 33 c0 xor eax, eax + +; 1652 : } + + 00024 48 83 c4 20 add rsp, 32 ; 00000020H + 00028 5b pop rbx + 00029 c3 ret 0 +$LN3@stbi__jpeg: + +; 1648 : k = j->code_buffer; + + 0002a 8b 83 20 48 00 + 00 mov eax, DWORD PTR [rbx+18464] + +; 1649 : j->code_buffer <<= 1; + + 00030 8d 0c 00 lea ecx, DWORD PTR [rax+rax] + +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; + + 00033 25 00 00 00 80 and eax, -2147483648 ; 80000000H + 00038 89 8b 20 48 00 + 00 mov DWORD PTR [rbx+18464], ecx + 0003e 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 00041 89 8b 24 48 00 + 00 mov DWORD PTR [rbx+18468], ecx + +; 1652 : } + + 00047 48 83 c4 20 add rsp, 32 ; 00000020H + 0004b 5b pop rbx + 0004c c3 ret 0 +stbi__jpeg_get_bit ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_decode_block +_TEXT SEGMENT +j$ = 80 +data$ = 88 +hdc$ = 96 +hac$ = 104 +fac$ = 112 +b$ = 120 +dequant$ = 128 +stbi__jpeg_decode_block PROC ; COMDAT + +; 1673 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 57 push rdi + 00004 41 56 push r14 + 00006 41 57 push r15 + 00008 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 0000c 83 b9 24 48 00 + 00 10 cmp DWORD PTR [rcx+18468], 16 + 00013 4d 8b f1 mov r14, r9 + 00016 49 8b f8 mov rdi, r8 + 00019 4c 8b fa mov r15, rdx + 0001c 48 8b d9 mov rbx, rcx + 0001f 7d 05 jge SHORT $LN5@stbi__jpeg + 00021 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN5@stbi__jpeg: + +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 00026 83 bb 24 48 00 + 00 10 cmp DWORD PTR [rbx+18468], 16 + 0002d 7d 08 jge SHORT $LN25@stbi__jpeg + 0002f 48 8b cb mov rcx, rbx + 00032 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN25@stbi__jpeg: + +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 00037 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1570 : if (k < 255) { + + 0003e 48 8d 2d 00 00 + 00 00 lea rbp, OFFSET FLAT:__ImageBase + 00045 41 8b c1 mov eax, r9d + 00048 48 c1 e8 17 shr rax, 23 + 0004c 0f b6 0c 38 movzx ecx, BYTE PTR [rax+rdi] + 00050 80 f9 ff cmp cl, 255 ; 000000ffH + 00053 73 33 jae SHORT $LN26@stbi__jpeg + +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) + + 00055 8b 83 24 48 00 + 00 mov eax, DWORD PTR [rbx+18468] + 0005b 8b d1 mov edx, ecx + 0005d 0f b6 8c 39 00 + 05 00 00 movzx ecx, BYTE PTR [rcx+rdi+1280] + 00065 3b c8 cmp ecx, eax + 00067 7f 59 jg SHORT $LN7@stbi__jpeg + +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; + + 00069 41 d3 e1 shl r9d, cl + +; 1575 : j->code_bits -= s; + + 0006c 2b c1 sub eax, ecx + 0006e 44 89 8b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r9d + 00075 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax + +; 1576 : return h->values[k]; + + 0007b 0f b6 84 3a 00 + 04 00 00 movzx eax, BYTE PTR [rdx+rdi+1024] + 00083 e9 bc 00 00 00 jmp $LN21@stbi__jpeg +$LN26@stbi__jpeg: + +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; + + 00088 41 8b c9 mov ecx, r9d + +; 1587 : if (temp < h->maxcode[k]) + + 0008b 48 8d 87 2c 06 + 00 00 lea rax, QWORD PTR [rdi+1580] + 00092 c1 e9 10 shr ecx, 16 + 00095 41 b8 0a 00 00 + 00 mov r8d, 10 + 0009b 3b 08 cmp ecx, DWORD PTR [rax] + 0009d 72 0c jb SHORT $LN80@stbi__jpeg + 0009f 90 npad 1 +$LL24@stbi__jpeg: + +; 1586 : for (k = FAST_BITS + 1; ; ++k) + + 000a0 41 ff c0 inc r8d + 000a3 48 8d 40 04 lea rax, QWORD PTR [rax+4] + +; 1587 : if (temp < h->maxcode[k]) + + 000a7 3b 08 cmp ecx, DWORD PTR [rax] + 000a9 73 f5 jae SHORT $LL24@stbi__jpeg +$LN80@stbi__jpeg: + +; 1588 : break; +; 1589 : if (k == 17) { + + 000ab 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 000b2 41 83 f8 11 cmp r8d, 17 + 000b6 75 3b jne SHORT $LN29@stbi__jpeg + +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; + + 000b8 41 8d 42 f0 lea eax, DWORD PTR [r10-16] + 000bc 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax +$LN7@stbi__jpeg: + +; 431 : stbi__g_failure_reason = str; + + 000c2 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000c8 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000d1 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000d6 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000da 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 000e1 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); + + 000e5 33 c0 xor eax, eax + +; 1727 : } + + 000e7 48 83 c4 20 add rsp, 32 ; 00000020H + 000eb 41 5f pop r15 + 000ed 41 5e pop r14 + 000ef 5f pop rdi + 000f0 5d pop rbp + 000f1 5b pop rbx + 000f2 c3 ret 0 +$LN29@stbi__jpeg: + +; 1595 : if (k > j->code_bits) + + 000f3 45 3b c2 cmp r8d, r10d + 000f6 7f ca jg SHORT $LN7@stbi__jpeg + +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + + 000f8 49 63 c0 movsxd rax, r8d + 000fb b9 20 00 00 00 mov ecx, 32 ; 00000020H + 00100 41 2b c8 sub ecx, r8d + 00103 45 8b d9 mov r11d, r9d + 00106 41 d3 eb shr r11d, cl + 00109 44 23 9c 85 00 + 00 00 00 and r11d, DWORD PTR stbi__bmask[rbp+rax*4] + 00111 44 03 9c 87 4c + 06 00 00 add r11d, DWORD PTR [rdi+rax*4+1612] + +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! + + 00119 41 81 fb ff 00 + 00 00 cmp r11d, 255 ; 000000ffH + 00120 77 a0 ja SHORT $LN7@stbi__jpeg + +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; + + 00122 45 2b d0 sub r10d, r8d + +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; + + 00125 49 63 c3 movsxd rax, r11d + 00128 41 8b c8 mov ecx, r8d + 0012b 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 00132 41 d3 e1 shl r9d, cl + 00135 44 89 8b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r9d + 0013c 0f b6 84 38 00 + 04 00 00 movzx eax, BYTE PTR [rax+rdi+1024] +$LN21@stbi__jpeg: + +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); + + 00144 0f b6 f8 movzx edi, al + 00147 83 ff 0f cmp edi, 15 + 0014a 0f 87 72 ff ff + ff ja $LN7@stbi__jpeg + +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); + + 00150 0f 57 c0 xorps xmm0, xmm0 + 00153 41 0f 11 07 movups XMMWORD PTR [r15], xmm0 + 00157 41 0f 11 47 10 movups XMMWORD PTR [r15+16], xmm0 + 0015c 41 0f 11 47 20 movups XMMWORD PTR [r15+32], xmm0 + 00161 41 0f 11 47 30 movups XMMWORD PTR [r15+48], xmm0 + 00166 41 0f 11 47 40 movups XMMWORD PTR [r15+64], xmm0 + 0016b 41 0f 11 47 50 movups XMMWORD PTR [r15+80], xmm0 + 00170 41 0f 11 47 60 movups XMMWORD PTR [r15+96], xmm0 + 00175 41 0f 11 47 70 movups XMMWORD PTR [r15+112], xmm0 + +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; + + 0017a 84 c0 test al, al + 0017c 74 68 je SHORT $LN19@stbi__jpeg + +; 1619 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 0017e 39 bb 24 48 00 + 00 cmp DWORD PTR [rbx+18468], edi + 00184 7d 08 jge SHORT $LN37@stbi__jpeg + 00186 48 8b cb mov rcx, rbx + 00189 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN37@stbi__jpeg: + +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 0018e 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 00195 44 3b d7 cmp r10d, edi + 00198 7c 4c jl SHORT $LN19@stbi__jpeg + +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + + 0019a 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1623 : k = stbi_lrot(j->code_buffer, n); + + 001a1 8b cf mov ecx, edi + 001a3 45 8b c1 mov r8d, r9d + +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; + + 001a6 44 2b d7 sub r10d, edi + 001a9 41 d3 c0 rol r8d, cl + 001ac 48 8d 0c bd 00 + 00 00 00 lea rcx, QWORD PTR [rdi*4] + 001b4 8b 94 29 00 00 + 00 00 mov edx, DWORD PTR stbi__bmask[rcx+rbp] + 001bb 8b c2 mov eax, edx + 001bd 41 c1 e9 1f shr r9d, 31 + 001c1 f7 d0 not eax + +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); + + 001c3 41 ff c9 dec r9d + 001c6 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 001cd 44 23 8c 29 00 + 00 00 00 and r9d, DWORD PTR stbi__jbias[rcx+rbp] + 001d5 41 23 c0 and eax, r8d + 001d8 41 23 d0 and edx, r8d + 001db 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + 001e1 44 03 ca add r9d, edx + +; 1628 : } + + 001e4 eb 03 jmp SHORT $LN20@stbi__jpeg +$LN19@stbi__jpeg: + +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 001e6 45 33 c9 xor r9d, r9d +$LN20@stbi__jpeg: + 001e9 48 63 44 24 78 movsxd rax, DWORD PTR b$[rsp] + 001ee 4c 8d 04 40 lea r8, QWORD PTR [rax+rax*2] + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 001f2 41 8b c1 mov eax, r9d + +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 001f5 49 c1 e0 05 shl r8, 5 + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 001f9 f7 d0 not eax + +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 001fb 41 8b 94 18 b8 + 46 00 00 mov edx, DWORD PTR [r8+rbx+18104] + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 00203 8b ca mov ecx, edx + 00205 f7 d1 not ecx + 00207 33 c8 xor ecx, eax + 00209 78 5e js SHORT $LN8@stbi__jpeg + +; 524 : if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + + 0020b 85 d2 test edx, edx + 0020d 79 16 jns SHORT $LN42@stbi__jpeg + 0020f 45 85 c9 test r9d, r9d + 00212 79 11 jns SHORT $LN42@stbi__jpeg + 00214 33 c9 xor ecx, ecx + 00216 b8 00 00 00 80 mov eax, -2147483648 ; ffffffff80000000H + 0021b 41 2b c1 sub eax, r9d + 0021e 3b d0 cmp edx, eax + 00220 0f 9d c1 setge cl + 00223 eb 0f jmp SHORT $LN40@stbi__jpeg +$LN42@stbi__jpeg: + +; 525 : return a <= INT_MAX - b; + + 00225 33 c9 xor ecx, ecx + 00227 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0022c 41 2b c1 sub eax, r9d + 0022f 3b d0 cmp edx, eax + 00231 0f 9e c1 setle cl +$LN40@stbi__jpeg: + +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 00234 85 c9 test ecx, ecx + 00236 75 31 jne SHORT $LN8@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 00238 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0023e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00247 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0024c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00250 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09IFDKCGFO@bad?5delta@ + 00257 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 0025b 33 c0 xor eax, eax + +; 1727 : } + + 0025d 48 83 c4 20 add rsp, 32 ; 00000020H + 00261 41 5f pop r15 + 00263 41 5e pop r14 + 00265 5f pop rdi + 00266 5d pop rbp + 00267 5b pop rbx + 00268 c3 ret 0 +$LN8@stbi__jpeg: + 00269 4c 89 64 24 58 mov QWORD PTR [rsp+88], r12 + +; 1686 : dc = j->img_comp[b].dc_pred + diff; + + 0026e 42 8d 0c 0a lea ecx, DWORD PTR [rdx+r9] + +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00272 4c 8b a4 24 80 + 00 00 00 mov r12, QWORD PTR dequant$[rsp] + 0027a 41 89 8c 18 b8 + 46 00 00 mov DWORD PTR [r8+rbx+18104], ecx + 00282 45 0f bf 04 24 movsx r8d, WORD PTR [r12] + +; 531 : if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + + 00287 41 8d 40 01 lea eax, DWORD PTR [r8+1] + 0028b 66 83 f8 01 cmp ax, 1 + 0028f 0f 86 81 00 00 + 00 jbe $LN48@stbi__jpeg + +; 532 : if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid + + 00295 0f b7 c1 movzx eax, cx + 00298 44 0f bf c9 movsx r9d, cx + 0029c 66 41 33 c0 xor ax, r8w + 002a0 45 8b d0 mov r10d, r8d + 002a3 66 0f ba e0 0f bt ax, 15 + 002a8 72 13 jb SHORT $LN49@stbi__jpeg + 002aa b8 ff 7f 00 00 mov eax, 32767 ; 00007fffH + 002af 99 cdq + 002b0 41 f7 fa idiv r10d + 002b3 33 d2 xor edx, edx + 002b5 44 3b c8 cmp r9d, eax + 002b8 0f 9e c2 setle dl + 002bb eb 1f jmp SHORT $LN46@stbi__jpeg +$LN49@stbi__jpeg: + +; 533 : if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + + 002bd b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H + 002c2 99 cdq + 002c3 41 f7 fa idiv r10d + 002c6 33 d2 xor edx, edx + 002c8 66 45 85 c0 test r8w, r8w + 002cc 79 08 jns SHORT $LN50@stbi__jpeg + 002ce 44 3b c8 cmp r9d, eax + 002d1 0f 9e c2 setle dl + 002d4 eb 06 jmp SHORT $LN46@stbi__jpeg +$LN50@stbi__jpeg: + +; 534 : return a >= SHRT_MIN / b; + + 002d6 44 3b c8 cmp r9d, eax + 002d9 0f 9d c2 setge dl +$LN46@stbi__jpeg: + +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 002dc 85 d2 test edx, edx + 002de 75 36 jne SHORT $LN48@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 002e0 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 002e6 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 002ef 4c 8b 64 24 58 mov r12, QWORD PTR [rsp+88] + 002f4 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 002f9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 002fd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ + 00304 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00308 33 c0 xor eax, eax + +; 1727 : } + + 0030a 48 83 c4 20 add rsp, 32 ; 00000020H + 0030e 41 5f pop r15 + 00310 41 5e pop r14 + 00312 5f pop rdi + 00313 5d pop rbp + 00314 5b pop rbx + 00315 c3 ret 0 +$LN48@stbi__jpeg: + 00316 4c 89 6c 24 60 mov QWORD PTR [rsp+96], r13 + +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; + + 0031b bf 01 00 00 00 mov edi, 1 + 00320 4c 8b 6c 24 70 mov r13, QWORD PTR fac$[rsp] + 00325 0f bf c9 movsx ecx, cx + 00328 41 0f af c8 imul ecx, r8d + 0032c 48 89 74 24 50 mov QWORD PTR [rsp+80], rsi + 00331 66 41 89 0f mov WORD PTR [r15], cx +$LL4@stbi__jpeg: + +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 00335 83 bb 24 48 00 + 00 10 cmp DWORD PTR [rbx+18468], 16 + 0033c 7d 08 jge SHORT $LN10@stbi__jpeg + 0033e 48 8b cb mov rcx, rbx + 00341 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN10@stbi__jpeg: + +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 00346 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1698 : r = fac[c]; + + 0034d 8b 93 24 48 00 + 00 mov edx, DWORD PTR [rbx+18468] + 00353 41 8b c1 mov eax, r9d + 00356 48 c1 e8 17 shr rax, 23 + 0035a 45 0f bf 44 45 + 00 movsx r8d, WORD PTR [r13+rax*2] + +; 1699 : if (r) { // fast-AC path + + 00360 45 85 c0 test r8d, r8d + 00363 74 48 je SHORT $LN11@stbi__jpeg + +; 1700 : k += (r >> 4) & 15; // run + + 00365 41 8b c0 mov eax, r8d + +; 1701 : s = r & 15; // combined length + + 00368 41 8b c8 mov ecx, r8d + 0036b c1 f8 04 sar eax, 4 + 0036e 83 e1 0f and ecx, 15 + 00371 83 e0 0f and eax, 15 + 00374 03 f8 add edi, eax + +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + + 00376 3b ca cmp ecx, edx + 00378 0f 8f f9 01 00 + 00 jg $LN83@stbi__jpeg + +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; + + 0037e 2b d1 sub edx, ecx + +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; + + 00380 48 63 c7 movsxd rax, edi + 00383 89 93 24 48 00 + 00 mov DWORD PTR [rbx+18468], edx + 00389 ff c7 inc edi + 0038b 41 d3 e1 shl r9d, cl + 0038e 44 89 8b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r9d + +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); + + 00395 0f b6 94 28 00 + 00 00 00 movzx edx, BYTE PTR stbi__jpeg_dezigzag[rax+rbp] + 0039d 48 03 d2 add rdx, rdx + 003a0 41 c1 f8 08 sar r8d, 8 + 003a4 41 0f bf c0 movsx eax, r8w + +; 1708 : } + + 003a8 e9 8a 01 00 00 jmp $LN137@stbi__jpeg +$LN11@stbi__jpeg: + +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 003ad 83 fa 10 cmp edx, 16 + 003b0 7d 08 jge SHORT $LN60@stbi__jpeg + 003b2 48 8b cb mov rcx, rbx + 003b5 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN60@stbi__jpeg: + +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 003ba 44 8b 9b 20 48 + 00 00 mov r11d, DWORD PTR [rbx+18464] + 003c1 41 8b c3 mov eax, r11d + 003c4 48 c1 e8 17 shr rax, 23 + +; 1569 : k = h->fast[c]; + + 003c8 42 0f b6 0c 30 movzx ecx, BYTE PTR [rax+r14] + +; 1570 : if (k < 255) { + + 003cd 80 f9 ff cmp cl, 255 ; 000000ffH + 003d0 73 23 jae SHORT $LN61@stbi__jpeg + +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) + + 003d2 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 003d9 8b c1 mov eax, ecx + 003db 42 0f b6 8c 31 + 00 05 00 00 movzx ecx, BYTE PTR [rcx+r14+1280] + 003e4 41 3b ca cmp ecx, r10d + 003e7 0f 8f 8a 01 00 + 00 jg $LN83@stbi__jpeg + +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; + + 003ed 41 d3 e3 shl r11d, cl + +; 1575 : j->code_bits -= s; + + 003f0 44 2b d1 sub r10d, ecx + +; 1576 : return h->values[k]; + + 003f3 eb 7c jmp SHORT $LN138@stbi__jpeg +$LN61@stbi__jpeg: + +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; + + 003f5 41 8b cb mov ecx, r11d + +; 1587 : if (temp < h->maxcode[k]) + + 003f8 49 8d 86 2c 06 + 00 00 lea rax, QWORD PTR [r14+1580] + 003ff c1 e9 10 shr ecx, 16 + 00402 41 b8 0a 00 00 + 00 mov r8d, 10 + 00408 45 8b c8 mov r9d, r8d + 0040b 3b 08 cmp ecx, DWORD PTR [rax] + 0040d 72 0f jb SHORT $LN81@stbi__jpeg + 0040f 90 npad 1 +$LL59@stbi__jpeg: + +; 1586 : for (k = FAST_BITS + 1; ; ++k) + + 00410 41 ff c0 inc r8d + 00413 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00417 49 ff c1 inc r9 + +; 1587 : if (temp < h->maxcode[k]) + + 0041a 3b 08 cmp ecx, DWORD PTR [rax] + 0041c 73 f2 jae SHORT $LL59@stbi__jpeg +$LN81@stbi__jpeg: + +; 1588 : break; +; 1589 : if (k == 17) { + + 0041e 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 00425 41 83 f8 11 cmp r8d, 17 + 00429 0f 84 3e 01 00 + 00 je $LN95@stbi__jpeg + +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) + + 0042f 45 3b c2 cmp r8d, r10d + 00432 0f 8f 3f 01 00 + 00 jg $LN83@stbi__jpeg + +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + + 00438 b9 20 00 00 00 mov ecx, 32 ; 00000020H + 0043d 41 8b d3 mov edx, r11d + 00440 41 2b c8 sub ecx, r8d + 00443 d3 ea shr edx, cl + 00445 42 23 94 8d 00 + 00 00 00 and edx, DWORD PTR stbi__bmask[rbp+r9*4] + 0044d 47 8b 8c 8e 4c + 06 00 00 mov r9d, DWORD PTR [r14+r9*4+1612] + 00455 44 03 ca add r9d, edx + +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! + + 00458 41 81 f9 ff 00 + 00 00 cmp r9d, 255 ; 000000ffH + 0045f 0f 87 12 01 00 + 00 ja $LN83@stbi__jpeg + +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; + + 00465 45 2b d0 sub r10d, r8d + +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; + + 00468 49 63 c1 movsxd rax, r9d + 0046b 41 8b c8 mov ecx, r8d + 0046e 41 d3 e3 shl r11d, cl +$LN138@stbi__jpeg: + +; 1712 : s = rs & 15; + + 00471 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 00478 44 89 9b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r11d + 0047f 42 0f b6 84 30 + 00 04 00 00 movzx eax, BYTE PTR [rax+r14+1024] + 00488 8b f0 mov esi, eax + 0048a 83 e6 0f and esi, 15 + +; 1714 : if (s == 0) { + + 0048d 75 13 jne SHORT $LN15@stbi__jpeg + +; 1715 : if (rs != 0xf0) break; // end block + + 0048f 3d f0 00 00 00 cmp eax, 240 ; 000000f0H + 00494 0f 85 b3 00 00 + 00 jne $LN3@stbi__jpeg + +; 1716 : k += 16; + + 0049a 83 c7 10 add edi, 16 + +; 1717 : } + + 0049d e9 a2 00 00 00 jmp $LN2@stbi__jpeg +$LN15@stbi__jpeg: + +; 1713 : r = rs >> 4; + + 004a2 c1 e8 04 shr eax, 4 + +; 1718 : else { +; 1719 : k += r; + + 004a5 03 f8 add edi, eax + +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; + + 004a7 48 63 c7 movsxd rax, edi + 004aa ff c7 inc edi + 004ac 0f b6 ac 28 00 + 00 00 00 movzx ebp, BYTE PTR stbi__jpeg_dezigzag[rax+rbp] + +; 1619 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 004b4 44 3b d6 cmp r10d, esi + 004b7 7d 08 jge SHORT $LN72@stbi__jpeg + 004b9 48 8b cb mov rcx, rbx + 004bc e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN72@stbi__jpeg: + +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 004c1 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 004c8 44 3b d6 cmp r10d, esi + 004cb 7d 05 jge SHORT $LN73@stbi__jpeg + 004cd 45 33 c9 xor r9d, r9d + 004d0 eb 52 jmp SHORT $LN71@stbi__jpeg +$LN73@stbi__jpeg: + +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + + 004d2 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; + + 004d9 4c 8d 1d 00 00 + 00 00 lea r11, OFFSET FLAT:__ImageBase + 004e0 45 8b c1 mov r8d, r9d + 004e3 8b ce mov ecx, esi + 004e5 41 d3 c0 rol r8d, cl + +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; + + 004e8 44 2b d6 sub r10d, esi + 004eb 41 c1 e9 1f shr r9d, 31 + 004ef 48 8d 0c b5 00 + 00 00 00 lea rcx, QWORD PTR [rsi*4] + 004f7 42 8b 94 19 00 + 00 00 00 mov edx, DWORD PTR stbi__bmask[rcx+r11] + +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); + + 004ff 41 ff c9 dec r9d + 00502 46 23 8c 19 00 + 00 00 00 and r9d, DWORD PTR stbi__jbias[rcx+r11] + 0050a 8b c2 mov eax, edx + 0050c f7 d0 not eax + 0050e 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 00515 41 23 c0 and eax, r8d + 00518 41 23 d0 and edx, r8d + 0051b 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + 00521 44 03 ca add r9d, edx +$LN71@stbi__jpeg: + +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); + + 00524 48 8d 14 6d 00 + 00 00 00 lea rdx, QWORD PTR [rbp*2] + 0052c 41 0f bf c1 movsx eax, r9w + 00530 48 8d 2d 00 00 + 00 00 lea rbp, OFFSET FLAT:__ImageBase +$LN137@stbi__jpeg: + +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); + + 00537 42 0f bf 0c 22 movsx ecx, WORD PTR [rdx+r12] + 0053c 0f af c8 imul ecx, eax + 0053f 66 42 89 0c 3a mov WORD PTR [rdx+r15], cx +$LN2@stbi__jpeg: + 00544 83 ff 40 cmp edi, 64 ; 00000040H + 00547 0f 8c e8 fd ff + ff jl $LL4@stbi__jpeg +$LN3@stbi__jpeg: + +; 1726 : return 1; + + 0054d b8 01 00 00 00 mov eax, 1 +$LN136@stbi__jpeg: + 00552 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 00557 4c 8b 6c 24 60 mov r13, QWORD PTR [rsp+96] + 0055c 4c 8b 64 24 58 mov r12, QWORD PTR [rsp+88] + +; 1727 : } + + 00561 48 83 c4 20 add rsp, 32 ; 00000020H + 00565 41 5f pop r15 + 00567 41 5e pop r14 + 00569 5f pop rdi + 0056a 5d pop rbp + 0056b 5b pop rbx + 0056c c3 ret 0 +$LN95@stbi__jpeg: + +; 1591 : j->code_bits -= 16; + + 0056d 41 8d 42 f0 lea eax, DWORD PTR [r10-16] + 00571 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax +$LN83@stbi__jpeg: + +; 431 : stbi__g_failure_reason = str; + + 00577 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0057d 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00586 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0058b 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0058f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 00596 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); + + 0059a 33 c0 xor eax, eax + 0059c eb b4 jmp SHORT $LN136@stbi__jpeg +stbi__jpeg_decode_block ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_decode_block_prog_dc +_TEXT SEGMENT +j$ = 64 +data$ = 72 +hdc$ = 80 +b$ = 88 +stbi__jpeg_decode_block_prog_dc PROC ; COMDAT + +; 1730 : { + + 00000 48 89 5c 24 18 mov QWORD PTR [rsp+24], rbx + 00005 56 push rsi + 00006 57 push rdi + 00007 41 56 push r14 + 00009 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 0000d 83 b9 38 48 00 + 00 00 cmp DWORD PTR [rcx+18488], 0 + 00014 49 8b f8 mov rdi, r8 + 00017 4d 63 f1 movsxd r14, r9d + 0001a 48 8b f2 mov rsi, rdx + 0001d 48 8b d9 mov rbx, rcx + 00020 74 33 je SHORT $LN2@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 00022 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00028 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00031 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00036 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0003a 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ + 00041 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00045 33 c0 xor eax, eax + +; 1756 : } + + 00047 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 0004c 48 83 c4 20 add rsp, 32 ; 00000020H + 00050 41 5e pop r14 + 00052 5f pop rdi + 00053 5e pop rsi + 00054 c3 ret 0 +$LN2@stbi__jpeg: + +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 00055 83 b9 24 48 00 + 00 10 cmp DWORD PTR [rcx+18468], 16 + 0005c 7d 05 jge SHORT $LN3@stbi__jpeg + 0005e e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN3@stbi__jpeg: + +; 1736 : +; 1737 : if (j->succ_high == 0) { + + 00063 83 bb 3c 48 00 + 00 00 cmp DWORD PTR [rbx+18492], 0 + 0006a 48 89 6c 24 40 mov QWORD PTR [rsp+64], rbp + 0006f 4c 89 7c 24 48 mov QWORD PTR [rsp+72], r15 + 00074 0f 85 98 02 00 + 00 jne $LN4@stbi__jpeg + +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now + + 0007a 0f 57 c0 xorps xmm0, xmm0 + 0007d 0f 11 06 movups XMMWORD PTR [rsi], xmm0 + 00080 0f 11 46 10 movups XMMWORD PTR [rsi+16], xmm0 + 00084 0f 11 46 20 movups XMMWORD PTR [rsi+32], xmm0 + 00088 0f 11 46 30 movups XMMWORD PTR [rsi+48], xmm0 + 0008c 0f 11 46 40 movups XMMWORD PTR [rsi+64], xmm0 + 00090 0f 11 46 50 movups XMMWORD PTR [rsi+80], xmm0 + 00094 0f 11 46 60 movups XMMWORD PTR [rsi+96], xmm0 + 00098 0f 11 46 70 movups XMMWORD PTR [rsi+112], xmm0 + +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 0009c 83 bb 24 48 00 + 00 10 cmp DWORD PTR [rbx+18468], 16 + 000a3 7d 08 jge SHORT $LN20@stbi__jpeg + 000a5 48 8b cb mov rcx, rbx + 000a8 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN20@stbi__jpeg: + +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 000ad 44 8b 93 20 48 + 00 00 mov r10d, DWORD PTR [rbx+18464] + +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { + + 000b4 4c 8d 3d 00 00 + 00 00 lea r15, OFFSET FLAT:__ImageBase + 000bb 41 8b c2 mov eax, r10d + 000be 48 c1 e8 17 shr rax, 23 + 000c2 0f b6 0c 38 movzx ecx, BYTE PTR [rax+rdi] + 000c6 80 f9 ff cmp cl, 255 ; 000000ffH + 000c9 73 21 jae SHORT $LN21@stbi__jpeg + +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) + + 000cb 44 8b 8b 24 48 + 00 00 mov r9d, DWORD PTR [rbx+18468] + 000d2 8b c1 mov eax, ecx + 000d4 0f b6 8c 39 00 + 05 00 00 movzx ecx, BYTE PTR [rcx+rdi+1280] + 000dc 41 3b c9 cmp ecx, r9d + 000df 7f 44 jg SHORT $LN7@stbi__jpeg + +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; + + 000e1 41 d3 e2 shl r10d, cl + +; 1575 : j->code_bits -= s; + + 000e4 44 2b c9 sub r9d, ecx + +; 1576 : return h->values[k]; + + 000e7 e9 9e 00 00 00 jmp $LN86@stbi__jpeg +$LN21@stbi__jpeg: + +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; + + 000ec 41 8b ca mov ecx, r10d + +; 1587 : if (temp < h->maxcode[k]) + + 000ef 48 8d 87 2c 06 + 00 00 lea rax, QWORD PTR [rdi+1580] + 000f6 c1 e9 10 shr ecx, 16 + 000f9 41 b8 0a 00 00 + 00 mov r8d, 10 + 000ff 3b 08 cmp ecx, DWORD PTR [rax] + 00101 72 0b jb SHORT $LN54@stbi__jpeg +$LL19@stbi__jpeg: + +; 1586 : for (k = FAST_BITS + 1; ; ++k) + + 00103 41 ff c0 inc r8d + 00106 48 8d 40 04 lea rax, QWORD PTR [rax+4] + +; 1587 : if (temp < h->maxcode[k]) + + 0010a 3b 08 cmp ecx, DWORD PTR [rax] + 0010c 73 f5 jae SHORT $LL19@stbi__jpeg +$LN54@stbi__jpeg: + +; 1588 : break; +; 1589 : if (k == 17) { + + 0010e 44 8b 8b 24 48 + 00 00 mov r9d, DWORD PTR [rbx+18468] + 00115 41 83 f8 11 cmp r8d, 17 + 00119 75 34 jne SHORT $LN24@stbi__jpeg + +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; + + 0011b 41 8d 41 f0 lea eax, DWORD PTR [r9-16] + 0011f 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax +$LN7@stbi__jpeg: + +; 431 : stbi__g_failure_reason = str; + + 00125 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0012b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00134 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00139 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0013d 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ + 00144 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00148 33 c0 xor eax, eax + 0014a e9 14 02 00 00 jmp $LN85@stbi__jpeg +$LN24@stbi__jpeg: + +; 1595 : if (k > j->code_bits) + + 0014f 45 3b c1 cmp r8d, r9d + 00152 7f d1 jg SHORT $LN7@stbi__jpeg + +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + + 00154 49 63 c0 movsxd rax, r8d + 00157 b9 20 00 00 00 mov ecx, 32 ; 00000020H + 0015c 41 2b c8 sub ecx, r8d + 0015f 45 8b da mov r11d, r10d + 00162 41 d3 eb shr r11d, cl + 00165 45 23 9c 87 00 + 00 00 00 and r11d, DWORD PTR stbi__bmask[r15+rax*4] + 0016d 44 03 9c 87 4c + 06 00 00 add r11d, DWORD PTR [rdi+rax*4+1612] + +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! + + 00175 41 81 fb ff 00 + 00 00 cmp r11d, 255 ; 000000ffH + 0017c 77 a7 ja SHORT $LN7@stbi__jpeg + +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; + + 0017e 45 2b c8 sub r9d, r8d + +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; + + 00181 49 63 c3 movsxd rax, r11d + 00184 41 8b c8 mov ecx, r8d + 00187 41 d3 e2 shl r10d, cl +$LN86@stbi__jpeg: + +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 0018a 44 89 8b 24 48 + 00 00 mov DWORD PTR [rbx+18468], r9d + 00191 44 89 93 20 48 + 00 00 mov DWORD PTR [rbx+18464], r10d + 00198 0f b6 84 38 00 + 04 00 00 movzx eax, BYTE PTR [rax+rdi+1024] + 001a0 0f b6 e8 movzx ebp, al + 001a3 83 fd 0f cmp ebp, 15 + 001a6 0f 87 79 ff ff + ff ja $LN7@stbi__jpeg + +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; + + 001ac 33 ff xor edi, edi + 001ae 84 c0 test al, al + 001b0 74 66 je SHORT $LN12@stbi__jpeg + +; 1619 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 001b2 44 3b cd cmp r9d, ebp + 001b5 7d 08 jge SHORT $LN32@stbi__jpeg + 001b7 48 8b cb mov rcx, rbx + 001ba e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN32@stbi__jpeg: + +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 001bf 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 001c6 44 3b d5 cmp r10d, ebp + 001c9 7c 4d jl SHORT $LN12@stbi__jpeg + +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + + 001cb 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1623 : k = stbi_lrot(j->code_buffer, n); + + 001d2 8b cd mov ecx, ebp + 001d4 45 8b c1 mov r8d, r9d + +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; + + 001d7 44 2b d5 sub r10d, ebp + 001da 41 d3 c0 rol r8d, cl + 001dd 48 8d 0c ad 00 + 00 00 00 lea rcx, QWORD PTR [rbp*4] + 001e5 42 8b 94 39 00 + 00 00 00 mov edx, DWORD PTR stbi__bmask[rcx+r15] + 001ed 8b c2 mov eax, edx + 001ef 41 c1 e9 1f shr r9d, 31 + 001f3 f7 d0 not eax + +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); + + 001f5 41 ff c9 dec r9d + 001f8 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 001ff 46 23 8c 39 00 + 00 00 00 and r9d, DWORD PTR stbi__jbias[rcx+r15] + 00207 41 23 c0 and eax, r8d + 0020a 41 23 d0 and edx, r8d + 0020d 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + 00213 44 03 ca add r9d, edx + +; 1628 : } + + 00216 eb 03 jmp SHORT $LN13@stbi__jpeg +$LN12@stbi__jpeg: + +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 00218 44 8b cf mov r9d, edi +$LN13@stbi__jpeg: + 0021b 4f 8d 14 76 lea r10, QWORD PTR [r14+r14*2] + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 0021f 41 8b c9 mov ecx, r9d + +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 00222 49 c1 e2 05 shl r10, 5 + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 00226 f7 d1 not ecx + +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 00228 41 8b 94 1a b8 + 46 00 00 mov edx, DWORD PTR [r10+rbx+18104] + +; 523 : if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + + 00230 8b c2 mov eax, edx + 00232 f7 d0 not eax + 00234 33 c8 xor ecx, eax + 00236 78 57 js SHORT $LN8@stbi__jpeg + +; 524 : if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + + 00238 85 d2 test edx, edx + 0023a 79 16 jns SHORT $LN37@stbi__jpeg + 0023c 45 85 c9 test r9d, r9d + 0023f 79 11 jns SHORT $LN37@stbi__jpeg + 00241 b8 00 00 00 80 mov eax, -2147483648 ; ffffffff80000000H + 00246 8b cf mov ecx, edi + 00248 41 2b c1 sub eax, r9d + 0024b 3b d0 cmp edx, eax + 0024d 0f 9d c1 setge cl + 00250 eb 0f jmp SHORT $LN35@stbi__jpeg +$LN37@stbi__jpeg: + +; 525 : return a <= INT_MAX - b; + + 00252 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00257 8b cf mov ecx, edi + 00259 41 2b c1 sub eax, r9d + 0025c 3b d0 cmp edx, eax + 0025e 0f 9e c1 setle cl +$LN35@stbi__jpeg: + +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 00261 85 c9 test ecx, ecx + 00263 75 2a jne SHORT $LN8@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 00265 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0026b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00274 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00279 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0027d 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09IFDKCGFO@bad?5delta@ + 00284 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + + 00288 33 c0 xor eax, eax + 0028a e9 d4 00 00 00 jmp $LN85@stbi__jpeg +$LN8@stbi__jpeg: + +; 1745 : dc = j->img_comp[b].dc_pred + diff; + + 0028f 46 8d 04 0a lea r8d, DWORD PTR [rdx+r9] + +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00293 41 b9 01 00 00 + 00 mov r9d, 1 + 00299 45 89 84 1a b8 + 46 00 00 mov DWORD PTR [r10+rbx+18104], r8d + 002a1 8b 8b 40 48 00 + 00 mov ecx, DWORD PTR [rbx+18496] + 002a7 66 41 d3 e1 shl r9w, cl + +; 531 : if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + + 002ab 41 8d 41 01 lea eax, DWORD PTR [r9+1] + 002af 66 83 f8 01 cmp ax, 1 + 002b3 76 4d jbe SHORT $LN43@stbi__jpeg + +; 532 : if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid + + 002b5 41 0f b7 c1 movzx eax, r9w + 002b9 45 0f bf d1 movsx r10d, r9w + 002bd 66 41 33 c0 xor ax, r8w + 002c1 41 0f bf c8 movsx ecx, r8w + 002c5 66 0f ba e0 0f bt ax, 15 + 002ca 72 11 jb SHORT $LN44@stbi__jpeg + 002cc b8 ff 7f 00 00 mov eax, 32767 ; 00007fffH + 002d1 99 cdq + 002d2 41 f7 fa idiv r10d + 002d5 3b c8 cmp ecx, eax + 002d7 40 0f 9e c7 setle dil + 002db eb 1d jmp SHORT $LN41@stbi__jpeg +$LN44@stbi__jpeg: + +; 533 : if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + + 002dd b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H + 002e2 99 cdq + 002e3 41 f7 fa idiv r10d + 002e6 66 45 85 c9 test r9w, r9w + 002ea 79 08 jns SHORT $LN45@stbi__jpeg + 002ec 3b c8 cmp ecx, eax + 002ee 40 0f 9e c7 setle dil + 002f2 eb 06 jmp SHORT $LN41@stbi__jpeg +$LN45@stbi__jpeg: + +; 534 : return a >= SHRT_MIN / b; + + 002f4 3b c8 cmp ecx, eax + 002f6 40 0f 9d c7 setge dil +$LN41@stbi__jpeg: + +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 002fa 85 ff test edi, edi + 002fc 0f 84 23 fe ff + ff je $LN7@stbi__jpeg +$LN43@stbi__jpeg: + +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); + + 00302 41 0f bf c0 movsx eax, r8w + 00306 41 0f bf c9 movsx ecx, r9w + 0030a 0f af c8 imul ecx, eax + 0030d 66 89 0e mov WORD PTR [rsi], cx + +; 1749 : } + + 00310 eb 4c jmp SHORT $LN10@stbi__jpeg +$LN4@stbi__jpeg: + +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + + 00312 83 bb 24 48 00 + 00 01 cmp DWORD PTR [rbx+18468], 1 + 00319 7d 08 jge SHORT $LN50@stbi__jpeg + 0031b 48 8b cb mov rcx, rbx + 0031e e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN50@stbi__jpeg: + +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + + 00323 44 8b 83 24 48 + 00 00 mov r8d, DWORD PTR [rbx+18468] + 0032a 41 83 f8 01 cmp r8d, 1 + 0032e 7c 2e jl SHORT $LN10@stbi__jpeg + +; 1648 : k = j->code_buffer; + + 00330 8b 93 20 48 00 + 00 mov edx, DWORD PTR [rbx+18464] + +; 1649 : j->code_buffer <<= 1; + + 00336 8d 0c 12 lea ecx, DWORD PTR [rdx+rdx] + 00339 89 8b 20 48 00 + 00 mov DWORD PTR [rbx+18464], ecx + +; 1650 : --j->code_bits; + + 0033f 41 8d 48 ff lea ecx, DWORD PTR [r8-1] + 00343 89 8b 24 48 00 + 00 mov DWORD PTR [rbx+18468], ecx + +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) + + 00349 85 d2 test edx, edx + 0034b 79 11 jns SHORT $LN10@stbi__jpeg + +; 1753 : data[0] += (short)(1 << j->succ_low); + + 0034d 8b 8b 40 48 00 + 00 mov ecx, DWORD PTR [rbx+18496] + 00353 ba 01 00 00 00 mov edx, 1 + 00358 66 d3 e2 shl dx, cl + 0035b 66 01 16 add WORD PTR [rsi], dx +$LN10@stbi__jpeg: + +; 1754 : } +; 1755 : return 1; + + 0035e b8 01 00 00 00 mov eax, 1 +$LN85@stbi__jpeg: + 00363 48 8b 6c 24 40 mov rbp, QWORD PTR [rsp+64] + 00368 4c 8b 7c 24 48 mov r15, QWORD PTR [rsp+72] + +; 1756 : } + + 0036d 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 00372 48 83 c4 20 add rsp, 32 ; 00000020H + 00376 41 5e pop r14 + 00378 5f pop rdi + 00379 5e pop rsi + 0037a c3 ret 0 +stbi__jpeg_decode_block_prog_dc ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_decode_block_prog_ac +_TEXT SEGMENT +j$ = 96 +data$ = 104 +hac$ = 112 +fac$ = 120 +stbi__jpeg_decode_block_prog_ac PROC ; COMDAT + +; 1761 : { + + 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000a 53 push rbx + 0000b 56 push rsi + 0000c 57 push rdi + 0000d 41 54 push r12 + 0000f 41 57 push r15 + 00011 48 83 ec 30 sub rsp, 48 ; 00000030H + +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00015 48 63 b9 34 48 + 00 00 movsxd rdi, DWORD PTR [rcx+18484] + 0001c 4d 8b f9 mov r15, r9 + 0001f 49 8b f0 mov rsi, r8 + 00022 4c 8b e2 mov r12, rdx + 00025 48 8b d9 mov rbx, rcx + 00028 85 ff test edi, edi + 0002a 75 31 jne SHORT $LN13@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 0002c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00032 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0003b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00040 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00044 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ + 0004b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 0004f 33 c0 xor eax, eax + +; 1885 : } + + 00051 48 83 c4 30 add rsp, 48 ; 00000030H + 00055 41 5f pop r15 + 00057 41 5c pop r12 + 00059 5f pop rdi + 0005a 5e pop rsi + 0005b 5b pop rbx + 0005c c3 ret 0 +$LN13@stbi__jpeg: + +; 1764 : +; 1765 : if (j->succ_high == 0) { + + 0005d 83 b9 3c 48 00 + 00 00 cmp DWORD PTR [rcx+18492], 0 + 00064 8b 81 44 48 00 + 00 mov eax, DWORD PTR [rcx+18500] + 0006a 48 89 6c 24 60 mov QWORD PTR [rsp+96], rbp + 0006f 4c 89 6c 24 28 mov QWORD PTR [rsp+40], r13 + 00074 4c 89 74 24 20 mov QWORD PTR [rsp+32], r14 + 00079 44 8b b1 40 48 + 00 00 mov r14d, DWORD PTR [rcx+18496] + 00080 0f 85 e1 02 00 + 00 jne $LN14@stbi__jpeg + +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { + + 00086 85 c0 test eax, eax + 00088 74 12 je SHORT $LN16@stbi__jpeg + +; 1769 : --j->eob_run; + + 0008a ff c8 dec eax + 0008c 89 81 44 48 00 + 00 mov DWORD PTR [rcx+18500], eax + +; 1770 : return 1; + + 00092 b8 01 00 00 00 mov eax, 1 + 00097 e9 4c 06 00 00 jmp $LN209@stbi__jpeg +$LN16@stbi__jpeg: + +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; + + 0009c 4c 8d 2d 00 00 + 00 00 lea r13, OFFSET FLAT:__ImageBase +$LL4@stbi__jpeg: + +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 000a3 83 bb 24 48 00 + 00 10 cmp DWORD PTR [rbx+18468], 16 + 000aa 7d 08 jge SHORT $LN17@stbi__jpeg + 000ac 48 8b cb mov rcx, rbx + 000af e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN17@stbi__jpeg: + +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 000b4 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1779 : r = fac[c]; + + 000bb 44 8b 83 24 48 + 00 00 mov r8d, DWORD PTR [rbx+18468] + 000c2 41 8b c1 mov eax, r9d + 000c5 48 c1 e8 17 shr rax, 23 + 000c9 41 0f bf 14 47 movsx edx, WORD PTR [r15+rax*2] + +; 1780 : if (r) { // fast-AC path + + 000ce 85 d2 test edx, edx + 000d0 74 5b je SHORT $LN18@stbi__jpeg + +; 1781 : k += (r >> 4) & 15; // run + + 000d2 8b c2 mov eax, edx + +; 1782 : s = r & 15; // combined length + + 000d4 8b ca mov ecx, edx + 000d6 c1 f8 04 sar eax, 4 + 000d9 83 e1 0f and ecx, 15 + 000dc 83 e0 0f and eax, 15 + 000df 03 f8 add edi, eax + +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + + 000e1 41 3b c8 cmp ecx, r8d + 000e4 0f 8f d9 05 00 + 00 jg $LN149@stbi__jpeg + +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; + + 000ea 44 2b c1 sub r8d, ecx + 000ed 41 d3 e1 shl r9d, cl + +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); + + 000f0 41 8b ce mov ecx, r14d + 000f3 44 89 83 24 48 + 00 00 mov DWORD PTR [rbx+18468], r8d + 000fa b8 01 00 00 00 mov eax, 1 + 000ff 4c 63 c7 movsxd r8, edi + 00102 66 d3 e0 shl ax, cl + 00105 ff c7 inc edi + 00107 c1 fa 08 sar edx, 8 + 0010a 0f bf c8 movsx ecx, ax + 0010d 43 0f b6 84 28 + 00 00 00 00 movzx eax, BYTE PTR stbi__jpeg_dezigzag[r8+r13] + 00116 0f bf d2 movsx edx, dx + 00119 0f af d1 imul edx, ecx + 0011c 44 89 8b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r9d + 00123 66 41 89 14 44 mov WORD PTR [r12+rax*2], dx + +; 1788 : } + + 00128 e9 8d 01 00 00 jmp $LN2@stbi__jpeg +$LN18@stbi__jpeg: + +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 0012d 41 83 f8 10 cmp r8d, 16 + 00131 7d 08 jge SHORT $LN58@stbi__jpeg + 00133 48 8b cb mov rcx, rbx + 00136 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN58@stbi__jpeg: + +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 0013b 44 8b 9b 20 48 + 00 00 mov r11d, DWORD PTR [rbx+18464] + 00142 41 8b c3 mov eax, r11d + 00145 48 c1 e8 17 shr rax, 23 + +; 1569 : k = h->fast[c]; + + 00149 0f b6 0c 30 movzx ecx, BYTE PTR [rax+rsi] + +; 1570 : if (k < 255) { + + 0014d 80 f9 ff cmp cl, 255 ; 000000ffH + 00150 73 22 jae SHORT $LN59@stbi__jpeg + +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) + + 00152 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 00159 8b c1 mov eax, ecx + 0015b 0f b6 8c 31 00 + 05 00 00 movzx ecx, BYTE PTR [rcx+rsi+1280] + 00163 41 3b ca cmp ecx, r10d + 00166 0f 8f 57 05 00 + 00 jg $LN149@stbi__jpeg + +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; + + 0016c 41 d3 e3 shl r11d, cl + +; 1575 : j->code_bits -= s; + + 0016f 44 2b d1 sub r10d, ecx + +; 1576 : return h->values[k]; + + 00172 eb 7d jmp SHORT $LN210@stbi__jpeg +$LN59@stbi__jpeg: + +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; + + 00174 41 8b cb mov ecx, r11d + +; 1587 : if (temp < h->maxcode[k]) + + 00177 48 8d 86 2c 06 + 00 00 lea rax, QWORD PTR [rsi+1580] + 0017e c1 e9 10 shr ecx, 16 + 00181 41 b8 0a 00 00 + 00 mov r8d, 10 + 00187 45 8b c8 mov r9d, r8d + 0018a 3b 08 cmp ecx, DWORD PTR [rax] + 0018c 72 10 jb SHORT $LN119@stbi__jpeg + 0018e 66 90 npad 2 +$LL57@stbi__jpeg: + +; 1586 : for (k = FAST_BITS + 1; ; ++k) + + 00190 41 ff c0 inc r8d + 00193 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00197 49 ff c1 inc r9 + +; 1587 : if (temp < h->maxcode[k]) + + 0019a 3b 08 cmp ecx, DWORD PTR [rax] + 0019c 73 f2 jae SHORT $LL57@stbi__jpeg +$LN119@stbi__jpeg: + +; 1588 : break; +; 1589 : if (k == 17) { + + 0019e 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 001a5 41 83 f8 11 cmp r8d, 17 + 001a9 0f 84 af 01 00 + 00 je $LN145@stbi__jpeg + +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) + + 001af 45 3b c2 cmp r8d, r10d + 001b2 0f 8f 0b 05 00 + 00 jg $LN149@stbi__jpeg + +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + + 001b8 b9 20 00 00 00 mov ecx, 32 ; 00000020H + 001bd 41 8b d3 mov edx, r11d + 001c0 41 2b c8 sub ecx, r8d + 001c3 d3 ea shr edx, cl + 001c5 43 23 94 8d 00 + 00 00 00 and edx, DWORD PTR stbi__bmask[r13+r9*4] + 001cd 46 8b 8c 8e 4c + 06 00 00 mov r9d, DWORD PTR [rsi+r9*4+1612] + 001d5 44 03 ca add r9d, edx + +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! + + 001d8 41 81 f9 ff 00 + 00 00 cmp r9d, 255 ; 000000ffH + 001df 0f 87 de 04 00 + 00 ja $LN149@stbi__jpeg + +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; + + 001e5 45 2b d0 sub r10d, r8d + +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; + + 001e8 49 63 c1 movsxd rax, r9d + 001eb 41 8b c8 mov ecx, r8d + 001ee 41 d3 e3 shl r11d, cl +$LN210@stbi__jpeg: + +; 1792 : s = rs & 15; + + 001f1 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 001f8 44 89 9b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r11d + 001ff 0f b6 b4 30 00 + 04 00 00 movzx esi, BYTE PTR [rax+rsi+1024] + 00207 8b ee mov ebp, esi + +; 1793 : r = rs >> 4; + + 00209 c1 ee 04 shr esi, 4 + 0020c 83 e5 0f and ebp, 15 + +; 1794 : if (s == 0) { + + 0020f 75 11 jne SHORT $LN22@stbi__jpeg + +; 1795 : if (r < 15) { + + 00211 83 fe 0f cmp esi, 15 + 00214 0f 82 b6 00 00 + 00 jb $LN122@stbi__jpeg + +; 1800 : break; +; 1801 : } +; 1802 : k += 16; + + 0021a 83 c7 10 add edi, 16 + +; 1803 : } + + 0021d e9 93 00 00 00 jmp $LN211@stbi__jpeg +$LN22@stbi__jpeg: + +; 1804 : else { +; 1805 : k += r; + + 00222 03 fe add edi, esi + +; 1806 : zig = stbi__jpeg_dezigzag[k++]; + + 00224 48 63 c7 movsxd rax, edi + 00227 ff c7 inc edi + 00229 42 0f b6 b4 28 + 00 00 00 00 movzx esi, BYTE PTR stbi__jpeg_dezigzag[rax+r13] + +; 1619 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 00232 44 3b d5 cmp r10d, ebp + 00235 7d 08 jge SHORT $LN74@stbi__jpeg + 00237 48 8b cb mov rcx, rbx + 0023a e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN74@stbi__jpeg: + +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 0023f 44 8b 93 24 48 + 00 00 mov r10d, DWORD PTR [rbx+18468] + 00246 44 3b d5 cmp r10d, ebp + 00249 7d 05 jge SHORT $LN75@stbi__jpeg + 0024b 45 33 c9 xor r9d, r9d + 0024e eb 4b jmp SHORT $LN73@stbi__jpeg +$LN75@stbi__jpeg: + +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + + 00250 44 8b 8b 20 48 + 00 00 mov r9d, DWORD PTR [rbx+18464] + +; 1623 : k = stbi_lrot(j->code_buffer, n); + + 00257 8b cd mov ecx, ebp + 00259 45 8b c1 mov r8d, r9d + +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; + + 0025c 44 2b d5 sub r10d, ebp + 0025f 41 d3 c0 rol r8d, cl + 00262 48 8d 0c ad 00 + 00 00 00 lea rcx, QWORD PTR [rbp*4] + 0026a 42 8b 94 29 00 + 00 00 00 mov edx, DWORD PTR stbi__bmask[rcx+r13] + 00272 8b c2 mov eax, edx + 00274 41 c1 e9 1f shr r9d, 31 + 00278 f7 d0 not eax + +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); + + 0027a 41 ff c9 dec r9d + 0027d 44 89 93 24 48 + 00 00 mov DWORD PTR [rbx+18468], r10d + 00284 46 23 8c 29 00 + 00 00 00 and r9d, DWORD PTR stbi__jbias[rcx+r13] + 0028c 41 23 c0 and eax, r8d + 0028f 41 23 d0 and edx, r8d + 00292 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + 00298 44 03 ca add r9d, edx +$LN73@stbi__jpeg: + +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); + + 0029b 41 8b ce mov ecx, r14d + 0029e 41 0f bf c1 movsx eax, r9w + 002a2 ba 01 00 00 00 mov edx, 1 + 002a7 66 d3 e2 shl dx, cl + 002aa 0f bf ca movsx ecx, dx + 002ad 0f af c8 imul ecx, eax + 002b0 66 41 89 0c 74 mov WORD PTR [r12+rsi*2], cx +$LN211@stbi__jpeg: + +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); + + 002b5 48 8b 74 24 70 mov rsi, QWORD PTR hac$[rsp] +$LN2@stbi__jpeg: + 002ba 3b bb 38 48 00 + 00 cmp edi, DWORD PTR [rbx+18488] + 002c0 0f 8e dd fd ff + ff jle $LL4@stbi__jpeg + +; 1882 : } +; 1883 : } +; 1884 : return 1; + + 002c6 b8 01 00 00 00 mov eax, 1 + 002cb e9 18 04 00 00 jmp $LN209@stbi__jpeg +$LN122@stbi__jpeg: + +; 1796 : j->eob_run = (1 << r); + + 002d0 8b ce mov ecx, esi + 002d2 41 b8 01 00 00 + 00 mov r8d, 1 + 002d8 41 d3 e0 shl r8d, cl + 002db 44 89 83 44 48 + 00 00 mov DWORD PTR [rbx+18500], r8d + +; 1797 : if (r) + + 002e2 85 f6 test esi, esi + 002e4 74 64 je SHORT $LN25@stbi__jpeg + +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 002e6 44 3b d6 cmp r10d, esi + 002e9 7d 0f jge SHORT $LN70@stbi__jpeg + 002eb 48 8b cb mov rcx, rbx + 002ee e8 00 00 00 00 call stbi__grow_buffer_unsafe + 002f3 44 8b 83 44 48 + 00 00 mov r8d, DWORD PTR [rbx+18500] +$LN70@stbi__jpeg: + +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 002fa 44 8b 8b 24 48 + 00 00 mov r9d, DWORD PTR [rbx+18468] + 00301 44 3b ce cmp r9d, esi + 00304 7d 17 jge SHORT $LN71@stbi__jpeg + 00306 33 c9 xor ecx, ecx + +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); + + 00308 44 03 c1 add r8d, ecx + +; 1799 : --j->eob_run; + + 0030b 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 0030f 89 83 44 48 00 + 00 mov DWORD PTR [rbx+18500], eax + +; 1882 : } +; 1883 : } +; 1884 : return 1; + + 00315 8d 41 01 lea eax, QWORD PTR [rcx+1] + 00318 e9 cb 03 00 00 jmp $LN209@stbi__jpeg +$LN71@stbi__jpeg: + +; 1636 : k = stbi_lrot(j->code_buffer, n); + + 0031d 8b 93 20 48 00 + 00 mov edx, DWORD PTR [rbx+18464] + 00323 8b ce mov ecx, esi + 00325 d3 c2 rol edx, cl + +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; + + 00327 44 2b ce sub r9d, esi + 0032a 41 8b 8c b5 00 + 00 00 00 mov ecx, DWORD PTR stbi__bmask[r13+rsi*4] + 00332 8b c1 mov eax, ecx + 00334 f7 d0 not eax + 00336 44 89 8b 24 48 + 00 00 mov DWORD PTR [rbx+18468], r9d + 0033d 23 c2 and eax, edx + 0033f 23 ca and ecx, edx + 00341 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); + + 00347 44 03 c1 add r8d, ecx +$LN25@stbi__jpeg: + +; 1799 : --j->eob_run; + + 0034a 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 0034e 89 83 44 48 00 + 00 mov DWORD PTR [rbx+18500], eax + +; 1882 : } +; 1883 : } +; 1884 : return 1; + + 00354 b8 01 00 00 00 mov eax, 1 + 00359 e9 8a 03 00 00 jmp $LN209@stbi__jpeg +$LN145@stbi__jpeg: + +; 1591 : j->code_bits -= 16; + + 0035e 41 8d 42 f0 lea eax, DWORD PTR [r10-16] + +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); + + 00362 e9 56 03 00 00 jmp $LN212@stbi__jpeg +$LN14@stbi__jpeg: + +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); + + 00367 bd 01 00 00 00 mov ebp, 1 + 0036c 41 8b ce mov ecx, r14d + 0036f 66 d3 e5 shl bp, cl + +; 1816 : +; 1817 : if (j->eob_run) { + + 00372 85 c0 test eax, eax + 00374 0f 84 9d 00 00 + 00 je $LN26@stbi__jpeg + +; 1818 : --j->eob_run; + + 0037a ff c8 dec eax + 0037c 89 83 44 48 00 + 00 mov DWORD PTR [rbx+18500], eax + +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { + + 00382 3b bb 38 48 00 + 00 cmp edi, DWORD PTR [rbx+18488] + 00388 0f 8f 24 03 00 + 00 jg $LN9@stbi__jpeg + 0038e 4c 8d 2d 00 00 + 00 00 lea r13, OFFSET FLAT:__ImageBase + 00395 4d 8d b5 00 00 + 00 00 lea r14, QWORD PTR stbi__jpeg_dezigzag[r13] + 0039c 4c 03 f7 add r14, rdi + 0039f 90 npad 1 +$LL7@stbi__jpeg: + +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; + + 003a0 41 0f b6 06 movzx eax, BYTE PTR [r14] + +; 1821 : if (*p != 0) + + 003a4 66 41 83 3c 44 + 00 cmp WORD PTR [r12+rax*2], 0 + 003aa 49 8d 34 44 lea rsi, QWORD PTR [r12+rax*2] + 003ae 74 50 je SHORT $LN5@stbi__jpeg + +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + + 003b0 83 bb 24 48 00 + 00 01 cmp DWORD PTR [rbx+18468], 1 + 003b7 7d 08 jge SHORT $LN78@stbi__jpeg + 003b9 48 8b cb mov rcx, rbx + 003bc e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN78@stbi__jpeg: + +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + + 003c1 8b 93 24 48 00 + 00 mov edx, DWORD PTR [rbx+18468] + 003c7 83 fa 01 cmp edx, 1 + 003ca 7c 34 jl SHORT $LN5@stbi__jpeg + +; 1648 : k = j->code_buffer; + + 003cc 8b 8b 20 48 00 + 00 mov ecx, DWORD PTR [rbx+18464] + +; 1649 : j->code_buffer <<= 1; + + 003d2 8d 04 09 lea eax, DWORD PTR [rcx+rcx] + 003d5 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + +; 1650 : --j->code_bits; + + 003db 8d 42 ff lea eax, DWORD PTR [rdx-1] + 003de 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax + +; 1822 : if (stbi__jpeg_get_bit(j)) + + 003e4 85 c9 test ecx, ecx + 003e6 79 18 jns SHORT $LN5@stbi__jpeg + +; 1823 : if ((*p & bit) == 0) { + + 003e8 0f b7 06 movzx eax, WORD PTR [rsi] + 003eb 66 85 c5 test ax, bp + 003ee 75 10 jne SHORT $LN5@stbi__jpeg + +; 1824 : if (*p > 0) + + 003f0 66 85 c0 test ax, ax + 003f3 7e 05 jle SHORT $LN31@stbi__jpeg + +; 1825 : *p += bit; + + 003f5 66 03 c5 add ax, bp + 003f8 eb 03 jmp SHORT $LN213@stbi__jpeg +$LN31@stbi__jpeg: + +; 1826 : else +; 1827 : *p -= bit; + + 003fa 66 2b c5 sub ax, bp +$LN213@stbi__jpeg: + +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { + + 003fd 66 89 06 mov WORD PTR [rsi], ax +$LN5@stbi__jpeg: + 00400 ff c7 inc edi + 00402 49 ff c6 inc r14 + 00405 3b bb 38 48 00 + 00 cmp edi, DWORD PTR [rbx+18488] + 0040b 7e 93 jle SHORT $LL7@stbi__jpeg + +; 1882 : } +; 1883 : } +; 1884 : return 1; + + 0040d b8 01 00 00 00 mov eax, 1 + 00412 e9 d1 02 00 00 jmp $LN209@stbi__jpeg +$LN26@stbi__jpeg: + +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; + + 00417 4c 8b e7 mov r12, rdi + 0041a 4c 8d 2d 00 00 + 00 00 lea r13, OFFSET FLAT:__ImageBase + 00421 45 33 f6 xor r14d, r14d +$LL10@stbi__jpeg: + +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + 00424 83 bb 24 48 00 + 00 10 cmp DWORD PTR [rbx+18468], 16 + 0042b 7d 08 jge SHORT $LN85@stbi__jpeg + 0042d 48 8b cb mov rcx, rbx + 00430 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN85@stbi__jpeg: + +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 00435 8b 93 20 48 00 + 00 mov edx, DWORD PTR [rbx+18464] + 0043b 8b c2 mov eax, edx + 0043d 48 c1 e8 17 shr rax, 23 + +; 1569 : k = h->fast[c]; + + 00441 0f b6 0c 30 movzx ecx, BYTE PTR [rax+rsi] + +; 1570 : if (k < 255) { + + 00445 80 f9 ff cmp cl, 255 ; 000000ffH + 00448 73 2a jae SHORT $LN86@stbi__jpeg + +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) + + 0044a 44 8b 8b 24 48 + 00 00 mov r9d, DWORD PTR [rbx+18468] + 00451 8b c1 mov eax, ecx + 00453 0f b6 8c 31 00 + 05 00 00 movzx ecx, BYTE PTR [rcx+rsi+1280] + 0045b 41 3b c9 cmp ecx, r9d + 0045e 0f 8f 5f 02 00 + 00 jg $LN149@stbi__jpeg + +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; + + 00464 d3 e2 shl edx, cl + 00466 89 93 20 48 00 + 00 mov DWORD PTR [rbx+18464], edx + +; 1575 : j->code_bits -= s; + + 0046c 44 2b c9 sub r9d, ecx + +; 1576 : return h->values[k]; + + 0046f e9 8b 00 00 00 jmp $LN214@stbi__jpeg +$LN86@stbi__jpeg: + +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; + + 00474 c1 ea 10 shr edx, 16 + +; 1587 : if (temp < h->maxcode[k]) + + 00477 48 8d 86 2c 06 + 00 00 lea rax, QWORD PTR [rsi+1580] + 0047e 41 b8 0a 00 00 + 00 mov r8d, 10 + 00484 45 8b d0 mov r10d, r8d + 00487 3b 10 cmp edx, DWORD PTR [rax] + 00489 72 13 jb SHORT $LN123@stbi__jpeg + 0048b 0f 1f 44 00 00 npad 5 +$LL84@stbi__jpeg: + +; 1586 : for (k = FAST_BITS + 1; ; ++k) + + 00490 41 ff c0 inc r8d + 00493 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00497 49 ff c2 inc r10 + +; 1587 : if (temp < h->maxcode[k]) + + 0049a 3b 10 cmp edx, DWORD PTR [rax] + 0049c 73 f2 jae SHORT $LL84@stbi__jpeg +$LN123@stbi__jpeg: + +; 1588 : break; +; 1589 : if (k == 17) { + + 0049e 44 8b 8b 24 48 + 00 00 mov r9d, DWORD PTR [rbx+18468] + 004a5 41 83 f8 11 cmp r8d, 17 + 004a9 0f 84 0a 02 00 + 00 je $LN148@stbi__jpeg + +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) + + 004af 45 3b c1 cmp r8d, r9d + 004b2 0f 8f 0b 02 00 + 00 jg $LN149@stbi__jpeg + +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + + 004b8 44 8b 9b 20 48 + 00 00 mov r11d, DWORD PTR [rbx+18464] + 004bf b9 20 00 00 00 mov ecx, 32 ; 00000020H + 004c4 41 2b c8 sub ecx, r8d + 004c7 41 8b d3 mov edx, r11d + 004ca d3 ea shr edx, cl + 004cc 43 23 94 95 00 + 00 00 00 and edx, DWORD PTR stbi__bmask[r13+r10*4] + 004d4 46 8b 94 96 4c + 06 00 00 mov r10d, DWORD PTR [rsi+r10*4+1612] + 004dc 44 03 d2 add r10d, edx + +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! + + 004df 41 81 fa ff 00 + 00 00 cmp r10d, 255 ; 000000ffH + 004e6 0f 87 d7 01 00 + 00 ja $LN149@stbi__jpeg + +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; + + 004ec 45 2b c8 sub r9d, r8d + +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; + + 004ef 49 63 c2 movsxd rax, r10d + 004f2 41 8b c8 mov ecx, r8d + 004f5 41 d3 e3 shl r11d, cl + 004f8 44 89 9b 20 48 + 00 00 mov DWORD PTR [rbx+18464], r11d +$LN214@stbi__jpeg: + +; 1837 : s = rs & 15; + + 004ff 44 89 8b 24 48 + 00 00 mov DWORD PTR [rbx+18468], r9d + 00506 0f b6 b4 30 00 + 04 00 00 movzx esi, BYTE PTR [rax+rsi+1024] + 0050e 44 8b fe mov r15d, esi + +; 1838 : r = rs >> 4; + + 00511 c1 ee 04 shr esi, 4 + 00514 41 83 e7 0f and r15d, 15 + +; 1839 : if (s == 0) { + + 00518 0f 85 94 00 00 + 00 jne $LN34@stbi__jpeg + +; 1840 : if (r < 15) { + + 0051e 83 fe 0f cmp esi, 15 + 00521 0f 83 d0 00 00 + 00 jae $LN116@stbi__jpeg + +; 1841 : j->eob_run = (1 << r) - 1; + + 00527 8b ce mov ecx, esi + 00529 41 ba 01 00 00 + 00 mov r10d, 1 + 0052f 41 d3 e2 shl r10d, cl + 00532 41 ff ca dec r10d + 00535 44 89 93 44 48 + 00 00 mov DWORD PTR [rbx+18500], r10d + +; 1842 : if (r) + + 0053c 85 f6 test esi, esi + 0053e 74 6b je SHORT $LN150@stbi__jpeg + +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + + 00540 44 3b ce cmp r9d, esi + 00543 7d 0f jge SHORT $LN97@stbi__jpeg + 00545 48 8b cb mov rcx, rbx + 00548 e8 00 00 00 00 call stbi__grow_buffer_unsafe + 0054d 44 8b 93 44 48 + 00 00 mov r10d, DWORD PTR [rbx+18500] +$LN97@stbi__jpeg: + +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + 00554 44 8b 83 24 48 + 00 00 mov r8d, DWORD PTR [rbx+18468] + 0055b 44 3b c6 cmp r8d, esi + 0055e 7d 17 jge SHORT $LN98@stbi__jpeg + 00560 41 8b ce mov ecx, r14d + +; 1844 : r = 64; // force end of block + + 00563 be 40 00 00 00 mov esi, 64 ; 00000040H + 00568 41 8d 04 0a lea eax, DWORD PTR [r10+rcx] + 0056c 89 83 44 48 00 + 00 mov DWORD PTR [rbx+18500], eax + +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } + + 00572 e9 80 00 00 00 jmp $LN116@stbi__jpeg +$LN98@stbi__jpeg: + +; 1636 : k = stbi_lrot(j->code_buffer, n); + + 00577 8b 93 20 48 00 + 00 mov edx, DWORD PTR [rbx+18464] + 0057d 8b ce mov ecx, esi + 0057f d3 c2 rol edx, cl + +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; + + 00581 44 2b c6 sub r8d, esi + 00584 41 8b 8c b5 00 + 00 00 00 mov ecx, DWORD PTR stbi__bmask[r13+rsi*4] + 0058c 8b c1 mov eax, ecx + 0058e f7 d0 not eax + 00590 44 89 83 24 48 + 00 00 mov DWORD PTR [rbx+18468], r8d + 00597 23 c2 and eax, edx + 00599 23 ca and ecx, edx + 0059b 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); + + 005a1 41 8d 04 0a lea eax, DWORD PTR [r10+rcx] + 005a5 89 83 44 48 00 + 00 mov DWORD PTR [rbx+18500], eax +$LN150@stbi__jpeg: + +; 1844 : r = 64; // force end of block + + 005ab be 40 00 00 00 mov esi, 64 ; 00000040H + +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } + + 005b0 eb 45 jmp SHORT $LN116@stbi__jpeg +$LN34@stbi__jpeg: + +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + + 005b2 41 83 ff 01 cmp r15d, 1 + 005b6 0f 85 07 01 00 + 00 jne $LN149@stbi__jpeg + +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + + 005bc 45 3b cf cmp r9d, r15d + 005bf 7d 08 jge SHORT $LN103@stbi__jpeg + 005c1 48 8b cb mov rcx, rbx + 005c4 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN103@stbi__jpeg: + +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + + 005c9 8b 93 24 48 00 + 00 mov edx, DWORD PTR [rbx+18468] + 005cf 44 0f bf fd movsx r15d, bp + 005d3 83 fa 01 cmp edx, 1 + 005d6 7c 1c jl SHORT $LN40@stbi__jpeg + +; 1648 : k = j->code_buffer; + + 005d8 8b 8b 20 48 00 + 00 mov ecx, DWORD PTR [rbx+18464] + +; 1649 : j->code_buffer <<= 1; + + 005de 8d 04 09 lea eax, DWORD PTR [rcx+rcx] + 005e1 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + +; 1650 : --j->code_bits; + + 005e7 8d 42 ff lea eax, DWORD PTR [rdx-1] + 005ea 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax + +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) + + 005f0 85 c9 test ecx, ecx + 005f2 78 03 js SHORT $LN116@stbi__jpeg +$LN40@stbi__jpeg: + +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; + + 005f4 41 f7 df neg r15d +$LN116@stbi__jpeg: + +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { + + 005f7 3b bb 38 48 00 + 00 cmp edi, DWORD PTR [rbx+18488] + 005fd 0f 8f a4 00 00 + 00 jg $LN215@stbi__jpeg + 00603 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL11@stbi__jpeg: + +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; + + 00610 43 0f b6 84 2c + 00 00 00 00 movzx eax, BYTE PTR stbi__jpeg_dezigzag[r12+r13] + 00619 ff c7 inc edi + 0061b 48 8b 4c 24 68 mov rcx, QWORD PTR data$[rsp] + 00620 49 ff c4 inc r12 + +; 1864 : if (*p != 0) { + + 00623 66 83 3c 41 00 cmp WORD PTR [rcx+rax*2], 0 + 00628 4c 8d 34 41 lea r14, QWORD PTR [rcx+rax*2] + 0062c 74 58 je SHORT $LN42@stbi__jpeg + +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + + 0062e 83 bb 24 48 00 + 00 01 cmp DWORD PTR [rbx+18468], 1 + 00635 7d 08 jge SHORT $LN107@stbi__jpeg + 00637 48 8b cb mov rcx, rbx + 0063a e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN107@stbi__jpeg: + +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + + 0063f 8b 93 24 48 00 + 00 mov edx, DWORD PTR [rbx+18468] + 00645 83 fa 01 cmp edx, 1 + 00648 7c 42 jl SHORT $LN43@stbi__jpeg + +; 1648 : k = j->code_buffer; + + 0064a 8b 8b 20 48 00 + 00 mov ecx, DWORD PTR [rbx+18464] + +; 1649 : j->code_buffer <<= 1; + + 00650 8d 04 09 lea eax, DWORD PTR [rcx+rcx] + 00653 89 83 20 48 00 + 00 mov DWORD PTR [rbx+18464], eax + +; 1650 : --j->code_bits; + + 00659 8d 42 ff lea eax, DWORD PTR [rdx-1] + 0065c 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax + +; 1865 : if (stbi__jpeg_get_bit(j)) + + 00662 85 c9 test ecx, ecx + 00664 79 26 jns SHORT $LN43@stbi__jpeg + +; 1866 : if ((*p & bit) == 0) { + + 00666 41 0f b7 06 movzx eax, WORD PTR [r14] + 0066a 66 85 c5 test ax, bp + 0066d 75 1d jne SHORT $LN43@stbi__jpeg + +; 1867 : if (*p > 0) + + 0066f 66 85 c0 test ax, ax + 00672 7e 09 jle SHORT $LN46@stbi__jpeg + +; 1868 : *p += bit; + + 00674 66 03 c5 add ax, bp + 00677 66 41 89 06 mov WORD PTR [r14], ax + 0067b eb 0f jmp SHORT $LN43@stbi__jpeg +$LN46@stbi__jpeg: + +; 1869 : else +; 1870 : *p -= bit; + + 0067d 66 2b c5 sub ax, bp + 00680 66 41 89 06 mov WORD PTR [r14], ax + +; 1871 : } +; 1872 : } + + 00684 eb 06 jmp SHORT $LN43@stbi__jpeg +$LN42@stbi__jpeg: + +; 1873 : else { +; 1874 : if (r == 0) { + + 00686 85 f6 test esi, esi + 00688 74 10 je SHORT $LN124@stbi__jpeg + +; 1876 : break; +; 1877 : } +; 1878 : --r; + + 0068a ff ce dec esi +$LN43@stbi__jpeg: + +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { + + 0068c 3b bb 38 48 00 + 00 cmp edi, DWORD PTR [rbx+18488] + 00692 0f 8e 78 ff ff + ff jle $LL11@stbi__jpeg + +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); + + 00698 eb 04 jmp SHORT $LN216@stbi__jpeg +$LN124@stbi__jpeg: + +; 1875 : *p = (short)s; + + 0069a 66 45 89 3e mov WORD PTR [r14], r15w +$LN216@stbi__jpeg: + +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); + + 0069e 45 33 f6 xor r14d, r14d + 006a1 3b bb 38 48 00 + 00 cmp edi, DWORD PTR [rbx+18488] +$LN215@stbi__jpeg: + 006a7 48 8b 74 24 70 mov rsi, QWORD PTR hac$[rsp] + 006ac 0f 8e 72 fd ff + ff jle $LL10@stbi__jpeg +$LN9@stbi__jpeg: + +; 1882 : } +; 1883 : } +; 1884 : return 1; + + 006b2 b8 01 00 00 00 mov eax, 1 + 006b7 eb 2f jmp SHORT $LN209@stbi__jpeg +$LN148@stbi__jpeg: + +; 1591 : j->code_bits -= 16; + + 006b9 41 8d 41 f0 lea eax, DWORD PTR [r9-16] +$LN212@stbi__jpeg: + 006bd 89 83 24 48 00 + 00 mov DWORD PTR [rbx+18468], eax +$LN149@stbi__jpeg: + +; 431 : stbi__g_failure_reason = str; + + 006c3 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 006c9 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006d2 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 006d7 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006db 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 006e2 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); + + 006e6 33 c0 xor eax, eax +$LN209@stbi__jpeg: + 006e8 4c 8b 6c 24 28 mov r13, QWORD PTR [rsp+40] + 006ed 48 8b 6c 24 60 mov rbp, QWORD PTR [rsp+96] + 006f2 4c 8b 74 24 20 mov r14, QWORD PTR [rsp+32] + +; 1885 : } + + 006f7 48 83 c4 30 add rsp, 48 ; 00000030H + 006fb 41 5f pop r15 + 006fd 41 5c pop r12 + 006ff 5f pop rdi + 00700 5e pop rsi + 00701 5b pop rbx + 00702 c3 ret 0 +stbi__jpeg_decode_block_prog_ac ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__clamp +_TEXT SEGMENT +x$ = 8 +stbi__clamp PROC ; COMDAT + +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { + + 00000 ba ff 00 00 00 mov edx, 255 ; 000000ffH + 00005 3b ca cmp ecx, edx + 00007 76 10 jbe SHORT $LN4@stbi__clam + +; 1892 : if (x < 0) return 0; + + 00009 85 c9 test ecx, ecx + 0000b 79 03 jns SHORT $LN3@stbi__clam + 0000d 32 c0 xor al, al + +; 1896 : } + + 0000f c3 ret 0 +$LN3@stbi__clam: + +; 1893 : if (x > 255) return 255; + + 00010 3b ca cmp ecx, edx + 00012 0f b6 c1 movzx eax, cl + 00015 0f 4f c2 cmovg eax, edx + +; 1896 : } + + 00018 c3 ret 0 +$LN4@stbi__clam: + +; 1894 : } +; 1895 : return (stbi_uc)x; + + 00019 0f b6 c1 movzx eax, cl + +; 1896 : } + + 0001c c3 ret 0 +stbi__clamp ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__idct_block +_TEXT SEGMENT +$T9 = 0 +$T10 = 0 +t3$3$ = 0 +tv2514 = 8 +tv2499 = 8 +out$GSCopy$1$ = 16 +tv2511 = 16 +out_stride$GSCopy$1$ = 24 +val$ = 32 +__$ArrayPad$ = 288 +out$ = 368 +out_stride$ = 376 +data$ = 384 +stbi__idct_block PROC ; COMDAT + +; 1940 : { + + 00000 48 89 5c 24 18 mov QWORD PTR [rsp+24], rbx + 00005 55 push rbp + 00006 56 push rsi + 00007 57 push rdi + 00008 41 54 push r12 + 0000a 41 55 push r13 + 0000c 41 56 push r14 + 0000e 41 57 push r15 + 00010 48 81 ec 30 01 + 00 00 sub rsp, 304 ; 00000130H + 00017 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0001e 48 33 c4 xor rax, rsp + 00021 48 89 84 24 20 + 01 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00029 89 54 24 18 mov DWORD PTR out_stride$GSCopy$1$[rsp], edx + 0002d 48 8d 6c 24 40 lea rbp, QWORD PTR val$[rsp+32] + 00032 48 89 4c 24 10 mov QWORD PTR out$GSCopy$1$[rsp], rcx + 00037 49 8d 40 20 lea rax, QWORD PTR [r8+32] + 0003b 48 c7 44 24 08 + 04 00 00 00 mov QWORD PTR tv2514[rsp], 4 +$LL4@stbi__idct: + +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { + + 00044 0f bf 58 f0 movsx ebx, WORD PTR [rax-16] + 00048 66 85 db test bx, bx + 0004b 75 49 jne SHORT $LN8@stbi__idct + 0004d 66 39 18 cmp WORD PTR [rax], bx + 00050 75 44 jne SHORT $LN8@stbi__idct + 00052 66 39 58 10 cmp WORD PTR [rax+16], bx + 00056 75 3e jne SHORT $LN8@stbi__idct + 00058 66 39 58 20 cmp WORD PTR [rax+32], bx + 0005c 75 38 jne SHORT $LN8@stbi__idct + 0005e 66 39 58 30 cmp WORD PTR [rax+48], bx + 00062 75 32 jne SHORT $LN8@stbi__idct + 00064 66 39 58 40 cmp WORD PTR [rax+64], bx + 00068 75 2c jne SHORT $LN8@stbi__idct + 0006a 66 39 58 50 cmp WORD PTR [rax+80], bx + 0006e 75 26 jne SHORT $LN8@stbi__idct + +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; + + 00070 0f bf 48 e0 movsx ecx, WORD PTR [rax-32] + 00074 c1 e1 02 shl ecx, 2 + +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + + 00077 89 8d c0 00 00 + 00 mov DWORD PTR [rbp+192], ecx + 0007d 44 8b e9 mov r13d, ecx + 00080 89 8d a0 00 00 + 00 mov DWORD PTR [rbp+160], ecx + 00086 8b d1 mov edx, ecx + 00088 89 4d 20 mov DWORD PTR [rbp+32], ecx + 0008b 89 4d 00 mov DWORD PTR [rbp], ecx + 0008e 89 4d e0 mov DWORD PTR [rbp-32], ecx + +; 1956 : } + + 00091 e9 3e 01 00 00 jmp $LN2@stbi__idct +$LN8@stbi__idct: + +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) + + 00096 44 0f bf 58 10 movsx r11d, WORD PTR [rax+16] + 0009b 44 0f bf 08 movsx r9d, WORD PTR [rax] + 0009f 0f bf 50 40 movsx edx, WORD PTR [rax+64] + 000a3 44 0f bf 70 50 movsx r14d, WORD PTR [rax+80] + 000a8 0f bf 70 30 movsx esi, WORD PTR [rax+48] + 000ac 44 0f bf 68 e0 movsx r13d, WORD PTR [rax-32] + 000b1 42 8d 0c 0a lea ecx, DWORD PTR [rdx+r9] + 000b5 44 69 c1 a9 08 + 00 00 imul r8d, ecx, 2217 ; 000008a9H + 000bc 69 ca 8f 1d 00 + 00 imul ecx, edx, 7567 ; 00001d8fH + 000c2 41 69 d1 3f 0c + 00 00 imul edx, r9d, 3135 ; 00000c3fH + 000c9 44 8d 0c 1e lea r9d, DWORD PTR [rsi+rbx] + 000cd 45 8b d0 mov r10d, r8d + 000d0 44 2b d1 sub r10d, ecx + 000d3 0f bf 48 20 movsx ecx, WORD PTR [rax+32] + 000d7 41 03 d0 add edx, r8d + 000da 46 8d 04 29 lea r8d, DWORD PTR [rcx+r13] + 000de 44 2b e9 sub r13d, ecx + 000e1 41 c1 e0 0c shl r8d, 12 + 000e5 41 c1 e5 0c shl r13d, 12 + 000e9 45 8d 3c 10 lea r15d, DWORD PTR [r8+rdx] + 000ed 44 2b c2 sub r8d, edx + 000f0 47 8d 24 2a lea r12d, DWORD PTR [r10+r13] + 000f4 44 89 04 24 mov DWORD PTR $T9[rsp], r8d + 000f8 45 2b ea sub r13d, r10d + 000fb 47 8d 04 1e lea r8d, DWORD PTR [r14+r11] + 000ff 43 8d 0c 01 lea ecx, DWORD PTR [r9+r8] + 00103 44 8b d3 mov r10d, ebx + 00106 69 f9 d0 12 00 + 00 imul edi, ecx, 4816 ; 000012d0H + +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; + + 0010c 41 81 c7 00 02 + 00 00 add r15d, 512 ; 00000200H + 00113 41 8d 0c 1e lea ecx, DWORD PTR [r14+rbx] + 00117 41 81 c4 00 02 + 00 00 add r12d, 512 ; 00000200H + 0011e 69 d1 65 0e 00 + 00 imul edx, ecx, 3685 ; 00000e65H + 00124 41 81 c5 00 02 + 00 00 add r13d, 512 ; 00000200H + 0012b 42 8d 0c 1e lea ecx, DWORD PTR [rsi+r11] + 0012f 8b df mov ebx, edi + 00131 2b da sub ebx, edx + 00133 69 d1 01 29 00 + 00 imul edx, ecx, 10497 ; 00002901H + 00139 41 69 c9 c3 f9 + ff ff imul ecx, r9d, -1597 ; fffffffffffff9c3H + 00140 45 69 cb 2a 31 + 00 00 imul r9d, r11d, 12586 ; 0000312aH + 00147 45 69 de c7 04 + 00 00 imul r11d, r14d, 1223 ; 000004c7H + 0014e 2b fa sub edi, edx + 00150 41 69 d0 9e e0 + ff ff imul edx, r8d, -8034 ; ffffffffffffe09eH + 00157 45 69 c2 05 18 + 00 00 imul r8d, r10d, 6149 ; 00001805H + 0015e 44 69 d6 da 20 + 00 00 imul r10d, esi, 8410 ; 000020daH + 00165 44 03 db add r11d, ebx + 00168 44 03 ca add r9d, edx + 0016b 44 03 da add r11d, edx + 0016e 8b 14 24 mov edx, DWORD PTR $T9[rsp] + 00171 44 03 c1 add r8d, ecx + 00174 44 03 d1 add r10d, ecx + 00177 44 03 c3 add r8d, ebx + 0017a 44 03 cf add r9d, edi + 0017d 44 03 d7 add r10d, edi + 00180 81 c2 00 02 00 + 00 add edx, 512 ; 00000200H + +; 1962 : v[0] = (x0 + t3) >> 10; + + 00186 43 8d 0c 07 lea ecx, DWORD PTR [r15+r8] + +; 1963 : v[56] = (x0 - t3) >> 10; + + 0018a 45 2b f8 sub r15d, r8d + 0018d c1 f9 0a sar ecx, 10 + 00190 89 4d e0 mov DWORD PTR [rbp-32], ecx + +; 1964 : v[8] = (x1 + t2) >> 10; + + 00193 43 8d 0c 0c lea ecx, DWORD PTR [r12+r9] + 00197 c1 f9 0a sar ecx, 10 + +; 1965 : v[48] = (x1 - t2) >> 10; + + 0019a 45 2b e1 sub r12d, r9d + 0019d 89 4d 00 mov DWORD PTR [rbp], ecx + +; 1966 : v[16] = (x2 + t1) >> 10; + + 001a0 43 8d 0c 2a lea ecx, DWORD PTR [r10+r13] + 001a4 c1 f9 0a sar ecx, 10 + +; 1967 : v[40] = (x2 - t1) >> 10; + + 001a7 45 2b ea sub r13d, r10d + 001aa 89 4d 20 mov DWORD PTR [rbp+32], ecx + +; 1968 : v[24] = (x3 + t0) >> 10; + + 001ad 42 8d 0c 1a lea ecx, DWORD PTR [rdx+r11] + 001b1 41 c1 ff 0a sar r15d, 10 + +; 1969 : v[32] = (x3 - t0) >> 10; + + 001b5 41 2b d3 sub edx, r11d + 001b8 41 c1 fc 0a sar r12d, 10 + 001bc c1 f9 0a sar ecx, 10 + 001bf 41 c1 fd 0a sar r13d, 10 + 001c3 c1 fa 0a sar edx, 10 + 001c6 44 89 bd c0 00 + 00 00 mov DWORD PTR [rbp+192], r15d + 001cd 44 89 a5 a0 00 + 00 00 mov DWORD PTR [rbp+160], r12d +$LN2@stbi__idct: + +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { + + 001d4 89 55 60 mov DWORD PTR [rbp+96], edx + 001d7 44 89 ad 80 00 + 00 00 mov DWORD PTR [rbp+128], r13d + 001de 89 4d 40 mov DWORD PTR [rbp+64], ecx + 001e1 0f bf 58 f2 movsx ebx, WORD PTR [rax-14] + 001e5 66 85 db test bx, bx + 001e8 75 4a jne SHORT $LN56@stbi__idct + 001ea 66 39 58 02 cmp WORD PTR [rax+2], bx + 001ee 75 44 jne SHORT $LN56@stbi__idct + 001f0 66 39 58 12 cmp WORD PTR [rax+18], bx + 001f4 75 3e jne SHORT $LN56@stbi__idct + 001f6 66 39 58 22 cmp WORD PTR [rax+34], bx + 001fa 75 38 jne SHORT $LN56@stbi__idct + 001fc 66 39 58 32 cmp WORD PTR [rax+50], bx + 00200 75 32 jne SHORT $LN56@stbi__idct + 00202 66 39 58 42 cmp WORD PTR [rax+66], bx + 00206 75 2c jne SHORT $LN56@stbi__idct + 00208 66 39 58 52 cmp WORD PTR [rax+82], bx + 0020c 75 26 jne SHORT $LN56@stbi__idct + +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; + + 0020e 0f bf 48 e2 movsx ecx, WORD PTR [rax-30] + 00212 c1 e1 02 shl ecx, 2 + +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + + 00215 89 8d c4 00 00 + 00 mov DWORD PTR [rbp+196], ecx + 0021b 44 8b e9 mov r13d, ecx + 0021e 89 8d a4 00 00 + 00 mov DWORD PTR [rbp+164], ecx + 00224 8b d1 mov edx, ecx + 00226 89 4d 24 mov DWORD PTR [rbp+36], ecx + 00229 89 4d 04 mov DWORD PTR [rbp+4], ecx + 0022c 89 4d e4 mov DWORD PTR [rbp-28], ecx + +; 1956 : } + + 0022f e9 3f 01 00 00 jmp $LN57@stbi__idct +$LN56@stbi__idct: + +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) + + 00234 44 0f bf 58 12 movsx r11d, WORD PTR [rax+18] + 00239 44 0f bf 48 02 movsx r9d, WORD PTR [rax+2] + 0023e 0f bf 50 42 movsx edx, WORD PTR [rax+66] + 00242 44 0f bf 70 52 movsx r14d, WORD PTR [rax+82] + 00247 0f bf 70 32 movsx esi, WORD PTR [rax+50] + 0024b 44 0f bf 68 e2 movsx r13d, WORD PTR [rax-30] + 00250 42 8d 0c 0a lea ecx, DWORD PTR [rdx+r9] + 00254 44 69 c1 a9 08 + 00 00 imul r8d, ecx, 2217 ; 000008a9H + 0025b 69 ca 8f 1d 00 + 00 imul ecx, edx, 7567 ; 00001d8fH + 00261 41 69 d1 3f 0c + 00 00 imul edx, r9d, 3135 ; 00000c3fH + 00268 44 8d 0c 1e lea r9d, DWORD PTR [rsi+rbx] + 0026c 45 8b d0 mov r10d, r8d + 0026f 44 2b d1 sub r10d, ecx + 00272 0f bf 48 22 movsx ecx, WORD PTR [rax+34] + 00276 41 03 d0 add edx, r8d + 00279 46 8d 04 29 lea r8d, DWORD PTR [rcx+r13] + 0027d 44 2b e9 sub r13d, ecx + 00280 41 c1 e0 0c shl r8d, 12 + 00284 41 c1 e5 0c shl r13d, 12 + 00288 45 8d 3c 10 lea r15d, DWORD PTR [r8+rdx] + 0028c 44 2b c2 sub r8d, edx + 0028f 47 8d 24 2a lea r12d, DWORD PTR [r10+r13] + 00293 44 89 04 24 mov DWORD PTR $T10[rsp], r8d + 00297 45 2b ea sub r13d, r10d + 0029a 47 8d 04 1e lea r8d, DWORD PTR [r14+r11] + 0029e 43 8d 0c 01 lea ecx, DWORD PTR [r9+r8] + 002a2 44 8b d3 mov r10d, ebx + 002a5 69 f9 d0 12 00 + 00 imul edi, ecx, 4816 ; 000012d0H + +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; + + 002ab 41 81 c7 00 02 + 00 00 add r15d, 512 ; 00000200H + 002b2 41 8d 0c 1e lea ecx, DWORD PTR [r14+rbx] + 002b6 41 81 c4 00 02 + 00 00 add r12d, 512 ; 00000200H + 002bd 69 d1 65 0e 00 + 00 imul edx, ecx, 3685 ; 00000e65H + 002c3 41 81 c5 00 02 + 00 00 add r13d, 512 ; 00000200H + 002ca 42 8d 0c 1e lea ecx, DWORD PTR [rsi+r11] + 002ce 8b df mov ebx, edi + 002d0 2b da sub ebx, edx + 002d2 69 d1 01 29 00 + 00 imul edx, ecx, 10497 ; 00002901H + 002d8 41 69 c9 c3 f9 + ff ff imul ecx, r9d, -1597 ; fffffffffffff9c3H + 002df 45 69 cb 2a 31 + 00 00 imul r9d, r11d, 12586 ; 0000312aH + 002e6 45 69 de c7 04 + 00 00 imul r11d, r14d, 1223 ; 000004c7H + 002ed 2b fa sub edi, edx + 002ef 41 69 d0 9e e0 + ff ff imul edx, r8d, -8034 ; ffffffffffffe09eH + 002f6 45 69 c2 05 18 + 00 00 imul r8d, r10d, 6149 ; 00001805H + 002fd 44 69 d6 da 20 + 00 00 imul r10d, esi, 8410 ; 000020daH + 00304 44 03 db add r11d, ebx + 00307 44 03 ca add r9d, edx + 0030a 44 03 da add r11d, edx + 0030d 8b 14 24 mov edx, DWORD PTR $T10[rsp] + 00310 44 03 c1 add r8d, ecx + 00313 44 03 d1 add r10d, ecx + 00316 44 03 c3 add r8d, ebx + 00319 44 03 cf add r9d, edi + 0031c 44 03 d7 add r10d, edi + 0031f 81 c2 00 02 00 + 00 add edx, 512 ; 00000200H + +; 1962 : v[0] = (x0 + t3) >> 10; + + 00325 43 8d 0c 07 lea ecx, DWORD PTR [r15+r8] + +; 1963 : v[56] = (x0 - t3) >> 10; + + 00329 45 2b f8 sub r15d, r8d + 0032c c1 f9 0a sar ecx, 10 + 0032f 89 4d e4 mov DWORD PTR [rbp-28], ecx + +; 1964 : v[8] = (x1 + t2) >> 10; + + 00332 43 8d 0c 0c lea ecx, DWORD PTR [r12+r9] + 00336 c1 f9 0a sar ecx, 10 + +; 1965 : v[48] = (x1 - t2) >> 10; + + 00339 45 2b e1 sub r12d, r9d + 0033c 89 4d 04 mov DWORD PTR [rbp+4], ecx + +; 1966 : v[16] = (x2 + t1) >> 10; + + 0033f 43 8d 0c 2a lea ecx, DWORD PTR [r10+r13] + 00343 c1 f9 0a sar ecx, 10 + +; 1967 : v[40] = (x2 - t1) >> 10; + + 00346 45 2b ea sub r13d, r10d + 00349 89 4d 24 mov DWORD PTR [rbp+36], ecx + +; 1968 : v[24] = (x3 + t0) >> 10; + + 0034c 42 8d 0c 1a lea ecx, DWORD PTR [rdx+r11] + 00350 41 c1 ff 0a sar r15d, 10 + +; 1969 : v[32] = (x3 - t0) >> 10; + + 00354 41 2b d3 sub edx, r11d + 00357 41 c1 fc 0a sar r12d, 10 + 0035b c1 f9 0a sar ecx, 10 + 0035e 41 c1 fd 0a sar r13d, 10 + 00362 c1 fa 0a sar edx, 10 + 00365 44 89 bd c4 00 + 00 00 mov DWORD PTR [rbp+196], r15d + 0036c 44 89 a5 a4 00 + 00 00 mov DWORD PTR [rbp+164], r12d +$LN57@stbi__idct: + 00373 89 55 64 mov DWORD PTR [rbp+100], edx + 00376 48 83 c0 04 add rax, 4 + 0037a 44 89 ad 84 00 + 00 00 mov DWORD PTR [rbp+132], r13d + 00381 89 4d 44 mov DWORD PTR [rbp+68], ecx + 00384 48 83 c5 08 add rbp, 8 + 00388 48 83 6c 24 08 + 01 sub QWORD PTR tv2514[rsp], 1 + 0038e 0f 85 b0 fc ff + ff jne $LL4@stbi__idct + +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { + + 00394 4c 8b 6c 24 10 mov r13, QWORD PTR out$GSCopy$1$[rsp] + 00399 4c 8d 5c 24 38 lea r11, QWORD PTR val$[rsp+24] + 0039e 4c 89 5c 24 08 mov QWORD PTR tv2499[rsp], r11 + 003a3 49 ff c5 inc r13 + 003a6 48 c7 44 24 10 + 08 00 00 00 mov QWORD PTR tv2511[rsp], 8 + 003af 90 npad 1 +$LL7@stbi__idct: + +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) + + 003b0 45 8b 43 f0 mov r8d, DWORD PTR [r11-16] + 003b4 41 8b 0b mov ecx, DWORD PTR [r11] + 003b7 41 8b 73 04 mov esi, DWORD PTR [r11+4] + 003bb 41 8b 7b fc mov edi, DWORD PTR [r11-4] + 003bf 45 8b 53 f4 mov r10d, DWORD PTR [r11-12] + 003c3 45 8b 73 e8 mov r14d, DWORD PTR [r11-24] + 003c7 42 8d 04 01 lea eax, DWORD PTR [rcx+r8] + 003cb 69 d0 a9 08 00 + 00 imul edx, eax, 2217 ; 000008a9H + 003d1 69 c1 8f 1d 00 + 00 imul eax, ecx, 7567 ; 00001d8fH + 003d7 41 69 c8 3f 0c + 00 00 imul ecx, r8d, 3135 ; 00000c3fH + 003de 44 8b ca mov r9d, edx + 003e1 44 2b c8 sub r9d, eax + 003e4 41 8b 43 f8 mov eax, DWORD PTR [r11-8] + 003e8 03 ca add ecx, edx + 003ea 42 8d 14 16 lea edx, DWORD PTR [rsi+r10] + 003ee 46 8d 3c 30 lea r15d, DWORD PTR [rax+r14] + 003f2 44 2b f0 sub r14d, eax + 003f5 41 c1 e6 0c shl r14d, 12 + 003f9 41 c1 e7 0c shl r15d, 12 + 003fd 47 8d 24 0e lea r12d, DWORD PTR [r14+r9] + 00401 45 2b f1 sub r14d, r9d + 00404 45 8b 4b ec mov r9d, DWORD PTR [r11-20] + 00408 41 8d 2c 0f lea ebp, DWORD PTR [r15+rcx] + 0040c 44 2b f9 sub r15d, ecx + +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); + + 0040f 81 c5 00 00 01 + 01 add ebp, 16842752 ; 01010000H + +; 1983 : x1 += 65536 + (128 << 17); + + 00415 41 81 c4 00 00 + 01 01 add r12d, 16842752 ; 01010000H + +; 1984 : x2 += 65536 + (128 << 17); + + 0041c 41 81 c6 00 00 + 01 01 add r14d, 16842752 ; 01010000H + +; 1985 : x3 += 65536 + (128 << 17); + + 00423 41 81 c7 00 00 + 01 01 add r15d, 16842752 ; 01010000H + 0042a 46 8d 04 0f lea r8d, DWORD PTR [rdi+r9] + 0042e 41 8d 04 10 lea eax, DWORD PTR [r8+rdx] + 00432 69 d8 d0 12 00 + 00 imul ebx, eax, 4816 ; 000012d0H + 00438 42 8d 04 0e lea eax, DWORD PTR [rsi+r9] + 0043c 69 c8 65 0e 00 + 00 imul ecx, eax, 3685 ; 00000e65H + 00442 42 8d 04 17 lea eax, DWORD PTR [rdi+r10] + 00446 44 8b db mov r11d, ebx + 00449 44 2b d9 sub r11d, ecx + 0044c 69 c8 01 29 00 + 00 imul ecx, eax, 10497 ; 00002901H + 00452 41 69 c0 c3 f9 + ff ff imul eax, r8d, -1597 ; fffffffffffff9c3H + 00459 44 69 c7 da 20 + 00 00 imul r8d, edi, 8410 ; 000020daH + 00460 2b d9 sub ebx, ecx + 00462 69 ca 9e e0 ff + ff imul ecx, edx, -8034 ; ffffffffffffe09eH + 00468 41 69 d1 05 18 + 00 00 imul edx, r9d, 6149 ; 00001805H + 0046f 44 03 c0 add r8d, eax + 00472 44 69 ce c7 04 + 00 00 imul r9d, esi, 1223 ; 000004c7H + 00479 44 03 c3 add r8d, ebx + 0047c 03 d0 add edx, eax + 0047e 41 03 d3 add edx, r11d + 00481 45 03 cb add r9d, r11d + 00484 89 14 24 mov DWORD PTR t3$3$[rsp], edx + 00487 44 03 c9 add r9d, ecx + 0048a 41 69 d2 2a 31 + 00 00 imul edx, r10d, 12586 ; 0000312aH + 00491 03 d1 add edx, ecx + +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); + + 00493 8b 0c 24 mov ecx, DWORD PTR t3$3$[rsp] + 00496 03 d3 add edx, ebx + 00498 8d 04 29 lea eax, DWORD PTR [rcx+rbp] + 0049b c1 f8 11 sar eax, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 0049e 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 004a3 76 11 jbe SHORT $LN14@stbi__idct + +; 1892 : if (x < 0) return 0; + + 004a5 85 c0 test eax, eax + 004a7 79 04 jns SHORT $LN13@stbi__idct + 004a9 32 c0 xor al, al + 004ab eb 09 jmp SHORT $LN14@stbi__idct +$LN13@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 004ad 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 004b2 7e 02 jle SHORT $LN14@stbi__idct + 004b4 b0 ff mov al, 255 ; 000000ffH +$LN14@stbi__idct: + +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); + + 004b6 2b e9 sub ebp, ecx + 004b8 41 88 45 ff mov BYTE PTR [r13-1], al + 004bc c1 fd 11 sar ebp, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 004bf 81 fd ff 00 00 + 00 cmp ebp, 255 ; 000000ffH + 004c5 76 14 jbe SHORT $LN19@stbi__idct + +; 1892 : if (x < 0) return 0; + + 004c7 85 ed test ebp, ebp + 004c9 79 05 jns SHORT $LN18@stbi__idct + 004cb 40 32 ed xor bpl, bpl + 004ce eb 0b jmp SHORT $LN19@stbi__idct +$LN18@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 004d0 81 fd ff 00 00 + 00 cmp ebp, 255 ; 000000ffH + 004d6 7e 03 jle SHORT $LN19@stbi__idct + 004d8 40 b5 ff mov bpl, 255 ; 000000ffH +$LN19@stbi__idct: + +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); + + 004db 41 8d 04 14 lea eax, DWORD PTR [r12+rdx] + 004df 41 88 6d 06 mov BYTE PTR [r13+6], bpl + 004e3 c1 f8 11 sar eax, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 004e6 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 004eb 76 11 jbe SHORT $LN24@stbi__idct + +; 1892 : if (x < 0) return 0; + + 004ed 85 c0 test eax, eax + 004ef 79 04 jns SHORT $LN23@stbi__idct + 004f1 32 c0 xor al, al + 004f3 eb 09 jmp SHORT $LN24@stbi__idct +$LN23@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 004f5 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 004fa 7e 02 jle SHORT $LN24@stbi__idct + 004fc b0 ff mov al, 255 ; 000000ffH +$LN24@stbi__idct: + +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); + + 004fe 44 2b e2 sub r12d, edx + 00501 41 88 45 00 mov BYTE PTR [r13], al + 00505 41 c1 fc 11 sar r12d, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 00509 41 81 fc ff 00 + 00 00 cmp r12d, 255 ; 000000ffH + 00510 76 16 jbe SHORT $LN29@stbi__idct + +; 1892 : if (x < 0) return 0; + + 00512 45 85 e4 test r12d, r12d + 00515 79 05 jns SHORT $LN28@stbi__idct + 00517 45 32 e4 xor r12b, r12b + 0051a eb 0c jmp SHORT $LN29@stbi__idct +$LN28@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 0051c 41 81 fc ff 00 + 00 00 cmp r12d, 255 ; 000000ffH + 00523 7e 03 jle SHORT $LN29@stbi__idct + 00525 41 b4 ff mov r12b, 255 ; 000000ffH +$LN29@stbi__idct: + +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); + + 00528 43 8d 04 06 lea eax, DWORD PTR [r14+r8] + 0052c 45 88 65 05 mov BYTE PTR [r13+5], r12b + 00530 c1 f8 11 sar eax, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 00533 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00538 76 11 jbe SHORT $LN34@stbi__idct + +; 1892 : if (x < 0) return 0; + + 0053a 85 c0 test eax, eax + 0053c 79 04 jns SHORT $LN33@stbi__idct + 0053e 32 c0 xor al, al + 00540 eb 09 jmp SHORT $LN34@stbi__idct +$LN33@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 00542 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00547 7e 02 jle SHORT $LN34@stbi__idct + 00549 b0 ff mov al, 255 ; 000000ffH +$LN34@stbi__idct: + +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); + + 0054b 45 2b f0 sub r14d, r8d + 0054e 41 88 45 01 mov BYTE PTR [r13+1], al + 00552 41 c1 fe 11 sar r14d, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 00556 41 81 fe ff 00 + 00 00 cmp r14d, 255 ; 000000ffH + 0055d 76 16 jbe SHORT $LN39@stbi__idct + +; 1892 : if (x < 0) return 0; + + 0055f 45 85 f6 test r14d, r14d + 00562 79 05 jns SHORT $LN38@stbi__idct + 00564 45 32 f6 xor r14b, r14b + 00567 eb 0c jmp SHORT $LN39@stbi__idct +$LN38@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 00569 41 81 fe ff 00 + 00 00 cmp r14d, 255 ; 000000ffH + 00570 7e 03 jle SHORT $LN39@stbi__idct + 00572 41 b6 ff mov r14b, 255 ; 000000ffH +$LN39@stbi__idct: + +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); + + 00575 43 8d 04 0f lea eax, DWORD PTR [r15+r9] + 00579 45 88 75 04 mov BYTE PTR [r13+4], r14b + 0057d c1 f8 11 sar eax, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 00580 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00585 76 11 jbe SHORT $LN44@stbi__idct + +; 1892 : if (x < 0) return 0; + + 00587 85 c0 test eax, eax + 00589 79 04 jns SHORT $LN43@stbi__idct + 0058b 32 c0 xor al, al + 0058d eb 09 jmp SHORT $LN44@stbi__idct +$LN43@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 0058f 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00594 7e 02 jle SHORT $LN44@stbi__idct + 00596 b0 ff mov al, 255 ; 000000ffH +$LN44@stbi__idct: + +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); + + 00598 45 2b f9 sub r15d, r9d + 0059b 41 88 45 02 mov BYTE PTR [r13+2], al + 0059f 41 c1 ff 11 sar r15d, 17 + +; 1891 : if ((unsigned int)x > 255) { + + 005a3 41 81 ff ff 00 + 00 00 cmp r15d, 255 ; 000000ffH + 005aa 76 16 jbe SHORT $LN49@stbi__idct + +; 1892 : if (x < 0) return 0; + + 005ac 45 85 ff test r15d, r15d + 005af 79 05 jns SHORT $LN48@stbi__idct + 005b1 45 32 ff xor r15b, r15b + 005b4 eb 0c jmp SHORT $LN49@stbi__idct +$LN48@stbi__idct: + +; 1893 : if (x > 255) return 255; + + 005b6 41 81 ff ff 00 + 00 00 cmp r15d, 255 ; 000000ffH + 005bd 7e 03 jle SHORT $LN49@stbi__idct + 005bf 41 b7 ff mov r15b, 255 ; 000000ffH +$LN49@stbi__idct: + +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { + + 005c2 4c 8b 5c 24 08 mov r11, QWORD PTR tv2499[rsp] + 005c7 48 63 4c 24 18 movsxd rcx, DWORD PTR out_stride$GSCopy$1$[rsp] + 005cc 49 83 c3 20 add r11, 32 ; 00000020H + +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); + + 005d0 45 88 7d 03 mov BYTE PTR [r13+3], r15b + 005d4 4c 03 e9 add r13, rcx + 005d7 48 83 6c 24 10 + 01 sub QWORD PTR tv2511[rsp], 1 + 005dd 4c 89 5c 24 08 mov QWORD PTR tv2499[rsp], r11 + 005e2 0f 85 c8 fd ff + ff jne $LL7@stbi__idct + +; 1996 : } +; 1997 : } + + 005e8 48 8b 8c 24 20 + 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 005f0 48 33 cc xor rcx, rsp + 005f3 e8 00 00 00 00 call __security_check_cookie + 005f8 48 8b 9c 24 80 + 01 00 00 mov rbx, QWORD PTR [rsp+384] + 00600 48 81 c4 30 01 + 00 00 add rsp, 304 ; 00000130H + 00607 41 5f pop r15 + 00609 41 5e pop r14 + 0060b 41 5d pop r13 + 0060d 41 5c pop r12 + 0060f 5f pop rdi + 00610 5e pop rsi + 00611 5d pop rbp + 00612 c3 ret 0 +stbi__idct_block ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__idct_simd +_TEXT SEGMENT +y5o_h$1$ = 0 +abiased_h$1$ = 16 +abiased_h$1$ = 16 +p2$1$ = 32 +t3e_l$1$ = 32 +abiased_l$1$ = 48 +row4$2$ = 48 +x7_h$1$ = 64 +t3e_h$1$ = 64 +x6_h$1$ = 80 +row5$2$ = 80 +x6_l$1$ = 96 +t2e_h$1$ = 96 +x7_l$1$ = 112 +t2e_l$1$ = 112 +out$ = 304 +out_stride$ = 312 +data$ = 320 +stbi__idct_simd PROC ; COMDAT + +; 2004 : { + + 00000 4c 8b dc mov r11, rsp + 00003 48 81 ec 28 01 + 00 00 sub rsp, 296 ; 00000128H + +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); + + 0000a f3 41 0f 6f 58 + 10 movdqu xmm3, XMMWORD PTR [r8+16] + 00010 0f 57 c9 xorps xmm1, xmm1 + +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); + + 00013 f3 41 0f 6f 68 + 50 movdqu xmm5, XMMWORD PTR [r8+80] + 00019 f3 41 0f 6f 60 + 30 movdqu xmm4, XMMWORD PTR [r8+48] + 0001f f3 41 0f 6f 10 movdqu xmm2, XMMWORD PTR [r8] + 00024 41 0f 29 73 e8 movaps XMMWORD PTR [r11-24], xmm6 + 00029 41 0f 29 7b d8 movaps XMMWORD PTR [r11-40], xmm7 + 0002e f3 41 0f 6f 78 + 20 movdqu xmm7, XMMWORD PTR [r8+32] + 00034 45 0f 29 43 c8 movaps XMMWORD PTR [r11-56], xmm8 + +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); + + 00039 66 0f 6f f7 movdqa xmm6, xmm7 + 0003d 66 41 0f 69 78 + 60 punpckhwd xmm7, XMMWORD PTR [r8+96] + 00043 66 41 0f 61 70 + 60 punpcklwd xmm6, XMMWORD PTR [r8+96] + 00049 66 0f 6f c7 movdqa xmm0, xmm7 + 0004d 66 0f f5 05 00 + 00 00 00 pmaddwd xmm0, XMMWORD PTR __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 + 00055 66 0f f5 3d 00 + 00 00 00 pmaddwd xmm7, XMMWORD PTR __xmm@08a914e808a914e808a914e808a914e8 + 0005d f3 45 0f 6f 40 + 70 movdqu xmm8, XMMWORD PTR [r8+112] + 00063 45 0f 29 4b b8 movaps XMMWORD PTR [r11-72], xmm9 + 00068 45 0f 29 53 a8 movaps XMMWORD PTR [r11-88], xmm10 + 0006d 45 0f 29 5b 98 movaps XMMWORD PTR [r11-104], xmm11 + 00072 45 0f 29 63 88 movaps XMMWORD PTR [r11-120], xmm12 + 00077 45 0f 29 ab 78 + ff ff ff movaps XMMWORD PTR [r11-136], xmm13 + 0007f 45 0f 29 b3 68 + ff ff ff movaps XMMWORD PTR [r11-152], xmm14 + 00087 45 0f 29 bb 58 + ff ff ff movaps XMMWORD PTR [r11-168], xmm15 + 0008f 66 45 0f 6f d0 movdqa xmm10, xmm8 + 00094 66 0f 7f 44 24 + 60 movdqa XMMWORD PTR t2e_h$1$[rsp], xmm0 + 0009a 66 44 0f 6f f6 movdqa xmm14, xmm6 + 0009f 66 0f f5 35 00 + 00 00 00 pmaddwd xmm6, XMMWORD PTR __xmm@08a914e808a914e808a914e808a914e8 + 000a7 66 45 0f 6f d8 movdqa xmm11, xmm8 + 000ac f3 41 0f 6f 40 + 40 movdqu xmm0, XMMWORD PTR [r8+64] + 000b2 66 44 0f fd c3 paddw xmm8, xmm3 + 000b7 66 44 0f f5 35 + 00 00 00 00 pmaddwd xmm14, XMMWORD PTR __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 + 000c0 66 0f fd c2 paddw xmm0, xmm2 + 000c4 66 41 0f f9 50 + 40 psubw xmm2, XMMWORD PTR [r8+64] + 000ca 45 0f 57 ff xorps xmm15, xmm15 + 000ce 66 0f 61 c8 punpcklwd xmm1, xmm0 + 000d2 66 0f 72 e1 04 psrad xmm1, 4 + 000d7 66 0f 7f 4c 24 + 30 movdqa XMMWORD PTR row4$2$[rsp], xmm1 + 000dd 0f 57 c9 xorps xmm1, xmm1 + 000e0 66 0f 69 c8 punpckhwd xmm1, xmm0 + 000e4 0f 57 c0 xorps xmm0, xmm0 + 000e7 66 0f 61 c2 punpcklwd xmm0, xmm2 + 000eb 66 0f 72 e0 04 psrad xmm0, 4 + 000f0 66 0f 7f 44 24 + 50 movdqa XMMWORD PTR row5$2$[rsp], xmm0 + 000f6 66 41 0f 6f c0 movdqa xmm0, xmm8 + 000fb 66 0f 72 e1 04 psrad xmm1, 4 + 00100 66 44 0f 61 d4 punpcklwd xmm10, xmm4 + 00105 66 44 0f 69 fa punpckhwd xmm15, xmm2 + 0010a 66 45 0f 6f ea movdqa xmm13, xmm10 + 0010f 66 44 0f f5 2d + 00 00 00 00 pmaddwd xmm13, XMMWORD PTR __xmm@e09ee565e09ee565e09ee565e09ee565 + 00118 66 44 0f f5 15 + 00 00 00 00 pmaddwd xmm10, XMMWORD PTR __xmm@11c8e09e11c8e09e11c8e09e11c8e09e + 00121 66 0f 7f 74 24 + 20 movdqa XMMWORD PTR t3e_l$1$[rsp], xmm6 + 00127 66 0f 6f f5 movdqa xmm6, xmm5 + 0012b 66 0f 61 f3 punpcklwd xmm6, xmm3 + 0012f 66 0f 7f 7c 24 + 40 movdqa XMMWORD PTR t3e_h$1$[rsp], xmm7 + 00135 66 44 0f 6f ce movdqa xmm9, xmm6 + 0013a 66 44 0f f5 0d + 00 00 00 00 pmaddwd xmm9, XMMWORD PTR __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d + 00143 66 0f 6f fd movdqa xmm7, xmm5 + 00147 66 0f 69 fb punpckhwd xmm7, xmm3 + 0014b 66 0f fd ec paddw xmm5, xmm4 + 0014f 66 0f 61 c5 punpcklwd xmm0, xmm5 + 00153 66 0f 6f df movdqa xmm3, xmm7 + 00157 66 0f f5 1d 00 + 00 00 00 pmaddwd xmm3, XMMWORD PTR __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d + 0015f 66 44 0f 69 dc punpckhwd xmm11, xmm4 + 00164 66 44 0f 69 c5 punpckhwd xmm8, xmm5 + 00169 66 45 0f 6f e3 movdqa xmm12, xmm11 + 0016e 66 44 0f f5 25 + 00 00 00 00 pmaddwd xmm12, XMMWORD PTR __xmm@e09ee565e09ee565e09ee565e09ee565 + 00177 66 41 0f 6f d0 movdqa xmm2, xmm8 + 0017c 66 0f f5 15 00 + 00 00 00 pmaddwd xmm2, XMMWORD PTR __xmm@12d0046b12d0046b12d0046b12d0046b + 00184 66 44 0f f5 05 + 00 00 00 00 pmaddwd xmm8, XMMWORD PTR __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 + 0018d 66 44 0f f5 1d + 00 00 00 00 pmaddwd xmm11, XMMWORD PTR __xmm@11c8e09e11c8e09e11c8e09e11c8e09e + 00196 66 0f 7f 4c 24 + 10 movdqa XMMWORD PTR abiased_h$1$[rsp], xmm1 + 0019c 66 0f 6f c8 movdqa xmm1, xmm0 + 001a0 66 0f f5 05 00 + 00 00 00 pmaddwd xmm0, XMMWORD PTR __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 + 001a8 66 0f f5 0d 00 + 00 00 00 pmaddwd xmm1, XMMWORD PTR __xmm@12d0046b12d0046b12d0046b12d0046b + 001b0 66 44 0f fe e2 paddd xmm12, xmm2 + 001b5 66 44 0f 7f 74 + 24 70 movdqa XMMWORD PTR t2e_l$1$[rsp], xmm14 + 001bc 66 41 0f fe d8 paddd xmm3, xmm8 + 001c1 66 41 0f 72 e7 + 04 psrad xmm15, 4 + 001c7 66 44 0f fe c8 paddd xmm9, xmm0 + 001cc 66 44 0f fe d0 paddd xmm10, xmm0 + 001d1 66 44 0f fe e9 paddd xmm13, xmm1 + 001d6 66 0f f5 35 00 + 00 00 00 pmaddwd xmm6, XMMWORD PTR __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 + 001de 66 45 0f fe d8 paddd xmm11, xmm8 + 001e3 66 0f 6f 25 00 + 00 00 00 movdqa xmm4, XMMWORD PTR __xmm@00000200000002000000020000000200 + 001eb 66 0f f5 3d 00 + 00 00 00 pmaddwd xmm7, XMMWORD PTR __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 + 001f3 66 44 0f 6f 44 + 24 30 movdqa xmm8, XMMWORD PTR row4$2$[rsp] + 001fa 66 44 0f fe 44 + 24 20 paddd xmm8, XMMWORD PTR t3e_l$1$[rsp] + 00201 66 0f fe f1 paddd xmm6, xmm1 + 00205 66 44 0f fe c4 paddd xmm8, xmm4 + 0020a 66 0f 6f 4c 24 + 10 movdqa xmm1, XMMWORD PTR abiased_h$1$[rsp] + 00210 66 0f fe 4c 24 + 40 paddd xmm1, XMMWORD PTR t3e_h$1$[rsp] + 00216 66 0f fe fa paddd xmm7, xmm2 + 0021a 66 0f fe cc paddd xmm1, xmm4 + 0021e 66 41 0f 6f d0 movdqa xmm2, xmm8 + 00223 66 0f fe d6 paddd xmm2, xmm6 + 00227 66 0f 6f c1 movdqa xmm0, xmm1 + 0022b 66 0f fa cf psubd xmm1, xmm7 + 0022f 66 0f 72 e2 0a psrad xmm2, 10 + 00234 66 0f fe c7 paddd xmm0, xmm7 + 00238 66 0f 72 e1 0a psrad xmm1, 10 + 0023d 66 0f 72 e0 0a psrad xmm0, 10 + 00242 66 44 0f fa c6 psubd xmm8, xmm6 + 00247 66 0f 6f 74 24 + 50 movdqa xmm6, XMMWORD PTR row5$2$[rsp] + 0024d 66 0f 6b d0 packssdw xmm2, xmm0 + 00251 66 0f 6f ee movdqa xmm5, xmm6 + 00255 66 0f fa 74 24 + 70 psubd xmm6, XMMWORD PTR t2e_l$1$[rsp] + 0025b 66 41 0f fe ee paddd xmm5, xmm14 + 00260 66 0f fe ec paddd xmm5, xmm4 + 00264 66 0f 7f 14 24 movdqa XMMWORD PTR y5o_h$1$[rsp], xmm2 + 00269 66 0f 6f 54 24 + 30 movdqa xmm2, XMMWORD PTR row4$2$[rsp] + 0026f 66 0f fe f4 paddd xmm6, xmm4 + 00273 66 0f fa 54 24 + 20 psubd xmm2, XMMWORD PTR t3e_l$1$[rsp] + 00279 66 44 0f 6f f5 movdqa xmm14, xmm5 + 0027e 66 0f fe 15 00 + 00 00 00 paddd xmm2, XMMWORD PTR __xmm@00000200000002000000020000000200 + 00286 66 45 0f fe f2 paddd xmm14, xmm10 + 0028b 66 41 0f fa ea psubd xmm5, xmm10 + 00290 66 41 0f 72 e0 + 0a psrad xmm8, 10 + 00296 66 44 0f 6b c1 packssdw xmm8, xmm1 + 0029b 66 41 0f 6f cf movdqa xmm1, xmm15 + 002a0 66 0f fe 4c 24 + 60 paddd xmm1, XMMWORD PTR t2e_h$1$[rsp] + 002a6 66 44 0f fa 7c + 24 60 psubd xmm15, XMMWORD PTR t2e_h$1$[rsp] + 002ad 66 0f fe cc paddd xmm1, xmm4 + 002b1 66 0f 6f c1 movdqa xmm0, xmm1 + 002b5 66 41 0f 72 e6 + 0a psrad xmm14, 10 + 002bb 66 41 0f fe c3 paddd xmm0, xmm11 + 002c0 66 0f 72 e5 0a psrad xmm5, 10 + 002c5 66 0f 72 e0 0a psrad xmm0, 10 + 002ca 66 44 0f fe fc paddd xmm15, xmm4 + 002cf 66 44 0f 6b f0 packssdw xmm14, xmm0 + 002d4 66 41 0f fa cb psubd xmm1, xmm11 + 002d9 66 0f 72 e1 0a psrad xmm1, 10 + 002de 66 0f 6f e6 movdqa xmm4, xmm6 + 002e2 66 0f 6b e9 packssdw xmm5, xmm1 + 002e6 66 41 0f 6f c7 movdqa xmm0, xmm15 + 002eb 66 0f 6f 4c 24 + 10 movdqa xmm1, XMMWORD PTR abiased_h$1$[rsp] + 002f1 66 0f fe c3 paddd xmm0, xmm3 + 002f5 66 0f fa 4c 24 + 40 psubd xmm1, XMMWORD PTR t3e_h$1$[rsp] + 002fb 66 44 0f fa fb psubd xmm15, xmm3 + 00300 66 0f fe 0d 00 + 00 00 00 paddd xmm1, XMMWORD PTR __xmm@00000200000002000000020000000200 + 00308 66 0f 6f da movdqa xmm3, xmm2 + 0030c 66 0f 72 e0 0a psrad xmm0, 10 + 00311 66 41 0f fe e1 paddd xmm4, xmm9 + 00316 66 41 0f fe dd paddd xmm3, xmm13 + 0031b 66 0f 72 e4 0a psrad xmm4, 10 + 00320 66 0f 6b e0 packssdw xmm4, xmm0 + 00324 66 41 0f fa d5 psubd xmm2, xmm13 + 00329 66 0f 6f c1 movdqa xmm0, xmm1 + 0032d 66 0f 72 e3 0a psrad xmm3, 10 + 00332 66 41 0f fe c4 paddd xmm0, xmm12 + 00337 66 0f 72 e2 0a psrad xmm2, 10 + 0033c 66 0f 72 e0 0a psrad xmm0, 10 + 00341 66 41 0f fa f1 psubd xmm6, xmm9 + 00346 66 41 0f fa cc psubd xmm1, xmm12 + 0034b 66 0f 6b d8 packssdw xmm3, xmm0 + +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); + + 0034f 66 0f 6f 04 24 movdqa xmm0, XMMWORD PTR y5o_h$1$[rsp] + 00354 66 0f 72 e1 0a psrad xmm1, 10 + 00359 66 0f 6f f8 movdqa xmm7, xmm0 + 0035d 66 0f 72 e6 0a psrad xmm6, 10 + 00362 66 41 0f 72 e7 + 0a psrad xmm15, 10 + 00368 66 0f 6b d1 packssdw xmm2, xmm1 + 0036c 66 0f 61 fa punpcklwd xmm7, xmm2 + 00370 66 41 0f 6b f7 packssdw xmm6, xmm15 + 00375 66 0f 69 c2 punpckhwd xmm0, xmm2 + +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); + + 00379 66 0f 6f cb movdqa xmm1, xmm3 + 0037d 66 0f 7f 04 24 movdqa XMMWORD PTR y5o_h$1$[rsp], xmm0 + 00382 66 41 0f 6f d6 movdqa xmm2, xmm14 + 00387 66 41 0f 61 c8 punpcklwd xmm1, xmm8 + 0038c 66 0f 6f c4 movdqa xmm0, xmm4 + 00390 66 0f 61 c5 punpcklwd xmm0, xmm5 + 00394 66 0f 61 d6 punpcklwd xmm2, xmm6 + 00398 66 41 0f 69 d8 punpckhwd xmm3, xmm8 + +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); + + 0039d 66 44 0f 6f 04 + 24 movdqa xmm8, XMMWORD PTR y5o_h$1$[rsp] + 003a3 66 44 0f 69 f6 punpckhwd xmm14, xmm6 + 003a8 66 0f 6f f7 movdqa xmm6, xmm7 + 003ac 66 0f 61 f0 punpcklwd xmm6, xmm0 + 003b0 66 0f 69 f8 punpckhwd xmm7, xmm0 + 003b4 66 0f 6f c2 movdqa xmm0, xmm2 + 003b8 66 0f 61 c1 punpcklwd xmm0, xmm1 + +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); + + 003bc 66 44 0f 6f ff movdqa xmm15, xmm7 + 003c1 66 0f 69 d1 punpckhwd xmm2, xmm1 + 003c5 66 41 0f 6f ce movdqa xmm1, xmm14 + 003ca 66 0f 61 cb punpcklwd xmm1, xmm3 + 003ce 66 44 0f 69 f3 punpckhwd xmm14, xmm3 + 003d3 66 0f 6f de movdqa xmm3, xmm6 + 003d7 66 0f 61 d8 punpcklwd xmm3, xmm0 + 003db 66 0f 69 f0 punpckhwd xmm6, xmm0 + 003df 66 44 0f 61 fa punpcklwd xmm15, xmm2 + 003e4 66 0f 69 fa punpckhwd xmm7, xmm2 + +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); + + 003e8 66 45 0f 6f ef movdqa xmm13, xmm15 + 003ed 66 0f 69 e5 punpckhwd xmm4, xmm5 + 003f1 66 41 0f 6f e8 movdqa xmm5, xmm8 + 003f6 66 44 0f 69 c4 punpckhwd xmm8, xmm4 + 003fb 66 0f 61 ec punpcklwd xmm5, xmm4 + 003ff 66 41 0f 6f c0 movdqa xmm0, xmm8 + 00404 66 41 0f 61 c6 punpcklwd xmm0, xmm14 + 00409 66 0f 6f d5 movdqa xmm2, xmm5 + 0040d 66 0f 61 d1 punpcklwd xmm2, xmm1 + 00411 66 44 0f 61 e8 punpcklwd xmm13, xmm0 + 00416 66 44 0f 69 f8 punpckhwd xmm15, xmm0 + 0041b 66 45 0f 6f cd movdqa xmm9, xmm13 + 00420 66 44 0f f5 0d + 00 00 00 00 pmaddwd xmm9, XMMWORD PTR __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 + 00429 66 0f 6f c2 movdqa xmm0, xmm2 + 0042d 66 44 0f f5 2d + 00 00 00 00 pmaddwd xmm13, XMMWORD PTR __xmm@08a914e808a914e808a914e808a914e8 + 00436 66 0f fd c3 paddw xmm0, xmm3 + 0043a 66 0f 69 e9 punpckhwd xmm5, xmm1 + 0043e 66 0f f9 da psubw xmm3, xmm2 + 00442 66 45 0f 69 c6 punpckhwd xmm8, xmm14 + 00447 0f 57 c9 xorps xmm1, xmm1 + 0044a 66 0f 61 c8 punpcklwd xmm1, xmm0 + 0044e 0f 57 d2 xorps xmm2, xmm2 + 00451 66 0f 69 d3 punpckhwd xmm2, xmm3 + 00455 66 41 0f 6f e0 movdqa xmm4, xmm8 + 0045a 66 0f 72 e1 04 psrad xmm1, 4 + 0045f 45 0f 57 f6 xorps xmm14, xmm14 + 00463 66 44 0f 69 f0 punpckhwd xmm14, xmm0 + 00468 66 44 0f 6f dd movdqa xmm11, xmm5 + 0046d 0f 57 c0 xorps xmm0, xmm0 + 00470 66 0f 72 e2 04 psrad xmm2, 4 + 00475 66 0f 61 c3 punpcklwd xmm0, xmm3 + 00479 66 44 0f 6f e5 movdqa xmm12, xmm5 + 0047e 66 0f 72 e0 04 psrad xmm0, 4 + 00483 66 41 0f 6f d8 movdqa xmm3, xmm8 + 00488 66 0f 7f 44 24 + 30 movdqa XMMWORD PTR abiased_l$1$[rsp], xmm0 + 0048e 66 44 0f fd c6 paddw xmm8, xmm6 + 00493 66 41 0f 6f c0 movdqa xmm0, xmm8 + 00498 66 0f 7f 4c 24 + 20 movdqa XMMWORD PTR p2$1$[rsp], xmm1 + 0049e 66 0f fd ef paddw xmm5, xmm7 + 004a2 66 0f 7f 54 24 + 10 movdqa XMMWORD PTR abiased_h$1$[rsp], xmm2 + 004a8 66 0f 61 c5 punpcklwd xmm0, xmm5 + 004ac 66 45 0f 6f d7 movdqa xmm10, xmm15 + 004b1 66 44 0f f5 15 + 00 00 00 00 pmaddwd xmm10, XMMWORD PTR __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 + 004ba 66 0f 6f c8 movdqa xmm1, xmm0 + 004be 66 0f f5 0d 00 + 00 00 00 pmaddwd xmm1, XMMWORD PTR __xmm@12d0046b12d0046b12d0046b12d0046b + 004c6 66 44 0f f5 3d + 00 00 00 00 pmaddwd xmm15, XMMWORD PTR __xmm@08a914e808a914e808a914e808a914e8 + 004cf 66 0f f5 05 00 + 00 00 00 pmaddwd xmm0, XMMWORD PTR __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 + 004d7 66 44 0f 69 c5 punpckhwd xmm8, xmm5 + 004dc 66 41 0f 6f d0 movdqa xmm2, xmm8 + 004e1 66 41 0f 72 e6 + 04 psrad xmm14, 4 + 004e7 66 0f f5 15 00 + 00 00 00 pmaddwd xmm2, XMMWORD PTR __xmm@12d0046b12d0046b12d0046b12d0046b + 004ef 66 0f 61 df punpcklwd xmm3, xmm7 + 004f3 66 0f 69 e7 punpckhwd xmm4, xmm7 + 004f7 66 44 0f 61 de punpcklwd xmm11, xmm6 + 004fc 66 44 0f 69 e6 punpckhwd xmm12, xmm6 + 00501 66 44 0f f5 05 + 00 00 00 00 pmaddwd xmm8, XMMWORD PTR __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 + 0050a 66 0f 6f ec movdqa xmm5, xmm4 + 0050e 66 0f f5 25 00 + 00 00 00 pmaddwd xmm4, XMMWORD PTR __xmm@11c8e09e11c8e09e11c8e09e11c8e09e + 00516 66 41 0f 6f fc movdqa xmm7, xmm12 + 0051b 66 44 0f f5 25 + 00 00 00 00 pmaddwd xmm12, XMMWORD PTR __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 + 00524 66 0f 6f f3 movdqa xmm6, xmm3 + 00528 66 0f f5 1d 00 + 00 00 00 pmaddwd xmm3, XMMWORD PTR __xmm@11c8e09e11c8e09e11c8e09e11c8e09e + 00530 66 0f f5 2d 00 + 00 00 00 pmaddwd xmm5, XMMWORD PTR __xmm@e09ee565e09ee565e09ee565e09ee565 + 00538 66 0f f5 35 00 + 00 00 00 pmaddwd xmm6, XMMWORD PTR __xmm@e09ee565e09ee565e09ee565e09ee565 + 00540 66 0f f5 3d 00 + 00 00 00 pmaddwd xmm7, XMMWORD PTR __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d + 00548 66 44 0f fe e2 paddd xmm12, xmm2 + 0054d 66 44 0f 7f 04 + 24 movdqa XMMWORD PTR y5o_h$1$[rsp], xmm8 + 00553 66 0f fe 24 24 paddd xmm4, XMMWORD PTR y5o_h$1$[rsp] + 00558 66 0f fe d8 paddd xmm3, xmm0 + 0055c 66 0f fe ea paddd xmm5, xmm2 + 00560 66 44 0f 7f 64 + 24 40 movdqa XMMWORD PTR x7_h$1$[rsp], xmm12 + 00567 66 0f 6f 54 24 + 30 movdqa xmm2, XMMWORD PTR abiased_l$1$[rsp] + 0056d 66 0f fe f1 paddd xmm6, xmm1 + 00571 66 0f fe 3c 24 paddd xmm7, XMMWORD PTR y5o_h$1$[rsp] + 00576 66 45 0f 6f c3 movdqa xmm8, xmm11 + 0057b 66 44 0f f5 1d + 00 00 00 00 pmaddwd xmm11, XMMWORD PTR __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 + 00584 66 44 0f 6f e2 movdqa xmm12, xmm2 + 00589 66 44 0f f5 05 + 00 00 00 00 pmaddwd xmm8, XMMWORD PTR __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d + 00592 66 41 0f fa d1 psubd xmm2, xmm9 + 00597 66 45 0f fe e1 paddd xmm12, xmm9 + 0059c 66 0f 7f 64 24 + 50 movdqa XMMWORD PTR x6_h$1$[rsp], xmm4 + 005a2 66 44 0f 6f 4c + 24 10 movdqa xmm9, XMMWORD PTR abiased_h$1$[rsp] + 005a9 66 41 0f 6f e6 movdqa xmm4, xmm14 + 005ae 66 45 0f fa ca psubd xmm9, xmm10 + 005b3 66 0f 7f 5c 24 + 60 movdqa XMMWORD PTR x6_l$1$[rsp], xmm3 + 005b9 66 0f 6f 5c 24 + 10 movdqa xmm3, XMMWORD PTR abiased_h$1$[rsp] + 005bf 66 44 0f fe d9 paddd xmm11, xmm1 + 005c4 66 0f 6f 0d 00 + 00 00 00 movdqa xmm1, XMMWORD PTR __xmm@01010000010100000101000001010000 + 005cc 66 44 0f fe c0 paddd xmm8, xmm0 + 005d1 66 0f 6f 44 24 + 20 movdqa xmm0, XMMWORD PTR p2$1$[rsp] + 005d7 66 44 0f fe c9 paddd xmm9, xmm1 + 005dc 66 0f fe d1 paddd xmm2, xmm1 + 005e0 66 44 0f 7f 4c + 24 10 movdqa XMMWORD PTR abiased_h$1$[rsp], xmm9 + 005e7 66 44 0f fe e1 paddd xmm12, xmm1 + 005ec 66 44 0f 7f 5c + 24 70 movdqa XMMWORD PTR x7_l$1$[rsp], xmm11 + 005f3 66 44 0f 6f d8 movdqa xmm11, xmm0 + 005f8 66 0f 7f 54 24 + 30 movdqa XMMWORD PTR abiased_l$1$[rsp], xmm2 + 005fe 66 41 0f fa c5 psubd xmm0, xmm13 + 00603 66 41 0f fe d0 paddd xmm2, xmm8 + 00608 66 0f fe c1 paddd xmm0, xmm1 + 0060c 66 0f 72 e2 11 psrad xmm2, 17 + 00611 66 0f 7f 44 24 + 20 movdqa XMMWORD PTR p2$1$[rsp], xmm0 + 00617 66 45 0f fe dd paddd xmm11, xmm13 + 0061c 66 44 0f fe d9 paddd xmm11, xmm1 + 00621 66 41 0f fe e7 paddd xmm4, xmm15 + 00626 66 0f fe e1 paddd xmm4, xmm1 + 0062a 66 45 0f 6f cb movdqa xmm9, xmm11 + 0062f 66 44 0f fe 4c + 24 70 paddd xmm9, XMMWORD PTR x7_l$1$[rsp] + 00636 66 0f 6f c4 movdqa xmm0, xmm4 + 0063a 66 0f fe 44 24 + 40 paddd xmm0, XMMWORD PTR x7_h$1$[rsp] + 00640 66 41 0f fe da paddd xmm3, xmm10 + 00645 66 0f 72 e0 11 psrad xmm0, 17 + 0064a 66 0f fe d9 paddd xmm3, xmm1 + 0064e 66 41 0f 72 e1 + 11 psrad xmm9, 17 + 00654 66 45 0f fa f7 psubd xmm14, xmm15 + 00659 66 44 0f 6b c8 packssdw xmm9, xmm0 + 0065e 66 44 0f fe f1 paddd xmm14, xmm1 + 00663 66 0f 6f c3 movdqa xmm0, xmm3 + 00667 66 41 0f 6f cc movdqa xmm1, xmm12 + 0066c 66 0f fe 44 24 + 50 paddd xmm0, XMMWORD PTR x6_h$1$[rsp] + 00672 66 0f fe 4c 24 + 60 paddd xmm1, XMMWORD PTR x6_l$1$[rsp] + 00678 66 0f 72 e0 11 psrad xmm0, 17 + 0067d 66 0f 72 e1 11 psrad xmm1, 17 + 00682 66 0f 6b c8 packssdw xmm1, xmm0 + 00686 66 0f 6f 44 24 + 10 movdqa xmm0, XMMWORD PTR abiased_h$1$[rsp] + 0068c 66 0f fe c7 paddd xmm0, xmm7 + +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + + 00690 66 44 0f 67 c9 packuswb xmm9, xmm1 + 00695 66 0f 6f 4c 24 + 20 movdqa xmm1, XMMWORD PTR p2$1$[rsp] + 0069b 66 0f 72 e0 11 psrad xmm0, 17 + 006a0 66 0f fe ce paddd xmm1, xmm6 + 006a4 66 0f 6b d0 packssdw xmm2, xmm0 + 006a8 66 41 0f 6f c6 movdqa xmm0, xmm14 + 006ad 66 0f fe c5 paddd xmm0, xmm5 + 006b1 66 0f 72 e1 11 psrad xmm1, 17 + 006b6 66 0f 72 e0 11 psrad xmm0, 17 + 006bb 66 0f 6b c8 packssdw xmm1, xmm0 + +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } + + 006bf 66 0f fa 64 24 + 40 psubd xmm4, XMMWORD PTR x7_h$1$[rsp] + 006c5 4d 8d 1b lea r11, QWORD PTR [r11] + 006c8 66 44 0f fa 64 + 24 60 psubd xmm12, XMMWORD PTR x6_l$1$[rsp] + 006cf 66 44 0f fa f5 psubd xmm14, xmm5 + 006d4 66 0f fa 5c 24 + 50 psubd xmm3, XMMWORD PTR x6_h$1$[rsp] + 006da 66 44 0f fa 5c + 24 70 psubd xmm11, XMMWORD PTR x7_l$1$[rsp] + 006e1 66 0f 6f 6c 24 + 10 movdqa xmm5, XMMWORD PTR abiased_h$1$[rsp] + 006e7 66 0f 6f 44 24 + 30 movdqa xmm0, XMMWORD PTR abiased_l$1$[rsp] + 006ed 66 0f fa ef psubd xmm5, xmm7 + 006f1 41 0f 28 7b d8 movaps xmm7, XMMWORD PTR [r11-40] + 006f6 66 41 0f fa c0 psubd xmm0, xmm8 + 006fb 45 0f 28 43 c8 movaps xmm8, XMMWORD PTR [r11-56] + 00700 45 0f 28 53 a8 movaps xmm10, XMMWORD PTR [r11-88] + 00705 45 0f 28 ab 78 + ff ff ff movaps xmm13, XMMWORD PTR [r11-136] + 0070d 45 0f 28 bb 58 + ff ff ff movaps xmm15, XMMWORD PTR [r11-168] + 00715 66 0f 67 d1 packuswb xmm2, xmm1 + 00719 66 0f 6f 4c 24 + 20 movdqa xmm1, XMMWORD PTR p2$1$[rsp] + 0071f 66 0f 72 e0 11 psrad xmm0, 17 + 00724 66 0f fa ce psubd xmm1, xmm6 + 00728 41 0f 28 73 e8 movaps xmm6, XMMWORD PTR [r11-24] + 0072d 48 63 c2 movsxd rax, edx + 00730 66 0f 72 e4 11 psrad xmm4, 17 + 00735 66 0f 72 e1 11 psrad xmm1, 17 + 0073a 66 0f 72 e3 11 psrad xmm3, 17 + 0073f 66 41 0f 72 e4 + 11 psrad xmm12, 17 + 00745 66 44 0f 6b e3 packssdw xmm12, xmm3 + 0074a 66 41 0f 72 e6 + 11 psrad xmm14, 17 + 00750 66 41 0f 6b ce packssdw xmm1, xmm14 + 00755 45 0f 28 b3 68 + ff ff ff movaps xmm14, XMMWORD PTR [r11-152] + 0075d 66 41 0f 72 e3 + 11 psrad xmm11, 17 + 00763 66 44 0f 6b dc packssdw xmm11, xmm4 + 00768 66 41 0f 6f e1 movdqa xmm4, xmm9 + 0076d 66 45 0f 67 e3 packuswb xmm12, xmm11 + 00772 45 0f 28 5b 98 movaps xmm11, XMMWORD PTR [r11-104] + 00777 66 0f 72 e5 11 psrad xmm5, 17 + 0077c 66 0f 6b c5 packssdw xmm0, xmm5 + 00780 66 0f 67 c8 packuswb xmm1, xmm0 + 00784 66 0f 6f c2 movdqa xmm0, xmm2 + 00788 66 41 0f 60 c4 punpcklbw xmm0, xmm12 + 0078d 66 0f 60 e1 punpcklbw xmm4, xmm1 + 00791 66 44 0f 68 c9 punpckhbw xmm9, xmm1 + 00796 66 0f 6f dc movdqa xmm3, xmm4 + 0079a 66 0f 60 d8 punpcklbw xmm3, xmm0 + 0079e 66 0f 68 e0 punpckhbw xmm4, xmm0 + 007a2 66 0f 6f cb movdqa xmm1, xmm3 + 007a6 66 41 0f 68 d4 punpckhbw xmm2, xmm12 + 007ab 66 41 0f 6f c1 movdqa xmm0, xmm9 + 007b0 45 0f 28 63 88 movaps xmm12, XMMWORD PTR [r11-120] + 007b5 66 0f 60 c2 punpcklbw xmm0, xmm2 + 007b9 66 0f 60 c8 punpcklbw xmm1, xmm0 + 007bd 66 0f d6 09 movq QWORD PTR [rcx], xmm1 + 007c1 48 03 c8 add rcx, rax + 007c4 66 0f 68 d8 punpckhbw xmm3, xmm0 + 007c8 66 44 0f 68 ca punpckhbw xmm9, xmm2 + 007cd 66 0f 6f d4 movdqa xmm2, xmm4 + 007d1 66 41 0f 60 d1 punpcklbw xmm2, xmm9 + 007d6 66 41 0f 68 e1 punpckhbw xmm4, xmm9 + 007db 45 0f 28 4b b8 movaps xmm9, XMMWORD PTR [r11-72] + 007e0 66 0f 70 c1 4e pshufd xmm0, xmm1, 78 ; 0000004eH + 007e5 66 0f d6 01 movq QWORD PTR [rcx], xmm0 + 007e9 48 03 c8 add rcx, rax + 007ec 66 0f 70 c3 4e pshufd xmm0, xmm3, 78 ; 0000004eH + 007f1 66 0f d6 19 movq QWORD PTR [rcx], xmm3 + 007f5 48 03 c8 add rcx, rax + 007f8 66 0f d6 01 movq QWORD PTR [rcx], xmm0 + 007fc 48 03 c8 add rcx, rax + 007ff 66 0f 70 c2 4e pshufd xmm0, xmm2, 78 ; 0000004eH + 00804 66 0f d6 11 movq QWORD PTR [rcx], xmm2 + 00808 48 03 c8 add rcx, rax + 0080b 66 0f d6 01 movq QWORD PTR [rcx], xmm0 + 0080f 48 03 c8 add rcx, rax + 00812 66 0f 70 c4 4e pshufd xmm0, xmm4, 78 ; 0000004eH + 00817 66 0f d6 21 movq QWORD PTR [rcx], xmm4 + 0081b 66 0f d6 04 08 movq QWORD PTR [rax+rcx], xmm0 + 00820 49 8b e3 mov rsp, r11 + 00823 c3 ret 0 +stbi__idct_simd ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get_marker +_TEXT SEGMENT +j$ = 48 +stbi__get_marker PROC ; COMDAT + +; 2393 : { + + 00000 40 57 push rdi + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + + 00006 0f b6 81 28 48 + 00 00 movzx eax, BYTE PTR [rcx+18472] + 0000d 48 8b f9 mov rdi, rcx + 00010 3c ff cmp al, 255 ; 000000ffH + 00012 74 0d je SHORT $LN4@stbi__get_ + 00014 c6 81 28 48 00 + 00 ff mov BYTE PTR [rcx+18472], 255 ; 000000ffH + +; 2401 : } + + 0001b 48 83 c4 20 add rsp, 32 ; 00000020H + 0001f 5f pop rdi + 00020 c3 ret 0 +$LN4@stbi__get_: + 00021 48 89 5c 24 30 mov QWORD PTR [rsp+48], rbx + +; 2396 : x = stbi__get8(j->s); + + 00026 48 8b 19 mov rbx, QWORD PTR [rcx] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00029 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00030 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00037 72 15 jb SHORT $LN29@stbi__get_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00039 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0003d 74 79 je SHORT $LN18@stbi__get_ + +; 1080 : stbi__refill_buffer(s); + + 0003f 48 8b cb mov rcx, rbx + 00042 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00047 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN29@stbi__get_: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 0004e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00051 48 ff c0 inc rax + 00054 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0005b 80 f9 ff cmp cl, 255 ; 000000ffH + 0005e 75 58 jne SHORT $LN18@stbi__get_ +$LL2@stbi__get_: + +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes + + 00060 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00063 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0006a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00071 72 15 jb SHORT $LN30@stbi__get_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00073 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00077 74 2f je SHORT $LN13@stbi__get_ + +; 1080 : stbi__refill_buffer(s); + + 00079 48 8b cb mov rcx, rbx + 0007c e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00081 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN30@stbi__get_: + +; 2398 : while (x == 0xff) + + 00088 0f b6 08 movzx ecx, BYTE PTR [rax] + 0008b 48 ff c0 inc rax + 0008e 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00095 80 f9 ff cmp cl, 255 ; 000000ffH + 00098 74 c6 je SHORT $LL2@stbi__get_ + +; 2400 : return x; + + 0009a 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0009f 0f b6 c1 movzx eax, cl + +; 2401 : } + + 000a2 48 83 c4 20 add rsp, 32 ; 00000020H + 000a6 5f pop rdi + 000a7 c3 ret 0 +$LN13@stbi__get_: + 000a8 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + +; 1083 : return 0; + + 000ad 32 c9 xor cl, cl + +; 2400 : return x; + + 000af 0f b6 c1 movzx eax, cl + +; 2401 : } + + 000b2 48 83 c4 20 add rsp, 32 ; 00000020H + 000b6 5f pop rdi + 000b7 c3 ret 0 +$LN18@stbi__get_: + 000b8 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 000bd b0 ff mov al, 255 ; 000000ffH + +; 2401 : } + + 000bf 48 83 c4 20 add rsp, 32 ; 00000020H + 000c3 5f pop rdi + 000c4 c3 ret 0 +stbi__get_marker ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_reset +_TEXT SEGMENT +j$ = 8 +stbi__jpeg_reset PROC ; COMDAT + +; 2411 : j->code_bits = 0; + + 00000 45 33 c0 xor r8d, r8d + +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; + + 00003 c6 81 28 48 00 + 00 ff mov BYTE PTR [rcx+18472], 255 ; 000000ffH + 0000a 44 89 81 d8 47 + 00 00 mov DWORD PTR [rcx+18392], r8d + +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 00011 ba ff ff ff 7f mov edx, 2147483647 ; 7fffffffH + 00016 44 89 81 78 47 + 00 00 mov DWORD PTR [rcx+18296], r8d + 0001d 44 89 81 18 47 + 00 00 mov DWORD PTR [rcx+18200], r8d + 00024 44 89 81 b8 46 + 00 00 mov DWORD PTR [rcx+18104], r8d + 0002b 8b 81 68 48 00 + 00 mov eax, DWORD PTR [rcx+18536] + 00031 85 c0 test eax, eax + 00033 4c 89 81 20 48 + 00 00 mov QWORD PTR [rcx+18464], r8 + 0003a 0f 45 d0 cmovne edx, eax + 0003d 44 89 81 2c 48 + 00 00 mov DWORD PTR [rcx+18476], r8d + 00044 89 91 6c 48 00 + 00 mov DWORD PTR [rcx+18540], edx + +; 2417 : j->eob_run = 0; + + 0004a 44 89 81 44 48 + 00 00 mov DWORD PTR [rcx+18500], r8d + +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } + + 00051 c3 ret 0 +stbi__jpeg_reset ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__parse_entropy_coded_data +_TEXT SEGMENT +k$1$ = 64 +j$1$ = 68 +tv1823 = 72 +tv1822 = 72 +data$1 = 80 +data$2 = 80 +__$ArrayPad$ = 208 +z$ = 272 +stbi__parse_entropy_coded_data PROC ; COMDAT + +; 2423 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 48 89 6c 24 18 mov QWORD PTR [rsp+24], rbp + 0000a 48 89 74 24 20 mov QWORD PTR [rsp+32], rsi + 0000f 57 push rdi + 00010 41 54 push r12 + 00012 41 55 push r13 + 00014 41 56 push r14 + 00016 41 57 push r15 + 00018 48 81 ec e0 00 + 00 00 sub rsp, 224 ; 000000e0H + 0001f 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00026 48 33 c4 xor rax, rsp + 00029 48 89 84 24 d0 + 00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + + 00031 c7 81 d8 47 00 + 00 00 00 00 00 mov DWORD PTR [rcx+18392], 0 + +; 2423 : { + + 0003b 48 8b d9 mov rbx, rcx + +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + + 0003e c7 81 78 47 00 + 00 00 00 00 00 mov DWORD PTR [rcx+18296], 0 + 00048 c7 81 18 47 00 + 00 00 00 00 00 mov DWORD PTR [rcx+18200], 0 + 00052 c7 81 b8 46 00 + 00 00 00 00 00 mov DWORD PTR [rcx+18104], 0 + +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 0005c 8b 81 68 48 00 + 00 mov eax, DWORD PTR [rcx+18536] + 00062 85 c0 test eax, eax + 00064 48 c7 81 20 48 + 00 00 00 00 00 + 00 mov QWORD PTR [rcx+18464], 0 + 0006f c7 81 2c 48 00 + 00 00 00 00 00 mov DWORD PTR [rcx+18476], 0 + 00079 c6 81 28 48 00 + 00 ff mov BYTE PTR [rcx+18472], 255 ; 000000ffH + 00080 b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 00085 0f 45 c8 cmovne ecx, eax + +; 2417 : j->eob_run = 0; + + 00088 c7 83 44 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18500], 0 + +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { + + 00092 83 bb 30 48 00 + 00 00 cmp DWORD PTR [rbx+18480], 0 + 00099 8b 83 54 48 00 + 00 mov eax, DWORD PTR [rbx+18516] + +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 0009f 89 8b 6c 48 00 + 00 mov DWORD PTR [rbx+18540], ecx + +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { + + 000a5 0f 85 13 04 00 + 00 jne $LN44@stbi__pars + +; 2426 : if (z->scan_n == 1) { + + 000ab 83 f8 01 cmp eax, 1 + 000ae 0f 85 d2 01 00 + 00 jne $LN46@stbi__pars + +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; + + 000b4 4c 63 a3 58 48 + 00 00 movsxd r12, DWORD PTR [rbx+18520] + +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { + + 000bb 45 33 f6 xor r14d, r14d + 000be 4b 8d 34 64 lea rsi, QWORD PTR [r12+r12*2] + 000c2 48 c1 e6 05 shl rsi, 5 + 000c6 48 03 f3 add rsi, rbx + 000c9 44 8b be bc 46 + 00 00 mov r15d, DWORD PTR [rsi+18108] + 000d0 44 8b ae c0 46 + 00 00 mov r13d, DWORD PTR [rsi+18112] + 000d7 41 83 c7 07 add r15d, 7 + 000db 41 83 c5 07 add r13d, 7 + 000df 41 c1 ff 03 sar r15d, 3 + 000e3 41 c1 fd 03 sar r13d, 3 + 000e7 45 85 ed test r13d, r13d + 000ea 0f 8e 60 01 00 + 00 jle $LN271@stbi__pars +$LL4@stbi__pars: + +; 2437 : for (i = 0; i < w; ++i) { + + 000f0 33 ff xor edi, edi + 000f2 45 85 ff test r15d, r15d + 000f5 0f 8e 49 01 00 + 00 jle $LN2@stbi__pars + 000fb 33 ed xor ebp, ebp + 000fd 0f 1f 00 npad 3 +$LL7@stbi__pars: + +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + + 00100 48 63 8e b4 46 + 00 00 movsxd rcx, DWORD PTR [rsi+18100] + 00107 48 63 86 b0 46 + 00 00 movsxd rax, DWORD PTR [rsi+18096] + 0010e 48 8b d1 mov rdx, rcx + 00111 4c 63 96 ac 46 + 00 00 movsxd r10, DWORD PTR [rsi+18092] + 00118 48 c1 e2 0a shl rdx, 10 + 0011c 4c 69 c9 90 06 + 00 00 imul r9, rcx, 1680 ; 00000690H + 00123 4c 69 c0 90 06 + 00 00 imul r8, rax, 1680 ; 00000690H + 0012a 49 c1 e2 07 shl r10, 7 + 0012e 48 81 c2 88 36 + 00 00 add rdx, 13960 ; 00003688H + 00135 48 03 d3 add rdx, rbx + 00138 49 81 c2 88 34 + 00 00 add r10, 13448 ; 00003488H + 0013f 4c 03 d3 add r10, rbx + 00142 49 81 c1 48 1a + 00 00 add r9, 6728 ; 00001a48H + 00149 4c 89 54 24 30 mov QWORD PTR [rsp+48], r10 + 0014e 4c 03 cb add r9, rbx + 00151 44 89 64 24 28 mov DWORD PTR [rsp+40], r12d + 00156 48 8b cb mov rcx, rbx + 00159 49 83 c0 08 add r8, 8 + 0015d 48 89 54 24 20 mov QWORD PTR [rsp+32], rdx + 00162 4c 03 c3 add r8, rbx + 00165 48 8d 54 24 50 lea rdx, QWORD PTR data$2[rsp] + 0016a e8 00 00 00 00 call stbi__jpeg_decode_block + 0016f 85 c0 test eax, eax + 00171 0f 84 8f 06 00 + 00 je $LN224@stbi__pars + +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); + + 00177 8b 96 c4 46 00 + 00 mov edx, DWORD PTR [rsi+18116] + 0017d 4c 8d 44 24 50 lea r8, QWORD PTR data$2[rsp] + 00182 8b c2 mov eax, edx + 00184 41 0f af c6 imul eax, r14d + 00188 c1 e0 03 shl eax, 3 + 0018b 48 63 c8 movsxd rcx, eax + 0018e 48 03 8e d0 46 + 00 00 add rcx, QWORD PTR [rsi+18128] + 00195 48 63 c5 movsxd rax, ebp + 00198 48 03 c8 add rcx, rax + 0019b ff 93 70 48 00 + 00 call QWORD PTR [rbx+18544] + +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { + + 001a1 ff 8b 6c 48 00 + 00 dec DWORD PTR [rbx+18540] + 001a7 83 bb 6c 48 00 + 00 00 cmp DWORD PTR [rbx+18540], 0 + 001ae 0f 8f 82 00 00 + 00 jg $LN5@stbi__pars + +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + + 001b4 83 bb 24 48 00 + 00 18 cmp DWORD PTR [rbx+18468], 24 + 001bb 7d 08 jge SHORT $LN50@stbi__pars + 001bd 48 8b cb mov rcx, rbx + 001c0 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN50@stbi__pars: + +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; + + 001c5 0f b6 83 28 48 + 00 00 movzx eax, BYTE PTR [rbx+18472] + 001cc 04 30 add al, 48 ; 00000030H + 001ce 3c 07 cmp al, 7 + 001d0 77 7e ja SHORT $LN271@stbi__pars + +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + + 001d2 c7 83 d8 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18392], 0 + +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 001dc b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 001e1 c7 83 78 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18296], 0 + 001eb c7 83 18 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18200], 0 + 001f5 c7 83 b8 46 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18104], 0 + 001ff 8b 83 68 48 00 + 00 mov eax, DWORD PTR [rbx+18536] + 00205 85 c0 test eax, eax + 00207 48 c7 83 20 48 + 00 00 00 00 00 + 00 mov QWORD PTR [rbx+18464], 0 + 00212 0f 45 c8 cmovne ecx, eax + 00215 c7 83 2c 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18476], 0 + 0021f 89 8b 6c 48 00 + 00 mov DWORD PTR [rbx+18540], ecx + 00225 c6 83 28 48 00 + 00 ff mov BYTE PTR [rbx+18472], 255 ; 000000ffH + +; 2417 : j->eob_run = 0; + + 0022c c7 83 44 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18500], 0 +$LN5@stbi__pars: + +; 2437 : for (i = 0; i < w; ++i) { + + 00236 ff c7 inc edi + 00238 83 c5 08 add ebp, 8 + 0023b 41 3b ff cmp edi, r15d + 0023e 0f 8c bc fe ff + ff jl $LL7@stbi__pars +$LN2@stbi__pars: + +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { + + 00244 41 ff c6 inc r14d + 00247 45 3b f5 cmp r14d, r13d + 0024a 0f 8c a0 fe ff + ff jl $LL4@stbi__pars +$LN271@stbi__pars: + +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; + + 00250 b8 01 00 00 00 mov eax, 1 +$LN59@stbi__pars: + +; 2546 : } +; 2547 : } +; 2548 : } + + 00255 48 8b 8c 24 d0 + 00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0025d 48 33 cc xor rcx, rsp + 00260 e8 00 00 00 00 call __security_check_cookie + 00265 4c 8d 9c 24 e0 + 00 00 00 lea r11, QWORD PTR [rsp+224] + 0026d 49 8b 5b 38 mov rbx, QWORD PTR [r11+56] + 00271 49 8b 6b 40 mov rbp, QWORD PTR [r11+64] + 00275 49 8b 73 48 mov rsi, QWORD PTR [r11+72] + 00279 49 8b e3 mov rsp, r11 + 0027c 41 5f pop r15 + 0027e 41 5e pop r14 + 00280 41 5d pop r13 + 00282 41 5c pop r12 + 00284 5f pop rdi + 00285 c3 ret 0 +$LN46@stbi__pars: + +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { + + 00286 33 ed xor ebp, ebp + 00288 89 6c 24 44 mov DWORD PTR j$1$[rsp], ebp + 0028c 39 ab 94 46 00 + 00 cmp DWORD PTR [rbx+18068], ebp + 00292 7e bc jle SHORT $LN271@stbi__pars + 00294 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL10@stbi__pars: + +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { + + 002a0 45 33 ed xor r13d, r13d + 002a3 44 39 ab 90 46 + 00 00 cmp DWORD PTR [rbx+18064], r13d + 002aa 0f 8e f7 01 00 + 00 jle $LN8@stbi__pars +$LL13@stbi__pars: + +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { + + 002b0 33 d2 xor edx, edx + 002b2 89 54 24 40 mov DWORD PTR k$1$[rsp], edx + 002b6 39 93 54 48 00 + 00 cmp DWORD PTR [rbx+18516], edx + 002bc 0f 8e 3c 01 00 + 00 jle $LN15@stbi__pars + 002c2 48 8d 83 58 48 + 00 00 lea rax, QWORD PTR [rbx+18520] + 002c9 48 89 44 24 48 mov QWORD PTR tv1823[rsp], rax + 002ce 66 90 npad 2 +$LL16@stbi__pars: + +; 2460 : int n = z->order[k]; + + 002d0 4c 63 20 movsxd r12, DWORD PTR [rax] + +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { + + 002d3 45 33 ff xor r15d, r15d + 002d6 4b 8d 34 64 lea rsi, QWORD PTR [r12+r12*2] + 002da 48 c1 e6 05 shl rsi, 5 + 002de 48 03 f3 add rsi, rbx + 002e1 44 39 be a8 46 + 00 00 cmp DWORD PTR [rsi+18088], r15d + 002e8 0f 8e f0 00 00 + 00 jle $LN14@stbi__pars + 002ee 66 90 npad 2 +$LL19@stbi__pars: + +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { + + 002f0 8b be a4 46 00 + 00 mov edi, DWORD PTR [rsi+18084] + 002f6 45 33 f6 xor r14d, r14d + 002f9 85 ff test edi, edi + 002fb 0f 8e c9 00 00 + 00 jle $LN17@stbi__pars +$LL22@stbi__pars: + +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + + 00301 48 63 8e b4 46 + 00 00 movsxd rcx, DWORD PTR [rsi+18100] + 00308 48 63 86 b0 46 + 00 00 movsxd rax, DWORD PTR [rsi+18096] + 0030f 48 8b d1 mov rdx, rcx + 00312 4c 63 96 ac 46 + 00 00 movsxd r10, DWORD PTR [rsi+18092] + 00319 0f af ae a8 46 + 00 00 imul ebp, DWORD PTR [rsi+18088] + 00320 48 c1 e2 0a shl rdx, 10 + 00324 4c 69 c9 90 06 + 00 00 imul r9, rcx, 1680 ; 00000690H + 0032b 4c 69 c0 90 06 + 00 00 imul r8, rax, 1680 ; 00000690H + 00332 49 c1 e2 07 shl r10, 7 + 00336 48 81 c2 88 36 + 00 00 add rdx, 13960 ; 00003688H + 0033d 48 03 d3 add rdx, rbx + 00340 49 81 c2 88 34 + 00 00 add r10, 13448 ; 00003488H + 00347 4c 03 d3 add r10, rbx + 0034a 49 81 c1 48 1a + 00 00 add r9, 6728 ; 00001a48H + 00351 4c 89 54 24 30 mov QWORD PTR [rsp+48], r10 + 00356 4c 03 cb add r9, rbx + 00359 44 89 64 24 28 mov DWORD PTR [rsp+40], r12d + 0035e 48 8b cb mov rcx, rbx + 00361 49 83 c0 08 add r8, 8 + 00365 48 89 54 24 20 mov QWORD PTR [rsp+32], rdx + 0036a 4c 03 c3 add r8, rbx + 0036d 48 8d 54 24 50 lea rdx, QWORD PTR data$1[rsp] + 00372 41 03 ef add ebp, r15d + 00375 e8 00 00 00 00 call stbi__jpeg_decode_block + 0037a 85 c0 test eax, eax + 0037c 0f 84 84 04 00 + 00 je $LN224@stbi__pars + +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); + + 00382 8b 96 c4 46 00 + 00 mov edx, DWORD PTR [rsi+18116] + 00388 4c 8d 44 24 50 lea r8, QWORD PTR data$1[rsp] + 0038d 8b c2 mov eax, edx + 0038f 41 0f af fd imul edi, r13d + 00393 0f af c5 imul eax, ebp + 00396 41 03 fe add edi, r14d + 00399 c1 e0 03 shl eax, 3 + 0039c 48 98 cdqe + 0039e c1 e7 03 shl edi, 3 + 003a1 48 63 cf movsxd rcx, edi + 003a4 48 03 c8 add rcx, rax + 003a7 48 03 8e d0 46 + 00 00 add rcx, QWORD PTR [rsi+18128] + 003ae ff 93 70 48 00 + 00 call QWORD PTR [rbx+18544] + 003b4 8b be a4 46 00 + 00 mov edi, DWORD PTR [rsi+18084] + 003ba 41 ff c6 inc r14d + 003bd 8b 6c 24 44 mov ebp, DWORD PTR j$1$[rsp] + 003c1 44 3b f7 cmp r14d, edi + 003c4 0f 8c 37 ff ff + ff jl $LL22@stbi__pars +$LN17@stbi__pars: + +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { + + 003ca 41 ff c7 inc r15d + 003cd 44 3b be a8 46 + 00 00 cmp r15d, DWORD PTR [rsi+18088] + 003d4 0f 8c 16 ff ff + ff jl $LL19@stbi__pars + 003da 8b 54 24 40 mov edx, DWORD PTR k$1$[rsp] +$LN14@stbi__pars: + +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { + + 003de 48 8b 44 24 48 mov rax, QWORD PTR tv1823[rsp] + 003e3 ff c2 inc edx + 003e5 48 83 c0 04 add rax, 4 + 003e9 89 54 24 40 mov DWORD PTR k$1$[rsp], edx + 003ed 48 89 44 24 48 mov QWORD PTR tv1823[rsp], rax + 003f2 3b 93 54 48 00 + 00 cmp edx, DWORD PTR [rbx+18516] + 003f8 0f 8c d2 fe ff + ff jl $LL16@stbi__pars +$LN15@stbi__pars: + +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { + + 003fe ff 8b 6c 48 00 + 00 dec DWORD PTR [rbx+18540] + 00404 83 bb 6c 48 00 + 00 00 cmp DWORD PTR [rbx+18540], 0 + 0040b 0f 8f 86 00 00 + 00 jg $LN11@stbi__pars + +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + + 00411 83 bb 24 48 00 + 00 18 cmp DWORD PTR [rbx+18468], 24 + 00418 7d 08 jge SHORT $LN55@stbi__pars + 0041a 48 8b cb mov rcx, rbx + 0041d e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN55@stbi__pars: + +; 2477 : if (!STBI__RESTART(z->marker)) return 1; + + 00422 0f b6 83 28 48 + 00 00 movzx eax, BYTE PTR [rbx+18472] + 00429 04 30 add al, 48 ; 00000030H + 0042b 3c 07 cmp al, 7 + 0042d 0f 87 1d fe ff + ff ja $LN271@stbi__pars + +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + + 00433 c7 83 d8 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18392], 0 + +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 0043d b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 00442 c7 83 78 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18296], 0 + 0044c c7 83 18 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18200], 0 + 00456 c7 83 b8 46 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18104], 0 + 00460 8b 83 68 48 00 + 00 mov eax, DWORD PTR [rbx+18536] + 00466 85 c0 test eax, eax + 00468 48 c7 83 20 48 + 00 00 00 00 00 + 00 mov QWORD PTR [rbx+18464], 0 + 00473 0f 45 c8 cmovne ecx, eax + 00476 c7 83 2c 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18476], 0 + 00480 89 8b 6c 48 00 + 00 mov DWORD PTR [rbx+18540], ecx + 00486 c6 83 28 48 00 + 00 ff mov BYTE PTR [rbx+18472], 255 ; 000000ffH + +; 2417 : j->eob_run = 0; + + 0048d c7 83 44 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18500], 0 +$LN11@stbi__pars: + +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { + + 00497 41 ff c5 inc r13d + 0049a 44 3b ab 90 46 + 00 00 cmp r13d, DWORD PTR [rbx+18064] + 004a1 0f 8c 09 fe ff + ff jl $LL13@stbi__pars +$LN8@stbi__pars: + +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { + + 004a7 ff c5 inc ebp + 004a9 89 6c 24 44 mov DWORD PTR j$1$[rsp], ebp + 004ad 3b ab 94 46 00 + 00 cmp ebp, DWORD PTR [rbx+18068] + 004b3 0f 8c e7 fd ff + ff jl $LL10@stbi__pars + +; 2540 : if (!STBI__RESTART(z->marker)) return 1; + + 004b9 e9 92 fd ff ff jmp $LN271@stbi__pars +$LN44@stbi__pars: + +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { + + 004be 83 f8 01 cmp eax, 1 + 004c1 0f 85 81 01 00 + 00 jne $LN58@stbi__pars + +; 2487 : int i, j; +; 2488 : int n = z->order[0]; + + 004c7 4c 63 b3 58 48 + 00 00 movsxd r14, DWORD PTR [rbx+18520] + +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { + + 004ce 33 f6 xor esi, esi + 004d0 4f 8d 24 76 lea r12, QWORD PTR [r14+r14*2] + 004d4 49 c1 e4 05 shl r12, 5 + 004d8 41 8b ac 1c bc + 46 00 00 mov ebp, DWORD PTR [r12+rbx+18108] + 004e0 45 8b bc 1c c0 + 46 00 00 mov r15d, DWORD PTR [r12+rbx+18112] + 004e8 83 c5 07 add ebp, 7 + 004eb 41 83 c7 07 add r15d, 7 + 004ef c1 fd 03 sar ebp, 3 + 004f2 41 c1 ff 03 sar r15d, 3 + 004f6 45 85 ff test r15d, r15d + 004f9 0f 8e 51 fd ff + ff jle $LN271@stbi__pars + 004ff 90 npad 1 +$LL25@stbi__pars: + +; 2496 : for (i = 0; i < w; ++i) { + + 00500 33 ff xor edi, edi + 00502 85 ed test ebp, ebp + 00504 0f 8e 2e 01 00 + 00 jle $LN23@stbi__pars + 0050a 66 0f 1f 44 00 + 00 npad 6 +$LL28@stbi__pars: + +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + + 00510 8b c6 mov eax, esi + 00512 41 0f af 84 1c + f8 46 00 00 imul eax, DWORD PTR [r12+rbx+18168] + 0051b 03 c7 add eax, edi + 0051d c1 e0 06 shl eax, 6 + +; 2498 : if (z->spec_start == 0) { + + 00520 83 bb 34 48 00 + 00 00 cmp DWORD PTR [rbx+18484], 0 + 00527 48 63 c8 movsxd rcx, eax + 0052a 49 8b 84 1c f0 + 46 00 00 mov rax, QWORD PTR [r12+rbx+18160] + 00532 48 8d 14 48 lea rdx, QWORD PTR [rax+rcx*2] + 00536 75 23 jne SHORT $LN60@stbi__pars + +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + + 00538 4a 63 84 23 b0 + 46 00 00 movsxd rax, DWORD PTR [rbx+r12+18096] + 00540 45 8b ce mov r9d, r14d + 00543 4c 69 c0 90 06 + 00 00 imul r8, rax, 1680 ; 00000690H + 0054a 48 8b cb mov rcx, rbx + 0054d 49 83 c0 08 add r8, 8 + 00551 4c 03 c3 add r8, rbx + 00554 e8 00 00 00 00 call stbi__jpeg_decode_block_prog_dc + +; 2500 : return 0; +; 2501 : } + + 00559 eb 32 jmp SHORT $LN310@stbi__pars +$LN60@stbi__pars: + +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + + 0055b 4a 63 8c 23 b4 + 46 00 00 movsxd rcx, DWORD PTR [rbx+r12+18100] + 00563 4c 69 c1 90 06 + 00 00 imul r8, rcx, 1680 ; 00000690H + 0056a 4c 8b c9 mov r9, rcx + 0056d 48 8b cb mov rcx, rbx + 00570 49 c1 e1 0a shl r9, 10 + 00574 49 81 c0 48 1a + 00 00 add r8, 6728 ; 00001a48H + 0057b 49 81 c1 88 36 + 00 00 add r9, 13960 ; 00003688H + 00582 4c 03 c3 add r8, rbx + 00585 4c 03 cb add r9, rbx + 00588 e8 00 00 00 00 call stbi__jpeg_decode_block_prog_ac +$LN310@stbi__pars: + +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { + + 0058d 85 c0 test eax, eax + 0058f 0f 84 71 02 00 + 00 je $LN224@stbi__pars + 00595 ff 8b 6c 48 00 + 00 dec DWORD PTR [rbx+18540] + 0059b 83 bb 6c 48 00 + 00 00 cmp DWORD PTR [rbx+18540], 0 + 005a2 0f 8f 86 00 00 + 00 jg $LN26@stbi__pars + +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + + 005a8 83 bb 24 48 00 + 00 18 cmp DWORD PTR [rbx+18468], 24 + 005af 7d 08 jge SHORT $LN65@stbi__pars + 005b1 48 8b cb mov rcx, rbx + 005b4 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN65@stbi__pars: + +; 2510 : if (!STBI__RESTART(z->marker)) return 1; + + 005b9 0f b6 83 28 48 + 00 00 movzx eax, BYTE PTR [rbx+18472] + 005c0 04 30 add al, 48 ; 00000030H + 005c2 3c 07 cmp al, 7 + 005c4 0f 87 86 fc ff + ff ja $LN271@stbi__pars + +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + + 005ca c7 83 d8 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18392], 0 + +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 005d4 b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 005d9 c7 83 78 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18296], 0 + 005e3 c7 83 18 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18200], 0 + 005ed c7 83 b8 46 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18104], 0 + 005f7 8b 83 68 48 00 + 00 mov eax, DWORD PTR [rbx+18536] + 005fd 85 c0 test eax, eax + 005ff 48 c7 83 20 48 + 00 00 00 00 00 + 00 mov QWORD PTR [rbx+18464], 0 + 0060a 0f 45 c8 cmovne ecx, eax + 0060d c7 83 2c 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18476], 0 + 00617 89 8b 6c 48 00 + 00 mov DWORD PTR [rbx+18540], ecx + 0061d c6 83 28 48 00 + 00 ff mov BYTE PTR [rbx+18472], 255 ; 000000ffH + +; 2417 : j->eob_run = 0; + + 00624 c7 83 44 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18500], 0 +$LN26@stbi__pars: + +; 2496 : for (i = 0; i < w; ++i) { + + 0062e ff c7 inc edi + 00630 3b fd cmp edi, ebp + 00632 0f 8c d8 fe ff + ff jl $LL28@stbi__pars +$LN23@stbi__pars: + +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { + + 00638 ff c6 inc esi + 0063a 41 3b f7 cmp esi, r15d + 0063d 0f 8c bd fe ff + ff jl $LL25@stbi__pars + +; 2540 : if (!STBI__RESTART(z->marker)) return 1; + + 00643 e9 08 fc ff ff jmp $LN271@stbi__pars +$LN58@stbi__pars: + +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { + + 00648 45 33 e4 xor r12d, r12d + 0064b 44 39 a3 94 46 + 00 00 cmp DWORD PTR [rbx+18068], r12d + 00652 0f 8e f8 fb ff + ff jle $LN271@stbi__pars + 00658 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL31@stbi__pars: + +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { + + 00660 45 33 ff xor r15d, r15d + 00663 44 39 bb 90 46 + 00 00 cmp DWORD PTR [rbx+18064], r15d + 0066a 0f 8e 81 01 00 + 00 jle $LN29@stbi__pars +$LL34@stbi__pars: + +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { + + 00670 45 33 ed xor r13d, r13d + 00673 44 39 ab 54 48 + 00 00 cmp DWORD PTR [rbx+18516], r13d + 0067a 0f 8e c8 00 00 + 00 jle $LN269@stbi__pars + 00680 48 8d 83 58 48 + 00 00 lea rax, QWORD PTR [rbx+18520] + 00687 48 89 44 24 48 mov QWORD PTR tv1822[rsp], rax + 0068c 0f 1f 40 00 npad 4 +$LL37@stbi__pars: + +; 2523 : int n = z->order[k]; + + 00690 4c 63 30 movsxd r14, DWORD PTR [rax] + +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { + + 00693 33 ed xor ebp, ebp + 00695 4b 8d 34 76 lea rsi, QWORD PTR [r14+r14*2] + 00699 48 c1 e6 05 shl rsi, 5 + 0069d 48 03 f3 add rsi, rbx + 006a0 39 ae a8 46 00 + 00 cmp DWORD PTR [rsi+18088], ebp + 006a6 0f 8e 7e 00 00 + 00 jle $LN35@stbi__pars + 006ac 0f 1f 40 00 npad 4 +$LL40@stbi__pars: + +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { + + 006b0 8b 86 a4 46 00 + 00 mov eax, DWORD PTR [rsi+18084] + 006b6 33 ff xor edi, edi + 006b8 85 c0 test eax, eax + 006ba 7e 64 jle SHORT $LN38@stbi__pars + 006bc 0f 1f 40 00 npad 4 +$LL43@stbi__pars: + +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + + 006c0 41 0f af c7 imul eax, r15d + 006c4 41 8b cc mov ecx, r12d + 006c7 0f af 8e a8 46 + 00 00 imul ecx, DWORD PTR [rsi+18088] + +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + + 006ce 45 8b ce mov r9d, r14d + 006d1 03 cd add ecx, ebp + 006d3 0f af 8e f8 46 + 00 00 imul ecx, DWORD PTR [rsi+18168] + 006da 03 cf add ecx, edi + 006dc 03 c1 add eax, ecx + 006de c1 e0 06 shl eax, 6 + 006e1 48 63 c8 movsxd rcx, eax + 006e4 48 8b 86 f0 46 + 00 00 mov rax, QWORD PTR [rsi+18160] + 006eb 48 8d 14 48 lea rdx, QWORD PTR [rax+rcx*2] + 006ef 48 63 86 b0 46 + 00 00 movsxd rax, DWORD PTR [rsi+18096] + 006f6 4c 69 c0 90 06 + 00 00 imul r8, rax, 1680 ; 00000690H + 006fd 48 8b cb mov rcx, rbx + 00700 49 83 c0 08 add r8, 8 + 00704 4c 03 c3 add r8, rbx + 00707 e8 00 00 00 00 call stbi__jpeg_decode_block_prog_dc + 0070c 85 c0 test eax, eax + 0070e 0f 84 f2 00 00 + 00 je $LN224@stbi__pars + +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { + + 00714 8b 86 a4 46 00 + 00 mov eax, DWORD PTR [rsi+18084] + 0071a ff c7 inc edi + 0071c 3b f8 cmp edi, eax + 0071e 7c a0 jl SHORT $LL43@stbi__pars +$LN38@stbi__pars: + +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { + + 00720 ff c5 inc ebp + 00722 3b ae a8 46 00 + 00 cmp ebp, DWORD PTR [rsi+18088] + 00728 7c 86 jl SHORT $LL40@stbi__pars +$LN35@stbi__pars: + +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { + + 0072a 48 8b 44 24 48 mov rax, QWORD PTR tv1822[rsp] + 0072f 41 ff c5 inc r13d + 00732 48 83 c0 04 add rax, 4 + 00736 48 89 44 24 48 mov QWORD PTR tv1822[rsp], rax + 0073b 44 3b ab 54 48 + 00 00 cmp r13d, DWORD PTR [rbx+18516] + 00742 0f 8c 48 ff ff + ff jl $LL37@stbi__pars +$LN269@stbi__pars: + +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { + + 00748 ff 8b 6c 48 00 + 00 dec DWORD PTR [rbx+18540] + 0074e 83 bb 6c 48 00 + 00 00 cmp DWORD PTR [rbx+18540], 0 + 00755 0f 8f 86 00 00 + 00 jg $LN32@stbi__pars + +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + + 0075b 83 bb 24 48 00 + 00 18 cmp DWORD PTR [rbx+18468], 24 + 00762 7d 08 jge SHORT $LN70@stbi__pars + 00764 48 8b cb mov rcx, rbx + 00767 e8 00 00 00 00 call stbi__grow_buffer_unsafe +$LN70@stbi__pars: + +; 2540 : if (!STBI__RESTART(z->marker)) return 1; + + 0076c 0f b6 83 28 48 + 00 00 movzx eax, BYTE PTR [rbx+18472] + 00773 04 30 add al, 48 ; 00000030H + 00775 3c 07 cmp al, 7 + 00777 0f 87 d3 fa ff + ff ja $LN271@stbi__pars + +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + + 0077d c7 83 d8 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18392], 0 + +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + + 00787 b9 ff ff ff 7f mov ecx, 2147483647 ; 7fffffffH + 0078c c7 83 78 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18296], 0 + 00796 c7 83 18 47 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18200], 0 + 007a0 c7 83 b8 46 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18104], 0 + 007aa 8b 83 68 48 00 + 00 mov eax, DWORD PTR [rbx+18536] + 007b0 85 c0 test eax, eax + 007b2 48 c7 83 20 48 + 00 00 00 00 00 + 00 mov QWORD PTR [rbx+18464], 0 + 007bd 0f 45 c8 cmovne ecx, eax + 007c0 c7 83 2c 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18476], 0 + 007ca 89 8b 6c 48 00 + 00 mov DWORD PTR [rbx+18540], ecx + 007d0 c6 83 28 48 00 + 00 ff mov BYTE PTR [rbx+18472], 255 ; 000000ffH + +; 2417 : j->eob_run = 0; + + 007d7 c7 83 44 48 00 + 00 00 00 00 00 mov DWORD PTR [rbx+18500], 0 +$LN32@stbi__pars: + +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { + + 007e1 41 ff c7 inc r15d + 007e4 44 3b bb 90 46 + 00 00 cmp r15d, DWORD PTR [rbx+18064] + 007eb 0f 8c 7f fe ff + ff jl $LL34@stbi__pars +$LN29@stbi__pars: + +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { + + 007f1 41 ff c4 inc r12d + 007f4 44 3b a3 94 46 + 00 00 cmp r12d, DWORD PTR [rbx+18068] + 007fb 0f 8c 5f fe ff + ff jl $LL31@stbi__pars + 00801 e9 4a fa ff ff jmp $LN271@stbi__pars +$LN224@stbi__pars: + +; 2532 : return 0; + + 00806 33 c0 xor eax, eax + 00808 e9 48 fa ff ff jmp $LN59@stbi__pars +stbi__parse_entropy_coded_data ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_dequantize +_TEXT SEGMENT +data$ = 8 +dequant$ = 16 +stbi__jpeg_dequantize PROC ; COMDAT + +; 2551 : { + + 00000 4c 8b c2 mov r8, rdx + +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) + + 00003 48 8d 51 7e lea rdx, QWORD PTR [rcx+126] + 00007 49 8d 40 7e lea rax, QWORD PTR [r8+126] + 0000b 48 3b c8 cmp rcx, rax + 0000e 77 2a ja SHORT $LN10@stbi__jpeg + 00010 49 3b d0 cmp rdx, r8 + 00013 72 25 jb SHORT $LN10@stbi__jpeg + 00015 4c 2b c1 sub r8, rcx + 00018 41 b9 40 00 00 + 00 mov r9d, 64 ; 00000040H + 0001e 66 90 npad 2 +$LL8@stbi__jpeg: + +; 2554 : data[i] *= dequant[i]; + + 00020 41 0f bf 04 08 movsx eax, WORD PTR [r8+rcx] + 00025 0f bf 11 movsx edx, WORD PTR [rcx] + 00028 48 8d 49 02 lea rcx, QWORD PTR [rcx+2] + 0002c 0f af d0 imul edx, eax + 0002f 66 89 51 fe mov WORD PTR [rcx-2], dx + 00033 49 83 e9 01 sub r9, 1 + 00037 75 e7 jne SHORT $LL8@stbi__jpeg + +; 2555 : } + + 00039 c3 ret 0 +$LN10@stbi__jpeg: + +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) + + 0003a 48 8d 41 10 lea rax, QWORD PTR [rcx+16] + 0003e 4c 2b c1 sub r8, rcx + 00041 b9 02 00 00 00 mov ecx, 2 + 00046 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL4@stbi__jpeg: + +; 2554 : data[i] *= dequant[i]; + + 00050 f3 0f 6f 40 f0 movdqu xmm0, XMMWORD PTR [rax-16] + 00055 f3 42 0f 6f 4c + 00 f0 movdqu xmm1, XMMWORD PTR [rax+r8-16] + 0005c f3 42 0f 6f 14 + 00 movdqu xmm2, XMMWORD PTR [rax+r8] + 00062 48 8d 40 40 lea rax, QWORD PTR [rax+64] + 00066 66 0f d5 c8 pmullw xmm1, xmm0 + 0006a f3 0f 7f 48 b0 movdqu XMMWORD PTR [rax-80], xmm1 + 0006f f3 0f 6f 40 c0 movdqu xmm0, XMMWORD PTR [rax-64] + 00074 f3 42 0f 6f 4c + 00 d0 movdqu xmm1, XMMWORD PTR [rax+r8-48] + 0007b 66 0f d5 d0 pmullw xmm2, xmm0 + 0007f f3 0f 7f 50 c0 movdqu XMMWORD PTR [rax-64], xmm2 + 00084 f3 0f 6f 40 d0 movdqu xmm0, XMMWORD PTR [rax-48] + 00089 66 0f d5 c8 pmullw xmm1, xmm0 + 0008d f3 0f 7f 48 d0 movdqu XMMWORD PTR [rax-48], xmm1 + 00092 f3 0f 6f 40 e0 movdqu xmm0, XMMWORD PTR [rax-32] + 00097 f3 42 0f 6f 4c + 00 e0 movdqu xmm1, XMMWORD PTR [rax+r8-32] + 0009e 66 0f d5 c8 pmullw xmm1, xmm0 + 000a2 f3 0f 7f 48 e0 movdqu XMMWORD PTR [rax-32], xmm1 + 000a7 48 83 e9 01 sub rcx, 1 + 000ab 75 a3 jne SHORT $LL4@stbi__jpeg + +; 2555 : } + + 000ad c3 ret 0 +stbi__jpeg_dequantize ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_finish +_TEXT SEGMENT +z$ = 80 +stbi__jpeg_finish PROC ; COMDAT + +; 2558 : { + + 00000 4c 8b dc mov r11, rsp + 00003 41 56 push r14 + 00005 48 83 ec 40 sub rsp, 64 ; 00000040H + +; 2559 : if (z->progressive) { + + 00009 83 b9 30 48 00 + 00 00 cmp DWORD PTR [rcx+18480], 0 + 00010 4c 8b f1 mov r14, rcx + 00013 0f 84 b4 01 00 + 00 je $LN3@stbi__jpeg + +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { + + 00019 48 8b 01 mov rax, QWORD PTR [rcx] + 0001c 4d 89 6b e0 mov QWORD PTR [r11-32], r13 + 00020 45 33 ed xor r13d, r13d + 00023 44 39 68 08 cmp DWORD PTR [rax+8], r13d + 00027 0f 8e 9b 01 00 + 00 jle $LN54@stbi__jpeg + 0002d 49 89 5b 08 mov QWORD PTR [r11+8], rbx + 00031 48 8d 99 f0 46 + 00 00 lea rbx, QWORD PTR [rcx+18160] + 00038 49 89 6b 10 mov QWORD PTR [r11+16], rbp + 0003c 49 89 73 18 mov QWORD PTR [r11+24], rsi + 00040 49 89 7b f0 mov QWORD PTR [r11-16], rdi + 00044 4d 89 63 e8 mov QWORD PTR [r11-24], r12 + 00048 4d 89 7b d8 mov QWORD PTR [r11-40], r15 + 0004c 0f 1f 40 00 npad 4 +$LL4@stbi__jpeg: + +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; + + 00050 44 8b 7b cc mov r15d, DWORD PTR [rbx-52] + 00054 33 ed xor ebp, ebp + +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; + + 00056 44 8b 63 d0 mov r12d, DWORD PTR [rbx-48] + 0005a 41 83 c7 07 add r15d, 7 + 0005e 41 83 c4 07 add r12d, 7 + 00062 41 c1 ff 03 sar r15d, 3 + 00066 41 c1 fc 03 sar r12d, 3 + +; 2565 : for (j = 0; j < h; ++j) { + + 0006a 45 85 e4 test r12d, r12d + 0006d 0f 8e 23 01 00 + 00 jle $LN2@stbi__jpeg +$LL7@stbi__jpeg: + +; 2566 : for (i = 0; i < w; ++i) { + + 00073 33 ff xor edi, edi + 00075 45 85 ff test r15d, r15d + 00078 0f 8e 0d 01 00 + 00 jle $LN5@stbi__jpeg + 0007e 33 f6 xor esi, esi +$LL10@stbi__jpeg: + +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + + 00080 4c 63 43 bc movsxd r8, DWORD PTR [rbx-68] + 00084 8b c5 mov eax, ebp + 00086 0f af 43 08 imul eax, DWORD PTR [rbx+8] + 0008a 49 c1 e0 07 shl r8, 7 + 0008e 49 81 c0 88 34 + 00 00 add r8, 13448 ; 00003488H + 00095 4d 03 c6 add r8, r14 + 00098 03 c7 add eax, edi + 0009a c1 e0 06 shl eax, 6 + 0009d 48 63 c8 movsxd rcx, eax + 000a0 48 8b 03 mov rax, QWORD PTR [rbx] + 000a3 4c 8d 14 48 lea r10, QWORD PTR [rax+rcx*2] + 000a7 49 8d 40 7e lea rax, QWORD PTR [r8+126] + 000ab 49 8d 4a 7e lea rcx, QWORD PTR [r10+126] + 000af 4c 3b d0 cmp r10, rax + 000b2 77 37 ja SHORT $LN28@stbi__jpeg + +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + + 000b4 49 3b c8 cmp rcx, r8 + 000b7 72 32 jb SHORT $LN28@stbi__jpeg + 000b9 49 8b c2 mov rax, r10 + 000bc 4d 2b c2 sub r8, r10 + 000bf 41 b9 40 00 00 + 00 mov r9d, 64 ; 00000040H + 000c5 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL42@stbi__jpeg: + +; 2554 : data[i] *= dequant[i]; + + 000d0 42 0f bf 0c 00 movsx ecx, WORD PTR [rax+r8] + 000d5 0f bf 10 movsx edx, WORD PTR [rax] + 000d8 48 8d 40 02 lea rax, QWORD PTR [rax+2] + 000dc 0f af d1 imul edx, ecx + 000df 66 89 50 fe mov WORD PTR [rax-2], dx + 000e3 49 83 e9 01 sub r9, 1 + 000e7 75 e7 jne SHORT $LL42@stbi__jpeg + +; 2553 : for (i = 0; i < 64; ++i) + + 000e9 eb 72 jmp SHORT $LN15@stbi__jpeg +$LN28@stbi__jpeg: + +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + + 000eb 49 8d 42 10 lea rax, QWORD PTR [r10+16] + 000ef 4d 2b c2 sub r8, r10 + 000f2 b9 02 00 00 00 mov ecx, 2 + 000f7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL16@stbi__jpeg: + +; 2554 : data[i] *= dequant[i]; + + 00100 f3 0f 6f 40 f0 movdqu xmm0, XMMWORD PTR [rax-16] + 00105 f3 41 0f 6f 4c + 00 f0 movdqu xmm1, XMMWORD PTR [r8+rax-16] + 0010c f3 41 0f 6f 14 + 00 movdqu xmm2, XMMWORD PTR [r8+rax] + 00112 48 8d 40 40 lea rax, QWORD PTR [rax+64] + 00116 66 0f d5 c8 pmullw xmm1, xmm0 + 0011a f3 0f 7f 48 b0 movdqu XMMWORD PTR [rax-80], xmm1 + 0011f f3 0f 6f 40 c0 movdqu xmm0, XMMWORD PTR [rax-64] + 00124 f3 41 0f 6f 4c + 00 d0 movdqu xmm1, XMMWORD PTR [r8+rax-48] + 0012b 66 0f d5 d0 pmullw xmm2, xmm0 + 0012f f3 0f 7f 50 c0 movdqu XMMWORD PTR [rax-64], xmm2 + 00134 f3 0f 6f 40 d0 movdqu xmm0, XMMWORD PTR [rax-48] + 00139 66 0f d5 c8 pmullw xmm1, xmm0 + 0013d f3 0f 7f 48 d0 movdqu XMMWORD PTR [rax-48], xmm1 + 00142 f3 0f 6f 40 e0 movdqu xmm0, XMMWORD PTR [rax-32] + 00147 f3 41 0f 6f 4c + 00 e0 movdqu xmm1, XMMWORD PTR [r8+rax-32] + 0014e 66 0f d5 c8 pmullw xmm1, xmm0 + 00152 f3 0f 7f 48 e0 movdqu XMMWORD PTR [rax-32], xmm1 + 00157 48 83 e9 01 sub rcx, 1 + 0015b 75 a3 jne SHORT $LL16@stbi__jpeg +$LN15@stbi__jpeg: + +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); + + 0015d 8b 53 d4 mov edx, DWORD PTR [rbx-44] + 00160 4d 8b c2 mov r8, r10 + 00163 8b c2 mov eax, edx + 00165 0f af c5 imul eax, ebp + 00168 c1 e0 03 shl eax, 3 + 0016b 48 63 c8 movsxd rcx, eax + 0016e 48 03 4b e0 add rcx, QWORD PTR [rbx-32] + 00172 48 03 ce add rcx, rsi + 00175 41 ff 96 70 48 + 00 00 call QWORD PTR [r14+18544] + 0017c ff c7 inc edi + 0017e 48 83 c6 08 add rsi, 8 + 00182 41 3b ff cmp edi, r15d + 00185 0f 8c f5 fe ff + ff jl $LL10@stbi__jpeg +$LN5@stbi__jpeg: + +; 2565 : for (j = 0; j < h; ++j) { + + 0018b ff c5 inc ebp + 0018d 41 3b ec cmp ebp, r12d + 00190 0f 8c dd fe ff + ff jl $LL7@stbi__jpeg +$LN2@stbi__jpeg: + +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { + + 00196 49 8b 06 mov rax, QWORD PTR [r14] + 00199 41 ff c5 inc r13d + 0019c 48 83 c3 60 add rbx, 96 ; 00000060H + 001a0 44 3b 68 08 cmp r13d, DWORD PTR [rax+8] + 001a4 0f 8c a6 fe ff + ff jl $LL4@stbi__jpeg + 001aa 4c 8b 7c 24 20 mov r15, QWORD PTR [rsp+32] + 001af 4c 8b 64 24 30 mov r12, QWORD PTR [rsp+48] + 001b4 48 8b 7c 24 38 mov rdi, QWORD PTR [rsp+56] + 001b9 48 8b 74 24 60 mov rsi, QWORD PTR [rsp+96] + 001be 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 001c3 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] +$LN54@stbi__jpeg: + 001c8 4c 8b 6c 24 28 mov r13, QWORD PTR [rsp+40] +$LN3@stbi__jpeg: + +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } + + 001cd 48 83 c4 40 add rsp, 64 ; 00000040H + 001d1 41 5e pop r14 + 001d3 c3 ret 0 +stbi__jpeg_finish ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__process_marker +_TEXT SEGMENT +L$3$ = 32 +sizes$9 = 48 +__$ArrayPad$ = 112 +z$ = 176 +m$ = 184 +stbi__process_marker PROC ; COMDAT + +; 2577 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 48 89 6c 24 18 mov QWORD PTR [rsp+24], rbp + 0000a 48 89 74 24 20 mov QWORD PTR [rsp+32], rsi + 0000f 57 push rdi + 00010 41 54 push r12 + 00012 41 55 push r13 + 00014 41 56 push r14 + 00016 41 57 push r15 + 00018 48 81 ec 80 00 + 00 00 sub rsp, 128 ; 00000080H + 0001f 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00026 48 33 c4 xor rax, rsp + 00029 48 89 44 24 70 mov QWORD PTR __$ArrayPad$[rsp], rax + 0002e 48 8b f1 mov rsi, rcx + 00031 8b fa mov edi, edx + +; 2578 : int L; +; 2579 : switch (m) { + + 00033 8b ca mov ecx, edx + 00035 81 e9 c4 00 00 + 00 sub ecx, 196 ; 000000c4H + 0003b 0f 84 87 07 00 + 00 je $LN29@stbi__proc + 00041 83 e9 17 sub ecx, 23 + 00044 0f 84 fe 05 00 + 00 je $LN26@stbi__proc + 0004a 83 e9 02 sub ecx, 2 + 0004d 0f 84 a6 05 00 + 00 je $LN24@stbi__proc + 00053 83 f9 22 cmp ecx, 34 ; 00000022H + 00056 0f 84 73 05 00 + 00 je $LN23@stbi__proc + +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + + 0005c 8d 82 20 ff ff + ff lea eax, DWORD PTR [rdx-224] + 00062 83 f8 0f cmp eax, 15 + 00065 76 32 jbe SHORT $LN39@stbi__proc + 00067 81 fa fe 00 00 + 00 cmp edx, 254 ; 000000feH + 0006d 74 2a je SHORT $LN39@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 0006f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00075 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0007e b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00083 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00087 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@NNGPHMMK@unknown?5marker@ + 0008e 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); + + 00092 33 c0 xor eax, eax + 00094 e9 ee 09 00 00 jmp $LN1@stbi__proc +$LN39@stbi__proc: + +; 2637 : L = stbi__get16be(z->s); + + 00099 48 8b 0e mov rcx, QWORD PTR [rsi] + 0009c e8 00 00 00 00 call stbi__get16be + 000a1 8b d8 mov ebx, eax + +; 2638 : if (L < 2) { + + 000a3 83 f8 02 cmp eax, 2 + 000a6 7d 45 jge SHORT $LN43@stbi__proc + +; 2639 : if (m == 0xFE) + + 000a8 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 000ae 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000b7 41 b8 00 00 00 + 00 mov r8d, OFFSET FLAT:stbi__g_failure_reason + 000bd 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + 000c1 81 ff fe 00 00 + 00 cmp edi, 254 ; 000000feH + 000c7 75 12 jne SHORT $LN42@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 000c9 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0M@CICAFFCH@bad?5COM?5len@ + 000d0 49 89 04 10 mov QWORD PTR [r8+rdx], rax + +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); + + 000d4 33 c0 xor eax, eax + 000d6 e9 ac 09 00 00 jmp $LN1@stbi__proc +$LN42@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 000db 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0M@EENLKPDI@bad?5APP?5len@ + 000e2 49 89 04 10 mov QWORD PTR [r8+rdx], rax + +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); + + 000e6 33 c0 xor eax, eax + 000e8 e9 9a 09 00 00 jmp $LN1@stbi__proc +$LN43@stbi__proc: + +; 2643 : } +; 2644 : L -= 2; + + 000ed 83 eb 02 sub ebx, 2 + +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + + 000f0 81 ff e0 00 00 + 00 cmp edi, 224 ; 000000e0H + 000f6 0f 85 bd 01 00 + 00 jne $LN44@stbi__proc + 000fc 83 fb 05 cmp ebx, 5 + 000ff 0f 8c 58 04 00 + 00 jl $LN50@stbi__proc + +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) + + 00105 48 8b 3e mov rdi, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00108 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0010f 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00116 73 0f jae SHORT $LN102@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00118 0f b6 08 movzx ecx, BYTE PTR [rax] + 0011b 48 ff c0 inc rax + 0011e 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00125 eb 26 jmp SHORT $LN101@stbi__proc +$LN102@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00127 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0012b 74 1e je SHORT $LN103@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0012d 48 8b cf mov rcx, rdi + 00130 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00135 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0013c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0013f 48 ff c0 inc rax + 00142 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00149 eb 02 jmp SHORT $LN101@stbi__proc +$LN103@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 0014b 32 c9 xor cl, cl +$LN101@stbi__proc: + +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) + + 0014d 48 8b 3e mov rdi, QWORD PTR [rsi] + 00150 45 33 e4 xor r12d, r12d + 00153 80 f9 4a cmp cl, 74 ; 0000004aH + 00156 45 8b f4 mov r14d, r12d + 00159 41 0f 94 c6 sete r14b + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0015d 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00164 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0016b 73 0f jae SHORT $LN146@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0016d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00170 48 ff c0 inc rax + 00173 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0017a eb 26 jmp SHORT $LN148@stbi__proc +$LN146@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0017c 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00180 74 1e je SHORT $LN147@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00182 48 8b cf mov rcx, rdi + 00185 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0018a 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00191 0f b6 08 movzx ecx, BYTE PTR [rax] + 00194 48 ff c0 inc rax + 00197 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0019e eb 02 jmp SHORT $LN148@stbi__proc +$LN147@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 001a0 32 c9 xor cl, cl +$LN148@stbi__proc: + +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) + + 001a2 48 8b 3e mov rdi, QWORD PTR [rsi] + 001a5 80 f9 46 cmp cl, 70 ; 00000046H + 001a8 41 8b ec mov ebp, r12d + 001ab 41 0f 44 ee cmove ebp, r14d + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001af 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 001b6 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 001bd 73 0f jae SHORT $LN151@stbi__proc + +; 1078 : return *s->img_buffer++; + + 001bf 0f b6 08 movzx ecx, BYTE PTR [rax] + 001c2 48 ff c0 inc rax + 001c5 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 001cc eb 26 jmp SHORT $LN153@stbi__proc +$LN151@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 001ce 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 001d2 74 1e je SHORT $LN152@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 001d4 48 8b cf mov rcx, rdi + 001d7 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 001dc 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 001e3 0f b6 08 movzx ecx, BYTE PTR [rax] + 001e6 48 ff c0 inc rax + 001e9 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 001f0 eb 02 jmp SHORT $LN153@stbi__proc +$LN152@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 001f2 32 c9 xor cl, cl +$LN153@stbi__proc: + +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) + + 001f4 48 8b 3e mov rdi, QWORD PTR [rsi] + 001f7 80 f9 49 cmp cl, 73 ; 00000049H + 001fa 45 8b f4 mov r14d, r12d + 001fd 44 0f 44 f5 cmove r14d, ebp + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00201 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00208 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0020f 73 0f jae SHORT $LN156@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00211 0f b6 08 movzx ecx, BYTE PTR [rax] + 00214 48 ff c0 inc rax + 00217 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0021e eb 26 jmp SHORT $LN158@stbi__proc +$LN156@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00220 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00224 74 1e je SHORT $LN157@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00226 48 8b cf mov rcx, rdi + 00229 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0022e 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00235 0f b6 08 movzx ecx, BYTE PTR [rax] + 00238 48 ff c0 inc rax + 0023b 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00242 eb 02 jmp SHORT $LN158@stbi__proc +$LN157@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00244 32 c9 xor cl, cl +$LN158@stbi__proc: + +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) + + 00246 48 8b 3e mov rdi, QWORD PTR [rsi] + 00249 80 f9 46 cmp cl, 70 ; 00000046H + 0024c 41 8b ec mov ebp, r12d + 0024f 41 0f 44 ee cmove ebp, r14d + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00253 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0025a 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00261 73 0f jae SHORT $LN161@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00263 0f b6 08 movzx ecx, BYTE PTR [rax] + 00266 48 ff c0 inc rax + 00269 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00270 eb 26 jmp SHORT $LN163@stbi__proc +$LN161@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00272 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00276 74 1e je SHORT $LN162@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00278 48 8b cf mov rcx, rdi + 0027b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00280 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00287 0f b6 08 movzx ecx, BYTE PTR [rax] + 0028a 48 ff c0 inc rax + 0028d 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00294 eb 02 jmp SHORT $LN163@stbi__proc +$LN162@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00296 32 c9 xor cl, cl +$LN163@stbi__proc: + +; 2652 : ok = 0; +; 2653 : L -= 5; + + 00298 83 eb 05 sub ebx, 5 + 0029b 84 c9 test cl, cl + 0029d 44 0f 44 e5 cmove r12d, ebp + +; 2654 : if (ok) + + 002a1 45 85 e4 test r12d, r12d + 002a4 0f 84 b3 02 00 + 00 je $LN50@stbi__proc + +; 2655 : z->jfif = 1; + + 002aa c7 86 48 48 00 + 00 01 00 00 00 mov DWORD PTR [rsi+18504], 1 + +; 2656 : } + + 002b4 e9 a4 02 00 00 jmp $LN50@stbi__proc +$LN44@stbi__proc: + +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + + 002b9 81 ff ee 00 00 + 00 cmp edi, 238 ; 000000eeH + 002bf 0f 85 98 02 00 + 00 jne $LN50@stbi__proc + 002c5 83 fb 0c cmp ebx, 12 + 002c8 0f 8c 8f 02 00 + 00 jl $LN50@stbi__proc + +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) + + 002ce 48 8b 3e mov rdi, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 002d1 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 002d8 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 002df 73 0f jae SHORT $LN108@stbi__proc + +; 1078 : return *s->img_buffer++; + + 002e1 0f b6 08 movzx ecx, BYTE PTR [rax] + 002e4 48 ff c0 inc rax + 002e7 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 002ee eb 26 jmp SHORT $LN107@stbi__proc +$LN108@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 002f0 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 002f4 74 1e je SHORT $LN109@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 002f6 48 8b cf mov rcx, rdi + 002f9 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 002fe 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00305 0f b6 08 movzx ecx, BYTE PTR [rax] + 00308 48 ff c0 inc rax + 0030b 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00312 eb 02 jmp SHORT $LN107@stbi__proc +$LN109@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00314 32 c9 xor cl, cl +$LN107@stbi__proc: + +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) + + 00316 48 8b 3e mov rdi, QWORD PTR [rsi] + 00319 45 33 e4 xor r12d, r12d + 0031c 80 f9 41 cmp cl, 65 ; 00000041H + 0031f 45 8b f4 mov r14d, r12d + 00322 41 0f 94 c6 sete r14b + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00326 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0032d 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00334 73 0f jae SHORT $LN166@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00336 0f b6 08 movzx ecx, BYTE PTR [rax] + 00339 48 ff c0 inc rax + 0033c 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00343 eb 26 jmp SHORT $LN168@stbi__proc +$LN166@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00345 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00349 74 1e je SHORT $LN167@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0034b 48 8b cf mov rcx, rdi + 0034e e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00353 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0035a 0f b6 08 movzx ecx, BYTE PTR [rax] + 0035d 48 ff c0 inc rax + 00360 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00367 eb 02 jmp SHORT $LN168@stbi__proc +$LN167@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00369 32 c9 xor cl, cl +$LN168@stbi__proc: + +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) + + 0036b 48 8b 3e mov rdi, QWORD PTR [rsi] + 0036e 80 f9 64 cmp cl, 100 ; 00000064H + 00371 41 8b ec mov ebp, r12d + 00374 41 0f 44 ee cmove ebp, r14d + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00378 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0037f 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00386 73 0f jae SHORT $LN171@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00388 0f b6 08 movzx ecx, BYTE PTR [rax] + 0038b 48 ff c0 inc rax + 0038e 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00395 eb 26 jmp SHORT $LN173@stbi__proc +$LN171@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00397 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 0039b 74 1e je SHORT $LN172@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0039d 48 8b cf mov rcx, rdi + 003a0 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003a5 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 003ac 0f b6 08 movzx ecx, BYTE PTR [rax] + 003af 48 ff c0 inc rax + 003b2 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 003b9 eb 02 jmp SHORT $LN173@stbi__proc +$LN172@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 003bb 32 c9 xor cl, cl +$LN173@stbi__proc: + +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) + + 003bd 48 8b 3e mov rdi, QWORD PTR [rsi] + 003c0 80 f9 6f cmp cl, 111 ; 0000006fH + 003c3 45 8b f4 mov r14d, r12d + 003c6 44 0f 44 f5 cmove r14d, ebp + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003ca 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 003d1 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 003d8 73 0f jae SHORT $LN176@stbi__proc + +; 1078 : return *s->img_buffer++; + + 003da 0f b6 08 movzx ecx, BYTE PTR [rax] + 003dd 48 ff c0 inc rax + 003e0 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 003e7 eb 26 jmp SHORT $LN178@stbi__proc +$LN176@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 003e9 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 003ed 74 1e je SHORT $LN177@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 003ef 48 8b cf mov rcx, rdi + 003f2 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003f7 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 003fe 0f b6 08 movzx ecx, BYTE PTR [rax] + 00401 48 ff c0 inc rax + 00404 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0040b eb 02 jmp SHORT $LN178@stbi__proc +$LN177@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 0040d 32 c9 xor cl, cl +$LN178@stbi__proc: + +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) + + 0040f 48 8b 3e mov rdi, QWORD PTR [rsi] + 00412 80 f9 62 cmp cl, 98 ; 00000062H + 00415 45 8b fc mov r15d, r12d + 00418 45 0f 44 fe cmove r15d, r14d + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0041c 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00423 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0042a 73 0f jae SHORT $LN181@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0042c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0042f 48 ff c0 inc rax + 00432 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00439 eb 26 jmp SHORT $LN183@stbi__proc +$LN181@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0043b 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 0043f 74 1e je SHORT $LN182@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00441 48 8b cf mov rcx, rdi + 00444 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00449 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00450 0f b6 08 movzx ecx, BYTE PTR [rax] + 00453 48 ff c0 inc rax + 00456 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0045d eb 02 jmp SHORT $LN183@stbi__proc +$LN182@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 0045f 32 c9 xor cl, cl +$LN183@stbi__proc: + +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) + + 00461 48 8b 3e mov rdi, QWORD PTR [rsi] + 00464 80 f9 65 cmp cl, 101 ; 00000065H + 00467 41 8b ec mov ebp, r12d + 0046a 41 0f 44 ef cmove ebp, r15d + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0046e 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00475 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0047c 73 0f jae SHORT $LN186@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0047e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00481 48 ff c0 inc rax + 00484 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0048b eb 26 jmp SHORT $LN188@stbi__proc +$LN186@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0048d 44 39 67 30 cmp DWORD PTR [rdi+48], r12d + 00491 74 1e je SHORT $LN187@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00493 48 8b cf mov rcx, rdi + 00496 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0049b 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 004a2 0f b6 08 movzx ecx, BYTE PTR [rax] + 004a5 48 ff c0 inc rax + 004a8 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 004af eb 02 jmp SHORT $LN188@stbi__proc +$LN187@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 004b1 32 c9 xor cl, cl +$LN188@stbi__proc: + +; 2663 : ok = 0; +; 2664 : L -= 6; + + 004b3 83 eb 06 sub ebx, 6 + 004b6 84 c9 test cl, cl + 004b8 44 0f 44 e5 cmove r12d, ebp + +; 2665 : if (ok) { + + 004bc 45 85 e4 test r12d, r12d + 004bf 0f 84 98 00 00 + 00 je $LN50@stbi__proc + +; 2666 : stbi__get8(z->s); // version + + 004c5 48 8b 3e mov rdi, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 004c8 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 004cf 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 004d6 73 0c jae SHORT $LN116@stbi__proc + +; 1078 : return *s->img_buffer++; + + 004d8 48 ff c0 inc rax + 004db 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 004e2 eb 15 jmp SHORT $LN117@stbi__proc +$LN116@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 004e4 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 004e8 74 0f je SHORT $LN117@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 004ea 48 8b cf mov rcx, rdi + 004ed e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 004f2 48 ff 87 c0 00 + 00 00 inc QWORD PTR [rdi+192] +$LN117@stbi__proc: + +; 2667 : stbi__get16be(z->s); // flags0 + + 004f9 48 8b 0e mov rcx, QWORD PTR [rsi] + 004fc e8 00 00 00 00 call stbi__get16be + +; 2668 : stbi__get16be(z->s); // flags1 + + 00501 48 8b 0e mov rcx, QWORD PTR [rsi] + 00504 e8 00 00 00 00 call stbi__get16be + +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform + + 00509 48 8b 3e mov rdi, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0050c 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00513 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0051a 73 0f jae SHORT $LN120@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0051c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0051f 48 ff c0 inc rax + 00522 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00529 eb 26 jmp SHORT $LN119@stbi__proc +$LN120@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0052b 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0052f 74 1e je SHORT $LN121@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00531 48 8b cf mov rcx, rdi + 00534 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00539 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00540 0f b6 08 movzx ecx, BYTE PTR [rax] + 00543 48 ff c0 inc rax + 00546 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0054d eb 02 jmp SHORT $LN119@stbi__proc +$LN121@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 0054f 32 c9 xor cl, cl +$LN119@stbi__proc: + +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform + + 00551 0f b6 c1 movzx eax, cl + +; 2670 : L -= 6; + + 00554 83 eb 06 sub ebx, 6 + 00557 89 86 4c 48 00 + 00 mov DWORD PTR [rsi+18508], eax +$LN50@stbi__proc: + +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); + + 0055d 4c 8b 06 mov r8, QWORD PTR [rsi] + +; 1107 : if (n == 0) return; // already there! + + 00560 85 db test ebx, ebx + 00562 74 61 je SHORT $LN93@stbi__proc + +; 1108 : if (n < 0) { + + 00564 79 18 jns SHORT $LN95@stbi__proc + +; 1109 : s->img_buffer = s->img_buffer_end; + + 00566 49 8b 80 c8 00 + 00 00 mov rax, QWORD PTR [r8+200] + 0056d 49 89 80 c0 00 + 00 00 mov QWORD PTR [r8+192], rax + +; 2675 : return 1; + + 00574 b8 01 00 00 00 mov eax, 1 + 00579 e9 09 05 00 00 jmp $LN1@stbi__proc +$LN95@stbi__proc: + +; 1112 : if (s->io.read) { + + 0057e 49 83 78 10 00 cmp QWORD PTR [r8+16], 0 + 00583 74 36 je SHORT $LN206@stbi__proc + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00585 41 8b 88 c8 00 + 00 00 mov ecx, DWORD PTR [r8+200] + 0058c 41 2b 88 c0 00 + 00 00 sub ecx, DWORD PTR [r8+192] + +; 1114 : if (blen < n) { + + 00593 3b cb cmp ecx, ebx + 00595 7d 24 jge SHORT $LN206@stbi__proc + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00597 49 8b 80 c8 00 + 00 00 mov rax, QWORD PTR [r8+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0059e 2b d9 sub ebx, ecx + 005a0 49 8b 48 28 mov rcx, QWORD PTR [r8+40] + 005a4 8b d3 mov edx, ebx + 005a6 49 89 80 c0 00 + 00 00 mov QWORD PTR [r8+192], rax + 005ad 41 ff 50 18 call QWORD PTR [r8+24] + +; 2675 : return 1; + + 005b1 b8 01 00 00 00 mov eax, 1 + 005b6 e9 cc 04 00 00 jmp $LN1@stbi__proc +$LN206@stbi__proc: + +; 1120 : s->img_buffer += n; + + 005bb 48 63 cb movsxd rcx, ebx + 005be 49 01 88 c0 00 + 00 00 add QWORD PTR [r8+192], rcx +$LN93@stbi__proc: + +; 2675 : return 1; + + 005c5 b8 01 00 00 00 mov eax, 1 + 005ca e9 b8 04 00 00 jmp $LN1@stbi__proc +$LN23@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 005cf 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 005d5 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 005de b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 005e3 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 005e7 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@KLNDOKJD@expected?5marker@ + 005ee 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN136@stbi__proc: + +; 2679 : } + + 005f2 33 c0 xor eax, eax + 005f4 e9 8e 04 00 00 jmp $LN1@stbi__proc +$LN24@stbi__proc: + +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); + + 005f9 48 8b 0e mov rcx, QWORD PTR [rsi] + 005fc e8 00 00 00 00 call stbi__get16be + 00601 83 f8 04 cmp eax, 4 + 00604 74 2a je SHORT $LN25@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 00606 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0060c 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00615 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0061a 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0061e 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@LPHNODCG@bad?5DRI?5len@ + 00625 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); + + 00629 33 c0 xor eax, eax + 0062b e9 57 04 00 00 jmp $LN1@stbi__proc +$LN25@stbi__proc: + +; 2585 : z->restart_interval = stbi__get16be(z->s); + + 00630 48 8b 0e mov rcx, QWORD PTR [rsi] + 00633 e8 00 00 00 00 call stbi__get16be + 00638 89 86 68 48 00 + 00 mov DWORD PTR [rsi+18536], eax + +; 2586 : return 1; + + 0063e b8 01 00 00 00 mov eax, 1 + 00643 e9 3f 04 00 00 jmp $LN1@stbi__proc +$LN26@stbi__proc: + +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; + + 00648 48 8b 0e mov rcx, QWORD PTR [rsi] + 0064b e8 00 00 00 00 call stbi__get16be + +; 2590 : while (L > 0) { + + 00650 45 33 e4 xor r12d, r12d + 00653 44 8d 78 fe lea r15d, DWORD PTR [rax-2] + 00657 45 85 ff test r15d, r15d + 0065a 0f 8e 20 04 00 + 00 jle $LN289@stbi__proc + 00660 4c 8d 2d 00 00 + 00 00 lea r13, OFFSET FLAT:stbi__jpeg_dezigzag + 00667 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL4@stbi__proc: + +; 2591 : int q = stbi__get8(z->s); + + 00670 48 8b 1e mov rbx, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00673 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0067a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00681 73 0f jae SHORT $LN63@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00683 0f b6 08 movzx ecx, BYTE PTR [rax] + 00686 48 ff c0 inc rax + 00689 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00690 eb 26 jmp SHORT $LN62@stbi__proc +$LN63@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00692 44 39 63 30 cmp DWORD PTR [rbx+48], r12d + 00696 74 1e je SHORT $LN64@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00698 48 8b cb mov rcx, rbx + 0069b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 006a0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006a7 0f b6 08 movzx ecx, BYTE PTR [rax] + 006aa 48 ff c0 inc rax + 006ad 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 006b4 eb 02 jmp SHORT $LN62@stbi__proc +$LN64@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 006b6 32 c9 xor cl, cl +$LN62@stbi__proc: + +; 2591 : int q = stbi__get8(z->s); + + 006b8 0f b6 c1 movzx eax, cl + +; 2592 : int p = q >> 4, sixteen = (p != 0); + + 006bb 8b e8 mov ebp, eax + +; 2593 : int t = q & 15, i; + + 006bd 83 e0 0f and eax, 15 + 006c0 c1 ed 04 shr ebp, 4 + +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); + + 006c3 83 fd 01 cmp ebp, 1 + 006c6 0f 87 d2 00 00 + 00 ja $LN131@stbi__proc + +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); + + 006cc 83 f8 03 cmp eax, 3 + 006cf 0f 87 9f 00 00 + 00 ja $LN132@stbi__proc + +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + + 006d5 44 8b f0 mov r14d, eax + 006d8 49 8b fc mov rdi, r12 + 006db 49 c1 e6 06 shl r14, 6 + 006df 90 npad 1 +$LL8@stbi__proc: + 006e0 48 8b 1e mov rbx, QWORD PTR [rsi] + 006e3 85 ed test ebp, ebp + 006e5 74 0c je SHORT $LN52@stbi__proc + 006e7 48 8b cb mov rcx, rbx + 006ea e8 00 00 00 00 call stbi__get16be + 006ef 8b c8 mov ecx, eax + 006f1 eb 48 jmp SHORT $LN53@stbi__proc +$LN52@stbi__proc: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 006f3 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006fa 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00701 73 0f jae SHORT $LN71@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00703 0f b6 08 movzx ecx, BYTE PTR [rax] + 00706 48 ff c0 inc rax + 00709 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00710 eb 26 jmp SHORT $LN70@stbi__proc +$LN71@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00712 44 39 63 30 cmp DWORD PTR [rbx+48], r12d + 00716 74 1e je SHORT $LN72@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00718 48 8b cb mov rcx, rbx + 0071b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00720 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00727 0f b6 08 movzx ecx, BYTE PTR [rax] + 0072a 48 ff c0 inc rax + 0072d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00734 eb 02 jmp SHORT $LN70@stbi__proc +$LN72@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00736 32 c9 xor cl, cl +$LN70@stbi__proc: + +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + + 00738 0f b6 c9 movzx ecx, cl +$LN53@stbi__proc: + 0073b 42 0f b6 04 2f movzx eax, BYTE PTR [rdi+r13] + 00740 48 ff c7 inc rdi + 00743 49 03 c6 add rax, r14 + 00746 66 89 8c 46 88 + 34 00 00 mov WORD PTR [rsi+rax*2+13448], cx + 0074e 48 83 ff 40 cmp rdi, 64 ; 00000040H + 00752 7c 8c jl SHORT $LL8@stbi__proc + +; 2599 : L -= (sixteen ? 129 : 65); + + 00754 85 ed test ebp, ebp + 00756 b8 41 00 00 00 mov eax, 65 ; 00000041H + 0075b b9 81 00 00 00 mov ecx, 129 ; 00000081H + 00760 0f 45 c1 cmovne eax, ecx + 00763 44 2b f8 sub r15d, eax + 00766 45 85 ff test r15d, r15d + 00769 0f 8f 01 ff ff + ff jg $LL4@stbi__proc + +; 2590 : while (L > 0) { + + 0076f e9 09 03 00 00 jmp $LN5@stbi__proc +$LN132@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00774 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0077a 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00783 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00788 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0078c 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@CNHKKDIM@bad?5DQT?5table@ + 00793 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); + + 00797 33 c0 xor eax, eax + 00799 e9 e9 02 00 00 jmp $LN1@stbi__proc +$LN131@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 0079e 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 007a4 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 007ad b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 007b2 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 007b6 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@BOFJCHAP@bad?5DQT?5type@ + 007bd 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); + + 007c1 33 c0 xor eax, eax + 007c3 e9 bf 02 00 00 jmp $LN1@stbi__proc +$LN29@stbi__proc: + +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; + + 007c8 48 8b 0e mov rcx, QWORD PTR [rsi] + 007cb e8 00 00 00 00 call stbi__get16be + +; 2605 : while (L > 0) { + + 007d0 33 c9 xor ecx, ecx + 007d2 44 8d 78 fe lea r15d, DWORD PTR [rax-2] + 007d6 45 85 ff test r15d, r15d + 007d9 0f 8e 98 02 00 + 00 jle $LN10@stbi__proc + 007df 90 npad 1 +$LL9@stbi__proc: + +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); + + 007e0 48 8b 1e mov rbx, QWORD PTR [rsi] + 007e3 44 8b e9 mov r13d, ecx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 007e6 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 007ed 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 007f4 73 0f jae SHORT $LN67@stbi__proc + +; 1078 : return *s->img_buffer++; + + 007f6 0f b6 08 movzx ecx, BYTE PTR [rax] + 007f9 48 ff c0 inc rax + 007fc 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00803 eb 26 jmp SHORT $LN66@stbi__proc +$LN67@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00805 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00809 74 1e je SHORT $LN68@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0080b 48 8b cb mov rcx, rbx + 0080e e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00813 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0081a 0f b6 08 movzx ecx, BYTE PTR [rax] + 0081d 48 ff c0 inc rax + 00820 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00827 eb 02 jmp SHORT $LN66@stbi__proc +$LN68@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00829 32 c9 xor cl, cl +$LN66@stbi__proc: + +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); + + 0082b 44 0f b6 f1 movzx r14d, cl + +; 2609 : int tc = q >> 4; + + 0082f 45 8b e6 mov r12d, r14d + +; 2610 : int th = q & 15; + + 00832 41 83 e6 0f and r14d, 15 + 00836 41 c1 ec 04 shr r12d, 4 + +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); + + 0083a 41 83 fc 01 cmp r12d, 1 + 0083e 0f 87 71 02 00 + 00 ja $LN31@stbi__proc + 00844 41 83 fe 03 cmp r14d, 3 + 00848 0f 87 67 02 00 + 00 ja $LN31@stbi__proc + +; 2612 : for (i = 0; i < 16; ++i) { + + 0084e 48 8d 7c 24 30 lea rdi, QWORD PTR sizes$9[rsp] + 00853 bd 10 00 00 00 mov ebp, 16 + 00858 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL13@stbi__proc: + +; 2613 : sizes[i] = stbi__get8(z->s); + + 00860 48 8b 1e mov rbx, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00863 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0086a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00871 73 0f jae SHORT $LN59@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00873 0f b6 08 movzx ecx, BYTE PTR [rax] + 00876 48 ff c0 inc rax + 00879 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00880 eb 26 jmp SHORT $LN58@stbi__proc +$LN59@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00882 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00886 74 1e je SHORT $LN60@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00888 48 8b cb mov rcx, rbx + 0088b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00890 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00897 0f b6 08 movzx ecx, BYTE PTR [rax] + 0089a 48 ff c0 inc rax + 0089d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 008a4 eb 02 jmp SHORT $LN58@stbi__proc +$LN60@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 008a6 32 c9 xor cl, cl +$LN58@stbi__proc: + +; 2613 : sizes[i] = stbi__get8(z->s); + + 008a8 0f b6 c1 movzx eax, cl + 008ab 89 07 mov DWORD PTR [rdi], eax + +; 2614 : n += sizes[i]; + + 008ad 44 03 e8 add r13d, eax + 008b0 48 83 c7 04 add rdi, 4 + 008b4 48 83 ed 01 sub rbp, 1 + 008b8 75 a6 jne SHORT $LL13@stbi__proc + +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! + + 008ba 41 81 fd 00 01 + 00 00 cmp r13d, 256 ; 00000100H + 008c1 0f 8f ee 01 00 + 00 jg $LN31@stbi__proc + +; 2617 : L -= 17; + + 008c7 41 83 ef 11 sub r15d, 17 + +; 2618 : if (tc == 0) { + + 008cb 48 8d 54 24 30 lea rdx, QWORD PTR sizes$9[rsp] + 008d0 44 89 7c 24 20 mov DWORD PTR L$3$[rsp], r15d + 008d5 45 8b fe mov r15d, r14d + 008d8 49 69 df 90 06 + 00 00 imul rbx, r15, 1680 ; 00000690H + 008df 48 03 de add rbx, rsi + 008e2 45 85 e4 test r12d, r12d + 008e5 75 18 jne SHORT $LN33@stbi__proc + +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; + + 008e7 48 8d 4b 08 lea rcx, QWORD PTR [rbx+8] + 008eb e8 00 00 00 00 call stbi__build_huffman + 008f0 85 c0 test eax, eax + 008f2 0f 84 fa fc ff + ff je $LN136@stbi__proc + +; 2620 : v = z->huff_dc[th].values; + + 008f8 b8 08 04 00 00 mov eax, 1032 ; 00000408H + +; 2621 : } + + 008fd eb 19 jmp SHORT $LN34@stbi__proc +$LN33@stbi__proc: + +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; + + 008ff 48 8d 8b 48 1a + 00 00 lea rcx, QWORD PTR [rbx+6728] + 00906 e8 00 00 00 00 call stbi__build_huffman + 0090b 85 c0 test eax, eax + 0090d 0f 84 df fc ff + ff je $LN136@stbi__proc + +; 2624 : v = z->huff_ac[th].values; + + 00913 b8 48 1e 00 00 mov eax, 7752 ; 00001e48H +$LN34@stbi__proc: + +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) + + 00918 33 c9 xor ecx, ecx + 0091a 49 63 ed movsxd rbp, r13d + 0091d 4c 8d 34 18 lea r14, QWORD PTR [rax+rbx] + 00921 8b f9 mov edi, ecx + 00923 45 85 ed test r13d, r13d + 00926 7e 5e jle SHORT $LN15@stbi__proc + 00928 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL16@stbi__proc: + +; 2627 : v[i] = stbi__get8(z->s); + + 00930 48 8b 1e mov rbx, QWORD PTR [rsi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00933 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0093a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00941 73 0f jae SHORT $LN55@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00943 0f b6 08 movzx ecx, BYTE PTR [rax] + 00946 48 ff c0 inc rax + 00949 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00950 eb 26 jmp SHORT $LN54@stbi__proc +$LN55@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00952 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00956 74 1e je SHORT $LN56@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00958 48 8b cb mov rcx, rbx + 0095b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00960 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00967 0f b6 08 movzx ecx, BYTE PTR [rax] + 0096a 48 ff c0 inc rax + 0096d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00974 eb 02 jmp SHORT $LN54@stbi__proc +$LN56@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00976 32 c9 xor cl, cl +$LN54@stbi__proc: + +; 2627 : v[i] = stbi__get8(z->s); + + 00978 41 88 0c 3e mov BYTE PTR [r14+rdi], cl + 0097c 48 ff c7 inc rdi + 0097f 48 3b fd cmp rdi, rbp + 00982 7c ac jl SHORT $LL16@stbi__proc + 00984 33 c9 xor ecx, ecx +$LN15@stbi__proc: + +; 2628 : if (tc != 0) + + 00986 45 85 e4 test r12d, r12d + 00989 0f 84 d7 00 00 + 00 je $LN76@stbi__proc + +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + + 0098f 4d 69 f7 90 06 + 00 00 imul r14, r15, 1680 ; 00000690H + 00996 49 c1 e7 0a shl r15, 10 + 0099a 4c 8d 96 88 36 + 00 00 lea r10, QWORD PTR [rsi+13960] + 009a1 4c 03 f6 add r14, rsi + 009a4 44 8b d9 mov r11d, ecx + 009a7 4d 03 d7 add r10, r15 + 009aa 49 8d 9e 48 1a + 00 00 lea rbx, QWORD PTR [r14+6728] +$LL77@stbi__proc: + +; 1516 : stbi_uc fast = h->fast[i]; + + 009b1 0f b6 03 movzx eax, BYTE PTR [rbx] + +; 1517 : fast_ac[i] = 0; + + 009b4 66 41 89 0a mov WORD PTR [r10], cx + +; 1518 : if (fast < 255) { + + 009b8 3c ff cmp al, 255 ; 000000ffH + 009ba 0f 83 8f 00 00 + 00 jae $LN75@stbi__proc + +; 1519 : int rs = h->values[fast]; + + 009c0 46 0f b6 8c 30 + 48 1e 00 00 movzx r9d, BYTE PTR [rax+r14+7752] + +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; + + 009c9 42 0f b6 bc 30 + 48 1f 00 00 movzx edi, BYTE PTR [rax+r14+8008] + 009d2 41 8b e9 mov ebp, r9d + 009d5 c1 ed 04 shr ebp, 4 + 009d8 41 83 e1 0f and r9d, 15 + +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { + + 009dc 74 71 je SHORT $LN75@stbi__proc + 009de 42 8d 04 0f lea eax, DWORD PTR [rdi+r9] + 009e2 83 f8 09 cmp eax, 9 + 009e5 77 68 ja SHORT $LN75@stbi__proc + +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + + 009e7 8b cf mov ecx, edi + 009e9 45 8b c3 mov r8d, r11d + 009ec 41 d3 e0 shl r8d, cl + +; 1527 : int m = 1 << (magbits - 1); + + 009ef b8 01 00 00 00 mov eax, 1 + 009f4 41 81 e0 ff 01 + 00 00 and r8d, 511 ; 000001ffH + 009fb b9 09 00 00 00 mov ecx, 9 + 00a00 41 2b c9 sub ecx, r9d + 00a03 41 d3 f8 sar r8d, cl + 00a06 41 8d 49 ff lea ecx, DWORD PTR [r9-1] + 00a0a d3 e0 shl eax, cl + +; 1528 : if (k < m) k += (~0U << magbits) + 1; + + 00a0c 44 3b c0 cmp r8d, eax + 00a0f 7d 14 jge SHORT $LN80@stbi__proc + 00a11 41 8b c9 mov ecx, r9d + 00a14 ba 01 00 00 00 mov edx, 1 + 00a19 d3 e2 shl edx, cl + 00a1b b8 01 00 00 00 mov eax, 1 + 00a20 2b c2 sub eax, edx + 00a22 44 03 c0 add r8d, eax +$LN80@stbi__proc: + +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) + + 00a25 41 8d 80 80 00 + 00 00 lea eax, DWORD PTR [r8+128] + 00a2c 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00a31 77 1a ja SHORT $LN210@stbi__proc + +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); + + 00a33 66 41 c1 e0 04 shl r8w, 4 + 00a38 66 44 03 c5 add r8w, bp + 00a3c 66 41 c1 e0 04 shl r8w, 4 + 00a41 66 44 03 c7 add r8w, di + 00a45 66 45 03 c1 add r8w, r9w + 00a49 66 45 89 02 mov WORD PTR [r10], r8w +$LN210@stbi__proc: + +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { + + 00a4d 33 c9 xor ecx, ecx +$LN75@stbi__proc: + 00a4f 41 ff c3 inc r11d + 00a52 48 ff c3 inc rbx + 00a55 49 83 c2 02 add r10, 2 + 00a59 41 81 fb 00 02 + 00 00 cmp r11d, 512 ; 00000200H + 00a60 0f 8c 4b ff ff + ff jl $LL77@stbi__proc +$LN76@stbi__proc: + +; 2630 : L -= n; + + 00a66 44 8b 7c 24 20 mov r15d, DWORD PTR L$3$[rsp] + 00a6b 45 2b fd sub r15d, r13d + 00a6e 45 85 ff test r15d, r15d + 00a71 0f 8f 69 fd ff + ff jg $LL9@stbi__proc +$LN10@stbi__proc: + +; 2631 : } +; 2632 : return L == 0; + + 00a77 41 bc 00 00 00 + 00 mov r12d, 0 +$LN5@stbi__proc: + +; 2679 : } + + 00a7d 45 85 ff test r15d, r15d +$LN289@stbi__proc: + 00a80 41 0f 94 c4 sete r12b + 00a84 41 8b c4 mov eax, r12d +$LN1@stbi__proc: + 00a87 48 8b 4c 24 70 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00a8c 48 33 cc xor rcx, rsp + 00a8f e8 00 00 00 00 call __security_check_cookie + 00a94 4c 8d 9c 24 80 + 00 00 00 lea r11, QWORD PTR [rsp+128] + 00a9c 49 8b 5b 38 mov rbx, QWORD PTR [r11+56] + 00aa0 49 8b 6b 40 mov rbp, QWORD PTR [r11+64] + 00aa4 49 8b 73 48 mov rsi, QWORD PTR [r11+72] + 00aa8 49 8b e3 mov rsp, r11 + 00aab 41 5f pop r15 + 00aad 41 5e pop r14 + 00aaf 41 5d pop r13 + 00ab1 41 5c pop r12 + 00ab3 5f pop rdi + 00ab4 c3 ret 0 +$LN31@stbi__proc: + 00ab5 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00abb 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00ac4 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00ac9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00acd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@JLGKOCGN@bad?5DHT?5header@ + 00ad4 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 00ad8 33 c0 xor eax, eax + 00ada eb ab jmp SHORT $LN1@stbi__proc +stbi__process_marker ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__process_scan_header +_TEXT SEGMENT +z$ = 48 +stbi__process_scan_header PROC ; COMDAT + +; 2683 : { + + 00000 48 89 5c 24 18 mov QWORD PTR [rsp+24], rbx + 00005 48 89 74 24 20 mov QWORD PTR [rsp+32], rsi + 0000a 57 push rdi + 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000f 48 8b f9 mov rdi, rcx + +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); + + 00012 48 8b 09 mov rcx, QWORD PTR [rcx] + 00015 e8 00 00 00 00 call stbi__get16be + +; 2686 : z->scan_n = stbi__get8(z->s); + + 0001a 48 8b 1f mov rbx, QWORD PTR [rdi] + 0001d 8b f0 mov esi, eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0001f 48 8b 93 c0 00 + 00 00 mov rdx, QWORD PTR [rbx+192] + 00026 48 3b 93 c8 00 + 00 00 cmp rdx, QWORD PTR [rbx+200] + 0002d 73 0f jae SHORT $LN24@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0002f 0f b6 0a movzx ecx, BYTE PTR [rdx] + 00032 48 ff c2 inc rdx + 00035 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + 0003c eb 26 jmp SHORT $LN23@stbi__proc +$LN24@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0003e 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00042 74 1e je SHORT $LN25@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00044 48 8b cb mov rcx, rbx + 00047 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0004c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00053 0f b6 08 movzx ecx, BYTE PTR [rax] + 00056 48 ff c0 inc rax + 00059 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00060 eb 02 jmp SHORT $LN23@stbi__proc +$LN25@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00062 32 c9 xor cl, cl +$LN23@stbi__proc: + +; 2686 : z->scan_n = stbi__get8(z->s); + + 00064 0f b6 c9 movzx ecx, cl + 00067 89 8f 54 48 00 + 00 mov DWORD PTR [rdi+18516], ecx + +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); + + 0006d 8d 41 ff lea eax, DWORD PTR [rcx-1] + 00070 83 f8 03 cmp eax, 3 + 00073 0f 87 48 03 00 + 00 ja $LN9@stbi__proc + 00079 48 8b 07 mov rax, QWORD PTR [rdi] + 0007c 3b 48 08 cmp ecx, DWORD PTR [rax+8] + 0007f 0f 8f 3c 03 00 + 00 jg $LN9@stbi__proc + +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); + + 00085 8d 04 4d 06 00 + 00 00 lea eax, DWORD PTR [rcx*2+6] + 0008c 3b f0 cmp esi, eax + 0008e 74 35 je SHORT $LN10@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 00090 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00096 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0009f b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000a4 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000a8 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@GNEHAHOH@bad?5SOS?5len@ + 000af 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); + + 000b3 33 c0 xor eax, eax + +; 2720 : } + + 000b5 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 000ba 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] + 000bf 48 83 c4 20 add rsp, 32 ; 00000020H + 000c3 5f pop rdi + 000c4 c3 ret 0 +$LN10@stbi__proc: + 000c5 48 89 6c 24 30 mov QWORD PTR [rsp+48], rbp + +; 2689 : for (i = 0; i < z->scan_n; ++i) { + + 000ca 33 ed xor ebp, ebp + 000cc 4c 89 74 24 38 mov QWORD PTR [rsp+56], r14 + 000d1 4c 8d b7 58 48 + 00 00 lea r14, QWORD PTR [rdi+18520] + 000d8 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL4@stbi__proc: + +; 2690 : int id = stbi__get8(z->s), which; + + 000e0 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000e3 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000ea 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000f1 73 0f jae SHORT $LN32@stbi__proc + +; 1078 : return *s->img_buffer++; + + 000f3 0f b6 08 movzx ecx, BYTE PTR [rax] + 000f6 48 ff c0 inc rax + 000f9 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00100 eb 26 jmp SHORT $LN31@stbi__proc +$LN32@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00102 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00106 74 1e je SHORT $LN33@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00108 48 8b cb mov rcx, rbx + 0010b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00110 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00117 0f b6 08 movzx ecx, BYTE PTR [rax] + 0011a 48 ff c0 inc rax + 0011d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00124 eb 02 jmp SHORT $LN31@stbi__proc +$LN33@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00126 32 c9 xor cl, cl +$LN31@stbi__proc: + +; 2691 : int q = stbi__get8(z->s); + + 00128 48 8b 1f mov rbx, QWORD PTR [rdi] + 0012b 0f b6 f1 movzx esi, cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0012e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00135 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0013c 73 0f jae SHORT $LN36@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0013e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00141 48 ff c0 inc rax + 00144 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0014b eb 26 jmp SHORT $LN35@stbi__proc +$LN36@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0014d 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00151 74 1e je SHORT $LN37@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00153 48 8b cb mov rcx, rbx + 00156 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0015b 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00162 0f b6 08 movzx ecx, BYTE PTR [rax] + 00165 48 ff c0 inc rax + 00168 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0016f eb 02 jmp SHORT $LN35@stbi__proc +$LN37@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00171 32 c9 xor cl, cl +$LN35@stbi__proc: + +; 2692 : for (which = 0; which < z->s->img_n; ++which) + + 00173 48 8b 07 mov rax, QWORD PTR [rdi] + 00176 33 d2 xor edx, edx + 00178 44 0f b6 c9 movzx r9d, cl + 0017c 45 33 c0 xor r8d, r8d + 0017f 8b 48 08 mov ecx, DWORD PTR [rax+8] + 00182 85 c9 test ecx, ecx + 00184 7e 1b jle SHORT $LN73@stbi__proc + +; 2691 : int q = stbi__get8(z->s); + + 00186 48 8d 87 a0 46 + 00 00 lea rax, QWORD PTR [rdi+18080] + 0018d 0f 1f 00 npad 3 +$LL7@stbi__proc: + +; 2693 : if (z->img_comp[which].id == id) + + 00190 39 30 cmp DWORD PTR [rax], esi + 00192 74 0d je SHORT $LN73@stbi__proc + +; 2692 : for (which = 0; which < z->s->img_n; ++which) + + 00194 ff c2 inc edx + 00196 49 ff c0 inc r8 + 00199 48 83 c0 60 add rax, 96 ; 00000060H + 0019d 3b d1 cmp edx, ecx + 0019f 7c ef jl SHORT $LL7@stbi__proc +$LN73@stbi__proc: + +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match + + 001a1 3b d1 cmp edx, ecx + 001a3 0f 84 9d 01 00 + 00 je $LN64@stbi__proc + +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); + + 001a9 4b 8d 04 40 lea rax, QWORD PTR [r8+r8*2] + 001ad 41 8b c9 mov ecx, r9d + 001b0 48 c1 e0 05 shl rax, 5 + 001b4 c1 e9 04 shr ecx, 4 + 001b7 89 8c 38 b0 46 + 00 00 mov DWORD PTR [rax+rdi+18096], ecx + 001be 83 f9 03 cmp ecx, 3 + 001c1 0f 87 d9 01 00 + 00 ja $LN65@stbi__proc + +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); + + 001c7 41 83 e1 0f and r9d, 15 + 001cb 44 89 8c 38 b4 + 46 00 00 mov DWORD PTR [rax+rdi+18100], r9d + 001d3 41 83 f9 03 cmp r9d, 3 + 001d7 0f 87 a2 01 00 + 00 ja $LN66@stbi__proc + +; 2698 : z->order[i] = which; + + 001dd 41 89 16 mov DWORD PTR [r14], edx + 001e0 ff c5 inc ebp + 001e2 49 83 c6 04 add r14, 4 + 001e6 3b af 54 48 00 + 00 cmp ebp, DWORD PTR [rdi+18516] + 001ec 0f 8c ee fe ff + ff jl $LL4@stbi__proc + +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); + + 001f2 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001f5 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001fc 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00203 73 0f jae SHORT $LN44@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00205 0f b6 08 movzx ecx, BYTE PTR [rax] + 00208 48 ff c0 inc rax + 0020b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00212 eb 26 jmp SHORT $LN43@stbi__proc +$LN44@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00214 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00218 74 1e je SHORT $LN45@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0021a 48 8b cb mov rcx, rbx + 0021d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00222 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00229 0f b6 08 movzx ecx, BYTE PTR [rax] + 0022c 48 ff c0 inc rax + 0022f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00236 eb 02 jmp SHORT $LN43@stbi__proc +$LN45@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00238 32 c9 xor cl, cl +$LN43@stbi__proc: + +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + + 0023a 48 8b 1f mov rbx, QWORD PTR [rdi] + 0023d 0f b6 c1 movzx eax, cl + 00240 89 87 34 48 00 + 00 mov DWORD PTR [rdi+18484], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00246 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0024d 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00254 73 0f jae SHORT $LN48@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00256 0f b6 08 movzx ecx, BYTE PTR [rax] + 00259 48 ff c0 inc rax + 0025c 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00263 eb 26 jmp SHORT $LN47@stbi__proc +$LN48@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00265 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00269 74 1e je SHORT $LN49@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0026b 48 8b cb mov rcx, rbx + 0026e e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00273 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0027a 0f b6 08 movzx ecx, BYTE PTR [rax] + 0027d 48 ff c0 inc rax + 00280 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00287 eb 02 jmp SHORT $LN47@stbi__proc +$LN49@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00289 32 c9 xor cl, cl +$LN47@stbi__proc: + +; 2705 : aa = stbi__get8(z->s); + + 0028b 48 8b 1f mov rbx, QWORD PTR [rdi] + 0028e 0f b6 c1 movzx eax, cl + 00291 89 87 38 48 00 + 00 mov DWORD PTR [rdi+18488], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00297 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0029e 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 002a5 73 0f jae SHORT $LN52@stbi__proc + +; 1078 : return *s->img_buffer++; + + 002a7 0f b6 08 movzx ecx, BYTE PTR [rax] + 002aa 48 ff c0 inc rax + 002ad 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002b4 eb 26 jmp SHORT $LN51@stbi__proc +$LN52@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 002b6 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 002ba 74 1e je SHORT $LN53@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 002bc 48 8b cb mov rcx, rbx + 002bf e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 002c4 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002cb 0f b6 08 movzx ecx, BYTE PTR [rax] + 002ce 48 ff c0 inc rax + 002d1 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002d8 eb 02 jmp SHORT $LN51@stbi__proc +$LN53@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 002da 32 c9 xor cl, cl +$LN51@stbi__proc: + +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { + + 002dc 8b 97 34 48 00 + 00 mov edx, DWORD PTR [rdi+18484] + 002e2 0f b6 c1 movzx eax, cl + 002e5 8b c8 mov ecx, eax + 002e7 83 e0 0f and eax, 15 + 002ea c1 e9 04 shr ecx, 4 + 002ed 83 bf 30 48 00 + 00 00 cmp DWORD PTR [rdi+18480], 0 + 002f4 89 8f 3c 48 00 + 00 mov DWORD PTR [rdi+18492], ecx + 002fa 89 87 40 48 00 + 00 mov DWORD PTR [rdi+18496], eax + 00300 74 60 je SHORT $LN15@stbi__proc + +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + + 00302 83 fa 3f cmp edx, 63 ; 0000003fH + 00305 7f 1c jg SHORT $LN21@stbi__proc + 00307 44 8b 87 38 48 + 00 00 mov r8d, DWORD PTR [rdi+18488] + 0030e 41 83 f8 3f cmp r8d, 63 ; 0000003fH + 00312 7f 0f jg SHORT $LN21@stbi__proc + 00314 41 3b d0 cmp edx, r8d + 00317 7f 0a jg SHORT $LN21@stbi__proc + 00319 83 f9 0d cmp ecx, 13 + 0031c 77 05 ja SHORT $LN21@stbi__proc + 0031e 83 f8 0d cmp eax, 13 + 00321 76 55 jbe SHORT $LN16@stbi__proc +$LN21@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00323 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00329 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00332 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00337 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0033b 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@ +$LN105@stbi__proc: + 00342 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN64@stbi__proc: + +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); + + 00346 33 c0 xor eax, eax +$LN104@stbi__proc: + 00348 48 8b 6c 24 30 mov rbp, QWORD PTR [rsp+48] + 0034d 4c 8b 74 24 38 mov r14, QWORD PTR [rsp+56] + +; 2720 : } + + 00352 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 00357 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] + 0035c 48 83 c4 20 add rsp, 32 ; 00000020H + 00360 5f pop rdi + 00361 c3 ret 0 +$LN15@stbi__proc: + +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); + + 00362 85 d2 test edx, edx + 00364 75 bd jne SHORT $LN21@stbi__proc + +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); + + 00366 85 c9 test ecx, ecx + 00368 75 b9 jne SHORT $LN21@stbi__proc + 0036a 85 c0 test eax, eax + 0036c 75 b5 jne SHORT $LN21@stbi__proc + +; 2715 : z->spec_end = 63; + + 0036e c7 87 38 48 00 + 00 3f 00 00 00 mov DWORD PTR [rdi+18488], 63 ; 0000003fH +$LN16@stbi__proc: + +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; + + 00378 b8 01 00 00 00 mov eax, 1 + 0037d eb c9 jmp SHORT $LN104@stbi__proc +$LN66@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 0037f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00385 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0038e b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00393 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00397 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@JGMCBLGG@bad?5AC?5huff@ + +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); + + 0039e eb a2 jmp SHORT $LN105@stbi__proc +$LN65@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 003a0 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 003a6 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 003af b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 003b4 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 003b8 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@NOCCBFAC@bad?5DC?5huff@ + +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); + + 003bf eb 81 jmp SHORT $LN105@stbi__proc +$LN9@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 003c1 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 003c7 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + +; 2720 : } + + 003d0 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 003d5 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] + +; 431 : stbi__g_failure_reason = str; + + 003da b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 003df 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 003e3 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ + 003ea 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); + + 003ee 33 c0 xor eax, eax + +; 2720 : } + + 003f0 48 83 c4 20 add rsp, 32 ; 00000020H + 003f4 5f pop rdi + 003f5 c3 ret 0 +stbi__process_scan_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__free_jpeg_components +_TEXT SEGMENT +z$ = 48 +ncomp$ = 56 +why$ = 64 +stbi__free_jpeg_components PROC ; COMDAT + +; 2723 : { + + 00000 40 56 push rsi + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + 00006 41 8b f0 mov esi, r8d + +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { + + 00009 85 d2 test edx, edx + 0000b 7e 72 jle SHORT $LN13@stbi__free + 0000d 48 89 5c 24 30 mov QWORD PTR [rsp+48], rbx + 00012 48 8d 99 d8 46 + 00 00 lea rbx, QWORD PTR [rcx+18136] + 00019 48 89 6c 24 38 mov QWORD PTR [rsp+56], rbp + 0001e 33 ed xor ebp, ebp + 00020 48 89 7c 24 40 mov QWORD PTR [rsp+64], rdi + 00025 8b fa mov edi, edx +$LL4@stbi__free: + +; 2726 : if (z->img_comp[i].raw_data) { + + 00027 48 8b 0b mov rcx, QWORD PTR [rbx] + 0002a 48 85 c9 test rcx, rcx + 0002d 74 0d je SHORT $LN5@stbi__free + +; 2727 : STBI_FREE(z->img_comp[i].raw_data); + + 0002f ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 2728 : z->img_comp[i].raw_data = NULL; + + 00035 48 89 2b mov QWORD PTR [rbx], rbp + +; 2729 : z->img_comp[i].data = NULL; + + 00038 48 89 6b f8 mov QWORD PTR [rbx-8], rbp +$LN5@stbi__free: + +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { + + 0003c 48 8b 4b 08 mov rcx, QWORD PTR [rbx+8] + 00040 48 85 c9 test rcx, rcx + 00043 74 0e je SHORT $LN6@stbi__free + +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); + + 00045 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 2733 : z->img_comp[i].raw_coeff = 0; + + 0004b 48 89 6b 08 mov QWORD PTR [rbx+8], rbp + +; 2734 : z->img_comp[i].coeff = 0; + + 0004f 48 89 6b 18 mov QWORD PTR [rbx+24], rbp +$LN6@stbi__free: + +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { + + 00053 48 8b 4b 10 mov rcx, QWORD PTR [rbx+16] + 00057 48 85 c9 test rcx, rcx + 0005a 74 0a je SHORT $LN2@stbi__free + +; 2737 : STBI_FREE(z->img_comp[i].linebuf); + + 0005c ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 2738 : z->img_comp[i].linebuf = NULL; + + 00062 48 89 6b 10 mov QWORD PTR [rbx+16], rbp +$LN2@stbi__free: + +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { + + 00066 48 83 c3 60 add rbx, 96 ; 00000060H + 0006a 48 83 ef 01 sub rdi, 1 + 0006e 75 b7 jne SHORT $LL4@stbi__free + 00070 48 8b 7c 24 40 mov rdi, QWORD PTR [rsp+64] + 00075 48 8b 6c 24 38 mov rbp, QWORD PTR [rsp+56] + 0007a 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] +$LN13@stbi__free: + +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } + + 0007f 8b c6 mov eax, esi + 00081 48 83 c4 20 add rsp, 32 ; 00000020H + 00085 5e pop rsi + 00086 c3 ret 0 +stbi__free_jpeg_components ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__process_frame_header +_TEXT SEGMENT +z$ = 80 +scan$ = 88 +stbi__process_frame_header PROC ; COMDAT + +; 2745 : { + + 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx + 00004 53 push rbx + 00005 55 push rbp + 00006 56 push rsi + 00007 57 push rdi + 00008 41 57 push r15 + 0000a 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 2746 : stbi__context* s = z->s; + + 0000e 48 8b 19 mov rbx, QWORD PTR [rcx] + 00011 4c 8b f9 mov r15, rcx + +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; + + 00014 bd 01 00 00 00 mov ebp, 1 + +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG + + 00019 48 8b cb mov rcx, rbx + 0001c 8b f5 mov esi, ebp + 0001e e8 00 00 00 00 call stbi__get16be + 00023 8b f8 mov edi, eax + 00025 83 f8 0b cmp eax, 11 + 00028 7d 30 jge SHORT $LN17@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 0002a 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00030 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00039 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0003e 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00042 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@DOFMJEMP@bad?5SOF?5len@ + 00049 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG + + 0004d 33 c0 xor eax, eax + +; 2834 : } + + 0004f 48 83 c4 20 add rsp, 32 ; 00000020H + 00053 41 5f pop r15 + 00055 5f pop rdi + 00056 5e pop rsi + 00057 5d pop rbp + 00058 5b pop rbx + 00059 c3 ret 0 +$LN17@stbi__proc: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0005a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00061 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00068 72 19 jb SHORT $LN266@stbi__proc + +; 1079 : if (s->read_from_callbacks) { + + 0006a 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0006e 0f 84 5b 07 00 + 00 je $LN189@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00074 48 8b cb mov rcx, rbx + 00077 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0007c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN266@stbi__proc: + +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline + + 00083 0f b6 08 movzx ecx, BYTE PTR [rax] + 00086 48 ff c0 inc rax + 00089 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00090 80 f9 08 cmp cl, 8 + 00093 0f 85 36 07 00 + 00 jne $LN189@stbi__proc + +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + + 00099 48 8b cb mov rcx, rbx + 0009c e8 00 00 00 00 call stbi__get16be + 000a1 89 43 04 mov DWORD PTR [rbx+4], eax + 000a4 85 c0 test eax, eax + 000a6 75 30 jne SHORT $LN19@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 000a8 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000ae 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000b7 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000bc 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000c0 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@LNEGOMA@no?5header?5height@ + 000c7 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + + 000cb 33 c0 xor eax, eax + +; 2834 : } + + 000cd 48 83 c4 20 add rsp, 32 ; 00000020H + 000d1 41 5f pop r15 + 000d3 5f pop rdi + 000d4 5e pop rsi + 000d5 5d pop rbp + 000d6 5b pop rbx + 000d7 c3 ret 0 +$LN19@stbi__proc: + +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires + + 000d8 48 8b cb mov rcx, rbx + 000db e8 00 00 00 00 call stbi__get16be + 000e0 89 03 mov DWORD PTR [rbx], eax + 000e2 85 c0 test eax, eax + 000e4 75 30 jne SHORT $LN20@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 000e6 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000ec 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000f5 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000fa 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000fe 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07BIDACDEF@0?5width@ + 00105 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires + + 00109 33 c0 xor eax, eax + +; 2834 : } + + 0010b 48 83 c4 20 add rsp, 32 ; 00000020H + 0010f 41 5f pop r15 + 00111 5f pop rdi + 00112 5e pop rsi + 00113 5d pop rbp + 00114 5b pop rbx + 00115 c3 ret 0 +$LN20@stbi__proc: + +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 00116 81 7b 04 00 00 + 00 01 cmp DWORD PTR [rbx+4], 16777216 ; 01000000H + 0011d 76 30 jbe SHORT $LN21@stbi__proc +$LN267@stbi__proc: + +; 2834 : } + + 0011f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00125 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0012e b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00133 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00137 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 0013e 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 00142 33 c0 xor eax, eax + 00144 48 83 c4 20 add rsp, 32 ; 00000020H + 00148 41 5f pop r15 + 0014a 5f pop rdi + 0014b 5e pop rsi + 0014c 5d pop rbp + 0014d 5b pop rbx + 0014e c3 ret 0 +$LN21@stbi__proc: + +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 0014f 3d 00 00 00 01 cmp eax, 16777216 ; 01000000H + 00154 77 c9 ja SHORT $LN267@stbi__proc + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00156 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0015d 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00164 73 0f jae SHORT $LN146@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00166 0f b6 08 movzx ecx, BYTE PTR [rax] + 00169 48 ff c0 inc rax + 0016c 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00173 eb 26 jmp SHORT $LN145@stbi__proc +$LN146@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00175 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00179 74 1e je SHORT $LN147@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 0017b 48 8b cb mov rcx, rbx + 0017e e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00183 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0018a 0f b6 08 movzx ecx, BYTE PTR [rax] + 0018d 48 ff c0 inc rax + 00190 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00197 eb 02 jmp SHORT $LN145@stbi__proc +$LN147@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00199 32 c9 xor cl, cl +$LN145@stbi__proc: + +; 2754 : c = stbi__get8(s); + + 0019b 0f b6 c9 movzx ecx, cl + +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); + + 0019e 8d 41 ff lea eax, DWORD PTR [rcx-1] + 001a1 a9 fc ff ff ff test eax, -4 ; fffffffcH + 001a6 0f 85 f3 05 00 + 00 jne $LN201@stbi__proc + 001ac 83 f9 02 cmp ecx, 2 + 001af 0f 84 ea 05 00 + 00 je $LN201@stbi__proc + 001b5 4c 89 64 24 50 mov QWORD PTR [rsp+80], r12 + +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { + + 001ba 45 33 e4 xor r12d, r12d + 001bd 89 4b 08 mov DWORD PTR [rbx+8], ecx + 001c0 48 85 c9 test rcx, rcx + 001c3 74 1b je SHORT $LN3@stbi__proc + 001c5 49 8d 87 e8 46 + 00 00 lea rax, QWORD PTR [r15+18152] + 001cc 0f 1f 40 00 npad 4 +$LL4@stbi__proc: + +; 2758 : z->img_comp[i].data = NULL; + + 001d0 4c 89 60 e8 mov QWORD PTR [rax-24], r12 + +; 2759 : z->img_comp[i].linebuf = NULL; + + 001d4 4c 89 20 mov QWORD PTR [rax], r12 + 001d7 48 8d 40 60 lea rax, QWORD PTR [rax+96] + 001db 48 2b ce sub rcx, rsi + 001de 75 f0 jne SHORT $LL4@stbi__proc +$LN3@stbi__proc: + +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); + + 001e0 8b 43 08 mov eax, DWORD PTR [rbx+8] + 001e3 8d 48 04 lea ecx, DWORD PTR [rax+4] + 001e6 8d 0c 48 lea ecx, DWORD PTR [rax+rcx*2] + 001e9 3b f9 cmp edi, ecx + 001eb 74 35 je SHORT $LN24@stbi__proc + +; 431 : stbi__g_failure_reason = str; + + 001ed 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001f3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001fc 4c 8b 64 24 50 mov r12, QWORD PTR [rsp+80] + 00201 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00206 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0020a 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@DOFMJEMP@bad?5SOF?5len@ + 00211 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); + + 00215 33 c0 xor eax, eax + +; 2834 : } + + 00217 48 83 c4 20 add rsp, 32 ; 00000020H + 0021b 41 5f pop r15 + 0021d 5f pop rdi + 0021e 5e pop rsi + 0021f 5d pop rbp + 00220 5b pop rbx + 00221 c3 ret 0 +$LN24@stbi__proc: + 00222 4c 89 6c 24 60 mov QWORD PTR [rsp+96], r13 + +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { + + 00227 45 8b ec mov r13d, r12d + 0022a 45 89 a7 50 48 + 00 00 mov DWORD PTR [r15+18512], r12d + 00231 44 8b 4b 08 mov r9d, DWORD PTR [rbx+8] + 00235 4c 89 74 24 68 mov QWORD PTR [rsp+104], r14 + 0023a 45 85 c9 test r9d, r9d + 0023d 0f 8e 5d 01 00 + 00 jle $LN6@stbi__proc + 00243 4c 8d 25 00 00 + 00 00 lea r12, OFFSET FLAT:?rgb@?5??stbi__process_frame_header@@9@9 + 0024a 4d 8d b7 a4 46 + 00 00 lea r14, QWORD PTR [r15+18084] + 00251 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 00255 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL7@stbi__proc: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00260 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00267 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0026e 73 0f jae SHORT $LN105@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00270 0f b6 08 movzx ecx, BYTE PTR [rax] + 00273 48 ff c0 inc rax + 00276 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0027d eb 25 jmp SHORT $LN104@stbi__proc +$LN105@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0027f 83 3f 00 cmp DWORD PTR [rdi], 0 + 00282 74 1e je SHORT $LN106@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00284 48 8b cb mov rcx, rbx + 00287 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0028c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00293 0f b6 08 movzx ecx, BYTE PTR [rax] + 00296 48 ff c0 inc rax + 00299 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002a0 eb 02 jmp SHORT $LN104@stbi__proc +$LN106@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 002a2 32 c9 xor cl, cl +$LN104@stbi__proc: + +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); + + 002a4 0f b6 d1 movzx edx, cl + 002a7 41 89 56 fc mov DWORD PTR [r14-4], edx + +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + + 002ab 83 7b 08 03 cmp DWORD PTR [rbx+8], 3 + 002af 75 10 jne SHORT $LN25@stbi__proc + 002b1 41 0f b6 04 24 movzx eax, BYTE PTR [r12] + 002b6 3b d0 cmp edx, eax + 002b8 75 07 jne SHORT $LN25@stbi__proc + +; 2769 : ++z->rgb; + + 002ba 41 ff 87 50 48 + 00 00 inc DWORD PTR [r15+18512] +$LN25@stbi__proc: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 002c1 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002c8 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 002cf 73 0f jae SHORT $LN109@stbi__proc + +; 1078 : return *s->img_buffer++; + + 002d1 0f b6 08 movzx ecx, BYTE PTR [rax] + 002d4 48 ff c0 inc rax + 002d7 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002de eb 25 jmp SHORT $LN108@stbi__proc +$LN109@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 002e0 83 3f 00 cmp DWORD PTR [rdi], 0 + 002e3 74 1e je SHORT $LN110@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 002e5 48 8b cb mov rcx, rbx + 002e8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 002ed 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002f4 0f b6 08 movzx ecx, BYTE PTR [rax] + 002f7 48 ff c0 inc rax + 002fa 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00301 eb 02 jmp SHORT $LN108@stbi__proc +$LN110@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00303 32 c9 xor cl, cl +$LN108@stbi__proc: + +; 2770 : q = stbi__get8(s); + + 00305 0f b6 c9 movzx ecx, cl + +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); + + 00308 8b c1 mov eax, ecx + 0030a c1 e8 04 shr eax, 4 + 0030d 41 89 06 mov DWORD PTR [r14], eax + 00310 ff c8 dec eax + 00312 83 f8 03 cmp eax, 3 + 00315 0f 87 66 03 00 + 00 ja $LN166@stbi__proc + +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); + + 0031b 83 e1 0f and ecx, 15 + 0031e 41 89 4e 04 mov DWORD PTR [r14+4], ecx + 00322 8d 41 ff lea eax, DWORD PTR [rcx-1] + 00325 83 f8 03 cmp eax, 3 + 00328 0f 87 32 03 00 + 00 ja $LN167@stbi__proc + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0032e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00335 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0033c 73 13 jae SHORT $LN150@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0033e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00341 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 00345 48 ff c0 inc rax + 00348 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0034f eb 25 jmp SHORT $LN149@stbi__proc +$LN150@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00351 83 3f 00 cmp DWORD PTR [rdi], 0 + 00354 74 1e je SHORT $LN151@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00356 48 8b cb mov rcx, rbx + 00359 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0035e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00365 0f b6 08 movzx ecx, BYTE PTR [rax] + 00368 48 ff c0 inc rax + 0036b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00372 eb 02 jmp SHORT $LN149@stbi__proc +$LN151@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00374 32 c9 xor cl, cl +$LN149@stbi__proc: + +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); + + 00376 0f b6 c1 movzx eax, cl + 00379 41 89 46 08 mov DWORD PTR [r14+8], eax + 0037d 83 f8 03 cmp eax, 3 + 00380 0f 87 9b 02 00 + 00 ja $LN165@stbi__proc + +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { + + 00386 44 8b 4b 08 mov r9d, DWORD PTR [rbx+8] + 0038a 41 ff c5 inc r13d + 0038d 49 ff c4 inc r12 + 00390 49 83 c6 60 add r14, 96 ; 00000060H + 00394 45 3b e9 cmp r13d, r9d + 00397 0f 8c c3 fe ff + ff jl $LL7@stbi__proc + +; 2827 : if (z->img_comp[i].raw_coeff == NULL) + + 0039d 45 33 e4 xor r12d, r12d +$LN6@stbi__proc: + +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; + + 003a0 83 7c 24 58 00 cmp DWORD PTR scan$[rsp], 0 + 003a5 0f 85 ea 03 00 + 00 jne $LN15@stbi__proc + +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + 003ab 8b 0b mov ecx, DWORD PTR [rbx] + 003ad 44 8b 43 04 mov r8d, DWORD PTR [rbx+4] + +; 467 : if (a < 0 || b < 0) return 0; + + 003b1 85 c9 test ecx, ecx + 003b3 0f 88 b8 03 00 + 00 js $LN195@stbi__proc + 003b9 45 85 c0 test r8d, r8d + 003bc 0f 88 af 03 00 + 00 js $LN195@stbi__proc + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 003c2 74 11 je SHORT $LN197@stbi__proc + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 003c4 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 003c9 99 cdq + 003ca 41 f7 f8 idiv r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 003cd 3b c8 cmp ecx, eax + 003cf 0f 8f 9c 03 00 + 00 jg $LN195@stbi__proc +$LN197@stbi__proc: + 003d5 41 0f af c8 imul ecx, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 003d9 85 c9 test ecx, ecx + 003db 0f 88 90 03 00 + 00 js $LN195@stbi__proc + 003e1 45 85 c9 test r9d, r9d + 003e4 0f 88 87 03 00 + 00 js $LN195@stbi__proc + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 003ea 74 6d je SHORT $LN12@stbi__proc + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 003ec b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 003f1 99 cdq + 003f2 41 f7 f9 idiv r9d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 003f5 3b c8 cmp ecx, eax + 003f7 0f 8f 74 03 00 + 00 jg $LN195@stbi__proc + +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { + + 003fd 45 85 c9 test r9d, r9d + 00400 7e 57 jle SHORT $LN12@stbi__proc + 00402 4d 8d 87 a8 46 + 00 00 lea r8, QWORD PTR [r15+18088] + 00409 45 8b d1 mov r10d, r9d + 0040c 49 8b d0 mov rdx, r8 + 0040f 90 npad 1 +$LL10@stbi__proc: + +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + + 00410 8b 42 fc mov eax, DWORD PTR [rdx-4] + 00413 48 8d 52 60 lea rdx, QWORD PTR [rdx+96] + +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + + 00417 3b c5 cmp eax, ebp + 00419 8b ce mov ecx, esi + 0041b 8b 72 a0 mov esi, DWORD PTR [rdx-96] + 0041e 0f 4e c5 cmovle eax, ebp + 00421 3b f1 cmp esi, ecx + 00423 8b e8 mov ebp, eax + 00425 0f 4e f1 cmovle esi, ecx + 00428 49 83 ea 01 sub r10, 1 + 0042c 75 e2 jne SHORT $LL10@stbi__proc + 0042e 41 8b cc mov ecx, r12d +$LL13@stbi__proc: + +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); + + 00431 8b c5 mov eax, ebp + 00433 99 cdq + 00434 41 f7 78 fc idiv DWORD PTR [r8-4] + 00438 85 d2 test edx, edx + 0043a 0f 85 41 02 00 + 00 jne $LN166@stbi__proc + +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); + + 00440 8b c6 mov eax, esi + 00442 99 cdq + 00443 41 f7 38 idiv DWORD PTR [r8] + 00446 85 d2 test edx, edx + 00448 0f 85 12 02 00 + 00 jne $LN167@stbi__proc + +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { + + 0044e ff c1 inc ecx + 00450 49 83 c0 60 add r8, 96 ; 00000060H + 00454 41 3b c9 cmp ecx, r9d + 00457 7c d8 jl SHORT $LL13@stbi__proc +$LN12@stbi__proc: + +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; + + 00459 33 d2 xor edx, edx + 0045b 41 89 af 88 46 + 00 00 mov DWORD PTR [r15+18056], ebp + 00462 8d 0c ed 00 00 + 00 00 lea ecx, DWORD PTR [rbp*8] + 00469 41 89 b7 8c 46 + 00 00 mov DWORD PTR [r15+18060], esi + 00470 44 8d 04 f5 00 + 00 00 00 lea r8d, DWORD PTR [rsi*8] + 00478 41 89 8f 98 46 + 00 00 mov DWORD PTR [r15+18072], ecx + 0047f 45 89 87 9c 46 + 00 00 mov DWORD PTR [r15+18076], r8d + +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { + + 00486 45 8b f4 mov r14d, r12d + 00489 8b 03 mov eax, DWORD PTR [rbx] + 0048b ff c8 dec eax + 0048d 03 c1 add eax, ecx + 0048f f7 f1 div ecx + 00491 33 d2 xor edx, edx + 00493 41 89 87 90 46 + 00 00 mov DWORD PTR [r15+18064], eax + 0049a 8b 43 04 mov eax, DWORD PTR [rbx+4] + 0049d ff c8 dec eax + 0049f 41 03 c0 add eax, r8d + 004a2 41 f7 f0 div r8d + 004a5 41 89 87 94 46 + 00 00 mov DWORD PTR [r15+18068], eax + 004ac 83 7b 08 00 cmp DWORD PTR [rbx+8], 0 + 004b0 0f 8e df 02 00 + 00 jle $LN15@stbi__proc + 004b6 49 8d bf bc 46 + 00 00 lea rdi, QWORD PTR [r15+18108] + 004bd 0f 1f 00 npad 3 +$LL16@stbi__proc: + +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; + + 004c0 8b 4f e8 mov ecx, DWORD PTR [rdi-24] + 004c3 33 d2 xor edx, edx + +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; + + 004c5 44 8b 47 ec mov r8d, DWORD PTR [rdi-20] + 004c9 8b c1 mov eax, ecx + 004cb 0f af 03 imul eax, DWORD PTR [rbx] + 004ce ff c8 dec eax + 004d0 03 c5 add eax, ebp + 004d2 f7 f5 div ebp + 004d4 33 d2 xor edx, edx + 004d6 89 07 mov DWORD PTR [rdi], eax + 004d8 41 8b c0 mov eax, r8d + 004db 0f af 43 04 imul eax, DWORD PTR [rbx+4] + 004df ff c8 dec eax + 004e1 03 c6 add eax, esi + 004e3 f7 f6 div esi + 004e5 89 47 04 mov DWORD PTR [rdi+4], eax + +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + + 004e8 41 0f af 8f 90 + 46 00 00 imul ecx, DWORD PTR [r15+18064] + 004f0 c1 e1 03 shl ecx, 3 + 004f3 89 4f 08 mov DWORD PTR [rdi+8], ecx + +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + + 004f6 45 0f af 87 94 + 46 00 00 imul r8d, DWORD PTR [r15+18068] + +; 2814 : z->img_comp[i].coeff = 0; + + 004fe 4c 89 67 34 mov QWORD PTR [rdi+52], r12 + +; 2815 : z->img_comp[i].raw_coeff = 0; + + 00502 4c 89 67 24 mov QWORD PTR [rdi+36], r12 + +; 2816 : z->img_comp[i].linebuf = NULL; + + 00506 4c 89 67 2c mov QWORD PTR [rdi+44], r12 + 0050a 41 c1 e0 03 shl r8d, 3 + 0050e 44 89 47 0c mov DWORD PTR [rdi+12], r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 00512 85 c9 test ecx, ecx + 00514 0f 88 c7 01 00 + 00 js $LN193@stbi__proc + 0051a 45 85 c0 test r8d, r8d + 0051d 0f 88 be 01 00 + 00 js $LN193@stbi__proc + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00523 74 11 je SHORT $LN42@stbi__proc + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00525 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0052a 99 cdq + 0052b 41 f7 f8 idiv r8d + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 0052e 3b c8 cmp ecx, eax + 00530 0f 8f ab 01 00 + 00 jg $LN193@stbi__proc +$LN42@stbi__proc: + +; 502 : return stbi__malloc(a * b + add); + + 00536 41 0f af c8 imul ecx, r8d + 0053a 83 c1 0f add ecx, 15 + 0053d 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 00540 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + + 00546 48 89 47 1c mov QWORD PTR [rdi+28], rax + +; 2818 : if (z->img_comp[i].raw_data == NULL) + + 0054a 48 85 c0 test rax, rax + 0054d 0f 84 94 01 00 + 00 je $LN205@stbi__proc + +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); + + 00553 48 83 c0 0f add rax, 15 + 00557 48 83 e0 f0 and rax, -16 + 0055b 48 89 47 14 mov QWORD PTR [rdi+20], rax + +; 2822 : if (z->progressive) { + + 0055f 41 83 bf 30 48 + 00 00 00 cmp DWORD PTR [r15+18480], 0 + 00567 0f 84 9b 00 00 + 00 je $LN14@stbi__proc + +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + + 0056d 8b 4f 08 mov ecx, DWORD PTR [rdi+8] + 00570 8b c1 mov eax, ecx + +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + + 00572 44 8b 47 0c mov r8d, DWORD PTR [rdi+12] + 00576 99 cdq + 00577 83 e2 07 and edx, 7 + 0057a 03 c2 add eax, edx + 0057c c1 f8 03 sar eax, 3 + 0057f 89 47 3c mov DWORD PTR [rdi+60], eax + 00582 41 8b c0 mov eax, r8d + 00585 99 cdq + 00586 83 e2 07 and edx, 7 + 00589 03 c2 add eax, edx + 0058b c1 f8 03 sar eax, 3 + 0058e 89 47 40 mov DWORD PTR [rdi+64], eax + +; 467 : if (a < 0 || b < 0) return 0; + + 00591 85 c9 test ecx, ecx + 00593 0f 88 09 01 00 + 00 js $LN191@stbi__proc + 00599 45 85 c0 test r8d, r8d + 0059c 0f 88 00 01 00 + 00 js $LN191@stbi__proc + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 005a2 74 11 je SHORT $LN192@stbi__proc + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 005a4 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 005a9 99 cdq + 005aa 41 f7 f8 idiv r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 005ad 3b c8 cmp ecx, eax + 005af 0f 8f ed 00 00 + 00 jg $LN191@stbi__proc +$LN192@stbi__proc: + 005b5 8b c1 mov eax, ecx + 005b7 41 0f af c0 imul eax, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 005bb 85 c0 test eax, eax + 005bd 0f 88 df 00 00 + 00 js $LN191@stbi__proc + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 005c3 3d ff ff ff 3f cmp eax, 1073741823 ; 3fffffffH + 005c8 0f 8f d4 00 00 + 00 jg $LN191@stbi__proc + 005ce 03 c0 add eax, eax + +; 460 : return a <= INT_MAX - b; + + 005d0 3d f0 ff ff 7f cmp eax, 2147483632 ; 7ffffff0H + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 005d5 0f 8f c7 00 00 + 00 jg $LN191@stbi__proc + +; 509 : return stbi__malloc(a * b * c + add); + + 005db 41 0f af c8 imul ecx, r8d + 005df 8d 04 4d 0f 00 + 00 00 lea eax, DWORD PTR [rcx*2+15] + 005e6 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 005e9 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + + 005ef 48 89 47 24 mov QWORD PTR [rdi+36], rax + +; 2827 : if (z->img_comp[i].raw_coeff == NULL) + + 005f3 48 85 c0 test rax, rax + 005f6 0f 84 ae 00 00 + 00 je $LN169@stbi__proc + +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); + + 005fc 48 83 c0 0f add rax, 15 + 00600 48 83 e0 f0 and rax, -16 + 00604 48 89 47 34 mov QWORD PTR [rdi+52], rax +$LN14@stbi__proc: + +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { + + 00608 41 ff c6 inc r14d + 0060b 48 83 c7 60 add rdi, 96 ; 00000060H + 0060f 44 3b 73 08 cmp r14d, DWORD PTR [rbx+8] + 00613 0f 8d 7c 01 00 + 00 jge $LN15@stbi__proc + 00619 45 33 e4 xor r12d, r12d + 0061c e9 9f fe ff ff jmp $LL16@stbi__proc +$LN165@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00621 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00627 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00630 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00635 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00639 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_06LJIHDFHI@bad?5TQ@ +$LN268@stbi__proc: + +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); + + 00640 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN62@stbi__proc: + 00644 33 c0 xor eax, eax +$LN265@stbi__proc: + 00646 4c 8b 6c 24 60 mov r13, QWORD PTR [rsp+96] + 0064b 4c 8b 74 24 68 mov r14, QWORD PTR [rsp+104] + 00650 4c 8b 64 24 50 mov r12, QWORD PTR [rsp+80] + +; 2834 : } + + 00655 48 83 c4 20 add rsp, 32 ; 00000020H + 00659 41 5f pop r15 + 0065b 5f pop rdi + 0065c 5e pop rsi + 0065d 5d pop rbp + 0065e 5b pop rbx + 0065f c3 ret 0 +$LN167@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00660 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00666 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0066f b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00674 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00678 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_05MPLLHCJG@bad?5V@ + +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); + + 0067f eb bf jmp SHORT $LN268@stbi__proc +$LN166@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00681 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00687 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00690 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00695 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00699 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_05BLPKENEJ@bad?5H@ + +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); + + 006a0 eb 9e jmp SHORT $LN268@stbi__proc +$LN191@stbi__proc: + +; 508 : if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + + 006a2 48 c7 47 24 00 + 00 00 00 mov QWORD PTR [rdi+36], 0 +$LN169@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 006aa 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); + + 006b0 45 33 c0 xor r8d, r8d + +; 431 : stbi__g_failure_reason = str; + + 006b3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006bc b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 006c1 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006c5 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 006cc 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); + + 006d0 41 8d 56 01 lea edx, DWORD PTR [r14+1] + 006d4 49 8b cf mov rcx, r15 + 006d7 e8 00 00 00 00 call stbi__free_jpeg_components + 006dc e9 65 ff ff ff jmp $LN265@stbi__proc +$LN193@stbi__proc: + +; 501 : if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + + 006e1 4c 89 67 1c mov QWORD PTR [rdi+28], r12 + +; 2818 : if (z->img_comp[i].raw_data == NULL) + + 006e5 eb 03 jmp SHORT $LN168@stbi__proc +$LN205@stbi__proc: + 006e7 45 33 e4 xor r12d, r12d +$LN168@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 006ea 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); + + 006f0 41 ff c6 inc r14d + +; 431 : stbi__g_failure_reason = str; + + 006f3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006fc b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00701 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00705 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 0070c 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2725 : for (i = 0; i < ncomp; ++i) { + + 00710 45 85 f6 test r14d, r14d + 00713 0f 8e 2b ff ff + ff jle $LN62@stbi__proc + 00719 49 8d 9f d8 46 + 00 00 lea rbx, QWORD PTR [r15+18136] + 00720 41 8b fe mov edi, r14d +$LL63@stbi__proc: + +; 2726 : if (z->img_comp[i].raw_data) { + + 00723 48 8b 0b mov rcx, QWORD PTR [rbx] + 00726 48 85 c9 test rcx, rcx + 00729 74 0d je SHORT $LN64@stbi__proc + +; 2727 : STBI_FREE(z->img_comp[i].raw_data); + + 0072b ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 2728 : z->img_comp[i].raw_data = NULL; + + 00731 4c 89 23 mov QWORD PTR [rbx], r12 + +; 2729 : z->img_comp[i].data = NULL; + + 00734 4c 89 63 f8 mov QWORD PTR [rbx-8], r12 +$LN64@stbi__proc: + +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { + + 00738 48 8b 4b 08 mov rcx, QWORD PTR [rbx+8] + 0073c 48 85 c9 test rcx, rcx + 0073f 74 0e je SHORT $LN65@stbi__proc + +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); + + 00741 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 2733 : z->img_comp[i].raw_coeff = 0; + + 00747 4c 89 63 08 mov QWORD PTR [rbx+8], r12 + +; 2734 : z->img_comp[i].coeff = 0; + + 0074b 4c 89 63 18 mov QWORD PTR [rbx+24], r12 +$LN65@stbi__proc: + +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { + + 0074f 48 8b 4b 10 mov rcx, QWORD PTR [rbx+16] + 00753 48 85 c9 test rcx, rcx + 00756 74 0a je SHORT $LN61@stbi__proc + +; 2737 : STBI_FREE(z->img_comp[i].linebuf); + + 00758 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 2738 : z->img_comp[i].linebuf = NULL; + + 0075e 4c 89 63 10 mov QWORD PTR [rbx+16], r12 +$LN61@stbi__proc: + +; 1084 : } +; 1085 : +; 1086 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1087 : // nothing +; 1088 : #else +; 1089 : stbi_inline static int stbi__at_eof(stbi__context* s) +; 1090 : { +; 1091 : if (s->io.read) { +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { + + 00762 48 83 c3 60 add rbx, 96 ; 00000060H + 00766 48 83 ef 01 sub rdi, 1 + 0076a 75 b7 jne SHORT $LL63@stbi__proc + +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); + + 0076c e9 d3 fe ff ff jmp $LN62@stbi__proc +$LN195@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00771 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00777 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00780 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00785 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00789 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + 00790 e9 ab fe ff ff jmp $LN268@stbi__proc +$LN15@stbi__proc: + +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; + + 00795 b8 01 00 00 00 mov eax, 1 + 0079a e9 a7 fe ff ff jmp $LN265@stbi__proc +$LN201@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 0079f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 007a5 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 007ae b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 007b3 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 007b7 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BE@DAPHADHL@bad?5component?5count@ + 007be 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); + + 007c2 33 c0 xor eax, eax + +; 2834 : } + + 007c4 48 83 c4 20 add rsp, 32 ; 00000020H + 007c8 41 5f pop r15 + 007ca 5f pop rdi + 007cb 5e pop rsi + 007cc 5d pop rbp + 007cd 5b pop rbx + 007ce c3 ret 0 +$LN189@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 007cf 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 007d5 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 007de b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 007e3 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 007e7 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0L@BCINMEBJ@only?58?9bit@ + 007ee 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline + + 007f2 33 c0 xor eax, eax + +; 2834 : } + + 007f4 48 83 c4 20 add rsp, 32 ; 00000020H + 007f8 41 5f pop r15 + 007fa 5f pop rdi + 007fb 5e pop rsi + 007fc 5d pop rbp + 007fd 5b pop rbx + 007fe c3 ret 0 +stbi__process_frame_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__decode_jpeg_header +_TEXT SEGMENT +z$ = 48 +scan$ = 56 +stbi__decode_jpeg_header PROC ; COMDAT + +; 2846 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 57 push rdi + 00010 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 2396 : x = stbi__get8(j->s); + + 00014 48 8b 19 mov rbx, QWORD PTR [rcx] + +; 2847 : int m; +; 2848 : z->jfif = 0; + + 00017 33 f6 xor esi, esi + 00019 89 b1 48 48 00 + 00 mov DWORD PTR [rcx+18504], esi + 0001f 8b ea mov ebp, edx + +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 + + 00021 c7 81 4c 48 00 + 00 ff ff ff ff mov DWORD PTR [rcx+18508], -1 + 0002b 48 8b f9 mov rdi, rcx + +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty + + 0002e c6 81 28 48 00 + 00 ff mov BYTE PTR [rcx+18472], 255 ; 000000ffH + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00035 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0003c 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00043 72 18 jb SHORT $LN159@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00045 39 73 30 cmp DWORD PTR [rbx+48], esi + 00048 0f 84 f8 02 00 + 00 je $LN99@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 0004e 48 8b cb mov rcx, rbx + 00051 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00056 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN159@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 0005d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00060 48 ff c0 inc rax + 00063 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0006a 80 f9 ff cmp cl, 255 ; 000000ffH + 0006d 0f 85 d3 02 00 + 00 jne $LN99@stbi__deco +$LL13@stbi__deco: + +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes + + 00073 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00076 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0007d 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00084 72 18 jb SHORT $LN160@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00086 39 73 30 cmp DWORD PTR [rbx+48], esi + 00089 0f 84 b7 02 00 + 00 je $LN99@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 0008f 48 8b cb mov rcx, rbx + 00092 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00097 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN160@stbi__deco: + +; 2398 : while (x == 0xff) + + 0009e 0f b6 08 movzx ecx, BYTE PTR [rax] + 000a1 48 ff c0 inc rax + 000a4 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000ab 80 f9 ff cmp cl, 255 ; 000000ffH + 000ae 74 c3 je SHORT $LL13@stbi__deco + +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); + + 000b0 80 f9 d8 cmp cl, 216 ; 000000d8H + 000b3 0f 85 8d 02 00 + 00 jne $LN99@stbi__deco + +; 2853 : if (scan == STBI__SCAN_type) return 1; + + 000b9 83 fd 01 cmp ebp, 1 + 000bc 0f 84 7d 02 00 + 00 je $LN10@stbi__deco + +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + + 000c2 0f b6 8f 28 48 + 00 00 movzx ecx, BYTE PTR [rdi+18472] + 000c9 80 f9 ff cmp cl, 255 ; 000000ffH + 000cc 74 09 je SHORT $LN31@stbi__deco + 000ce c6 87 28 48 00 + 00 ff mov BYTE PTR [rdi+18472], 255 ; 000000ffH + 000d5 eb 7a jmp SHORT $LN28@stbi__deco +$LN31@stbi__deco: + +; 2396 : x = stbi__get8(j->s); + + 000d7 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000da 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000e1 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000e8 72 14 jb SHORT $LN161@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 000ea 39 73 30 cmp DWORD PTR [rbx+48], esi + 000ed 74 60 je SHORT $LN101@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 000ef 48 8b cb mov rcx, rbx + 000f2 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000f7 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN161@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 000fe 0f b6 08 movzx ecx, BYTE PTR [rax] + 00101 48 ff c0 inc rax + 00104 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0010b 80 f9 ff cmp cl, 255 ; 000000ffH + 0010e 75 3f jne SHORT $LN101@stbi__deco +$LL29@stbi__deco: + +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes + + 00110 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00113 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0011a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00121 72 14 jb SHORT $LN162@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00123 39 73 30 cmp DWORD PTR [rbx+48], esi + 00126 74 23 je SHORT $LN40@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 00128 48 8b cb mov rcx, rbx + 0012b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00130 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN162@stbi__deco: + +; 2398 : while (x == 0xff) + + 00137 0f b6 08 movzx ecx, BYTE PTR [rax] + 0013a 48 ff c0 inc rax + 0013d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00144 80 f9 ff cmp cl, 255 ; 000000ffH + 00147 74 c7 je SHORT $LL29@stbi__deco + 00149 eb 06 jmp SHORT $LN28@stbi__deco +$LN40@stbi__deco: + +; 1083 : return 0; + + 0014b 32 c9 xor cl, cl + +; 2400 : return x; + + 0014d eb 02 jmp SHORT $LN28@stbi__deco +$LN101@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 0014f b1 ff mov cl, 255 ; 000000ffH +$LN28@stbi__deco: + +; 2854 : m = stbi__get_marker(z); + + 00151 0f b6 d1 movzx edx, cl + +; 2855 : while (!stbi__SOF(m)) { + + 00154 81 fa c0 00 00 + 00 cmp edx, 192 ; 000000c0H + 0015a 0f 84 9e 01 00 + 00 je $LN3@stbi__deco +$LL2@stbi__deco: + 00160 8d 82 3f ff ff + ff lea eax, DWORD PTR [rdx-193] + 00166 83 f8 01 cmp eax, 1 + 00169 0f 86 8f 01 00 + 00 jbe $LN3@stbi__deco + +; 2856 : if (!stbi__process_marker(z, m)) return 0; + + 0016f 48 8b cf mov rcx, rdi + 00172 e8 00 00 00 00 call stbi__process_marker + 00177 85 c0 test eax, eax + 00179 0f 84 ea 01 00 + 00 je $LN115@stbi__deco + +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + + 0017f 0f b6 8f 28 48 + 00 00 movzx ecx, BYTE PTR [rdi+18472] + 00186 80 f9 ff cmp cl, 255 ; 000000ffH + 00189 74 0c je SHORT $LN45@stbi__deco + 0018b c6 87 28 48 00 + 00 ff mov BYTE PTR [rdi+18472], 255 ; 000000ffH + 00192 e9 7a 00 00 00 jmp $LN42@stbi__deco +$LN45@stbi__deco: + +; 2396 : x = stbi__get8(j->s); + + 00197 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0019a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001a1 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 001a8 72 14 jb SHORT $LN163@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 001aa 39 73 30 cmp DWORD PTR [rbx+48], esi + 001ad 74 60 je SHORT $LN103@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 001af 48 8b cb mov rcx, rbx + 001b2 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 001b7 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN163@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 001be 0f b6 08 movzx ecx, BYTE PTR [rax] + 001c1 48 ff c0 inc rax + 001c4 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001cb 80 f9 ff cmp cl, 255 ; 000000ffH + 001ce 75 3f jne SHORT $LN103@stbi__deco +$LL43@stbi__deco: + +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes + + 001d0 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001d3 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001da 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 001e1 72 14 jb SHORT $LN164@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 001e3 39 73 30 cmp DWORD PTR [rbx+48], esi + 001e6 74 23 je SHORT $LN54@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 001e8 48 8b cb mov rcx, rbx + 001eb e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 001f0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN164@stbi__deco: + +; 2398 : while (x == 0xff) + + 001f7 0f b6 08 movzx ecx, BYTE PTR [rax] + 001fa 48 ff c0 inc rax + 001fd 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00204 80 f9 ff cmp cl, 255 ; 000000ffH + 00207 74 c7 je SHORT $LL43@stbi__deco + 00209 eb 06 jmp SHORT $LN42@stbi__deco +$LN54@stbi__deco: + +; 1083 : return 0; + + 0020b 32 c9 xor cl, cl + +; 2400 : return x; + + 0020d eb 02 jmp SHORT $LN42@stbi__deco +$LN103@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 0020f b1 ff mov cl, 255 ; 000000ffH +$LN42@stbi__deco: + +; 2857 : m = stbi__get_marker(z); + + 00211 0f b6 d1 movzx edx, cl + +; 2858 : while (m == STBI__MARKER_none) { + + 00214 81 fa ff 00 00 + 00 cmp edx, 255 ; 000000ffH + 0021a 0f 85 d2 00 00 + 00 jne $LN124@stbi__deco +$LL4@stbi__deco: + +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + + 00220 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1091 : if (s->io.read) { + + 00223 48 39 73 10 cmp QWORD PTR [rbx+16], rsi + 00227 74 14 je SHORT $LN59@stbi__deco + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 00229 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0022d ff 53 20 call QWORD PTR [rbx+32] + 00230 85 c0 test eax, eax + 00232 74 1d je SHORT $LN114@stbi__deco + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00234 39 73 30 cmp DWORD PTR [rbx+48], esi + 00237 0f 84 e6 00 00 + 00 je $LN123@stbi__deco +$LN59@stbi__deco: + +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + + 0023d 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00244 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 0024b 0f 83 d2 00 00 + 00 jae $LN123@stbi__deco +$LN114@stbi__deco: + +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + + 00251 0f b6 8f 28 48 + 00 00 movzx ecx, BYTE PTR [rdi+18472] + 00258 80 f9 ff cmp cl, 255 ; 000000ffH + 0025b 74 0c je SHORT $LN66@stbi__deco + 0025d c6 87 28 48 00 + 00 ff mov BYTE PTR [rdi+18472], 255 ; 000000ffH + 00264 e9 7a 00 00 00 jmp $LN63@stbi__deco +$LN66@stbi__deco: + +; 2396 : x = stbi__get8(j->s); + + 00269 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0026c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00273 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0027a 72 14 jb SHORT $LN165@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0027c 39 73 30 cmp DWORD PTR [rbx+48], esi + 0027f 74 60 je SHORT $LN105@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 00281 48 8b cb mov rcx, rbx + 00284 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00289 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN165@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 00290 0f b6 08 movzx ecx, BYTE PTR [rax] + 00293 48 ff c0 inc rax + 00296 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0029d 80 f9 ff cmp cl, 255 ; 000000ffH + 002a0 75 3f jne SHORT $LN105@stbi__deco +$LL64@stbi__deco: + +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes + + 002a2 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 002a5 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002ac 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 002b3 72 14 jb SHORT $LN166@stbi__deco + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 002b5 39 73 30 cmp DWORD PTR [rbx+48], esi + 002b8 74 23 je SHORT $LN75@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 002ba 48 8b cb mov rcx, rbx + 002bd e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 002c2 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN166@stbi__deco: + +; 2398 : while (x == 0xff) + + 002c9 0f b6 08 movzx ecx, BYTE PTR [rax] + 002cc 48 ff c0 inc rax + 002cf 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002d6 80 f9 ff cmp cl, 255 ; 000000ffH + 002d9 74 c7 je SHORT $LL64@stbi__deco + 002db eb 06 jmp SHORT $LN63@stbi__deco +$LN75@stbi__deco: + +; 1083 : return 0; + + 002dd 32 c9 xor cl, cl + +; 2400 : return x; + + 002df eb 02 jmp SHORT $LN63@stbi__deco +$LN105@stbi__deco: + +; 2397 : if (x != 0xff) return STBI__MARKER_none; + + 002e1 b1 ff mov cl, 255 ; 000000ffH +$LN63@stbi__deco: + +; 2861 : m = stbi__get_marker(z); + + 002e3 0f b6 d1 movzx edx, cl + 002e6 81 fa ff 00 00 + 00 cmp edx, 255 ; 000000ffH + 002ec 0f 84 2e ff ff + ff je $LL4@stbi__deco +$LN124@stbi__deco: + +; 2855 : while (!stbi__SOF(m)) { + + 002f2 81 fa c0 00 00 + 00 cmp edx, 192 ; 000000c0H + 002f8 0f 85 62 fe ff + ff jne $LL2@stbi__deco +$LN3@stbi__deco: + +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); + + 002fe 81 fa c2 00 00 + 00 cmp edx, 194 ; 000000c2H + 00304 8b ce mov ecx, esi + +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; + + 00306 8b d5 mov edx, ebp + 00308 0f 94 c1 sete cl + 0030b 89 8f 30 48 00 + 00 mov DWORD PTR [rdi+18480], ecx + 00311 48 8b cf mov rcx, rdi + 00314 e8 00 00 00 00 call stbi__process_frame_header + 00319 85 c0 test eax, eax + 0031b 40 0f 95 c6 setne sil + 0031f 8b c6 mov eax, esi + 00321 eb 48 jmp SHORT $LN1@stbi__deco +$LN123@stbi__deco: + +; 431 : stbi__g_failure_reason = str; + + 00323 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00329 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00332 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00336 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_06IFCEAHIA@no?5SOF@ + +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + + 0033d eb 21 jmp SHORT $LN167@stbi__deco +$LN10@stbi__deco: + +; 2866 : return 1; + + 0033f b8 01 00 00 00 mov eax, 1 + 00344 eb 25 jmp SHORT $LN1@stbi__deco +$LN99@stbi__deco: + +; 431 : stbi__g_failure_reason = str; + + 00346 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0034c 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00355 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00359 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_06CLMBLEP@no?5SOI@ +$LN167@stbi__deco: + +; 2867 : } + + 00360 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00365 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN115@stbi__deco: + 00369 33 c0 xor eax, eax +$LN1@stbi__deco: + 0036b 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00370 48 8b 6c 24 38 mov rbp, QWORD PTR [rsp+56] + 00375 48 8b 74 24 40 mov rsi, QWORD PTR [rsp+64] + 0037a 48 83 c4 20 add rsp, 32 ; 00000020H + 0037e 5f pop rdi + 0037f c3 ret 0 +stbi__decode_jpeg_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__skip_jpeg_junk_at_end +_TEXT SEGMENT +j$ = 48 +stbi__skip_jpeg_junk_at_end PROC ; COMDAT + +; 2870 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 8b f9 mov rdi, rcx + 0000d 0f 1f 00 npad 3 +$LL2@stbi__skip: + +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { + + 00010 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1091 : if (s->io.read) { + + 00013 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00018 74 15 je SHORT $LN12@stbi__skip + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0001a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0001e ff 53 20 call QWORD PTR [rbx+32] + 00021 85 c0 test eax, eax + 00023 74 1e je SHORT $LN36@stbi__skip + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00025 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00029 0f 84 e5 00 00 + 00 je $LN3@stbi__skip +$LN12@stbi__skip: + +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { + + 0002f 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00036 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 0003d 0f 83 d1 00 00 + 00 jae $LN3@stbi__skip +$LN36@stbi__skip: + +; 2874 : int x = stbi__get8(j->s); + + 00043 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00046 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0004d 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00054 72 15 jb SHORT $LN52@stbi__skip + +; 1079 : if (s->read_from_callbacks) { + + 00056 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0005a 74 b4 je SHORT $LL2@stbi__skip + +; 1080 : stbi__refill_buffer(s); + + 0005c 48 8b cb mov rcx, rbx + 0005f e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00064 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN52@stbi__skip: + +; 2875 : while (x == 255) { // might be a marker + + 0006b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0006e 48 ff c0 inc rax + 00071 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00078 80 f9 ff cmp cl, 255 ; 000000ffH + 0007b 75 93 jne SHORT $LL2@stbi__skip + 0007d 0f 1f 00 npad 3 +$LL4@stbi__skip: + +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; + + 00080 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1091 : if (s->io.read) { + + 00083 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00088 74 11 je SHORT $LN21@stbi__skip + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0008a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0008e ff 53 20 call QWORD PTR [rbx+32] + 00091 85 c0 test eax, eax + 00093 74 16 je SHORT $LN35@stbi__skip + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00095 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00099 74 79 je SHORT $LN3@stbi__skip +$LN21@stbi__skip: + +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; + + 0009b 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 000a2 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 000a9 73 69 jae SHORT $LN3@stbi__skip +$LN35@stbi__skip: + +; 2877 : x = stbi__get8(j->s); + + 000ab 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000ae 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000b5 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000bc 73 0f jae SHORT $LN24@stbi__skip + +; 1078 : return *s->img_buffer++; + + 000be 0f b6 08 movzx ecx, BYTE PTR [rax] + 000c1 48 ff c0 inc rax + 000c4 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000cb eb 26 jmp SHORT $LN23@stbi__skip +$LN24@stbi__skip: + +; 1079 : if (s->read_from_callbacks) { + + 000cd 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000d1 74 1e je SHORT $LN25@stbi__skip + +; 1080 : stbi__refill_buffer(s); + + 000d3 48 8b cb mov rcx, rbx + 000d6 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000db 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000e2 0f b6 08 movzx ecx, BYTE PTR [rax] + 000e5 48 ff c0 inc rax + 000e8 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000ef eb 02 jmp SHORT $LN23@stbi__skip +$LN25@stbi__skip: + +; 1082 : } +; 1083 : return 0; + + 000f1 32 c9 xor cl, cl +$LN23@stbi__skip: + +; 2877 : x = stbi__get8(j->s); + + 000f3 0f b6 c1 movzx eax, cl + +; 2878 : if (x != 0x00 && x != 0xff) { + + 000f6 84 c9 test cl, cl + 000f8 0f 84 12 ff ff + ff je $LL2@stbi__skip + 000fe 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00103 0f 84 77 ff ff + ff je $LL4@stbi__skip + +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } + + 00109 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0010e 48 83 c4 20 add rsp, 32 ; 00000020H + 00112 5f pop rdi + 00113 c3 ret 0 +$LN3@stbi__skip: + 00114 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00119 b8 ff 00 00 00 mov eax, 255 ; 000000ffH + 0011e 48 83 c4 20 add rsp, 32 ; 00000020H + 00122 5f pop rdi + 00123 c3 ret 0 +stbi__skip_jpeg_junk_at_end ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__decode_jpeg_image +_TEXT SEGMENT +j$ = 48 +stbi__decode_jpeg_image PROC ; COMDAT + +; 2893 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; + + 0000a 33 c0 xor eax, eax + +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + + 0000c 33 d2 xor edx, edx + 0000e 48 89 81 d8 46 + 00 00 mov QWORD PTR [rcx+18136], rax + 00015 48 8b f9 mov rdi, rcx + 00018 48 89 81 e0 46 + 00 00 mov QWORD PTR [rcx+18144], rax + 0001f 48 89 81 38 47 + 00 00 mov QWORD PTR [rcx+18232], rax + 00026 48 89 81 40 47 + 00 00 mov QWORD PTR [rcx+18240], rax + 0002d 48 89 81 98 47 + 00 00 mov QWORD PTR [rcx+18328], rax + 00034 48 89 81 a0 47 + 00 00 mov QWORD PTR [rcx+18336], rax + 0003b 48 89 81 f8 47 + 00 00 mov QWORD PTR [rcx+18424], rax + 00042 48 89 81 00 48 + 00 00 mov QWORD PTR [rcx+18432], rax + 00049 89 81 68 48 00 + 00 mov DWORD PTR [rcx+18536], eax + 0004f e8 00 00 00 00 call stbi__decode_jpeg_header + 00054 85 c0 test eax, eax + 00056 0f 84 bc 01 00 + 00 je $LN58@stbi__deco + +; 2901 : m = stbi__get_marker(j); + + 0005c 48 8b cf mov rcx, rdi + 0005f e8 00 00 00 00 call stbi__get_marker + 00064 0f b6 c8 movzx ecx, al + +; 2902 : while (!stbi__EOI(m)) { + + 00067 81 f9 d9 00 00 + 00 cmp ecx, 217 ; 000000d9H + 0006d 0f 84 d7 01 00 + 00 je $LN79@stbi__deco +$LL5@stbi__deco: + +; 2903 : if (stbi__SOS(m)) { + + 00073 81 f9 da 00 00 + 00 cmp ecx, 218 ; 000000daH + 00079 0f 85 4f 01 00 + 00 jne $LN8@stbi__deco + +; 2904 : if (!stbi__process_scan_header(j)) return 0; + + 0007f 48 8b cf mov rcx, rdi + 00082 e8 00 00 00 00 call stbi__process_scan_header + 00087 85 c0 test eax, eax + 00089 0f 84 89 01 00 + 00 je $LN58@stbi__deco + +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; + + 0008f 48 8b cf mov rcx, rdi + 00092 e8 00 00 00 00 call stbi__parse_entropy_coded_data + 00097 85 c0 test eax, eax + 00099 0f 84 79 01 00 + 00 je $LN58@stbi__deco + +; 2906 : if (j->marker == STBI__MARKER_none) { + + 0009f 80 bf 28 48 00 + 00 ff cmp BYTE PTR [rdi+18472], 255 ; 000000ffH + 000a6 0f 85 0a 01 00 + 00 jne $LN12@stbi__deco + 000ac 0f 1f 40 00 npad 4 +$LL22@stbi__deco: + +; 2873 : while (!stbi__at_eof(j->s)) { + + 000b0 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1091 : if (s->io.read) { + + 000b3 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 000b8 74 15 je SHORT $LN32@stbi__deco + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 000ba 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 000be ff 53 20 call QWORD PTR [rbx+32] + 000c1 85 c0 test eax, eax + 000c3 74 1e je SHORT $LN75@stbi__deco + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 000c5 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000c9 0f 84 dc 00 00 + 00 je $LN23@stbi__deco +$LN32@stbi__deco: + +; 2873 : while (!stbi__at_eof(j->s)) { + + 000cf 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 000d6 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 000dd 0f 83 c8 00 00 + 00 jae $LN23@stbi__deco +$LN75@stbi__deco: + +; 2874 : int x = stbi__get8(j->s); + + 000e3 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000e6 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000ed 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000f4 72 15 jb SHORT $LN105@stbi__deco + +; 1079 : if (s->read_from_callbacks) { + + 000f6 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000fa 74 b4 je SHORT $LL22@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 000fc 48 8b cb mov rcx, rbx + 000ff e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00104 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN105@stbi__deco: + +; 2875 : while (x == 255) { // might be a marker + + 0010b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0010e 48 ff c0 inc rax + 00111 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00118 80 f9 ff cmp cl, 255 ; 000000ffH + 0011b 75 93 jne SHORT $LL22@stbi__deco + 0011d 0f 1f 00 npad 3 +$LL24@stbi__deco: + +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; + + 00120 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1091 : if (s->io.read) { + + 00123 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00128 74 11 je SHORT $LN41@stbi__deco + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0012a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0012e ff 53 20 call QWORD PTR [rbx+32] + 00131 85 c0 test eax, eax + 00133 74 16 je SHORT $LN74@stbi__deco + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00135 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00139 74 70 je SHORT $LN23@stbi__deco +$LN41@stbi__deco: + +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; + + 0013b 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00142 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 00149 73 60 jae SHORT $LN23@stbi__deco +$LN74@stbi__deco: + +; 2877 : x = stbi__get8(j->s); + + 0014b 48 8b 1f mov rbx, QWORD PTR [rdi] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0014e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00155 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0015c 73 0f jae SHORT $LN44@stbi__deco + +; 1078 : return *s->img_buffer++; + + 0015e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00161 48 ff c0 inc rax + 00164 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0016b eb 26 jmp SHORT $LN43@stbi__deco +$LN44@stbi__deco: + +; 1079 : if (s->read_from_callbacks) { + + 0016d 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00171 74 1e je SHORT $LN45@stbi__deco + +; 1080 : stbi__refill_buffer(s); + + 00173 48 8b cb mov rcx, rbx + 00176 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0017b 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00182 0f b6 08 movzx ecx, BYTE PTR [rax] + 00185 48 ff c0 inc rax + 00188 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0018f eb 02 jmp SHORT $LN43@stbi__deco +$LN45@stbi__deco: + +; 1082 : } +; 1083 : return 0; + + 00191 32 c9 xor cl, cl +$LN43@stbi__deco: + +; 2877 : x = stbi__get8(j->s); + + 00193 0f b6 c1 movzx eax, cl + +; 2878 : if (x != 0x00 && x != 0xff) { + + 00196 84 c9 test cl, cl + 00198 0f 84 12 ff ff + ff je $LL22@stbi__deco + 0019e 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 001a3 0f 84 77 ff ff + ff je $LL24@stbi__deco + +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; + + 001a9 eb 05 jmp SHORT $LN21@stbi__deco +$LN23@stbi__deco: + +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); + + 001ab b8 ff 00 00 00 mov eax, 255 ; 000000ffH +$LN21@stbi__deco: + 001b0 88 87 28 48 00 + 00 mov BYTE PTR [rdi+18472], al +$LN12@stbi__deco: + +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); + + 001b6 48 8b cf mov rcx, rdi + 001b9 e8 00 00 00 00 call stbi__get_marker + 001be 0f b6 c8 movzx ecx, al + +; 2911 : if (STBI__RESTART(m)) + + 001c1 8d 81 30 ff ff + ff lea eax, DWORD PTR [rcx-208] + 001c7 83 f8 07 cmp eax, 7 + 001ca 77 72 ja SHORT $LN15@stbi__deco + +; 2912 : m = stbi__get_marker(j); +; 2913 : } + + 001cc eb 65 jmp SHORT $LN106@stbi__deco +$LN8@stbi__deco: + +; 2914 : else if (stbi__DNL(m)) { + + 001ce 81 f9 dc 00 00 + 00 cmp ecx, 220 ; 000000dcH + 001d4 75 4f jne SHORT $LN14@stbi__deco + +; 2915 : int Ld = stbi__get16be(j->s); + + 001d6 48 8b 0f mov rcx, QWORD PTR [rdi] + 001d9 e8 00 00 00 00 call stbi__get16be + +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); + + 001de 48 8b 0f mov rcx, QWORD PTR [rdi] + 001e1 8b d8 mov ebx, eax + 001e3 e8 00 00 00 00 call stbi__get16be + +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + + 001e8 83 fb 04 cmp ebx, 4 + 001eb 75 7e jne SHORT $LN59@stbi__deco + +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + + 001ed 48 8b 0f mov rcx, QWORD PTR [rdi] + 001f0 3b 41 04 cmp eax, DWORD PTR [rcx+4] + 001f3 74 3e je SHORT $LN106@stbi__deco + +; 431 : stbi__g_failure_reason = str; + + 001f5 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001fb 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00204 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00209 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0020d 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ + +; 2929 : } + + 00214 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN58@stbi__deco: + 00218 33 c0 xor eax, eax + 0021a 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0021f 48 83 c4 20 add rsp, 32 ; 00000020H + 00223 5f pop rdi + 00224 c3 ret 0 +$LN14@stbi__deco: + +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; + + 00225 8b d1 mov edx, ecx + 00227 48 8b cf mov rcx, rdi + 0022a e8 00 00 00 00 call stbi__process_marker + 0022f 85 c0 test eax, eax + 00231 74 28 je SHORT $LN19@stbi__deco +$LN106@stbi__deco: + +; 2902 : while (!stbi__EOI(m)) { + + 00233 48 8b cf mov rcx, rdi + 00236 e8 00 00 00 00 call stbi__get_marker + 0023b 0f b6 c8 movzx ecx, al +$LN15@stbi__deco: + 0023e 81 f9 d9 00 00 + 00 cmp ecx, 217 ; 000000d9H + 00244 0f 85 29 fe ff + ff jne $LL5@stbi__deco +$LN79@stbi__deco: + +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) + + 0024a 83 bf 30 48 00 + 00 00 cmp DWORD PTR [rdi+18480], 0 + 00251 74 08 je SHORT $LN19@stbi__deco + +; 2927 : stbi__jpeg_finish(j); + + 00253 48 8b cf mov rcx, rdi + 00256 e8 00 00 00 00 call stbi__jpeg_finish +$LN19@stbi__deco: + +; 2928 : return 1; + + 0025b b8 01 00 00 00 mov eax, 1 + +; 2929 : } + + 00260 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00265 48 83 c4 20 add rsp, 32 ; 00000020H + 00269 5f pop rdi + 0026a c3 ret 0 +$LN59@stbi__deco: + +; 431 : stbi__g_failure_reason = str; + + 0026b 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00271 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + +; 2929 : } + + 0027a 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + +; 431 : stbi__g_failure_reason = str; + + 0027f b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00284 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00288 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@EPMOIECP@bad?5DNL?5len@ + +; 2929 : } + + 0028f 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 00293 33 c0 xor eax, eax + 00295 48 83 c4 20 add rsp, 32 ; 00000020H + 00299 5f pop rdi + 0029a c3 ret 0 +stbi__decode_jpeg_image ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT resample_row_1 +_TEXT SEGMENT +out$ = 8 +in_near$ = 16 +in_far$ = 24 +w$ = 32 +hs$ = 40 +resample_row_1 PROC ; COMDAT + +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; + + 00000 48 8b c2 mov rax, rdx + +; 2945 : } + + 00003 c3 ret 0 +resample_row_1 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__resample_row_v_2 +_TEXT SEGMENT +out$ = 16 +in_near$ = 24 +in_far$ = 32 +w$ = 40 +hs$ = 48 +stbi__resample_row_v_2 PROC ; COMDAT + +; 2948 : { + + 00000 40 53 push rbx + 00002 4c 8b d2 mov r10, rdx + 00005 4c 8b d9 mov r11, rcx + +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) + + 00008 33 d2 xor edx, edx + 0000a 45 85 c9 test r9d, r9d + 0000d 0f 8e ac 01 00 + 00 jle $LN9@stbi__resa + 00013 41 83 f9 10 cmp r9d, 16 + 00017 0f 82 a2 01 00 + 00 jb $LN9@stbi__resa + 0001d 83 3d 00 00 00 + 00 02 cmp DWORD PTR __isa_available, 2 + 00024 0f 8c 95 01 00 + 00 jl $LN9@stbi__resa + 0002a 49 63 c9 movsxd rcx, r9d + 0002d 48 ff c9 dec rcx + 00030 4a 8d 04 01 lea rax, QWORD PTR [rcx+r8] + 00034 4a 8d 1c 19 lea rbx, QWORD PTR [rcx+r11] + 00038 4c 3b d8 cmp r11, rax + 0003b 77 09 ja SHORT $LN10@stbi__resa + 0003d 49 3b d8 cmp rbx, r8 + 00040 0f 83 79 01 00 + 00 jae $LN9@stbi__resa +$LN10@stbi__resa: + 00046 4a 8d 04 11 lea rax, QWORD PTR [rcx+r10] + 0004a 4c 3b d8 cmp r11, rax + 0004d 77 09 ja SHORT $LN11@stbi__resa + 0004f 49 3b da cmp rbx, r10 + 00052 0f 83 67 01 00 + 00 jae $LN9@stbi__resa +$LN11@stbi__resa: + 00058 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0005d 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 00062 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); + + 00067 66 0f 6f 1d 00 + 00 00 00 movdqa xmm3, XMMWORD PTR __xmm@00000003000000030000000300000003 + 0006f 49 8d 68 04 lea rbp, QWORD PTR [r8+4] + 00073 66 0f 6f 25 00 + 00 00 00 movdqa xmm4, XMMWORD PTR __xmm@00000002000000020000000200000002 + 0007b 49 8b da mov rbx, r10 + 0007e 49 63 c9 movsxd rcx, r9d + 00081 49 8b fb mov rdi, r11 + 00084 48 83 e1 f0 and rcx, -16 + 00088 49 2b d8 sub rbx, r8 + 0008b 49 2b f8 sub rdi, r8 + 0008e 48 c7 c6 fc ff + ff ff mov rsi, -4 + 00095 49 2b f0 sub rsi, r8 + 00098 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL4@stbi__resa: + 000a0 66 0f 38 31 4d + fc pmovzxbd xmm1, DWORD PTR [rbp-4] + 000a6 66 0f 38 31 54 + 2b fc pmovzxbd xmm2, DWORD PTR [rbx+rbp-4] + 000ad 66 0f 38 40 d3 pmulld xmm2, xmm3 + 000b2 66 0f fe d1 paddd xmm2, xmm1 + 000b6 48 8d 6d 10 lea rbp, QWORD PTR [rbp+16] + 000ba 66 0f fe d4 paddd xmm2, xmm4 + 000be 48 8d 04 2e lea rax, QWORD PTR [rsi+rbp] + 000c2 66 0f 72 e2 02 psrad xmm2, 2 + 000c7 83 c2 10 add edx, 16 + 000ca f2 0f 70 c2 d8 pshuflw xmm0, xmm2, 216 ; 000000d8H + 000cf f3 0f 70 c8 d8 pshufhw xmm1, xmm0, 216 ; 000000d8H + 000d4 66 0f 70 d1 d8 pshufd xmm2, xmm1, 216 ; 000000d8H + 000d9 0f 54 15 00 00 + 00 00 andps xmm2, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 000e0 66 0f 67 d2 packuswb xmm2, xmm2 + 000e4 66 0f 7e 54 2f + ec movd DWORD PTR [rdi+rbp-20], xmm2 + 000ea 66 0f 38 31 4d + f0 pmovzxbd xmm1, DWORD PTR [rbp-16] + 000f0 66 0f 38 31 54 + 2b f0 pmovzxbd xmm2, DWORD PTR [rbx+rbp-16] + 000f7 66 0f 38 40 d3 pmulld xmm2, xmm3 + 000fc 66 0f fe d1 paddd xmm2, xmm1 + 00100 66 0f fe d4 paddd xmm2, xmm4 + 00104 66 0f 72 e2 02 psrad xmm2, 2 + 00109 f2 0f 70 c2 d8 pshuflw xmm0, xmm2, 216 ; 000000d8H + 0010e f3 0f 70 c8 d8 pshufhw xmm1, xmm0, 216 ; 000000d8H + 00113 66 0f 70 d1 d8 pshufd xmm2, xmm1, 216 ; 000000d8H + 00118 0f 54 15 00 00 + 00 00 andps xmm2, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 0011f 66 0f 67 d2 packuswb xmm2, xmm2 + 00123 66 0f 7e 54 2f + f0 movd DWORD PTR [rdi+rbp-16], xmm2 + 00129 66 0f 38 31 4d + f4 pmovzxbd xmm1, DWORD PTR [rbp-12] + 0012f 66 0f 38 31 54 + 2b f4 pmovzxbd xmm2, DWORD PTR [rbx+rbp-12] + 00136 66 0f 38 40 d3 pmulld xmm2, xmm3 + 0013b 66 0f fe d1 paddd xmm2, xmm1 + 0013f 66 0f fe d4 paddd xmm2, xmm4 + 00143 66 0f 72 e2 02 psrad xmm2, 2 + 00148 f2 0f 70 c2 d8 pshuflw xmm0, xmm2, 216 ; 000000d8H + 0014d f3 0f 70 c8 d8 pshufhw xmm1, xmm0, 216 ; 000000d8H + 00152 66 0f 70 d1 d8 pshufd xmm2, xmm1, 216 ; 000000d8H + 00157 0f 54 15 00 00 + 00 00 andps xmm2, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 0015e 66 0f 67 d2 packuswb xmm2, xmm2 + 00162 66 0f 7e 54 2f + f4 movd DWORD PTR [rdi+rbp-12], xmm2 + 00168 66 0f 38 31 4d + f8 pmovzxbd xmm1, DWORD PTR [rbp-8] + 0016e 66 0f 38 31 54 + 2b f8 pmovzxbd xmm2, DWORD PTR [rbx+rbp-8] + 00175 66 0f 38 40 d3 pmulld xmm2, xmm3 + 0017a 66 0f fe d1 paddd xmm2, xmm1 + 0017e 66 0f fe d4 paddd xmm2, xmm4 + 00182 66 0f 72 e2 02 psrad xmm2, 2 + 00187 f2 0f 70 c2 d8 pshuflw xmm0, xmm2, 216 ; 000000d8H + 0018c f3 0f 70 c8 d8 pshufhw xmm1, xmm0, 216 ; 000000d8H + 00191 66 0f 70 d1 d8 pshufd xmm2, xmm1, 216 ; 000000d8H + 00196 0f 54 15 00 00 + 00 00 andps xmm2, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + 0019d 66 0f 67 d2 packuswb xmm2, xmm2 + 001a1 66 0f 7e 54 2f + f8 movd DWORD PTR [rdi+rbp-8], xmm2 + 001a7 48 3b c1 cmp rax, rcx + 001aa 0f 8c f0 fe ff + ff jl $LL4@stbi__resa + +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) + + 001b0 48 8b 7c 24 20 mov rdi, QWORD PTR [rsp+32] + 001b5 48 8b 74 24 18 mov rsi, QWORD PTR [rsp+24] + 001ba 48 8b 6c 24 10 mov rbp, QWORD PTR [rsp+16] +$LN9@stbi__resa: + 001bf 48 63 ca movsxd rcx, edx + 001c2 4d 63 c9 movsxd r9, r9d + 001c5 49 3b c9 cmp rcx, r9 + 001c8 7d 3c jge SHORT $LN19@stbi__resa + 001ca 49 8b db mov rbx, r11 + 001cd 4a 8d 04 01 lea rax, QWORD PTR [rcx+r8] + 001d1 49 2b d8 sub rbx, r8 + 001d4 4d 2b d0 sub r10, r8 + 001d7 4c 2b c9 sub r9, rcx + 001da 66 0f 1f 44 00 + 00 npad 6 +$LL8@stbi__resa: + +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); + + 001e0 42 0f b6 0c 10 movzx ecx, BYTE PTR [rax+r10] + 001e5 44 0f b6 00 movzx r8d, BYTE PTR [rax] + 001e9 48 8d 40 01 lea rax, QWORD PTR [rax+1] + 001ed 41 83 c0 02 add r8d, 2 + 001f1 8d 14 49 lea edx, DWORD PTR [rcx+rcx*2] + 001f4 44 03 c2 add r8d, edx + 001f7 41 c1 e8 02 shr r8d, 2 + 001fb 44 88 44 03 ff mov BYTE PTR [rbx+rax-1], r8b + 00200 49 83 e9 01 sub r9, 1 + 00204 75 da jne SHORT $LL8@stbi__resa +$LN19@stbi__resa: + +; 2954 : return out; +; 2955 : } + + 00206 49 8b c3 mov rax, r11 + 00209 5b pop rbx + 0020a c3 ret 0 +stbi__resample_row_v_2 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__resample_row_h_2 +_TEXT SEGMENT +out$ = 16 +in_near$ = 24 +in_far$ = 32 +w$ = 40 +hs$ = 48 +stbi__resample_row_h_2 PROC ; COMDAT + +; 2958 : { + + 00000 48 83 ec 08 sub rsp, 8 + +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; + + 00004 0f b6 02 movzx eax, BYTE PTR [rdx] + 00007 4c 8b da mov r11, rdx + 0000a 88 01 mov BYTE PTR [rcx], al + 0000c 4c 8b d1 mov r10, rcx + +; 2962 : +; 2963 : if (w == 1) { + + 0000f 41 83 f9 01 cmp r9d, 1 + 00013 75 0b jne SHORT $LN5@stbi__resa + +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; + + 00015 88 41 01 mov BYTE PTR [rcx+1], al + +; 2983 : } + + 00018 48 8b c1 mov rax, rcx + 0001b 48 83 c4 08 add rsp, 8 + 0001f c3 ret 0 +$LN5@stbi__resa: + +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); + + 00020 0f b6 02 movzx eax, BYTE PTR [rdx] + 00023 0f b6 52 01 movzx edx, BYTE PTR [rdx+1] + 00027 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 0002c 83 c2 02 add edx, 2 + 0002f 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + +; 2971 : for (i = 1; i < w - 1; ++i) { + + 00034 49 63 f1 movsxd rsi, r9d + 00037 8d 0c 40 lea ecx, DWORD PTR [rax+rax*2] + 0003a 03 d1 add edx, ecx + 0003c 48 89 3c 24 mov QWORD PTR [rsp], rdi + 00040 c1 ea 02 shr edx, 2 + 00043 bf 01 00 00 00 mov edi, 1 + 00048 41 88 52 01 mov BYTE PTR [r10+1], dl + 0004c 48 8d 5e ff lea rbx, QWORD PTR [rsi-1] + 00050 48 3b df cmp rbx, rdi + 00053 7e 4d jle SHORT $LN3@stbi__resa + 00055 4c 8d 4b ff lea r9, QWORD PTR [rbx-1] + 00059 41 8d 79 01 lea edi, DWORD PTR [r9+1] + 0005d 4d 8d 42 02 lea r8, QWORD PTR [r10+2] + 00061 49 8d 53 02 lea rdx, QWORD PTR [r11+2] + 00065 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL4@stbi__resa: + +; 2972 : int n = 3 * input[i] + 2; + + 00070 0f b6 42 ff movzx eax, BYTE PTR [rdx-1] + 00074 4d 8d 40 02 lea r8, QWORD PTR [r8+2] + 00078 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 0007c 8d 48 01 lea ecx, DWORD PTR [rax+1] + 0007f 8d 0c 48 lea ecx, DWORD PTR [rax+rcx*2] + +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); + + 00082 0f b6 42 fd movzx eax, BYTE PTR [rdx-3] + 00086 03 c1 add eax, ecx + 00088 c1 e8 02 shr eax, 2 + 0008b 41 88 40 fe mov BYTE PTR [r8-2], al + +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); + + 0008f 0f b6 42 ff movzx eax, BYTE PTR [rdx-1] + 00093 03 c1 add eax, ecx + 00095 c1 e8 02 shr eax, 2 + 00098 41 88 40 ff mov BYTE PTR [r8-1], al + 0009c 49 83 e9 01 sub r9, 1 + 000a0 75 ce jne SHORT $LL4@stbi__resa +$LN3@stbi__resa: + +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); + + 000a2 42 0f b6 14 1b movzx edx, BYTE PTR [rbx+r11] + 000a7 8d 04 3f lea eax, DWORD PTR [rdi+rdi] + +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; + + 000aa 48 8b 3c 24 mov rdi, QWORD PTR [rsp] + 000ae 83 c2 02 add edx, 2 + 000b1 4c 63 c0 movsxd r8, eax + 000b4 42 0f b6 44 1e + fe movzx eax, BYTE PTR [rsi+r11-2] + 000ba 48 8b 74 24 18 mov rsi, QWORD PTR [rsp+24] + 000bf 8d 0c 40 lea ecx, DWORD PTR [rax+rax*2] + 000c2 03 d1 add edx, ecx + 000c4 c1 ea 02 shr edx, 2 + 000c7 43 88 14 10 mov BYTE PTR [r8+r10], dl + 000cb 42 0f b6 04 1b movzx eax, BYTE PTR [rbx+r11] + 000d0 48 8b 5c 24 10 mov rbx, QWORD PTR [rsp+16] + 000d5 43 88 44 10 01 mov BYTE PTR [r8+r10+1], al + +; 2983 : } + + 000da 49 8b c2 mov rax, r10 + 000dd 48 83 c4 08 add rsp, 8 + 000e1 c3 ret 0 +stbi__resample_row_h_2 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__resample_row_hv_2 +_TEXT SEGMENT +out$ = 16 +in_near$ = 24 +in_far$ = 32 +w$ = 40 +hs$ = 48 +stbi__resample_row_hv_2 PROC ; COMDAT + +; 2988 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 56 push rsi + 00006 0f b6 02 movzx eax, BYTE PTR [rdx] + 00009 48 8b da mov rbx, rdx + 0000c 45 0f b6 10 movzx r10d, BYTE PTR [r8] + 00010 4c 8b d9 mov r11, rcx + 00013 49 63 f1 movsxd rsi, r9d + 00016 8d 04 40 lea eax, DWORD PTR [rax+rax*2] + 00019 41 03 c2 add eax, r10d + +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { + + 0001c 83 fe 01 cmp esi, 1 + 0001f 75 15 jne SHORT $LN5@stbi__resa + +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + + 00021 83 c0 02 add eax, 2 + 00024 c1 e8 02 shr eax, 2 + 00027 88 41 01 mov BYTE PTR [rcx+1], al + 0002a 88 01 mov BYTE PTR [rcx], al + +; 3009 : } + + 0002c 48 8b c1 mov rax, rcx + 0002f 48 8b 5c 24 18 mov rbx, QWORD PTR [rsp+24] + 00034 5e pop rsi + 00035 c3 ret 0 +$LN5@stbi__resa: + +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); + + 00036 8d 48 02 lea ecx, DWORD PTR [rax+2] + 00039 48 89 7c 24 10 mov QWORD PTR [rsp+16], rdi + 0003e c1 e9 02 shr ecx, 2 + +; 2998 : for (i = 1; i < w; ++i) { + + 00041 48 8b fe mov rdi, rsi + 00044 41 88 0b mov BYTE PTR [r11], cl + 00047 48 83 fe 01 cmp rsi, 1 + 0004b 7e 53 jle SHORT $LN3@stbi__resa + 0004d 49 2b d8 sub rbx, r8 + 00050 4d 8d 48 01 lea r9, QWORD PTR [r8+1] + 00054 48 ff cf dec rdi + 00057 4d 8d 53 02 lea r10, QWORD PTR [r11+2] + 0005b 0f 1f 44 00 00 npad 5 +$LL4@stbi__resa: + +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; + + 00060 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00064 4d 8d 52 02 lea r10, QWORD PTR [r10+2] + 00068 44 8b c0 mov r8d, eax + 0006b 41 0f b6 04 19 movzx eax, BYTE PTR [r9+rbx] + 00070 4d 8d 49 01 lea r9, QWORD PTR [r9+1] + 00074 8d 04 40 lea eax, DWORD PTR [rax+rax*2] + 00077 03 c1 add eax, ecx + +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + + 00079 41 8d 50 04 lea edx, DWORD PTR [r8+4] + 0007d 8d 14 50 lea edx, DWORD PTR [rax+rdx*2] + 00080 41 03 d0 add edx, r8d + 00083 c1 ea 04 shr edx, 4 + 00086 41 88 52 fd mov BYTE PTR [r10-3], dl + +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + + 0008a 8d 50 04 lea edx, DWORD PTR [rax+4] + 0008d 41 8d 14 50 lea edx, DWORD PTR [r8+rdx*2] + 00091 03 d0 add edx, eax + 00093 c1 ea 04 shr edx, 4 + 00096 41 88 52 fe mov BYTE PTR [r10-2], dl + 0009a 48 83 ef 01 sub rdi, 1 + 0009e 75 c0 jne SHORT $LL4@stbi__resa +$LN3@stbi__resa: + +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; + + 000a0 48 8b 7c 24 10 mov rdi, QWORD PTR [rsp+16] + 000a5 8d 50 02 lea edx, DWORD PTR [rax+2] + +; 3009 : } + + 000a8 48 8b 5c 24 18 mov rbx, QWORD PTR [rsp+24] + 000ad 8d 04 36 lea eax, DWORD PTR [rsi+rsi] + 000b0 48 63 c8 movsxd rcx, eax + 000b3 49 8b c3 mov rax, r11 + 000b6 c1 ea 02 shr edx, 2 + 000b9 42 88 54 19 ff mov BYTE PTR [rcx+r11-1], dl + 000be 5e pop rsi + 000bf c3 ret 0 +stbi__resample_row_hv_2 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__resample_row_hv_2_simd +_TEXT SEGMENT +out$ = 24 +in_near$ = 32 +in_far$ = 40 +w$ = 48 +hs$ = 56 +stbi__resample_row_hv_2_simd PROC ; COMDAT + +; 3013 : { + + 00000 40 56 push rsi + 00002 57 push rdi + +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; + + 00003 0f b6 02 movzx eax, BYTE PTR [rdx] + 00006 4d 8b d0 mov r10, r8 + 00009 49 63 f1 movsxd rsi, r9d + 0000c 48 8b f9 mov rdi, rcx + 0000f 45 33 c9 xor r9d, r9d + 00012 44 8d 04 40 lea r8d, DWORD PTR [rax+rax*2] + 00016 41 0f b6 02 movzx eax, BYTE PTR [r10] + 0001a 44 03 c0 add r8d, eax + +; 3016 : +; 3017 : if (w == 1) { + + 0001d 83 fe 01 cmp esi, 1 + 00020 75 12 jne SHORT $LN8@stbi__resa + +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + + 00022 41 8d 40 02 lea eax, DWORD PTR [r8+2] + 00026 c1 e8 02 shr eax, 2 + 00029 88 41 01 mov BYTE PTR [rcx+1], al + 0002c 88 01 mov BYTE PTR [rcx], al + +; 3125 : } + + 0002e 48 8b c1 mov rax, rcx + 00031 5f pop rdi + 00032 5e pop rsi + 00033 c3 ret 0 +$LN8@stbi__resa: + 00034 48 89 5c 24 18 mov QWORD PTR [rsp+24], rbx + +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { + + 00039 8d 46 ff lea eax, DWORD PTR [rsi-1] + 0003c 48 8b da mov rbx, rdx + 0003f 83 e0 f8 and eax, -8 + 00042 49 2b da sub rbx, r10 + 00045 85 c0 test eax, eax + 00047 0f 8e 02 01 00 + 00 jle $LN18@stbi__resa + +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); + + 0004d 66 0f 6f 2d 00 + 00 00 00 movdqa xmm5, XMMWORD PTR __xmm@00080008000800080008000800080008 + 00055 4d 8d 5a 08 lea r11, QWORD PTR [r10+8] + 00059 48 89 6c 24 20 mov QWORD PTR [rsp+32], rbp + 0005e ff c8 dec eax + 00060 4c 89 74 24 28 mov QWORD PTR [rsp+40], r14 + 00065 0f 57 e4 xorps xmm4, xmm4 + 00068 c1 e8 03 shr eax, 3 + 0006b 4c 8b f7 mov r14, rdi + 0006e ff c0 inc eax + 00070 4c 89 7c 24 30 mov QWORD PTR [rsp+48], r15 + 00075 49 8b ea mov rbp, r10 + 00078 44 8b f8 mov r15d, eax + 0007b 44 8d 0c c5 00 + 00 00 00 lea r9d, DWORD PTR [rax*8] + 00083 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL4@stbi__resa: + +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); + + 00090 42 0f b6 04 1b movzx eax, BYTE PTR [rbx+r11] + 00095 4d 8d 76 10 lea r14, QWORD PTR [r14+16] + 00099 f3 0f 7e 04 2b movq xmm0, QWORD PTR [rbx+rbp] + 0009e 4d 8d 5b 08 lea r11, QWORD PTR [r11+8] + 000a2 f3 0f 7e 5d 00 movq xmm3, QWORD PTR [rbp] + 000a7 48 8d 6d 08 lea rbp, QWORD PTR [rbp+8] + 000ab 66 0f 60 c4 punpcklbw xmm0, xmm4 + 000af 8d 0c 40 lea ecx, DWORD PTR [rax+rax*2] + 000b2 66 0f 60 dc punpcklbw xmm3, xmm4 + 000b6 41 0f b6 43 f8 movzx eax, BYTE PTR [r11-8] + 000bb 66 0f f9 d8 psubw xmm3, xmm0 + 000bf 66 0f 71 f0 02 psllw xmm0, 2 + 000c4 03 c8 add ecx, eax + 000c6 66 0f fd d8 paddw xmm3, xmm0 + 000ca 66 0f 6f d3 movdqa xmm2, xmm3 + 000ce 66 0f 6f cb movdqa xmm1, xmm3 + 000d2 66 0f 73 fa 02 pslldq xmm2, 2 + +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); + + 000d7 66 0f 6f c3 movdqa xmm0, xmm3 + 000db 66 41 0f c4 d0 + 00 pinsrw xmm2, r8d, 0 + 000e1 66 0f 71 f0 02 psllw xmm0, 2 + +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); + + 000e6 66 0f f9 d3 psubw xmm2, xmm3 + +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); + + 000ea 66 0f fd c5 paddw xmm0, xmm5 + 000ee 66 0f 73 d9 02 psrldq xmm1, 2 + +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); + + 000f3 66 0f fd d0 paddw xmm2, xmm0 + 000f7 66 0f c4 c9 07 pinsrw xmm1, ecx, 7 + 000fc 66 0f f9 cb psubw xmm1, xmm3 + +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); + + 00100 66 0f fd c8 paddw xmm1, xmm0 + +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); + + 00104 66 0f 6f c2 movdqa xmm0, xmm2 + 00108 66 0f 61 c1 punpcklwd xmm0, xmm1 + +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); + + 0010c 66 0f 69 d1 punpckhwd xmm2, xmm1 + +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); + + 00110 66 0f 71 d0 04 psrlw xmm0, 4 + +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); + + 00115 66 0f 71 d2 04 psrlw xmm2, 4 + +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); + + 0011a 66 0f 67 c2 packuswb xmm0, xmm2 + +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); + + 0011e f3 41 0f 7f 46 + f0 movdqu XMMWORD PTR [r14-16], xmm0 + +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; + + 00124 42 0f b6 44 1b + f7 movzx eax, BYTE PTR [rbx+r11-9] + 0012a 44 8d 04 40 lea r8d, DWORD PTR [rax+rax*2] + 0012e 41 0f b6 43 f7 movzx eax, BYTE PTR [r11-9] + 00133 44 03 c0 add r8d, eax + 00136 49 83 ef 01 sub r15, 1 + 0013a 0f 85 50 ff ff + ff jne $LL4@stbi__resa + 00140 4c 8b 7c 24 30 mov r15, QWORD PTR [rsp+48] + 00145 4c 8b 74 24 28 mov r14, QWORD PTR [rsp+40] + 0014a 48 8b 6c 24 20 mov rbp, QWORD PTR [rsp+32] +$LN18@stbi__resa: + +; 3111 : t1 = 3 * in_near[i] + in_far[i]; + + 0014f 49 63 c9 movsxd rcx, r9d + +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { + + 00152 4c 8b de mov r11, rsi + 00155 0f b6 04 11 movzx eax, BYTE PTR [rcx+rdx] + 00159 42 0f b6 0c 11 movzx ecx, BYTE PTR [rcx+r10] + 0015e 8d 04 40 lea eax, DWORD PTR [rax+rax*2] + 00161 03 c1 add eax, ecx + 00163 43 8d 0c 09 lea ecx, DWORD PTR [r9+r9] + 00167 48 63 d1 movsxd rdx, ecx + 0016a 41 8d 49 01 lea ecx, DWORD PTR [r9+1] + 0016e 45 8d 04 40 lea r8d, DWORD PTR [r8+rax*2] + 00172 41 83 c0 08 add r8d, 8 + 00176 44 03 c0 add r8d, eax + 00179 41 c1 e8 04 shr r8d, 4 + 0017d 44 88 04 3a mov BYTE PTR [rdx+rdi], r8b + 00181 48 63 d1 movsxd rdx, ecx + 00184 48 3b d6 cmp rdx, rsi + 00187 7d 57 jge SHORT $LN6@stbi__resa + +; 3108 : } +; 3109 : +; 3110 : t0 = t1; + + 00189 4e 8d 0c 12 lea r9, QWORD PTR [rdx+r10] + 0018d 4c 2b da sub r11, rdx + 00190 4c 8d 14 57 lea r10, QWORD PTR [rdi+rdx*2] + 00194 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL7@stbi__resa: + +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; + + 001a0 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 001a4 4d 8d 52 02 lea r10, QWORD PTR [r10+2] + 001a8 44 8b c0 mov r8d, eax + 001ab 42 0f b6 04 0b movzx eax, BYTE PTR [rbx+r9] + 001b0 4d 8d 49 01 lea r9, QWORD PTR [r9+1] + 001b4 8d 04 40 lea eax, DWORD PTR [rax+rax*2] + 001b7 03 c1 add eax, ecx + +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + + 001b9 41 8d 50 04 lea edx, DWORD PTR [r8+4] + 001bd 8d 14 50 lea edx, DWORD PTR [rax+rdx*2] + 001c0 41 03 d0 add edx, r8d + 001c3 c1 ea 04 shr edx, 4 + 001c6 41 88 52 fd mov BYTE PTR [r10-3], dl + +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + + 001ca 8d 50 04 lea edx, DWORD PTR [rax+4] + 001cd 41 8d 14 50 lea edx, DWORD PTR [r8+rdx*2] + 001d1 03 d0 add edx, eax + 001d3 c1 ea 04 shr edx, 4 + 001d6 41 88 52 fe mov BYTE PTR [r10-2], dl + 001da 49 83 eb 01 sub r11, 1 + 001de 75 c0 jne SHORT $LL7@stbi__resa +$LN6@stbi__resa: + +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; + + 001e0 48 8b 5c 24 18 mov rbx, QWORD PTR [rsp+24] + 001e5 8d 50 02 lea edx, DWORD PTR [rax+2] + 001e8 8d 04 36 lea eax, DWORD PTR [rsi+rsi] + 001eb c1 ea 02 shr edx, 2 + 001ee 48 63 c8 movsxd rcx, eax + +; 3125 : } + + 001f1 48 8b c7 mov rax, rdi + 001f4 88 54 39 ff mov BYTE PTR [rcx+rdi-1], dl + 001f8 5f pop rdi + 001f9 5e pop rsi + 001fa c3 ret 0 +stbi__resample_row_hv_2_simd ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__resample_row_generic +_TEXT SEGMENT +out$ = 8 +in_near$ = 16 +in_far$ = 24 +w$ = 32 +hs$ = 40 +stbi__resample_row_generic PROC ; COMDAT + +; 3129 : { + + 00000 4c 8b d9 mov r11, rcx + +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) + + 00003 45 85 c9 test r9d, r9d + 00006 7e 33 jle SHORT $LN17@stbi__resa + 00008 4c 63 44 24 28 movsxd r8, DWORD PTR hs$[rsp] + 0000d 4c 8b d1 mov r10, rcx + 00010 45 8b c9 mov r9d, r9d +$LL4@stbi__resa: + +; 3134 : for (j = 0; j < hs; ++j) + + 00013 4d 85 c0 test r8, r8 + 00016 7e 17 jle SHORT $LN2@stbi__resa + +; 3135 : out[i * hs + j] = in_near[i]; + + 00018 33 c0 xor eax, eax + 0001a 66 0f 1f 44 00 + 00 npad 6 +$LL7@stbi__resa: + 00020 0f b6 0a movzx ecx, BYTE PTR [rdx] + 00023 41 88 0c 02 mov BYTE PTR [r10+rax], cl + 00027 48 ff c0 inc rax + 0002a 49 3b c0 cmp rax, r8 + 0002d 7c f1 jl SHORT $LL7@stbi__resa +$LN2@stbi__resa: + +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) + + 0002f 4d 03 d0 add r10, r8 + 00032 48 ff c2 inc rdx + 00035 49 83 e9 01 sub r9, 1 + 00039 75 d8 jne SHORT $LL4@stbi__resa +$LN17@stbi__resa: + +; 3136 : return out; +; 3137 : } + + 0003b 49 8b c3 mov rax, r11 + 0003e c3 ret 0 +stbi__resample_row_generic ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__YCbCr_to_RGB_row +_TEXT SEGMENT +out$ = 24 +y$ = 32 +pcb$ = 40 +pcr$ = 48 +count$ = 56 +step$ = 64 +stbi__YCbCr_to_RGB_row PROC ; COMDAT + +; 3143 : { + + 00000 48 89 5c 24 18 mov QWORD PTR [rsp+24], rbx + 00005 48 89 6c 24 20 mov QWORD PTR [rsp+32], rbp + 0000a 57 push rdi + 0000b 41 56 push r14 + +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { + + 0000d 48 63 7c 24 38 movsxd rdi, DWORD PTR count$[rsp] + 00012 49 8b d9 mov rbx, r9 + 00015 49 8b e8 mov rbp, r8 + 00018 4c 8b f2 mov r14, rdx + 0001b 48 85 ff test rdi, rdi + 0001e 0f 8e f2 00 00 + 00 jle $LN3@stbi__YCbC + 00024 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 00029 48 8d 41 02 lea rax, QWORD PTR [rcx+2] + 0002d 48 63 74 24 40 movsxd rsi, DWORD PTR step$[rsp] + 00032 4c 2b f3 sub r14, rbx + +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding + + 00035 48 2b eb sub rbp, rbx + 00038 4c 89 7c 24 20 mov QWORD PTR [rsp+32], r15 + 0003d 45 33 ff xor r15d, r15d +$LL4@stbi__YCbC: + +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; + + 00040 44 0f b6 03 movzx r8d, BYTE PTR [rbx] + +; 3149 : int cb = pcb[i] - 128; + + 00044 44 0f b6 0c 2b movzx r9d, BYTE PTR [rbx+rbp] + 00049 45 0f b6 14 1e movzx r10d, BYTE PTR [r14+rbx] + 0004e 41 c1 e2 14 shl r10d, 20 + +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); + + 00052 41 8d 48 80 lea ecx, DWORD PTR [r8-128] + 00056 41 81 c2 00 00 + 08 00 add r10d, 524288 ; 00080000H + 0005d 44 69 d9 00 6f + 16 00 imul r11d, ecx, 1470208 ; 00166f00H + +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + + 00064 b9 80 00 00 00 mov ecx, 128 ; 00000080H + 00069 41 2b c9 sub ecx, r9d + 0006c 69 d1 00 82 05 + 00 imul edx, ecx, 360960 ; 00058200H + 00072 b9 80 00 00 00 mov ecx, 128 ; 00000080H + 00077 41 2b c8 sub ecx, r8d + 0007a 44 69 c1 00 6d + 0b 00 imul r8d, ecx, 748800 ; 000b6d00H + 00081 45 03 da add r11d, r10d + +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; + + 00084 41 c1 fb 14 sar r11d, 20 + 00088 81 e2 00 00 ff + ff and edx, -65536 ; ffffffffffff0000H + 0008e 41 8d 0c 12 lea ecx, DWORD PTR [r10+rdx] + 00092 44 03 c1 add r8d, ecx + 00095 41 8d 49 80 lea ecx, DWORD PTR [r9-128] + 00099 69 d1 00 5a 1c + 00 imul edx, ecx, 1858048 ; 001c5a00H + +; 3154 : g >>= 20; + + 0009f 41 c1 f8 14 sar r8d, 20 + 000a3 41 03 d2 add edx, r10d + +; 3155 : b >>= 20; + + 000a6 c1 fa 14 sar edx, 20 + +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } + + 000a9 41 81 fb ff 00 + 00 00 cmp r11d, 255 ; 000000ffH + 000b0 76 0f jbe SHORT $LN6@stbi__YCbC + 000b2 45 85 db test r11d, r11d + 000b5 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 000ba 41 0f 48 cf cmovs ecx, r15d + 000be 44 8b d9 mov r11d, ecx +$LN6@stbi__YCbC: + +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } + + 000c1 41 81 f8 ff 00 + 00 00 cmp r8d, 255 ; 000000ffH + 000c8 76 0f jbe SHORT $LN9@stbi__YCbC + 000ca 45 85 c0 test r8d, r8d + 000cd b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 000d2 41 0f 48 cf cmovs ecx, r15d + 000d6 44 8b c1 mov r8d, ecx +$LN9@stbi__YCbC: + +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } + + 000d9 81 fa ff 00 00 + 00 cmp edx, 255 ; 000000ffH + 000df 76 0d jbe SHORT $LN12@stbi__YCbC + 000e1 85 d2 test edx, edx + 000e3 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 000e8 41 0f 48 cf cmovs ecx, r15d + 000ec 8b d1 mov edx, ecx +$LN12@stbi__YCbC: + +; 3159 : out[0] = (stbi_uc)r; + + 000ee 44 88 58 fe mov BYTE PTR [rax-2], r11b + 000f2 48 ff c3 inc rbx + +; 3160 : out[1] = (stbi_uc)g; + + 000f5 44 88 40 ff mov BYTE PTR [rax-1], r8b + +; 3161 : out[2] = (stbi_uc)b; + + 000f9 88 10 mov BYTE PTR [rax], dl + +; 3162 : out[3] = 255; + + 000fb c6 40 01 ff mov BYTE PTR [rax+1], 255 ; 000000ffH + +; 3163 : out += step; + + 000ff 48 03 c6 add rax, rsi + 00102 48 83 ef 01 sub rdi, 1 + 00106 0f 85 34 ff ff + ff jne $LL4@stbi__YCbC + +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { + + 0010c 4c 8b 7c 24 20 mov r15, QWORD PTR [rsp+32] + 00111 48 8b 74 24 18 mov rsi, QWORD PTR [rsp+24] +$LN3@stbi__YCbC: + +; 3164 : } +; 3165 : } + + 00116 48 8b 5c 24 28 mov rbx, QWORD PTR [rsp+40] + 0011b 48 8b 6c 24 30 mov rbp, QWORD PTR [rsp+48] + 00120 41 5e pop r14 + 00122 5f pop rdi + 00123 c3 ret 0 +stbi__YCbCr_to_RGB_row ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__YCbCr_to_RGB_simd +_TEXT SEGMENT +out$ = 128 +y$ = 136 +pcb$ = 144 +pcr$ = 152 +count$ = 160 +step$ = 168 +stbi__YCbCr_to_RGB_simd PROC ; COMDAT + +; 3169 : { + + 00000 48 89 6c 24 18 mov QWORD PTR [rsp+24], rbp + 00005 56 push rsi + 00006 57 push rdi + 00007 41 57 push r15 + 00009 48 83 ec 60 sub rsp, 96 ; 00000060H + +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { + + 0000d 4c 63 94 24 a8 + 00 00 00 movsxd r10, DWORD PTR step$[rsp] + 00015 45 33 ff xor r15d, r15d + 00018 49 8b f0 mov rsi, r8 + 0001b 48 8b ea mov rbp, rdx + 0001e 48 63 94 24 a0 + 00 00 00 movsxd rdx, DWORD PTR count$[rsp] + 00026 45 8b c7 mov r8d, r15d + 00029 41 83 fa 04 cmp r10d, 4 + 0002d 0f 85 3c 01 00 + 00 jne $LN3@stbi__YCbC + +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); + + 00033 66 0f 6f 2d 00 + 00 00 00 movdqa xmm5, XMMWORD PTR __xmm@80808080808080808080808080808080 + 0003b 0f 29 7c 24 40 movaps XMMWORD PTR [rsp+64], xmm7 + +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); + + 00040 66 0f 6f 3d 00 + 00 00 00 movdqa xmm7, XMMWORD PTR __xmm@166f166f166f166f166f166f166f166f + 00048 44 0f 29 44 24 + 30 movaps XMMWORD PTR [rsp+48], xmm8 + +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); + + 0004e 66 44 0f 6f 05 + 00 00 00 00 movdqa xmm8, XMMWORD PTR __xmm@f493f493f493f493f493f493f493f493 + 00057 44 0f 29 4c 24 + 20 movaps XMMWORD PTR [rsp+32], xmm9 + +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); + + 0005d 66 44 0f 6f 0d + 00 00 00 00 movdqa xmm9, XMMWORD PTR __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e + 00066 44 0f 29 54 24 + 10 movaps XMMWORD PTR [rsp+16], xmm10 + +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); + + 0006c 66 44 0f 6f 15 + 00 00 00 00 movdqa xmm10, XMMWORD PTR __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a + 00075 44 0f 29 1c 24 movaps XMMWORD PTR [rsp], xmm11 + +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel + + 0007a 66 44 0f 6f 1d + 00 00 00 00 movdqa xmm11, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff + +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { + + 00083 83 fa 07 cmp edx, 7 + 00086 0f 8e c7 00 00 + 00 jle $LN37@stbi__YCbC + 0008c 0f 29 74 24 50 movaps XMMWORD PTR [rsp+80], xmm6 + 00091 0f 57 f6 xorps xmm6, xmm6 + 00094 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL4@stbi__YCbC: + +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); + + 000a0 49 63 c0 movsxd rax, r8d + +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + + 000a3 66 0f 6f d6 movdqa xmm2, xmm6 + 000a7 41 83 c0 08 add r8d, 8 + +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + 000ab 66 0f 6f e6 movdqa xmm4, xmm6 + 000af 66 0f 6f cd movdqa xmm1, xmm5 + 000b3 f3 42 0f 7e 04 + 08 movq xmm0, QWORD PTR [rax+r9] + 000b9 0f 57 c5 xorps xmm0, xmm5 + 000bc 66 0f 60 d0 punpcklbw xmm2, xmm0 + 000c0 f3 0f 7e 04 30 movq xmm0, QWORD PTR [rax+rsi] + +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + + 000c5 66 0f 6f da movdqa xmm3, xmm2 + 000c9 0f 57 c5 xorps xmm0, xmm5 + 000cc 66 0f e5 df pmulhw xmm3, xmm7 + 000d0 66 0f 60 e0 punpcklbw xmm4, xmm0 + 000d4 f3 0f 7e 04 28 movq xmm0, QWORD PTR [rax+rbp] + 000d9 41 8d 40 07 lea eax, DWORD PTR [r8+7] + 000dd 66 0f 60 c8 punpcklbw xmm1, xmm0 + +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + + 000e1 66 0f 6f c4 movdqa xmm0, xmm4 + 000e5 66 0f 71 d1 04 psrlw xmm1, 4 + +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); + + 000ea 66 0f fd d9 paddw xmm3, xmm1 + 000ee 66 41 0f e5 c2 pmulhw xmm0, xmm10 + 000f3 66 41 0f e5 e1 pmulhw xmm4, xmm9 + +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); + + 000f8 66 0f 71 e3 04 psraw xmm3, 4 + 000fd 66 41 0f e5 d0 pmulhw xmm2, xmm8 + 00102 66 0f fd c1 paddw xmm0, xmm1 + 00106 66 0f fd e1 paddw xmm4, xmm1 + +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); + + 0010a 66 0f 71 e0 04 psraw xmm0, 4 + +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); + + 0010f 66 0f 67 d8 packuswb xmm3, xmm0 + 00113 66 0f fd e2 paddw xmm4, xmm2 + +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + + 00117 66 0f 6f cb movdqa xmm1, xmm3 + 0011b 66 0f 71 e4 04 psraw xmm4, 4 + 00120 66 41 0f 67 e3 packuswb xmm4, xmm11 + 00125 66 0f 60 cc punpcklbw xmm1, xmm4 + +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); + + 00129 66 0f 6f c1 movdqa xmm0, xmm1 + 0012d 66 0f 68 dc punpckhbw xmm3, xmm4 + 00131 66 0f 61 c3 punpcklwd xmm0, xmm3 + +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + 00135 66 0f 69 cb punpckhwd xmm1, xmm3 + +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); + + 00139 f3 0f 7f 01 movdqu XMMWORD PTR [rcx], xmm0 + +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); + + 0013d f3 0f 7f 49 10 movdqu XMMWORD PTR [rcx+16], xmm1 + +; 3228 : out += 32; + + 00142 48 83 c1 20 add rcx, 32 ; 00000020H + 00146 3b c2 cmp eax, edx + 00148 0f 8c 52 ff ff + ff jl $LL4@stbi__YCbC + +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { + + 0014e 0f 28 74 24 50 movaps xmm6, XMMWORD PTR [rsp+80] +$LN37@stbi__YCbC: + 00153 44 0f 28 54 24 + 10 movaps xmm10, XMMWORD PTR [rsp+16] + 00159 44 0f 28 4c 24 + 20 movaps xmm9, XMMWORD PTR [rsp+32] + 0015f 44 0f 28 44 24 + 30 movaps xmm8, XMMWORD PTR [rsp+48] + 00165 0f 28 7c 24 40 movaps xmm7, XMMWORD PTR [rsp+64] + 0016a 44 0f 28 1c 24 movaps xmm11, XMMWORD PTR [rsp] +$LN3@stbi__YCbC: + +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { + + 0016f 49 63 c0 movsxd rax, r8d + 00172 48 8b fa mov rdi, rdx + 00175 48 3b c2 cmp rax, rdx + 00178 0f 8d f8 00 00 + 00 jge $LN6@stbi__YCbC + 0017e 48 89 9c 24 80 + 00 00 00 mov QWORD PTR [rsp+128], rbx + 00186 4c 8d 59 02 lea r11, QWORD PTR [rcx+2] + 0018a 49 2b e9 sub rbp, r9 + 0018d 4c 89 b4 24 88 + 00 00 00 mov QWORD PTR [rsp+136], r14 + 00195 49 2b f1 sub rsi, r9 + 00198 4a 8d 1c 08 lea rbx, QWORD PTR [rax+r9] + 0019c 4d 8b f2 mov r14, r10 + 0019f 48 2b f8 sub rdi, rax +$LL7@stbi__YCbC: + +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; + + 001a2 0f b6 13 movzx edx, BYTE PTR [rbx] + +; 3283 : int cb = pcb[i] - 128; + + 001a5 44 0f b6 04 33 movzx r8d, BYTE PTR [rbx+rsi] + 001aa 44 0f b6 0c 2b movzx r9d, BYTE PTR [rbx+rbp] + 001af 41 c1 e1 14 shl r9d, 20 + +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); + + 001b3 8d 42 80 lea eax, DWORD PTR [rdx-128] + 001b6 41 81 c1 00 00 + 08 00 add r9d, 524288 ; 00080000H + 001bd 44 69 d0 00 6f + 16 00 imul r10d, eax, 1470208 ; 00166f00H + +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + + 001c4 b8 80 00 00 00 mov eax, 128 ; 00000080H + 001c9 41 2b c0 sub eax, r8d + 001cc 69 c8 00 82 05 + 00 imul ecx, eax, 360960 ; 00058200H + 001d2 b8 80 00 00 00 mov eax, 128 ; 00000080H + 001d7 2b c2 sub eax, edx + 001d9 69 d0 00 6d 0b + 00 imul edx, eax, 748800 ; 000b6d00H + 001df 45 03 d1 add r10d, r9d + +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; + + 001e2 41 c1 fa 14 sar r10d, 20 + 001e6 81 e1 00 00 ff + ff and ecx, -65536 ; ffffffffffff0000H + 001ec 41 8d 04 09 lea eax, DWORD PTR [r9+rcx] + 001f0 03 d0 add edx, eax + 001f2 41 8d 40 80 lea eax, DWORD PTR [r8-128] + 001f6 69 c0 00 5a 1c + 00 imul eax, eax, 1858048 ; 001c5a00H + +; 3288 : g >>= 20; + + 001fc c1 fa 14 sar edx, 20 + 001ff 41 03 c1 add eax, r9d + +; 3289 : b >>= 20; + + 00202 c1 f8 14 sar eax, 20 + +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } + + 00205 41 81 fa ff 00 + 00 00 cmp r10d, 255 ; 000000ffH + 0020c 76 0f jbe SHORT $LN10@stbi__YCbC + 0020e 45 85 d2 test r10d, r10d + 00211 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 00216 41 0f 48 cf cmovs ecx, r15d + 0021a 44 8b d1 mov r10d, ecx +$LN10@stbi__YCbC: + +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } + + 0021d 81 fa ff 00 00 + 00 cmp edx, 255 ; 000000ffH + 00223 76 0d jbe SHORT $LN13@stbi__YCbC + 00225 85 d2 test edx, edx + 00227 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 0022c 41 0f 48 cf cmovs ecx, r15d + 00230 8b d1 mov edx, ecx +$LN13@stbi__YCbC: + +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } + + 00232 3d ff 00 00 00 cmp eax, 255 ; 000000ffH + 00237 76 0d jbe SHORT $LN16@stbi__YCbC + 00239 85 c0 test eax, eax + 0023b b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 00240 41 0f 48 cf cmovs ecx, r15d + 00244 8b c1 mov eax, ecx +$LN16@stbi__YCbC: + +; 3293 : out[0] = (stbi_uc)r; + + 00246 45 88 53 fe mov BYTE PTR [r11-2], r10b + 0024a 48 ff c3 inc rbx + +; 3294 : out[1] = (stbi_uc)g; + + 0024d 41 88 53 ff mov BYTE PTR [r11-1], dl + +; 3295 : out[2] = (stbi_uc)b; + + 00251 41 88 03 mov BYTE PTR [r11], al + +; 3296 : out[3] = 255; + + 00254 41 c6 43 01 ff mov BYTE PTR [r11+1], 255 ; 000000ffH + +; 3297 : out += step; + + 00259 4d 03 de add r11, r14 + 0025c 48 83 ef 01 sub rdi, 1 + 00260 0f 85 3c ff ff + ff jne $LL7@stbi__YCbC + +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { + + 00266 4c 8b b4 24 88 + 00 00 00 mov r14, QWORD PTR [rsp+136] + 0026e 48 8b 9c 24 80 + 00 00 00 mov rbx, QWORD PTR [rsp+128] +$LN6@stbi__YCbC: + +; 3298 : } +; 3299 : } + + 00276 48 8b ac 24 90 + 00 00 00 mov rbp, QWORD PTR [rsp+144] + 0027e 48 83 c4 60 add rsp, 96 ; 00000060H + 00282 41 5f pop r15 + 00284 5f pop rdi + 00285 5e pop rsi + 00286 c3 ret 0 +stbi__YCbCr_to_RGB_simd ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__setup_jpeg +_TEXT SEGMENT +j$ = 32 +stbi__setup_jpeg PROC ; COMDAT + +; 3304 : { + + 00000 40 53 push rbx + 00002 48 83 ec 10 sub rsp, 16 + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 00006 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_block + 0000d 4c 8b c1 mov r8, rcx + 00010 48 89 81 70 48 + 00 00 mov QWORD PTR [rcx+18544], rax + +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + + 00017 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_row + 0001e 48 89 81 78 48 + 00 00 mov QWORD PTR [rcx+18552], rax + +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + + 00025 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2 + 0002c 48 89 81 80 48 + 00 00 mov QWORD PTR [rcx+18560], rax + +; 187 : __cpuid(info, 1); + + 00033 33 c9 xor ecx, ecx + 00035 b8 01 00 00 00 mov eax, 1 + 0003a 0f a2 cpuid + +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { + + 0003c 0f ba e2 1a bt edx, 26 + 00040 73 2a jae SHORT $LN2@stbi__setu + +; 3311 : j->idct_block_kernel = stbi__idct_simd; + + 00042 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_simd + 00049 49 89 80 70 48 + 00 00 mov QWORD PTR [r8+18544], rax + +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + + 00050 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_simd + 00057 49 89 80 78 48 + 00 00 mov QWORD PTR [r8+18552], rax + +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + + 0005e 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2_simd + 00065 49 89 80 80 48 + 00 00 mov QWORD PTR [r8+18560], rax +$LN2@stbi__setu: + +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } + + 0006c 48 83 c4 10 add rsp, 16 + 00070 5b pop rbx + 00071 c3 ret 0 +stbi__setup_jpeg ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__cleanup_jpeg +_TEXT SEGMENT +j$ = 8 +stbi__cleanup_jpeg PROC ; COMDAT + +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); + + 00000 48 8b 11 mov rdx, QWORD PTR [rcx] + 00003 45 33 c0 xor r8d, r8d + 00006 8b 52 08 mov edx, DWORD PTR [rdx+8] + 00009 e9 00 00 00 00 jmp stbi__free_jpeg_components +stbi__cleanup_jpeg ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__blinn_8x8 +_TEXT SEGMENT +x$ = 8 +y$ = 16 +stbi__blinn_8x8 PROC ; COMDAT + +; 3343 : unsigned int t = x * y + 128; + + 00000 0f b6 c2 movzx eax, dl + 00003 44 0f b6 c1 movzx r8d, cl + 00007 44 0f af c0 imul r8d, eax + 0000b 41 83 e8 80 sub r8d, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 0000f 41 8b c0 mov eax, r8d + 00012 c1 e8 08 shr eax, 8 + 00015 41 03 c0 add eax, r8d + 00018 c1 e8 08 shr eax, 8 + +; 3345 : } + + 0001b c3 ret 0 +stbi__blinn_8x8 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT load_jpeg_image +_TEXT SEGMENT +j$1$ = 48 +output$2$ = 56 +tv3179 = 64 +tv3132 = 72 +coutput$4 = 80 +out$1$ = 112 +z$GSCopy$1$ = 120 +out_x$GSCopy$1$ = 128 +out_y$GSCopy$1$ = 136 +comp$GSCopy$1$ = 144 +res_comp$5 = 160 +__$ArrayPad$ = 352 +z$ = 448 +out_x$ = 456 +out_y$ = 464 +comp$ = 472 +req_comp$ = 480 +load_jpeg_image PROC ; COMDAT + +; 3348 : { + + 00000 40 56 push rsi + 00002 41 55 push r13 + 00004 41 57 push r15 + 00006 48 81 ec a0 01 + 00 00 sub rsp, 416 ; 000001a0H + 0000d 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00014 48 33 c4 xor rax, rsp + 00017 48 89 84 24 60 + 01 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + 0001f 48 8b 01 mov rax, QWORD PTR [rcx] + 00022 45 33 ed xor r13d, r13d + +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + 00025 44 8b bc 24 e0 + 01 00 00 mov r15d, DWORD PTR req_comp$[rsp] + 0002d 48 8b f1 mov rsi, rcx + 00030 4c 89 8c 24 90 + 00 00 00 mov QWORD PTR comp$GSCopy$1$[rsp], r9 + 00038 4c 89 84 24 88 + 00 00 00 mov QWORD PTR out_y$GSCopy$1$[rsp], r8 + 00040 44 89 68 08 mov DWORD PTR [rax+8], r13d + 00044 48 89 94 24 80 + 00 00 00 mov QWORD PTR out_x$GSCopy$1$[rsp], rdx + 0004c 48 89 4c 24 78 mov QWORD PTR z$GSCopy$1$[rsp], rcx + 00051 41 83 ff 04 cmp r15d, 4 + 00055 0f 87 45 08 00 + 00 ja $LN42@load_jpeg_ + +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + 0005b e8 00 00 00 00 call stbi__decode_jpeg_image + 00060 85 c0 test eax, eax + 00062 75 18 jne SHORT $LN43@load_jpeg_ + +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); + + 00064 48 8b 16 mov rdx, QWORD PTR [rsi] + 00067 45 33 c0 xor r8d, r8d + 0006a 48 8b ce mov rcx, rsi + 0006d 8b 52 08 mov edx, DWORD PTR [rdx+8] + 00070 e8 00 00 00 00 call stbi__free_jpeg_components + +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + 00075 33 c0 xor eax, eax + 00077 e9 cf 07 00 00 jmp $LN1@load_jpeg_ +$LN43@load_jpeg_: + 0007c 4c 89 a4 24 80 + 01 00 00 mov QWORD PTR [rsp+384], r12 + +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + 00084 b9 03 00 00 00 mov ecx, 3 + 00089 44 8d 61 fe lea r12d, QWORD PTR [rcx-2] + 0008d 45 85 ff test r15d, r15d + 00090 75 15 jne SHORT $LN84@load_jpeg_ + 00092 48 8b 06 mov rax, QWORD PTR [rsi] + 00095 45 8b fc mov r15d, r12d + 00098 39 48 08 cmp DWORD PTR [rax+8], ecx + 0009b 44 0f 4d f9 cmovge r15d, ecx + 0009f 44 89 bc 24 e0 + 01 00 00 mov DWORD PTR req_comp$[rsp], r15d +$LN84@load_jpeg_: + +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + 000a7 48 8b 06 mov rax, QWORD PTR [rsi] + 000aa 8b 48 08 mov ecx, DWORD PTR [rax+8] + 000ad 83 f9 03 cmp ecx, 3 + 000b0 75 24 jne SHORT $LN87@load_jpeg_ + 000b2 39 8e 50 48 00 + 00 cmp DWORD PTR [rsi+18512], ecx + 000b8 74 12 je SHORT $LN86@load_jpeg_ + 000ba 44 39 ae 4c 48 + 00 00 cmp DWORD PTR [rsi+18508], r13d + 000c1 75 13 jne SHORT $LN87@load_jpeg_ + 000c3 44 39 ae 48 48 + 00 00 cmp DWORD PTR [rsi+18504], r13d + 000ca 75 0a jne SHORT $LN87@load_jpeg_ +$LN86@load_jpeg_: + 000cc 41 8b c4 mov eax, r12d + 000cf 4c 89 64 24 40 mov QWORD PTR tv3179[rsp], r12 + 000d4 eb 11 jmp SHORT $LN236@load_jpeg_ +$LN87@load_jpeg_: + +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) + + 000d6 4c 89 6c 24 40 mov QWORD PTR tv3179[rsp], r13 + 000db 41 8b c5 mov eax, r13d + 000de 83 f9 03 cmp ecx, 3 + 000e1 0f 85 de 00 00 + 00 jne $LN44@load_jpeg_ +$LN236@load_jpeg_: + 000e7 41 83 ff 03 cmp r15d, 3 + 000eb 0f 8d d4 00 00 + 00 jge $LN44@load_jpeg_ + 000f1 85 c0 test eax, eax + 000f3 0f 85 cc 00 00 + 00 jne $LN44@load_jpeg_ + +; 3364 : decode_n = 1; + + 000f9 41 8b cc mov ecx, r12d +$LN46@load_jpeg_: + 000fc 48 89 9c 24 98 + 01 00 00 mov QWORD PTR [rsp+408], rbx + 00104 0f 57 c0 xorps xmm0, xmm0 + 00107 48 89 ac 24 90 + 01 00 00 mov QWORD PTR [rsp+400], rbp + 0010f 0f 57 c9 xorps xmm1, xmm1 + 00112 48 89 bc 24 88 + 01 00 00 mov QWORD PTR [rsp+392], rdi + 0011a 4c 89 b4 24 78 + 01 00 00 mov QWORD PTR [rsp+376], r14 + +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { + + 00122 44 8b f1 mov r14d, ecx + 00125 4c 89 74 24 48 mov QWORD PTR tv3132[rsp], r14 + 0012a f3 0f 7f 44 24 + 50 movdqu XMMWORD PTR coutput$4[rsp], xmm0 + 00130 f3 0f 7f 4c 24 + 60 movdqu XMMWORD PTR coutput$4[rsp+16], xmm1 + 00136 85 c9 test ecx, ecx + 00138 0f 84 f4 00 00 + 00 je $LN3@load_jpeg_ + 0013e 49 8b ed mov rbp, r13 + 00141 48 8d 9c 24 bc + 00 00 00 lea rbx, QWORD PTR res_comp$5[rsp+28] + 00149 48 8d be a4 46 + 00 00 lea rdi, QWORD PTR [rsi+18084] +$LL4@load_jpeg_: + +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); + + 00150 48 8b 06 mov rax, QWORD PTR [rsi] + 00153 8b 08 mov ecx, DWORD PTR [rax] + 00155 83 c1 03 add ecx, 3 + +; 438 : return STBI_MALLOC(size); + + 00158 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); + + 0015e 48 89 47 44 mov QWORD PTR [rdi+68], rax + +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + 00162 48 85 c0 test rax, rax + 00165 0f 84 fd 06 00 + 00 je $LN241@load_jpeg_ + +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; + + 0016b 8b 86 88 46 00 + 00 mov eax, DWORD PTR [rsi+18056] + 00171 99 cdq + +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; + + 00172 44 89 6b 0c mov DWORD PTR [rbx+12], r13d + 00176 f7 3f idiv DWORD PTR [rdi] + 00178 44 8b c8 mov r9d, eax + 0017b 89 43 fc mov DWORD PTR [rbx-4], eax + 0017e 8b 86 8c 46 00 + 00 mov eax, DWORD PTR [rsi+18060] + 00184 99 cdq + 00185 f7 7f 04 idiv DWORD PTR [rdi+4] + 00188 33 d2 xor edx, edx + 0018a 8b c8 mov ecx, eax + 0018c 89 03 mov DWORD PTR [rbx], eax + 0018e d1 f9 sar ecx, 1 + 00190 44 8b c0 mov r8d, eax + 00193 89 4b 08 mov DWORD PTR [rbx+8], ecx + 00196 48 8b 0e mov rcx, QWORD PTR [rsi] + 00199 8b 01 mov eax, DWORD PTR [rcx] + +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; + + 0019b 48 8b 4f 2c mov rcx, QWORD PTR [rdi+44] + 0019f ff c8 dec eax + 001a1 41 03 c1 add eax, r9d + 001a4 48 89 4b f4 mov QWORD PTR [rbx-12], rcx + 001a8 41 f7 f1 div r9d + 001ab 48 89 4b ec mov QWORD PTR [rbx-20], rcx + 001af 89 43 04 mov DWORD PTR [rbx+4], eax + +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + + 001b2 45 3b cc cmp r9d, r12d + 001b5 75 39 jne SHORT $LN218@load_jpeg_ + 001b7 45 3b c4 cmp r8d, r12d + 001ba 75 25 jne SHORT $LN217@load_jpeg_ + 001bc 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:resample_row_1 + 001c3 eb 55 jmp SHORT $LN2@load_jpeg_ +$LN44@load_jpeg_: + +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + 001c5 85 c9 test ecx, ecx + 001c7 0f 8f 2f ff ff + ff jg $LN46@load_jpeg_ + +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); + + 001cd 8b d1 mov edx, ecx + 001cf 45 33 c0 xor r8d, r8d + 001d2 48 8b ce mov rcx, rsi + 001d5 e8 00 00 00 00 call stbi__free_jpeg_components + +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + 001da 33 c0 xor eax, eax + 001dc e9 62 06 00 00 jmp $LN301@load_jpeg_ +$LN217@load_jpeg_: + +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + + 001e1 41 83 f8 02 cmp r8d, 2 + 001e5 75 2c jne SHORT $LN54@load_jpeg_ + 001e7 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_v_2 + 001ee eb 2a jmp SHORT $LN2@load_jpeg_ +$LN218@load_jpeg_: + +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + + 001f0 41 83 f9 02 cmp r9d, 2 + 001f4 75 1d jne SHORT $LN54@load_jpeg_ + 001f6 45 3b c4 cmp r8d, r12d + 001f9 75 09 jne SHORT $LN219@load_jpeg_ + 001fb 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_h_2 + 00202 eb 16 jmp SHORT $LN2@load_jpeg_ +$LN219@load_jpeg_: + +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + + 00204 41 83 f8 02 cmp r8d, 2 + 00208 75 09 jne SHORT $LN54@load_jpeg_ + 0020a 48 8b 86 80 48 + 00 00 mov rax, QWORD PTR [rsi+18560] + 00211 eb 07 jmp SHORT $LN2@load_jpeg_ +$LN54@load_jpeg_: + +; 3400 : else r->resample = stbi__resample_row_generic; + + 00213 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_generic +$LN2@load_jpeg_: + +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { + + 0021a 48 89 43 e4 mov QWORD PTR [rbx-28], rax + 0021e 48 ff c5 inc rbp + 00221 48 83 c3 30 add rbx, 48 ; 00000030H + 00225 48 83 c7 60 add rdi, 96 ; 00000060H + 00229 49 3b ee cmp rbp, r14 + 0022c 0f 8c 1e ff ff + ff jl $LL4@load_jpeg_ +$LN3@load_jpeg_: + +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + + 00232 48 8b 06 mov rax, QWORD PTR [rsi] + 00235 44 8b 40 04 mov r8d, DWORD PTR [rax+4] + 00239 8b 08 mov ecx, DWORD PTR [rax] + +; 467 : if (a < 0 || b < 0) return 0; + + 0023b 45 85 ff test r15d, r15d + 0023e 0f 88 24 06 00 + 00 js $LN241@load_jpeg_ + 00244 85 c9 test ecx, ecx + 00246 0f 88 1c 06 00 + 00 js $LN241@load_jpeg_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0024c 74 11 je SHORT $LN243@load_jpeg_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0024e b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00253 99 cdq + 00254 f7 f9 idiv ecx + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00256 44 3b f8 cmp r15d, eax + 00259 0f 8f 09 06 00 + 00 jg $LN241@load_jpeg_ +$LN243@load_jpeg_: + 0025f 44 8b c9 mov r9d, ecx + 00262 45 0f af cf imul r9d, r15d + +; 467 : if (a < 0 || b < 0) return 0; + + 00266 45 85 c9 test r9d, r9d + 00269 0f 88 f9 05 00 + 00 js $LN241@load_jpeg_ + 0026f 45 85 c0 test r8d, r8d + 00272 0f 88 f0 05 00 + 00 js $LN241@load_jpeg_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00278 74 12 je SHORT $LN242@load_jpeg_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0027a b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0027f 99 cdq + 00280 41 f7 f8 idiv r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00283 44 3b c8 cmp r9d, eax + 00286 0f 8f dc 05 00 + 00 jg $LN241@load_jpeg_ +$LN242@load_jpeg_: + 0028c 8b c1 mov eax, ecx + 0028e 41 0f af c0 imul eax, r8d + 00292 41 0f af c7 imul eax, r15d + +; 460 : return a <= INT_MAX - b; + + 00296 3d fe ff ff 7f cmp eax, 2147483646 ; 7ffffffeH + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0029b 0f 8f c7 05 00 + 00 jg $LN241@load_jpeg_ + +; 509 : return stbi__malloc(a * b * c + add); + + 002a1 41 0f af c8 imul ecx, r8d + 002a5 41 0f af cf imul ecx, r15d + 002a9 ff c1 inc ecx + 002ab 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 002ae ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + 002b4 48 8b 16 mov rdx, QWORD PTR [rsi] + +; 438 : return STBI_MALLOC(size); + + 002b7 4c 8b e8 mov r13, rax + +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + 002ba 48 85 c0 test rax, rax + 002bd 0f 84 a8 05 00 + 00 je $LN240@load_jpeg_ + +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { + + 002c3 33 c0 xor eax, eax + 002c5 89 44 24 30 mov DWORD PTR j$1$[rsp], eax + 002c9 39 42 04 cmp DWORD PTR [rdx+4], eax + 002cc 0f 86 01 05 00 + 00 jbe $LN6@load_jpeg_ + +; 3427 : if (is_rgb) { + + 002d2 4c 8b 64 24 68 mov r12, QWORD PTR coutput$4[rsp+24] + 002d7 48 8b 6c 24 60 mov rbp, QWORD PTR coutput$4[rsp+16] + 002dc 4c 8b 74 24 58 mov r14, QWORD PTR coutput$4[rsp+8] + 002e1 48 8b 7c 24 50 mov rdi, QWORD PTR coutput$4[rsp] + 002e6 4c 89 6c 24 38 mov QWORD PTR output$2$[rsp], r13 + 002eb 0f 1f 44 00 00 npad 5 +$LL7@load_jpeg_: + +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; + + 002f0 0f af 02 imul eax, DWORD PTR [rdx] + 002f3 41 0f af c7 imul eax, r15d + 002f7 45 33 ff xor r15d, r15d + 002fa 8b d8 mov ebx, eax + 002fc 49 03 dd add rbx, r13 + 002ff 48 89 5c 24 70 mov QWORD PTR out$1$[rsp], rbx + +; 3410 : for (k = 0; k < decode_n; ++k) { + + 00304 4c 39 7c 24 48 cmp QWORD PTR tv3132[rsp], r15 + 00309 0f 86 c4 00 00 + 00 jbe $LN9@load_jpeg_ + +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; + + 0030f 48 8b 5c 24 48 mov rbx, QWORD PTR tv3132[rsp] + 00314 48 8d ae c0 46 + 00 00 lea rbp, QWORD PTR [rsi+18112] + 0031b 48 8b 74 24 38 mov rsi, QWORD PTR output$2$[rsp] + 00320 48 8d bc 24 c4 + 00 00 00 lea rdi, QWORD PTR res_comp$5[rsp+36] + 00328 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL10@load_jpeg_: + +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); + + 00330 8b 47 f8 mov eax, DWORD PTR [rdi-8] + 00333 4c 8d 77 ec lea r14, QWORD PTR [rdi-20] + 00337 d1 f8 sar eax, 1 + 00339 4c 8d 67 e4 lea r12, QWORD PTR [rdi-28] + +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, + + 0033d 4d 8b ee mov r13, r14 + 00340 39 07 cmp DWORD PTR [rdi], eax + 00342 7c 09 jl SHORT $LN89@load_jpeg_ + 00344 4d 8b 04 24 mov r8, QWORD PTR [r12] + 00348 49 8b d6 mov rdx, r14 + 0034b eb 06 jmp SHORT $LN92@load_jpeg_ +$LN89@load_jpeg_: + 0034d 4d 8b 06 mov r8, QWORD PTR [r14] + 00350 49 8b d4 mov rdx, r12 +$LN92@load_jpeg_: + 00353 8b 47 f4 mov eax, DWORD PTR [rdi-12] + 00356 44 8b 4f fc mov r9d, DWORD PTR [rdi-4] + 0035a 48 8b 12 mov rdx, QWORD PTR [rdx] + 0035d 48 8b 4d 28 mov rcx, QWORD PTR [rbp+40] + 00361 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00365 ff 57 dc call QWORD PTR [rdi-36] + 00368 4a 89 44 fc 50 mov QWORD PTR coutput$4[rsp+r15*8], rax + +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { + + 0036d 8b 07 mov eax, DWORD PTR [rdi] + 0036f ff c0 inc eax + 00371 89 07 mov DWORD PTR [rdi], eax + 00373 3b 47 f8 cmp eax, DWORD PTR [rdi-8] + 00376 7c 23 jl SHORT $LN8@load_jpeg_ + +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) + + 00378 ff 47 04 inc DWORD PTR [rdi+4] + 0037b 8b 47 04 mov eax, DWORD PTR [rdi+4] + 0037e 49 8b 4d 00 mov rcx, QWORD PTR [r13] + 00382 c7 07 00 00 00 + 00 mov DWORD PTR [rdi], 0 + 00388 49 89 0c 24 mov QWORD PTR [r12], rcx + 0038c 3b 45 00 cmp eax, DWORD PTR [rbp] + 0038f 7d 0a jge SHORT $LN8@load_jpeg_ + +; 3421 : r->line1 += z->img_comp[k].w2; + + 00391 48 63 45 04 movsxd rax, DWORD PTR [rbp+4] + 00395 48 03 c1 add rax, rcx + 00398 49 89 06 mov QWORD PTR [r14], rax +$LN8@load_jpeg_: + +; 3410 : for (k = 0; k < decode_n; ++k) { + + 0039b 49 ff c7 inc r15 + 0039e 48 83 c7 30 add rdi, 48 ; 00000030H + 003a2 48 83 c5 60 add rbp, 96 ; 00000060H + 003a6 4c 3b fb cmp r15, rbx + 003a9 7c 85 jl SHORT $LL10@load_jpeg_ + 003ab 4c 8b 64 24 68 mov r12, QWORD PTR coutput$4[rsp+24] + 003b0 48 8b 6c 24 60 mov rbp, QWORD PTR coutput$4[rsp+16] + 003b5 4c 8b 74 24 58 mov r14, QWORD PTR coutput$4[rsp+8] + 003ba 48 8b 7c 24 50 mov rdi, QWORD PTR coutput$4[rsp] + 003bf 48 8b 5c 24 70 mov rbx, QWORD PTR out$1$[rsp] + 003c4 48 89 74 24 38 mov QWORD PTR output$2$[rsp], rsi + 003c9 4c 8b 6c 24 38 mov r13, QWORD PTR output$2$[rsp] + 003ce 48 8b 74 24 78 mov rsi, QWORD PTR z$GSCopy$1$[rsp] +$LN9@load_jpeg_: + +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { + + 003d3 4c 63 bc 24 e0 + 01 00 00 movsxd r15, DWORD PTR req_comp$[rsp] + 003db 48 8b 06 mov rax, QWORD PTR [rsi] + 003de 41 83 ff 03 cmp r15d, 3 + 003e2 0f 8c c9 01 00 + 00 jl $LN59@load_jpeg_ + +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { + + 003e8 8b 48 08 mov ecx, DWORD PTR [rax+8] + 003eb 83 f9 03 cmp ecx, 3 + 003ee 75 5e jne SHORT $LN61@load_jpeg_ + +; 3427 : if (is_rgb) { + + 003f0 48 83 7c 24 40 + 00 cmp QWORD PTR tv3179[rsp], 0 + 003f6 74 34 je SHORT $LN63@load_jpeg_ + +; 3428 : for (i = 0; i < z->s->img_x; ++i) { + + 003f8 33 d2 xor edx, edx + 003fa 39 10 cmp DWORD PTR [rax], edx + 003fc 0f 86 b5 03 00 + 00 jbe $LN5@load_jpeg_ +$LL13@load_jpeg_: + +; 3429 : out[0] = y[i]; + + 00402 0f b6 04 3a movzx eax, BYTE PTR [rdx+rdi] + 00406 88 03 mov BYTE PTR [rbx], al + +; 3430 : out[1] = coutput[1][i]; + + 00408 42 0f b6 04 32 movzx eax, BYTE PTR [rdx+r14] + 0040d 88 43 01 mov BYTE PTR [rbx+1], al + 00410 0f b6 04 2a movzx eax, BYTE PTR [rdx+rbp] + 00414 ff c2 inc edx + 00416 88 43 02 mov BYTE PTR [rbx+2], al + +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; + + 00419 c6 43 03 ff mov BYTE PTR [rbx+3], 255 ; 000000ffH + +; 3433 : out += n; + + 0041d 49 03 df add rbx, r15 + 00420 48 8b 06 mov rax, QWORD PTR [rsi] + 00423 3b 10 cmp edx, DWORD PTR [rax] + 00425 72 db jb SHORT $LL13@load_jpeg_ + +; 3434 : } +; 3435 : } + + 00427 e9 8b 03 00 00 jmp $LN5@load_jpeg_ +$LN63@load_jpeg_: + +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + + 0042c 8b 00 mov eax, DWORD PTR [rax] + 0042e 4c 8b cd mov r9, rbp + 00431 44 89 7c 24 28 mov DWORD PTR [rsp+40], r15d + 00436 4d 8b c6 mov r8, r14 + 00439 48 8b d7 mov rdx, rdi + 0043c 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00440 48 8b cb mov rcx, rbx + 00443 ff 96 78 48 00 + 00 call QWORD PTR [rsi+18552] + +; 3438 : } +; 3439 : } + + 00449 e9 69 03 00 00 jmp $LN5@load_jpeg_ +$LN61@load_jpeg_: + +; 3440 : else if (z->s->img_n == 4) { + + 0044e 83 f9 04 cmp ecx, 4 + 00451 0f 85 2a 01 00 + 00 jne $LN65@load_jpeg_ + +; 3441 : if (z->app14_color_transform == 0) { // CMYK + + 00457 8b 8e 4c 48 00 + 00 mov ecx, DWORD PTR [rsi+18508] + 0045d 85 c9 test ecx, ecx + 0045f 75 75 jne SHORT $LN67@load_jpeg_ + +; 3442 : for (i = 0; i < z->s->img_x; ++i) { + + 00461 45 33 c9 xor r9d, r9d + 00464 44 39 08 cmp DWORD PTR [rax], r9d + 00467 0f 86 4a 03 00 + 00 jbe $LN5@load_jpeg_ + 0046d 0f 1f 00 npad 3 +$LL16@load_jpeg_: + +; 3343 : unsigned int t = x * y + 128; + + 00470 47 0f b6 04 21 movzx r8d, BYTE PTR [r9+r12] + 00475 41 0f b6 0c 39 movzx ecx, BYTE PTR [r9+rdi] + 0047a 41 0f af c8 imul ecx, r8d + 0047e 83 e9 80 sub ecx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 00481 8b c1 mov eax, ecx + 00483 c1 e8 08 shr eax, 8 + 00486 03 c1 add eax, ecx + 00488 c1 e8 08 shr eax, 8 + +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); + + 0048b 88 03 mov BYTE PTR [rbx], al + +; 3343 : unsigned int t = x * y + 128; + + 0048d 43 0f b6 0c 31 movzx ecx, BYTE PTR [r9+r14] + 00492 41 0f af c8 imul ecx, r8d + 00496 83 e9 80 sub ecx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 00499 8b c1 mov eax, ecx + 0049b c1 e8 08 shr eax, 8 + 0049e 03 c1 add eax, ecx + 004a0 c1 e8 08 shr eax, 8 + +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); + + 004a3 88 43 01 mov BYTE PTR [rbx+1], al + +; 3343 : unsigned int t = x * y + 128; + + 004a6 41 0f b6 0c 29 movzx ecx, BYTE PTR [r9+rbp] + +; 3442 : for (i = 0; i < z->s->img_x; ++i) { + + 004ab 41 ff c1 inc r9d + +; 3447 : out[3] = 255; + + 004ae c6 43 03 ff mov BYTE PTR [rbx+3], 255 ; 000000ffH + +; 3343 : unsigned int t = x * y + 128; + + 004b2 41 0f af c8 imul ecx, r8d + 004b6 83 e9 80 sub ecx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 004b9 8b c1 mov eax, ecx + 004bb c1 e8 08 shr eax, 8 + 004be 03 c1 add eax, ecx + 004c0 c1 e8 08 shr eax, 8 + +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); + + 004c3 88 43 02 mov BYTE PTR [rbx+2], al + +; 3448 : out += n; + + 004c6 49 03 df add rbx, r15 + 004c9 48 8b 06 mov rax, QWORD PTR [rsi] + 004cc 44 3b 08 cmp r9d, DWORD PTR [rax] + 004cf 72 9f jb SHORT $LL16@load_jpeg_ + +; 3449 : } +; 3450 : } + + 004d1 e9 e1 02 00 00 jmp $LN5@load_jpeg_ +$LN67@load_jpeg_: + +; 3451 : else if (z->app14_color_transform == 2) { // YCCK + + 004d6 8b 10 mov edx, DWORD PTR [rax] + 004d8 83 f9 02 cmp ecx, 2 + 004db 48 8b 86 78 48 + 00 00 mov rax, QWORD PTR [rsi+18552] + 004e2 4c 8b cd mov r9, rbp + 004e5 44 89 7c 24 28 mov DWORD PTR [rsp+40], r15d + 004ea 4d 8b c6 mov r8, r14 + 004ed 89 54 24 20 mov DWORD PTR [rsp+32], edx + 004f1 48 8b cb mov rcx, rbx + 004f4 48 8b d7 mov rdx, rdi + 004f7 0f 85 7d 00 00 + 00 jne $LN69@load_jpeg_ + +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + + 004fd ff d0 call rax + +; 3453 : for (i = 0; i < z->s->img_x; ++i) { + + 004ff 48 8b 06 mov rax, QWORD PTR [rsi] + 00502 45 33 c0 xor r8d, r8d + 00505 44 39 00 cmp DWORD PTR [rax], r8d + 00508 0f 86 a9 02 00 + 00 jbe $LN5@load_jpeg_ + 0050e 66 90 npad 2 +$LL19@load_jpeg_: + +; 3343 : unsigned int t = x * y + 128; + + 00510 43 0f b6 14 20 movzx edx, BYTE PTR [r8+r12] + +; 3453 : for (i = 0; i < z->s->img_x; ++i) { + + 00515 41 ff c0 inc r8d + +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); + + 00518 0f b6 03 movzx eax, BYTE PTR [rbx] + 0051b f6 d0 not al + +; 3343 : unsigned int t = x * y + 128; + + 0051d 0f b6 c8 movzx ecx, al + 00520 0f af ca imul ecx, edx + 00523 83 e9 80 sub ecx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 00526 8b c1 mov eax, ecx + 00528 c1 e8 08 shr eax, 8 + 0052b 03 c1 add eax, ecx + 0052d c1 e8 08 shr eax, 8 + +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); + + 00530 88 03 mov BYTE PTR [rbx], al + +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); + + 00532 0f b6 43 01 movzx eax, BYTE PTR [rbx+1] + 00536 f6 d0 not al + +; 3343 : unsigned int t = x * y + 128; + + 00538 0f b6 c8 movzx ecx, al + 0053b 0f af ca imul ecx, edx + 0053e 83 e9 80 sub ecx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 00541 8b c1 mov eax, ecx + 00543 c1 e8 08 shr eax, 8 + 00546 03 c1 add eax, ecx + 00548 c1 e8 08 shr eax, 8 + +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); + + 0054b 88 43 01 mov BYTE PTR [rbx+1], al + +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); + + 0054e 0f b6 43 02 movzx eax, BYTE PTR [rbx+2] + 00552 f6 d0 not al + +; 3343 : unsigned int t = x * y + 128; + + 00554 0f b6 c8 movzx ecx, al + 00557 0f af ca imul ecx, edx + 0055a 83 e9 80 sub ecx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 0055d 8b c1 mov eax, ecx + 0055f c1 e8 08 shr eax, 8 + 00562 03 c1 add eax, ecx + 00564 c1 e8 08 shr eax, 8 + +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); + + 00567 88 43 02 mov BYTE PTR [rbx+2], al + +; 3458 : out += n; + + 0056a 49 03 df add rbx, r15 + 0056d 48 8b 06 mov rax, QWORD PTR [rsi] + 00570 44 3b 00 cmp r8d, DWORD PTR [rax] + 00573 72 9b jb SHORT $LL19@load_jpeg_ + +; 3459 : } +; 3460 : } + + 00575 e9 3d 02 00 00 jmp $LN5@load_jpeg_ +$LN69@load_jpeg_: + +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + + 0057a ff d0 call rax + +; 3463 : } +; 3464 : } + + 0057c e9 36 02 00 00 jmp $LN5@load_jpeg_ +$LN65@load_jpeg_: + +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { + + 00581 33 d2 xor edx, edx + 00583 39 10 cmp DWORD PTR [rax], edx + 00585 0f 86 2c 02 00 + 00 jbe $LN5@load_jpeg_ + 0058b 0f 1f 44 00 00 npad 5 +$LL22@load_jpeg_: + +; 3467 : out[0] = out[1] = out[2] = y[i]; + + 00590 0f b6 0c 3a movzx ecx, BYTE PTR [rdx+rdi] + 00594 ff c2 inc edx + 00596 88 4b 02 mov BYTE PTR [rbx+2], cl + 00599 88 4b 01 mov BYTE PTR [rbx+1], cl + 0059c 88 0b mov BYTE PTR [rbx], cl + +; 3468 : out[3] = 255; // not used if n==3 + + 0059e c6 43 03 ff mov BYTE PTR [rbx+3], 255 ; 000000ffH + +; 3469 : out += n; + + 005a2 49 03 df add rbx, r15 + 005a5 48 8b 06 mov rax, QWORD PTR [rsi] + 005a8 3b 10 cmp edx, DWORD PTR [rax] + 005aa 72 e4 jb SHORT $LL22@load_jpeg_ + +; 3470 : } +; 3471 : } + + 005ac e9 06 02 00 00 jmp $LN5@load_jpeg_ +$LN59@load_jpeg_: + +; 3472 : else { +; 3473 : if (is_rgb) { + + 005b1 48 83 7c 24 40 + 00 cmp QWORD PTR tv3179[rsp], 0 + 005b7 0f 84 a5 00 00 + 00 je $LN71@load_jpeg_ + +; 3474 : if (n == 1) + + 005bd 8b 08 mov ecx, DWORD PTR [rax] + 005bf 45 33 c9 xor r9d, r9d + 005c2 41 83 ff 01 cmp r15d, 1 + 005c6 75 46 jne SHORT $LN73@load_jpeg_ + +; 3475 : for (i = 0; i < z->s->img_x; ++i) + + 005c8 85 c9 test ecx, ecx + 005ca 0f 84 e7 01 00 + 00 je $LN5@load_jpeg_ +$LL25@load_jpeg_: + +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 005d0 43 0f b6 04 31 movzx eax, BYTE PTR [r9+r14] + 005d5 48 8d 5b 01 lea rbx, QWORD PTR [rbx+1] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 005d9 44 69 c0 96 00 + 00 00 imul r8d, eax, 150 ; 00000096H + +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 005e0 41 0f b6 04 29 movzx eax, BYTE PTR [r9+rbp] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 005e5 6b c8 1d imul ecx, eax, 29 + +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 005e8 41 0f b6 04 39 movzx eax, BYTE PTR [r9+rdi] + 005ed 41 ff c1 inc r9d + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 005f0 44 03 c1 add r8d, ecx + 005f3 6b c8 4d imul ecx, eax, 77 ; 0000004dH + 005f6 44 03 c1 add r8d, ecx + 005f9 41 c1 e8 08 shr r8d, 8 + +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 005fd 44 88 43 ff mov BYTE PTR [rbx-1], r8b + 00601 48 8b 06 mov rax, QWORD PTR [rsi] + 00604 44 3b 08 cmp r9d, DWORD PTR [rax] + 00607 72 c7 jb SHORT $LL25@load_jpeg_ + 00609 e9 a9 01 00 00 jmp $LN5@load_jpeg_ +$LN73@load_jpeg_: + +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { + + 0060e 85 c9 test ecx, ecx + 00610 0f 84 a1 01 00 + 00 je $LN5@load_jpeg_ + 00616 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL28@load_jpeg_: + +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 00620 43 0f b6 04 31 movzx eax, BYTE PTR [r9+r14] + 00625 48 8d 5b 02 lea rbx, QWORD PTR [rbx+2] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00629 44 69 c0 96 00 + 00 00 imul r8d, eax, 150 ; 00000096H + +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 00630 41 0f b6 04 29 movzx eax, BYTE PTR [r9+rbp] + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00635 6b c8 1d imul ecx, eax, 29 + +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 00638 41 0f b6 04 39 movzx eax, BYTE PTR [r9+rdi] + 0063d 41 ff c1 inc r9d + +; 3480 : out[1] = 255; + + 00640 c6 43 ff ff mov BYTE PTR [rbx-1], 255 ; 000000ffH + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 00644 44 03 c1 add r8d, ecx + 00647 6b c8 4d imul ecx, eax, 77 ; 0000004dH + 0064a 44 03 c1 add r8d, ecx + 0064d 41 c1 e8 08 shr r8d, 8 + +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + + 00651 44 88 43 fe mov BYTE PTR [rbx-2], r8b + 00655 48 8b 06 mov rax, QWORD PTR [rsi] + 00658 44 3b 08 cmp r9d, DWORD PTR [rax] + 0065b 72 c3 jb SHORT $LL28@load_jpeg_ + +; 3481 : } +; 3482 : } +; 3483 : } + + 0065d e9 55 01 00 00 jmp $LN5@load_jpeg_ +$LN71@load_jpeg_: + +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + + 00662 83 78 08 04 cmp DWORD PTR [rax+8], 4 + 00666 0f 85 f9 00 00 + 00 jne $LN238@load_jpeg_ + 0066c 8b 8e 4c 48 00 + 00 mov ecx, DWORD PTR [rsi+18508] + 00672 85 c9 test ecx, ecx + 00674 0f 85 97 00 00 + 00 jne $LN221@load_jpeg_ + +; 3485 : for (i = 0; i < z->s->img_x; ++i) { + + 0067a 45 33 d2 xor r10d, r10d + 0067d 44 39 10 cmp DWORD PTR [rax], r10d + 00680 0f 86 31 01 00 + 00 jbe $LN5@load_jpeg_ + 00686 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL31@load_jpeg_: + +; 3343 : unsigned int t = x * y + 128; + + 00690 43 0f b6 0c 22 movzx ecx, BYTE PTR [r10+r12] + 00695 43 0f b6 14 32 movzx edx, BYTE PTR [r10+r14] + 0069a 45 0f b6 04 2a movzx r8d, BYTE PTR [r10+rbp] + 0069f 45 0f b6 0c 3a movzx r9d, BYTE PTR [r10+rdi] + +; 3485 : for (i = 0; i < z->s->img_x; ++i) { + + 006a4 41 ff c2 inc r10d + +; 3343 : unsigned int t = x * y + 128; + + 006a7 0f af d1 imul edx, ecx + 006aa 44 0f af c1 imul r8d, ecx + 006ae 44 0f af c9 imul r9d, ecx + +; 3491 : out[1] = 255; + + 006b2 c6 43 01 ff mov BYTE PTR [rbx+1], 255 ; 000000ffH + +; 3343 : unsigned int t = x * y + 128; + + 006b6 83 ea 80 sub edx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 006b9 8b c2 mov eax, edx + +; 3343 : unsigned int t = x * y + 128; + + 006bb 41 83 e8 80 sub r8d, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 006bf c1 e8 08 shr eax, 8 + +; 3343 : unsigned int t = x * y + 128; + + 006c2 41 83 e9 80 sub r9d, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 006c6 03 c2 add eax, edx + 006c8 c1 e8 08 shr eax, 8 + 006cb 0f b6 c0 movzx eax, al + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 006ce 69 d0 96 00 00 + 00 imul edx, eax, 150 ; 00000096H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 006d4 41 8b c0 mov eax, r8d + 006d7 c1 e8 08 shr eax, 8 + 006da 41 03 c0 add eax, r8d + 006dd c1 e8 08 shr eax, 8 + 006e0 0f b6 c0 movzx eax, al + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 006e3 6b c8 1d imul ecx, eax, 29 + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 006e6 41 8b c1 mov eax, r9d + 006e9 c1 e8 08 shr eax, 8 + 006ec 41 03 c1 add eax, r9d + 006ef c1 e8 08 shr eax, 8 + 006f2 0f b6 c0 movzx eax, al + +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + + 006f5 03 d1 add edx, ecx + 006f7 6b c8 4d imul ecx, eax, 77 ; 0000004dH + 006fa 03 d1 add edx, ecx + 006fc c1 ea 08 shr edx, 8 + +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); + + 006ff 88 13 mov BYTE PTR [rbx], dl + +; 3492 : out += n; + + 00701 49 03 df add rbx, r15 + 00704 48 8b 06 mov rax, QWORD PTR [rsi] + 00707 44 3b 10 cmp r10d, DWORD PTR [rax] + 0070a 72 84 jb SHORT $LL31@load_jpeg_ + +; 3493 : } +; 3494 : } + + 0070c e9 a6 00 00 00 jmp $LN5@load_jpeg_ +$LN221@load_jpeg_: + +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + + 00711 83 f9 02 cmp ecx, 2 + 00714 75 4f jne SHORT $LN238@load_jpeg_ + +; 3496 : for (i = 0; i < z->s->img_x; ++i) { + + 00716 45 33 c0 xor r8d, r8d + 00719 44 39 00 cmp DWORD PTR [rax], r8d + 0071c 0f 86 95 00 00 + 00 jbe $LN5@load_jpeg_ + 00722 0f 1f 40 00 66 + 66 0f 1f 84 00 + 00 00 00 00 npad 14 +$LL34@load_jpeg_: + +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + + 00730 41 0f b6 04 38 movzx eax, BYTE PTR [r8+rdi] + 00735 f6 d0 not al + +; 3343 : unsigned int t = x * y + 128; + + 00737 0f b6 d0 movzx edx, al + 0073a 43 0f b6 04 20 movzx eax, BYTE PTR [r8+r12] + +; 3496 : for (i = 0; i < z->s->img_x; ++i) { + + 0073f 41 ff c0 inc r8d + +; 3343 : unsigned int t = x * y + 128; + + 00742 0f af d0 imul edx, eax + +; 3498 : out[1] = 255; + + 00745 c6 43 01 ff mov BYTE PTR [rbx+1], 255 ; 000000ffH + +; 3343 : unsigned int t = x * y + 128; + + 00749 83 ea 80 sub edx, -128 ; ffffffffffffff80H + +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); + + 0074c 8b c2 mov eax, edx + 0074e c1 e8 08 shr eax, 8 + 00751 03 c2 add eax, edx + 00753 c1 e8 08 shr eax, 8 + +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + + 00756 88 03 mov BYTE PTR [rbx], al + +; 3499 : out += n; + + 00758 49 03 df add rbx, r15 + 0075b 48 8b 06 mov rax, QWORD PTR [rsi] + 0075e 44 3b 00 cmp r8d, DWORD PTR [rax] + 00761 72 cd jb SHORT $LL34@load_jpeg_ + +; 3500 : } +; 3501 : } + + 00763 eb 52 jmp SHORT $LN5@load_jpeg_ +$LN238@load_jpeg_: + +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) + + 00765 8b 08 mov ecx, DWORD PTR [rax] + 00767 33 d2 xor edx, edx + 00769 41 83 ff 01 cmp r15d, 1 + 0076d 75 23 jne SHORT $LN79@load_jpeg_ + +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; + + 0076f 85 c9 test ecx, ecx + 00771 74 44 je SHORT $LN5@load_jpeg_ + 00773 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL37@load_jpeg_: + 00780 0f b6 04 3a movzx eax, BYTE PTR [rdx+rdi] + 00784 88 04 1a mov BYTE PTR [rdx+rbx], al + 00787 ff c2 inc edx + 00789 48 8b 06 mov rax, QWORD PTR [rsi] + 0078c 3b 10 cmp edx, DWORD PTR [rax] + 0078e 72 f0 jb SHORT $LL37@load_jpeg_ + 00790 eb 25 jmp SHORT $LN5@load_jpeg_ +$LN79@load_jpeg_: + +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } + + 00792 85 c9 test ecx, ecx + 00794 74 21 je SHORT $LN5@load_jpeg_ + 00796 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL40@load_jpeg_: + 007a0 0f b6 0c 3a movzx ecx, BYTE PTR [rdx+rdi] + 007a4 ff c2 inc edx + 007a6 88 0b mov BYTE PTR [rbx], cl + 007a8 c6 43 01 ff mov BYTE PTR [rbx+1], 255 ; 000000ffH + 007ac 48 8d 5b 02 lea rbx, QWORD PTR [rbx+2] + 007b0 48 8b 06 mov rax, QWORD PTR [rsi] + 007b3 3b 10 cmp edx, DWORD PTR [rax] + 007b5 72 e9 jb SHORT $LL40@load_jpeg_ +$LN5@load_jpeg_: + +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { + + 007b7 8b 44 24 30 mov eax, DWORD PTR j$1$[rsp] + 007bb 48 8b 16 mov rdx, QWORD PTR [rsi] + 007be ff c0 inc eax + 007c0 89 44 24 30 mov DWORD PTR j$1$[rsp], eax + 007c4 3b 42 04 cmp eax, DWORD PTR [rdx+4] + 007c7 0f 82 23 fb ff + ff jb $LL7@load_jpeg_ + 007cd 41 bc 01 00 00 + 00 mov r12d, 1 +$LN6@load_jpeg_: + +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); + + 007d3 8b 52 08 mov edx, DWORD PTR [rdx+8] + 007d6 45 33 c0 xor r8d, r8d + 007d9 48 8b ce mov rcx, rsi + 007dc e8 00 00 00 00 call stbi__free_jpeg_components + +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; + + 007e1 48 8b 06 mov rax, QWORD PTR [rsi] + 007e4 8b 08 mov ecx, DWORD PTR [rax] + 007e6 48 8b 84 24 80 + 00 00 00 mov rax, QWORD PTR out_x$GSCopy$1$[rsp] + 007ee 89 08 mov DWORD PTR [rax], ecx + +; 3513 : *out_y = z->s->img_y; + + 007f0 48 8b 0e mov rcx, QWORD PTR [rsi] + 007f3 48 8b 84 24 88 + 00 00 00 mov rax, QWORD PTR out_y$GSCopy$1$[rsp] + 007fb 8b 51 04 mov edx, DWORD PTR [rcx+4] + 007fe 89 10 mov DWORD PTR [rax], edx + +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + + 00800 48 8b 84 24 90 + 00 00 00 mov rax, QWORD PTR comp$GSCopy$1$[rsp] + 00808 48 85 c0 test rax, rax + 0080b 74 13 je SHORT $LN81@load_jpeg_ + 0080d 48 8b 0e mov rcx, QWORD PTR [rsi] + 00810 83 79 08 03 cmp DWORD PTR [rcx+8], 3 + 00814 b9 03 00 00 00 mov ecx, 3 + 00819 44 0f 4d e1 cmovge r12d, ecx + 0081d 44 89 20 mov DWORD PTR [rax], r12d +$LN81@load_jpeg_: + +; 3515 : return output; + + 00820 49 8b c5 mov rax, r13 +$LN305@load_jpeg_: + 00823 48 8b 9c 24 98 + 01 00 00 mov rbx, QWORD PTR [rsp+408] + 0082b 48 8b bc 24 88 + 01 00 00 mov rdi, QWORD PTR [rsp+392] + 00833 48 8b ac 24 90 + 01 00 00 mov rbp, QWORD PTR [rsp+400] + 0083b 4c 8b b4 24 78 + 01 00 00 mov r14, QWORD PTR [rsp+376] +$LN301@load_jpeg_: + 00843 4c 8b a4 24 80 + 01 00 00 mov r12, QWORD PTR [rsp+384] +$LN1@load_jpeg_: + +; 3516 : } +; 3517 : } + + 0084b 48 8b 8c 24 60 + 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00853 48 33 cc xor rcx, rsp + 00856 e8 00 00 00 00 call __security_check_cookie + 0085b 48 81 c4 a0 01 + 00 00 add rsp, 416 ; 000001a0H + 00862 41 5f pop r15 + 00864 41 5d pop r13 + 00866 5e pop rsi + 00867 c3 ret 0 +$LN241@load_jpeg_: + +; 508 : if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + + 00868 48 8b 16 mov rdx, QWORD PTR [rsi] +$LN240@load_jpeg_: + +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); + + 0086b 8b 52 08 mov edx, DWORD PTR [rdx+8] + 0086e 45 33 c0 xor r8d, r8d + 00871 48 8b ce mov rcx, rsi + 00874 e8 00 00 00 00 call stbi__free_jpeg_components + +; 431 : stbi__g_failure_reason = str; + + 00879 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0087f 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00888 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0088d 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00891 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00898 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + 0089c 33 c0 xor eax, eax + 0089e eb 83 jmp SHORT $LN305@load_jpeg_ +$LN42@load_jpeg_: + +; 431 : stbi__g_failure_reason = str; + + 008a0 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 008a6 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 008af b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 008b4 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 008b8 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@ + 008bf 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + 008c3 33 c0 xor eax, eax + 008c5 eb 84 jmp SHORT $LN1@load_jpeg_ +load_jpeg_image ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_load +_TEXT SEGMENT +s$ = 80 +x$ = 88 +y$ = 96 +comp$ = 104 +req_comp$ = 112 +ri$dead$ = 120 +stbi__jpeg_load PROC ; COMDAT + +; 3520 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 56 push r14 + 00016 48 83 ec 40 sub rsp, 64 ; 00000040H + 0001a 48 8b d9 mov rbx, rcx + 0001d 49 8b f1 mov rsi, r9 + +; 438 : return STBI_MALLOC(size); + + 00020 b9 88 48 00 00 mov ecx, 18568 ; 00004888H + +; 3520 : { + + 00025 49 8b e8 mov rbp, r8 + 00028 4c 8b f2 mov r14, rdx + +; 438 : return STBI_MALLOC(size); + + 0002b ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00031 48 8b f8 mov rdi, rax + +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); + + 00034 48 85 c0 test rax, rax + 00037 75 2a jne SHORT $LN2@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 00039 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00042 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00048 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 0004d 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 00051 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00058 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); + + 0005c 33 c0 xor eax, eax + 0005e e9 9f 00 00 00 jmp $LN1@stbi__jpeg +$LN2@stbi__jpeg: + +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); + + 00063 48 8d 48 08 lea rcx, QWORD PTR [rax+8] + 00067 33 d2 xor edx, edx + 00069 41 b8 68 48 00 + 00 mov r8d, 18536 ; 00004868H + 0006f e8 00 00 00 00 call memset + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 00074 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_block + +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; + + 0007b 48 89 1f mov QWORD PTR [rdi], rbx + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 0007e 48 89 87 70 48 + 00 00 mov QWORD PTR [rdi+18544], rax + +; 187 : __cpuid(info, 1); + + 00085 33 c9 xor ecx, ecx + +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + + 00087 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_row + 0008e 48 89 87 78 48 + 00 00 mov QWORD PTR [rdi+18552], rax + +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + + 00095 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2 + 0009c 48 89 87 80 48 + 00 00 mov QWORD PTR [rdi+18560], rax + +; 187 : __cpuid(info, 1); + + 000a3 b8 01 00 00 00 mov eax, 1 + 000a8 0f a2 cpuid + +; 3310 : if (stbi__sse2_available()) { + + 000aa 0f ba e2 1a bt edx, 26 + 000ae 73 2a jae SHORT $LN9@stbi__jpeg + +; 3311 : j->idct_block_kernel = stbi__idct_simd; + + 000b0 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_simd + 000b7 48 89 87 70 48 + 00 00 mov QWORD PTR [rdi+18544], rax + +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + + 000be 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_simd + 000c5 48 89 87 78 48 + 00 00 mov QWORD PTR [rdi+18552], rax + +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + + 000cc 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2_simd + 000d3 48 89 87 80 48 + 00 00 mov QWORD PTR [rdi+18560], rax +$LN9@stbi__jpeg: + +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); + + 000da 8b 44 24 70 mov eax, DWORD PTR req_comp$[rsp] + 000de 4c 8b ce mov r9, rsi + 000e1 4c 8b c5 mov r8, rbp + 000e4 89 44 24 20 mov DWORD PTR [rsp+32], eax + 000e8 49 8b d6 mov rdx, r14 + 000eb 48 8b cf mov rcx, rdi + 000ee e8 00 00 00 00 call load_jpeg_image + +; 3529 : STBI_FREE(j); + + 000f3 48 8b cf mov rcx, rdi + 000f6 48 8b d8 mov rbx, rax + 000f9 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 3530 : return result; + + 000ff 48 8b c3 mov rax, rbx +$LN1@stbi__jpeg: + +; 3531 : } + + 00102 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 00107 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 0010c 48 8b 74 24 60 mov rsi, QWORD PTR [rsp+96] + 00111 48 8b 7c 24 68 mov rdi, QWORD PTR [rsp+104] + 00116 48 83 c4 40 add rsp, 64 ; 00000040H + 0011a 41 5e pop r14 + 0011c c3 ret 0 +stbi__jpeg_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__jpeg_test +_TEXT SEGMENT +s$ = 64 +stbi__jpeg_test PROC ; COMDAT + +; 3534 : { + + 00000 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 00005 57 push rdi + 00006 48 83 ec 30 sub rsp, 48 ; 00000030H + 0000a 48 8b f1 mov rsi, rcx + +; 438 : return STBI_MALLOC(size); + + 0000d b9 88 48 00 00 mov ecx, 18568 ; 00004888H + 00012 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00018 48 8b f8 mov rdi, rax + +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); + + 0001b 48 85 c0 test rax, rax + 0001e 75 30 jne SHORT $LN2@stbi__jpeg + +; 431 : stbi__g_failure_reason = str; + + 00020 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00029 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 0002f ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 00034 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 00038 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 0003f 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); + + 00043 33 c0 xor eax, eax + +; 3544 : return r; +; 3545 : } + + 00045 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] + 0004a 48 83 c4 30 add rsp, 48 ; 00000030H + 0004e 5f pop rdi + 0004f c3 ret 0 +$LN2@stbi__jpeg: + +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); + + 00050 48 8d 48 08 lea rcx, QWORD PTR [rax+8] + 00054 48 89 5c 24 40 mov QWORD PTR [rsp+64], rbx + 00059 33 d2 xor edx, edx + 0005b 41 b8 68 48 00 + 00 mov r8d, 18536 ; 00004868H + 00061 e8 00 00 00 00 call memset + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 00066 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_block + +; 3539 : j->s = s; + + 0006d 48 89 37 mov QWORD PTR [rdi], rsi + +; 3305 : j->idct_block_kernel = stbi__idct_block; + + 00070 48 89 87 70 48 + 00 00 mov QWORD PTR [rdi+18544], rax + +; 187 : __cpuid(info, 1); + + 00077 33 c9 xor ecx, ecx + +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + + 00079 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_row + 00080 48 89 87 78 48 + 00 00 mov QWORD PTR [rdi+18552], rax + +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + + 00087 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2 + 0008e 48 89 87 80 48 + 00 00 mov QWORD PTR [rdi+18560], rax + +; 187 : __cpuid(info, 1); + + 00095 b8 01 00 00 00 mov eax, 1 + 0009a 0f a2 cpuid + +; 3310 : if (stbi__sse2_available()) { + + 0009c 0f ba e2 1a bt edx, 26 + 000a0 73 2a jae SHORT $LN9@stbi__jpeg + +; 3311 : j->idct_block_kernel = stbi__idct_simd; + + 000a2 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__idct_simd + 000a9 48 89 87 70 48 + 00 00 mov QWORD PTR [rdi+18544], rax + +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + + 000b0 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__YCbCr_to_RGB_simd + 000b7 48 89 87 78 48 + 00 00 mov QWORD PTR [rdi+18552], rax + +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + + 000be 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:stbi__resample_row_hv_2_simd + 000c5 48 89 87 80 48 + 00 00 mov QWORD PTR [rdi+18560], rax +$LN9@stbi__jpeg: + +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + + 000cc ba 01 00 00 00 mov edx, 1 + 000d1 48 8b cf mov rcx, rdi + 000d4 e8 00 00 00 00 call stbi__decode_jpeg_header + +; 342 : s->img_buffer = s->img_buffer_original; + + 000d9 48 8b 96 d0 00 + 00 00 mov rdx, QWORD PTR [rsi+208] + +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); + + 000e0 48 8b cf mov rcx, rdi + +; 342 : s->img_buffer = s->img_buffer_original; + + 000e3 48 89 96 c0 00 + 00 00 mov QWORD PTR [rsi+192], rdx + +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + + 000ea 8b d8 mov ebx, eax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 000ec 48 8b 96 d8 00 + 00 00 mov rdx, QWORD PTR [rsi+216] + 000f3 48 89 96 c8 00 + 00 00 mov QWORD PTR [rsi+200], rdx + +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); + + 000fa ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 3544 : return r; +; 3545 : } + + 00100 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] + 00105 8b c3 mov eax, ebx + 00107 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 0010c 48 83 c4 30 add rsp, 48 ; 00000030H + 00110 5f pop rdi + 00111 c3 ret 0 +stbi__jpeg_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bitreverse16 +_TEXT SEGMENT +n$ = 8 +stbi__bitreverse16 PROC ; COMDAT + +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + + 00000 8b c1 mov eax, ecx + 00002 81 e1 55 55 00 + 00 and ecx, 21845 ; 00005555H + 00008 d1 f8 sar eax, 1 + 0000a 03 c9 add ecx, ecx + 0000c 25 55 55 00 00 and eax, 21845 ; 00005555H + 00011 0b c1 or eax, ecx + +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + + 00013 8b d0 mov edx, eax + 00015 25 33 33 00 00 and eax, 13107 ; 00003333H + 0001a c1 ea 02 shr edx, 2 + 0001d c1 e0 02 shl eax, 2 + 00020 81 e2 33 33 00 + 00 and edx, 13107 ; 00003333H + 00026 0b d0 or edx, eax + +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + + 00028 8b ca mov ecx, edx + 0002a 81 e2 0f 0f 00 + 00 and edx, 3855 ; 00000f0fH + 00030 c1 e9 04 shr ecx, 4 + 00033 81 e1 0f 0f 00 + 00 and ecx, 3855 ; 00000f0fH + 00039 c1 e2 04 shl edx, 4 + 0003c 0b ca or ecx, edx + +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + + 0003e 0f b6 c1 movzx eax, cl + 00041 c1 e0 08 shl eax, 8 + 00044 c1 e9 08 shr ecx, 8 + 00047 0b c1 or eax, ecx + +; 3604 : return n; +; 3605 : } + + 00049 c3 ret 0 +stbi__bitreverse16 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bit_reverse +_TEXT SEGMENT +v$ = 8 +bits$ = 16 +stbi__bit_reverse PROC ; COMDAT + +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + + 00000 8b c1 mov eax, ecx + +; 3608 : { + + 00002 44 8b c2 mov r8d, edx + +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + + 00005 d1 f8 sar eax, 1 + 00007 81 e1 55 55 00 + 00 and ecx, 21845 ; 00005555H + 0000d 03 c9 add ecx, ecx + 0000f 25 55 55 00 00 and eax, 21845 ; 00005555H + 00014 0b c1 or eax, ecx + +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + + 00016 8b d0 mov edx, eax + 00018 25 33 33 00 00 and eax, 13107 ; 00003333H + 0001d c1 e0 02 shl eax, 2 + 00020 c1 ea 02 shr edx, 2 + 00023 81 e2 33 33 00 + 00 and edx, 13107 ; 00003333H + 00029 0b d0 or edx, eax + +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + + 0002b 8b ca mov ecx, edx + 0002d 81 e2 0f 0f 00 + 00 and edx, 3855 ; 00000f0fH + 00033 c1 e9 04 shr ecx, 4 + 00036 81 e1 0f 0f 00 + 00 and ecx, 3855 ; 00000f0fH + 0003c c1 e2 04 shl edx, 4 + 0003f 0b ca or ecx, edx + +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + + 00041 0f b6 c1 movzx eax, cl + +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); + + 00044 c1 e9 08 shr ecx, 8 + +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + + 00047 c1 e0 08 shl eax, 8 + 0004a 0b c1 or eax, ecx + +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); + + 0004c b9 10 00 00 00 mov ecx, 16 + 00051 41 2b c8 sub ecx, r8d + 00054 d3 f8 sar eax, cl + +; 3613 : } + + 00056 c3 ret 0 +stbi__bit_reverse ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zbuild_huffman +_TEXT SEGMENT +next_code$ = 32 +sizes$ = 96 +__$ArrayPad$ = 176 +z$ = 240 +sizelist$ = 248 +num$ = 256 +stbi__zbuild_huffman PROC ; COMDAT + +; 3616 : { + + 00000 4c 8b dc mov r11, rsp + 00003 53 push rbx + 00004 55 push rbp + 00005 57 push rdi + 00006 41 56 push r14 + 00008 41 57 push r15 + 0000a 48 81 ec c0 00 + 00 00 sub rsp, 192 ; 000000c0H + 00011 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00018 48 33 c4 xor rax, rsp + 0001b 48 89 84 24 b0 + 00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00023 0f 57 c0 xorps xmm0, xmm0 + 00026 45 8b f8 mov r15d, r8d + +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); + + 00029 0f 11 44 24 60 movups XMMWORD PTR sizes$[rsp], xmm0 + 0002e 4c 8b f2 mov r14, rdx + 00031 33 c0 xor eax, eax + 00033 0f 11 44 24 70 movups XMMWORD PTR sizes$[rsp+16], xmm0 + 00038 33 ff xor edi, edi + 0003a 41 89 43 b8 mov DWORD PTR [r11-72], eax + +; 3622 : memset(z->fast, 0, sizeof(z->fast)); + + 0003e 33 d2 xor edx, edx + 00040 41 b8 00 04 00 + 00 mov r8d, 1024 ; 00000400H + 00046 41 0f 11 43 98 movups XMMWORD PTR [r11-104], xmm0 + 0004b 48 8b d9 mov rbx, rcx + 0004e 8b ef mov ebp, edi + 00050 41 0f 11 43 a8 movups XMMWORD PTR [r11-88], xmm0 + 00055 e8 00 00 00 00 call memset + +; 3623 : for (i = 0; i < num; ++i) + + 0005a 45 85 ff test r15d, r15d + 0005d 7e 22 jle SHORT $LN3@stbi__zbui + +; 3616 : { + + 0005f 49 8b ce mov rcx, r14 + 00062 41 8b d7 mov edx, r15d + 00065 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL4@stbi__zbui: + +; 3624 : ++sizes[sizelist[i]]; + + 00070 0f b6 01 movzx eax, BYTE PTR [rcx] + 00073 48 8d 49 01 lea rcx, QWORD PTR [rcx+1] + 00077 ff 44 84 60 inc DWORD PTR sizes$[rsp+rax*4] + 0007b 48 83 ea 01 sub rdx, 1 + 0007f 75 ef jne SHORT $LL4@stbi__zbui +$LN3@stbi__zbui: + +; 3625 : sizes[0] = 0; + + 00081 89 7c 24 60 mov DWORD PTR sizes$[rsp], edi + +; 3626 : for (i = 1; i < 16; ++i) + + 00085 b9 01 00 00 00 mov ecx, 1 + 0008a 66 0f 1f 44 00 + 00 npad 6 +$LL7@stbi__zbui: + +; 3627 : if (sizes[i] > (1 << i)) + + 00090 48 63 d1 movsxd rdx, ecx + 00093 b8 01 00 00 00 mov eax, 1 + 00098 d3 e0 shl eax, cl + 0009a 39 44 94 60 cmp DWORD PTR sizes$[rsp+rdx*4], eax + 0009e 0f 8f d5 01 00 + 00 jg $LN35@stbi__zbui + +; 3626 : for (i = 1; i < 16; ++i) + + 000a4 ff c1 inc ecx + 000a6 83 f9 10 cmp ecx, 16 + 000a9 7c e5 jl SHORT $LL7@stbi__zbui + +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { + + 000ab 41 ba 01 00 00 + 00 mov r10d, 1 + 000b1 48 89 b4 24 00 + 01 00 00 mov QWORD PTR [rsp+256], rsi + 000b9 44 8b c7 mov r8d, edi + 000bc 45 8d 5a 0e lea r11d, QWORD PTR [r10+14] +$LL10@stbi__zbui: + +; 3631 : next_code[i] = code; + + 000c0 4d 63 ca movsxd r9, r10d + +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); + + 000c3 42 8b 74 8c 60 mov esi, DWORD PTR sizes$[rsp+r9*4] + 000c8 46 89 44 8c 20 mov DWORD PTR next_code$[rsp+r9*4], r8d + 000cd 66 46 89 84 4b + 00 04 00 00 mov WORD PTR [rbx+r9*2+1024], r8w + 000d6 44 03 c6 add r8d, esi + 000d9 66 42 89 ac 4b + 64 04 00 00 mov WORD PTR [rbx+r9*2+1124], bp + +; 3635 : if (sizes[i]) + + 000e2 85 f6 test esi, esi + 000e4 74 16 je SHORT $LN18@stbi__zbui + +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); + + 000e6 41 8b ca mov ecx, r10d + 000e9 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 000ed ba 01 00 00 00 mov edx, 1 + 000f2 d3 e2 shl edx, cl + 000f4 3b c2 cmp eax, edx + 000f6 0f 8d 56 01 00 + 00 jge $LN36@stbi__zbui +$LN18@stbi__zbui: + +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop + + 000fc 41 8b cb mov ecx, r11d + 000ff 41 8b c0 mov eax, r8d + 00102 d3 e0 shl eax, cl + +; 3638 : code <<= 1; + + 00104 45 03 c0 add r8d, r8d + +; 3639 : k += sizes[i]; + + 00107 03 ee add ebp, esi + 00109 42 89 84 8b 20 + 04 00 00 mov DWORD PTR [rbx+r9*4+1056], eax + 00111 41 ff c2 inc r10d + 00114 41 ff cb dec r11d + 00117 45 85 db test r11d, r11d + 0011a 7f a4 jg SHORT $LL10@stbi__zbui + +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel + + 0011c c7 83 60 04 00 + 00 00 00 01 00 mov DWORD PTR [rbx+1120], 65536 ; 00010000H + +; 3642 : for (i = 0; i < num; ++i) { + + 00126 45 85 ff test r15d, r15d + 00129 0f 8e f7 00 00 + 00 jle $LN12@stbi__zbui + 0012f 90 npad 1 +$LL13@stbi__zbui: + +; 3643 : int s = sizelist[i]; + + 00130 45 0f b6 0e movzx r9d, BYTE PTR [r14] + +; 3644 : if (s) { + + 00134 45 85 c9 test r9d, r9d + 00137 0f 84 db 00 00 + 00 je $LN11@stbi__zbui + +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + + 0013d 42 0f b7 84 4b + 00 04 00 00 movzx eax, WORD PTR [rbx+r9*2+1024] + 00146 4c 8d 5c 24 20 lea r11, QWORD PTR next_code$[rsp] + 0014b 42 0f b7 8c 4b + 64 04 00 00 movzx ecx, WORD PTR [rbx+r9*2+1124] + 00154 4f 8d 1c 8b lea r11, QWORD PTR [r11+r9*4] + 00158 45 8b 13 mov r10d, DWORD PTR [r11] + 0015b 2b c8 sub ecx, eax + +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); + + 0015d 45 0f b7 c1 movzx r8d, r9w + 00161 66 41 c1 e0 09 shl r8w, 9 + 00166 66 44 0b c7 or r8w, di + 0016a 41 8d 04 0a lea eax, DWORD PTR [r10+rcx] + +; 3647 : z->size[c] = (stbi_uc)s; + + 0016e 48 98 cdqe + 00170 44 88 8c 18 84 + 04 00 00 mov BYTE PTR [rax+rbx+1156], r9b + +; 3648 : z->value[c] = (stbi__uint16)i; + + 00178 66 89 bc 43 a4 + 05 00 00 mov WORD PTR [rbx+rax*2+1444], di + +; 3649 : if (s <= STBI__ZFAST_BITS) { + + 00180 41 83 f9 09 cmp r9d, 9 + 00184 0f 87 87 00 00 + 00 ja $LN15@stbi__zbui + +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + + 0018a 41 8b ca mov ecx, r10d + 0018d 41 8b c2 mov eax, r10d + 00190 25 55 55 00 00 and eax, 21845 ; 00005555H + 00195 d1 f9 sar ecx, 1 + 00197 03 c0 add eax, eax + 00199 81 e1 55 55 00 + 00 and ecx, 21845 ; 00005555H + 0019f 0b c8 or ecx, eax + +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + + 001a1 8b c1 mov eax, ecx + 001a3 81 e1 33 33 00 + 00 and ecx, 13107 ; 00003333H + 001a9 c1 e8 02 shr eax, 2 + 001ac 25 33 33 00 00 and eax, 13107 ; 00003333H + 001b1 c1 e1 02 shl ecx, 2 + 001b4 0b c1 or eax, ecx + +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); + + 001b6 b9 10 00 00 00 mov ecx, 16 + +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + + 001bb 8b d0 mov edx, eax + +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); + + 001bd 41 2b c9 sub ecx, r9d + +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + + 001c0 25 0f 0f 00 00 and eax, 3855 ; 00000f0fH + 001c5 c1 ea 04 shr edx, 4 + 001c8 c1 e0 04 shl eax, 4 + 001cb 81 e2 0f 0f 00 + 00 and edx, 3855 ; 00000f0fH + 001d1 0b d0 or edx, eax + +; 3650 : int j = stbi__bit_reverse(next_code[s], s); + + 001d3 8b c2 mov eax, edx + +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + + 001d5 0f b6 d2 movzx edx, dl + +; 3650 : int j = stbi__bit_reverse(next_code[s], s); + + 001d8 c1 e8 08 shr eax, 8 + +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + + 001db c1 e2 08 shl edx, 8 + 001de 0b c2 or eax, edx + +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); + + 001e0 d3 f8 sar eax, cl + +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { + + 001e2 3d 00 02 00 00 cmp eax, 512 ; 00000200H + 001e7 7d 28 jge SHORT $LN15@stbi__zbui + 001e9 41 8b c9 mov ecx, r9d + 001ec ba 01 00 00 00 mov edx, 1 + 001f1 d3 e2 shl edx, cl + 001f3 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL14@stbi__zbui: + +; 3652 : z->fast[j] = fastv; + + 00200 48 63 c8 movsxd rcx, eax + +; 3653 : j += (1 << s); + + 00203 03 c2 add eax, edx + 00205 66 44 89 04 4b mov WORD PTR [rbx+rcx*2], r8w + 0020a 3d 00 02 00 00 cmp eax, 512 ; 00000200H + 0020f 7c ef jl SHORT $LL14@stbi__zbui +$LN15@stbi__zbui: + +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; + + 00211 41 8d 4a 01 lea ecx, DWORD PTR [r10+1] + 00215 41 89 0b mov DWORD PTR [r11], ecx +$LN11@stbi__zbui: + +; 3642 : for (i = 0; i < num; ++i) { + + 00218 ff c7 inc edi + 0021a 49 ff c6 inc r14 + 0021d 41 3b ff cmp edi, r15d + 00220 0f 8c 0a ff ff + ff jl $LL13@stbi__zbui +$LN12@stbi__zbui: + +; 3657 : } +; 3658 : } +; 3659 : return 1; + + 00226 b8 01 00 00 00 mov eax, 1 +$LN62@stbi__zbui: + 0022b 48 8b b4 24 00 + 01 00 00 mov rsi, QWORD PTR [rsp+256] +$LN1@stbi__zbui: + +; 3660 : } + + 00233 48 8b 8c 24 b0 + 00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0023b 48 33 cc xor rcx, rsp + 0023e e8 00 00 00 00 call __security_check_cookie + 00243 48 81 c4 c0 00 + 00 00 add rsp, 192 ; 000000c0H + 0024a 41 5f pop r15 + 0024c 41 5e pop r14 + 0024e 5f pop rdi + 0024f 5d pop rbp + 00250 5b pop rbx + 00251 c3 ret 0 +$LN36@stbi__zbui: + +; 431 : stbi__g_failure_reason = str; + + 00252 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00258 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00261 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00266 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0026a 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@ + 00271 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); + + 00275 33 c0 xor eax, eax + 00277 eb b2 jmp SHORT $LN62@stbi__zbui +$LN35@stbi__zbui: + +; 431 : stbi__g_failure_reason = str; + + 00279 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0027f 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00288 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0028d 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00291 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09EOHLEIKL@bad?5sizes@ + 00298 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); + + 0029c 33 c0 xor eax, eax + 0029e eb 93 jmp SHORT $LN1@stbi__zbui +stbi__zbuild_huffman ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zeof +_TEXT SEGMENT +z$ = 8 +stbi__zeof PROC ; COMDAT + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00000 48 8b 51 08 mov rdx, QWORD PTR [rcx+8] + 00004 33 c0 xor eax, eax + 00006 48 39 11 cmp QWORD PTR [rcx], rdx + 00009 0f 93 c0 setae al + +; 3685 : } + + 0000c c3 ret 0 +stbi__zeof ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zget8 +_TEXT SEGMENT +z$ = 8 +stbi__zget8 PROC ; COMDAT + +; 3688 : { + + 00000 48 8b d1 mov rdx, rcx + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00003 48 8b 09 mov rcx, QWORD PTR [rcx] + 00006 48 3b 4a 08 cmp rcx, QWORD PTR [rdx+8] + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0000a 72 03 jb SHORT $LN3@stbi__zget + 0000c 32 c0 xor al, al + +; 3690 : } + + 0000e c3 ret 0 +$LN3@stbi__zget: + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0000f 0f b6 01 movzx eax, BYTE PTR [rcx] + 00012 48 ff c1 inc rcx + 00015 48 89 0a mov QWORD PTR [rdx], rcx + +; 3690 : } + + 00018 c3 ret 0 +stbi__zget8 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__fill_bits +_TEXT SEGMENT +z$ = 8 +stbi__fill_bits PROC ; COMDAT + +; 3693 : { + + 00000 48 8b c1 mov rax, rcx + 00003 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL4@stbi__fill: + +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00010 44 8b 40 10 mov r8d, DWORD PTR [rax+16] + 00014 ba 01 00 00 00 mov edx, 1 + 00019 44 8b 48 14 mov r9d, DWORD PTR [rax+20] + 0001d 41 8b c8 mov ecx, r8d + 00020 d3 e2 shl edx, cl + 00022 44 3b ca cmp r9d, edx + 00025 73 31 jae SHORT $LN14@stbi__fill + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00027 48 8b 08 mov rcx, QWORD PTR [rax] + 0002a 48 3b 48 08 cmp rcx, QWORD PTR [rax+8] + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0002e 72 04 jb SHORT $LN9@stbi__fill + 00030 32 d2 xor dl, dl + 00032 eb 09 jmp SHORT $LN10@stbi__fill +$LN9@stbi__fill: + 00034 0f b6 11 movzx edx, BYTE PTR [rcx] + 00037 48 ff c1 inc rcx + 0003a 48 89 08 mov QWORD PTR [rax], rcx +$LN10@stbi__fill: + +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 0003d 0f b6 d2 movzx edx, dl + 00040 41 8b c8 mov ecx, r8d + 00043 d3 e2 shl edx, cl + +; 3700 : z->num_bits += 8; + + 00045 41 8d 48 08 lea ecx, DWORD PTR [r8+8] + 00049 41 0b d1 or edx, r9d + 0004c 89 48 10 mov DWORD PTR [rax+16], ecx + 0004f 89 50 14 mov DWORD PTR [rax+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 00052 83 f9 18 cmp ecx, 24 + 00055 7e b9 jle SHORT $LL4@stbi__fill + +; 3702 : } + + 00057 c3 ret 0 +$LN14@stbi__fill: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00058 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 0005c 48 89 08 mov QWORD PTR [rax], rcx + +; 3702 : } + + 0005f c3 ret 0 +stbi__fill_bits ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zreceive +_TEXT SEGMENT +z$ = 16 +n$ = 24 +stbi__zreceive PROC ; COMDAT + +; 3705 : { + + 00000 40 57 push rdi + +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00002 8b 41 10 mov eax, DWORD PTR [rcx+16] + 00005 8b fa mov edi, edx + 00007 4c 8b c9 mov r9, rcx + 0000a 41 ba 01 00 00 + 00 mov r10d, 1 + 00010 3b c2 cmp eax, edx + 00012 7d 6d jge SHORT $LN6@stbi__zrec + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00014 8b 51 14 mov edx, DWORD PTR [rcx+20] + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00017 44 8b d8 mov r11d, eax + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0001a 8b c8 mov ecx, eax + 0001c 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00021 44 8b c0 mov r8d, eax + 00024 41 8b c2 mov eax, r10d + 00027 d3 e0 shl eax, cl + 00029 3b d0 cmp edx, eax + 0002b 73 45 jae SHORT $LN17@stbi__zrec + 0002d 49 8b 59 08 mov rbx, QWORD PTR [r9+8] +$LL7@stbi__zrec: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00031 49 8b 01 mov rax, QWORD PTR [r9] + 00034 48 3b c3 cmp rax, rbx + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00037 72 04 jb SHORT $LN12@stbi__zrec + 00039 32 c9 xor cl, cl + 0003b eb 09 jmp SHORT $LN13@stbi__zrec +$LN12@stbi__zrec: + 0003d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00040 48 ff c0 inc rax + 00043 49 89 01 mov QWORD PTR [r9], rax +$LN13@stbi__zrec: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00046 0f b6 c1 movzx eax, cl + 00049 41 8b cb mov ecx, r11d + 0004c d3 e0 shl eax, cl + 0004e 0b d0 or edx, eax + +; 3700 : z->num_bits += 8; + + 00050 41 8d 43 08 lea eax, DWORD PTR [r11+8] + 00054 41 89 51 14 mov DWORD PTR [r9+20], edx + 00058 41 89 41 10 mov DWORD PTR [r9+16], eax + +; 3701 : } while (z->num_bits <= 24); + + 0005c 83 f8 18 cmp eax, 24 + 0005f 7f 1b jg SHORT $LN25@stbi__zrec + 00061 44 8b d8 mov r11d, eax + 00064 44 8b c0 mov r8d, eax + 00067 8b c8 mov ecx, eax + 00069 41 8b c2 mov eax, r10d + 0006c d3 e0 shl eax, cl + 0006e 3b d0 cmp edx, eax + 00070 72 bf jb SHORT $LL7@stbi__zrec +$LN17@stbi__zrec: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00072 49 8b 41 08 mov rax, QWORD PTR [r9+8] + 00076 49 89 01 mov QWORD PTR [r9], rax + 00079 41 8b c0 mov eax, r8d +$LN25@stbi__zrec: + 0007c 48 8b 5c 24 10 mov rbx, QWORD PTR [rsp+16] +$LN6@stbi__zrec: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 00081 45 8b 41 14 mov r8d, DWORD PTR [r9+20] + +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; + + 00085 2b c7 sub eax, edi + 00087 8b cf mov ecx, edi + 00089 41 89 41 10 mov DWORD PTR [r9+16], eax + 0008d 41 d3 e2 shl r10d, cl + 00090 41 8b d0 mov edx, r8d + 00093 d3 ea shr edx, cl + 00095 41 89 51 14 mov DWORD PTR [r9+20], edx + 00099 41 8d 42 ff lea eax, DWORD PTR [r10-1] + 0009d 41 23 c0 and eax, r8d + +; 3711 : return k; +; 3712 : } + + 000a0 5f pop rdi + 000a1 c3 ret 0 +stbi__zreceive ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zhuffman_decode_slowpath +_TEXT SEGMENT +a$ = 8 +z$ = 16 +stbi__zhuffman_decode_slowpath PROC ; COMDAT + +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); + + 00000 44 8b 51 14 mov r10d, DWORD PTR [rcx+20] + +; 3715 : { + + 00004 4c 8b d9 mov r11, rcx + +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + + 00007 45 8b c2 mov r8d, r10d + 0000a 41 8b c2 mov eax, r10d + 0000d 41 d1 f8 sar r8d, 1 + 00010 25 55 55 00 00 and eax, 21845 ; 00005555H + 00015 03 c0 add eax, eax + 00017 41 81 e0 55 55 + 00 00 and r8d, 21845 ; 00005555H + 0001e 44 0b c0 or r8d, eax + +; 3715 : { + + 00021 4c 8b ca mov r9, rdx + +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + + 00024 41 8b c8 mov ecx, r8d + 00027 41 81 e0 33 33 + 00 00 and r8d, 13107 ; 00003333H + 0002e c1 e9 02 shr ecx, 2 + 00031 81 e1 33 33 00 + 00 and ecx, 13107 ; 00003333H + 00037 41 c1 e0 02 shl r8d, 2 + 0003b 41 0b c8 or ecx, r8d + +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + + 0003e 8b c1 mov eax, ecx + 00040 81 e1 0f 0f 00 + 00 and ecx, 3855 ; 00000f0fH + 00046 c1 e8 04 shr eax, 4 + 00049 25 0f 0f 00 00 and eax, 3855 ; 00000f0fH + 0004e c1 e1 04 shl ecx, 4 + 00051 0b c1 or eax, ecx + +; 3721 : if (k < z->maxcode[s]) + + 00053 48 8d 8a 48 04 + 00 00 lea rcx, QWORD PTR [rdx+1096] + +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + + 0005a 44 0f b6 c0 movzx r8d, al + 0005e c1 e8 08 shr eax, 8 + 00061 41 c1 e0 08 shl r8d, 8 + 00065 44 0b c0 or r8d, eax + +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) + + 00068 b8 0a 00 00 00 mov eax, 10 + +; 3721 : if (k < z->maxcode[s]) + + 0006d 44 3b 01 cmp r8d, DWORD PTR [rcx] + 00070 7c 10 jl SHORT $LN6@stbi__zhuf +$LL4@stbi__zhuf: + +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) + + 00072 ff c0 inc eax + 00074 48 8d 49 04 lea rcx, QWORD PTR [rcx+4] + +; 3721 : if (k < z->maxcode[s]) + + 00078 44 3b 01 cmp r8d, DWORD PTR [rcx] + 0007b 7d f5 jge SHORT $LL4@stbi__zhuf + +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! + + 0007d 83 f8 10 cmp eax, 16 + 00080 7d 55 jge SHORT $LN20@stbi__zhuf +$LN6@stbi__zhuf: + +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; + + 00082 48 63 d0 movsxd rdx, eax + 00085 b9 10 00 00 00 mov ecx, 16 + 0008a 2b c8 sub ecx, eax + 0008c 41 d3 f8 sar r8d, cl + 0008f 41 0f b7 8c 51 + 00 04 00 00 movzx ecx, WORD PTR [r9+rdx*2+1024] + 00098 44 2b c1 sub r8d, ecx + 0009b 41 0f b7 8c 51 + 64 04 00 00 movzx ecx, WORD PTR [r9+rdx*2+1124] + 000a4 44 03 c1 add r8d, ecx + +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! + + 000a7 41 81 f8 20 01 + 00 00 cmp r8d, 288 ; 00000120H + 000ae 7d 27 jge SHORT $LN20@stbi__zhuf + +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + + 000b0 49 63 d0 movsxd rdx, r8d + 000b3 42 0f b6 8c 0a + 84 04 00 00 movzx ecx, BYTE PTR [rdx+r9+1156] + 000bc 3b c8 cmp ecx, eax + 000be 75 17 jne SHORT $LN20@stbi__zhuf + +; 3728 : a->code_buffer >>= s; + + 000c0 8b c8 mov ecx, eax + 000c2 41 d3 ea shr r10d, cl + +; 3729 : a->num_bits -= s; + + 000c5 41 29 43 10 sub DWORD PTR [r11+16], eax + 000c9 45 89 53 14 mov DWORD PTR [r11+20], r10d + +; 3730 : return z->value[b]; + + 000cd 41 0f b7 84 51 + a4 05 00 00 movzx eax, WORD PTR [r9+rdx*2+1444] + +; 3731 : } + + 000d6 c3 ret 0 +$LN20@stbi__zhuf: + +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + + 000d7 b8 ff ff ff ff mov eax, -1 + +; 3731 : } + + 000dc c3 ret 0 +stbi__zhuffman_decode_slowpath ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zhuffman_decode +_TEXT SEGMENT +a$ = 48 +z$ = 56 +stbi__zhuffman_decode PROC ; COMDAT + +; 3734 : { + + 00000 40 57 push rdi + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { + + 00006 44 8b 41 10 mov r8d, DWORD PTR [rcx+16] + 0000a 48 8b fa mov rdi, rdx + 0000d 4c 8b c9 mov r9, rcx + 00010 41 83 f8 10 cmp r8d, 16 + 00014 7d 77 jge SHORT $LN10@stbi__zhuf + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00016 48 8b 01 mov rax, QWORD PTR [rcx] + 00019 4c 8b 59 08 mov r11, QWORD PTR [rcx+8] + 0001d 49 3b c3 cmp rax, r11 + +; 3737 : if (stbi__zeof(a)) { + + 00020 72 0b jb SHORT $LN22@stbi__zhuf + +; 3738 : return -1; /* report error for unexpected end of data. */ + + 00022 b8 ff ff ff ff mov eax, -1 + +; 3750 : } + + 00027 48 83 c4 20 add rsp, 32 ; 00000020H + 0002b 5f pop rdi + 0002c c3 ret 0 +$LN22@stbi__zhuf: + 0002d 48 89 5c 24 30 mov QWORD PTR [rsp+48], rbx + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00032 ba 01 00 00 00 mov edx, 1 + 00037 8b 59 14 mov ebx, DWORD PTR [rcx+20] + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0003a 45 8b d0 mov r10d, r8d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0003d 41 8b c8 mov ecx, r8d + 00040 d3 e2 shl edx, cl + 00042 3b da cmp ebx, edx + 00044 73 3f jae SHORT $LN21@stbi__zhuf +$LL11@stbi__zhuf: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00046 49 3b c3 cmp rax, r11 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00049 72 04 jb SHORT $LN16@stbi__zhuf + 0004b 32 c9 xor cl, cl + 0004d eb 09 jmp SHORT $LN17@stbi__zhuf +$LN16@stbi__zhuf: + 0004f 0f b6 08 movzx ecx, BYTE PTR [rax] + 00052 48 ff c0 inc rax + 00055 49 89 01 mov QWORD PTR [r9], rax +$LN17@stbi__zhuf: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00058 0f b6 d1 movzx edx, cl + +; 3700 : z->num_bits += 8; + + 0005b 45 8d 42 08 lea r8d, DWORD PTR [r10+8] + 0005f 41 8b ca mov ecx, r10d + 00062 45 89 41 10 mov DWORD PTR [r9+16], r8d + 00066 d3 e2 shl edx, cl + 00068 0b da or ebx, edx + 0006a 41 89 59 14 mov DWORD PTR [r9+20], ebx + +; 3701 : } while (z->num_bits <= 24); + + 0006e 41 83 f8 18 cmp r8d, 24 + 00072 7f 14 jg SHORT $LN32@stbi__zhuf + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00074 41 8b c8 mov ecx, r8d + 00077 ba 01 00 00 00 mov edx, 1 + 0007c d3 e2 shl edx, cl + +; 3701 : } while (z->num_bits <= 24); + + 0007e 45 8b d0 mov r10d, r8d + 00081 3b da cmp ebx, edx + 00083 72 c1 jb SHORT $LL11@stbi__zhuf +$LN21@stbi__zhuf: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00085 4d 89 19 mov QWORD PTR [r9], r11 +$LN32@stbi__zhuf: + 00088 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] +$LN10@stbi__zhuf: + +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + + 0008d 41 8b 51 14 mov edx, DWORD PTR [r9+20] + 00091 8b c2 mov eax, edx + 00093 25 ff 01 00 00 and eax, 511 ; 000001ffH + 00098 0f b7 04 47 movzx eax, WORD PTR [rdi+rax*2] + +; 3743 : if (b) { + + 0009c 85 c0 test eax, eax + 0009e 74 1d je SHORT $LN4@stbi__zhuf + +; 3744 : s = b >> 9; + + 000a0 8b c8 mov ecx, eax + 000a2 c1 e9 09 shr ecx, 9 + +; 3745 : a->code_buffer >>= s; + + 000a5 d3 ea shr edx, cl + +; 3746 : a->num_bits -= s; + + 000a7 44 2b c1 sub r8d, ecx + 000aa 41 89 51 14 mov DWORD PTR [r9+20], edx + +; 3747 : return b & 511; + + 000ae 25 ff 01 00 00 and eax, 511 ; 000001ffH + 000b3 45 89 41 10 mov DWORD PTR [r9+16], r8d + +; 3750 : } + + 000b7 48 83 c4 20 add rsp, 32 ; 00000020H + 000bb 5f pop rdi + 000bc c3 ret 0 +$LN4@stbi__zhuf: + +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); + + 000bd 48 8b d7 mov rdx, rdi + 000c0 49 8b c9 mov rcx, r9 + +; 3750 : } + + 000c3 48 83 c4 20 add rsp, 32 ; 00000020H + 000c7 5f pop rdi + +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); + + 000c8 e9 00 00 00 00 jmp stbi__zhuffman_decode_slowpath +stbi__zhuffman_decode ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__zexpand +_TEXT SEGMENT +z$ = 48 +zout$ = 56 +n$ = 64 +stbi__zexpand PROC ; COMDAT + +; 3753 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); + + 0000a 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 0000e 48 8b fa mov rdi, rdx + 00011 48 8b d9 mov rbx, rcx + 00014 48 89 51 18 mov QWORD PTR [rcx+24], rdx + 00018 75 30 jne SHORT $LN4@stbi__zexp + +; 431 : stbi__g_failure_reason = str; + + 0001a 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00020 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00029 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0002e 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00032 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BE@IBFIPFO@output?5buffer?5limit@ + 00039 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); + + 0003d 33 c0 xor eax, eax + +; 3772 : } + + 0003f 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 00044 48 83 c4 20 add rsp, 32 ; 00000020H + 00048 5f pop rdi + 00049 c3 ret 0 +$LN4@stbi__zexp: + +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); + + 0004a 2b 79 20 sub edi, DWORD PTR [rcx+32] + +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); + + 0004d 8b 49 28 mov ecx, DWORD PTR [rcx+40] + +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); + + 00050 8b c7 mov eax, edi + 00052 2b 4b 20 sub ecx, DWORD PTR [rbx+32] + 00055 f7 d0 not eax + 00057 41 3b c0 cmp eax, r8d + 0005a 73 30 jae SHORT $LN17@stbi__zexp +$LN18@stbi__zexp: + +; 3772 : } + + 0005c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00062 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0006b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00070 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00074 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 0007b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 0007f 33 c0 xor eax, eax + 00081 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 00086 48 83 c4 20 add rsp, 32 ; 00000020H + 0008a 5f pop rdi + 0008b c3 ret 0 +$LN17@stbi__zexp: + +; 3761 : while (cur + n > limit) { + + 0008c 42 8d 04 07 lea eax, DWORD PTR [rdi+r8] + 00090 3b c1 cmp eax, ecx + 00092 76 0e jbe SHORT $LN3@stbi__zexp +$LL2@stbi__zexp: + +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); + + 00094 81 f9 ff ff ff + 7f cmp ecx, 2147483647 ; 7fffffffH + 0009a 77 c0 ja SHORT $LN18@stbi__zexp + +; 3763 : limit *= 2; + + 0009c 03 c9 add ecx, ecx + 0009e 3b c1 cmp eax, ecx + 000a0 77 f2 ja SHORT $LL2@stbi__zexp +$LN3@stbi__zexp: + +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + + 000a2 8b d1 mov edx, ecx + 000a4 48 89 74 24 30 mov QWORD PTR [rsp+48], rsi + 000a9 8b f1 mov esi, ecx + 000ab 48 8b 4b 20 mov rcx, QWORD PTR [rbx+32] + 000af ff 15 00 00 00 + 00 call QWORD PTR __imp_realloc + 000b5 48 8b c8 mov rcx, rax + +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); + + 000b8 48 85 c0 test rax, rax + 000bb 75 35 jne SHORT $LN7@stbi__zexp + +; 431 : stbi__g_failure_reason = str; + + 000bd 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000c3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000cc 48 8b 74 24 30 mov rsi, QWORD PTR [rsp+48] + 000d1 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000d6 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000da 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 000e1 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); + + 000e5 33 c0 xor eax, eax + +; 3772 : } + + 000e7 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 000ec 48 83 c4 20 add rsp, 32 ; 00000020H + 000f0 5f pop rdi + 000f1 c3 ret 0 +$LN7@stbi__zexp: + +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; + + 000f2 8b c7 mov eax, edi + 000f4 48 03 c1 add rax, rcx + 000f7 48 89 4b 20 mov QWORD PTR [rbx+32], rcx + 000fb 48 89 43 18 mov QWORD PTR [rbx+24], rax + +; 3770 : z->zout_end = q + limit; + + 000ff 48 8d 04 0e lea rax, QWORD PTR [rsi+rcx] + 00103 48 8b 74 24 30 mov rsi, QWORD PTR [rsp+48] + 00108 48 89 43 28 mov QWORD PTR [rbx+40], rax + +; 3771 : return 1; + + 0010c b8 01 00 00 00 mov eax, 1 + +; 3772 : } + + 00111 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 00116 48 83 c4 20 add rsp, 32 ; 00000020H + 0011a 5f pop rdi + 0011b c3 ret 0 +stbi__zexpand ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__parse_huffman_block +_TEXT SEGMENT +a$ = 64 +stbi__parse_huffman_block PROC ; COMDAT + +; 3789 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 48 89 6c 24 18 mov QWORD PTR [rsp+24], rbp + 0000a 48 89 74 24 20 mov QWORD PTR [rsp+32], rsi + 0000f 57 push rdi + 00010 41 54 push r12 + 00012 41 57 push r15 + 00014 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 3790 : char* zout = a->zout; + + 00018 48 8b 71 18 mov rsi, QWORD PTR [rcx+24] + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0001c 4c 8d 25 00 00 + 00 00 lea r12, OFFSET FLAT:__ImageBase + +; 3789 : { + + 00023 48 8b d9 mov rbx, rcx + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00026 4c 89 74 24 40 mov QWORD PTR [rsp+64], r14 + 0002b 0f 1f 44 00 00 npad 5 +$LL2@stbi__pars: + +; 3736 : if (a->num_bits < 16) { + + 00030 44 8b 43 10 mov r8d, DWORD PTR [rbx+16] + 00034 41 83 f8 10 cmp r8d, 16 + 00038 7d 64 jge SHORT $LN39@stbi__pars + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0003a 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] + 0003e 48 8b 13 mov rdx, QWORD PTR [rbx] + 00041 49 3b d2 cmp rdx, r10 + +; 3737 : if (stbi__zeof(a)) { + + 00044 0f 83 6c 03 00 + 00 jae $LN165@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0004a 44 8b 4b 14 mov r9d, DWORD PTR [rbx+20] + +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + + 0004e 41 8b c8 mov ecx, r8d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00051 b8 01 00 00 00 mov eax, 1 + 00056 d3 e0 shl eax, cl + 00058 44 3b c8 cmp r9d, eax + 0005b 73 3e jae SHORT $LN113@stbi__pars + 0005d 0f 1f 00 npad 3 +$LL40@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00060 49 3b d2 cmp rdx, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00063 72 04 jb SHORT $LN45@stbi__pars + 00065 32 c0 xor al, al + 00067 eb 09 jmp SHORT $LN46@stbi__pars +$LN45@stbi__pars: + 00069 0f b6 02 movzx eax, BYTE PTR [rdx] + 0006c 48 ff c2 inc rdx + 0006f 48 89 13 mov QWORD PTR [rbx], rdx +$LN46@stbi__pars: + +; 3700 : z->num_bits += 8; + + 00072 44 8d 41 08 lea r8d, DWORD PTR [rcx+8] + 00076 0f b6 c0 movzx eax, al + 00079 d3 e0 shl eax, cl + 0007b 44 0b c8 or r9d, eax + 0007e 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 00082 44 89 4b 14 mov DWORD PTR [rbx+20], r9d + +; 3701 : } while (z->num_bits <= 24); + + 00086 41 83 f8 18 cmp r8d, 24 + 0008a 7f 12 jg SHORT $LN39@stbi__pars + 0008c 41 8b c8 mov ecx, r8d + 0008f b8 01 00 00 00 mov eax, 1 + 00094 d3 e0 shl eax, cl + 00096 44 3b c8 cmp r9d, eax + 00099 72 c5 jb SHORT $LL40@stbi__pars +$LN113@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 0009b 4c 89 13 mov QWORD PTR [rbx], r10 +$LN39@stbi__pars: + +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + + 0009e 8b 53 14 mov edx, DWORD PTR [rbx+20] + 000a1 8b c2 mov eax, edx + 000a3 25 ff 01 00 00 and eax, 511 ; 000001ffH + 000a8 0f b7 7c 43 34 movzx edi, WORD PTR [rbx+rax*2+52] + +; 3743 : if (b) { + + 000ad 85 ff test edi, edi + 000af 74 19 je SHORT $LN33@stbi__pars + +; 3744 : s = b >> 9; + + 000b1 8b cf mov ecx, edi + 000b3 c1 e9 09 shr ecx, 9 + +; 3745 : a->code_buffer >>= s; + + 000b6 d3 ea shr edx, cl + +; 3746 : a->num_bits -= s; + + 000b8 44 2b c1 sub r8d, ecx + 000bb 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3747 : return b & 511; + + 000be 81 e7 ff 01 00 + 00 and edi, 511 ; 000001ffH + 000c4 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 000c8 eb 0e jmp SHORT $LN30@stbi__pars +$LN33@stbi__pars: + +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); + + 000ca 48 8d 53 34 lea rdx, QWORD PTR [rbx+52] + 000ce 48 8b cb mov rcx, rbx + 000d1 e8 00 00 00 00 call stbi__zhuffman_decode_slowpath + 000d6 8b f8 mov edi, eax +$LN30@stbi__pars: + +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { + + 000d8 81 ff 00 01 00 + 00 cmp edi, 256 ; 00000100H + 000de 7d 36 jge SHORT $LN11@stbi__pars + +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes + + 000e0 85 ff test edi, edi + 000e2 0f 88 ce 02 00 + 00 js $LN165@stbi__pars + +; 3795 : if (zout >= a->zout_end) { + + 000e8 48 3b 73 28 cmp rsi, QWORD PTR [rbx+40] + 000ec 72 1d jb SHORT $LN14@stbi__pars + +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; + + 000ee 41 b8 01 00 00 + 00 mov r8d, 1 + 000f4 48 8b d6 mov rdx, rsi + 000f7 48 8b cb mov rcx, rbx + 000fa e8 00 00 00 00 call stbi__zexpand + 000ff 85 c0 test eax, eax + 00101 0f 84 d2 02 00 + 00 je $LN123@stbi__pars + +; 3797 : zout = a->zout; + + 00107 48 8b 73 18 mov rsi, QWORD PTR [rbx+24] +$LN14@stbi__pars: + +; 3798 : } +; 3799 : *zout++ = (char)z; + + 0010b 40 88 3e mov BYTE PTR [rsi], dil + 0010e 48 ff c6 inc rsi + +; 3800 : } + + 00111 e9 1a ff ff ff jmp $LL2@stbi__pars +$LN11@stbi__pars: + +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { + + 00116 0f 84 e8 02 00 + 00 je $LN119@stbi__pars + +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + + 0011c 81 ff 1e 01 00 + 00 cmp edi, 286 ; 0000011eH + 00122 0f 8d 8e 02 00 + 00 jge $LN165@stbi__pars + +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; + + 00128 48 63 c7 movsxd rax, edi + +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + + 0012b 41 8b bc 84 fc + fb ff ff mov edi, DWORD PTR stbi__zlength_extra[r12+rax*4-1028] + 00133 41 8b ac 84 fc + fb ff ff mov ebp, DWORD PTR stbi__zlength_base[r12+rax*4-1028] + 0013b 85 ff test edi, edi + 0013d 0f 84 92 00 00 + 00 je $LN163@stbi__pars + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00143 44 8b 43 10 mov r8d, DWORD PTR [rbx+16] + 00147 44 3b c7 cmp r8d, edi + 0014a 7d 69 jge SHORT $LN58@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0014c 8b 53 14 mov edx, DWORD PTR [rbx+20] + 0014f 41 8b c8 mov ecx, r8d + 00152 b8 01 00 00 00 mov eax, 1 + +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + + 00157 45 8b d0 mov r10d, r8d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0015a d3 e0 shl eax, cl + 0015c 45 8b c8 mov r9d, r8d + 0015f 3b d0 cmp edx, eax + 00161 73 48 jae SHORT $LN114@stbi__pars + 00163 4c 8b 5b 08 mov r11, QWORD PTR [rbx+8] +$LL59@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00167 48 8b 03 mov rax, QWORD PTR [rbx] + 0016a 49 3b c3 cmp rax, r11 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0016d 72 04 jb SHORT $LN64@stbi__pars + 0016f 32 c9 xor cl, cl + 00171 eb 09 jmp SHORT $LN65@stbi__pars +$LN64@stbi__pars: + 00173 0f b6 08 movzx ecx, BYTE PTR [rax] + 00176 48 ff c0 inc rax + 00179 48 89 03 mov QWORD PTR [rbx], rax +$LN65@stbi__pars: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 0017c 0f b6 c1 movzx eax, cl + +; 3700 : z->num_bits += 8; + + 0017f 45 8d 42 08 lea r8d, DWORD PTR [r10+8] + 00183 41 8b ca mov ecx, r10d + 00186 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 0018a d3 e0 shl eax, cl + 0018c 0b d0 or edx, eax + 0018e 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 00191 41 83 f8 18 cmp r8d, 24 + 00195 7f 1e jg SHORT $LN58@stbi__pars + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00197 41 8b c8 mov ecx, r8d + 0019a b8 01 00 00 00 mov eax, 1 + 0019f d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 001a1 45 8b d0 mov r10d, r8d + 001a4 45 8b c8 mov r9d, r8d + 001a7 3b d0 cmp edx, eax + 001a9 72 bc jb SHORT $LL59@stbi__pars +$LN114@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 001ab 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 001af 45 8b c1 mov r8d, r9d + 001b2 48 89 03 mov QWORD PTR [rbx], rax +$LN58@stbi__pars: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 001b5 8b 53 14 mov edx, DWORD PTR [rbx+20] + +; 3709 : z->code_buffer >>= n; + + 001b8 8b cf mov ecx, edi + +; 3710 : z->num_bits -= n; + + 001ba 44 2b c7 sub r8d, edi + 001bd 8b c2 mov eax, edx + 001bf d3 e8 shr eax, cl + 001c1 89 43 14 mov DWORD PTR [rbx+20], eax + 001c4 b8 01 00 00 00 mov eax, 1 + 001c9 d3 e0 shl eax, cl + 001cb ff c8 dec eax + 001cd 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 001d1 23 c2 and eax, edx + +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + + 001d3 03 e8 add ebp, eax +$LN163@stbi__pars: + +; 3736 : if (a->num_bits < 16) { + + 001d5 44 8b 43 10 mov r8d, DWORD PTR [rbx+16] + 001d9 41 83 f8 10 cmp r8d, 16 + 001dd 7d 61 jge SHORT $LN77@stbi__pars + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 001df 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] + 001e3 48 8b 13 mov rdx, QWORD PTR [rbx] + 001e6 49 3b d2 cmp rdx, r10 + +; 3737 : if (stbi__zeof(a)) { + + 001e9 0f 83 c7 01 00 + 00 jae $LN165@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 001ef 44 8b 4b 14 mov r9d, DWORD PTR [rbx+20] + +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + + 001f3 41 8b c8 mov ecx, r8d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 001f6 b8 01 00 00 00 mov eax, 1 + 001fb d3 e0 shl eax, cl + 001fd 44 3b c8 cmp r9d, eax + 00200 73 3b jae SHORT $LN115@stbi__pars +$LL78@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00202 49 3b d2 cmp rdx, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00205 72 04 jb SHORT $LN83@stbi__pars + 00207 32 c0 xor al, al + 00209 eb 09 jmp SHORT $LN84@stbi__pars +$LN83@stbi__pars: + 0020b 0f b6 02 movzx eax, BYTE PTR [rdx] + 0020e 48 ff c2 inc rdx + 00211 48 89 13 mov QWORD PTR [rbx], rdx +$LN84@stbi__pars: + +; 3700 : z->num_bits += 8; + + 00214 44 8d 41 08 lea r8d, DWORD PTR [rcx+8] + 00218 0f b6 c0 movzx eax, al + 0021b d3 e0 shl eax, cl + 0021d 44 0b c8 or r9d, eax + 00220 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 00224 44 89 4b 14 mov DWORD PTR [rbx+20], r9d + +; 3701 : } while (z->num_bits <= 24); + + 00228 41 83 f8 18 cmp r8d, 24 + 0022c 7f 12 jg SHORT $LN77@stbi__pars + 0022e 41 8b c8 mov ecx, r8d + 00231 b8 01 00 00 00 mov eax, 1 + 00236 d3 e0 shl eax, cl + 00238 44 3b c8 cmp r9d, eax + 0023b 72 c5 jb SHORT $LL78@stbi__pars +$LN115@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 0023d 4c 89 13 mov QWORD PTR [rbx], r10 +$LN77@stbi__pars: + +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + + 00240 8b 53 14 mov edx, DWORD PTR [rbx+20] + 00243 8b c2 mov eax, edx + 00245 25 ff 01 00 00 and eax, 511 ; 000001ffH + 0024a 0f b7 84 43 18 + 08 00 00 movzx eax, WORD PTR [rbx+rax*2+2072] + +; 3743 : if (b) { + + 00252 85 c0 test eax, eax + 00254 74 18 je SHORT $LN71@stbi__pars + +; 3744 : s = b >> 9; + + 00256 8b c8 mov ecx, eax + 00258 c1 e9 09 shr ecx, 9 + +; 3745 : a->code_buffer >>= s; + + 0025b d3 ea shr edx, cl + +; 3746 : a->num_bits -= s; + + 0025d 44 2b c1 sub r8d, ecx + 00260 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3747 : return b & 511; + + 00263 25 ff 01 00 00 and eax, 511 ; 000001ffH + 00268 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 0026c eb 0f jmp SHORT $LN68@stbi__pars +$LN71@stbi__pars: + +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); + + 0026e 48 8d 93 18 08 + 00 00 lea rdx, QWORD PTR [rbx+2072] + 00275 48 8b cb mov rcx, rbx + 00278 e8 00 00 00 00 call stbi__zhuffman_decode_slowpath +$LN68@stbi__pars: + +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + + 0027d 83 f8 1d cmp eax, 29 + 00280 0f 87 30 01 00 + 00 ja $LN165@stbi__pars + +; 3814 : dist = stbi__zdist_base[z]; + + 00286 48 98 cdqe + +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + + 00288 45 8b 9c 84 00 + 00 00 00 mov r11d, DWORD PTR stbi__zdist_extra[r12+rax*4] + 00290 45 8b b4 84 00 + 00 00 00 mov r14d, DWORD PTR stbi__zdist_base[r12+rax*4] + 00298 45 85 db test r11d, r11d + 0029b 0f 84 8b 00 00 + 00 je $LN162@stbi__pars + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 002a1 44 8b 43 10 mov r8d, DWORD PTR [rbx+16] + 002a5 45 3b c3 cmp r8d, r11d + 002a8 7d 60 jge SHORT $LN94@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 002aa 8b 53 14 mov edx, DWORD PTR [rbx+20] + 002ad 41 8b c8 mov ecx, r8d + 002b0 b8 01 00 00 00 mov eax, 1 + +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + + 002b5 45 8b c8 mov r9d, r8d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 002b8 d3 e0 shl eax, cl + 002ba 3b d0 cmp edx, eax + 002bc 73 45 jae SHORT $LN116@stbi__pars + 002be 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] +$LL95@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 002c2 48 8b 03 mov rax, QWORD PTR [rbx] + 002c5 49 3b c2 cmp rax, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 002c8 72 04 jb SHORT $LN100@stbi__pars + 002ca 32 c9 xor cl, cl + 002cc eb 09 jmp SHORT $LN101@stbi__pars +$LN100@stbi__pars: + 002ce 0f b6 08 movzx ecx, BYTE PTR [rax] + 002d1 48 ff c0 inc rax + 002d4 48 89 03 mov QWORD PTR [rbx], rax +$LN101@stbi__pars: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 002d7 0f b6 c1 movzx eax, cl + +; 3700 : z->num_bits += 8; + + 002da 45 8d 41 08 lea r8d, DWORD PTR [r9+8] + 002de 41 8b c9 mov ecx, r9d + 002e1 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 002e5 d3 e0 shl eax, cl + 002e7 0b d0 or edx, eax + 002e9 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 002ec 41 83 f8 18 cmp r8d, 24 + 002f0 7f 18 jg SHORT $LN94@stbi__pars + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 002f2 41 8b c8 mov ecx, r8d + 002f5 b8 01 00 00 00 mov eax, 1 + 002fa d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 002fc 45 8b c8 mov r9d, r8d + 002ff 3b d0 cmp edx, eax + 00301 72 bf jb SHORT $LL95@stbi__pars +$LN116@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00303 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 00307 48 89 03 mov QWORD PTR [rbx], rax +$LN94@stbi__pars: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 0030a 8b 53 14 mov edx, DWORD PTR [rbx+20] + +; 3709 : z->code_buffer >>= n; + + 0030d 41 8b cb mov ecx, r11d + +; 3710 : z->num_bits -= n; + + 00310 45 2b c3 sub r8d, r11d + 00313 8b c2 mov eax, edx + 00315 d3 e8 shr eax, cl + 00317 89 43 14 mov DWORD PTR [rbx+20], eax + 0031a b8 01 00 00 00 mov eax, 1 + 0031f d3 e0 shl eax, cl + 00321 ff c8 dec eax + 00323 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 00327 23 c2 and eax, edx + +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + + 00329 44 03 f0 add r14d, eax +$LN162@stbi__pars: + +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); + + 0032c 48 8b c6 mov rax, rsi + 0032f 49 63 fe movsxd rdi, r14d + 00332 48 2b 43 20 sub rax, QWORD PTR [rbx+32] + 00336 48 3b c7 cmp rax, rdi + 00339 0f 8c 9e 00 00 + 00 jl $LN122@stbi__pars + +; 3817 : if (zout + len > a->zout_end) { + + 0033f 48 63 c5 movsxd rax, ebp + 00342 48 03 c6 add rax, rsi + 00345 48 3b 43 28 cmp rax, QWORD PTR [rbx+40] + 00349 76 16 jbe SHORT $LN23@stbi__pars + +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; + + 0034b 44 8b c5 mov r8d, ebp + 0034e 48 8b d6 mov rdx, rsi + 00351 48 8b cb mov rcx, rbx + 00354 e8 00 00 00 00 call stbi__zexpand + 00359 85 c0 test eax, eax + 0035b 74 7c je SHORT $LN123@stbi__pars + +; 3819 : zout = a->zout; + + 0035d 48 8b 73 18 mov rsi, QWORD PTR [rbx+24] +$LN23@stbi__pars: + +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); + + 00361 48 8b ce mov rcx, rsi + 00364 48 2b cf sub rcx, rdi + +; 3822 : if (dist == 1) { // run of one byte; common in images. + + 00367 41 83 fe 01 cmp r14d, 1 + 0036b 75 20 jne SHORT $LN25@stbi__pars + +; 3824 : if (len) { do *zout++ = v; while (--len); } + + 0036d 85 ed test ebp, ebp + 0036f 0f 84 bb fc ff + ff je $LL2@stbi__pars + +; 3823 : stbi_uc v = *p; + + 00375 0f b6 11 movzx edx, BYTE PTR [rcx] + 00378 48 8b ce mov rcx, rsi + 0037b 44 8b c5 mov r8d, ebp + 0037e 8b fd mov edi, ebp + 00380 e8 00 00 00 00 call memset + 00385 48 03 f7 add rsi, rdi + +; 3825 : } + + 00388 e9 a3 fc ff ff jmp $LL2@stbi__pars +$LN25@stbi__pars: + +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } + + 0038d 85 ed test ebp, ebp + 0038f 0f 84 9b fc ff + ff je $LL2@stbi__pars + 00395 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL10@stbi__pars: + 003a0 0f b6 01 movzx eax, BYTE PTR [rcx] + 003a3 48 8d 49 01 lea rcx, QWORD PTR [rcx+1] + 003a7 88 06 mov BYTE PTR [rsi], al + 003a9 48 ff c6 inc rsi + 003ac 83 ed 01 sub ebp, 1 + 003af 75 ef jne SHORT $LL10@stbi__pars + +; 3828 : } +; 3829 : } +; 3830 : } + + 003b1 e9 7a fc ff ff jmp $LL2@stbi__pars +$LN165@stbi__pars: + +; 3831 : } + + 003b6 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 003bc 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 003c5 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 003ca 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 003ce 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 003d5 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN123@stbi__pars: + 003d9 33 c0 xor eax, eax + 003db eb 30 jmp SHORT $LN3@stbi__pars +$LN122@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 003dd 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 003e3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 003ec b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 003f1 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 003f5 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08DIAPIMGJ@bad?5dist@ + 003fc 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); + + 00400 33 c0 xor eax, eax + 00402 eb 09 jmp SHORT $LN3@stbi__pars +$LN119@stbi__pars: + +; 3805 : a->zout = zout; + + 00404 48 89 73 18 mov QWORD PTR [rbx+24], rsi + +; 3806 : return 1; + + 00408 b8 01 00 00 00 mov eax, 1 +$LN3@stbi__pars: + +; 3831 : } + + 0040d 4c 8b 74 24 40 mov r14, QWORD PTR [rsp+64] + 00412 48 8b 5c 24 48 mov rbx, QWORD PTR [rsp+72] + 00417 48 8b 6c 24 50 mov rbp, QWORD PTR [rsp+80] + 0041c 48 8b 74 24 58 mov rsi, QWORD PTR [rsp+88] + 00421 48 83 c4 20 add rsp, 32 ; 00000020H + 00425 41 5f pop r15 + 00427 41 5c pop r12 + 00429 5f pop rdi + 0042a c3 ret 0 +stbi__parse_huffman_block ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__compute_huffman_codes +_TEXT SEGMENT +ntot$1$ = 32 +hlit$1$ = 36 +z_codelength$ = 48 +codelength_sizes$ = 2080 +lencodes$ = 2112 +__$ArrayPad$ = 2576 +a$ = 2640 +stbi__compute_huffman_codes PROC ; COMDAT + +; 3834 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 41 54 push r12 + 00005 41 55 push r13 + 00007 41 57 push r15 + 00009 48 81 ec 20 0a + 00 00 sub rsp, 2592 ; 00000a20H + 00010 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00017 48 33 c4 xor rax, rsp + 0001a 48 89 84 24 10 + 0a 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00022 48 8b d9 mov rbx, rcx + 00025 4c 89 b4 24 68 + 0a 00 00 mov QWORD PTR [rsp+2664], r14 + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 0002d 8b 49 10 mov ecx, DWORD PTR [rcx+16] + 00030 83 f9 05 cmp ecx, 5 + 00033 7d 64 jge SHORT $LN108@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00035 8b 53 14 mov edx, DWORD PTR [rbx+20] + 00038 b8 01 00 00 00 mov eax, 1 + 0003d d3 e0 shl eax, cl + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0003f 44 8b c1 mov r8d, ecx + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00042 44 8b c9 mov r9d, ecx + 00045 3b d0 cmp edx, eax + 00047 73 46 jae SHORT $LN168@stbi__comp + 00049 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] + 0004d 0f 1f 00 npad 3 +$LL109@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00050 48 8b 03 mov rax, QWORD PTR [rbx] + 00053 49 3b c2 cmp rax, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00056 72 04 jb SHORT $LN114@stbi__comp + 00058 32 c9 xor cl, cl + 0005a eb 09 jmp SHORT $LN115@stbi__comp +$LN114@stbi__comp: + 0005c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0005f 48 ff c0 inc rax + 00062 48 89 03 mov QWORD PTR [rbx], rax +$LN115@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00065 0f b6 c1 movzx eax, cl + 00068 41 8b c8 mov ecx, r8d + 0006b d3 e0 shl eax, cl + +; 3700 : z->num_bits += 8; + + 0006d 41 8d 48 08 lea ecx, DWORD PTR [r8+8] + 00071 0b d0 or edx, eax + 00073 89 4b 10 mov DWORD PTR [rbx+16], ecx + 00076 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 00079 83 f9 18 cmp ecx, 24 + 0007c 7f 1b jg SHORT $LN108@stbi__comp + 0007e b8 01 00 00 00 mov eax, 1 + 00083 44 8b c1 mov r8d, ecx + 00086 d3 e0 shl eax, cl + 00088 44 8b c9 mov r9d, ecx + 0008b 3b d0 cmp edx, eax + 0008d 72 c1 jb SHORT $LL109@stbi__comp +$LN168@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 0008f 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 00093 41 8b c9 mov ecx, r9d + 00096 48 89 03 mov QWORD PTR [rbx], rax +$LN108@stbi__comp: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 00099 8b 43 14 mov eax, DWORD PTR [rbx+20] + +; 3710 : z->num_bits -= n; + + 0009c 8d 51 fb lea edx, DWORD PTR [rcx-5] + 0009f 44 8b f8 mov r15d, eax + 000a2 89 53 10 mov DWORD PTR [rbx+16], edx + 000a5 83 e0 1f and eax, 31 + 000a8 41 c1 ef 05 shr r15d, 5 + 000ac 44 89 7b 14 mov DWORD PTR [rbx+20], r15d + +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; + + 000b0 8d a8 01 01 00 + 00 lea ebp, DWORD PTR [rax+257] + 000b6 89 6c 24 24 mov DWORD PTR hlit$1$[rsp], ebp + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 000ba 83 fa 05 cmp edx, 5 + 000bd 7d 74 jge SHORT $LN123@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 000bf 8b ca mov ecx, edx + 000c1 b8 01 00 00 00 mov eax, 1 + 000c6 d3 e0 shl eax, cl + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 000c8 45 8b c7 mov r8d, r15d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 000cb 44 8b ca mov r9d, edx + 000ce 44 8b d2 mov r10d, edx + 000d1 44 3b f8 cmp r15d, eax + 000d4 73 53 jae SHORT $LN169@stbi__comp + 000d6 4c 8b 5b 08 mov r11, QWORD PTR [rbx+8] + 000da 66 0f 1f 44 00 + 00 npad 6 +$LL124@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 000e0 48 8b 03 mov rax, QWORD PTR [rbx] + 000e3 49 3b c3 cmp rax, r11 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 000e6 72 04 jb SHORT $LN129@stbi__comp + 000e8 32 c9 xor cl, cl + 000ea eb 09 jmp SHORT $LN130@stbi__comp +$LN129@stbi__comp: + 000ec 0f b6 08 movzx ecx, BYTE PTR [rax] + 000ef 48 ff c0 inc rax + 000f2 48 89 03 mov QWORD PTR [rbx], rax +$LN130@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 000f5 44 0f b6 f9 movzx r15d, cl + +; 3700 : z->num_bits += 8; + + 000f9 41 8d 52 08 lea edx, DWORD PTR [r10+8] + 000fd 41 8b c9 mov ecx, r9d + 00100 89 53 10 mov DWORD PTR [rbx+16], edx + 00103 41 d3 e7 shl r15d, cl + 00106 45 0b f8 or r15d, r8d + 00109 44 89 7b 14 mov DWORD PTR [rbx+20], r15d + +; 3701 : } while (z->num_bits <= 24); + + 0010d 83 fa 18 cmp edx, 24 + 00110 7f 21 jg SHORT $LN123@stbi__comp + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00112 8b ca mov ecx, edx + 00114 b8 01 00 00 00 mov eax, 1 + 00119 d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 0011b 45 8b c7 mov r8d, r15d + 0011e 44 8b ca mov r9d, edx + 00121 44 8b d2 mov r10d, edx + 00124 44 3b f8 cmp r15d, eax + 00127 72 b7 jb SHORT $LL124@stbi__comp +$LN169@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00129 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 0012d 45 8b f8 mov r15d, r8d + 00130 48 89 03 mov QWORD PTR [rbx], rax +$LN123@stbi__comp: + +; 3709 : z->code_buffer >>= n; + + 00133 45 8b c7 mov r8d, r15d + 00136 48 89 bc 24 60 + 0a 00 00 mov QWORD PTR [rsp+2656], rdi + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 0013e 41 83 e7 1f and r15d, 31 + +; 3709 : z->code_buffer >>= n; + + 00142 41 c1 e8 05 shr r8d, 5 + +; 3710 : z->num_bits -= n; + + 00146 83 c2 fb add edx, -5 + 00149 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; + + 0014d 41 ff c7 inc r15d + +; 3710 : z->num_bits -= n; + + 00150 89 53 10 mov DWORD PTR [rbx+16], edx + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00153 83 fa 04 cmp edx, 4 + 00156 7d 6e jge SHORT $LN138@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00158 8b ca mov ecx, edx + 0015a b8 01 00 00 00 mov eax, 1 + 0015f d3 e0 shl eax, cl + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00161 45 8b c8 mov r9d, r8d + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00164 44 8b d2 mov r10d, edx + 00167 44 8b da mov r11d, edx + 0016a 44 3b c0 cmp r8d, eax + 0016d 73 4d jae SHORT $LN170@stbi__comp + 0016f 48 8b 7b 08 mov rdi, QWORD PTR [rbx+8] +$LL139@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00173 48 8b 03 mov rax, QWORD PTR [rbx] + 00176 48 3b c7 cmp rax, rdi + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00179 72 04 jb SHORT $LN144@stbi__comp + 0017b 32 c9 xor cl, cl + 0017d eb 09 jmp SHORT $LN145@stbi__comp +$LN144@stbi__comp: + 0017f 0f b6 08 movzx ecx, BYTE PTR [rax] + 00182 48 ff c0 inc rax + 00185 48 89 03 mov QWORD PTR [rbx], rax +$LN145@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00188 44 0f b6 c1 movzx r8d, cl + +; 3700 : z->num_bits += 8; + + 0018c 41 8d 53 08 lea edx, DWORD PTR [r11+8] + 00190 41 8b ca mov ecx, r10d + 00193 89 53 10 mov DWORD PTR [rbx+16], edx + 00196 41 d3 e0 shl r8d, cl + 00199 45 0b c1 or r8d, r9d + 0019c 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3701 : } while (z->num_bits <= 24); + + 001a0 83 fa 18 cmp edx, 24 + 001a3 7f 21 jg SHORT $LN138@stbi__comp + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 001a5 8b ca mov ecx, edx + 001a7 b8 01 00 00 00 mov eax, 1 + 001ac d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 001ae 45 8b c8 mov r9d, r8d + 001b1 44 8b d2 mov r10d, edx + 001b4 44 8b da mov r11d, edx + 001b7 44 3b c0 cmp r8d, eax + 001ba 72 b7 jb SHORT $LL139@stbi__comp +$LN170@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 001bc 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 001c0 45 8b c1 mov r8d, r9d + 001c3 48 89 03 mov QWORD PTR [rbx], rax +$LN138@stbi__comp: + +; 3709 : z->code_buffer >>= n; + + 001c6 45 8b c8 mov r9d, r8d + 001c9 48 89 b4 24 58 + 0a 00 00 mov QWORD PTR [rsp+2648], rsi + +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); + + 001d1 33 c0 xor eax, eax + +; 3709 : z->code_buffer >>= n; + + 001d3 41 c1 e9 04 shr r9d, 4 + 001d7 41 83 e0 0f and r8d, 15 + 001db 44 89 4b 14 mov DWORD PTR [rbx+20], r9d + +; 3847 : for (i = 0; i < hclen; ++i) { + + 001df 45 33 ed xor r13d, r13d + 001e2 66 89 84 24 30 + 08 00 00 mov WORD PTR codelength_sizes$[rsp+16], ax + 001ea 41 83 c0 04 add r8d, 4 + 001ee 88 84 24 32 08 + 00 00 mov BYTE PTR codelength_sizes$[rsp+18], al + +; 3710 : z->num_bits -= n; + + 001f5 44 8d 52 fc lea r10d, DWORD PTR [rdx-4] + +; 3847 : for (i = 0; i < hclen; ++i) { + + 001f9 45 8b f0 mov r14d, r8d + 001fc 45 8d 24 2f lea r12d, DWORD PTR [r15+rbp] + +; 3710 : z->num_bits -= n; + + 00200 44 89 53 10 mov DWORD PTR [rbx+16], r10d + 00204 0f 57 c0 xorps xmm0, xmm0 + +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; + + 00207 44 89 64 24 20 mov DWORD PTR ntot$1$[rsp], r12d + +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); + + 0020c 0f 11 84 24 20 + 08 00 00 movups XMMWORD PTR codelength_sizes$[rsp], xmm0 + +; 3847 : for (i = 0; i < hclen; ++i) { + + 00214 0f 84 c3 00 00 + 00 je $LN216@stbi__comp + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 0021a 41 8b ed mov ebp, r13d + 0021d 4c 8d 25 00 00 + 00 00 lea r12, OFFSET FLAT:?length_dezigzag@?1??stbi__compute_huffman_codes@@9@9 + 00224 45 8b c2 mov r8d, r10d +$LL4@stbi__comp: + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00227 41 8b d1 mov edx, r9d + 0022a 41 83 fa 03 cmp r10d, 3 + 0022e 7d 73 jge SHORT $LN63@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00230 41 8b ca mov ecx, r10d + 00233 b8 01 00 00 00 mov eax, 1 + 00238 d3 e0 shl eax, cl + 0023a 41 8b f9 mov edi, r9d + 0023d 45 8b da mov r11d, r10d + 00240 44 3b c8 cmp r9d, eax + 00243 73 54 jae SHORT $LN171@stbi__comp + 00245 48 8b 73 08 mov rsi, QWORD PTR [rbx+8] + 00249 0f 1f 80 00 00 + 00 00 npad 7 +$LL64@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00250 48 8b 03 mov rax, QWORD PTR [rbx] + 00253 48 3b c6 cmp rax, rsi + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00256 72 04 jb SHORT $LN69@stbi__comp + 00258 32 c9 xor cl, cl + 0025a eb 09 jmp SHORT $LN70@stbi__comp +$LN69@stbi__comp: + 0025c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0025f 48 ff c0 inc rax + 00262 48 89 03 mov QWORD PTR [rbx], rax +$LN70@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00265 0f b6 d1 movzx edx, cl + +; 3700 : z->num_bits += 8; + + 00268 45 8d 42 08 lea r8d, DWORD PTR [r10+8] + 0026c 41 8b cb mov ecx, r11d + 0026f 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 00273 d3 e2 shl edx, cl + 00275 0b d7 or edx, edi + 00277 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 0027a 41 83 f8 18 cmp r8d, 24 + 0027e 7f 23 jg SHORT $LN63@stbi__comp + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00280 41 8b c8 mov ecx, r8d + 00283 b8 01 00 00 00 mov eax, 1 + 00288 d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 0028a 45 8b d8 mov r11d, r8d + 0028d 44 8b ca mov r9d, edx + 00290 45 8b d0 mov r10d, r8d + 00293 8b fa mov edi, edx + 00295 3b d0 cmp edx, eax + 00297 72 b7 jb SHORT $LL64@stbi__comp +$LN171@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00299 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 0029d 41 8b d1 mov edx, r9d + 002a0 48 89 03 mov QWORD PTR [rbx], rax +$LN63@stbi__comp: + +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; + + 002a3 41 0f b6 04 2c movzx eax, BYTE PTR [r12+rbp] + +; 3710 : z->num_bits -= n; + + 002a8 41 83 e8 03 sub r8d, 3 + 002ac 44 8b ca mov r9d, edx + 002af 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 002b3 41 c1 e9 03 shr r9d, 3 + 002b7 80 e2 07 and dl, 7 + +; 3847 : for (i = 0; i < hclen; ++i) { + + 002ba 48 ff c5 inc rbp + +; 3709 : z->code_buffer >>= n; + + 002bd 44 89 4b 14 mov DWORD PTR [rbx+20], r9d + +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; + + 002c1 88 94 04 20 08 + 00 00 mov BYTE PTR codelength_sizes$[rsp+rax], dl + +; 3710 : z->num_bits -= n; + + 002c8 45 8b d0 mov r10d, r8d + +; 3847 : for (i = 0; i < hclen; ++i) { + + 002cb 49 3b ee cmp rbp, r14 + 002ce 0f 8c 53 ff ff + ff jl $LL4@stbi__comp + 002d4 44 8b 64 24 20 mov r12d, DWORD PTR ntot$1$[rsp] + 002d9 8b 6c 24 24 mov ebp, DWORD PTR hlit$1$[rsp] +$LN216@stbi__comp: + +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + 002dd 41 b8 13 00 00 + 00 mov r8d, 19 + 002e3 48 8d 94 24 20 + 08 00 00 lea rdx, QWORD PTR codelength_sizes$[rsp] + 002eb 48 8d 4c 24 30 lea rcx, QWORD PTR z_codelength$[rsp] + 002f0 e8 00 00 00 00 call stbi__zbuild_huffman + 002f5 4c 8b b4 24 68 + 0a 00 00 mov r14, QWORD PTR [rsp+2664] + 002fd 85 c0 test eax, eax + 002ff 0f 84 2e 03 00 + 00 je $LN218@stbi__comp + +; 3852 : +; 3853 : n = 0; + + 00305 41 8b f5 mov esi, r13d + 00308 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL5@stbi__comp: + +; 3736 : if (a->num_bits < 16) { + + 00310 44 8b 43 10 mov r8d, DWORD PTR [rbx+16] + 00314 41 83 f8 10 cmp r8d, 16 + 00318 7d 67 jge SHORT $LN33@stbi__comp + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0031a 48 8b 13 mov rdx, QWORD PTR [rbx] + 0031d 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] + 00321 49 3b d2 cmp rdx, r10 + +; 3737 : if (stbi__zeof(a)) { + + 00324 0f 83 e6 02 00 + 00 jae $LN9@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0032a 44 8b 4b 14 mov r9d, DWORD PTR [rbx+20] + 0032e 41 8b c8 mov ecx, r8d + 00331 b8 01 00 00 00 mov eax, 1 + 00336 d3 e0 shl eax, cl + 00338 44 3b c8 cmp r9d, eax + 0033b 73 41 jae SHORT $LN217@stbi__comp + 0033d 0f 1f 00 npad 3 +$LL34@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00340 49 3b d2 cmp rdx, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00343 72 04 jb SHORT $LN39@stbi__comp + 00345 32 c0 xor al, al + 00347 eb 09 jmp SHORT $LN40@stbi__comp +$LN39@stbi__comp: + 00349 0f b6 02 movzx eax, BYTE PTR [rdx] + 0034c 48 ff c2 inc rdx + 0034f 48 89 13 mov QWORD PTR [rbx], rdx +$LN40@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00352 41 8b c8 mov ecx, r8d + 00355 0f b6 c0 movzx eax, al + 00358 d3 e0 shl eax, cl + +; 3700 : z->num_bits += 8; + + 0035a 41 83 c0 08 add r8d, 8 + 0035e 44 0b c8 or r9d, eax + 00361 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 00365 44 89 4b 14 mov DWORD PTR [rbx+20], r9d + +; 3701 : } while (z->num_bits <= 24); + + 00369 41 83 f8 18 cmp r8d, 24 + 0036d 7f 12 jg SHORT $LN33@stbi__comp + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0036f 41 8b c8 mov ecx, r8d + 00372 b8 01 00 00 00 mov eax, 1 + 00377 d3 e0 shl eax, cl + 00379 44 3b c8 cmp r9d, eax + 0037c 72 c2 jb SHORT $LL34@stbi__comp +$LN217@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 0037e 4c 89 13 mov QWORD PTR [rbx], r10 +$LN33@stbi__comp: + +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + + 00381 8b 53 14 mov edx, DWORD PTR [rbx+20] + 00384 8b c2 mov eax, edx + 00386 25 ff 01 00 00 and eax, 511 ; 000001ffH + 0038b 0f b7 44 44 30 movzx eax, WORD PTR z_codelength$[rsp+rax*2] + +; 3743 : if (b) { + + 00390 85 c0 test eax, eax + 00392 74 18 je SHORT $LN27@stbi__comp + +; 3744 : s = b >> 9; + + 00394 8b c8 mov ecx, eax + 00396 c1 e9 09 shr ecx, 9 + +; 3745 : a->code_buffer >>= s; + + 00399 d3 ea shr edx, cl + +; 3746 : a->num_bits -= s; + + 0039b 44 2b c1 sub r8d, ecx + 0039e 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3747 : return b & 511; + + 003a1 25 ff 01 00 00 and eax, 511 ; 000001ffH + 003a6 44 89 43 10 mov DWORD PTR [rbx+16], r8d + 003aa eb 0d jmp SHORT $LN24@stbi__comp +$LN27@stbi__comp: + +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); + + 003ac 48 8d 54 24 30 lea rdx, QWORD PTR z_codelength$[rsp] + 003b1 48 8b cb mov rcx, rbx + 003b4 e8 00 00 00 00 call stbi__zhuffman_decode_slowpath +$LN24@stbi__comp: + +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + + 003b9 83 f8 12 cmp eax, 18 + 003bc 0f 87 4e 02 00 + 00 ja $LN9@stbi__comp + +; 3857 : if (c < 16) + + 003c2 83 f8 10 cmp eax, 16 + 003c5 7d 14 jge SHORT $LN10@stbi__comp + +; 3858 : lencodes[n++] = (stbi_uc)c; + + 003c7 48 63 ce movsxd rcx, esi + 003ca bf 01 00 00 00 mov edi, 1 + 003cf 88 84 0c 40 08 + 00 00 mov BYTE PTR lencodes$[rsp+rcx], al + 003d6 e9 e9 01 00 00 jmp $LN11@stbi__comp +$LN10@stbi__comp: + +; 3859 : else { +; 3860 : stbi_uc fill = 0; + + 003db 45 32 db xor r11b, r11b + +; 3861 : if (c == 16) { + + 003de 83 f8 10 cmp eax, 16 + 003e1 0f 85 99 00 00 + 00 jne $LN12@stbi__comp + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 003e7 8b 4b 10 mov ecx, DWORD PTR [rbx+16] + 003ea 83 f9 02 cmp ecx, 2 + 003ed 7d 61 jge SHORT $LN48@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 003ef 8b 53 14 mov edx, DWORD PTR [rbx+20] + 003f2 b8 01 00 00 00 mov eax, 1 + 003f7 d3 e0 shl eax, cl + 003f9 44 8b c9 mov r9d, ecx + 003fc 44 8b c1 mov r8d, ecx + 003ff 3b d0 cmp edx, eax + 00401 73 43 jae SHORT $LN173@stbi__comp + 00403 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] +$LL49@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00407 48 8b 03 mov rax, QWORD PTR [rbx] + 0040a 49 3b c2 cmp rax, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0040d 72 04 jb SHORT $LN54@stbi__comp + 0040f 32 c9 xor cl, cl + 00411 eb 09 jmp SHORT $LN55@stbi__comp +$LN54@stbi__comp: + 00413 0f b6 08 movzx ecx, BYTE PTR [rax] + 00416 48 ff c0 inc rax + 00419 48 89 03 mov QWORD PTR [rbx], rax +$LN55@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 0041c 0f b6 c1 movzx eax, cl + 0041f 41 8b c9 mov ecx, r9d + 00422 d3 e0 shl eax, cl + +; 3700 : z->num_bits += 8; + + 00424 41 8d 49 08 lea ecx, DWORD PTR [r9+8] + 00428 0b d0 or edx, eax + 0042a 89 4b 10 mov DWORD PTR [rbx+16], ecx + 0042d 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 00430 83 f9 18 cmp ecx, 24 + 00433 7f 1b jg SHORT $LN48@stbi__comp + 00435 b8 01 00 00 00 mov eax, 1 + 0043a 44 8b c9 mov r9d, ecx + 0043d d3 e0 shl eax, cl + 0043f 44 8b c1 mov r8d, ecx + 00442 3b d0 cmp edx, eax + 00444 72 c1 jb SHORT $LL49@stbi__comp +$LN173@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00446 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 0044a 41 8b c8 mov ecx, r8d + 0044d 48 89 03 mov QWORD PTR [rbx], rax +$LN48@stbi__comp: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 00450 8b 7b 14 mov edi, DWORD PTR [rbx+20] + +; 3709 : z->code_buffer >>= n; + + 00453 8b c7 mov eax, edi + 00455 c1 e8 02 shr eax, 2 + 00458 83 e7 03 and edi, 3 + 0045b 89 43 14 mov DWORD PTR [rbx+20], eax + +; 3862 : c = stbi__zreceive(a, 2) + 3; + + 0045e 83 c7 03 add edi, 3 + +; 3710 : z->num_bits -= n; + + 00461 8d 41 fe lea eax, DWORD PTR [rcx-2] + 00464 89 43 10 mov DWORD PTR [rbx+16], eax + +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + + 00467 85 f6 test esi, esi + 00469 0f 84 a1 01 00 + 00 je $LN9@stbi__comp + +; 3864 : fill = lencodes[n - 1]; + + 0046f 48 63 c6 movsxd rax, esi + 00472 44 0f b6 9c 04 + 3f 08 00 00 movzx r11d, BYTE PTR lencodes$[rsp+rax-1] + +; 3865 : } + + 0047b e9 21 01 00 00 jmp $LN18@stbi__comp +$LN12@stbi__comp: + +; 3866 : else if (c == 17) { + + 00480 83 f8 11 cmp eax, 17 + 00483 0f 85 8a 00 00 + 00 jne $LN15@stbi__comp + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00489 8b 4b 10 mov ecx, DWORD PTR [rbx+16] + 0048c 83 f9 03 cmp ecx, 3 + 0048f 7d 69 jge SHORT $LN78@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00491 44 8b 43 14 mov r8d, DWORD PTR [rbx+20] + 00495 b8 01 00 00 00 mov eax, 1 + 0049a d3 e0 shl eax, cl + 0049c 44 8b c9 mov r9d, ecx + 0049f 8b d1 mov edx, ecx + 004a1 44 3b c0 cmp r8d, eax + 004a4 73 4b jae SHORT $LN174@stbi__comp + 004a6 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] + 004aa 66 0f 1f 44 00 + 00 npad 6 +$LL79@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 004b0 48 8b 03 mov rax, QWORD PTR [rbx] + 004b3 49 3b c2 cmp rax, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 004b6 72 04 jb SHORT $LN84@stbi__comp + 004b8 32 c9 xor cl, cl + 004ba eb 09 jmp SHORT $LN85@stbi__comp +$LN84@stbi__comp: + 004bc 0f b6 08 movzx ecx, BYTE PTR [rax] + 004bf 48 ff c0 inc rax + 004c2 48 89 03 mov QWORD PTR [rbx], rax +$LN85@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 004c5 0f b6 c1 movzx eax, cl + 004c8 41 8b c9 mov ecx, r9d + 004cb d3 e0 shl eax, cl + +; 3700 : z->num_bits += 8; + + 004cd 41 8d 49 08 lea ecx, DWORD PTR [r9+8] + 004d1 44 0b c0 or r8d, eax + 004d4 89 4b 10 mov DWORD PTR [rbx+16], ecx + 004d7 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3701 : } while (z->num_bits <= 24); + + 004db 83 f9 18 cmp ecx, 24 + 004de 7f 1a jg SHORT $LN78@stbi__comp + 004e0 b8 01 00 00 00 mov eax, 1 + 004e5 44 8b c9 mov r9d, ecx + 004e8 d3 e0 shl eax, cl + 004ea 8b d1 mov edx, ecx + 004ec 44 3b c0 cmp r8d, eax + 004ef 72 bf jb SHORT $LL79@stbi__comp +$LN174@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 004f1 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 004f5 8b ca mov ecx, edx + 004f7 48 89 03 mov QWORD PTR [rbx], rax +$LN78@stbi__comp: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 004fa 8b 7b 14 mov edi, DWORD PTR [rbx+20] + +; 3709 : z->code_buffer >>= n; + + 004fd 8b c7 mov eax, edi + 004ff c1 e8 03 shr eax, 3 + 00502 83 e7 07 and edi, 7 + 00505 89 43 14 mov DWORD PTR [rbx+20], eax + +; 3867 : c = stbi__zreceive(a, 3) + 3; + + 00508 83 c7 03 add edi, 3 + +; 3710 : z->num_bits -= n; + + 0050b 8d 41 fd lea eax, DWORD PTR [rcx-3] + +; 3868 : } + + 0050e e9 8b 00 00 00 jmp $LN273@stbi__comp +$LN15@stbi__comp: + +; 3869 : else if (c == 18) { + + 00513 83 f8 12 cmp eax, 18 + 00516 0f 85 f4 00 00 + 00 jne $LN9@stbi__comp + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 0051c 8b 4b 10 mov ecx, DWORD PTR [rbx+16] + 0051f 83 f9 07 cmp ecx, 7 + 00522 7d 66 jge SHORT $LN93@stbi__comp + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00524 44 8b 43 14 mov r8d, DWORD PTR [rbx+20] + 00528 b8 01 00 00 00 mov eax, 1 + 0052d d3 e0 shl eax, cl + 0052f 44 8b c9 mov r9d, ecx + 00532 8b d1 mov edx, ecx + 00534 44 3b c0 cmp r8d, eax + 00537 73 48 jae SHORT $LN175@stbi__comp + 00539 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] + 0053d 0f 1f 00 npad 3 +$LL94@stbi__comp: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00540 48 8b 03 mov rax, QWORD PTR [rbx] + 00543 49 3b c2 cmp rax, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00546 72 04 jb SHORT $LN99@stbi__comp + 00548 32 c9 xor cl, cl + 0054a eb 09 jmp SHORT $LN100@stbi__comp +$LN99@stbi__comp: + 0054c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0054f 48 ff c0 inc rax + 00552 48 89 03 mov QWORD PTR [rbx], rax +$LN100@stbi__comp: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00555 0f b6 c1 movzx eax, cl + 00558 41 8b c9 mov ecx, r9d + 0055b d3 e0 shl eax, cl + +; 3700 : z->num_bits += 8; + + 0055d 41 8d 49 08 lea ecx, DWORD PTR [r9+8] + 00561 44 0b c0 or r8d, eax + 00564 89 4b 10 mov DWORD PTR [rbx+16], ecx + 00567 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3701 : } while (z->num_bits <= 24); + + 0056b 83 f9 18 cmp ecx, 24 + 0056e 7f 1a jg SHORT $LN93@stbi__comp + 00570 b8 01 00 00 00 mov eax, 1 + 00575 44 8b c9 mov r9d, ecx + 00578 d3 e0 shl eax, cl + 0057a 8b d1 mov edx, ecx + 0057c 44 3b c0 cmp r8d, eax + 0057f 72 bf jb SHORT $LL94@stbi__comp +$LN175@stbi__comp: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00581 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 00585 8b ca mov ecx, edx + 00587 48 89 03 mov QWORD PTR [rbx], rax +$LN93@stbi__comp: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 0058a 8b 7b 14 mov edi, DWORD PTR [rbx+20] + +; 3709 : z->code_buffer >>= n; + + 0058d 8b c7 mov eax, edi + 0058f c1 e8 07 shr eax, 7 + 00592 83 e7 7f and edi, 127 ; 0000007fH + 00595 89 43 14 mov DWORD PTR [rbx+20], eax + +; 3870 : c = stbi__zreceive(a, 7) + 11; + + 00598 83 c7 0b add edi, 11 + +; 3710 : z->num_bits -= n; + + 0059b 8d 41 f9 lea eax, DWORD PTR [rcx-7] +$LN273@stbi__comp: + +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + + 0059e 89 43 10 mov DWORD PTR [rbx+16], eax +$LN18@stbi__comp: + 005a1 41 8b c4 mov eax, r12d + 005a4 2b c6 sub eax, esi + 005a6 3b c7 cmp eax, edi + 005a8 7c 66 jl SHORT $LN9@stbi__comp + +; 3876 : memset(lencodes + n, fill, c); + + 005aa 48 63 c6 movsxd rax, esi + 005ad 48 8d 8c 24 40 + 08 00 00 lea rcx, QWORD PTR lencodes$[rsp] + 005b5 48 03 c8 add rcx, rax + 005b8 44 8b c7 mov r8d, edi + 005bb 41 0f b6 d3 movzx edx, r11b + 005bf e8 00 00 00 00 call memset +$LN11@stbi__comp: + +; 3854 : while (n < ntot) { + + 005c4 03 f7 add esi, edi + 005c6 41 3b f4 cmp esi, r12d + 005c9 0f 8c 41 fd ff + ff jl $LL5@stbi__comp + +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); + + 005cf 75 3f jne SHORT $LN9@stbi__comp + +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + + 005d1 48 8d 4b 34 lea rcx, QWORD PTR [rbx+52] + 005d5 44 8b c5 mov r8d, ebp + 005d8 48 8d 94 24 40 + 08 00 00 lea rdx, QWORD PTR lencodes$[rsp] + 005e0 e8 00 00 00 00 call stbi__zbuild_huffman + 005e5 85 c0 test eax, eax + 005e7 74 4a je SHORT $LN218@stbi__comp + +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; + + 005e9 8b cd mov ecx, ebp + 005eb 48 8d 94 24 40 + 08 00 00 lea rdx, QWORD PTR lencodes$[rsp] + 005f3 48 03 d1 add rdx, rcx + 005f6 45 8b c7 mov r8d, r15d + 005f9 48 8d 8b 18 08 + 00 00 lea rcx, QWORD PTR [rbx+2072] + 00600 e8 00 00 00 00 call stbi__zbuild_huffman + 00605 85 c0 test eax, eax + 00607 41 0f 95 c5 setne r13b + 0060b 41 8b c5 mov eax, r13d + 0060e eb 25 jmp SHORT $LN1@stbi__comp +$LN9@stbi__comp: + +; 3883 : return 1; +; 3884 : } + + 00610 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00616 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0061f b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00624 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00628 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@ + 0062f 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN218@stbi__comp: + 00633 33 c0 xor eax, eax +$LN1@stbi__comp: + 00635 48 8b bc 24 60 + 0a 00 00 mov rdi, QWORD PTR [rsp+2656] + 0063d 48 8b b4 24 58 + 0a 00 00 mov rsi, QWORD PTR [rsp+2648] + 00645 48 8b 8c 24 10 + 0a 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0064d 48 33 cc xor rcx, rsp + 00650 e8 00 00 00 00 call __security_check_cookie + 00655 48 81 c4 20 0a + 00 00 add rsp, 2592 ; 00000a20H + 0065c 41 5f pop r15 + 0065e 41 5d pop r13 + 00660 41 5c pop r12 + 00662 5d pop rbp + 00663 5b pop rbx + 00664 c3 ret 0 +stbi__compute_huffman_codes ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__parse_uncompressed_block +_TEXT SEGMENT +header$ = 48 +a$ = 48 +stbi__parse_uncompressed_block PROC ; COMDAT + +; 3887 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) + + 0000a 8b 51 10 mov edx, DWORD PTR [rcx+16] + 0000d 48 8b d9 mov rbx, rcx + 00010 8b fa mov edi, edx + 00012 83 e7 07 and edi, 7 + 00015 74 7d je SHORT $LN56@stbi__pars + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00017 3b d7 cmp edx, edi + 00019 7d 6a jge SHORT $LN18@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0001b 44 8b 41 14 mov r8d, DWORD PTR [rcx+20] + 0001f b8 01 00 00 00 mov eax, 1 + 00024 8b ca mov ecx, edx + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00026 44 8b d2 mov r10d, edx + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00029 d3 e0 shl eax, cl + 0002b 44 8b ca mov r9d, edx + 0002e 44 3b c0 cmp r8d, eax + 00031 73 48 jae SHORT $LN43@stbi__pars + 00033 4c 8b 5b 08 mov r11, QWORD PTR [rbx+8] +$LL19@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00037 48 8b 03 mov rax, QWORD PTR [rbx] + 0003a 49 3b c3 cmp rax, r11 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0003d 72 04 jb SHORT $LN24@stbi__pars + 0003f 32 c9 xor cl, cl + 00041 eb 09 jmp SHORT $LN25@stbi__pars +$LN24@stbi__pars: + 00043 0f b6 08 movzx ecx, BYTE PTR [rax] + 00046 48 ff c0 inc rax + 00049 48 89 03 mov QWORD PTR [rbx], rax +$LN25@stbi__pars: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 0004c 0f b6 c1 movzx eax, cl + +; 3700 : z->num_bits += 8; + + 0004f 41 8d 52 08 lea edx, DWORD PTR [r10+8] + 00053 41 8b ca mov ecx, r10d + 00056 89 53 10 mov DWORD PTR [rbx+16], edx + 00059 d3 e0 shl eax, cl + 0005b 44 0b c0 or r8d, eax + 0005e 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3701 : } while (z->num_bits <= 24); + + 00062 83 fa 18 cmp edx, 24 + 00065 7f 1e jg SHORT $LN18@stbi__pars + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00067 8b ca mov ecx, edx + 00069 b8 01 00 00 00 mov eax, 1 + 0006e d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 00070 44 8b d2 mov r10d, edx + 00073 44 8b ca mov r9d, edx + 00076 44 3b c0 cmp r8d, eax + 00079 72 bc jb SHORT $LL19@stbi__pars +$LN43@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 0007b 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 0007f 41 8b d1 mov edx, r9d + 00082 48 89 03 mov QWORD PTR [rbx], rax +$LN18@stbi__pars: + +; 3709 : z->code_buffer >>= n; + + 00085 8b 43 14 mov eax, DWORD PTR [rbx+20] + 00088 8b cf mov ecx, edi + 0008a d3 e8 shr eax, cl + +; 3710 : z->num_bits -= n; + + 0008c 2b d7 sub edx, edi + 0008e 89 43 14 mov DWORD PTR [rbx+20], eax + 00091 89 53 10 mov DWORD PTR [rbx+16], edx +$LN56@stbi__pars: + +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; + + 00094 45 33 c0 xor r8d, r8d + 00097 8b c2 mov eax, edx + +; 3894 : while (a->num_bits > 0) { + + 00099 85 d2 test edx, edx + 0009b 7e 31 jle SHORT $LN3@stbi__pars + 0009d 8b 4b 14 mov ecx, DWORD PTR [rbx+20] + 000a0 48 8d 54 24 30 lea rdx, QWORD PTR header$[rsp] + +; 3710 : z->num_bits -= n; + + 000a5 44 0f b6 c9 movzx r9d, cl + 000a9 0f 1f 80 00 00 + 00 00 npad 7 +$LL2@stbi__pars: + +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; + + 000b0 c1 e9 08 shr ecx, 8 + 000b3 41 ff c0 inc r8d + 000b6 44 88 0a mov BYTE PTR [rdx], r9b + 000b9 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + +; 3897 : a->num_bits -= 8; + + 000bd 83 e8 08 sub eax, 8 + 000c0 89 4b 14 mov DWORD PTR [rbx+20], ecx + 000c3 44 0f b6 c9 movzx r9d, cl + 000c7 85 c0 test eax, eax + 000c9 7f e5 jg SHORT $LL2@stbi__pars + 000cb 89 43 10 mov DWORD PTR [rbx+16], eax +$LN3@stbi__pars: + +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); + + 000ce 85 c0 test eax, eax + 000d0 79 30 jns SHORT $LN42@stbi__pars +$LN72@stbi__pars: + +; 3913 : } + + 000d2 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000d8 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000e1 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000e6 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000ea 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@IECDHMDI@zlib?5corrupt@ + 000f1 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN73@stbi__pars: + 000f5 33 c0 xor eax, eax + 000f7 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 000fc 48 83 c4 20 add rsp, 32 ; 00000020H + 00100 5f pop rdi + 00101 c3 ret 0 +$LN42@stbi__pars: + 00102 49 63 c8 movsxd rcx, r8d + +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) + + 00105 48 83 f9 04 cmp rcx, 4 + 00109 7d 26 jge SHORT $LN50@stbi__pars + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0010b 4c 8b 43 08 mov r8, QWORD PTR [rbx+8] + 0010f 48 8b 03 mov rax, QWORD PTR [rbx] +$LL4@stbi__pars: + 00112 49 3b c0 cmp rax, r8 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00115 72 04 jb SHORT $LN32@stbi__pars + 00117 32 d2 xor dl, dl + 00119 eb 09 jmp SHORT $LN33@stbi__pars +$LN32@stbi__pars: + 0011b 0f b6 10 movzx edx, BYTE PTR [rax] + 0011e 48 ff c0 inc rax + 00121 48 89 03 mov QWORD PTR [rbx], rax +$LN33@stbi__pars: + +; 3902 : header[k++] = stbi__zget8(a); + + 00124 88 54 0c 30 mov BYTE PTR header$[rsp+rcx], dl + 00128 48 ff c1 inc rcx + 0012b 48 83 f9 04 cmp rcx, 4 + 0012f 7c e1 jl SHORT $LL4@stbi__pars +$LN50@stbi__pars: + +; 3903 : len = header[1] * 256 + header[0]; + + 00131 0f b6 44 24 30 movzx eax, BYTE PTR header$[rsp] + 00136 44 0f b6 44 24 + 31 movzx r8d, BYTE PTR header$[rsp+1] + +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); + + 0013c 0f b6 4c 24 33 movzx ecx, BYTE PTR header$[rsp+3] + 00141 41 c1 e0 08 shl r8d, 8 + 00145 44 03 c0 add r8d, eax + 00148 c1 e1 08 shl ecx, 8 + 0014b 0f b6 44 24 32 movzx eax, BYTE PTR header$[rsp+2] + 00150 03 c8 add ecx, eax + 00152 41 8b c0 mov eax, r8d + 00155 35 ff ff 00 00 xor eax, 65535 ; 0000ffffH + 0015a 3b c8 cmp ecx, eax + 0015c 0f 85 70 ff ff + ff jne $LN72@stbi__pars + +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); + + 00162 48 8b 0b mov rcx, QWORD PTR [rbx] + 00165 41 8b f8 mov edi, r8d + 00168 48 03 cf add rcx, rdi + 0016b 48 3b 4b 08 cmp rcx, QWORD PTR [rbx+8] + 0016f 76 30 jbe SHORT $LN9@stbi__pars + +; 431 : stbi__g_failure_reason = str; + + 00171 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00177 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00180 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00185 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00189 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@PIPBCKIA@read?5past?5buffer@ + 00190 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); + + 00194 33 c0 xor eax, eax + +; 3913 : } + + 00196 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 0019b 48 83 c4 20 add rsp, 32 ; 00000020H + 0019f 5f pop rdi + 001a0 c3 ret 0 +$LN9@stbi__pars: + +; 3907 : if (a->zout + len > a->zout_end) + + 001a1 48 8b 53 18 mov rdx, QWORD PTR [rbx+24] + 001a5 49 8d 04 10 lea rax, QWORD PTR [r8+rdx] + 001a9 48 3b 43 28 cmp rax, QWORD PTR [rbx+40] + 001ad 76 10 jbe SHORT $LN57@stbi__pars + +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; + + 001af 48 8b cb mov rcx, rbx + 001b2 e8 00 00 00 00 call stbi__zexpand + 001b7 85 c0 test eax, eax + 001b9 0f 84 36 ff ff + ff je $LN73@stbi__pars +$LN57@stbi__pars: + +; 3909 : memcpy(a->zout, a->zbuffer, len); + + 001bf 48 8b 13 mov rdx, QWORD PTR [rbx] + 001c2 4c 8b c7 mov r8, rdi + 001c5 48 8b 4b 18 mov rcx, QWORD PTR [rbx+24] + 001c9 e8 00 00 00 00 call memcpy + +; 3910 : a->zbuffer += len; + + 001ce 48 01 3b add QWORD PTR [rbx], rdi + +; 3911 : a->zout += len; +; 3912 : return 1; + + 001d1 b8 01 00 00 00 mov eax, 1 + 001d6 48 01 7b 18 add QWORD PTR [rbx+24], rdi + +; 3913 : } + + 001da 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 001df 48 83 c4 20 add rsp, 32 ; 00000020H + 001e3 5f pop rdi + 001e4 c3 ret 0 +stbi__parse_uncompressed_block ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__parse_zlib_header +_TEXT SEGMENT +a$ = 8 +stbi__parse_zlib_header PROC ; COMDAT + +; 3916 : { + + 00000 48 8b d1 mov rdx, rcx + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00003 48 8b 09 mov rcx, QWORD PTR [rcx] + 00006 4c 8b 4a 08 mov r9, QWORD PTR [rdx+8] + 0000a 49 3b c9 cmp rcx, r9 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0000d 0f 83 b1 00 00 + 00 jae $LN29@stbi__pars + 00013 0f b6 01 movzx eax, BYTE PTR [rcx] + 00016 4c 8d 51 01 lea r10, QWORD PTR [rcx+1] + +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; + + 0001a 44 8b d8 mov r11d, eax + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0001d 4c 89 12 mov QWORD PTR [rdx], r10 + +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; + + 00020 41 83 e3 0f and r11d, 15 + 00024 44 8b c0 mov r8d, eax + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00027 4d 3b d1 cmp r10, r9 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0002a 0f 83 94 00 00 + 00 jae $LN29@stbi__pars + 00030 41 0f b6 0a movzx ecx, BYTE PTR [r10] + 00034 49 8d 42 01 lea rax, QWORD PTR [r10+1] + 00038 48 89 02 mov QWORD PTR [rdx], rax + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0003b 49 3b c1 cmp rax, r9 + +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + + 0003e 0f 83 80 00 00 + 00 jae $LN29@stbi__pars + +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + + 00044 41 c1 e0 08 shl r8d, 8 + 00048 b8 85 10 42 08 mov eax, 138547333 ; 08421085H + 0004d 44 03 c1 add r8d, ecx + 00050 41 f7 e0 mul r8d + 00053 41 8b c0 mov eax, r8d + 00056 2b c2 sub eax, edx + 00058 d1 e8 shr eax, 1 + 0005a 03 c2 add eax, edx + 0005c c1 e8 04 shr eax, 4 + 0005f 6b c0 1f imul eax, eax, 31 + 00062 44 3b c0 cmp r8d, eax + 00065 75 5d jne SHORT $LN29@stbi__pars + +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png + + 00067 f6 c1 20 test cl, 32 ; 00000020H + 0006a 74 26 je SHORT $LN4@stbi__pars + +; 431 : stbi__g_failure_reason = str; + + 0006c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00072 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + +; 3927 : } + + 0007b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + +; 431 : stbi__g_failure_reason = str; + + 00080 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00084 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@DOGMHEBI@no?5preset?5dict@ + +; 3927 : } + + 0008b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 0008f 33 c0 xor eax, eax + 00091 c3 ret 0 +$LN4@stbi__pars: + +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png + + 00092 41 83 fb 08 cmp r11d, 8 + 00096 74 26 je SHORT $LN5@stbi__pars + +; 431 : stbi__g_failure_reason = str; + + 00098 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0009e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + +; 3927 : } + + 000a7 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + +; 431 : stbi__g_failure_reason = str; + + 000ac 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000b0 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@ + +; 3927 : } + + 000b7 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 000bb 33 c0 xor eax, eax + 000bd c3 ret 0 +$LN5@stbi__pars: + +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; + + 000be b8 01 00 00 00 mov eax, 1 + +; 3927 : } + + 000c3 c3 ret 0 +$LN29@stbi__pars: + 000c4 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000ca 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000d3 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000d8 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000dc 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ + 000e3 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 000e7 33 c0 xor eax, eax + 000e9 c3 ret 0 +stbi__parse_zlib_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__parse_zlib +_TEXT SEGMENT +a$ = 48 +parse_header$ = 56 +stbi__parse_zlib PROC ; COMDAT + +; 3959 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 48 89 7c 24 18 mov QWORD PTR [rsp+24], rdi + 0000f 41 56 push r14 + 00011 48 83 ec 20 sub rsp, 32 ; 00000020H + 00015 48 8b d9 mov rbx, rcx + +; 3960 : int final, type; +; 3961 : if (parse_header) + + 00018 85 d2 test edx, edx + 0001a 0f 84 de 00 00 + 00 je $LN98@stbi__pars + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00020 48 8b 11 mov rdx, QWORD PTR [rcx] + 00023 4c 8b 49 08 mov r9, QWORD PTR [rcx+8] + 00027 49 3b d1 cmp rdx, r9 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0002a 73 4a jae SHORT $LN100@stbi__pars + 0002c 0f b6 02 movzx eax, BYTE PTR [rdx] + 0002f 48 ff c2 inc rdx + +; 3918 : int cm = cmf & 15; + + 00032 44 8b d0 mov r10d, eax + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00035 48 89 11 mov QWORD PTR [rcx], rdx + +; 3918 : int cm = cmf & 15; + + 00038 41 83 e2 0f and r10d, 15 + 0003c 44 8b c0 mov r8d, eax + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0003f 49 3b d1 cmp rdx, r9 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 00042 73 32 jae SHORT $LN100@stbi__pars + 00044 0f b6 0a movzx ecx, BYTE PTR [rdx] + 00047 48 8d 42 01 lea rax, QWORD PTR [rdx+1] + 0004b 48 89 03 mov QWORD PTR [rbx], rax + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 0004e 49 3b c1 cmp rax, r9 + +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + + 00051 73 23 jae SHORT $LN100@stbi__pars + +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + + 00053 41 c1 e0 08 shl r8d, 8 + 00057 b8 85 10 42 08 mov eax, 138547333 ; 08421085H + 0005c 44 03 c1 add r8d, ecx + 0005f 41 f7 e0 mul r8d + 00062 41 8b c0 mov eax, r8d + 00065 2b c2 sub eax, edx + 00067 d1 e8 shr eax, 1 + 00069 03 c2 add eax, edx + 0006b c1 e8 04 shr eax, 4 + 0006e 6b c0 1f imul eax, eax, 31 + 00071 44 3b c0 cmp r8d, eax + 00074 74 3b je SHORT $LN21@stbi__pars +$LN100@stbi__pars: + +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; + + 00076 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0007c 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00085 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0008a 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0008e 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ +$LN126@stbi__pars: + 00095 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN88@stbi__pars: + 00099 33 c0 xor eax, eax +$LN1@stbi__pars: + +; 3987 : } + + 0009b 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000a0 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 000a5 48 8b 7c 24 40 mov rdi, QWORD PTR [rsp+64] + 000aa 48 83 c4 20 add rsp, 32 ; 00000020H + 000ae 41 5e pop r14 + 000b0 c3 ret 0 +$LN21@stbi__pars: + +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png + + 000b1 f6 c1 20 test cl, 32 ; 00000020H + 000b4 74 21 je SHORT $LN22@stbi__pars + +; 431 : stbi__g_failure_reason = str; + + 000b6 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000bc 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000c5 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000ca 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000ce 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@DOGMHEBI@no?5preset?5dict@ + +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png + + 000d5 eb be jmp SHORT $LN126@stbi__pars +$LN22@stbi__pars: + +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png + + 000d7 41 83 fa 08 cmp r10d, 8 + 000db 74 21 je SHORT $LN98@stbi__pars + +; 431 : stbi__g_failure_reason = str; + + 000dd 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000e3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000ec b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000f1 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000f5 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@ + +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png + + 000fc eb 97 jmp SHORT $LN126@stbi__pars +$LN98@stbi__pars: + +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; + + 000fe 33 c0 xor eax, eax + 00100 48 89 43 10 mov QWORD PTR [rbx+16], rax +$LL4@stbi__pars: + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00104 8b 4b 10 mov ecx, DWORD PTR [rbx+16] + 00107 83 f9 01 cmp ecx, 1 + 0010a 7d 61 jge SHORT $LN52@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 0010c 8b 53 14 mov edx, DWORD PTR [rbx+20] + 0010f b8 01 00 00 00 mov eax, 1 + 00114 d3 e0 shl eax, cl + 00116 44 8b c1 mov r8d, ecx + 00119 44 8b c9 mov r9d, ecx + 0011c 3b d0 cmp edx, eax + 0011e 73 43 jae SHORT $LN80@stbi__pars + 00120 4c 8b 53 08 mov r10, QWORD PTR [rbx+8] +$LL53@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 00124 48 8b 03 mov rax, QWORD PTR [rbx] + 00127 49 3b c2 cmp rax, r10 + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 0012a 72 04 jb SHORT $LN58@stbi__pars + 0012c 32 c9 xor cl, cl + 0012e eb 09 jmp SHORT $LN59@stbi__pars +$LN58@stbi__pars: + 00130 0f b6 08 movzx ecx, BYTE PTR [rax] + 00133 48 ff c0 inc rax + 00136 48 89 03 mov QWORD PTR [rbx], rax +$LN59@stbi__pars: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 00139 0f b6 c1 movzx eax, cl + 0013c 41 8b c8 mov ecx, r8d + 0013f d3 e0 shl eax, cl + +; 3700 : z->num_bits += 8; + + 00141 41 8d 48 08 lea ecx, DWORD PTR [r8+8] + 00145 0b d0 or edx, eax + 00147 89 4b 10 mov DWORD PTR [rbx+16], ecx + 0014a 89 53 14 mov DWORD PTR [rbx+20], edx + +; 3701 : } while (z->num_bits <= 24); + + 0014d 83 f9 18 cmp ecx, 24 + 00150 7f 1b jg SHORT $LN52@stbi__pars + 00152 b8 01 00 00 00 mov eax, 1 + 00157 44 8b c1 mov r8d, ecx + 0015a d3 e0 shl eax, cl + 0015c 44 8b c9 mov r9d, ecx + 0015f 3b d0 cmp edx, eax + 00161 72 c1 jb SHORT $LL53@stbi__pars +$LN80@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 00163 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 00167 41 8b c9 mov ecx, r9d + 0016a 48 89 03 mov QWORD PTR [rbx], rax +$LN52@stbi__pars: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 0016d 44 8b 43 14 mov r8d, DWORD PTR [rbx+20] + +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; + + 00171 8d 51 ff lea edx, DWORD PTR [rcx-1] + 00174 41 8b f0 mov esi, r8d + 00177 89 53 10 mov DWORD PTR [rbx+16], edx + 0017a 41 d1 e8 shr r8d, 1 + 0017d 83 e6 01 and esi, 1 + 00180 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); + + 00184 83 fa 02 cmp edx, 2 + 00187 7d 6e jge SHORT $LN67@stbi__pars + +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 00189 8b ca mov ecx, edx + 0018b b8 01 00 00 00 mov eax, 1 + 00190 d3 e0 shl eax, cl + 00192 45 8b c8 mov r9d, r8d + 00195 44 8b d2 mov r10d, edx + 00198 44 8b da mov r11d, edx + 0019b 44 3b c0 cmp r8d, eax + 0019e 73 4d jae SHORT $LN81@stbi__pars + 001a0 48 8b 7b 08 mov rdi, QWORD PTR [rbx+8] +$LL68@stbi__pars: + +; 3684 : return (z->zbuffer >= z->zbuffer_end); + + 001a4 48 8b 03 mov rax, QWORD PTR [rbx] + 001a7 48 3b c7 cmp rax, rdi + +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; + + 001aa 72 04 jb SHORT $LN73@stbi__pars + 001ac 32 c9 xor cl, cl + 001ae eb 09 jmp SHORT $LN74@stbi__pars +$LN73@stbi__pars: + 001b0 0f b6 08 movzx ecx, BYTE PTR [rax] + 001b3 48 ff c0 inc rax + 001b6 48 89 03 mov QWORD PTR [rbx], rax +$LN74@stbi__pars: + +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + + 001b9 44 0f b6 c1 movzx r8d, cl + +; 3700 : z->num_bits += 8; + + 001bd 41 8d 53 08 lea edx, DWORD PTR [r11+8] + 001c1 41 8b ca mov ecx, r10d + 001c4 89 53 10 mov DWORD PTR [rbx+16], edx + 001c7 41 d3 e0 shl r8d, cl + 001ca 45 0b c1 or r8d, r9d + 001cd 44 89 43 14 mov DWORD PTR [rbx+20], r8d + +; 3701 : } while (z->num_bits <= 24); + + 001d1 83 fa 18 cmp edx, 24 + 001d4 7f 21 jg SHORT $LN67@stbi__pars + +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { + + 001d6 8b ca mov ecx, edx + 001d8 b8 01 00 00 00 mov eax, 1 + 001dd d3 e0 shl eax, cl + +; 3701 : } while (z->num_bits <= 24); + + 001df 45 8b c8 mov r9d, r8d + 001e2 44 8b d2 mov r10d, edx + 001e5 44 8b da mov r11d, edx + 001e8 44 3b c0 cmp r8d, eax + 001eb 72 b7 jb SHORT $LL68@stbi__pars +$LN81@stbi__pars: + +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + + 001ed 48 8b 43 08 mov rax, QWORD PTR [rbx+8] + 001f1 45 8b c1 mov r8d, r9d + 001f4 48 89 03 mov QWORD PTR [rbx], rax +$LN67@stbi__pars: + +; 3708 : k = z->code_buffer & ((1 << n) - 1); + + 001f7 41 8b c8 mov ecx, r8d + +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; + + 001fa 8d 42 fe lea eax, DWORD PTR [rdx-2] + 001fd 41 c1 e8 02 shr r8d, 2 + 00201 44 89 43 14 mov DWORD PTR [rbx+20], r8d + 00205 89 43 10 mov DWORD PTR [rbx+16], eax + 00208 83 e1 03 and ecx, 3 + +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { + + 0020b 75 0a jne SHORT $LN7@stbi__pars + +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; + + 0020d 48 8b cb mov rcx, rbx + 00210 e8 00 00 00 00 call stbi__parse_uncompressed_block + +; 3970 : } + + 00215 eb 5f jmp SHORT $LN123@stbi__pars +$LN7@stbi__pars: + +; 3971 : else if (type == 3) { + + 00217 83 f9 03 cmp ecx, 3 + 0021a 0f 84 79 fe ff + ff je $LN88@stbi__pars + +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { + + 00220 83 f9 01 cmp ecx, 1 + 00223 75 39 jne SHORT $LN12@stbi__pars + +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; + + 00225 48 8d 4b 34 lea rcx, QWORD PTR [rbx+52] + 00229 41 b8 20 01 00 + 00 mov r8d, 288 ; 00000120H + 0022f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:stbi__zdefault_length + 00236 e8 00 00 00 00 call stbi__zbuild_huffman + 0023b 85 c0 test eax, eax + 0023d 0f 84 56 fe ff + ff je $LN88@stbi__pars + +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + + 00243 48 8d 8b 18 08 + 00 00 lea rcx, QWORD PTR [rbx+2072] + 0024a 41 b8 20 00 00 + 00 mov r8d, 32 ; 00000020H + 00250 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:stbi__zdefault_distance + 00257 e8 00 00 00 00 call stbi__zbuild_huffman + +; 3979 : } + + 0025c eb 08 jmp SHORT $LN125@stbi__pars +$LN12@stbi__pars: + +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; + + 0025e 48 8b cb mov rcx, rbx + 00261 e8 00 00 00 00 call stbi__compute_huffman_codes +$LN125@stbi__pars: + +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; + + 00266 85 c0 test eax, eax + 00268 0f 84 2b fe ff + ff je $LN88@stbi__pars + 0026e 48 8b cb mov rcx, rbx + 00271 e8 00 00 00 00 call stbi__parse_huffman_block +$LN123@stbi__pars: + +; 3984 : } +; 3985 : } while (!final); + + 00276 85 c0 test eax, eax + 00278 0f 84 1b fe ff + ff je $LN88@stbi__pars + 0027e 85 f6 test esi, esi + 00280 0f 84 7e fe ff + ff je $LL4@stbi__pars + +; 3986 : return 1; + + 00286 b8 01 00 00 00 mov eax, 1 + 0028b e9 0b fe ff ff jmp $LN1@stbi__pars +stbi__parse_zlib ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__do_zlib +_TEXT SEGMENT +a$ = 8 +obuf$ = 16 +olen$ = 24 +exp$dead$ = 32 +parse_header$ = 40 +stbi__do_zlib PROC ; COMDAT + +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; + + 00000 49 63 c0 movsxd rax, r8d + 00003 48 03 c2 add rax, rdx + 00006 48 89 51 20 mov QWORD PTR [rcx+32], rdx + 0000a 48 89 51 18 mov QWORD PTR [rcx+24], rdx + +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); + + 0000e 8b 54 24 28 mov edx, DWORD PTR parse_header$[rsp] + 00012 48 89 41 28 mov QWORD PTR [rcx+40], rax + 00016 c7 41 30 01 00 + 00 00 mov DWORD PTR [rcx+48], 1 + 0001d e9 00 00 00 00 jmp stbi__parse_zlib +stbi__do_zlib ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi_zlib_decode_malloc_guesssize_headerflag +_TEXT SEGMENT +a$ = 32 +__$ArrayPad$ = 4128 +buffer$ = 4192 +len$ = 4200 +initial_size$ = 4208 +outlen$ = 4216 +parse_header$ = 4224 +stbi_zlib_decode_malloc_guesssize_headerflag PROC ; COMDAT + +; 4022 : { + +$LN16: + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 b8 38 10 00 00 mov eax, 4152 ; 00001038H + 0000a e8 00 00 00 00 call __chkstk + 0000f 48 2b e0 sub rsp, rax + 00012 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00019 48 33 c4 xor rax, rsp + 0001c 48 89 84 24 20 + 10 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); + + 00024 49 63 f0 movsxd rsi, r8d + 00027 48 8b f9 mov rdi, rcx + +; 438 : return STBI_MALLOC(size); + + 0002a 48 8b ce mov rcx, rsi + +; 4022 : { + + 0002d 48 63 ea movsxd rbp, edx + 00030 49 8b d9 mov rbx, r9 + +; 438 : return STBI_MALLOC(size); + + 00033 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 4025 : if (p == NULL) return NULL; + + 00039 48 85 c0 test rax, rax + 0003c 74 5d je SHORT $LN14@stbi_zlib_ + +; 3996 : return stbi__parse_zlib(a, parse_header); + + 0003e 8b 94 24 80 10 + 00 00 mov edx, DWORD PTR parse_header$[rsp] + 00045 48 8d 4c 24 20 lea rcx, QWORD PTR a$[rsp] + 0004a 48 89 44 24 40 mov QWORD PTR a$[rsp+32], rax + +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; + + 0004f 48 03 ef add rbp, rdi + +; 3992 : a->zout = obuf; + + 00052 48 89 44 24 38 mov QWORD PTR a$[rsp+24], rax + +; 3993 : a->zout_end = obuf + olen; + + 00057 48 03 c6 add rax, rsi + 0005a 48 89 44 24 48 mov QWORD PTR a$[rsp+40], rax + +; 4026 : a.zbuffer = (stbi_uc*)buffer; + + 0005f 48 89 7c 24 20 mov QWORD PTR a$[rsp], rdi + +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; + + 00064 48 89 6c 24 28 mov QWORD PTR a$[rsp+8], rbp + +; 3994 : a->z_expandable = exp; + + 00069 c7 44 24 50 01 + 00 00 00 mov DWORD PTR a$[rsp+48], 1 + +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); + + 00071 e8 00 00 00 00 call stbi__parse_zlib + +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + + 00076 85 c0 test eax, eax + 00078 74 16 je SHORT $LN3@stbi_zlib_ + +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); + + 0007a 48 85 db test rbx, rbx + 0007d 74 0a je SHORT $LN5@stbi_zlib_ + 0007f 8b 44 24 38 mov eax, DWORD PTR a$[rsp+24] + 00083 2b 44 24 40 sub eax, DWORD PTR a$[rsp+32] + 00087 89 03 mov DWORD PTR [rbx], eax +$LN5@stbi_zlib_: + +; 4030 : return a.zout_start; + + 00089 48 8b 44 24 40 mov rax, QWORD PTR a$[rsp+32] + 0008e eb 0d jmp SHORT $LN4@stbi_zlib_ +$LN3@stbi_zlib_: + +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); + + 00090 48 8b 4c 24 40 mov rcx, QWORD PTR a$[rsp+32] + 00095 ff 15 00 00 00 + 00 call QWORD PTR __imp_free +$LN14@stbi_zlib_: + +; 4034 : return NULL; +; 4035 : } +; 4036 : } + + 0009b 33 c0 xor eax, eax +$LN4@stbi_zlib_: + 0009d 48 8b 8c 24 20 + 10 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 000a5 48 33 cc xor rcx, rsp + 000a8 e8 00 00 00 00 call __security_check_cookie + 000ad 48 81 c4 38 10 + 00 00 add rsp, 4152 ; 00001038H + 000b4 5f pop rdi + 000b5 5e pop rsi + 000b6 5d pop rbp + 000b7 5b pop rbx + 000b8 c3 ret 0 +stbi_zlib_decode_malloc_guesssize_headerflag ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__get_chunk_header +_TEXT SEGMENT +s$ = 48 +stbi__get_chunk_header PROC ; COMDAT + +; 4096 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 57 push rdi + 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000f 48 8b f1 mov rsi, rcx + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00012 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00017 48 8b ce mov rcx, rsi + 0001a 8b f8 mov edi, eax + 0001c e8 00 00 00 00 call stbi__get16be + 00021 c1 e7 10 shl edi, 16 + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00024 48 8b ce mov rcx, rsi + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00027 03 f8 add edi, eax + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00029 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 0002e 48 8b ce mov rcx, rsi + 00031 8b d8 mov ebx, eax + 00033 e8 00 00 00 00 call stbi__get16be + +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } + + 00038 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + +; 1169 : return (z << 16) + stbi__get16be(s); + + 0003d c1 e3 10 shl ebx, 16 + 00040 03 c3 add eax, ebx + +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } + + 00042 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00047 48 c1 e0 20 shl rax, 32 ; 00000020H + 0004b 48 0b c7 or rax, rdi + 0004e 48 83 c4 20 add rsp, 32 ; 00000020H + 00052 5f pop rdi + 00053 c3 ret 0 +stbi__get_chunk_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__check_png_header +_TEXT SEGMENT +s$ = 48 +stbi__check_png_header PROC ; COMDAT + +; 4104 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 57 push rdi + 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000f 48 8b d9 mov rbx, rcx + 00012 48 8d 35 00 00 + 00 00 lea rsi, OFFSET FLAT:?png_sig@?1??stbi__check_png_header@@9@9 + 00019 33 ff xor edi, edi + 0001b 0f 1f 44 00 00 npad 5 +$LL4@stbi__chec: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00020 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00027 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0002e 73 0f jae SHORT $LN8@stbi__chec + +; 1078 : return *s->img_buffer++; + + 00030 0f b6 08 movzx ecx, BYTE PTR [rax] + 00033 48 ff c0 inc rax + 00036 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0003d eb 26 jmp SHORT $LN7@stbi__chec +$LN8@stbi__chec: + +; 1079 : if (s->read_from_callbacks) { + + 0003f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00043 74 1e je SHORT $LN9@stbi__chec + +; 1080 : stbi__refill_buffer(s); + + 00045 48 8b cb mov rcx, rbx + 00048 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0004d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00054 0f b6 08 movzx ecx, BYTE PTR [rax] + 00057 48 ff c0 inc rax + 0005a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00061 eb 02 jmp SHORT $LN7@stbi__chec +$LN9@stbi__chec: + +; 1082 : } +; 1083 : return 0; + + 00063 32 c9 xor cl, cl +$LN7@stbi__chec: + +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); + + 00065 3a 0c 37 cmp cl, BYTE PTR [rdi+rsi] + 00068 75 1e jne SHORT $LN14@stbi__chec + +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) + + 0006a 48 ff c7 inc rdi + 0006d 48 83 ff 08 cmp rdi, 8 + 00071 7c ad jl SHORT $LL4@stbi__chec + +; 4109 : return 1; + + 00073 b8 01 00 00 00 mov eax, 1 + +; 4110 : } + + 00078 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0007d 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 00082 48 83 c4 20 add rsp, 32 ; 00000020H + 00086 5f pop rdi + 00087 c3 ret 0 +$LN14@stbi__chec: + +; 431 : stbi__g_failure_reason = str; + + 00088 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00091 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + +; 4110 : } + + 00097 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0009c 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + +; 431 : stbi__g_failure_reason = str; + + 000a1 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 000a6 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 000aa 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0M@DMDNBACF@bad?5png?5sig@ + 000b1 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); + + 000b5 33 c0 xor eax, eax + +; 4110 : } + + 000b7 48 83 c4 20 add rsp, 32 ; 00000020H + 000bb 5f pop rdi + 000bc c3 ret 0 +stbi__check_png_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__paeth +_TEXT SEGMENT +a$ = 8 +b$ = 16 +c$ = 24 +stbi__paeth PROC ; COMDAT + +; 4140 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 8b da mov ebx, edx + +; 4141 : int p = a + b - c; + + 00007 44 8b c9 mov r9d, ecx + 0000a 45 2b c8 sub r9d, r8d + 0000d 45 8d 14 11 lea r10d, DWORD PTR [r9+rdx] + +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); + + 00011 41 8b d1 mov edx, r9d + 00014 41 8b c2 mov eax, r10d + 00017 2b c1 sub eax, ecx + 00019 44 8b d8 mov r11d, eax + 0001c 41 f7 db neg r11d + 0001f 44 0f 48 d8 cmovs r11d, eax + 00023 f7 da neg edx + 00025 41 0f 48 d1 cmovs edx, r9d + +; 4144 : int pc = abs(p - c); + + 00029 45 2b d0 sub r10d, r8d + 0002c 41 8b c2 mov eax, r10d + 0002f f7 d8 neg eax + 00031 41 0f 48 c2 cmovs eax, r10d + +; 4145 : if (pa <= pb && pa <= pc) return a; + + 00035 44 3b da cmp r11d, edx + 00038 7f 0d jg SHORT $LN2@stbi__paet + 0003a 44 3b d8 cmp r11d, eax + 0003d 7f 08 jg SHORT $LN2@stbi__paet + 0003f 8b c1 mov eax, ecx + +; 4147 : return c; +; 4148 : } + + 00041 48 8b 5c 24 08 mov rbx, QWORD PTR [rsp+8] + 00046 c3 ret 0 +$LN2@stbi__paet: + +; 4146 : if (pb <= pc) return b; + + 00047 3b d0 cmp edx, eax + 00049 44 0f 4e c3 cmovle r8d, ebx + +; 4147 : return c; +; 4148 : } + + 0004d 48 8b 5c 24 08 mov rbx, QWORD PTR [rsp+8] + 00052 41 8b c0 mov eax, r8d + 00055 c3 ret 0 +stbi__paeth ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__create_png_image_raw +_TEXT SEGMENT +a$1$ = 32 +$T13 = 40 +$T14 = 48 +stride$1$ = 56 +nk$1$ = 64 +cur$8$ = 64 +width$1$ = 72 +j$1$ = 76 +filter_bytes$1$ = 80 +img_width_bytes$1$ = 84 +prior$4$ = 88 +cur$9$ = 96 +$T15 = 104 +tv5788 = 112 +tv5875 = 120 +tv5731 = 128 +tv5728 = 136 +tv5835 = 144 +$T16 = 152 +cur$1$ = 160 +img_n$1$ = 240 +a$ = 240 +raw$ = 248 +raw_len$ = 256 +out_n$ = 264 +x$ = 272 +y$ = 280 +depth$ = 288 +color$ = 296 +stbi__create_png_image_raw PROC ; COMDAT + +; 4154 : { + + 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d + 00005 53 push rbx + 00006 55 push rbp + 00007 56 push rsi + 00008 57 push rdi + 00009 41 54 push r12 + 0000b 41 56 push r14 + 0000d 41 57 push r15 + 0000f 48 81 ec b0 00 + 00 00 sub rsp, 176 ; 000000b0H + +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; + + 00016 44 8b bc 24 10 + 01 00 00 mov r15d, DWORD PTR x$[rsp] + 0001e 41 8b c1 mov eax, r9d + 00021 44 8b b4 24 20 + 01 00 00 mov r14d, DWORD PTR depth$[rsp] + 00029 41 8b e8 mov ebp, r8d + 0002c 44 8b 8c 24 18 + 01 00 00 mov r9d, DWORD PTR y$[rsp] + 00034 45 33 c0 xor r8d, r8d + 00037 41 83 fe 10 cmp r14d, 16 + 0003b 4c 89 44 24 78 mov QWORD PTR tv5875[rsp], r8 + 00040 45 8b d0 mov r10d, r8d + +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; + + 00043 44 89 7c 24 48 mov DWORD PTR width$1$[rsp], r15d + 00048 41 0f 94 c2 sete r10b + 0004c 48 8b f1 mov rsi, rcx + 0004f 41 ff c2 inc r10d + 00052 48 8b da mov rbx, rdx + 00055 41 8b fa mov edi, r10d + 00058 0f af f8 imul edi, eax + 0005b 48 8b 01 mov rax, QWORD PTR [rcx] + 0005e 8b 48 08 mov ecx, DWORD PTR [rax+8] + 00061 44 8b df mov r11d, edi + 00064 45 0f af df imul r11d, r15d + 00068 44 8b e1 mov r12d, ecx + 0006b 45 0f af e2 imul r12d, r10d + 0006f 89 8c 24 f0 00 + 00 00 mov DWORD PTR img_n$1$[rsp], ecx + 00076 44 89 5c 24 38 mov DWORD PTR stride$1$[rsp], r11d + 0007b 44 89 64 24 50 mov DWORD PTR filter_bytes$1$[rsp], r12d + +; 467 : if (a < 0 || b < 0) return 0; + + 00080 45 85 ff test r15d, r15d + 00083 0f 88 ba 11 00 + 00 js $LN388@stbi__crea + 00089 45 85 c9 test r9d, r9d + 0008c 0f 88 b1 11 00 + 00 js $LN388@stbi__crea + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00092 74 13 je SHORT $LN390@stbi__crea + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00094 33 d2 xor edx, edx + 00096 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0009b 41 f7 f1 div r9d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0009e 44 3b f8 cmp r15d, eax + 000a1 0f 8f 9c 11 00 + 00 jg $LN388@stbi__crea +$LN390@stbi__crea: + 000a7 41 8b cf mov ecx, r15d + 000aa 41 0f af c9 imul ecx, r9d + +; 467 : if (a < 0 || b < 0) return 0; + + 000ae 85 c9 test ecx, ecx + 000b0 0f 88 8d 11 00 + 00 js $LN388@stbi__crea + 000b6 85 ff test edi, edi + 000b8 0f 88 85 11 00 + 00 js $LN388@stbi__crea + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 000be 74 10 je SHORT $LN389@stbi__crea + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 000c0 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 000c5 99 cdq + 000c6 f7 ff idiv edi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 000c8 3b c8 cmp ecx, eax + 000ca 0f 8f 73 11 00 + 00 jg $LN388@stbi__crea +$LN389@stbi__crea: + 000d0 41 8b c1 mov eax, r9d + 000d3 41 0f af c3 imul eax, r11d + +; 509 : return stbi__malloc(a * b * c + add); + + 000d7 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 000da ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + + 000e0 48 89 46 18 mov QWORD PTR [rsi+24], rax + +; 438 : return STBI_MALLOC(size); + + 000e4 4c 8b d0 mov r10, rax + +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); + + 000e7 48 85 c0 test rax, rax + 000ea 0f 84 57 11 00 + 00 je $LN387@stbi__crea + +; 467 : if (a < 0 || b < 0) return 0; + + 000f0 4c 63 9c 24 f0 + 00 00 00 movsxd r11, DWORD PTR img_n$1$[rsp] + 000f8 4c 89 ac 24 f8 + 00 00 00 mov QWORD PTR [rsp+248], r13 + 00100 45 85 db test r11d, r11d + 00103 0f 88 16 11 00 + 00 js $LN384@stbi__crea + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00109 45 85 ff test r15d, r15d + 0010c 74 13 je SHORT $LN386@stbi__crea + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0010e 33 d2 xor edx, edx + 00110 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00115 41 f7 f7 div r15d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00118 44 3b d8 cmp r11d, eax + 0011b 0f 8f fe 10 00 + 00 jg $LN384@stbi__crea +$LN386@stbi__crea: + 00121 45 8b eb mov r13d, r11d + 00124 45 0f af ef imul r13d, r15d + 00128 44 89 6c 24 20 mov DWORD PTR a$1$[rsp], r13d + +; 467 : if (a < 0 || b < 0) return 0; + + 0012d 45 85 ed test r13d, r13d + 00130 0f 88 e9 10 00 + 00 js $LN384@stbi__crea + 00136 45 85 f6 test r14d, r14d + 00139 0f 88 e0 10 00 + 00 js $LN384@stbi__crea + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0013f 74 13 je SHORT $LN385@stbi__crea + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00141 33 d2 xor edx, edx + 00143 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00148 41 f7 f6 div r14d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0014b 44 3b e8 cmp r13d, eax + 0014e 0f 8f cb 10 00 + 00 jg $LN384@stbi__crea +$LN385@stbi__crea: + 00154 41 8b c5 mov eax, r13d + 00157 41 0f af c6 imul eax, r14d + +; 460 : return a <= INT_MAX - b; + + 0015b 3d f8 ff ff 7f cmp eax, 2147483640 ; 7ffffff8H + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00160 0f 8f b9 10 00 + 00 jg $LN384@stbi__crea + +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); + + 00166 8b b4 24 18 01 + 00 00 mov esi, DWORD PTR y$[rsp] + 0016d 41 8b cd mov ecx, r13d + 00170 41 0f af ce imul ecx, r14d + 00174 83 c1 07 add ecx, 7 + 00177 c1 e9 03 shr ecx, 3 + 0017a 89 4c 24 54 mov DWORD PTR img_width_bytes$1$[rsp], ecx + +; 4172 : img_len = (img_width_bytes + 1) * y; + + 0017e 8d 41 01 lea eax, DWORD PTR [rcx+1] + 00181 0f af c6 imul eax, esi + +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); + + 00184 3b e8 cmp ebp, eax + 00186 73 3f jae SHORT $LN100@stbi__crea + +; 431 : stbi__g_failure_reason = str; + + 00188 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0018e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00197 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0019c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001a0 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ +$LN651@stbi__crea: + 001a7 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); + + 001ab 33 c0 xor eax, eax +$LN649@stbi__crea: + 001ad 4c 8b ac 24 f8 + 00 00 00 mov r13, QWORD PTR [rsp+248] +$LN1@stbi__crea: + +; 4370 : } + + 001b5 48 81 c4 b0 00 + 00 00 add rsp, 176 ; 000000b0H + 001bc 41 5f pop r15 + 001be 41 5e pop r14 + 001c0 41 5c pop r12 + 001c2 5f pop rdi + 001c3 5e pop rsi + 001c4 5d pop rbp + 001c5 5b pop rbx + 001c6 c3 ret 0 +$LN100@stbi__crea: + +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { + + 001c7 45 33 c9 xor r9d, r9d + 001ca 4c 89 54 24 30 mov QWORD PTR $T14[rsp], r10 + 001cf 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 001d6 41 8b d1 mov edx, r9d + 001d9 89 54 24 4c mov DWORD PTR j$1$[rsp], edx + 001dd 85 f6 test esi, esi + 001df 0f 84 71 0b 00 + 00 je $LN3@stbi__crea + +; 4180 : stbi_uc* cur = a->out + stride * j; + + 001e5 8b 44 24 20 mov eax, DWORD PTR a$1$[rsp] + 001e9 4d 8b c3 mov r8, r11 + 001ec 4c 63 ef movsxd r13, edi + 001ef 49 8b fa mov rdi, r10 + 001f2 4d 63 f4 movsxd r14, r12d + 001f5 4c 89 74 24 68 mov QWORD PTR $T15[rsp], r14 + 001fa 4c 89 ac 24 98 + 00 00 00 mov QWORD PTR $T16[rsp], r13 + 00202 4c 89 5c 24 28 mov QWORD PTR $T13[rsp], r11 + 00207 89 44 24 20 mov DWORD PTR a$1$[rsp], eax + 0020b 4c 89 54 24 30 mov QWORD PTR $T14[rsp], r10 + 00210 4c 89 94 24 a0 + 00 00 00 mov QWORD PTR cur$1$[rsp], r10 + 00218 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL4@stbi__crea: + +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; + + 00220 44 0f b6 13 movzx r10d, BYTE PTR [rbx] + 00224 8b ea mov ebp, edx + 00226 0f af 6c 24 38 imul ebp, DWORD PTR stride$1$[rsp] + 0022b 48 ff c3 inc rbx + 0022e 48 03 ef add rbp, rdi + 00231 48 89 6c 24 60 mov QWORD PTR cur$9$[rsp], rbp + 00236 48 8b f5 mov rsi, rbp + +; 4183 : +; 4184 : if (filter > 4) + + 00239 41 83 fa 04 cmp r10d, 4 + 0023d 0f 87 db 0a 00 + 00 ja $LN260@stbi__crea + +; 4186 : +; 4187 : if (depth < 8) { + + 00243 83 bc 24 20 01 + 00 00 08 cmp DWORD PTR depth$[rsp], 8 + 0024b 7d 30 jge SHORT $LN102@stbi__crea + +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); + + 0024d 41 3b cf cmp ecx, r15d + 00250 0f 87 a4 0a 00 + 00 ja $LN261@stbi__crea + +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + + 00256 8b 84 24 08 01 + 00 00 mov eax, DWORD PTR out_n$[rsp] + +; 4190 : filter_bytes = 1; + + 0025d 41 bc 01 00 00 + 00 mov r12d, 1 + 00263 41 0f af c7 imul eax, r15d + 00267 45 8b f4 mov r14d, r12d + 0026a 44 89 64 24 50 mov DWORD PTR filter_bytes$1$[rsp], r12d + 0026f 4c 89 64 24 68 mov QWORD PTR $T15[rsp], r12 + +; 4191 : width = img_width_bytes; + + 00274 89 4c 24 48 mov DWORD PTR width$1$[rsp], ecx + 00278 2b c1 sub eax, ecx + 0027a 48 03 f0 add rsi, rax +$LN102@stbi__crea: + +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + 0027d 8b 44 24 38 mov eax, DWORD PTR stride$1$[rsp] + +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; + + 00281 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 00288 4c 8b fe mov r15, rsi + 0028b 4c 2b f8 sub r15, rax + 0028e 85 d2 test edx, edx + 00290 75 09 jne SHORT $LN104@stbi__crea + 00292 45 0f b6 94 0a + 00 00 00 00 movzx r10d, BYTE PTR first_row_filter[r10+rcx] +$LN104@stbi__crea: + +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { + + 0029b 4d 85 f6 test r14, r14 + 0029e 0f 8e 31 01 00 + 00 jle $LN6@stbi__crea + 002a4 49 8b ff mov rdi, r15 + 002a7 4c 8b de mov r11, rsi + 002aa 48 2b fb sub rdi, rbx + 002ad 48 8b d3 mov rdx, rbx + 002b0 4c 2b db sub r11, rbx + 002b3 4d 8b ce mov r9, r14 +$LL7@stbi__crea: + +; 4200 : switch (filter) { + + 002b6 4c 8b c2 mov r8, rdx + 002b9 41 83 fa 06 cmp r10d, 6 + 002bd 77 0f ja SHORT $LN5@stbi__crea + 002bf 49 63 c2 movsxd rax, r10d + 002c2 8b 84 81 00 00 + 00 00 mov eax, DWORD PTR $LN398@stbi__crea[rcx+rax*4] + 002c9 48 03 c1 add rax, rcx + 002cc ff e0 jmp rax +$LN5@stbi__crea: + +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { + + 002ce 48 ff c2 inc rdx + 002d1 49 83 e9 01 sub r9, 1 + 002d5 0f 84 ea 00 00 + 00 je $LN492@stbi__crea + 002db 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 002e2 eb d2 jmp SHORT $LL7@stbi__crea + 002e4 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL406@stbi__crea: + +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; + + 002f0 0f b6 02 movzx eax, BYTE PTR [rdx] + 002f3 48 ff c2 inc rdx + 002f6 43 88 04 03 mov BYTE PTR [r11+r8], al + 002fa 49 83 e9 01 sub r9, 1 + 002fe 0f 84 c1 00 00 + 00 je $LN492@stbi__crea + +; 4200 : switch (filter) { + + 00304 4c 8b c2 mov r8, rdx + 00307 eb e7 jmp SHORT $LL406@stbi__crea + 00309 0f 1f 80 00 00 + 00 00 npad 7 +$LL407@stbi__crea: + +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; + + 00310 0f b6 02 movzx eax, BYTE PTR [rdx] + 00313 48 ff c2 inc rdx + 00316 43 88 04 03 mov BYTE PTR [r11+r8], al + 0031a 49 83 e9 01 sub r9, 1 + 0031e 0f 84 a1 00 00 + 00 je $LN492@stbi__crea + +; 4200 : switch (filter) { + + 00324 4c 8b c2 mov r8, rdx + 00327 eb e7 jmp SHORT $LL407@stbi__crea + 00329 0f 1f 80 00 00 + 00 00 npad 7 +$LL447@stbi__crea: + +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + + 00330 42 0f b6 04 07 movzx eax, BYTE PTR [rdi+r8] + 00335 02 02 add al, BYTE PTR [rdx] + 00337 48 ff c2 inc rdx + 0033a 43 88 04 03 mov BYTE PTR [r11+r8], al + 0033e 49 83 e9 01 sub r9, 1 + 00342 0f 84 7d 00 00 + 00 je $LN492@stbi__crea + +; 4200 : switch (filter) { + + 00348 4c 8b c2 mov r8, rdx + 0034b eb e3 jmp SHORT $LL447@stbi__crea + 0034d 0f 1f 00 npad 3 +$LL448@stbi__crea: + +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; + + 00350 42 0f b6 04 07 movzx eax, BYTE PTR [rdi+r8] + 00355 d0 e8 shr al, 1 + 00357 02 02 add al, BYTE PTR [rdx] + 00359 48 ff c2 inc rdx + 0035c 43 88 04 03 mov BYTE PTR [r11+r8], al + 00360 49 83 e9 01 sub r9, 1 + 00364 74 5f je SHORT $LN492@stbi__crea + +; 4200 : switch (filter) { + + 00366 4c 8b c2 mov r8, rdx + 00369 eb e5 jmp SHORT $LL448@stbi__crea + 0036b 0f 1f 44 00 00 npad 5 +$LL449@stbi__crea: + +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; + + 00370 42 0f b6 04 07 movzx eax, BYTE PTR [rdi+r8] + 00375 33 c9 xor ecx, ecx + 00377 84 c0 test al, al + 00379 0f 45 c8 cmovne ecx, eax + 0037c 02 0a add cl, BYTE PTR [rdx] + 0037e 48 ff c2 inc rdx + 00381 43 88 0c 03 mov BYTE PTR [r11+r8], cl + 00385 49 83 e9 01 sub r9, 1 + 00389 74 3a je SHORT $LN492@stbi__crea + +; 4200 : switch (filter) { + + 0038b 4c 8b c2 mov r8, rdx + 0038e eb e0 jmp SHORT $LL449@stbi__crea +$LL450@stbi__crea: + +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; + + 00390 0f b6 02 movzx eax, BYTE PTR [rdx] + 00393 48 ff c2 inc rdx + 00396 43 88 04 03 mov BYTE PTR [r11+r8], al + 0039a 49 83 e9 01 sub r9, 1 + 0039e 74 25 je SHORT $LN492@stbi__crea + +; 4200 : switch (filter) { + + 003a0 4c 8b c2 mov r8, rdx + 003a3 eb eb jmp SHORT $LL450@stbi__crea + 003a5 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL451@stbi__crea: + +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; + + 003b0 0f b6 02 movzx eax, BYTE PTR [rdx] + 003b3 48 ff c2 inc rdx + 003b6 43 88 04 03 mov BYTE PTR [r11+r8], al + 003ba 49 83 e9 01 sub r9, 1 + 003be 74 05 je SHORT $LN492@stbi__crea + +; 4200 : switch (filter) { + + 003c0 4c 8b c2 mov r8, rdx + 003c3 eb eb jmp SHORT $LL451@stbi__crea +$LN492@stbi__crea: + +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { + + 003c5 4c 8b 44 24 28 mov r8, QWORD PTR $T13[rsp] + 003ca 45 33 c9 xor r9d, r9d + 003cd 44 8b 9c 24 f0 + 00 00 00 mov r11d, DWORD PTR img_n$1$[rsp] +$LN6@stbi__crea: + 003d5 8b 84 24 20 01 + 00 00 mov eax, DWORD PTR depth$[rsp] + 003dc 83 f8 08 cmp eax, 8 + 003df 75 2b jne SHORT $LN112@stbi__crea + +; 4212 : if (img_n != out_n) + + 003e1 48 63 84 24 08 + 01 00 00 movsxd rax, DWORD PTR out_n$[rsp] + 003e9 44 3b d8 cmp r11d, eax + 003ec 74 05 je SHORT $LN114@stbi__crea + +; 4213 : cur[img_n] = 255; // first pixel + + 003ee 41 c6 04 30 ff mov BYTE PTR [r8+rsi], 255 ; 000000ffH +$LN114@stbi__crea: + +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; + + 003f3 49 03 d8 add rbx, r8 + 003f6 4e 8d 1c 38 lea r11, QWORD PTR [rax+r15] + 003fa 48 03 c6 add rax, rsi + 003fd 4c 89 5c 24 58 mov QWORD PTR prior$4$[rsp], r11 + 00402 48 89 44 24 40 mov QWORD PTR cur$8$[rsp], rax + 00407 4c 8b c3 mov r8, rbx + +; 4217 : } + + 0040a eb 59 jmp SHORT $LN383@stbi__crea +$LN112@stbi__crea: + +; 4218 : else if (depth == 16) { + + 0040c 83 f8 10 cmp eax, 16 + 0040f 75 2e jne SHORT $LN115@stbi__crea + +; 4219 : if (img_n != out_n) { + + 00411 44 3b 9c 24 08 + 01 00 00 cmp r11d, DWORD PTR out_n$[rsp] + 00419 74 07 je SHORT $LN117@stbi__crea + +; 4220 : cur[filter_bytes] = 255; // first pixel top byte + + 0041b 66 41 c7 04 36 + ff ff mov WORD PTR [r14+rsi], 65535 ; 0000ffffH +$LN117@stbi__crea: + +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; + + 00422 49 63 c4 movsxd rax, r12d + +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; + + 00425 4f 8d 1c 2f lea r11, QWORD PTR [r15+r13] + 00429 48 03 d8 add rbx, rax + 0042c 4c 89 5c 24 58 mov QWORD PTR prior$4$[rsp], r11 + 00431 4a 8d 04 2e lea rax, QWORD PTR [rsi+r13] + 00435 4c 8b c3 mov r8, rbx + 00438 48 89 44 24 40 mov QWORD PTR cur$8$[rsp], rax + +; 4226 : } + + 0043d eb 26 jmp SHORT $LN383@stbi__crea +$LN115@stbi__crea: + +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { + + 0043f 48 ff c3 inc rbx + 00442 4d 8d 5f 01 lea r11, QWORD PTR [r15+1] + 00446 83 bc 24 20 01 + 00 00 08 cmp DWORD PTR depth$[rsp], 8 + 0044e 48 8d 46 01 lea rax, QWORD PTR [rsi+1] + 00452 4c 8b c3 mov r8, rbx + 00455 4c 89 5c 24 58 mov QWORD PTR prior$4$[rsp], r11 + 0045a 48 89 44 24 40 mov QWORD PTR cur$8$[rsp], rax + 0045f 0f 8c 2f 05 00 + 00 jl $LN120@stbi__crea +$LN383@stbi__crea: + 00465 8b 8c 24 f0 00 + 00 00 mov ecx, DWORD PTR img_n$1$[rsp] + 0046c 3b 8c 24 08 01 + 00 00 cmp ecx, DWORD PTR out_n$[rsp] + 00473 0f 84 1b 05 00 + 00 je $LN120@stbi__crea + +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { + + 00479 41 83 fa 06 cmp r10d, 6 + 0047d 0f 87 d3 04 00 + 00 ja $LN494@stbi__crea + 00483 49 63 ca movsxd rcx, r10d + 00486 49 8b d8 mov rbx, r8 + 00489 4c 8d 15 00 00 + 00 00 lea r10, OFFSET FLAT:__ImageBase + 00490 41 8b 94 8a 00 + 00 00 00 mov edx, DWORD PTR $LN397@stbi__crea[r10+rcx*4] + 00498 49 03 d2 add rdx, r10 + 0049b ff e2 jmp rdx +$LN128@stbi__crea: + +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + + 0049d 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 004a4 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 004a7 83 f9 01 cmp ecx, 1 + 004aa 0f 82 ad 04 00 + 00 jb $LN69@stbi__crea + 004b0 4d 63 dc movsxd r11, r12d + 004b3 44 8b d1 mov r10d, ecx +$LL34@stbi__crea: + 004b6 4d 85 f6 test r14, r14 + 004b9 7e 26 jle SHORT $LN32@stbi__crea + 004bb 4c 8b cb mov r9, rbx + 004be 48 8b d0 mov rdx, rax + 004c1 4c 2b c8 sub r9, rax + 004c4 4d 8b c6 mov r8, r14 + 004c7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL292@stbi__crea: + 004d0 42 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+r9] + 004d5 88 0a mov BYTE PTR [rdx], cl + 004d7 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 004db 49 83 e8 01 sub r8, 1 + 004df 75 ef jne SHORT $LL292@stbi__crea +$LN32@stbi__crea: + 004e1 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 004e6 49 03 db add rbx, r11 + 004e9 49 03 c5 add rax, r13 + 004ec 49 83 ea 01 sub r10, 1 + 004f0 75 c4 jne SHORT $LL34@stbi__crea + 004f2 e9 5f 04 00 00 jmp $LN494@stbi__crea +$LN129@stbi__crea: + +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; + + 004f7 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 004fe 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 00501 83 f9 01 cmp ecx, 1 + 00504 0f 82 53 04 00 + 00 jb $LN69@stbi__crea + 0050a 49 63 fc movsxd rdi, r12d + 0050d 44 8b d9 mov r11d, ecx +$LL40@stbi__crea: + 00510 4d 85 f6 test r14, r14 + 00513 7e 30 jle SHORT $LN38@stbi__crea + 00515 4c 8b c0 mov r8, rax + 00518 4c 8b d0 mov r10, rax + 0051b 4d 2b c5 sub r8, r13 + 0051e 48 8b d3 mov rdx, rbx + 00521 4c 2b c3 sub r8, rbx + 00524 4d 8b ce mov r9, r14 + 00527 4c 2b d3 sub r10, rbx + 0052a 66 0f 1f 44 00 + 00 npad 6 +$LL43@stbi__crea: + 00530 42 0f b6 0c 02 movzx ecx, BYTE PTR [rdx+r8] + 00535 02 0a add cl, BYTE PTR [rdx] + 00537 41 88 0c 12 mov BYTE PTR [r10+rdx], cl + 0053b 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 0053f 49 83 e9 01 sub r9, 1 + 00543 75 eb jne SHORT $LL43@stbi__crea +$LN38@stbi__crea: + 00545 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 0054a 48 03 df add rbx, rdi + 0054d 49 03 c5 add rax, r13 + 00550 49 83 eb 01 sub r11, 1 + 00554 75 ba jne SHORT $LL40@stbi__crea + 00556 e9 fb 03 00 00 jmp $LN494@stbi__crea +$LN130@stbi__crea: + +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + + 0055b 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 00562 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 00565 83 f9 01 cmp ecx, 1 + 00568 0f 82 ef 03 00 + 00 jb $LN69@stbi__crea + 0056e 49 63 ec movsxd rbp, r12d + 00571 8b f1 mov esi, ecx +$LL46@stbi__crea: + 00573 4d 8b c1 mov r8, r9 + 00576 45 85 e4 test r12d, r12d + 00579 0f 8e 32 01 00 + 00 jle $LN295@stbi__crea + 0057f 41 83 fc 08 cmp r12d, 8 + 00583 0f 82 28 01 00 + 00 jb $LN295@stbi__crea + 00589 41 8d 4c 24 ff lea ecx, DWORD PTR [r12-1] + 0058e 48 63 d1 movsxd rdx, ecx + 00591 48 8d 0c 1a lea rcx, QWORD PTR [rdx+rbx] + 00595 4c 8d 0c 02 lea r9, QWORD PTR [rdx+rax] + 00599 48 3b c1 cmp rax, rcx + 0059c 77 09 ja SHORT $LN298@stbi__crea + 0059e 4c 3b cb cmp r9, rbx + 005a1 0f 83 0a 01 00 + 00 jae $LN295@stbi__crea +$LN298@stbi__crea: + 005a7 4a 8d 0c 1a lea rcx, QWORD PTR [rdx+r11] + 005ab 48 3b c1 cmp rax, rcx + 005ae 77 09 ja SHORT $LN299@stbi__crea + 005b0 4d 3b cb cmp r9, r11 + 005b3 0f 83 f8 00 00 + 00 jae $LN295@stbi__crea +$LN299@stbi__crea: + 005b9 41 83 fc 40 cmp r12d, 64 ; 00000040H + 005bd 0f 82 9c 00 00 + 00 jb $LN382@stbi__crea + 005c3 41 8b d4 mov edx, r12d + 005c6 81 e2 3f 00 00 + 80 and edx, -2147483585 ; ffffffff8000003fH + 005cc 7d 07 jge SHORT $LN396@stbi__crea + 005ce ff ca dec edx + 005d0 83 ca c0 or edx, -64 ; ffffffffffffffc0H + 005d3 ff c2 inc edx +$LN396@stbi__crea: + 005d5 41 8b cc mov ecx, r12d + 005d8 2b ca sub ecx, edx + 005da 49 8b d3 mov rdx, r11 + 005dd 4c 63 d1 movsxd r10, ecx + 005e0 48 2b d3 sub rdx, rbx + 005e3 48 8d 4b 10 lea rcx, QWORD PTR [rbx+16] + 005e7 4c 8b c8 mov r9, rax + 005ea 4c 2b cb sub r9, rbx + 005ed 0f 1f 00 npad 3 +$LL49@stbi__crea: + 005f0 f3 0f 6f 41 f0 movdqu xmm0, XMMWORD PTR [rcx-16] + 005f5 49 83 c0 40 add r8, 64 ; 00000040H + 005f9 f3 0f 6f 4c 11 + f0 movdqu xmm1, XMMWORD PTR [rcx+rdx-16] + 005ff f3 0f 6f 11 movdqu xmm2, XMMWORD PTR [rcx] + 00603 48 8d 49 40 lea rcx, QWORD PTR [rcx+64] + 00607 66 0f fc c8 paddb xmm1, xmm0 + 0060b f3 0f 6f 44 11 + c0 movdqu xmm0, XMMWORD PTR [rcx+rdx-64] + 00611 f3 41 0f 7f 4c + 09 b0 movdqu XMMWORD PTR [r9+rcx-80], xmm1 + 00618 66 0f fc d0 paddb xmm2, xmm0 + 0061c f3 0f 6f 41 d0 movdqu xmm0, XMMWORD PTR [rcx-48] + 00621 f3 0f 6f 4c 11 + d0 movdqu xmm1, XMMWORD PTR [rcx+rdx-48] + 00627 f3 41 0f 7f 54 + 09 c0 movdqu XMMWORD PTR [r9+rcx-64], xmm2 + 0062e 66 0f fc c8 paddb xmm1, xmm0 + 00632 f3 0f 6f 41 e0 movdqu xmm0, XMMWORD PTR [rcx-32] + 00637 f3 0f 6f 54 11 + e0 movdqu xmm2, XMMWORD PTR [rcx+rdx-32] + 0063d f3 41 0f 7f 4c + 09 d0 movdqu XMMWORD PTR [r9+rcx-48], xmm1 + 00644 66 0f fc d0 paddb xmm2, xmm0 + 00648 f3 41 0f 7f 54 + 09 e0 movdqu XMMWORD PTR [r9+rcx-32], xmm2 + 0064f 4d 3b c2 cmp r8, r10 + 00652 7c 9c jl SHORT $LL49@stbi__crea + 00654 41 8b cc mov ecx, r12d + 00657 80 e1 3f and cl, 63 ; 0000003fH + 0065a 80 f9 08 cmp cl, 8 + 0065d 72 52 jb SHORT $LN295@stbi__crea +$LN382@stbi__crea: + 0065f 41 8b d4 mov edx, r12d + 00662 81 e2 07 00 00 + 80 and edx, -2147483641 ; ffffffff80000007H + 00668 7d 07 jge SHORT $LN395@stbi__crea + 0066a ff ca dec edx + 0066c 83 ca f8 or edx, -8 + 0066f ff c2 inc edx +$LN395@stbi__crea: + 00671 41 8b cc mov ecx, r12d + 00674 2b ca sub ecx, edx + 00676 49 8b d3 mov rdx, r11 + 00679 4c 63 d1 movsxd r10, ecx + 0067c 48 2b d3 sub rdx, rbx + 0067f 49 8d 0c 18 lea rcx, QWORD PTR [r8+rbx] + 00683 4c 8b c8 mov r9, rax + 00686 4c 2b cb sub r9, rbx + 00689 0f 1f 80 00 00 + 00 00 npad 7 +$LL296@stbi__crea: + 00690 f3 0f 7e 0c 11 movq xmm1, QWORD PTR [rcx+rdx] + 00695 49 83 c0 08 add r8, 8 + 00699 f3 0f 7e 01 movq xmm0, QWORD PTR [rcx] + 0069d 48 8d 49 08 lea rcx, QWORD PTR [rcx+8] + 006a1 66 0f fc c8 paddb xmm1, xmm0 + 006a5 66 41 0f d6 4c + 09 f8 movq QWORD PTR [r9+rcx-8], xmm1 + 006ac 4d 3b c2 cmp r8, r10 + 006af 7c df jl SHORT $LL296@stbi__crea +$LN295@stbi__crea: + 006b1 4d 3b c6 cmp r8, r14 + 006b4 7d 2e jge SHORT $LN44@stbi__crea + 006b6 4d 8b d3 mov r10, r11 + 006b9 49 8d 14 18 lea rdx, QWORD PTR [r8+rbx] + 006bd 48 8b f8 mov rdi, rax + 006c0 4c 2b d3 sub r10, rbx + 006c3 48 2b fb sub rdi, rbx + 006c6 4d 8b ce mov r9, r14 + 006c9 4d 2b c8 sub r9, r8 + 006cc 0f 1f 40 00 npad 4 +$LL294@stbi__crea: + 006d0 42 0f b6 0c 12 movzx ecx, BYTE PTR [rdx+r10] + 006d5 02 0a add cl, BYTE PTR [rdx] + 006d7 88 0c 17 mov BYTE PTR [rdi+rdx], cl + 006da 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 006de 49 83 e9 01 sub r9, 1 + 006e2 75 ec jne SHORT $LL294@stbi__crea +$LN44@stbi__crea: + 006e4 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 006e9 48 03 dd add rbx, rbp + 006ec 49 03 c5 add rax, r13 + 006ef 4d 03 dd add r11, r13 + 006f2 41 b9 00 00 00 + 00 mov r9d, 0 + 006f8 48 83 ee 01 sub rsi, 1 + 006fc 0f 85 71 fe ff + ff jne $LL46@stbi__crea + 00702 48 8b 6c 24 60 mov rbp, QWORD PTR cur$9$[rsp] + 00707 e9 4a 02 00 00 jmp $LN494@stbi__crea +$LN131@stbi__crea: + +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; + + 0070c 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 00713 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 00716 83 f9 01 cmp ecx, 1 + 00719 0f 82 3e 02 00 + 00 jb $LN69@stbi__crea + 0071f 4d 63 fc movsxd r15, r12d + 00722 8b e9 mov ebp, ecx +$LL52@stbi__crea: + 00724 4d 85 f6 test r14, r14 + 00727 7e 48 jle SHORT $LN50@stbi__crea + 00729 4c 8b c8 mov r9, rax + 0072c 48 8b fb mov rdi, rbx + 0072f 4d 2b cd sub r9, r13 + 00732 49 2b fb sub rdi, r11 + 00735 4d 2b cb sub r9, r11 + 00738 48 8b f0 mov rsi, rax + 0073b 49 2b f3 sub rsi, r11 + 0073e 4d 8b c3 mov r8, r11 + 00741 4d 8b d6 mov r10, r14 + 00744 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL55@stbi__crea: + 00750 43 0f b6 14 08 movzx edx, BYTE PTR [r8+r9] + 00755 41 0f b6 08 movzx ecx, BYTE PTR [r8] + 00759 4d 8d 40 01 lea r8, QWORD PTR [r8+1] + 0075d 03 d1 add edx, ecx + 0075f d1 ea shr edx, 1 + 00761 42 02 54 07 ff add dl, BYTE PTR [rdi+r8-1] + 00766 42 88 54 06 ff mov BYTE PTR [rsi+r8-1], dl + 0076b 49 83 ea 01 sub r10, 1 + 0076f 75 df jne SHORT $LL55@stbi__crea +$LN50@stbi__crea: + 00771 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 00776 49 03 df add rbx, r15 + 00779 49 03 c5 add rax, r13 + 0077c 4d 03 dd add r11, r13 + 0077f 48 83 ed 01 sub rbp, 1 + 00783 75 9f jne SHORT $LL52@stbi__crea + 00785 48 8b 6c 24 60 mov rbp, QWORD PTR cur$9$[rsp] + 0078a e9 c7 01 00 00 jmp $LN494@stbi__crea +$LN132@stbi__crea: + +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; + + 0078f 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 00796 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 00799 83 f9 01 cmp ecx, 1 + 0079c 0f 82 bb 01 00 + 00 jb $LN69@stbi__crea + 007a2 49 63 d4 movsxd rdx, r12d + 007a5 48 89 94 24 90 + 00 00 00 mov QWORD PTR tv5835[rsp], rdx + 007ad 48 89 4c 24 70 mov QWORD PTR tv5788[rsp], rcx +$LL58@stbi__crea: + 007b2 4d 85 f6 test r14, r14 + 007b5 0f 8e aa 00 00 + 00 jle $LN56@stbi__crea + 007bb 49 8b cb mov rcx, r11 + 007be 4c 8b d0 mov r10, rax + 007c1 48 2b c8 sub rcx, rax + 007c4 4d 2b d5 sub r10, r13 + 007c7 48 89 8c 24 80 + 00 00 00 mov QWORD PTR tv5731[rsp], rcx + 007cf 4d 8b e6 mov r12, r14 + 007d2 4c 8b b4 24 80 + 00 00 00 mov r14, QWORD PTR tv5731[rsp] + 007da 49 8b cd mov rcx, r13 + 007dd 48 2b c8 sub rcx, rax + 007e0 4a 8d 04 19 lea rax, QWORD PTR [rcx+r11] + 007e4 4c 8d 1c 0b lea r11, QWORD PTR [rbx+rcx] + 007e8 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL61@stbi__crea: + 007f0 45 0f b6 0a movzx r9d, BYTE PTR [r10] + 007f4 43 0f b6 2c 32 movzx ebp, BYTE PTR [r10+r14] + +; 4141 : int p = a + b - c; + + 007f9 41 8b d1 mov edx, r9d + +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; + + 007fc 46 0f b6 3c 10 movzx r15d, BYTE PTR [rax+r10] + +; 4141 : int p = a + b - c; + + 00801 2b d5 sub edx, ebp + +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); + + 00803 8b f2 mov esi, edx + 00805 45 8d 04 17 lea r8d, DWORD PTR [r15+rdx] + 00809 41 8b c8 mov ecx, r8d + 0080c 41 2b c9 sub ecx, r9d + 0080f 8b f9 mov edi, ecx + 00811 f7 df neg edi + 00813 0f 48 f9 cmovs edi, ecx + 00816 f7 de neg esi + 00818 0f 48 f2 cmovs esi, edx + +; 4144 : int pc = abs(p - c); + + 0081b 44 2b c5 sub r8d, ebp + 0081e 41 8b c8 mov ecx, r8d + 00821 f7 d9 neg ecx + 00823 41 0f 48 c8 cmovs ecx, r8d + +; 4145 : if (pa <= pb && pa <= pc) return a; + + 00827 3b fe cmp edi, esi + 00829 7f 04 jg SHORT $LN223@stbi__crea + 0082b 3b f9 cmp edi, ecx + 0082d 7e 09 jle SHORT $LN224@stbi__crea +$LN223@stbi__crea: + +; 4146 : if (pb <= pc) return b; + + 0082f 3b f1 cmp esi, ecx + 00831 44 8b cd mov r9d, ebp + 00834 45 0f 4e cf cmovle r9d, r15d +$LN224@stbi__crea: + +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; + + 00838 47 02 0c 13 add r9b, BYTE PTR [r11+r10] + 0083c 47 88 0c 2a mov BYTE PTR [r10+r13], r9b + 00840 49 ff c2 inc r10 + 00843 49 83 ec 01 sub r12, 1 + 00847 75 a7 jne SHORT $LL61@stbi__crea + 00849 48 8b 44 24 40 mov rax, QWORD PTR cur$8$[rsp] + 0084e 4c 8b 5c 24 58 mov r11, QWORD PTR prior$4$[rsp] + 00853 4c 8b 74 24 68 mov r14, QWORD PTR $T15[rsp] + 00858 48 8b 4c 24 70 mov rcx, QWORD PTR tv5788[rsp] + 0085d 48 8b 94 24 90 + 00 00 00 mov rdx, QWORD PTR tv5835[rsp] +$LN56@stbi__crea: + 00865 4d 03 dd add r11, r13 + 00868 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 0086d 49 03 c5 add rax, r13 + 00870 4c 89 5c 24 58 mov QWORD PTR prior$4$[rsp], r11 + 00875 48 03 da add rbx, rdx + 00878 48 89 44 24 40 mov QWORD PTR cur$8$[rsp], rax + 0087d 48 83 e9 01 sub rcx, 1 + 00881 48 89 4c 24 70 mov QWORD PTR tv5788[rsp], rcx + 00886 0f 85 26 ff ff + ff jne $LL58@stbi__crea + 0088c 48 8b 6c 24 60 mov rbp, QWORD PTR cur$9$[rsp] + 00891 e9 c0 00 00 00 jmp $LN494@stbi__crea +$LN133@stbi__crea: + +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; + + 00896 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 0089d 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 008a0 83 f9 01 cmp ecx, 1 + 008a3 0f 82 b4 00 00 + 00 jb $LN69@stbi__crea + 008a9 49 63 fc movsxd rdi, r12d + 008ac 44 8b d9 mov r11d, ecx + 008af 90 npad 1 +$LL64@stbi__crea: + 008b0 4d 85 f6 test r14, r14 + 008b3 7e 34 jle SHORT $LN62@stbi__crea + 008b5 4c 8b c0 mov r8, rax + 008b8 4c 8b d0 mov r10, rax + 008bb 4d 2b c5 sub r8, r13 + 008be 48 8b d3 mov rdx, rbx + 008c1 4c 2b c3 sub r8, rbx + 008c4 4d 8b ce mov r9, r14 + 008c7 4c 2b d3 sub r10, rbx + 008ca 66 0f 1f 44 00 + 00 npad 6 +$LL67@stbi__crea: + 008d0 42 0f b6 0c 02 movzx ecx, BYTE PTR [rdx+r8] + 008d5 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 008d9 d0 e9 shr cl, 1 + 008db 02 4a ff add cl, BYTE PTR [rdx-1] + 008de 41 88 4c 12 ff mov BYTE PTR [r10+rdx-1], cl + 008e3 49 83 e9 01 sub r9, 1 + 008e7 75 e7 jne SHORT $LL67@stbi__crea +$LN62@stbi__crea: + 008e9 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 008ee 48 03 df add rbx, rdi + 008f1 49 03 c5 add rax, r13 + 008f4 49 83 eb 01 sub r11, 1 + 008f8 75 b6 jne SHORT $LL64@stbi__crea + 008fa eb 5a jmp SHORT $LN494@stbi__crea +$LN134@stbi__crea: + +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; + + 008fc 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] + 00903 8d 4a ff lea ecx, DWORD PTR [rdx-1] + 00906 83 f9 01 cmp ecx, 1 + 00909 72 52 jb SHORT $LN69@stbi__crea + 0090b 49 63 fc movsxd rdi, r12d + 0090e 44 8b d9 mov r11d, ecx +$LL70@stbi__crea: + 00911 4d 85 f6 test r14, r14 + 00914 7e 2f jle SHORT $LN68@stbi__crea + 00916 4c 8b c0 mov r8, rax + 00919 4c 8b d0 mov r10, rax + 0091c 4d 2b c5 sub r8, r13 + 0091f 48 8b d3 mov rdx, rbx + 00922 4c 2b c3 sub r8, rbx + 00925 4d 8b ce mov r9, r14 + 00928 4c 2b d3 sub r10, rbx + 0092b 0f 1f 44 00 00 npad 5 +$LL73@stbi__crea: + +; 4145 : if (pa <= pb && pa <= pc) return a; + + 00930 42 0f b6 0c 02 movzx ecx, BYTE PTR [rdx+r8] + +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; + + 00935 02 0a add cl, BYTE PTR [rdx] + 00937 41 88 0c 12 mov BYTE PTR [r10+rdx], cl + 0093b 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 0093f 49 83 e9 01 sub r9, 1 + 00943 75 eb jne SHORT $LL73@stbi__crea +$LN68@stbi__crea: + 00945 41 c6 04 06 ff mov BYTE PTR [r14+rax], 255 ; 000000ffH + 0094a 48 03 df add rbx, rdi + 0094d 49 03 c5 add rax, r13 + 00950 49 83 eb 01 sub r11, 1 + 00954 75 bb jne SHORT $LL70@stbi__crea +$LN494@stbi__crea: + +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { + + 00956 8b 94 24 10 01 + 00 00 mov edx, DWORD PTR x$[rsp] +$LN69@stbi__crea: + 0095d 83 bc 24 20 01 + 00 00 10 cmp DWORD PTR depth$[rsp], 16 + 00965 0f 85 4f 03 00 + 00 jne $LN2@stbi__crea + +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { + + 0096b 85 d2 test edx, edx + 0096d 0f 84 47 03 00 + 00 je $LN2@stbi__crea + +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again + + 00973 8b c2 mov eax, edx + 00975 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL76@stbi__crea: + +; 4274 : cur[filter_bytes + 1] = 255; + + 00980 41 c6 44 2e 01 + ff mov BYTE PTR [r14+rbp+1], 255 ; 000000ffH + 00986 49 03 ed add rbp, r13 + 00989 48 83 e8 01 sub rax, 1 + 0098d 75 f1 jne SHORT $LL76@stbi__crea + +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); + + 0098f e9 26 03 00 00 jmp $LN2@stbi__crea +$LN120@stbi__crea: + +; 4235 : int nk = (width - 1) * filter_bytes; + + 00994 8b 74 24 48 mov esi, DWORD PTR width$1$[rsp] + 00998 ff ce dec esi + 0099a 41 0f af f4 imul esi, r12d + 0099e 89 74 24 40 mov DWORD PTR nk$1$[rsp], esi + +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { + + 009a2 41 83 fa 06 cmp r10d, 6 + 009a6 0f 87 08 03 00 + 00 ja $LN28@stbi__crea + 009ac 49 63 ca movsxd rcx, r10d + 009af 4c 8d 15 00 00 + 00 00 lea r10, OFFSET FLAT:__ImageBase + 009b6 4c 63 c6 movsxd r8, esi + 009b9 41 8b 94 8a 00 + 00 00 00 mov edx, DWORD PTR $LN394@stbi__crea[r10+rcx*4] + 009c1 49 03 d2 add rdx, r10 + 009c4 ff e2 jmp rdx +$LN121@stbi__crea: + +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; + + 009c6 48 8b d3 mov rdx, rbx + 009c9 48 8b c8 mov rcx, rax + 009cc e8 00 00 00 00 call memcpy + 009d1 e9 de 02 00 00 jmp $LN28@stbi__crea +$LN122@stbi__crea: + +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; + + 009d6 85 f6 test esi, esi + 009d8 0f 8e d6 02 00 + 00 jle $LN28@stbi__crea + 009de 4c 8b c8 mov r9, rax + 009e1 48 8b d3 mov rdx, rbx + 009e4 4d 2b ce sub r9, r14 + 009e7 4c 2b cb sub r9, rbx + 009ea 48 2b c3 sub rax, rbx + 009ed 0f 1f 00 npad 3 +$LL14@stbi__crea: + 009f0 42 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+r9] + 009f5 02 0a add cl, BYTE PTR [rdx] + 009f7 88 0c 10 mov BYTE PTR [rax+rdx], cl + 009fa 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 009fe 49 83 e8 01 sub r8, 1 + 00a02 75 ec jne SHORT $LL14@stbi__crea + 00a04 e9 ab 02 00 00 jmp $LN28@stbi__crea +$LN123@stbi__crea: + +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + + 00a09 85 f6 test esi, esi + 00a0b 0f 8e 30 01 00 + 00 jle $LN301@stbi__crea + 00a11 83 fe 08 cmp esi, 8 + 00a14 0f 82 27 01 00 + 00 jb $LN301@stbi__crea + 00a1a 8d 4e ff lea ecx, DWORD PTR [rsi-1] + 00a1d 45 33 c9 xor r9d, r9d + 00a20 48 63 d1 movsxd rdx, ecx + 00a23 48 8d 0c 1a lea rcx, QWORD PTR [rdx+rbx] + 00a27 4c 8d 14 02 lea r10, QWORD PTR [rdx+rax] + 00a2b 48 3b c1 cmp rax, rcx + 00a2e 77 09 ja SHORT $LN304@stbi__crea + 00a30 4c 3b d3 cmp r10, rbx + 00a33 0f 83 08 01 00 + 00 jae $LN301@stbi__crea +$LN304@stbi__crea: + 00a39 4a 8d 0c 1a lea rcx, QWORD PTR [rdx+r11] + 00a3d 48 3b c1 cmp rax, rcx + 00a40 77 09 ja SHORT $LN305@stbi__crea + 00a42 4d 3b d3 cmp r10, r11 + 00a45 0f 83 f6 00 00 + 00 jae $LN301@stbi__crea +$LN305@stbi__crea: + 00a4b 83 fe 40 cmp esi, 64 ; 00000040H + 00a4e 0f 82 9a 00 00 + 00 jb $LN303@stbi__crea + 00a54 8b d6 mov edx, esi + 00a56 81 e2 3f 00 00 + 80 and edx, -2147483585 ; ffffffff8000003fH + 00a5c 7d 07 jge SHORT $LN393@stbi__crea + 00a5e ff ca dec edx + 00a60 83 ca c0 or edx, -64 ; ffffffffffffffc0H + 00a63 ff c2 inc edx +$LN393@stbi__crea: + 00a65 8b ce mov ecx, esi + 00a67 2b ca sub ecx, edx + 00a69 49 8b d3 mov rdx, r11 + 00a6c 48 63 f9 movsxd rdi, ecx + 00a6f 48 2b d3 sub rdx, rbx + 00a72 48 8d 4b 10 lea rcx, QWORD PTR [rbx+16] + 00a76 4c 8b d0 mov r10, rax + 00a79 4c 2b d3 sub r10, rbx + 00a7c 0f 1f 40 00 npad 4 +$LL17@stbi__crea: + 00a80 f3 0f 6f 41 f0 movdqu xmm0, XMMWORD PTR [rcx-16] + 00a85 49 83 c1 40 add r9, 64 ; 00000040H + 00a89 f3 0f 6f 4c 11 + f0 movdqu xmm1, XMMWORD PTR [rcx+rdx-16] + 00a8f f3 0f 6f 14 11 movdqu xmm2, XMMWORD PTR [rcx+rdx] + 00a94 48 8d 49 40 lea rcx, QWORD PTR [rcx+64] + 00a98 66 0f fc c8 paddb xmm1, xmm0 + 00a9c f3 0f 6f 41 c0 movdqu xmm0, XMMWORD PTR [rcx-64] + 00aa1 f3 41 0f 7f 4c + 0a b0 movdqu XMMWORD PTR [r10+rcx-80], xmm1 + 00aa8 66 0f fc d0 paddb xmm2, xmm0 + 00aac f3 0f 6f 41 d0 movdqu xmm0, XMMWORD PTR [rcx-48] + 00ab1 f3 0f 6f 4c 11 + d0 movdqu xmm1, XMMWORD PTR [rcx+rdx-48] + 00ab7 f3 41 0f 7f 54 + 0a c0 movdqu XMMWORD PTR [r10+rcx-64], xmm2 + 00abe 66 0f fc c8 paddb xmm1, xmm0 + 00ac2 f3 0f 6f 41 e0 movdqu xmm0, XMMWORD PTR [rcx-32] + 00ac7 f3 0f 6f 54 11 + e0 movdqu xmm2, XMMWORD PTR [rcx+rdx-32] + 00acd f3 41 0f 7f 4c + 0a d0 movdqu XMMWORD PTR [r10+rcx-48], xmm1 + 00ad4 66 0f fc d0 paddb xmm2, xmm0 + 00ad8 f3 41 0f 7f 54 + 0a e0 movdqu XMMWORD PTR [r10+rcx-32], xmm2 + 00adf 4c 3b cf cmp r9, rdi + 00ae2 7c 9c jl SHORT $LL17@stbi__crea + 00ae4 8b ce mov ecx, esi + 00ae6 80 e1 3f and cl, 63 ; 0000003fH + 00ae9 80 f9 08 cmp cl, 8 + 00aec 72 53 jb SHORT $LN301@stbi__crea +$LN303@stbi__crea: + 00aee 8b d6 mov edx, esi + 00af0 81 e2 07 00 00 + 80 and edx, -2147483641 ; ffffffff80000007H + 00af6 7d 07 jge SHORT $LN392@stbi__crea + 00af8 ff ca dec edx + 00afa 83 ca f8 or edx, -8 + 00afd ff c2 inc edx +$LN392@stbi__crea: + 00aff 8b ce mov ecx, esi + 00b01 2b ca sub ecx, edx + 00b03 49 8b d3 mov rdx, r11 + 00b06 48 63 f9 movsxd rdi, ecx + 00b09 48 2b d3 sub rdx, rbx + 00b0c 49 8d 0c 19 lea rcx, QWORD PTR [r9+rbx] + 00b10 4c 8b d0 mov r10, rax + 00b13 4c 2b d3 sub r10, rbx + 00b16 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL302@stbi__crea: + 00b20 f3 0f 7e 0c 11 movq xmm1, QWORD PTR [rcx+rdx] + 00b25 49 83 c1 08 add r9, 8 + 00b29 f3 0f 7e 01 movq xmm0, QWORD PTR [rcx] + 00b2d 48 8d 49 08 lea rcx, QWORD PTR [rcx+8] + 00b31 66 0f fc c8 paddb xmm1, xmm0 + 00b35 66 41 0f d6 4c + 0a f8 movq QWORD PTR [r10+rcx-8], xmm1 + 00b3c 4c 3b cf cmp r9, rdi + 00b3f 7c df jl SHORT $LL302@stbi__crea +$LN301@stbi__crea: + 00b41 4d 3b c8 cmp r9, r8 + 00b44 0f 8d 6a 01 00 + 00 jge $LN28@stbi__crea + 00b4a 4c 2b db sub r11, rbx + 00b4d 49 8d 14 19 lea rdx, QWORD PTR [r9+rbx] + 00b51 48 2b c3 sub rax, rbx + 00b54 4d 2b c1 sub r8, r9 + 00b57 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL300@stbi__crea: + 00b60 42 0f b6 0c 1a movzx ecx, BYTE PTR [rdx+r11] + 00b65 02 0a add cl, BYTE PTR [rdx] + 00b67 88 0c 10 mov BYTE PTR [rax+rdx], cl + 00b6a 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 00b6e 49 83 e8 01 sub r8, 1 + 00b72 75 ec jne SHORT $LL300@stbi__crea + 00b74 e9 3b 01 00 00 jmp $LN28@stbi__crea +$LN124@stbi__crea: + +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; + + 00b79 85 f6 test esi, esi + 00b7b 0f 8e 33 01 00 + 00 jle $LN28@stbi__crea + 00b81 4c 8b c8 mov r9, rax + 00b84 4c 8b d3 mov r10, rbx + 00b87 4d 2b ce sub r9, r14 + 00b8a 4d 2b d3 sub r10, r11 + 00b8d 4d 2b cb sub r9, r11 + 00b90 49 2b c3 sub rax, r11 + 00b93 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL20@stbi__crea: + 00ba0 43 0f b6 14 0b movzx edx, BYTE PTR [r11+r9] + 00ba5 41 0f b6 0b movzx ecx, BYTE PTR [r11] + 00ba9 4d 8d 5b 01 lea r11, QWORD PTR [r11+1] + 00bad 03 d1 add edx, ecx + 00baf d1 ea shr edx, 1 + 00bb1 43 02 54 1a ff add dl, BYTE PTR [r10+r11-1] + 00bb6 42 88 54 18 ff mov BYTE PTR [rax+r11-1], dl + 00bbb 49 83 e8 01 sub r8, 1 + 00bbf 75 df jne SHORT $LL20@stbi__crea + 00bc1 e9 ee 00 00 00 jmp $LN28@stbi__crea +$LN125@stbi__crea: + +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; + + 00bc6 85 f6 test esi, esi + 00bc8 0f 8e e6 00 00 + 00 jle $LN28@stbi__crea + 00bce 4c 8b d0 mov r10, rax + 00bd1 4d 8b e3 mov r12, r11 + 00bd4 4d 2b d6 sub r10, r14 + 00bd7 4c 2b e0 sub r12, rax + 00bda 49 8b ce mov rcx, r14 + 00bdd 48 2b c8 sub rcx, rax + 00be0 4e 8d 2c 19 lea r13, QWORD PTR [rcx+r11] + 00be4 4c 8d 3c 19 lea r15, QWORD PTR [rcx+rbx] + 00be8 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL23@stbi__crea: + 00bf0 45 0f b6 0a movzx r9d, BYTE PTR [r10] + 00bf4 43 0f b6 34 22 movzx esi, BYTE PTR [r10+r12] + +; 4141 : int p = a + b - c; + + 00bf9 41 8b c9 mov ecx, r9d + +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; + + 00bfc 43 0f b6 2c 2a movzx ebp, BYTE PTR [r10+r13] + +; 4141 : int p = a + b - c; + + 00c01 2b ce sub ecx, esi + +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); + + 00c03 8b f9 mov edi, ecx + 00c05 8d 14 29 lea edx, DWORD PTR [rcx+rbp] + 00c08 8b c2 mov eax, edx + 00c0a 41 2b c1 sub eax, r9d + 00c0d 44 8b d8 mov r11d, eax + 00c10 41 f7 db neg r11d + 00c13 44 0f 48 d8 cmovs r11d, eax + 00c17 f7 df neg edi + 00c19 0f 48 f9 cmovs edi, ecx + +; 4144 : int pc = abs(p - c); + + 00c1c 2b d6 sub edx, esi + 00c1e 8b c2 mov eax, edx + 00c20 f7 d8 neg eax + 00c22 0f 48 c2 cmovs eax, edx + +; 4145 : if (pa <= pb && pa <= pc) return a; + + 00c25 44 3b df cmp r11d, edi + 00c28 7f 05 jg SHORT $LN215@stbi__crea + 00c2a 44 3b d8 cmp r11d, eax + 00c2d 7e 09 jle SHORT $LN216@stbi__crea +$LN215@stbi__crea: + +; 4146 : if (pb <= pc) return b; + + 00c2f 3b f8 cmp edi, eax + 00c31 44 8b ce mov r9d, esi + 00c34 44 0f 4e cd cmovle r9d, ebp +$LN216@stbi__crea: + +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; + + 00c38 47 02 0c 17 add r9b, BYTE PTR [r15+r10] + 00c3c 47 88 0c 16 mov BYTE PTR [r14+r10], r9b + 00c40 49 ff c2 inc r10 + 00c43 49 83 e8 01 sub r8, 1 + 00c47 75 a7 jne SHORT $LL23@stbi__crea + 00c49 4c 8b ac 24 98 + 00 00 00 mov r13, QWORD PTR $T16[rsp] + 00c51 8b 74 24 40 mov esi, DWORD PTR nk$1$[rsp] + 00c55 eb 5d jmp SHORT $LN28@stbi__crea +$LN126@stbi__crea: + +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; + + 00c57 85 f6 test esi, esi + 00c59 7e 59 jle SHORT $LN28@stbi__crea + 00c5b 4c 8b c8 mov r9, rax + 00c5e 48 8b d3 mov rdx, rbx + 00c61 4d 2b ce sub r9, r14 + 00c64 4c 2b cb sub r9, rbx + 00c67 48 2b c3 sub rax, rbx + 00c6a 66 0f 1f 44 00 + 00 npad 6 +$LL26@stbi__crea: + 00c70 42 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+r9] + 00c75 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 00c79 d0 e9 shr cl, 1 + 00c7b 02 4a ff add cl, BYTE PTR [rdx-1] + 00c7e 88 4c 10 ff mov BYTE PTR [rax+rdx-1], cl + 00c82 49 83 e8 01 sub r8, 1 + 00c86 75 e8 jne SHORT $LL26@stbi__crea + 00c88 eb 2a jmp SHORT $LN28@stbi__crea +$LN127@stbi__crea: + +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; + + 00c8a 85 f6 test esi, esi + 00c8c 7e 26 jle SHORT $LN28@stbi__crea + 00c8e 4c 8b c8 mov r9, rax + 00c91 48 8b d3 mov rdx, rbx + 00c94 4d 2b ce sub r9, r14 + 00c97 4c 2b cb sub r9, rbx + 00c9a 48 2b c3 sub rax, rbx + 00c9d 0f 1f 00 npad 3 +$LL29@stbi__crea: + +; 4145 : if (pa <= pb && pa <= pc) return a; + + 00ca0 42 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+r9] + +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; + + 00ca5 02 0a add cl, BYTE PTR [rdx] + 00ca7 88 0c 10 mov BYTE PTR [rax+rdx], cl + 00caa 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 00cae 49 83 e8 01 sub r8, 1 + 00cb2 75 ec jne SHORT $LL29@stbi__crea +$LN28@stbi__crea: + +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; + + 00cb4 48 63 c6 movsxd rax, esi + 00cb7 48 03 d8 add rbx, rax +$LN2@stbi__crea: + +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { + + 00cba 8b 54 24 4c mov edx, DWORD PTR j$1$[rsp] + 00cbe 45 33 c9 xor r9d, r9d + 00cc1 8b b4 24 18 01 + 00 00 mov esi, DWORD PTR y$[rsp] + 00cc8 ff c2 inc edx + 00cca 44 8b bc 24 10 + 01 00 00 mov r15d, DWORD PTR x$[rsp] + 00cd2 8b 4c 24 54 mov ecx, DWORD PTR img_width_bytes$1$[rsp] + 00cd6 44 8b 9c 24 f0 + 00 00 00 mov r11d, DWORD PTR img_n$1$[rsp] + 00cde 89 54 24 4c mov DWORD PTR j$1$[rsp], edx + 00ce2 3b d6 cmp edx, esi + 00ce4 73 5c jae SHORT $LN485@stbi__crea + 00ce6 44 8b 64 24 50 mov r12d, DWORD PTR filter_bytes$1$[rsp] + 00ceb 4c 8b 44 24 28 mov r8, QWORD PTR $T13[rsp] + 00cf0 48 8b 7c 24 30 mov rdi, QWORD PTR $T14[rsp] + 00cf5 e9 26 f5 ff ff jmp $LL4@stbi__crea +$LN261@stbi__crea: + +; 431 : stbi__g_failure_reason = str; + + 00cfa 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d00 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d09 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00d0e 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d12 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@ + +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); + + 00d19 e9 89 f4 ff ff jmp $LN651@stbi__crea +$LN260@stbi__crea: + +; 431 : stbi__g_failure_reason = str; + + 00d1e 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d24 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d2d b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00d32 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d36 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@FBBCPGMN@invalid?5filter@ + +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); + + 00d3d e9 65 f4 ff ff jmp $LN651@stbi__crea +$LN485@stbi__crea: + +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { + + 00d42 44 8b 6c 24 20 mov r13d, DWORD PTR a$1$[rsp] + 00d47 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:__ImageBase + 00d4e 4c 8b 94 24 a0 + 00 00 00 mov r10, QWORD PTR cur$1$[rsp] +$LN3@stbi__crea: + +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { + + 00d56 48 63 9c 24 20 + 01 00 00 movsxd rbx, DWORD PTR depth$[rsp] + 00d5e 83 fb 08 cmp ebx, 8 + 00d61 0f 8d 6e 04 00 + 00 jge $LN136@stbi__crea + +; 4284 : for (j = 0; j < y; ++j) { + + 00d67 85 f6 test esi, esi + 00d69 0f 84 a6 04 00 + 00 je $LN96@stbi__crea + +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + 00d6f 44 8b b4 24 08 + 01 00 00 mov r14d, DWORD PTR out_n$[rsp] + 00d77 48 8d b3 00 00 + 00 00 lea rsi, QWORD PTR stbi__depth_scale_table[rbx] + 00d7e 44 8b a4 24 28 + 01 00 00 mov r12d, DWORD PTR color$[rsp] + 00d86 49 03 f0 add rsi, r8 + 00d89 45 0f af f7 imul r14d, r15d + 00d8d 49 63 ef movsxd rbp, r15d + 00d90 44 8b f9 mov r15d, ecx + 00d93 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL79@stbi__crea: + +; 4285 : stbi_uc* cur = a->out + stride * j; + + 00da0 48 8b 44 24 30 mov rax, QWORD PTR $T14[rsp] + 00da5 41 8b f9 mov edi, r9d + 00da8 0f af 7c 24 38 imul edi, DWORD PTR stride$1$[rsp] + +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; + + 00dad 4d 8b ce mov r9, r14 + 00db0 4d 2b cf sub r9, r15 + 00db3 4c 03 cf add r9, rdi + 00db6 4c 03 c8 add r9, rax + 00db9 4c 8d 04 07 lea r8, QWORD PTR [rdi+rax] + +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + 00dbd 45 85 e4 test r12d, r12d + 00dc0 75 06 jne SHORT $LN159@stbi__crea + 00dc2 44 0f b6 16 movzx r10d, BYTE PTR [rsi] + 00dc6 eb 03 jmp SHORT $LN160@stbi__crea +$LN159@stbi__crea: + 00dc8 41 b2 01 mov r10b, 1 +$LN160@stbi__crea: + +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { + + 00dcb 41 8b cd mov ecx, r13d + 00dce 83 fb 04 cmp ebx, 4 + 00dd1 0f 85 8c 00 00 + 00 jne $LN138@stbi__crea + +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { + + 00dd7 89 4c 24 20 mov DWORD PTR a$1$[rsp], ecx + 00ddb 8b d9 mov ebx, ecx + 00ddd 83 f9 02 cmp ecx, 2 + 00de0 7c 53 jl SHORT $LN81@stbi__crea + 00de2 44 8b d9 mov r11d, ecx + 00de5 89 4c 24 20 mov DWORD PTR a$1$[rsp], ecx + 00de9 49 d1 eb shr r11, 1 + 00dec 41 8b c3 mov eax, r11d + 00def f7 d8 neg eax + 00df1 8d 1c 41 lea ebx, DWORD PTR [rcx+rax*2] + 00df4 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL82@stbi__crea: + +; 4299 : *cur++ = scale * ((*in >> 4)); + + 00e00 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00e04 c0 e8 04 shr al, 4 + 00e07 0f b6 d0 movzx edx, al + 00e0a 41 0f b6 ca movzx ecx, r10b + 00e0e 0f af d1 imul edx, ecx + +; 4300 : *cur++ = scale * ((*in) & 0x0f); + + 00e11 41 0f b6 ca movzx ecx, r10b + 00e15 41 88 10 mov BYTE PTR [r8], dl + 00e18 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00e1c 49 ff c1 inc r9 + 00e1f 24 0f and al, 15 + 00e21 0f b6 d0 movzx edx, al + 00e24 0f af d1 imul edx, ecx + 00e27 41 88 50 01 mov BYTE PTR [r8+1], dl + 00e2b 49 83 c0 02 add r8, 2 + 00e2f 49 83 eb 01 sub r11, 1 + 00e33 75 cb jne SHORT $LL82@stbi__crea +$LN81@stbi__crea: + +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); + + 00e35 44 8b 6c 24 20 mov r13d, DWORD PTR a$1$[rsp] + 00e3a 44 8b 9c 24 f0 + 00 00 00 mov r11d, DWORD PTR img_n$1$[rsp] + 00e42 85 db test ebx, ebx + 00e44 0f 8e de 02 00 + 00 jle $LN650@stbi__crea + 00e4a 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00e4e c0 e8 04 shr al, 4 + 00e51 0f b6 d0 movzx edx, al + 00e54 41 0f b6 ca movzx ecx, r10b + 00e58 0f af d1 imul edx, ecx + 00e5b 41 88 10 mov BYTE PTR [r8], dl + +; 4303 : } + + 00e5e e9 c5 02 00 00 jmp $LN650@stbi__crea +$LN138@stbi__crea: + +; 4304 : else if (depth == 2) { + + 00e63 83 fb 02 cmp ebx, 2 + 00e66 0f 85 e8 00 00 + 00 jne $LN141@stbi__crea + +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { + + 00e6c 89 4c 24 20 mov DWORD PTR a$1$[rsp], ecx + 00e70 48 8b d9 mov rbx, rcx + 00e73 83 f9 04 cmp ecx, 4 + 00e76 7c 7d jl SHORT $LN84@stbi__crea + 00e78 4c 8b d9 mov r11, rcx + 00e7b 89 4c 24 20 mov DWORD PTR a$1$[rsp], ecx + 00e7f 49 c1 eb 02 shr r11, 2 + 00e83 41 8b c3 mov eax, r11d + 00e86 f7 d8 neg eax + 00e88 8d 1c 81 lea ebx, DWORD PTR [rcx+rax*4] + 00e8b 0f 1f 44 00 00 npad 5 +$LL85@stbi__crea: + +; 4306 : *cur++ = scale * ((*in >> 6)); + + 00e90 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00e94 c0 e8 06 shr al, 6 + 00e97 0f b6 d0 movzx edx, al + 00e9a 41 0f b6 ca movzx ecx, r10b + 00e9e 0f af d1 imul edx, ecx + +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); + + 00ea1 41 0f b6 c2 movzx eax, r10b + 00ea5 41 88 10 mov BYTE PTR [r8], dl + 00ea8 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00eac c0 e9 04 shr cl, 4 + 00eaf 80 e1 03 and cl, 3 + 00eb2 0f b6 c9 movzx ecx, cl + 00eb5 0f af c8 imul ecx, eax + +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); + + 00eb8 41 0f b6 c2 movzx eax, r10b + 00ebc 41 88 48 01 mov BYTE PTR [r8+1], cl + 00ec0 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00ec4 c0 e9 02 shr cl, 2 + 00ec7 80 e1 03 and cl, 3 + 00eca 0f b6 c9 movzx ecx, cl + 00ecd 0f af c8 imul ecx, eax + 00ed0 41 88 48 02 mov BYTE PTR [r8+2], cl + +; 4309 : *cur++ = scale * ((*in) & 0x03); + + 00ed4 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00ed8 49 ff c1 inc r9 + 00edb 24 03 and al, 3 + 00edd 41 0f b6 ca movzx ecx, r10b + 00ee1 0f b6 d0 movzx edx, al + 00ee4 0f af d1 imul edx, ecx + 00ee7 41 88 50 03 mov BYTE PTR [r8+3], dl + 00eeb 49 83 c0 04 add r8, 4 + 00eef 49 83 eb 01 sub r11, 1 + 00ef3 75 9b jne SHORT $LL85@stbi__crea +$LN84@stbi__crea: + +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); + + 00ef5 85 db test ebx, ebx + 00ef7 7e 17 jle SHORT $LN143@stbi__crea + 00ef9 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00efd c0 e8 06 shr al, 6 + 00f00 0f b6 d0 movzx edx, al + 00f03 41 0f b6 ca movzx ecx, r10b + 00f07 0f af d1 imul edx, ecx + 00f0a 41 88 10 mov BYTE PTR [r8], dl + 00f0d 49 ff c0 inc r8 +$LN143@stbi__crea: + +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + + 00f10 83 fb 01 cmp ebx, 1 + 00f13 7e 1a jle SHORT $LN144@stbi__crea + 00f15 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00f19 c0 e9 04 shr cl, 4 + 00f1c 80 e1 03 and cl, 3 + 00f1f 41 0f b6 c2 movzx eax, r10b + 00f23 0f b6 c9 movzx ecx, cl + 00f26 0f af c8 imul ecx, eax + 00f29 41 88 08 mov BYTE PTR [r8], cl + 00f2c 49 ff c0 inc r8 +$LN144@stbi__crea: + +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + + 00f2f 44 8b 6c 24 20 mov r13d, DWORD PTR a$1$[rsp] + 00f34 44 8b 9c 24 f0 + 00 00 00 mov r11d, DWORD PTR img_n$1$[rsp] + 00f3c 83 fb 02 cmp ebx, 2 + 00f3f 0f 8e e3 01 00 + 00 jle $LN650@stbi__crea + 00f45 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00f49 c0 e9 02 shr cl, 2 + 00f4c 80 e1 03 and cl, 3 + +; 4314 : } + + 00f4f e9 c7 01 00 00 jmp $LN652@stbi__crea +$LN141@stbi__crea: + +; 4315 : else if (depth == 1) { + + 00f54 44 8b e9 mov r13d, ecx + 00f57 83 fb 01 cmp ebx, 1 + 00f5a 0f 85 cd 01 00 + 00 jne $LN153@stbi__crea + +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { + + 00f60 4c 8b d9 mov r11, rcx + 00f63 83 f9 08 cmp ecx, 8 + 00f66 0f 8c dc 00 00 + 00 jl $LN87@stbi__crea + 00f6c 48 8b d9 mov rbx, rcx + 00f6f 48 c1 eb 03 shr rbx, 3 + 00f73 8b c3 mov eax, ebx + 00f75 f7 d8 neg eax + 00f77 44 8d 1c c1 lea r11d, DWORD PTR [rcx+rax*8] + 00f7b 0f 1f 44 00 00 npad 5 +$LL88@stbi__crea: + +; 4317 : *cur++ = scale * ((*in >> 7)); + + 00f80 41 0f b6 01 movzx eax, BYTE PTR [r9] + 00f84 c0 e8 07 shr al, 7 + 00f87 0f b6 d0 movzx edx, al + 00f8a 41 0f b6 ca movzx ecx, r10b + 00f8e 0f af d1 imul edx, ecx + +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); + + 00f91 41 0f b6 c2 movzx eax, r10b + 00f95 41 88 10 mov BYTE PTR [r8], dl + 00f98 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00f9c c0 e9 06 shr cl, 6 + 00f9f 80 e1 01 and cl, 1 + 00fa2 0f b6 c9 movzx ecx, cl + 00fa5 0f af c8 imul ecx, eax + +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); + + 00fa8 41 0f b6 c2 movzx eax, r10b + 00fac 41 88 48 01 mov BYTE PTR [r8+1], cl + 00fb0 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00fb4 c0 e9 05 shr cl, 5 + 00fb7 80 e1 01 and cl, 1 + 00fba 0f b6 c9 movzx ecx, cl + 00fbd 0f af c8 imul ecx, eax + +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); + + 00fc0 41 0f b6 c2 movzx eax, r10b + 00fc4 41 88 48 02 mov BYTE PTR [r8+2], cl + 00fc8 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00fcc c0 e9 04 shr cl, 4 + 00fcf 80 e1 01 and cl, 1 + 00fd2 0f b6 c9 movzx ecx, cl + 00fd5 0f af c8 imul ecx, eax + +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); + + 00fd8 41 0f b6 c2 movzx eax, r10b + 00fdc 41 88 48 03 mov BYTE PTR [r8+3], cl + 00fe0 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00fe4 c0 e9 03 shr cl, 3 + 00fe7 80 e1 01 and cl, 1 + 00fea 0f b6 c9 movzx ecx, cl + 00fed 0f af c8 imul ecx, eax + +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); + + 00ff0 41 0f b6 c2 movzx eax, r10b + 00ff4 41 88 48 04 mov BYTE PTR [r8+4], cl + 00ff8 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 00ffc c0 e9 02 shr cl, 2 + 00fff 80 e1 01 and cl, 1 + 01002 0f b6 c9 movzx ecx, cl + 01005 0f af c8 imul ecx, eax + +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); + + 01008 41 0f b6 c2 movzx eax, r10b + 0100c 41 88 48 05 mov BYTE PTR [r8+5], cl + 01010 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 01014 d0 e9 shr cl, 1 + 01016 80 e1 01 and cl, 1 + 01019 0f b6 c9 movzx ecx, cl + 0101c 0f af c8 imul ecx, eax + 0101f 41 88 48 06 mov BYTE PTR [r8+6], cl + +; 4324 : *cur++ = scale * ((*in) & 0x01); + + 01023 41 0f b6 01 movzx eax, BYTE PTR [r9] + 01027 49 ff c1 inc r9 + 0102a 24 01 and al, 1 + 0102c 41 0f b6 ca movzx ecx, r10b + 01030 0f b6 d0 movzx edx, al + 01033 0f af d1 imul edx, ecx + 01036 41 88 50 07 mov BYTE PTR [r8+7], dl + 0103a 49 83 c0 08 add r8, 8 + 0103e 48 83 eb 01 sub rbx, 1 + 01042 0f 85 38 ff ff + ff jne $LL88@stbi__crea +$LN87@stbi__crea: + +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); + + 01048 45 85 db test r11d, r11d + 0104b 7e 17 jle SHORT $LN147@stbi__crea + 0104d 41 0f b6 01 movzx eax, BYTE PTR [r9] + 01051 c0 e8 07 shr al, 7 + 01054 0f b6 d0 movzx edx, al + 01057 41 0f b6 ca movzx ecx, r10b + 0105b 0f af d1 imul edx, ecx + 0105e 41 88 10 mov BYTE PTR [r8], dl + 01061 49 ff c0 inc r8 +$LN147@stbi__crea: + +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + + 01064 41 83 fb 01 cmp r11d, 1 + 01068 7e 1a jle SHORT $LN148@stbi__crea + 0106a 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 0106e c0 e9 06 shr cl, 6 + 01071 80 e1 01 and cl, 1 + 01074 41 0f b6 c2 movzx eax, r10b + 01078 0f b6 c9 movzx ecx, cl + 0107b 0f af c8 imul ecx, eax + 0107e 41 88 08 mov BYTE PTR [r8], cl + 01081 49 ff c0 inc r8 +$LN148@stbi__crea: + +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + + 01084 41 83 fb 02 cmp r11d, 2 + 01088 7e 1a jle SHORT $LN149@stbi__crea + 0108a 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 0108e c0 e9 05 shr cl, 5 + 01091 80 e1 01 and cl, 1 + 01094 41 0f b6 c2 movzx eax, r10b + 01098 0f b6 c9 movzx ecx, cl + 0109b 0f af c8 imul ecx, eax + 0109e 41 88 08 mov BYTE PTR [r8], cl + 010a1 49 ff c0 inc r8 +$LN149@stbi__crea: + +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + + 010a4 41 83 fb 03 cmp r11d, 3 + 010a8 7e 1a jle SHORT $LN150@stbi__crea + 010aa 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 010ae c0 e9 04 shr cl, 4 + 010b1 80 e1 01 and cl, 1 + 010b4 41 0f b6 c2 movzx eax, r10b + 010b8 0f b6 c9 movzx ecx, cl + 010bb 0f af c8 imul ecx, eax + 010be 41 88 08 mov BYTE PTR [r8], cl + 010c1 49 ff c0 inc r8 +$LN150@stbi__crea: + +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + + 010c4 41 83 fb 04 cmp r11d, 4 + 010c8 7e 1a jle SHORT $LN151@stbi__crea + 010ca 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 010ce c0 e9 03 shr cl, 3 + 010d1 80 e1 01 and cl, 1 + 010d4 41 0f b6 c2 movzx eax, r10b + 010d8 0f b6 c9 movzx ecx, cl + 010db 0f af c8 imul ecx, eax + 010de 41 88 08 mov BYTE PTR [r8], cl + 010e1 49 ff c0 inc r8 +$LN151@stbi__crea: + +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + + 010e4 41 83 fb 05 cmp r11d, 5 + 010e8 7e 1a jle SHORT $LN152@stbi__crea + 010ea 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 010ee c0 e9 02 shr cl, 2 + 010f1 80 e1 01 and cl, 1 + 010f4 41 0f b6 c2 movzx eax, r10b + 010f8 0f b6 c9 movzx ecx, cl + 010fb 0f af c8 imul ecx, eax + 010fe 41 88 08 mov BYTE PTR [r8], cl + 01101 49 ff c0 inc r8 +$LN152@stbi__crea: + +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + + 01104 41 83 fb 06 cmp r11d, 6 + 01108 44 8b 9c 24 f0 + 00 00 00 mov r11d, DWORD PTR img_n$1$[rsp] + 01110 7e 16 jle SHORT $LN650@stbi__crea + 01112 41 0f b6 09 movzx ecx, BYTE PTR [r9] + 01116 d0 e9 shr cl, 1 + 01118 80 e1 01 and cl, 1 +$LN652@stbi__crea: + +; 4333 : } +; 4334 : if (img_n != out_n) { + + 0111b 41 0f b6 c2 movzx eax, r10b + 0111f 0f b6 c9 movzx ecx, cl + 01122 0f af c8 imul ecx, eax + 01125 41 88 08 mov BYTE PTR [r8], cl +$LN650@stbi__crea: + 01128 48 8b 44 24 30 mov rax, QWORD PTR $T14[rsp] +$LN153@stbi__crea: + 0112d 44 3b 9c 24 08 + 01 00 00 cmp r11d, DWORD PTR out_n$[rsp] + 01135 74 72 je SHORT $LN77@stbi__crea + +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; + + 01137 48 8d 14 07 lea rdx, QWORD PTR [rdi+rax] + 0113b 48 8d 4d ff lea rcx, QWORD PTR [rbp-1] + +; 4338 : if (img_n == 1) { + + 0113f 41 83 fb 01 cmp r11d, 1 + 01143 75 1f jne SHORT $LN155@stbi__crea + +; 4339 : for (q = x - 1; q >= 0; --q) { + + 01145 48 85 c9 test rcx, rcx + 01148 78 5f js SHORT $LN77@stbi__crea + 0114a 66 0f 1f 44 00 + 00 npad 6 +$LL91@stbi__crea: + +; 4340 : cur[q * 2 + 1] = 255; + + 01150 c6 44 4a 01 ff mov BYTE PTR [rdx+rcx*2+1], 255 ; 000000ffH + +; 4341 : cur[q * 2 + 0] = cur[q]; + + 01155 0f b6 04 11 movzx eax, BYTE PTR [rcx+rdx] + 01159 88 04 4a mov BYTE PTR [rdx+rcx*2], al + 0115c 48 83 e9 01 sub rcx, 1 + 01160 79 ee jns SHORT $LL91@stbi__crea + +; 4342 : } +; 4343 : } + + 01162 eb 45 jmp SHORT $LN77@stbi__crea +$LN155@stbi__crea: + +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { + + 01164 48 85 c9 test rcx, rcx + 01167 78 40 js SHORT $LN77@stbi__crea + 01169 4c 8d 04 4d 01 + 00 00 00 lea r8, QWORD PTR [rcx*2+1] + 01171 4c 03 c2 add r8, rdx + 01174 48 8d 14 8a lea rdx, QWORD PTR [rdx+rcx*4] + 01178 4c 03 c1 add r8, rcx + 0117b 48 83 c2 02 add rdx, 2 + 0117f 90 npad 1 +$LL94@stbi__crea: + 01180 48 83 e9 01 sub rcx, 1 + +; 4347 : cur[q * 4 + 3] = 255; + + 01184 c6 42 01 ff mov BYTE PTR [rdx+1], 255 ; 000000ffH + +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; + + 01188 41 0f b6 40 01 movzx eax, BYTE PTR [r8+1] + 0118d 4d 8d 40 fd lea r8, QWORD PTR [r8-3] + 01191 88 02 mov BYTE PTR [rdx], al + 01193 48 8d 52 fc lea rdx, QWORD PTR [rdx-4] + +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; + + 01197 41 0f b6 40 03 movzx eax, BYTE PTR [r8+3] + 0119c 88 42 03 mov BYTE PTR [rdx+3], al + +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; + + 0119f 41 0f b6 40 02 movzx eax, BYTE PTR [r8+2] + 011a4 88 42 02 mov BYTE PTR [rdx+2], al + 011a7 79 d7 jns SHORT $LL94@stbi__crea +$LN77@stbi__crea: + +; 4284 : for (j = 0; j < y; ++j) { + + 011a9 4c 8b 4c 24 78 mov r9, QWORD PTR tv5875[rsp] + 011ae 8b 9c 24 20 01 + 00 00 mov ebx, DWORD PTR depth$[rsp] + 011b5 41 ff c1 inc r9d + 011b8 4c 89 4c 24 78 mov QWORD PTR tv5875[rsp], r9 + 011bd 44 3b 8c 24 18 + 01 00 00 cmp r9d, DWORD PTR y$[rsp] + 011c5 0f 82 d5 fb ff + ff jb $LL79@stbi__crea + +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; + + 011cb b8 01 00 00 00 mov eax, 1 + 011d0 e9 d8 ef ff ff jmp $LN649@stbi__crea +$LN136@stbi__crea: + +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { + + 011d5 83 fb 10 cmp ebx, 16 + 011d8 75 3b jne SHORT $LN96@stbi__crea + +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { + + 011da 8b 84 24 08 01 + 00 00 mov eax, DWORD PTR out_n$[rsp] + 011e1 4d 8b c2 mov r8, r10 + 011e4 41 0f af c7 imul eax, r15d + 011e8 0f af c6 imul eax, esi + 011eb 85 c0 test eax, eax + 011ed 74 26 je SHORT $LN96@stbi__crea + +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; + + 011ef 44 8b c8 mov r9d, eax +$LL97@stbi__crea: + +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; + + 011f2 41 0f b6 12 movzx edx, BYTE PTR [r10] + 011f6 4d 8d 52 02 lea r10, QWORD PTR [r10+2] + 011fa 41 0f b6 48 01 movzx ecx, BYTE PTR [r8+1] + 011ff 4d 8d 40 02 lea r8, QWORD PTR [r8+2] + 01203 66 c1 e2 08 shl dx, 8 + 01207 66 0b d1 or dx, cx + 0120a 66 41 89 50 fe mov WORD PTR [r8-2], dx + 0120f 49 83 e9 01 sub r9, 1 + 01213 75 dd jne SHORT $LL97@stbi__crea +$LN96@stbi__crea: + +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; + + 01215 b8 01 00 00 00 mov eax, 1 + 0121a e9 8e ef ff ff jmp $LN649@stbi__crea +$LN384@stbi__crea: + +; 431 : stbi__g_failure_reason = str; + + 0121f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 01225 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0122e b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 01233 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 01237 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + + 0123e e9 64 ef ff ff jmp $LN651@stbi__crea +$LN388@stbi__crea: + +; 508 : if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + + 01243 4c 89 46 18 mov QWORD PTR [rsi+24], r8 +$LN387@stbi__crea: + +; 431 : stbi__g_failure_reason = str; + + 01247 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0124d 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 01256 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0125b 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0125f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 01266 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); + + 0126a 33 c0 xor eax, eax + 0126c e9 44 ef ff ff jmp $LN1@stbi__crea + 01271 0f 1f 00 npad 3 +$LN398@stbi__crea: + +; 4370 : } + + 01274 00 00 00 00 DD $LL406@stbi__crea + 01278 00 00 00 00 DD $LL407@stbi__crea + 0127c 00 00 00 00 DD $LL447@stbi__crea + 01280 00 00 00 00 DD $LL448@stbi__crea + 01284 00 00 00 00 DD $LL449@stbi__crea + 01288 00 00 00 00 DD $LL450@stbi__crea + 0128c 00 00 00 00 DD $LL451@stbi__crea +$LN397@stbi__crea: + 01290 00 00 00 00 DD $LN128@stbi__crea + 01294 00 00 00 00 DD $LN129@stbi__crea + 01298 00 00 00 00 DD $LN130@stbi__crea + 0129c 00 00 00 00 DD $LN131@stbi__crea + 012a0 00 00 00 00 DD $LN132@stbi__crea + 012a4 00 00 00 00 DD $LN133@stbi__crea + 012a8 00 00 00 00 DD $LN134@stbi__crea +$LN394@stbi__crea: + 012ac 00 00 00 00 DD $LN121@stbi__crea + 012b0 00 00 00 00 DD $LN122@stbi__crea + 012b4 00 00 00 00 DD $LN123@stbi__crea + 012b8 00 00 00 00 DD $LN124@stbi__crea + 012bc 00 00 00 00 DD $LN125@stbi__crea + 012c0 00 00 00 00 DD $LN126@stbi__crea + 012c4 00 00 00 00 DD $LN127@stbi__crea +stbi__create_png_image_raw ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__create_png_image +_TEXT SEGMENT +tv892 = 64 +p$1$ = 68 +tv900 = 72 +tv906 = 76 +tv905 = 80 +x$1$ = 84 +y$1$ = 88 +tv890 = 92 +tv901 = 96 +img_len$1$ = 100 +final$1$ = 104 +tv889 = 112 +tv902 = 120 +xspc$4 = 128 +xorig$5 = 160 +yspc$6 = 192 +yorig$7 = 224 +a$ = 336 +image_data$ = 344 +image_data_len$ = 352 +out_n$ = 360 +depth$ = 368 +color$ = 376 +j$1$ = 384 +interlaced$ = 384 +stbi__create_png_image PROC ; COMDAT + +; 4373 : { + + 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d + 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d + 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx + 00014 53 push rbx + 00015 55 push rbp + 00016 57 push rdi + 00017 41 54 push r12 + 00019 41 56 push r14 + 0001b 48 81 ec 20 01 + 00 00 sub rsp, 288 ; 00000120H + +; 4374 : int bytes = (depth == 16 ? 2 : 1); + + 00022 33 db xor ebx, ebx + 00024 48 8b fa mov rdi, rdx + 00027 8b 94 24 70 01 + 00 00 mov edx, DWORD PTR depth$[rsp] + 0002e 8b eb mov ebp, ebx + 00030 83 fa 10 cmp edx, 16 + 00033 4c 8b e1 mov r12, rcx + +; 4375 : int out_bytes = out_n * bytes; + + 00036 48 8b 09 mov rcx, QWORD PTR [rcx] + 00039 45 8b f0 mov r14d, r8d + 0003c 40 0f 94 c5 sete bpl + 00040 ff c5 inc ebp + 00042 41 0f af e9 imul ebp, r9d + +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) + + 00046 39 9c 24 80 01 + 00 00 cmp DWORD PTR interlaced$[rsp], ebx + 0004d 75 36 jne SHORT $LN11@stbi__crea + +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + 0004f 8b 84 24 78 01 + 00 00 mov eax, DWORD PTR color$[rsp] + 00056 89 44 24 38 mov DWORD PTR [rsp+56], eax + 0005a 8b 41 04 mov eax, DWORD PTR [rcx+4] + 0005d 89 54 24 30 mov DWORD PTR [rsp+48], edx + 00061 48 8b d7 mov rdx, rdi + 00064 89 44 24 28 mov DWORD PTR [rsp+40], eax + 00068 8b 01 mov eax, DWORD PTR [rcx] + 0006a 49 8b cc mov rcx, r12 + 0006d 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00071 e8 00 00 00 00 call stbi__create_png_image_raw + +; 4415 : } + + 00076 48 81 c4 20 01 + 00 00 add rsp, 288 ; 00000120H + 0007d 41 5e pop r14 + 0007f 41 5c pop r12 + 00081 5f pop rdi + 00082 5d pop rbp + 00083 5b pop rbx + 00084 c3 ret 0 +$LN11@stbi__crea: + +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + + 00085 44 8b 41 04 mov r8d, DWORD PTR [rcx+4] + 00089 8b 09 mov ecx, DWORD PTR [rcx] + 0008b 48 89 b4 24 18 + 01 00 00 mov QWORD PTR [rsp+280], rsi + +; 467 : if (a < 0 || b < 0) return 0; + + 00093 85 c9 test ecx, ecx + 00095 0f 88 76 03 00 + 00 js $LN53@stbi__crea + 0009b 45 85 c0 test r8d, r8d + 0009e 0f 88 6d 03 00 + 00 js $LN53@stbi__crea + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 000a4 74 11 je SHORT $LN57@stbi__crea + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 000a6 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 000ab 99 cdq + 000ac 41 f7 f8 idiv r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 000af 3b c8 cmp ecx, eax + 000b1 0f 8f 5a 03 00 + 00 jg $LN53@stbi__crea +$LN57@stbi__crea: + 000b7 41 0f af c8 imul ecx, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 000bb 85 c9 test ecx, ecx + 000bd 0f 88 4e 03 00 + 00 js $LN53@stbi__crea + 000c3 85 ed test ebp, ebp + 000c5 0f 88 46 03 00 + 00 js $LN53@stbi__crea + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 000cb 74 10 je SHORT $LN17@stbi__crea + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 000cd b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 000d2 99 cdq + 000d3 f7 fd idiv ebp + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 000d5 3b c8 cmp ecx, eax + 000d7 0f 8f 34 03 00 + 00 jg $LN53@stbi__crea +$LN17@stbi__crea: + +; 509 : return stbi__malloc(a * b * c + add); + + 000dd 0f af cd imul ecx, ebp + 000e0 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 000e3 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 000e9 48 89 44 24 68 mov QWORD PTR final$1$[rsp], rax + +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); + + 000ee 48 85 c0 test rax, rax + 000f1 0f 84 1a 03 00 + 00 je $LN53@stbi__crea + 000f7 4c 89 ac 24 10 + 01 00 00 mov QWORD PTR [rsp+272], r13 + +; 4384 : for (p = 0; p < 7; ++p) { + + 000ff 44 8b cb mov r9d, ebx + 00102 4c 89 bc 24 08 + 01 00 00 mov QWORD PTR [rsp+264], r15 + 0010a 4c 8b eb mov r13, rbx + 0010d 89 5c 24 44 mov DWORD PTR p$1$[rsp], ebx + 00111 48 89 5c 24 70 mov QWORD PTR tv889[rsp], rbx + 00116 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL4@stbi__crea: + +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; + + 00120 66 0f 6f 05 00 + 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00000002000000000000000400000000 + +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; + + 00128 33 d2 xor edx, edx + 0012a 4d 8b 04 24 mov r8, QWORD PTR [r12] + 0012e f3 0f 7f 84 24 + a0 00 00 00 movdqu XMMWORD PTR xorig$5[rsp], xmm0 + 00137 c7 84 24 90 00 + 00 00 02 00 00 + 00 mov DWORD PTR xspc$4[rsp+16], 2 + 00142 66 0f 6f 05 00 + 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00000000000000040000000000000000 + 0014a f3 0f 7f 84 24 + e0 00 00 00 movdqu XMMWORD PTR yorig$7[rsp], xmm0 + 00153 c7 84 24 94 00 + 00 00 02 00 00 + 00 mov DWORD PTR xspc$4[rsp+20], 2 + 0015e 66 0f 6f 05 00 + 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00000004000000040000000800000008 + 00166 f3 0f 7f 84 24 + 80 00 00 00 movdqu XMMWORD PTR xspc$4[rsp], xmm0 + 0016f c7 84 24 98 00 + 00 00 01 00 00 + 00 mov DWORD PTR xspc$4[rsp+24], 1 + 0017a 46 8b 94 2c 80 + 00 00 00 mov r10d, DWORD PTR xspc$4[rsp+r13] + 00182 41 8b ca mov ecx, r10d + 00185 66 0f 6f 05 00 + 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00000004000000080000000800000008 + 0018d 89 9c 24 b0 00 + 00 00 mov DWORD PTR xorig$5[rsp+16], ebx + 00194 48 c7 84 24 b4 + 00 00 00 01 00 + 00 00 mov QWORD PTR xorig$5[rsp+20], 1 + 001a0 42 8b 84 2c a0 + 00 00 00 mov eax, DWORD PTR xorig$5[rsp+r13] + 001a8 2b c8 sub ecx, eax + 001aa 89 44 24 50 mov DWORD PTR tv905[rsp], eax + 001ae 41 8b 00 mov eax, DWORD PTR [r8] + 001b1 ff c8 dec eax + 001b3 48 c7 84 24 f0 + 00 00 00 02 00 + 00 00 mov QWORD PTR yorig$7[rsp+16], 2 + 001bf 03 c1 add eax, ecx + 001c1 c7 84 24 f8 00 + 00 00 01 00 00 + 00 mov DWORD PTR yorig$7[rsp+24], 1 + 001cc 41 f7 f2 div r10d + 001cf f3 0f 7f 84 24 + c0 00 00 00 movdqu XMMWORD PTR yspc$6[rsp], xmm0 + 001d8 44 8b f8 mov r15d, eax + +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; + + 001db 42 8b 84 2c e0 + 00 00 00 mov eax, DWORD PTR yorig$7[rsp+r13] + 001e3 c7 84 24 d0 00 + 00 00 04 00 00 + 00 mov DWORD PTR yspc$6[rsp+16], 4 + 001ee c7 84 24 d4 00 + 00 00 02 00 00 + 00 mov DWORD PTR yspc$6[rsp+20], 2 + 001f9 c7 84 24 d8 00 + 00 00 02 00 00 + 00 mov DWORD PTR yspc$6[rsp+24], 2 + 00204 42 8b b4 2c c0 + 00 00 00 mov esi, DWORD PTR yspc$6[rsp+r13] + 0020c 44 89 54 24 4c mov DWORD PTR tv906[rsp], r10d + 00211 44 89 7c 24 54 mov DWORD PTR x$1$[rsp], r15d + 00216 89 74 24 60 mov DWORD PTR tv901[rsp], esi + 0021a 89 44 24 48 mov DWORD PTR tv900[rsp], eax + +; 4393 : if (x && y) { + + 0021e 45 85 ff test r15d, r15d + 00221 0f 84 8a 01 00 + 00 je $LN2@stbi__crea + +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; + + 00227 41 8b 48 04 mov ecx, DWORD PTR [r8+4] + 0022b 33 d2 xor edx, edx + 0022d 2b c8 sub ecx, eax + 0022f 8d 41 ff lea eax, DWORD PTR [rcx-1] + 00232 03 c6 add eax, esi + 00234 f7 f6 div esi + 00236 89 44 24 58 mov DWORD PTR y$1$[rsp], eax + 0023a 8b f8 mov edi, eax + +; 4393 : if (x && y) { + + 0023c 85 c0 test eax, eax + 0023e 0f 84 6d 01 00 + 00 je $LN2@stbi__crea + +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + + 00244 8b 84 24 70 01 + 00 00 mov eax, DWORD PTR depth$[rsp] + 0024b 41 8b df mov ebx, r15d + 0024e 41 0f af 58 08 imul ebx, DWORD PTR [r8+8] + +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + + 00253 45 8b c6 mov r8d, r14d + 00256 8b 8c 24 78 01 + 00 00 mov ecx, DWORD PTR color$[rsp] + 0025d 44 8b 8c 24 68 + 01 00 00 mov r9d, DWORD PTR out_n$[rsp] + 00265 48 8b 94 24 58 + 01 00 00 mov rdx, QWORD PTR image_data$[rsp] + 0026d 89 4c 24 38 mov DWORD PTR [rsp+56], ecx + 00271 49 8b cc mov rcx, r12 + 00274 0f af d8 imul ebx, eax + 00277 89 44 24 30 mov DWORD PTR [rsp+48], eax + 0027b 89 7c 24 28 mov DWORD PTR [rsp+40], edi + 0027f 44 89 7c 24 20 mov DWORD PTR [rsp+32], r15d + 00284 83 c3 07 add ebx, 7 + 00287 c1 fb 03 sar ebx, 3 + 0028a ff c3 inc ebx + 0028c 0f af df imul ebx, edi + 0028f 89 5c 24 64 mov DWORD PTR img_len$1$[rsp], ebx + 00293 e8 00 00 00 00 call stbi__create_png_image_raw + 00298 85 c0 test eax, eax + 0029a 0f 84 62 01 00 + 00 je $LN43@stbi__crea + +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { + + 002a0 45 33 f6 xor r14d, r14d + 002a3 44 89 b4 24 80 + 01 00 00 mov DWORD PTR j$1$[rsp], r14d + 002ab 85 ff test edi, edi + 002ad 0f 8e cf 00 00 + 00 jle $LN6@stbi__crea + 002b3 45 33 ed xor r13d, r13d + 002b6 41 8b c7 mov eax, r15d + 002b9 0f af c5 imul eax, ebp + 002bc 44 89 6c 24 40 mov DWORD PTR tv892[rsp], r13d + 002c1 89 44 24 5c mov DWORD PTR tv890[rsp], eax +$LL7@stbi__crea: + +; 4400 : for (i = 0; i < x; ++i) { + + 002c5 45 85 ff test r15d, r15d + 002c8 0f 8e 87 00 00 + 00 jle $LN5@stbi__crea + +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, + + 002ce 4c 8b 84 24 50 + 01 00 00 mov r8, QWORD PTR a$[rsp] + 002d6 8b fe mov edi, esi + 002d8 44 8b 64 24 4c mov r12d, DWORD PTR tv906[rsp] + 002dd 41 8b f5 mov esi, r13d + 002e0 8b 5c 24 50 mov ebx, DWORD PTR tv905[rsp] + 002e4 41 0f af fe imul edi, r14d + 002e8 4d 8b 30 mov r14, QWORD PTR [r8] + 002eb 44 0f af e5 imul r12d, ebp + 002ef 4c 63 ed movsxd r13, ebp + 002f2 03 7c 24 48 add edi, DWORD PTR tv900[rsp] + 002f6 0f af fd imul edi, ebp + 002f9 0f af dd imul ebx, ebp + 002fc 0f 1f 40 00 npad 4 +$LL10@stbi__crea: + 00300 48 8b 44 24 68 mov rax, QWORD PTR final$1$[rsp] + 00305 48 63 d6 movsxd rdx, esi + 00308 49 03 50 18 add rdx, QWORD PTR [r8+24] + 0030c 44 8b c7 mov r8d, edi + 0030f 45 0f af 06 imul r8d, DWORD PTR [r14] + 00313 48 63 cb movsxd rcx, ebx + 00316 49 03 c0 add rax, r8 + 00319 4d 8b c5 mov r8, r13 + 0031c 48 03 c8 add rcx, rax + 0031f e8 00 00 00 00 call memcpy + 00324 4c 8b 84 24 50 + 01 00 00 mov r8, QWORD PTR a$[rsp] + 0032c 03 f5 add esi, ebp + 0032e 41 03 dc add ebx, r12d + 00331 49 83 ef 01 sub r15, 1 + 00335 75 c9 jne SHORT $LL10@stbi__crea + 00337 44 8b b4 24 80 + 01 00 00 mov r14d, DWORD PTR j$1$[rsp] + 0033f 44 8b 6c 24 40 mov r13d, DWORD PTR tv892[rsp] + 00344 44 8b 7c 24 54 mov r15d, DWORD PTR x$1$[rsp] + 00349 8b 7c 24 58 mov edi, DWORD PTR y$1$[rsp] + 0034d 8b 44 24 5c mov eax, DWORD PTR tv890[rsp] + 00351 8b 74 24 60 mov esi, DWORD PTR tv901[rsp] +$LN5@stbi__crea: + +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { + + 00355 41 ff c6 inc r14d + 00358 44 03 e8 add r13d, eax + 0035b 44 89 b4 24 80 + 01 00 00 mov DWORD PTR j$1$[rsp], r14d + 00363 44 89 6c 24 40 mov DWORD PTR tv892[rsp], r13d + 00368 44 3b f7 cmp r14d, edi + 0036b 0f 8c 54 ff ff + ff jl $LL7@stbi__crea + 00371 8b 5c 24 64 mov ebx, DWORD PTR img_len$1$[rsp] + 00375 4c 8b a4 24 50 + 01 00 00 mov r12, QWORD PTR a$[rsp] + 0037d 4c 8b 6c 24 70 mov r13, QWORD PTR tv889[rsp] +$LN6@stbi__crea: + +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); + + 00382 49 8b 4c 24 18 mov rcx, QWORD PTR [r12+24] + 00387 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; + + 0038d 44 8b b4 24 60 + 01 00 00 mov r14d, DWORD PTR image_data_len$[rsp] + 00395 44 8b 4c 24 44 mov r9d, DWORD PTR p$1$[rsp] + 0039a 44 2b f3 sub r14d, ebx + 0039d 8b c3 mov eax, ebx + 0039f 48 01 84 24 58 + 01 00 00 add QWORD PTR image_data$[rsp], rax + 003a7 33 db xor ebx, ebx + 003a9 44 89 b4 24 60 + 01 00 00 mov DWORD PTR image_data_len$[rsp], r14d +$LN2@stbi__crea: + +; 4384 : for (p = 0; p < 7; ++p) { + + 003b1 41 ff c1 inc r9d + 003b4 49 83 c5 04 add r13, 4 + 003b8 44 89 4c 24 44 mov DWORD PTR p$1$[rsp], r9d + 003bd 4c 89 6c 24 70 mov QWORD PTR tv889[rsp], r13 + 003c2 41 83 f9 07 cmp r9d, 7 + 003c6 0f 8c 54 fd ff + ff jl $LL4@stbi__crea + +; 4410 : } +; 4411 : } +; 4412 : a->out = final; + + 003cc 48 8b 44 24 68 mov rax, QWORD PTR final$1$[rsp] + 003d1 49 89 44 24 18 mov QWORD PTR [r12+24], rax + +; 4413 : +; 4414 : return 1; + + 003d6 b8 01 00 00 00 mov eax, 1 +$LN76@stbi__crea: + 003db 4c 8b ac 24 10 + 01 00 00 mov r13, QWORD PTR [rsp+272] + 003e3 4c 8b bc 24 08 + 01 00 00 mov r15, QWORD PTR [rsp+264] +$LN74@stbi__crea: + 003eb 48 8b b4 24 18 + 01 00 00 mov rsi, QWORD PTR [rsp+280] + +; 4415 : } + + 003f3 48 81 c4 20 01 + 00 00 add rsp, 288 ; 00000120H + 003fa 41 5e pop r14 + 003fc 41 5c pop r12 + 003fe 5f pop rdi + 003ff 5d pop rbp + 00400 5b pop rbx + 00401 c3 ret 0 +$LN43@stbi__crea: + +; 4396 : STBI_FREE(final); + + 00402 48 8b 4c 24 68 mov rcx, QWORD PTR final$1$[rsp] + 00407 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4397 : return 0; + + 0040d 33 c0 xor eax, eax + 0040f eb ca jmp SHORT $LN76@stbi__crea +$LN53@stbi__crea: + +; 431 : stbi__g_failure_reason = str; + + 00411 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0041a 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00420 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 00425 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 00429 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00430 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); + + 00434 33 c0 xor eax, eax + 00436 eb b3 jmp SHORT $LN74@stbi__crea +stbi__create_png_image ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__compute_transparency +_TEXT SEGMENT +z$ = 8 +tc$ = 16 +out_n$ = 24 +stbi__compute_transparency PROC ; COMDAT + +; 4419 : stbi__context* s = z->s; + + 00000 48 8b 01 mov rax, QWORD PTR [rcx] + +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; + + 00003 44 8b 48 04 mov r9d, DWORD PTR [rax+4] + 00007 44 0f af 08 imul r9d, DWORD PTR [rax] + +; 4421 : stbi_uc* p = z->out; + + 0000b 48 8b 41 18 mov rax, QWORD PTR [rcx+24] + +; 4428 : for (i = 0; i < pixel_count; ++i) { + + 0000f 45 85 c9 test r9d, r9d + 00012 74 67 je SHORT $LN20@stbi__comp + +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { + + 00014 41 83 f8 02 cmp r8d, 2 + 00018 75 35 jne SHORT $LN8@stbi__comp + +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); + + 0001a 44 0f b6 02 movzx r8d, BYTE PTR [rdx] + 0001e 41 8b d1 mov edx, r9d + 00021 45 33 c9 xor r9d, r9d + 00024 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL4@stbi__comp: + 00030 44 38 00 cmp BYTE PTR [rax], r8b + +; 4430 : p += 2; + + 00033 48 8d 40 02 lea rax, QWORD PTR [rax+2] + 00037 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH + 0003c 41 0f 44 c9 cmove ecx, r9d + 00040 88 48 ff mov BYTE PTR [rax-1], cl + 00043 48 83 ea 01 sub rdx, 1 + 00047 75 e7 jne SHORT $LL4@stbi__comp + +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } + + 00049 b8 01 00 00 00 mov eax, 1 + 0004e c3 ret 0 +$LN8@stbi__comp: + +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + + 0004f 44 0f b6 12 movzx r10d, BYTE PTR [rdx] + 00053 45 8b c1 mov r8d, r9d +$LL7@stbi__comp: + 00056 44 38 10 cmp BYTE PTR [rax], r10b + 00059 75 16 jne SHORT $LN10@stbi__comp + 0005b 0f b6 4a 01 movzx ecx, BYTE PTR [rdx+1] + 0005f 38 48 01 cmp BYTE PTR [rax+1], cl + 00062 75 0d jne SHORT $LN10@stbi__comp + 00064 0f b6 4a 02 movzx ecx, BYTE PTR [rdx+2] + 00068 38 48 02 cmp BYTE PTR [rax+2], cl + 0006b 75 04 jne SHORT $LN10@stbi__comp + +; 4436 : p[3] = 0; + + 0006d c6 40 03 00 mov BYTE PTR [rax+3], 0 +$LN10@stbi__comp: + +; 4437 : p += 4; + + 00071 48 83 c0 04 add rax, 4 + 00075 49 83 e8 01 sub r8, 1 + 00079 75 db jne SHORT $LL7@stbi__comp +$LN20@stbi__comp: + +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } + + 0007b b8 01 00 00 00 mov eax, 1 + 00080 c3 ret 0 +stbi__compute_transparency ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__compute_transparency16 +_TEXT SEGMENT +z$ = 8 +tc$ = 16 +out_n$ = 24 +stbi__compute_transparency16 PROC ; COMDAT + +; 4445 : stbi__context* s = z->s; + + 00000 48 8b 01 mov rax, QWORD PTR [rcx] + +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; + + 00003 44 8b 48 04 mov r9d, DWORD PTR [rax+4] + 00007 44 0f af 08 imul r9d, DWORD PTR [rax] + +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; + + 0000b 48 8b 41 18 mov rax, QWORD PTR [rcx+24] + +; 4454 : for (i = 0; i < pixel_count; ++i) { + + 0000f 45 85 c9 test r9d, r9d + 00012 74 75 je SHORT $LN20@stbi__comp + +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { + + 00014 41 83 f8 02 cmp r8d, 2 + 00018 75 36 jne SHORT $LN8@stbi__comp + +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); + + 0001a 44 0f b7 02 movzx r8d, WORD PTR [rdx] + 0001e 41 8b d1 mov edx, r9d + 00021 45 33 c9 xor r9d, r9d + 00024 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL4@stbi__comp: + 00030 66 44 39 00 cmp WORD PTR [rax], r8w + +; 4456 : p += 2; + + 00034 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00038 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH + 0003d 66 41 0f 44 c9 cmove cx, r9w + 00042 66 89 48 fe mov WORD PTR [rax-2], cx + 00046 48 83 ea 01 sub rdx, 1 + 0004a 75 e4 jne SHORT $LL4@stbi__comp + +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } + + 0004c 8d 42 01 lea eax, QWORD PTR [rdx+1] + 0004f c3 ret 0 +$LN8@stbi__comp: + +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + + 00050 44 0f b7 12 movzx r10d, WORD PTR [rdx] + 00054 45 8b c1 mov r8d, r9d + 00057 45 33 c9 xor r9d, r9d + 0005a 66 0f 1f 44 00 + 00 npad 6 +$LL7@stbi__comp: + 00060 66 44 39 10 cmp WORD PTR [rax], r10w + 00064 75 19 jne SHORT $LN10@stbi__comp + 00066 0f b7 4a 02 movzx ecx, WORD PTR [rdx+2] + 0006a 66 39 48 02 cmp WORD PTR [rax+2], cx + 0006e 75 0f jne SHORT $LN10@stbi__comp + 00070 0f b7 4a 04 movzx ecx, WORD PTR [rdx+4] + 00074 66 39 48 04 cmp WORD PTR [rax+4], cx + 00078 75 05 jne SHORT $LN10@stbi__comp + +; 4462 : p[3] = 0; + + 0007a 66 44 89 48 06 mov WORD PTR [rax+6], r9w +$LN10@stbi__comp: + +; 4463 : p += 4; + + 0007f 48 83 c0 08 add rax, 8 + 00083 49 83 e8 01 sub r8, 1 + 00087 75 d7 jne SHORT $LL7@stbi__comp +$LN20@stbi__comp: + +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } + + 00089 b8 01 00 00 00 mov eax, 1 + 0008e c3 ret 0 +stbi__compute_transparency16 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__expand_png_palette +_TEXT SEGMENT +a$ = 64 +palette$ = 72 +len$dead$ = 80 +pal_img_n$ = 88 +stbi__expand_png_palette PROC ; COMDAT + +; 4470 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 57 push rdi + 00010 41 56 push r14 + 00012 41 57 push r15 + 00014 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + + 00018 48 8b 01 mov rax, QWORD PTR [rcx] + 0001b 41 8b e9 mov ebp, r9d + +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; + + 0001e 48 8b 59 18 mov rbx, QWORD PTR [rcx+24] + 00022 48 8b fa mov rdi, rdx + 00025 4c 8b f9 mov r15, rcx + 00028 8b 70 04 mov esi, DWORD PTR [rax+4] + 0002b 0f af 30 imul esi, DWORD PTR [rax] + +; 467 : if (a < 0 || b < 0) return 0; + + 0002e 85 f6 test esi, esi + 00030 0f 88 bf 00 00 + 00 js $LN40@stbi__expa + 00036 45 85 c9 test r9d, r9d + 00039 0f 88 b6 00 00 + 00 js $LN40@stbi__expa + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0003f 74 11 je SHORT $LN13@stbi__expa + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00041 33 d2 xor edx, edx + 00043 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00048 f7 f5 div ebp + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 0004a 3b f0 cmp esi, eax + 0004c 0f 8f a3 00 00 + 00 jg $LN40@stbi__expa +$LN13@stbi__expa: + +; 502 : return stbi__malloc(a * b + add); + + 00052 8b c6 mov eax, esi + 00054 0f af c5 imul eax, ebp + 00057 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 0005a ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00060 4c 8b f0 mov r14, rax + +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + 00063 48 85 c0 test rax, rax + 00066 0f 84 89 00 00 + 00 je $LN40@stbi__expa + +; 4481 : for (i = 0; i < pixel_count; ++i) { + + 0006c 85 f6 test esi, esi + 0006e 74 70 je SHORT $LN6@stbi__expa + +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { + + 00070 44 8b c6 mov r8d, esi + 00073 48 8d 50 02 lea rdx, QWORD PTR [rax+2] + 00077 83 fd 03 cmp ebp, 3 + 0007a 75 34 jne SHORT $LL7@stbi__expa + 0007c 0f 1f 40 00 npad 4 +$LL4@stbi__expa: + +; 4482 : int n = orig[i] * 4; + + 00080 0f b6 0b movzx ecx, BYTE PTR [rbx] + +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; + + 00083 48 8d 52 03 lea rdx, QWORD PTR [rdx+3] + 00087 48 8d 5b 01 lea rbx, QWORD PTR [rbx+1] + 0008b 0f b6 04 8f movzx eax, BYTE PTR [rdi+rcx*4] + 0008f 88 42 fb mov BYTE PTR [rdx-5], al + 00092 0f b6 44 8f 01 movzx eax, BYTE PTR [rdi+rcx*4+1] + 00097 0f b6 4c 8f 02 movzx ecx, BYTE PTR [rdi+rcx*4+2] + 0009c 88 4a fd mov BYTE PTR [rdx-3], cl + 0009f 88 42 fc mov BYTE PTR [rdx-4], al + 000a2 49 83 e8 01 sub r8, 1 + 000a6 75 d8 jne SHORT $LL4@stbi__expa + +; 4487 : } +; 4488 : } + + 000a8 eb 36 jmp SHORT $LN6@stbi__expa + 000aa 66 0f 1f 44 00 + 00 npad 6 +$LL7@stbi__expa: + +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; + + 000b0 0f b6 0b movzx ecx, BYTE PTR [rbx] + +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; + + 000b3 48 8d 52 04 lea rdx, QWORD PTR [rdx+4] + 000b7 48 8d 5b 01 lea rbx, QWORD PTR [rbx+1] + 000bb 0f b6 04 8f movzx eax, BYTE PTR [rdi+rcx*4] + 000bf 88 42 fa mov BYTE PTR [rdx-6], al + 000c2 0f b6 44 8f 01 movzx eax, BYTE PTR [rdi+rcx*4+1] + 000c7 88 42 fb mov BYTE PTR [rdx-5], al + 000ca 0f b6 44 8f 02 movzx eax, BYTE PTR [rdi+rcx*4+2] + 000cf 0f b6 4c 8f 03 movzx ecx, BYTE PTR [rdi+rcx*4+3] + 000d4 88 4a fd mov BYTE PTR [rdx-3], cl + 000d7 88 42 fc mov BYTE PTR [rdx-4], al + 000da 49 83 e8 01 sub r8, 1 + 000de 75 d0 jne SHORT $LL7@stbi__expa +$LN6@stbi__expa: + +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); + + 000e0 49 8b 4f 18 mov rcx, QWORD PTR [r15+24] + 000e4 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; + + 000ea b8 01 00 00 00 mov eax, 1 + 000ef 4d 89 77 18 mov QWORD PTR [r15+24], r14 + 000f3 eb 25 jmp SHORT $LN1@stbi__expa +$LN40@stbi__expa: + +; 431 : stbi__g_failure_reason = str; + + 000f5 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000fe 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00104 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 00109 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 0010d 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00114 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + 00118 33 c0 xor eax, eax +$LN1@stbi__expa: + +; 4505 : } + + 0011a 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 0011f 48 8b 6c 24 48 mov rbp, QWORD PTR [rsp+72] + 00124 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 00129 48 83 c4 20 add rsp, 32 ; 00000020H + 0012d 41 5f pop r15 + 0012f 41 5e pop r14 + 00131 5f pop rdi + 00132 c3 ret 0 +stbi__expand_png_palette ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__de_iphone +_TEXT SEGMENT +z$ = 16 +stbi__de_iphone PROC ; COMDAT + +; 4548 : { + + 00000 48 83 ec 08 sub rsp, 8 + +; 4549 : stbi__context* s = z->s; + + 00004 48 8b 01 mov rax, QWORD PTR [rcx] + +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; + + 00007 48 8b 49 18 mov rcx, QWORD PTR [rcx+24] + 0000b 44 8b 40 04 mov r8d, DWORD PTR [rax+4] + 0000f 44 0f af 00 imul r8d, DWORD PTR [rax] + +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb + + 00013 83 78 0c 03 cmp DWORD PTR [rax+12], 3 + 00017 75 32 jne SHORT $LN11@stbi__de_i + +; 4554 : for (i = 0; i < pixel_count; ++i) { + + 00019 45 85 c0 test r8d, r8d + 0001c 0f 84 f4 00 00 + 00 je $LN9@stbi__de_i + 00022 0f 1f 40 00 66 + 66 0f 1f 84 00 + 00 00 00 00 npad 14 +$LL4@stbi__de_i: + +; 4555 : stbi_uc t = p[0]; + + 00030 0f b6 11 movzx edx, BYTE PTR [rcx] + +; 4556 : p[0] = p[2]; + + 00033 0f b6 41 02 movzx eax, BYTE PTR [rcx+2] + 00037 88 01 mov BYTE PTR [rcx], al + +; 4557 : p[2] = t; + + 00039 88 51 02 mov BYTE PTR [rcx+2], dl + +; 4558 : p += 3; + + 0003c 48 8d 49 03 lea rcx, QWORD PTR [rcx+3] + 00040 49 83 e8 01 sub r8, 1 + 00044 75 ea jne SHORT $LL4@stbi__de_i + +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } + + 00046 48 83 c4 08 add rsp, 8 + 0004a c3 ret 0 +$LN11@stbi__de_i: + +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { + + 0004b 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00051 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0005a 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0005e ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__unpremultiply_on_load_set + 00063 83 3c 02 00 cmp DWORD PTR [rdx+rax], 0 + 00067 74 0a je SHORT $LN18@stbi__de_i + 00069 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__unpremultiply_on_load_local + 0006e 8b 04 02 mov eax, DWORD PTR [rdx+rax] + 00071 eb 06 jmp SHORT $LN19@stbi__de_i +$LN18@stbi__de_i: + 00073 8b 05 00 00 00 + 00 mov eax, DWORD PTR stbi__unpremultiply_on_load_global +$LN19@stbi__de_i: + +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { + + 00079 45 85 c0 test r8d, r8d + 0007c 0f 84 94 00 00 + 00 je $LN9@stbi__de_i + +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { + + 00082 85 c0 test eax, eax + 00084 74 7a je SHORT $LL10@stbi__de_i + 00086 48 89 1c 24 mov QWORD PTR [rsp], rbx + +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { + + 0008a 45 8b d0 mov r10d, r8d + 0008d 0f 1f 00 npad 3 +$LL7@stbi__de_i: + +; 4566 : stbi_uc a = p[3]; + + 00090 0f b6 41 03 movzx eax, BYTE PTR [rcx+3] + +; 4567 : stbi_uc t = p[0]; + + 00094 44 0f b6 19 movzx r11d, BYTE PTR [rcx] + 00098 0f b6 59 02 movzx ebx, BYTE PTR [rcx+2] + +; 4568 : if (a) { + + 0009c 84 c0 test al, al + 0009e 74 40 je SHORT $LN15@stbi__de_i + +; 4569 : stbi_uc half = a / 2; + + 000a0 44 8b c0 mov r8d, eax + 000a3 44 8b c8 mov r9d, eax + +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; + + 000a6 0f b6 41 01 movzx eax, BYTE PTR [rcx+1] + 000aa 33 d2 xor edx, edx + 000ac 69 c0 ff 00 00 + 00 imul eax, eax, 255 ; 000000ffH + 000b2 41 d1 e8 shr r8d, 1 + 000b5 41 03 c0 add eax, r8d + 000b8 41 f7 f1 div r9d + +; 4572 : p[2] = (t * 255 + half) / a; + + 000bb 33 d2 xor edx, edx + 000bd 88 41 01 mov BYTE PTR [rcx+1], al + 000c0 41 69 c3 ff 00 + 00 00 imul eax, r11d, 255 ; 000000ffH + 000c7 41 03 c0 add eax, r8d + 000ca 41 f7 f1 div r9d + 000cd 33 d2 xor edx, edx + 000cf 44 8b d8 mov r11d, eax + 000d2 69 c3 ff 00 00 + 00 imul eax, ebx, 255 ; 000000ffH + 000d8 41 03 c0 add eax, r8d + 000db 41 f7 f1 div r9d + +; 4573 : } + + 000de eb 03 jmp SHORT $LN16@stbi__de_i +$LN15@stbi__de_i: + +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; + + 000e0 0f b6 c3 movzx eax, bl +$LN16@stbi__de_i: + +; 4577 : } +; 4578 : p += 4; + + 000e3 88 01 mov BYTE PTR [rcx], al + 000e5 44 88 59 02 mov BYTE PTR [rcx+2], r11b + 000e9 48 83 c1 04 add rcx, 4 + 000ed 49 83 ea 01 sub r10, 1 + 000f1 75 9d jne SHORT $LL7@stbi__de_i + +; 4579 : } +; 4580 : } + + 000f3 48 8b 1c 24 mov rbx, QWORD PTR [rsp] + +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } + + 000f7 48 83 c4 08 add rsp, 8 + 000fb c3 ret 0 + 000fc 0f 1f 40 00 npad 4 +$LL10@stbi__de_i: + +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; + + 00100 0f b6 11 movzx edx, BYTE PTR [rcx] + +; 4585 : p[0] = p[2]; + + 00103 0f b6 41 02 movzx eax, BYTE PTR [rcx+2] + 00107 88 01 mov BYTE PTR [rcx], al + +; 4586 : p[2] = t; + + 00109 88 51 02 mov BYTE PTR [rcx+2], dl + +; 4587 : p += 4; + + 0010c 48 8d 49 04 lea rcx, QWORD PTR [rcx+4] + 00110 49 83 e8 01 sub r8, 1 + 00114 75 ea jne SHORT $LL10@stbi__de_i +$LN9@stbi__de_i: + +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } + + 00116 48 83 c4 08 add rsp, 8 + 0011a c3 ret 0 +stbi__de_iphone ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__parse_png_file +_TEXT SEGMENT +pal_img_n$1$ = 64 +has_trans$1$ = 65 +first$1$ = 68 +ioff$1$ = 72 +interlace$1$ = 76 +is_iphone$1$ = 80 +color$1$ = 84 +req_comp$1$ = 88 +c$14 = 96 +a$15 = 112 +tc$ = 4208 +tc16$ = 4212 +palette$ = 4224 +__$ArrayPad$ = 5248 +z$ = 5312 +scan$dead$ = 5320 +req_comp$ = 5328 +stbi__parse_png_file PROC ; COMDAT + +; 4596 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000a 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 0000f 55 push rbp + 00010 41 54 push r12 + 00012 41 55 push r13 + 00014 41 56 push r14 + 00016 41 57 push r15 + 00018 48 8d ac 24 70 + ec ff ff lea rbp, QWORD PTR [rsp-5008] + 00020 b8 90 14 00 00 mov eax, 5264 ; 00001490H + 00025 e8 00 00 00 00 call __chkstk + 0002a 48 2b e0 sub rsp, rax + 0002d 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00034 48 33 c4 xor rax, rsp + 00037 48 89 85 80 13 + 00 00 mov QWORD PTR __$ArrayPad$[rbp-256], rax + 0003e 4c 8b e9 mov r13, rcx + 00041 44 89 44 24 58 mov DWORD PTR req_comp$1$[rsp], r8d + +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; + + 00046 33 c9 xor ecx, ecx + 00048 c6 44 24 40 00 mov BYTE PTR pal_img_n$1$[rsp], 0 + 0004d 33 c0 xor eax, eax + 0004f 89 4c 24 48 mov DWORD PTR ioff$1$[rsp], ecx + 00053 45 32 f6 xor r14b, r14b + +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; + + 00056 89 4c 24 4c mov DWORD PTR interlace$1$[rsp], ecx + +; 4602 : stbi__context* s = z->s; + + 0005a 49 8b 5d 00 mov rbx, QWORD PTR [r13] + 0005e 44 8b f9 mov r15d, ecx + 00061 44 8b e1 mov r12d, ecx + 00064 89 4c 24 54 mov DWORD PTR color$1$[rsp], ecx + 00068 89 4c 24 50 mov DWORD PTR is_iphone$1$[rsp], ecx + +; 4603 : +; 4604 : z->expanded = NULL; + + 0006c 49 89 4d 10 mov QWORD PTR [r13+16], rcx + +; 4605 : z->idata = NULL; + + 00070 49 89 4d 08 mov QWORD PTR [r13+8], rcx + +; 4606 : z->out = NULL; + + 00074 49 89 4d 18 mov QWORD PTR [r13+24], rcx + 00078 44 88 74 24 41 mov BYTE PTR has_trans$1$[rsp], r14b + 0007d 44 8b f1 mov r14d, ecx + +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; + + 00080 48 8b cb mov rcx, rbx + 00083 66 89 85 70 0f + 00 00 mov WORD PTR tc$[rbp-256], ax + 0008a 88 85 72 0f 00 + 00 mov BYTE PTR tc$[rbp-254], al + 00090 c7 44 24 44 01 + 00 00 00 mov DWORD PTR first$1$[rsp], 1 + 00098 e8 00 00 00 00 call stbi__check_png_header + 0009d 85 c0 test eax, eax + 0009f 0f 84 4b 0e 00 + 00 je $LN327@stbi__pars +$LL2@stbi__pars: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 000a5 48 8b cb mov rcx, rbx + 000a8 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 000ad 48 8b cb mov rcx, rbx + 000b0 8b f0 mov esi, eax + 000b2 e8 00 00 00 00 call stbi__get16be + 000b7 c1 e6 10 shl esi, 16 + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 000ba 48 8b cb mov rcx, rbx + +; 1169 : return (z << 16) + stbi__get16be(s); + + 000bd 03 f0 add esi, eax + +; 4098 : c.length = stbi__get32be(s); + + 000bf 89 74 24 60 mov DWORD PTR c$14[rsp], esi + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 000c3 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 000c8 48 8b cb mov rcx, rbx + 000cb 8b f8 mov edi, eax + 000cd e8 00 00 00 00 call stbi__get16be + 000d2 c1 e7 10 shl edi, 16 + 000d5 8d 14 07 lea edx, DWORD PTR [rdi+rax] + +; 4099 : c.type = stbi__get32be(s); + + 000d8 89 54 24 64 mov DWORD PTR c$14[rsp+4], edx + +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); + + 000dc 48 8b 44 24 60 mov rax, QWORD PTR c$14[rsp] + +; 4614 : switch (c.type) { + + 000e1 48 8b c8 mov rcx, rax + 000e4 48 c1 e9 20 shr rcx, 32 ; 00000020H + 000e8 81 f9 52 44 48 + 49 cmp ecx, 1229472850 ; 49484452H + 000ee 0f 87 80 03 00 + 00 ja $LN99@stbi__pars + 000f4 0f 84 fd 00 00 + 00 je $LN24@stbi__pars + 000fa 81 f9 49 42 67 + 43 cmp ecx, 1130840649 ; 43674249H + 00100 0f 84 e4 00 00 + 00 je $LN23@stbi__pars + 00106 81 f9 54 41 44 + 49 cmp ecx, 1229209940 ; 49444154H + 0010c 74 43 je SHORT $LN61@stbi__pars + 0010e 81 f9 44 4e 45 + 49 cmp ecx, 1229278788 ; 49454e44H + 00114 0f 85 6e 03 00 + 00 jne $LN93@stbi__pars + +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + + 0011a 83 7c 24 44 00 cmp DWORD PTR first$1$[rsp], 0 + 0011f 0f 85 a8 0d 00 + 00 jne $LN354@stbi__pars + +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); + + 00125 49 8b 7d 08 mov rdi, QWORD PTR [r13+8] + 00129 48 85 ff test rdi, rdi + 0012c 0f 85 77 06 00 + 00 jne $LN75@stbi__pars + +; 431 : stbi__g_failure_reason = str; + + 00132 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00138 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00141 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00145 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07MLPECBNA@no?5IDAT@ + +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); + + 0014c e9 96 0d 00 00 jmp $LN635@stbi__pars +$LN61@stbi__pars: + +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + + 00151 83 7c 24 44 00 cmp DWORD PTR first$1$[rsp], 0 + 00156 0f 85 71 0d 00 + 00 jne $LN354@stbi__pars + +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); + + 0015c 80 7c 24 40 00 cmp BYTE PTR pal_img_n$1$[rsp], 0 + 00161 74 09 je SHORT $LN63@stbi__pars + 00163 45 85 ff test r15d, r15d + 00166 0f 84 18 0b 00 + 00 je $LN324@stbi__pars +$LN63@stbi__pars: + +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); + + 0016c 81 fe 00 00 00 + 40 cmp esi, 1073741824 ; 40000000H + 00172 0f 87 69 0b 00 + 00 ja $LN326@stbi__pars + +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; + + 00178 8b 7c 24 48 mov edi, DWORD PTR ioff$1$[rsp] + 0017c 8d 0c 3e lea ecx, DWORD PTR [rsi+rdi] + 0017f 3b cf cmp ecx, edi + 00181 0f 8c 69 0d 00 + 00 jl $LN327@stbi__pars + +; 4702 : if (ioff + c.length > idata_limit) { + + 00187 41 3b ce cmp ecx, r14d + 0018a 76 39 jbe SHORT $LN479@stbi__pars + +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + + 0018c 45 85 f6 test r14d, r14d + 0018f 75 0d jne SHORT $LN318@stbi__pars + 00191 41 be 00 10 00 + 00 mov r14d, 4096 ; 00001000H + 00197 41 3b f6 cmp esi, r14d + 0019a 44 0f 47 f0 cmova r14d, eax +$LN318@stbi__pars: + +; 4706 : while (ioff + c.length > idata_limit) + + 0019e 41 3b ce cmp ecx, r14d + 001a1 76 08 jbe SHORT $LN20@stbi__pars +$LL19@stbi__pars: + +; 4707 : idata_limit *= 2; + + 001a3 45 03 f6 add r14d, r14d + 001a6 41 3b ce cmp ecx, r14d + 001a9 77 f8 ja SHORT $LL19@stbi__pars +$LN20@stbi__pars: + +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + 001ab 49 8b 4d 08 mov rcx, QWORD PTR [r13+8] + 001af 41 8b d6 mov edx, r14d + 001b2 ff 15 00 00 00 + 00 call QWORD PTR __imp_realloc + 001b8 48 85 c0 test rax, rax + 001bb 0f 84 e2 0a 00 + 00 je $LN328@stbi__pars + +; 4710 : z->idata = p; + + 001c1 49 89 45 08 mov QWORD PTR [r13+8], rax +$LN479@stbi__pars: + +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); + + 001c5 48 8b d7 mov rdx, rdi + 001c8 44 8b c6 mov r8d, esi + 001cb 49 03 55 08 add rdx, QWORD PTR [r13+8] + 001cf 48 8b cb mov rcx, rbx + 001d2 e8 00 00 00 00 call stbi__getn + 001d7 85 c0 test eax, eax + 001d9 0f 84 e3 0a 00 + 00 je $LN329@stbi__pars + +; 4713 : ioff += c.length; + + 001df 03 fe add edi, esi + 001e1 89 7c 24 48 mov DWORD PTR ioff$1$[rsp], edi + +; 4714 : break; + + 001e5 e9 aa 05 00 00 jmp $LN8@stbi__pars +$LN23@stbi__pars: + +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; + + 001ea c7 44 24 50 01 + 00 00 00 mov DWORD PTR is_iphone$1$[rsp], 1 + +; 1110 : return; + + 001f2 e9 a6 02 00 00 jmp $LN634@stbi__pars +$LN24@stbi__pars: + +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); + + 001f7 83 7c 24 44 00 cmp DWORD PTR first$1$[rsp], 0 + 001fc 0f 84 d7 0b 00 + 00 je $LN330@stbi__pars + +; 4622 : first = 0; + + 00202 33 c0 xor eax, eax + 00204 89 44 24 44 mov DWORD PTR first$1$[rsp], eax + 00208 83 fe 0d cmp esi, 13 + +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); + + 0020b 0f 85 a9 0b 00 + 00 jne $LN331@stbi__pars + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00211 48 8b cb mov rcx, rbx + 00214 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00219 48 8b cb mov rcx, rbx + 0021c 8b f8 mov edi, eax + 0021e e8 00 00 00 00 call stbi__get16be + 00223 c1 e7 10 shl edi, 16 + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00226 48 8b cb mov rcx, rbx + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00229 03 c7 add eax, edi + +; 4624 : s->img_x = stbi__get32be(s); + + 0022b 89 03 mov DWORD PTR [rbx], eax + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 0022d e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00232 48 8b cb mov rcx, rbx + 00235 8b f8 mov edi, eax + 00237 e8 00 00 00 00 call stbi__get16be + 0023c c1 e7 10 shl edi, 16 + 0023f 03 c7 add eax, edi + +; 4625 : s->img_y = stbi__get32be(s); + + 00241 89 43 04 mov DWORD PTR [rbx+4], eax + +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 00244 3d 00 00 00 01 cmp eax, 16777216 ; 01000000H + 00249 0f 87 f2 01 00 + 00 ja $LN342@stbi__pars + +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 0024f 81 3b 00 00 00 + 01 cmp DWORD PTR [rbx], 16777216 ; 01000000H + 00255 0f 87 e6 01 00 + 00 ja $LN342@stbi__pars + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0025b 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00262 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00269 73 0f jae SHORT $LN161@stbi__pars + +; 1078 : return *s->img_buffer++; + + 0026b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0026e 48 ff c0 inc rax + 00271 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00278 eb 26 jmp SHORT $LN160@stbi__pars +$LN161@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 0027a 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0027e 74 1e je SHORT $LN162@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 00280 48 8b cb mov rcx, rbx + 00283 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00288 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0028f 0f b6 08 movzx ecx, BYTE PTR [rax] + 00292 48 ff c0 inc rax + 00295 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0029c eb 02 jmp SHORT $LN160@stbi__pars +$LN162@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 0029e 32 c9 xor cl, cl +$LN160@stbi__pars: + +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); + + 002a0 0f b6 c1 movzx eax, cl + 002a3 41 89 45 20 mov DWORD PTR [r13+32], eax + 002a7 83 f8 10 cmp eax, 16 + 002aa 0f 87 eb 0a 00 + 00 ja $LN334@stbi__pars + 002b0 b9 16 01 01 00 mov ecx, 65814 ; 00010116H + 002b5 0f a3 c1 bt ecx, eax + 002b8 0f 83 dd 0a 00 + 00 jae $LN334@stbi__pars + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 002be 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002c5 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 002cc 73 0f jae SHORT $LN167@stbi__pars + +; 1078 : return *s->img_buffer++; + + 002ce 0f b6 08 movzx ecx, BYTE PTR [rax] + 002d1 48 ff c0 inc rax + 002d4 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002db eb 26 jmp SHORT $LN166@stbi__pars +$LN167@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 002dd 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 002e1 74 1e je SHORT $LN168@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 002e3 48 8b cb mov rcx, rbx + 002e6 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 002eb 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002f2 0f b6 08 movzx ecx, BYTE PTR [rax] + 002f5 48 ff c0 inc rax + 002f8 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002ff eb 02 jmp SHORT $LN166@stbi__pars +$LN168@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 00301 32 c9 xor cl, cl +$LN166@stbi__pars: + +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); + + 00303 0f b6 f9 movzx edi, cl + 00306 89 7c 24 54 mov DWORD PTR color$1$[rsp], edi + 0030a 83 ff 06 cmp edi, 6 + 0030d 0f 87 ed 09 00 + 00 ja $LN336@stbi__pars + +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); + + 00313 83 ff 03 cmp edi, 3 + 00316 75 16 jne SHORT $LN32@stbi__pars + 00318 41 83 7d 20 10 cmp DWORD PTR [r13+32], 16 + 0031d 0f 84 dd 09 00 + 00 je $LN336@stbi__pars + +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); + + 00323 40 0f b6 f7 movzx esi, dil + 00327 40 88 7c 24 40 mov BYTE PTR pal_img_n$1$[rsp], dil + 0032c eb 0f jmp SHORT $LN34@stbi__pars +$LN32@stbi__pars: + 0032e 40 f6 c7 01 test dil, 1 + 00332 0f 85 c8 09 00 + 00 jne $LN336@stbi__pars + 00338 0f b6 74 24 40 movzx esi, BYTE PTR pal_img_n$1$[rsp] +$LN34@stbi__pars: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0033d 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00344 72 15 jb SHORT $LN632@stbi__pars + +; 1079 : if (s->read_from_callbacks) { + + 00346 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0034a 74 24 je SHORT $LN184@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 0034c 48 8b cb mov rcx, rbx + 0034f e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00354 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN632@stbi__pars: + +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); + + 0035b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0035e 48 ff c0 inc rax + 00361 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00368 84 c9 test cl, cl + 0036a 0f 85 af 09 00 + 00 jne $LN338@stbi__pars +$LN184@stbi__pars: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00370 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00377 72 15 jb SHORT $LN633@stbi__pars + +; 1079 : if (s->read_from_callbacks) { + + 00379 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0037d 74 24 je SHORT $LN206@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 0037f 48 8b cb mov rcx, rbx + 00382 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00387 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN633@stbi__pars: + +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); + + 0038e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00391 48 ff c0 inc rax + 00394 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0039b 84 c9 test cl, cl + 0039d 0f 85 9b 09 00 + 00 jne $LN339@stbi__pars +$LN206@stbi__pars: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003a3 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 003aa 73 0f jae SHORT $LN219@stbi__pars + +; 1078 : return *s->img_buffer++; + + 003ac 0f b6 08 movzx ecx, BYTE PTR [rax] + 003af 48 ff c0 inc rax + 003b2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003b9 eb 26 jmp SHORT $LN218@stbi__pars +$LN219@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 003bb 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 003bf 74 1e je SHORT $LN220@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 003c1 48 8b cb mov rcx, rbx + 003c4 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003c9 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 003d0 0f b6 08 movzx ecx, BYTE PTR [rax] + 003d3 48 ff c0 inc rax + 003d6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003dd eb 02 jmp SHORT $LN218@stbi__pars +$LN220@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 003df 32 c9 xor cl, cl +$LN218@stbi__pars: + +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); + + 003e1 44 0f b6 e1 movzx r12d, cl + 003e5 44 89 64 24 4c mov DWORD PTR interlace$1$[rsp], r12d + 003ea 41 83 fc 01 cmp r12d, 1 + 003ee 0f 87 88 09 00 + 00 ja $LN340@stbi__pars + +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); + + 003f4 8b 0b mov ecx, DWORD PTR [rbx] + 003f6 85 c9 test ecx, ecx + 003f8 0f 84 5f 09 00 + 00 je $LN39@stbi__pars + 003fe 44 8b 4b 04 mov r9d, DWORD PTR [rbx+4] + 00402 45 85 c9 test r9d, r9d + 00405 0f 84 52 09 00 + 00 je $LN39@stbi__pars + +; 4636 : if (!pal_img_n) { + + 0040b 33 d2 xor edx, edx + 0040d b8 00 00 00 40 mov eax, 1073741824 ; 40000000H + 00412 f7 f1 div ecx + 00414 40 84 f6 test sil, sil + 00417 75 47 jne SHORT $LN40@stbi__pars + +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + + 00419 33 d2 xor edx, edx + 0041b 44 8b c7 mov r8d, edi + 0041e 41 c1 e8 02 shr r8d, 2 + 00422 8b cf mov ecx, edi + 00424 83 e1 02 and ecx, 2 + 00427 41 83 e0 01 and r8d, 1 + 0042b 83 c9 01 or ecx, 1 + 0042e 44 03 c1 add r8d, ecx + 00431 41 f7 f0 div r8d + 00434 44 89 43 08 mov DWORD PTR [rbx+8], r8d + 00438 41 3b c1 cmp eax, r9d + 0043b 0f 83 53 03 00 + 00 jae $LN8@stbi__pars +$LN342@stbi__pars: + +; 4781 : } + + 00441 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00447 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00450 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00454 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 0045b e9 87 0a 00 00 jmp $LN635@stbi__pars +$LN40@stbi__pars: + +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); + + 00460 c1 e8 02 shr eax, 2 + 00463 c7 43 08 01 00 + 00 00 mov DWORD PTR [rbx+8], 1 + 0046a 41 3b c1 cmp eax, r9d + 0046d 72 d2 jb SHORT $LN342@stbi__pars + +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; + + 0046f e9 20 03 00 00 jmp $LN8@stbi__pars +$LN99@stbi__pars: + +; 4614 : switch (c.type) { + + 00474 81 f9 45 54 4c + 50 cmp ecx, 1347179589 ; 504c5445H + 0047a 0f 84 c4 01 00 + 00 je $LN44@stbi__pars + 00480 81 f9 53 4e 52 + 74 cmp ecx, 1951551059 ; 74524e53H + 00486 74 76 je SHORT $LN48@stbi__pars +$LN93@stbi__pars: + +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + + 00488 83 7c 24 44 00 cmp DWORD PTR first$1$[rsp], 0 + 0048d 0f 85 3a 0a 00 + 00 jne $LN354@stbi__pars + +; 4764 : if ((c.type & (1 << 29)) == 0) { + + 00493 0f ba e2 1d bt edx, 29 + 00497 0f 83 5b 09 00 + 00 jae $LN345@stbi__pars +$LN634@stbi__pars: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 0049d 85 f6 test esi, esi + 0049f 0f 84 ef 02 00 + 00 je $LN8@stbi__pars + 004a5 79 13 jns SHORT $LN144@stbi__pars + 004a7 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 004ae 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 004b5 e9 da 02 00 00 jmp $LN8@stbi__pars +$LN144@stbi__pars: + 004ba 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 004bf 74 2e je SHORT $LN481@stbi__pars + 004c1 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 004c7 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + 004cd 3b ce cmp ecx, esi + 004cf 7d 1e jge SHORT $LN481@stbi__pars + 004d1 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 004d8 2b f1 sub esi, ecx + 004da 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 004de 8b d6 mov edx, esi + 004e0 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 004e7 ff 53 18 call QWORD PTR [rbx+24] + 004ea e9 a5 02 00 00 jmp $LN8@stbi__pars +$LN481@stbi__pars: + 004ef 48 63 c6 movsxd rax, esi + 004f2 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax + 004f9 e9 96 02 00 00 jmp $LN8@stbi__pars +$LN48@stbi__pars: + +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + + 004fe 83 7c 24 44 00 cmp DWORD PTR first$1$[rsp], 0 + 00503 0f 85 c4 09 00 + 00 jne $LN354@stbi__pars + +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); + + 00509 49 83 7d 08 00 cmp QWORD PTR [r13+8], 0 + 0050e 0f 85 81 09 00 + 00 jne $LN347@stbi__pars + +; 4667 : if (pal_img_n) { + + 00514 80 7c 24 40 00 cmp BYTE PTR pal_img_n$1$[rsp], 0 + 00519 0f 84 8f 00 00 + 00 je $LN51@stbi__pars + +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); + + 0051f 45 85 ff test r15d, r15d + 00522 0f 84 35 09 00 + 00 je $LN349@stbi__pars + +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); + + 00528 41 3b f7 cmp esi, r15d + 0052b 0f 87 0d 09 00 + 00 ja $LN350@stbi__pars + +; 4671 : pal_img_n = 4; + + 00531 33 c0 xor eax, eax + 00533 c6 44 24 40 04 mov BYTE PTR pal_img_n$1$[rsp], 4 + 00538 8b f8 mov edi, eax + +; 4672 : for (i = 0; i < c.length; ++i) + + 0053a 85 f6 test esi, esi + 0053c 0f 84 52 02 00 + 00 je $LN8@stbi__pars + 00542 0f 1f 40 00 66 + 66 0f 1f 84 00 + 00 00 00 00 npad 14 +$LL12@stbi__pars: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00550 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00557 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0055e 73 0f jae SHORT $LN171@stbi__pars + +; 1078 : return *s->img_buffer++; + + 00560 0f b6 10 movzx edx, BYTE PTR [rax] + 00563 48 ff c0 inc rax + 00566 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0056d eb 26 jmp SHORT $LN170@stbi__pars +$LN171@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 0056f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00573 74 1e je SHORT $LN172@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 00575 48 8b cb mov rcx, rbx + 00578 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0057d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00584 0f b6 10 movzx edx, BYTE PTR [rax] + 00587 48 ff c0 inc rax + 0058a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00591 eb 02 jmp SHORT $LN170@stbi__pars +$LN172@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 00593 32 d2 xor dl, dl +$LN170@stbi__pars: + +; 4673 : palette[i * 4 + 3] = stbi__get8(s); + + 00595 8d 04 bd 03 00 + 00 00 lea eax, DWORD PTR [rdi*4+3] + 0059c ff c7 inc edi + 0059e 88 94 05 80 0f + 00 00 mov BYTE PTR palette$[rbp+rax-256], dl + 005a5 3b fe cmp edi, esi + 005a7 72 a7 jb SHORT $LL12@stbi__pars + +; 4674 : } + + 005a9 e9 e6 01 00 00 jmp $LN8@stbi__pars +$LN51@stbi__pars: + +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); + + 005ae 8b 4b 08 mov ecx, DWORD PTR [rbx+8] + 005b1 f6 c1 01 test cl, 1 + 005b4 0f 84 bf 08 00 + 00 je $LN351@stbi__pars + +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); + + 005ba 8d 04 09 lea eax, DWORD PTR [rcx+rcx] + 005bd 3b f0 cmp esi, eax + 005bf 0f 85 79 08 00 + 00 jne $LN350@stbi__pars + +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { + + 005c5 33 c0 xor eax, eax + 005c7 c6 44 24 41 01 mov BYTE PTR has_trans$1$[rsp], 1 + 005cc 41 83 7d 20 10 cmp DWORD PTR [r13+32], 16 + 005d1 8b f0 mov esi, eax + 005d3 75 2a jne SHORT $LN59@stbi__pars + +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + + 005d5 85 c9 test ecx, ecx + 005d7 0f 8e b7 01 00 + 00 jle $LN8@stbi__pars + 005dd 48 8d bd 74 0f + 00 00 lea rdi, QWORD PTR tc16$[rbp-256] +$LL15@stbi__pars: + 005e4 48 8b cb mov rcx, rbx + 005e7 e8 00 00 00 00 call stbi__get16be + 005ec ff c6 inc esi + 005ee 66 89 07 mov WORD PTR [rdi], ax + 005f1 48 8d 7f 02 lea rdi, QWORD PTR [rdi+2] + 005f5 3b 73 08 cmp esi, DWORD PTR [rbx+8] + 005f8 7c ea jl SHORT $LL15@stbi__pars + +; 4683 : } + + 005fa e9 95 01 00 00 jmp $LN8@stbi__pars +$LN59@stbi__pars: + +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + + 005ff 85 c9 test ecx, ecx + 00601 0f 8e 8d 01 00 + 00 jle $LN8@stbi__pars + 00607 48 8d bd 70 0f + 00 00 lea rdi, QWORD PTR tc$[rbp-256] + 0060e 4c 8d 25 00 00 + 00 00 lea r12, OFFSET FLAT:stbi__depth_scale_table +$LL18@stbi__pars: + 00615 48 8b cb mov rcx, rbx + 00618 e8 00 00 00 00 call stbi__get16be + 0061d 49 63 4d 20 movsxd rcx, DWORD PTR [r13+32] + 00621 48 8d 7f 01 lea rdi, QWORD PTR [rdi+1] + 00625 0f b6 c0 movzx eax, al + 00628 ff c6 inc esi + 0062a 42 0f b6 14 21 movzx edx, BYTE PTR [rcx+r12] + 0062f 0f af c2 imul eax, edx + 00632 88 47 ff mov BYTE PTR [rdi-1], al + 00635 3b 73 08 cmp esi, DWORD PTR [rbx+8] + 00638 7c db jl SHORT $LL18@stbi__pars + +; 4686 : } +; 4687 : } +; 4688 : break; + + 0063a 44 8b 64 24 4c mov r12d, DWORD PTR interlace$1$[rsp] + 0063f e9 50 01 00 00 jmp $LN8@stbi__pars +$LN44@stbi__pars: + +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + + 00644 83 7c 24 44 00 cmp DWORD PTR first$1$[rsp], 0 + 00649 0f 85 7e 08 00 + 00 jne $LN354@stbi__pars + +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); + + 0064f 81 fe 00 03 00 + 00 cmp esi, 768 ; 00000300H + 00655 0f 87 56 08 00 + 00 ja $LN356@stbi__pars + +; 4653 : pal_len = c.length / 3; + + 0065b b8 ab aa aa aa mov eax, -1431655765 ; aaaaaaabH + 00660 f7 e6 mul esi + 00662 44 8b fa mov r15d, edx + 00665 41 d1 ef shr r15d, 1 + +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); + + 00668 43 8d 04 7f lea eax, DWORD PTR [r15+r15*2] + 0066c 3b c6 cmp eax, esi + 0066e 0f 85 3d 08 00 + 00 jne $LN356@stbi__pars + +; 4655 : for (i = 0; i < pal_len; ++i) { + + 00674 33 c0 xor eax, eax + 00676 8b f0 mov esi, eax + 00678 45 85 ff test r15d, r15d + 0067b 0f 84 13 01 00 + 00 je $LN8@stbi__pars + 00681 0f 1f 40 00 66 + 66 66 0f 1f 84 + 00 00 00 00 00 npad 15 +$LL9@stbi__pars: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00690 48 8b 93 c0 00 + 00 00 mov rdx, QWORD PTR [rbx+192] + 00697 48 3b 93 c8 00 + 00 00 cmp rdx, QWORD PTR [rbx+200] + 0069e 73 0f jae SHORT $LN109@stbi__pars + +; 1078 : return *s->img_buffer++; + + 006a0 0f b6 0a movzx ecx, BYTE PTR [rdx] + 006a3 48 ff c2 inc rdx + 006a6 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + 006ad eb 27 jmp SHORT $LN108@stbi__pars +$LN109@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 006af 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 006b3 74 1f je SHORT $LN110@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 006b5 48 8b cb mov rcx, rbx + 006b8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 006bd 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006c4 0f b6 08 movzx ecx, BYTE PTR [rax] + 006c7 48 8d 50 01 lea rdx, QWORD PTR [rax+1] + 006cb 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + 006d2 eb 02 jmp SHORT $LN108@stbi__pars +$LN110@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 006d4 32 c9 xor cl, cl +$LN108@stbi__pars: + +; 4656 : palette[i * 4 + 0] = stbi__get8(s); + + 006d6 8d 3c b5 00 00 + 00 00 lea edi, DWORD PTR [rsi*4] + 006dd 88 8c 3d 80 0f + 00 00 mov BYTE PTR palette$[rbp+rdi-256], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 006e4 48 3b 93 c8 00 + 00 00 cmp rdx, QWORD PTR [rbx+200] + 006eb 73 10 jae SHORT $LN113@stbi__pars + +; 1078 : return *s->img_buffer++; + + 006ed 44 0f b6 02 movzx r8d, BYTE PTR [rdx] + 006f1 48 ff c2 inc rdx + 006f4 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + 006fb eb 29 jmp SHORT $LN112@stbi__pars +$LN113@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 006fd 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00701 74 20 je SHORT $LN114@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 00703 48 8b cb mov rcx, rbx + 00706 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0070b 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00712 44 0f b6 00 movzx r8d, BYTE PTR [rax] + 00716 48 8d 50 01 lea rdx, QWORD PTR [rax+1] + 0071a 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + 00721 eb 03 jmp SHORT $LN112@stbi__pars +$LN114@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 00723 45 32 c0 xor r8b, r8b +$LN112@stbi__pars: + +; 4657 : palette[i * 4 + 1] = stbi__get8(s); + + 00726 8d 47 01 lea eax, DWORD PTR [rdi+1] + 00729 44 88 84 05 80 + 0f 00 00 mov BYTE PTR palette$[rbp+rax-256], r8b + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00731 48 3b 93 c8 00 + 00 00 cmp rdx, QWORD PTR [rbx+200] + 00738 73 11 jae SHORT $LN117@stbi__pars + +; 1078 : return *s->img_buffer++; + + 0073a 44 0f b6 02 movzx r8d, BYTE PTR [rdx] + 0073e 48 8d 42 01 lea rax, QWORD PTR [rdx+1] + 00742 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00749 eb 28 jmp SHORT $LN116@stbi__pars +$LN117@stbi__pars: + +; 1079 : if (s->read_from_callbacks) { + + 0074b 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0074f 74 1f je SHORT $LN118@stbi__pars + +; 1080 : stbi__refill_buffer(s); + + 00751 48 8b cb mov rcx, rbx + 00754 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00759 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00760 44 0f b6 00 movzx r8d, BYTE PTR [rax] + 00764 48 ff c0 inc rax + 00767 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0076e eb 03 jmp SHORT $LN116@stbi__pars +$LN118@stbi__pars: + +; 1082 : } +; 1083 : return 0; + + 00770 45 32 c0 xor r8b, r8b +$LN116@stbi__pars: + +; 4658 : palette[i * 4 + 2] = stbi__get8(s); + + 00773 8d 47 02 lea eax, DWORD PTR [rdi+2] + 00776 ff c6 inc esi + 00778 44 88 84 05 80 + 0f 00 00 mov BYTE PTR palette$[rbp+rax-256], r8b + +; 4659 : palette[i * 4 + 3] = 255; + + 00780 8d 47 03 lea eax, DWORD PTR [rdi+3] + 00783 c6 84 05 80 0f + 00 00 ff mov BYTE PTR palette$[rbp+rax-256], 255 ; 000000ffH + 0078b 41 3b f7 cmp esi, r15d + 0078e 0f 82 fc fe ff + ff jb $LL9@stbi__pars +$LN8@stbi__pars: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00794 48 8b cb mov rcx, rbx + 00797 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 0079c 48 8b cb mov rcx, rbx + 0079f e8 00 00 00 00 call stbi__get16be + +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } + + 007a4 e9 fc f8 ff ff jmp $LL2@stbi__pars +$LN75@stbi__pars: + +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + + 007a9 41 8b 45 20 mov eax, DWORD PTR [r13+32] + 007ad 0f af 03 imul eax, DWORD PTR [rbx] + 007b0 83 c0 07 add eax, 7 + 007b3 c1 e8 03 shr eax, 3 + +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + + 007b6 0f af 43 08 imul eax, DWORD PTR [rbx+8] + 007ba ff c0 inc eax + 007bc 0f af 43 04 imul eax, DWORD PTR [rbx+4] + +; 4024 : char* p = (char*)stbi__malloc(initial_size); + + 007c0 48 63 f0 movsxd rsi, eax + +; 438 : return STBI_MALLOC(size); + + 007c3 48 8b ce mov rcx, rsi + 007c6 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 007cc 48 8b c8 mov rcx, rax + +; 4025 : if (p == NULL) return NULL; + + 007cf 48 85 c0 test rax, rax + 007d2 75 09 jne SHORT $LN193@stbi__pars + 007d4 49 89 45 10 mov QWORD PTR [r13+16], rax + 007d8 e9 13 07 00 00 jmp $LN327@stbi__pars +$LN193@stbi__pars: + +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; + + 007dd 48 63 44 24 48 movsxd rax, DWORD PTR ioff$1$[rsp] + +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); + + 007e2 44 8b 7c 24 50 mov r15d, DWORD PTR is_iphone$1$[rsp] + +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; + + 007e7 48 03 c7 add rax, rdi + 007ea 48 89 44 24 78 mov QWORD PTR a$15[rsp+8], rax + +; 3993 : a->zout_end = obuf + olen; + + 007ef 48 8d 04 0e lea rax, QWORD PTR [rsi+rcx] + +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); + + 007f3 33 f6 xor esi, esi + +; 3991 : a->zout_start = obuf; + + 007f5 48 89 4d 90 mov QWORD PTR a$15[rbp-224], rcx + +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); + + 007f9 8b d6 mov edx, esi + +; 3992 : a->zout = obuf; + + 007fb 48 89 4d 88 mov QWORD PTR a$15[rbp-232], rcx + +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); + + 007ff 45 85 ff test r15d, r15d + +; 4026 : a.zbuffer = (stbi_uc*)buffer; + + 00802 48 89 7c 24 70 mov QWORD PTR a$15[rsp], rdi + +; 3996 : return stbi__parse_zlib(a, parse_header); + + 00807 48 8d 4c 24 70 lea rcx, QWORD PTR a$15[rsp] + 0080c 48 89 45 98 mov QWORD PTR a$15[rbp-216], rax + +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); + + 00810 0f 94 c2 sete dl + +; 3994 : a->z_expandable = exp; + + 00813 c7 45 a0 01 00 + 00 00 mov DWORD PTR a$15[rbp-208], 1 + +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); + + 0081a e8 00 00 00 00 call stbi__parse_zlib + +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + + 0081f 85 c0 test eax, eax + 00821 0f 84 4a 04 00 + 00 je $LN194@stbi__pars + +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; + + 00827 48 8b 45 90 mov rax, QWORD PTR a$15[rbp-224] + 0082b 8b 7d 88 mov edi, DWORD PTR a$15[rbp-232] + 0082e 2b 7d 90 sub edi, DWORD PTR a$15[rbp-224] + +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); + + 00831 49 89 45 10 mov QWORD PTR [r13+16], rax + +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error + + 00835 48 85 c0 test rax, rax + 00838 0f 84 b2 06 00 + 00 je $LN327@stbi__pars + +; 4727 : STBI_FREE(z->idata); z->idata = NULL; + + 0083e 49 8b 4d 08 mov rcx, QWORD PTR [r13+8] + 00842 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) + + 00848 8b 4c 24 58 mov ecx, DWORD PTR req_comp$1$[rsp] + 0084c 49 89 75 08 mov QWORD PTR [r13+8], rsi + 00850 8b 43 08 mov eax, DWORD PTR [rbx+8] + 00853 0f b6 74 24 40 movzx esi, BYTE PTR pal_img_n$1$[rsp] + 00858 44 8d 48 01 lea r9d, DWORD PTR [rax+1] + 0085c 41 3b c9 cmp ecx, r9d + 0085f 75 0e jne SHORT $LN80@stbi__pars + 00861 83 f9 03 cmp ecx, 3 + 00864 74 09 je SHORT $LN80@stbi__pars + 00866 40 84 f6 test sil, sil + 00869 0f 84 a2 00 00 + 00 je $LN508@stbi__pars +$LN80@stbi__pars: + 0086f 44 0f b6 74 24 + 41 movzx r14d, BYTE PTR has_trans$1$[rsp] + 00875 45 84 f6 test r14b, r14b + 00878 75 03 jne SHORT $LN78@stbi__pars + +; 4730 : else +; 4731 : s->img_out_n = s->img_n; + + 0087a 44 8b c8 mov r9d, eax +$LN78@stbi__pars: + +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + + 0087d 8b 44 24 54 mov eax, DWORD PTR color$1$[rsp] + 00881 44 8b c7 mov r8d, edi + 00884 44 89 4b 0c mov DWORD PTR [rbx+12], r9d + 00888 49 8b cd mov rcx, r13 + 0088b 49 8b 55 10 mov rdx, QWORD PTR [r13+16] + 0088f 44 89 64 24 30 mov DWORD PTR [rsp+48], r12d + 00894 89 44 24 28 mov DWORD PTR [rsp+40], eax + 00898 41 8b 45 20 mov eax, DWORD PTR [r13+32] + 0089c 89 44 24 20 mov DWORD PTR [rsp+32], eax + 008a0 e8 00 00 00 00 call stbi__create_png_image + 008a5 85 c0 test eax, eax + 008a7 0f 84 43 06 00 + 00 je $LN327@stbi__pars + +; 4733 : if (has_trans) { + + 008ad 45 84 f6 test r14b, r14b + 008b0 0f 84 0a 01 00 + 00 je $LN278@stbi__pars + +; 4734 : if (z->depth == 16) { + + 008b6 49 8b 4d 00 mov rcx, QWORD PTR [r13] + 008ba 8b 41 04 mov eax, DWORD PTR [rcx+4] + 008bd 0f af 01 imul eax, DWORD PTR [rcx] + 008c0 41 83 7d 20 10 cmp DWORD PTR [r13+32], 16 + 008c5 49 8b 4d 18 mov rcx, QWORD PTR [r13+24] + 008c9 0f 85 88 00 00 + 00 jne $LN83@stbi__pars + +; 4454 : for (i = 0; i < pixel_count; ++i) { + + 008cf 85 c0 test eax, eax + 008d1 0f 84 e9 00 00 + 00 je $LN278@stbi__pars + +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { + + 008d7 45 33 d2 xor r10d, r10d + 008da 83 7b 0c 02 cmp DWORD PTR [rbx+12], 2 + 008de 75 3c jne SHORT $LN269@stbi__pars + 008e0 44 0f b7 85 74 + 0f 00 00 movzx r8d, WORD PTR tc16$[rbp-256] + 008e8 8b d0 mov edx, eax + 008ea 66 0f 1f 44 00 + 00 npad 6 +$LL265@stbi__pars: + +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); + + 008f0 66 44 39 01 cmp WORD PTR [rcx], r8w + +; 4456 : p += 2; + + 008f4 48 8d 49 04 lea rcx, QWORD PTR [rcx+4] + 008f8 b8 ff ff 00 00 mov eax, 65535 ; 0000ffffH + 008fd 66 41 0f 44 c2 cmove ax, r10w + 00902 66 89 41 fe mov WORD PTR [rcx-2], ax + 00906 48 83 ea 01 sub rdx, 1 + 0090a 75 e4 jne SHORT $LL265@stbi__pars + +; 4457 : } +; 4458 : } + + 0090c e9 af 00 00 00 jmp $LN278@stbi__pars +$LN508@stbi__pars: + +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) + + 00911 44 0f b6 74 24 + 41 movzx r14d, BYTE PTR has_trans$1$[rsp] + +; 4729 : s->img_out_n = s->img_n + 1; + + 00917 e9 61 ff ff ff jmp $LN78@stbi__pars +$LN269@stbi__pars: + 0091c 0f b7 95 78 0f + 00 00 movzx edx, WORD PTR tc16$[rbp-252] + 00923 44 0f b7 85 76 + 0f 00 00 movzx r8d, WORD PTR tc16$[rbp-254] + 0092b 44 0f b7 8d 74 + 0f 00 00 movzx r9d, WORD PTR tc16$[rbp-256] +$LL268@stbi__pars: + +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + + 00933 66 44 39 09 cmp WORD PTR [rcx], r9w + 00937 75 12 jne SHORT $LN271@stbi__pars + 00939 66 44 39 41 02 cmp WORD PTR [rcx+2], r8w + 0093e 75 0b jne SHORT $LN271@stbi__pars + 00940 66 39 51 04 cmp WORD PTR [rcx+4], dx + 00944 75 05 jne SHORT $LN271@stbi__pars + +; 4462 : p[3] = 0; + + 00946 66 44 89 51 06 mov WORD PTR [rcx+6], r10w +$LN271@stbi__pars: + +; 4463 : p += 4; + + 0094b 48 83 c1 08 add rcx, 8 + 0094f 48 83 e8 01 sub rax, 1 + 00953 75 de jne SHORT $LL268@stbi__pars + +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } + + 00955 eb 69 jmp SHORT $LN278@stbi__pars +$LN83@stbi__pars: + +; 4428 : for (i = 0; i < pixel_count; ++i) { + + 00957 85 c0 test eax, eax + 00959 74 65 je SHORT $LN278@stbi__pars + +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { + + 0095b 83 7b 0c 02 cmp DWORD PTR [rbx+12], 2 + 0095f 75 2a jne SHORT $LN280@stbi__pars + 00961 44 0f b6 85 70 + 0f 00 00 movzx r8d, BYTE PTR tc$[rbp-256] + 00969 45 33 d2 xor r10d, r10d + 0096c 8b d0 mov edx, eax + 0096e 66 90 npad 2 +$LL276@stbi__pars: + +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); + + 00970 44 38 01 cmp BYTE PTR [rcx], r8b + +; 4430 : p += 2; + + 00973 48 8d 49 02 lea rcx, QWORD PTR [rcx+2] + 00977 b8 ff 00 00 00 mov eax, 255 ; 000000ffH + 0097c 41 0f 44 c2 cmove eax, r10d + 00980 88 41 ff mov BYTE PTR [rcx-1], al + 00983 48 83 ea 01 sub rdx, 1 + 00987 75 e7 jne SHORT $LL276@stbi__pars + +; 4431 : } +; 4432 : } + + 00989 eb 35 jmp SHORT $LN278@stbi__pars +$LN280@stbi__pars: + 0098b 0f b6 95 72 0f + 00 00 movzx edx, BYTE PTR tc$[rbp-254] + 00992 44 0f b6 85 71 + 0f 00 00 movzx r8d, BYTE PTR tc$[rbp-255] + 0099a 44 0f b6 8d 70 + 0f 00 00 movzx r9d, BYTE PTR tc$[rbp-256] +$LL279@stbi__pars: + +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + + 009a2 44 38 09 cmp BYTE PTR [rcx], r9b + 009a5 75 0f jne SHORT $LN282@stbi__pars + 009a7 44 38 41 01 cmp BYTE PTR [rcx+1], r8b + 009ab 75 09 jne SHORT $LN282@stbi__pars + 009ad 38 51 02 cmp BYTE PTR [rcx+2], dl + 009b0 75 04 jne SHORT $LN282@stbi__pars + +; 4436 : p[3] = 0; + + 009b2 c6 41 03 00 mov BYTE PTR [rcx+3], 0 +$LN282@stbi__pars: + +; 4437 : p += 4; + + 009b6 48 83 c1 04 add rcx, 4 + 009ba 48 83 e8 01 sub rax, 1 + 009be 75 e2 jne SHORT $LL279@stbi__pars +$LN278@stbi__pars: + +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + + 009c0 44 8b 25 00 00 + 00 00 mov r12d, DWORD PTR _tls_index + 009c7 45 85 ff test r15d, r15d + 009ca 0f 84 3a 01 00 + 00 je $LN292@stbi__pars + 009d0 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 009d9 4a 8b 14 e0 mov rdx, QWORD PTR [rax+r12*8] + 009dd b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_set + 009e2 83 3c 10 00 cmp DWORD PTR [rax+rdx], 0 + 009e6 74 0a je SHORT $LN97@stbi__pars + 009e8 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_local + 009ed 8b 04 10 mov eax, DWORD PTR [rax+rdx] + 009f0 eb 06 jmp SHORT $LN98@stbi__pars +$LN97@stbi__pars: + 009f2 8b 05 00 00 00 + 00 mov eax, DWORD PTR stbi__de_iphone_flag_global +$LN98@stbi__pars: + 009f8 85 c0 test eax, eax + 009fa 0f 84 0a 01 00 + 00 je $LN292@stbi__pars + 00a00 83 7b 0c 02 cmp DWORD PTR [rbx+12], 2 + 00a04 0f 8e 00 01 00 + 00 jle $LN292@stbi__pars + +; 4549 : stbi__context* s = z->s; + + 00a0a 49 8b 45 00 mov rax, QWORD PTR [r13] + +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; + + 00a0e 4d 8b 55 18 mov r10, QWORD PTR [r13+24] + 00a12 8b 48 04 mov ecx, DWORD PTR [rax+4] + 00a15 0f af 08 imul ecx, DWORD PTR [rax] + +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb + + 00a18 83 78 0c 03 cmp DWORD PTR [rax+12], 3 + 00a1c 75 31 jne SHORT $LN294@stbi__pars + +; 4554 : for (i = 0; i < pixel_count; ++i) { + + 00a1e 85 c9 test ecx, ecx + 00a20 0f 84 e4 00 00 + 00 je $LN292@stbi__pars + 00a26 8b d1 mov edx, ecx + 00a28 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL287@stbi__pars: + +; 4555 : stbi_uc t = p[0]; + + 00a30 41 0f b6 0a movzx ecx, BYTE PTR [r10] + +; 4556 : p[0] = p[2]; + + 00a34 41 0f b6 42 02 movzx eax, BYTE PTR [r10+2] + 00a39 41 88 02 mov BYTE PTR [r10], al + +; 4557 : p[2] = t; + + 00a3c 41 88 4a 02 mov BYTE PTR [r10+2], cl + +; 4558 : p += 3; + + 00a40 4d 8d 52 03 lea r10, QWORD PTR [r10+3] + 00a44 48 83 ea 01 sub rdx, 1 + 00a48 75 e6 jne SHORT $LL287@stbi__pars + +; 4559 : } +; 4560 : } + + 00a4a e9 bb 00 00 00 jmp $LN292@stbi__pars +$LN294@stbi__pars: + +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { + + 00a4f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_set + 00a54 83 3c 10 00 cmp DWORD PTR [rax+rdx], 0 + 00a58 74 0a je SHORT $LN301@stbi__pars + 00a5a b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_local + 00a5f 8b 04 10 mov eax, DWORD PTR [rax+rdx] + 00a62 eb 06 jmp SHORT $LN302@stbi__pars +$LN301@stbi__pars: + 00a64 8b 05 00 00 00 + 00 mov eax, DWORD PTR stbi__unpremultiply_on_load_global +$LN302@stbi__pars: + +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { + + 00a6a 85 c9 test ecx, ecx + 00a6c 0f 84 98 00 00 + 00 je $LN292@stbi__pars + +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { + + 00a72 85 c0 test eax, eax + 00a74 74 74 je SHORT $LN296@stbi__pars + +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { + + 00a76 8b f9 mov edi, ecx + 00a78 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL290@stbi__pars: + +; 4566 : stbi_uc a = p[3]; + + 00a80 41 0f b6 42 03 movzx eax, BYTE PTR [r10+3] + +; 4567 : stbi_uc t = p[0]; + + 00a85 45 0f b6 1a movzx r11d, BYTE PTR [r10] + 00a89 41 0f b6 4a 02 movzx ecx, BYTE PTR [r10+2] + +; 4568 : if (a) { + + 00a8e 84 c0 test al, al + 00a90 74 42 je SHORT $LN298@stbi__pars + +; 4569 : stbi_uc half = a / 2; + + 00a92 44 8b c0 mov r8d, eax + 00a95 44 8b c8 mov r9d, eax + +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; + + 00a98 41 0f b6 42 01 movzx eax, BYTE PTR [r10+1] + 00a9d 33 d2 xor edx, edx + 00a9f 69 c0 ff 00 00 + 00 imul eax, eax, 255 ; 000000ffH + 00aa5 41 d1 e8 shr r8d, 1 + 00aa8 41 03 c0 add eax, r8d + 00aab 41 f7 f1 div r9d + +; 4572 : p[2] = (t * 255 + half) / a; + + 00aae 33 d2 xor edx, edx + 00ab0 41 88 42 01 mov BYTE PTR [r10+1], al + 00ab4 41 69 c3 ff 00 + 00 00 imul eax, r11d, 255 ; 000000ffH + 00abb 41 03 c0 add eax, r8d + 00abe 41 f7 f1 div r9d + 00ac1 33 d2 xor edx, edx + 00ac3 44 8b d8 mov r11d, eax + 00ac6 69 c1 ff 00 00 + 00 imul eax, ecx, 255 ; 000000ffH + 00acc 41 03 c0 add eax, r8d + 00acf 41 f7 f1 div r9d + +; 4573 : } + + 00ad2 eb 03 jmp SHORT $LN299@stbi__pars +$LN298@stbi__pars: + +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; + + 00ad4 0f b6 c1 movzx eax, cl +$LN299@stbi__pars: + +; 4577 : } +; 4578 : p += 4; + + 00ad7 41 88 02 mov BYTE PTR [r10], al + 00ada 45 88 5a 02 mov BYTE PTR [r10+2], r11b + 00ade 49 83 c2 04 add r10, 4 + 00ae2 48 83 ef 01 sub rdi, 1 + 00ae6 75 98 jne SHORT $LL290@stbi__pars + +; 4579 : } +; 4580 : } + + 00ae8 eb 20 jmp SHORT $LN292@stbi__pars +$LN296@stbi__pars: + +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { + + 00aea 8b d1 mov edx, ecx + 00aec 0f 1f 40 00 npad 4 +$LL293@stbi__pars: + +; 4584 : stbi_uc t = p[0]; + + 00af0 41 0f b6 0a movzx ecx, BYTE PTR [r10] + +; 4585 : p[0] = p[2]; + + 00af4 41 0f b6 42 02 movzx eax, BYTE PTR [r10+2] + 00af9 41 88 02 mov BYTE PTR [r10], al + +; 4586 : p[2] = t; + + 00afc 41 88 4a 02 mov BYTE PTR [r10+2], cl + +; 4587 : p += 4; + + 00b00 4d 8d 52 04 lea r10, QWORD PTR [r10+4] + 00b04 48 83 ea 01 sub rdx, 1 + 00b08 75 e6 jne SHORT $LL293@stbi__pars +$LN292@stbi__pars: + +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { + + 00b0a 40 84 f6 test sil, sil + 00b0d 0f 84 2c 01 00 + 00 je $LN88@stbi__pars + +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; + + 00b13 8b 44 24 58 mov eax, DWORD PTR req_comp$1$[rsp] + 00b17 40 0f b6 f6 movzx esi, sil + 00b1b 89 73 08 mov DWORD PTR [rbx+8], esi + 00b1e 89 73 0c mov DWORD PTR [rbx+12], esi + 00b21 83 f8 03 cmp eax, 3 + 00b24 7c 05 jl SHORT $LN90@stbi__pars + 00b26 89 43 0c mov DWORD PTR [rbx+12], eax + 00b29 8b f0 mov esi, eax +$LN90@stbi__pars: + +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + + 00b2b 49 8b 45 00 mov rax, QWORD PTR [r13] + +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; + + 00b2f 49 8b 7d 18 mov rdi, QWORD PTR [r13+24] + 00b33 44 8b 70 04 mov r14d, DWORD PTR [rax+4] + 00b37 44 0f af 30 imul r14d, DWORD PTR [rax] + +; 467 : if (a < 0 || b < 0) return 0; + + 00b3b 45 85 f6 test r14d, r14d + 00b3e 0f 88 e2 00 00 + 00 js $LN463@stbi__pars + 00b44 85 f6 test esi, esi + 00b46 0f 88 da 00 00 + 00 js $LN463@stbi__pars + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00b4c 74 11 je SHORT $LN244@stbi__pars + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00b4e b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00b53 99 cdq + 00b54 f7 fe idiv esi + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 00b56 44 3b f0 cmp r14d, eax + 00b59 0f 8f c7 00 00 + 00 jg $LN463@stbi__pars +$LN244@stbi__pars: + +; 502 : return stbi__malloc(a * b + add); + + 00b5f 8b c6 mov eax, esi + 00b61 41 0f af c6 imul eax, r14d + 00b65 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 00b68 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00b6e 4c 8b f8 mov r15, rax + +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + 00b71 48 85 c0 test rax, rax + 00b74 0f 84 ac 00 00 + 00 je $LN463@stbi__pars + +; 4481 : for (i = 0; i < pixel_count; ++i) { + + 00b7a 45 85 f6 test r14d, r14d + 00b7d 0f 84 93 00 00 + 00 je $LN237@stbi__pars + +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { + + 00b83 45 8b ce mov r9d, r14d + 00b86 4c 8d 40 02 lea r8, QWORD PTR [rax+2] + 00b8a 83 fe 03 cmp esi, 3 + 00b8d 75 46 jne SHORT $LL238@stbi__pars + 00b8f 90 npad 1 +$LL235@stbi__pars: + +; 4482 : int n = orig[i] * 4; + + 00b90 0f b6 17 movzx edx, BYTE PTR [rdi] + +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; + + 00b93 4d 8d 40 03 lea r8, QWORD PTR [r8+3] + 00b97 48 8d 7f 01 lea rdi, QWORD PTR [rdi+1] + 00b9b 0f b6 84 95 80 + 0f 00 00 movzx eax, BYTE PTR palette$[rbp+rdx*4-256] + 00ba3 0f b6 8c 95 82 + 0f 00 00 movzx ecx, BYTE PTR palette$[rbp+rdx*4-254] + 00bab 41 88 40 fb mov BYTE PTR [r8-5], al + 00baf 0f b6 84 95 81 + 0f 00 00 movzx eax, BYTE PTR palette$[rbp+rdx*4-255] + 00bb7 41 88 40 fc mov BYTE PTR [r8-4], al + 00bbb 41 88 48 fd mov BYTE PTR [r8-3], cl + 00bbf 49 83 e9 01 sub r9, 1 + 00bc3 75 cb jne SHORT $LL235@stbi__pars + +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); + + 00bc5 49 8b 4d 18 mov rcx, QWORD PTR [r13+24] + 00bc9 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4500 : a->out = temp_out; + + 00bcf 4d 89 7d 18 mov QWORD PTR [r13+24], r15 + +; 4710 : z->idata = p; + + 00bd3 eb 72 jmp SHORT $LN92@stbi__pars +$LL238@stbi__pars: + +; 4491 : int n = orig[i] * 4; + + 00bd5 0f b6 17 movzx edx, BYTE PTR [rdi] + +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; + + 00bd8 4d 8d 40 04 lea r8, QWORD PTR [r8+4] + 00bdc 48 8d 7f 01 lea rdi, QWORD PTR [rdi+1] + 00be0 0f b6 84 95 80 + 0f 00 00 movzx eax, BYTE PTR palette$[rbp+rdx*4-256] + 00be8 0f b6 8c 95 83 + 0f 00 00 movzx ecx, BYTE PTR palette$[rbp+rdx*4-253] + 00bf0 41 88 40 fa mov BYTE PTR [r8-6], al + 00bf4 0f b6 84 95 81 + 0f 00 00 movzx eax, BYTE PTR palette$[rbp+rdx*4-255] + 00bfc 41 88 40 fb mov BYTE PTR [r8-5], al + 00c00 0f b6 84 95 82 + 0f 00 00 movzx eax, BYTE PTR palette$[rbp+rdx*4-254] + 00c08 41 88 40 fc mov BYTE PTR [r8-4], al + 00c0c 41 88 48 fd mov BYTE PTR [r8-3], cl + 00c10 49 83 e9 01 sub r9, 1 + 00c14 75 bf jne SHORT $LL238@stbi__pars +$LN237@stbi__pars: + +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); + + 00c16 49 8b 4d 18 mov rcx, QWORD PTR [r13+24] + 00c1a ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4500 : a->out = temp_out; + + 00c20 4d 89 7d 18 mov QWORD PTR [r13+24], r15 + +; 4710 : z->idata = p; + + 00c24 eb 21 jmp SHORT $LN92@stbi__pars +$LN463@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00c26 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00c2f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00c36 4a 8b 04 e0 mov rax, QWORD PTR [rax+r12*8] + +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + 00c3a e9 a8 02 00 00 jmp $LN635@stbi__pars +$LN88@stbi__pars: + +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { + + 00c3f 45 84 f6 test r14b, r14b + 00c42 74 03 je SHORT $LN92@stbi__pars + +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; + + 00c44 ff 43 08 inc DWORD PTR [rbx+8] +$LN92@stbi__pars: + +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; + + 00c47 49 8b 4d 10 mov rcx, QWORD PTR [r13+16] + 00c4b ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 00c51 33 c0 xor eax, eax + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00c53 48 8b cb mov rcx, rbx + +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; + + 00c56 49 89 45 10 mov QWORD PTR [r13+16], rax + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00c5a e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00c5f 48 8b cb mov rcx, rbx + 00c62 e8 00 00 00 00 call stbi__get16be + +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; + + 00c67 b8 01 00 00 00 mov eax, 1 + 00c6c e9 81 02 00 00 jmp $LN3@stbi__pars +$LN194@stbi__pars: + +; 4033 : STBI_FREE(a.zout_start); + + 00c71 48 8b 4d 90 mov rcx, QWORD PTR a$15[rbp-224] + 00c75 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4034 : return NULL; + + 00c7b 49 89 75 10 mov QWORD PTR [r13+16], rsi + +; 4710 : z->idata = p; + + 00c7f e9 6c 02 00 00 jmp $LN327@stbi__pars +$LN324@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00c84 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00c8a 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00c93 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00c97 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07CKIELOEH@no?5PLTE@ + +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); + + 00c9e e9 44 02 00 00 jmp $LN635@stbi__pars +$LN328@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00ca3 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00ca9 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00cb2 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00cb6 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + 00cbd e9 25 02 00 00 jmp $LN635@stbi__pars +$LN329@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00cc2 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00cc8 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00cd1 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00cd5 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09MNNCNKEO@outofdata@ + +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); + + 00cdc e9 06 02 00 00 jmp $LN635@stbi__pars +$LN326@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00ce1 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00ce7 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00cf0 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00cf4 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ + +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); + + 00cfb e9 e7 01 00 00 jmp $LN635@stbi__pars +$LN336@stbi__pars: + +; 4781 : } + + 00d00 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d06 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d0f 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d13 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@ + 00d1a e9 c8 01 00 00 jmp $LN635@stbi__pars +$LN338@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00d1f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d25 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d2e 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d32 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@MDMBDDFG@bad?5comp?5method@ + +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); + + 00d39 e9 a9 01 00 00 jmp $LN635@stbi__pars +$LN339@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00d3e 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d44 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d4d 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d51 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BC@GHLIKKMD@bad?5filter?5method@ + +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); + + 00d58 e9 8a 01 00 00 jmp $LN635@stbi__pars +$LN39@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00d5d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d63 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d6c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d70 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@FNFBHCOO@0?9pixel?5image@ + +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); + + 00d77 e9 6b 01 00 00 jmp $LN635@stbi__pars +$LN340@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00d7c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00d82 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00d8b 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00d8f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ + +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); + + 00d96 e9 4c 01 00 00 jmp $LN635@stbi__pars +$LN334@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00d9b 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00da1 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00daa 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00dae 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ + +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); + + 00db5 e9 2d 01 00 00 jmp $LN635@stbi__pars +$LN331@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00dba 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00dc0 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00dc9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00dcd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@POJLKMKK@bad?5IHDR?5len@ + +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); + + 00dd4 e9 0e 01 00 00 jmp $LN635@stbi__pars +$LN330@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00dd9 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00ddf 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00de8 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00dec 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@KBHBNJOK@multiple?5IHDR@ + +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); + + 00df3 e9 ef 00 00 00 jmp $LN635@stbi__pars +$LN345@stbi__pars: + +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + + 00df8 8b c2 mov eax, edx + +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + + 00dfa 88 15 03 00 00 + 00 mov BYTE PTR ?invalid_chunk@?BP@??stbi__parse_png_file@@9@9+3, dl + 00e00 c1 e8 18 shr eax, 24 + 00e03 88 05 00 00 00 + 00 mov BYTE PTR ?invalid_chunk@?BP@??stbi__parse_png_file@@9@9, al + 00e09 8b c2 mov eax, edx + 00e0b c1 e8 10 shr eax, 16 + 00e0e 88 05 01 00 00 + 00 mov BYTE PTR ?invalid_chunk@?BP@??stbi__parse_png_file@@9@9+1, al + 00e14 8b c2 mov eax, edx + +; 431 : stbi__g_failure_reason = str; + + 00e16 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + + 00e1c c1 e8 08 shr eax, 8 + 00e1f 88 05 02 00 00 + 00 mov BYTE PTR ?invalid_chunk@?BP@??stbi__parse_png_file@@9@9+2, al + +; 431 : stbi__g_failure_reason = str; + + 00e25 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00e2e 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00e32 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 + +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + + 00e39 e9 a9 00 00 00 jmp $LN635@stbi__pars +$LN350@stbi__pars: + +; 4781 : } + + 00e3e 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00e44 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00e4d 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00e51 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ + 00e58 e9 8a 00 00 00 jmp $LN635@stbi__pars +$LN349@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00e5d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00e63 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00e6c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00e70 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ + +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); + + 00e77 eb 6e jmp SHORT $LN635@stbi__pars +$LN351@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00e79 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00e7f 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00e88 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00e8c 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ + +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); + + 00e93 eb 52 jmp SHORT $LN635@stbi__pars +$LN347@stbi__pars: + +; 431 : stbi__g_failure_reason = str; + + 00e95 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00e9b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00ea4 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00ea8 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ + +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); + + 00eaf eb 36 jmp SHORT $LN635@stbi__pars +$LN356@stbi__pars: + +; 4781 : } + + 00eb1 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00eb7 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00ec0 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00ec4 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@JCPAJAKB@invalid?5PLTE@ + 00ecb eb 1a jmp SHORT $LN635@stbi__pars +$LN354@stbi__pars: + 00ecd 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00ed3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00edc 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00ee0 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@ +$LN635@stbi__pars: + 00ee7 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00eec 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN327@stbi__pars: + 00ef0 33 c0 xor eax, eax +$LN3@stbi__pars: + 00ef2 48 8b 8d 80 13 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp-256] + 00ef9 48 33 cc xor rcx, rsp + 00efc e8 00 00 00 00 call __security_check_cookie + 00f01 4c 8d 9c 24 90 + 14 00 00 lea r11, QWORD PTR [rsp+5264] + 00f09 49 8b 5b 38 mov rbx, QWORD PTR [r11+56] + 00f0d 49 8b 73 40 mov rsi, QWORD PTR [r11+64] + 00f11 49 8b 7b 48 mov rdi, QWORD PTR [r11+72] + 00f15 49 8b e3 mov rsp, r11 + 00f18 41 5f pop r15 + 00f1a 41 5e pop r14 + 00f1c 41 5d pop r13 + 00f1e 41 5c pop r12 + 00f20 5d pop rbp + 00f21 c3 ret 0 +stbi__parse_png_file ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__do_png +_TEXT SEGMENT +p$ = 80 +x$ = 88 +y$ = 96 +n$ = 104 +req_comp$ = 112 +ri$ = 120 +stbi__do_png PROC ; COMDAT + +; 4784 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 54 push r12 + 00016 41 56 push r14 + 00018 41 57 push r15 + 0001a 48 83 ec 30 sub rsp, 48 ; 00000030H + +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + 0001e 8b 7c 24 70 mov edi, DWORD PTR req_comp$[rsp] + 00022 45 33 e4 xor r12d, r12d + 00025 4d 8b f1 mov r14, r9 + 00028 4d 8b f8 mov r15, r8 + 0002b 48 8b ea mov rbp, rdx + 0002e 48 8b d9 mov rbx, rcx + 00031 41 8b f4 mov esi, r12d + 00034 83 ff 04 cmp edi, 4 + 00037 0f 87 e0 00 00 + 00 ja $LN3@stbi__do_p + +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + + 0003d 44 8b c7 mov r8d, edi + 00040 33 d2 xor edx, edx + 00042 e8 00 00 00 00 call stbi__parse_png_file + 00047 85 c0 test eax, eax + 00049 0f 84 83 00 00 + 00 je $LN13@stbi__do_p + +; 4788 : if (p->depth <= 8) + + 0004f 8b 43 20 mov eax, DWORD PTR [rbx+32] + 00052 83 f8 08 cmp eax, 8 + 00055 7f 07 jg SHORT $LN5@stbi__do_p + +; 4789 : ri->bits_per_channel = 8; + + 00057 41 8d 44 24 08 lea eax, QWORD PTR [r12+8] + 0005c eb 09 jmp SHORT $LN8@stbi__do_p +$LN5@stbi__do_p: + +; 4790 : else if (p->depth == 16) + + 0005e 83 f8 10 cmp eax, 16 + 00061 0f 85 9a 00 00 + 00 jne $LN7@stbi__do_p +$LN8@stbi__do_p: + +; 4794 : result = p->out; + + 00067 48 8b 4c 24 78 mov rcx, QWORD PTR ri$[rsp] + 0006c 89 01 mov DWORD PTR [rcx], eax + 0006e 48 8b 73 18 mov rsi, QWORD PTR [rbx+24] + +; 4795 : p->out = NULL; + + 00072 4c 89 63 18 mov QWORD PTR [rbx+24], r12 + +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { + + 00076 85 ff test edi, edi + 00078 74 3f je SHORT $LN12@stbi__do_p + 0007a 4c 8b 0b mov r9, QWORD PTR [rbx] + 0007d 41 8b 51 0c mov edx, DWORD PTR [r9+12] + 00081 3b fa cmp edi, edx + 00083 74 34 je SHORT $LN12@stbi__do_p + +; 4797 : if (ri->bits_per_channel == 8) + + 00085 41 8b 41 04 mov eax, DWORD PTR [r9+4] + 00089 44 8b c7 mov r8d, edi + 0008c 83 39 08 cmp DWORD PTR [rcx], 8 + 0008f 48 8b ce mov rcx, rsi + 00092 45 8b 09 mov r9d, DWORD PTR [r9] + 00095 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00099 75 07 jne SHORT $LN10@stbi__do_p + +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + + 0009b e8 00 00 00 00 call stbi__convert_format + 000a0 eb 05 jmp SHORT $LN28@stbi__do_p +$LN10@stbi__do_p: + +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + + 000a2 e8 00 00 00 00 call stbi__convert_format16 +$LN28@stbi__do_p: + +; 4801 : p->s->img_out_n = req_comp; + + 000a7 48 8b f0 mov rsi, rax + 000aa 48 8b 03 mov rax, QWORD PTR [rbx] + 000ad 89 78 0c mov DWORD PTR [rax+12], edi + +; 4802 : if (result == NULL) return result; + + 000b0 48 85 f6 test rsi, rsi + 000b3 0f 84 87 00 00 + 00 je $LN29@stbi__do_p +$LN12@stbi__do_p: + +; 4803 : } +; 4804 : *x = p->s->img_x; + + 000b9 48 8b 0b mov rcx, QWORD PTR [rbx] + 000bc 8b 01 mov eax, DWORD PTR [rcx] + 000be 89 45 00 mov DWORD PTR [rbp], eax + +; 4805 : *y = p->s->img_y; + + 000c1 8b 41 04 mov eax, DWORD PTR [rcx+4] + 000c4 41 89 07 mov DWORD PTR [r15], eax + +; 4806 : if (n) *n = p->s->img_n; + + 000c7 4d 85 f6 test r14, r14 + 000ca 74 06 je SHORT $LN13@stbi__do_p + 000cc 8b 41 08 mov eax, DWORD PTR [rcx+8] + 000cf 41 89 06 mov DWORD PTR [r14], eax +$LN13@stbi__do_p: + +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; + + 000d2 48 8b 4b 18 mov rcx, QWORD PTR [rbx+24] + 000d6 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; + + 000dc 48 8b 4b 10 mov rcx, QWORD PTR [rbx+16] + 000e0 4c 89 63 18 mov QWORD PTR [rbx+24], r12 + 000e4 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4810 : STBI_FREE(p->idata); p->idata = NULL; + + 000ea 48 8b 4b 08 mov rcx, QWORD PTR [rbx+8] + 000ee 4c 89 63 10 mov QWORD PTR [rbx+16], r12 + 000f2 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4811 : +; 4812 : return result; + + 000f8 48 8b c6 mov rax, rsi + 000fb 4c 89 63 08 mov QWORD PTR [rbx+8], r12 + 000ff eb 41 jmp SHORT $LN1@stbi__do_p +$LN7@stbi__do_p: + +; 431 : stbi__g_failure_reason = str; + + 00101 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00107 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00110 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00114 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ + +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + + 0011b eb 1a jmp SHORT $LN30@stbi__do_p +$LN3@stbi__do_p: + +; 431 : stbi__g_failure_reason = str; + + 0011d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00123 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0012c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00130 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@ +$LN30@stbi__do_p: + +; 4813 : } + + 00137 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0013c 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN29@stbi__do_p: + 00140 33 c0 xor eax, eax +$LN1@stbi__do_p: + 00142 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 00147 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 0014c 48 8b 74 24 60 mov rsi, QWORD PTR [rsp+96] + 00151 48 8b 7c 24 68 mov rdi, QWORD PTR [rsp+104] + 00156 48 83 c4 30 add rsp, 48 ; 00000030H + 0015a 41 5f pop r15 + 0015c 41 5e pop r14 + 0015e 41 5c pop r12 + 00160 c3 ret 0 +stbi__do_png ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__png_load +_TEXT SEGMENT +p$ = 48 +__$ArrayPad$ = 88 +s$ = 160 +x$ = 168 +y$ = 176 +comp$ = 184 +req_comp$ = 192 +ri$ = 200 +stbi__png_load PROC ; COMDAT + +; 4816 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 56 push r14 + 00007 41 57 push r15 + 00009 48 83 ec 68 sub rsp, 104 ; 00000068H + 0000d 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00014 48 33 c4 xor rax, rsp + 00017 48 89 44 24 58 mov QWORD PTR __$ArrayPad$[rsp], rax + 0001c 8b 9c 24 c0 00 + 00 00 mov ebx, DWORD PTR req_comp$[rsp] + +; 4785 : void* result = NULL; + + 00023 33 ff xor edi, edi + +; 4816 : { + + 00025 4c 8b b4 24 c8 + 00 00 00 mov r14, QWORD PTR ri$[rsp] + 0002d 49 8b f1 mov rsi, r9 + +; 4817 : stbi__png p; +; 4818 : p.s = s; + + 00030 48 89 4c 24 30 mov QWORD PTR p$[rsp], rcx + 00035 49 8b e8 mov rbp, r8 + 00038 4c 8b fa mov r15, rdx + +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + 0003b 83 fb 04 cmp ebx, 4 + 0003e 0f 87 fc 00 00 + 00 ja $LN5@stbi__png_ + +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + + 00044 44 8b c3 mov r8d, ebx + 00047 48 8d 4c 24 30 lea rcx, QWORD PTR p$[rsp] + 0004c 33 d2 xor edx, edx + 0004e e8 00 00 00 00 call stbi__parse_png_file + 00053 85 c0 test eax, eax + 00055 0f 84 87 00 00 + 00 je $LN23@stbi__png_ + +; 4788 : if (p->depth <= 8) + + 0005b 8b 44 24 50 mov eax, DWORD PTR p$[rsp+32] + 0005f 83 f8 08 cmp eax, 8 + 00062 7f 05 jg SHORT $LN7@stbi__png_ + +; 4789 : ri->bits_per_channel = 8; + + 00064 8d 47 08 lea eax, QWORD PTR [rdi+8] + 00067 eb 09 jmp SHORT $LN10@stbi__png_ +$LN7@stbi__png_: + +; 4790 : else if (p->depth == 16) + + 00069 83 f8 10 cmp eax, 16 + 0006c 0f 85 a8 00 00 + 00 jne $LN9@stbi__png_ +$LN10@stbi__png_: + +; 4794 : result = p->out; + + 00072 41 89 06 mov DWORD PTR [r14], eax + 00075 48 8b 7c 24 48 mov rdi, QWORD PTR p$[rsp+24] + +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { + + 0007a 48 8b 4c 24 30 mov rcx, QWORD PTR p$[rsp] + 0007f 48 c7 44 24 48 + 00 00 00 00 mov QWORD PTR p$[rsp+24], 0 + 00088 85 db test ebx, ebx + 0008a 74 41 je SHORT $LN14@stbi__png_ + 0008c 8b 51 0c mov edx, DWORD PTR [rcx+12] + 0008f 3b da cmp ebx, edx + 00091 74 3a je SHORT $LN14@stbi__png_ + +; 4797 : if (ri->bits_per_channel == 8) + + 00093 44 8b 09 mov r9d, DWORD PTR [rcx] + 00096 83 f8 08 cmp eax, 8 + 00099 8b 41 04 mov eax, DWORD PTR [rcx+4] + 0009c 44 8b c3 mov r8d, ebx + 0009f 89 44 24 20 mov DWORD PTR [rsp+32], eax + 000a3 48 8b cf mov rcx, rdi + 000a6 75 07 jne SHORT $LN12@stbi__png_ + +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + + 000a8 e8 00 00 00 00 call stbi__convert_format + 000ad eb 05 jmp SHORT $LN33@stbi__png_ +$LN12@stbi__png_: + +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + + 000af e8 00 00 00 00 call stbi__convert_format16 +$LN33@stbi__png_: + +; 4801 : p->s->img_out_n = req_comp; + + 000b4 48 8b f8 mov rdi, rax + 000b7 48 8b 44 24 30 mov rax, QWORD PTR p$[rsp] + 000bc 89 58 0c mov DWORD PTR [rax+12], ebx + +; 4802 : if (result == NULL) return result; + + 000bf 48 85 ff test rdi, rdi + 000c2 0f 84 9d 00 00 + 00 je $LN34@stbi__png_ + 000c8 48 8b 4c 24 30 mov rcx, QWORD PTR p$[rsp] +$LN14@stbi__png_: + +; 4803 : } +; 4804 : *x = p->s->img_x; + + 000cd 8b 01 mov eax, DWORD PTR [rcx] + 000cf 41 89 07 mov DWORD PTR [r15], eax + +; 4805 : *y = p->s->img_y; + + 000d2 8b 41 04 mov eax, DWORD PTR [rcx+4] + 000d5 89 45 00 mov DWORD PTR [rbp], eax + +; 4806 : if (n) *n = p->s->img_n; + + 000d8 48 85 f6 test rsi, rsi + 000db 74 05 je SHORT $LN23@stbi__png_ + 000dd 8b 41 08 mov eax, DWORD PTR [rcx+8] + 000e0 89 06 mov DWORD PTR [rsi], eax +$LN23@stbi__png_: + +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; + + 000e2 48 8b 4c 24 48 mov rcx, QWORD PTR p$[rsp+24] + 000e7 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; + + 000ed 48 8b 4c 24 40 mov rcx, QWORD PTR p$[rsp+16] + 000f2 48 c7 44 24 48 + 00 00 00 00 mov QWORD PTR p$[rsp+24], 0 + 000fb ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4810 : STBI_FREE(p->idata); p->idata = NULL; + + 00101 48 8b 4c 24 38 mov rcx, QWORD PTR p$[rsp+8] + 00106 48 c7 44 24 40 + 00 00 00 00 mov QWORD PTR p$[rsp+16], 0 + 0010f ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); + + 00115 48 8b c7 mov rax, rdi + +; 4812 : return result; + + 00118 eb 4d jmp SHORT $LN3@stbi__png_ +$LN9@stbi__png_: + +; 431 : stbi__g_failure_reason = str; + + 0011a 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00120 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00129 41 b9 00 00 00 + 00 mov r9d, OFFSET FLAT:stbi__g_failure_reason + 0012f 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00133 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ + 0013a 49 89 14 01 mov QWORD PTR [r9+rax], rdx + +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + + 0013e eb 25 jmp SHORT $LN34@stbi__png_ +$LN5@stbi__png_: + +; 431 : stbi__g_failure_reason = str; + + 00140 44 8b 05 00 00 + 00 00 mov r8d, DWORD PTR _tls_index + 00147 65 48 8b 0c 25 + 58 00 00 00 mov rcx, QWORD PTR gs:88 + 00150 41 b9 00 00 00 + 00 mov r9d, OFFSET FLAT:stbi__g_failure_reason + 00156 4a 8b 0c c1 mov rcx, QWORD PTR [rcx+r8*8] + 0015a 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@ + 00161 4d 89 04 09 mov QWORD PTR [r9+rcx], r8 +$LN34@stbi__png_: + +; 4820 : } + + 00165 33 c0 xor eax, eax +$LN3@stbi__png_: + 00167 48 8b 4c 24 58 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0016c 48 33 cc xor rcx, rsp + 0016f e8 00 00 00 00 call __security_check_cookie + 00174 48 83 c4 68 add rsp, 104 ; 00000068H + 00178 41 5f pop r15 + 0017a 41 5e pop r14 + 0017c 5f pop rdi + 0017d 5e pop rsi + 0017e 5d pop rbp + 0017f 5b pop rbx + 00180 c3 ret 0 +stbi__png_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__png_test +_TEXT SEGMENT +s$ = 48 +stbi__png_test PROC ; COMDAT + +; 4823 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + 00006 48 8b d9 mov rbx, rcx + +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); + + 00009 e8 00 00 00 00 call stbi__check_png_header + +; 342 : s->img_buffer = s->img_buffer_original; + + 0000e 48 8b 93 d0 00 + 00 00 mov rdx, QWORD PTR [rbx+208] + 00015 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0001c 48 8b 93 d8 00 + 00 00 mov rdx, QWORD PTR [rbx+216] + 00023 48 89 93 c8 00 + 00 00 mov QWORD PTR [rbx+200], rdx + +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } + + 0002a 48 83 c4 20 add rsp, 32 ; 00000020H + 0002e 5b pop rbx + 0002f c3 ret 0 +stbi__png_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bmp_test_raw +_TEXT SEGMENT +s$ = 48 +stbi__bmp_test_raw PROC ; COMDAT + +; 4867 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000a 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 4867 : { + + 00011 48 8b f9 mov rdi, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00014 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001b 72 16 jb SHORT $LN34@stbi__bmp_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0001d 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00021 0f 84 cc 00 00 + 00 je $LN21@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00027 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0002c 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] +$LN34@stbi__bmp_: + +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; + + 00033 0f b6 08 movzx ecx, BYTE PTR [rax] + 00036 48 ff c0 inc rax + 00039 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00040 80 f9 42 cmp cl, 66 ; 00000042H + 00043 0f 85 aa 00 00 + 00 jne $LN21@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00049 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00050 72 19 jb SHORT $LN35@stbi__bmp_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00052 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 00056 0f 84 97 00 00 + 00 je $LN21@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 0005c 48 8b cf mov rcx, rdi + 0005f e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00064 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] +$LN35@stbi__bmp_: + +; 4871 : if (stbi__get8(s) != 'M') return 0; + + 0006b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0006e 48 ff c0 inc rax + 00071 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00078 80 f9 4d cmp cl, 77 ; 0000004dH + 0007b 75 76 jne SHORT $LN21@stbi__bmp_ + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0007d 48 8b cf mov rcx, rdi + 00080 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00085 48 8b cf mov rcx, rdi + 00088 e8 00 00 00 00 call stbi__get16le + +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved + + 0008d 48 8b cf mov rcx, rdi + 00090 e8 00 00 00 00 call stbi__get16le + +; 4874 : stbi__get16le(s); // discard reserved + + 00095 48 8b cf mov rcx, rdi + 00098 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0009d 48 8b cf mov rcx, rdi + 000a0 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000a5 48 8b cf mov rcx, rdi + 000a8 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 000ad 48 8b cf mov rcx, rdi + 000b0 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000b5 48 8b cf mov rcx, rdi + 000b8 8b d8 mov ebx, eax + 000ba e8 00 00 00 00 call stbi__get16le + 000bf c1 e0 10 shl eax, 16 + 000c2 03 c3 add eax, ebx + +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + + 000c4 83 f8 38 cmp eax, 56 ; 00000038H + 000c7 77 10 ja SHORT $LN23@stbi__bmp_ + 000c9 48 ba 00 10 00 + 00 00 01 00 01 mov rdx, 72058693549559808 ; 0100010000001000H + 000d3 48 0f a3 c2 bt rdx, rax + 000d7 72 0a jb SHORT $LN5@stbi__bmp_ +$LN23@stbi__bmp_: + 000d9 83 f8 6c cmp eax, 108 ; 0000006cH + 000dc 74 05 je SHORT $LN5@stbi__bmp_ + 000de 83 f8 7c cmp eax, 124 ; 0000007cH + 000e1 75 10 jne SHORT $LN21@stbi__bmp_ +$LN5@stbi__bmp_: + 000e3 b8 01 00 00 00 mov eax, 1 + +; 4878 : return r; +; 4879 : } + + 000e8 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000ed 48 83 c4 20 add rsp, 32 ; 00000020H + 000f1 5f pop rdi + 000f2 c3 ret 0 +$LN21@stbi__bmp_: + 000f3 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000f8 33 c0 xor eax, eax + 000fa 48 83 c4 20 add rsp, 32 ; 00000020H + 000fe 5f pop rdi + 000ff c3 ret 0 +stbi__bmp_test_raw ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bmp_test +_TEXT SEGMENT +s$ = 48 +stbi__bmp_test PROC ; COMDAT + +; 4882 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000a 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 4882 : { + + 00011 48 8b f9 mov rdi, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00014 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001b 72 16 jb SHORT $LN38@stbi__bmp_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0001d 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00021 0f 84 c3 00 00 + 00 je $LN26@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00027 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0002c 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] +$LN38@stbi__bmp_: + +; 4870 : if (stbi__get8(s) != 'B') return 0; + + 00033 0f b6 08 movzx ecx, BYTE PTR [rax] + 00036 48 ff c0 inc rax + 00039 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00040 80 f9 42 cmp cl, 66 ; 00000042H + 00043 0f 85 a1 00 00 + 00 jne $LN26@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00049 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00050 72 19 jb SHORT $LN39@stbi__bmp_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00052 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 00056 0f 84 8e 00 00 + 00 je $LN26@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 0005c 48 8b cf mov rcx, rdi + 0005f e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00064 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] +$LN39@stbi__bmp_: + +; 4871 : if (stbi__get8(s) != 'M') return 0; + + 0006b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0006e 48 ff c0 inc rax + 00071 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00078 80 f9 4d cmp cl, 77 ; 0000004dH + 0007b 75 6d jne SHORT $LN26@stbi__bmp_ + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0007d 48 8b cf mov rcx, rdi + 00080 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00085 48 8b cf mov rcx, rdi + 00088 e8 00 00 00 00 call stbi__get16le + +; 4873 : stbi__get16le(s); // discard reserved + + 0008d 48 8b cf mov rcx, rdi + 00090 e8 00 00 00 00 call stbi__get16le + +; 4874 : stbi__get16le(s); // discard reserved + + 00095 48 8b cf mov rcx, rdi + 00098 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0009d 48 8b cf mov rcx, rdi + 000a0 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000a5 48 8b cf mov rcx, rdi + 000a8 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 000ad 48 8b cf mov rcx, rdi + 000b0 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000b5 48 8b cf mov rcx, rdi + 000b8 8b d8 mov ebx, eax + 000ba e8 00 00 00 00 call stbi__get16le + 000bf c1 e0 10 shl eax, 16 + 000c2 03 c3 add eax, ebx + +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + + 000c4 83 f8 38 cmp eax, 56 ; 00000038H + 000c7 77 10 ja SHORT $LN27@stbi__bmp_ + 000c9 48 ba 00 10 00 + 00 00 01 00 01 mov rdx, 72058693549559808 ; 0100010000001000H + 000d3 48 0f a3 c2 bt rdx, rax + 000d7 72 0a jb SHORT $LN7@stbi__bmp_ +$LN27@stbi__bmp_: + 000d9 83 f8 6c cmp eax, 108 ; 0000006cH + 000dc 74 05 je SHORT $LN7@stbi__bmp_ + 000de 83 f8 7c cmp eax, 124 ; 0000007cH + 000e1 75 07 jne SHORT $LN26@stbi__bmp_ +$LN7@stbi__bmp_: + 000e3 b8 01 00 00 00 mov eax, 1 + +; 4878 : return r; + + 000e8 eb 02 jmp SHORT $LN3@stbi__bmp_ +$LN26@stbi__bmp_: + +; 342 : s->img_buffer = s->img_buffer_original; + + 000ea 33 c0 xor eax, eax +$LN3@stbi__bmp_: + 000ec 48 8b 8f d0 00 + 00 00 mov rcx, QWORD PTR [rdi+208] + +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } + + 000f3 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + +; 342 : s->img_buffer = s->img_buffer_original; + + 000f8 48 89 8f c0 00 + 00 00 mov QWORD PTR [rdi+192], rcx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 000ff 48 8b 8f d8 00 + 00 00 mov rcx, QWORD PTR [rdi+216] + 00106 48 89 8f c8 00 + 00 00 mov QWORD PTR [rdi+200], rcx + +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } + + 0010d 48 83 c4 20 add rsp, 32 ; 00000020H + 00111 5f pop rdi + 00112 c3 ret 0 +stbi__bmp_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__high_bit +_TEXT SEGMENT +z$ = 8 +stbi__high_bit PROC ; COMDAT + +; 4890 : { + + 00000 8b c1 mov eax, ecx + +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; + + 00002 85 c9 test ecx, ecx + 00004 75 06 jne SHORT $LN2@stbi__high + 00006 b8 ff ff ff ff mov eax, -1 + +; 4899 : } + + 0000b c3 ret 0 +$LN2@stbi__high: + +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } + + 0000c c1 e9 10 shr ecx, 16 + 0000f ba 10 00 00 00 mov edx, 16 + 00014 3d 00 00 01 00 cmp eax, 65536 ; 00010000H + 00019 0f 42 c8 cmovb ecx, eax + 0001c 45 33 c0 xor r8d, r8d + 0001f 3d 00 00 01 00 cmp eax, 65536 ; 00010000H + 00024 41 0f 42 d0 cmovb edx, r8d + 00028 81 f9 00 01 00 + 00 cmp ecx, 256 ; 00000100H + 0002e 72 06 jb SHORT $LN4@stbi__high + 00030 83 c2 08 add edx, 8 + 00033 c1 e9 08 shr ecx, 8 +$LN4@stbi__high: + +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } + + 00036 44 8b c1 mov r8d, ecx + 00039 8d 42 04 lea eax, DWORD PTR [rdx+4] + 0003c 41 c1 e8 04 shr r8d, 4 + 00040 83 f9 10 cmp ecx, 16 + 00043 0f 42 c2 cmovb eax, edx + 00046 44 0f 42 c1 cmovb r8d, ecx + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 0004a 41 83 f8 04 cmp r8d, 4 + 0004e 41 8b c8 mov ecx, r8d + 00051 8d 50 02 lea edx, DWORD PTR [rax+2] + 00054 0f 42 d0 cmovb edx, eax + 00057 c1 e9 02 shr ecx, 2 + 0005a 41 83 f8 04 cmp r8d, 4 + 0005e 41 0f 42 c8 cmovb ecx, r8d + +; 4898 : return n; + + 00062 83 f9 02 cmp ecx, 2 + 00065 8d 42 01 lea eax, DWORD PTR [rdx+1] + 00068 0f 42 c2 cmovb eax, edx + +; 4899 : } + + 0006b c3 ret 0 +stbi__high_bit ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bitcount +_TEXT SEGMENT +a$ = 8 +stbi__bitcount PROC ; COMDAT + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00000 8b d1 mov edx, ecx + 00002 81 e1 55 55 55 + 55 and ecx, 1431655765 ; 55555555H + 00008 d1 ea shr edx, 1 + 0000a 81 e2 55 55 55 + 55 and edx, 1431655765 ; 55555555H + 00010 03 d1 add edx, ecx + +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + + 00012 8b c2 mov eax, edx + 00014 81 e2 33 33 33 + 33 and edx, 858993459 ; 33333333H + 0001a c1 e8 02 shr eax, 2 + 0001d 25 33 33 33 33 and eax, 858993459 ; 33333333H + 00022 03 c2 add eax, edx + +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + + 00024 8b c8 mov ecx, eax + 00026 c1 e9 04 shr ecx, 4 + 00029 03 c8 add ecx, eax + 0002b 81 e1 0f 0f 0f + 0f and ecx, 252645135 ; 0f0f0f0fH + +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits + + 00031 8b c1 mov eax, ecx + 00033 c1 e8 08 shr eax, 8 + 00036 03 c8 add ecx, eax + +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits + + 00038 8b c1 mov eax, ecx + 0003a c1 e8 10 shr eax, 16 + 0003d 03 c1 add eax, ecx + +; 4908 : return a & 0xff; + + 0003f 0f b6 c0 movzx eax, al + +; 4909 : } + + 00042 c3 ret 0 +stbi__bitcount ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__shiftsigned +_TEXT SEGMENT +v$ = 8 +shift$ = 16 +bits$ = 24 +stbi__shiftsigned PROC ; COMDAT + +; 4915 : { + + 00000 44 8b c9 mov r9d, ecx + +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) + + 00003 85 d2 test edx, edx + 00005 79 0a jns SHORT $LN2@stbi__shif + +; 4925 : v <<= -shift; + + 00007 f7 da neg edx + 00009 0f b6 ca movzx ecx, dl + 0000c 41 d3 e1 shl r9d, cl + 0000f eb 05 jmp SHORT $LN3@stbi__shif +$LN2@stbi__shif: + +; 4926 : else +; 4927 : v >>= shift; + + 00011 8b ca mov ecx, edx + 00013 41 d3 e9 shr r9d, cl +$LN3@stbi__shif: + +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 00016 49 63 c0 movsxd rax, r8d + 00019 b9 08 00 00 00 mov ecx, 8 + 0001e 41 2b c8 sub ecx, r8d + 00021 41 d3 e9 shr r9d, cl + 00024 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 0002b 44 0f af 8c 81 + 00 00 00 00 imul r9d, DWORD PTR ?mul_table@?1??stbi__shiftsigned@@9@9[rcx+rax*4] + 00034 8b 8c 81 00 00 + 00 00 mov ecx, DWORD PTR ?shift_table@?1??stbi__shiftsigned@@9@9[rcx+rax*4] + 0003b 41 d3 f9 sar r9d, cl + 0003e 41 8b c1 mov eax, r9d + +; 4932 : } + + 00041 c3 ret 0 +stbi__shiftsigned ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bmp_set_mask_defaults +_TEXT SEGMENT +info$ = 8 +compress$ = 16 +stbi__bmp_set_mask_defaults PROC ; COMDAT + +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) + + 00000 83 fa 03 cmp edx, 3 + 00003 74 20 je SHORT $LN7@stbi__bmp_ + +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { + + 00005 85 d2 test edx, edx + 00007 75 5e jne SHORT $LN3@stbi__bmp_ + +; 4948 : if (info->bpp == 16) { + + 00009 8b 01 mov eax, DWORD PTR [rcx] + 0000b 83 f8 10 cmp eax, 16 + 0000e 75 1b jne SHORT $LN4@stbi__bmp_ + +; 4949 : info->mr = 31u << 10; + + 00010 c7 41 0c 00 7c + 00 00 mov DWORD PTR [rcx+12], 31744 ; 00007c00H + +; 4950 : info->mg = 31u << 5; + + 00017 c7 41 10 e0 03 + 00 00 mov DWORD PTR [rcx+16], 992 ; 000003e0H + +; 4951 : info->mb = 31u << 0; + + 0001e c7 41 14 1f 00 + 00 00 mov DWORD PTR [rcx+20], 31 +$LN7@stbi__bmp_: + +; 4963 : } +; 4964 : return 1; + + 00025 b8 01 00 00 00 mov eax, 1 + +; 4967 : } + + 0002a c3 ret 0 +$LN4@stbi__bmp_: + +; 4952 : } +; 4953 : else if (info->bpp == 32) { + + 0002b 83 f8 20 cmp eax, 32 ; 00000020H + 0002e 75 27 jne SHORT $LN6@stbi__bmp_ + +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + + 00030 33 c0 xor eax, eax + 00032 c7 41 0c 00 00 + ff 00 mov DWORD PTR [rcx+12], 16711680 ; 00ff0000H + 00039 89 41 1c mov DWORD PTR [rcx+28], eax + +; 4963 : } +; 4964 : return 1; + + 0003c b8 01 00 00 00 mov eax, 1 + 00041 c7 41 10 00 ff + 00 00 mov DWORD PTR [rcx+16], 65280 ; 0000ff00H + 00048 c7 41 14 ff 00 + 00 00 mov DWORD PTR [rcx+20], 255 ; 000000ffH + 0004f c7 41 18 00 00 + 00 ff mov DWORD PTR [rcx+24], -16777216 ; ff000000H + +; 4967 : } + + 00056 c3 ret 0 +$LN6@stbi__bmp_: + +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; + + 00057 33 c0 xor eax, eax + 00059 48 89 41 14 mov QWORD PTR [rcx+20], rax + 0005d 48 89 41 0c mov QWORD PTR [rcx+12], rax + +; 4963 : } +; 4964 : return 1; + + 00061 b8 01 00 00 00 mov eax, 1 + +; 4967 : } + + 00066 c3 ret 0 +$LN3@stbi__bmp_: + +; 4965 : } +; 4966 : return 0; // error + + 00067 33 c0 xor eax, eax + +; 4967 : } + + 00069 c3 ret 0 +stbi__bmp_set_mask_defaults ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bmp_parse_header +_TEXT SEGMENT +s$ = 64 +info$ = 72 +stbi__bmp_parse_header PROC ; COMDAT + +; 4970 : { + + 00000 40 53 push rbx + 00002 56 push rsi + 00003 57 push rdi + 00004 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00008 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 4970 : { + + 0000f 48 8b f2 mov rsi, rdx + 00012 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00015 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001c 72 16 jb SHORT $LN179@stbi__bmp_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0001e 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00022 0f 84 38 05 00 + 00 je $LN6@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00028 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0002d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN179@stbi__bmp_: + +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + + 00034 0f b6 08 movzx ecx, BYTE PTR [rax] + 00037 48 ff c0 inc rax + 0003a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00041 80 f9 42 cmp cl, 66 ; 00000042H + 00044 0f 85 16 05 00 + 00 jne $LN6@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0004a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00051 72 19 jb SHORT $LN180@stbi__bmp_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00053 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00057 0f 84 03 05 00 + 00 je $LN6@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 0005d 48 8b cb mov rcx, rbx + 00060 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00065 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN180@stbi__bmp_: + +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + + 0006c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0006f 48 ff c0 inc rax + 00072 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00079 80 f9 4d cmp cl, 77 ; 0000004dH + 0007c 0f 85 de 04 00 + 00 jne $LN6@stbi__bmp_ + 00082 48 89 6c 24 40 mov QWORD PTR [rsp+64], rbp + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00087 48 8b cb mov rcx, rbx + +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + + 0008a 4c 89 7c 24 50 mov QWORD PTR [rsp+80], r15 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0008f e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00094 48 8b cb mov rcx, rbx + 00097 e8 00 00 00 00 call stbi__get16le + +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved + + 0009c 48 8b cb mov rcx, rbx + 0009f e8 00 00 00 00 call stbi__get16le + +; 4975 : stbi__get16le(s); // discard reserved + + 000a4 48 8b cb mov rcx, rbx + 000a7 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 000ac 48 8b cb mov rcx, rbx + 000af e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000b4 48 8b cb mov rcx, rbx + 000b7 8b f8 mov edi, eax + 000b9 e8 00 00 00 00 call stbi__get16le + 000be c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 000c1 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000c4 03 c7 add eax, edi + +; 4976 : info->offset = stbi__get32le(s); + + 000c6 89 46 04 mov DWORD PTR [rsi+4], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 000c9 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000ce 48 8b cb mov rcx, rbx + 000d1 8b f8 mov edi, eax + 000d3 e8 00 00 00 00 call stbi__get16le + +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; + + 000d8 45 33 ff xor r15d, r15d + +; 4979 : info->extra_read = 14; + + 000db c7 46 20 0e 00 + 00 00 mov DWORD PTR [rsi+32], 14 + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000e2 8b e8 mov ebp, eax + +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; + + 000e4 4c 89 7e 14 mov QWORD PTR [rsi+20], r15 + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 000e8 c1 e5 10 shl ebp, 16 + 000eb 03 ef add ebp, edi + +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; + + 000ed 4c 89 7e 0c mov QWORD PTR [rsi+12], r15 + 000f1 89 6e 08 mov DWORD PTR [rsi+8], ebp + +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); + + 000f4 44 39 7e 04 cmp DWORD PTR [rsi+4], r15d + 000f8 0f 8c 97 00 00 + 00 jl $LN182@stbi__bmp_ + +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + + 000fe 83 fd 38 cmp ebp, 56 ; 00000038H + 00101 77 10 ja SHORT $LN137@stbi__bmp_ + 00103 48 b9 00 10 00 + 00 00 01 00 01 mov rcx, 72058693549559808 ; 0100010000001000H + 0010d 48 0f a3 e9 bt rcx, rbp + 00111 72 34 jb SHORT $LN8@stbi__bmp_ +$LN137@stbi__bmp_: + 00113 83 fd 6c cmp ebp, 108 ; 0000006cH + 00116 74 2f je SHORT $LN8@stbi__bmp_ + 00118 83 fd 7c cmp ebp, 124 ; 0000007cH + 0011b 74 2a je SHORT $LN8@stbi__bmp_ + +; 431 : stbi__g_failure_reason = str; + + 0011d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00123 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0012c b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00131 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00135 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@KHBIBJBG@unknown?5BMP@ + 0013c 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + + 00140 33 c0 xor eax, eax + 00142 e9 e6 00 00 00 jmp $LN177@stbi__bmp_ +$LN8@stbi__bmp_: + +; 4984 : if (hsz == 12) { + + 00147 48 8b cb mov rcx, rbx + 0014a e8 00 00 00 00 call stbi__get16le + 0014f 48 8b cb mov rcx, rbx + 00152 83 fd 0c cmp ebp, 12 + 00155 75 09 jne SHORT $LN9@stbi__bmp_ + +; 4985 : s->img_x = stbi__get16le(s); + + 00157 89 03 mov DWORD PTR [rbx], eax + +; 4986 : s->img_y = stbi__get16le(s); + + 00159 e8 00 00 00 00 call stbi__get16le + +; 4987 : } + + 0015e eb 25 jmp SHORT $LN10@stbi__bmp_ +$LN9@stbi__bmp_: + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00160 8b f8 mov edi, eax + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00162 e8 00 00 00 00 call stbi__get16le + 00167 c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0016a 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0016d 03 c7 add eax, edi + +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); + + 0016f 89 03 mov DWORD PTR [rbx], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00171 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00176 48 8b cb mov rcx, rbx + 00179 8b f8 mov edi, eax + 0017b e8 00 00 00 00 call stbi__get16le + 00180 c1 e0 10 shl eax, 16 + 00183 03 c7 add eax, edi +$LN10@stbi__bmp_: + +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + + 00185 48 8b cb mov rcx, rbx + 00188 89 43 04 mov DWORD PTR [rbx+4], eax + 0018b e8 00 00 00 00 call stbi__get16le + 00190 83 f8 01 cmp eax, 1 + 00193 74 27 je SHORT $LN11@stbi__bmp_ +$LN182@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 00195 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0019b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001a4 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 001a9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001ad 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@ + 001b4 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + + 001b8 33 c0 xor eax, eax + 001ba eb 71 jmp SHORT $LN177@stbi__bmp_ +$LN11@stbi__bmp_: + +; 4993 : info->bpp = stbi__get16le(s); + + 001bc 48 8b cb mov rcx, rbx + 001bf 4c 89 74 24 48 mov QWORD PTR [rsp+72], r14 + 001c4 e8 00 00 00 00 call stbi__get16le + 001c9 89 06 mov DWORD PTR [rsi], eax + +; 4994 : if (hsz != 12) { + + 001cb 83 fd 0c cmp ebp, 12 + 001ce 0f 84 1b 02 00 + 00 je $LN30@stbi__bmp_ + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 001d4 48 8b cb mov rcx, rbx + 001d7 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 001dc 48 8b cb mov rcx, rbx + 001df 8b f8 mov edi, eax + 001e1 e8 00 00 00 00 call stbi__get16le + 001e6 44 8b f0 mov r14d, eax + 001e9 41 c1 e6 10 shl r14d, 16 + 001ed 44 03 f7 add r14d, edi + +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + + 001f0 41 8d 4e ff lea ecx, DWORD PTR [r14-1] + 001f4 83 f9 01 cmp ecx, 1 + 001f7 0f 86 3f 03 00 + 00 jbe $LN14@stbi__bmp_ + +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + + 001fd 41 83 fe 04 cmp r14d, 4 + 00201 7c 3c jl SHORT $LN15@stbi__bmp_ + +; 431 : stbi__g_failure_reason = str; + + 00203 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00209 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00212 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00217 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0021b 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ +$LN181@stbi__bmp_: + 00222 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); + + 00226 33 c0 xor eax, eax +$LN178@stbi__bmp_: + 00228 4c 8b 74 24 48 mov r14, QWORD PTR [rsp+72] +$LN177@stbi__bmp_: + 0022d 48 8b 6c 24 40 mov rbp, QWORD PTR [rsp+64] + 00232 4c 8b 7c 24 50 mov r15, QWORD PTR [rsp+80] + +; 5053 : } + + 00237 48 83 c4 20 add rsp, 32 ; 00000020H + 0023b 5f pop rdi + 0023c 5e pop rsi + 0023d 5b pop rbx + 0023e c3 ret 0 +$LN15@stbi__bmp_: + +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel + + 0023f 41 83 fe 03 cmp r14d, 3 + 00243 75 10 jne SHORT $LN16@stbi__bmp_ + 00245 8b 06 mov eax, DWORD PTR [rsi] + 00247 83 e8 10 sub eax, 16 + 0024a a9 ef ff ff ff test eax, -17 ; ffffffefH + 0024f 0f 85 c3 02 00 + 00 jne $LN25@stbi__bmp_ +$LN16@stbi__bmp_: + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00255 48 8b cb mov rcx, rbx + 00258 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0025d 48 8b cb mov rcx, rbx + 00260 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00265 48 8b cb mov rcx, rbx + 00268 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0026d 48 8b cb mov rcx, rbx + 00270 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00275 48 8b cb mov rcx, rbx + 00278 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0027d 48 8b cb mov rcx, rbx + 00280 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00285 48 8b cb mov rcx, rbx + 00288 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0028d 48 8b cb mov rcx, rbx + 00290 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00295 48 8b cb mov rcx, rbx + 00298 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0029d 48 8b cb mov rcx, rbx + 002a0 e8 00 00 00 00 call stbi__get16le + +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { + + 002a5 83 fd 28 cmp ebp, 40 ; 00000028H + 002a8 0f 84 8b 01 00 + 00 je $LN20@stbi__bmp_ + 002ae 83 fd 38 cmp ebp, 56 ; 00000038H + 002b1 0f 84 42 01 00 + 00 je $LN136@stbi__bmp_ + +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) + + 002b7 8d 45 94 lea eax, DWORD PTR [rbp-108] + 002ba a9 ef ff ff ff test eax, -17 ; ffffffefH + 002bf 0f 85 53 02 00 + 00 jne $LN25@stbi__bmp_ + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 002c5 48 8b cb mov rcx, rbx + 002c8 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 002cd 48 8b cb mov rcx, rbx + 002d0 8b f8 mov edi, eax + 002d2 e8 00 00 00 00 call stbi__get16le + 002d7 c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 002da 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 002dd 03 c7 add eax, edi + +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); + + 002df 89 46 0c mov DWORD PTR [rsi+12], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 002e2 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 002e7 48 8b cb mov rcx, rbx + 002ea 8b f8 mov edi, eax + 002ec e8 00 00 00 00 call stbi__get16le + 002f1 c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 002f4 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 002f7 03 c7 add eax, edi + +; 5036 : info->mg = stbi__get32le(s); + + 002f9 89 46 10 mov DWORD PTR [rsi+16], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 002fc e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00301 48 8b cb mov rcx, rbx + 00304 8b f8 mov edi, eax + 00306 e8 00 00 00 00 call stbi__get16le + 0030b c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0030e 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00311 03 c7 add eax, edi + +; 5037 : info->mb = stbi__get32le(s); + + 00313 89 46 14 mov DWORD PTR [rsi+20], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00316 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0031b 48 8b cb mov rcx, rbx + 0031e 8b f8 mov edi, eax + 00320 e8 00 00 00 00 call stbi__get16le + 00325 c1 e0 10 shl eax, 16 + 00328 03 c7 add eax, edi + +; 5038 : info->ma = stbi__get32le(s); + + 0032a 89 46 18 mov DWORD PTR [rsi+24], eax + +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + + 0032d 45 85 f6 test r14d, r14d + 00330 75 4d jne SHORT $LN126@stbi__bmp_ + +; 4948 : if (info->bpp == 16) { + + 00332 8b 06 mov eax, DWORD PTR [rsi] + 00334 83 f8 10 cmp eax, 16 + 00337 75 17 jne SHORT $LN123@stbi__bmp_ + +; 4949 : info->mr = 31u << 10; + + 00339 c7 46 0c 00 7c + 00 00 mov DWORD PTR [rsi+12], 31744 ; 00007c00H + +; 4950 : info->mg = 31u << 5; + + 00340 c7 46 10 e0 03 + 00 00 mov DWORD PTR [rsi+16], 992 ; 000003e0H + +; 4951 : info->mb = 31u << 0; + + 00347 c7 46 14 1f 00 + 00 00 mov DWORD PTR [rsi+20], 31 + +; 4952 : } + + 0034e eb 2f jmp SHORT $LN126@stbi__bmp_ +$LN123@stbi__bmp_: + +; 4953 : else if (info->bpp == 32) { + + 00350 83 f8 20 cmp eax, 32 ; 00000020H + 00353 75 22 jne SHORT $LN125@stbi__bmp_ + +; 4954 : info->mr = 0xffu << 16; + + 00355 c7 46 0c 00 00 + ff 00 mov DWORD PTR [rsi+12], 16711680 ; 00ff0000H + +; 4955 : info->mg = 0xffu << 8; + + 0035c c7 46 10 00 ff + 00 00 mov DWORD PTR [rsi+16], 65280 ; 0000ff00H + +; 4956 : info->mb = 0xffu << 0; + + 00363 c7 46 14 ff 00 + 00 00 mov DWORD PTR [rsi+20], 255 ; 000000ffH + +; 4957 : info->ma = 0xffu << 24; + + 0036a c7 46 18 00 00 + 00 ff mov DWORD PTR [rsi+24], -16777216 ; ff000000H + +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + + 00371 44 89 7e 1c mov DWORD PTR [rsi+28], r15d + +; 4959 : } + + 00375 eb 08 jmp SHORT $LN126@stbi__bmp_ +$LN125@stbi__bmp_: + +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; + + 00377 4c 89 7e 14 mov QWORD PTR [rsi+20], r15 + 0037b 4c 89 7e 0c mov QWORD PTR [rsi+12], r15 +$LN126@stbi__bmp_: + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 0037f 48 8b cb mov rcx, rbx + 00382 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00387 48 8b cb mov rcx, rbx + 0038a e8 00 00 00 00 call stbi__get16le + 0038f bf 0c 00 00 00 mov edi, 12 +$LL4@stbi__bmp_: + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00394 48 8b cb mov rcx, rbx + 00397 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 0039c 48 8b cb mov rcx, rbx + 0039f e8 00 00 00 00 call stbi__get16le + +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) + + 003a4 48 83 ef 01 sub rdi, 1 + 003a8 75 ea jne SHORT $LL4@stbi__bmp_ + +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { + + 003aa 83 fd 7c cmp ebp, 124 ; 0000007cH + 003ad 75 40 jne SHORT $LN30@stbi__bmp_ + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 003af 48 8b cb mov rcx, rbx + 003b2 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 003b7 48 8b cb mov rcx, rbx + 003ba e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 003bf 48 8b cb mov rcx, rbx + 003c2 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 003c7 48 8b cb mov rcx, rbx + 003ca e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 003cf 48 8b cb mov rcx, rbx + 003d2 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 003d7 48 8b cb mov rcx, rbx + 003da e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 003df 48 8b cb mov rcx, rbx + 003e2 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 003e7 48 8b cb mov rcx, rbx + 003ea e8 00 00 00 00 call stbi__get16le +$LN30@stbi__bmp_: + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 003ef b8 01 00 00 00 mov eax, 1 + 003f4 e9 2f fe ff ff jmp $LN178@stbi__bmp_ +$LN136@stbi__bmp_: + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 003f9 48 8b cb mov rcx, rbx + 003fc e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00401 48 8b cb mov rcx, rbx + 00404 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00409 48 8b cb mov rcx, rbx + 0040c e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00411 48 8b cb mov rcx, rbx + 00414 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00419 48 8b cb mov rcx, rbx + 0041c e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00421 48 8b cb mov rcx, rbx + 00424 e8 00 00 00 00 call stbi__get16le + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 00429 48 8b cb mov rcx, rbx + 0042c e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00431 48 8b cb mov rcx, rbx + 00434 e8 00 00 00 00 call stbi__get16le +$LN20@stbi__bmp_: + +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { + + 00439 8b 0e mov ecx, DWORD PTR [rsi] + 0043b 8d 41 f0 lea eax, DWORD PTR [rcx-16] + 0043e a9 ef ff ff ff test eax, -17 ; ffffffefH + 00443 75 aa jne SHORT $LN30@stbi__bmp_ + +; 5012 : if (compress == 0) { + + 00445 45 85 f6 test r14d, r14d + 00448 75 61 jne SHORT $LN23@stbi__bmp_ + +; 4948 : if (info->bpp == 16) { + + 0044a 83 f9 10 cmp ecx, 16 + 0044d 75 1d jne SHORT $LN95@stbi__bmp_ + +; 4949 : info->mr = 31u << 10; + + 0044f c7 46 0c 00 7c + 00 00 mov DWORD PTR [rsi+12], 31744 ; 00007c00H + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 00456 8d 41 f1 lea eax, QWORD PTR [rcx-15] + +; 4950 : info->mg = 31u << 5; + + 00459 c7 46 10 e0 03 + 00 00 mov DWORD PTR [rsi+16], 992 ; 000003e0H + +; 4951 : info->mb = 31u << 0; + + 00460 c7 46 14 1f 00 + 00 00 mov DWORD PTR [rsi+20], 31 + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 00467 e9 bc fd ff ff jmp $LN178@stbi__bmp_ +$LN95@stbi__bmp_: + +; 4953 : else if (info->bpp == 32) { + + 0046c 83 f9 20 cmp ecx, 32 ; 00000020H + 0046f 75 28 jne SHORT $LN97@stbi__bmp_ + +; 4954 : info->mr = 0xffu << 16; + + 00471 c7 46 0c 00 00 + ff 00 mov DWORD PTR [rsi+12], 16711680 ; 00ff0000H + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 00478 8d 41 e1 lea eax, QWORD PTR [rcx-31] + +; 4955 : info->mg = 0xffu << 8; + + 0047b c7 46 10 00 ff + 00 00 mov DWORD PTR [rsi+16], 65280 ; 0000ff00H + +; 4956 : info->mb = 0xffu << 0; + + 00482 c7 46 14 ff 00 + 00 00 mov DWORD PTR [rsi+20], 255 ; 000000ffH + +; 4957 : info->ma = 0xffu << 24; + + 00489 c7 46 18 00 00 + 00 ff mov DWORD PTR [rsi+24], -16777216 ; ff000000H + +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + + 00490 44 89 7e 1c mov DWORD PTR [rsi+28], r15d + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 00494 e9 8f fd ff ff jmp $LN178@stbi__bmp_ +$LN97@stbi__bmp_: + +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; + + 00499 4c 89 7e 14 mov QWORD PTR [rsi+20], r15 + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 0049d b8 01 00 00 00 mov eax, 1 + +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; + + 004a2 4c 89 7e 0c mov QWORD PTR [rsi+12], r15 + +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; + + 004a6 e9 7d fd ff ff jmp $LN178@stbi__bmp_ +$LN23@stbi__bmp_: + +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { + + 004ab 41 83 fe 03 cmp r14d, 3 + 004af 75 67 jne SHORT $LN25@stbi__bmp_ + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 004b1 48 8b cb mov rcx, rbx + 004b4 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 004b9 48 8b cb mov rcx, rbx + 004bc 8b f8 mov edi, eax + 004be e8 00 00 00 00 call stbi__get16le + 004c3 c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 004c6 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 004c9 03 c7 add eax, edi + +; 5016 : info->mr = stbi__get32le(s); + + 004cb 89 46 0c mov DWORD PTR [rsi+12], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 004ce e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 004d3 48 8b cb mov rcx, rbx + 004d6 8b f8 mov edi, eax + 004d8 e8 00 00 00 00 call stbi__get16le + 004dd c1 e0 10 shl eax, 16 + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 004e0 48 8b cb mov rcx, rbx + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 004e3 03 c7 add eax, edi + +; 5017 : info->mg = stbi__get32le(s); + + 004e5 89 46 10 mov DWORD PTR [rsi+16], eax + +; 1186 : stbi__uint32 z = stbi__get16le(s); + + 004e8 e8 00 00 00 00 call stbi__get16le + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 004ed 48 8b cb mov rcx, rbx + 004f0 8b f8 mov edi, eax + 004f2 e8 00 00 00 00 call stbi__get16le + +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; + + 004f7 83 46 20 0c add DWORD PTR [rsi+32], 12 + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 004fb c1 e0 10 shl eax, 16 + 004fe 8d 0c 38 lea ecx, DWORD PTR [rax+rdi] + +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { + + 00501 8b 46 10 mov eax, DWORD PTR [rsi+16] + 00504 89 4e 14 mov DWORD PTR [rsi+20], ecx + 00507 39 46 0c cmp DWORD PTR [rsi+12], eax + 0050a 0f 85 df fe ff + ff jne $LN30@stbi__bmp_ + 00510 3b c1 cmp eax, ecx + 00512 0f 85 d7 fe ff + ff jne $LN30@stbi__bmp_ +$LN25@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 00518 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0051e 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00527 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0052c 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00530 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@ + +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); + + 00537 e9 e6 fc ff ff jmp $LN181@stbi__bmp_ +$LN14@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 0053c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00542 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0054b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00550 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00554 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07IMHMNOIB@BMP?5RLE@ + +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + + 0055b e9 c2 fc ff ff jmp $LN181@stbi__bmp_ +$LN6@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 00560 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00566 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0056f b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00574 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00578 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07IANEBNLB@not?5BMP@ + 0057f 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + + 00583 33 c0 xor eax, eax + +; 5053 : } + + 00585 48 83 c4 20 add rsp, 32 ; 00000020H + 00589 5f pop rdi + 0058a 5e pop rsi + 0058b 5b pop rbx + 0058c c3 ret 0 +stbi__bmp_parse_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__bmp_load +_TEXT SEGMENT +ashift$1$ = 48 +pad$1$ = 48 +info$2$ = 48 +pad$2$ = 52 +info$5$ = 52 +all_a$1$ = 56 +n$1$ = 60 +bshift$1$ = 60 +info$3$ = 64 +gshift$1$ = 68 +mr$1$ = 72 +mg$1$ = 76 +mb$1$ = 80 +$T22 = 88 +rshift$1$ = 96 +ma$1$ = 100 +tv4035 = 108 +tv4034 = 112 +tv4033 = 116 +tv4032 = 120 +tv4030 = 124 +tv4029 = 128 +tv4028 = 132 +tv4027 = 136 +tv4126 = 140 +out$1$ = 144 +tv4023 = 152 +info$ = 160 +tv4026 = 200 +tv4025 = 208 +tv4024 = 216 +pal$ = 224 +s$ = 1312 +x$ = 1320 +y$ = 1328 +comp$ = 1336 +req_comp$ = 1344 +j$3$ = 1352 +target$4$ = 1352 +ri$dead$ = 1352 +stbi__bmp_load PROC ; COMDAT + +; 5056 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 + 0000a 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 0000f 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 00014 55 push rbp + 00015 56 push rsi + 00016 57 push rdi + 00017 41 54 push r12 + 00019 41 55 push r13 + 0001b 41 56 push r14 + 0001d 41 57 push r15 + 0001f 48 81 ec e0 04 + 00 00 sub rsp, 1248 ; 000004e0H + +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; + + 00026 45 33 ff xor r15d, r15d + +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; + + 00029 c7 84 24 bc 00 + 00 00 ff 00 00 + 00 mov DWORD PTR info$[rsp+28], 255 ; 000000ffH + +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) + + 00034 48 8d 94 24 a0 + 00 00 00 lea rdx, QWORD PTR info$[rsp] + 0003c 45 8b e7 mov r12d, r15d + 0003f 48 8b d9 mov rbx, rcx + 00042 e8 00 00 00 00 call stbi__bmp_parse_header + 00047 48 85 c0 test rax, rax + 0004a 0f 84 99 12 00 + 00 je $LN373@stbi__bmp_ + +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; + + 00050 8b 4b 04 mov ecx, DWORD PTR [rbx+4] + +; 5070 : s->img_y = abs((int)s->img_y); + + 00053 8b c1 mov eax, ecx + 00055 f7 d8 neg eax + 00057 89 8c 24 8c 00 + 00 00 mov DWORD PTR tv4126[rsp], ecx + 0005e 0f 48 c1 cmovs eax, ecx + 00061 89 43 04 mov DWORD PTR [rbx+4], eax + +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 00064 3d 00 00 00 01 cmp eax, 16777216 ; 01000000H + 00069 76 1f jbe SHORT $LN36@stbi__bmp_ +$LN527@stbi__bmp_: + +; 5262 : } + + 0006b 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00071 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0007a 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0007e 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 00085 e9 56 12 00 00 jmp $LN528@stbi__bmp_ +$LN36@stbi__bmp_: + +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0008a 81 3b 00 00 00 + 01 cmp DWORD PTR [rbx], 16777216 ; 01000000H + 00090 77 d9 ja SHORT $LN527@stbi__bmp_ + +; 5074 : +; 5075 : mr = info.mr; + + 00092 8b 84 24 ac 00 + 00 00 mov eax, DWORD PTR info$[rsp+12] + +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { + + 00099 8b ac 24 a8 00 + 00 00 mov ebp, DWORD PTR info$[rsp+8] + 000a0 8b b4 24 b8 00 + 00 00 mov esi, DWORD PTR info$[rsp+24] + 000a7 44 8b b4 24 a4 + 00 00 00 mov r14d, DWORD PTR info$[rsp+4] + 000af 8b bc 24 a0 00 + 00 00 mov edi, DWORD PTR info$[rsp] + 000b6 89 44 24 48 mov DWORD PTR mr$1$[rsp], eax + 000ba 8b 84 24 b0 00 + 00 00 mov eax, DWORD PTR info$[rsp+16] + 000c1 89 44 24 4c mov DWORD PTR mg$1$[rsp], eax + 000c5 8b 84 24 b4 00 + 00 00 mov eax, DWORD PTR info$[rsp+20] + 000cc 89 44 24 50 mov DWORD PTR mb$1$[rsp], eax + 000d0 8b 84 24 bc 00 + 00 00 mov eax, DWORD PTR info$[rsp+28] + 000d7 89 44 24 38 mov DWORD PTR all_a$1$[rsp], eax + 000db 8b 84 24 c0 00 + 00 00 mov eax, DWORD PTR info$[rsp+32] + 000e2 89 44 24 34 mov DWORD PTR info$5$[rsp], eax + 000e6 89 74 24 64 mov DWORD PTR ma$1$[rsp], esi + 000ea 44 89 74 24 3c mov DWORD PTR n$1$[rsp], r14d + 000ef 89 6c 24 30 mov DWORD PTR info$2$[rsp], ebp + 000f3 89 7c 24 40 mov DWORD PTR info$3$[rsp], edi + 000f7 83 fd 0c cmp ebp, 12 + 000fa 75 20 jne SHORT $LN38@stbi__bmp_ + +; 5082 : if (info.bpp < 24) + + 000fc 83 ff 18 cmp edi, 24 + 000ff 7d 36 jge SHORT $LN354@stbi__bmp_ + +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; + + 00101 41 8b ce mov ecx, r14d + 00104 2b c8 sub ecx, eax + 00106 b8 56 55 55 55 mov eax, 1431655766 ; 55555556H + 0010b 83 e9 18 sub ecx, 24 + 0010e f7 e9 imul ecx + 00110 44 8b e2 mov r12d, edx + 00113 41 c1 ec 1f shr r12d, 31 + 00117 44 03 e2 add r12d, edx + +; 5084 : } + + 0011a eb 12 jmp SHORT $LN41@stbi__bmp_ +$LN38@stbi__bmp_: + +; 5085 : else { +; 5086 : if (info.bpp < 16) + + 0011c 83 ff 10 cmp edi, 16 + 0011f 7d 16 jge SHORT $LN354@stbi__bmp_ + +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; + + 00121 45 8b e6 mov r12d, r14d + 00124 44 2b e0 sub r12d, eax + 00127 44 2b e5 sub r12d, ebp + 0012a 41 c1 fc 02 sar r12d, 2 +$LN41@stbi__bmp_: + +; 5088 : } +; 5089 : if (psize == 0) { + + 0012e 45 85 e4 test r12d, r12d + 00131 0f 85 8c 00 00 + 00 jne $LN254@stbi__bmp_ +$LN354@stbi__bmp_: + +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + + 00137 8b 93 b8 00 00 + 00 mov edx, DWORD PTR [rbx+184] + 0013d 2b 93 d0 00 00 + 00 sub edx, DWORD PTR [rbx+208] + 00143 44 8b 83 c0 00 + 00 00 mov r8d, DWORD PTR [rbx+192] + 0014a 41 03 d0 add edx, r8d + +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + + 0014d 8d 42 ff lea eax, DWORD PTR [rdx-1] + 00150 3d ff 03 00 00 cmp eax, 1023 ; 000003ffH + 00155 0f 87 6b 11 00 + 00 ja $LN44@stbi__bmp_ + +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { + + 0015b 44 3b f2 cmp r14d, edx + 0015e 0f 8c 46 11 00 + 00 jl $LN47@stbi__bmp_ + 00164 41 8b ce mov ecx, r14d + 00167 2b ca sub ecx, edx + 00169 81 f9 00 04 00 + 00 cmp ecx, 1024 ; 00000400H + 0016f 0f 8f 35 11 00 + 00 jg $LN47@stbi__bmp_ + +; 1107 : if (n == 0) return; // already there! + + 00175 85 c9 test ecx, ecx + 00177 74 4a je SHORT $LN254@stbi__bmp_ + +; 1108 : if (n < 0) { + + 00179 79 10 jns SHORT $LN256@stbi__bmp_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 0017b 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00182 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 1110 : return; + + 00189 eb 38 jmp SHORT $LN254@stbi__bmp_ +$LN256@stbi__bmp_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 0018b 4c 39 7b 10 cmp QWORD PTR [rbx+16], r15 + 0018f 74 28 je SHORT $LN258@stbi__bmp_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00191 8b 93 c8 00 00 + 00 mov edx, DWORD PTR [rbx+200] + 00197 41 2b d0 sub edx, r8d + +; 1114 : if (blen < n) { + + 0019a 3b d1 cmp edx, ecx + 0019c 7d 1b jge SHORT $LN258@stbi__bmp_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 0019e 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 001a5 2b ca sub ecx, edx + 001a7 8b d1 mov edx, ecx + 001a9 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001b0 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 001b4 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 001b7 eb 0a jmp SHORT $LN254@stbi__bmp_ +$LN258@stbi__bmp_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 001b9 48 63 c1 movsxd rax, ecx + 001bc 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax +$LN254@stbi__bmp_: + +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) + + 001c3 83 ff 18 cmp edi, 24 + 001c6 75 0e jne SHORT $LN48@stbi__bmp_ + 001c8 81 fe 00 00 00 + ff cmp esi, -16777216 ; ff000000H + 001ce 75 06 jne SHORT $LN48@stbi__bmp_ + +; 5111 : s->img_n = 3; + + 001d0 44 8d 6f eb lea r13d, QWORD PTR [rdi-21] + 001d4 eb 0d jmp SHORT $LN523@stbi__bmp_ +$LN48@stbi__bmp_: + +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; + + 001d6 85 f6 test esi, esi + 001d8 45 8b ef mov r13d, r15d + 001db 41 0f 95 c5 setne r13b + 001df 41 83 c5 03 add r13d, 3 +$LN523@stbi__bmp_: + +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + + 001e3 8b 84 24 40 05 + 00 00 mov eax, DWORD PTR req_comp$[rsp] + 001ea 44 89 6b 08 mov DWORD PTR [rbx+8], r13d + 001ee 44 8b 4b 04 mov r9d, DWORD PTR [rbx+4] + 001f2 45 8b d1 mov r10d, r9d + 001f5 8b 0b mov ecx, DWORD PTR [rbx] + 001f7 44 8b c1 mov r8d, ecx + 001fa 44 89 ac 24 48 + 05 00 00 mov DWORD PTR target$4$[rsp], r13d + 00202 83 f8 03 cmp eax, 3 + 00205 7c 0a jl SHORT $LN369@stbi__bmp_ + +; 5115 : target = req_comp; + + 00207 44 8b e8 mov r13d, eax + 0020a 89 84 24 48 05 + 00 00 mov DWORD PTR target$4$[rsp], eax +$LN369@stbi__bmp_: + +; 467 : if (a < 0 || b < 0) return 0; + + 00211 45 85 c0 test r8d, r8d + 00214 0f 88 51 fe ff + ff js $LN527@stbi__bmp_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0021a 74 12 je SHORT $LN368@stbi__bmp_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0021c b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00221 99 cdq + 00222 41 f7 f8 idiv r8d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00225 44 3b e8 cmp r13d, eax + 00228 0f 8f 3d fe ff + ff jg $LN527@stbi__bmp_ +$LN368@stbi__bmp_: + 0022e 45 0f af c5 imul r8d, r13d + +; 467 : if (a < 0 || b < 0) return 0; + + 00232 45 85 c0 test r8d, r8d + 00235 0f 88 30 fe ff + ff js $LN527@stbi__bmp_ + 0023b 45 85 d2 test r10d, r10d + 0023e 0f 88 27 fe ff + ff js $LN527@stbi__bmp_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00244 74 12 je SHORT $LN52@stbi__bmp_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00246 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0024b 99 cdq + 0024c 41 f7 fa idiv r10d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0024f 44 3b c0 cmp r8d, eax + 00252 0f 8f 13 fe ff + ff jg $LN527@stbi__bmp_ +$LN52@stbi__bmp_: + +; 467 : if (a < 0 || b < 0) return 0; + + 00258 45 85 ed test r13d, r13d + 0025b 0f 88 2d 10 00 + 00 js $LN355@stbi__bmp_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00261 85 c9 test ecx, ecx + 00263 75 09 jne SHORT $LN186@stbi__bmp_ + 00265 44 8b c1 mov r8d, ecx + 00268 45 0f af c5 imul r8d, r13d + 0026c eb 18 jmp SHORT $LN375@stbi__bmp_ +$LN186@stbi__bmp_: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0026e b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00273 99 cdq + 00274 f7 f9 idiv ecx + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00276 44 3b e8 cmp r13d, eax + 00279 0f 8f 0f 10 00 + 00 jg $LN355@stbi__bmp_ + 0027f 45 8b c5 mov r8d, r13d + 00282 44 0f af c1 imul r8d, ecx +$LN375@stbi__bmp_: + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00286 45 85 c9 test r9d, r9d + 00289 74 12 je SHORT $LN364@stbi__bmp_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0028b b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00290 99 cdq + 00291 41 f7 f9 idiv r9d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00294 44 3b c0 cmp r8d, eax + 00297 0f 8f f1 0f 00 + 00 jg $LN355@stbi__bmp_ +$LN364@stbi__bmp_: + 0029d 41 0f af c9 imul ecx, r9d + +; 509 : return stbi__malloc(a * b * c + add); + + 002a1 41 0f af cd imul ecx, r13d + 002a5 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 002a8 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 002ae 48 89 84 24 90 + 00 00 00 mov QWORD PTR out$1$[rsp], rax + 002b6 48 8b f0 mov rsi, rax + +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); + + 002b9 48 85 c0 test rax, rax + 002bc 0f 84 cc 0f 00 + 00 je $LN355@stbi__bmp_ + +; 5125 : if (info.bpp < 16) { + + 002c2 83 ff 10 cmp edi, 16 + 002c5 0f 8d ee 05 00 + 00 jge $LN54@stbi__bmp_ + +; 5126 : int z = 0; + + 002cb 33 d2 xor edx, edx + 002cd 8b fa mov edi, edx + +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + + 002cf 45 85 e4 test r12d, r12d + 002d2 0f 84 b9 05 00 + 00 je $LN57@stbi__bmp_ + 002d8 41 81 fc 00 01 + 00 00 cmp r12d, 256 ; 00000100H + 002df 0f 8f ac 05 00 + 00 jg $LN57@stbi__bmp_ + +; 5128 : for (i = 0; i < psize; ++i) { + + 002e5 44 89 ac 24 48 + 05 00 00 mov DWORD PTR target$4$[rsp], r13d + 002ed 45 85 e4 test r12d, r12d + 002f0 0f 8e 5b 01 00 + 00 jle $LN341@stbi__bmp_ + +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) + + 002f6 44 8b 74 24 30 mov r14d, DWORD PTR info$2$[rsp] + 002fb 48 8d 6b 30 lea rbp, QWORD PTR [rbx+48] + 002ff 49 63 f4 movsxd rsi, r12d + 00302 0f 1f 40 00 66 + 66 0f 1f 84 00 + 00 00 00 00 npad 14 +$LL4@stbi__bmp_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00310 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00317 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0031e 73 0f jae SHORT $LN239@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00320 0f b6 08 movzx ecx, BYTE PTR [rax] + 00323 48 ff c0 inc rax + 00326 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0032d eb 29 jmp SHORT $LN238@stbi__bmp_ +$LN239@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 0032f 39 7b 30 cmp DWORD PTR [rbx+48], edi + 00332 48 8d 6b 30 lea rbp, QWORD PTR [rbx+48] + 00336 74 1e je SHORT $LN240@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00338 48 8b cb mov rcx, rbx + 0033b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00340 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00347 0f b6 08 movzx ecx, BYTE PTR [rax] + 0034a 48 ff c0 inc rax + 0034d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00354 eb 02 jmp SHORT $LN238@stbi__bmp_ +$LN240@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00356 32 c9 xor cl, cl +$LN238@stbi__bmp_: + +; 5129 : pal[i][2] = stbi__get8(s); + + 00358 4c 8b ed mov r13, rbp + 0035b 42 88 8c bc e2 + 00 00 00 mov BYTE PTR pal$[rsp+r15*4+2], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00363 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0036a 73 0f jae SHORT $LN235@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 0036c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0036f 48 ff c0 inc rax + 00372 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00379 eb 25 jmp SHORT $LN234@stbi__bmp_ +$LN235@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 0037b 39 7d 00 cmp DWORD PTR [rbp], edi + 0037e 74 1e je SHORT $LN236@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00380 48 8b cb mov rcx, rbx + 00383 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00388 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0038f 0f b6 08 movzx ecx, BYTE PTR [rax] + 00392 48 ff c0 inc rax + 00395 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0039c eb 02 jmp SHORT $LN234@stbi__bmp_ +$LN236@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 0039e 32 c9 xor cl, cl +$LN234@stbi__bmp_: + +; 5130 : pal[i][1] = stbi__get8(s); + + 003a0 42 88 8c bc e1 + 00 00 00 mov BYTE PTR pal$[rsp+r15*4+1], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003a8 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 003af 73 13 jae SHORT $LN231@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 003b1 0f b6 08 movzx ecx, BYTE PTR [rax] + 003b4 48 8d 6b 30 lea rbp, QWORD PTR [rbx+48] + 003b8 48 ff c0 inc rax + 003bb 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003c2 eb 25 jmp SHORT $LN230@stbi__bmp_ +$LN231@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 003c4 39 7d 00 cmp DWORD PTR [rbp], edi + 003c7 74 1e je SHORT $LN232@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 003c9 48 8b cb mov rcx, rbx + 003cc e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003d1 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 003d8 0f b6 08 movzx ecx, BYTE PTR [rax] + 003db 48 ff c0 inc rax + 003de 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003e5 eb 02 jmp SHORT $LN230@stbi__bmp_ +$LN232@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 003e7 32 c9 xor cl, cl +$LN230@stbi__bmp_: + +; 5131 : pal[i][0] = stbi__get8(s); + + 003e9 42 88 8c bc e0 + 00 00 00 mov BYTE PTR pal$[rsp+r15*4], cl + +; 5132 : if (info.hsz != 12) stbi__get8(s); + + 003f1 41 83 fe 0c cmp r14d, 12 + 003f5 74 2a je SHORT $LN252@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003f7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 003fe 73 0c jae SHORT $LN251@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00400 48 ff c0 inc rax + 00403 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0040a eb 15 jmp SHORT $LN252@stbi__bmp_ +$LN251@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 0040c 41 39 7d 00 cmp DWORD PTR [r13], edi + 00410 74 0f je SHORT $LN252@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00412 48 8b cb mov rcx, rbx + 00415 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0041a 48 ff 83 c0 00 + 00 00 inc QWORD PTR [rbx+192] +$LN252@stbi__bmp_: + +; 5133 : pal[i][3] = 255; + + 00421 42 c6 84 bc e3 + 00 00 00 ff mov BYTE PTR pal$[rsp+r15*4+3], 255 ; 000000ffH + 0042a 49 ff c7 inc r15 + 0042d 4c 3b fe cmp r15, rsi + 00430 0f 8c da fe ff + ff jl $LL4@stbi__bmp_ + 00436 48 8b b4 24 90 + 00 00 00 mov rsi, QWORD PTR out$1$[rsp] + 0043e 33 d2 xor edx, edx + 00440 44 8b 74 24 3c mov r14d, DWORD PTR n$1$[rsp] + 00445 8b 6c 24 30 mov ebp, DWORD PTR info$2$[rsp] + 00449 44 8b ac 24 48 + 05 00 00 mov r13d, DWORD PTR target$4$[rsp] +$LN341@stbi__bmp_: + +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + + 00451 83 fd 0c cmp ebp, 12 + 00454 8b c2 mov eax, edx + 00456 0f 95 c0 setne al + 00459 83 c0 03 add eax, 3 + 0045c 41 0f af c4 imul eax, r12d + 00460 44 2b f0 sub r14d, eax + 00463 44 2b 74 24 34 sub r14d, DWORD PTR info$5$[rsp] + 00468 44 2b f5 sub r14d, ebp + +; 1107 : if (n == 0) return; // already there! + + 0046b 74 55 je SHORT $LN224@stbi__bmp_ + +; 1108 : if (n < 0) { + + 0046d 45 85 f6 test r14d, r14d + 00470 79 10 jns SHORT $LN226@stbi__bmp_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 00472 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00479 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 1110 : return; + + 00480 eb 40 jmp SHORT $LN224@stbi__bmp_ +$LN226@stbi__bmp_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 00482 48 39 7b 10 cmp QWORD PTR [rbx+16], rdi + 00486 74 30 je SHORT $LN357@stbi__bmp_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00488 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 0048e 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 00494 41 3b ce cmp ecx, r14d + 00497 7d 1f jge SHORT $LN357@stbi__bmp_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00499 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 004a0 44 2b f1 sub r14d, ecx + 004a3 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 004a7 41 8b d6 mov edx, r14d + 004aa 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 004b1 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 004b4 33 d2 xor edx, edx + 004b6 eb 0a jmp SHORT $LN224@stbi__bmp_ +$LN357@stbi__bmp_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 004b8 49 63 c6 movsxd rax, r14d + 004bb 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax +$LN224@stbi__bmp_: + +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; + + 004c2 44 8b 64 24 40 mov r12d, DWORD PTR info$3$[rsp] + 004c7 41 83 fc 01 cmp r12d, 1 + 004cb 75 0d jne SHORT $LN59@stbi__bmp_ + 004cd 44 8b 3b mov r15d, DWORD PTR [rbx] + 004d0 41 83 c7 07 add r15d, 7 + 004d4 41 c1 ef 03 shr r15d, 3 + 004d8 eb 1e jmp SHORT $LN64@stbi__bmp_ +$LN59@stbi__bmp_: + +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + + 004da 41 83 fc 04 cmp r12d, 4 + 004de 75 0b jne SHORT $LN61@stbi__bmp_ + 004e0 44 8b 3b mov r15d, DWORD PTR [rbx] + 004e3 41 ff c7 inc r15d + 004e6 41 d1 ef shr r15d, 1 + 004e9 eb 0d jmp SHORT $LN64@stbi__bmp_ +$LN61@stbi__bmp_: + +; 5138 : else if (info.bpp == 8) width = s->img_x; + + 004eb 41 83 fc 08 cmp r12d, 8 + 004ef 0f 85 74 03 00 + 00 jne $LN63@stbi__bmp_ + 004f5 44 8b 3b mov r15d, DWORD PTR [rbx] +$LN64@stbi__bmp_: + +; 5140 : pad = (-width) & 3; + + 004f8 8b 43 04 mov eax, DWORD PTR [rbx+4] + 004fb 41 f7 df neg r15d + 004fe 41 83 e7 03 and r15d, 3 + 00502 44 89 7c 24 30 mov DWORD PTR pad$1$[rsp], r15d + +; 5141 : if (info.bpp == 1) { + + 00507 41 83 fc 01 cmp r12d, 1 + 0050b 0f 85 7c 01 00 + 00 jne $LN65@stbi__bmp_ + +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { + + 00511 44 8b e2 mov r12d, edx + 00514 85 c0 test eax, eax + 00516 0f 8e 41 03 00 + 00 jle $LN12@stbi__bmp_ + 0051c 48 8b fa mov rdi, rdx + 0051f 90 npad 1 +$LL7@stbi__bmp_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00520 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + +; 5143 : int bit_offset = 7, v = stbi__get8(s); + + 00527 bd 07 00 00 00 mov ebp, 7 + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0052c 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00533 73 0f jae SHORT $LN217@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00535 0f b6 08 movzx ecx, BYTE PTR [rax] + 00538 48 ff c0 inc rax + 0053b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00542 eb 26 jmp SHORT $LN216@stbi__bmp_ +$LN217@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 00544 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00548 74 1e je SHORT $LN218@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 0054a 48 8b cb mov rcx, rbx + 0054d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00552 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00559 0f b6 08 movzx ecx, BYTE PTR [rax] + 0055c 48 ff c0 inc rax + 0055f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00566 eb 02 jmp SHORT $LN216@stbi__bmp_ +$LN218@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00568 32 c9 xor cl, cl +$LN216@stbi__bmp_: + +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { + + 0056a 33 c0 xor eax, eax + 0056c 0f b6 d1 movzx edx, cl + 0056f 44 8b f0 mov r14d, eax + 00572 39 03 cmp DWORD PTR [rbx], eax + 00574 0f 8e b5 00 00 + 00 jle $LN377@stbi__bmp_ + 0057a 66 0f 1f 44 00 + 00 npad 6 +$LL10@stbi__bmp_: + +; 5145 : int color = (v >> bit_offset) & 0x1; + + 00580 8b c2 mov eax, edx + 00582 8b cd mov ecx, ebp + 00584 d3 f8 sar eax, cl + 00586 83 e0 01 and eax, 1 + +; 5146 : out[z++] = pal[color][0]; + + 00589 48 8d 0c 85 00 + 00 00 00 lea rcx, QWORD PTR [rax*4] + 00591 0f b6 84 0c e0 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rcx] + 00599 88 04 37 mov BYTE PTR [rdi+rsi], al + +; 5147 : out[z++] = pal[color][1]; + + 0059c 0f b6 84 0c e1 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rcx+1] + 005a4 88 44 37 01 mov BYTE PTR [rdi+rsi+1], al + +; 5148 : out[z++] = pal[color][2]; + + 005a8 0f b6 84 0c e2 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rcx+2] + 005b0 88 44 37 02 mov BYTE PTR [rdi+rsi+2], al + 005b4 48 83 c7 03 add rdi, 3 + +; 5149 : if (target == 4) out[z++] = 255; + + 005b8 41 83 fd 04 cmp r13d, 4 + 005bc 75 07 jne SHORT $LN67@stbi__bmp_ + 005be c6 04 37 ff mov BYTE PTR [rdi+rsi], 255 ; 000000ffH + 005c2 48 ff c7 inc rdi +$LN67@stbi__bmp_: + +; 5150 : if (i + 1 == (int)s->img_x) break; + + 005c5 8b 0b mov ecx, DWORD PTR [rbx] + 005c7 41 8d 46 01 lea eax, DWORD PTR [r14+1] + 005cb 44 8b f0 mov r14d, eax + 005ce 3b c1 cmp eax, ecx + 005d0 74 5d je SHORT $LN377@stbi__bmp_ + +; 5151 : if ((--bit_offset) < 0) { + + 005d2 83 ed 01 sub ebp, 1 + 005d5 79 4f jns SHORT $LN342@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 005d7 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + +; 5152 : bit_offset = 7; + + 005de bd 07 00 00 00 mov ebp, 7 + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 005e3 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 005ea 73 0f jae SHORT $LN203@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 005ec 0f b6 10 movzx edx, BYTE PTR [rax] + 005ef 48 ff c0 inc rax + 005f2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 005f9 eb 28 jmp SHORT $LN202@stbi__bmp_ +$LN203@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 005fb 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 005ff 74 20 je SHORT $LN204@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00601 48 8b cb mov rcx, rbx + 00604 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00609 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00610 0f b6 10 movzx edx, BYTE PTR [rax] + 00613 48 ff c0 inc rax + 00616 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0061d 8b 0b mov ecx, DWORD PTR [rbx] + 0061f eb 02 jmp SHORT $LN202@stbi__bmp_ +$LN204@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00621 32 d2 xor dl, dl +$LN202@stbi__bmp_: + +; 5153 : v = stbi__get8(s); + + 00623 0f b6 d2 movzx edx, dl +$LN342@stbi__bmp_: + +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { + + 00626 44 3b f1 cmp r14d, ecx + 00629 0f 8c 51 ff ff + ff jl $LL10@stbi__bmp_ +$LN377@stbi__bmp_: + +; 1107 : if (n == 0) return; // already there! + + 0062f 45 85 ff test r15d, r15d + 00632 74 3e je SHORT $LN5@stbi__bmp_ + +; 1111 : } +; 1112 : if (s->io.read) { + + 00634 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00639 74 2d je SHORT $LN361@stbi__bmp_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 0063b 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 00641 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 00647 41 3b cf cmp ecx, r15d + 0064a 7d 1c jge SHORT $LN361@stbi__bmp_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 0064c 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00653 41 8b d7 mov edx, r15d + 00656 2b d1 sub edx, ecx + 00658 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0065f 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 00663 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 00666 eb 0a jmp SHORT $LN5@stbi__bmp_ +$LN361@stbi__bmp_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00668 41 8b c7 mov eax, r15d + 0066b 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax +$LN5@stbi__bmp_: + +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { + + 00672 8b 43 04 mov eax, DWORD PTR [rbx+4] + 00675 41 ff c4 inc r12d + 00678 44 3b e0 cmp r12d, eax + 0067b 0f 8c 9f fe ff + ff jl $LL7@stbi__bmp_ + +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } + + 00681 8b ac 24 48 05 + 00 00 mov ebp, DWORD PTR target$4$[rsp] + 00688 e9 c7 0a 00 00 jmp $LN18@stbi__bmp_ +$LN65@stbi__bmp_: + +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { + + 0068d 44 8b f2 mov r14d, edx + 00690 85 c0 test eax, eax + 00692 0f 8e c5 01 00 + 00 jle $LN12@stbi__bmp_ + 00698 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL13@stbi__bmp_: + +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { + + 006a0 83 3b 00 cmp DWORD PTR [rbx], 0 + 006a3 8b ea mov ebp, edx + 006a5 0f 8e 5b 01 00 + 00 jle $LN318@stbi__bmp_ + 006ab 45 33 ff xor r15d, r15d + 006ae 66 90 npad 2 +$LL16@stbi__bmp_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 006b0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006b7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 006be 73 0f jae SHORT $LN122@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 006c0 0f b6 08 movzx ecx, BYTE PTR [rax] + 006c3 48 ff c0 inc rax + 006c6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 006cd eb 26 jmp SHORT $LN121@stbi__bmp_ +$LN122@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 006cf 44 39 7b 30 cmp DWORD PTR [rbx+48], r15d + 006d3 74 1e je SHORT $LN123@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 006d5 48 8b cb mov rcx, rbx + 006d8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 006dd 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006e4 0f b6 08 movzx ecx, BYTE PTR [rax] + 006e7 48 ff c0 inc rax + 006ea 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 006f1 eb 02 jmp SHORT $LN121@stbi__bmp_ +$LN123@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 006f3 32 c9 xor cl, cl +$LN121@stbi__bmp_: + +; 5162 : int v = stbi__get8(s), v2 = 0; + + 006f5 0f b6 c1 movzx eax, cl + 006f8 45 8b c7 mov r8d, r15d + +; 5163 : if (info.bpp == 4) { + + 006fb 41 83 fc 04 cmp r12d, 4 + 006ff 75 0a jne SHORT $LN70@stbi__bmp_ + +; 5164 : v2 = v & 15; + + 00701 44 8b c0 mov r8d, eax + 00704 41 83 e0 0f and r8d, 15 + +; 5165 : v >>= 4; + + 00708 c1 e8 04 shr eax, 4 +$LN70@stbi__bmp_: + +; 5166 : } +; 5167 : out[z++] = pal[v][0]; + + 0070b 48 63 cf movsxd rcx, edi + 0070e 48 8d 14 85 00 + 00 00 00 lea rdx, QWORD PTR [rax*4] + 00716 0f b6 84 14 e0 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rdx] + 0071e ff c7 inc edi + 00720 88 04 31 mov BYTE PTR [rcx+rsi], al + +; 5168 : out[z++] = pal[v][1]; + + 00723 0f b6 84 14 e1 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rdx+1] + 0072b 48 63 cf movsxd rcx, edi + 0072e ff c7 inc edi + 00730 88 04 31 mov BYTE PTR [rcx+rsi], al + +; 5169 : out[z++] = pal[v][2]; + + 00733 0f b6 84 14 e2 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rdx+2] + 0073b 48 63 cf movsxd rcx, edi + 0073e ff c7 inc edi + 00740 88 04 31 mov BYTE PTR [rcx+rsi], al + +; 5170 : if (target == 4) out[z++] = 255; + + 00743 41 83 fd 04 cmp r13d, 4 + 00747 75 09 jne SHORT $LN71@stbi__bmp_ + 00749 48 63 c7 movsxd rax, edi + 0074c ff c7 inc edi + 0074e c6 04 30 ff mov BYTE PTR [rax+rsi], 255 ; 000000ffH +$LN71@stbi__bmp_: + +; 5171 : if (i + 1 == (int)s->img_x) break; + + 00752 8d 45 01 lea eax, DWORD PTR [rbp+1] + 00755 3b 03 cmp eax, DWORD PTR [rbx] + 00757 0f 84 a4 00 00 + 00 je $LN378@stbi__bmp_ + +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; + + 0075d 41 83 fc 08 cmp r12d, 8 + 00761 75 49 jne SHORT $LN97@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00763 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0076a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00771 73 0f jae SHORT $LN199@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00773 0f b6 08 movzx ecx, BYTE PTR [rax] + 00776 48 ff c0 inc rax + 00779 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00780 eb 26 jmp SHORT $LN198@stbi__bmp_ +$LN199@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 00782 44 39 7b 30 cmp DWORD PTR [rbx+48], r15d + 00786 74 1e je SHORT $LN200@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00788 48 8b cb mov rcx, rbx + 0078b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00790 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00797 0f b6 08 movzx ecx, BYTE PTR [rax] + 0079a 48 ff c0 inc rax + 0079d 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 007a4 eb 02 jmp SHORT $LN198@stbi__bmp_ +$LN200@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 007a6 32 c9 xor cl, cl +$LN198@stbi__bmp_: + +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; + + 007a8 44 0f b6 c1 movzx r8d, cl +$LN97@stbi__bmp_: + +; 5173 : out[z++] = pal[v][0]; + + 007ac 48 63 cf movsxd rcx, edi + 007af ff c7 inc edi + 007b1 41 8b c0 mov eax, r8d + 007b4 48 8d 14 85 00 + 00 00 00 lea rdx, QWORD PTR [rax*4] + 007bc 0f b6 84 14 e0 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rdx] + 007c4 88 04 31 mov BYTE PTR [rcx+rsi], al + +; 5174 : out[z++] = pal[v][1]; + + 007c7 0f b6 84 14 e1 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rdx+1] + 007cf 48 63 cf movsxd rcx, edi + 007d2 ff c7 inc edi + 007d4 88 04 31 mov BYTE PTR [rcx+rsi], al + +; 5175 : out[z++] = pal[v][2]; + + 007d7 0f b6 84 14 e2 + 00 00 00 movzx eax, BYTE PTR pal$[rsp+rdx+2] + 007df 48 63 cf movsxd rcx, edi + 007e2 ff c7 inc edi + 007e4 88 04 31 mov BYTE PTR [rcx+rsi], al + +; 5176 : if (target == 4) out[z++] = 255; + + 007e7 41 83 fd 04 cmp r13d, 4 + 007eb 75 09 jne SHORT $LN14@stbi__bmp_ + 007ed 48 63 c7 movsxd rax, edi + 007f0 ff c7 inc edi + 007f2 c6 04 30 ff mov BYTE PTR [rax+rsi], 255 ; 000000ffH +$LN14@stbi__bmp_: + +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { + + 007f6 83 c5 02 add ebp, 2 + 007f9 3b 2b cmp ebp, DWORD PTR [rbx] + 007fb 0f 8c af fe ff + ff jl $LL16@stbi__bmp_ +$LN378@stbi__bmp_: + 00801 44 8b 7c 24 30 mov r15d, DWORD PTR pad$1$[rsp] +$LN318@stbi__bmp_: + +; 1107 : if (n == 0) return; // already there! + + 00806 45 85 ff test r15d, r15d + 00809 74 3e je SHORT $LN11@stbi__bmp_ + +; 1111 : } +; 1112 : if (s->io.read) { + + 0080b 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00810 74 2d je SHORT $LN358@stbi__bmp_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00812 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 00818 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 0081e 41 3b cf cmp ecx, r15d + 00821 7d 1c jge SHORT $LN358@stbi__bmp_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00823 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0082a 41 8b d7 mov edx, r15d + 0082d 2b d1 sub edx, ecx + 0082f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00836 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0083a ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 0083d eb 0a jmp SHORT $LN11@stbi__bmp_ +$LN358@stbi__bmp_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 0083f 41 8b c7 mov eax, r15d + 00842 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax +$LN11@stbi__bmp_: + +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { + + 00849 8b 43 04 mov eax, DWORD PTR [rbx+4] + 0084c 41 ff c6 inc r14d + 0084f ba 00 00 00 00 mov edx, 0 + 00854 44 3b f0 cmp r14d, eax + 00857 0f 8c 43 fe ff + ff jl $LL13@stbi__bmp_ +$LN12@stbi__bmp_: + +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } + + 0085d 8b ac 24 48 05 + 00 00 mov ebp, DWORD PTR target$4$[rsp] + 00864 e9 eb 08 00 00 jmp $LN18@stbi__bmp_ +$LN63@stbi__bmp_: + +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + + 00869 48 8b ce mov rcx, rsi + 0086c ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 00872 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00878 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00881 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00885 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07JNJHIMGH@bad?5bpp@ + +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + + 0088c e9 4f 0a 00 00 jmp $LN528@stbi__bmp_ +$LN57@stbi__bmp_: + +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + + 00891 48 8b ce mov rcx, rsi + 00894 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 0089a 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 008a0 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 008a9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 008ad 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07MALOAKCI@invalid@ + +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + + 008b4 e9 27 0a 00 00 jmp $LN528@stbi__bmp_ +$LN54@stbi__bmp_: + +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); + + 008b9 44 2b 74 24 34 sub r14d, DWORD PTR info$5$[rsp] + 008be 45 33 d2 xor r10d, r10d + 008c1 44 89 54 24 60 mov DWORD PTR rshift$1$[rsp], r10d + 008c6 41 8b d2 mov edx, r10d + 008c9 89 54 24 30 mov DWORD PTR ashift$1$[rsp], edx + 008cd 45 8b da mov r11d, r10d + 008d0 44 89 54 24 44 mov DWORD PTR gshift$1$[rsp], r10d + 008d5 45 8b c2 mov r8d, r10d + 008d8 44 89 54 24 3c mov DWORD PTR bshift$1$[rsp], r10d + 008dd 45 8b ea mov r13d, r10d + 008e0 41 8b fa mov edi, r10d + 008e3 45 8b e2 mov r12d, r10d + 008e6 44 2b f5 sub r14d, ebp + +; 1107 : if (n == 0) return; // already there! + + 008e9 74 5f je SHORT $LN242@stbi__bmp_ + +; 1108 : if (n < 0) { + + 008eb 45 85 f6 test r14d, r14d + 008ee 79 10 jns SHORT $LN244@stbi__bmp_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 008f0 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 008f7 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 1110 : return; + + 008fe eb 4a jmp SHORT $LN242@stbi__bmp_ +$LN244@stbi__bmp_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 00900 48 39 53 10 cmp QWORD PTR [rbx+16], rdx + 00904 74 3a je SHORT $LN359@stbi__bmp_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00906 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 0090c 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 00912 41 3b ce cmp ecx, r14d + 00915 7d 29 jge SHORT $LN359@stbi__bmp_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00917 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0091e 44 2b f1 sub r14d, ecx + 00921 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 00925 41 8b d6 mov edx, r14d + 00928 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0092f ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 00932 41 8b d4 mov edx, r12d + 00935 45 8b dc mov r11d, r12d + 00938 45 8b c4 mov r8d, r12d + 0093b 45 33 d2 xor r10d, r10d + 0093e eb 0a jmp SHORT $LN242@stbi__bmp_ +$LN359@stbi__bmp_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00940 49 63 c6 movsxd rax, r14d + 00943 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax +$LN242@stbi__bmp_: + +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; + + 0094a 8b 4c 24 40 mov ecx, DWORD PTR info$3$[rsp] + 0094e 83 f9 18 cmp ecx, 24 + 00951 75 08 jne SHORT $LN74@stbi__bmp_ + 00953 8b 03 mov eax, DWORD PTR [rbx] + 00955 44 8d 0c 40 lea r9d, DWORD PTR [rax+rax*2] + 00959 eb 10 jmp SHORT $LN77@stbi__bmp_ +$LN74@stbi__bmp_: + +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; + + 0095b 83 f9 10 cmp ecx, 16 + 0095e 75 08 jne SHORT $LN76@stbi__bmp_ + 00960 44 8b 0b mov r9d, DWORD PTR [rbx] + 00963 45 03 c9 add r9d, r9d + 00966 eb 03 jmp SHORT $LN77@stbi__bmp_ +$LN76@stbi__bmp_: + +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; + + 00968 45 8b ca mov r9d, r10d +$LN77@stbi__bmp_: + +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { + + 0096b 8b ac 24 48 05 + 00 00 mov ebp, DWORD PTR target$4$[rsp] + 00972 41 f7 d9 neg r9d + 00975 41 83 e1 03 and r9d, 3 + 00979 44 89 4c 24 34 mov DWORD PTR pad$2$[rsp], r9d + 0097e 83 f9 18 cmp ecx, 24 + 00981 75 11 jne SHORT $LN78@stbi__bmp_ + +; 5192 : easy = 1; + + 00983 48 c7 44 24 58 + 01 00 00 00 mov QWORD PTR $T22[rsp], 1 + +; 5193 : } + + 0098c 45 8b f4 mov r14d, r12d + 0098f e9 97 03 00 00 jmp $LN85@stbi__bmp_ +$LN78@stbi__bmp_: + +; 5194 : else if (info.bpp == 32) { + + 00994 83 f9 20 cmp ecx, 32 ; 00000020H + 00997 4c 89 54 24 58 mov QWORD PTR $T22[rsp], r10 + 0099c 8b 4c 24 50 mov ecx, DWORD PTR mb$1$[rsp] + 009a0 8b c5 mov eax, ebp + 009a2 75 4f jne SHORT $LN362@stbi__bmp_ + +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + + 009a4 4c 89 54 24 58 mov QWORD PTR $T22[rsp], r10 + 009a9 81 f9 ff 00 00 + 00 cmp ecx, 255 ; 000000ffH + 009af 75 42 jne SHORT $LN362@stbi__bmp_ + 009b1 81 7c 24 4c 00 + ff 00 00 cmp DWORD PTR mg$1$[rsp], 65280 ; 0000ff00H + 009b9 4c 89 54 24 58 mov QWORD PTR $T22[rsp], r10 + 009be 75 33 jne SHORT $LN362@stbi__bmp_ + 009c0 81 7c 24 48 00 + 00 ff 00 cmp DWORD PTR mr$1$[rsp], 16711680 ; 00ff0000H + 009c8 4c 89 54 24 58 mov QWORD PTR $T22[rsp], r10 + 009cd 75 24 jne SHORT $LN362@stbi__bmp_ + 009cf 4c 89 54 24 58 mov QWORD PTR $T22[rsp], r10 + 009d4 44 8b 54 24 64 mov r10d, DWORD PTR ma$1$[rsp] + 009d9 41 81 fa 00 00 + 00 ff cmp r10d, -16777216 ; ff000000H + 009e0 75 3c jne SHORT $LN379@stbi__bmp_ + +; 5196 : easy = 2; + + 009e2 48 c7 44 24 58 + 02 00 00 00 mov QWORD PTR $T22[rsp], 2 + 009eb 45 8b f4 mov r14d, r12d + 009ee e9 38 03 00 00 jmp $LN85@stbi__bmp_ +$LN362@stbi__bmp_: + +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + + 009f3 8b 7c 24 48 mov edi, DWORD PTR mr$1$[rsp] + 009f7 8b e8 mov ebp, eax + 009f9 85 ff test edi, edi + 009fb 0f 84 68 08 00 + 00 je $LN86@stbi__bmp_ + 00a01 44 8b 7c 24 4c mov r15d, DWORD PTR mg$1$[rsp] + 00a06 45 85 ff test r15d, r15d + 00a09 0f 84 5a 08 00 + 00 je $LN86@stbi__bmp_ + 00a0f 85 c9 test ecx, ecx + 00a11 0f 84 52 08 00 + 00 je $LN86@stbi__bmp_ + +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + + 00a17 44 8b 54 24 64 mov r10d, DWORD PTR ma$1$[rsp] + 00a1c eb 09 jmp SHORT $LN372@stbi__bmp_ +$LN379@stbi__bmp_: + 00a1e 8b 7c 24 48 mov edi, DWORD PTR mr$1$[rsp] + 00a22 44 8b 7c 24 4c mov r15d, DWORD PTR mg$1$[rsp] +$LN372@stbi__bmp_: + +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); + + 00a27 8b cf mov ecx, edi + +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } + + 00a29 81 ff 00 00 01 + 00 cmp edi, 65536 ; 00010000H + 00a2f 72 03 jb SHORT $LN266@stbi__bmp_ + 00a31 c1 e9 10 shr ecx, 16 +$LN266@stbi__bmp_: + +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } + + 00a34 81 ff 00 00 01 + 00 cmp edi, 65536 ; 00010000H + 00a3a 41 b9 10 00 00 + 00 mov r9d, 16 + 00a40 41 8b d1 mov edx, r9d + 00a43 41 0f 42 d4 cmovb edx, r12d + 00a47 81 f9 00 01 00 + 00 cmp ecx, 256 ; 00000100H + 00a4d 72 06 jb SHORT $LN267@stbi__bmp_ + 00a4f 83 c2 08 add edx, 8 + 00a52 c1 e9 08 shr ecx, 8 +$LN267@stbi__bmp_: + +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } + + 00a55 41 3b c9 cmp ecx, r9d + 00a58 8d 42 04 lea eax, DWORD PTR [rdx+4] + 00a5b 44 8b c1 mov r8d, ecx + 00a5e 0f 42 c2 cmovb eax, edx + 00a61 41 c1 e8 04 shr r8d, 4 + 00a65 41 3b c9 cmp ecx, r9d + 00a68 44 0f 42 c1 cmovb r8d, ecx + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00a6c 8d 50 02 lea edx, DWORD PTR [rax+2] + 00a6f 41 83 f8 04 cmp r8d, 4 + 00a73 41 8b c8 mov ecx, r8d + 00a76 0f 42 d0 cmovb edx, eax + 00a79 c1 e9 02 shr ecx, 2 + 00a7c 41 83 f8 04 cmp r8d, 4 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00a80 8b c7 mov eax, edi + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00a82 41 0f 42 c8 cmovb ecx, r8d + +; 4898 : return n; + + 00a86 83 f9 02 cmp ecx, 2 + 00a89 44 8d 5a 01 lea r11d, DWORD PTR [rdx+1] + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00a8d 8b cf mov ecx, edi + +; 4898 : return n; + + 00a8f 44 0f 42 da cmovb r11d, edx + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00a93 25 55 55 55 55 and eax, 1431655765 ; 55555555H + 00a98 d1 e9 shr ecx, 1 + +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); + + 00a9a 41 83 c3 f9 add r11d, -7 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00a9e 81 e1 55 55 55 + 55 and ecx, 1431655765 ; 55555555H + +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); + + 00aa4 44 89 5c 24 60 mov DWORD PTR rshift$1$[rsp], r11d + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00aa9 03 c8 add ecx, eax + +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + + 00aab 8b c1 mov eax, ecx + 00aad 81 e1 33 33 33 + 33 and ecx, 858993459 ; 33333333H + 00ab3 c1 e8 02 shr eax, 2 + 00ab6 25 33 33 33 33 and eax, 858993459 ; 33333333H + 00abb 03 c1 add eax, ecx + +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + + 00abd 8b c8 mov ecx, eax + 00abf c1 e9 04 shr ecx, 4 + 00ac2 03 c8 add ecx, eax + 00ac4 81 e1 0f 0f 0f + 0f and ecx, 252645135 ; 0f0f0f0fH + +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits + + 00aca 8b c1 mov eax, ecx + 00acc c1 e8 08 shr eax, 8 + 00acf 03 c8 add ecx, eax + +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits + + 00ad1 8b c1 mov eax, ecx + 00ad3 c1 e8 10 shr eax, 16 + 00ad6 03 c1 add eax, ecx + +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); + + 00ad8 41 8b cf mov ecx, r15d + +; 4908 : return a & 0xff; + + 00adb 44 0f b6 e8 movzx r13d, al + +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } + + 00adf 41 81 ff 00 00 + 01 00 cmp r15d, 65536 ; 00010000H + 00ae6 72 03 jb SHORT $LN276@stbi__bmp_ + 00ae8 c1 e9 10 shr ecx, 16 +$LN276@stbi__bmp_: + +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } + + 00aeb 41 81 ff 00 00 + 01 00 cmp r15d, 65536 ; 00010000H + 00af2 41 8b d1 mov edx, r9d + 00af5 41 0f 42 d4 cmovb edx, r12d + 00af9 81 f9 00 01 00 + 00 cmp ecx, 256 ; 00000100H + 00aff 72 06 jb SHORT $LN277@stbi__bmp_ + 00b01 83 c2 08 add edx, 8 + 00b04 c1 e9 08 shr ecx, 8 +$LN277@stbi__bmp_: + +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); + + 00b07 8b 7c 24 50 mov edi, DWORD PTR mb$1$[rsp] + +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } + + 00b0b 8d 42 04 lea eax, DWORD PTR [rdx+4] + 00b0e 41 3b c9 cmp ecx, r9d + 00b11 44 8b c1 mov r8d, ecx + 00b14 0f 42 c2 cmovb eax, edx + 00b17 41 c1 e8 04 shr r8d, 4 + 00b1b 41 3b c9 cmp ecx, r9d + 00b1e 44 0f 42 c1 cmovb r8d, ecx + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00b22 8d 50 02 lea edx, DWORD PTR [rax+2] + 00b25 41 83 f8 04 cmp r8d, 4 + 00b29 41 8b c8 mov ecx, r8d + 00b2c 0f 42 d0 cmovb edx, eax + 00b2f c1 e9 02 shr ecx, 2 + 00b32 41 83 f8 04 cmp r8d, 4 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00b36 41 8b c7 mov eax, r15d + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00b39 41 0f 42 c8 cmovb ecx, r8d + +; 4898 : return n; + + 00b3d 83 f9 02 cmp ecx, 2 + 00b40 44 8d 72 01 lea r14d, DWORD PTR [rdx+1] + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00b44 41 8b cf mov ecx, r15d + +; 4898 : return n; + + 00b47 44 0f 42 f2 cmovb r14d, edx + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00b4b 25 55 55 55 55 and eax, 1431655765 ; 55555555H + 00b50 d1 e9 shr ecx, 1 + +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); + + 00b52 41 83 c6 f9 add r14d, -7 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00b56 81 e1 55 55 55 + 55 and ecx, 1431655765 ; 55555555H + +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); + + 00b5c 44 89 74 24 44 mov DWORD PTR gshift$1$[rsp], r14d + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00b61 03 c8 add ecx, eax + +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + + 00b63 8b c1 mov eax, ecx + 00b65 81 e1 33 33 33 + 33 and ecx, 858993459 ; 33333333H + 00b6b c1 e8 02 shr eax, 2 + 00b6e 25 33 33 33 33 and eax, 858993459 ; 33333333H + 00b73 03 c1 add eax, ecx + +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + + 00b75 8b c8 mov ecx, eax + 00b77 c1 e9 04 shr ecx, 4 + 00b7a 03 c8 add ecx, eax + 00b7c 81 e1 0f 0f 0f + 0f and ecx, 252645135 ; 0f0f0f0fH + +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits + + 00b82 8b c1 mov eax, ecx + 00b84 c1 e8 08 shr eax, 8 + 00b87 03 c8 add ecx, eax + +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits + + 00b89 8b c1 mov eax, ecx + 00b8b c1 e8 10 shr eax, 16 + 00b8e 03 c1 add eax, ecx + +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); + + 00b90 8b cf mov ecx, edi + +; 4908 : return a & 0xff; + + 00b92 44 0f b6 e0 movzx r12d, al + +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } + + 00b96 81 ff 00 00 01 + 00 cmp edi, 65536 ; 00010000H + 00b9c 72 03 jb SHORT $LN286@stbi__bmp_ + 00b9e c1 e9 10 shr ecx, 16 +$LN286@stbi__bmp_: + +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } + + 00ba1 81 ff 00 00 01 + 00 cmp edi, 65536 ; 00010000H + 00ba7 41 8b d1 mov edx, r9d + 00baa b8 00 00 00 00 mov eax, 0 + 00baf 0f 42 d0 cmovb edx, eax + 00bb2 81 f9 00 01 00 + 00 cmp ecx, 256 ; 00000100H + 00bb8 72 06 jb SHORT $LN287@stbi__bmp_ + 00bba 83 c2 08 add edx, 8 + 00bbd c1 e9 08 shr ecx, 8 +$LN287@stbi__bmp_: + +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } + + 00bc0 41 3b c9 cmp ecx, r9d + 00bc3 8d 42 04 lea eax, DWORD PTR [rdx+4] + 00bc6 44 8b c1 mov r8d, ecx + 00bc9 0f 42 c2 cmovb eax, edx + 00bcc 41 c1 e8 04 shr r8d, 4 + 00bd0 41 3b c9 cmp ecx, r9d + 00bd3 44 0f 42 c1 cmovb r8d, ecx + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00bd7 8d 50 02 lea edx, DWORD PTR [rax+2] + 00bda 41 83 f8 04 cmp r8d, 4 + 00bde 41 8b c8 mov ecx, r8d + 00be1 0f 42 d0 cmovb edx, eax + 00be4 c1 e9 02 shr ecx, 2 + 00be7 41 83 f8 04 cmp r8d, 4 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00beb 8b c7 mov eax, edi + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00bed 41 0f 42 c8 cmovb ecx, r8d + +; 4898 : return n; + + 00bf1 83 f9 02 cmp ecx, 2 + 00bf4 44 8d 42 01 lea r8d, DWORD PTR [rdx+1] + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00bf8 8b cf mov ecx, edi + +; 4898 : return n; + + 00bfa 44 0f 42 c2 cmovb r8d, edx + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00bfe 25 55 55 55 55 and eax, 1431655765 ; 55555555H + 00c03 d1 e9 shr ecx, 1 + +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); + + 00c05 41 83 c0 f9 add r8d, -7 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00c09 81 e1 55 55 55 + 55 and ecx, 1431655765 ; 55555555H + +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); + + 00c0f 44 89 44 24 3c mov DWORD PTR bshift$1$[rsp], r8d + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00c14 03 c8 add ecx, eax + +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + + 00c16 8b c1 mov eax, ecx + 00c18 81 e1 33 33 33 + 33 and ecx, 858993459 ; 33333333H + 00c1e c1 e8 02 shr eax, 2 + 00c21 25 33 33 33 33 and eax, 858993459 ; 33333333H + 00c26 03 c1 add eax, ecx + +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + + 00c28 8b c8 mov ecx, eax + 00c2a c1 e9 04 shr ecx, 4 + 00c2d 03 c8 add ecx, eax + 00c2f 81 e1 0f 0f 0f + 0f and ecx, 252645135 ; 0f0f0f0fH + +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits + + 00c35 8b c1 mov eax, ecx + 00c37 c1 e8 08 shr eax, 8 + 00c3a 03 c8 add ecx, eax + +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits + + 00c3c 8b c1 mov eax, ecx + 00c3e c1 e8 10 shr eax, 16 + 00c41 03 c1 add eax, ecx + +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); + + 00c43 41 8b ca mov ecx, r10d + +; 4908 : return a & 0xff; + + 00c46 44 0f b6 f8 movzx r15d, al + +; 4892 : if (z == 0) return -1; + + 00c4a 45 85 d2 test r10d, r10d + 00c4d 75 06 jne SHORT $LN295@stbi__bmp_ + 00c4f 41 8d 52 ff lea edx, QWORD PTR [r10-1] + 00c53 eb 5e jmp SHORT $LN294@stbi__bmp_ +$LN295@stbi__bmp_: + +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } + + 00c55 41 81 fa 00 00 + 01 00 cmp r10d, 65536 ; 00010000H + 00c5c 72 0a jb SHORT $LN524@stbi__bmp_ + 00c5e c1 e9 10 shr ecx, 16 + +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } + + 00c61 41 81 fa 00 00 + 01 00 cmp r10d, 65536 ; 00010000H +$LN524@stbi__bmp_: + 00c68 b8 00 00 00 00 mov eax, 0 + 00c6d 44 0f 42 c8 cmovb r9d, eax + 00c71 81 f9 00 01 00 + 00 cmp ecx, 256 ; 00000100H + 00c77 72 07 jb SHORT $LN297@stbi__bmp_ + 00c79 41 83 c1 08 add r9d, 8 + 00c7d c1 e9 08 shr ecx, 8 +$LN297@stbi__bmp_: + +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } + + 00c80 83 f9 10 cmp ecx, 16 + 00c83 41 8d 41 04 lea eax, DWORD PTR [r9+4] + 00c87 8b d1 mov edx, ecx + 00c89 41 0f 42 c1 cmovb eax, r9d + 00c8d c1 ea 04 shr edx, 4 + 00c90 83 f9 10 cmp ecx, 16 + 00c93 0f 42 d1 cmovb edx, ecx + +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + + 00c96 83 fa 04 cmp edx, 4 + 00c99 8d 48 02 lea ecx, DWORD PTR [rax+2] + 00c9c 0f 42 c8 cmovb ecx, eax + 00c9f 8b c2 mov eax, edx + 00ca1 c1 e8 02 shr eax, 2 + 00ca4 83 fa 04 cmp edx, 4 + 00ca7 0f 42 c2 cmovb eax, edx + +; 4898 : return n; + + 00caa 8d 51 01 lea edx, DWORD PTR [rcx+1] + 00cad 83 f8 02 cmp eax, 2 + 00cb0 0f 42 d1 cmovb edx, ecx +$LN294@stbi__bmp_: + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00cb3 41 8b ca mov ecx, r10d + +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); + + 00cb6 83 c2 f9 add edx, -7 + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00cb9 d1 e9 shr ecx, 1 + 00cbb 41 8b c2 mov eax, r10d + 00cbe 25 55 55 55 55 and eax, 1431655765 ; 55555555H + +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); + + 00cc3 89 54 24 30 mov DWORD PTR ashift$1$[rsp], edx + +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + + 00cc7 81 e1 55 55 55 + 55 and ecx, 1431655765 ; 55555555H + 00ccd 03 c8 add ecx, eax + +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + + 00ccf 8b c1 mov eax, ecx + 00cd1 81 e1 33 33 33 + 33 and ecx, 858993459 ; 33333333H + 00cd7 c1 e8 02 shr eax, 2 + 00cda 25 33 33 33 33 and eax, 858993459 ; 33333333H + 00cdf 03 c1 add eax, ecx + +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + + 00ce1 8b c8 mov ecx, eax + 00ce3 c1 e9 04 shr ecx, 4 + 00ce6 03 c8 add ecx, eax + 00ce8 81 e1 0f 0f 0f + 0f and ecx, 252645135 ; 0f0f0f0fH + +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits + + 00cee 8b c1 mov eax, ecx + 00cf0 c1 e8 08 shr eax, 8 + 00cf3 03 c8 add ecx, eax + +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits + + 00cf5 8b c1 mov eax, ecx + 00cf7 c1 e8 10 shr eax, 16 + 00cfa 03 c1 add eax, ecx + +; 4908 : return a & 0xff; + + 00cfc 0f b6 f8 movzx edi, al + +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + + 00cff 41 83 fd 08 cmp r13d, 8 + 00d03 0f 87 60 05 00 + 00 ja $LN86@stbi__bmp_ + 00d09 41 83 fc 08 cmp r12d, 8 + 00d0d 0f 87 56 05 00 + 00 ja $LN86@stbi__bmp_ + 00d13 41 83 ff 08 cmp r15d, 8 + 00d17 0f 87 4c 05 00 + 00 ja $LN86@stbi__bmp_ + 00d1d 83 ff 08 cmp edi, 8 + 00d20 0f 87 43 05 00 + 00 ja $LN86@stbi__bmp_ + 00d26 44 8b 4c 24 34 mov r9d, DWORD PTR pad$2$[rsp] +$LN85@stbi__bmp_: + +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { + + 00d2b 33 c0 xor eax, eax + 00d2d 44 8b d0 mov r10d, eax + 00d30 89 84 24 48 05 + 00 00 mov DWORD PTR j$3$[rsp], eax + 00d37 8b 43 04 mov eax, DWORD PTR [rbx+4] + 00d3a 85 c0 test eax, eax + 00d3c 0f 8e 12 04 00 + 00 jle $LN18@stbi__bmp_ + +; 4929 : v >>= (8 - bits); + + 00d42 b9 08 00 00 00 mov ecx, 8 + 00d47 48 89 bc 24 98 + 00 00 00 mov QWORD PTR tv4023[rsp], rdi + +; 4925 : v <<= -shift; + + 00d4f 41 8b c3 mov eax, r11d + 00d52 f7 d8 neg eax + 00d54 89 44 24 6c mov DWORD PTR tv4035[rsp], eax + +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); + + 00d58 8b c1 mov eax, ecx + 00d5a 41 2b c5 sub eax, r13d + 00d5d 89 44 24 70 mov DWORD PTR tv4034[rsp], eax + +; 4925 : v <<= -shift; + + 00d61 41 8b c6 mov eax, r14d + 00d64 f7 d8 neg eax + 00d66 89 44 24 74 mov DWORD PTR tv4033[rsp], eax + +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); + + 00d6a 8b c1 mov eax, ecx + 00d6c 41 2b c4 sub eax, r12d + 00d6f 89 44 24 78 mov DWORD PTR tv4032[rsp], eax + +; 4925 : v <<= -shift; + + 00d73 41 8b c0 mov eax, r8d + 00d76 f7 d8 neg eax + 00d78 89 44 24 7c mov DWORD PTR tv4030[rsp], eax + +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); + + 00d7c 8b c1 mov eax, ecx + 00d7e 41 2b c7 sub eax, r15d + 00d81 89 84 24 80 00 + 00 00 mov DWORD PTR tv4029[rsp], eax + +; 4925 : v <<= -shift; + + 00d88 8b c2 mov eax, edx + 00d8a f7 d8 neg eax + 00d8c 89 84 24 84 00 + 00 00 mov DWORD PTR tv4028[rsp], eax + +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); + + 00d93 2b cf sub ecx, edi + 00d95 41 8b c5 mov eax, r13d + 00d98 4c 8b 6c 24 58 mov r13, QWORD PTR $T22[rsp] + 00d9d 48 89 84 24 c8 + 00 00 00 mov QWORD PTR tv4026[rsp], rax + 00da5 89 8c 24 88 00 + 00 00 mov DWORD PTR tv4027[rsp], ecx + 00dac 41 8b cc mov ecx, r12d + 00daf 45 8b e2 mov r12d, r10d + 00db2 41 8b c7 mov eax, r15d + 00db5 48 89 84 24 d8 + 00 00 00 mov QWORD PTR tv4024[rsp], rax + 00dbd 48 89 8c 24 d0 + 00 00 00 mov QWORD PTR tv4025[rsp], rcx +$LL19@stbi__bmp_: + +; 5208 : if (easy) { + + 00dc5 8b 03 mov eax, DWORD PTR [rbx] + 00dc7 45 33 ff xor r15d, r15d + 00dca 49 63 cc movsxd rcx, r12d + 00dcd 4d 85 ed test r13, r13 + 00dd0 0f 84 83 01 00 + 00 je $LN87@stbi__bmp_ + +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { + + 00dd6 85 c0 test eax, eax + 00dd8 0f 8e 07 03 00 + 00 jle $LN24@stbi__bmp_ + 00dde 4c 8d 34 0e lea r14, QWORD PTR [rsi+rcx] + 00de2 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 00de6 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL22@stbi__bmp_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00df0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00df7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00dfe 73 0f jae SHORT $LN157@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00e00 0f b6 08 movzx ecx, BYTE PTR [rax] + 00e03 48 ff c0 inc rax + 00e06 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00e0d eb 2a jmp SHORT $LN156@stbi__bmp_ +$LN157@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 00e0f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00e13 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 00e17 74 1e je SHORT $LN158@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00e19 48 8b cb mov rcx, rbx + 00e1c e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00e21 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00e28 0f b6 08 movzx ecx, BYTE PTR [rax] + 00e2b 48 ff c0 inc rax + 00e2e 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00e35 eb 02 jmp SHORT $LN156@stbi__bmp_ +$LN158@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00e37 32 c9 xor cl, cl +$LN156@stbi__bmp_: + +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); + + 00e39 41 88 4e 02 mov BYTE PTR [r14+2], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00e3d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00e44 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00e4b 73 0f jae SHORT $LN153@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00e4d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00e50 48 ff c0 inc rax + 00e53 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00e5a eb 25 jmp SHORT $LN152@stbi__bmp_ +$LN153@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 00e5c 83 3f 00 cmp DWORD PTR [rdi], 0 + 00e5f 74 1e je SHORT $LN154@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00e61 48 8b cb mov rcx, rbx + 00e64 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00e69 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00e70 0f b6 08 movzx ecx, BYTE PTR [rax] + 00e73 48 ff c0 inc rax + 00e76 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00e7d eb 02 jmp SHORT $LN152@stbi__bmp_ +$LN154@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00e7f 32 c9 xor cl, cl +$LN152@stbi__bmp_: + +; 5212 : out[z + 1] = stbi__get8(s); + + 00e81 41 88 4e 01 mov BYTE PTR [r14+1], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00e85 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00e8c 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00e93 73 0f jae SHORT $LN149@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00e95 0f b6 08 movzx ecx, BYTE PTR [rax] + 00e98 48 ff c0 inc rax + 00e9b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00ea2 eb 25 jmp SHORT $LN148@stbi__bmp_ +$LN149@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 00ea4 83 3f 00 cmp DWORD PTR [rdi], 0 + 00ea7 74 1e je SHORT $LN150@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00ea9 48 8b cb mov rcx, rbx + 00eac e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00eb1 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00eb8 0f b6 08 movzx ecx, BYTE PTR [rax] + 00ebb 48 ff c0 inc rax + 00ebe 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00ec5 eb 02 jmp SHORT $LN148@stbi__bmp_ +$LN150@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00ec7 32 c9 xor cl, cl +$LN148@stbi__bmp_: + +; 5213 : out[z + 0] = stbi__get8(s); + + 00ec9 41 88 0e mov BYTE PTR [r14], cl + +; 5214 : z += 3; + + 00ecc 41 83 c4 03 add r12d, 3 + 00ed0 49 83 c6 03 add r14, 3 + +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); + + 00ed4 49 83 fd 02 cmp r13, 2 + 00ed8 75 53 jne SHORT $LN99@stbi__bmp_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00eda 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00ee1 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00ee8 73 0f jae SHORT $LN207@stbi__bmp_ + +; 1078 : return *s->img_buffer++; + + 00eea 0f b6 08 movzx ecx, BYTE PTR [rax] + 00eed 48 ff c0 inc rax + 00ef0 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00ef7 eb 26 jmp SHORT $LN525@stbi__bmp_ +$LN207@stbi__bmp_: + +; 1079 : if (s->read_from_callbacks) { + + 00ef9 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00efd 74 1e je SHORT $LN208@stbi__bmp_ + +; 1080 : stbi__refill_buffer(s); + + 00eff 48 8b cb mov rcx, rbx + 00f02 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00f07 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00f0e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00f11 48 ff c0 inc rax + 00f14 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00f1b eb 02 jmp SHORT $LN525@stbi__bmp_ +$LN208@stbi__bmp_: + +; 1082 : } +; 1083 : return 0; + + 00f1d 32 c9 xor cl, cl +$LN525@stbi__bmp_: + +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); + + 00f1f ba 30 00 00 00 mov edx, 48 ; 00000030H + 00f24 48 8b c3 mov rax, rbx + 00f27 48 8d 3c 13 lea rdi, QWORD PTR [rbx+rdx] + 00f2b eb 06 jmp SHORT $LN100@stbi__bmp_ +$LN99@stbi__bmp_: + 00f2d b1 ff mov cl, 255 ; 000000ffH + 00f2f 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] +$LN100@stbi__bmp_: + +; 5216 : all_a |= a; + + 00f33 0f b6 c1 movzx eax, cl + 00f36 09 44 24 38 or DWORD PTR all_a$1$[rsp], eax + +; 5217 : if (target == 4) out[z++] = a; + + 00f3a 83 fd 04 cmp ebp, 4 + 00f3d 75 09 jne SHORT $LN20@stbi__bmp_ + 00f3f 41 ff c4 inc r12d + 00f42 41 88 0e mov BYTE PTR [r14], cl + 00f45 49 ff c6 inc r14 +$LN20@stbi__bmp_: + +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { + + 00f48 41 ff c7 inc r15d + 00f4b 44 3b 3b cmp r15d, DWORD PTR [rbx] + 00f4e 0f 8c 9c fe ff + ff jl $LL22@stbi__bmp_ + +; 5218 : } +; 5219 : } + + 00f54 e9 7f 01 00 00 jmp $LN526@stbi__bmp_ +$LN87@stbi__bmp_: + +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { + + 00f59 85 c0 test eax, eax + 00f5b 0f 8e 84 01 00 + 00 jle $LN24@stbi__bmp_ + 00f61 44 8b 6c 24 44 mov r13d, DWORD PTR gshift$1$[rsp] + 00f66 4c 8d 34 0e lea r14, QWORD PTR [rsi+rcx] + 00f6a 8b 74 24 40 mov esi, DWORD PTR info$3$[rsp] + 00f6e 66 90 npad 2 +$LL25@stbi__bmp_: + +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); + + 00f70 48 8b cb mov rcx, rbx + 00f73 e8 00 00 00 00 call stbi__get16le + 00f78 83 fe 10 cmp esi, 16 + 00f7b 74 17 je SHORT $LN102@stbi__bmp_ + +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; + + 00f7d 48 8b cb mov rcx, rbx + 00f80 8b f8 mov edi, eax + 00f82 e8 00 00 00 00 call stbi__get16le + 00f87 c1 e0 10 shl eax, 16 + 00f8a 03 c7 add eax, edi + 00f8c 48 8b bc 24 98 + 00 00 00 mov rdi, QWORD PTR tv4023[rsp] +$LN102@stbi__bmp_: + +; 4924 : if (shift < 0) + + 00f94 44 8b 5c 24 60 mov r11d, DWORD PTR rshift$1$[rsp] + +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + + 00f99 8b d0 mov edx, eax + 00f9b 23 54 24 48 and edx, DWORD PTR mr$1$[rsp] + +; 4924 : if (shift < 0) + + 00f9f 45 85 db test r11d, r11d + 00fa2 79 08 jns SHORT $LN169@stbi__bmp_ + +; 4925 : v <<= -shift; + + 00fa4 8b 4c 24 6c mov ecx, DWORD PTR tv4035[rsp] + 00fa8 d3 e2 shl edx, cl + 00faa eb 05 jmp SHORT $LN170@stbi__bmp_ +$LN169@stbi__bmp_: + +; 4926 : else +; 4927 : v >>= shift; + + 00fac 41 8b cb mov ecx, r11d + 00faf d3 ea shr edx, cl +$LN170@stbi__bmp_: + +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 00fb1 4c 8b 9c 24 c8 + 00 00 00 mov r11, QWORD PTR tv4026[rsp] + 00fb9 4c 8d 0d 00 00 + 00 00 lea r9, OFFSET FLAT:__ImageBase + 00fc0 8b 4c 24 70 mov ecx, DWORD PTR tv4034[rsp] + 00fc4 d3 ea shr edx, cl + 00fc6 43 0f af 94 99 + 00 00 00 00 imul edx, DWORD PTR ?mul_table@?1??stbi__shiftsigned@@9@9[r9+r11*4] + 00fcf 43 8b 8c 99 00 + 00 00 00 mov ecx, DWORD PTR ?shift_table@?1??stbi__shiftsigned@@9@9[r9+r11*4] + 00fd7 d3 fa sar edx, cl + +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + + 00fd9 41 88 16 mov BYTE PTR [r14], dl + +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + + 00fdc 8b d0 mov edx, eax + 00fde 23 54 24 4c and edx, DWORD PTR mg$1$[rsp] + +; 4924 : if (shift < 0) + + 00fe2 45 85 ed test r13d, r13d + 00fe5 79 08 jns SHORT $LN165@stbi__bmp_ + +; 4925 : v <<= -shift; + + 00fe7 8b 4c 24 74 mov ecx, DWORD PTR tv4033[rsp] + 00feb d3 e2 shl edx, cl + 00fed eb 05 jmp SHORT $LN166@stbi__bmp_ +$LN165@stbi__bmp_: + +; 4926 : else +; 4927 : v >>= shift; + + 00fef 41 8b cd mov ecx, r13d + 00ff2 d3 ea shr edx, cl +$LN166@stbi__bmp_: + +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 00ff4 4c 8b 9c 24 d0 + 00 00 00 mov r11, QWORD PTR tv4025[rsp] + 00ffc 8b 4c 24 78 mov ecx, DWORD PTR tv4032[rsp] + +; 4924 : if (shift < 0) + + 01000 44 8b 44 24 3c mov r8d, DWORD PTR bshift$1$[rsp] + +; 4929 : v >>= (8 - bits); + + 01005 d3 ea shr edx, cl + +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 01007 43 0f af 94 99 + 00 00 00 00 imul edx, DWORD PTR ?mul_table@?1??stbi__shiftsigned@@9@9[r9+r11*4] + 01010 43 8b 8c 99 00 + 00 00 00 mov ecx, DWORD PTR ?shift_table@?1??stbi__shiftsigned@@9@9[r9+r11*4] + 01018 d3 fa sar edx, cl + +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + + 0101a 41 88 56 01 mov BYTE PTR [r14+1], dl + +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + + 0101e 8b d0 mov edx, eax + 01020 23 54 24 50 and edx, DWORD PTR mb$1$[rsp] + +; 4924 : if (shift < 0) + + 01024 45 85 c0 test r8d, r8d + 01027 79 08 jns SHORT $LN161@stbi__bmp_ + +; 4925 : v <<= -shift; + + 01029 8b 4c 24 7c mov ecx, DWORD PTR tv4030[rsp] + 0102d d3 e2 shl edx, cl + 0102f eb 05 jmp SHORT $LN162@stbi__bmp_ +$LN161@stbi__bmp_: + +; 4926 : else +; 4927 : v >>= shift; + + 01031 41 8b c8 mov ecx, r8d + 01034 d3 ea shr edx, cl +$LN162@stbi__bmp_: + +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 01036 4c 8b 84 24 d8 + 00 00 00 mov r8, QWORD PTR tv4024[rsp] + +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + + 0103e 41 83 c4 03 add r12d, 3 + +; 4929 : v >>= (8 - bits); + + 01042 8b 8c 24 80 00 + 00 00 mov ecx, DWORD PTR tv4029[rsp] + +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + + 01049 44 8b 54 24 64 mov r10d, DWORD PTR ma$1$[rsp] + +; 4929 : v >>= (8 - bits); + + 0104e d3 ea shr edx, cl + +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 01050 43 0f af 94 81 + 00 00 00 00 imul edx, DWORD PTR ?mul_table@?1??stbi__shiftsigned@@9@9[r9+r8*4] + 01059 43 8b 8c 81 00 + 00 00 00 mov ecx, DWORD PTR ?shift_table@?1??stbi__shiftsigned@@9@9[r9+r8*4] + 01061 d3 fa sar edx, cl + +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + + 01063 41 88 56 02 mov BYTE PTR [r14+2], dl + 01067 49 83 c6 03 add r14, 3 + +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + + 0106b 45 85 d2 test r10d, r10d + 0106e 74 38 je SHORT $LN103@stbi__bmp_ + +; 4924 : if (shift < 0) + + 01070 8b 54 24 30 mov edx, DWORD PTR ashift$1$[rsp] + +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + + 01074 41 23 c2 and eax, r10d + +; 4924 : if (shift < 0) + + 01077 85 d2 test edx, edx + 01079 79 0b jns SHORT $LN211@stbi__bmp_ + +; 4925 : v <<= -shift; + + 0107b 8b 8c 24 84 00 + 00 00 mov ecx, DWORD PTR tv4028[rsp] + 01082 d3 e0 shl eax, cl + 01084 eb 04 jmp SHORT $LN212@stbi__bmp_ +$LN211@stbi__bmp_: + +; 4926 : else +; 4927 : v >>= shift; + + 01086 8b ca mov ecx, edx + 01088 d3 e8 shr eax, cl +$LN212@stbi__bmp_: + +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); + + 0108a 8b 8c 24 88 00 + 00 00 mov ecx, DWORD PTR tv4027[rsp] + 01091 d3 e8 shr eax, cl + +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + + 01093 41 0f af 84 b9 + 00 00 00 00 imul eax, DWORD PTR ?mul_table@?1??stbi__shiftsigned@@9@9[r9+rdi*4] + 0109c 41 8b 8c b9 00 + 00 00 00 mov ecx, DWORD PTR ?shift_table@?1??stbi__shiftsigned@@9@9[r9+rdi*4] + 010a4 d3 f8 sar eax, cl + +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + + 010a6 eb 05 jmp SHORT $LN104@stbi__bmp_ +$LN103@stbi__bmp_: + 010a8 b8 ff 00 00 00 mov eax, 255 ; 000000ffH +$LN104@stbi__bmp_: + +; 5229 : all_a |= a; + + 010ad 09 44 24 38 or DWORD PTR all_a$1$[rsp], eax + +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); + + 010b1 83 fd 04 cmp ebp, 4 + 010b4 75 09 jne SHORT $LN23@stbi__bmp_ + 010b6 41 ff c4 inc r12d + 010b9 41 88 06 mov BYTE PTR [r14], al + 010bc 49 ff c6 inc r14 +$LN23@stbi__bmp_: + +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { + + 010bf 41 ff c7 inc r15d + 010c2 44 3b 3b cmp r15d, DWORD PTR [rbx] + 010c5 0f 8c a5 fe ff + ff jl $LL25@stbi__bmp_ + 010cb 48 8b b4 24 90 + 00 00 00 mov rsi, QWORD PTR out$1$[rsp] + 010d3 4c 8b 6c 24 58 mov r13, QWORD PTR $T22[rsp] +$LN526@stbi__bmp_: + +; 1107 : if (n == 0) return; // already there! + + 010d8 44 8b 94 24 48 + 05 00 00 mov r10d, DWORD PTR j$3$[rsp] + 010e0 44 8b 4c 24 34 mov r9d, DWORD PTR pad$2$[rsp] +$LN24@stbi__bmp_: + 010e5 45 85 c9 test r9d, r9d + 010e8 74 4b je SHORT $LN17@stbi__bmp_ + +; 1111 : } +; 1112 : if (s->io.read) { + + 010ea 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 010ef 74 3a je SHORT $LN360@stbi__bmp_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 010f1 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 010f7 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 010fd 41 3b c9 cmp ecx, r9d + 01100 7d 29 jge SHORT $LN360@stbi__bmp_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 01102 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 01109 41 8b d1 mov edx, r9d + 0110c 2b d1 sub edx, ecx + 0110e 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 01115 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 01119 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 0111c 44 8b 4c 24 34 mov r9d, DWORD PTR pad$2$[rsp] + 01121 44 8b 94 24 48 + 05 00 00 mov r10d, DWORD PTR j$3$[rsp] + 01129 eb 0a jmp SHORT $LN17@stbi__bmp_ +$LN360@stbi__bmp_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 0112b 41 8b c1 mov eax, r9d + 0112e 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax +$LN17@stbi__bmp_: + +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { + + 01135 8b 43 04 mov eax, DWORD PTR [rbx+4] + 01138 41 ff c2 inc r10d + 0113b 48 8b bc 24 98 + 00 00 00 mov rdi, QWORD PTR tv4023[rsp] + 01143 44 89 94 24 48 + 05 00 00 mov DWORD PTR j$3$[rsp], r10d + 0114b 44 3b d0 cmp r10d, eax + 0114e 0f 8c 71 fc ff + ff jl $LL19@stbi__bmp_ +$LN18@stbi__bmp_: + +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) + + 01154 83 fd 04 cmp ebp, 4 + 01157 75 22 jne SHORT $LN27@stbi__bmp_ + 01159 83 7c 24 38 00 cmp DWORD PTR all_a$1$[rsp], 0 + 0115e 75 1b jne SHORT $LN27@stbi__bmp_ + +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) + + 01160 0f af 03 imul eax, DWORD PTR [rbx] + 01163 8d 04 85 ff ff + ff ff lea eax, DWORD PTR [rax*4-1] + 0116a 48 63 c8 movsxd rcx, eax + 0116d 85 c0 test eax, eax + 0116f 78 0a js SHORT $LN27@stbi__bmp_ +$LL28@stbi__bmp_: + +; 5240 : out[i] = 255; + + 01171 c6 04 31 ff mov BYTE PTR [rcx+rsi], 255 ; 000000ffH + 01175 48 83 e9 04 sub rcx, 4 + 01179 79 f6 jns SHORT $LL28@stbi__bmp_ +$LN27@stbi__bmp_: + +; 5241 : +; 5242 : if (flip_vertically) { + + 0117b 83 bc 24 8c 00 + 00 00 00 cmp DWORD PTR tv4126[rsp], 0 + 01183 0f 8e 7b 00 00 + 00 jle $LN30@stbi__bmp_ + +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { + + 01189 8b 53 04 mov edx, DWORD PTR [rbx+4] + 0118c 45 33 c0 xor r8d, r8d + 0118f 45 8b d0 mov r10d, r8d + 01192 f7 c2 fe ff ff + ff test edx, -2 + 01198 7e 6a jle SHORT $LN30@stbi__bmp_ + 0119a 66 0f 1f 44 00 + 00 npad 6 +$LL31@stbi__bmp_: + +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; + + 011a0 8b 0b mov ecx, DWORD PTR [rbx] + +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; + + 011a2 41 2b d2 sub edx, r10d + 011a5 ff ca dec edx + 011a7 44 8b c9 mov r9d, ecx + 011aa 0f af d1 imul edx, ecx + 011ad 45 0f af ca imul r9d, r10d + +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { + + 011b1 0f af cd imul ecx, ebp + 011b4 0f af d5 imul edx, ebp + 011b7 44 0f af cd imul r9d, ebp + 011bb 48 03 d6 add rdx, rsi + 011be 4c 03 ce add r9, rsi + 011c1 85 c9 test ecx, ecx + 011c3 7e 2a jle SHORT $LN29@stbi__bmp_ + +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; + + 011c5 4c 2b ca sub r9, rdx + 011c8 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL34@stbi__bmp_: + +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; + + 011d0 0f b6 02 movzx eax, BYTE PTR [rdx] + 011d3 41 ff c0 inc r8d + 011d6 42 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+r9] + 011db 42 88 04 0a mov BYTE PTR [rdx+r9], al + 011df 8b c5 mov eax, ebp + 011e1 88 0a mov BYTE PTR [rdx], cl + 011e3 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 011e7 0f af 03 imul eax, DWORD PTR [rbx] + 011ea 44 3b c0 cmp r8d, eax + 011ed 7c e1 jl SHORT $LL34@stbi__bmp_ +$LN29@stbi__bmp_: + +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { + + 011ef 8b 53 04 mov edx, DWORD PTR [rbx+4] + 011f2 41 ff c2 inc r10d + 011f5 8b c2 mov eax, edx + 011f7 41 b8 00 00 00 + 00 mov r8d, 0 + 011fd d1 f8 sar eax, 1 + 011ff 44 3b d0 cmp r10d, eax + 01202 7c 9c jl SHORT $LL31@stbi__bmp_ +$LN30@stbi__bmp_: + +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { + + 01204 44 8b 84 24 40 + 05 00 00 mov r8d, DWORD PTR req_comp$[rsp] + 0120c 45 85 c0 test r8d, r8d + 0120f 74 25 je SHORT $LN94@stbi__bmp_ + 01211 44 3b c5 cmp r8d, ebp + 01214 74 20 je SHORT $LN94@stbi__bmp_ + +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + + 01216 8b 43 04 mov eax, DWORD PTR [rbx+4] + 01219 8b d5 mov edx, ebp + 0121b 44 8b 0b mov r9d, DWORD PTR [rbx] + 0121e 48 8b ce mov rcx, rsi + 01221 89 44 24 20 mov DWORD PTR [rsp+32], eax + 01225 e8 00 00 00 00 call stbi__convert_format + 0122a 48 8b f0 mov rsi, rax + +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure + + 0122d 48 85 c0 test rax, rax + 01230 0f 84 b3 00 00 + 00 je $LN373@stbi__bmp_ +$LN94@stbi__bmp_: + +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; + + 01236 8b 03 mov eax, DWORD PTR [rbx] + 01238 48 8b 8c 24 28 + 05 00 00 mov rcx, QWORD PTR x$[rsp] + 01240 89 01 mov DWORD PTR [rcx], eax + +; 5259 : *y = s->img_y; + + 01242 48 8b 8c 24 30 + 05 00 00 mov rcx, QWORD PTR y$[rsp] + 0124a 8b 43 04 mov eax, DWORD PTR [rbx+4] + 0124d 89 01 mov DWORD PTR [rcx], eax + +; 5260 : if (comp) *comp = s->img_n; + + 0124f 48 8b 8c 24 38 + 05 00 00 mov rcx, QWORD PTR comp$[rsp] + 01257 48 85 c9 test rcx, rcx + 0125a 74 05 je SHORT $LN95@stbi__bmp_ + 0125c 8b 43 08 mov eax, DWORD PTR [rbx+8] + 0125f 89 01 mov DWORD PTR [rcx], eax +$LN95@stbi__bmp_: + +; 5261 : return out; + + 01261 48 8b c6 mov rax, rsi + 01264 e9 82 00 00 00 jmp $LN1@stbi__bmp_ +$LN86@stbi__bmp_: + +; 5262 : } + + 01269 48 8b ce mov rcx, rsi + 0126c ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 01272 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 01278 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 01281 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 01285 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09DAEBACAB@bad?5masks@ + 0128c eb 52 jmp SHORT $LN528@stbi__bmp_ +$LN355@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 0128e 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 01294 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0129d 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 012a1 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); + + 012a8 eb 36 jmp SHORT $LN528@stbi__bmp_ +$LN47@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 012aa 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 012b0 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 012b9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 012bd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0L@JDPIFELH@bad?5offset@ + +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); + + 012c4 eb 1a jmp SHORT $LN528@stbi__bmp_ +$LN44@stbi__bmp_: + +; 431 : stbi__g_failure_reason = str; + + 012c6 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 012cc 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 012d5 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 012d9 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0L@PJHPAMCH@bad?5header@ +$LN528@stbi__bmp_: + +; 5262 : } + + 012e0 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 012e5 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN373@stbi__bmp_: + 012e9 33 c0 xor eax, eax +$LN1@stbi__bmp_: + 012eb 48 8b 9c 24 20 + 05 00 00 mov rbx, QWORD PTR [rsp+1312] + 012f3 48 81 c4 e0 04 + 00 00 add rsp, 1248 ; 000004e0H + 012fa 41 5f pop r15 + 012fc 41 5e pop r14 + 012fe 41 5d pop r13 + 01300 41 5c pop r12 + 01302 5f pop rdi + 01303 5e pop rsi + 01304 5d pop rbp + 01305 c3 ret 0 +stbi__bmp_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__tga_get_comp +_TEXT SEGMENT +bits_per_pixel$ = 8 +is_grey$ = 16 +is_rgb16$ = 24 +stbi__tga_get_comp PROC ; COMDAT + +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; + + 00000 4d 85 c0 test r8, r8 + 00003 74 07 je SHORT $LN4@stbi__tga_ + 00005 41 c7 00 00 00 + 00 00 mov DWORD PTR [r8], 0 +$LN4@stbi__tga_: + +; 5273 : switch (bits_per_pixel) { + + 0000c 44 8b c9 mov r9d, ecx + 0000f 41 83 e9 08 sub r9d, 8 + 00013 74 43 je SHORT $LN5@stbi__tga_ + 00015 41 83 e9 07 sub r9d, 7 + 00019 74 2b je SHORT $LN7@stbi__tga_ + 0001b 41 83 e9 01 sub r9d, 1 + 0001f 74 1b je SHORT $LN6@stbi__tga_ + 00021 41 83 e9 08 sub r9d, 8 + 00025 74 09 je SHORT $LN10@stbi__tga_ + 00027 41 83 f9 08 cmp r9d, 8 + 0002b 74 03 je SHORT $LN10@stbi__tga_ + +; 5281 : default: return 0; + + 0002d 33 c0 xor eax, eax + +; 5282 : } +; 5283 : } + + 0002f c3 ret 0 +$LN10@stbi__tga_: + +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; + + 00030 8b c1 mov eax, ecx + 00032 99 cdq + 00033 83 e2 07 and edx, 7 + 00036 03 c2 add eax, edx + 00038 c1 f8 03 sar eax, 3 + +; 5282 : } +; 5283 : } + + 0003b c3 ret 0 +$LN6@stbi__tga_: + +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; + + 0003c 85 d2 test edx, edx + 0003e 74 06 je SHORT $LN7@stbi__tga_ + 00040 b8 02 00 00 00 mov eax, 2 + +; 5282 : } +; 5283 : } + + 00045 c3 ret 0 +$LN7@stbi__tga_: + +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; + + 00046 4d 85 c0 test r8, r8 + 00049 74 07 je SHORT $LN9@stbi__tga_ + 0004b 41 c7 00 01 00 + 00 00 mov DWORD PTR [r8], 1 +$LN9@stbi__tga_: + +; 5278 : return STBI_rgb; + + 00052 b8 03 00 00 00 mov eax, 3 + +; 5282 : } +; 5283 : } + + 00057 c3 ret 0 +$LN5@stbi__tga_: + +; 5274 : case 8: return STBI_grey; + + 00058 b8 01 00 00 00 mov eax, 1 + +; 5282 : } +; 5283 : } + + 0005d c3 ret 0 +stbi__tga_get_comp ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__tga_test +_TEXT SEGMENT +s$ = 64 +stbi__tga_test PROC ; COMDAT + +; 5353 : { + + 00000 40 53 push rbx + 00002 57 push rdi + 00003 41 56 push r14 + 00005 48 83 ec 20 sub rsp, 32 ; 00000020H + 00009 48 8b d9 mov rbx, rcx + +; 5354 : int res = 0; + + 0000c 45 33 f6 xor r14d, r14d + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000f 48 8b 89 c0 00 + 00 00 mov rcx, QWORD PTR [rcx+192] + 00016 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 0001d 73 0c jae SHORT $LN14@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 0001f 48 ff c1 inc rcx + 00022 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00029 eb 1c jmp SHORT $LN15@stbi__tga_ +$LN14@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 0002b 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 0002f 74 16 je SHORT $LN15@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00031 48 8b cb mov rcx, rbx + 00034 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00039 48 ff 83 c0 00 + 00 00 inc QWORD PTR [rbx+192] + 00040 48 8b 8b c0 00 + 00 00 mov rcx, QWORD PTR [rbx+192] +$LN15@stbi__tga_: + 00047 48 89 6c 24 40 mov QWORD PTR [rsp+64], rbp + 0004c 48 89 74 24 48 mov QWORD PTR [rsp+72], rsi + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00051 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 00058 73 08 jae SHORT $LN18@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 0005a 0f b6 29 movzx ebp, BYTE PTR [rcx] + 0005d 48 ff c1 inc rcx + 00060 eb 1c jmp SHORT $LN91@stbi__tga_ +$LN18@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 00062 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 00066 74 2d je SHORT $LN19@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00068 48 8b cb mov rcx, rbx + 0006b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00070 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00077 0f b6 28 movzx ebp, BYTE PTR [rax] + 0007a 48 8d 48 01 lea rcx, QWORD PTR [rax+1] +$LN91@stbi__tga_: + +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type + + 0007e 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00085 40 0f b6 f5 movzx esi, bpl + +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed + + 00089 40 80 fd 01 cmp bpl, 1 + 0008d 0f 87 f0 01 00 + 00 ja $errorEnd$95 + 00093 eb 07 jmp SHORT $LN54@stbi__tga_ +$LN19@stbi__tga_: + +; 1083 : return 0; + + 00095 40 32 ed xor bpl, bpl + 00098 40 0f b6 f5 movzx esi, bpl +$LN54@stbi__tga_: + 0009c 4c 89 7c 24 50 mov QWORD PTR [rsp+80], r15 + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000a1 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 000a8 73 08 jae SHORT $LN22@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 000aa 0f b6 11 movzx edx, BYTE PTR [rcx] + 000ad 48 ff c1 inc rcx + 000b0 eb 20 jmp SHORT $LN21@stbi__tga_ +$LN22@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 000b2 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 000b6 74 18 je SHORT $LN23@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 000b8 48 8b cb mov rcx, rbx + 000bb e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000c0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000c7 0f b6 10 movzx edx, BYTE PTR [rax] + 000ca 48 8d 48 01 lea rcx, QWORD PTR [rax+1] + 000ce eb 02 jmp SHORT $LN21@stbi__tga_ +$LN23@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 000d0 32 d2 xor dl, dl +$LN21@stbi__tga_: + +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image + + 000d2 41 bf 00 81 01 + 01 mov r15d, 16875776 ; 01018100H + 000d8 40 80 fe 01 cmp sil, 1 + 000dc 0f 85 d3 00 00 + 00 jne $LN3@stbi__tga_ + +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + + 000e2 fe ca dec dl + 000e4 f6 c2 f7 test dl, 247 ; 000000f7H + 000e7 0f 85 91 01 00 + 00 jne $LN90@stbi__tga_ + +; 1112 : if (s->io.read) { + + 000ed be 04 00 00 00 mov esi, 4 + 000f2 4c 39 73 10 cmp QWORD PTR [rbx+16], r14 + 000f6 74 2b je SHORT $LN29@stbi__tga_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 000f8 44 8b 83 c8 00 + 00 00 mov r8d, DWORD PTR [rbx+200] + 000ff 44 2b c1 sub r8d, ecx + +; 1114 : if (blen < n) { + + 00102 44 3b c6 cmp r8d, esi + 00105 7d 1c jge SHORT $LN29@stbi__tga_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00107 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0010e 8b d6 mov edx, esi + 00110 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 00114 41 2b d0 sub edx, r8d + 00117 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0011e ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 00121 eb 0b jmp SHORT $LN25@stbi__tga_ +$LN29@stbi__tga_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00123 48 8d 41 04 lea rax, QWORD PTR [rcx+4] + 00127 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax +$LN25@stbi__tga_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0012e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00135 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0013c 73 09 jae SHORT $LN32@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 0013e 4c 8d 40 01 lea r8, QWORD PTR [rax+1] + 00142 49 8b d0 mov rdx, r8 + 00145 eb 20 jmp SHORT $LN92@stbi__tga_ +$LN32@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 00147 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 0014b 0f 84 2d 01 00 + 00 je $LN90@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00151 48 8b cb mov rcx, rbx + 00154 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00159 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00160 48 8d 50 01 lea rdx, QWORD PTR [rax+1] + 00164 44 8b c2 mov r8d, edx +$LN92@stbi__tga_: + +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; + + 00167 0f b6 08 movzx ecx, BYTE PTR [rax] + 0016a 80 f9 18 cmp cl, 24 + 0016d 77 09 ja SHORT $LN59@stbi__tga_ + 0016f 0f b6 c1 movzx eax, cl + 00172 41 0f a3 c7 bt r15d, eax + 00176 72 09 jb SHORT $LN6@stbi__tga_ +$LN59@stbi__tga_: + 00178 80 f9 20 cmp cl, 32 ; 00000020H + 0017b 0f 85 fd 00 00 + 00 jne $LN90@stbi__tga_ +$LN6@stbi__tga_: + +; 1112 : if (s->io.read) { + + 00181 4c 39 73 10 cmp QWORD PTR [rbx+16], r14 + 00185 74 28 je SHORT $LN39@stbi__tga_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00187 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 0018d 41 2b c8 sub ecx, r8d + +; 1114 : if (blen < n) { + + 00190 3b ce cmp ecx, esi + 00192 7d 1b jge SHORT $LN39@stbi__tga_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00194 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0019b 2b f1 sub esi, ecx + 0019d 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 001a1 8b d6 mov edx, esi + 001a3 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001aa ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 001ad eb 5b jmp SHORT $LN41@stbi__tga_ +$LN39@stbi__tga_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 001af 48 8d 42 04 lea rax, QWORD PTR [rdx+4] + +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } + + 001b3 eb 4e jmp SHORT $LN93@stbi__tga_ +$LN3@stbi__tga_: + +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE + + 001b5 8d 42 fe lea eax, DWORD PTR [rdx-2] + 001b8 a8 f6 test al, 246 ; 000000f6H + 001ba 75 05 jne SHORT $LN61@stbi__tga_ + 001bc 80 fa 0b cmp dl, 11 + 001bf 75 09 jne SHORT $LN7@stbi__tga_ +$LN61@stbi__tga_: + 001c1 80 fa 0b cmp dl, 11 + 001c4 0f 85 b4 00 00 + 00 jne $LN90@stbi__tga_ +$LN7@stbi__tga_: + +; 1112 : if (s->io.read) { + + 001ca 4c 39 73 10 cmp QWORD PTR [rbx+16], r14 + 001ce 74 2f je SHORT $LN45@stbi__tga_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 001d0 44 8b 83 c8 00 + 00 00 mov r8d, DWORD PTR [rbx+200] + 001d7 44 2b c1 sub r8d, ecx + +; 1114 : if (blen < n) { + + 001da 41 83 f8 09 cmp r8d, 9 + 001de 7d 1f jge SHORT $LN45@stbi__tga_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 001e0 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 001e7 ba 09 00 00 00 mov edx, 9 + 001ec 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 001f0 41 2b d0 sub edx, r8d + 001f3 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001fa ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 001fd eb 0b jmp SHORT $LN41@stbi__tga_ +$LN45@stbi__tga_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 001ff 48 8d 41 09 lea rax, QWORD PTR [rcx+9] +$LN93@stbi__tga_: + +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width + + 00203 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax +$LN41@stbi__tga_: + 0020a 48 8b cb mov rcx, rbx + 0020d e8 00 00 00 00 call stbi__get16le + 00212 83 f8 01 cmp eax, 1 + 00215 7c 67 jl SHORT $LN90@stbi__tga_ + +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height + + 00217 48 8b cb mov rcx, rbx + 0021a e8 00 00 00 00 call stbi__get16le + 0021f 83 f8 01 cmp eax, 1 + 00222 7c 5a jl SHORT $LN90@stbi__tga_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00224 48 8b 8b c0 00 + 00 00 mov rcx, QWORD PTR [rbx+192] + 0022b 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 00232 73 05 jae SHORT $LN48@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 00234 0f b6 09 movzx ecx, BYTE PTR [rcx] + 00237 eb 1c jmp SHORT $LN47@stbi__tga_ +$LN48@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 00239 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 0023d 74 14 je SHORT $LN49@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 0023f 48 8b cb mov rcx, rbx + 00242 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00247 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0024e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00251 eb 02 jmp SHORT $LN47@stbi__tga_ +$LN49@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 00253 32 c9 xor cl, cl +$LN47@stbi__tga_: + +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index + + 00255 40 80 fd 01 cmp bpl, 1 + 00259 75 0a jne SHORT $LN10@stbi__tga_ + 0025b 80 f9 08 cmp cl, 8 + 0025e 74 18 je SHORT $LN11@stbi__tga_ + 00260 80 f9 10 cmp cl, 16 + 00263 75 19 jne SHORT $LN90@stbi__tga_ +$LN10@stbi__tga_: + +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; + + 00265 80 f9 18 cmp cl, 24 + 00268 77 09 ja SHORT $LN63@stbi__tga_ + 0026a 0f b6 c1 movzx eax, cl + 0026d 41 0f a3 c7 bt r15d, eax + 00271 72 05 jb SHORT $LN11@stbi__tga_ +$LN63@stbi__tga_: + 00273 80 f9 20 cmp cl, 32 ; 00000020H + 00276 75 06 jne SHORT $LN90@stbi__tga_ +$LN11@stbi__tga_: + +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + + 00278 41 be 01 00 00 + 00 mov r14d, 1 +$LN90@stbi__tga_: + 0027e 4c 8b 7c 24 50 mov r15, QWORD PTR [rsp+80] +$errorEnd$95: + +; 342 : s->img_buffer = s->img_buffer_original; + + 00283 48 8b 8b d0 00 + 00 00 mov rcx, QWORD PTR [rbx+208] + +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; + + 0028a 41 8b c6 mov eax, r14d + 0028d 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] + 00292 48 8b 6c 24 40 mov rbp, QWORD PTR [rsp+64] + +; 342 : s->img_buffer = s->img_buffer_original; + + 00297 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0029e 48 8b 8b d8 00 + 00 00 mov rcx, QWORD PTR [rbx+216] + 002a5 48 89 8b c8 00 + 00 00 mov QWORD PTR [rbx+200], rcx + +; 5382 : } + + 002ac 48 83 c4 20 add rsp, 32 ; 00000020H + 002b0 41 5e pop r14 + 002b2 5f pop rdi + 002b3 5b pop rbx + 002b4 c3 ret 0 +stbi__tga_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__tga_read_rgb16 +_TEXT SEGMENT +s$ = 48 +out$ = 56 +stbi__tga_read_rgb16 PROC ; COMDAT + +; 5386 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + 00006 48 8b da mov rbx, rdx + +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + + 00009 e8 00 00 00 00 call stbi__get16le + +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; + + 0000e 44 0f b7 c0 movzx r8d, ax + 00012 41 8b c0 mov eax, r8d + 00015 c1 e8 0a shr eax, 10 + 00018 83 e0 1f and eax, 31 + +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); + + 0001b 69 c8 ff 00 00 + 00 imul ecx, eax, 255 ; 000000ffH + 00021 b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 00026 f7 e9 imul ecx + 00028 03 d1 add edx, ecx + 0002a c1 fa 04 sar edx, 4 + 0002d 8b c2 mov eax, edx + 0002f c1 e8 1f shr eax, 31 + 00032 03 d0 add edx, eax + 00034 41 8b c0 mov eax, r8d + 00037 c1 e8 05 shr eax, 5 + 0003a 41 83 e0 1f and r8d, 31 + 0003e 83 e0 1f and eax, 31 + 00041 88 13 mov BYTE PTR [rbx], dl + +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); + + 00043 69 c8 ff 00 00 + 00 imul ecx, eax, 255 ; 000000ffH + 00049 b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 0004e f7 e9 imul ecx + +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); + + 00050 b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 00055 03 d1 add edx, ecx + 00057 c1 fa 04 sar edx, 4 + 0005a 8b ca mov ecx, edx + 0005c c1 e9 1f shr ecx, 31 + 0005f 03 d1 add edx, ecx + 00061 41 69 c8 ff 00 + 00 00 imul ecx, r8d, 255 ; 000000ffH + 00068 88 53 01 mov BYTE PTR [rbx+1], dl + 0006b f7 e9 imul ecx + 0006d 03 d1 add edx, ecx + 0006f c1 fa 04 sar edx, 4 + 00072 8b c2 mov eax, edx + 00074 c1 e8 1f shr eax, 31 + 00077 03 d0 add edx, eax + 00079 88 53 02 mov BYTE PTR [rbx+2], dl + +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } + + 0007c 48 83 c4 20 add rsp, 32 ; 00000020H + 00080 5b pop rbx + 00081 c3 ret 0 +stbi__tga_read_rgb16 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__tga_load +_TEXT SEGMENT +$T18 = 48 +tga_comp$4$ = 52 +tga_offset$1$ = 52 +$T19 = 56 +tga_rgb16$4$ = 60 +tga_image_type$1$ = 60 +tga_width$1$ = 64 +tv2782 = 68 +y$GSCopy$1$ = 72 +tga_data$1$ = 72 +tga_palette$1$ = 80 +tga_palette_len$1$ = 88 +RLE_repeating$1$ = 92 +tga_bits_per_pixel$1$ = 96 +tga_inverted$1$ = 100 +x$GSCopy$1$ = 104 +tv2753 = 104 +req_comp$GSCopy$1$ = 112 +comp$GSCopy$1$ = 120 +tv2766 = 120 +raw_data$ = 128 +__$ArrayPad$ = 136 +s$ = 224 +x$ = 232 +y$ = 240 +comp$ = 248 +req_comp$ = 256 +ri$dead$ = 264 +stbi__tga_load PROC ; COMDAT + +; 5405 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 54 push r12 + 00007 41 55 push r13 + 00009 41 56 push r14 + 0000b 41 57 push r15 + 0000d 48 81 ec 98 00 + 00 00 sub rsp, 152 ; 00000098H + 00014 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0001b 48 33 c4 xor rax, rsp + 0001e 48 89 84 24 88 + 00 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00026 8b 84 24 00 01 + 00 00 mov eax, DWORD PTR req_comp$[rsp] + 0002d 48 8b d9 mov rbx, rcx + 00030 89 44 24 70 mov DWORD PTR req_comp$GSCopy$1$[rsp], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00034 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 5405 : { + + 0003b 4c 89 4c 24 78 mov QWORD PTR comp$GSCopy$1$[rsp], r9 + 00040 4c 89 44 24 48 mov QWORD PTR y$GSCopy$1$[rsp], r8 + 00045 48 89 54 24 68 mov QWORD PTR x$GSCopy$1$[rsp], rdx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0004a 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 00051 73 0f jae SHORT $LN67@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 00053 0f b6 10 movzx edx, BYTE PTR [rax] + 00056 48 ff c0 inc rax + 00059 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + 00060 eb 23 jmp SHORT $LN374@stbi__tga_ +$LN67@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 00062 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00066 74 1b je SHORT $LN68@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00068 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0006d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00074 0f b6 10 movzx edx, BYTE PTR [rax] + 00077 48 ff c0 inc rax + 0007a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00081 eb 02 jmp SHORT $LN374@stbi__tga_ +$LN68@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 00083 32 d2 xor dl, dl +$LN374@stbi__tga_: + +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); + + 00085 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 0008a 4c 8b c3 mov r8, rbx + 0008d 48 8d 34 19 lea rsi, QWORD PTR [rcx+rbx] + 00091 0f b6 ca movzx ecx, dl + 00094 89 4c 24 34 mov DWORD PTR tga_offset$1$[rsp], ecx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00098 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0009f 73 13 jae SHORT $LN71@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 000a1 0f b6 08 movzx ecx, BYTE PTR [rax] + 000a4 48 ff c0 inc rax + 000a7 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000ae 88 4c 24 30 mov BYTE PTR $T18[rsp], cl + 000b2 eb 2c jmp SHORT $LN70@stbi__tga_ +$LN71@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 000b4 83 3e 00 cmp DWORD PTR [rsi], 0 + 000b7 74 22 je SHORT $LN72@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 000b9 48 8b cb mov rcx, rbx + 000bc e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000c1 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000c8 0f b6 08 movzx ecx, BYTE PTR [rax] + 000cb 48 ff c0 inc rax + 000ce 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000d5 88 4c 24 30 mov BYTE PTR $T18[rsp], cl + 000d9 eb 05 jmp SHORT $LN70@stbi__tga_ +$LN72@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 000db c6 44 24 30 00 mov BYTE PTR $T18[rsp], 0 +$LN70@stbi__tga_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000e0 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000e7 73 0f jae SHORT $LN75@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 000e9 0f b6 08 movzx ecx, BYTE PTR [rax] + 000ec 48 ff c0 inc rax + 000ef 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000f6 eb 25 jmp SHORT $LN74@stbi__tga_ +$LN75@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 000f8 83 3e 00 cmp DWORD PTR [rsi], 0 + 000fb 74 1e je SHORT $LN76@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 000fd 48 8b cb mov rcx, rbx + 00100 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00105 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0010c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0010f 48 ff c0 inc rax + 00112 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00119 eb 02 jmp SHORT $LN74@stbi__tga_ +$LN76@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 0011b 32 c9 xor cl, cl +$LN74@stbi__tga_: + +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); + + 0011d 0f b6 c1 movzx eax, cl + +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); + + 00120 48 8b cb mov rcx, rbx + 00123 89 44 24 44 mov DWORD PTR tv2782[rsp], eax + 00127 8b e8 mov ebp, eax + 00129 89 44 24 3c mov DWORD PTR tga_image_type$1$[rsp], eax + 0012d e8 00 00 00 00 call stbi__get16le + +; 5412 : int tga_palette_len = stbi__get16le(s); + + 00132 48 8b cb mov rcx, rbx + 00135 4c 63 e0 movsxd r12, eax + 00138 e8 00 00 00 00 call stbi__get16le + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0013d 48 8b 8b c0 00 + 00 00 mov rcx, QWORD PTR [rbx+192] + +; 5412 : int tga_palette_len = stbi__get16le(s); + + 00144 89 44 24 58 mov DWORD PTR tga_palette_len$1$[rsp], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00148 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 0014f 73 0f jae SHORT $LN79@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 00151 0f b6 11 movzx edx, BYTE PTR [rcx] + 00154 48 ff c1 inc rcx + 00157 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 0015e eb 25 jmp SHORT $LN78@stbi__tga_ +$LN79@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 00160 83 3e 00 cmp DWORD PTR [rsi], 0 + 00163 74 1e je SHORT $LN80@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00165 48 8b cb mov rcx, rbx + 00168 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0016d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00174 0f b6 10 movzx edx, BYTE PTR [rax] + 00177 48 ff c0 inc rax + 0017a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00181 eb 02 jmp SHORT $LN78@stbi__tga_ +$LN80@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 00183 32 d2 xor dl, dl +$LN78@stbi__tga_: + +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); + + 00185 48 8b cb mov rcx, rbx + 00188 0f b6 fa movzx edi, dl + 0018b e8 00 00 00 00 call stbi__get16le + +; 5415 : int tga_y_origin = stbi__get16le(s); + + 00190 48 8b cb mov rcx, rbx + 00193 e8 00 00 00 00 call stbi__get16le + +; 5416 : int tga_width = stbi__get16le(s); + + 00198 48 8b cb mov rcx, rbx + 0019b e8 00 00 00 00 call stbi__get16le + +; 5417 : int tga_height = stbi__get16le(s); + + 001a0 48 8b cb mov rcx, rbx + 001a3 89 44 24 40 mov DWORD PTR tga_width$1$[rsp], eax + 001a7 e8 00 00 00 00 call stbi__get16le + 001ac 89 44 24 38 mov DWORD PTR $T19[rsp], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001b0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001b7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 001be 73 0f jae SHORT $LN83@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 001c0 0f b6 08 movzx ecx, BYTE PTR [rax] + 001c3 48 ff c0 inc rax + 001c6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001cd eb 25 jmp SHORT $LN82@stbi__tga_ +$LN83@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 001cf 83 3e 00 cmp DWORD PTR [rsi], 0 + 001d2 74 1e je SHORT $LN84@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 001d4 48 8b cb mov rcx, rbx + 001d7 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 001dc 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001e3 0f b6 08 movzx ecx, BYTE PTR [rax] + 001e6 48 ff c0 inc rax + 001e9 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001f0 eb 02 jmp SHORT $LN82@stbi__tga_ +$LN84@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 001f2 32 c9 xor cl, cl +$LN82@stbi__tga_: + +; 5418 : int tga_bits_per_pixel = stbi__get8(s); + + 001f4 0f b6 d1 movzx edx, cl + 001f7 89 54 24 60 mov DWORD PTR tga_bits_per_pixel$1$[rsp], edx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001fb 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00202 73 0f jae SHORT $LN87@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 00204 0f b6 08 movzx ecx, BYTE PTR [rax] + 00207 48 ff c0 inc rax + 0020a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00211 eb 29 jmp SHORT $LN86@stbi__tga_ +$LN87@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 00213 83 3e 00 cmp DWORD PTR [rsi], 0 + 00216 74 22 je SHORT $LN88@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00218 48 8b cb mov rcx, rbx + 0021b e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00220 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00227 8b 54 24 60 mov edx, DWORD PTR tga_bits_per_pixel$1$[rsp] + 0022b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0022e 48 ff c0 inc rax + 00231 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00238 eb 02 jmp SHORT $LN86@stbi__tga_ +$LN88@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 0023a 32 c9 xor cl, cl +$LN86@stbi__tga_: + +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0023c 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 00240 45 33 f6 xor r14d, r14d + 00243 0f b6 c1 movzx eax, cl + 00246 45 8b fe mov r15d, r14d + 00249 4c 89 74 24 50 mov QWORD PTR tga_palette$1$[rsp], r14 + 0024e 44 89 b4 24 80 + 00 00 00 mov DWORD PTR raw_data$[rsp], r14d + 00256 44 89 74 24 5c mov DWORD PTR RLE_repeating$1$[rsp], r14d + 0025b 45 8d 6e 01 lea r13d, QWORD PTR [r14+1] + 0025f 81 fe 00 00 00 + 01 cmp esi, 16777216 ; 01000000H + 00265 0f 8f c1 07 00 + 00 jg $LN271@stbi__tga_ + +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0026b 44 8b 44 24 40 mov r8d, DWORD PTR tga_width$1$[rsp] + 00270 41 81 f8 00 00 + 00 01 cmp r8d, 16777216 ; 01000000H + 00277 0f 8f af 07 00 + 00 jg $LN271@stbi__tga_ + +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) + + 0027d 83 fd 08 cmp ebp, 8 + 00280 72 07 jb SHORT $LN31@stbi__tga_ + +; 5439 : { +; 5440 : tga_image_type -= 8; + + 00282 83 ed 08 sub ebp, 8 + 00285 89 6c 24 3c mov DWORD PTR tga_image_type$1$[rsp], ebp +$LN31@stbi__tga_: + +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + 00289 c1 e8 05 shr eax, 5 + 0028c 41 8b cd mov ecx, r13d + 0028f 41 23 c5 and eax, r13d + +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + + 00292 41 8b ee mov ebp, r14d + 00295 2b c8 sub ecx, eax + 00297 89 4c 24 64 mov DWORD PTR tga_inverted$1$[rsp], ecx + 0029b 44 38 74 24 30 cmp BYTE PTR $T18[rsp], r14b + 002a0 74 22 je SHORT $LN32@stbi__tga_ + +; 5273 : switch (bits_per_pixel) { + + 002a2 8b cf mov ecx, edi + 002a4 83 e9 08 sub ecx, 8 + 002a7 74 16 je SHORT $LN98@stbi__tga_ + 002a9 83 e9 07 sub ecx, 7 + 002ac 74 67 je SHORT $LN113@stbi__tga_ + 002ae 41 2b cd sub ecx, r13d + 002b1 74 62 je SHORT $LN113@stbi__tga_ + 002b3 83 e9 08 sub ecx, 8 + 002b6 74 29 je SHORT $LN103@stbi__tga_ + 002b8 83 f9 08 cmp ecx, 8 + 002bb 75 2b jne SHORT $LN273@stbi__tga_ + +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; + + 002bd eb 22 jmp SHORT $LN103@stbi__tga_ +$LN98@stbi__tga_: + +; 5274 : case 8: return STBI_grey; + + 002bf 41 8b fd mov edi, r13d + +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + + 002c2 eb 20 jmp SHORT $LN107@stbi__tga_ +$LN32@stbi__tga_: + +; 5273 : switch (bits_per_pixel) { + + 002c4 8b ca mov ecx, edx + 002c6 83 e9 08 sub ecx, 8 + 002c9 74 54 je SHORT $LN111@stbi__tga_ + 002cb 83 e9 07 sub ecx, 7 + 002ce 74 45 je SHORT $LN113@stbi__tga_ + 002d0 41 2b cd sub ecx, r13d + 002d3 74 32 je SHORT $LN112@stbi__tga_ + 002d5 83 e9 08 sub ecx, 8 + 002d8 74 05 je SHORT $LN116@stbi__tga_ + 002da 83 f9 08 cmp ecx, 8 + 002dd 75 09 jne SHORT $LN273@stbi__tga_ +$LN116@stbi__tga_: + +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; + + 002df 8b fa mov edi, edx +$LN103@stbi__tga_: + +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + + 002e1 c1 ef 03 shr edi, 3 +$LN107@stbi__tga_: + 002e4 85 ff test edi, edi + 002e6 75 3a jne SHORT $LN34@stbi__tga_ +$LN273@stbi__tga_: + +; 431 : stbi__g_failure_reason = str; + + 002e8 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 002ee 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 002f7 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 002fb 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@ + +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + 00302 e9 3f 07 00 00 jmp $LN375@stbi__tga_ +$LN112@stbi__tga_: + +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + 00307 83 7c 24 3c 03 cmp DWORD PTR tga_image_type$1$[rsp], 3 + +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; + + 0030c 75 07 jne SHORT $LN113@stbi__tga_ + 0030e bf 02 00 00 00 mov edi, 2 + 00313 eb 0d jmp SHORT $LN34@stbi__tga_ +$LN113@stbi__tga_: + +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; + + 00315 41 8b ed mov ebp, r13d + 00318 bf 03 00 00 00 mov edi, 3 + 0031d eb 03 jmp SHORT $LN34@stbi__tga_ +$LN111@stbi__tga_: + +; 5274 : case 8: return STBI_grey; + + 0031f 41 8b fd mov edi, r13d +$LN34@stbi__tga_: + +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; + + 00322 48 8b 44 24 68 mov rax, QWORD PTR x$GSCopy$1$[rsp] + 00327 44 89 00 mov DWORD PTR [rax], r8d + +; 5454 : *y = tga_height; + + 0032a 48 8b 44 24 48 mov rax, QWORD PTR y$GSCopy$1$[rsp] + 0032f 89 30 mov DWORD PTR [rax], esi + +; 5455 : if (comp) *comp = tga_comp; + + 00331 48 8b 44 24 78 mov rax, QWORD PTR comp$GSCopy$1$[rsp] + 00336 48 85 c0 test rax, rax + 00339 74 02 je SHORT $LN35@stbi__tga_ + 0033b 89 38 mov DWORD PTR [rax], edi +$LN35@stbi__tga_: + +; 467 : if (a < 0 || b < 0) return 0; + + 0033d 45 85 c0 test r8d, r8d + 00340 0f 88 e6 06 00 + 00 js $LN271@stbi__tga_ + 00346 85 f6 test esi, esi + 00348 0f 88 de 06 00 + 00 js $LN271@stbi__tga_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0034e 74 11 je SHORT $LN272@stbi__tga_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00350 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00355 99 cdq + 00356 f7 fe idiv esi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00358 44 3b c0 cmp r8d, eax + 0035b 0f 8f cb 06 00 + 00 jg $LN271@stbi__tga_ +$LN272@stbi__tga_: + 00361 8b ce mov ecx, esi + 00363 41 0f af c8 imul ecx, r8d + +; 467 : if (a < 0 || b < 0) return 0; + + 00367 85 c9 test ecx, ecx + 00369 0f 88 bd 06 00 + 00 js $LN271@stbi__tga_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0036f 33 d2 xor edx, edx + 00371 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00376 f7 f7 div edi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00378 3b c8 cmp ecx, eax + 0037a 0f 8f ac 06 00 + 00 jg $LN271@stbi__tga_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00380 85 f6 test esi, esi + 00382 74 11 je SHORT $LN274@stbi__tga_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00384 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00389 99 cdq + 0038a f7 fe idiv esi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0038c 44 3b c0 cmp r8d, eax + 0038f 0f 8f 7b 06 00 + 00 jg $LN264@stbi__tga_ +$LN274@stbi__tga_: + +; 509 : return stbi__malloc(a * b * c + add); + + 00395 8b c6 mov eax, esi + 00397 0f af c7 imul eax, edi + 0039a 41 0f af c0 imul eax, r8d + 0039e 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 003a1 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 003a7 48 89 44 24 48 mov QWORD PTR tga_data$1$[rsp], rax + 003ac 4c 8b c0 mov r8, rax + +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + 003af 48 85 c0 test rax, rax + 003b2 0f 84 58 06 00 + 00 je $LN264@stbi__tga_ + +; 1107 : if (n == 0) return; // already there! + + 003b8 48 63 54 24 34 movsxd rdx, DWORD PTR tga_offset$1$[rsp] + 003bd 85 d2 test edx, edx + 003bf 74 3b je SHORT $LN167@stbi__tga_ + +; 1111 : } +; 1112 : if (s->io.read) { + + 003c1 4c 39 73 10 cmp QWORD PTR [rbx+16], r14 + 003c5 74 2e je SHORT $LN171@stbi__tga_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 003c7 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 003cd 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 003d3 3b ca cmp ecx, edx + 003d5 7d 1e jge SHORT $LN171@stbi__tga_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 003d7 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 003de 2b d1 sub edx, ecx + 003e0 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 003e4 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003eb ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 003ee 4c 8b 44 24 48 mov r8, QWORD PTR tga_data$1$[rsp] + 003f3 eb 07 jmp SHORT $LN167@stbi__tga_ +$LN171@stbi__tga_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 003f5 48 01 93 c0 00 + 00 00 add QWORD PTR [rbx+192], rdx +$LN167@stbi__tga_: + +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { + + 003fc 44 38 74 24 30 cmp BYTE PTR $T18[rsp], r14b + 00401 0f 85 bc 00 00 + 00 jne $LN263@stbi__tga_ + 00407 8b 54 24 44 mov edx, DWORD PTR tv2782[rsp] + 0040b 44 8b e7 mov r12d, edi + 0040e 89 6c 24 3c mov DWORD PTR tga_rgb16$4$[rsp], ebp + 00412 89 7c 24 34 mov DWORD PTR tga_comp$4$[rsp], edi + 00416 83 fa 08 cmp edx, 8 + 00419 0f 83 58 02 00 + 00 jae $LN284@stbi__tga_ + 0041f 89 6c 24 3c mov DWORD PTR tga_rgb16$4$[rsp], ebp + 00423 89 7c 24 34 mov DWORD PTR tga_comp$4$[rsp], edi + 00427 85 ed test ebp, ebp + 00429 0f 85 48 02 00 + 00 jne $LN284@stbi__tga_ + +; 5467 : for (i = 0; i < tga_height; ++i) { + + 0042f 44 8b ed mov r13d, ebp + 00432 85 f6 test esi, esi + 00434 0f 8e 59 05 00 + 00 jle $LN58@stbi__tga_ + +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; + + 0043a 44 8b ff mov r15d, edi + 0043d 44 0f af 7c 24 + 40 imul r15d, DWORD PTR tga_width$1$[rsp] + 00443 44 39 74 24 64 cmp DWORD PTR tga_inverted$1$[rsp], r14d + 00448 44 8b 74 24 38 mov r14d, DWORD PTR $T19[rsp] + 0044d 74 44 je SHORT $LN62@stbi__tga_ + 0044f 41 8b c7 mov eax, r15d + 00452 f7 d8 neg eax + 00454 4c 63 e0 movsxd r12, eax + 00457 8d 46 ff lea eax, DWORD PTR [rsi-1] + 0045a 0f af c7 imul eax, edi + 0045d 0f af 44 24 40 imul eax, DWORD PTR tga_width$1$[rsp] + 00462 48 63 f0 movsxd rsi, eax + 00465 49 03 f0 add rsi, r8 + 00468 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL4@stbi__tga_: + +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); + + 00470 45 8b c7 mov r8d, r15d + 00473 48 8b d6 mov rdx, rsi + 00476 48 8b cb mov rcx, rbx + 00479 e8 00 00 00 00 call stbi__getn + 0047e 49 03 f4 add rsi, r12 + 00481 49 83 ee 01 sub r14, 1 + 00485 75 e9 jne SHORT $LL4@stbi__tga_ + +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; + + 00487 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 0048b 44 8b e7 mov r12d, edi + 0048e e9 00 05 00 00 jmp $LN58@stbi__tga_ +$LN62@stbi__tga_: + +; 5467 : for (i = 0; i < tga_height; ++i) { + + 00493 4d 63 e7 movsxd r12, r15d + 00496 49 8b f0 mov rsi, r8 + 00499 0f 1f 80 00 00 + 00 00 npad 7 +$LL234@stbi__tga_: + +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); + + 004a0 45 8b c7 mov r8d, r15d + 004a3 48 8b d6 mov rdx, rsi + 004a6 48 8b cb mov rcx, rbx + 004a9 e8 00 00 00 00 call stbi__getn + 004ae 49 03 f4 add rsi, r12 + 004b1 49 83 ee 01 sub r14, 1 + 004b5 75 e9 jne SHORT $LL234@stbi__tga_ + +; 5471 : } +; 5472 : } + + 004b7 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 004bb 44 8b e7 mov r12d, edi + 004be e9 d0 04 00 00 jmp $LN58@stbi__tga_ +$LN263@stbi__tga_: + +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ + + 004c3 44 39 74 24 58 cmp DWORD PTR tga_palette_len$1$[rsp], r14d + 004c8 75 28 jne SHORT $LN41@stbi__tga_ + +; 5478 : STBI_FREE(tga_data); + + 004ca 49 8b c8 mov rcx, r8 +$LN376@stbi__tga_: + +; 5613 : } + + 004cd ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 004d3 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 004d9 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 004e2 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 004e6 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0M@ILLOCNCO@bad?5palette@ + 004ed e9 54 05 00 00 jmp $LN375@stbi__tga_ +$LN41@stbi__tga_: + +; 1107 : if (n == 0) return; // already there! + + 004f2 45 85 e4 test r12d, r12d + 004f5 74 4d je SHORT $LN189@stbi__tga_ + +; 1108 : if (n < 0) { + + 004f7 79 10 jns SHORT $LN191@stbi__tga_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 004f9 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00500 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 1110 : return; + + 00507 eb 3b jmp SHORT $LN189@stbi__tga_ +$LN191@stbi__tga_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 00509 4c 39 73 10 cmp QWORD PTR [rbx+16], r14 + 0050d 74 2e je SHORT $LN193@stbi__tga_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 0050f 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 00515 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 0051b 41 3b cc cmp ecx, r12d + 0051e 7d 1d jge SHORT $LN193@stbi__tga_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00520 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00527 44 2b e1 sub r12d, ecx + 0052a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0052e 41 8b d4 mov edx, r12d + 00531 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00538 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 0053b eb 07 jmp SHORT $LN189@stbi__tga_ +$LN193@stbi__tga_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 0053d 4c 01 a3 c0 00 + 00 00 add QWORD PTR [rbx+192], r12 +$LN189@stbi__tga_: + +; 467 : if (a < 0 || b < 0) return 0; + + 00544 44 8b 64 24 58 mov r12d, DWORD PTR tga_palette_len$1$[rsp] + 00549 45 85 e4 test r12d, r12d + 0054c 0f 88 b3 04 00 + 00 js $LN265@stbi__tga_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00552 33 d2 xor edx, edx + 00554 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00559 f7 f7 div edi + +; 477 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + + 0055b 44 3b e0 cmp r12d, eax + 0055e 0f 8f a1 04 00 + 00 jg $LN265@stbi__tga_ + +; 502 : return stbi__malloc(a * b + add); + + 00564 8b f7 mov esi, edi + 00566 41 0f af f4 imul esi, r12d + 0056a 48 63 ce movsxd rcx, esi + +; 438 : return STBI_MALLOC(size); + + 0056d ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00573 48 89 44 24 50 mov QWORD PTR tga_palette$1$[rsp], rax + +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { + + 00578 48 85 c0 test rax, rax + 0057b 0f 84 84 04 00 + 00 je $LN265@stbi__tga_ + +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { + + 00581 89 6c 24 3c mov DWORD PTR tga_rgb16$4$[rsp], ebp + 00585 89 7c 24 34 mov DWORD PTR tga_comp$4$[rsp], edi + 00589 85 ed test ebp, ebp + 0058b 0f 84 b1 00 00 + 00 je $LN43@stbi__tga_ + +; 5491 : stbi_uc* pal_entry = tga_palette; + + 00591 48 8b f0 mov rsi, rax + +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { + + 00594 45 85 e4 test r12d, r12d + 00597 0f 8e 95 00 00 + 00 jle $LN267@stbi__tga_ + 0059d 0f 1f 00 npad 3 +$LL7@stbi__tga_: + +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + + 005a0 48 8b cb mov rcx, rbx + 005a3 e8 00 00 00 00 call stbi__get16le + +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; + + 005a8 44 0f b7 c0 movzx r8d, ax + 005ac 41 8b c0 mov eax, r8d + 005af c1 e8 0a shr eax, 10 + 005b2 83 e0 1f and eax, 31 + +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); + + 005b5 69 c8 ff 00 00 + 00 imul ecx, eax, 255 ; 000000ffH + 005bb b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 005c0 f7 e9 imul ecx + 005c2 03 d1 add edx, ecx + 005c4 c1 fa 04 sar edx, 4 + 005c7 8b c2 mov eax, edx + 005c9 c1 e8 1f shr eax, 31 + 005cc 03 d0 add edx, eax + 005ce 41 8b c0 mov eax, r8d + 005d1 c1 e8 05 shr eax, 5 + 005d4 41 83 e0 1f and r8d, 31 + 005d8 83 e0 1f and eax, 31 + 005db 88 16 mov BYTE PTR [rsi], dl + +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); + + 005dd 69 c8 ff 00 00 + 00 imul ecx, eax, 255 ; 000000ffH + 005e3 b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 005e8 f7 e9 imul ecx + 005ea 03 d1 add edx, ecx + +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); + + 005ec 41 69 c8 ff 00 + 00 00 imul ecx, r8d, 255 ; 000000ffH + 005f3 c1 fa 04 sar edx, 4 + 005f6 8b c2 mov eax, edx + 005f8 c1 e8 1f shr eax, 31 + 005fb 03 d0 add edx, eax + 005fd b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 00602 88 56 01 mov BYTE PTR [rsi+1], dl + 00605 f7 e9 imul ecx + 00607 03 d1 add edx, ecx + 00609 c1 fa 04 sar edx, 4 + 0060c 8b c2 mov eax, edx + 0060e c1 e8 1f shr eax, 31 + 00611 03 d0 add edx, eax + 00613 88 56 02 mov BYTE PTR [rsi+2], dl + +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; + + 00616 48 03 f7 add rsi, rdi + 00619 4d 2b e5 sub r12, r13 + 0061c 75 82 jne SHORT $LL7@stbi__tga_ + 0061e 44 8b 64 24 34 mov r12d, DWORD PTR tga_comp$4$[rsp] + 00623 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 00627 48 8b 7c 24 50 mov rdi, QWORD PTR tga_palette$1$[rsp] + 0062c 8b 54 24 44 mov edx, DWORD PTR tv2782[rsp] + 00630 eb 48 jmp SHORT $LN45@stbi__tga_ +$LN267@stbi__tga_: + +; 5496 : } +; 5497 : } + + 00632 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 00636 44 8b e7 mov r12d, edi + 00639 8b 54 24 44 mov edx, DWORD PTR tv2782[rsp] + 0063d 48 8b f8 mov rdi, rax + 00640 eb 38 jmp SHORT $LN45@stbi__tga_ +$LN43@stbi__tga_: + +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + + 00642 44 8b e7 mov r12d, edi + 00645 44 8b c6 mov r8d, esi + 00648 48 8b d0 mov rdx, rax + 0064b 48 8b cb mov rcx, rbx + 0064e 48 8b f8 mov rdi, rax + 00651 e8 00 00 00 00 call stbi__getn + 00656 85 c0 test eax, eax + 00658 75 13 jne SHORT $LN279@stbi__tga_ + +; 5499 : STBI_FREE(tga_data); + + 0065a 48 8b 4c 24 48 mov rcx, QWORD PTR tga_data$1$[rsp] + 0065f ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 5500 : STBI_FREE(tga_palette); + + 00665 48 8b cf mov rcx, rdi + +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); + + 00668 e9 60 fe ff ff jmp $LN376@stbi__tga_ +$LN279@stbi__tga_: + +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + + 0066d 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 00671 8b 54 24 44 mov edx, DWORD PTR tv2782[rsp] + 00675 eb 03 jmp SHORT $LN45@stbi__tga_ +$LN284@stbi__tga_: + +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) + + 00677 49 8b fe mov rdi, r14 +$LN45@stbi__tga_: + 0067a 8b 4c 24 40 mov ecx, DWORD PTR tga_width$1$[rsp] + 0067e 8b c6 mov eax, esi + 00680 0f af c1 imul eax, ecx + +; 5540 : for (j = 0; j < tga_comp; ++j) { + + 00683 41 8b f4 mov esi, r12d + 00686 85 c0 test eax, eax + 00688 0f 84 76 02 00 + 00 je $LN9@stbi__tga_ + +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) + + 0068e 48 8b 6c 24 48 mov rbp, QWORD PTR tga_data$1$[rsp] + 00693 4c 8d 84 24 80 + 00 00 00 lea r8, QWORD PTR raw_data$[rsp] + 0069b 49 2b e8 sub rbp, r8 + 0069e 49 63 cc movsxd rcx, r12d + 006a1 48 89 44 24 68 mov QWORD PTR tv2753[rsp], rax +$LL10@stbi__tga_: + +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) + + 006a6 83 fa 08 cmp edx, 8 + 006a9 72 70 jb SHORT $LN266@stbi__tga_ + +; 5509 : { +; 5510 : if (RLE_count == 0) + + 006ab 45 85 ff test r15d, r15d + 006ae 75 5b jne SHORT $LN48@stbi__tga_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 006b0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006b7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 006be 73 0f jae SHORT $LN176@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 006c0 0f b6 08 movzx ecx, BYTE PTR [rax] + 006c3 48 ff c0 inc rax + 006c6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 006cd eb 26 jmp SHORT $LN175@stbi__tga_ +$LN176@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 006cf 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 006d3 74 1e je SHORT $LN177@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 006d5 48 8b cb mov rcx, rbx + 006d8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 006dd 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 006e4 0f b6 08 movzx ecx, BYTE PTR [rax] + 006e7 48 ff c0 inc rax + 006ea 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 006f1 eb 02 jmp SHORT $LN175@stbi__tga_ +$LN177@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 006f3 32 c9 xor cl, cl +$LN175@stbi__tga_: + +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); + + 006f5 0f b6 c1 movzx eax, cl + +; 5514 : RLE_count = 1 + (RLE_cmd & 127); + + 006f8 44 8b f8 mov r15d, eax + 006fb 41 83 e7 7f and r15d, 127 ; 0000007fH + 006ff 41 ff c7 inc r15d + +; 5515 : RLE_repeating = RLE_cmd >> 7; + + 00702 c1 e8 07 shr eax, 7 + 00705 89 44 24 5c mov DWORD PTR RLE_repeating$1$[rsp], eax + +; 5516 : read_next_pixel = 1; +; 5517 : } + + 00709 eb 10 jmp SHORT $LN266@stbi__tga_ +$LN48@stbi__tga_: + +; 5518 : else if (!RLE_repeating) + + 0070b 44 39 74 24 5c cmp DWORD PTR RLE_repeating$1$[rsp], r14d + 00710 74 09 je SHORT $LN266@stbi__tga_ + +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) + + 00712 45 85 ed test r13d, r13d + 00715 0f 84 94 01 00 + 00 je $LN51@stbi__tga_ +$LN266@stbi__tga_: + +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) + + 0071b 44 38 74 24 30 cmp BYTE PTR $T18[rsp], r14b + 00720 0f 84 91 00 00 + 00 je $LN52@stbi__tga_ + +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + + 00726 83 7c 24 60 08 cmp DWORD PTR tga_bits_per_pixel$1$[rsp], 8 + 0072b 75 50 jne SHORT $LN64@stbi__tga_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0072d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00734 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0073b 73 12 jae SHORT $LN180@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 0073d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00740 48 ff c0 inc rax + 00743 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + + 0074a 0f b6 c1 movzx eax, cl + 0074d eb 36 jmp SHORT $LN65@stbi__tga_ +$LN180@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 0074f 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 00753 74 21 je SHORT $LN181@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00755 48 8b cb mov rcx, rbx + 00758 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0075d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00764 0f b6 08 movzx ecx, BYTE PTR [rax] + 00767 48 ff c0 inc rax + 0076a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + + 00771 0f b6 c1 movzx eax, cl + 00774 eb 0f jmp SHORT $LN65@stbi__tga_ +$LN181@stbi__tga_: + +; 1083 : return 0; + + 00776 32 c9 xor cl, cl + +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + + 00778 0f b6 c1 movzx eax, cl + 0077b eb 08 jmp SHORT $LN65@stbi__tga_ +$LN64@stbi__tga_: + 0077d 48 8b cb mov rcx, rbx + 00780 e8 00 00 00 00 call stbi__get16le +$LN65@stbi__tga_: + +; 5540 : for (j = 0; j < tga_comp; ++j) { + + 00785 45 85 e4 test r12d, r12d + 00788 0f 84 16 01 00 + 00 je $LN15@stbi__tga_ + +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; + + 0078e 3b 44 24 58 cmp eax, DWORD PTR tga_palette_len$1$[rsp] + 00792 41 8b ce mov ecx, r14d + 00795 4c 8b c6 mov r8, rsi + 00798 0f 4c c8 cmovl ecx, eax + 0079b 41 0f af cc imul ecx, r12d + 0079f 48 63 d1 movsxd rdx, ecx + 007a2 48 8d 8c 24 80 + 00 00 00 lea rcx, QWORD PTR raw_data$[rsp] + 007aa 48 03 d7 add rdx, rdi + 007ad e8 00 00 00 00 call memcpy + +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } + + 007b2 e9 ed 00 00 00 jmp $LN15@stbi__tga_ +$LN52@stbi__tga_: + +; 5544 : else if (tga_rgb16) { + + 007b7 44 39 74 24 3c cmp DWORD PTR tga_rgb16$4$[rsp], r14d + 007bc 0f 84 85 00 00 + 00 je $LN55@stbi__tga_ + +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + + 007c2 48 8b cb mov rcx, rbx + 007c5 e8 00 00 00 00 call stbi__get16le + +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; + + 007ca 44 0f b7 c0 movzx r8d, ax + 007ce 41 8b c0 mov eax, r8d + 007d1 c1 e8 0a shr eax, 10 + 007d4 83 e0 1f and eax, 31 + +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); + + 007d7 69 c8 ff 00 00 + 00 imul ecx, eax, 255 ; 000000ffH + 007dd b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 007e2 f7 e9 imul ecx + 007e4 03 d1 add edx, ecx + 007e6 c1 fa 04 sar edx, 4 + 007e9 8b c2 mov eax, edx + 007eb c1 e8 1f shr eax, 31 + 007ee 03 d0 add edx, eax + 007f0 41 8b c0 mov eax, r8d + 007f3 c1 e8 05 shr eax, 5 + 007f6 41 83 e0 1f and r8d, 31 + 007fa 83 e0 1f and eax, 31 + 007fd 88 94 24 80 00 + 00 00 mov BYTE PTR raw_data$[rsp], dl + +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); + + 00804 69 c8 ff 00 00 + 00 imul ecx, eax, 255 ; 000000ffH + 0080a b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 0080f f7 e9 imul ecx + 00811 03 d1 add edx, ecx + +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); + + 00813 41 69 c8 ff 00 + 00 00 imul ecx, r8d, 255 ; 000000ffH + 0081a c1 fa 04 sar edx, 4 + 0081d 8b c2 mov eax, edx + 0081f c1 e8 1f shr eax, 31 + 00822 03 d0 add edx, eax + 00824 b8 43 08 21 84 mov eax, -2078209981 ; ffffffff84210843H + 00829 88 94 24 81 00 + 00 00 mov BYTE PTR raw_data$[rsp+1], dl + 00830 f7 e9 imul ecx + 00832 03 d1 add edx, ecx + 00834 c1 fa 04 sar edx, 4 + 00837 8b c2 mov eax, edx + 00839 c1 e8 1f shr eax, 31 + 0083c 03 d0 add edx, eax + 0083e 88 94 24 82 00 + 00 00 mov BYTE PTR raw_data$[rsp+2], dl + +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } + + 00845 eb 5d jmp SHORT $LN15@stbi__tga_ +$LN55@stbi__tga_: + +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { + + 00847 49 8b fe mov rdi, r14 + 0084a 45 85 e4 test r12d, r12d + 0084d 74 55 je SHORT $LN15@stbi__tga_ + 0084f 90 npad 1 +$LL16@stbi__tga_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00850 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00857 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0085e 73 0f jae SHORT $LN140@stbi__tga_ + +; 1078 : return *s->img_buffer++; + + 00860 0f b6 08 movzx ecx, BYTE PTR [rax] + 00863 48 ff c0 inc rax + 00866 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0086d eb 26 jmp SHORT $LN139@stbi__tga_ +$LN140@stbi__tga_: + +; 1079 : if (s->read_from_callbacks) { + + 0086f 44 39 73 30 cmp DWORD PTR [rbx+48], r14d + 00873 74 1e je SHORT $LN141@stbi__tga_ + +; 1080 : stbi__refill_buffer(s); + + 00875 48 8b cb mov rcx, rbx + 00878 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0087d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00884 0f b6 08 movzx ecx, BYTE PTR [rax] + 00887 48 ff c0 inc rax + 0088a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00891 eb 02 jmp SHORT $LN139@stbi__tga_ +$LN141@stbi__tga_: + +; 1082 : } +; 1083 : return 0; + + 00893 32 c9 xor cl, cl +$LN139@stbi__tga_: + +; 5551 : raw_data[j] = stbi__get8(s); + + 00895 88 8c 3c 80 00 + 00 00 mov BYTE PTR raw_data$[rsp+rdi], cl + 0089c 48 ff c7 inc rdi + 0089f 48 3b fe cmp rdi, rsi + 008a2 7c ac jl SHORT $LL16@stbi__tga_ +$LN15@stbi__tga_: + 008a4 48 8b 44 24 68 mov rax, QWORD PTR tv2753[rsp] + +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; + + 008a9 45 8b ee mov r13d, r14d + 008ac 49 63 cc movsxd rcx, r12d +$LN51@stbi__tga_: + +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) + + 008af 49 8b fe mov rdi, r14 + 008b2 45 85 e4 test r12d, r12d + 008b5 74 2b je SHORT $LN18@stbi__tga_ + +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; + + 008b7 48 8d 8c 24 80 + 00 00 00 lea rcx, QWORD PTR raw_data$[rsp] + 008bf 4c 8b c6 mov r8, rsi + 008c2 48 03 cd add rcx, rbp + 008c5 48 8d 94 24 80 + 00 00 00 lea rdx, QWORD PTR raw_data$[rsp] + 008cd e8 00 00 00 00 call memcpy +$LL237@stbi__tga_: + +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) + + 008d2 48 ff c7 inc rdi + 008d5 48 3b fe cmp rdi, rsi + 008d8 7c f8 jl SHORT $LL237@stbi__tga_ + 008da 48 8b 44 24 68 mov rax, QWORD PTR tv2753[rsp] + 008df 49 63 cc movsxd rcx, r12d +$LN18@stbi__tga_: + +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) + + 008e2 48 8b 7c 24 50 mov rdi, QWORD PTR tga_palette$1$[rsp] + +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; + + 008e7 41 ff cf dec r15d + 008ea 8b 54 24 44 mov edx, DWORD PTR tv2782[rsp] + 008ee 48 03 e9 add rbp, rcx + 008f1 48 83 e8 01 sub rax, 1 + 008f5 48 89 44 24 68 mov QWORD PTR tv2753[rsp], rax + 008fa 0f 85 a6 fd ff + ff jne $LL10@stbi__tga_ + 00900 8b 4c 24 40 mov ecx, DWORD PTR tga_width$1$[rsp] +$LN9@stbi__tga_: + +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) + + 00904 8b 74 24 38 mov esi, DWORD PTR $T19[rsp] + 00908 44 39 74 24 64 cmp DWORD PTR tga_inverted$1$[rsp], r14d + 0090d 74 6f je SHORT $LN21@stbi__tga_ + +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) + + 0090f 85 f6 test esi, esi + 00911 7e 6b jle SHORT $LN21@stbi__tga_ + 00913 45 8b dc mov r11d, r12d + 00916 44 8d 56 ff lea r10d, DWORD PTR [rsi-1] + 0091a 45 0f af d4 imul r10d, r12d + 0091e 41 8b de mov ebx, r14d + 00921 4c 8b 64 24 48 mov r12, QWORD PTR tga_data$1$[rsp] + 00926 44 0f af d9 imul r11d, ecx + 0092a 44 0f af d1 imul r10d, ecx + 0092e 66 90 npad 2 +$LL22@stbi__tga_: + +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; + + 00930 45 8b c3 mov r8d, r11d + +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) + + 00933 45 85 db test r11d, r11d + 00936 7e 32 jle SHORT $LN20@stbi__tga_ + +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; + + 00938 48 63 c3 movsxd rax, ebx + 0093b 4d 63 ca movsxd r9, r10d + 0093e 4c 2b c8 sub r9, rax + 00941 4a 8d 14 20 lea rdx, QWORD PTR [rax+r12] + 00945 66 66 66 0f 1f + 84 00 00 00 00 + 00 npad 11 +$LL25@stbi__tga_: + +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; + + 00950 42 0f b6 04 0a movzx eax, BYTE PTR [rdx+r9] + 00955 41 ff c8 dec r8d + 00958 0f b6 0a movzx ecx, BYTE PTR [rdx] + 0095b 88 02 mov BYTE PTR [rdx], al + +; 5576 : tga_data[index2] = temp; + + 0095d 42 88 0c 0a mov BYTE PTR [rdx+r9], cl + +; 5577 : ++index1; + + 00961 48 8d 52 01 lea rdx, QWORD PTR [rdx+1] + 00965 45 85 c0 test r8d, r8d + 00968 7f e6 jg SHORT $LL25@stbi__tga_ +$LN20@stbi__tga_: + +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) + + 0096a 41 03 db add ebx, r11d + 0096d 45 2b d3 sub r10d, r11d + 00970 41 83 c6 02 add r14d, 2 + 00974 44 3b f6 cmp r14d, esi + 00977 7c b7 jl SHORT $LL22@stbi__tga_ + 00979 44 8b 64 24 34 mov r12d, DWORD PTR tga_comp$4$[rsp] +$LN21@stbi__tga_: + +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) + + 0097e 48 8b 4c 24 50 mov rcx, QWORD PTR tga_palette$1$[rsp] + 00983 48 85 c9 test rcx, rcx + 00986 74 06 je SHORT $LN282@stbi__tga_ + +; 5584 : { +; 5585 : STBI_FREE(tga_palette); + + 00988 ff 15 00 00 00 + 00 call QWORD PTR __imp_free +$LN282@stbi__tga_: + +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) + + 0098e 44 8b 6c 24 3c mov r13d, DWORD PTR tga_rgb16$4$[rsp] +$LN58@stbi__tga_: + 00993 48 8b 4c 24 48 mov rcx, QWORD PTR tga_data$1$[rsp] + 00998 8b 54 24 40 mov edx, DWORD PTR tga_width$1$[rsp] + 0099c 41 83 fc 03 cmp r12d, 3 + 009a0 72 3c jb SHORT $LN27@stbi__tga_ + 009a2 45 85 ed test r13d, r13d + 009a5 75 37 jne SHORT $LN27@stbi__tga_ + +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) + + 009a7 8b c6 mov eax, esi + 009a9 4c 8b d1 mov r10, rcx + 009ac 0f af c2 imul eax, edx + 009af 85 c0 test eax, eax + 009b1 74 2b je SHORT $LN27@stbi__tga_ + +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; + + 009b3 41 8b dc mov ebx, r12d + 009b6 44 8b d8 mov r11d, eax + 009b9 0f 1f 80 00 00 + 00 00 npad 7 +$LL28@stbi__tga_: + +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; + + 009c0 41 0f b6 0a movzx ecx, BYTE PTR [r10] + +; 5596 : tga_pixel[0] = tga_pixel[2]; + + 009c4 41 0f b6 42 02 movzx eax, BYTE PTR [r10+2] + 009c9 41 88 02 mov BYTE PTR [r10], al + +; 5597 : tga_pixel[2] = temp; + + 009cc 41 88 4a 02 mov BYTE PTR [r10+2], cl + +; 5598 : tga_pixel += tga_comp; + + 009d0 4c 03 d3 add r10, rbx + 009d3 49 83 eb 01 sub r11, 1 + 009d7 75 e7 jne SHORT $LL28@stbi__tga_ + +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) + + 009d9 48 8b 4c 24 48 mov rcx, QWORD PTR tga_data$1$[rsp] +$LN27@stbi__tga_: + +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) + + 009de 8b 44 24 70 mov eax, DWORD PTR req_comp$GSCopy$1$[rsp] + 009e2 85 c0 test eax, eax + 009e4 74 1a je SHORT $LN60@stbi__tga_ + 009e6 41 3b c4 cmp eax, r12d + 009e9 74 15 je SHORT $LN60@stbi__tga_ + +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + 009eb 44 8b ca mov r9d, edx + 009ee 89 74 24 20 mov DWORD PTR [rsp+32], esi + 009f2 41 8b d4 mov edx, r12d + 009f5 44 8b c0 mov r8d, eax + 009f8 e8 00 00 00 00 call stbi__convert_format + 009fd 48 8b c8 mov rcx, rax +$LN60@stbi__tga_: + +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; + + 00a00 48 8b c1 mov rax, rcx + 00a03 eb 4c jmp SHORT $LN1@stbi__tga_ +$LN265@stbi__tga_: + +; 5487 : STBI_FREE(tga_data); + + 00a05 48 8b 4c 24 48 mov rcx, QWORD PTR tga_data$1$[rsp] + 00a0a ff 15 00 00 00 + 00 call QWORD PTR __imp_free +$LN264@stbi__tga_: + +; 5613 : } + + 00a10 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00a16 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00a1f 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00a23 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00a2a eb 1a jmp SHORT $LN375@stbi__tga_ +$LN271@stbi__tga_: + 00a2c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00a32 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00a3b 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00a3f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ +$LN375@stbi__tga_: + 00a46 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00a4b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 00a4f 33 c0 xor eax, eax +$LN1@stbi__tga_: + 00a51 48 8b 8c 24 88 + 00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 00a59 48 33 cc xor rcx, rsp + 00a5c e8 00 00 00 00 call __security_check_cookie + 00a61 48 81 c4 98 00 + 00 00 add rsp, 152 ; 00000098H + 00a68 41 5f pop r15 + 00a6a 41 5e pop r14 + 00a6c 41 5d pop r13 + 00a6e 41 5c pop r12 + 00a70 5f pop rdi + 00a71 5e pop rsi + 00a72 5d pop rbp + 00a73 5b pop rbx + 00a74 c3 ret 0 +stbi__tga_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__psd_test +_TEXT SEGMENT +s$ = 48 +stbi__psd_test PROC ; COMDAT + +; 5621 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000a 48 8b f9 mov rdi, rcx + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 0000d e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00012 48 8b cf mov rcx, rdi + 00015 8b d8 mov ebx, eax + 00017 e8 00 00 00 00 call stbi__get16be + +; 342 : s->img_buffer = s->img_buffer_original; + + 0001c 48 8b 8f d0 00 + 00 00 mov rcx, QWORD PTR [rdi+208] + +; 5622 : int r = (stbi__get32be(s) == 0x38425053); + + 00023 33 d2 xor edx, edx + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00025 c1 e3 10 shl ebx, 16 + 00028 03 c3 add eax, ebx + +; 342 : s->img_buffer = s->img_buffer_original; + + 0002a 48 89 8f c0 00 + 00 00 mov QWORD PTR [rdi+192], rcx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00031 48 8b 8f d8 00 + 00 00 mov rcx, QWORD PTR [rdi+216] + +; 5622 : int r = (stbi__get32be(s) == 0x38425053); + + 00038 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H + +; 5625 : } + + 0003d 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00042 0f 94 c2 sete dl + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00045 48 89 8f c8 00 + 00 00 mov QWORD PTR [rdi+200], rcx + +; 5623 : stbi__rewind(s); +; 5624 : return r; + + 0004c 8b c2 mov eax, edx + +; 5625 : } + + 0004e 48 83 c4 20 add rsp, 32 ; 00000020H + 00052 5f pop rdi + 00053 c3 ret 0 +stbi__psd_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__psd_decode_rle +_TEXT SEGMENT +s$ = 64 +p$ = 72 +pixelCount$ = 80 +stbi__psd_decode_rle PROC ; COMDAT + +; 5628 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 54 push r12 + 00016 41 56 push r14 + 00018 41 57 push r15 + 0001a 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; + + 0001e 45 33 ff xor r15d, r15d + 00021 45 8b e0 mov r12d, r8d + 00024 48 8b fa mov rdi, rdx + 00027 48 8b d9 mov rbx, rcx + +; 5632 : while ((nleft = pixelCount - count) > 0) { + + 0002a 45 8b f0 mov r14d, r8d + 0002d 45 85 c0 test r8d, r8d + 00030 0f 8e 44 01 00 + 00 jle $LN41@stbi__psd_ + 00036 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL2@stbi__psd_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00040 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00047 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0004e 73 0f jae SHORT $LN17@stbi__psd_ + +; 1078 : return *s->img_buffer++; + + 00050 0f b6 08 movzx ecx, BYTE PTR [rax] + 00053 48 ff c0 inc rax + 00056 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0005d eb 26 jmp SHORT $LN16@stbi__psd_ +$LN17@stbi__psd_: + +; 1079 : if (s->read_from_callbacks) { + + 0005f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00063 74 1e je SHORT $LN18@stbi__psd_ + +; 1080 : stbi__refill_buffer(s); + + 00065 48 8b cb mov rcx, rbx + 00068 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0006d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00074 0f b6 08 movzx ecx, BYTE PTR [rax] + 00077 48 ff c0 inc rax + 0007a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00081 eb 02 jmp SHORT $LN16@stbi__psd_ +$LN18@stbi__psd_: + +; 1082 : } +; 1083 : return 0; + + 00083 32 c9 xor cl, cl +$LN16@stbi__psd_: + +; 5633 : len = stbi__get8(s); + + 00085 0f b6 e9 movzx ebp, cl + +; 5634 : if (len == 128) { + + 00088 81 fd 80 00 00 + 00 cmp ebp, 128 ; 00000080H + 0008e 0f 84 d7 00 00 + 00 je $LN7@stbi__psd_ + +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { + + 00094 73 6c jae SHORT $LN10@stbi__psd_ + +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; + + 00096 ff c5 inc ebp + +; 5640 : if (len > nleft) return 0; // corrupt data + + 00098 41 3b ee cmp ebp, r14d + 0009b 0f 87 fd 00 00 + 00 ja $LN32@stbi__psd_ + +; 5641 : count += len; + + 000a1 44 03 fd add r15d, ebp + 000a4 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL4@stbi__psd_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000b0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000b7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000be 73 0f jae SHORT $LN21@stbi__psd_ + +; 1078 : return *s->img_buffer++; + + 000c0 0f b6 08 movzx ecx, BYTE PTR [rax] + 000c3 48 ff c0 inc rax + 000c6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000cd eb 26 jmp SHORT $LN20@stbi__psd_ +$LN21@stbi__psd_: + +; 1079 : if (s->read_from_callbacks) { + + 000cf 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000d3 74 1e je SHORT $LN22@stbi__psd_ + +; 1080 : stbi__refill_buffer(s); + + 000d5 48 8b cb mov rcx, rbx + 000d8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000dd 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000e4 0f b6 08 movzx ecx, BYTE PTR [rax] + 000e7 48 ff c0 inc rax + 000ea 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000f1 eb 02 jmp SHORT $LN20@stbi__psd_ +$LN22@stbi__psd_: + +; 1082 : } +; 1083 : return 0; + + 000f3 32 c9 xor cl, cl +$LN20@stbi__psd_: + +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); + + 000f5 88 0f mov BYTE PTR [rdi], cl + +; 5644 : p += 4; + + 000f7 48 83 c7 04 add rdi, 4 + +; 5645 : len--; + + 000fb 83 ed 01 sub ebp, 1 + 000fe 75 b0 jne SHORT $LL4@stbi__psd_ + +; 5646 : } +; 5647 : } + + 00100 eb 69 jmp SHORT $LN7@stbi__psd_ +$LN10@stbi__psd_: + +; 5648 : else if (len > 128) { + + 00102 76 67 jbe SHORT $LN7@stbi__psd_ + +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; + + 00104 be 01 01 00 00 mov esi, 257 ; 00000101H + 00109 2b f5 sub esi, ebp + +; 5653 : if (len > nleft) return 0; // corrupt data + + 0010b 41 3b f6 cmp esi, r14d + 0010e 0f 8f 8a 00 00 + 00 jg $LN32@stbi__psd_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00114 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0011b 73 0f jae SHORT $LN25@stbi__psd_ + +; 1078 : return *s->img_buffer++; + + 0011d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00120 48 ff c0 inc rax + 00123 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0012a eb 26 jmp SHORT $LN24@stbi__psd_ +$LN25@stbi__psd_: + +; 1079 : if (s->read_from_callbacks) { + + 0012c 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00130 74 1e je SHORT $LN26@stbi__psd_ + +; 1080 : stbi__refill_buffer(s); + + 00132 48 8b cb mov rcx, rbx + 00135 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0013a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00141 0f b6 08 movzx ecx, BYTE PTR [rax] + 00144 48 ff c0 inc rax + 00147 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0014e eb 02 jmp SHORT $LN24@stbi__psd_ +$LN26@stbi__psd_: + +; 1082 : } +; 1083 : return 0; + + 00150 32 c9 xor cl, cl +$LN24@stbi__psd_: + +; 5654 : val = stbi__get8(s); +; 5655 : count += len; + + 00152 44 03 fe add r15d, esi + +; 5656 : while (len) { + + 00155 85 f6 test esi, esi + 00157 74 12 je SHORT $LN7@stbi__psd_ + 00159 0f 1f 80 00 00 + 00 00 npad 7 +$LL6@stbi__psd_: + +; 5657 : *p = val; + + 00160 88 0f mov BYTE PTR [rdi], cl + +; 5658 : p += 4; + + 00162 48 83 c7 04 add rdi, 4 + +; 5659 : len--; + + 00166 83 ee 01 sub esi, 1 + 00169 75 f5 jne SHORT $LL6@stbi__psd_ +$LN7@stbi__psd_: + +; 5632 : while ((nleft = pixelCount - count) > 0) { + + 0016b 45 8b f4 mov r14d, r12d + 0016e 45 2b f7 sub r14d, r15d + 00171 45 85 f6 test r14d, r14d + 00174 0f 8f c6 fe ff + ff jg $LL2@stbi__psd_ +$LN41@stbi__psd_: + +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; + + 0017a b8 01 00 00 00 mov eax, 1 +$LN1@stbi__psd_: + +; 5665 : } + + 0017f 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 00184 48 8b 6c 24 48 mov rbp, QWORD PTR [rsp+72] + 00189 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 0018e 48 8b 7c 24 58 mov rdi, QWORD PTR [rsp+88] + 00193 48 83 c4 20 add rsp, 32 ; 00000020H + 00197 41 5f pop r15 + 00199 41 5e pop r14 + 0019b 41 5c pop r12 + 0019d c3 ret 0 +$LN32@stbi__psd_: + +; 5653 : if (len > nleft) return 0; // corrupt data + + 0019e 33 c0 xor eax, eax + 001a0 eb dd jmp SHORT $LN1@stbi__psd_ +stbi__psd_decode_rle ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__psd_load +_TEXT SEGMENT +bitdepth$1$ = 48 +$T8 = 52 +$T9 = 56 +out$1$ = 64 +s$ = 144 +x$ = 152 +y$ = 160 +comp$ = 168 +req_comp$ = 176 +ri$ = 184 +channelCount$1$ = 192 +bpc$dead$ = 192 +stbi__psd_load PROC ; COMDAT + +; 5668 : { + + 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 + 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 + 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx + 0000f 53 push rbx + 00010 57 push rdi + 00011 48 83 ec 78 sub rsp, 120 ; 00000078H + 00015 48 8b f9 mov rdi, rcx + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00018 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 0001d 48 8b cf mov rcx, rdi + 00020 8b d8 mov ebx, eax + 00022 e8 00 00 00 00 call stbi__get16be + 00027 c1 e3 10 shl ebx, 16 + 0002a 03 c3 add eax, ebx + +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" + + 0002c 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H + 00031 74 2c je SHORT $LN32@stbi__psd_ + +; 431 : stbi__g_failure_reason = str; + + 00033 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00039 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00042 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00047 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0004b 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07ECNCNLIK@not?5PSD@ + 00052 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); + + 00056 33 c0 xor eax, eax + +; 5873 : } + + 00058 48 83 c4 78 add rsp, 120 ; 00000078H + 0005c 5f pop rdi + 0005d 5b pop rbx + 0005e c3 ret 0 +$LN32@stbi__psd_: + +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) + + 0005f 48 8b cf mov rcx, rdi + 00062 e8 00 00 00 00 call stbi__get16be + 00067 83 f8 01 cmp eax, 1 + 0006a 74 2c je SHORT $LN33@stbi__psd_ + +; 431 : stbi__g_failure_reason = str; + + 0006c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00072 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0007b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00080 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00084 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@CHBCDKKC@wrong?5version@ + 0008b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + 0008f 33 c0 xor eax, eax + +; 5873 : } + + 00091 48 83 c4 78 add rsp, 120 ; 00000078H + 00095 5f pop rdi + 00096 5b pop rbx + 00097 c3 ret 0 +$LN33@stbi__psd_: + +; 1112 : if (s->io.read) { + + 00098 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 0009d 48 89 74 24 70 mov QWORD PTR [rsp+112], rsi + 000a2 74 2f je SHORT $LN235@stbi__psd_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 000a4 8b 8f c8 00 00 + 00 mov ecx, DWORD PTR [rdi+200] + 000aa 2b 8f c0 00 00 + 00 sub ecx, DWORD PTR [rdi+192] + +; 1114 : if (blen < n) { + + 000b0 83 f9 06 cmp ecx, 6 + 000b3 7d 1e jge SHORT $LN235@stbi__psd_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 000b5 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 000bc ba 06 00 00 00 mov edx, 6 + 000c1 2b d1 sub edx, ecx + 000c3 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 000ca 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 000ce ff 57 18 call QWORD PTR [rdi+24] + +; 1117 : return; + + 000d1 eb 08 jmp SHORT $LN75@stbi__psd_ +$LN235@stbi__psd_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 000d3 48 83 87 c0 00 + 00 00 06 add QWORD PTR [rdi+192], 6 +$LN75@stbi__psd_: + +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); + + 000db 48 8b cf mov rcx, rdi + 000de e8 00 00 00 00 call stbi__get16be + 000e3 89 84 24 c0 00 + 00 00 mov DWORD PTR channelCount$1$[rsp], eax + 000ea 8b f0 mov esi, eax + +; 5690 : if (channelCount < 0 || channelCount > 16) + + 000ec 83 f8 10 cmp eax, 16 + 000ef 0f 87 b1 0b 00 + 00 ja $LN35@stbi__psd_ + 000f5 4c 89 74 24 58 mov QWORD PTR [rsp+88], r14 + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 000fa 48 8b cf mov rcx, rdi + +; 5690 : if (channelCount < 0 || channelCount > 16) + + 000fd 4c 89 7c 24 50 mov QWORD PTR [rsp+80], r15 + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00102 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00107 48 8b cf mov rcx, rdi + 0010a 44 8b f8 mov r15d, eax + 0010d e8 00 00 00 00 call stbi__get16be + 00112 41 c1 e7 10 shl r15d, 16 + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00116 48 8b cf mov rcx, rdi + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00119 44 03 f8 add r15d, eax + 0011c 44 89 7c 24 38 mov DWORD PTR $T9[rsp], r15d + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 00121 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00126 48 8b cf mov rcx, rdi + 00129 44 8b f0 mov r14d, eax + 0012c e8 00 00 00 00 call stbi__get16be + 00131 41 c1 e6 10 shl r14d, 16 + 00135 44 03 f0 add r14d, eax + 00138 44 89 74 24 34 mov DWORD PTR $T8[rsp], r14d + +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0013d 41 81 ff 00 00 + 00 01 cmp r15d, 16777216 ; 01000000H + 00144 0f 8f 32 0b 00 + 00 jg $LN240@stbi__psd_ + +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0014a 41 81 fe 00 00 + 00 01 cmp r14d, 16777216 ; 01000000H + 00151 0f 8f 25 0b 00 + 00 jg $LN240@stbi__psd_ + +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); + + 00157 48 8b cf mov rcx, rdi + 0015a e8 00 00 00 00 call stbi__get16be + 0015f 89 44 24 30 mov DWORD PTR bitdepth$1$[rsp], eax + +; 5702 : if (bitdepth != 8 && bitdepth != 16) + + 00163 8d 48 f8 lea ecx, DWORD PTR [rax-8] + 00166 f7 c1 f7 ff ff + ff test ecx, -9 ; fffffff7H + 0016c 74 2a je SHORT $LN38@stbi__psd_ + +; 431 : stbi__g_failure_reason = str; + + 0016e 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00174 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0017d b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00182 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00186 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ + 0018d 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + 00191 33 c0 xor eax, eax + 00193 e9 66 03 00 00 jmp $LN330@stbi__psd_ +$LN38@stbi__psd_: + +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) + + 00198 48 8b cf mov rcx, rdi + 0019b e8 00 00 00 00 call stbi__get16be + 001a0 83 f8 03 cmp eax, 3 + 001a3 74 2a je SHORT $LN39@stbi__psd_ + +; 431 : stbi__g_failure_reason = str; + + 001a5 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001ab 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001b4 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 001b9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001bd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BD@IOGGBMNK@wrong?5color?5format@ + 001c4 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + 001c8 33 c0 xor eax, eax + 001ca e9 2f 03 00 00 jmp $LN330@stbi__psd_ +$LN39@stbi__psd_: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 001cf 48 8b cf mov rcx, rdi + 001d2 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 001d7 48 8b cf mov rcx, rdi + 001da 8b d8 mov ebx, eax + 001dc e8 00 00 00 00 call stbi__get16be + 001e1 8b c8 mov ecx, eax + 001e3 c1 e3 10 shl ebx, 16 + 001e6 03 cb add ecx, ebx + +; 1107 : if (n == 0) return; // already there! + + 001e8 74 50 je SHORT $LN95@stbi__psd_ + +; 1108 : if (n < 0) { + + 001ea 85 c9 test ecx, ecx + 001ec 79 10 jns SHORT $LN97@stbi__psd_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 001ee 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 001f5 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + +; 1110 : return; + + 001fc eb 3c jmp SHORT $LN95@stbi__psd_ +$LN97@stbi__psd_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 001fe 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 00203 74 2b je SHORT $LN236@stbi__psd_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00205 8b 97 c8 00 00 + 00 mov edx, DWORD PTR [rdi+200] + 0020b 2b 97 c0 00 00 + 00 sub edx, DWORD PTR [rdi+192] + +; 1114 : if (blen < n) { + + 00211 3b d1 cmp edx, ecx + 00213 7d 1b jge SHORT $LN236@stbi__psd_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00215 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0021c 2b ca sub ecx, edx + 0021e 8b d1 mov edx, ecx + 00220 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00227 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 0022b ff 57 18 call QWORD PTR [rdi+24] + +; 1117 : return; + + 0022e eb 0a jmp SHORT $LN95@stbi__psd_ +$LN236@stbi__psd_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00230 48 63 c1 movsxd rax, ecx + 00233 48 01 87 c0 00 + 00 00 add QWORD PTR [rdi+192], rax +$LN95@stbi__psd_: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 0023a 48 8b cf mov rcx, rdi + 0023d e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 00242 48 8b cf mov rcx, rdi + 00245 8b d8 mov ebx, eax + 00247 e8 00 00 00 00 call stbi__get16be + 0024c 8b c8 mov ecx, eax + 0024e c1 e3 10 shl ebx, 16 + 00251 03 cb add ecx, ebx + +; 1107 : if (n == 0) return; // already there! + + 00253 74 50 je SHORT $LN103@stbi__psd_ + +; 1108 : if (n < 0) { + + 00255 85 c9 test ecx, ecx + 00257 79 10 jns SHORT $LN105@stbi__psd_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 00259 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 00260 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + +; 1110 : return; + + 00267 eb 3c jmp SHORT $LN103@stbi__psd_ +$LN105@stbi__psd_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 00269 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 0026e 74 2b je SHORT $LN237@stbi__psd_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00270 8b 97 c8 00 00 + 00 mov edx, DWORD PTR [rdi+200] + 00276 2b 97 c0 00 00 + 00 sub edx, DWORD PTR [rdi+192] + +; 1114 : if (blen < n) { + + 0027c 3b d1 cmp edx, ecx + 0027e 7d 1b jge SHORT $LN237@stbi__psd_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00280 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00287 2b ca sub ecx, edx + 00289 8b d1 mov edx, ecx + 0028b 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00292 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 00296 ff 57 18 call QWORD PTR [rdi+24] + +; 1117 : return; + + 00299 eb 0a jmp SHORT $LN103@stbi__psd_ +$LN237@stbi__psd_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 0029b 48 63 c1 movsxd rax, ecx + 0029e 48 01 87 c0 00 + 00 00 add QWORD PTR [rdi+192], rax +$LN103@stbi__psd_: + +; 1168 : stbi__uint32 z = stbi__get16be(s); + + 002a5 48 8b cf mov rcx, rdi + 002a8 e8 00 00 00 00 call stbi__get16be + +; 1169 : return (z << 16) + stbi__get16be(s); + + 002ad 48 8b cf mov rcx, rdi + 002b0 8b d8 mov ebx, eax + 002b2 e8 00 00 00 00 call stbi__get16be + 002b7 8b c8 mov ecx, eax + 002b9 c1 e3 10 shl ebx, 16 + 002bc 03 cb add ecx, ebx + +; 1107 : if (n == 0) return; // already there! + + 002be 74 50 je SHORT $LN111@stbi__psd_ + +; 1108 : if (n < 0) { + + 002c0 85 c9 test ecx, ecx + 002c2 79 10 jns SHORT $LN113@stbi__psd_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 002c4 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 002cb 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + +; 1110 : return; + + 002d2 eb 3c jmp SHORT $LN111@stbi__psd_ +$LN113@stbi__psd_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 002d4 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 002d9 74 2b je SHORT $LN238@stbi__psd_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 002db 8b 97 c8 00 00 + 00 mov edx, DWORD PTR [rdi+200] + 002e1 2b 97 c0 00 00 + 00 sub edx, DWORD PTR [rdi+192] + +; 1114 : if (blen < n) { + + 002e7 3b d1 cmp edx, ecx + 002e9 7d 1b jge SHORT $LN238@stbi__psd_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 002eb 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 002f2 2b ca sub ecx, edx + 002f4 8b d1 mov edx, ecx + 002f6 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 002fd 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 00301 ff 57 18 call QWORD PTR [rdi+24] + +; 1117 : return; + + 00304 eb 0a jmp SHORT $LN111@stbi__psd_ +$LN238@stbi__psd_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00306 48 63 c1 movsxd rax, ecx + 00309 48 01 87 c0 00 + 00 00 add QWORD PTR [rdi+192], rax +$LN111@stbi__psd_: + +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); + + 00310 48 8b cf mov rcx, rdi + 00313 e8 00 00 00 00 call stbi__get16be + 00318 8b d8 mov ebx, eax + +; 5732 : if (compression > 1) + + 0031a 83 f8 01 cmp eax, 1 + 0031d 7e 2a jle SHORT $LN40@stbi__psd_ + +; 431 : stbi__g_failure_reason = str; + + 0031f 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00325 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0032e b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00333 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00337 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@ + 0033e 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + 00342 33 c0 xor eax, eax + 00344 e9 b5 01 00 00 jmp $LN330@stbi__psd_ +$LN40@stbi__psd_: + +; 467 : if (a < 0 || b < 0) return 0; + + 00349 45 85 f6 test r14d, r14d + 0034c 0f 88 2a 09 00 + 00 js $LN240@stbi__psd_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00352 75 0a jne SHORT $LN128@stbi__psd_ + 00354 42 8d 0c b5 00 + 00 00 00 lea ecx, DWORD PTR [r14*4] + 0035c eb 22 jmp SHORT $LN243@stbi__psd_ +$LN128@stbi__psd_: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0035e b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00363 99 cdq + 00364 41 f7 fe idiv r14d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00367 83 f8 04 cmp eax, 4 + 0036a 0f 8c 0c 09 00 + 00 jl $LN240@stbi__psd_ + 00370 42 8d 0c b5 00 + 00 00 00 lea ecx, DWORD PTR [r14*4] + +; 467 : if (a < 0 || b < 0) return 0; + + 00378 85 c9 test ecx, ecx + 0037a 0f 88 fc 08 00 + 00 js $LN240@stbi__psd_ +$LN243@stbi__psd_: + 00380 45 85 ff test r15d, r15d + 00383 0f 88 f3 08 00 + 00 js $LN240@stbi__psd_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00389 74 11 je SHORT $LN241@stbi__psd_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0038b b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00390 99 cdq + 00391 41 f7 ff idiv r15d + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00394 3b c8 cmp ecx, eax + 00396 0f 8f e0 08 00 + 00 jg $LN240@stbi__psd_ +$LN241@stbi__psd_: + 0039c 48 89 ac 24 90 + 00 00 00 mov QWORD PTR [rsp+144], rbp + 003a4 41 8b ef mov ebp, r15d + 003a7 41 0f af ee imul ebp, r14d + 003ab 4c 89 64 24 68 mov QWORD PTR [rsp+104], r12 + +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); + + 003b0 8d 04 ad 00 00 + 00 00 lea eax, DWORD PTR [rbp*4] + 003b7 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 003ba ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 003c0 48 89 44 24 40 mov QWORD PTR out$1$[rsp], rax + 003c5 4c 8b e0 mov r12, rax + +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); + + 003c8 48 85 c0 test rax, rax + 003cb 75 2a jne SHORT $LN44@stbi__psd_ + +; 431 : stbi__g_failure_reason = str; + + 003cd 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 003d3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 003dc b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 003e1 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 003e5 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 003ec 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); + + 003f0 33 c0 xor eax, eax + 003f2 e9 fa 00 00 00 jmp $LN332@stbi__psd_ +$LN44@stbi__psd_: + 003f7 4c 89 6c 24 60 mov QWORD PTR [rsp+96], r13 + +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { + + 003fc 85 db test ebx, ebx + 003fe 0f 84 10 01 00 + 00 je $LN45@stbi__psd_ + +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); + + 00404 41 8b cf mov ecx, r15d + 00407 0f af ce imul ecx, esi + 0040a 03 c9 add ecx, ecx + +; 1107 : if (n == 0) return; // already there! + + 0040c 74 50 je SHORT $LN150@stbi__psd_ + +; 1108 : if (n < 0) { + + 0040e 85 c9 test ecx, ecx + 00410 79 10 jns SHORT $LN152@stbi__psd_ + +; 1109 : s->img_buffer = s->img_buffer_end; + + 00412 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 00419 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + +; 1110 : return; + + 00420 eb 3c jmp SHORT $LN150@stbi__psd_ +$LN152@stbi__psd_: + +; 1111 : } +; 1112 : if (s->io.read) { + + 00422 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 00427 74 2b je SHORT $LN239@stbi__psd_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00429 8b 97 c8 00 00 + 00 mov edx, DWORD PTR [rdi+200] + 0042f 2b 97 c0 00 00 + 00 sub edx, DWORD PTR [rdi+192] + +; 1114 : if (blen < n) { + + 00435 3b d1 cmp edx, ecx + 00437 7d 1b jge SHORT $LN239@stbi__psd_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00439 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00440 2b ca sub ecx, edx + 00442 8b d1 mov edx, ecx + 00444 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0044b 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 0044f ff 57 18 call QWORD PTR [rdi+24] + +; 1117 : return; + + 00452 eb 0a jmp SHORT $LN150@stbi__psd_ +$LN239@stbi__psd_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00454 48 63 c1 movsxd rax, ecx + 00457 48 01 87 c0 00 + 00 00 add QWORD PTR [rdi+192], rax +$LN150@stbi__psd_: + +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { + + 0045e 45 33 ed xor r13d, r13d + 00461 b8 ff 00 00 00 mov eax, 255 ; 000000ffH + 00466 41 8b dd mov ebx, r13d + 00469 0f 1f 80 00 00 + 00 00 npad 7 +$LL4@stbi__psd_: + +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; + + 00470 48 63 d3 movsxd rdx, ebx + 00473 49 03 d4 add rdx, r12 + +; 5773 : if (channel >= channelCount) { + + 00476 3b de cmp ebx, esi + 00478 7c 24 jl SHORT $LN47@stbi__psd_ + +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) + + 0047a 85 ed test ebp, ebp + 0047c 7e 34 jle SHORT $LN2@stbi__psd_ + +; 5776 : *p = (channel == 3 ? 255 : 0); + + 0047e 83 fb 03 cmp ebx, 3 + 00481 41 8b cd mov ecx, r13d + 00484 0f 44 c8 cmove ecx, eax + 00487 8b c5 mov eax, ebp + 00489 0f 1f 80 00 00 + 00 00 npad 7 +$LL7@stbi__psd_: + 00490 88 0a mov BYTE PTR [rdx], cl + 00492 48 8d 52 04 lea rdx, QWORD PTR [rdx+4] + 00496 48 83 e8 01 sub rax, 1 + 0049a 75 f4 jne SHORT $LL7@stbi__psd_ + +; 5777 : } + + 0049c eb 0f jmp SHORT $LN334@stbi__psd_ +$LN47@stbi__psd_: + +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { + + 0049e 44 8b c5 mov r8d, ebp + 004a1 48 8b cf mov rcx, rdi + 004a4 e8 00 00 00 00 call stbi__psd_decode_rle + 004a9 85 c0 test eax, eax + 004ab 74 11 je SHORT $LN188@stbi__psd_ +$LN334@stbi__psd_: + +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { + + 004ad b8 ff 00 00 00 mov eax, 255 ; 000000ffH +$LN2@stbi__psd_: + 004b2 ff c3 inc ebx + 004b4 83 fb 04 cmp ebx, 4 + 004b7 7c b7 jl SHORT $LL4@stbi__psd_ + +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { + + 004b9 e9 82 01 00 00 jmp $LN9@stbi__psd_ +$LN188@stbi__psd_: + +; 5781 : STBI_FREE(out); + + 004be 49 8b cc mov rcx, r12 + 004c1 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 004c7 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 004cd 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 004d6 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 004db 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 004df 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@ + 004e6 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN338@stbi__psd_: + +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); + + 004ea 33 c0 xor eax, eax +$LN333@stbi__psd_: + 004ec 4c 8b 6c 24 60 mov r13, QWORD PTR [rsp+96] +$LN332@stbi__psd_: + 004f1 4c 8b 64 24 68 mov r12, QWORD PTR [rsp+104] + 004f6 48 8b ac 24 90 + 00 00 00 mov rbp, QWORD PTR [rsp+144] +$LN330@stbi__psd_: + 004fe 4c 8b 74 24 58 mov r14, QWORD PTR [rsp+88] + 00503 4c 8b 7c 24 50 mov r15, QWORD PTR [rsp+80] + 00508 48 8b 74 24 70 mov rsi, QWORD PTR [rsp+112] + +; 5873 : } + + 0050d 48 83 c4 78 add rsp, 120 ; 00000078H + 00511 5f pop rdi + 00512 5b pop rbx + 00513 c3 ret 0 +$LN45@stbi__psd_: + +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { + + 00514 45 33 ed xor r13d, r13d + 00517 4d 8b fc mov r15, r12 + 0051a 45 8b f5 mov r14d, r13d + 0051d b9 ff 00 00 00 mov ecx, 255 ; 000000ffH +$LL10@stbi__psd_: + +; 5793 : if (channel >= channelCount) { + + 00522 44 3b f6 cmp r14d, esi + 00525 7c 2a jl SHORT $LN50@stbi__psd_ + +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; + + 00527 41 83 fe 03 cmp r14d, 3 + 0052b 41 8b d5 mov edx, r13d + 0052e 49 8b c7 mov rax, r15 + 00531 0f 44 d1 cmove edx, ecx + +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) + + 00534 85 ed test ebp, ebp + 00536 0f 8e e1 00 00 + 00 jle $LN8@stbi__psd_ + +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; + + 0053c 8b cd mov ecx, ebp + 0053e 66 90 npad 2 +$LL16@stbi__psd_: + +; 5805 : *p = val; + + 00540 88 10 mov BYTE PTR [rax], dl + 00542 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00546 48 83 e9 01 sub rcx, 1 + 0054a 75 f4 jne SHORT $LL16@stbi__psd_ + +; 5806 : } +; 5807 : } + + 0054c e9 c7 00 00 00 jmp $LN335@stbi__psd_ +$LN50@stbi__psd_: + +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc + + 00551 48 8b 84 24 b8 + 00 00 00 mov rax, QWORD PTR ri$[rsp] + 00559 83 38 10 cmp DWORD PTR [rax], 16 + 0055c 75 2c jne SHORT $LN54@stbi__psd_ + +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; + + 0055e 49 8b dc mov rbx, r12 + +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) + + 00561 85 ed test ebp, ebp + 00563 0f 8e b4 00 00 + 00 jle $LN8@stbi__psd_ + +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; + + 00569 8b f5 mov esi, ebp + 0056b 0f 1f 44 00 00 npad 5 +$LL19@stbi__psd_: + +; 5812 : *q = (stbi__uint16)stbi__get16be(s); + + 00570 48 8b cf mov rcx, rdi + 00573 e8 00 00 00 00 call stbi__get16be + 00578 66 89 03 mov WORD PTR [rbx], ax + 0057b 48 8d 5b 08 lea rbx, QWORD PTR [rbx+8] + 0057f 48 83 ee 01 sub rsi, 1 + 00583 75 eb jne SHORT $LL19@stbi__psd_ + +; 5813 : } + + 00585 e9 87 00 00 00 jmp $LN336@stbi__psd_ +$LN54@stbi__psd_: + +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc + + 0058a 83 7c 24 30 10 cmp DWORD PTR bitdepth$1$[rsp], 16 + 0058f 49 8b df mov rbx, r15 + 00592 75 25 jne SHORT $LN56@stbi__psd_ + +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) + + 00594 85 ed test ebp, ebp + 00596 0f 8e 81 00 00 + 00 jle $LN8@stbi__psd_ + 0059c 8b f5 mov esi, ebp + 0059e 66 90 npad 2 +$LL22@stbi__psd_: + +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); + + 005a0 48 8b cf mov rcx, rdi + 005a3 e8 00 00 00 00 call stbi__get16be + 005a8 c1 f8 08 sar eax, 8 + 005ab 88 03 mov BYTE PTR [rbx], al + 005ad 48 8d 5b 04 lea rbx, QWORD PTR [rbx+4] + 005b1 48 83 ee 01 sub rsi, 1 + 005b5 75 e9 jne SHORT $LL22@stbi__psd_ + +; 5819 : } + + 005b7 eb 58 jmp SHORT $LN336@stbi__psd_ +$LN56@stbi__psd_: + +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) + + 005b9 85 ed test ebp, ebp + 005bb 7e 60 jle SHORT $LN8@stbi__psd_ + 005bd 8b f5 mov esi, ebp + 005bf 90 npad 1 +$LL25@stbi__psd_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 005c0 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 005c7 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 005ce 73 0f jae SHORT $LN143@stbi__psd_ + +; 1078 : return *s->img_buffer++; + + 005d0 0f b6 08 movzx ecx, BYTE PTR [rax] + 005d3 48 ff c0 inc rax + 005d6 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 005dd eb 26 jmp SHORT $LN142@stbi__psd_ +$LN143@stbi__psd_: + +; 1079 : if (s->read_from_callbacks) { + + 005df 44 39 6f 30 cmp DWORD PTR [rdi+48], r13d + 005e3 74 1e je SHORT $LN144@stbi__psd_ + +; 1080 : stbi__refill_buffer(s); + + 005e5 48 8b cf mov rcx, rdi + 005e8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 005ed 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 005f4 0f b6 08 movzx ecx, BYTE PTR [rax] + 005f7 48 ff c0 inc rax + 005fa 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00601 eb 02 jmp SHORT $LN142@stbi__psd_ +$LN144@stbi__psd_: + +; 1082 : } +; 1083 : return 0; + + 00603 32 c9 xor cl, cl +$LN142@stbi__psd_: + +; 5822 : *p = stbi__get8(s); + + 00605 88 0b mov BYTE PTR [rbx], cl + 00607 48 83 c3 04 add rbx, 4 + 0060b 48 83 ee 01 sub rsi, 1 + 0060f 75 af jne SHORT $LL25@stbi__psd_ +$LN336@stbi__psd_: + +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { + + 00611 8b b4 24 c0 00 + 00 00 mov esi, DWORD PTR channelCount$1$[rsp] +$LN335@stbi__psd_: + 00618 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH +$LN8@stbi__psd_: + 0061d 41 ff c6 inc r14d + 00620 49 83 c4 02 add r12, 2 + 00624 49 ff c7 inc r15 + 00627 41 83 fe 04 cmp r14d, 4 + 0062b 0f 8c f1 fe ff + ff jl $LL10@stbi__psd_ + 00631 4c 8b 64 24 40 mov r12, QWORD PTR out$1$[rsp] + 00636 44 8b 74 24 34 mov r14d, DWORD PTR $T8[rsp] + 0063b 44 8b 7c 24 38 mov r15d, DWORD PTR $T9[rsp] +$LN9@stbi__psd_: + +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { + + 00640 4c 8b 94 24 b8 + 00 00 00 mov r10, QWORD PTR ri$[rsp] + 00648 83 fe 04 cmp esi, 4 + 0064b 0f 8c bb 05 00 + 00 jl $LN216@stbi__psd_ + +; 5831 : if (ri->bits_per_channel == 16) { + + 00651 41 83 3a 10 cmp DWORD PTR [r10], 16 + 00655 48 63 d5 movsxd rdx, ebp + 00658 0f 85 ec 02 00 + 00 jne $LN59@stbi__psd_ + +; 5832 : for (i = 0; i < w * h; ++i) { + + 0065e f3 0f 10 1d 00 + 00 00 00 movss xmm3, DWORD PTR __real@477fff00 + 00666 41 bb fd ff 00 + 00 mov r11d, 65533 ; 0000fffdH + 0066c f3 0f 10 25 00 + 00 00 00 movss xmm4, DWORD PTR __real@3f800000 + 00674 48 83 fa 04 cmp rdx, 4 + 00678 0f 8c 26 02 00 + 00 jl $LC210@stbi__psd_ + 0067e 4c 8d 42 fc lea r8, QWORD PTR [rdx-4] + 00682 49 c1 e8 02 shr r8, 2 + 00686 49 8d 4c 24 0a lea rcx, QWORD PTR [r12+10] + 0068b 49 ff c0 inc r8 + 0068e 4e 8d 2c 85 00 + 00 00 00 lea r13, QWORD PTR [r8*4] + 00696 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL215@stbi__psd_: + +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { + + 006a0 44 0f b7 49 fc movzx r9d, WORD PTR [rcx-4] + 006a5 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 006a9 66 41 3b c3 cmp ax, r11w + 006ad 77 6f ja SHORT $LN211@stbi__psd_ + +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + + 006af 0f b7 41 f6 movzx eax, WORD PTR [rcx-10] + 006b3 0f 57 c0 xorps xmm0, xmm0 + 006b6 f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 006bb 0f 28 d4 movaps xmm2, xmm4 + 006be 0f 28 cc movaps xmm1, xmm4 + 006c1 f3 0f 5e c3 divss xmm0, xmm3 + 006c5 f3 0f 5e d0 divss xmm2, xmm0 + 006c9 0f 57 c0 xorps xmm0, xmm0 + 006cc f3 0f 2a c0 cvtsi2ss xmm0, eax + 006d0 f3 0f 5c ca subss xmm1, xmm2 + 006d4 f3 0f 59 c2 mulss xmm0, xmm2 + 006d8 f3 0f 59 cb mulss xmm1, xmm3 + 006dc f3 0f 58 c1 addss xmm0, xmm1 + 006e0 f3 0f 2c c0 cvttss2si eax, xmm0 + 006e4 0f 57 c0 xorps xmm0, xmm0 + 006e7 66 89 41 f6 mov WORD PTR [rcx-10], ax + +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + + 006eb 0f b7 41 f8 movzx eax, WORD PTR [rcx-8] + 006ef f3 0f 2a c0 cvtsi2ss xmm0, eax + 006f3 f3 0f 59 c2 mulss xmm0, xmm2 + 006f7 f3 0f 58 c1 addss xmm0, xmm1 + 006fb f3 0f 2c c0 cvttss2si eax, xmm0 + 006ff 0f 57 c0 xorps xmm0, xmm0 + 00702 66 89 41 f8 mov WORD PTR [rcx-8], ax + +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + + 00706 0f b7 41 fa movzx eax, WORD PTR [rcx-6] + 0070a f3 0f 2a c0 cvtsi2ss xmm0, eax + 0070e f3 0f 59 c2 mulss xmm0, xmm2 + 00712 f3 0f 58 c1 addss xmm0, xmm1 + 00716 f3 0f 2c c0 cvttss2si eax, xmm0 + 0071a 66 89 41 fa mov WORD PTR [rcx-6], ax +$LN211@stbi__psd_: + +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { + + 0071e 44 0f b7 49 04 movzx r9d, WORD PTR [rcx+4] + 00723 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 00727 66 41 3b c3 cmp ax, r11w + 0072b 77 6d ja SHORT $LN212@stbi__psd_ + +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + + 0072d 0f b7 41 fe movzx eax, WORD PTR [rcx-2] + 00731 0f 57 c0 xorps xmm0, xmm0 + 00734 f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 00739 0f 28 d4 movaps xmm2, xmm4 + 0073c 0f 28 cc movaps xmm1, xmm4 + 0073f f3 0f 5e c3 divss xmm0, xmm3 + 00743 f3 0f 5e d0 divss xmm2, xmm0 + 00747 0f 57 c0 xorps xmm0, xmm0 + 0074a f3 0f 2a c0 cvtsi2ss xmm0, eax + 0074e f3 0f 5c ca subss xmm1, xmm2 + 00752 f3 0f 59 c2 mulss xmm0, xmm2 + 00756 f3 0f 59 cb mulss xmm1, xmm3 + 0075a f3 0f 58 c1 addss xmm0, xmm1 + 0075e f3 0f 2c c0 cvttss2si eax, xmm0 + 00762 0f 57 c0 xorps xmm0, xmm0 + 00765 66 89 41 fe mov WORD PTR [rcx-2], ax + +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + + 00769 0f b7 01 movzx eax, WORD PTR [rcx] + 0076c f3 0f 2a c0 cvtsi2ss xmm0, eax + 00770 f3 0f 59 c2 mulss xmm0, xmm2 + 00774 f3 0f 58 c1 addss xmm0, xmm1 + 00778 f3 0f 2c c0 cvttss2si eax, xmm0 + 0077c 0f 57 c0 xorps xmm0, xmm0 + 0077f 66 89 01 mov WORD PTR [rcx], ax + +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + + 00782 0f b7 41 02 movzx eax, WORD PTR [rcx+2] + 00786 f3 0f 2a c0 cvtsi2ss xmm0, eax + 0078a f3 0f 59 c2 mulss xmm0, xmm2 + 0078e f3 0f 58 c1 addss xmm0, xmm1 + 00792 f3 0f 2c c0 cvttss2si eax, xmm0 + 00796 66 89 41 02 mov WORD PTR [rcx+2], ax +$LN212@stbi__psd_: + +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { + + 0079a 44 0f b7 49 0c movzx r9d, WORD PTR [rcx+12] + 0079f 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 007a3 66 41 3b c3 cmp ax, r11w + 007a7 77 6f ja SHORT $LN213@stbi__psd_ + +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + + 007a9 0f b7 41 06 movzx eax, WORD PTR [rcx+6] + 007ad 0f 57 c0 xorps xmm0, xmm0 + 007b0 f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 007b5 0f 28 d4 movaps xmm2, xmm4 + 007b8 0f 28 cc movaps xmm1, xmm4 + 007bb f3 0f 5e c3 divss xmm0, xmm3 + 007bf f3 0f 5e d0 divss xmm2, xmm0 + 007c3 0f 57 c0 xorps xmm0, xmm0 + 007c6 f3 0f 2a c0 cvtsi2ss xmm0, eax + 007ca f3 0f 5c ca subss xmm1, xmm2 + 007ce f3 0f 59 c2 mulss xmm0, xmm2 + 007d2 f3 0f 59 cb mulss xmm1, xmm3 + 007d6 f3 0f 58 c1 addss xmm0, xmm1 + 007da f3 0f 2c c0 cvttss2si eax, xmm0 + 007de 0f 57 c0 xorps xmm0, xmm0 + 007e1 66 89 41 06 mov WORD PTR [rcx+6], ax + +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + + 007e5 0f b7 41 08 movzx eax, WORD PTR [rcx+8] + 007e9 f3 0f 2a c0 cvtsi2ss xmm0, eax + 007ed f3 0f 59 c2 mulss xmm0, xmm2 + 007f1 f3 0f 58 c1 addss xmm0, xmm1 + 007f5 f3 0f 2c c0 cvttss2si eax, xmm0 + 007f9 0f 57 c0 xorps xmm0, xmm0 + 007fc 66 89 41 08 mov WORD PTR [rcx+8], ax + +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + + 00800 0f b7 41 0a movzx eax, WORD PTR [rcx+10] + 00804 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00808 f3 0f 59 c2 mulss xmm0, xmm2 + 0080c f3 0f 58 c1 addss xmm0, xmm1 + 00810 f3 0f 2c c0 cvttss2si eax, xmm0 + 00814 66 89 41 0a mov WORD PTR [rcx+10], ax +$LN213@stbi__psd_: + +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { + + 00818 44 0f b7 49 14 movzx r9d, WORD PTR [rcx+20] + 0081d 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 00821 66 41 3b c3 cmp ax, r11w + 00825 77 6f ja SHORT $LN214@stbi__psd_ + +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + + 00827 0f b7 41 0e movzx eax, WORD PTR [rcx+14] + 0082b 0f 57 c0 xorps xmm0, xmm0 + 0082e f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 00833 0f 28 d4 movaps xmm2, xmm4 + 00836 0f 28 cc movaps xmm1, xmm4 + 00839 f3 0f 5e c3 divss xmm0, xmm3 + 0083d f3 0f 5e d0 divss xmm2, xmm0 + 00841 0f 57 c0 xorps xmm0, xmm0 + 00844 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00848 f3 0f 5c ca subss xmm1, xmm2 + 0084c f3 0f 59 c2 mulss xmm0, xmm2 + 00850 f3 0f 59 cb mulss xmm1, xmm3 + 00854 f3 0f 58 c1 addss xmm0, xmm1 + 00858 f3 0f 2c c0 cvttss2si eax, xmm0 + 0085c 0f 57 c0 xorps xmm0, xmm0 + 0085f 66 89 41 0e mov WORD PTR [rcx+14], ax + +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + + 00863 0f b7 41 10 movzx eax, WORD PTR [rcx+16] + 00867 f3 0f 2a c0 cvtsi2ss xmm0, eax + 0086b f3 0f 59 c2 mulss xmm0, xmm2 + 0086f f3 0f 58 c1 addss xmm0, xmm1 + 00873 f3 0f 2c c0 cvttss2si eax, xmm0 + 00877 0f 57 c0 xorps xmm0, xmm0 + 0087a 66 89 41 10 mov WORD PTR [rcx+16], ax + +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + + 0087e 0f b7 41 12 movzx eax, WORD PTR [rcx+18] + 00882 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00886 f3 0f 59 c2 mulss xmm0, xmm2 + 0088a f3 0f 58 c1 addss xmm0, xmm1 + 0088e f3 0f 2c c0 cvttss2si eax, xmm0 + 00892 66 89 41 12 mov WORD PTR [rcx+18], ax +$LN214@stbi__psd_: + 00896 48 83 c1 20 add rcx, 32 ; 00000020H + 0089a 49 83 e8 01 sub r8, 1 + 0089e 0f 85 fc fd ff + ff jne $LL215@stbi__psd_ +$LC210@stbi__psd_: + +; 5832 : for (i = 0; i < w * h; ++i) { + + 008a4 4c 3b ea cmp r13, rdx + 008a7 0f 8d 5f 03 00 + 00 jge $LN216@stbi__psd_ + 008ad 4a 8d 0c ed 02 + 00 00 00 lea rcx, QWORD PTR [r13*8+2] + 008b5 49 03 cc add rcx, r12 + 008b8 49 2b d5 sub rdx, r13 +$LC28@stbi__psd_: + +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { + + 008bb 44 0f b7 41 04 movzx r8d, WORD PTR [rcx+4] + 008c0 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 008c4 66 41 3b c3 cmp ax, r11w + 008c8 77 6d ja SHORT $LN26@stbi__psd_ + +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + + 008ca 0f b7 41 fe movzx eax, WORD PTR [rcx-2] + 008ce 0f 57 c0 xorps xmm0, xmm0 + 008d1 f3 41 0f 2a c0 cvtsi2ss xmm0, r8d + 008d6 0f 28 d4 movaps xmm2, xmm4 + 008d9 0f 28 cc movaps xmm1, xmm4 + 008dc f3 0f 5e c3 divss xmm0, xmm3 + 008e0 f3 0f 5e d0 divss xmm2, xmm0 + 008e4 0f 57 c0 xorps xmm0, xmm0 + 008e7 f3 0f 2a c0 cvtsi2ss xmm0, eax + 008eb f3 0f 5c ca subss xmm1, xmm2 + 008ef f3 0f 59 c2 mulss xmm0, xmm2 + 008f3 f3 0f 59 cb mulss xmm1, xmm3 + 008f7 f3 0f 58 c1 addss xmm0, xmm1 + 008fb f3 0f 2c c0 cvttss2si eax, xmm0 + 008ff 0f 57 c0 xorps xmm0, xmm0 + 00902 66 89 41 fe mov WORD PTR [rcx-2], ax + +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + + 00906 0f b7 01 movzx eax, WORD PTR [rcx] + 00909 f3 0f 2a c0 cvtsi2ss xmm0, eax + 0090d f3 0f 59 c2 mulss xmm0, xmm2 + 00911 f3 0f 58 c1 addss xmm0, xmm1 + 00915 f3 0f 2c c0 cvttss2si eax, xmm0 + 00919 0f 57 c0 xorps xmm0, xmm0 + 0091c 66 89 01 mov WORD PTR [rcx], ax + +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + + 0091f 0f b7 41 02 movzx eax, WORD PTR [rcx+2] + 00923 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00927 f3 0f 59 c2 mulss xmm0, xmm2 + 0092b f3 0f 58 c1 addss xmm0, xmm1 + 0092f f3 0f 2c c0 cvttss2si eax, xmm0 + 00933 66 89 41 02 mov WORD PTR [rcx+2], ax +$LN26@stbi__psd_: + +; 5832 : for (i = 0; i < w * h; ++i) { + + 00937 48 83 c1 08 add rcx, 8 + 0093b 48 83 ea 01 sub rdx, 1 + 0093f 0f 85 76 ff ff + ff jne $LC28@stbi__psd_ + +; 5841 : } +; 5842 : } +; 5843 : } + + 00945 e9 c2 02 00 00 jmp $LN216@stbi__psd_ +$LN59@stbi__psd_: + +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { + + 0094a f3 0f 10 1d 00 + 00 00 00 movss xmm3, DWORD PTR __real@3f800000 + 00952 f3 0f 10 25 00 + 00 00 00 movss xmm4, DWORD PTR __real@437f0000 + 0095a 48 83 fa 04 cmp rdx, 4 + 0095e 0f 8c 0c 02 00 + 00 jl $LC217@stbi__psd_ + 00964 4c 8d 42 fc lea r8, QWORD PTR [rdx-4] + 00968 49 c1 e8 02 shr r8, 2 + 0096c 49 8d 4c 24 05 lea rcx, QWORD PTR [r12+5] + 00971 49 ff c0 inc r8 + 00974 4e 8d 2c 85 00 + 00 00 00 lea r13, QWORD PTR [r8*4] + 0097c 0f 1f 40 00 npad 4 +$LL222@stbi__psd_: + +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { + + 00980 44 0f b6 49 fe movzx r9d, BYTE PTR [rcx-2] + 00985 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 00989 3c fd cmp al, 253 ; 000000fdH + 0098b 77 6c ja SHORT $LN218@stbi__psd_ + +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + + 0098d 0f b6 41 fb movzx eax, BYTE PTR [rcx-5] + 00991 0f 57 c0 xorps xmm0, xmm0 + 00994 f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 00999 0f 28 d3 movaps xmm2, xmm3 + 0099c 0f 28 cb movaps xmm1, xmm3 + 0099f f3 0f 5e c4 divss xmm0, xmm4 + 009a3 f3 0f 5e d0 divss xmm2, xmm0 + 009a7 0f 57 c0 xorps xmm0, xmm0 + 009aa f3 0f 2a c0 cvtsi2ss xmm0, eax + 009ae f3 0f 5c ca subss xmm1, xmm2 + 009b2 f3 0f 59 c2 mulss xmm0, xmm2 + 009b6 f3 0f 59 cc mulss xmm1, xmm4 + 009ba f3 0f 58 c1 addss xmm0, xmm1 + 009be f3 0f 2c c0 cvttss2si eax, xmm0 + 009c2 0f 57 c0 xorps xmm0, xmm0 + 009c5 88 41 fb mov BYTE PTR [rcx-5], al + +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + + 009c8 0f b6 41 fc movzx eax, BYTE PTR [rcx-4] + 009cc f3 0f 2a c0 cvtsi2ss xmm0, eax + 009d0 f3 0f 59 c2 mulss xmm0, xmm2 + 009d4 f3 0f 58 c1 addss xmm0, xmm1 + 009d8 f3 0f 2c c0 cvttss2si eax, xmm0 + 009dc 0f 57 c0 xorps xmm0, xmm0 + 009df 88 41 fc mov BYTE PTR [rcx-4], al + +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + + 009e2 0f b6 41 fd movzx eax, BYTE PTR [rcx-3] + 009e6 f3 0f 2a c0 cvtsi2ss xmm0, eax + 009ea f3 0f 59 c2 mulss xmm0, xmm2 + 009ee f3 0f 58 c1 addss xmm0, xmm1 + 009f2 f3 0f 2c c0 cvttss2si eax, xmm0 + 009f6 88 41 fd mov BYTE PTR [rcx-3], al +$LN218@stbi__psd_: + +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { + + 009f9 44 0f b6 49 02 movzx r9d, BYTE PTR [rcx+2] + 009fe 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 00a02 3c fd cmp al, 253 ; 000000fdH + 00a04 77 6a ja SHORT $LN219@stbi__psd_ + +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + + 00a06 0f b6 41 ff movzx eax, BYTE PTR [rcx-1] + 00a0a 0f 57 c0 xorps xmm0, xmm0 + 00a0d f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 00a12 0f 28 d3 movaps xmm2, xmm3 + 00a15 0f 28 cb movaps xmm1, xmm3 + 00a18 f3 0f 5e c4 divss xmm0, xmm4 + 00a1c f3 0f 5e d0 divss xmm2, xmm0 + 00a20 0f 57 c0 xorps xmm0, xmm0 + 00a23 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00a27 f3 0f 5c ca subss xmm1, xmm2 + 00a2b f3 0f 59 c2 mulss xmm0, xmm2 + 00a2f f3 0f 59 cc mulss xmm1, xmm4 + 00a33 f3 0f 58 c1 addss xmm0, xmm1 + 00a37 f3 0f 2c c0 cvttss2si eax, xmm0 + 00a3b 0f 57 c0 xorps xmm0, xmm0 + 00a3e 88 41 ff mov BYTE PTR [rcx-1], al + +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + + 00a41 0f b6 01 movzx eax, BYTE PTR [rcx] + 00a44 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00a48 f3 0f 59 c2 mulss xmm0, xmm2 + 00a4c f3 0f 58 c1 addss xmm0, xmm1 + 00a50 f3 0f 2c c0 cvttss2si eax, xmm0 + 00a54 0f 57 c0 xorps xmm0, xmm0 + 00a57 88 01 mov BYTE PTR [rcx], al + +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + + 00a59 0f b6 41 01 movzx eax, BYTE PTR [rcx+1] + 00a5d f3 0f 2a c0 cvtsi2ss xmm0, eax + 00a61 f3 0f 59 c2 mulss xmm0, xmm2 + 00a65 f3 0f 58 c1 addss xmm0, xmm1 + 00a69 f3 0f 2c c0 cvttss2si eax, xmm0 + 00a6d 88 41 01 mov BYTE PTR [rcx+1], al +$LN219@stbi__psd_: + +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { + + 00a70 44 0f b6 49 06 movzx r9d, BYTE PTR [rcx+6] + 00a75 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 00a79 3c fd cmp al, 253 ; 000000fdH + 00a7b 77 6c ja SHORT $LN220@stbi__psd_ + +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + + 00a7d 0f b6 41 03 movzx eax, BYTE PTR [rcx+3] + 00a81 0f 57 c0 xorps xmm0, xmm0 + 00a84 f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 00a89 0f 28 d3 movaps xmm2, xmm3 + 00a8c 0f 28 cb movaps xmm1, xmm3 + 00a8f f3 0f 5e c4 divss xmm0, xmm4 + 00a93 f3 0f 5e d0 divss xmm2, xmm0 + 00a97 0f 57 c0 xorps xmm0, xmm0 + 00a9a f3 0f 2a c0 cvtsi2ss xmm0, eax + 00a9e f3 0f 5c ca subss xmm1, xmm2 + 00aa2 f3 0f 59 c2 mulss xmm0, xmm2 + 00aa6 f3 0f 59 cc mulss xmm1, xmm4 + 00aaa f3 0f 58 c1 addss xmm0, xmm1 + 00aae f3 0f 2c c0 cvttss2si eax, xmm0 + 00ab2 0f 57 c0 xorps xmm0, xmm0 + 00ab5 88 41 03 mov BYTE PTR [rcx+3], al + +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + + 00ab8 0f b6 41 04 movzx eax, BYTE PTR [rcx+4] + 00abc f3 0f 2a c0 cvtsi2ss xmm0, eax + 00ac0 f3 0f 59 c2 mulss xmm0, xmm2 + 00ac4 f3 0f 58 c1 addss xmm0, xmm1 + 00ac8 f3 0f 2c c0 cvttss2si eax, xmm0 + 00acc 0f 57 c0 xorps xmm0, xmm0 + 00acf 88 41 04 mov BYTE PTR [rcx+4], al + +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + + 00ad2 0f b6 41 05 movzx eax, BYTE PTR [rcx+5] + 00ad6 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00ada f3 0f 59 c2 mulss xmm0, xmm2 + 00ade f3 0f 58 c1 addss xmm0, xmm1 + 00ae2 f3 0f 2c c0 cvttss2si eax, xmm0 + 00ae6 88 41 05 mov BYTE PTR [rcx+5], al +$LN220@stbi__psd_: + +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { + + 00ae9 44 0f b6 49 0a movzx r9d, BYTE PTR [rcx+10] + 00aee 41 8d 41 ff lea eax, DWORD PTR [r9-1] + 00af2 3c fd cmp al, 253 ; 000000fdH + 00af4 77 6c ja SHORT $LN221@stbi__psd_ + +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + + 00af6 0f b6 41 07 movzx eax, BYTE PTR [rcx+7] + 00afa 0f 57 c0 xorps xmm0, xmm0 + 00afd f3 41 0f 2a c1 cvtsi2ss xmm0, r9d + 00b02 0f 28 d3 movaps xmm2, xmm3 + 00b05 0f 28 cb movaps xmm1, xmm3 + 00b08 f3 0f 5e c4 divss xmm0, xmm4 + 00b0c f3 0f 5e d0 divss xmm2, xmm0 + 00b10 0f 57 c0 xorps xmm0, xmm0 + 00b13 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00b17 f3 0f 5c ca subss xmm1, xmm2 + 00b1b f3 0f 59 c2 mulss xmm0, xmm2 + 00b1f f3 0f 59 cc mulss xmm1, xmm4 + 00b23 f3 0f 58 c1 addss xmm0, xmm1 + 00b27 f3 0f 2c c0 cvttss2si eax, xmm0 + 00b2b 0f 57 c0 xorps xmm0, xmm0 + 00b2e 88 41 07 mov BYTE PTR [rcx+7], al + +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + + 00b31 0f b6 41 08 movzx eax, BYTE PTR [rcx+8] + 00b35 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00b39 f3 0f 59 c2 mulss xmm0, xmm2 + 00b3d f3 0f 58 c1 addss xmm0, xmm1 + 00b41 f3 0f 2c c0 cvttss2si eax, xmm0 + 00b45 0f 57 c0 xorps xmm0, xmm0 + 00b48 88 41 08 mov BYTE PTR [rcx+8], al + +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + + 00b4b 0f b6 41 09 movzx eax, BYTE PTR [rcx+9] + 00b4f f3 0f 2a c0 cvtsi2ss xmm0, eax + 00b53 f3 0f 59 c2 mulss xmm0, xmm2 + 00b57 f3 0f 58 c1 addss xmm0, xmm1 + 00b5b f3 0f 2c c0 cvttss2si eax, xmm0 + 00b5f 88 41 09 mov BYTE PTR [rcx+9], al +$LN221@stbi__psd_: + 00b62 48 83 c1 10 add rcx, 16 + 00b66 49 83 e8 01 sub r8, 1 + 00b6a 0f 85 10 fe ff + ff jne $LL222@stbi__psd_ +$LC217@stbi__psd_: + +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { + + 00b70 4c 3b ea cmp r13, rdx + 00b73 0f 8d 93 00 00 + 00 jge $LN216@stbi__psd_ + 00b79 4a 8d 0c ad 01 + 00 00 00 lea rcx, QWORD PTR [r13*4+1] + 00b81 49 03 cc add rcx, r12 + 00b84 49 2b d5 sub rdx, r13 +$LC31@stbi__psd_: + +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { + + 00b87 44 0f b6 41 02 movzx r8d, BYTE PTR [rcx+2] + 00b8c 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 00b90 3c fd cmp al, 253 ; 000000fdH + 00b92 77 6a ja SHORT $LN29@stbi__psd_ + +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + + 00b94 0f b6 41 ff movzx eax, BYTE PTR [rcx-1] + 00b98 0f 57 c0 xorps xmm0, xmm0 + 00b9b f3 41 0f 2a c0 cvtsi2ss xmm0, r8d + 00ba0 0f 28 d3 movaps xmm2, xmm3 + 00ba3 0f 28 cb movaps xmm1, xmm3 + 00ba6 f3 0f 5e c4 divss xmm0, xmm4 + 00baa f3 0f 5e d0 divss xmm2, xmm0 + 00bae 0f 57 c0 xorps xmm0, xmm0 + 00bb1 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00bb5 f3 0f 5c ca subss xmm1, xmm2 + 00bb9 f3 0f 59 c2 mulss xmm0, xmm2 + 00bbd f3 0f 59 cc mulss xmm1, xmm4 + 00bc1 f3 0f 58 c1 addss xmm0, xmm1 + 00bc5 f3 0f 2c c0 cvttss2si eax, xmm0 + 00bc9 0f 57 c0 xorps xmm0, xmm0 + 00bcc 88 41 ff mov BYTE PTR [rcx-1], al + +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + + 00bcf 0f b6 01 movzx eax, BYTE PTR [rcx] + 00bd2 f3 0f 2a c0 cvtsi2ss xmm0, eax + 00bd6 f3 0f 59 c2 mulss xmm0, xmm2 + 00bda f3 0f 58 c1 addss xmm0, xmm1 + 00bde f3 0f 2c c0 cvttss2si eax, xmm0 + 00be2 0f 57 c0 xorps xmm0, xmm0 + 00be5 88 01 mov BYTE PTR [rcx], al + +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + + 00be7 0f b6 41 01 movzx eax, BYTE PTR [rcx+1] + 00beb f3 0f 2a c0 cvtsi2ss xmm0, eax + 00bef f3 0f 59 c2 mulss xmm0, xmm2 + 00bf3 f3 0f 58 c1 addss xmm0, xmm1 + 00bf7 f3 0f 2c c0 cvttss2si eax, xmm0 + 00bfb 88 41 01 mov BYTE PTR [rcx+1], al +$LN29@stbi__psd_: + +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { + + 00bfe 48 83 c1 04 add rcx, 4 + 00c02 48 83 ea 01 sub rdx, 1 + 00c06 0f 85 7b ff ff + ff jne $LC31@stbi__psd_ +$LN216@stbi__psd_: + +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { + + 00c0c 44 8b 84 24 b0 + 00 00 00 mov r8d, DWORD PTR req_comp$[rsp] + 00c14 41 f7 c0 fb ff + ff ff test r8d, -5 ; fffffffbH + 00c1b 74 2e je SHORT $LN66@stbi__psd_ + +; 5861 : if (ri->bits_per_channel == 16) + + 00c1d 41 83 3a 10 cmp DWORD PTR [r10], 16 + 00c21 45 8b ce mov r9d, r14d + 00c24 44 89 7c 24 20 mov DWORD PTR [rsp+32], r15d + 00c29 ba 04 00 00 00 mov edx, 4 + 00c2e 49 8b cc mov rcx, r12 + 00c31 75 07 jne SHORT $LN64@stbi__psd_ + +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); + + 00c33 e8 00 00 00 00 call stbi__convert_format16 + 00c38 eb 05 jmp SHORT $LN337@stbi__psd_ +$LN64@stbi__psd_: + +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); + + 00c3a e8 00 00 00 00 call stbi__convert_format +$LN337@stbi__psd_: + +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure + + 00c3f 4c 8b e0 mov r12, rax + 00c42 48 85 c0 test rax, rax + 00c45 0f 84 9f f8 ff + ff je $LN338@stbi__psd_ +$LN66@stbi__psd_: + +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; + + 00c4b 48 8b 84 24 a8 + 00 00 00 mov rax, QWORD PTR comp$[rsp] + 00c53 48 85 c0 test rax, rax + 00c56 74 06 je SHORT $LN67@stbi__psd_ + 00c58 c7 00 04 00 00 + 00 mov DWORD PTR [rax], 4 +$LN67@stbi__psd_: + +; 5869 : *y = h; + + 00c5e 48 8b 84 24 a0 + 00 00 00 mov rax, QWORD PTR y$[rsp] + 00c66 44 89 38 mov DWORD PTR [rax], r15d + +; 5870 : *x = w; + + 00c69 48 8b 84 24 98 + 00 00 00 mov rax, QWORD PTR x$[rsp] + 00c71 44 89 30 mov DWORD PTR [rax], r14d + +; 5871 : +; 5872 : return out; + + 00c74 49 8b c4 mov rax, r12 + 00c77 e9 70 f8 ff ff jmp $LN333@stbi__psd_ +$LN240@stbi__psd_: + +; 431 : stbi__g_failure_reason = str; + + 00c7c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00c82 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00c8b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00c90 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00c94 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 00c9b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); + + 00c9f 33 c0 xor eax, eax + 00ca1 e9 58 f8 ff ff jmp $LN330@stbi__psd_ +$LN35@stbi__psd_: + +; 431 : stbi__g_failure_reason = str; + + 00ca6 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00cac 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00cb5 48 8b 74 24 70 mov rsi, QWORD PTR [rsp+112] + 00cba b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00cbf 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00cc3 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ + 00cca 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + 00cce 33 c0 xor eax, eax + +; 5873 : } + + 00cd0 48 83 c4 78 add rsp, 120 ; 00000078H + 00cd4 5f pop rdi + 00cd5 5b pop rbx + 00cd6 c3 ret 0 +stbi__psd_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pic_is4 +_TEXT SEGMENT +s$ = 48 +str$ = 56 +stbi__pic_is4 PROC ; COMDAT + +; 5885 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 57 push rdi + 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H + 0000f 48 8b f2 mov rsi, rdx + 00012 48 8b d9 mov rbx, rcx + 00015 33 ff xor edi, edi + 00017 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL4@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00020 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00027 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0002e 73 0f jae SHORT $LN8@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00030 0f b6 08 movzx ecx, BYTE PTR [rax] + 00033 48 ff c0 inc rax + 00036 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0003d eb 26 jmp SHORT $LN7@stbi__pic_ +$LN8@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 0003f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00043 74 1e je SHORT $LN9@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 00045 48 8b cb mov rcx, rbx + 00048 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0004d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00054 0f b6 08 movzx ecx, BYTE PTR [rax] + 00057 48 ff c0 inc rax + 0005a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00061 eb 02 jmp SHORT $LN7@stbi__pic_ +$LN9@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 00063 32 c9 xor cl, cl +$LN7@stbi__pic_: + +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) + + 00065 3a 0c 37 cmp cl, BYTE PTR [rdi+rsi] + 00068 75 1e jne SHORT $LN12@stbi__pic_ + +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) + + 0006a 48 ff c7 inc rdi + 0006d 48 83 ff 04 cmp rdi, 4 + 00071 7c ad jl SHORT $LL4@stbi__pic_ + +; 5889 : return 0; +; 5890 : +; 5891 : return 1; + + 00073 b8 01 00 00 00 mov eax, 1 + +; 5892 : } + + 00078 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0007d 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 00082 48 83 c4 20 add rsp, 32 ; 00000020H + 00086 5f pop rdi + 00087 c3 ret 0 +$LN12@stbi__pic_: + 00088 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0008d 33 c0 xor eax, eax + 0008f 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 00094 48 83 c4 20 add rsp, 32 ; 00000020H + 00098 5f pop rdi + 00099 c3 ret 0 +stbi__pic_is4 ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pic_test_core +_TEXT SEGMENT +s$ = 48 +stbi__pic_test_core PROC ; COMDAT + +; 5895 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 57 push rdi + 00010 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + + 00014 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@ + 0001b 48 8b d9 mov rbx, rcx + 0001e e8 00 00 00 00 call stbi__pic_is4 + 00023 85 c0 test eax, eax + 00025 0f 84 a7 00 00 + 00 je $LN32@stbi__pic_ + +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) + + 0002b bf 54 00 00 00 mov edi, 84 ; 00000054H +$LL4@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00030 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00037 48 8d 73 30 lea rsi, QWORD PTR [rbx+48] + 0003b 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00042 73 0c jae SHORT $LN9@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00044 48 ff c0 inc rax + 00047 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0004e eb 1b jmp SHORT $LN2@stbi__pic_ +$LN9@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 00050 83 3e 00 cmp DWORD PTR [rsi], 0 + 00053 74 16 je SHORT $LN2@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 00055 48 8b cb mov rcx, rbx + 00058 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0005d 48 ff 83 c0 00 + 00 00 inc QWORD PTR [rbx+192] + 00064 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN2@stbi__pic_: + +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) + + 0006b 48 83 ef 01 sub rdi, 1 + 0006f 75 bf jne SHORT $LL4@stbi__pic_ + 00071 48 8d 2d 00 00 + 00 00 lea rbp, OFFSET FLAT:??_C@_04ELNJHLFH@PICT@ + 00078 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL15@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00080 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00087 73 0f jae SHORT $LN19@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00089 0f b6 08 movzx ecx, BYTE PTR [rax] + 0008c 48 ff c0 inc rax + 0008f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00096 eb 25 jmp SHORT $LN18@stbi__pic_ +$LN19@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 00098 83 3e 00 cmp DWORD PTR [rsi], 0 + 0009b 74 1e je SHORT $LN20@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 0009d 48 8b cb mov rcx, rbx + 000a0 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000a5 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000ac 0f b6 08 movzx ecx, BYTE PTR [rax] + 000af 48 ff c0 inc rax + 000b2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000b9 eb 02 jmp SHORT $LN18@stbi__pic_ +$LN20@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 000bb 32 c9 xor cl, cl +$LN18@stbi__pic_: + +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) + + 000bd 3a 0c 2f cmp cl, BYTE PTR [rdi+rbp] + 000c0 75 10 jne SHORT $LN32@stbi__pic_ + +; 1084 : } +; 1085 : +; 1086 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1087 : // nothing +; 1088 : #else +; 1089 : stbi_inline static int stbi__at_eof(stbi__context* s) +; 1090 : { +; 1091 : if (s->io.read) { +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) + + 000c2 48 ff c7 inc rdi + 000c5 48 83 ff 04 cmp rdi, 4 + 000c9 7c b5 jl SHORT $LL15@stbi__pic_ + +; 5906 : +; 5907 : return 1; + + 000cb b8 01 00 00 00 mov eax, 1 + 000d0 eb 02 jmp SHORT $LN1@stbi__pic_ +$LN32@stbi__pic_: + +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; + + 000d2 33 c0 xor eax, eax +$LN1@stbi__pic_: + +; 5908 : } + + 000d4 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000d9 48 8b 6c 24 38 mov rbp, QWORD PTR [rsp+56] + 000de 48 8b 74 24 40 mov rsi, QWORD PTR [rsp+64] + 000e3 48 83 c4 20 add rsp, 32 ; 00000020H + 000e7 5f pop rdi + 000e8 c3 ret 0 +stbi__pic_test_core ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__readval +_TEXT SEGMENT +s$ = 48 +channel$ = 56 +dest$ = 64 +stbi__readval PROC ; COMDAT + +; 5916 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 56 push r14 + 00016 48 83 ec 20 sub rsp, 32 ; 00000020H + 0001a 49 8b e8 mov rbp, r8 + 0001d 44 8b f2 mov r14d, edx + 00020 48 8b d9 mov rbx, rcx + +; 5917 : int mask = 0x80, i; + + 00023 be 80 00 00 00 mov esi, 128 ; 00000080H + 00028 33 ff xor edi, edi + 0002a 66 0f 1f 44 00 + 00 npad 6 +$LL4@stbi__read: + +; 5920 : if (channel & mask) { + + 00030 41 85 f6 test esi, r14d + 00033 0f 84 a7 00 00 + 00 je $LN2@stbi__read + +; 1091 : if (s->io.read) { + + 00039 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 0003e 74 42 je SHORT $LN25@stbi__read + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 00040 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 00044 ff 53 20 call QWORD PTR [rbx+32] + 00047 85 c0 test eax, eax + 00049 75 06 jne SHORT $LN10@stbi__read + 0004b 48 8d 4b 30 lea rcx, QWORD PTR [rbx+48] + 0004f eb 48 jmp SHORT $LN26@stbi__read +$LN10@stbi__read: + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00051 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00055 48 8d 43 30 lea rax, QWORD PTR [rbx+48] + 00059 75 2b jne SHORT $LN23@stbi__read +$LN27@stbi__read: + +; 431 : stbi__g_failure_reason = str; + + 0005b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00064 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 0006a ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 0006f 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 00073 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@ + 0007a 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); + + 0007e 33 c0 xor eax, eax + 00080 eb 70 jmp SHORT $LN1@stbi__read +$LN25@stbi__read: + 00082 48 8d 43 30 lea rax, QWORD PTR [rbx+48] +$LN23@stbi__read: + 00086 48 8b c8 mov rcx, rax + 00089 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00090 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 00097 73 c2 jae SHORT $LN27@stbi__read +$LN26@stbi__read: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00099 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000a0 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000a7 73 0f jae SHORT $LN16@stbi__read + +; 1078 : return *s->img_buffer++; + + 000a9 0f b6 08 movzx ecx, BYTE PTR [rax] + 000ac 48 ff c0 inc rax + 000af 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000b6 eb 25 jmp SHORT $LN15@stbi__read +$LN16@stbi__read: + +; 1079 : if (s->read_from_callbacks) { + + 000b8 83 39 00 cmp DWORD PTR [rcx], 0 + 000bb 74 1e je SHORT $LN17@stbi__read + +; 1080 : stbi__refill_buffer(s); + + 000bd 48 8b cb mov rcx, rbx + 000c0 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000c5 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000cc 0f b6 08 movzx ecx, BYTE PTR [rax] + 000cf 48 ff c0 inc rax + 000d2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000d9 eb 02 jmp SHORT $LN15@stbi__read +$LN17@stbi__read: + +; 1082 : } +; 1083 : return 0; + + 000db 32 c9 xor cl, cl +$LN15@stbi__read: + +; 5922 : dest[i] = stbi__get8(s); + + 000dd 88 0c 2f mov BYTE PTR [rdi+rbp], cl +$LN2@stbi__read: + +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { + + 000e0 48 ff c7 inc rdi + 000e3 d1 fe sar esi, 1 + 000e5 48 83 ff 04 cmp rdi, 4 + 000e9 0f 8c 41 ff ff + ff jl $LL4@stbi__read + +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; + + 000ef 48 8b c5 mov rax, rbp +$LN1@stbi__read: + +; 5927 : } + + 000f2 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000f7 48 8b 6c 24 38 mov rbp, QWORD PTR [rsp+56] + 000fc 48 8b 74 24 40 mov rsi, QWORD PTR [rsp+64] + 00101 48 8b 7c 24 48 mov rdi, QWORD PTR [rsp+72] + 00106 48 83 c4 20 add rsp, 32 ; 00000020H + 0010a 41 5e pop r14 + 0010c c3 ret 0 +stbi__readval ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__copyval +_TEXT SEGMENT +channel$ = 8 +dest$ = 16 +src$ = 24 +stbi__copyval PROC ; COMDAT + +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 00000 84 c9 test cl, cl + 00002 79 06 jns SHORT $LN2@stbi__copy + +; 5935 : dest[i] = src[i]; + + 00004 41 0f b6 00 movzx eax, BYTE PTR [r8] + 00008 88 02 mov BYTE PTR [rdx], al +$LN2@stbi__copy: + +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 0000a f6 c1 40 test cl, 64 ; 00000040H + 0000d 74 08 je SHORT $LN10@stbi__copy + +; 5935 : dest[i] = src[i]; + + 0000f 41 0f b6 40 01 movzx eax, BYTE PTR [r8+1] + 00014 88 42 01 mov BYTE PTR [rdx+1], al +$LN10@stbi__copy: + +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 00017 f6 c1 20 test cl, 32 ; 00000020H + 0001a 74 08 je SHORT $LN12@stbi__copy + +; 5935 : dest[i] = src[i]; + + 0001c 41 0f b6 40 02 movzx eax, BYTE PTR [r8+2] + 00021 88 42 02 mov BYTE PTR [rdx+2], al +$LN12@stbi__copy: + +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 00024 f6 c1 10 test cl, 16 + 00027 74 08 je SHORT $LN14@stbi__copy + +; 5935 : dest[i] = src[i]; + + 00029 41 0f b6 40 03 movzx eax, BYTE PTR [r8+3] + 0002e 88 42 03 mov BYTE PTR [rdx+3], al +$LN14@stbi__copy: + +; 5936 : } + + 00031 c3 ret 0 +stbi__copyval ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pic_load_core +_TEXT SEGMENT +height$1$ = 32 +y$1$ = 36 +tv1687 = 40 +$T9 = 48 +$T10 = 56 +result$GSCopy$1$ = 64 +tv1705 = 72 +value$11 = 80 +value$12 = 84 +packets$ = 88 +__$ArrayPad$ = 120 +s$ = 192 +width$ = 200 +height$ = 208 +comp$ = 216 +result$ = 224 +stbi__pic_load_core PROC ; COMDAT + +; 5939 : { + + 00000 4c 8b dc mov r11, rsp + 00003 57 push rdi + 00004 41 54 push r12 + 00006 41 55 push r13 + 00008 41 56 push r14 + 0000a 41 57 push r15 + 0000c 48 81 ec 90 00 + 00 00 sub rsp, 144 ; 00000090H + 00013 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0001a 48 33 c4 xor rax, rsp + 0001d 48 89 44 24 78 mov QWORD PTR __$ArrayPad$[rsp], rax + 00022 48 8b 84 24 e0 + 00 00 00 mov rax, QWORD PTR result$[rsp] + 0002a 4d 8d 73 a0 lea r14, QWORD PTR [r11-96] + 0002e 49 89 5b 18 mov QWORD PTR [r11+24], rbx + +; 5940 : int act_comp = 0, num_packets = 0, y, chained; + + 00032 45 33 ff xor r15d, r15d + 00035 48 89 44 24 40 mov QWORD PTR result$GSCopy$1$[rsp], rax + 0003a 4d 8b e1 mov r12, r9 + 0003d 49 89 6b d0 mov QWORD PTR [r11-48], rbp + 00041 33 c0 xor eax, eax + 00043 44 89 44 24 20 mov DWORD PTR height$1$[rsp], r8d + 00048 44 8b ea mov r13d, edx + 0004b 48 8b f9 mov rdi, rcx + 0004e 49 89 73 c8 mov QWORD PTR [r11-56], rsi +$LL4@stbi__pic_: + +; 5941 : stbi__pic_packet packets[10]; +; 5942 : +; 5943 : // this will (should...) cater for even some bizarre stuff like having data +; 5944 : // for the same channel in multiple packets. +; 5945 : do { +; 5946 : stbi__pic_packet* packet; +; 5947 : +; 5948 : if (num_packets == sizeof(packets) / sizeof(packets[0])) + + 00052 48 83 f8 0a cmp rax, 10 + 00056 0f 84 19 05 00 + 00 je $LN128@stbi__pic_ + +; 5949 : return stbi__errpuc("bad format", "too many packets"); +; 5950 : +; 5951 : packet = &packets[num_packets++]; + + 0005c 48 ff c0 inc rax + 0005f 49 8b f6 mov rsi, r14 + 00062 48 89 44 24 30 mov QWORD PTR $T9[rsp], rax + 00067 49 83 c6 03 add r14, 3 + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0006b 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00072 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00079 73 0f jae SHORT $LN57@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 0007b 0f b6 28 movzx ebp, BYTE PTR [rax] + 0007e 48 ff c0 inc rax + 00081 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00088 eb 27 jmp SHORT $LN56@stbi__pic_ +$LN57@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 0008a 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0008e 74 1e je SHORT $LN58@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 00090 48 8b cf mov rcx, rdi + 00093 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00098 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0009f 0f b6 28 movzx ebp, BYTE PTR [rax] + 000a2 48 ff c0 inc rax + 000a5 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 000ac eb 03 jmp SHORT $LN56@stbi__pic_ +$LN58@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 000ae 40 32 ed xor bpl, bpl +$LN56@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000b1 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 000b8 73 0f jae SHORT $LN61@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 000ba 0f b6 18 movzx ebx, BYTE PTR [rax] + 000bd 48 ff c0 inc rax + 000c0 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 000c7 eb 26 jmp SHORT $LN60@stbi__pic_ +$LN61@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 000c9 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 000cd 74 1e je SHORT $LN62@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 000cf 48 8b cf mov rcx, rdi + 000d2 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000d7 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 000de 0f b6 18 movzx ebx, BYTE PTR [rax] + 000e1 48 ff c0 inc rax + 000e4 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 000eb eb 02 jmp SHORT $LN60@stbi__pic_ +$LN62@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 000ed 32 db xor bl, bl +$LN60@stbi__pic_: + +; 5952 : +; 5953 : chained = stbi__get8(s); +; 5954 : packet->size = stbi__get8(s); + + 000ef 88 1e mov BYTE PTR [rsi], bl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000f1 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 000f8 73 0f jae SHORT $LN65@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 000fa 0f b6 08 movzx ecx, BYTE PTR [rax] + 000fd 48 ff c0 inc rax + 00100 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00107 eb 26 jmp SHORT $LN64@stbi__pic_ +$LN65@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 00109 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0010d 74 1e je SHORT $LN66@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 0010f 48 8b cf mov rcx, rdi + 00112 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00117 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0011e 0f b6 08 movzx ecx, BYTE PTR [rax] + 00121 48 ff c0 inc rax + 00124 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0012b eb 02 jmp SHORT $LN64@stbi__pic_ +$LN66@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 0012d 32 c9 xor cl, cl +$LN64@stbi__pic_: + +; 5955 : packet->type = stbi__get8(s); + + 0012f 88 4e 01 mov BYTE PTR [rsi+1], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00132 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 00139 73 0f jae SHORT $LN69@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 0013b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0013e 48 ff c0 inc rax + 00141 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00148 eb 26 jmp SHORT $LN68@stbi__pic_ +$LN69@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 0014a 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0014e 74 1e je SHORT $LN70@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 00150 48 8b cf mov rcx, rdi + 00153 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00158 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 0015f 0f b6 08 movzx ecx, BYTE PTR [rax] + 00162 48 ff c0 inc rax + 00165 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0016c eb 02 jmp SHORT $LN68@stbi__pic_ +$LN70@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 0016e 32 c9 xor cl, cl +$LN68@stbi__pic_: + +; 5956 : packet->channel = stbi__get8(s); +; 5957 : +; 5958 : act_comp |= packet->channel; + + 00170 0f b6 c1 movzx eax, cl + 00173 44 0b f8 or r15d, eax + 00176 88 4e 02 mov BYTE PTR [rsi+2], cl + +; 1091 : if (s->io.read) { + + 00179 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 0017e 74 15 je SHORT $LN190@stbi__pic_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 00180 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 00184 ff 57 20 call QWORD PTR [rdi+32] + 00187 85 c0 test eax, eax + 00189 74 1e je SHORT $LN196@stbi__pic_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 0018b 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0018f 0f 84 c4 03 00 + 00 je $LN134@stbi__pic_ +$LN190@stbi__pic_: + +; 5959 : +; 5960 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (reading packets)"); + + 00195 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 0019c 48 39 87 c0 00 + 00 00 cmp QWORD PTR [rdi+192], rax + 001a3 0f 83 b0 03 00 + 00 jae $LN134@stbi__pic_ +$LN196@stbi__pic_: + +; 5961 : if (packet->size != 8) return stbi__errpuc("bad format", "packet isn't 8bpp"); + + 001a9 80 fb 08 cmp bl, 8 + 001ac 0f 85 c3 03 00 + 00 jne $LN128@stbi__pic_ + +; 5962 : } while (chained); + + 001b2 48 8b 44 24 30 mov rax, QWORD PTR $T9[rsp] + 001b7 40 84 ed test bpl, bpl + 001ba 0f 85 92 fe ff + ff jne $LL4@stbi__pic_ + +; 5963 : +; 5964 : *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + 001c0 41 f6 c7 10 test r15b, 16 + 001c4 b8 00 00 00 00 mov eax, 0 + 001c9 0f 95 c0 setne al + +; 5965 : +; 5966 : for (y = 0; y < height; ++y) { + + 001cc 33 c9 xor ecx, ecx + 001ce 83 c0 03 add eax, 3 + 001d1 89 4c 24 24 mov DWORD PTR y$1$[rsp], ecx + 001d5 41 89 04 24 mov DWORD PTR [r12], eax + 001d9 39 4c 24 20 cmp DWORD PTR height$1$[rsp], ecx + 001dd 0f 8e 6f 03 00 + 00 jle $LN202@stbi__pic_ + +; 5963 : +; 5964 : *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + 001e3 48 8b 44 24 30 mov rax, QWORD PTR $T9[rsp] + 001e8 46 8d 04 ad 00 + 00 00 00 lea r8d, DWORD PTR [r13*4] + 001f0 44 8b 4c 24 20 mov r9d, DWORD PTR height$1$[rsp] + 001f5 33 d2 xor edx, edx + 001f7 89 54 24 28 mov DWORD PTR tv1687[rsp], edx + 001fb 0f 1f 44 00 00 npad 5 +$LL7@stbi__pic_: + +; 5967 : int packet_idx; +; 5968 : +; 5969 : for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { + + 00200 48 c7 44 24 38 + 00 00 00 00 mov QWORD PTR $T10[rsp], 0 + 00209 48 85 c0 test rax, rax + 0020c 0f 8e 2a 03 00 + 00 jle $LN5@stbi__pic_ + 00212 48 63 c2 movsxd rax, edx + 00215 4c 8d 64 24 5a lea r12, QWORD PTR packets$[rsp+2] + 0021a 48 03 44 24 40 add rax, QWORD PTR result$GSCopy$1$[rsp] + 0021f 48 89 44 24 48 mov QWORD PTR tv1705[rsp], rax +$LL10@stbi__pic_: + +; 5970 : stbi__pic_packet* packet = &packets[packet_idx]; +; 5971 : stbi_uc* dest = result + y * width * 4; +; 5972 : +; 5973 : switch (packet->type) { + + 00224 41 0f b6 4c 24 + ff movzx ecx, BYTE PTR [r12-1] + 0022a 48 8b d8 mov rbx, rax + 0022d 85 c9 test ecx, ecx + 0022f 0f 84 9e 02 00 + 00 je $LN33@stbi__pic_ + 00235 83 e9 01 sub ecx, 1 + 00238 0f 84 84 01 00 + 00 je $LN35@stbi__pic_ + 0023e 83 f9 01 cmp ecx, 1 + 00241 0f 85 2e 03 00 + 00 jne $LN128@stbi__pic_ + +; 6004 : } +; 6005 : } +; 6006 : break; +; 6007 : +; 6008 : case 2: {//Mixed RLE +; 6009 : int left = width; + + 00247 45 8b fd mov r15d, r13d + +; 6010 : while (left > 0) { + + 0024a 45 85 ed test r13d, r13d + 0024d 0f 8e ae 02 00 + 00 jle $LN8@stbi__pic_ + 00253 0f 1f 40 00 66 + 0f 1f 84 00 00 + 00 00 00 npad 13 +$LL21@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00260 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00267 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0026e 73 0f jae SHORT $LN87@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00270 0f b6 08 movzx ecx, BYTE PTR [rax] + 00273 48 ff c0 inc rax + 00276 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0027d eb 26 jmp SHORT $LN86@stbi__pic_ +$LN87@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 0027f 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 00283 74 1e je SHORT $LN88@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 00285 48 8b cf mov rcx, rdi + 00288 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0028d 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00294 0f b6 08 movzx ecx, BYTE PTR [rax] + 00297 48 ff c0 inc rax + 0029a 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 002a1 eb 02 jmp SHORT $LN86@stbi__pic_ +$LN88@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 002a3 32 c9 xor cl, cl +$LN86@stbi__pic_: + +; 1091 : if (s->io.read) { + + 002a5 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + +; 6011 : int count = stbi__get8(s), i; + + 002aa 0f b6 e9 movzx ebp, cl + +; 1091 : if (s->io.read) { + + 002ad 74 15 je SHORT $LN192@stbi__pic_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 002af 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 002b3 ff 57 20 call QWORD PTR [rdi+32] + 002b6 85 c0 test eax, eax + 002b8 74 1e je SHORT $LN195@stbi__pic_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 002ba 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 002be 0f 84 95 02 00 + 00 je $LN134@stbi__pic_ +$LN192@stbi__pic_: + +; 6012 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (mixed read count)"); + + 002c4 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 002cb 48 39 87 c0 00 + 00 00 cmp QWORD PTR [rdi+192], rax + 002d2 0f 83 81 02 00 + 00 jae $LN134@stbi__pic_ +$LN195@stbi__pic_: + +; 6013 : +; 6014 : if (count >= 128) { // Repeated + + 002d8 81 fd 80 00 00 + 00 cmp ebp, 128 ; 00000080H + 002de 0f 82 8c 00 00 + 00 jb $LN41@stbi__pic_ + +; 6015 : stbi_uc value[4]; +; 6016 : +; 6017 : if (count == 128) + + 002e4 75 0c jne SHORT $LN43@stbi__pic_ + +; 6018 : count = stbi__get16be(s); + + 002e6 48 8b cf mov rcx, rdi + 002e9 e8 00 00 00 00 call stbi__get16be + 002ee 8b e8 mov ebp, eax + 002f0 eb 03 jmp SHORT $LN44@stbi__pic_ +$LN43@stbi__pic_: + +; 6019 : else +; 6020 : count -= 127; + + 002f2 83 ed 7f sub ebp, 127 ; 0000007fH +$LN44@stbi__pic_: + +; 6021 : if (count > left) + + 002f5 41 3b ef cmp ebp, r15d + 002f8 0f 8f 5b 02 00 + 00 jg $LN134@stbi__pic_ + +; 6022 : return stbi__errpuc("bad file", "scanline overrun"); +; 6023 : +; 6024 : if (!stbi__readval(s, packet->channel, value)) + + 002fe 41 0f b6 34 24 movzx esi, BYTE PTR [r12] + 00303 4c 8d 44 24 50 lea r8, QWORD PTR value$11[rsp] + 00308 8b d6 mov edx, esi + 0030a 48 8b cf mov rcx, rdi + 0030d e8 00 00 00 00 call stbi__readval + 00312 48 85 c0 test rax, rax + 00315 0f 84 7d 02 00 + 00 je $LN139@stbi__pic_ + +; 6025 : return 0; +; 6026 : +; 6027 : for (i = 0; i < count; ++i, dest += 4) + + 0031b 85 ed test ebp, ebp + 0031d 0f 8e 8e 00 00 + 00 jle $LN27@stbi__pic_ + +; 6028 : stbi__copyval(packet->channel, dest, value); + + 00323 8b 44 24 50 mov eax, DWORD PTR value$11[rsp] + 00327 0f b6 54 24 53 movzx edx, BYTE PTR value$11[rsp+3] + 0032c 44 0f b6 44 24 + 52 movzx r8d, BYTE PTR value$11[rsp+2] + 00332 44 0f b6 4c 24 + 51 movzx r9d, BYTE PTR value$11[rsp+1] + 00338 8b cd mov ecx, ebp + 0033a 66 0f 1f 44 00 + 00 npad 6 +$LL25@stbi__pic_: + +; 5934 : if (channel & mask) + + 00340 40 84 f6 test sil, sil + 00343 79 02 jns SHORT $LN100@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 00345 88 03 mov BYTE PTR [rbx], al +$LN100@stbi__pic_: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 00347 40 f6 c6 40 test sil, 64 ; 00000040H + 0034b 74 04 je SHORT $LN151@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 0034d 44 88 4b 01 mov BYTE PTR [rbx+1], r9b +$LN151@stbi__pic_: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 00351 40 f6 c6 20 test sil, 32 ; 00000020H + 00355 74 04 je SHORT $LN153@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 00357 44 88 43 02 mov BYTE PTR [rbx+2], r8b +$LN153@stbi__pic_: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 0035b 40 f6 c6 10 test sil, 16 + 0035f 74 03 je SHORT $LN155@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 00361 88 53 03 mov BYTE PTR [rbx+3], dl +$LN155@stbi__pic_: + +; 6025 : return 0; +; 6026 : +; 6027 : for (i = 0; i < count; ++i, dest += 4) + + 00364 48 83 c3 04 add rbx, 4 + 00368 48 83 e9 01 sub rcx, 1 + 0036c 75 d2 jne SHORT $LL25@stbi__pic_ + +; 6029 : } + + 0036e eb 41 jmp SHORT $LN27@stbi__pic_ +$LN41@stbi__pic_: + +; 6030 : else { // Raw +; 6031 : ++count; + + 00370 ff c5 inc ebp + +; 6032 : if (count > left) return stbi__errpuc("bad file", "scanline overrun"); + + 00372 41 3b ef cmp ebp, r15d + 00375 0f 87 de 01 00 + 00 ja $LN134@stbi__pic_ + +; 6033 : +; 6034 : for (i = 0; i < count; ++i, dest += 4) + + 0037b 33 f6 xor esi, esi + 0037d 85 ed test ebp, ebp + 0037f 74 30 je SHORT $LN27@stbi__pic_ + 00381 45 0f b6 34 24 movzx r14d, BYTE PTR [r12] + 00386 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL28@stbi__pic_: + +; 6035 : if (!stbi__readval(s, packet->channel, dest)) + + 00390 4c 8b c3 mov r8, rbx + 00393 41 8b d6 mov edx, r14d + 00396 48 8b cf mov rcx, rdi + 00399 e8 00 00 00 00 call stbi__readval + 0039e 48 85 c0 test rax, rax + 003a1 0f 84 f1 01 00 + 00 je $LN139@stbi__pic_ + +; 6033 : +; 6034 : for (i = 0; i < count; ++i, dest += 4) + + 003a7 ff c6 inc esi + 003a9 48 83 c3 04 add rbx, 4 + 003ad 3b f5 cmp esi, ebp + 003af 7c df jl SHORT $LL28@stbi__pic_ +$LN27@stbi__pic_: + +; 6036 : return 0; +; 6037 : } +; 6038 : left -= count; + + 003b1 44 2b fd sub r15d, ebp + 003b4 45 85 ff test r15d, r15d + 003b7 0f 8f a3 fe ff + ff jg $LL21@stbi__pic_ + +; 5981 : if (!stbi__readval(s, packet->channel, dest)) + + 003bd e9 3f 01 00 00 jmp $LN8@stbi__pic_ +$LN35@stbi__pic_: + +; 5982 : return 0; +; 5983 : break; +; 5984 : } +; 5985 : +; 5986 : case 1://Pure RLE +; 5987 : { +; 5988 : int left = width, i; + + 003c2 45 8b f5 mov r14d, r13d + +; 5989 : +; 5990 : while (left > 0) { + + 003c5 45 85 ed test r13d, r13d + 003c8 0f 8e 33 01 00 + 00 jle $LN8@stbi__pic_ + 003ce 66 90 npad 2 +$LL16@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003d0 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 003d7 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 003de 73 0f jae SHORT $LN78@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 003e0 0f b6 30 movzx esi, BYTE PTR [rax] + 003e3 48 ff c0 inc rax + 003e6 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 003ed eb 27 jmp SHORT $LN77@stbi__pic_ +$LN78@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 003ef 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 003f3 74 1e je SHORT $LN79@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 003f5 48 8b cf mov rcx, rdi + 003f8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003fd 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00404 0f b6 30 movzx esi, BYTE PTR [rax] + 00407 48 ff c0 inc rax + 0040a 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00411 eb 03 jmp SHORT $LN77@stbi__pic_ +$LN79@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 00413 40 32 f6 xor sil, sil +$LN77@stbi__pic_: + +; 1091 : if (s->io.read) { + + 00416 48 83 7f 10 00 cmp QWORD PTR [rdi+16], 0 + 0041b 74 15 je SHORT $LN193@stbi__pic_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0041d 48 8b 4f 28 mov rcx, QWORD PTR [rdi+40] + 00421 ff 57 20 call QWORD PTR [rdi+32] + 00424 85 c0 test eax, eax + 00426 74 1e je SHORT $LN194@stbi__pic_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00428 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0042c 0f 84 27 01 00 + 00 je $LN134@stbi__pic_ +$LN193@stbi__pic_: + +; 5991 : stbi_uc count, value[4]; +; 5992 : +; 5993 : count = stbi__get8(s); +; 5994 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pure read count)"); + + 00432 48 8b 87 c8 00 + 00 00 mov rax, QWORD PTR [rdi+200] + 00439 48 39 87 c0 00 + 00 00 cmp QWORD PTR [rdi+192], rax + 00440 0f 83 13 01 00 + 00 jae $LN134@stbi__pic_ +$LN194@stbi__pic_: + +; 5995 : +; 5996 : if (count > left) + + 00446 40 0f b6 ce movzx ecx, sil + +; 5997 : count = (stbi_uc)left; +; 5998 : +; 5999 : if (!stbi__readval(s, packet->channel, value)) return 0; + + 0044a 4c 8d 44 24 54 lea r8, QWORD PTR value$12[rsp] + 0044f 41 3b ce cmp ecx, r14d + 00452 40 0f b6 ee movzx ebp, sil + 00456 41 0f b6 34 24 movzx esi, BYTE PTR [r12] + 0045b 48 8b cf mov rcx, rdi + 0045e 41 0f b6 c6 movzx eax, r14b + 00462 8b d6 mov edx, esi + 00464 0f 47 e8 cmova ebp, eax + 00467 e8 00 00 00 00 call stbi__readval + 0046c 48 85 c0 test rax, rax + 0046f 0f 84 23 01 00 + 00 je $LN139@stbi__pic_ + +; 6000 : +; 6001 : for (i = 0; i < count; ++i, dest += 4) + + 00475 40 84 ed test bpl, bpl + 00478 74 47 je SHORT $LN19@stbi__pic_ + +; 6002 : stbi__copyval(packet->channel, dest, value); + + 0047a 8b 44 24 54 mov eax, DWORD PTR value$12[rsp] + 0047e 0f b6 54 24 57 movzx edx, BYTE PTR value$12[rsp+3] + 00483 44 0f b6 44 24 + 56 movzx r8d, BYTE PTR value$12[rsp+2] + 00489 44 0f b6 4c 24 + 55 movzx r9d, BYTE PTR value$12[rsp+1] + 0048f 40 0f b6 cd movzx ecx, bpl +$LL20@stbi__pic_: + +; 5934 : if (channel & mask) + + 00493 40 84 f6 test sil, sil + 00496 79 02 jns SHORT $LN51@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 00498 88 03 mov BYTE PTR [rbx], al +$LN51@stbi__pic_: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 0049a 40 f6 c6 40 test sil, 64 ; 00000040H + 0049e 74 04 je SHORT $LN157@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 004a0 44 88 4b 01 mov BYTE PTR [rbx+1], r9b +$LN157@stbi__pic_: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 004a4 40 f6 c6 20 test sil, 32 ; 00000020H + 004a8 74 04 je SHORT $LN159@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 004aa 44 88 43 02 mov BYTE PTR [rbx+2], r8b +$LN159@stbi__pic_: + +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) + + 004ae 40 f6 c6 10 test sil, 16 + 004b2 74 03 je SHORT $LN161@stbi__pic_ + +; 5935 : dest[i] = src[i]; + + 004b4 88 53 03 mov BYTE PTR [rbx+3], dl +$LN161@stbi__pic_: + +; 6000 : +; 6001 : for (i = 0; i < count; ++i, dest += 4) + + 004b7 48 83 c3 04 add rbx, 4 + 004bb 48 83 e9 01 sub rcx, 1 + 004bf 75 d2 jne SHORT $LL20@stbi__pic_ +$LN19@stbi__pic_: + +; 6003 : left -= count; + + 004c1 40 0f b6 c5 movzx eax, bpl + 004c5 44 2b f0 sub r14d, eax + 004c8 45 85 f6 test r14d, r14d + 004cb 0f 8f ff fe ff + ff jg $LL16@stbi__pic_ + +; 5989 : +; 5990 : while (left > 0) { + + 004d1 eb 2e jmp SHORT $LN8@stbi__pic_ +$LN33@stbi__pic_: + +; 5974 : default: +; 5975 : return stbi__errpuc("bad format", "packet has bad compression type"); +; 5976 : +; 5977 : case 0: {//uncompressed +; 5978 : int x; +; 5979 : +; 5980 : for (x = 0; x < width; ++x, dest += 4) + + 004d3 33 f6 xor esi, esi + 004d5 45 85 ed test r13d, r13d + 004d8 7e 27 jle SHORT $LN8@stbi__pic_ + 004da 41 0f b6 2c 24 movzx ebp, BYTE PTR [r12] + 004df 90 npad 1 +$LL15@stbi__pic_: + +; 5981 : if (!stbi__readval(s, packet->channel, dest)) + + 004e0 4c 8b c3 mov r8, rbx + 004e3 8b d5 mov edx, ebp + 004e5 48 8b cf mov rcx, rdi + 004e8 e8 00 00 00 00 call stbi__readval + 004ed 48 85 c0 test rax, rax + 004f0 0f 84 a2 00 00 + 00 je $LN139@stbi__pic_ + +; 5974 : default: +; 5975 : return stbi__errpuc("bad format", "packet has bad compression type"); +; 5976 : +; 5977 : case 0: {//uncompressed +; 5978 : int x; +; 5979 : +; 5980 : for (x = 0; x < width; ++x, dest += 4) + + 004f6 ff c6 inc esi + 004f8 48 83 c3 04 add rbx, 4 + 004fc 41 3b f5 cmp esi, r13d + 004ff 7c df jl SHORT $LL15@stbi__pic_ +$LN8@stbi__pic_: + +; 5967 : int packet_idx; +; 5968 : +; 5969 : for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { + + 00501 48 8b 44 24 38 mov rax, QWORD PTR $T10[rsp] + 00506 49 83 c4 03 add r12, 3 + 0050a 48 ff c0 inc rax + 0050d 48 3b 44 24 30 cmp rax, QWORD PTR $T9[rsp] + 00512 48 89 44 24 38 mov QWORD PTR $T10[rsp], rax + 00517 48 8b 44 24 48 mov rax, QWORD PTR tv1705[rsp] + 0051c 0f 8c 02 fd ff + ff jl $LL10@stbi__pic_ + 00522 48 8b 44 24 30 mov rax, QWORD PTR $T9[rsp] + 00527 46 8d 04 ad 00 + 00 00 00 lea r8d, DWORD PTR [r13*4] + 0052f 8b 4c 24 24 mov ecx, DWORD PTR y$1$[rsp] + 00533 8b 54 24 28 mov edx, DWORD PTR tv1687[rsp] + 00537 44 8b 4c 24 20 mov r9d, DWORD PTR height$1$[rsp] +$LN5@stbi__pic_: + +; 5965 : +; 5966 : for (y = 0; y < height; ++y) { + + 0053c ff c1 inc ecx + 0053e 41 03 d0 add edx, r8d + 00541 89 4c 24 24 mov DWORD PTR y$1$[rsp], ecx + 00545 89 54 24 28 mov DWORD PTR tv1687[rsp], edx + 00549 41 3b c9 cmp ecx, r9d + 0054c 0f 8c ae fc ff + ff jl $LL7@stbi__pic_ +$LN202@stbi__pic_: + +; 6039 : } +; 6040 : break; +; 6041 : } +; 6042 : } +; 6043 : } +; 6044 : } +; 6045 : +; 6046 : return result; + + 00552 48 8b 44 24 40 mov rax, QWORD PTR result$GSCopy$1$[rsp] + 00557 eb 41 jmp SHORT $LN1@stbi__pic_ +$LN134@stbi__pic_: + +; 6047 : } + + 00559 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0055f 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00568 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0056c 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@ + 00573 eb 1a jmp SHORT $LN260@stbi__pic_ +$LN128@stbi__pic_: + 00575 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0057b 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00584 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00588 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@ +$LN260@stbi__pic_: + 0058f b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00594 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN139@stbi__pic_: + 00598 33 c0 xor eax, eax +$LN1@stbi__pic_: + 0059a 48 8b b4 24 80 + 00 00 00 mov rsi, QWORD PTR [rsp+128] + 005a2 48 8b ac 24 88 + 00 00 00 mov rbp, QWORD PTR [rsp+136] + 005aa 48 8b 9c 24 d0 + 00 00 00 mov rbx, QWORD PTR [rsp+208] + 005b2 48 8b 4c 24 78 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 005b7 48 33 cc xor rcx, rsp + 005ba e8 00 00 00 00 call __security_check_cookie + 005bf 48 81 c4 90 00 + 00 00 add rsp, 144 ; 00000090H + 005c6 41 5f pop r15 + 005c8 41 5e pop r14 + 005ca 41 5d pop r13 + 005cc 41 5c pop r12 + 005ce 5f pop rdi + 005cf c3 ret 0 +stbi__pic_load_core ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pic_load +_TEXT SEGMENT +py$GSCopy$1$ = 48 +internal_comp$ = 56 +__$ArrayPad$ = 64 +s$ = 160 +px$ = 168 +py$ = 176 +comp$ = 184 +req_comp$ = 192 +ri$dead$ = 200 +stbi__pic_load PROC ; COMDAT + +; 6050 : { + + 00000 40 53 push rbx + 00002 56 push rsi + 00003 57 push rdi + 00004 41 54 push r12 + 00006 41 55 push r13 + 00008 41 57 push r15 + 0000a 48 83 ec 68 sub rsp, 104 ; 00000068H + 0000e 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00015 48 33 c4 xor rax, rsp + 00018 48 89 44 24 40 mov QWORD PTR __$ArrayPad$[rsp], rax + 0001d 44 8b bc 24 c0 + 00 00 00 mov r15d, DWORD PTR req_comp$[rsp] + +; 6051 : stbi_uc* result; +; 6052 : int i, x, y, internal_comp; +; 6053 : STBI_NOTUSED(ri); +; 6054 : +; 6055 : if (!comp) comp = &internal_comp; +; 6056 : +; 6057 : for (i = 0; i < 92; ++i) + + 00025 4c 8d 64 24 38 lea r12, QWORD PTR internal_comp$[rsp] + 0002a 4d 85 c9 test r9, r9 + 0002d 4c 89 44 24 30 mov QWORD PTR py$GSCopy$1$[rsp], r8 + 00032 4c 8b ea mov r13, rdx + 00035 48 8b d9 mov rbx, rcx + 00038 4d 0f 45 e1 cmovne r12, r9 + 0003c bf 5c 00 00 00 mov edi, 92 ; 0000005cH + 00041 0f 1f 40 00 66 + 66 66 0f 1f 84 + 00 00 00 00 00 npad 15 +$LL4@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00050 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00057 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0005e 73 0c jae SHORT $LN15@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00060 48 ff c0 inc rax + 00063 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0006a eb 15 jmp SHORT $LN2@stbi__pic_ +$LN15@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 0006c 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00070 74 0f je SHORT $LN2@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 00072 48 8b cb mov rcx, rbx + 00075 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0007a 48 ff 83 c0 00 + 00 00 inc QWORD PTR [rbx+192] +$LN2@stbi__pic_: + +; 6051 : stbi_uc* result; +; 6052 : int i, x, y, internal_comp; +; 6053 : STBI_NOTUSED(ri); +; 6054 : +; 6055 : if (!comp) comp = &internal_comp; +; 6056 : +; 6057 : for (i = 0; i < 92; ++i) + + 00081 48 83 ef 01 sub rdi, 1 + 00085 75 c9 jne SHORT $LL4@stbi__pic_ + +; 6058 : stbi__get8(s); +; 6059 : +; 6060 : x = stbi__get16be(s); + + 00087 48 8b cb mov rcx, rbx + 0008a e8 00 00 00 00 call stbi__get16be + +; 6061 : y = stbi__get16be(s); + + 0008f 48 8b cb mov rcx, rbx + 00092 8b f0 mov esi, eax + 00094 e8 00 00 00 00 call stbi__get16be + 00099 8b f8 mov edi, eax + +; 6062 : +; 6063 : if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0009b 3d 00 00 00 01 cmp eax, 16777216 ; 01000000H + 000a0 7e 2a jle SHORT $LN6@stbi__pic_ +$LN108@stbi__pic_: + +; 6088 : } + + 000a2 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 000a8 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000b1 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 000b6 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 000ba 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 000c1 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 000c5 33 c0 xor eax, eax + 000c7 e9 7c 01 00 00 jmp $LN1@stbi__pic_ +$LN6@stbi__pic_: + +; 6064 : if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 000cc 81 fe 00 00 00 + 01 cmp esi, 16777216 ; 01000000H + 000d2 7f ce jg SHORT $LN108@stbi__pic_ + +; 1091 : if (s->io.read) { + + 000d4 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 000d9 74 11 je SHORT $LN25@stbi__pic_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 000db 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 000df ff 53 20 call QWORD PTR [rbx+32] + 000e2 85 c0 test eax, eax + 000e4 74 40 je SHORT $LN8@stbi__pic_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 000e6 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000ea 74 10 je SHORT $LN85@stbi__pic_ +$LN25@stbi__pic_: + +; 6065 : +; 6066 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pic header)"); + + 000ec 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 000f3 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 000fa 72 2a jb SHORT $LN8@stbi__pic_ +$LN85@stbi__pic_: + +; 431 : stbi__g_failure_reason = str; + + 000fc 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00102 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0010b b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00110 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00114 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@ + 0011b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 6065 : +; 6066 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pic header)"); + + 0011f 33 c0 xor eax, eax + 00121 e9 22 01 00 00 jmp $LN1@stbi__pic_ +$LN8@stbi__pic_: + +; 467 : if (a < 0 || b < 0) return 0; + + 00126 85 f6 test esi, esi + 00128 0f 88 74 ff ff + ff js $LN108@stbi__pic_ + 0012e 85 ff test edi, edi + 00130 0f 88 6c ff ff + ff js $LN108@stbi__pic_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00136 74 10 je SHORT $LN84@stbi__pic_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00138 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0013d 99 cdq + 0013e f7 ff idiv edi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00140 3b f0 cmp esi, eax + 00142 0f 8f 5a ff ff + ff jg $LN108@stbi__pic_ +$LN84@stbi__pic_: + 00148 8b cf mov ecx, edi + 0014a 0f af ce imul ecx, esi + +; 467 : if (a < 0 || b < 0) return 0; + + 0014d 85 c9 test ecx, ecx + 0014f 0f 88 4d ff ff + ff js $LN108@stbi__pic_ + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00155 81 f9 ff ff ff + 1f cmp ecx, 536870911 ; 1fffffffH + 0015b 0f 8f 41 ff ff + ff jg $LN108@stbi__pic_ + 00161 48 89 6c 24 60 mov QWORD PTR [rsp+96], rbp + 00166 48 8b cb mov rcx, rbx + 00169 4c 89 74 24 58 mov QWORD PTR [rsp+88], r14 + 0016e e8 00 00 00 00 call stbi__get16be + 00173 48 8b cb mov rcx, rbx + 00176 e8 00 00 00 00 call stbi__get16be + 0017b 48 8b cb mov rcx, rbx + 0017e e8 00 00 00 00 call stbi__get16be + 00183 48 8b cb mov rcx, rbx + 00186 e8 00 00 00 00 call stbi__get16be + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0018b 85 ff test edi, edi + 0018d 74 0c je SHORT $LN51@stbi__pic_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0018f b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00194 99 cdq + 00195 f7 ff idiv edi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00197 3b f0 cmp esi, eax + 00199 7f 7e jg SHORT $LN79@stbi__pic_ +$LN51@stbi__pic_: + +; 509 : return stbi__malloc(a * b * c + add); + + 0019b 8b c7 mov eax, edi + 0019d 0f af c6 imul eax, esi + 001a0 c1 e0 02 shl eax, 2 + 001a3 4c 63 f0 movsxd r14, eax + +; 438 : return STBI_MALLOC(size); + + 001a6 49 8b ce mov rcx, r14 + 001a9 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 001af 48 8b e8 mov rbp, rax + +; 6067 : if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); +; 6068 : +; 6069 : stbi__get32be(s); //skip `ratio' +; 6070 : stbi__get16be(s); //skip `fields' +; 6071 : stbi__get16be(s); //skip `pad' +; 6072 : +; 6073 : // intermediate buffer is RGBA +; 6074 : result = (stbi_uc*)stbi__malloc_mad3(x, y, 4, 0); +; 6075 : if (!result) return stbi__errpuc("outofmem", "Out of memory"); + + 001b2 48 85 c0 test rax, rax + 001b5 74 62 je SHORT $LN79@stbi__pic_ + +; 6076 : memset(result, 0xff, x * y * 4); + + 001b7 4d 8b c6 mov r8, r14 + 001ba ba ff 00 00 00 mov edx, 255 ; 000000ffH + 001bf 48 8b c8 mov rcx, rax + 001c2 e8 00 00 00 00 call memset + +; 6077 : +; 6078 : if (!stbi__pic_load_core(s, x, y, comp, result)) { + + 001c7 4d 8b cc mov r9, r12 + 001ca 48 89 6c 24 20 mov QWORD PTR [rsp+32], rbp + 001cf 44 8b c7 mov r8d, edi + 001d2 8b d6 mov edx, esi + 001d4 48 8b cb mov rcx, rbx + 001d7 e8 00 00 00 00 call stbi__pic_load_core + 001dc 48 85 c0 test rax, rax + 001df 75 0b jne SHORT $LN11@stbi__pic_ + +; 6079 : STBI_FREE(result); + + 001e1 48 8b cd mov rcx, rbp + 001e4 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 6080 : result = 0; + + 001ea 33 ed xor ebp, ebp +$LN11@stbi__pic_: + +; 6081 : } +; 6082 : *px = x; +; 6083 : *py = y; + + 001ec 48 8b 44 24 30 mov rax, QWORD PTR py$GSCopy$1$[rsp] + 001f1 41 89 75 00 mov DWORD PTR [r13], esi + 001f5 89 38 mov DWORD PTR [rax], edi + +; 6084 : if (req_comp == 0) req_comp = *comp; + + 001f7 45 85 ff test r15d, r15d + 001fa 75 04 jne SHORT $LN12@stbi__pic_ + 001fc 45 8b 3c 24 mov r15d, DWORD PTR [r12] +$LN12@stbi__pic_: + +; 6085 : result = stbi__convert_format(result, 4, req_comp, x, y); + + 00200 44 8b ce mov r9d, esi + 00203 89 7c 24 20 mov DWORD PTR [rsp+32], edi + 00207 45 8b c7 mov r8d, r15d + 0020a ba 04 00 00 00 mov edx, 4 + 0020f 48 8b cd mov rcx, rbp + 00212 e8 00 00 00 00 call stbi__convert_format + +; 6086 : +; 6087 : return result; + + 00217 eb 25 jmp SHORT $LN107@stbi__pic_ +$LN79@stbi__pic_: + +; 431 : stbi__g_failure_reason = str; + + 00219 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0021f 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00228 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0022d 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00231 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 00238 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 6067 : if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); +; 6068 : +; 6069 : stbi__get32be(s); //skip `ratio' +; 6070 : stbi__get16be(s); //skip `fields' +; 6071 : stbi__get16be(s); //skip `pad' +; 6072 : +; 6073 : // intermediate buffer is RGBA +; 6074 : result = (stbi_uc*)stbi__malloc_mad3(x, y, 4, 0); +; 6075 : if (!result) return stbi__errpuc("outofmem", "Out of memory"); + + 0023c 33 c0 xor eax, eax +$LN107@stbi__pic_: + 0023e 48 8b 6c 24 60 mov rbp, QWORD PTR [rsp+96] + 00243 4c 8b 74 24 58 mov r14, QWORD PTR [rsp+88] +$LN1@stbi__pic_: + +; 6088 : } + + 00248 48 8b 4c 24 40 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0024d 48 33 cc xor rcx, rsp + 00250 e8 00 00 00 00 call __security_check_cookie + 00255 48 83 c4 68 add rsp, 104 ; 00000068H + 00259 41 5f pop r15 + 0025b 41 5d pop r13 + 0025d 41 5c pop r12 + 0025f 5f pop rdi + 00260 5e pop rsi + 00261 5b pop rbx + 00262 c3 ret 0 +stbi__pic_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pic_test +_TEXT SEGMENT +s$ = 64 +stbi__pic_test PROC ; COMDAT + +; 6091 : { + + 00000 48 89 5c 24 20 mov QWORD PTR [rsp+32], rbx + 00005 55 push rbp + 00006 41 56 push r14 + 00008 41 57 push r15 + 0000a 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + + 0000e 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@ + +; 6091 : { + + 00015 48 8b e9 mov rbp, rcx + +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + + 00018 48 8d 99 c0 00 + 00 00 lea rbx, QWORD PTR [rcx+192] + 0001f e8 00 00 00 00 call stbi__pic_is4 + 00024 85 c0 test eax, eax + 00026 75 08 jne SHORT $LN7@stbi__pic_ + +; 5899 : return 0; + + 00028 45 33 ff xor r15d, r15d + 0002b e9 b5 00 00 00 jmp $LN3@stbi__pic_ +$LN7@stbi__pic_: + 00030 48 89 7c 24 48 mov QWORD PTR [rsp+72], rdi + +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) + + 00035 bf 54 00 00 00 mov edi, 84 ; 00000054H + 0003a 4c 89 64 24 50 mov QWORD PTR [rsp+80], r12 + 0003f 48 89 74 24 40 mov QWORD PTR [rsp+64], rsi + 00044 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL6@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00050 48 8b 03 mov rax, QWORD PTR [rbx] + 00053 48 8d 75 30 lea rsi, QWORD PTR [rbp+48] + 00057 48 3b 85 c8 00 + 00 00 cmp rax, QWORD PTR [rbp+200] + 0005e 73 08 jae SHORT $LN11@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00060 48 ff c0 inc rax + 00063 48 89 03 mov QWORD PTR [rbx], rax + 00066 eb 13 jmp SHORT $LN4@stbi__pic_ +$LN11@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 00068 83 3e 00 cmp DWORD PTR [rsi], 0 + 0006b 74 0e je SHORT $LN4@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 0006d 48 8b cd mov rcx, rbp + 00070 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00075 48 ff 03 inc QWORD PTR [rbx] + 00078 48 8b 03 mov rax, QWORD PTR [rbx] +$LN4@stbi__pic_: + +; 5901 : for (i = 0; i < 84; ++i) + + 0007b 48 83 ef 01 sub rdi, 1 + 0007f 75 cf jne SHORT $LL6@stbi__pic_ + 00081 45 33 ff xor r15d, r15d + 00084 4c 8d 25 00 00 + 00 00 lea r12, OFFSET FLAT:??_C@_04ELNJHLFH@PICT@ + 0008b 41 8b ff mov edi, r15d + 0008e 66 90 npad 2 +$LL17@stbi__pic_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00090 48 3b 85 c8 00 + 00 00 cmp rax, QWORD PTR [rbp+200] + 00097 73 0b jae SHORT $LN21@stbi__pic_ + +; 1078 : return *s->img_buffer++; + + 00099 0f b6 08 movzx ecx, BYTE PTR [rax] + 0009c 48 ff c0 inc rax + 0009f 48 89 03 mov QWORD PTR [rbx], rax + 000a2 eb 1d jmp SHORT $LN20@stbi__pic_ +$LN21@stbi__pic_: + +; 1079 : if (s->read_from_callbacks) { + + 000a4 44 39 3e cmp DWORD PTR [rsi], r15d + 000a7 74 16 je SHORT $LN22@stbi__pic_ + +; 1080 : stbi__refill_buffer(s); + + 000a9 48 8b cd mov rcx, rbp + 000ac e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000b1 48 8b 03 mov rax, QWORD PTR [rbx] + 000b4 0f b6 08 movzx ecx, BYTE PTR [rax] + 000b7 48 ff c0 inc rax + 000ba 48 89 03 mov QWORD PTR [rbx], rax + 000bd eb 02 jmp SHORT $LN20@stbi__pic_ +$LN22@stbi__pic_: + +; 1082 : } +; 1083 : return 0; + + 000bf 32 c9 xor cl, cl +$LN20@stbi__pic_: + +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) + + 000c1 42 3a 0c 27 cmp cl, BYTE PTR [rdi+r12] + 000c5 75 0f jne SHORT $LN36@stbi__pic_ + +; 1084 : } +; 1085 : +; 1086 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1087 : // nothing +; 1088 : #else +; 1089 : stbi_inline static int stbi__at_eof(stbi__context* s) +; 1090 : { +; 1091 : if (s->io.read) { +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) + + 000c7 48 ff c7 inc rdi + 000ca 48 83 ff 04 cmp rdi, 4 + 000ce 7c c0 jl SHORT $LL17@stbi__pic_ + +; 5907 : return 1; + + 000d0 41 bf 01 00 00 + 00 mov r15d, 1 +$LN36@stbi__pic_: + 000d6 48 8b 74 24 40 mov rsi, QWORD PTR [rsp+64] + 000db 48 8b 7c 24 48 mov rdi, QWORD PTR [rsp+72] + 000e0 4c 8b 64 24 50 mov r12, QWORD PTR [rsp+80] +$LN3@stbi__pic_: + +; 342 : s->img_buffer = s->img_buffer_original; + + 000e5 48 8b 8d d0 00 + 00 00 mov rcx, QWORD PTR [rbp+208] + +; 6092 : int r = stbi__pic_test_core(s); +; 6093 : stbi__rewind(s); +; 6094 : return r; + + 000ec 41 8b c7 mov eax, r15d + +; 342 : s->img_buffer = s->img_buffer_original; + + 000ef 48 89 0b mov QWORD PTR [rbx], rcx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 000f2 48 8b 8d d8 00 + 00 00 mov rcx, QWORD PTR [rbp+216] + +; 6095 : } + + 000f9 48 8b 5c 24 58 mov rbx, QWORD PTR [rsp+88] + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 000fe 48 89 8d c8 00 + 00 00 mov QWORD PTR [rbp+200], rcx + +; 6095 : } + + 00105 48 83 c4 20 add rsp, 32 ; 00000020H + 00109 41 5f pop r15 + 0010b 41 5e pop r14 + 0010d 5d pop rbp + 0010e c3 ret 0 +stbi__pic_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__gif_test_raw +_TEXT SEGMENT +s$ = 48 +stbi__gif_test_raw PROC ; COMDAT + +; 6130 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000a 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 6130 : { + + 00011 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00014 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001b 72 16 jb SHORT $LN52@stbi__gif_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0001d 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00021 0f 84 3b 01 00 + 00 je $LN3@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00027 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0002c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN52@stbi__gif_: + +; 6131 : int sz; +; 6132 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + + 00033 0f b6 08 movzx ecx, BYTE PTR [rax] + 00036 48 ff c0 inc rax + 00039 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00040 80 f9 47 cmp cl, 71 ; 00000047H + 00043 0f 85 19 01 00 + 00 jne $LN3@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00049 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00050 72 19 jb SHORT $LN53@stbi__gif_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 00052 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00056 0f 84 06 01 00 + 00 je $LN3@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 0005c 48 8b cb mov rcx, rbx + 0005f e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00064 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN53@stbi__gif_: + +; 6131 : int sz; +; 6132 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + + 0006b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0006e 48 ff c0 inc rax + 00071 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00078 80 f9 49 cmp cl, 73 ; 00000049H + 0007b 0f 85 e1 00 00 + 00 jne $LN3@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00081 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00088 72 19 jb SHORT $LN54@stbi__gif_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0008a 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0008e 0f 84 ce 00 00 + 00 je $LN3@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00094 48 8b cb mov rcx, rbx + 00097 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0009c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN54@stbi__gif_: + +; 6131 : int sz; +; 6132 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + + 000a3 0f b6 08 movzx ecx, BYTE PTR [rax] + 000a6 48 ff c0 inc rax + 000a9 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000b0 80 f9 46 cmp cl, 70 ; 00000046H + 000b3 0f 85 a9 00 00 + 00 jne $LN3@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000b9 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000c0 72 19 jb SHORT $LN55@stbi__gif_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 000c2 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000c6 0f 84 96 00 00 + 00 je $LN3@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 000cc 48 8b cb mov rcx, rbx + 000cf e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000d4 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN55@stbi__gif_: + +; 6131 : int sz; +; 6132 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + + 000db 0f b6 08 movzx ecx, BYTE PTR [rax] + 000de 48 ff c0 inc rax + 000e1 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000e8 80 f9 38 cmp cl, 56 ; 00000038H + 000eb 75 75 jne SHORT $LN3@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000ed 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000f4 72 15 jb SHORT $LN56@stbi__gif_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 000f6 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000fa 74 66 je SHORT $LN3@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 000fc 48 8b cb mov rcx, rbx + 000ff e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00104 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN56@stbi__gif_: + +; 6133 : sz = stbi__get8(s); +; 6134 : if (sz != '9' && sz != '7') return 0; + + 0010b 0f b6 08 movzx ecx, BYTE PTR [rax] + 0010e 48 ff c0 inc rax + 00111 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00118 80 f9 39 cmp cl, 57 ; 00000039H + 0011b 74 05 je SHORT $LN4@stbi__gif_ + 0011d 80 f9 37 cmp cl, 55 ; 00000037H + 00120 75 40 jne SHORT $LN3@stbi__gif_ +$LN4@stbi__gif_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00122 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00129 72 15 jb SHORT $LN57@stbi__gif_ + +; 1078 : return *s->img_buffer++; +; 1079 : if (s->read_from_callbacks) { + + 0012b 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0012f 74 31 je SHORT $LN3@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00131 48 8b cb mov rcx, rbx + 00134 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00139 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN57@stbi__gif_: + +; 6135 : if (stbi__get8(s) != 'a') return 0; + + 00140 0f b6 08 movzx ecx, BYTE PTR [rax] + 00143 48 ff c0 inc rax + 00146 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0014d 80 f9 61 cmp cl, 97 ; 00000061H + 00150 75 10 jne SHORT $LN3@stbi__gif_ + +; 6136 : return 1; + + 00152 b8 01 00 00 00 mov eax, 1 + +; 6137 : } + + 00157 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0015c 48 83 c4 20 add rsp, 32 ; 00000020H + 00160 5f pop rdi + 00161 c3 ret 0 +$LN3@stbi__gif_: + 00162 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00167 33 c0 xor eax, eax + 00169 48 83 c4 20 add rsp, 32 ; 00000020H + 0016d 5f pop rdi + 0016e c3 ret 0 +stbi__gif_test_raw ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__gif_test +_TEXT SEGMENT +s$ = 48 +stbi__gif_test PROC ; COMDAT + +; 6140 : { + + 00000 40 53 push rbx + 00002 48 83 ec 20 sub rsp, 32 ; 00000020H + 00006 48 8b d9 mov rbx, rcx + +; 6141 : int r = stbi__gif_test_raw(s); + + 00009 e8 00 00 00 00 call stbi__gif_test_raw + +; 342 : s->img_buffer = s->img_buffer_original; + + 0000e 48 8b 93 d0 00 + 00 00 mov rdx, QWORD PTR [rbx+208] + 00015 48 89 93 c0 00 + 00 00 mov QWORD PTR [rbx+192], rdx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0001c 48 8b 93 d8 00 + 00 00 mov rdx, QWORD PTR [rbx+216] + 00023 48 89 93 c8 00 + 00 00 mov QWORD PTR [rbx+200], rdx + +; 6142 : stbi__rewind(s); +; 6143 : return r; +; 6144 : } + + 0002a 48 83 c4 20 add rsp, 32 ; 00000020H + 0002e 5b pop rbx + 0002f c3 ret 0 +stbi__gif_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__gif_parse_colortable +_TEXT SEGMENT +s$ = 64 +pal$ = 72 +num_entries$ = 80 +transp$ = 88 +stbi__gif_parse_colortable PROC ; COMDAT + +; 6148 : int i; +; 6149 : for (i = 0; i < num_entries; ++i) { + + 00000 45 85 c0 test r8d, r8d + 00003 0f 8e 45 01 00 + 00 jle $LN29@stbi__gif_ + 00009 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 0000e 48 89 6c 24 18 mov QWORD PTR [rsp+24], rbp + 00013 56 push rsi + 00014 41 56 push r14 + 00016 41 57 push r15 + 00018 48 83 ec 20 sub rsp, 32 ; 00000020H + 0001c 45 33 ff xor r15d, r15d + 0001f 48 89 7c 24 40 mov QWORD PTR [rsp+64], rdi + 00024 41 8b f7 mov esi, r15d + 00027 49 63 e8 movsxd rbp, r8d + 0002a 45 8b f1 mov r14d, r9d + 0002d 48 8d 7a 01 lea rdi, QWORD PTR [rdx+1] + 00031 48 8b d9 mov rbx, rcx + 00034 0f 1f 40 00 0f + 1f 84 00 00 00 + 00 00 npad 12 +$LL4@stbi__gif_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00040 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00047 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0004e 73 0f jae SHORT $LN7@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00050 0f b6 08 movzx ecx, BYTE PTR [rax] + 00053 48 ff c0 inc rax + 00056 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0005d eb 26 jmp SHORT $LN6@stbi__gif_ +$LN7@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 0005f 44 39 7b 30 cmp DWORD PTR [rbx+48], r15d + 00063 74 1e je SHORT $LN8@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00065 48 8b cb mov rcx, rbx + 00068 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0006d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00074 0f b6 08 movzx ecx, BYTE PTR [rax] + 00077 48 ff c0 inc rax + 0007a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00081 eb 02 jmp SHORT $LN6@stbi__gif_ +$LN8@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 00083 32 c9 xor cl, cl +$LN6@stbi__gif_: + +; 6150 : pal[i][2] = stbi__get8(s); + + 00085 88 4f 01 mov BYTE PTR [rdi+1], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00088 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0008f 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00096 73 0f jae SHORT $LN11@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00098 0f b6 08 movzx ecx, BYTE PTR [rax] + 0009b 48 ff c0 inc rax + 0009e 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000a5 eb 26 jmp SHORT $LN10@stbi__gif_ +$LN11@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 000a7 44 39 7b 30 cmp DWORD PTR [rbx+48], r15d + 000ab 74 1e je SHORT $LN12@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 000ad 48 8b cb mov rcx, rbx + 000b0 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000b5 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000bc 0f b6 08 movzx ecx, BYTE PTR [rax] + 000bf 48 ff c0 inc rax + 000c2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000c9 eb 02 jmp SHORT $LN10@stbi__gif_ +$LN12@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 000cb 32 c9 xor cl, cl +$LN10@stbi__gif_: + +; 6151 : pal[i][1] = stbi__get8(s); + + 000cd 88 0f mov BYTE PTR [rdi], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000cf 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000d6 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000dd 73 0f jae SHORT $LN15@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 000df 0f b6 08 movzx ecx, BYTE PTR [rax] + 000e2 48 ff c0 inc rax + 000e5 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000ec eb 26 jmp SHORT $LN14@stbi__gif_ +$LN15@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 000ee 44 39 7b 30 cmp DWORD PTR [rbx+48], r15d + 000f2 74 1e je SHORT $LN16@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 000f4 48 8b cb mov rcx, rbx + 000f7 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000fc 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00103 0f b6 08 movzx ecx, BYTE PTR [rax] + 00106 48 ff c0 inc rax + 00109 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00110 eb 02 jmp SHORT $LN14@stbi__gif_ +$LN16@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 00112 32 c9 xor cl, cl +$LN14@stbi__gif_: + +; 6152 : pal[i][0] = stbi__get8(s); +; 6153 : pal[i][3] = transp == i ? 0 : 255; + + 00114 44 3b f6 cmp r14d, esi + 00117 88 4f ff mov BYTE PTR [rdi-1], cl + 0011a b8 ff 00 00 00 mov eax, 255 ; 000000ffH + 0011f 41 0f 44 c7 cmove eax, r15d + 00123 ff c6 inc esi + 00125 88 47 02 mov BYTE PTR [rdi+2], al + 00128 48 83 c7 04 add rdi, 4 + 0012c 48 83 ed 01 sub rbp, 1 + 00130 0f 85 0a ff ff + ff jne $LL4@stbi__gif_ + +; 6154 : } +; 6155 : } + + 00136 48 8b 7c 24 40 mov rdi, QWORD PTR [rsp+64] + 0013b 48 8b 5c 24 48 mov rbx, QWORD PTR [rsp+72] + 00140 48 8b 6c 24 50 mov rbp, QWORD PTR [rsp+80] + 00145 48 83 c4 20 add rsp, 32 ; 00000020H + 00149 41 5f pop r15 + 0014b 41 5e pop r14 + 0014d 5e pop rsi +$LN29@stbi__gif_: + 0014e c3 ret 0 +stbi__gif_parse_colortable ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__gif_header +_TEXT SEGMENT +s$ = 48 +g$ = 56 +comp$ = 64 +is_info$dead$ = 72 +stbi__gif_header PROC ; COMDAT + +; 6158 : { + + 00000 48 89 5c 24 10 mov QWORD PTR [rsp+16], rbx + 00005 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000a 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 0000f 41 57 push r15 + 00011 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00015 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 6158 : { + + 0001c 4d 8b f8 mov r15, r8 + 0001f 48 8b f2 mov rsi, rdx + 00022 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00025 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0002c 72 16 jb SHORT $LN92@stbi__gif_ + +; 1079 : if (s->read_from_callbacks) { + + 0002e 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00032 0f 84 ff 02 00 + 00 je $LN60@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00038 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0003d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN92@stbi__gif_: + +; 6159 : stbi_uc version; +; 6160 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + + 00044 0f b6 08 movzx ecx, BYTE PTR [rax] + 00047 48 ff c0 inc rax + 0004a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00051 80 f9 47 cmp cl, 71 ; 00000047H + 00054 0f 85 dd 02 00 + 00 jne $LN60@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0005a 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00061 72 19 jb SHORT $LN93@stbi__gif_ + +; 1079 : if (s->read_from_callbacks) { + + 00063 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00067 0f 84 ca 02 00 + 00 je $LN60@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 0006d 48 8b cb mov rcx, rbx + 00070 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00075 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN93@stbi__gif_: + +; 6159 : stbi_uc version; +; 6160 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + + 0007c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0007f 48 ff c0 inc rax + 00082 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00089 80 f9 49 cmp cl, 73 ; 00000049H + 0008c 0f 85 a5 02 00 + 00 jne $LN60@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00092 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00099 72 19 jb SHORT $LN94@stbi__gif_ + +; 1079 : if (s->read_from_callbacks) { + + 0009b 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0009f 0f 84 92 02 00 + 00 je $LN60@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 000a5 48 8b cb mov rcx, rbx + 000a8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000ad 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN94@stbi__gif_: + +; 6159 : stbi_uc version; +; 6160 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + + 000b4 0f b6 08 movzx ecx, BYTE PTR [rax] + 000b7 48 ff c0 inc rax + 000ba 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000c1 80 f9 46 cmp cl, 70 ; 00000046H + 000c4 0f 85 6d 02 00 + 00 jne $LN60@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000ca 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000d1 72 19 jb SHORT $LN95@stbi__gif_ + +; 1079 : if (s->read_from_callbacks) { + + 000d3 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000d7 0f 84 5a 02 00 + 00 je $LN60@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 000dd 48 8b cb mov rcx, rbx + 000e0 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000e5 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN95@stbi__gif_: + +; 6159 : stbi_uc version; +; 6160 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + + 000ec 0f b6 08 movzx ecx, BYTE PTR [rax] + 000ef 48 ff c0 inc rax + 000f2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000f9 80 f9 38 cmp cl, 56 ; 00000038H + 000fc 0f 85 35 02 00 + 00 jne $LN60@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00102 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00109 72 19 jb SHORT $LN96@stbi__gif_ + +; 1079 : if (s->read_from_callbacks) { + + 0010b 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0010f 0f 84 22 02 00 + 00 je $LN60@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00115 48 8b cb mov rcx, rbx + 00118 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0011d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN96@stbi__gif_: + +; 6161 : return stbi__err("not GIF", "Corrupt GIF"); +; 6162 : +; 6163 : version = stbi__get8(s); +; 6164 : if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + + 00124 0f b6 08 movzx ecx, BYTE PTR [rax] + 00127 48 ff c0 inc rax + 0012a 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00131 80 f9 37 cmp cl, 55 ; 00000037H + 00134 74 09 je SHORT $LN4@stbi__gif_ + 00136 80 f9 39 cmp cl, 57 ; 00000039H + 00139 0f 85 f8 01 00 + 00 jne $LN60@stbi__gif_ +$LN4@stbi__gif_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0013f 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00146 72 19 jb SHORT $LN97@stbi__gif_ + +; 1079 : if (s->read_from_callbacks) { + + 00148 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0014c 0f 84 bd 01 00 + 00 je $LN36@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00152 48 8b cb mov rcx, rbx + 00155 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0015a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN97@stbi__gif_: + +; 6165 : if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + 00161 0f b6 10 movzx edx, BYTE PTR [rax] + 00164 48 ff c0 inc rax + 00167 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0016e 41 b9 00 00 00 + 00 mov r9d, OFFSET FLAT:stbi__g_failure_reason + 00174 80 fa 61 cmp dl, 97 ; 00000061H + 00177 0f 85 98 01 00 + 00 jne $LN58@stbi__gif_ + +; 6166 : +; 6167 : stbi__g_failure_reason = ""; + + 0017d 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00183 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0018c 4c 89 74 24 30 mov QWORD PTR [rsp+48], r14 + 00191 4c 8b 34 c8 mov r14, QWORD PTR [rax+rcx*8] + 00195 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_00CNPNBAHC@@ + 0019c 4d 03 f1 add r14, r9 + +; 6168 : g->w = stbi__get16le(s); + + 0019f 48 8b cb mov rcx, rbx + 001a2 49 89 06 mov QWORD PTR [r14], rax + 001a5 e8 00 00 00 00 call stbi__get16le + +; 6169 : g->h = stbi__get16le(s); + + 001aa 48 8b cb mov rcx, rbx + 001ad 89 06 mov DWORD PTR [rsi], eax + 001af e8 00 00 00 00 call stbi__get16le + 001b4 89 46 04 mov DWORD PTR [rsi+4], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001b7 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001be 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 001c5 73 0f jae SHORT $LN41@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 001c7 0f b6 08 movzx ecx, BYTE PTR [rax] + 001ca 48 ff c0 inc rax + 001cd 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001d4 eb 26 jmp SHORT $LN40@stbi__gif_ +$LN41@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 001d6 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 001da 74 1e je SHORT $LN42@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 001dc 48 8b cb mov rcx, rbx + 001df e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 001e4 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001eb 0f b6 08 movzx ecx, BYTE PTR [rax] + 001ee 48 ff c0 inc rax + 001f1 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001f8 eb 02 jmp SHORT $LN40@stbi__gif_ +$LN42@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 001fa 32 c9 xor cl, cl +$LN40@stbi__gif_: + +; 6170 : g->flags = stbi__get8(s); + + 001fc 0f b6 c1 movzx eax, cl + 001ff 89 46 20 mov DWORD PTR [rsi+32], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00202 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00209 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00210 73 0f jae SHORT $LN45@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00212 0f b6 08 movzx ecx, BYTE PTR [rax] + 00215 48 ff c0 inc rax + 00218 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0021f eb 26 jmp SHORT $LN44@stbi__gif_ +$LN45@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 00221 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00225 74 1e je SHORT $LN46@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00227 48 8b cb mov rcx, rbx + 0022a e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0022f 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00236 0f b6 08 movzx ecx, BYTE PTR [rax] + 00239 48 ff c0 inc rax + 0023c 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00243 eb 02 jmp SHORT $LN44@stbi__gif_ +$LN46@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 00245 32 c9 xor cl, cl +$LN44@stbi__gif_: + +; 6171 : g->bgindex = stbi__get8(s); + + 00247 0f b6 c1 movzx eax, cl + 0024a 89 46 24 mov DWORD PTR [rsi+36], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0024d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00254 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0025b 73 0f jae SHORT $LN49@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 0025d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00260 48 ff c0 inc rax + 00263 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0026a eb 26 jmp SHORT $LN48@stbi__gif_ +$LN49@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 0026c 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00270 74 1e je SHORT $LN50@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00272 48 8b cb mov rcx, rbx + 00275 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0027a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00281 0f b6 08 movzx ecx, BYTE PTR [rax] + 00284 48 ff c0 inc rax + 00287 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0028e eb 02 jmp SHORT $LN48@stbi__gif_ +$LN50@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 00290 32 c9 xor cl, cl +$LN48@stbi__gif_: + +; 6172 : g->ratio = stbi__get8(s); +; 6173 : g->transparent = -1; +; 6174 : +; 6175 : if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 00292 81 3e 00 00 00 + 01 cmp DWORD PTR [rsi], 16777216 ; 01000000H + 00298 0f b6 c1 movzx eax, cl + 0029b 89 46 28 mov DWORD PTR [rsi+40], eax + 0029e c7 46 2c ff ff + ff ff mov DWORD PTR [rsi+44], -1 + 002a5 7f 5a jg SHORT $LN61@stbi__gif_ + +; 6176 : if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 002a7 81 7e 04 00 00 + 00 01 cmp DWORD PTR [rsi+4], 16777216 ; 01000000H + 002ae 7f 51 jg SHORT $LN61@stbi__gif_ + +; 6177 : +; 6178 : if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + 002b0 4d 85 ff test r15, r15 + 002b3 74 07 je SHORT $LN8@stbi__gif_ + 002b5 41 c7 07 04 00 + 00 00 mov DWORD PTR [r15], 4 +$LN8@stbi__gif_: + +; 6179 : +; 6180 : if (is_info) return 1; +; 6181 : +; 6182 : if (g->flags & 0x80) + + 002bc 8b 4e 20 mov ecx, DWORD PTR [rsi+32] + 002bf 84 c9 test cl, cl + 002c1 79 1e jns SHORT $LN10@stbi__gif_ + +; 6183 : stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); + + 002c3 83 e1 07 and ecx, 7 + 002c6 48 8d 56 34 lea rdx, QWORD PTR [rsi+52] + 002ca 41 b8 02 00 00 + 00 mov r8d, 2 + 002d0 41 b9 ff ff ff + ff mov r9d, -1 + 002d6 41 d3 e0 shl r8d, cl + 002d9 48 8b cb mov rcx, rbx + 002dc e8 00 00 00 00 call stbi__gif_parse_colortable +$LN10@stbi__gif_: + +; 6184 : +; 6185 : return 1; + + 002e1 b8 01 00 00 00 mov eax, 1 +$LN91@stbi__gif_: + 002e6 4c 8b 74 24 30 mov r14, QWORD PTR [rsp+48] +$LN1@stbi__gif_: + +; 6186 : } + + 002eb 48 8b 5c 24 38 mov rbx, QWORD PTR [rsp+56] + 002f0 48 8b 74 24 40 mov rsi, QWORD PTR [rsp+64] + 002f5 48 8b 7c 24 48 mov rdi, QWORD PTR [rsp+72] + 002fa 48 83 c4 20 add rsp, 32 ; 00000020H + 002fe 41 5f pop r15 + 00300 c3 ret 0 +$LN61@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 00301 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 00308 49 89 06 mov QWORD PTR [r14], rax + +; 6176 : if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); + + 0030b 33 c0 xor eax, eax + 0030d eb d7 jmp SHORT $LN91@stbi__gif_ +$LN36@stbi__gif_: + +; 1083 : return 0; + + 0030f 41 b9 00 00 00 + 00 mov r9d, OFFSET FLAT:stbi__g_failure_reason +$LN58@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 00315 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0031e 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@ + 00325 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 0032b 48 8b 14 c8 mov rdx, QWORD PTR [rax+rcx*8] + +; 6165 : if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + 0032f 33 c0 xor eax, eax + +; 431 : stbi__g_failure_reason = str; + + 00331 4d 89 04 11 mov QWORD PTR [r9+rdx], r8 + +; 6165 : if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + 00335 eb b4 jmp SHORT $LN1@stbi__gif_ +$LN60@stbi__gif_: + +; 6186 : } + + 00337 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0033d 4c 8d 05 00 00 + 00 00 lea r8, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@ + 00344 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0034d b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00352 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00356 4c 89 04 01 mov QWORD PTR [rcx+rax], r8 + 0035a 33 c0 xor eax, eax + 0035c eb 8d jmp SHORT $LN1@stbi__gif_ +stbi__gif_header ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__out_gif_code +_TEXT SEGMENT +g$ = 48 +code$ = 56 +stbi__out_gif_code PROC ; COMDAT + +; 6204 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 6205 : stbi_uc* p, * c; +; 6206 : int idx; +; 6207 : +; 6208 : // recurse to decode the prefixes, since the linked-list is backwards, +; 6209 : // and working backwards through an interleaved image would be nasty +; 6210 : if (g->codes[code].prefix >= 0) + + 0000a 0f b7 fa movzx edi, dx + 0000d 48 8b d9 mov rbx, rcx + 00010 0f b7 94 b9 34 + 08 00 00 movzx edx, WORD PTR [rcx+rdi*4+2100] + 00018 66 85 d2 test dx, dx + 0001b 78 05 js SHORT $LN4@stbi__out_ + +; 6211 : stbi__out_gif_code(g, g->codes[code].prefix); + + 0001d e8 00 00 00 00 call stbi__out_gif_code +$LN4@stbi__out_: + +; 6212 : +; 6213 : if (g->cur_y >= g->max_y) return; + + 00022 8b 8b 60 88 00 + 00 mov ecx, DWORD PTR [rbx+34912] + 00028 3b 8b 58 88 00 + 00 cmp ecx, DWORD PTR [rbx+34904] + 0002e 0f 8d d8 00 00 + 00 jge $LN13@stbi__out_ + +; 6214 : +; 6215 : idx = g->cur_x + g->cur_y; + + 00034 8b 83 5c 88 00 + 00 mov eax, DWORD PTR [rbx+34908] + 0003a 03 c1 add eax, ecx + +; 6216 : p = &g->out[idx]; + + 0003c 4c 63 c0 movsxd r8, eax + +; 6217 : g->history[idx / 4] = 1; + + 0003f 99 cdq + 00040 4c 03 43 08 add r8, QWORD PTR [rbx+8] + 00044 83 e2 03 and edx, 3 + 00047 03 c2 add eax, edx + 00049 c1 f8 02 sar eax, 2 + 0004c 48 63 c8 movsxd rcx, eax + 0004f 48 8b 43 18 mov rax, QWORD PTR [rbx+24] + 00053 c6 04 01 01 mov BYTE PTR [rcx+rax], 1 + +; 6218 : +; 6219 : c = &g->color_table[g->codes[code].suffix * 4]; + + 00057 0f b6 8c bb 37 + 08 00 00 movzx ecx, BYTE PTR [rbx+rdi*4+2103] + 0005f 48 8b 83 38 88 + 00 00 mov rax, QWORD PTR [rbx+34872] + +; 6220 : if (c[3] > 128) { // don't render transparent pixels; + + 00066 80 7c 88 03 80 cmp BYTE PTR [rax+rcx*4+3], 128 ; 00000080H + 0006b 48 8d 14 88 lea rdx, QWORD PTR [rax+rcx*4] + 0006f 76 1e jbe SHORT $LN6@stbi__out_ + +; 6221 : p[0] = c[2]; + + 00071 0f b6 42 02 movzx eax, BYTE PTR [rdx+2] + 00075 41 88 00 mov BYTE PTR [r8], al + +; 6222 : p[1] = c[1]; + + 00078 0f b6 42 01 movzx eax, BYTE PTR [rdx+1] + 0007c 41 88 40 01 mov BYTE PTR [r8+1], al + +; 6223 : p[2] = c[0]; + + 00080 0f b6 02 movzx eax, BYTE PTR [rdx] + 00083 41 88 40 02 mov BYTE PTR [r8+2], al + +; 6224 : p[3] = c[3]; + + 00087 0f b6 42 03 movzx eax, BYTE PTR [rdx+3] + 0008b 41 88 40 03 mov BYTE PTR [r8+3], al +$LN6@stbi__out_: + +; 6225 : } +; 6226 : g->cur_x += 4; + + 0008f 83 83 5c 88 00 + 00 04 add DWORD PTR [rbx+34908], 4 + 00096 8b 83 5c 88 00 + 00 mov eax, DWORD PTR [rbx+34908] + +; 6227 : +; 6228 : if (g->cur_x >= g->max_x) { + + 0009c 3b 83 54 88 00 + 00 cmp eax, DWORD PTR [rbx+34900] + 000a2 7c 68 jl SHORT $LN13@stbi__out_ + +; 6229 : g->cur_x = g->start_x; + + 000a4 8b 83 4c 88 00 + 00 mov eax, DWORD PTR [rbx+34892] + +; 6230 : g->cur_y += g->step; +; 6231 : +; 6232 : while (g->cur_y >= g->max_y && g->parse > 0) { + + 000aa 44 8b 8b 58 88 + 00 00 mov r9d, DWORD PTR [rbx+34904] + 000b1 89 83 5c 88 00 + 00 mov DWORD PTR [rbx+34908], eax + 000b7 8b 83 44 88 00 + 00 mov eax, DWORD PTR [rbx+34884] + 000bd 01 83 60 88 00 + 00 add DWORD PTR [rbx+34912], eax + 000c3 44 39 8b 60 88 + 00 00 cmp DWORD PTR [rbx+34912], r9d + 000ca 7c 40 jl SHORT $LN13@stbi__out_ + 000cc 0f 1f 40 00 npad 4 +$LL2@stbi__out_: + 000d0 44 8b 83 40 88 + 00 00 mov r8d, DWORD PTR [rbx+34880] + 000d7 45 85 c0 test r8d, r8d + 000da 7e 30 jle SHORT $LN13@stbi__out_ + +; 6233 : g->step = (1 << g->parse) * g->line_size; + + 000dc 8b 93 64 88 00 + 00 mov edx, DWORD PTR [rbx+34916] + +; 6234 : g->cur_y = g->start_y + (g->step >> 1); +; 6235 : --g->parse; + + 000e2 41 8d 40 ff lea eax, DWORD PTR [r8-1] + 000e6 41 8b c8 mov ecx, r8d + 000e9 89 83 40 88 00 + 00 mov DWORD PTR [rbx+34880], eax + 000ef d3 e2 shl edx, cl + 000f1 8b 8b 50 88 00 + 00 mov ecx, DWORD PTR [rbx+34896] + 000f7 89 93 44 88 00 + 00 mov DWORD PTR [rbx+34884], edx + 000fd d1 fa sar edx, 1 + 000ff 03 ca add ecx, edx + 00101 89 8b 60 88 00 + 00 mov DWORD PTR [rbx+34912], ecx + 00107 41 3b c9 cmp ecx, r9d + 0010a 7d c4 jge SHORT $LL2@stbi__out_ +$LN13@stbi__out_: + +; 6236 : } +; 6237 : } +; 6238 : } + + 0010c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00111 48 83 c4 20 add rsp, 32 ; 00000020H + 00115 5f pop rdi + 00116 c3 ret 0 +stbi__out_gif_code ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__process_gif_raster +_TEXT SEGMENT +tv922 = 32 +tv925 = 36 +$T4 = 40 +bits$1$ = 112 +s$ = 112 +g$ = 120 +first$1$ = 128 +clear$1$ = 136 +stbi__process_gif_raster PROC ; COMDAT + +; 6241 : { + + 00000 40 53 push rbx + 00002 41 55 push r13 + 00004 48 83 ec 58 sub rsp, 88 ; 00000058H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00008 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 6241 : { + + 0000f 4c 8b ea mov r13, rdx + 00012 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00015 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001c 72 12 jb SHORT $LN123@stbi__proc + +; 1079 : if (s->read_from_callbacks) { + + 0001e 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00022 74 28 je SHORT $LN32@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00024 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00029 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN123@stbi__proc: + +; 6242 : stbi_uc lzw_cs; +; 6243 : stbi__int32 len, init_code; +; 6244 : stbi__uint32 first; +; 6245 : stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; +; 6246 : stbi__gif_lzw* p; +; 6247 : +; 6248 : lzw_cs = stbi__get8(s); +; 6249 : if (lzw_cs > 12) return NULL; + + 00030 0f b6 08 movzx ecx, BYTE PTR [rax] + 00033 48 ff c0 inc rax + 00036 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0003d 80 f9 0c cmp cl, 12 + 00040 76 0c jbe SHORT $LN86@stbi__proc + 00042 33 c0 xor eax, eax + +; 6328 : } + + 00044 48 83 c4 58 add rsp, 88 ; 00000058H + 00048 41 5d pop r13 + 0004a 5b pop rbx + 0004b c3 ret 0 +$LN32@stbi__proc: + +; 1083 : return 0; + + 0004c 32 c9 xor cl, cl +$LN86@stbi__proc: + 0004e 48 89 6c 24 78 mov QWORD PTR [rsp+120], rbp + +; 6251 : first = 1; + + 00053 41 bb 01 00 00 + 00 mov r11d, 1 + 00059 0f b6 c9 movzx ecx, cl + +; 6252 : codesize = lzw_cs + 1; +; 6253 : codemask = (1 << codesize) - 1; +; 6254 : bits = 0; + + 0005c 45 33 c9 xor r9d, r9d + 0005f 48 89 74 24 50 mov QWORD PTR [rsp+80], rsi + 00064 ba 01 00 00 00 mov edx, 1 + 00069 d3 e2 shl edx, cl + 0006b 41 8b eb mov ebp, r11d + 0006e 48 89 7c 24 48 mov QWORD PTR [rsp+72], rdi + +; 6255 : valid_bits = 0; +; 6256 : for (init_code = 0; init_code < clear; init_code++) { + + 00073 45 8d 43 fe lea r8d, QWORD PTR [r11-2] + 00077 8d 41 01 lea eax, DWORD PTR [rcx+1] + 0007a 4c 89 64 24 40 mov QWORD PTR [rsp+64], r12 + 0007f 8b c8 mov ecx, eax + 00081 4c 89 74 24 38 mov QWORD PTR [rsp+56], r14 + 00086 d3 e5 shl ebp, cl + 00088 45 33 e4 xor r12d, r12d + 0008b ff cd dec ebp + 0008d 4c 89 7c 24 30 mov QWORD PTR [rsp+48], r15 + 00092 33 c9 xor ecx, ecx + 00094 89 94 24 88 00 + 00 00 mov DWORD PTR clear$1$[rsp], edx + 0009b 44 89 9c 24 80 + 00 00 00 mov DWORD PTR first$1$[rsp], r11d + 000a3 44 8b f8 mov r15d, eax + 000a6 89 44 24 24 mov DWORD PTR tv925[rsp], eax + 000aa 44 89 4c 24 70 mov DWORD PTR bits$1$[rsp], r9d + 000af 85 d2 test edx, edx + 000b1 7e 21 jle SHORT $LN3@stbi__proc + +; 6250 : clear = 1 << lzw_cs; + + 000b3 49 8d 85 36 08 + 00 00 lea rax, QWORD PTR [r13+2102] + 000ba 66 0f 1f 44 00 + 00 npad 6 +$LL4@stbi__proc: + +; 6257 : g->codes[init_code].prefix = -1; +; 6258 : g->codes[init_code].first = (stbi_uc)init_code; + + 000c0 88 08 mov BYTE PTR [rax], cl + +; 6259 : g->codes[init_code].suffix = (stbi_uc)init_code; + + 000c2 88 48 01 mov BYTE PTR [rax+1], cl + 000c5 ff c1 inc ecx + 000c7 66 44 89 40 fe mov WORD PTR [rax-2], r8w + 000cc 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 000d0 3b ca cmp ecx, edx + 000d2 7c ec jl SHORT $LL4@stbi__proc +$LN3@stbi__proc: + +; 6260 : } +; 6261 : +; 6262 : // support no starting clear code +; 6263 : avail = clear + 2; + + 000d4 8d 42 02 lea eax, DWORD PTR [rdx+2] + +; 6264 : oldcode = -1; + + 000d7 45 8b f0 mov r14d, r8d + 000da 48 63 f0 movsxd rsi, eax + +; 6265 : +; 6266 : len = 0; + + 000dd 33 ff xor edi, edi + 000df 4c 8b c6 mov r8, rsi + 000e2 48 89 74 24 28 mov QWORD PTR $T4[rsp], rsi + 000e7 89 44 24 20 mov DWORD PTR tv922[rsp], eax + 000eb 0f 1f 44 00 00 npad 5 +$LL5@stbi__proc: + +; 6267 : for (;;) { +; 6268 : if (valid_bits < codesize) { + + 000f0 45 3b e7 cmp r12d, r15d + 000f3 0f 8d 10 01 00 + 00 jge $LN11@stbi__proc + +; 6269 : if (len == 0) { + + 000f9 85 ff test edi, edi + 000fb 0f 85 87 00 00 + 00 jne $LN87@stbi__proc + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00101 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00108 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0010f 73 0f jae SHORT $LN35@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00111 0f b6 08 movzx ecx, BYTE PTR [rax] + 00114 48 ff c0 inc rax + 00117 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0011e eb 2b jmp SHORT $LN124@stbi__proc +$LN35@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 00120 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00124 74 23 je SHORT $LN36@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00126 48 8b cb mov rcx, rbx + 00129 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0012e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00135 44 8b 4c 24 70 mov r9d, DWORD PTR bits$1$[rsp] + 0013a 0f b6 08 movzx ecx, BYTE PTR [rax] + 0013d 48 ff c0 inc rax + 00140 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00147 eb 02 jmp SHORT $LN124@stbi__proc +$LN36@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00149 32 c9 xor cl, cl +$LN124@stbi__proc: + +; 6270 : len = stbi__get8(s); // start new block + + 0014b 0f b6 f9 movzx edi, cl + 0014e ba 30 00 00 00 mov edx, 48 ; 00000030H + 00153 48 8b c3 mov rax, rbx + 00156 4c 8d 04 1a lea r8, QWORD PTR [rdx+rbx] + +; 6271 : if (len == 0) + + 0015a 84 c9 test cl, cl + 0015c 75 2e jne SHORT $LN80@stbi__proc +$LN9@stbi__proc: + +; 6294 : return g->out; + + 0015e 49 8b 45 08 mov rax, QWORD PTR [r13+8] +$LN122@stbi__proc: + 00162 4c 8b 74 24 38 mov r14, QWORD PTR [rsp+56] + 00167 4c 8b 64 24 40 mov r12, QWORD PTR [rsp+64] + 0016c 48 8b 7c 24 48 mov rdi, QWORD PTR [rsp+72] + 00171 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 00176 48 8b 6c 24 78 mov rbp, QWORD PTR [rsp+120] + 0017b 4c 8b 7c 24 30 mov r15, QWORD PTR [rsp+48] + +; 6328 : } + + 00180 48 83 c4 58 add rsp, 88 ; 00000058H + 00184 41 5d pop r13 + 00186 5b pop rbx + 00187 c3 ret 0 +$LN87@stbi__proc: + +; 6271 : if (len == 0) + + 00188 4c 8d 43 30 lea r8, QWORD PTR [rbx+48] +$LN80@stbi__proc: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0018c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + +; 6272 : return g->out; +; 6273 : } +; 6274 : --len; + + 00193 ff cf dec edi + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00195 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0019c 73 0f jae SHORT $LN39@stbi__proc + +; 1078 : return *s->img_buffer++; + + 0019e 0f b6 08 movzx ecx, BYTE PTR [rax] + 001a1 48 ff c0 inc rax + 001a4 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001ab eb 2b jmp SHORT $LN38@stbi__proc +$LN39@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 001ad 41 83 38 00 cmp DWORD PTR [r8], 0 + 001b1 74 23 je SHORT $LN40@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 001b3 48 8b cb mov rcx, rbx + 001b6 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 001bb 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001c2 44 8b 4c 24 70 mov r9d, DWORD PTR bits$1$[rsp] + 001c7 0f b6 08 movzx ecx, BYTE PTR [rax] + 001ca 48 ff c0 inc rax + 001cd 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001d4 eb 02 jmp SHORT $LN38@stbi__proc +$LN40@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 001d6 32 c9 xor cl, cl +$LN38@stbi__proc: + +; 6275 : bits |= (stbi__int32)stbi__get8(s) << valid_bits; +; 6276 : valid_bits += 8; +; 6277 : } + + 001d8 8b 94 24 88 00 + 00 00 mov edx, DWORD PTR clear$1$[rsp] + 001df 4c 8b 44 24 28 mov r8, QWORD PTR $T4[rsp] + 001e4 44 8b 9c 24 80 + 00 00 00 mov r11d, DWORD PTR first$1$[rsp] + 001ec 0f b6 c1 movzx eax, cl + 001ef 41 8b cc mov ecx, r12d + 001f2 d3 e0 shl eax, cl + 001f4 44 0b c8 or r9d, eax + 001f7 8b 44 24 20 mov eax, DWORD PTR tv922[rsp] + 001fb 44 89 4c 24 70 mov DWORD PTR bits$1$[rsp], r9d + 00200 41 83 c4 08 add r12d, 8 + 00204 e9 e7 fe ff ff jmp $LL5@stbi__proc +$LN11@stbi__proc: + +; 6278 : else { +; 6279 : stbi__int32 code = bits & codemask; + + 00209 45 8b d1 mov r10d, r9d + +; 6280 : bits >>= codesize; + + 0020c 41 8b cf mov ecx, r15d + 0020f 41 d3 f9 sar r9d, cl + 00212 44 23 d5 and r10d, ebp + +; 6281 : valid_bits -= codesize; + + 00215 45 2b e7 sub r12d, r15d + 00218 44 89 4c 24 70 mov DWORD PTR bits$1$[rsp], r9d + +; 6282 : // @OPTIMIZE: is there some way we can accelerate the non-clear path? +; 6283 : if (code == clear) { // clear code + + 0021d 44 3b d2 cmp r10d, edx + 00220 75 35 jne SHORT $LN15@stbi__proc + +; 6284 : codesize = lzw_cs + 1; + + 00222 44 8b 7c 24 24 mov r15d, DWORD PTR tv925[rsp] + +; 6285 : codemask = (1 << codesize) - 1; + + 00227 bd 01 00 00 00 mov ebp, 1 + 0022c 41 8b cf mov ecx, r15d + +; 6286 : avail = clear + 2; + + 0022f 4c 63 c2 movsxd r8, edx + 00232 d3 e5 shl ebp, cl + 00234 49 83 c0 02 add r8, 2 + 00238 ff cd dec ebp + 0023a 4c 89 44 24 28 mov QWORD PTR $T4[rsp], r8 + +; 6287 : oldcode = -1; +; 6288 : first = 0; + + 0023f 45 33 db xor r11d, r11d + 00242 8b f0 mov esi, eax + 00244 44 89 9c 24 80 + 00 00 00 mov DWORD PTR first$1$[rsp], r11d + 0024c 41 be ff ff ff + ff mov r14d, -1 + +; 6289 : } + + 00252 e9 99 fe ff ff jmp $LL5@stbi__proc +$LN15@stbi__proc: + +; 6290 : else if (code == clear + 1) { // end of stream code + + 00257 8d 42 01 lea eax, DWORD PTR [rdx+1] + 0025a 44 3b d0 cmp r10d, eax + 0025d 0f 84 38 01 00 + 00 je $LN70@stbi__proc + +; 6295 : } +; 6296 : else if (code <= avail) { + + 00263 44 3b d6 cmp r10d, esi + 00266 0f 8f 05 01 00 + 00 jg $LN19@stbi__proc + +; 6297 : if (first) { + + 0026c 45 85 db test r11d, r11d + 0026f 0f 85 d2 00 00 + 00 jne $LN71@stbi__proc + +; 6299 : } +; 6300 : +; 6301 : if (oldcode >= 0) { + + 00275 45 85 f6 test r14d, r14d + 00278 78 56 js SHORT $LN22@stbi__proc + +; 6302 : p = &g->codes[avail++]; + + 0027a 4a 8d 14 85 00 + 00 00 00 lea rdx, QWORD PTR [r8*4] + 00282 ff c6 inc esi + 00284 49 ff c0 inc r8 + 00287 4c 89 44 24 28 mov QWORD PTR $T4[rsp], r8 + +; 6303 : if (avail > 8192) { + + 0028c 81 fe 00 20 00 + 00 cmp esi, 8192 ; 00002000H + 00292 0f 8f 85 00 00 + 00 jg $LN72@stbi__proc + +; 6305 : } +; 6306 : +; 6307 : p->prefix = (stbi__int16)oldcode; +; 6308 : p->first = g->codes[oldcode].first; + + 00298 49 63 c6 movsxd rax, r14d + 0029b 66 46 89 b4 2a + 34 08 00 00 mov WORD PTR [rdx+r13+2100], r14w + 002a4 41 0f b6 8c 85 + 36 08 00 00 movzx ecx, BYTE PTR [r13+rax*4+2102] + 002ad 42 88 8c 2a 36 + 08 00 00 mov BYTE PTR [rdx+r13+2102], cl + +; 6309 : p->suffix = (code == avail) ? p->first : g->codes[code].first; + + 002b5 44 3b d6 cmp r10d, esi + 002b8 74 0c je SHORT $LN29@stbi__proc + 002ba 49 63 c2 movsxd rax, r10d + 002bd 41 0f b6 8c 85 + 36 08 00 00 movzx ecx, BYTE PTR [r13+rax*4+2102] +$LN29@stbi__proc: + 002c6 42 88 8c 2a 37 + 08 00 00 mov BYTE PTR [rdx+r13+2103], cl + +; 6310 : } + + 002ce eb 09 jmp SHORT $LN25@stbi__proc +$LN22@stbi__proc: + +; 6311 : else if (code == avail) + + 002d0 44 3b d6 cmp r10d, esi + 002d3 0f 84 98 00 00 + 00 je $LN19@stbi__proc +$LN25@stbi__proc: + +; 6312 : return stbi__errpuc("illegal code in raster", "Corrupt GIF"); +; 6313 : +; 6314 : stbi__out_gif_code(g, (stbi__uint16)code); + + 002d9 41 0f b7 d2 movzx edx, r10w + 002dd 49 8b cd mov rcx, r13 + 002e0 e8 00 00 00 00 call stbi__out_gif_code + +; 6315 : +; 6316 : if ((avail & codemask) == 0 && avail <= 0x0FFF) { + + 002e5 85 f5 test esi, ebp + 002e7 75 17 jne SHORT $LN26@stbi__proc + 002e9 81 fe ff 0f 00 + 00 cmp esi, 4095 ; 00000fffH + 002ef 7f 0f jg SHORT $LN26@stbi__proc + +; 6317 : codesize++; + + 002f1 41 ff c7 inc r15d + +; 6318 : codemask = (1 << codesize) - 1; + + 002f4 bd 01 00 00 00 mov ebp, 1 + 002f9 41 8b cf mov ecx, r15d + 002fc d3 e5 shl ebp, cl + 002fe ff cd dec ebp +$LN26@stbi__proc: + +; 6325 : } +; 6326 : } +; 6327 : } + + 00300 8b 94 24 88 00 + 00 00 mov edx, DWORD PTR clear$1$[rsp] + 00307 45 8b f2 mov r14d, r10d + 0030a 4c 8b 44 24 28 mov r8, QWORD PTR $T4[rsp] + 0030f 44 8b 4c 24 70 mov r9d, DWORD PTR bits$1$[rsp] + 00314 8b 44 24 20 mov eax, DWORD PTR tv922[rsp] + 00318 e9 d3 fd ff ff jmp $LL5@stbi__proc +$LN72@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 0031d 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00323 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0032c b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00331 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00335 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0P@GJNJCPDJ@too?5many?5codes@ + 0033c 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 6304 : return stbi__errpuc("too many codes", "Corrupt GIF"); + + 00340 33 c0 xor eax, eax + 00342 e9 1b fe ff ff jmp $LN122@stbi__proc +$LN71@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00347 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0034d 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00356 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0035b 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0035f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@MGDACKOJ@no?5clear?5code@ + 00366 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 6298 : return stbi__errpuc("no clear code", "Corrupt GIF"); + + 0036a 33 c0 xor eax, eax + 0036c e9 f1 fd ff ff jmp $LN122@stbi__proc +$LN19@stbi__proc: + +; 431 : stbi__g_failure_reason = str; + + 00371 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00377 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00380 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00385 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00389 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ + 00390 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 6319 : } +; 6320 : +; 6321 : oldcode = code; +; 6322 : } +; 6323 : else { +; 6324 : return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + 00394 33 c0 xor eax, eax + 00396 e9 c7 fd ff ff jmp $LN122@stbi__proc +$LN70@stbi__proc: + +; 1107 : if (n == 0) return; // already there! + + 0039b 85 ff test edi, edi + 0039d 74 51 je SHORT $LL8@stbi__proc + +; 1108 : if (n < 0) { + + 0039f 79 10 jns SHORT $LN44@stbi__proc + +; 1109 : s->img_buffer = s->img_buffer_end; + + 003a1 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 003a8 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 1110 : return; + + 003af eb 3f jmp SHORT $LL8@stbi__proc +$LN44@stbi__proc: + +; 1111 : } +; 1112 : if (s->io.read) { + + 003b1 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 003b6 74 2b je SHORT $LN46@stbi__proc + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 003b8 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 003be 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 003c4 3b cf cmp ecx, edi + 003c6 7d 1b jge SHORT $LN46@stbi__proc + +; 1115 : s->img_buffer = s->img_buffer_end; + + 003c8 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 003cf 2b f9 sub edi, ecx + 003d1 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 003d5 8b d7 mov edx, edi + 003d7 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003de ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 003e1 eb 0d jmp SHORT $LL8@stbi__proc +$LN46@stbi__proc: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 003e3 48 63 c7 movsxd rax, edi + 003e6 48 01 83 c0 00 + 00 00 add QWORD PTR [rbx+192], rax + 003ed 0f 1f 00 npad 3 +$LL8@stbi__proc: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003f0 48 8b 8b c0 00 + 00 00 mov rcx, QWORD PTR [rbx+192] + 003f7 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 003fe 73 0f jae SHORT $LN49@stbi__proc + +; 1078 : return *s->img_buffer++; + + 00400 0f b6 11 movzx edx, BYTE PTR [rcx] + 00403 48 ff c1 inc rcx + 00406 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 0040d eb 27 jmp SHORT $LN48@stbi__proc +$LN49@stbi__proc: + +; 1079 : if (s->read_from_callbacks) { + + 0040f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00413 74 1f je SHORT $LN50@stbi__proc + +; 1080 : stbi__refill_buffer(s); + + 00415 48 8b cb mov rcx, rbx + 00418 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0041d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00424 0f b6 10 movzx edx, BYTE PTR [rax] + 00427 48 8d 48 01 lea rcx, QWORD PTR [rax+1] + 0042b 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00432 eb 02 jmp SHORT $LN48@stbi__proc +$LN50@stbi__proc: + +; 1082 : } +; 1083 : return 0; + + 00434 32 d2 xor dl, dl +$LN48@stbi__proc: + +; 6291 : stbi__skip(s, len); +; 6292 : while ((len = stbi__get8(s)) > 0) + + 00436 0f b6 d2 movzx edx, dl + 00439 85 d2 test edx, edx + 0043b 0f 84 1d fd ff + ff je $LN9@stbi__proc + +; 1112 : if (s->io.read) { + + 00441 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00446 74 2c je SHORT $LN56@stbi__proc + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00448 44 8b 83 c8 00 + 00 00 mov r8d, DWORD PTR [rbx+200] + 0044f 44 2b c1 sub r8d, ecx + +; 1114 : if (blen < n) { + + 00452 44 3b c2 cmp r8d, edx + 00455 7d 1d jge SHORT $LN56@stbi__proc + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00457 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 0045e 41 2b d0 sub edx, r8d + 00461 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 00465 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0046c ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 0046f e9 7c ff ff ff jmp $LL8@stbi__proc +$LN56@stbi__proc: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 00474 48 8d 04 11 lea rax, QWORD PTR [rcx+rdx] + 00478 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 6293 : stbi__skip(s, len); + + 0047f e9 6c ff ff ff jmp $LL8@stbi__proc +stbi__process_gif_raster ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__gif_load_next +_TEXT SEGMENT +s$ = 80 +g$ = 88 +comp$ = 96 +first_frame$1$ = 104 +req_comp$dead$ = 104 +two_back$dead$ = 112 +stbi__gif_load_next PROC ; COMDAT + +; 6333 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d + 00014 57 push rdi + 00015 41 54 push r12 + 00017 41 55 push r13 + 00019 41 56 push r14 + 0001b 41 57 push r15 + 0001d 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 6334 : int dispose; +; 6335 : int first_frame; +; 6336 : int pi; +; 6337 : int pcount; +; 6338 : STBI_NOTUSED(req_comp); +; 6339 : +; 6340 : // on first frame, any non-written pixels get the background colour (non-transparent) +; 6341 : first_frame = 0; + + 00021 45 33 e4 xor r12d, r12d + 00024 48 8b f2 mov rsi, rdx + 00027 48 8b d9 mov rbx, rcx + 0002a 44 89 64 24 68 mov DWORD PTR first_frame$1$[rsp], r12d + +; 6342 : if (g->out == 0) { + + 0002f 4c 39 62 08 cmp QWORD PTR [rdx+8], r12 + 00033 0f 85 1f 01 00 + 00 jne $LN18@stbi__gif_ + +; 6343 : if (!stbi__gif_header(s, g, comp, 0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + + 00039 e8 00 00 00 00 call stbi__gif_header + 0003e 85 c0 test eax, eax + 00040 0f 84 a6 06 00 + 00 je $LN181@stbi__gif_ + +; 6344 : if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + + 00046 8b 0e mov ecx, DWORD PTR [rsi] + 00048 8b 7e 04 mov edi, DWORD PTR [rsi+4] + +; 467 : if (a < 0 || b < 0) return 0; + + 0004b 85 c9 test ecx, ecx + 0004d 0f 88 e6 00 00 + 00 js $LN174@stbi__gif_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00053 75 0a jne SHORT $LN116@stbi__gif_ + 00055 44 8d 04 8d 00 + 00 00 00 lea r8d, DWORD PTR [rcx*4] + 0005d eb 22 jmp SHORT $LN178@stbi__gif_ +$LN116@stbi__gif_: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0005f b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00064 99 cdq + 00065 f7 f9 idiv ecx + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00067 83 f8 04 cmp eax, 4 + 0006a 0f 8c c9 00 00 + 00 jl $LN174@stbi__gif_ + 00070 44 8d 04 8d 00 + 00 00 00 lea r8d, DWORD PTR [rcx*4] + +; 467 : if (a < 0 || b < 0) return 0; + + 00078 45 85 c0 test r8d, r8d + 0007b 0f 88 b8 00 00 + 00 js $LN174@stbi__gif_ +$LN178@stbi__gif_: + 00081 85 ff test edi, edi + 00083 0f 88 b0 00 00 + 00 js $LN174@stbi__gif_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00089 74 11 je SHORT $LN175@stbi__gif_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0008b b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00090 99 cdq + 00091 f7 ff idiv edi + +; 484 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00093 44 3b c0 cmp r8d, eax + 00096 0f 8f 9d 00 00 + 00 jg $LN174@stbi__gif_ +$LN175@stbi__gif_: + +; 6344 : if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + + 0009c 0f af f9 imul edi, ecx + +; 6346 : pcount = g->w * g->h; +; 6347 : g->out = (stbi_uc*)stbi__malloc(4 * pcount); + + 0009f 8d 04 bd 00 00 + 00 00 lea eax, DWORD PTR [rdi*4] + 000a6 48 63 e8 movsxd rbp, eax + +; 438 : return STBI_MALLOC(size); + + 000a9 48 8b cd mov rcx, rbp + 000ac ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 000b2 48 8b cd mov rcx, rbp + +; 6346 : pcount = g->w * g->h; +; 6347 : g->out = (stbi_uc*)stbi__malloc(4 * pcount); + + 000b5 48 89 46 08 mov QWORD PTR [rsi+8], rax + +; 438 : return STBI_MALLOC(size); + + 000b9 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 6349 : g->history = (stbi_uc*)stbi__malloc(pcount); + + 000bf 48 63 ff movsxd rdi, edi + +; 438 : return STBI_MALLOC(size); + + 000c2 48 8b cf mov rcx, rdi + +; 6348 : g->background = (stbi_uc*)stbi__malloc(4 * pcount); + + 000c5 48 89 46 10 mov QWORD PTR [rsi+16], rax + +; 438 : return STBI_MALLOC(size); + + 000c9 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + +; 6350 : if (!g->out || !g->background || !g->history) + + 000cf 48 8b 4e 08 mov rcx, QWORD PTR [rsi+8] + 000d3 48 89 46 18 mov QWORD PTR [rsi+24], rax + 000d7 48 85 c9 test rcx, rcx + 000da 74 3e je SHORT $LN23@stbi__gif_ + 000dc 4c 39 66 10 cmp QWORD PTR [rsi+16], r12 + 000e0 74 38 je SHORT $LN23@stbi__gif_ + 000e2 48 85 c0 test rax, rax + 000e5 74 33 je SHORT $LN23@stbi__gif_ + +; 6352 : +; 6353 : // image is treated as "transparent" at the start - ie, nothing overwrites the current background; +; 6354 : // background colour is only used for pixels that are not rendered first frame, after that "background" +; 6355 : // color refers to the color that was there the previous frame. +; 6356 : memset(g->out, 0x00, 4 * pcount); + + 000e7 4c 8b c5 mov r8, rbp + 000ea 33 d2 xor edx, edx + 000ec e8 00 00 00 00 call memset + +; 6357 : memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) + + 000f1 48 8b 4e 10 mov rcx, QWORD PTR [rsi+16] + 000f5 4c 8b c5 mov r8, rbp + 000f8 33 d2 xor edx, edx + 000fa e8 00 00 00 00 call memset + +; 6358 : memset(g->history, 0x00, pcount); // pixels that were affected previous frame + + 000ff 48 8b 4e 18 mov rcx, QWORD PTR [rsi+24] + 00103 4c 8b c7 mov r8, rdi + 00106 33 d2 xor edx, edx + 00108 e8 00 00 00 00 call memset + +; 6359 : first_frame = 1; + + 0010d c7 44 24 68 01 + 00 00 00 mov DWORD PTR first_frame$1$[rsp], 1 + +; 6360 : } + + 00115 e9 9f 00 00 00 jmp $LN19@stbi__gif_ +$LN23@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 0011a 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00120 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00129 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0012d 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + +; 6351 : return stbi__errpuc("outofmem", "Out of memory"); + + 00134 e9 aa 05 00 00 jmp $LN236@stbi__gif_ +$LN174@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 00139 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0013f 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00148 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0014c 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + +; 6345 : return stbi__errpuc("too large", "GIF image is too large"); + + 00153 e9 8b 05 00 00 jmp $LN236@stbi__gif_ +$LN18@stbi__gif_: + +; 6361 : else { +; 6362 : // second frame - how do we dispose of the previous one? +; 6363 : dispose = (g->eflags & 0x1C) >> 2; +; 6364 : pcount = g->w * g->h; + + 00158 8b 02 mov eax, DWORD PTR [rdx] + 0015a 0f af 42 04 imul eax, DWORD PTR [rdx+4] + 0015e 8b 4a 30 mov ecx, DWORD PTR [rdx+48] + 00161 4c 63 c0 movsxd r8, eax + +; 6365 : +; 6366 : if ((dispose == 3) && (two_back == 0)) { + + 00164 8b c1 mov eax, ecx + 00166 83 e0 1c and eax, 28 + 00169 3c 0c cmp al, 12 + 0016b 74 08 je SHORT $LN177@stbi__gif_ + +; 6367 : dispose = 2; // if I don't have an image to revert back to, default to the old background +; 6368 : } +; 6369 : +; 6370 : if (dispose == 3) { // use previous graphic +; 6371 : for (pi = 0; pi < pcount; ++pi) { +; 6372 : if (g->history[pi]) { +; 6373 : memcpy(&g->out[pi * 4], &two_back[pi * 4], 4); +; 6374 : } +; 6375 : } +; 6376 : } +; 6377 : else if (dispose == 2) { + + 0016d 80 e1 1c and cl, 28 + 00170 80 f9 08 cmp cl, 8 + 00173 75 2b jne SHORT $LN6@stbi__gif_ +$LN177@stbi__gif_: + +; 6378 : // restore what was changed last frame to background before that frame; +; 6379 : for (pi = 0; pi < pcount; ++pi) { + + 00175 4d 85 c0 test r8, r8 + 00178 7e 26 jle SHORT $LN6@stbi__gif_ + 0017a 49 8b d4 mov rdx, r12 + 0017d 0f 1f 00 npad 3 +$LL7@stbi__gif_: + +; 6380 : if (g->history[pi]) { + + 00180 48 8b 46 18 mov rax, QWORD PTR [rsi+24] + 00184 44 38 24 02 cmp BYTE PTR [rdx+rax], r12b + 00188 74 0e je SHORT $LN5@stbi__gif_ + +; 6381 : memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); + + 0018a 48 8b 46 10 mov rax, QWORD PTR [rsi+16] + 0018e 48 8b 4e 08 mov rcx, QWORD PTR [rsi+8] + 00192 8b 04 90 mov eax, DWORD PTR [rax+rdx*4] + 00195 89 04 91 mov DWORD PTR [rcx+rdx*4], eax +$LN5@stbi__gif_: + +; 6378 : // restore what was changed last frame to background before that frame; +; 6379 : for (pi = 0; pi < pcount; ++pi) { + + 00198 48 ff c2 inc rdx + 0019b 49 3b d0 cmp rdx, r8 + 0019e 7c e0 jl SHORT $LL7@stbi__gif_ +$LN6@stbi__gif_: + +; 6382 : } +; 6383 : } +; 6384 : } +; 6385 : else { +; 6386 : // This is a non-disposal case eithe way, so just +; 6387 : // leave the pixels as is, and they will become the new background +; 6388 : // 1: do not dispose +; 6389 : // 0: not specified. +; 6390 : } +; 6391 : +; 6392 : // background is what out is after the undoing of the previou frame; +; 6393 : memcpy(g->background, g->out, 4 * g->w * g->h); + + 001a0 8b 46 04 mov eax, DWORD PTR [rsi+4] + 001a3 0f af 06 imul eax, DWORD PTR [rsi] + 001a6 48 8b 56 08 mov rdx, QWORD PTR [rsi+8] + 001aa 48 8b 4e 10 mov rcx, QWORD PTR [rsi+16] + 001ae c1 e0 02 shl eax, 2 + 001b1 4c 63 c0 movsxd r8, eax + 001b4 e8 00 00 00 00 call memcpy +$LN19@stbi__gif_: + +; 6394 : } +; 6395 : +; 6396 : // clear my history; +; 6397 : memset(g->history, 0x00, g->w * g->h); // pixels that were affected previous frame + + 001b9 8b 46 04 mov eax, DWORD PTR [rsi+4] + 001bc 33 d2 xor edx, edx + 001be 0f af 06 imul eax, DWORD PTR [rsi] + 001c1 48 8b 4e 18 mov rcx, QWORD PTR [rsi+24] + 001c5 4c 63 c0 movsxd r8, eax + 001c8 e8 00 00 00 00 call memset + 001cd 41 bd ff ff ff + ff mov r13d, -1 +$LN85@stbi__gif_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 001d3 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 001d7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL8@stbi__gif_: + 001e0 48 8b 8b c0 00 + 00 00 mov rcx, QWORD PTR [rbx+192] + 001e7 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 001ee 73 08 jae SHORT $LN68@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 001f0 0f b6 11 movzx edx, BYTE PTR [rcx] + 001f3 48 ff c1 inc rcx + 001f6 eb 24 jmp SHORT $LN237@stbi__gif_ +$LN68@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 001f8 44 39 63 30 cmp DWORD PTR [rbx+48], r12d + 001fc 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 00200 0f 84 c3 04 00 + 00 je $LN180@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00206 48 8b cb mov rcx, rbx + 00209 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0020e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00215 0f b6 10 movzx edx, BYTE PTR [rax] + 00218 48 8d 48 01 lea rcx, QWORD PTR [rax+1] +$LN237@stbi__gif_: + +; 6398 : +; 6399 : for (;;) { +; 6400 : int tag = stbi__get8(s); +; 6401 : switch (tag) { + + 0021c 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00223 80 fa 21 cmp dl, 33 ; 00000021H + 00226 0f 85 81 02 00 + 00 jne $LN142@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0022c 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 00233 73 08 jae SHORT $LN72@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00235 0f b6 11 movzx edx, BYTE PTR [rcx] + 00238 48 ff c1 inc rcx + 0023b eb 1f jmp SHORT $LN238@stbi__gif_ +$LN72@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 0023d 44 39 27 cmp DWORD PTR [rdi], r12d + 00240 0f 84 36 01 00 + 00 je $LN169@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00246 48 8b cb mov rcx, rbx + 00249 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0024e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00255 0f b6 10 movzx edx, BYTE PTR [rax] + 00258 48 8d 48 01 lea rcx, QWORD PTR [rax+1] +$LN238@stbi__gif_: + +; 6466 : } +; 6467 : +; 6468 : case 0x21: // Comment Extension. +; 6469 : { +; 6470 : int len; +; 6471 : int ext = stbi__get8(s); +; 6472 : if (ext == 0xF9) { // Graphic Control Extension. + + 0025c 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00263 80 fa f9 cmp dl, 249 ; 000000f9H + 00266 0f 85 10 01 00 + 00 jne $LN169@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0026c 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 00273 73 0f jae SHORT $LN76@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00275 0f b6 11 movzx edx, BYTE PTR [rcx] + 00278 48 ff c1 inc rcx + 0027b 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00282 eb 26 jmp SHORT $LN75@stbi__gif_ +$LN76@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 00284 44 39 27 cmp DWORD PTR [rdi], r12d + 00287 74 1f je SHORT $LN77@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00289 48 8b cb mov rcx, rbx + 0028c e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00291 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00298 0f b6 10 movzx edx, BYTE PTR [rax] + 0029b 48 8d 48 01 lea rcx, QWORD PTR [rax+1] + 0029f 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 002a6 eb 02 jmp SHORT $LN75@stbi__gif_ +$LN77@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 002a8 32 d2 xor dl, dl +$LN75@stbi__gif_: + +; 6473 : len = stbi__get8(s); + + 002aa 0f b6 d2 movzx edx, dl + +; 6474 : if (len == 4) { + + 002ad 83 fa 04 cmp edx, 4 + 002b0 0f 85 3a 01 00 + 00 jne $LN46@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 002b6 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 002bd 73 10 jae SHORT $LN82@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 002bf 0f b6 11 movzx edx, BYTE PTR [rcx] + 002c2 48 8d 41 01 lea rax, QWORD PTR [rcx+1] + 002c6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002cd eb 26 jmp SHORT $LN239@stbi__gif_ +$LN82@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 002cf 44 39 63 30 cmp DWORD PTR [rbx+48], r12d + 002d3 74 1e je SHORT $LN83@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 002d5 48 8b cb mov rcx, rbx + 002d8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 002dd 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002e4 0f b6 10 movzx edx, BYTE PTR [rax] + 002e7 48 ff c0 inc rax + 002ea 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 002f1 eb 02 jmp SHORT $LN239@stbi__gif_ +$LN83@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 002f3 32 d2 xor dl, dl +$LN239@stbi__gif_: + +; 6475 : g->eflags = stbi__get8(s); + + 002f5 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 002fa 48 8b c3 mov rax, rbx + 002fd 0f b6 c2 movzx eax, dl + 00300 89 46 30 mov DWORD PTR [rsi+48], eax + 00303 48 8d 3c 0b lea rdi, QWORD PTR [rbx+rcx] + +; 6476 : g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + 00307 48 8b cb mov rcx, rbx + 0030a e8 00 00 00 00 call stbi__get16le + 0030f 8d 0c 80 lea ecx, DWORD PTR [rax+rax*4] + +; 6477 : +; 6478 : // unset old transparent +; 6479 : if (g->transparent >= 0) { + + 00312 48 63 46 2c movsxd rax, DWORD PTR [rsi+44] + 00316 03 c9 add ecx, ecx + 00318 89 8e 68 88 00 + 00 mov DWORD PTR [rsi+34920], ecx + 0031e 85 c0 test eax, eax + 00320 78 05 js SHORT $LN48@stbi__gif_ + +; 6480 : g->pal[g->transparent][3] = 255; + + 00322 c6 44 86 37 ff mov BYTE PTR [rsi+rax*4+55], 255 ; 000000ffH +$LN48@stbi__gif_: + +; 6481 : } +; 6482 : if (g->eflags & 0x01) { + + 00327 f6 46 30 01 test BYTE PTR [rsi+48], 1 + 0032b 74 7d je SHORT $LN49@stbi__gif_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0032d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00334 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0033b 73 0f jae SHORT $LN94@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 0033d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00340 48 ff c0 inc rax + 00343 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0034a eb 25 jmp SHORT $LN93@stbi__gif_ +$LN94@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 0034c 44 39 27 cmp DWORD PTR [rdi], r12d + 0034f 74 1e je SHORT $LN95@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 00351 48 8b cb mov rcx, rbx + 00354 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00359 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00360 0f b6 08 movzx ecx, BYTE PTR [rax] + 00363 48 ff c0 inc rax + 00366 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0036d eb 02 jmp SHORT $LN93@stbi__gif_ +$LN95@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 0036f 32 c9 xor cl, cl +$LN93@stbi__gif_: + +; 6483 : g->transparent = stbi__get8(s); + + 00371 0f b6 c1 movzx eax, cl + 00374 89 46 2c mov DWORD PTR [rsi+44], eax + +; 6484 : if (g->transparent >= 0) { +; 6485 : g->pal[g->transparent][3] = 0; + + 00377 44 88 64 86 37 mov BYTE PTR [rsi+rax*4+55], r12b +$LN169@stbi__gif_: + +; 6381 : memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); + + 0037c 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] +$LL16@stbi__gif_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00380 48 8b 8b c0 00 + 00 00 mov rcx, QWORD PTR [rbx+192] + 00387 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 0038e 0f 83 a6 00 00 + 00 jae $LN58@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00394 0f b6 11 movzx edx, BYTE PTR [rcx] + 00397 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 0039b 48 ff c1 inc rcx + 0039e 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 003a5 e9 b6 00 00 00 jmp $LN57@stbi__gif_ +$LN49@stbi__gif_: + +; 1112 : if (s->io.read) { + + 003aa 4c 39 63 10 cmp QWORD PTR [rbx+16], r12 + 003ae 74 33 je SHORT $LN173@stbi__gif_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 003b0 8b 8b c8 00 00 + 00 mov ecx, DWORD PTR [rbx+200] + 003b6 2b 8b c0 00 00 + 00 sub ecx, DWORD PTR [rbx+192] + +; 1114 : if (blen < n) { + + 003bc 83 f9 01 cmp ecx, 1 + 003bf 7d 22 jge SHORT $LN173@stbi__gif_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 003c1 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 003c8 ba 01 00 00 00 mov edx, 1 + 003cd 2b d1 sub edx, ecx + 003cf 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003d6 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 003da ff 53 18 call QWORD PTR [rbx+24] + +; 6486 : } +; 6487 : } +; 6488 : else { +; 6489 : // don't need transparent +; 6490 : stbi__skip(s, 1); +; 6491 : g->transparent = -1; + + 003dd 44 89 6e 2c mov DWORD PTR [rsi+44], r13d + +; 6492 : } +; 6493 : } + + 003e1 eb 99 jmp SHORT $LN169@stbi__gif_ +$LN173@stbi__gif_: + +; 1120 : s->img_buffer += n; + + 003e3 48 ff 83 c0 00 + 00 00 inc QWORD PTR [rbx+192] + +; 6486 : } +; 6487 : } +; 6488 : else { +; 6489 : // don't need transparent +; 6490 : stbi__skip(s, 1); +; 6491 : g->transparent = -1; + + 003ea 44 89 6e 2c mov DWORD PTR [rsi+44], r13d + +; 6492 : } +; 6493 : } + + 003ee eb 8c jmp SHORT $LN169@stbi__gif_ +$LN46@stbi__gif_: + +; 1107 : if (n == 0) return; // already there! + + 003f0 85 d2 test edx, edx + 003f2 0f 84 db fd ff + ff je $LN85@stbi__gif_ + +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { + + 003f8 4c 39 63 10 cmp QWORD PTR [rbx+16], r12 + 003fc 74 2c je SHORT $LN89@stbi__gif_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 003fe 44 8b 83 c8 00 + 00 00 mov r8d, DWORD PTR [rbx+200] + 00405 44 2b c1 sub r8d, ecx + +; 1114 : if (blen < n) { + + 00408 44 3b c2 cmp r8d, edx + 0040b 7d 1d jge SHORT $LN89@stbi__gif_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 0040d 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00414 41 2b d0 sub edx, r8d + 00417 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0041b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00422 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 00425 e9 a9 fd ff ff jmp $LN85@stbi__gif_ +$LN89@stbi__gif_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 0042a 48 8d 04 11 lea rax, QWORD PTR [rcx+rdx] + 0042e 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 6494 : else { +; 6495 : stbi__skip(s, len); +; 6496 : break; + + 00435 e9 99 fd ff ff jmp $LN85@stbi__gif_ +$LN58@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 0043a 44 39 27 cmp DWORD PTR [rdi], r12d + 0043d 74 1f je SHORT $LN59@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 0043f 48 8b cb mov rcx, rbx + 00442 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00447 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0044e 0f b6 10 movzx edx, BYTE PTR [rax] + 00451 48 8d 48 01 lea rcx, QWORD PTR [rax+1] + 00455 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 0045c eb 02 jmp SHORT $LN57@stbi__gif_ +$LN59@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 0045e 32 d2 xor dl, dl +$LN57@stbi__gif_: + +; 6497 : } +; 6498 : } +; 6499 : while ((len = stbi__get8(s)) != 0) { + + 00460 0f b6 d2 movzx edx, dl + 00463 85 d2 test edx, edx + 00465 0f 84 75 fd ff + ff je $LL8@stbi__gif_ + +; 1112 : if (s->io.read) { + + 0046b 4c 39 63 10 cmp QWORD PTR [rbx+16], r12 + 0046f 74 2c je SHORT $LN65@stbi__gif_ + +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00471 44 8b 83 c8 00 + 00 00 mov r8d, DWORD PTR [rbx+200] + 00478 44 2b c1 sub r8d, ecx + +; 1114 : if (blen < n) { + + 0047b 44 3b c2 cmp r8d, edx + 0047e 7d 1d jge SHORT $LN65@stbi__gif_ + +; 1115 : s->img_buffer = s->img_buffer_end; + + 00480 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1116 : (s->io.skip)(s->io_user_data, n - blen); + + 00487 41 2b d0 sub edx, r8d + 0048a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0048e 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00495 ff 53 18 call QWORD PTR [rbx+24] + +; 1117 : return; + + 00498 e9 e3 fe ff ff jmp $LL16@stbi__gif_ +$LN65@stbi__gif_: + +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; + + 0049d 48 8d 04 11 lea rax, QWORD PTR [rcx+rdx] + 004a1 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 6500 : stbi__skip(s, len); +; 6501 : } + + 004a8 e9 d3 fe ff ff jmp $LL16@stbi__gif_ +$LN142@stbi__gif_: + +; 6398 : +; 6399 : for (;;) { +; 6400 : int tag = stbi__get8(s); +; 6401 : switch (tag) { + + 004ad 80 fa 2c cmp dl, 44 ; 0000002cH + 004b0 74 11 je SHORT $LN31@stbi__gif_ + 004b2 80 fa 3b cmp dl, 59 ; 0000003bH + 004b5 0f 85 0e 02 00 + 00 jne $LN180@stbi__gif_ + +; 6502 : break; +; 6503 : } +; 6504 : +; 6505 : case 0x3B: // gif stream termination code +; 6506 : return (stbi_uc*)s; // using '1' causes warning on some compilers + + 004bb 48 8b c3 mov rax, rbx + 004be e9 2b 02 00 00 jmp $LN9@stbi__gif_ +$LN31@stbi__gif_: + +; 6402 : case 0x2C: /* Image Descriptor */ +; 6403 : { +; 6404 : stbi__int32 x, y, w, h; +; 6405 : stbi_uc* o; +; 6406 : +; 6407 : x = stbi__get16le(s); + + 004c3 48 8b cb mov rcx, rbx + 004c6 e8 00 00 00 00 call stbi__get16le + +; 6408 : y = stbi__get16le(s); + + 004cb 48 8b cb mov rcx, rbx + 004ce 44 8b f8 mov r15d, eax + 004d1 e8 00 00 00 00 call stbi__get16le + +; 6409 : w = stbi__get16le(s); + + 004d6 48 8b cb mov rcx, rbx + 004d9 8b e8 mov ebp, eax + 004db e8 00 00 00 00 call stbi__get16le + +; 6410 : h = stbi__get16le(s); + + 004e0 48 8b cb mov rcx, rbx + 004e3 44 8b f0 mov r14d, eax + 004e6 e8 00 00 00 00 call stbi__get16le + +; 6411 : if (((x + w) > (g->w)) || ((y + h) > (g->h))) + + 004eb 44 8b 06 mov r8d, DWORD PTR [rsi] + 004ee 43 8d 0c 3e lea ecx, DWORD PTR [r14+r15] + 004f2 44 8b c8 mov r9d, eax + 004f5 41 3b c8 cmp ecx, r8d + 004f8 0f 8f af 01 00 + 00 jg $LN33@stbi__gif_ + 004fe 8d 0c 28 lea ecx, DWORD PTR [rax+rbp] + 00501 3b 4e 04 cmp ecx, DWORD PTR [rsi+4] + 00504 0f 8f a3 01 00 + 00 jg $LN33@stbi__gif_ + +; 6413 : +; 6414 : g->line_size = g->w * 4; + + 0050a 46 8d 04 85 00 + 00 00 00 lea r8d, DWORD PTR [r8*4] + +; 6415 : g->start_x = x * 4; + + 00512 42 8d 0c bd 00 + 00 00 00 lea ecx, DWORD PTR [r15*4] + 0051a 44 89 86 64 88 + 00 00 mov DWORD PTR [rsi+34916], r8d + +; 6416 : g->start_y = y * g->line_size; + + 00521 41 8b d0 mov edx, r8d + 00524 89 8e 4c 88 00 + 00 mov DWORD PTR [rsi+34892], ecx + 0052a 0f af d5 imul edx, ebp + +; 6417 : g->max_x = g->start_x + w * 4; + + 0052d 42 8d 04 b1 lea eax, DWORD PTR [rcx+r14*4] + +; 6418 : g->max_y = g->start_y + h * g->line_size; + + 00531 45 0f af c1 imul r8d, r9d + 00535 89 86 54 88 00 + 00 mov DWORD PTR [rsi+34900], eax + +; 6419 : g->cur_x = g->start_x; + + 0053b 89 8e 5c 88 00 + 00 mov DWORD PTR [rsi+34908], ecx + 00541 89 96 50 88 00 + 00 mov DWORD PTR [rsi+34896], edx + +; 6420 : g->cur_y = g->start_y; + + 00547 89 96 60 88 00 + 00 mov DWORD PTR [rsi+34912], edx + 0054d 41 8d 04 10 lea eax, DWORD PTR [r8+rdx] + 00551 89 86 58 88 00 + 00 mov DWORD PTR [rsi+34904], eax + +; 6421 : +; 6422 : // if the width of the specified rectangle is 0, that means +; 6423 : // we may not see *any* pixels or the image is malformed; +; 6424 : // to make sure this is caught, move the current y down to +; 6425 : // max_y (which is what out_gif_code checks). +; 6426 : if (w == 0) + + 00557 45 85 f6 test r14d, r14d + 0055a 75 0a jne SHORT $LN34@stbi__gif_ + +; 6427 : g->cur_y = g->max_y; + + 0055c 89 86 60 88 00 + 00 mov DWORD PTR [rsi+34912], eax + 00562 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] +$LN34@stbi__gif_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00566 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0056d 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00574 73 0f jae SHORT $LN98@stbi__gif_ + +; 1078 : return *s->img_buffer++; + + 00576 0f b6 08 movzx ecx, BYTE PTR [rax] + 00579 48 ff c0 inc rax + 0057c 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00583 eb 25 jmp SHORT $LN97@stbi__gif_ +$LN98@stbi__gif_: + +; 1079 : if (s->read_from_callbacks) { + + 00585 44 39 27 cmp DWORD PTR [rdi], r12d + 00588 74 1e je SHORT $LN99@stbi__gif_ + +; 1080 : stbi__refill_buffer(s); + + 0058a 48 8b cb mov rcx, rbx + 0058d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00592 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00599 0f b6 08 movzx ecx, BYTE PTR [rax] + 0059c 48 ff c0 inc rax + 0059f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 005a6 eb 02 jmp SHORT $LN97@stbi__gif_ +$LN99@stbi__gif_: + +; 1082 : } +; 1083 : return 0; + + 005a8 32 c9 xor cl, cl +$LN97@stbi__gif_: + +; 6428 : +; 6429 : g->lflags = stbi__get8(s); + + 005aa 44 0f b6 c9 movzx r9d, cl + +; 6430 : +; 6431 : if (g->lflags & 0x40) { + + 005ae 8b 8e 64 88 00 + 00 mov ecx, DWORD PTR [rsi+34916] + 005b4 41 8b d1 mov edx, r9d + 005b7 83 e2 40 and edx, 64 ; 00000040H + 005ba 44 89 8e 48 88 + 00 00 mov DWORD PTR [rsi+34888], r9d + +; 6432 : g->step = 8 * g->line_size; // first interlaced spacing +; 6433 : g->parse = 3; +; 6434 : } +; 6435 : else { +; 6436 : g->step = g->line_size; +; 6437 : g->parse = 0; +; 6438 : } +; 6439 : +; 6440 : if (g->lflags & 0x80) { + + 005c1 8d 04 cd 00 00 + 00 00 lea eax, DWORD PTR [rcx*8] + 005c8 0f 44 c1 cmove eax, ecx + 005cb f7 da neg edx + 005cd 89 86 44 88 00 + 00 mov DWORD PTR [rsi+34884], eax + 005d3 1b c0 sbb eax, eax + 005d5 83 e0 03 and eax, 3 + 005d8 89 86 40 88 00 + 00 mov DWORD PTR [rsi+34880], eax + 005de 45 84 c9 test r9b, r9b + 005e1 79 32 jns SHORT $LN37@stbi__gif_ + +; 6441 : stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + + 005e3 f6 46 30 01 test BYTE PTR [rsi+48], 1 + 005e7 74 04 je SHORT $LN55@stbi__gif_ + 005e9 44 8b 6e 2c mov r13d, DWORD PTR [rsi+44] +$LN55@stbi__gif_: + 005ed 41 83 e1 07 and r9d, 7 + 005f1 48 8d be 34 04 + 00 00 lea rdi, QWORD PTR [rsi+1076] + 005f8 41 0f b6 c9 movzx ecx, r9b + 005fc 41 b8 02 00 00 + 00 mov r8d, 2 + 00602 41 d3 e0 shl r8d, cl + 00605 45 8b cd mov r9d, r13d + 00608 48 8b cb mov rcx, rbx + 0060b 48 8b d7 mov rdx, rdi + 0060e e8 00 00 00 00 call stbi__gif_parse_colortable + +; 6442 : g->color_table = (stbi_uc*)g->lpal; +; 6443 : } + + 00613 eb 0a jmp SHORT $LN40@stbi__gif_ +$LN37@stbi__gif_: + +; 6444 : else if (g->flags & 0x80) { + + 00615 f6 46 20 80 test BYTE PTR [rsi+32], 128 ; 00000080H + 00619 74 76 je SHORT $LN39@stbi__gif_ + +; 6445 : g->color_table = (stbi_uc*)g->pal; + + 0061b 48 8d 7e 34 lea rdi, QWORD PTR [rsi+52] +$LN40@stbi__gif_: + +; 6449 : +; 6450 : o = stbi__process_gif_raster(s, g); + + 0061f 48 8b d6 mov rdx, rsi + 00622 48 89 be 38 88 + 00 00 mov QWORD PTR [rsi+34872], rdi + 00629 48 8b cb mov rcx, rbx + 0062c e8 00 00 00 00 call stbi__process_gif_raster + 00631 4c 8b c0 mov r8, rax + +; 6451 : if (!o) return NULL; + + 00634 48 85 c0 test rax, rax + 00637 0f 84 af 00 00 + 00 je $LN181@stbi__gif_ + +; 6455 : if (first_frame && (g->bgindex > 0)) { + + 0063d 44 39 64 24 68 cmp DWORD PTR first_frame$1$[rsp], r12d + 00642 74 48 je SHORT $LN14@stbi__gif_ + 00644 44 39 66 24 cmp DWORD PTR [rsi+36], r12d + 00648 7e 42 jle SHORT $LN14@stbi__gif_ + +; 6452 : +; 6453 : // if this was the first frame, +; 6454 : pcount = g->w * g->h; + + 0064a 8b 46 04 mov eax, DWORD PTR [rsi+4] + 0064d 0f af 06 imul eax, DWORD PTR [rsi] + +; 6456 : // if first frame, any pixel not drawn to gets the background color +; 6457 : for (pi = 0; pi < pcount; ++pi) { + + 00650 48 63 d0 movsxd rdx, eax + 00653 85 c0 test eax, eax + 00655 7e 35 jle SHORT $LN14@stbi__gif_ + 00657 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL15@stbi__gif_: + +; 6458 : if (g->history[pi] == 0) { + + 00660 48 8b 46 18 mov rax, QWORD PTR [rsi+24] + 00664 41 80 3c 04 00 cmp BYTE PTR [r12+rax], 0 + 00669 75 19 jne SHORT $LN13@stbi__gif_ + +; 6459 : g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + + 0066b 48 63 46 24 movsxd rax, DWORD PTR [rsi+36] + 0066f c6 44 86 37 ff mov BYTE PTR [rsi+rax*4+55], 255 ; 000000ffH + +; 6460 : memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4); + + 00674 48 63 46 24 movsxd rax, DWORD PTR [rsi+36] + 00678 48 8b 4e 08 mov rcx, QWORD PTR [rsi+8] + 0067c 8b 44 86 34 mov eax, DWORD PTR [rsi+rax*4+52] + 00680 42 89 04 a1 mov DWORD PTR [rcx+r12*4], eax +$LN13@stbi__gif_: + +; 6456 : // if first frame, any pixel not drawn to gets the background color +; 6457 : for (pi = 0; pi < pcount; ++pi) { + + 00684 49 ff c4 inc r12 + 00687 4c 3b e2 cmp r12, rdx + 0068a 7c d4 jl SHORT $LL15@stbi__gif_ +$LN14@stbi__gif_: + +; 6461 : } +; 6462 : } +; 6463 : } +; 6464 : +; 6465 : return o; + + 0068c 49 8b c0 mov rax, r8 + 0068f eb 5d jmp SHORT $LN9@stbi__gif_ +$LN39@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 00691 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00697 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006a0 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006a4 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BE@NAMJKDNF@missing?5color?5table@ + +; 6446 : } +; 6447 : else +; 6448 : return stbi__errpuc("missing color table", "Corrupt GIF"); + + 006ab eb 36 jmp SHORT $LN236@stbi__gif_ +$LN33@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 006ad 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 006b3 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006bc 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006c0 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ + +; 6412 : return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + 006c7 eb 1a jmp SHORT $LN236@stbi__gif_ +$LN180@stbi__gif_: + +; 431 : stbi__g_failure_reason = str; + + 006c9 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 006cf 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006d8 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006dc 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0N@DJABBOOH@unknown?5code@ +$LN236@stbi__gif_: + +; 6507 : +; 6508 : default: +; 6509 : return stbi__errpuc("unknown code", "Corrupt GIF"); +; 6510 : } +; 6511 : } +; 6512 : } + + 006e3 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 006e8 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN181@stbi__gif_: + 006ec 33 c0 xor eax, eax +$LN9@stbi__gif_: + 006ee 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 006f3 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 006f8 48 8b 74 24 60 mov rsi, QWORD PTR [rsp+96] + 006fd 48 83 c4 20 add rsp, 32 ; 00000020H + 00701 41 5f pop r15 + 00703 41 5e pop r14 + 00705 41 5d pop r13 + 00707 41 5c pop r12 + 00709 5f pop rdi + 0070a c3 ret 0 +stbi__gif_load_next ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__gif_load +_TEXT SEGMENT +g$ = 48 +__$ArrayPad$ = 34976 +s$ = 35056 +x$ = 35064 +y$ = 35072 +comp$ = 35080 +req_comp$ = 35088 +ri$dead$ = 35096 +stbi__gif_load PROC ; COMDAT + +; 6613 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 56 push r14 + 00007 41 57 push r15 + 00009 b8 b8 88 00 00 mov eax, 35000 ; 000088b8H + 0000e e8 00 00 00 00 call __chkstk + 00013 48 2b e0 sub rsp, rax + 00016 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 0001d 48 33 c4 xor rax, rsp + 00020 48 89 84 24 a0 + 88 00 00 mov QWORD PTR __$ArrayPad$[rsp], rax + 00028 8b ac 24 10 89 + 00 00 mov ebp, DWORD PTR req_comp$[rsp] + 0002f 4d 8b f8 mov r15, r8 + 00032 4c 8b f2 mov r14, rdx + 00035 48 8b f9 mov rdi, rcx + +; 6614 : stbi_uc* u = 0; +; 6615 : stbi__gif g; +; 6616 : memset(&g, 0, sizeof(g)); + + 00038 33 d2 xor edx, edx + 0003a 48 8d 4c 24 30 lea rcx, QWORD PTR g$[rsp] + 0003f 41 b8 70 88 00 + 00 mov r8d, 34928 ; 00008870H + 00045 49 8b d9 mov rbx, r9 + 00048 e8 00 00 00 00 call memset + +; 6617 : STBI_NOTUSED(ri); +; 6618 : +; 6619 : u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + + 0004d 33 f6 xor esi, esi + 0004f 48 8d 54 24 30 lea rdx, QWORD PTR g$[rsp] + 00054 44 8b cd mov r9d, ebp + 00057 48 89 74 24 20 mov QWORD PTR [rsp+32], rsi + 0005c 4c 8b c3 mov r8, rbx + 0005f 48 8b cf mov rcx, rdi + 00062 e8 00 00 00 00 call stbi__gif_load_next + +; 6620 : if (u == (stbi_uc*)s) u = 0; // end of animated gif marker +; 6621 : if (u) { + + 00067 48 3b c7 cmp rax, rdi + 0006a 48 0f 45 f0 cmovne rsi, rax + 0006e 48 8b de mov rbx, rsi + 00071 48 85 f6 test rsi, rsi + 00074 74 31 je SHORT $LN3@stbi__gif_ + +; 6622 : *x = g.w; + + 00076 44 8b 4c 24 30 mov r9d, DWORD PTR g$[rsp] + +; 6623 : *y = g.h; + + 0007b 8b 44 24 34 mov eax, DWORD PTR g$[rsp+4] + 0007f 45 89 0e mov DWORD PTR [r14], r9d + 00082 41 89 07 mov DWORD PTR [r15], eax + +; 6624 : +; 6625 : // moved conversion to after successful load so that the same +; 6626 : // can be done for multiple frames. +; 6627 : if (req_comp && req_comp != 4) + + 00085 85 ed test ebp, ebp + 00087 74 2e je SHORT $LN6@stbi__gif_ + 00089 83 fd 04 cmp ebp, 4 + 0008c 74 29 je SHORT $LN6@stbi__gif_ + +; 6628 : u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + + 0008e 44 8b c5 mov r8d, ebp + 00091 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00095 ba 04 00 00 00 mov edx, 4 + 0009a 48 8b ce mov rcx, rsi + 0009d e8 00 00 00 00 call stbi__convert_format + 000a2 48 8b d8 mov rbx, rax + +; 6629 : } + + 000a5 eb 10 jmp SHORT $LN6@stbi__gif_ +$LN3@stbi__gif_: + +; 6630 : else if (g.out) { + + 000a7 48 8b 4c 24 38 mov rcx, QWORD PTR g$[rsp+8] + 000ac 48 85 c9 test rcx, rcx + 000af 74 06 je SHORT $LN6@stbi__gif_ + +; 6631 : // if there was an error and we allocated an image buffer, free it! +; 6632 : STBI_FREE(g.out); + + 000b1 ff 15 00 00 00 + 00 call QWORD PTR __imp_free +$LN6@stbi__gif_: + +; 6633 : } +; 6634 : +; 6635 : // free buffers needed for multiple frame loading; +; 6636 : STBI_FREE(g.history); + + 000b7 48 8b 4c 24 48 mov rcx, QWORD PTR g$[rsp+24] + 000bc ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 6637 : STBI_FREE(g.background); + + 000c2 48 8b 4c 24 40 mov rcx, QWORD PTR g$[rsp+16] + 000c7 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 6638 : +; 6639 : return u; + + 000cd 48 8b c3 mov rax, rbx + +; 6640 : } + + 000d0 48 8b 8c 24 a0 + 88 00 00 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 000d8 48 33 cc xor rcx, rsp + 000db e8 00 00 00 00 call __security_check_cookie + 000e0 48 81 c4 b8 88 + 00 00 add rsp, 35000 ; 000088b8H + 000e7 41 5f pop r15 + 000e9 41 5e pop r14 + 000eb 5f pop rdi + 000ec 5e pop rsi + 000ed 5d pop rbp + 000ee 5b pop rbx + 000ef c3 ret 0 +stbi__gif_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__hdr_test_core +_TEXT SEGMENT +s$ = 48 +signature$ = 56 +stbi__hdr_test_core PROC ; COMDAT + +; 6653 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 57 push rdi + 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 6654 : int i; +; 6655 : for (i = 0; signature[i]; ++i) + + 0000f 80 3a 00 cmp BYTE PTR [rdx], 0 + 00012 48 8b da mov rbx, rdx + 00015 48 8b f9 mov rdi, rcx + 00018 74 5d je SHORT $LN18@stbi__hdr_ + 0001a 66 0f 1f 44 00 + 00 npad 6 +$LL4@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00020 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00027 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0002e 73 0f jae SHORT $LN8@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 00030 0f b6 08 movzx ecx, BYTE PTR [rax] + 00033 48 ff c0 inc rax + 00036 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 0003d eb 26 jmp SHORT $LN7@stbi__hdr_ +$LN8@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 0003f 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 00043 74 1e je SHORT $LN9@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00045 48 8b cf mov rcx, rdi + 00048 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0004d 48 8b 87 c0 00 + 00 00 mov rax, QWORD PTR [rdi+192] + 00054 0f b6 08 movzx ecx, BYTE PTR [rax] + 00057 48 ff c0 inc rax + 0005a 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + 00061 eb 02 jmp SHORT $LN7@stbi__hdr_ +$LN9@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00063 32 c9 xor cl, cl +$LN7@stbi__hdr_: + +; 6656 : if (stbi__get8(s) != signature[i]) + + 00065 0f be 03 movsx eax, BYTE PTR [rbx] + 00068 0f b6 c9 movzx ecx, cl + 0006b 3b c8 cmp ecx, eax + 0006d 75 39 jne SHORT $LN14@stbi__hdr_ + +; 6654 : int i; +; 6655 : for (i = 0; signature[i]; ++i) + + 0006f 48 ff c3 inc rbx + 00072 80 3b 00 cmp BYTE PTR [rbx], 0 + 00075 75 a9 jne SHORT $LL4@stbi__hdr_ +$LN18@stbi__hdr_: + +; 342 : s->img_buffer = s->img_buffer_original; + + 00077 48 8b 87 d0 00 + 00 00 mov rax, QWORD PTR [rdi+208] + 0007e 48 89 87 c0 00 + 00 00 mov QWORD PTR [rdi+192], rax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00085 48 8b 87 d8 00 + 00 00 mov rax, QWORD PTR [rdi+216] + 0008c 48 89 87 c8 00 + 00 00 mov QWORD PTR [rdi+200], rax + +; 6657 : return 0; +; 6658 : stbi__rewind(s); +; 6659 : return 1; + + 00093 b8 01 00 00 00 mov eax, 1 + +; 6660 : } + + 00098 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0009d 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 000a2 48 83 c4 20 add rsp, 32 ; 00000020H + 000a6 5f pop rdi + 000a7 c3 ret 0 +$LN14@stbi__hdr_: + 000a8 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000ad 33 c0 xor eax, eax + 000af 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 000b4 48 83 c4 20 add rsp, 32 ; 00000020H + 000b8 5f pop rdi + 000b9 c3 ret 0 +stbi__hdr_test_core ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__hdr_test +_TEXT SEGMENT +s$ = 48 +stbi__hdr_test PROC ; COMDAT + +; 6663 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 48 89 7c 24 18 mov QWORD PTR [rsp+24], rdi + 0000f 41 56 push r14 + 00011 48 83 ec 20 sub rsp, 32 ; 00000020H + 00015 48 8b f9 mov rdi, rcx + 00018 48 8d 99 c0 00 + 00 00 lea rbx, QWORD PTR [rcx+192] + 0001f 48 8d 35 00 00 + 00 00 lea rsi, OFFSET FLAT:??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ + 00026 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL7@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00030 48 8b 03 mov rax, QWORD PTR [rbx] + 00033 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 0003a 73 0b jae SHORT $LN11@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 0003c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0003f 48 ff c0 inc rax + 00042 48 89 03 mov QWORD PTR [rbx], rax + 00045 eb 1e jmp SHORT $LN10@stbi__hdr_ +$LN11@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 00047 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 0004b 74 16 je SHORT $LN12@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 0004d 48 8b cf mov rcx, rdi + 00050 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00055 48 8b 03 mov rax, QWORD PTR [rbx] + 00058 0f b6 08 movzx ecx, BYTE PTR [rax] + 0005b 48 ff c0 inc rax + 0005e 48 89 03 mov QWORD PTR [rbx], rax + 00061 eb 02 jmp SHORT $LN10@stbi__hdr_ +$LN12@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00063 32 c9 xor cl, cl +$LN10@stbi__hdr_: + +; 6656 : if (stbi__get8(s) != signature[i]) + + 00065 0f be 06 movsx eax, BYTE PTR [rsi] + 00068 0f b6 c9 movzx ecx, cl + 0006b 3b c8 cmp ecx, eax + 0006d 75 0f jne SHORT $LN34@stbi__hdr_ + +; 1084 : } +; 1085 : +; 1086 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1087 : // nothing +; 1088 : #else +; 1089 : stbi_inline static int stbi__at_eof(stbi__context* s) +; 1090 : { +; 1091 : if (s->io.read) { +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) +; 5935 : dest[i] = src[i]; +; 5936 : } +; 5937 : +; 5938 : static stbi_uc* stbi__pic_load_core(stbi__context* s, int width, int height, int* comp, stbi_uc* result) +; 5939 : { +; 5940 : int act_comp = 0, num_packets = 0, y, chained; +; 5941 : stbi__pic_packet packets[10]; +; 5942 : +; 5943 : // this will (should...) cater for even some bizarre stuff like having data +; 5944 : // for the same channel in multiple packets. +; 5945 : do { +; 5946 : stbi__pic_packet* packet; +; 5947 : +; 5948 : if (num_packets == sizeof(packets) / sizeof(packets[0])) +; 5949 : return stbi__errpuc("bad format", "too many packets"); +; 5950 : +; 5951 : packet = &packets[num_packets++]; +; 5952 : +; 5953 : chained = stbi__get8(s); +; 5954 : packet->size = stbi__get8(s); +; 5955 : packet->type = stbi__get8(s); +; 5956 : packet->channel = stbi__get8(s); +; 5957 : +; 5958 : act_comp |= packet->channel; +; 5959 : +; 5960 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (reading packets)"); +; 5961 : if (packet->size != 8) return stbi__errpuc("bad format", "packet isn't 8bpp"); +; 5962 : } while (chained); +; 5963 : +; 5964 : *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? +; 5965 : +; 5966 : for (y = 0; y < height; ++y) { +; 5967 : int packet_idx; +; 5968 : +; 5969 : for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { +; 5970 : stbi__pic_packet* packet = &packets[packet_idx]; +; 5971 : stbi_uc* dest = result + y * width * 4; +; 5972 : +; 5973 : switch (packet->type) { +; 5974 : default: +; 5975 : return stbi__errpuc("bad format", "packet has bad compression type"); +; 5976 : +; 5977 : case 0: {//uncompressed +; 5978 : int x; +; 5979 : +; 5980 : for (x = 0; x < width; ++x, dest += 4) +; 5981 : if (!stbi__readval(s, packet->channel, dest)) +; 5982 : return 0; +; 5983 : break; +; 5984 : } +; 5985 : +; 5986 : case 1://Pure RLE +; 5987 : { +; 5988 : int left = width, i; +; 5989 : +; 5990 : while (left > 0) { +; 5991 : stbi_uc count, value[4]; +; 5992 : +; 5993 : count = stbi__get8(s); +; 5994 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pure read count)"); +; 5995 : +; 5996 : if (count > left) +; 5997 : count = (stbi_uc)left; +; 5998 : +; 5999 : if (!stbi__readval(s, packet->channel, value)) return 0; +; 6000 : +; 6001 : for (i = 0; i < count; ++i, dest += 4) +; 6002 : stbi__copyval(packet->channel, dest, value); +; 6003 : left -= count; +; 6004 : } +; 6005 : } +; 6006 : break; +; 6007 : +; 6008 : case 2: {//Mixed RLE +; 6009 : int left = width; +; 6010 : while (left > 0) { +; 6011 : int count = stbi__get8(s), i; +; 6012 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (mixed read count)"); +; 6013 : +; 6014 : if (count >= 128) { // Repeated +; 6015 : stbi_uc value[4]; +; 6016 : +; 6017 : if (count == 128) +; 6018 : count = stbi__get16be(s); +; 6019 : else +; 6020 : count -= 127; +; 6021 : if (count > left) +; 6022 : return stbi__errpuc("bad file", "scanline overrun"); +; 6023 : +; 6024 : if (!stbi__readval(s, packet->channel, value)) +; 6025 : return 0; +; 6026 : +; 6027 : for (i = 0; i < count; ++i, dest += 4) +; 6028 : stbi__copyval(packet->channel, dest, value); +; 6029 : } +; 6030 : else { // Raw +; 6031 : ++count; +; 6032 : if (count > left) return stbi__errpuc("bad file", "scanline overrun"); +; 6033 : +; 6034 : for (i = 0; i < count; ++i, dest += 4) +; 6035 : if (!stbi__readval(s, packet->channel, dest)) +; 6036 : return 0; +; 6037 : } +; 6038 : left -= count; +; 6039 : } +; 6040 : break; +; 6041 : } +; 6042 : } +; 6043 : } +; 6044 : } +; 6045 : +; 6046 : return result; +; 6047 : } +; 6048 : +; 6049 : static void* stbi__pic_load(stbi__context* s, int* px, int* py, int* comp, int req_comp, stbi__result_info* ri) +; 6050 : { +; 6051 : stbi_uc* result; +; 6052 : int i, x, y, internal_comp; +; 6053 : STBI_NOTUSED(ri); +; 6054 : +; 6055 : if (!comp) comp = &internal_comp; +; 6056 : +; 6057 : for (i = 0; i < 92; ++i) +; 6058 : stbi__get8(s); +; 6059 : +; 6060 : x = stbi__get16be(s); +; 6061 : y = stbi__get16be(s); +; 6062 : +; 6063 : if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 6064 : if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 6065 : +; 6066 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pic header)"); +; 6067 : if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); +; 6068 : +; 6069 : stbi__get32be(s); //skip `ratio' +; 6070 : stbi__get16be(s); //skip `fields' +; 6071 : stbi__get16be(s); //skip `pad' +; 6072 : +; 6073 : // intermediate buffer is RGBA +; 6074 : result = (stbi_uc*)stbi__malloc_mad3(x, y, 4, 0); +; 6075 : if (!result) return stbi__errpuc("outofmem", "Out of memory"); +; 6076 : memset(result, 0xff, x * y * 4); +; 6077 : +; 6078 : if (!stbi__pic_load_core(s, x, y, comp, result)) { +; 6079 : STBI_FREE(result); +; 6080 : result = 0; +; 6081 : } +; 6082 : *px = x; +; 6083 : *py = y; +; 6084 : if (req_comp == 0) req_comp = *comp; +; 6085 : result = stbi__convert_format(result, 4, req_comp, x, y); +; 6086 : +; 6087 : return result; +; 6088 : } +; 6089 : +; 6090 : static int stbi__pic_test(stbi__context* s) +; 6091 : { +; 6092 : int r = stbi__pic_test_core(s); +; 6093 : stbi__rewind(s); +; 6094 : return r; +; 6095 : } +; 6096 : #endif +; 6097 : +; 6098 : // ************************************************************************************************* +; 6099 : // GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb +; 6100 : +; 6101 : #ifndef STBI_NO_GIF +; 6102 : typedef struct +; 6103 : { +; 6104 : stbi__int16 prefix; +; 6105 : stbi_uc first; +; 6106 : stbi_uc suffix; +; 6107 : } stbi__gif_lzw; +; 6108 : +; 6109 : typedef struct +; 6110 : { +; 6111 : int w, h; +; 6112 : stbi_uc* out; // output buffer (always 4 components) +; 6113 : stbi_uc* background; // The current "background" as far as a gif is concerned +; 6114 : stbi_uc* history; +; 6115 : int flags, bgindex, ratio, transparent, eflags; +; 6116 : stbi_uc pal[256][4]; +; 6117 : stbi_uc lpal[256][4]; +; 6118 : stbi__gif_lzw codes[8192]; +; 6119 : stbi_uc* color_table; +; 6120 : int parse, step; +; 6121 : int lflags; +; 6122 : int start_x, start_y; +; 6123 : int max_x, max_y; +; 6124 : int cur_x, cur_y; +; 6125 : int line_size; +; 6126 : int delay; +; 6127 : } stbi__gif; +; 6128 : +; 6129 : static int stbi__gif_test_raw(stbi__context* s) +; 6130 : { +; 6131 : int sz; +; 6132 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; +; 6133 : sz = stbi__get8(s); +; 6134 : if (sz != '9' && sz != '7') return 0; +; 6135 : if (stbi__get8(s) != 'a') return 0; +; 6136 : return 1; +; 6137 : } +; 6138 : +; 6139 : static int stbi__gif_test(stbi__context* s) +; 6140 : { +; 6141 : int r = stbi__gif_test_raw(s); +; 6142 : stbi__rewind(s); +; 6143 : return r; +; 6144 : } +; 6145 : +; 6146 : static void stbi__gif_parse_colortable(stbi__context* s, stbi_uc pal[256][4], int num_entries, int transp) +; 6147 : { +; 6148 : int i; +; 6149 : for (i = 0; i < num_entries; ++i) { +; 6150 : pal[i][2] = stbi__get8(s); +; 6151 : pal[i][1] = stbi__get8(s); +; 6152 : pal[i][0] = stbi__get8(s); +; 6153 : pal[i][3] = transp == i ? 0 : 255; +; 6154 : } +; 6155 : } +; 6156 : +; 6157 : static int stbi__gif_header(stbi__context* s, stbi__gif* g, int* comp, int is_info) +; 6158 : { +; 6159 : stbi_uc version; +; 6160 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') +; 6161 : return stbi__err("not GIF", "Corrupt GIF"); +; 6162 : +; 6163 : version = stbi__get8(s); +; 6164 : if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); +; 6165 : if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); +; 6166 : +; 6167 : stbi__g_failure_reason = ""; +; 6168 : g->w = stbi__get16le(s); +; 6169 : g->h = stbi__get16le(s); +; 6170 : g->flags = stbi__get8(s); +; 6171 : g->bgindex = stbi__get8(s); +; 6172 : g->ratio = stbi__get8(s); +; 6173 : g->transparent = -1; +; 6174 : +; 6175 : if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 6176 : if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 6177 : +; 6178 : if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments +; 6179 : +; 6180 : if (is_info) return 1; +; 6181 : +; 6182 : if (g->flags & 0x80) +; 6183 : stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); +; 6184 : +; 6185 : return 1; +; 6186 : } +; 6187 : +; 6188 : static int stbi__gif_info_raw(stbi__context* s, int* x, int* y, int* comp) +; 6189 : { +; 6190 : stbi__gif* g = (stbi__gif*)stbi__malloc(sizeof(stbi__gif)); +; 6191 : if (!g) return stbi__err("outofmem", "Out of memory"); +; 6192 : if (!stbi__gif_header(s, g, comp, 1)) { +; 6193 : STBI_FREE(g); +; 6194 : stbi__rewind(s); +; 6195 : return 0; +; 6196 : } +; 6197 : if (x) *x = g->w; +; 6198 : if (y) *y = g->h; +; 6199 : STBI_FREE(g); +; 6200 : return 1; +; 6201 : } +; 6202 : +; 6203 : static void stbi__out_gif_code(stbi__gif* g, stbi__uint16 code) +; 6204 : { +; 6205 : stbi_uc* p, * c; +; 6206 : int idx; +; 6207 : +; 6208 : // recurse to decode the prefixes, since the linked-list is backwards, +; 6209 : // and working backwards through an interleaved image would be nasty +; 6210 : if (g->codes[code].prefix >= 0) +; 6211 : stbi__out_gif_code(g, g->codes[code].prefix); +; 6212 : +; 6213 : if (g->cur_y >= g->max_y) return; +; 6214 : +; 6215 : idx = g->cur_x + g->cur_y; +; 6216 : p = &g->out[idx]; +; 6217 : g->history[idx / 4] = 1; +; 6218 : +; 6219 : c = &g->color_table[g->codes[code].suffix * 4]; +; 6220 : if (c[3] > 128) { // don't render transparent pixels; +; 6221 : p[0] = c[2]; +; 6222 : p[1] = c[1]; +; 6223 : p[2] = c[0]; +; 6224 : p[3] = c[3]; +; 6225 : } +; 6226 : g->cur_x += 4; +; 6227 : +; 6228 : if (g->cur_x >= g->max_x) { +; 6229 : g->cur_x = g->start_x; +; 6230 : g->cur_y += g->step; +; 6231 : +; 6232 : while (g->cur_y >= g->max_y && g->parse > 0) { +; 6233 : g->step = (1 << g->parse) * g->line_size; +; 6234 : g->cur_y = g->start_y + (g->step >> 1); +; 6235 : --g->parse; +; 6236 : } +; 6237 : } +; 6238 : } +; 6239 : +; 6240 : static stbi_uc* stbi__process_gif_raster(stbi__context* s, stbi__gif* g) +; 6241 : { +; 6242 : stbi_uc lzw_cs; +; 6243 : stbi__int32 len, init_code; +; 6244 : stbi__uint32 first; +; 6245 : stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; +; 6246 : stbi__gif_lzw* p; +; 6247 : +; 6248 : lzw_cs = stbi__get8(s); +; 6249 : if (lzw_cs > 12) return NULL; +; 6250 : clear = 1 << lzw_cs; +; 6251 : first = 1; +; 6252 : codesize = lzw_cs + 1; +; 6253 : codemask = (1 << codesize) - 1; +; 6254 : bits = 0; +; 6255 : valid_bits = 0; +; 6256 : for (init_code = 0; init_code < clear; init_code++) { +; 6257 : g->codes[init_code].prefix = -1; +; 6258 : g->codes[init_code].first = (stbi_uc)init_code; +; 6259 : g->codes[init_code].suffix = (stbi_uc)init_code; +; 6260 : } +; 6261 : +; 6262 : // support no starting clear code +; 6263 : avail = clear + 2; +; 6264 : oldcode = -1; +; 6265 : +; 6266 : len = 0; +; 6267 : for (;;) { +; 6268 : if (valid_bits < codesize) { +; 6269 : if (len == 0) { +; 6270 : len = stbi__get8(s); // start new block +; 6271 : if (len == 0) +; 6272 : return g->out; +; 6273 : } +; 6274 : --len; +; 6275 : bits |= (stbi__int32)stbi__get8(s) << valid_bits; +; 6276 : valid_bits += 8; +; 6277 : } +; 6278 : else { +; 6279 : stbi__int32 code = bits & codemask; +; 6280 : bits >>= codesize; +; 6281 : valid_bits -= codesize; +; 6282 : // @OPTIMIZE: is there some way we can accelerate the non-clear path? +; 6283 : if (code == clear) { // clear code +; 6284 : codesize = lzw_cs + 1; +; 6285 : codemask = (1 << codesize) - 1; +; 6286 : avail = clear + 2; +; 6287 : oldcode = -1; +; 6288 : first = 0; +; 6289 : } +; 6290 : else if (code == clear + 1) { // end of stream code +; 6291 : stbi__skip(s, len); +; 6292 : while ((len = stbi__get8(s)) > 0) +; 6293 : stbi__skip(s, len); +; 6294 : return g->out; +; 6295 : } +; 6296 : else if (code <= avail) { +; 6297 : if (first) { +; 6298 : return stbi__errpuc("no clear code", "Corrupt GIF"); +; 6299 : } +; 6300 : +; 6301 : if (oldcode >= 0) { +; 6302 : p = &g->codes[avail++]; +; 6303 : if (avail > 8192) { +; 6304 : return stbi__errpuc("too many codes", "Corrupt GIF"); +; 6305 : } +; 6306 : +; 6307 : p->prefix = (stbi__int16)oldcode; +; 6308 : p->first = g->codes[oldcode].first; +; 6309 : p->suffix = (code == avail) ? p->first : g->codes[code].first; +; 6310 : } +; 6311 : else if (code == avail) +; 6312 : return stbi__errpuc("illegal code in raster", "Corrupt GIF"); +; 6313 : +; 6314 : stbi__out_gif_code(g, (stbi__uint16)code); +; 6315 : +; 6316 : if ((avail & codemask) == 0 && avail <= 0x0FFF) { +; 6317 : codesize++; +; 6318 : codemask = (1 << codesize) - 1; +; 6319 : } +; 6320 : +; 6321 : oldcode = code; +; 6322 : } +; 6323 : else { +; 6324 : return stbi__errpuc("illegal code in raster", "Corrupt GIF"); +; 6325 : } +; 6326 : } +; 6327 : } +; 6328 : } +; 6329 : +; 6330 : // this function is designed to support animated gifs, although stb_image doesn't support it +; 6331 : // two back is the image from two frames ago, used for a very specific disposal format +; 6332 : static stbi_uc* stbi__gif_load_next(stbi__context* s, stbi__gif* g, int* comp, int req_comp, stbi_uc* two_back) +; 6333 : { +; 6334 : int dispose; +; 6335 : int first_frame; +; 6336 : int pi; +; 6337 : int pcount; +; 6338 : STBI_NOTUSED(req_comp); +; 6339 : +; 6340 : // on first frame, any non-written pixels get the background colour (non-transparent) +; 6341 : first_frame = 0; +; 6342 : if (g->out == 0) { +; 6343 : if (!stbi__gif_header(s, g, comp, 0)) return 0; // stbi__g_failure_reason set by stbi__gif_header +; 6344 : if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) +; 6345 : return stbi__errpuc("too large", "GIF image is too large"); +; 6346 : pcount = g->w * g->h; +; 6347 : g->out = (stbi_uc*)stbi__malloc(4 * pcount); +; 6348 : g->background = (stbi_uc*)stbi__malloc(4 * pcount); +; 6349 : g->history = (stbi_uc*)stbi__malloc(pcount); +; 6350 : if (!g->out || !g->background || !g->history) +; 6351 : return stbi__errpuc("outofmem", "Out of memory"); +; 6352 : +; 6353 : // image is treated as "transparent" at the start - ie, nothing overwrites the current background; +; 6354 : // background colour is only used for pixels that are not rendered first frame, after that "background" +; 6355 : // color refers to the color that was there the previous frame. +; 6356 : memset(g->out, 0x00, 4 * pcount); +; 6357 : memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) +; 6358 : memset(g->history, 0x00, pcount); // pixels that were affected previous frame +; 6359 : first_frame = 1; +; 6360 : } +; 6361 : else { +; 6362 : // second frame - how do we dispose of the previous one? +; 6363 : dispose = (g->eflags & 0x1C) >> 2; +; 6364 : pcount = g->w * g->h; +; 6365 : +; 6366 : if ((dispose == 3) && (two_back == 0)) { +; 6367 : dispose = 2; // if I don't have an image to revert back to, default to the old background +; 6368 : } +; 6369 : +; 6370 : if (dispose == 3) { // use previous graphic +; 6371 : for (pi = 0; pi < pcount; ++pi) { +; 6372 : if (g->history[pi]) { +; 6373 : memcpy(&g->out[pi * 4], &two_back[pi * 4], 4); +; 6374 : } +; 6375 : } +; 6376 : } +; 6377 : else if (dispose == 2) { +; 6378 : // restore what was changed last frame to background before that frame; +; 6379 : for (pi = 0; pi < pcount; ++pi) { +; 6380 : if (g->history[pi]) { +; 6381 : memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); +; 6382 : } +; 6383 : } +; 6384 : } +; 6385 : else { +; 6386 : // This is a non-disposal case eithe way, so just +; 6387 : // leave the pixels as is, and they will become the new background +; 6388 : // 1: do not dispose +; 6389 : // 0: not specified. +; 6390 : } +; 6391 : +; 6392 : // background is what out is after the undoing of the previou frame; +; 6393 : memcpy(g->background, g->out, 4 * g->w * g->h); +; 6394 : } +; 6395 : +; 6396 : // clear my history; +; 6397 : memset(g->history, 0x00, g->w * g->h); // pixels that were affected previous frame +; 6398 : +; 6399 : for (;;) { +; 6400 : int tag = stbi__get8(s); +; 6401 : switch (tag) { +; 6402 : case 0x2C: /* Image Descriptor */ +; 6403 : { +; 6404 : stbi__int32 x, y, w, h; +; 6405 : stbi_uc* o; +; 6406 : +; 6407 : x = stbi__get16le(s); +; 6408 : y = stbi__get16le(s); +; 6409 : w = stbi__get16le(s); +; 6410 : h = stbi__get16le(s); +; 6411 : if (((x + w) > (g->w)) || ((y + h) > (g->h))) +; 6412 : return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); +; 6413 : +; 6414 : g->line_size = g->w * 4; +; 6415 : g->start_x = x * 4; +; 6416 : g->start_y = y * g->line_size; +; 6417 : g->max_x = g->start_x + w * 4; +; 6418 : g->max_y = g->start_y + h * g->line_size; +; 6419 : g->cur_x = g->start_x; +; 6420 : g->cur_y = g->start_y; +; 6421 : +; 6422 : // if the width of the specified rectangle is 0, that means +; 6423 : // we may not see *any* pixels or the image is malformed; +; 6424 : // to make sure this is caught, move the current y down to +; 6425 : // max_y (which is what out_gif_code checks). +; 6426 : if (w == 0) +; 6427 : g->cur_y = g->max_y; +; 6428 : +; 6429 : g->lflags = stbi__get8(s); +; 6430 : +; 6431 : if (g->lflags & 0x40) { +; 6432 : g->step = 8 * g->line_size; // first interlaced spacing +; 6433 : g->parse = 3; +; 6434 : } +; 6435 : else { +; 6436 : g->step = g->line_size; +; 6437 : g->parse = 0; +; 6438 : } +; 6439 : +; 6440 : if (g->lflags & 0x80) { +; 6441 : stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); +; 6442 : g->color_table = (stbi_uc*)g->lpal; +; 6443 : } +; 6444 : else if (g->flags & 0x80) { +; 6445 : g->color_table = (stbi_uc*)g->pal; +; 6446 : } +; 6447 : else +; 6448 : return stbi__errpuc("missing color table", "Corrupt GIF"); +; 6449 : +; 6450 : o = stbi__process_gif_raster(s, g); +; 6451 : if (!o) return NULL; +; 6452 : +; 6453 : // if this was the first frame, +; 6454 : pcount = g->w * g->h; +; 6455 : if (first_frame && (g->bgindex > 0)) { +; 6456 : // if first frame, any pixel not drawn to gets the background color +; 6457 : for (pi = 0; pi < pcount; ++pi) { +; 6458 : if (g->history[pi] == 0) { +; 6459 : g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; +; 6460 : memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4); +; 6461 : } +; 6462 : } +; 6463 : } +; 6464 : +; 6465 : return o; +; 6466 : } +; 6467 : +; 6468 : case 0x21: // Comment Extension. +; 6469 : { +; 6470 : int len; +; 6471 : int ext = stbi__get8(s); +; 6472 : if (ext == 0xF9) { // Graphic Control Extension. +; 6473 : len = stbi__get8(s); +; 6474 : if (len == 4) { +; 6475 : g->eflags = stbi__get8(s); +; 6476 : g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. +; 6477 : +; 6478 : // unset old transparent +; 6479 : if (g->transparent >= 0) { +; 6480 : g->pal[g->transparent][3] = 255; +; 6481 : } +; 6482 : if (g->eflags & 0x01) { +; 6483 : g->transparent = stbi__get8(s); +; 6484 : if (g->transparent >= 0) { +; 6485 : g->pal[g->transparent][3] = 0; +; 6486 : } +; 6487 : } +; 6488 : else { +; 6489 : // don't need transparent +; 6490 : stbi__skip(s, 1); +; 6491 : g->transparent = -1; +; 6492 : } +; 6493 : } +; 6494 : else { +; 6495 : stbi__skip(s, len); +; 6496 : break; +; 6497 : } +; 6498 : } +; 6499 : while ((len = stbi__get8(s)) != 0) { +; 6500 : stbi__skip(s, len); +; 6501 : } +; 6502 : break; +; 6503 : } +; 6504 : +; 6505 : case 0x3B: // gif stream termination code +; 6506 : return (stbi_uc*)s; // using '1' causes warning on some compilers +; 6507 : +; 6508 : default: +; 6509 : return stbi__errpuc("unknown code", "Corrupt GIF"); +; 6510 : } +; 6511 : } +; 6512 : } +; 6513 : +; 6514 : static void* stbi__load_gif_main_outofmem(stbi__gif* g, stbi_uc* out, int** delays) +; 6515 : { +; 6516 : STBI_FREE(g->out); +; 6517 : STBI_FREE(g->history); +; 6518 : STBI_FREE(g->background); +; 6519 : +; 6520 : if (out) STBI_FREE(out); +; 6521 : if (delays && *delays) STBI_FREE(*delays); +; 6522 : return stbi__errpuc("outofmem", "Out of memory"); +; 6523 : } +; 6524 : +; 6525 : static void* stbi__load_gif_main(stbi__context* s, int** delays, int* x, int* y, int* z, int* comp, int req_comp) +; 6526 : { +; 6527 : if (stbi__gif_test(s)) { +; 6528 : int layers = 0; +; 6529 : stbi_uc* u = 0; +; 6530 : stbi_uc* out = 0; +; 6531 : stbi_uc* two_back = 0; +; 6532 : stbi__gif g; +; 6533 : int stride; +; 6534 : int out_size = 0; +; 6535 : int delays_size = 0; +; 6536 : +; 6537 : STBI_NOTUSED(out_size); +; 6538 : STBI_NOTUSED(delays_size); +; 6539 : +; 6540 : memset(&g, 0, sizeof(g)); +; 6541 : if (delays) { +; 6542 : *delays = 0; +; 6543 : } +; 6544 : +; 6545 : do { +; 6546 : u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); +; 6547 : if (u == (stbi_uc*)s) u = 0; // end of animated gif marker +; 6548 : +; 6549 : if (u) { +; 6550 : *x = g.w; +; 6551 : *y = g.h; +; 6552 : ++layers; +; 6553 : stride = g.w * g.h * 4; +; 6554 : +; 6555 : if (out) { +; 6556 : void* tmp = (stbi_uc*)STBI_REALLOC_SIZED(out, out_size, layers * stride); +; 6557 : if (!tmp) +; 6558 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6559 : else { +; 6560 : out = (stbi_uc*)tmp; +; 6561 : out_size = layers * stride; +; 6562 : } +; 6563 : +; 6564 : if (delays) { +; 6565 : int* new_delays = (int*)STBI_REALLOC_SIZED(*delays, delays_size, sizeof(int) * layers); +; 6566 : if (!new_delays) +; 6567 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6568 : *delays = new_delays; +; 6569 : delays_size = layers * sizeof(int); +; 6570 : } +; 6571 : } +; 6572 : else { +; 6573 : out = (stbi_uc*)stbi__malloc(layers * stride); +; 6574 : if (!out) +; 6575 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6576 : out_size = layers * stride; +; 6577 : if (delays) { +; 6578 : *delays = (int*)stbi__malloc(layers * sizeof(int)); +; 6579 : if (!*delays) +; 6580 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6581 : delays_size = layers * sizeof(int); +; 6582 : } +; 6583 : } +; 6584 : memcpy(out + ((layers - 1) * stride), u, stride); +; 6585 : if (layers >= 2) { +; 6586 : two_back = out - 2 * stride; +; 6587 : } +; 6588 : +; 6589 : if (delays) { +; 6590 : (*delays)[layers - 1U] = g.delay; +; 6591 : } +; 6592 : } +; 6593 : } while (u != 0); +; 6594 : +; 6595 : // free temp buffer; +; 6596 : STBI_FREE(g.out); +; 6597 : STBI_FREE(g.history); +; 6598 : STBI_FREE(g.background); +; 6599 : +; 6600 : // do the final conversion after loading everything; +; 6601 : if (req_comp && req_comp != 4) +; 6602 : out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); +; 6603 : +; 6604 : *z = layers; +; 6605 : return out; +; 6606 : } +; 6607 : else { +; 6608 : return stbi__errpuc("not GIF", "Image was not as a gif type."); +; 6609 : } +; 6610 : } +; 6611 : +; 6612 : static void* stbi__gif_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 6613 : { +; 6614 : stbi_uc* u = 0; +; 6615 : stbi__gif g; +; 6616 : memset(&g, 0, sizeof(g)); +; 6617 : STBI_NOTUSED(ri); +; 6618 : +; 6619 : u = stbi__gif_load_next(s, &g, comp, req_comp, 0); +; 6620 : if (u == (stbi_uc*)s) u = 0; // end of animated gif marker +; 6621 : if (u) { +; 6622 : *x = g.w; +; 6623 : *y = g.h; +; 6624 : +; 6625 : // moved conversion to after successful load so that the same +; 6626 : // can be done for multiple frames. +; 6627 : if (req_comp && req_comp != 4) +; 6628 : u = stbi__convert_format(u, 4, req_comp, g.w, g.h); +; 6629 : } +; 6630 : else if (g.out) { +; 6631 : // if there was an error and we allocated an image buffer, free it! +; 6632 : STBI_FREE(g.out); +; 6633 : } +; 6634 : +; 6635 : // free buffers needed for multiple frame loading; +; 6636 : STBI_FREE(g.history); +; 6637 : STBI_FREE(g.background); +; 6638 : +; 6639 : return u; +; 6640 : } +; 6641 : +; 6642 : static int stbi__gif_info(stbi__context* s, int* x, int* y, int* comp) +; 6643 : { +; 6644 : return stbi__gif_info_raw(s, x, y, comp); +; 6645 : } +; 6646 : #endif +; 6647 : +; 6648 : // ************************************************************************************************* +; 6649 : // Radiance RGBE HDR loader +; 6650 : // originally by Nicolas Schulz +; 6651 : #ifndef STBI_NO_HDR +; 6652 : static int stbi__hdr_test_core(stbi__context* s, const char* signature) +; 6653 : { +; 6654 : int i; +; 6655 : for (i = 0; signature[i]; ++i) + + 0006f 48 ff c6 inc rsi + 00072 80 3e 00 cmp BYTE PTR [rsi], 0 + 00075 75 b9 jne SHORT $LL7@stbi__hdr_ + +; 6658 : stbi__rewind(s); +; 6659 : return 1; + + 00077 b8 01 00 00 00 mov eax, 1 + 0007c eb 6f jmp SHORT $LN18@stbi__hdr_ +$LN34@stbi__hdr_: + +; 6657 : return 0; + + 0007e 48 8b 87 d0 00 + 00 00 mov rax, QWORD PTR [rdi+208] + 00085 48 8d 35 00 00 + 00 00 lea rsi, OFFSET FLAT:??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ + 0008c 48 8b 8f d8 00 + 00 00 mov rcx, QWORD PTR [rdi+216] + 00093 48 89 03 mov QWORD PTR [rbx], rax + 00096 48 89 8f c8 00 + 00 00 mov QWORD PTR [rdi+200], rcx + 0009d 0f 1f 00 npad 3 +$LL21@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000a0 48 3b 87 c8 00 + 00 00 cmp rax, QWORD PTR [rdi+200] + 000a7 73 0b jae SHORT $LN25@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 000a9 0f b6 08 movzx ecx, BYTE PTR [rax] + 000ac 48 ff c0 inc rax + 000af 48 89 03 mov QWORD PTR [rbx], rax + 000b2 eb 1e jmp SHORT $LN24@stbi__hdr_ +$LN25@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 000b4 83 7f 30 00 cmp DWORD PTR [rdi+48], 0 + 000b8 74 16 je SHORT $LN26@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 000ba 48 8b cf mov rcx, rdi + 000bd e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000c2 48 8b 03 mov rax, QWORD PTR [rbx] + 000c5 0f b6 08 movzx ecx, BYTE PTR [rax] + 000c8 48 ff c0 inc rax + 000cb 48 89 03 mov QWORD PTR [rbx], rax + 000ce eb 02 jmp SHORT $LN24@stbi__hdr_ +$LN26@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 000d0 32 c9 xor cl, cl +$LN24@stbi__hdr_: + +; 6656 : if (stbi__get8(s) != signature[i]) + + 000d2 0f b6 d1 movzx edx, cl + 000d5 0f be 0e movsx ecx, BYTE PTR [rsi] + 000d8 3b d1 cmp edx, ecx + 000da 75 0f jne SHORT $LN35@stbi__hdr_ + +; 1084 : } +; 1085 : +; 1086 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1087 : // nothing +; 1088 : #else +; 1089 : stbi_inline static int stbi__at_eof(stbi__context* s) +; 1090 : { +; 1091 : if (s->io.read) { +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; +; 1096 : } +; 1097 : +; 1098 : return s->img_buffer >= s->img_buffer_end; +; 1099 : } +; 1100 : #endif +; 1101 : +; 1102 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +; 1103 : // nothing +; 1104 : #else +; 1105 : static void stbi__skip(stbi__context* s, int n) +; 1106 : { +; 1107 : if (n == 0) return; // already there! +; 1108 : if (n < 0) { +; 1109 : s->img_buffer = s->img_buffer_end; +; 1110 : return; +; 1111 : } +; 1112 : if (s->io.read) { +; 1113 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1114 : if (blen < n) { +; 1115 : s->img_buffer = s->img_buffer_end; +; 1116 : (s->io.skip)(s->io_user_data, n - blen); +; 1117 : return; +; 1118 : } +; 1119 : } +; 1120 : s->img_buffer += n; +; 1121 : } +; 1122 : #endif +; 1123 : +; 1124 : #if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +; 1125 : // nothing +; 1126 : #else +; 1127 : static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +; 1128 : { +; 1129 : if (s->io.read) { +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); +; 1131 : if (blen < n) { +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; +; 1139 : return res; +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { +; 1144 : memcpy(buffer, s->img_buffer, n); +; 1145 : s->img_buffer += n; +; 1146 : return 1; +; 1147 : } +; 1148 : else +; 1149 : return 0; +; 1150 : } +; 1151 : #endif +; 1152 : +; 1153 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1154 : // nothing +; 1155 : #else +; 1156 : static int stbi__get16be(stbi__context* s) +; 1157 : { +; 1158 : int z = stbi__get8(s); +; 1159 : return (z << 8) + stbi__get8(s); +; 1160 : } +; 1161 : #endif +; 1162 : +; 1163 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +; 1164 : // nothing +; 1165 : #else +; 1166 : static stbi__uint32 stbi__get32be(stbi__context* s) +; 1167 : { +; 1168 : stbi__uint32 z = stbi__get16be(s); +; 1169 : return (z << 16) + stbi__get16be(s); +; 1170 : } +; 1171 : #endif +; 1172 : +; 1173 : #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +; 1174 : // nothing +; 1175 : #else +; 1176 : static int stbi__get16le(stbi__context* s) +; 1177 : { +; 1178 : int z = stbi__get8(s); +; 1179 : return z + (stbi__get8(s) << 8); +; 1180 : } +; 1181 : #endif +; 1182 : +; 1183 : #ifndef STBI_NO_BMP +; 1184 : static stbi__uint32 stbi__get32le(stbi__context* s) +; 1185 : { +; 1186 : stbi__uint32 z = stbi__get16le(s); +; 1187 : z += (stbi__uint32)stbi__get16le(s) << 16; +; 1188 : return z; +; 1189 : } +; 1190 : #endif +; 1191 : +; 1192 : #define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +; 1193 : +; 1194 : #if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1195 : // nothing +; 1196 : #else +; 1197 : ////////////////////////////////////////////////////////////////////////////// +; 1198 : // +; 1199 : // generic converter from built-in img_n to req_comp +; 1200 : // individual types do this automatically as much as possible (e.g. jpeg +; 1201 : // does all cases internally since it needs to colorspace convert anyway, +; 1202 : // and it never has alpha, so very few cases ). png can automatically +; 1203 : // interleave an alpha=255 channel, but falls back to this for other cases +; 1204 : // +; 1205 : // assume data buffer is malloced, so malloc a new one and free that one +; 1206 : // only failure mode is malloc failing +; 1207 : +; 1208 : static stbi_uc stbi__compute_y(int r, int g, int b) +; 1209 : { +; 1210 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1211 : } +; 1212 : #endif +; 1213 : +; 1214 : #if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +; 1215 : // nothing +; 1216 : #else +; 1217 : static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1218 : { +; 1219 : int i, j; +; 1220 : unsigned char* good; +; 1221 : +; 1222 : if (req_comp == img_n) return data; +; 1223 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1224 : +; 1225 : good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); +; 1226 : if (good == NULL) { +; 1227 : STBI_FREE(data); +; 1228 : return stbi__errpuc("outofmem", "Out of memory"); +; 1229 : } +; 1230 : +; 1231 : for (j = 0; j < (int)y; ++j) { +; 1232 : unsigned char* src = data + j * x * img_n; +; 1233 : unsigned char* dest = good + j * x * req_comp; +; 1234 : +; 1235 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1236 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1237 : // convert source image with img_n components to one with req_comp components; +; 1238 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1239 : switch (STBI__COMBO(img_n, req_comp)) { +; 1240 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; +; 1241 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1242 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; +; 1243 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1244 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1245 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1246 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; +; 1247 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1248 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; +; 1249 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; +; 1250 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1251 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1252 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1253 : } +; 1254 : #undef STBI__CASE +; 1255 : } +; 1256 : +; 1257 : STBI_FREE(data); +; 1258 : return good; +; 1259 : } +; 1260 : #endif +; 1261 : +; 1262 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1263 : // nothing +; 1264 : #else +; 1265 : static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +; 1266 : { +; 1267 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +; 1268 : } +; 1269 : #endif +; 1270 : +; 1271 : #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +; 1272 : // nothing +; 1273 : #else +; 1274 : static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +; 1275 : { +; 1276 : int i, j; +; 1277 : stbi__uint16* good; +; 1278 : +; 1279 : if (req_comp == img_n) return data; +; 1280 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4); +; 1281 : +; 1282 : good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); +; 1283 : if (good == NULL) { +; 1284 : STBI_FREE(data); +; 1285 : return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); +; 1286 : } +; 1287 : +; 1288 : for (j = 0; j < (int)y; ++j) { +; 1289 : stbi__uint16* src = data + j * x * img_n; +; 1290 : stbi__uint16* dest = good + j * x * req_comp; +; 1291 : +; 1292 : #define STBI__COMBO(a,b) ((a)*8+(b)) +; 1293 : #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) +; 1294 : // convert source image with img_n components to one with req_comp components; +; 1295 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1296 : switch (STBI__COMBO(img_n, req_comp)) { +; 1297 : STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; +; 1298 : STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1299 : STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; +; 1300 : STBI__CASE(2, 1) { dest[0] = src[0]; } break; +; 1301 : STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; +; 1302 : STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; +; 1303 : STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; +; 1304 : STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1305 : STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; +; 1306 : STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; +; 1307 : STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; +; 1308 : STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; +; 1309 : default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); +; 1310 : } +; 1311 : #undef STBI__CASE +; 1312 : } +; 1313 : +; 1314 : STBI_FREE(data); +; 1315 : return good; +; 1316 : } +; 1317 : #endif +; 1318 : +; 1319 : #ifndef STBI_NO_LINEAR +; 1320 : static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +; 1321 : { +; 1322 : int i, k, n; +; 1323 : float* output; +; 1324 : if (!data) return NULL; +; 1325 : output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); +; 1326 : if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } +; 1327 : // compute number of non-alpha components +; 1328 : if (comp & 1) n = comp; else n = comp - 1; +; 1329 : for (i = 0; i < x * y; ++i) { +; 1330 : for (k = 0; k < n; ++k) { +; 1331 : output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); +; 1332 : } +; 1333 : } +; 1334 : if (n < comp) { +; 1335 : for (i = 0; i < x * y; ++i) { +; 1336 : output[i * comp + n] = data[i * comp + n] / 255.0f; +; 1337 : } +; 1338 : } +; 1339 : STBI_FREE(data); +; 1340 : return output; +; 1341 : } +; 1342 : #endif +; 1343 : +; 1344 : #ifndef STBI_NO_HDR +; 1345 : #define stbi__float2int(x) ((int) (x)) +; 1346 : static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +; 1347 : { +; 1348 : int i, k, n; +; 1349 : stbi_uc* output; +; 1350 : if (!data) return NULL; +; 1351 : output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); +; 1352 : if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } +; 1353 : // compute number of non-alpha components +; 1354 : if (comp & 1) n = comp; else n = comp - 1; +; 1355 : for (i = 0; i < x * y; ++i) { +; 1356 : for (k = 0; k < n; ++k) { +; 1357 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; +; 1358 : if (z < 0) z = 0; +; 1359 : if (z > 255) z = 255; +; 1360 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1361 : } +; 1362 : if (k < comp) { +; 1363 : float z = data[i * comp + k] * 255 + 0.5f; +; 1364 : if (z < 0) z = 0; +; 1365 : if (z > 255) z = 255; +; 1366 : output[i * comp + k] = (stbi_uc)stbi__float2int(z); +; 1367 : } +; 1368 : } +; 1369 : STBI_FREE(data); +; 1370 : return output; +; 1371 : } +; 1372 : #endif +; 1373 : +; 1374 : ////////////////////////////////////////////////////////////////////////////// +; 1375 : // +; 1376 : // "baseline" JPEG/JFIF decoder +; 1377 : // +; 1378 : // simple implementation +; 1379 : // - doesn't support delayed output of y-dimension +; 1380 : // - simple interface (only one output format: 8-bit interleaved RGB) +; 1381 : // - doesn't try to recover corrupt jpegs +; 1382 : // - doesn't allow partial loading, loading multiple at once +; 1383 : // - still fast on x86 (copying globals into locals doesn't help x86) +; 1384 : // - allocates lots of intermediate memory (full size of all components) +; 1385 : // - non-interleaved case requires this anyway +; 1386 : // - allows good upsampling (see next) +; 1387 : // high-quality +; 1388 : // - upsampled channels are bilinearly interpolated, even across blocks +; 1389 : // - quality integer IDCT derived from IJG's 'slow' +; 1390 : // performance +; 1391 : // - fast huffman; reasonable integer IDCT +; 1392 : // - some SIMD kernels for common paths on targets with SSE2/NEON +; 1393 : // - uses a lot of intermediate memory, could cache poorly +; 1394 : +; 1395 : #ifndef STBI_NO_JPEG +; 1396 : +; 1397 : // huffman decoding acceleration +; 1398 : #define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +; 1399 : +; 1400 : typedef struct +; 1401 : { +; 1402 : stbi_uc fast[1 << FAST_BITS]; +; 1403 : // weirdly, repacking this into AoS is a 10% speed loss, instead of a win +; 1404 : stbi__uint16 code[256]; +; 1405 : stbi_uc values[256]; +; 1406 : stbi_uc size[257]; +; 1407 : unsigned int maxcode[18]; +; 1408 : int delta[17]; // old 'firstsymbol' - old 'firstcode' +; 1409 : } stbi__huffman; +; 1410 : +; 1411 : typedef struct +; 1412 : { +; 1413 : stbi__context* s; +; 1414 : stbi__huffman huff_dc[4]; +; 1415 : stbi__huffman huff_ac[4]; +; 1416 : stbi__uint16 dequant[4][64]; +; 1417 : stbi__int16 fast_ac[4][1 << FAST_BITS]; +; 1418 : +; 1419 : // sizes for components, interleaved MCUs +; 1420 : int img_h_max, img_v_max; +; 1421 : int img_mcu_x, img_mcu_y; +; 1422 : int img_mcu_w, img_mcu_h; +; 1423 : +; 1424 : // definition of jpeg image component +; 1425 : struct +; 1426 : { +; 1427 : int id; +; 1428 : int h, v; +; 1429 : int tq; +; 1430 : int hd, ha; +; 1431 : int dc_pred; +; 1432 : +; 1433 : int x, y, w2, h2; +; 1434 : stbi_uc* data; +; 1435 : void* raw_data, * raw_coeff; +; 1436 : stbi_uc* linebuf; +; 1437 : short* coeff; // progressive only +; 1438 : int coeff_w, coeff_h; // number of 8x8 coefficient blocks +; 1439 : } img_comp[4]; +; 1440 : +; 1441 : stbi__uint32 code_buffer; // jpeg entropy-coded buffer +; 1442 : int code_bits; // number of valid bits +; 1443 : unsigned char marker; // marker seen while filling entropy buffer +; 1444 : int nomore; // flag if we saw a marker so must stop +; 1445 : +; 1446 : int progressive; +; 1447 : int spec_start; +; 1448 : int spec_end; +; 1449 : int succ_high; +; 1450 : int succ_low; +; 1451 : int eob_run; +; 1452 : int jfif; +; 1453 : int app14_color_transform; // Adobe APP14 tag +; 1454 : int rgb; +; 1455 : +; 1456 : int scan_n, order[4]; +; 1457 : int restart_interval, todo; +; 1458 : +; 1459 : // kernels +; 1460 : void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); +; 1461 : void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); +; 1462 : stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); +; 1463 : } stbi__jpeg; +; 1464 : +; 1465 : static int stbi__build_huffman(stbi__huffman* h, int* count) +; 1466 : { +; 1467 : int i, j, k = 0; +; 1468 : unsigned int code; +; 1469 : // build size list for each symbol (from JPEG spec) +; 1470 : for (i = 0; i < 16; ++i) { +; 1471 : for (j = 0; j < count[i]; ++j) { +; 1472 : h->size[k++] = (stbi_uc)(i + 1); +; 1473 : if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); +; 1474 : } +; 1475 : } +; 1476 : h->size[k] = 0; +; 1477 : +; 1478 : // compute actual symbols (from jpeg spec) +; 1479 : code = 0; +; 1480 : k = 0; +; 1481 : for (j = 1; j <= 16; ++j) { +; 1482 : // compute delta to add to code to compute symbol id +; 1483 : h->delta[j] = k - code; +; 1484 : if (h->size[k] == j) { +; 1485 : while (h->size[k] == j) +; 1486 : h->code[k++] = (stbi__uint16)(code++); +; 1487 : if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); +; 1488 : } +; 1489 : // compute largest code + 1 for this size, preshifted as needed later +; 1490 : h->maxcode[j] = code << (16 - j); +; 1491 : code <<= 1; +; 1492 : } +; 1493 : h->maxcode[j] = 0xffffffff; +; 1494 : +; 1495 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1496 : memset(h->fast, 255, 1 << FAST_BITS); +; 1497 : for (i = 0; i < k; ++i) { +; 1498 : int s = h->size[i]; +; 1499 : if (s <= FAST_BITS) { +; 1500 : int c = h->code[i] << (FAST_BITS - s); +; 1501 : int m = 1 << (FAST_BITS - s); +; 1502 : for (j = 0; j < m; ++j) { +; 1503 : h->fast[c + j] = (stbi_uc)i; +; 1504 : } +; 1505 : } +; 1506 : } +; 1507 : return 1; +; 1508 : } +; 1509 : +; 1510 : // build a table that decodes both magnitude and value of small ACs in +; 1511 : // one go. +; 1512 : static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +; 1513 : { +; 1514 : int i; +; 1515 : for (i = 0; i < (1 << FAST_BITS); ++i) { +; 1516 : stbi_uc fast = h->fast[i]; +; 1517 : fast_ac[i] = 0; +; 1518 : if (fast < 255) { +; 1519 : int rs = h->values[fast]; +; 1520 : int run = (rs >> 4) & 15; +; 1521 : int magbits = rs & 15; +; 1522 : int len = h->size[fast]; +; 1523 : +; 1524 : if (magbits && len + magbits <= FAST_BITS) { +; 1525 : // magnitude code followed by receive_extend code +; 1526 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); +; 1527 : int m = 1 << (magbits - 1); +; 1528 : if (k < m) k += (~0U << magbits) + 1; +; 1529 : // if the result is small enough, we can fit it in fast_ac table +; 1530 : if (k >= -128 && k <= 127) +; 1531 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); +; 1532 : } +; 1533 : } +; 1534 : } +; 1535 : } +; 1536 : +; 1537 : static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +; 1538 : { +; 1539 : do { +; 1540 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s); +; 1541 : if (b == 0xff) { +; 1542 : int c = stbi__get8(j->s); +; 1543 : while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes +; 1544 : if (c != 0) { +; 1545 : j->marker = (unsigned char)c; +; 1546 : j->nomore = 1; +; 1547 : return; +; 1548 : } +; 1549 : } +; 1550 : j->code_buffer |= b << (24 - j->code_bits); +; 1551 : j->code_bits += 8; +; 1552 : } while (j->code_bits <= 24); +; 1553 : } +; 1554 : +; 1555 : // (1 << n) - 1 +; 1556 : static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +; 1557 : +; 1558 : // decode a jpeg huffman value from the bitstream +; 1559 : stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +; 1560 : { +; 1561 : unsigned int temp; +; 1562 : int c, k; +; 1563 : +; 1564 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1565 : +; 1566 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1567 : // if the code is <= FAST_BITS +; 1568 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1569 : k = h->fast[c]; +; 1570 : if (k < 255) { +; 1571 : int s = h->size[k]; +; 1572 : if (s > j->code_bits) +; 1573 : return -1; +; 1574 : j->code_buffer <<= s; +; 1575 : j->code_bits -= s; +; 1576 : return h->values[k]; +; 1577 : } +; 1578 : +; 1579 : // naive test is to shift the code_buffer down so k bits are +; 1580 : // valid, then test against maxcode. To speed this up, we've +; 1581 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1582 : // end; in other words, regardless of the number of bits, it +; 1583 : // wants to be compared against something shifted to have 16; +; 1584 : // that way we don't need to shift inside the loop. +; 1585 : temp = j->code_buffer >> 16; +; 1586 : for (k = FAST_BITS + 1; ; ++k) +; 1587 : if (temp < h->maxcode[k]) +; 1588 : break; +; 1589 : if (k == 17) { +; 1590 : // error! code not found +; 1591 : j->code_bits -= 16; +; 1592 : return -1; +; 1593 : } +; 1594 : +; 1595 : if (k > j->code_bits) +; 1596 : return -1; +; 1597 : +; 1598 : // convert the huffman code to the symbol id +; 1599 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; +; 1600 : if (c < 0 || c >= 256) // symbol id out of bounds! +; 1601 : return -1; +; 1602 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); +; 1603 : +; 1604 : // convert the id to a symbol +; 1605 : j->code_bits -= k; +; 1606 : j->code_buffer <<= k; +; 1607 : return h->values[c]; +; 1608 : } +; 1609 : +; 1610 : // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); +; 1620 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1621 : +; 1622 : sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1623 : k = stbi_lrot(j->code_buffer, n); +; 1624 : j->code_buffer = k & ~stbi__bmask[n]; +; 1625 : k &= stbi__bmask[n]; +; 1626 : j->code_bits -= n; +; 1627 : return k + (stbi__jbias[n] & (sgn - 1)); +; 1628 : } +; 1629 : +; 1630 : // get some unsigned bits +; 1631 : stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +; 1632 : { +; 1633 : unsigned int k; +; 1634 : if (j->code_bits < n) stbi__grow_buffer_unsafe(j); +; 1635 : if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1636 : k = stbi_lrot(j->code_buffer, n); +; 1637 : j->code_buffer = k & ~stbi__bmask[n]; +; 1638 : k &= stbi__bmask[n]; +; 1639 : j->code_bits -= n; +; 1640 : return k; +; 1641 : } +; 1642 : +; 1643 : stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +; 1644 : { +; 1645 : unsigned int k; +; 1646 : if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); +; 1647 : if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing +; 1648 : k = j->code_buffer; +; 1649 : j->code_buffer <<= 1; +; 1650 : --j->code_bits; +; 1651 : return k & 0x80000000; +; 1652 : } +; 1653 : +; 1654 : // given a value that's at position X in the zigzag stream, +; 1655 : // where does it appear in the 8x8 matrix coded as row-major? +; 1656 : static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = +; 1657 : { +; 1658 : 0, 1, 8, 16, 9, 2, 3, 10, +; 1659 : 17, 24, 32, 25, 18, 11, 4, 5, +; 1660 : 12, 19, 26, 33, 40, 48, 41, 34, +; 1661 : 27, 20, 13, 6, 7, 14, 21, 28, +; 1662 : 35, 42, 49, 56, 57, 50, 43, 36, +; 1663 : 29, 22, 15, 23, 30, 37, 44, 51, +; 1664 : 58, 59, 52, 45, 38, 31, 39, 46, +; 1665 : 53, 60, 61, 54, 47, 55, 62, 63, +; 1666 : // let corrupt input sample past end +; 1667 : 63, 63, 63, 63, 63, 63, 63, 63, +; 1668 : 63, 63, 63, 63, 63, 63, 63 +; 1669 : }; +; 1670 : +; 1671 : // decode one 64-entry block-- +; 1672 : static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +; 1673 : { +; 1674 : int diff, dc, k; +; 1675 : int t; +; 1676 : +; 1677 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1678 : t = stbi__jpeg_huff_decode(j, hdc); +; 1679 : if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1680 : +; 1681 : // 0 all the ac values now so we can do it 32-bits at a time +; 1682 : memset(data, 0, 64 * sizeof(data[0])); +; 1683 : +; 1684 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1685 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1686 : dc = j->img_comp[b].dc_pred + diff; +; 1687 : j->img_comp[b].dc_pred = dc; +; 1688 : if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1689 : data[0] = (short)(dc * dequant[0]); +; 1690 : +; 1691 : // decode AC components, see JPEG spec +; 1692 : k = 1; +; 1693 : do { +; 1694 : unsigned int zig; +; 1695 : int c, r, s; +; 1696 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1697 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1698 : r = fac[c]; +; 1699 : if (r) { // fast-AC path +; 1700 : k += (r >> 4) & 15; // run +; 1701 : s = r & 15; // combined length +; 1702 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1703 : j->code_buffer <<= s; +; 1704 : j->code_bits -= s; +; 1705 : // decode into unzigzag'd location +; 1706 : zig = stbi__jpeg_dezigzag[k++]; +; 1707 : data[zig] = (short)((r >> 8) * dequant[zig]); +; 1708 : } +; 1709 : else { +; 1710 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1711 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1712 : s = rs & 15; +; 1713 : r = rs >> 4; +; 1714 : if (s == 0) { +; 1715 : if (rs != 0xf0) break; // end block +; 1716 : k += 16; +; 1717 : } +; 1718 : else { +; 1719 : k += r; +; 1720 : // decode into unzigzag'd location +; 1721 : zig = stbi__jpeg_dezigzag[k++]; +; 1722 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); +; 1723 : } +; 1724 : } +; 1725 : } while (k < 64); +; 1726 : return 1; +; 1727 : } +; 1728 : +; 1729 : static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) +; 1730 : { +; 1731 : int diff, dc; +; 1732 : int t; +; 1733 : if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1734 : +; 1735 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1736 : +; 1737 : if (j->succ_high == 0) { +; 1738 : // first scan for DC coefficient, must be first +; 1739 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now +; 1740 : t = stbi__jpeg_huff_decode(j, hdc); +; 1741 : if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1742 : diff = t ? stbi__extend_receive(j, t) : 0; +; 1743 : +; 1744 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); +; 1745 : dc = j->img_comp[b].dc_pred + diff; +; 1746 : j->img_comp[b].dc_pred = dc; +; 1747 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1748 : data[0] = (short)(dc * (1 << j->succ_low)); +; 1749 : } +; 1750 : else { +; 1751 : // refinement scan for DC coefficient +; 1752 : if (stbi__jpeg_get_bit(j)) +; 1753 : data[0] += (short)(1 << j->succ_low); +; 1754 : } +; 1755 : return 1; +; 1756 : } +; 1757 : +; 1758 : // @OPTIMIZE: store non-zigzagged during the decode passes, +; 1759 : // and only de-zigzag when dequantizing +; 1760 : static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +; 1761 : { +; 1762 : int k; +; 1763 : if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); +; 1764 : +; 1765 : if (j->succ_high == 0) { +; 1766 : int shift = j->succ_low; +; 1767 : +; 1768 : if (j->eob_run) { +; 1769 : --j->eob_run; +; 1770 : return 1; +; 1771 : } +; 1772 : +; 1773 : k = j->spec_start; +; 1774 : do { +; 1775 : unsigned int zig; +; 1776 : int c, r, s; +; 1777 : if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); +; 1778 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); +; 1779 : r = fac[c]; +; 1780 : if (r) { // fast-AC path +; 1781 : k += (r >> 4) & 15; // run +; 1782 : s = r & 15; // combined length +; 1783 : if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); +; 1784 : j->code_buffer <<= s; +; 1785 : j->code_bits -= s; +; 1786 : zig = stbi__jpeg_dezigzag[k++]; +; 1787 : data[zig] = (short)((r >> 8) * (1 << shift)); +; 1788 : } +; 1789 : else { +; 1790 : int rs = stbi__jpeg_huff_decode(j, hac); +; 1791 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1792 : s = rs & 15; +; 1793 : r = rs >> 4; +; 1794 : if (s == 0) { +; 1795 : if (r < 15) { +; 1796 : j->eob_run = (1 << r); +; 1797 : if (r) +; 1798 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1799 : --j->eob_run; +; 1800 : break; +; 1801 : } +; 1802 : k += 16; +; 1803 : } +; 1804 : else { +; 1805 : k += r; +; 1806 : zig = stbi__jpeg_dezigzag[k++]; +; 1807 : data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 1808 : } +; 1809 : } +; 1810 : } while (k <= j->spec_end); +; 1811 : } +; 1812 : else { +; 1813 : // refinement scan for these AC coefficients +; 1814 : +; 1815 : short bit = (short)(1 << j->succ_low); +; 1816 : +; 1817 : if (j->eob_run) { +; 1818 : --j->eob_run; +; 1819 : for (k = j->spec_start; k <= j->spec_end; ++k) { +; 1820 : short* p = &data[stbi__jpeg_dezigzag[k]]; +; 1821 : if (*p != 0) +; 1822 : if (stbi__jpeg_get_bit(j)) +; 1823 : if ((*p & bit) == 0) { +; 1824 : if (*p > 0) +; 1825 : *p += bit; +; 1826 : else +; 1827 : *p -= bit; +; 1828 : } +; 1829 : } +; 1830 : } +; 1831 : else { +; 1832 : k = j->spec_start; +; 1833 : do { +; 1834 : int r, s; +; 1835 : int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 1836 : if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1837 : s = rs & 15; +; 1838 : r = rs >> 4; +; 1839 : if (s == 0) { +; 1840 : if (r < 15) { +; 1841 : j->eob_run = (1 << r) - 1; +; 1842 : if (r) +; 1843 : j->eob_run += stbi__jpeg_get_bits(j, r); +; 1844 : r = 64; // force end of block +; 1845 : } +; 1846 : else { +; 1847 : // r=15 s=0 should write 16 0s, so we just do +; 1848 : // a run of 15 0s and then write s (which is 0), +; 1849 : // so we don't have to do anything special here +; 1850 : } +; 1851 : } +; 1852 : else { +; 1853 : if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); +; 1854 : // sign bit +; 1855 : if (stbi__jpeg_get_bit(j)) +; 1856 : s = bit; +; 1857 : else +; 1858 : s = -bit; +; 1859 : } +; 1860 : +; 1861 : // advance by r +; 1862 : while (k <= j->spec_end) { +; 1863 : short* p = &data[stbi__jpeg_dezigzag[k++]]; +; 1864 : if (*p != 0) { +; 1865 : if (stbi__jpeg_get_bit(j)) +; 1866 : if ((*p & bit) == 0) { +; 1867 : if (*p > 0) +; 1868 : *p += bit; +; 1869 : else +; 1870 : *p -= bit; +; 1871 : } +; 1872 : } +; 1873 : else { +; 1874 : if (r == 0) { +; 1875 : *p = (short)s; +; 1876 : break; +; 1877 : } +; 1878 : --r; +; 1879 : } +; 1880 : } +; 1881 : } while (k <= j->spec_end); +; 1882 : } +; 1883 : } +; 1884 : return 1; +; 1885 : } +; 1886 : +; 1887 : // take a -128..127 value and stbi__clamp it and convert to 0..255 +; 1888 : stbi_inline static stbi_uc stbi__clamp(int x) +; 1889 : { +; 1890 : // trick to use a single test to catch both cases +; 1891 : if ((unsigned int)x > 255) { +; 1892 : if (x < 0) return 0; +; 1893 : if (x > 255) return 255; +; 1894 : } +; 1895 : return (stbi_uc)x; +; 1896 : } +; 1897 : +; 1898 : #define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +; 1899 : #define stbi__fsh(x) ((x) * 4096) +; 1900 : +; 1901 : // derived from jidctint -- DCT_ISLOW +; 1902 : #define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ +; 1903 : int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ +; 1904 : p2 = s2; \ +; 1905 : p3 = s6; \ +; 1906 : p1 = (p2+p3) * stbi__f2f(0.5411961f); \ +; 1907 : t2 = p1 + p3*stbi__f2f(-1.847759065f); \ +; 1908 : t3 = p1 + p2*stbi__f2f( 0.765366865f); \ +; 1909 : p2 = s0; \ +; 1910 : p3 = s4; \ +; 1911 : t0 = stbi__fsh(p2+p3); \ +; 1912 : t1 = stbi__fsh(p2-p3); \ +; 1913 : x0 = t0+t3; \ +; 1914 : x3 = t0-t3; \ +; 1915 : x1 = t1+t2; \ +; 1916 : x2 = t1-t2; \ +; 1917 : t0 = s7; \ +; 1918 : t1 = s5; \ +; 1919 : t2 = s3; \ +; 1920 : t3 = s1; \ +; 1921 : p3 = t0+t2; \ +; 1922 : p4 = t1+t3; \ +; 1923 : p1 = t0+t3; \ +; 1924 : p2 = t1+t2; \ +; 1925 : p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ +; 1926 : t0 = t0*stbi__f2f( 0.298631336f); \ +; 1927 : t1 = t1*stbi__f2f( 2.053119869f); \ +; 1928 : t2 = t2*stbi__f2f( 3.072711026f); \ +; 1929 : t3 = t3*stbi__f2f( 1.501321110f); \ +; 1930 : p1 = p5 + p1*stbi__f2f(-0.899976223f); \ +; 1931 : p2 = p5 + p2*stbi__f2f(-2.562915447f); \ +; 1932 : p3 = p3*stbi__f2f(-1.961570560f); \ +; 1933 : p4 = p4*stbi__f2f(-0.390180644f); \ +; 1934 : t3 += p1+p4; \ +; 1935 : t2 += p2+p3; \ +; 1936 : t1 += p2+p4; \ +; 1937 : t0 += p1+p3; +; 1938 : +; 1939 : static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +; 1940 : { +; 1941 : int i, val[64], * v = val; +; 1942 : stbi_uc* o; +; 1943 : short* d = data; +; 1944 : +; 1945 : // columns +; 1946 : for (i = 0; i < 8; ++i, ++d, ++v) { +; 1947 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 1948 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 +; 1949 : && d[40] == 0 && d[48] == 0 && d[56] == 0) { +; 1950 : // no shortcut 0 seconds +; 1951 : // (1|2|3|4|5|6|7)==0 0 seconds +; 1952 : // all separate -0.047 seconds +; 1953 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 1954 : int dcterm = d[0] * 4; +; 1955 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; +; 1956 : } +; 1957 : else { +; 1958 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) +; 1959 : // constants scaled things up by 1<<12; let's bring them back +; 1960 : // down, but keep 2 extra bits of precision +; 1961 : x0 += 512; x1 += 512; x2 += 512; x3 += 512; +; 1962 : v[0] = (x0 + t3) >> 10; +; 1963 : v[56] = (x0 - t3) >> 10; +; 1964 : v[8] = (x1 + t2) >> 10; +; 1965 : v[48] = (x1 - t2) >> 10; +; 1966 : v[16] = (x2 + t1) >> 10; +; 1967 : v[40] = (x2 - t1) >> 10; +; 1968 : v[24] = (x3 + t0) >> 10; +; 1969 : v[32] = (x3 - t0) >> 10; +; 1970 : } +; 1971 : } +; 1972 : +; 1973 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { +; 1974 : // no fast case since the first 1D IDCT spread components out +; 1975 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) +; 1976 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 1977 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 1978 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 1979 : // so we want to round that, which means adding 0.5 * 1<<17, +; 1980 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 1981 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 1982 : x0 += 65536 + (128 << 17); +; 1983 : x1 += 65536 + (128 << 17); +; 1984 : x2 += 65536 + (128 << 17); +; 1985 : x3 += 65536 + (128 << 17); +; 1986 : // tried computing the shifts into temps, or'ing the temps to see +; 1987 : // if any were out of range, but that was slower +; 1988 : o[0] = stbi__clamp((x0 + t3) >> 17); +; 1989 : o[7] = stbi__clamp((x0 - t3) >> 17); +; 1990 : o[1] = stbi__clamp((x1 + t2) >> 17); +; 1991 : o[6] = stbi__clamp((x1 - t2) >> 17); +; 1992 : o[2] = stbi__clamp((x2 + t1) >> 17); +; 1993 : o[5] = stbi__clamp((x2 - t1) >> 17); +; 1994 : o[3] = stbi__clamp((x3 + t0) >> 17); +; 1995 : o[4] = stbi__clamp((x3 - t0) >> 17); +; 1996 : } +; 1997 : } +; 1998 : +; 1999 : #ifdef STBI_SSE2 +; 2000 : // sse2 integer IDCT. not the fastest possible implementation but it +; 2001 : // produces bit-identical results to the generic C version so it's +; 2002 : // fully "transparent". +; 2003 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2004 : { +; 2005 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2006 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2007 : __m128i tmp; +; 2008 : +; 2009 : // dot product constant: even elems=x, odd elems=y +; 2010 : #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) +; 2011 : +; 2012 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2013 : // out(1) = c1[even]*x + c1[odd]*y +; 2014 : #define dct_rot(out0,out1, x,y,c0,c1) \ +; 2015 : __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ +; 2016 : __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ +; 2017 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2018 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2019 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2020 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2021 : +; 2022 : // out = in << 12 (in 16-bit, out 32-bit) +; 2023 : #define dct_widen(out, in) \ +; 2024 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2025 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2026 : +; 2027 : // wide add +; 2028 : #define dct_wadd(out, a, b) \ +; 2029 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2030 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2031 : +; 2032 : // wide sub +; 2033 : #define dct_wsub(out, a, b) \ +; 2034 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2035 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2036 : +; 2037 : // butterfly a/b, add bias, then shift by "s" and pack +; 2038 : #define dct_bfly32o(out0, out1, a,b,bias,s) \ +; 2039 : { \ +; 2040 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2041 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2042 : dct_wadd(sum, abiased, b); \ +; 2043 : dct_wsub(dif, abiased, b); \ +; 2044 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2045 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2046 : } +; 2047 : +; 2048 : // 8-bit interleave step (for transposes) +; 2049 : #define dct_interleave8(a, b) \ +; 2050 : tmp = a; \ +; 2051 : a = _mm_unpacklo_epi8(a, b); \ +; 2052 : b = _mm_unpackhi_epi8(tmp, b) +; 2053 : +; 2054 : // 16-bit interleave step (for transposes) +; 2055 : #define dct_interleave16(a, b) \ +; 2056 : tmp = a; \ +; 2057 : a = _mm_unpacklo_epi16(a, b); \ +; 2058 : b = _mm_unpackhi_epi16(tmp, b) +; 2059 : +; 2060 : #define dct_pass(bias,shift) \ +; 2061 : { \ +; 2062 : /* even part */ \ +; 2063 : dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ +; 2064 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2065 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2066 : dct_widen(t0e, sum04); \ +; 2067 : dct_widen(t1e, dif04); \ +; 2068 : dct_wadd(x0, t0e, t3e); \ +; 2069 : dct_wsub(x3, t0e, t3e); \ +; 2070 : dct_wadd(x1, t1e, t2e); \ +; 2071 : dct_wsub(x2, t1e, t2e); \ +; 2072 : /* odd part */ \ +; 2073 : dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ +; 2074 : dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ +; 2075 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2076 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2077 : dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ +; 2078 : dct_wadd(x4, y0o, y4o); \ +; 2079 : dct_wadd(x5, y1o, y5o); \ +; 2080 : dct_wadd(x6, y2o, y5o); \ +; 2081 : dct_wadd(x7, y3o, y4o); \ +; 2082 : dct_bfly32o(row0,row7, x0,x7,bias,shift); \ +; 2083 : dct_bfly32o(row1,row6, x1,x6,bias,shift); \ +; 2084 : dct_bfly32o(row2,row5, x2,x5,bias,shift); \ +; 2085 : dct_bfly32o(row3,row4, x3,x4,bias,shift); \ +; 2086 : } +; 2087 : +; 2088 : __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2089 : __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2090 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); +; 2091 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2092 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); +; 2093 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2094 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); +; 2095 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2096 : +; 2097 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2098 : __m128i bias_0 = _mm_set1_epi32(512); +; 2099 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); +; 2100 : +; 2101 : // load +; 2102 : row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); +; 2103 : row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); +; 2104 : row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); +; 2105 : row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); +; 2106 : row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); +; 2107 : row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); +; 2108 : row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); +; 2109 : row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); +; 2110 : +; 2111 : // column pass +; 2112 : dct_pass(bias_0, 10); +; 2113 : +; 2114 : { +; 2115 : // 16bit 8x8 transpose pass 1 +; 2116 : dct_interleave16(row0, row4); +; 2117 : dct_interleave16(row1, row5); +; 2118 : dct_interleave16(row2, row6); +; 2119 : dct_interleave16(row3, row7); +; 2120 : +; 2121 : // transpose pass 2 +; 2122 : dct_interleave16(row0, row2); +; 2123 : dct_interleave16(row1, row3); +; 2124 : dct_interleave16(row4, row6); +; 2125 : dct_interleave16(row5, row7); +; 2126 : +; 2127 : // transpose pass 3 +; 2128 : dct_interleave16(row0, row1); +; 2129 : dct_interleave16(row2, row3); +; 2130 : dct_interleave16(row4, row5); +; 2131 : dct_interleave16(row6, row7); +; 2132 : } +; 2133 : +; 2134 : // row pass +; 2135 : dct_pass(bias_1, 17); +; 2136 : +; 2137 : { +; 2138 : // pack +; 2139 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 +; 2140 : __m128i p1 = _mm_packus_epi16(row2, row3); +; 2141 : __m128i p2 = _mm_packus_epi16(row4, row5); +; 2142 : __m128i p3 = _mm_packus_epi16(row6, row7); +; 2143 : +; 2144 : // 8bit 8x8 transpose pass 1 +; 2145 : dct_interleave8(p0, p2); // a0e0a1e1... +; 2146 : dct_interleave8(p1, p3); // c0g0c1g1... +; 2147 : +; 2148 : // transpose pass 2 +; 2149 : dct_interleave8(p0, p1); // a0c0e0g0... +; 2150 : dct_interleave8(p2, p3); // b0d0f0h0... +; 2151 : +; 2152 : // transpose pass 3 +; 2153 : dct_interleave8(p0, p2); // a0b0c0d0... +; 2154 : dct_interleave8(p1, p3); // a4b4c4d4... +; 2155 : +; 2156 : // store +; 2157 : _mm_storel_epi64((__m128i*) out, p0); out += out_stride; +; 2158 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; +; 2159 : _mm_storel_epi64((__m128i*) out, p2); out += out_stride; +; 2160 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; +; 2161 : _mm_storel_epi64((__m128i*) out, p1); out += out_stride; +; 2162 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; +; 2163 : _mm_storel_epi64((__m128i*) out, p3); out += out_stride; +; 2164 : _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); +; 2165 : } +; 2166 : +; 2167 : #undef dct_const +; 2168 : #undef dct_rot +; 2169 : #undef dct_widen +; 2170 : #undef dct_wadd +; 2171 : #undef dct_wsub +; 2172 : #undef dct_bfly32o +; 2173 : #undef dct_interleave8 +; 2174 : #undef dct_interleave16 +; 2175 : #undef dct_pass +; 2176 : } +; 2177 : +; 2178 : #endif // STBI_SSE2 +; 2179 : +; 2180 : #ifdef STBI_NEON +; 2181 : +; 2182 : // NEON integer IDCT. should produce bit-identical +; 2183 : // results to the generic C version. +; 2184 : static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +; 2185 : { +; 2186 : int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; +; 2187 : +; 2188 : int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); +; 2189 : int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); +; 2190 : int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); +; 2191 : int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); +; 2192 : int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); +; 2193 : int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); +; 2194 : int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); +; 2195 : int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); +; 2196 : int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); +; 2197 : int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); +; 2198 : int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); +; 2199 : int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); +; 2200 : +; 2201 : #define dct_long_mul(out, inq, coeff) \ +; 2202 : int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ +; 2203 : int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +; 2204 : +; 2205 : #define dct_long_mac(out, acc, inq, coeff) \ +; 2206 : int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ +; 2207 : int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +; 2208 : +; 2209 : #define dct_widen(out, inq) \ +; 2210 : int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ +; 2211 : int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +; 2212 : +; 2213 : // wide add +; 2214 : #define dct_wadd(out, a, b) \ +; 2215 : int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ +; 2216 : int32x4_t out##_h = vaddq_s32(a##_h, b##_h) +; 2217 : +; 2218 : // wide sub +; 2219 : #define dct_wsub(out, a, b) \ +; 2220 : int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ +; 2221 : int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +; 2222 : +; 2223 : // butterfly a/b, then shift using "shiftop" by "s" and pack +; 2224 : #define dct_bfly32o(out0,out1, a,b,shiftop,s) \ +; 2225 : { \ +; 2226 : dct_wadd(sum, a, b); \ +; 2227 : dct_wsub(dif, a, b); \ +; 2228 : out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ +; 2229 : out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ +; 2230 : } +; 2231 : +; 2232 : #define dct_pass(shiftop, shift) \ +; 2233 : { \ +; 2234 : /* even part */ \ +; 2235 : int16x8_t sum26 = vaddq_s16(row2, row6); \ +; 2236 : dct_long_mul(p1e, sum26, rot0_0); \ +; 2237 : dct_long_mac(t2e, p1e, row6, rot0_1); \ +; 2238 : dct_long_mac(t3e, p1e, row2, rot0_2); \ +; 2239 : int16x8_t sum04 = vaddq_s16(row0, row4); \ +; 2240 : int16x8_t dif04 = vsubq_s16(row0, row4); \ +; 2241 : dct_widen(t0e, sum04); \ +; 2242 : dct_widen(t1e, dif04); \ +; 2243 : dct_wadd(x0, t0e, t3e); \ +; 2244 : dct_wsub(x3, t0e, t3e); \ +; 2245 : dct_wadd(x1, t1e, t2e); \ +; 2246 : dct_wsub(x2, t1e, t2e); \ +; 2247 : /* odd part */ \ +; 2248 : int16x8_t sum15 = vaddq_s16(row1, row5); \ +; 2249 : int16x8_t sum17 = vaddq_s16(row1, row7); \ +; 2250 : int16x8_t sum35 = vaddq_s16(row3, row5); \ +; 2251 : int16x8_t sum37 = vaddq_s16(row3, row7); \ +; 2252 : int16x8_t sumodd = vaddq_s16(sum17, sum35); \ +; 2253 : dct_long_mul(p5o, sumodd, rot1_0); \ +; 2254 : dct_long_mac(p1o, p5o, sum17, rot1_1); \ +; 2255 : dct_long_mac(p2o, p5o, sum35, rot1_2); \ +; 2256 : dct_long_mul(p3o, sum37, rot2_0); \ +; 2257 : dct_long_mul(p4o, sum15, rot2_1); \ +; 2258 : dct_wadd(sump13o, p1o, p3o); \ +; 2259 : dct_wadd(sump24o, p2o, p4o); \ +; 2260 : dct_wadd(sump23o, p2o, p3o); \ +; 2261 : dct_wadd(sump14o, p1o, p4o); \ +; 2262 : dct_long_mac(x4, sump13o, row7, rot3_0); \ +; 2263 : dct_long_mac(x5, sump24o, row5, rot3_1); \ +; 2264 : dct_long_mac(x6, sump23o, row3, rot3_2); \ +; 2265 : dct_long_mac(x7, sump14o, row1, rot3_3); \ +; 2266 : dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ +; 2267 : dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ +; 2268 : dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ +; 2269 : dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ +; 2270 : } +; 2271 : +; 2272 : // load +; 2273 : row0 = vld1q_s16(data + 0 * 8); +; 2274 : row1 = vld1q_s16(data + 1 * 8); +; 2275 : row2 = vld1q_s16(data + 2 * 8); +; 2276 : row3 = vld1q_s16(data + 3 * 8); +; 2277 : row4 = vld1q_s16(data + 4 * 8); +; 2278 : row5 = vld1q_s16(data + 5 * 8); +; 2279 : row6 = vld1q_s16(data + 6 * 8); +; 2280 : row7 = vld1q_s16(data + 7 * 8); +; 2281 : +; 2282 : // add DC bias +; 2283 : row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); +; 2284 : +; 2285 : // column pass +; 2286 : dct_pass(vrshrn_n_s32, 10); +; 2287 : +; 2288 : // 16bit 8x8 transpose +; 2289 : { +; 2290 : // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +; 2291 : // whether compilers actually get this is another story, sadly. +; 2292 : #define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +; 2293 : #define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +; 2294 : #define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } +; 2295 : +; 2296 : // pass 1 +; 2297 : dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 +; 2298 : dct_trn16(row2, row3); +; 2299 : dct_trn16(row4, row5); +; 2300 : dct_trn16(row6, row7); +; 2301 : +; 2302 : // pass 2 +; 2303 : dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 +; 2304 : dct_trn32(row1, row3); +; 2305 : dct_trn32(row4, row6); +; 2306 : dct_trn32(row5, row7); +; 2307 : +; 2308 : // pass 3 +; 2309 : dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 +; 2310 : dct_trn64(row1, row5); +; 2311 : dct_trn64(row2, row6); +; 2312 : dct_trn64(row3, row7); +; 2313 : +; 2314 : #undef dct_trn16 +; 2315 : #undef dct_trn32 +; 2316 : #undef dct_trn64 +; 2317 : } +; 2318 : +; 2319 : // row pass +; 2320 : // vrshrn_n_s32 only supports shifts up to 16, we need +; 2321 : // 17. so do a non-rounding shift of 16 first then follow +; 2322 : // up with a rounding shift by 1. +; 2323 : dct_pass(vshrn_n_s32, 16); +; 2324 : +; 2325 : { +; 2326 : // pack and round +; 2327 : uint8x8_t p0 = vqrshrun_n_s16(row0, 1); +; 2328 : uint8x8_t p1 = vqrshrun_n_s16(row1, 1); +; 2329 : uint8x8_t p2 = vqrshrun_n_s16(row2, 1); +; 2330 : uint8x8_t p3 = vqrshrun_n_s16(row3, 1); +; 2331 : uint8x8_t p4 = vqrshrun_n_s16(row4, 1); +; 2332 : uint8x8_t p5 = vqrshrun_n_s16(row5, 1); +; 2333 : uint8x8_t p6 = vqrshrun_n_s16(row6, 1); +; 2334 : uint8x8_t p7 = vqrshrun_n_s16(row7, 1); +; 2335 : +; 2336 : // again, these can translate into one instruction, but often don't. +; 2337 : #define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +; 2338 : #define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +; 2339 : #define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } +; 2340 : +; 2341 : // sadly can't use interleaved stores here since we only write +; 2342 : // 8 bytes to each scan line! +; 2343 : +; 2344 : // 8x8 8-bit transpose pass 1 +; 2345 : dct_trn8_8(p0, p1); +; 2346 : dct_trn8_8(p2, p3); +; 2347 : dct_trn8_8(p4, p5); +; 2348 : dct_trn8_8(p6, p7); +; 2349 : +; 2350 : // pass 2 +; 2351 : dct_trn8_16(p0, p2); +; 2352 : dct_trn8_16(p1, p3); +; 2353 : dct_trn8_16(p4, p6); +; 2354 : dct_trn8_16(p5, p7); +; 2355 : +; 2356 : // pass 3 +; 2357 : dct_trn8_32(p0, p4); +; 2358 : dct_trn8_32(p1, p5); +; 2359 : dct_trn8_32(p2, p6); +; 2360 : dct_trn8_32(p3, p7); +; 2361 : +; 2362 : // store +; 2363 : vst1_u8(out, p0); out += out_stride; +; 2364 : vst1_u8(out, p1); out += out_stride; +; 2365 : vst1_u8(out, p2); out += out_stride; +; 2366 : vst1_u8(out, p3); out += out_stride; +; 2367 : vst1_u8(out, p4); out += out_stride; +; 2368 : vst1_u8(out, p5); out += out_stride; +; 2369 : vst1_u8(out, p6); out += out_stride; +; 2370 : vst1_u8(out, p7); +; 2371 : +; 2372 : #undef dct_trn8_8 +; 2373 : #undef dct_trn8_16 +; 2374 : #undef dct_trn8_32 +; 2375 : } +; 2376 : +; 2377 : #undef dct_long_mul +; 2378 : #undef dct_long_mac +; 2379 : #undef dct_widen +; 2380 : #undef dct_wadd +; 2381 : #undef dct_wsub +; 2382 : #undef dct_bfly32o +; 2383 : #undef dct_pass +; 2384 : } +; 2385 : +; 2386 : #endif // STBI_NEON +; 2387 : +; 2388 : #define STBI__MARKER_none 0xff +; 2389 : // if there's a pending marker from the entropy stream, return that +; 2390 : // otherwise, fetch from the stream and get a marker. if there's no +; 2391 : // marker, return 0xff, which is never a valid marker value +; 2392 : static stbi_uc stbi__get_marker(stbi__jpeg* j) +; 2393 : { +; 2394 : stbi_uc x; +; 2395 : if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } +; 2396 : x = stbi__get8(j->s); +; 2397 : if (x != 0xff) return STBI__MARKER_none; +; 2398 : while (x == 0xff) +; 2399 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes +; 2400 : return x; +; 2401 : } +; 2402 : +; 2403 : // in each scan, we'll have scan_n components, and the order +; 2404 : // of the components is specified by order[] +; 2405 : #define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +; 2406 : +; 2407 : // after a restart interval, stbi__jpeg_reset the entropy decoder and +; 2408 : // the dc prediction +; 2409 : static void stbi__jpeg_reset(stbi__jpeg* j) +; 2410 : { +; 2411 : j->code_bits = 0; +; 2412 : j->code_buffer = 0; +; 2413 : j->nomore = 0; +; 2414 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; +; 2415 : j->marker = STBI__MARKER_none; +; 2416 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; +; 2417 : j->eob_run = 0; +; 2418 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2419 : // since we don't even allow 1<<30 pixels +; 2420 : } +; 2421 : +; 2422 : static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +; 2423 : { +; 2424 : stbi__jpeg_reset(z); +; 2425 : if (!z->progressive) { +; 2426 : if (z->scan_n == 1) { +; 2427 : int i, j; +; 2428 : STBI_SIMD_ALIGN(short, data[64]); +; 2429 : int n = z->order[0]; +; 2430 : // non-interleaved data, we just need to process one block at a time, +; 2431 : // in trivial scanline order +; 2432 : // number of blocks to do just depends on how many actual "pixels" this +; 2433 : // component has, independent of interleaved MCU blocking and such +; 2434 : int w = (z->img_comp[n].x + 7) >> 3; +; 2435 : int h = (z->img_comp[n].y + 7) >> 3; +; 2436 : for (j = 0; j < h; ++j) { +; 2437 : for (i = 0; i < w; ++i) { +; 2438 : int ha = z->img_comp[n].ha; +; 2439 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2440 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2441 : // every data block is an MCU, so countdown the restart interval +; 2442 : if (--z->todo <= 0) { +; 2443 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2444 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2445 : // rather than no data +; 2446 : if (!STBI__RESTART(z->marker)) return 1; +; 2447 : stbi__jpeg_reset(z); +; 2448 : } +; 2449 : } +; 2450 : } +; 2451 : return 1; +; 2452 : } +; 2453 : else { // interleaved +; 2454 : int i, j, k, x, y; +; 2455 : STBI_SIMD_ALIGN(short, data[64]); +; 2456 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2457 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2458 : // scan an interleaved mcu... process scan_n components in order +; 2459 : for (k = 0; k < z->scan_n; ++k) { +; 2460 : int n = z->order[k]; +; 2461 : // scan out an mcu's worth of this component; that's just determined +; 2462 : // by the basic H and V specified for the component +; 2463 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2464 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2465 : int x2 = (i * z->img_comp[n].h + x) * 8; +; 2466 : int y2 = (j * z->img_comp[n].v + y) * 8; +; 2467 : int ha = z->img_comp[n].ha; +; 2468 : if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; +; 2469 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); +; 2470 : } +; 2471 : } +; 2472 : } +; 2473 : // after all interleaved components, that's an interleaved MCU, +; 2474 : // so now count down the restart interval +; 2475 : if (--z->todo <= 0) { +; 2476 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2477 : if (!STBI__RESTART(z->marker)) return 1; +; 2478 : stbi__jpeg_reset(z); +; 2479 : } +; 2480 : } +; 2481 : } +; 2482 : return 1; +; 2483 : } +; 2484 : } +; 2485 : else { +; 2486 : if (z->scan_n == 1) { +; 2487 : int i, j; +; 2488 : int n = z->order[0]; +; 2489 : // non-interleaved data, we just need to process one block at a time, +; 2490 : // in trivial scanline order +; 2491 : // number of blocks to do just depends on how many actual "pixels" this +; 2492 : // component has, independent of interleaved MCU blocking and such +; 2493 : int w = (z->img_comp[n].x + 7) >> 3; +; 2494 : int h = (z->img_comp[n].y + 7) >> 3; +; 2495 : for (j = 0; j < h; ++j) { +; 2496 : for (i = 0; i < w; ++i) { +; 2497 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2498 : if (z->spec_start == 0) { +; 2499 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2500 : return 0; +; 2501 : } +; 2502 : else { +; 2503 : int ha = z->img_comp[n].ha; +; 2504 : if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) +; 2505 : return 0; +; 2506 : } +; 2507 : // every data block is an MCU, so countdown the restart interval +; 2508 : if (--z->todo <= 0) { +; 2509 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2510 : if (!STBI__RESTART(z->marker)) return 1; +; 2511 : stbi__jpeg_reset(z); +; 2512 : } +; 2513 : } +; 2514 : } +; 2515 : return 1; +; 2516 : } +; 2517 : else { // interleaved +; 2518 : int i, j, k, x, y; +; 2519 : for (j = 0; j < z->img_mcu_y; ++j) { +; 2520 : for (i = 0; i < z->img_mcu_x; ++i) { +; 2521 : // scan an interleaved mcu... process scan_n components in order +; 2522 : for (k = 0; k < z->scan_n; ++k) { +; 2523 : int n = z->order[k]; +; 2524 : // scan out an mcu's worth of this component; that's just determined +; 2525 : // by the basic H and V specified for the component +; 2526 : for (y = 0; y < z->img_comp[n].v; ++y) { +; 2527 : for (x = 0; x < z->img_comp[n].h; ++x) { +; 2528 : int x2 = (i * z->img_comp[n].h + x); +; 2529 : int y2 = (j * z->img_comp[n].v + y); +; 2530 : short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); +; 2531 : if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) +; 2532 : return 0; +; 2533 : } +; 2534 : } +; 2535 : } +; 2536 : // after all interleaved components, that's an interleaved MCU, +; 2537 : // so now count down the restart interval +; 2538 : if (--z->todo <= 0) { +; 2539 : if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); +; 2540 : if (!STBI__RESTART(z->marker)) return 1; +; 2541 : stbi__jpeg_reset(z); +; 2542 : } +; 2543 : } +; 2544 : } +; 2545 : return 1; +; 2546 : } +; 2547 : } +; 2548 : } +; 2549 : +; 2550 : static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) +; 2551 : { +; 2552 : int i; +; 2553 : for (i = 0; i < 64; ++i) +; 2554 : data[i] *= dequant[i]; +; 2555 : } +; 2556 : +; 2557 : static void stbi__jpeg_finish(stbi__jpeg* z) +; 2558 : { +; 2559 : if (z->progressive) { +; 2560 : // dequantize and idct the data +; 2561 : int i, j, n; +; 2562 : for (n = 0; n < z->s->img_n; ++n) { +; 2563 : int w = (z->img_comp[n].x + 7) >> 3; +; 2564 : int h = (z->img_comp[n].y + 7) >> 3; +; 2565 : for (j = 0; j < h; ++j) { +; 2566 : for (i = 0; i < w; ++i) { +; 2567 : short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); +; 2568 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); +; 2569 : z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); +; 2570 : } +; 2571 : } +; 2572 : } +; 2573 : } +; 2574 : } +; 2575 : +; 2576 : static int stbi__process_marker(stbi__jpeg* z, int m) +; 2577 : { +; 2578 : int L; +; 2579 : switch (m) { +; 2580 : case STBI__MARKER_none: // no marker found +; 2581 : return stbi__err("expected marker", "Corrupt JPEG"); +; 2582 : +; 2583 : case 0xDD: // DRI - specify restart interval +; 2584 : if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); +; 2585 : z->restart_interval = stbi__get16be(z->s); +; 2586 : return 1; +; 2587 : +; 2588 : case 0xDB: // DQT - define quantization table +; 2589 : L = stbi__get16be(z->s) - 2; +; 2590 : while (L > 0) { +; 2591 : int q = stbi__get8(z->s); +; 2592 : int p = q >> 4, sixteen = (p != 0); +; 2593 : int t = q & 15, i; +; 2594 : if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); +; 2595 : if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); +; 2596 : +; 2597 : for (i = 0; i < 64; ++i) +; 2598 : z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); +; 2599 : L -= (sixteen ? 129 : 65); +; 2600 : } +; 2601 : return L == 0; +; 2602 : +; 2603 : case 0xC4: // DHT - define huffman table +; 2604 : L = stbi__get16be(z->s) - 2; +; 2605 : while (L > 0) { +; 2606 : stbi_uc* v; +; 2607 : int sizes[16], i, n = 0; +; 2608 : int q = stbi__get8(z->s); +; 2609 : int tc = q >> 4; +; 2610 : int th = q & 15; +; 2611 : if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); +; 2612 : for (i = 0; i < 16; ++i) { +; 2613 : sizes[i] = stbi__get8(z->s); +; 2614 : n += sizes[i]; +; 2615 : } +; 2616 : if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2617 : L -= 17; +; 2618 : if (tc == 0) { +; 2619 : if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; +; 2620 : v = z->huff_dc[th].values; +; 2621 : } +; 2622 : else { +; 2623 : if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; +; 2624 : v = z->huff_ac[th].values; +; 2625 : } +; 2626 : for (i = 0; i < n; ++i) +; 2627 : v[i] = stbi__get8(z->s); +; 2628 : if (tc != 0) +; 2629 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); +; 2630 : L -= n; +; 2631 : } +; 2632 : return L == 0; +; 2633 : } +; 2634 : +; 2635 : // check for comment block or APP blocks +; 2636 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { +; 2637 : L = stbi__get16be(z->s); +; 2638 : if (L < 2) { +; 2639 : if (m == 0xFE) +; 2640 : return stbi__err("bad COM len", "Corrupt JPEG"); +; 2641 : else +; 2642 : return stbi__err("bad APP len", "Corrupt JPEG"); +; 2643 : } +; 2644 : L -= 2; +; 2645 : +; 2646 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment +; 2647 : static const unsigned char tag[5] = { 'J','F','I','F','\0' }; +; 2648 : int ok = 1; +; 2649 : int i; +; 2650 : for (i = 0; i < 5; ++i) +; 2651 : if (stbi__get8(z->s) != tag[i]) +; 2652 : ok = 0; +; 2653 : L -= 5; +; 2654 : if (ok) +; 2655 : z->jfif = 1; +; 2656 : } +; 2657 : else if (m == 0xEE && L >= 12) { // Adobe APP14 segment +; 2658 : static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; +; 2659 : int ok = 1; +; 2660 : int i; +; 2661 : for (i = 0; i < 6; ++i) +; 2662 : if (stbi__get8(z->s) != tag[i]) +; 2663 : ok = 0; +; 2664 : L -= 6; +; 2665 : if (ok) { +; 2666 : stbi__get8(z->s); // version +; 2667 : stbi__get16be(z->s); // flags0 +; 2668 : stbi__get16be(z->s); // flags1 +; 2669 : z->app14_color_transform = stbi__get8(z->s); // color transform +; 2670 : L -= 6; +; 2671 : } +; 2672 : } +; 2673 : +; 2674 : stbi__skip(z->s, L); +; 2675 : return 1; +; 2676 : } +; 2677 : +; 2678 : return stbi__err("unknown marker", "Corrupt JPEG"); +; 2679 : } +; 2680 : +; 2681 : // after we see SOS +; 2682 : static int stbi__process_scan_header(stbi__jpeg* z) +; 2683 : { +; 2684 : int i; +; 2685 : int Ls = stbi__get16be(z->s); +; 2686 : z->scan_n = stbi__get8(z->s); +; 2687 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); +; 2688 : if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); +; 2689 : for (i = 0; i < z->scan_n; ++i) { +; 2690 : int id = stbi__get8(z->s), which; +; 2691 : int q = stbi__get8(z->s); +; 2692 : for (which = 0; which < z->s->img_n; ++which) +; 2693 : if (z->img_comp[which].id == id) +; 2694 : break; +; 2695 : if (which == z->s->img_n) return 0; // no match +; 2696 : z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); +; 2697 : z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); +; 2698 : z->order[i] = which; +; 2699 : } +; 2700 : +; 2701 : { +; 2702 : int aa; +; 2703 : z->spec_start = stbi__get8(z->s); +; 2704 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 +; 2705 : aa = stbi__get8(z->s); +; 2706 : z->succ_high = (aa >> 4); +; 2707 : z->succ_low = (aa & 15); +; 2708 : if (z->progressive) { +; 2709 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) +; 2710 : return stbi__err("bad SOS", "Corrupt JPEG"); +; 2711 : } +; 2712 : else { +; 2713 : if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2714 : if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); +; 2715 : z->spec_end = 63; +; 2716 : } +; 2717 : } +; 2718 : +; 2719 : return 1; +; 2720 : } +; 2721 : +; 2722 : static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +; 2723 : { +; 2724 : int i; +; 2725 : for (i = 0; i < ncomp; ++i) { +; 2726 : if (z->img_comp[i].raw_data) { +; 2727 : STBI_FREE(z->img_comp[i].raw_data); +; 2728 : z->img_comp[i].raw_data = NULL; +; 2729 : z->img_comp[i].data = NULL; +; 2730 : } +; 2731 : if (z->img_comp[i].raw_coeff) { +; 2732 : STBI_FREE(z->img_comp[i].raw_coeff); +; 2733 : z->img_comp[i].raw_coeff = 0; +; 2734 : z->img_comp[i].coeff = 0; +; 2735 : } +; 2736 : if (z->img_comp[i].linebuf) { +; 2737 : STBI_FREE(z->img_comp[i].linebuf); +; 2738 : z->img_comp[i].linebuf = NULL; +; 2739 : } +; 2740 : } +; 2741 : return why; +; 2742 : } +; 2743 : +; 2744 : static int stbi__process_frame_header(stbi__jpeg* z, int scan) +; 2745 : { +; 2746 : stbi__context* s = z->s; +; 2747 : int Lf, p, i, q, h_max = 1, v_max = 1, c; +; 2748 : Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG +; 2749 : p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline +; 2750 : s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 2751 : s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires +; 2752 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2753 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 2754 : c = stbi__get8(s); +; 2755 : if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); +; 2756 : s->img_n = c; +; 2757 : for (i = 0; i < c; ++i) { +; 2758 : z->img_comp[i].data = NULL; +; 2759 : z->img_comp[i].linebuf = NULL; +; 2760 : } +; 2761 : +; 2762 : if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); +; 2763 : +; 2764 : z->rgb = 0; +; 2765 : for (i = 0; i < s->img_n; ++i) { +; 2766 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 2767 : z->img_comp[i].id = stbi__get8(s); +; 2768 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) +; 2769 : ++z->rgb; +; 2770 : q = stbi__get8(s); +; 2771 : z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); +; 2772 : z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); +; 2773 : z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); +; 2774 : } +; 2775 : +; 2776 : if (scan != STBI__SCAN_load) return 1; +; 2777 : +; 2778 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); +; 2779 : +; 2780 : for (i = 0; i < s->img_n; ++i) { +; 2781 : if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; +; 2782 : if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; +; 2783 : } +; 2784 : +; 2785 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 2786 : // and I've never seen a non-corrupted JPEG file actually use them +; 2787 : for (i = 0; i < s->img_n; ++i) { +; 2788 : if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); +; 2789 : if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); +; 2790 : } +; 2791 : +; 2792 : // compute interleaved mcu info +; 2793 : z->img_h_max = h_max; +; 2794 : z->img_v_max = v_max; +; 2795 : z->img_mcu_w = h_max * 8; +; 2796 : z->img_mcu_h = v_max * 8; +; 2797 : // these sizes can't be more than 17 bits +; 2798 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; +; 2799 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; +; 2800 : +; 2801 : for (i = 0; i < s->img_n; ++i) { +; 2802 : // number of effective pixels (e.g. for non-interleaved MCU) +; 2803 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; +; 2804 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; +; 2805 : // to simplify generation, we'll allocate enough memory to decode +; 2806 : // the bogus oversized data from using interleaved MCUs and their +; 2807 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 2808 : // discard the extra data until colorspace conversion +; 2809 : // +; 2810 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 2811 : // so these muls can't overflow with 32-bit ints (which we require) +; 2812 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; +; 2813 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; +; 2814 : z->img_comp[i].coeff = 0; +; 2815 : z->img_comp[i].raw_coeff = 0; +; 2816 : z->img_comp[i].linebuf = NULL; +; 2817 : z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 2818 : if (z->img_comp[i].raw_data == NULL) +; 2819 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2820 : // align blocks for idct using mmx/sse +; 2821 : z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); +; 2822 : if (z->progressive) { +; 2823 : // w2, h2 are multiples of 8 (see above) +; 2824 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; +; 2825 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; +; 2826 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 2827 : if (z->img_comp[i].raw_coeff == NULL) +; 2828 : return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); +; 2829 : z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 2830 : } +; 2831 : } +; 2832 : +; 2833 : return 1; +; 2834 : } +; 2835 : +; 2836 : // use comparisons since in some cases we handle more than one case (e.g. SOF) +; 2837 : #define stbi__DNL(x) ((x) == 0xdc) +; 2838 : #define stbi__SOI(x) ((x) == 0xd8) +; 2839 : #define stbi__EOI(x) ((x) == 0xd9) +; 2840 : #define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +; 2841 : #define stbi__SOS(x) ((x) == 0xda) +; 2842 : +; 2843 : #define stbi__SOF_progressive(x) ((x) == 0xc2) +; 2844 : +; 2845 : static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +; 2846 : { +; 2847 : int m; +; 2848 : z->jfif = 0; +; 2849 : z->app14_color_transform = -1; // valid values are 0,1,2 +; 2850 : z->marker = STBI__MARKER_none; // initialize cached marker to empty +; 2851 : m = stbi__get_marker(z); +; 2852 : if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); +; 2853 : if (scan == STBI__SCAN_type) return 1; +; 2854 : m = stbi__get_marker(z); +; 2855 : while (!stbi__SOF(m)) { +; 2856 : if (!stbi__process_marker(z, m)) return 0; +; 2857 : m = stbi__get_marker(z); +; 2858 : while (m == STBI__MARKER_none) { +; 2859 : // some files have extra padding after their blocks, so ok, we'll scan +; 2860 : if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); +; 2861 : m = stbi__get_marker(z); +; 2862 : } +; 2863 : } +; 2864 : z->progressive = stbi__SOF_progressive(m); +; 2865 : if (!stbi__process_frame_header(z, scan)) return 0; +; 2866 : return 1; +; 2867 : } +; 2868 : +; 2869 : static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +; 2870 : { +; 2871 : // some JPEGs have junk at end, skip over it but if we find what looks +; 2872 : // like a valid marker, resume there +; 2873 : while (!stbi__at_eof(j->s)) { +; 2874 : int x = stbi__get8(j->s); +; 2875 : while (x == 255) { // might be a marker +; 2876 : if (stbi__at_eof(j->s)) return STBI__MARKER_none; +; 2877 : x = stbi__get8(j->s); +; 2878 : if (x != 0x00 && x != 0xff) { +; 2879 : // not a stuffed zero or lead-in to another marker, looks +; 2880 : // like an actual marker, return it +; 2881 : return x; +; 2882 : } +; 2883 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 2884 : // back to regular scan loop. +; 2885 : // repeated 0xff keeps trying to read the next byte of the marker. +; 2886 : } +; 2887 : } +; 2888 : return STBI__MARKER_none; +; 2889 : } +; 2890 : +; 2891 : // decode image to YCbCr format +; 2892 : static int stbi__decode_jpeg_image(stbi__jpeg* j) +; 2893 : { +; 2894 : int m; +; 2895 : for (m = 0; m < 4; m++) { +; 2896 : j->img_comp[m].raw_data = NULL; +; 2897 : j->img_comp[m].raw_coeff = NULL; +; 2898 : } +; 2899 : j->restart_interval = 0; +; 2900 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; +; 2901 : m = stbi__get_marker(j); +; 2902 : while (!stbi__EOI(m)) { +; 2903 : if (stbi__SOS(m)) { +; 2904 : if (!stbi__process_scan_header(j)) return 0; +; 2905 : if (!stbi__parse_entropy_coded_data(j)) return 0; +; 2906 : if (j->marker == STBI__MARKER_none) { +; 2907 : j->marker = stbi__skip_jpeg_junk_at_end(j); +; 2908 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 2909 : } +; 2910 : m = stbi__get_marker(j); +; 2911 : if (STBI__RESTART(m)) +; 2912 : m = stbi__get_marker(j); +; 2913 : } +; 2914 : else if (stbi__DNL(m)) { +; 2915 : int Ld = stbi__get16be(j->s); +; 2916 : stbi__uint32 NL = stbi__get16be(j->s); +; 2917 : if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); +; 2918 : if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); +; 2919 : m = stbi__get_marker(j); +; 2920 : } +; 2921 : else { +; 2922 : if (!stbi__process_marker(j, m)) return 1; +; 2923 : m = stbi__get_marker(j); +; 2924 : } +; 2925 : } +; 2926 : if (j->progressive) +; 2927 : stbi__jpeg_finish(j); +; 2928 : return 1; +; 2929 : } +; 2930 : +; 2931 : // static jfif-centered resampling (across block boundaries) +; 2932 : +; 2933 : typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, +; 2934 : int w, int hs); +; 2935 : +; 2936 : #define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +; 2937 : +; 2938 : static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2939 : { +; 2940 : STBI_NOTUSED(out); +; 2941 : STBI_NOTUSED(in_far); +; 2942 : STBI_NOTUSED(w); +; 2943 : STBI_NOTUSED(hs); +; 2944 : return in_near; +; 2945 : } +; 2946 : +; 2947 : static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2948 : { +; 2949 : // need to generate two samples vertically for every one in input +; 2950 : int i; +; 2951 : STBI_NOTUSED(hs); +; 2952 : for (i = 0; i < w; ++i) +; 2953 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); +; 2954 : return out; +; 2955 : } +; 2956 : +; 2957 : static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2958 : { +; 2959 : // need to generate two samples horizontally for every one in input +; 2960 : int i; +; 2961 : stbi_uc* input = in_near; +; 2962 : +; 2963 : if (w == 1) { +; 2964 : // if only one sample, can't do any interpolation +; 2965 : out[0] = out[1] = input[0]; +; 2966 : return out; +; 2967 : } +; 2968 : +; 2969 : out[0] = input[0]; +; 2970 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2); +; 2971 : for (i = 1; i < w - 1; ++i) { +; 2972 : int n = 3 * input[i] + 2; +; 2973 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]); +; 2974 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]); +; 2975 : } +; 2976 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); +; 2977 : out[i * 2 + 1] = input[w - 1]; +; 2978 : +; 2979 : STBI_NOTUSED(in_far); +; 2980 : STBI_NOTUSED(hs); +; 2981 : +; 2982 : return out; +; 2983 : } +; 2984 : +; 2985 : #define stbi__div16(x) ((stbi_uc) ((x) >> 4)) +; 2986 : +; 2987 : static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 2988 : { +; 2989 : // need to generate 2x2 samples for every one in input +; 2990 : int i, t0, t1; +; 2991 : if (w == 1) { +; 2992 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 2993 : return out; +; 2994 : } +; 2995 : +; 2996 : t1 = 3 * in_near[0] + in_far[0]; +; 2997 : out[0] = stbi__div4(t1 + 2); +; 2998 : for (i = 1; i < w; ++i) { +; 2999 : t0 = t1; +; 3000 : t1 = 3 * in_near[i] + in_far[i]; +; 3001 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3002 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3003 : } +; 3004 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3005 : +; 3006 : STBI_NOTUSED(hs); +; 3007 : +; 3008 : return out; +; 3009 : } +; 3010 : +; 3011 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3012 : static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3013 : { +; 3014 : // need to generate 2x2 samples for every one in input +; 3015 : int i = 0, t0, t1; +; 3016 : +; 3017 : if (w == 1) { +; 3018 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); +; 3019 : return out; +; 3020 : } +; 3021 : +; 3022 : t1 = 3 * in_near[0] + in_far[0]; +; 3023 : // process groups of 8 pixels for as long as we can. +; 3024 : // note we can't handle the last pixel in a row in this loop +; 3025 : // because we need to handle the filter boundary conditions. +; 3026 : for (; i < ((w - 1) & ~7); i += 8) { +; 3027 : #if defined(STBI_SSE2) +; 3028 : // load and perform the vertical filtering pass +; 3029 : // this uses 3*x + y = 4*x + (y - x) +; 3030 : __m128i zero = _mm_setzero_si128(); +; 3031 : __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); +; 3032 : __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); +; 3033 : __m128i farw = _mm_unpacklo_epi8(farb, zero); +; 3034 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero); +; 3035 : __m128i diff = _mm_sub_epi16(farw, nearw); +; 3036 : __m128i nears = _mm_slli_epi16(nearw, 2); +; 3037 : __m128i curr = _mm_add_epi16(nears, diff); // current row +; 3038 : +; 3039 : // horizontal filter works the same based on shifted vers of current +; 3040 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3041 : // insert the previous pixel value (from t1). +; 3042 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3043 : // of next block of 8 pixels added in. +; 3044 : __m128i prv0 = _mm_slli_si128(curr, 2); +; 3045 : __m128i nxt0 = _mm_srli_si128(curr, 2); +; 3046 : __m128i prev = _mm_insert_epi16(prv0, t1, 0); +; 3047 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); +; 3048 : +; 3049 : // horizontal filter, polyphase implementation since it's convenient: +; 3050 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3051 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3052 : // note the shared term. +; 3053 : __m128i bias = _mm_set1_epi16(8); +; 3054 : __m128i curs = _mm_slli_epi16(curr, 2); +; 3055 : __m128i prvd = _mm_sub_epi16(prev, curr); +; 3056 : __m128i nxtd = _mm_sub_epi16(next, curr); +; 3057 : __m128i curb = _mm_add_epi16(curs, bias); +; 3058 : __m128i even = _mm_add_epi16(prvd, curb); +; 3059 : __m128i odd = _mm_add_epi16(nxtd, curb); +; 3060 : +; 3061 : // interleave even and odd pixels, then undo scaling. +; 3062 : __m128i int0 = _mm_unpacklo_epi16(even, odd); +; 3063 : __m128i int1 = _mm_unpackhi_epi16(even, odd); +; 3064 : __m128i de0 = _mm_srli_epi16(int0, 4); +; 3065 : __m128i de1 = _mm_srli_epi16(int1, 4); +; 3066 : +; 3067 : // pack and write output +; 3068 : __m128i outv = _mm_packus_epi16(de0, de1); +; 3069 : _mm_storeu_si128((__m128i*) (out + i * 2), outv); +; 3070 : #elif defined(STBI_NEON) +; 3071 : // load and perform the vertical filtering pass +; 3072 : // this uses 3*x + y = 4*x + (y - x) +; 3073 : uint8x8_t farb = vld1_u8(in_far + i); +; 3074 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3075 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3076 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3077 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3078 : +; 3079 : // horizontal filter works the same based on shifted vers of current +; 3080 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3081 : // insert the previous pixel value (from t1). +; 3082 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3083 : // of next block of 8 pixels added in. +; 3084 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3085 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3086 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3087 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3088 : +; 3089 : // horizontal filter, polyphase implementation since it's convenient: +; 3090 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3091 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3092 : // note the shared term. +; 3093 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3094 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3095 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3096 : int16x8_t even = vaddq_s16(curs, prvd); +; 3097 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3098 : +; 3099 : // undo scaling and round, then store with even/odd phases interleaved +; 3100 : uint8x8x2_t o; +; 3101 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3102 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3103 : vst2_u8(out + i * 2, o); +; 3104 : #endif +; 3105 : +; 3106 : // "previous" value for next iter +; 3107 : t1 = 3 * in_near[i + 7] + in_far[i + 7]; +; 3108 : } +; 3109 : +; 3110 : t0 = t1; +; 3111 : t1 = 3 * in_near[i] + in_far[i]; +; 3112 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3113 : +; 3114 : for (++i; i < w; ++i) { +; 3115 : t0 = t1; +; 3116 : t1 = 3 * in_near[i] + in_far[i]; +; 3117 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); +; 3118 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8); +; 3119 : } +; 3120 : out[w * 2 - 1] = stbi__div4(t1 + 2); +; 3121 : +; 3122 : STBI_NOTUSED(hs); +; 3123 : +; 3124 : return out; +; 3125 : } +; 3126 : #endif +; 3127 : +; 3128 : static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +; 3129 : { +; 3130 : // resample with nearest-neighbor +; 3131 : int i, j; +; 3132 : STBI_NOTUSED(in_far); +; 3133 : for (i = 0; i < w; ++i) +; 3134 : for (j = 0; j < hs; ++j) +; 3135 : out[i * hs + j] = in_near[i]; +; 3136 : return out; +; 3137 : } +; 3138 : +; 3139 : // this is a reduced-precision calculation of YCbCr-to-RGB introduced +; 3140 : // to make sure the code produces the same results in both SIMD and scalar +; 3141 : #define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +; 3142 : static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +; 3143 : { +; 3144 : int i; +; 3145 : for (i = 0; i < count; ++i) { +; 3146 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3147 : int r, g, b; +; 3148 : int cr = pcr[i] - 128; +; 3149 : int cb = pcb[i] - 128; +; 3150 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3151 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3152 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3153 : r >>= 20; +; 3154 : g >>= 20; +; 3155 : b >>= 20; +; 3156 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3157 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3158 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3159 : out[0] = (stbi_uc)r; +; 3160 : out[1] = (stbi_uc)g; +; 3161 : out[2] = (stbi_uc)b; +; 3162 : out[3] = 255; +; 3163 : out += step; +; 3164 : } +; 3165 : } +; 3166 : +; 3167 : #if defined(STBI_SSE2) || defined(STBI_NEON) +; 3168 : static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +; 3169 : { +; 3170 : int i = 0; +; 3171 : +; 3172 : #ifdef STBI_SSE2 +; 3173 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3174 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3175 : // so just accelerate step == 4 case. +; 3176 : if (step == 4) { +; 3177 : // this is a fairly straightforward implementation and not super-optimized. +; 3178 : __m128i signflip = _mm_set1_epi8(-0x80); +; 3179 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); +; 3180 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3181 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3182 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); +; 3183 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); +; 3184 : __m128i xw = _mm_set1_epi16(255); // alpha channel +; 3185 : +; 3186 : for (; i + 7 < count; i += 8) { +; 3187 : // load +; 3188 : __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); +; 3189 : __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); +; 3190 : __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); +; 3191 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 +; 3192 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 +; 3193 : +; 3194 : // unpack to short (and left-shift cr, cb by 8) +; 3195 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); +; 3196 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); +; 3197 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); +; 3198 : +; 3199 : // color transform +; 3200 : __m128i yws = _mm_srli_epi16(yw, 4); +; 3201 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); +; 3202 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); +; 3203 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); +; 3204 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); +; 3205 : __m128i rws = _mm_add_epi16(cr0, yws); +; 3206 : __m128i gwt = _mm_add_epi16(cb0, yws); +; 3207 : __m128i bws = _mm_add_epi16(yws, cb1); +; 3208 : __m128i gws = _mm_add_epi16(gwt, cr1); +; 3209 : +; 3210 : // descale +; 3211 : __m128i rw = _mm_srai_epi16(rws, 4); +; 3212 : __m128i bw = _mm_srai_epi16(bws, 4); +; 3213 : __m128i gw = _mm_srai_epi16(gws, 4); +; 3214 : +; 3215 : // back to byte, set up for transpose +; 3216 : __m128i brb = _mm_packus_epi16(rw, bw); +; 3217 : __m128i gxb = _mm_packus_epi16(gw, xw); +; 3218 : +; 3219 : // transpose to interleave channels +; 3220 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb); +; 3221 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb); +; 3222 : __m128i o0 = _mm_unpacklo_epi16(t0, t1); +; 3223 : __m128i o1 = _mm_unpackhi_epi16(t0, t1); +; 3224 : +; 3225 : // store +; 3226 : _mm_storeu_si128((__m128i*) (out + 0), o0); +; 3227 : _mm_storeu_si128((__m128i*) (out + 16), o1); +; 3228 : out += 32; +; 3229 : } +; 3230 : } +; 3231 : #endif +; 3232 : +; 3233 : #ifdef STBI_NEON +; 3234 : // in this version, step=3 support would be easy to add. but is there demand? +; 3235 : if (step == 4) { +; 3236 : // this is a fairly straightforward implementation and not super-optimized. +; 3237 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3238 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3239 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3240 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3241 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3242 : +; 3243 : for (; i + 7 < count; i += 8) { +; 3244 : // load +; 3245 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3246 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3247 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3248 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3249 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3250 : +; 3251 : // expand to s16 +; 3252 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3253 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3254 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3255 : +; 3256 : // color transform +; 3257 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3258 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3259 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3260 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3261 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3262 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3263 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3264 : +; 3265 : // undo scaling, round, convert to byte +; 3266 : uint8x8x4_t o; +; 3267 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3268 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3269 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3270 : o.val[3] = vdup_n_u8(255); +; 3271 : +; 3272 : // store, interleaving r/g/b/a +; 3273 : vst4_u8(out, o); +; 3274 : out += 8 * 4; +; 3275 : } +; 3276 : } +; 3277 : #endif +; 3278 : +; 3279 : for (; i < count; ++i) { +; 3280 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding +; 3281 : int r, g, b; +; 3282 : int cr = pcr[i] - 128; +; 3283 : int cb = pcb[i] - 128; +; 3284 : r = y_fixed + cr * stbi__float2fixed(1.40200f); +; 3285 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3286 : b = y_fixed + cb * stbi__float2fixed(1.77200f); +; 3287 : r >>= 20; +; 3288 : g >>= 20; +; 3289 : b >>= 20; +; 3290 : if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } +; 3291 : if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } +; 3292 : if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } +; 3293 : out[0] = (stbi_uc)r; +; 3294 : out[1] = (stbi_uc)g; +; 3295 : out[2] = (stbi_uc)b; +; 3296 : out[3] = 255; +; 3297 : out += step; +; 3298 : } +; 3299 : } +; 3300 : #endif +; 3301 : +; 3302 : // set up the kernels +; 3303 : static void stbi__setup_jpeg(stbi__jpeg* j) +; 3304 : { +; 3305 : j->idct_block_kernel = stbi__idct_block; +; 3306 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; +; 3307 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; +; 3308 : +; 3309 : #ifdef STBI_SSE2 +; 3310 : if (stbi__sse2_available()) { +; 3311 : j->idct_block_kernel = stbi__idct_simd; +; 3312 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3313 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3314 : } +; 3315 : #endif +; 3316 : +; 3317 : #ifdef STBI_NEON +; 3318 : j->idct_block_kernel = stbi__idct_simd; +; 3319 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3320 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3321 : #endif +; 3322 : } +; 3323 : +; 3324 : // clean up the temporary component buffers +; 3325 : static void stbi__cleanup_jpeg(stbi__jpeg* j) +; 3326 : { +; 3327 : stbi__free_jpeg_components(j, j->s->img_n, 0); +; 3328 : } +; 3329 : +; 3330 : typedef struct +; 3331 : { +; 3332 : resample_row_func resample; +; 3333 : stbi_uc* line0, * line1; +; 3334 : int hs, vs; // expansion factor in each axis +; 3335 : int w_lores; // horizontal pixels pre-expansion +; 3336 : int ystep; // how far through vertical expansion we are +; 3337 : int ypos; // which pre-expansion row we're on +; 3338 : } stbi__resample; +; 3339 : +; 3340 : // fast 0..255 * 0..255 => 0..255 rounded multiplication +; 3341 : static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +; 3342 : { +; 3343 : unsigned int t = x * y + 128; +; 3344 : return (stbi_uc)((t + (t >> 8)) >> 8); +; 3345 : } +; 3346 : +; 3347 : static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +; 3348 : { +; 3349 : int n, decode_n, is_rgb; +; 3350 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe +; 3351 : +; 3352 : // validate req_comp +; 3353 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 3354 : +; 3355 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3356 : if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } +; 3357 : +; 3358 : // determine actual number of components to generate +; 3359 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; +; 3360 : +; 3361 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); +; 3362 : +; 3363 : if (z->s->img_n == 3 && n < 3 && !is_rgb) +; 3364 : decode_n = 1; +; 3365 : else +; 3366 : decode_n = z->s->img_n; +; 3367 : +; 3368 : // nothing to do if no components requested; check this now to avoid +; 3369 : // accessing uninitialized coutput[0] later +; 3370 : if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } +; 3371 : +; 3372 : // resample and color-convert +; 3373 : { +; 3374 : int k; +; 3375 : unsigned int i, j; +; 3376 : stbi_uc* output; +; 3377 : stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; +; 3378 : +; 3379 : stbi__resample res_comp[4]; +; 3380 : +; 3381 : for (k = 0; k < decode_n; ++k) { +; 3382 : stbi__resample* r = &res_comp[k]; +; 3383 : +; 3384 : // allocate line buffer big enough for upsampling off the edges +; 3385 : // with upsample factor of 4 +; 3386 : z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); +; 3387 : if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3388 : +; 3389 : r->hs = z->img_h_max / z->img_comp[k].h; +; 3390 : r->vs = z->img_v_max / z->img_comp[k].v; +; 3391 : r->ystep = r->vs >> 1; +; 3392 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; +; 3393 : r->ypos = 0; +; 3394 : r->line0 = r->line1 = z->img_comp[k].data; +; 3395 : +; 3396 : if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; +; 3397 : else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; +; 3398 : else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; +; 3399 : else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; +; 3400 : else r->resample = stbi__resample_row_generic; +; 3401 : } +; 3402 : +; 3403 : // can't error after this so, this is safe +; 3404 : output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); +; 3405 : if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } +; 3406 : +; 3407 : // now go ahead and resample +; 3408 : for (j = 0; j < z->s->img_y; ++j) { +; 3409 : stbi_uc* out = output + n * z->s->img_x * j; +; 3410 : for (k = 0; k < decode_n; ++k) { +; 3411 : stbi__resample* r = &res_comp[k]; +; 3412 : int y_bot = r->ystep >= (r->vs >> 1); +; 3413 : coutput[k] = r->resample(z->img_comp[k].linebuf, +; 3414 : y_bot ? r->line1 : r->line0, +; 3415 : y_bot ? r->line0 : r->line1, +; 3416 : r->w_lores, r->hs); +; 3417 : if (++r->ystep >= r->vs) { +; 3418 : r->ystep = 0; +; 3419 : r->line0 = r->line1; +; 3420 : if (++r->ypos < z->img_comp[k].y) +; 3421 : r->line1 += z->img_comp[k].w2; +; 3422 : } +; 3423 : } +; 3424 : if (n >= 3) { +; 3425 : stbi_uc* y = coutput[0]; +; 3426 : if (z->s->img_n == 3) { +; 3427 : if (is_rgb) { +; 3428 : for (i = 0; i < z->s->img_x; ++i) { +; 3429 : out[0] = y[i]; +; 3430 : out[1] = coutput[1][i]; +; 3431 : out[2] = coutput[2][i]; +; 3432 : out[3] = 255; +; 3433 : out += n; +; 3434 : } +; 3435 : } +; 3436 : else { +; 3437 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3438 : } +; 3439 : } +; 3440 : else if (z->s->img_n == 4) { +; 3441 : if (z->app14_color_transform == 0) { // CMYK +; 3442 : for (i = 0; i < z->s->img_x; ++i) { +; 3443 : stbi_uc m = coutput[3][i]; +; 3444 : out[0] = stbi__blinn_8x8(coutput[0][i], m); +; 3445 : out[1] = stbi__blinn_8x8(coutput[1][i], m); +; 3446 : out[2] = stbi__blinn_8x8(coutput[2][i], m); +; 3447 : out[3] = 255; +; 3448 : out += n; +; 3449 : } +; 3450 : } +; 3451 : else if (z->app14_color_transform == 2) { // YCCK +; 3452 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3453 : for (i = 0; i < z->s->img_x; ++i) { +; 3454 : stbi_uc m = coutput[3][i]; +; 3455 : out[0] = stbi__blinn_8x8(255 - out[0], m); +; 3456 : out[1] = stbi__blinn_8x8(255 - out[1], m); +; 3457 : out[2] = stbi__blinn_8x8(255 - out[2], m); +; 3458 : out += n; +; 3459 : } +; 3460 : } +; 3461 : else { // YCbCr + alpha? Ignore the fourth channel for now +; 3462 : z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); +; 3463 : } +; 3464 : } +; 3465 : else +; 3466 : for (i = 0; i < z->s->img_x; ++i) { +; 3467 : out[0] = out[1] = out[2] = y[i]; +; 3468 : out[3] = 255; // not used if n==3 +; 3469 : out += n; +; 3470 : } +; 3471 : } +; 3472 : else { +; 3473 : if (is_rgb) { +; 3474 : if (n == 1) +; 3475 : for (i = 0; i < z->s->img_x; ++i) +; 3476 : *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3477 : else { +; 3478 : for (i = 0; i < z->s->img_x; ++i, out += 2) { +; 3479 : out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); +; 3480 : out[1] = 255; +; 3481 : } +; 3482 : } +; 3483 : } +; 3484 : else if (z->s->img_n == 4 && z->app14_color_transform == 0) { +; 3485 : for (i = 0; i < z->s->img_x; ++i) { +; 3486 : stbi_uc m = coutput[3][i]; +; 3487 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); +; 3488 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); +; 3489 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); +; 3490 : out[0] = stbi__compute_y(r, g, b); +; 3491 : out[1] = 255; +; 3492 : out += n; +; 3493 : } +; 3494 : } +; 3495 : else if (z->s->img_n == 4 && z->app14_color_transform == 2) { +; 3496 : for (i = 0; i < z->s->img_x; ++i) { +; 3497 : out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); +; 3498 : out[1] = 255; +; 3499 : out += n; +; 3500 : } +; 3501 : } +; 3502 : else { +; 3503 : stbi_uc* y = coutput[0]; +; 3504 : if (n == 1) +; 3505 : for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; +; 3506 : else +; 3507 : for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } +; 3508 : } +; 3509 : } +; 3510 : } +; 3511 : stbi__cleanup_jpeg(z); +; 3512 : *out_x = z->s->img_x; +; 3513 : *out_y = z->s->img_y; +; 3514 : if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output +; 3515 : return output; +; 3516 : } +; 3517 : } +; 3518 : +; 3519 : static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 3520 : { +; 3521 : unsigned char* result; +; 3522 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3523 : if (!j) return stbi__errpuc("outofmem", "Out of memory"); +; 3524 : memset(j, 0, sizeof(stbi__jpeg)); +; 3525 : STBI_NOTUSED(ri); +; 3526 : j->s = s; +; 3527 : stbi__setup_jpeg(j); +; 3528 : result = load_jpeg_image(j, x, y, comp, req_comp); +; 3529 : STBI_FREE(j); +; 3530 : return result; +; 3531 : } +; 3532 : +; 3533 : static int stbi__jpeg_test(stbi__context* s) +; 3534 : { +; 3535 : int r; +; 3536 : stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); +; 3537 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3538 : memset(j, 0, sizeof(stbi__jpeg)); +; 3539 : j->s = s; +; 3540 : stbi__setup_jpeg(j); +; 3541 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type); +; 3542 : stbi__rewind(s); +; 3543 : STBI_FREE(j); +; 3544 : return r; +; 3545 : } +; 3546 : +; 3547 : static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +; 3548 : { +; 3549 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { +; 3550 : stbi__rewind(j->s); +; 3551 : return 0; +; 3552 : } +; 3553 : if (x) *x = j->s->img_x; +; 3554 : if (y) *y = j->s->img_y; +; 3555 : if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; +; 3556 : return 1; +; 3557 : } +; 3558 : +; 3559 : static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +; 3560 : { +; 3561 : int result; +; 3562 : stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); +; 3563 : if (!j) return stbi__err("outofmem", "Out of memory"); +; 3564 : memset(j, 0, sizeof(stbi__jpeg)); +; 3565 : j->s = s; +; 3566 : result = stbi__jpeg_info_raw(j, x, y, comp); +; 3567 : STBI_FREE(j); +; 3568 : return result; +; 3569 : } +; 3570 : #endif +; 3571 : +; 3572 : // public domain zlib decode v0.2 Sean Barrett 2006-11-18 +; 3573 : // simple implementation +; 3574 : // - all input must be provided in an upfront buffer +; 3575 : // - all output is written to a single output buffer (can malloc/realloc) +; 3576 : // performance +; 3577 : // - fast huffman +; 3578 : +; 3579 : #ifndef STBI_NO_ZLIB +; 3580 : +; 3581 : // fast-way is faster to check than jpeg huffman, but slow way is slower +; 3582 : #define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +; 3583 : #define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +; 3584 : #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet +; 3585 : +; 3586 : // zlib-style huffman encoding +; 3587 : // (jpegs packs from left, zlib from right, so can't share code) +; 3588 : typedef struct +; 3589 : { +; 3590 : stbi__uint16 fast[1 << STBI__ZFAST_BITS]; +; 3591 : stbi__uint16 firstcode[16]; +; 3592 : int maxcode[17]; +; 3593 : stbi__uint16 firstsymbol[16]; +; 3594 : stbi_uc size[STBI__ZNSYMS]; +; 3595 : stbi__uint16 value[STBI__ZNSYMS]; +; 3596 : } stbi__zhuffman; +; 3597 : +; 3598 : stbi_inline static int stbi__bitreverse16(int n) +; 3599 : { +; 3600 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); +; 3601 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); +; 3602 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); +; 3603 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); +; 3604 : return n; +; 3605 : } +; 3606 : +; 3607 : stbi_inline static int stbi__bit_reverse(int v, int bits) +; 3608 : { +; 3609 : STBI_ASSERT(bits <= 16); +; 3610 : // to bit reverse n bits, reverse 16 and shift +; 3611 : // e.g. 11 bits, bit reverse and shift away 5 +; 3612 : return stbi__bitreverse16(v) >> (16 - bits); +; 3613 : } +; 3614 : +; 3615 : static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +; 3616 : { +; 3617 : int i, k = 0; +; 3618 : int code, next_code[16], sizes[17]; +; 3619 : +; 3620 : // DEFLATE spec for generating codes +; 3621 : memset(sizes, 0, sizeof(sizes)); +; 3622 : memset(z->fast, 0, sizeof(z->fast)); +; 3623 : for (i = 0; i < num; ++i) +; 3624 : ++sizes[sizelist[i]]; +; 3625 : sizes[0] = 0; +; 3626 : for (i = 1; i < 16; ++i) +; 3627 : if (sizes[i] > (1 << i)) +; 3628 : return stbi__err("bad sizes", "Corrupt PNG"); +; 3629 : code = 0; +; 3630 : for (i = 1; i < 16; ++i) { +; 3631 : next_code[i] = code; +; 3632 : z->firstcode[i] = (stbi__uint16)code; +; 3633 : z->firstsymbol[i] = (stbi__uint16)k; +; 3634 : code = (code + sizes[i]); +; 3635 : if (sizes[i]) +; 3636 : if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3637 : z->maxcode[i] = code << (16 - i); // preshift for inner loop +; 3638 : code <<= 1; +; 3639 : k += sizes[i]; +; 3640 : } +; 3641 : z->maxcode[16] = 0x10000; // sentinel +; 3642 : for (i = 0; i < num; ++i) { +; 3643 : int s = sizelist[i]; +; 3644 : if (s) { +; 3645 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; +; 3646 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); +; 3647 : z->size[c] = (stbi_uc)s; +; 3648 : z->value[c] = (stbi__uint16)i; +; 3649 : if (s <= STBI__ZFAST_BITS) { +; 3650 : int j = stbi__bit_reverse(next_code[s], s); +; 3651 : while (j < (1 << STBI__ZFAST_BITS)) { +; 3652 : z->fast[j] = fastv; +; 3653 : j += (1 << s); +; 3654 : } +; 3655 : } +; 3656 : ++next_code[s]; +; 3657 : } +; 3658 : } +; 3659 : return 1; +; 3660 : } +; 3661 : +; 3662 : // zlib-from-memory implementation for PNG reading +; 3663 : // because PNG allows splitting the zlib stream arbitrarily, +; 3664 : // and it's annoying structurally to have PNG call ZLIB call PNG, +; 3665 : // we require PNG read all the IDATs and combine them into a single +; 3666 : // memory buffer +; 3667 : +; 3668 : typedef struct +; 3669 : { +; 3670 : stbi_uc* zbuffer, * zbuffer_end; +; 3671 : int num_bits; +; 3672 : stbi__uint32 code_buffer; +; 3673 : +; 3674 : char* zout; +; 3675 : char* zout_start; +; 3676 : char* zout_end; +; 3677 : int z_expandable; +; 3678 : +; 3679 : stbi__zhuffman z_length, z_distance; +; 3680 : } stbi__zbuf; +; 3681 : +; 3682 : stbi_inline static int stbi__zeof(stbi__zbuf* z) +; 3683 : { +; 3684 : return (z->zbuffer >= z->zbuffer_end); +; 3685 : } +; 3686 : +; 3687 : stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +; 3688 : { +; 3689 : return stbi__zeof(z) ? 0 : *z->zbuffer++; +; 3690 : } +; 3691 : +; 3692 : static void stbi__fill_bits(stbi__zbuf* z) +; 3693 : { +; 3694 : do { +; 3695 : if (z->code_buffer >= (1U << z->num_bits)) { +; 3696 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ +; 3697 : return; +; 3698 : } +; 3699 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; +; 3700 : z->num_bits += 8; +; 3701 : } while (z->num_bits <= 24); +; 3702 : } +; 3703 : +; 3704 : stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +; 3705 : { +; 3706 : unsigned int k; +; 3707 : if (z->num_bits < n) stbi__fill_bits(z); +; 3708 : k = z->code_buffer & ((1 << n) - 1); +; 3709 : z->code_buffer >>= n; +; 3710 : z->num_bits -= n; +; 3711 : return k; +; 3712 : } +; 3713 : +; 3714 : static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +; 3715 : { +; 3716 : int b, s, k; +; 3717 : // not resolved by fast table, so compute it the slow way +; 3718 : // use jpeg approach, which requires MSbits at top +; 3719 : k = stbi__bit_reverse(a->code_buffer, 16); +; 3720 : for (s = STBI__ZFAST_BITS + 1; ; ++s) +; 3721 : if (k < z->maxcode[s]) +; 3722 : break; +; 3723 : if (s >= 16) return -1; // invalid code! +; 3724 : // code size is s, so: +; 3725 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; +; 3726 : if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! +; 3727 : if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. +; 3728 : a->code_buffer >>= s; +; 3729 : a->num_bits -= s; +; 3730 : return z->value[b]; +; 3731 : } +; 3732 : +; 3733 : stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) +; 3734 : { +; 3735 : int b, s; +; 3736 : if (a->num_bits < 16) { +; 3737 : if (stbi__zeof(a)) { +; 3738 : return -1; /* report error for unexpected end of data. */ +; 3739 : } +; 3740 : stbi__fill_bits(a); +; 3741 : } +; 3742 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; +; 3743 : if (b) { +; 3744 : s = b >> 9; +; 3745 : a->code_buffer >>= s; +; 3746 : a->num_bits -= s; +; 3747 : return b & 511; +; 3748 : } +; 3749 : return stbi__zhuffman_decode_slowpath(a, z); +; 3750 : } +; 3751 : +; 3752 : static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +; 3753 : { +; 3754 : char* q; +; 3755 : unsigned int cur, limit, old_limit; +; 3756 : z->zout = zout; +; 3757 : if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); +; 3758 : cur = (unsigned int)(z->zout - z->zout_start); +; 3759 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start); +; 3760 : if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); +; 3761 : while (cur + n > limit) { +; 3762 : if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); +; 3763 : limit *= 2; +; 3764 : } +; 3765 : q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); +; 3766 : STBI_NOTUSED(old_limit); +; 3767 : if (q == NULL) return stbi__err("outofmem", "Out of memory"); +; 3768 : z->zout_start = q; +; 3769 : z->zout = q + cur; +; 3770 : z->zout_end = q + limit; +; 3771 : return 1; +; 3772 : } +; 3773 : +; 3774 : static const int stbi__zlength_base[31] = { +; 3775 : 3,4,5,6,7,8,9,10,11,13, +; 3776 : 15,17,19,23,27,31,35,43,51,59, +; 3777 : 67,83,99,115,131,163,195,227,258,0,0 }; +; 3778 : +; 3779 : static const int stbi__zlength_extra[31] = +; 3780 : { 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +; 3781 : +; 3782 : static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +; 3783 : 257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +; 3784 : +; 3785 : static const int stbi__zdist_extra[32] = +; 3786 : { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +; 3787 : +; 3788 : static int stbi__parse_huffman_block(stbi__zbuf* a) +; 3789 : { +; 3790 : char* zout = a->zout; +; 3791 : for (;;) { +; 3792 : int z = stbi__zhuffman_decode(a, &a->z_length); +; 3793 : if (z < 256) { +; 3794 : if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes +; 3795 : if (zout >= a->zout_end) { +; 3796 : if (!stbi__zexpand(a, zout, 1)) return 0; +; 3797 : zout = a->zout; +; 3798 : } +; 3799 : *zout++ = (char)z; +; 3800 : } +; 3801 : else { +; 3802 : stbi_uc* p; +; 3803 : int len, dist; +; 3804 : if (z == 256) { +; 3805 : a->zout = zout; +; 3806 : return 1; +; 3807 : } +; 3808 : if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 3809 : z -= 257; +; 3810 : len = stbi__zlength_base[z]; +; 3811 : if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); +; 3812 : z = stbi__zhuffman_decode(a, &a->z_distance); +; 3813 : if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 3814 : dist = stbi__zdist_base[z]; +; 3815 : if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); +; 3816 : if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); +; 3817 : if (zout + len > a->zout_end) { +; 3818 : if (!stbi__zexpand(a, zout, len)) return 0; +; 3819 : zout = a->zout; +; 3820 : } +; 3821 : p = (stbi_uc*)(zout - dist); +; 3822 : if (dist == 1) { // run of one byte; common in images. +; 3823 : stbi_uc v = *p; +; 3824 : if (len) { do *zout++ = v; while (--len); } +; 3825 : } +; 3826 : else { +; 3827 : if (len) { do *zout++ = *p++; while (--len); } +; 3828 : } +; 3829 : } +; 3830 : } +; 3831 : } +; 3832 : +; 3833 : static int stbi__compute_huffman_codes(stbi__zbuf* a) +; 3834 : { +; 3835 : static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; +; 3836 : stbi__zhuffman z_codelength; +; 3837 : stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op +; 3838 : stbi_uc codelength_sizes[19]; +; 3839 : int i, n; +; 3840 : +; 3841 : int hlit = stbi__zreceive(a, 5) + 257; +; 3842 : int hdist = stbi__zreceive(a, 5) + 1; +; 3843 : int hclen = stbi__zreceive(a, 4) + 4; +; 3844 : int ntot = hlit + hdist; +; 3845 : +; 3846 : memset(codelength_sizes, 0, sizeof(codelength_sizes)); +; 3847 : for (i = 0; i < hclen; ++i) { +; 3848 : int s = stbi__zreceive(a, 3); +; 3849 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; +; 3850 : } +; 3851 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; +; 3852 : +; 3853 : n = 0; +; 3854 : while (n < ntot) { +; 3855 : int c = stbi__zhuffman_decode(a, &z_codelength); +; 3856 : if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3857 : if (c < 16) +; 3858 : lencodes[n++] = (stbi_uc)c; +; 3859 : else { +; 3860 : stbi_uc fill = 0; +; 3861 : if (c == 16) { +; 3862 : c = stbi__zreceive(a, 2) + 3; +; 3863 : if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3864 : fill = lencodes[n - 1]; +; 3865 : } +; 3866 : else if (c == 17) { +; 3867 : c = stbi__zreceive(a, 3) + 3; +; 3868 : } +; 3869 : else if (c == 18) { +; 3870 : c = stbi__zreceive(a, 7) + 11; +; 3871 : } +; 3872 : else { +; 3873 : return stbi__err("bad codelengths", "Corrupt PNG"); +; 3874 : } +; 3875 : if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3876 : memset(lencodes + n, fill, c); +; 3877 : n += c; +; 3878 : } +; 3879 : } +; 3880 : if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); +; 3881 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; +; 3882 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; +; 3883 : return 1; +; 3884 : } +; 3885 : +; 3886 : static int stbi__parse_uncompressed_block(stbi__zbuf* a) +; 3887 : { +; 3888 : stbi_uc header[4]; +; 3889 : int len, nlen, k; +; 3890 : if (a->num_bits & 7) +; 3891 : stbi__zreceive(a, a->num_bits & 7); // discard +; 3892 : // drain the bit-packed data into header +; 3893 : k = 0; +; 3894 : while (a->num_bits > 0) { +; 3895 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check +; 3896 : a->code_buffer >>= 8; +; 3897 : a->num_bits -= 8; +; 3898 : } +; 3899 : if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3900 : // now fill header the normal way +; 3901 : while (k < 4) +; 3902 : header[k++] = stbi__zget8(a); +; 3903 : len = header[1] * 256 + header[0]; +; 3904 : nlen = header[3] * 256 + header[2]; +; 3905 : if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); +; 3906 : if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); +; 3907 : if (a->zout + len > a->zout_end) +; 3908 : if (!stbi__zexpand(a, a->zout, len)) return 0; +; 3909 : memcpy(a->zout, a->zbuffer, len); +; 3910 : a->zbuffer += len; +; 3911 : a->zout += len; +; 3912 : return 1; +; 3913 : } +; 3914 : +; 3915 : static int stbi__parse_zlib_header(stbi__zbuf* a) +; 3916 : { +; 3917 : int cmf = stbi__zget8(a); +; 3918 : int cm = cmf & 15; +; 3919 : /* int cinfo = cmf >> 4; */ +; 3920 : int flg = stbi__zget8(a); +; 3921 : if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3922 : if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec +; 3923 : if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png +; 3924 : if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png +; 3925 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 3926 : return 1; +; 3927 : } +; 3928 : +; 3929 : static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +; 3930 : { +; 3931 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3932 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3933 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3934 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +; 3935 : 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3936 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3937 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3938 : 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +; 3939 : 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +; 3940 : }; +; 3941 : static const stbi_uc stbi__zdefault_distance[32] = +; 3942 : { +; 3943 : 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +; 3944 : }; +; 3945 : /* +; 3946 : Init algorithm: +; 3947 : { +; 3948 : int i; // use <= to match clearly with spec +; 3949 : for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; +; 3950 : for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; +; 3951 : for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; +; 3952 : for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; +; 3953 : +; 3954 : for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +; 3955 : } +; 3956 : */ +; 3957 : +; 3958 : static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +; 3959 : { +; 3960 : int final, type; +; 3961 : if (parse_header) +; 3962 : if (!stbi__parse_zlib_header(a)) return 0; +; 3963 : a->num_bits = 0; +; 3964 : a->code_buffer = 0; +; 3965 : do { +; 3966 : final = stbi__zreceive(a, 1); +; 3967 : type = stbi__zreceive(a, 2); +; 3968 : if (type == 0) { +; 3969 : if (!stbi__parse_uncompressed_block(a)) return 0; +; 3970 : } +; 3971 : else if (type == 3) { +; 3972 : return 0; +; 3973 : } +; 3974 : else { +; 3975 : if (type == 1) { +; 3976 : // use fixed code lengths +; 3977 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; +; 3978 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; +; 3979 : } +; 3980 : else { +; 3981 : if (!stbi__compute_huffman_codes(a)) return 0; +; 3982 : } +; 3983 : if (!stbi__parse_huffman_block(a)) return 0; +; 3984 : } +; 3985 : } while (!final); +; 3986 : return 1; +; 3987 : } +; 3988 : +; 3989 : static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +; 3990 : { +; 3991 : a->zout_start = obuf; +; 3992 : a->zout = obuf; +; 3993 : a->zout_end = obuf + olen; +; 3994 : a->z_expandable = exp; +; 3995 : +; 3996 : return stbi__parse_zlib(a, parse_header); +; 3997 : } +; 3998 : +; 3999 : STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) +; 4000 : { +; 4001 : stbi__zbuf a; +; 4002 : char* p = (char*)stbi__malloc(initial_size); +; 4003 : if (p == NULL) return NULL; +; 4004 : a.zbuffer = (stbi_uc*)buffer; +; 4005 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4006 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { +; 4007 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4008 : return a.zout_start; +; 4009 : } +; 4010 : else { +; 4011 : STBI_FREE(a.zout_start); +; 4012 : return NULL; +; 4013 : } +; 4014 : } +; 4015 : +; 4016 : STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) +; 4017 : { +; 4018 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +; 4019 : } +; 4020 : +; 4021 : STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) +; 4022 : { +; 4023 : stbi__zbuf a; +; 4024 : char* p = (char*)stbi__malloc(initial_size); +; 4025 : if (p == NULL) return NULL; +; 4026 : a.zbuffer = (stbi_uc*)buffer; +; 4027 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4028 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { +; 4029 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4030 : return a.zout_start; +; 4031 : } +; 4032 : else { +; 4033 : STBI_FREE(a.zout_start); +; 4034 : return NULL; +; 4035 : } +; 4036 : } +; 4037 : +; 4038 : STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) +; 4039 : { +; 4040 : stbi__zbuf a; +; 4041 : a.zbuffer = (stbi_uc*)ibuffer; +; 4042 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4043 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) +; 4044 : return (int)(a.zout - a.zout_start); +; 4045 : else +; 4046 : return -1; +; 4047 : } +; 4048 : +; 4049 : STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) +; 4050 : { +; 4051 : stbi__zbuf a; +; 4052 : char* p = (char*)stbi__malloc(16384); +; 4053 : if (p == NULL) return NULL; +; 4054 : a.zbuffer = (stbi_uc*)buffer; +; 4055 : a.zbuffer_end = (stbi_uc*)buffer + len; +; 4056 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) { +; 4057 : if (outlen) *outlen = (int)(a.zout - a.zout_start); +; 4058 : return a.zout_start; +; 4059 : } +; 4060 : else { +; 4061 : STBI_FREE(a.zout_start); +; 4062 : return NULL; +; 4063 : } +; 4064 : } +; 4065 : +; 4066 : STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) +; 4067 : { +; 4068 : stbi__zbuf a; +; 4069 : a.zbuffer = (stbi_uc*)ibuffer; +; 4070 : a.zbuffer_end = (stbi_uc*)ibuffer + ilen; +; 4071 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) +; 4072 : return (int)(a.zout - a.zout_start); +; 4073 : else +; 4074 : return -1; +; 4075 : } +; 4076 : #endif +; 4077 : +; 4078 : // public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +; 4079 : // simple implementation +; 4080 : // - only 8-bit samples +; 4081 : // - no CRC checking +; 4082 : // - allocates lots of intermediate memory +; 4083 : // - avoids problem of streaming data between subsystems +; 4084 : // - avoids explicit window management +; 4085 : // performance +; 4086 : // - uses stb_zlib, a PD zlib implementation with fast huffman decoding +; 4087 : +; 4088 : #ifndef STBI_NO_PNG +; 4089 : typedef struct +; 4090 : { +; 4091 : stbi__uint32 length; +; 4092 : stbi__uint32 type; +; 4093 : } stbi__pngchunk; +; 4094 : +; 4095 : static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +; 4096 : { +; 4097 : stbi__pngchunk c; +; 4098 : c.length = stbi__get32be(s); +; 4099 : c.type = stbi__get32be(s); +; 4100 : return c; +; 4101 : } +; 4102 : +; 4103 : static int stbi__check_png_header(stbi__context* s) +; 4104 : { +; 4105 : static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; +; 4106 : int i; +; 4107 : for (i = 0; i < 8; ++i) +; 4108 : if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); +; 4109 : return 1; +; 4110 : } +; 4111 : +; 4112 : typedef struct +; 4113 : { +; 4114 : stbi__context* s; +; 4115 : stbi_uc* idata, * expanded, * out; +; 4116 : int depth; +; 4117 : } stbi__png; +; 4118 : +; 4119 : enum { +; 4120 : STBI__F_none = 0, +; 4121 : STBI__F_sub = 1, +; 4122 : STBI__F_up = 2, +; 4123 : STBI__F_avg = 3, +; 4124 : STBI__F_paeth = 4, +; 4125 : // synthetic filters used for first scanline to avoid needing a dummy row of 0s +; 4126 : STBI__F_avg_first, +; 4127 : STBI__F_paeth_first +; 4128 : }; +; 4129 : +; 4130 : static stbi_uc first_row_filter[5] = +; 4131 : { +; 4132 : STBI__F_none, +; 4133 : STBI__F_sub, +; 4134 : STBI__F_none, +; 4135 : STBI__F_avg_first, +; 4136 : STBI__F_paeth_first +; 4137 : }; +; 4138 : +; 4139 : static int stbi__paeth(int a, int b, int c) +; 4140 : { +; 4141 : int p = a + b - c; +; 4142 : int pa = abs(p - a); +; 4143 : int pb = abs(p - b); +; 4144 : int pc = abs(p - c); +; 4145 : if (pa <= pb && pa <= pc) return a; +; 4146 : if (pb <= pc) return b; +; 4147 : return c; +; 4148 : } +; 4149 : +; 4150 : static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +; 4151 : +; 4152 : // create the png data from post-deflated data +; 4153 : static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +; 4154 : { +; 4155 : int bytes = (depth == 16 ? 2 : 1); +; 4156 : stbi__context* s = a->s; +; 4157 : stbi__uint32 i, j, stride = x * out_n * bytes; +; 4158 : stbi__uint32 img_len, img_width_bytes; +; 4159 : int k; +; 4160 : int img_n = s->img_n; // copy it into a local for later +; 4161 : +; 4162 : int output_bytes = out_n * bytes; +; 4163 : int filter_bytes = img_n * bytes; +; 4164 : int width = x; +; 4165 : +; 4166 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); +; 4167 : a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into +; 4168 : if (!a->out) return stbi__err("outofmem", "Out of memory"); +; 4169 : +; 4170 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); +; 4171 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); +; 4172 : img_len = (img_width_bytes + 1) * y; +; 4173 : +; 4174 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4175 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4176 : // so just check for raw_len < img_len always. +; 4177 : if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); +; 4178 : +; 4179 : for (j = 0; j < y; ++j) { +; 4180 : stbi_uc* cur = a->out + stride * j; +; 4181 : stbi_uc* prior; +; 4182 : int filter = *raw++; +; 4183 : +; 4184 : if (filter > 4) +; 4185 : return stbi__err("invalid filter", "Corrupt PNG"); +; 4186 : +; 4187 : if (depth < 8) { +; 4188 : if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); +; 4189 : cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4190 : filter_bytes = 1; +; 4191 : width = img_width_bytes; +; 4192 : } +; 4193 : prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above +; 4194 : +; 4195 : // if first row, use special filter that doesn't sample previous row +; 4196 : if (j == 0) filter = first_row_filter[filter]; +; 4197 : +; 4198 : // handle first byte explicitly +; 4199 : for (k = 0; k < filter_bytes; ++k) { +; 4200 : switch (filter) { +; 4201 : case STBI__F_none: cur[k] = raw[k]; break; +; 4202 : case STBI__F_sub: cur[k] = raw[k]; break; +; 4203 : case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; +; 4204 : case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; +; 4205 : case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; +; 4206 : case STBI__F_avg_first: cur[k] = raw[k]; break; +; 4207 : case STBI__F_paeth_first: cur[k] = raw[k]; break; +; 4208 : } +; 4209 : } +; 4210 : +; 4211 : if (depth == 8) { +; 4212 : if (img_n != out_n) +; 4213 : cur[img_n] = 255; // first pixel +; 4214 : raw += img_n; +; 4215 : cur += out_n; +; 4216 : prior += out_n; +; 4217 : } +; 4218 : else if (depth == 16) { +; 4219 : if (img_n != out_n) { +; 4220 : cur[filter_bytes] = 255; // first pixel top byte +; 4221 : cur[filter_bytes + 1] = 255; // first pixel bottom byte +; 4222 : } +; 4223 : raw += filter_bytes; +; 4224 : cur += output_bytes; +; 4225 : prior += output_bytes; +; 4226 : } +; 4227 : else { +; 4228 : raw += 1; +; 4229 : cur += 1; +; 4230 : prior += 1; +; 4231 : } +; 4232 : +; 4233 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4234 : if (depth < 8 || img_n == out_n) { +; 4235 : int nk = (width - 1) * filter_bytes; +; 4236 : #define STBI__CASE(f) \ +; 4237 : case f: \ +; 4238 : for (k=0; k < nk; ++k) +; 4239 : switch (filter) { +; 4240 : // "none" filter turns into a memcpy here; make that explicit. +; 4241 : case STBI__F_none: memcpy(cur, raw, nk); break; +; 4242 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; +; 4243 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4244 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; +; 4245 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; +; 4246 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; +; 4247 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; +; 4248 : } +; 4249 : #undef STBI__CASE +; 4250 : raw += nk; +; 4251 : } +; 4252 : else { +; 4253 : STBI_ASSERT(img_n + 1 == out_n); +; 4254 : #define STBI__CASE(f) \ +; 4255 : case f: \ +; 4256 : for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ +; 4257 : for (k=0; k < filter_bytes; ++k) +; 4258 : switch (filter) { +; 4259 : STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; +; 4260 : STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; +; 4261 : STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; +; 4262 : STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; +; 4263 : STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; +; 4264 : STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; +; 4265 : STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; +; 4266 : } +; 4267 : #undef STBI__CASE +; 4268 : +; 4269 : // the loop above sets the high byte of the pixels' alpha, but for +; 4270 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4271 : if (depth == 16) { +; 4272 : cur = a->out + stride * j; // start at the beginning of the row again +; 4273 : for (i = 0; i < x; ++i, cur += output_bytes) { +; 4274 : cur[filter_bytes + 1] = 255; +; 4275 : } +; 4276 : } +; 4277 : } +; 4278 : } +; 4279 : +; 4280 : // we make a separate pass to expand bits to pixels; for performance, +; 4281 : // this could run two scanlines behind the above code, so it won't +; 4282 : // intefere with filtering but will still be in the cache. +; 4283 : if (depth < 8) { +; 4284 : for (j = 0; j < y; ++j) { +; 4285 : stbi_uc* cur = a->out + stride * j; +; 4286 : stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; +; 4287 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4288 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4289 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range +; 4290 : +; 4291 : // note that the final byte might overshoot and write more data than desired. +; 4292 : // we can allocate enough data that this never writes out of memory, but it +; 4293 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4294 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4295 : // so we need to explicitly clamp the final ones +; 4296 : +; 4297 : if (depth == 4) { +; 4298 : for (k = x * img_n; k >= 2; k -= 2, ++in) { +; 4299 : *cur++ = scale * ((*in >> 4)); +; 4300 : *cur++ = scale * ((*in) & 0x0f); +; 4301 : } +; 4302 : if (k > 0) *cur++ = scale * ((*in >> 4)); +; 4303 : } +; 4304 : else if (depth == 2) { +; 4305 : for (k = x * img_n; k >= 4; k -= 4, ++in) { +; 4306 : *cur++ = scale * ((*in >> 6)); +; 4307 : *cur++ = scale * ((*in >> 4) & 0x03); +; 4308 : *cur++ = scale * ((*in >> 2) & 0x03); +; 4309 : *cur++ = scale * ((*in) & 0x03); +; 4310 : } +; 4311 : if (k > 0) *cur++ = scale * ((*in >> 6)); +; 4312 : if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); +; 4313 : if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); +; 4314 : } +; 4315 : else if (depth == 1) { +; 4316 : for (k = x * img_n; k >= 8; k -= 8, ++in) { +; 4317 : *cur++ = scale * ((*in >> 7)); +; 4318 : *cur++ = scale * ((*in >> 6) & 0x01); +; 4319 : *cur++ = scale * ((*in >> 5) & 0x01); +; 4320 : *cur++ = scale * ((*in >> 4) & 0x01); +; 4321 : *cur++ = scale * ((*in >> 3) & 0x01); +; 4322 : *cur++ = scale * ((*in >> 2) & 0x01); +; 4323 : *cur++ = scale * ((*in >> 1) & 0x01); +; 4324 : *cur++ = scale * ((*in) & 0x01); +; 4325 : } +; 4326 : if (k > 0) *cur++ = scale * ((*in >> 7)); +; 4327 : if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); +; 4328 : if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); +; 4329 : if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); +; 4330 : if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); +; 4331 : if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); +; 4332 : if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); +; 4333 : } +; 4334 : if (img_n != out_n) { +; 4335 : int q; +; 4336 : // insert alpha = 255 +; 4337 : cur = a->out + stride * j; +; 4338 : if (img_n == 1) { +; 4339 : for (q = x - 1; q >= 0; --q) { +; 4340 : cur[q * 2 + 1] = 255; +; 4341 : cur[q * 2 + 0] = cur[q]; +; 4342 : } +; 4343 : } +; 4344 : else { +; 4345 : STBI_ASSERT(img_n == 3); +; 4346 : for (q = x - 1; q >= 0; --q) { +; 4347 : cur[q * 4 + 3] = 255; +; 4348 : cur[q * 4 + 2] = cur[q * 3 + 2]; +; 4349 : cur[q * 4 + 1] = cur[q * 3 + 1]; +; 4350 : cur[q * 4 + 0] = cur[q * 3 + 0]; +; 4351 : } +; 4352 : } +; 4353 : } +; 4354 : } +; 4355 : } +; 4356 : else if (depth == 16) { +; 4357 : // force the image data from big-endian to platform-native. +; 4358 : // this is done in a separate pass due to the decoding relying +; 4359 : // on the data being untouched, but could probably be done +; 4360 : // per-line during decode if care is taken. +; 4361 : stbi_uc* cur = a->out; +; 4362 : stbi__uint16* cur16 = (stbi__uint16*)cur; +; 4363 : +; 4364 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { +; 4365 : *cur16 = (cur[0] << 8) | cur[1]; +; 4366 : } +; 4367 : } +; 4368 : +; 4369 : return 1; +; 4370 : } +; 4371 : +; 4372 : static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +; 4373 : { +; 4374 : int bytes = (depth == 16 ? 2 : 1); +; 4375 : int out_bytes = out_n * bytes; +; 4376 : stbi_uc* final; +; 4377 : int p; +; 4378 : if (!interlaced) +; 4379 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); +; 4380 : +; 4381 : // de-interlacing +; 4382 : final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); +; 4383 : if (!final) return stbi__err("outofmem", "Out of memory"); +; 4384 : for (p = 0; p < 7; ++p) { +; 4385 : int xorig[] = { 0,4,0,2,0,1,0 }; +; 4386 : int yorig[] = { 0,0,4,0,2,0,1 }; +; 4387 : int xspc[] = { 8,8,4,4,2,2,1 }; +; 4388 : int yspc[] = { 8,8,8,4,4,2,2 }; +; 4389 : int i, j, x, y; +; 4390 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 4391 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; +; 4392 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; +; 4393 : if (x && y) { +; 4394 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; +; 4395 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { +; 4396 : STBI_FREE(final); +; 4397 : return 0; +; 4398 : } +; 4399 : for (j = 0; j < y; ++j) { +; 4400 : for (i = 0; i < x; ++i) { +; 4401 : int out_y = j * yspc[p] + yorig[p]; +; 4402 : int out_x = i * xspc[p] + xorig[p]; +; 4403 : memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, +; 4404 : a->out + (j * x + i) * out_bytes, out_bytes); +; 4405 : } +; 4406 : } +; 4407 : STBI_FREE(a->out); +; 4408 : image_data += img_len; +; 4409 : image_data_len -= img_len; +; 4410 : } +; 4411 : } +; 4412 : a->out = final; +; 4413 : +; 4414 : return 1; +; 4415 : } +; 4416 : +; 4417 : static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +; 4418 : { +; 4419 : stbi__context* s = z->s; +; 4420 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4421 : stbi_uc* p = z->out; +; 4422 : +; 4423 : // compute color-based transparency, assuming we've +; 4424 : // already got 255 as the alpha value in the output +; 4425 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4426 : +; 4427 : if (out_n == 2) { +; 4428 : for (i = 0; i < pixel_count; ++i) { +; 4429 : p[1] = (p[0] == tc[0] ? 0 : 255); +; 4430 : p += 2; +; 4431 : } +; 4432 : } +; 4433 : else { +; 4434 : for (i = 0; i < pixel_count; ++i) { +; 4435 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4436 : p[3] = 0; +; 4437 : p += 4; +; 4438 : } +; 4439 : } +; 4440 : return 1; +; 4441 : } +; 4442 : +; 4443 : static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +; 4444 : { +; 4445 : stbi__context* s = z->s; +; 4446 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4447 : stbi__uint16* p = (stbi__uint16*)z->out; +; 4448 : +; 4449 : // compute color-based transparency, assuming we've +; 4450 : // already got 65535 as the alpha value in the output +; 4451 : STBI_ASSERT(out_n == 2 || out_n == 4); +; 4452 : +; 4453 : if (out_n == 2) { +; 4454 : for (i = 0; i < pixel_count; ++i) { +; 4455 : p[1] = (p[0] == tc[0] ? 0 : 65535); +; 4456 : p += 2; +; 4457 : } +; 4458 : } +; 4459 : else { +; 4460 : for (i = 0; i < pixel_count; ++i) { +; 4461 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) +; 4462 : p[3] = 0; +; 4463 : p += 4; +; 4464 : } +; 4465 : } +; 4466 : return 1; +; 4467 : } +; 4468 : +; 4469 : static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +; 4470 : { +; 4471 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; +; 4472 : stbi_uc* p, * temp_out, * orig = a->out; +; 4473 : +; 4474 : p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); +; 4475 : if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4476 : +; 4477 : // between here and free(out) below, exitting would leak +; 4478 : temp_out = p; +; 4479 : +; 4480 : if (pal_img_n == 3) { +; 4481 : for (i = 0; i < pixel_count; ++i) { +; 4482 : int n = orig[i] * 4; +; 4483 : p[0] = palette[n]; +; 4484 : p[1] = palette[n + 1]; +; 4485 : p[2] = palette[n + 2]; +; 4486 : p += 3; +; 4487 : } +; 4488 : } +; 4489 : else { +; 4490 : for (i = 0; i < pixel_count; ++i) { +; 4491 : int n = orig[i] * 4; +; 4492 : p[0] = palette[n]; +; 4493 : p[1] = palette[n + 1]; +; 4494 : p[2] = palette[n + 2]; +; 4495 : p[3] = palette[n + 3]; +; 4496 : p += 4; +; 4497 : } +; 4498 : } +; 4499 : STBI_FREE(a->out); +; 4500 : a->out = temp_out; +; 4501 : +; 4502 : STBI_NOTUSED(len); +; 4503 : +; 4504 : return 1; +; 4505 : } +; 4506 : +; 4507 : static int stbi__unpremultiply_on_load_global = 0; +; 4508 : static int stbi__de_iphone_flag_global = 0; +; 4509 : +; 4510 : STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +; 4511 : { +; 4512 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +; 4513 : } +; 4514 : +; 4515 : STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +; 4516 : { +; 4517 : stbi__de_iphone_flag_global = flag_true_if_should_convert; +; 4518 : } +; 4519 : +; 4520 : #ifndef STBI_THREAD_LOCAL +; 4521 : #define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +; 4522 : #define stbi__de_iphone_flag stbi__de_iphone_flag_global +; 4523 : #else +; 4524 : static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +; 4525 : static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +; 4526 : +; 4527 : STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +; 4528 : { +; 4529 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; +; 4530 : stbi__unpremultiply_on_load_set = 1; +; 4531 : } +; 4532 : +; 4533 : STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +; 4534 : { +; 4535 : stbi__de_iphone_flag_local = flag_true_if_should_convert; +; 4536 : stbi__de_iphone_flag_set = 1; +; 4537 : } +; 4538 : +; 4539 : #define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ +; 4540 : ? stbi__unpremultiply_on_load_local \ +; 4541 : : stbi__unpremultiply_on_load_global) +; 4542 : #define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ +; 4543 : ? stbi__de_iphone_flag_local \ +; 4544 : : stbi__de_iphone_flag_global) +; 4545 : #endif // STBI_THREAD_LOCAL +; 4546 : +; 4547 : static void stbi__de_iphone(stbi__png* z) +; 4548 : { +; 4549 : stbi__context* s = z->s; +; 4550 : stbi__uint32 i, pixel_count = s->img_x * s->img_y; +; 4551 : stbi_uc* p = z->out; +; 4552 : +; 4553 : if (s->img_out_n == 3) { // convert bgr to rgb +; 4554 : for (i = 0; i < pixel_count; ++i) { +; 4555 : stbi_uc t = p[0]; +; 4556 : p[0] = p[2]; +; 4557 : p[2] = t; +; 4558 : p += 3; +; 4559 : } +; 4560 : } +; 4561 : else { +; 4562 : STBI_ASSERT(s->img_out_n == 4); +; 4563 : if (stbi__unpremultiply_on_load) { +; 4564 : // convert bgr to rgb and unpremultiply +; 4565 : for (i = 0; i < pixel_count; ++i) { +; 4566 : stbi_uc a = p[3]; +; 4567 : stbi_uc t = p[0]; +; 4568 : if (a) { +; 4569 : stbi_uc half = a / 2; +; 4570 : p[0] = (p[2] * 255 + half) / a; +; 4571 : p[1] = (p[1] * 255 + half) / a; +; 4572 : p[2] = (t * 255 + half) / a; +; 4573 : } +; 4574 : else { +; 4575 : p[0] = p[2]; +; 4576 : p[2] = t; +; 4577 : } +; 4578 : p += 4; +; 4579 : } +; 4580 : } +; 4581 : else { +; 4582 : // convert bgr to rgb +; 4583 : for (i = 0; i < pixel_count; ++i) { +; 4584 : stbi_uc t = p[0]; +; 4585 : p[0] = p[2]; +; 4586 : p[2] = t; +; 4587 : p += 4; +; 4588 : } +; 4589 : } +; 4590 : } +; 4591 : } +; 4592 : +; 4593 : #define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +; 4594 : +; 4595 : static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +; 4596 : { +; 4597 : stbi_uc palette[1024], pal_img_n = 0; +; 4598 : stbi_uc has_trans = 0, tc[3] = { 0 }; +; 4599 : stbi__uint16 tc16[3]; +; 4600 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; +; 4601 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0; +; 4602 : stbi__context* s = z->s; +; 4603 : +; 4604 : z->expanded = NULL; +; 4605 : z->idata = NULL; +; 4606 : z->out = NULL; +; 4607 : +; 4608 : if (!stbi__check_png_header(s)) return 0; +; 4609 : +; 4610 : if (scan == STBI__SCAN_type) return 1; +; 4611 : +; 4612 : for (;;) { +; 4613 : stbi__pngchunk c = stbi__get_chunk_header(s); +; 4614 : switch (c.type) { +; 4615 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 4616 : is_iphone = 1; +; 4617 : stbi__skip(s, c.length); +; 4618 : break; +; 4619 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 4620 : int comp, filter; +; 4621 : if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); +; 4622 : first = 0; +; 4623 : if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); +; 4624 : s->img_x = stbi__get32be(s); +; 4625 : s->img_y = stbi__get32be(s); +; 4626 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4627 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 4628 : z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); +; 4629 : color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); +; 4630 : if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); +; 4631 : if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); +; 4632 : comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); +; 4633 : filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); +; 4634 : interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); +; 4635 : if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); +; 4636 : if (!pal_img_n) { +; 4637 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); +; 4638 : if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); +; 4639 : } +; 4640 : else { +; 4641 : // if paletted, then pal_n is our final components, and +; 4642 : // img_n is # components to decompress/filter. +; 4643 : s->img_n = 1; +; 4644 : if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); +; 4645 : } +; 4646 : // even with SCAN_header, have to scan to see if we have a tRNS +; 4647 : break; +; 4648 : } +; 4649 : +; 4650 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 4651 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4652 : if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4653 : pal_len = c.length / 3; +; 4654 : if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); +; 4655 : for (i = 0; i < pal_len; ++i) { +; 4656 : palette[i * 4 + 0] = stbi__get8(s); +; 4657 : palette[i * 4 + 1] = stbi__get8(s); +; 4658 : palette[i * 4 + 2] = stbi__get8(s); +; 4659 : palette[i * 4 + 3] = 255; +; 4660 : } +; 4661 : break; +; 4662 : } +; 4663 : +; 4664 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 4665 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4666 : if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); +; 4667 : if (pal_img_n) { +; 4668 : if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } +; 4669 : if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); +; 4670 : if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4671 : pal_img_n = 4; +; 4672 : for (i = 0; i < c.length; ++i) +; 4673 : palette[i * 4 + 3] = stbi__get8(s); +; 4674 : } +; 4675 : else { +; 4676 : if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); +; 4677 : if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); +; 4678 : has_trans = 1; +; 4679 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 4680 : if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } +; 4681 : if (z->depth == 16) { +; 4682 : for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is +; 4683 : } +; 4684 : else { +; 4685 : for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger +; 4686 : } +; 4687 : } +; 4688 : break; +; 4689 : } +; 4690 : +; 4691 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 4692 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4693 : if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); +; 4694 : if (scan == STBI__SCAN_header) { +; 4695 : // header scan definitely stops at first IDAT +; 4696 : if (pal_img_n) +; 4697 : s->img_n = pal_img_n; +; 4698 : return 1; +; 4699 : } +; 4700 : if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); +; 4701 : if ((int)(ioff + c.length) < (int)ioff) return 0; +; 4702 : if (ioff + c.length > idata_limit) { +; 4703 : stbi__uint32 idata_limit_old = idata_limit; +; 4704 : stbi_uc* p; +; 4705 : if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; +; 4706 : while (ioff + c.length > idata_limit) +; 4707 : idata_limit *= 2; +; 4708 : STBI_NOTUSED(idata_limit_old); +; 4709 : p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); +; 4710 : z->idata = p; +; 4711 : } +; 4712 : if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); +; 4713 : ioff += c.length; +; 4714 : break; +; 4715 : } +; 4716 : +; 4717 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 4718 : stbi__uint32 raw_len, bpl; +; 4719 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4720 : if (scan != STBI__SCAN_load) return 1; +; 4721 : if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); +; 4722 : // initial guess for decoded data size to avoid unnecessary reallocs +; 4723 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component +; 4724 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; +; 4725 : z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); +; 4726 : if (z->expanded == NULL) return 0; // zlib should set error +; 4727 : STBI_FREE(z->idata); z->idata = NULL; +; 4728 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) +; 4729 : s->img_out_n = s->img_n + 1; +; 4730 : else +; 4731 : s->img_out_n = s->img_n; +; 4732 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; +; 4733 : if (has_trans) { +; 4734 : if (z->depth == 16) { +; 4735 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; +; 4736 : } +; 4737 : else { +; 4738 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; +; 4739 : } +; 4740 : } +; 4741 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) +; 4742 : stbi__de_iphone(z); +; 4743 : if (pal_img_n) { +; 4744 : // pal_img_n == 3 or 4 +; 4745 : s->img_n = pal_img_n; // record the actual colors we had +; 4746 : s->img_out_n = pal_img_n; +; 4747 : if (req_comp >= 3) s->img_out_n = req_comp; +; 4748 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) +; 4749 : return 0; +; 4750 : } +; 4751 : else if (has_trans) { +; 4752 : // non-paletted image with tRNS -> source image has (constant) alpha +; 4753 : ++s->img_n; +; 4754 : } +; 4755 : STBI_FREE(z->expanded); z->expanded = NULL; +; 4756 : // end of PNG chunk, read and skip CRC +; 4757 : stbi__get32be(s); +; 4758 : return 1; +; 4759 : } +; 4760 : +; 4761 : default: +; 4762 : // if critical, fail +; 4763 : if (first) return stbi__err("first not IHDR", "Corrupt PNG"); +; 4764 : if ((c.type & (1 << 29)) == 0) { +; 4765 : #ifndef STBI_NO_FAILURE_STRINGS +; 4766 : // not threadsafe +; 4767 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 4768 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); +; 4769 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); +; 4770 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); +; 4771 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +; 4772 : #endif +; 4773 : return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); +; 4774 : } +; 4775 : stbi__skip(s, c.length); +; 4776 : break; +; 4777 : } +; 4778 : // end of PNG chunk, read and skip CRC +; 4779 : stbi__get32be(s); +; 4780 : } +; 4781 : } +; 4782 : +; 4783 : static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +; 4784 : { +; 4785 : void* result = NULL; +; 4786 : if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); +; 4787 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { +; 4788 : if (p->depth <= 8) +; 4789 : ri->bits_per_channel = 8; +; 4790 : else if (p->depth == 16) +; 4791 : ri->bits_per_channel = 16; +; 4792 : else +; 4793 : return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); +; 4794 : result = p->out; +; 4795 : p->out = NULL; +; 4796 : if (req_comp && req_comp != p->s->img_out_n) { +; 4797 : if (ri->bits_per_channel == 8) +; 4798 : result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4799 : else +; 4800 : result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); +; 4801 : p->s->img_out_n = req_comp; +; 4802 : if (result == NULL) return result; +; 4803 : } +; 4804 : *x = p->s->img_x; +; 4805 : *y = p->s->img_y; +; 4806 : if (n) *n = p->s->img_n; +; 4807 : } +; 4808 : STBI_FREE(p->out); p->out = NULL; +; 4809 : STBI_FREE(p->expanded); p->expanded = NULL; +; 4810 : STBI_FREE(p->idata); p->idata = NULL; +; 4811 : +; 4812 : return result; +; 4813 : } +; 4814 : +; 4815 : static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 4816 : { +; 4817 : stbi__png p; +; 4818 : p.s = s; +; 4819 : return stbi__do_png(&p, x, y, comp, req_comp, ri); +; 4820 : } +; 4821 : +; 4822 : static int stbi__png_test(stbi__context* s) +; 4823 : { +; 4824 : int r; +; 4825 : r = stbi__check_png_header(s); +; 4826 : stbi__rewind(s); +; 4827 : return r; +; 4828 : } +; 4829 : +; 4830 : static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) +; 4831 : { +; 4832 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { +; 4833 : stbi__rewind(p->s); +; 4834 : return 0; +; 4835 : } +; 4836 : if (x) *x = p->s->img_x; +; 4837 : if (y) *y = p->s->img_y; +; 4838 : if (comp) *comp = p->s->img_n; +; 4839 : return 1; +; 4840 : } +; 4841 : +; 4842 : static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) +; 4843 : { +; 4844 : stbi__png p; +; 4845 : p.s = s; +; 4846 : return stbi__png_info_raw(&p, x, y, comp); +; 4847 : } +; 4848 : +; 4849 : static int stbi__png_is16(stbi__context* s) +; 4850 : { +; 4851 : stbi__png p; +; 4852 : p.s = s; +; 4853 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) +; 4854 : return 0; +; 4855 : if (p.depth != 16) { +; 4856 : stbi__rewind(p.s); +; 4857 : return 0; +; 4858 : } +; 4859 : return 1; +; 4860 : } +; 4861 : #endif +; 4862 : +; 4863 : // Microsoft/Windows BMP image +; 4864 : +; 4865 : #ifndef STBI_NO_BMP +; 4866 : static int stbi__bmp_test_raw(stbi__context* s) +; 4867 : { +; 4868 : int r; +; 4869 : int sz; +; 4870 : if (stbi__get8(s) != 'B') return 0; +; 4871 : if (stbi__get8(s) != 'M') return 0; +; 4872 : stbi__get32le(s); // discard filesize +; 4873 : stbi__get16le(s); // discard reserved +; 4874 : stbi__get16le(s); // discard reserved +; 4875 : stbi__get32le(s); // discard data offset +; 4876 : sz = stbi__get32le(s); +; 4877 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); +; 4878 : return r; +; 4879 : } +; 4880 : +; 4881 : static int stbi__bmp_test(stbi__context* s) +; 4882 : { +; 4883 : int r = stbi__bmp_test_raw(s); +; 4884 : stbi__rewind(s); +; 4885 : return r; +; 4886 : } +; 4887 : +; 4888 : // returns 0..31 for the highest set bit +; 4889 : static int stbi__high_bit(unsigned int z) +; 4890 : { +; 4891 : int n = 0; +; 4892 : if (z == 0) return -1; +; 4893 : if (z >= 0x10000) { n += 16; z >>= 16; } +; 4894 : if (z >= 0x00100) { n += 8; z >>= 8; } +; 4895 : if (z >= 0x00010) { n += 4; z >>= 4; } +; 4896 : if (z >= 0x00004) { n += 2; z >>= 2; } +; 4897 : if (z >= 0x00002) { n += 1;/* >>= 1;*/ } +; 4898 : return n; +; 4899 : } +; 4900 : +; 4901 : static int stbi__bitcount(unsigned int a) +; 4902 : { +; 4903 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 +; 4904 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 +; 4905 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits +; 4906 : a = (a + (a >> 8)); // max 16 per 8 bits +; 4907 : a = (a + (a >> 16)); // max 32 per 8 bits +; 4908 : return a & 0xff; +; 4909 : } +; 4910 : +; 4911 : // extract an arbitrarily-aligned N-bit value (N=bits) +; 4912 : // from v, and then make it 8-bits long and fractionally +; 4913 : // extend it to full full range. +; 4914 : static int stbi__shiftsigned(unsigned int v, int shift, int bits) +; 4915 : { +; 4916 : static unsigned int mul_table[9] = { +; 4917 : 0, +; 4918 : 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, +; 4919 : 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, +; 4920 : }; +; 4921 : static unsigned int shift_table[9] = { +; 4922 : 0, 0,0,1,0,2,4,6,0, +; 4923 : }; +; 4924 : if (shift < 0) +; 4925 : v <<= -shift; +; 4926 : else +; 4927 : v >>= shift; +; 4928 : STBI_ASSERT(v < 256); +; 4929 : v >>= (8 - bits); +; 4930 : STBI_ASSERT(bits >= 0 && bits <= 8); +; 4931 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +; 4932 : } +; 4933 : +; 4934 : typedef struct +; 4935 : { +; 4936 : int bpp, offset, hsz; +; 4937 : unsigned int mr, mg, mb, ma, all_a; +; 4938 : int extra_read; +; 4939 : } stbi__bmp_data; +; 4940 : +; 4941 : static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +; 4942 : { +; 4943 : // BI_BITFIELDS specifies masks explicitly, don't override +; 4944 : if (compress == 3) +; 4945 : return 1; +; 4946 : +; 4947 : if (compress == 0) { +; 4948 : if (info->bpp == 16) { +; 4949 : info->mr = 31u << 10; +; 4950 : info->mg = 31u << 5; +; 4951 : info->mb = 31u << 0; +; 4952 : } +; 4953 : else if (info->bpp == 32) { +; 4954 : info->mr = 0xffu << 16; +; 4955 : info->mg = 0xffu << 8; +; 4956 : info->mb = 0xffu << 0; +; 4957 : info->ma = 0xffu << 24; +; 4958 : info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 4959 : } +; 4960 : else { +; 4961 : // otherwise, use defaults, which is all-0 +; 4962 : info->mr = info->mg = info->mb = info->ma = 0; +; 4963 : } +; 4964 : return 1; +; 4965 : } +; 4966 : return 0; // error +; 4967 : } +; 4968 : +; 4969 : static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +; 4970 : { +; 4971 : int hsz; +; 4972 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); +; 4973 : stbi__get32le(s); // discard filesize +; 4974 : stbi__get16le(s); // discard reserved +; 4975 : stbi__get16le(s); // discard reserved +; 4976 : info->offset = stbi__get32le(s); +; 4977 : info->hsz = hsz = stbi__get32le(s); +; 4978 : info->mr = info->mg = info->mb = info->ma = 0; +; 4979 : info->extra_read = 14; +; 4980 : +; 4981 : if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); +; 4982 : +; 4983 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); +; 4984 : if (hsz == 12) { +; 4985 : s->img_x = stbi__get16le(s); +; 4986 : s->img_y = stbi__get16le(s); +; 4987 : } +; 4988 : else { +; 4989 : s->img_x = stbi__get32le(s); +; 4990 : s->img_y = stbi__get32le(s); +; 4991 : } +; 4992 : if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); +; 4993 : info->bpp = stbi__get16le(s); +; 4994 : if (hsz != 12) { +; 4995 : int compress = stbi__get32le(s); +; 4996 : if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); +; 4997 : if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 4998 : if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 4999 : stbi__get32le(s); // discard sizeof +; 5000 : stbi__get32le(s); // discard hres +; 5001 : stbi__get32le(s); // discard vres +; 5002 : stbi__get32le(s); // discard colorsused +; 5003 : stbi__get32le(s); // discard max important +; 5004 : if (hsz == 40 || hsz == 56) { +; 5005 : if (hsz == 56) { +; 5006 : stbi__get32le(s); +; 5007 : stbi__get32le(s); +; 5008 : stbi__get32le(s); +; 5009 : stbi__get32le(s); +; 5010 : } +; 5011 : if (info->bpp == 16 || info->bpp == 32) { +; 5012 : if (compress == 0) { +; 5013 : stbi__bmp_set_mask_defaults(info, compress); +; 5014 : } +; 5015 : else if (compress == 3) { +; 5016 : info->mr = stbi__get32le(s); +; 5017 : info->mg = stbi__get32le(s); +; 5018 : info->mb = stbi__get32le(s); +; 5019 : info->extra_read += 12; +; 5020 : // not documented, but generated by photoshop and handled by mspaint +; 5021 : if (info->mr == info->mg && info->mg == info->mb) { +; 5022 : // ?!?!? +; 5023 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5024 : } +; 5025 : } +; 5026 : else +; 5027 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5028 : } +; 5029 : } +; 5030 : else { +; 5031 : // V4/V5 header +; 5032 : int i; +; 5033 : if (hsz != 108 && hsz != 124) +; 5034 : return stbi__errpuc("bad BMP", "bad BMP"); +; 5035 : info->mr = stbi__get32le(s); +; 5036 : info->mg = stbi__get32le(s); +; 5037 : info->mb = stbi__get32le(s); +; 5038 : info->ma = stbi__get32le(s); +; 5039 : if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5040 : stbi__bmp_set_mask_defaults(info, compress); +; 5041 : stbi__get32le(s); // discard color space +; 5042 : for (i = 0; i < 12; ++i) +; 5043 : stbi__get32le(s); // discard color space parameters +; 5044 : if (hsz == 124) { +; 5045 : stbi__get32le(s); // discard rendering intent +; 5046 : stbi__get32le(s); // discard offset of profile data +; 5047 : stbi__get32le(s); // discard size of profile data +; 5048 : stbi__get32le(s); // discard reserved +; 5049 : } +; 5050 : } +; 5051 : } +; 5052 : return (void*)1; +; 5053 : } +; 5054 : +; 5055 : static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5056 : { +; 5057 : stbi_uc* out; +; 5058 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; +; 5059 : stbi_uc pal[256][4]; +; 5060 : int psize = 0, i, j, width; +; 5061 : int flip_vertically, pad, target; +; 5062 : stbi__bmp_data info; +; 5063 : STBI_NOTUSED(ri); +; 5064 : +; 5065 : info.all_a = 255; +; 5066 : if (stbi__bmp_parse_header(s, &info) == NULL) +; 5067 : return NULL; // error code already set +; 5068 : +; 5069 : flip_vertically = ((int)s->img_y) > 0; +; 5070 : s->img_y = abs((int)s->img_y); +; 5071 : +; 5072 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5073 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5074 : +; 5075 : mr = info.mr; +; 5076 : mg = info.mg; +; 5077 : mb = info.mb; +; 5078 : ma = info.ma; +; 5079 : all_a = info.all_a; +; 5080 : +; 5081 : if (info.hsz == 12) { +; 5082 : if (info.bpp < 24) +; 5083 : psize = (info.offset - info.extra_read - 24) / 3; +; 5084 : } +; 5085 : else { +; 5086 : if (info.bpp < 16) +; 5087 : psize = (info.offset - info.extra_read - info.hsz) >> 2; +; 5088 : } +; 5089 : if (psize == 0) { +; 5090 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5091 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5092 : int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5093 : int header_limit = 1024; // max we actually read is below 256 bytes currently. +; 5094 : int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5095 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { +; 5096 : return stbi__errpuc("bad header", "Corrupt BMP"); +; 5097 : } +; 5098 : // we established that bytes_read_so_far is positive and sensible. +; 5099 : // the first half of this test rejects offsets that are either too small positives, or +; 5100 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5101 : // ensures the number computed in the second half of the test can't overflow. +; 5102 : if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { +; 5103 : return stbi__errpuc("bad offset", "Corrupt BMP"); +; 5104 : } +; 5105 : else { +; 5106 : stbi__skip(s, info.offset - bytes_read_so_far); +; 5107 : } +; 5108 : } +; 5109 : +; 5110 : if (info.bpp == 24 && ma == 0xff000000) +; 5111 : s->img_n = 3; +; 5112 : else +; 5113 : s->img_n = ma ? 4 : 3; +; 5114 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 +; 5115 : target = req_comp; +; 5116 : else +; 5117 : target = s->img_n; // if they want monochrome, we'll post-convert +; 5118 : +; 5119 : // sanity-check size +; 5120 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) +; 5121 : return stbi__errpuc("too large", "Corrupt BMP"); +; 5122 : +; 5123 : out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); +; 5124 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5125 : if (info.bpp < 16) { +; 5126 : int z = 0; +; 5127 : if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } +; 5128 : for (i = 0; i < psize; ++i) { +; 5129 : pal[i][2] = stbi__get8(s); +; 5130 : pal[i][1] = stbi__get8(s); +; 5131 : pal[i][0] = stbi__get8(s); +; 5132 : if (info.hsz != 12) stbi__get8(s); +; 5133 : pal[i][3] = 255; +; 5134 : } +; 5135 : stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); +; 5136 : if (info.bpp == 1) width = (s->img_x + 7) >> 3; +; 5137 : else if (info.bpp == 4) width = (s->img_x + 1) >> 1; +; 5138 : else if (info.bpp == 8) width = s->img_x; +; 5139 : else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } +; 5140 : pad = (-width) & 3; +; 5141 : if (info.bpp == 1) { +; 5142 : for (j = 0; j < (int)s->img_y; ++j) { +; 5143 : int bit_offset = 7, v = stbi__get8(s); +; 5144 : for (i = 0; i < (int)s->img_x; ++i) { +; 5145 : int color = (v >> bit_offset) & 0x1; +; 5146 : out[z++] = pal[color][0]; +; 5147 : out[z++] = pal[color][1]; +; 5148 : out[z++] = pal[color][2]; +; 5149 : if (target == 4) out[z++] = 255; +; 5150 : if (i + 1 == (int)s->img_x) break; +; 5151 : if ((--bit_offset) < 0) { +; 5152 : bit_offset = 7; +; 5153 : v = stbi__get8(s); +; 5154 : } +; 5155 : } +; 5156 : stbi__skip(s, pad); +; 5157 : } +; 5158 : } +; 5159 : else { +; 5160 : for (j = 0; j < (int)s->img_y; ++j) { +; 5161 : for (i = 0; i < (int)s->img_x; i += 2) { +; 5162 : int v = stbi__get8(s), v2 = 0; +; 5163 : if (info.bpp == 4) { +; 5164 : v2 = v & 15; +; 5165 : v >>= 4; +; 5166 : } +; 5167 : out[z++] = pal[v][0]; +; 5168 : out[z++] = pal[v][1]; +; 5169 : out[z++] = pal[v][2]; +; 5170 : if (target == 4) out[z++] = 255; +; 5171 : if (i + 1 == (int)s->img_x) break; +; 5172 : v = (info.bpp == 8) ? stbi__get8(s) : v2; +; 5173 : out[z++] = pal[v][0]; +; 5174 : out[z++] = pal[v][1]; +; 5175 : out[z++] = pal[v][2]; +; 5176 : if (target == 4) out[z++] = 255; +; 5177 : } +; 5178 : stbi__skip(s, pad); +; 5179 : } +; 5180 : } +; 5181 : } +; 5182 : else { +; 5183 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; +; 5184 : int z = 0; +; 5185 : int easy = 0; +; 5186 : stbi__skip(s, info.offset - info.extra_read - info.hsz); +; 5187 : if (info.bpp == 24) width = 3 * s->img_x; +; 5188 : else if (info.bpp == 16) width = 2 * s->img_x; +; 5189 : else /* bpp = 32 and pad = 0 */ width = 0; +; 5190 : pad = (-width) & 3; +; 5191 : if (info.bpp == 24) { +; 5192 : easy = 1; +; 5193 : } +; 5194 : else if (info.bpp == 32) { +; 5195 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) +; 5196 : easy = 2; +; 5197 : } +; 5198 : if (!easy) { +; 5199 : if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5200 : // right shift amt to put high bit in position #7 +; 5201 : rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); +; 5202 : gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); +; 5203 : bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); +; 5204 : ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); +; 5205 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } +; 5206 : } +; 5207 : for (j = 0; j < (int)s->img_y; ++j) { +; 5208 : if (easy) { +; 5209 : for (i = 0; i < (int)s->img_x; ++i) { +; 5210 : unsigned char a; +; 5211 : out[z + 2] = stbi__get8(s); +; 5212 : out[z + 1] = stbi__get8(s); +; 5213 : out[z + 0] = stbi__get8(s); +; 5214 : z += 3; +; 5215 : a = (easy == 2 ? stbi__get8(s) : 255); +; 5216 : all_a |= a; +; 5217 : if (target == 4) out[z++] = a; +; 5218 : } +; 5219 : } +; 5220 : else { +; 5221 : int bpp = info.bpp; +; 5222 : for (i = 0; i < (int)s->img_x; ++i) { +; 5223 : stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); +; 5224 : unsigned int a; +; 5225 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); +; 5226 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); +; 5227 : out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); +; 5228 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); +; 5229 : all_a |= a; +; 5230 : if (target == 4) out[z++] = STBI__BYTECAST(a); +; 5231 : } +; 5232 : } +; 5233 : stbi__skip(s, pad); +; 5234 : } +; 5235 : } +; 5236 : +; 5237 : // if alpha channel is all 0s, replace with all 255s +; 5238 : if (target == 4 && all_a == 0) +; 5239 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) +; 5240 : out[i] = 255; +; 5241 : +; 5242 : if (flip_vertically) { +; 5243 : stbi_uc t; +; 5244 : for (j = 0; j < (int)s->img_y >> 1; ++j) { +; 5245 : stbi_uc* p1 = out + j * s->img_x * target; +; 5246 : stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; +; 5247 : for (i = 0; i < (int)s->img_x * target; ++i) { +; 5248 : t = p1[i]; p1[i] = p2[i]; p2[i] = t; +; 5249 : } +; 5250 : } +; 5251 : } +; 5252 : +; 5253 : if (req_comp && req_comp != target) { +; 5254 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); +; 5255 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5256 : } +; 5257 : +; 5258 : *x = s->img_x; +; 5259 : *y = s->img_y; +; 5260 : if (comp) *comp = s->img_n; +; 5261 : return out; +; 5262 : } +; 5263 : #endif +; 5264 : +; 5265 : // Targa Truevision - TGA +; 5266 : // by Jonathan Dummer +; 5267 : #ifndef STBI_NO_TGA +; 5268 : // returns STBI_rgb or whatever, 0 on error +; 5269 : static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +; 5270 : { +; 5271 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 5272 : if (is_rgb16) *is_rgb16 = 0; +; 5273 : switch (bits_per_pixel) { +; 5274 : case 8: return STBI_grey; +; 5275 : case 16: if (is_grey) return STBI_grey_alpha; +; 5276 : // fallthrough +; 5277 : case 15: if (is_rgb16) *is_rgb16 = 1; +; 5278 : return STBI_rgb; +; 5279 : case 24: // fallthrough +; 5280 : case 32: return bits_per_pixel / 8; +; 5281 : default: return 0; +; 5282 : } +; 5283 : } +; 5284 : +; 5285 : static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +; 5286 : { +; 5287 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 5288 : int sz, tga_colormap_type; +; 5289 : stbi__get8(s); // discard Offset +; 5290 : tga_colormap_type = stbi__get8(s); // colormap type +; 5291 : if (tga_colormap_type > 1) { +; 5292 : stbi__rewind(s); +; 5293 : return 0; // only RGB or indexed allowed +; 5294 : } +; 5295 : tga_image_type = stbi__get8(s); // image type +; 5296 : if (tga_colormap_type == 1) { // colormapped (paletted) image +; 5297 : if (tga_image_type != 1 && tga_image_type != 9) { +; 5298 : stbi__rewind(s); +; 5299 : return 0; +; 5300 : } +; 5301 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5302 : sz = stbi__get8(s); // check bits per palette color entry +; 5303 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { +; 5304 : stbi__rewind(s); +; 5305 : return 0; +; 5306 : } +; 5307 : stbi__skip(s, 4); // skip image x and y origin +; 5308 : tga_colormap_bpp = sz; +; 5309 : } +; 5310 : else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE +; 5311 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { +; 5312 : stbi__rewind(s); +; 5313 : return 0; // only RGB or grey allowed, +/- RLE +; 5314 : } +; 5315 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5316 : tga_colormap_bpp = 0; +; 5317 : } +; 5318 : tga_w = stbi__get16le(s); +; 5319 : if (tga_w < 1) { +; 5320 : stbi__rewind(s); +; 5321 : return 0; // test width +; 5322 : } +; 5323 : tga_h = stbi__get16le(s); +; 5324 : if (tga_h < 1) { +; 5325 : stbi__rewind(s); +; 5326 : return 0; // test height +; 5327 : } +; 5328 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel +; 5329 : stbi__get8(s); // ignore alpha bits +; 5330 : if (tga_colormap_bpp != 0) { +; 5331 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { +; 5332 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 5333 : // I don't think anything but 8 or 16bit indexes makes sense +; 5334 : stbi__rewind(s); +; 5335 : return 0; +; 5336 : } +; 5337 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); +; 5338 : } +; 5339 : else { +; 5340 : tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 5341 : } +; 5342 : if (!tga_comp) { +; 5343 : stbi__rewind(s); +; 5344 : return 0; +; 5345 : } +; 5346 : if (x) *x = tga_w; +; 5347 : if (y) *y = tga_h; +; 5348 : if (comp) *comp = tga_comp; +; 5349 : return 1; // seems to have passed everything +; 5350 : } +; 5351 : +; 5352 : static int stbi__tga_test(stbi__context* s) +; 5353 : { +; 5354 : int res = 0; +; 5355 : int sz, tga_color_type; +; 5356 : stbi__get8(s); // discard Offset +; 5357 : tga_color_type = stbi__get8(s); // color type +; 5358 : if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed +; 5359 : sz = stbi__get8(s); // image type +; 5360 : if (tga_color_type == 1) { // colormapped (paletted) image +; 5361 : if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 +; 5362 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries +; 5363 : sz = stbi__get8(s); // check bits per palette color entry +; 5364 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5365 : stbi__skip(s, 4); // skip image x and y origin +; 5366 : } +; 5367 : else { // "normal" image w/o colormap +; 5368 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE +; 5369 : stbi__skip(s, 9); // skip colormap specification and image x/y origin +; 5370 : } +; 5371 : if (stbi__get16le(s) < 1) goto errorEnd; // test width +; 5372 : if (stbi__get16le(s) < 1) goto errorEnd; // test height +; 5373 : sz = stbi__get8(s); // bits per pixel +; 5374 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index +; 5375 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; +; 5376 : +; 5377 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0 +; 5378 : +; 5379 : errorEnd: +; 5380 : stbi__rewind(s); +; 5381 : return res; +; 5382 : } +; 5383 : +; 5384 : // read 16bit value and convert to 24bit RGB +; 5385 : static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +; 5386 : { +; 5387 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s); +; 5388 : stbi__uint16 fiveBitMask = 31; +; 5389 : // we have 3 channels with 5bits each +; 5390 : int r = (px >> 10) & fiveBitMask; +; 5391 : int g = (px >> 5) & fiveBitMask; +; 5392 : int b = px & fiveBitMask; +; 5393 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 5394 : out[0] = (stbi_uc)((r * 255) / 31); +; 5395 : out[1] = (stbi_uc)((g * 255) / 31); +; 5396 : out[2] = (stbi_uc)((b * 255) / 31); +; 5397 : +; 5398 : // some people claim that the most significant bit might be used for alpha +; 5399 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 5400 : // but that only made 16bit test images completely translucent.. +; 5401 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 5402 : } +; 5403 : +; 5404 : static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 5405 : { +; 5406 : // read in the TGA header stuff +; 5407 : int tga_offset = stbi__get8(s); +; 5408 : int tga_indexed = stbi__get8(s); +; 5409 : int tga_image_type = stbi__get8(s); +; 5410 : int tga_is_RLE = 0; +; 5411 : int tga_palette_start = stbi__get16le(s); +; 5412 : int tga_palette_len = stbi__get16le(s); +; 5413 : int tga_palette_bits = stbi__get8(s); +; 5414 : int tga_x_origin = stbi__get16le(s); +; 5415 : int tga_y_origin = stbi__get16le(s); +; 5416 : int tga_width = stbi__get16le(s); +; 5417 : int tga_height = stbi__get16le(s); +; 5418 : int tga_bits_per_pixel = stbi__get8(s); +; 5419 : int tga_comp, tga_rgb16 = 0; +; 5420 : int tga_inverted = stbi__get8(s); +; 5421 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 5422 : // image data +; 5423 : unsigned char* tga_data; +; 5424 : unsigned char* tga_palette = NULL; +; 5425 : int i, j; +; 5426 : unsigned char raw_data[4] = { 0 }; +; 5427 : int RLE_count = 0; +; 5428 : int RLE_repeating = 0; +; 5429 : int read_next_pixel = 1; +; 5430 : STBI_NOTUSED(ri); +; 5431 : STBI_NOTUSED(tga_x_origin); // @TODO +; 5432 : STBI_NOTUSED(tga_y_origin); // @TODO +; 5433 : +; 5434 : if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5435 : if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5436 : +; 5437 : // do a tiny bit of precessing +; 5438 : if (tga_image_type >= 8) +; 5439 : { +; 5440 : tga_image_type -= 8; +; 5441 : tga_is_RLE = 1; +; 5442 : } +; 5443 : tga_inverted = 1 - ((tga_inverted >> 5) & 1); +; 5444 : +; 5445 : // If I'm paletted, then I'll use the number of bits from the palette +; 5446 : if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); +; 5447 : else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 5448 : +; 5449 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency +; 5450 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); +; 5451 : +; 5452 : // tga info +; 5453 : *x = tga_width; +; 5454 : *y = tga_height; +; 5455 : if (comp) *comp = tga_comp; +; 5456 : +; 5457 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) +; 5458 : return stbi__errpuc("too large", "Corrupt TGA"); +; 5459 : +; 5460 : tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); +; 5461 : if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); +; 5462 : +; 5463 : // skip to the data's starting position (offset usually = 0) +; 5464 : stbi__skip(s, tga_offset); +; 5465 : +; 5466 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { +; 5467 : for (i = 0; i < tga_height; ++i) { +; 5468 : int row = tga_inverted ? tga_height - i - 1 : i; +; 5469 : stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; +; 5470 : stbi__getn(s, tga_row, tga_width * tga_comp); +; 5471 : } +; 5472 : } +; 5473 : else { +; 5474 : // do I need to load a palette? +; 5475 : if (tga_indexed) +; 5476 : { +; 5477 : if (tga_palette_len == 0) { /* you have to have at least one entry! */ +; 5478 : STBI_FREE(tga_data); +; 5479 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5480 : } +; 5481 : +; 5482 : // any data to skip? (offset usually = 0) +; 5483 : stbi__skip(s, tga_palette_start); +; 5484 : // load the palette +; 5485 : tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 5486 : if (!tga_palette) { +; 5487 : STBI_FREE(tga_data); +; 5488 : return stbi__errpuc("outofmem", "Out of memory"); +; 5489 : } +; 5490 : if (tga_rgb16) { +; 5491 : stbi_uc* pal_entry = tga_palette; +; 5492 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5493 : for (i = 0; i < tga_palette_len; ++i) { +; 5494 : stbi__tga_read_rgb16(s, pal_entry); +; 5495 : pal_entry += tga_comp; +; 5496 : } +; 5497 : } +; 5498 : else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { +; 5499 : STBI_FREE(tga_data); +; 5500 : STBI_FREE(tga_palette); +; 5501 : return stbi__errpuc("bad palette", "Corrupt TGA"); +; 5502 : } +; 5503 : } +; 5504 : // load the data +; 5505 : for (i = 0; i < tga_width * tga_height; ++i) +; 5506 : { +; 5507 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 5508 : if (tga_is_RLE) +; 5509 : { +; 5510 : if (RLE_count == 0) +; 5511 : { +; 5512 : // yep, get the next byte as a RLE command +; 5513 : int RLE_cmd = stbi__get8(s); +; 5514 : RLE_count = 1 + (RLE_cmd & 127); +; 5515 : RLE_repeating = RLE_cmd >> 7; +; 5516 : read_next_pixel = 1; +; 5517 : } +; 5518 : else if (!RLE_repeating) +; 5519 : { +; 5520 : read_next_pixel = 1; +; 5521 : } +; 5522 : } +; 5523 : else +; 5524 : { +; 5525 : read_next_pixel = 1; +; 5526 : } +; 5527 : // OK, if I need to read a pixel, do it now +; 5528 : if (read_next_pixel) +; 5529 : { +; 5530 : // load however much data we did have +; 5531 : if (tga_indexed) +; 5532 : { +; 5533 : // read in index, then perform the lookup +; 5534 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); +; 5535 : if (pal_idx >= tga_palette_len) { +; 5536 : // invalid index +; 5537 : pal_idx = 0; +; 5538 : } +; 5539 : pal_idx *= tga_comp; +; 5540 : for (j = 0; j < tga_comp; ++j) { +; 5541 : raw_data[j] = tga_palette[pal_idx + j]; +; 5542 : } +; 5543 : } +; 5544 : else if (tga_rgb16) { +; 5545 : STBI_ASSERT(tga_comp == STBI_rgb); +; 5546 : stbi__tga_read_rgb16(s, raw_data); +; 5547 : } +; 5548 : else { +; 5549 : // read in the data raw +; 5550 : for (j = 0; j < tga_comp; ++j) { +; 5551 : raw_data[j] = stbi__get8(s); +; 5552 : } +; 5553 : } +; 5554 : // clear the reading flag for the next pixel +; 5555 : read_next_pixel = 0; +; 5556 : } // end of reading a pixel +; 5557 : +; 5558 : // copy data +; 5559 : for (j = 0; j < tga_comp; ++j) +; 5560 : tga_data[i * tga_comp + j] = raw_data[j]; +; 5561 : +; 5562 : // in case we're in RLE mode, keep counting down +; 5563 : --RLE_count; +; 5564 : } +; 5565 : // do I need to invert the image? +; 5566 : if (tga_inverted) +; 5567 : { +; 5568 : for (j = 0; j * 2 < tga_height; ++j) +; 5569 : { +; 5570 : int index1 = j * tga_width * tga_comp; +; 5571 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp; +; 5572 : for (i = tga_width * tga_comp; i > 0; --i) +; 5573 : { +; 5574 : unsigned char temp = tga_data[index1]; +; 5575 : tga_data[index1] = tga_data[index2]; +; 5576 : tga_data[index2] = temp; +; 5577 : ++index1; +; 5578 : ++index2; +; 5579 : } +; 5580 : } +; 5581 : } +; 5582 : // clear my palette, if I had one +; 5583 : if (tga_palette != NULL) +; 5584 : { +; 5585 : STBI_FREE(tga_palette); +; 5586 : } +; 5587 : } +; 5588 : +; 5589 : // swap RGB - if the source data was RGB16, it already is in the right order +; 5590 : if (tga_comp >= 3 && !tga_rgb16) +; 5591 : { +; 5592 : unsigned char* tga_pixel = tga_data; +; 5593 : for (i = 0; i < tga_width * tga_height; ++i) +; 5594 : { +; 5595 : unsigned char temp = tga_pixel[0]; +; 5596 : tga_pixel[0] = tga_pixel[2]; +; 5597 : tga_pixel[2] = temp; +; 5598 : tga_pixel += tga_comp; +; 5599 : } +; 5600 : } +; 5601 : +; 5602 : // convert to target component count +; 5603 : if (req_comp && req_comp != tga_comp) +; 5604 : tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 5605 : +; 5606 : // the things I do to get rid of an error message, and yet keep +; 5607 : // Microsoft's C compilers happy... [8^( +; 5608 : tga_palette_start = tga_palette_len = tga_palette_bits = +; 5609 : tga_x_origin = tga_y_origin = 0; +; 5610 : STBI_NOTUSED(tga_palette_start); +; 5611 : // OK, done +; 5612 : return tga_data; +; 5613 : } +; 5614 : #endif +; 5615 : +; 5616 : // ************************************************************************************************* +; 5617 : // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB +; 5618 : +; 5619 : #ifndef STBI_NO_PSD +; 5620 : static int stbi__psd_test(stbi__context* s) +; 5621 : { +; 5622 : int r = (stbi__get32be(s) == 0x38425053); +; 5623 : stbi__rewind(s); +; 5624 : return r; +; 5625 : } +; 5626 : +; 5627 : static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +; 5628 : { +; 5629 : int count, nleft, len; +; 5630 : +; 5631 : count = 0; +; 5632 : while ((nleft = pixelCount - count) > 0) { +; 5633 : len = stbi__get8(s); +; 5634 : if (len == 128) { +; 5635 : // No-op. +; 5636 : } +; 5637 : else if (len < 128) { +; 5638 : // Copy next len+1 bytes literally. +; 5639 : len++; +; 5640 : if (len > nleft) return 0; // corrupt data +; 5641 : count += len; +; 5642 : while (len) { +; 5643 : *p = stbi__get8(s); +; 5644 : p += 4; +; 5645 : len--; +; 5646 : } +; 5647 : } +; 5648 : else if (len > 128) { +; 5649 : stbi_uc val; +; 5650 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 5651 : // (Interpret len as a negative 8-bit int.) +; 5652 : len = 257 - len; +; 5653 : if (len > nleft) return 0; // corrupt data +; 5654 : val = stbi__get8(s); +; 5655 : count += len; +; 5656 : while (len) { +; 5657 : *p = val; +; 5658 : p += 4; +; 5659 : len--; +; 5660 : } +; 5661 : } +; 5662 : } +; 5663 : +; 5664 : return 1; +; 5665 : } +; 5666 : +; 5667 : static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +; 5668 : { +; 5669 : int pixelCount; +; 5670 : int channelCount, compression; +; 5671 : int channel, i; +; 5672 : int bitdepth; +; 5673 : int w, h; +; 5674 : stbi_uc* out; +; 5675 : STBI_NOTUSED(ri); +; 5676 : +; 5677 : // Check identifier +; 5678 : if (stbi__get32be(s) != 0x38425053) // "8BPS" +; 5679 : return stbi__errpuc("not PSD", "Corrupt PSD image"); +; 5680 : +; 5681 : // Check file type version. +; 5682 : if (stbi__get16be(s) != 1) +; 5683 : return stbi__errpuc("wrong version", "Unsupported version of PSD image"); +; 5684 : +; 5685 : // Skip 6 reserved bytes. +; 5686 : stbi__skip(s, 6); +; 5687 : +; 5688 : // Read the number of channels (R, G, B, A, etc). +; 5689 : channelCount = stbi__get16be(s); +; 5690 : if (channelCount < 0 || channelCount > 16) +; 5691 : return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); +; 5692 : +; 5693 : // Read the rows and columns of the image. +; 5694 : h = stbi__get32be(s); +; 5695 : w = stbi__get32be(s); +; 5696 : +; 5697 : if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5698 : if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 5699 : +; 5700 : // Make sure the depth is 8 bits. +; 5701 : bitdepth = stbi__get16be(s); +; 5702 : if (bitdepth != 8 && bitdepth != 16) +; 5703 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); +; 5704 : +; 5705 : // Make sure the color mode is RGB. +; 5706 : // Valid options are: +; 5707 : // 0: Bitmap +; 5708 : // 1: Grayscale +; 5709 : // 2: Indexed color +; 5710 : // 3: RGB color +; 5711 : // 4: CMYK color +; 5712 : // 7: Multichannel +; 5713 : // 8: Duotone +; 5714 : // 9: Lab color +; 5715 : if (stbi__get16be(s) != 3) +; 5716 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); +; 5717 : +; 5718 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 5719 : stbi__skip(s, stbi__get32be(s)); +; 5720 : +; 5721 : // Skip the image resources. (resolution, pen tool paths, etc) +; 5722 : stbi__skip(s, stbi__get32be(s)); +; 5723 : +; 5724 : // Skip the reserved data. +; 5725 : stbi__skip(s, stbi__get32be(s)); +; 5726 : +; 5727 : // Find out if the data is compressed. +; 5728 : // Known values: +; 5729 : // 0: no compression +; 5730 : // 1: RLE compressed +; 5731 : compression = stbi__get16be(s); +; 5732 : if (compression > 1) +; 5733 : return stbi__errpuc("bad compression", "PSD has an unknown compression format"); +; 5734 : +; 5735 : // Check size +; 5736 : if (!stbi__mad3sizes_valid(4, w, h, 0)) +; 5737 : return stbi__errpuc("too large", "Corrupt PSD"); +; 5738 : +; 5739 : // Create the destination image. +; 5740 : +; 5741 : if (!compression && bitdepth == 16 && bpc == 16) { +; 5742 : out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); +; 5743 : ri->bits_per_channel = 16; +; 5744 : } +; 5745 : else +; 5746 : out = (stbi_uc*)stbi__malloc(4 * w * h); +; 5747 : +; 5748 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); +; 5749 : pixelCount = w * h; +; 5750 : +; 5751 : // Initialize the data to zero. +; 5752 : //memset( out, 0, pixelCount * 4 ); +; 5753 : +; 5754 : // Finally, the image data. +; 5755 : if (compression) { +; 5756 : // RLE as used by .PSD and .TIFF +; 5757 : // Loop until you get the number of unpacked bytes you are expecting: +; 5758 : // Read the next source byte into n. +; 5759 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 5760 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 5761 : // Else if n is 128, noop. +; 5762 : // Endloop +; 5763 : +; 5764 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 5765 : // which we're going to just skip. +; 5766 : stbi__skip(s, h * channelCount * 2); +; 5767 : +; 5768 : // Read the RLE data by channel. +; 5769 : for (channel = 0; channel < 4; channel++) { +; 5770 : stbi_uc* p; +; 5771 : +; 5772 : p = out + channel; +; 5773 : if (channel >= channelCount) { +; 5774 : // Fill this channel with default data. +; 5775 : for (i = 0; i < pixelCount; i++, p += 4) +; 5776 : *p = (channel == 3 ? 255 : 0); +; 5777 : } +; 5778 : else { +; 5779 : // Read the RLE data. +; 5780 : if (!stbi__psd_decode_rle(s, p, pixelCount)) { +; 5781 : STBI_FREE(out); +; 5782 : return stbi__errpuc("corrupt", "bad RLE data"); +; 5783 : } +; 5784 : } +; 5785 : } +; 5786 : } +; 5787 : else { +; 5788 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 5789 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 5790 : +; 5791 : // Read the data by channel. +; 5792 : for (channel = 0; channel < 4; channel++) { +; 5793 : if (channel >= channelCount) { +; 5794 : // Fill this channel with default data. +; 5795 : if (bitdepth == 16 && bpc == 16) { +; 5796 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5797 : stbi__uint16 val = channel == 3 ? 65535 : 0; +; 5798 : for (i = 0; i < pixelCount; i++, q += 4) +; 5799 : *q = val; +; 5800 : } +; 5801 : else { +; 5802 : stbi_uc* p = out + channel; +; 5803 : stbi_uc val = channel == 3 ? 255 : 0; +; 5804 : for (i = 0; i < pixelCount; i++, p += 4) +; 5805 : *p = val; +; 5806 : } +; 5807 : } +; 5808 : else { +; 5809 : if (ri->bits_per_channel == 16) { // output bpc +; 5810 : stbi__uint16* q = ((stbi__uint16*)out) + channel; +; 5811 : for (i = 0; i < pixelCount; i++, q += 4) +; 5812 : *q = (stbi__uint16)stbi__get16be(s); +; 5813 : } +; 5814 : else { +; 5815 : stbi_uc* p = out + channel; +; 5816 : if (bitdepth == 16) { // input bpc +; 5817 : for (i = 0; i < pixelCount; i++, p += 4) +; 5818 : *p = (stbi_uc)(stbi__get16be(s) >> 8); +; 5819 : } +; 5820 : else { +; 5821 : for (i = 0; i < pixelCount; i++, p += 4) +; 5822 : *p = stbi__get8(s); +; 5823 : } +; 5824 : } +; 5825 : } +; 5826 : } +; 5827 : } +; 5828 : +; 5829 : // remove weird white matte from PSD +; 5830 : if (channelCount >= 4) { +; 5831 : if (ri->bits_per_channel == 16) { +; 5832 : for (i = 0; i < w * h; ++i) { +; 5833 : stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; +; 5834 : if (pixel[3] != 0 && pixel[3] != 65535) { +; 5835 : float a = pixel[3] / 65535.0f; +; 5836 : float ra = 1.0f / a; +; 5837 : float inv_a = 65535.0f * (1 - ra); +; 5838 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); +; 5839 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); +; 5840 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); +; 5841 : } +; 5842 : } +; 5843 : } +; 5844 : else { +; 5845 : for (i = 0; i < w * h; ++i) { +; 5846 : unsigned char* pixel = out + 4 * i; +; 5847 : if (pixel[3] != 0 && pixel[3] != 255) { +; 5848 : float a = pixel[3] / 255.0f; +; 5849 : float ra = 1.0f / a; +; 5850 : float inv_a = 255.0f * (1 - ra); +; 5851 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); +; 5852 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); +; 5853 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); +; 5854 : } +; 5855 : } +; 5856 : } +; 5857 : } +; 5858 : +; 5859 : // convert to desired output format +; 5860 : if (req_comp && req_comp != 4) { +; 5861 : if (ri->bits_per_channel == 16) +; 5862 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); +; 5863 : else +; 5864 : out = stbi__convert_format(out, 4, req_comp, w, h); +; 5865 : if (out == NULL) return out; // stbi__convert_format frees input on failure +; 5866 : } +; 5867 : +; 5868 : if (comp) *comp = 4; +; 5869 : *y = h; +; 5870 : *x = w; +; 5871 : +; 5872 : return out; +; 5873 : } +; 5874 : #endif +; 5875 : +; 5876 : // ************************************************************************************************* +; 5877 : // Softimage PIC loader +; 5878 : // by Tom Seddon +; 5879 : // +; 5880 : // See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +; 5881 : // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ +; 5882 : +; 5883 : #ifndef STBI_NO_PIC +; 5884 : static int stbi__pic_is4(stbi__context* s, const char* str) +; 5885 : { +; 5886 : int i; +; 5887 : for (i = 0; i < 4; ++i) +; 5888 : if (stbi__get8(s) != (stbi_uc)str[i]) +; 5889 : return 0; +; 5890 : +; 5891 : return 1; +; 5892 : } +; 5893 : +; 5894 : static int stbi__pic_test_core(stbi__context* s) +; 5895 : { +; 5896 : int i; +; 5897 : +; 5898 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) +; 5899 : return 0; +; 5900 : +; 5901 : for (i = 0; i < 84; ++i) +; 5902 : stbi__get8(s); +; 5903 : +; 5904 : if (!stbi__pic_is4(s, "PICT")) +; 5905 : return 0; +; 5906 : +; 5907 : return 1; +; 5908 : } +; 5909 : +; 5910 : typedef struct +; 5911 : { +; 5912 : stbi_uc size, type, channel; +; 5913 : } stbi__pic_packet; +; 5914 : +; 5915 : static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +; 5916 : { +; 5917 : int mask = 0x80, i; +; 5918 : +; 5919 : for (i = 0; i < 4; ++i, mask >>= 1) { +; 5920 : if (channel & mask) { +; 5921 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); +; 5922 : dest[i] = stbi__get8(s); +; 5923 : } +; 5924 : } +; 5925 : +; 5926 : return dest; +; 5927 : } +; 5928 : +; 5929 : static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) +; 5930 : { +; 5931 : int mask = 0x80, i; +; 5932 : +; 5933 : for (i = 0; i < 4; ++i, mask >>= 1) +; 5934 : if (channel & mask) +; 5935 : dest[i] = src[i]; +; 5936 : } +; 5937 : +; 5938 : static stbi_uc* stbi__pic_load_core(stbi__context* s, int width, int height, int* comp, stbi_uc* result) +; 5939 : { +; 5940 : int act_comp = 0, num_packets = 0, y, chained; +; 5941 : stbi__pic_packet packets[10]; +; 5942 : +; 5943 : // this will (should...) cater for even some bizarre stuff like having data +; 5944 : // for the same channel in multiple packets. +; 5945 : do { +; 5946 : stbi__pic_packet* packet; +; 5947 : +; 5948 : if (num_packets == sizeof(packets) / sizeof(packets[0])) +; 5949 : return stbi__errpuc("bad format", "too many packets"); +; 5950 : +; 5951 : packet = &packets[num_packets++]; +; 5952 : +; 5953 : chained = stbi__get8(s); +; 5954 : packet->size = stbi__get8(s); +; 5955 : packet->type = stbi__get8(s); +; 5956 : packet->channel = stbi__get8(s); +; 5957 : +; 5958 : act_comp |= packet->channel; +; 5959 : +; 5960 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (reading packets)"); +; 5961 : if (packet->size != 8) return stbi__errpuc("bad format", "packet isn't 8bpp"); +; 5962 : } while (chained); +; 5963 : +; 5964 : *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? +; 5965 : +; 5966 : for (y = 0; y < height; ++y) { +; 5967 : int packet_idx; +; 5968 : +; 5969 : for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { +; 5970 : stbi__pic_packet* packet = &packets[packet_idx]; +; 5971 : stbi_uc* dest = result + y * width * 4; +; 5972 : +; 5973 : switch (packet->type) { +; 5974 : default: +; 5975 : return stbi__errpuc("bad format", "packet has bad compression type"); +; 5976 : +; 5977 : case 0: {//uncompressed +; 5978 : int x; +; 5979 : +; 5980 : for (x = 0; x < width; ++x, dest += 4) +; 5981 : if (!stbi__readval(s, packet->channel, dest)) +; 5982 : return 0; +; 5983 : break; +; 5984 : } +; 5985 : +; 5986 : case 1://Pure RLE +; 5987 : { +; 5988 : int left = width, i; +; 5989 : +; 5990 : while (left > 0) { +; 5991 : stbi_uc count, value[4]; +; 5992 : +; 5993 : count = stbi__get8(s); +; 5994 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pure read count)"); +; 5995 : +; 5996 : if (count > left) +; 5997 : count = (stbi_uc)left; +; 5998 : +; 5999 : if (!stbi__readval(s, packet->channel, value)) return 0; +; 6000 : +; 6001 : for (i = 0; i < count; ++i, dest += 4) +; 6002 : stbi__copyval(packet->channel, dest, value); +; 6003 : left -= count; +; 6004 : } +; 6005 : } +; 6006 : break; +; 6007 : +; 6008 : case 2: {//Mixed RLE +; 6009 : int left = width; +; 6010 : while (left > 0) { +; 6011 : int count = stbi__get8(s), i; +; 6012 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (mixed read count)"); +; 6013 : +; 6014 : if (count >= 128) { // Repeated +; 6015 : stbi_uc value[4]; +; 6016 : +; 6017 : if (count == 128) +; 6018 : count = stbi__get16be(s); +; 6019 : else +; 6020 : count -= 127; +; 6021 : if (count > left) +; 6022 : return stbi__errpuc("bad file", "scanline overrun"); +; 6023 : +; 6024 : if (!stbi__readval(s, packet->channel, value)) +; 6025 : return 0; +; 6026 : +; 6027 : for (i = 0; i < count; ++i, dest += 4) +; 6028 : stbi__copyval(packet->channel, dest, value); +; 6029 : } +; 6030 : else { // Raw +; 6031 : ++count; +; 6032 : if (count > left) return stbi__errpuc("bad file", "scanline overrun"); +; 6033 : +; 6034 : for (i = 0; i < count; ++i, dest += 4) +; 6035 : if (!stbi__readval(s, packet->channel, dest)) +; 6036 : return 0; +; 6037 : } +; 6038 : left -= count; +; 6039 : } +; 6040 : break; +; 6041 : } +; 6042 : } +; 6043 : } +; 6044 : } +; 6045 : +; 6046 : return result; +; 6047 : } +; 6048 : +; 6049 : static void* stbi__pic_load(stbi__context* s, int* px, int* py, int* comp, int req_comp, stbi__result_info* ri) +; 6050 : { +; 6051 : stbi_uc* result; +; 6052 : int i, x, y, internal_comp; +; 6053 : STBI_NOTUSED(ri); +; 6054 : +; 6055 : if (!comp) comp = &internal_comp; +; 6056 : +; 6057 : for (i = 0; i < 92; ++i) +; 6058 : stbi__get8(s); +; 6059 : +; 6060 : x = stbi__get16be(s); +; 6061 : y = stbi__get16be(s); +; 6062 : +; 6063 : if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 6064 : if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); +; 6065 : +; 6066 : if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pic header)"); +; 6067 : if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); +; 6068 : +; 6069 : stbi__get32be(s); //skip `ratio' +; 6070 : stbi__get16be(s); //skip `fields' +; 6071 : stbi__get16be(s); //skip `pad' +; 6072 : +; 6073 : // intermediate buffer is RGBA +; 6074 : result = (stbi_uc*)stbi__malloc_mad3(x, y, 4, 0); +; 6075 : if (!result) return stbi__errpuc("outofmem", "Out of memory"); +; 6076 : memset(result, 0xff, x * y * 4); +; 6077 : +; 6078 : if (!stbi__pic_load_core(s, x, y, comp, result)) { +; 6079 : STBI_FREE(result); +; 6080 : result = 0; +; 6081 : } +; 6082 : *px = x; +; 6083 : *py = y; +; 6084 : if (req_comp == 0) req_comp = *comp; +; 6085 : result = stbi__convert_format(result, 4, req_comp, x, y); +; 6086 : +; 6087 : return result; +; 6088 : } +; 6089 : +; 6090 : static int stbi__pic_test(stbi__context* s) +; 6091 : { +; 6092 : int r = stbi__pic_test_core(s); +; 6093 : stbi__rewind(s); +; 6094 : return r; +; 6095 : } +; 6096 : #endif +; 6097 : +; 6098 : // ************************************************************************************************* +; 6099 : // GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb +; 6100 : +; 6101 : #ifndef STBI_NO_GIF +; 6102 : typedef struct +; 6103 : { +; 6104 : stbi__int16 prefix; +; 6105 : stbi_uc first; +; 6106 : stbi_uc suffix; +; 6107 : } stbi__gif_lzw; +; 6108 : +; 6109 : typedef struct +; 6110 : { +; 6111 : int w, h; +; 6112 : stbi_uc* out; // output buffer (always 4 components) +; 6113 : stbi_uc* background; // The current "background" as far as a gif is concerned +; 6114 : stbi_uc* history; +; 6115 : int flags, bgindex, ratio, transparent, eflags; +; 6116 : stbi_uc pal[256][4]; +; 6117 : stbi_uc lpal[256][4]; +; 6118 : stbi__gif_lzw codes[8192]; +; 6119 : stbi_uc* color_table; +; 6120 : int parse, step; +; 6121 : int lflags; +; 6122 : int start_x, start_y; +; 6123 : int max_x, max_y; +; 6124 : int cur_x, cur_y; +; 6125 : int line_size; +; 6126 : int delay; +; 6127 : } stbi__gif; +; 6128 : +; 6129 : static int stbi__gif_test_raw(stbi__context* s) +; 6130 : { +; 6131 : int sz; +; 6132 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; +; 6133 : sz = stbi__get8(s); +; 6134 : if (sz != '9' && sz != '7') return 0; +; 6135 : if (stbi__get8(s) != 'a') return 0; +; 6136 : return 1; +; 6137 : } +; 6138 : +; 6139 : static int stbi__gif_test(stbi__context* s) +; 6140 : { +; 6141 : int r = stbi__gif_test_raw(s); +; 6142 : stbi__rewind(s); +; 6143 : return r; +; 6144 : } +; 6145 : +; 6146 : static void stbi__gif_parse_colortable(stbi__context* s, stbi_uc pal[256][4], int num_entries, int transp) +; 6147 : { +; 6148 : int i; +; 6149 : for (i = 0; i < num_entries; ++i) { +; 6150 : pal[i][2] = stbi__get8(s); +; 6151 : pal[i][1] = stbi__get8(s); +; 6152 : pal[i][0] = stbi__get8(s); +; 6153 : pal[i][3] = transp == i ? 0 : 255; +; 6154 : } +; 6155 : } +; 6156 : +; 6157 : static int stbi__gif_header(stbi__context* s, stbi__gif* g, int* comp, int is_info) +; 6158 : { +; 6159 : stbi_uc version; +; 6160 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') +; 6161 : return stbi__err("not GIF", "Corrupt GIF"); +; 6162 : +; 6163 : version = stbi__get8(s); +; 6164 : if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); +; 6165 : if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); +; 6166 : +; 6167 : stbi__g_failure_reason = ""; +; 6168 : g->w = stbi__get16le(s); +; 6169 : g->h = stbi__get16le(s); +; 6170 : g->flags = stbi__get8(s); +; 6171 : g->bgindex = stbi__get8(s); +; 6172 : g->ratio = stbi__get8(s); +; 6173 : g->transparent = -1; +; 6174 : +; 6175 : if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 6176 : if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); +; 6177 : +; 6178 : if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments +; 6179 : +; 6180 : if (is_info) return 1; +; 6181 : +; 6182 : if (g->flags & 0x80) +; 6183 : stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); +; 6184 : +; 6185 : return 1; +; 6186 : } +; 6187 : +; 6188 : static int stbi__gif_info_raw(stbi__context* s, int* x, int* y, int* comp) +; 6189 : { +; 6190 : stbi__gif* g = (stbi__gif*)stbi__malloc(sizeof(stbi__gif)); +; 6191 : if (!g) return stbi__err("outofmem", "Out of memory"); +; 6192 : if (!stbi__gif_header(s, g, comp, 1)) { +; 6193 : STBI_FREE(g); +; 6194 : stbi__rewind(s); +; 6195 : return 0; +; 6196 : } +; 6197 : if (x) *x = g->w; +; 6198 : if (y) *y = g->h; +; 6199 : STBI_FREE(g); +; 6200 : return 1; +; 6201 : } +; 6202 : +; 6203 : static void stbi__out_gif_code(stbi__gif* g, stbi__uint16 code) +; 6204 : { +; 6205 : stbi_uc* p, * c; +; 6206 : int idx; +; 6207 : +; 6208 : // recurse to decode the prefixes, since the linked-list is backwards, +; 6209 : // and working backwards through an interleaved image would be nasty +; 6210 : if (g->codes[code].prefix >= 0) +; 6211 : stbi__out_gif_code(g, g->codes[code].prefix); +; 6212 : +; 6213 : if (g->cur_y >= g->max_y) return; +; 6214 : +; 6215 : idx = g->cur_x + g->cur_y; +; 6216 : p = &g->out[idx]; +; 6217 : g->history[idx / 4] = 1; +; 6218 : +; 6219 : c = &g->color_table[g->codes[code].suffix * 4]; +; 6220 : if (c[3] > 128) { // don't render transparent pixels; +; 6221 : p[0] = c[2]; +; 6222 : p[1] = c[1]; +; 6223 : p[2] = c[0]; +; 6224 : p[3] = c[3]; +; 6225 : } +; 6226 : g->cur_x += 4; +; 6227 : +; 6228 : if (g->cur_x >= g->max_x) { +; 6229 : g->cur_x = g->start_x; +; 6230 : g->cur_y += g->step; +; 6231 : +; 6232 : while (g->cur_y >= g->max_y && g->parse > 0) { +; 6233 : g->step = (1 << g->parse) * g->line_size; +; 6234 : g->cur_y = g->start_y + (g->step >> 1); +; 6235 : --g->parse; +; 6236 : } +; 6237 : } +; 6238 : } +; 6239 : +; 6240 : static stbi_uc* stbi__process_gif_raster(stbi__context* s, stbi__gif* g) +; 6241 : { +; 6242 : stbi_uc lzw_cs; +; 6243 : stbi__int32 len, init_code; +; 6244 : stbi__uint32 first; +; 6245 : stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; +; 6246 : stbi__gif_lzw* p; +; 6247 : +; 6248 : lzw_cs = stbi__get8(s); +; 6249 : if (lzw_cs > 12) return NULL; +; 6250 : clear = 1 << lzw_cs; +; 6251 : first = 1; +; 6252 : codesize = lzw_cs + 1; +; 6253 : codemask = (1 << codesize) - 1; +; 6254 : bits = 0; +; 6255 : valid_bits = 0; +; 6256 : for (init_code = 0; init_code < clear; init_code++) { +; 6257 : g->codes[init_code].prefix = -1; +; 6258 : g->codes[init_code].first = (stbi_uc)init_code; +; 6259 : g->codes[init_code].suffix = (stbi_uc)init_code; +; 6260 : } +; 6261 : +; 6262 : // support no starting clear code +; 6263 : avail = clear + 2; +; 6264 : oldcode = -1; +; 6265 : +; 6266 : len = 0; +; 6267 : for (;;) { +; 6268 : if (valid_bits < codesize) { +; 6269 : if (len == 0) { +; 6270 : len = stbi__get8(s); // start new block +; 6271 : if (len == 0) +; 6272 : return g->out; +; 6273 : } +; 6274 : --len; +; 6275 : bits |= (stbi__int32)stbi__get8(s) << valid_bits; +; 6276 : valid_bits += 8; +; 6277 : } +; 6278 : else { +; 6279 : stbi__int32 code = bits & codemask; +; 6280 : bits >>= codesize; +; 6281 : valid_bits -= codesize; +; 6282 : // @OPTIMIZE: is there some way we can accelerate the non-clear path? +; 6283 : if (code == clear) { // clear code +; 6284 : codesize = lzw_cs + 1; +; 6285 : codemask = (1 << codesize) - 1; +; 6286 : avail = clear + 2; +; 6287 : oldcode = -1; +; 6288 : first = 0; +; 6289 : } +; 6290 : else if (code == clear + 1) { // end of stream code +; 6291 : stbi__skip(s, len); +; 6292 : while ((len = stbi__get8(s)) > 0) +; 6293 : stbi__skip(s, len); +; 6294 : return g->out; +; 6295 : } +; 6296 : else if (code <= avail) { +; 6297 : if (first) { +; 6298 : return stbi__errpuc("no clear code", "Corrupt GIF"); +; 6299 : } +; 6300 : +; 6301 : if (oldcode >= 0) { +; 6302 : p = &g->codes[avail++]; +; 6303 : if (avail > 8192) { +; 6304 : return stbi__errpuc("too many codes", "Corrupt GIF"); +; 6305 : } +; 6306 : +; 6307 : p->prefix = (stbi__int16)oldcode; +; 6308 : p->first = g->codes[oldcode].first; +; 6309 : p->suffix = (code == avail) ? p->first : g->codes[code].first; +; 6310 : } +; 6311 : else if (code == avail) +; 6312 : return stbi__errpuc("illegal code in raster", "Corrupt GIF"); +; 6313 : +; 6314 : stbi__out_gif_code(g, (stbi__uint16)code); +; 6315 : +; 6316 : if ((avail & codemask) == 0 && avail <= 0x0FFF) { +; 6317 : codesize++; +; 6318 : codemask = (1 << codesize) - 1; +; 6319 : } +; 6320 : +; 6321 : oldcode = code; +; 6322 : } +; 6323 : else { +; 6324 : return stbi__errpuc("illegal code in raster", "Corrupt GIF"); +; 6325 : } +; 6326 : } +; 6327 : } +; 6328 : } +; 6329 : +; 6330 : // this function is designed to support animated gifs, although stb_image doesn't support it +; 6331 : // two back is the image from two frames ago, used for a very specific disposal format +; 6332 : static stbi_uc* stbi__gif_load_next(stbi__context* s, stbi__gif* g, int* comp, int req_comp, stbi_uc* two_back) +; 6333 : { +; 6334 : int dispose; +; 6335 : int first_frame; +; 6336 : int pi; +; 6337 : int pcount; +; 6338 : STBI_NOTUSED(req_comp); +; 6339 : +; 6340 : // on first frame, any non-written pixels get the background colour (non-transparent) +; 6341 : first_frame = 0; +; 6342 : if (g->out == 0) { +; 6343 : if (!stbi__gif_header(s, g, comp, 0)) return 0; // stbi__g_failure_reason set by stbi__gif_header +; 6344 : if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) +; 6345 : return stbi__errpuc("too large", "GIF image is too large"); +; 6346 : pcount = g->w * g->h; +; 6347 : g->out = (stbi_uc*)stbi__malloc(4 * pcount); +; 6348 : g->background = (stbi_uc*)stbi__malloc(4 * pcount); +; 6349 : g->history = (stbi_uc*)stbi__malloc(pcount); +; 6350 : if (!g->out || !g->background || !g->history) +; 6351 : return stbi__errpuc("outofmem", "Out of memory"); +; 6352 : +; 6353 : // image is treated as "transparent" at the start - ie, nothing overwrites the current background; +; 6354 : // background colour is only used for pixels that are not rendered first frame, after that "background" +; 6355 : // color refers to the color that was there the previous frame. +; 6356 : memset(g->out, 0x00, 4 * pcount); +; 6357 : memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) +; 6358 : memset(g->history, 0x00, pcount); // pixels that were affected previous frame +; 6359 : first_frame = 1; +; 6360 : } +; 6361 : else { +; 6362 : // second frame - how do we dispose of the previous one? +; 6363 : dispose = (g->eflags & 0x1C) >> 2; +; 6364 : pcount = g->w * g->h; +; 6365 : +; 6366 : if ((dispose == 3) && (two_back == 0)) { +; 6367 : dispose = 2; // if I don't have an image to revert back to, default to the old background +; 6368 : } +; 6369 : +; 6370 : if (dispose == 3) { // use previous graphic +; 6371 : for (pi = 0; pi < pcount; ++pi) { +; 6372 : if (g->history[pi]) { +; 6373 : memcpy(&g->out[pi * 4], &two_back[pi * 4], 4); +; 6374 : } +; 6375 : } +; 6376 : } +; 6377 : else if (dispose == 2) { +; 6378 : // restore what was changed last frame to background before that frame; +; 6379 : for (pi = 0; pi < pcount; ++pi) { +; 6380 : if (g->history[pi]) { +; 6381 : memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); +; 6382 : } +; 6383 : } +; 6384 : } +; 6385 : else { +; 6386 : // This is a non-disposal case eithe way, so just +; 6387 : // leave the pixels as is, and they will become the new background +; 6388 : // 1: do not dispose +; 6389 : // 0: not specified. +; 6390 : } +; 6391 : +; 6392 : // background is what out is after the undoing of the previou frame; +; 6393 : memcpy(g->background, g->out, 4 * g->w * g->h); +; 6394 : } +; 6395 : +; 6396 : // clear my history; +; 6397 : memset(g->history, 0x00, g->w * g->h); // pixels that were affected previous frame +; 6398 : +; 6399 : for (;;) { +; 6400 : int tag = stbi__get8(s); +; 6401 : switch (tag) { +; 6402 : case 0x2C: /* Image Descriptor */ +; 6403 : { +; 6404 : stbi__int32 x, y, w, h; +; 6405 : stbi_uc* o; +; 6406 : +; 6407 : x = stbi__get16le(s); +; 6408 : y = stbi__get16le(s); +; 6409 : w = stbi__get16le(s); +; 6410 : h = stbi__get16le(s); +; 6411 : if (((x + w) > (g->w)) || ((y + h) > (g->h))) +; 6412 : return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); +; 6413 : +; 6414 : g->line_size = g->w * 4; +; 6415 : g->start_x = x * 4; +; 6416 : g->start_y = y * g->line_size; +; 6417 : g->max_x = g->start_x + w * 4; +; 6418 : g->max_y = g->start_y + h * g->line_size; +; 6419 : g->cur_x = g->start_x; +; 6420 : g->cur_y = g->start_y; +; 6421 : +; 6422 : // if the width of the specified rectangle is 0, that means +; 6423 : // we may not see *any* pixels or the image is malformed; +; 6424 : // to make sure this is caught, move the current y down to +; 6425 : // max_y (which is what out_gif_code checks). +; 6426 : if (w == 0) +; 6427 : g->cur_y = g->max_y; +; 6428 : +; 6429 : g->lflags = stbi__get8(s); +; 6430 : +; 6431 : if (g->lflags & 0x40) { +; 6432 : g->step = 8 * g->line_size; // first interlaced spacing +; 6433 : g->parse = 3; +; 6434 : } +; 6435 : else { +; 6436 : g->step = g->line_size; +; 6437 : g->parse = 0; +; 6438 : } +; 6439 : +; 6440 : if (g->lflags & 0x80) { +; 6441 : stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); +; 6442 : g->color_table = (stbi_uc*)g->lpal; +; 6443 : } +; 6444 : else if (g->flags & 0x80) { +; 6445 : g->color_table = (stbi_uc*)g->pal; +; 6446 : } +; 6447 : else +; 6448 : return stbi__errpuc("missing color table", "Corrupt GIF"); +; 6449 : +; 6450 : o = stbi__process_gif_raster(s, g); +; 6451 : if (!o) return NULL; +; 6452 : +; 6453 : // if this was the first frame, +; 6454 : pcount = g->w * g->h; +; 6455 : if (first_frame && (g->bgindex > 0)) { +; 6456 : // if first frame, any pixel not drawn to gets the background color +; 6457 : for (pi = 0; pi < pcount; ++pi) { +; 6458 : if (g->history[pi] == 0) { +; 6459 : g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; +; 6460 : memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4); +; 6461 : } +; 6462 : } +; 6463 : } +; 6464 : +; 6465 : return o; +; 6466 : } +; 6467 : +; 6468 : case 0x21: // Comment Extension. +; 6469 : { +; 6470 : int len; +; 6471 : int ext = stbi__get8(s); +; 6472 : if (ext == 0xF9) { // Graphic Control Extension. +; 6473 : len = stbi__get8(s); +; 6474 : if (len == 4) { +; 6475 : g->eflags = stbi__get8(s); +; 6476 : g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. +; 6477 : +; 6478 : // unset old transparent +; 6479 : if (g->transparent >= 0) { +; 6480 : g->pal[g->transparent][3] = 255; +; 6481 : } +; 6482 : if (g->eflags & 0x01) { +; 6483 : g->transparent = stbi__get8(s); +; 6484 : if (g->transparent >= 0) { +; 6485 : g->pal[g->transparent][3] = 0; +; 6486 : } +; 6487 : } +; 6488 : else { +; 6489 : // don't need transparent +; 6490 : stbi__skip(s, 1); +; 6491 : g->transparent = -1; +; 6492 : } +; 6493 : } +; 6494 : else { +; 6495 : stbi__skip(s, len); +; 6496 : break; +; 6497 : } +; 6498 : } +; 6499 : while ((len = stbi__get8(s)) != 0) { +; 6500 : stbi__skip(s, len); +; 6501 : } +; 6502 : break; +; 6503 : } +; 6504 : +; 6505 : case 0x3B: // gif stream termination code +; 6506 : return (stbi_uc*)s; // using '1' causes warning on some compilers +; 6507 : +; 6508 : default: +; 6509 : return stbi__errpuc("unknown code", "Corrupt GIF"); +; 6510 : } +; 6511 : } +; 6512 : } +; 6513 : +; 6514 : static void* stbi__load_gif_main_outofmem(stbi__gif* g, stbi_uc* out, int** delays) +; 6515 : { +; 6516 : STBI_FREE(g->out); +; 6517 : STBI_FREE(g->history); +; 6518 : STBI_FREE(g->background); +; 6519 : +; 6520 : if (out) STBI_FREE(out); +; 6521 : if (delays && *delays) STBI_FREE(*delays); +; 6522 : return stbi__errpuc("outofmem", "Out of memory"); +; 6523 : } +; 6524 : +; 6525 : static void* stbi__load_gif_main(stbi__context* s, int** delays, int* x, int* y, int* z, int* comp, int req_comp) +; 6526 : { +; 6527 : if (stbi__gif_test(s)) { +; 6528 : int layers = 0; +; 6529 : stbi_uc* u = 0; +; 6530 : stbi_uc* out = 0; +; 6531 : stbi_uc* two_back = 0; +; 6532 : stbi__gif g; +; 6533 : int stride; +; 6534 : int out_size = 0; +; 6535 : int delays_size = 0; +; 6536 : +; 6537 : STBI_NOTUSED(out_size); +; 6538 : STBI_NOTUSED(delays_size); +; 6539 : +; 6540 : memset(&g, 0, sizeof(g)); +; 6541 : if (delays) { +; 6542 : *delays = 0; +; 6543 : } +; 6544 : +; 6545 : do { +; 6546 : u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); +; 6547 : if (u == (stbi_uc*)s) u = 0; // end of animated gif marker +; 6548 : +; 6549 : if (u) { +; 6550 : *x = g.w; +; 6551 : *y = g.h; +; 6552 : ++layers; +; 6553 : stride = g.w * g.h * 4; +; 6554 : +; 6555 : if (out) { +; 6556 : void* tmp = (stbi_uc*)STBI_REALLOC_SIZED(out, out_size, layers * stride); +; 6557 : if (!tmp) +; 6558 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6559 : else { +; 6560 : out = (stbi_uc*)tmp; +; 6561 : out_size = layers * stride; +; 6562 : } +; 6563 : +; 6564 : if (delays) { +; 6565 : int* new_delays = (int*)STBI_REALLOC_SIZED(*delays, delays_size, sizeof(int) * layers); +; 6566 : if (!new_delays) +; 6567 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6568 : *delays = new_delays; +; 6569 : delays_size = layers * sizeof(int); +; 6570 : } +; 6571 : } +; 6572 : else { +; 6573 : out = (stbi_uc*)stbi__malloc(layers * stride); +; 6574 : if (!out) +; 6575 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6576 : out_size = layers * stride; +; 6577 : if (delays) { +; 6578 : *delays = (int*)stbi__malloc(layers * sizeof(int)); +; 6579 : if (!*delays) +; 6580 : return stbi__load_gif_main_outofmem(&g, out, delays); +; 6581 : delays_size = layers * sizeof(int); +; 6582 : } +; 6583 : } +; 6584 : memcpy(out + ((layers - 1) * stride), u, stride); +; 6585 : if (layers >= 2) { +; 6586 : two_back = out - 2 * stride; +; 6587 : } +; 6588 : +; 6589 : if (delays) { +; 6590 : (*delays)[layers - 1U] = g.delay; +; 6591 : } +; 6592 : } +; 6593 : } while (u != 0); +; 6594 : +; 6595 : // free temp buffer; +; 6596 : STBI_FREE(g.out); +; 6597 : STBI_FREE(g.history); +; 6598 : STBI_FREE(g.background); +; 6599 : +; 6600 : // do the final conversion after loading everything; +; 6601 : if (req_comp && req_comp != 4) +; 6602 : out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); +; 6603 : +; 6604 : *z = layers; +; 6605 : return out; +; 6606 : } +; 6607 : else { +; 6608 : return stbi__errpuc("not GIF", "Image was not as a gif type."); +; 6609 : } +; 6610 : } +; 6611 : +; 6612 : static void* stbi__gif_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +; 6613 : { +; 6614 : stbi_uc* u = 0; +; 6615 : stbi__gif g; +; 6616 : memset(&g, 0, sizeof(g)); +; 6617 : STBI_NOTUSED(ri); +; 6618 : +; 6619 : u = stbi__gif_load_next(s, &g, comp, req_comp, 0); +; 6620 : if (u == (stbi_uc*)s) u = 0; // end of animated gif marker +; 6621 : if (u) { +; 6622 : *x = g.w; +; 6623 : *y = g.h; +; 6624 : +; 6625 : // moved conversion to after successful load so that the same +; 6626 : // can be done for multiple frames. +; 6627 : if (req_comp && req_comp != 4) +; 6628 : u = stbi__convert_format(u, 4, req_comp, g.w, g.h); +; 6629 : } +; 6630 : else if (g.out) { +; 6631 : // if there was an error and we allocated an image buffer, free it! +; 6632 : STBI_FREE(g.out); +; 6633 : } +; 6634 : +; 6635 : // free buffers needed for multiple frame loading; +; 6636 : STBI_FREE(g.history); +; 6637 : STBI_FREE(g.background); +; 6638 : +; 6639 : return u; +; 6640 : } +; 6641 : +; 6642 : static int stbi__gif_info(stbi__context* s, int* x, int* y, int* comp) +; 6643 : { +; 6644 : return stbi__gif_info_raw(s, x, y, comp); +; 6645 : } +; 6646 : #endif +; 6647 : +; 6648 : // ************************************************************************************************* +; 6649 : // Radiance RGBE HDR loader +; 6650 : // originally by Nicolas Schulz +; 6651 : #ifndef STBI_NO_HDR +; 6652 : static int stbi__hdr_test_core(stbi__context* s, const char* signature) +; 6653 : { +; 6654 : int i; +; 6655 : for (i = 0; signature[i]; ++i) + + 000dc 48 ff c6 inc rsi + 000df 80 3e 00 cmp BYTE PTR [rsi], 0 + 000e2 75 bc jne SHORT $LL21@stbi__hdr_ + +; 6658 : stbi__rewind(s); +; 6659 : return 1; + + 000e4 b8 01 00 00 00 mov eax, 1 + 000e9 eb 02 jmp SHORT $LN18@stbi__hdr_ +$LN35@stbi__hdr_: + +; 6657 : return 0; + + 000eb 33 c0 xor eax, eax +$LN18@stbi__hdr_: + +; 6664 : int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); +; 6665 : stbi__rewind(s); +; 6666 : if (!r) { +; 6667 : r = stbi__hdr_test_core(s, "#?RGBE\n"); +; 6668 : stbi__rewind(s); +; 6669 : } +; 6670 : return r; + + 000ed 48 8b 97 d0 00 + 00 00 mov rdx, QWORD PTR [rdi+208] + 000f4 48 8b 8f d8 00 + 00 00 mov rcx, QWORD PTR [rdi+216] + 000fb 48 89 13 mov QWORD PTR [rbx], rdx + 000fe 48 89 8f c8 00 + 00 00 mov QWORD PTR [rdi+200], rcx + +; 6671 : } + + 00105 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0010a 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 0010f 48 8b 7c 24 40 mov rdi, QWORD PTR [rsp+64] + 00114 48 83 c4 20 add rsp, 32 ; 00000020H + 00118 41 5e pop r14 + 0011a c3 ret 0 +stbi__hdr_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__hdr_gettoken +_TEXT SEGMENT +z$ = 64 +buffer$ = 72 +stbi__hdr_gettoken PROC ; COMDAT + +; 6675 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 57 push rdi + 00010 41 56 push r14 + 00012 41 57 push r15 + 00014 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00018 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 6676 : int len = 0; + + 0001f 45 33 f6 xor r14d, r14d + 00022 4c 8b fa mov r15, rdx + 00025 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00028 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0002f 73 0f jae SHORT $LN9@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 00031 0f b6 38 movzx edi, BYTE PTR [rax] + 00034 48 ff c0 inc rax + 00037 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + 0003e eb 27 jmp SHORT $LN62@stbi__hdr_ +$LN9@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 00040 44 39 71 30 cmp DWORD PTR [rcx+48], r14d + 00044 74 1e je SHORT $LN10@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00046 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0004b 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00052 48 8b cb mov rcx, rbx + 00055 0f b6 38 movzx edi, BYTE PTR [rax] + 00058 48 ff c0 inc rax + 0005b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00062 eb 03 jmp SHORT $LN62@stbi__hdr_ +$LN10@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00064 40 32 ff xor dil, dil +$LN62@stbi__hdr_: + +; 6677 : char c = '\0'; +; 6678 : +; 6679 : c = (char)stbi__get8(z); + + 00067 b8 30 00 00 00 mov eax, 48 ; 00000030H + 0006c 49 8b f6 mov rsi, r14 + 0006f 48 8d 2c 08 lea rbp, QWORD PTR [rax+rcx] +$LL2@stbi__hdr_: + +; 1091 : if (s->io.read) { + + 00073 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00078 74 15 je SHORT $LN42@stbi__hdr_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0007a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0007e ff 53 20 call QWORD PTR [rbx+32] + 00081 85 c0 test eax, eax + 00083 74 1e je SHORT $LN45@stbi__hdr_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00085 83 7d 00 00 cmp DWORD PTR [rbp], 0 + 00089 0f 84 e6 00 00 + 00 je $LN49@stbi__hdr_ +$LN42@stbi__hdr_: + +; 6680 : +; 6681 : while (!stbi__at_eof(z) && c != '\n') { + + 0008f 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00096 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 0009d 0f 83 d2 00 00 + 00 jae $LN49@stbi__hdr_ +$LN45@stbi__hdr_: + 000a3 40 80 ff 0a cmp dil, 10 + 000a7 0f 84 c8 00 00 + 00 je $LN49@stbi__hdr_ + +; 6682 : buffer[len++] = c; + + 000ad 42 88 3c 3e mov BYTE PTR [rsi+r15], dil + 000b1 41 ff c6 inc r14d + 000b4 48 ff c6 inc rsi + +; 6683 : if (len == STBI__HDR_BUFLEN - 1) { + + 000b7 48 81 fe ff 03 + 00 00 cmp rsi, 1023 ; 000003ffH + 000be 74 4e je SHORT $LN41@stbi__hdr_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 000c0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000c7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000ce 73 0f jae SHORT $LN27@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 000d0 0f b6 38 movzx edi, BYTE PTR [rax] + 000d3 48 ff c0 inc rax + 000d6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000dd eb 94 jmp SHORT $LL2@stbi__hdr_ +$LN27@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 000df 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000e3 74 21 je SHORT $LN28@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 000e5 48 8b cb mov rcx, rbx + 000e8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000ed 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000f4 0f b6 38 movzx edi, BYTE PTR [rax] + 000f7 48 ff c0 inc rax + 000fa 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00101 e9 6d ff ff ff jmp $LL2@stbi__hdr_ +$LN28@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00106 40 32 ff xor dil, dil + +; 6686 : ; +; 6687 : break; +; 6688 : } +; 6689 : c = (char)stbi__get8(z); +; 6690 : } + + 00109 e9 65 ff ff ff jmp $LL2@stbi__hdr_ +$LN41@stbi__hdr_: + 0010e 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] +$LL4@stbi__hdr_: + +; 1091 : if (s->io.read) { + + 00112 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00117 74 10 je SHORT $LN43@stbi__hdr_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 00119 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0011d ff 53 20 call QWORD PTR [rbx+32] + 00120 85 c0 test eax, eax + 00122 74 15 je SHORT $LN44@stbi__hdr_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00124 83 3f 00 cmp DWORD PTR [rdi], 0 + 00127 74 4c je SHORT $LN49@stbi__hdr_ +$LN43@stbi__hdr_: + +; 6684 : // flush to end of line +; 6685 : while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + + 00129 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00130 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 00137 73 3c jae SHORT $LN49@stbi__hdr_ +$LN44@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00139 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00140 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00147 73 06 jae SHORT $LN23@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 00149 48 8d 7b 30 lea rdi, QWORD PTR [rbx+48] + 0014d eb 14 jmp SHORT $LN63@stbi__hdr_ +$LN23@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 0014f 83 3f 00 cmp DWORD PTR [rdi], 0 + 00152 74 be je SHORT $LL4@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00154 48 8b cb mov rcx, rbx + 00157 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0015c 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN63@stbi__hdr_: + +; 6684 : // flush to end of line +; 6685 : while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + + 00163 0f b6 08 movzx ecx, BYTE PTR [rax] + 00166 48 ff c0 inc rax + 00169 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00170 80 f9 0a cmp cl, 10 + 00173 75 9d jne SHORT $LL4@stbi__hdr_ +$LN49@stbi__hdr_: + +; 6691 : +; 6692 : buffer[len] = 0; +; 6693 : return buffer; +; 6694 : } + + 00175 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 0017a 48 8b 6c 24 48 mov rbp, QWORD PTR [rsp+72] + 0017f 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 00184 49 63 c6 movsxd rax, r14d + 00187 42 c6 04 38 00 mov BYTE PTR [rax+r15], 0 + 0018c 49 8b c7 mov rax, r15 + 0018f 48 83 c4 20 add rsp, 32 ; 00000020H + 00193 41 5f pop r15 + 00195 41 5e pop r14 + 00197 5f pop rdi + 00198 c3 ret 0 +stbi__hdr_gettoken ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__hdr_convert +_TEXT SEGMENT +output$ = 48 +input$ = 56 +req_comp$ = 64 +stbi__hdr_convert PROC ; COMDAT + +; 6697 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi + 0000a 57 push rdi + 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 6698 : if (input[3] != 0) { + + 0000f 0f b6 42 03 movzx eax, BYTE PTR [rdx+3] + 00013 41 8b d8 mov ebx, r8d + 00016 48 8b f2 mov rsi, rdx + 00019 48 8b f9 mov rdi, rcx + 0001c 84 c0 test al, al + 0001e 0f 84 bc 00 00 + 00 je $LN4@stbi__hdr_ + +; 6699 : float f1; +; 6700 : // Exponent +; 6701 : f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8)); + + 00024 f2 0f 10 05 00 + 00 00 00 movsd xmm0, QWORD PTR __real@3ff0000000000000 + 0002c 8d 90 78 ff ff + ff lea edx, DWORD PTR [rax-136] + 00032 ff 15 00 00 00 + 00 call QWORD PTR __imp_ldexp + 00038 0f 57 d2 xorps xmm2, xmm2 + 0003b f2 0f 5a d0 cvtsd2ss xmm2, xmm0 + +; 6702 : if (req_comp <= 2) + + 0003f 83 fb 02 cmp ebx, 2 + 00042 7f 46 jg SHORT $LN6@stbi__hdr_ + +; 6703 : output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + + 00044 0f b6 46 01 movzx eax, BYTE PTR [rsi+1] + 00048 0f b6 4e 02 movzx ecx, BYTE PTR [rsi+2] + 0004c 03 c8 add ecx, eax + 0004e 0f b6 06 movzx eax, BYTE PTR [rsi] + 00051 03 c8 add ecx, eax + 00053 66 0f 6e c1 movd xmm0, ecx + 00057 0f 5b c0 cvtdq2ps xmm0, xmm0 + 0005a f3 0f 59 c2 mulss xmm0, xmm2 + 0005e f3 0f 5e 05 00 + 00 00 00 divss xmm0, DWORD PTR __real@40400000 + 00066 f3 0f 11 07 movss DWORD PTR [rdi], xmm0 + +; 6708 : } +; 6709 : if (req_comp == 2) output[1] = 1; + + 0006a 83 fb 02 cmp ebx, 2 + 0006d 0f 85 ab 00 00 + 00 jne $LN2@stbi__hdr_ + 00073 c7 47 04 00 00 + 80 3f mov DWORD PTR [rdi+4], 1065353216 ; 3f800000H + +; 6719 : break; +; 6720 : } +; 6721 : } +; 6722 : } + + 0007a 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 0007f 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 00084 48 83 c4 20 add rsp, 32 ; 00000020H + 00088 5f pop rdi + 00089 c3 ret 0 +$LN6@stbi__hdr_: + +; 6704 : else { +; 6705 : output[0] = input[0] * f1; + + 0008a 0f b6 06 movzx eax, BYTE PTR [rsi] + 0008d 66 0f 6e c0 movd xmm0, eax + 00091 0f 5b c0 cvtdq2ps xmm0, xmm0 + 00094 f3 0f 59 c2 mulss xmm0, xmm2 + 00098 f3 0f 11 07 movss DWORD PTR [rdi], xmm0 + +; 6706 : output[1] = input[1] * f1; + + 0009c 0f b6 46 01 movzx eax, BYTE PTR [rsi+1] + 000a0 66 0f 6e c8 movd xmm1, eax + 000a4 0f 5b c9 cvtdq2ps xmm1, xmm1 + 000a7 f3 0f 59 ca mulss xmm1, xmm2 + 000ab f3 0f 11 4f 04 movss DWORD PTR [rdi+4], xmm1 + +; 6707 : output[2] = input[2] * f1; + + 000b0 0f b6 46 02 movzx eax, BYTE PTR [rsi+2] + 000b4 66 0f 6e c0 movd xmm0, eax + 000b8 0f 5b c0 cvtdq2ps xmm0, xmm0 + 000bb f3 0f 59 c2 mulss xmm0, xmm2 + 000bf f3 0f 11 47 08 movss DWORD PTR [rdi+8], xmm0 + +; 6710 : if (req_comp == 4) output[3] = 1; + + 000c4 83 fb 04 cmp ebx, 4 + 000c7 75 55 jne SHORT $LN2@stbi__hdr_ + 000c9 c7 47 0c 00 00 + 80 3f mov DWORD PTR [rdi+12], 1065353216 ; 3f800000H + +; 6719 : break; +; 6720 : } +; 6721 : } +; 6722 : } + + 000d0 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000d5 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 000da 48 83 c4 20 add rsp, 32 ; 00000020H + 000de 5f pop rdi + 000df c3 ret 0 +$LN4@stbi__hdr_: + +; 6711 : } +; 6712 : else { +; 6713 : switch (req_comp) { + + 000e0 83 eb 01 sub ebx, 1 + 000e3 74 35 je SHORT $LN13@stbi__hdr_ + 000e5 83 eb 01 sub ebx, 1 + 000e8 74 29 je SHORT $LN12@stbi__hdr_ + 000ea 83 eb 01 sub ebx, 1 + 000ed 74 0c je SHORT $LN11@stbi__hdr_ + 000ef 83 fb 01 cmp ebx, 1 + 000f2 75 2a jne SHORT $LN2@stbi__hdr_ + +; 6714 : case 4: output[3] = 1; /* fallthrough */ + + 000f4 c7 41 0c 00 00 + 80 3f mov DWORD PTR [rcx+12], 1065353216 ; 3f800000H +$LN11@stbi__hdr_: + +; 6715 : case 3: output[0] = output[1] = output[2] = 0; + + 000fb 33 c0 xor eax, eax + 000fd 48 89 41 04 mov QWORD PTR [rcx+4], rax + +; 6719 : break; +; 6720 : } +; 6721 : } +; 6722 : } + + 00101 89 01 mov DWORD PTR [rcx], eax + 00103 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00108 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 0010d 48 83 c4 20 add rsp, 32 ; 00000020H + 00111 5f pop rdi + 00112 c3 ret 0 +$LN12@stbi__hdr_: + +; 6716 : break; +; 6717 : case 2: output[1] = 1; /* fallthrough */ + + 00113 c7 41 04 00 00 + 80 3f mov DWORD PTR [rcx+4], 1065353216 ; 3f800000H +$LN13@stbi__hdr_: + +; 6718 : case 1: output[0] = 0; + + 0011a 33 c0 xor eax, eax + +; 6719 : break; +; 6720 : } +; 6721 : } +; 6722 : } + + 0011c 89 01 mov DWORD PTR [rcx], eax +$LN2@stbi__hdr_: + 0011e 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 00123 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] + 00128 48 83 c4 20 add rsp, 32 ; 00000020H + 0012c 5f pop rdi + 0012d c3 ret 0 +stbi__hdr_convert ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__hdr_load +_TEXT SEGMENT +scanline$1$ = 32 +hdr_data$1$ = 40 +width$1$ = 48 +j$1$ = 52 +tv1712 = 56 +height$1$ = 60 +tv1792 = 64 +token$ = 72 +tv1713 = 80 +rgbe$17 = 80 +rgbe$18 = 80 +buffer$ = 96 +__$ArrayPad$ = 1120 +s$ = 1216 +x$ = 1224 +y$ = 1232 +comp$ = 1240 +req_comp$ = 1248 +ri$dead$ = 1256 +stbi__hdr_load PROC ; COMDAT + +; 6725 : { + + 00000 40 55 push rbp + 00002 53 push rbx + 00003 56 push rsi + 00004 57 push rdi + 00005 41 54 push r12 + 00007 41 55 push r13 + 00009 41 56 push r14 + 0000b 41 57 push r15 + 0000d 48 8d ac 24 88 + fc ff ff lea rbp, QWORD PTR [rsp-888] + 00015 48 81 ec 78 04 + 00 00 sub rsp, 1144 ; 00000478H + 0001c 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00023 48 33 c4 xor rax, rsp + 00026 48 89 85 60 03 + 00 00 mov QWORD PTR __$ArrayPad$[rbp-256], rax + 0002d 44 8b bd e0 03 + 00 00 mov r15d, DWORD PTR req_comp$[rbp-256] + 00034 4c 8b e2 mov r12, rdx + +; 6726 : char buffer[STBI__HDR_BUFLEN]; +; 6727 : char* token; +; 6728 : int valid = 0; +; 6729 : int width, height; +; 6730 : stbi_uc* scanline; +; 6731 : float* hdr_data; +; 6732 : int len; +; 6733 : unsigned char count, value; +; 6734 : int i, j, k, c1, c2, z; +; 6735 : const char* headerToken; +; 6736 : STBI_NOTUSED(ri); +; 6737 : +; 6738 : // Check identifier +; 6739 : headerToken = stbi__hdr_gettoken(s, buffer); + + 00037 48 8d 54 24 60 lea rdx, QWORD PTR buffer$[rsp] + 0003c 4d 8b f1 mov r14, r9 + 0003f 4d 8b e8 mov r13, r8 + 00042 48 8b d9 mov rbx, rcx + 00045 33 ff xor edi, edi + 00047 e8 00 00 00 00 call stbi__hdr_gettoken + +; 6740 : if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + + 0004c 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ + 00053 48 8b c8 mov rcx, rax + 00056 48 8b f0 mov rsi, rax + 00059 e8 00 00 00 00 call strcmp + 0005e 85 c0 test eax, eax + 00060 74 25 je SHORT $LN30@stbi__hdr_ + 00062 33 c9 xor ecx, ecx + 00064 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ + 0006b 0f 1f 44 00 00 npad 5 +$LL248@stbi__hdr_: + 00070 0f b6 04 0e movzx eax, BYTE PTR [rsi+rcx] + 00074 48 ff c1 inc rcx + 00077 3a 44 0a ff cmp al, BYTE PTR [rdx+rcx-1] + 0007b 0f 85 af 00 00 + 00 jne $LN249@stbi__hdr_ + 00081 48 83 f9 07 cmp rcx, 7 + 00085 75 e9 jne SHORT $LL248@stbi__hdr_ +$LN30@stbi__hdr_: + +; 6742 : +; 6743 : // Parse header +; 6744 : for (;;) { +; 6745 : token = stbi__hdr_gettoken(s, buffer); + + 00087 48 8d 54 24 60 lea rdx, QWORD PTR buffer$[rsp] + 0008c 48 8b cb mov rcx, rbx + 0008f e8 00 00 00 00 call stbi__hdr_gettoken + 00094 48 89 44 24 48 mov QWORD PTR token$[rsp], rax + +; 6746 : if (token[0] == 0) break; + + 00099 40 38 38 cmp BYTE PTR [rax], dil + 0009c 0f 84 b4 07 00 + 00 je $LN224@stbi__hdr_ + 000a2 be 01 00 00 00 mov esi, 1 + 000a7 66 0f 1f 84 00 + 00 00 00 00 npad 9 +$LL2@stbi__hdr_: + +; 6747 : if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + + 000b0 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ + 000b7 48 8b c8 mov rcx, rax + 000ba e8 00 00 00 00 call strcmp + 000bf 85 c0 test eax, eax + 000c1 48 8d 54 24 60 lea rdx, QWORD PTR buffer$[rsp] + 000c6 48 8b cb mov rcx, rbx + 000c9 0f 44 fe cmove edi, esi + 000cc e8 00 00 00 00 call stbi__hdr_gettoken + 000d1 48 89 44 24 48 mov QWORD PTR token$[rsp], rax + 000d6 80 38 00 cmp BYTE PTR [rax], 0 + 000d9 75 d5 jne SHORT $LL2@stbi__hdr_ + +; 6748 : } +; 6749 : +; 6750 : if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + 000db 85 ff test edi, edi + 000dd 0f 84 73 07 00 + 00 je $LN224@stbi__hdr_ + +; 6751 : +; 6752 : // Parse width and height +; 6753 : // can't use sscanf() if we're not using stdio! +; 6754 : token = stbi__hdr_gettoken(s, buffer); + + 000e3 48 8d 54 24 60 lea rdx, QWORD PTR buffer$[rsp] + 000e8 48 8b cb mov rcx, rbx + 000eb e8 00 00 00 00 call stbi__hdr_gettoken + +; 6755 : if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + + 000f0 bf 03 00 00 00 mov edi, 3 + 000f5 48 89 44 24 48 mov QWORD PTR token$[rsp], rax + 000fa 44 8b c7 mov r8d, edi + 000fd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_03HKAKGGJN@?9Y?5@ + 00104 48 8b c8 mov rcx, rax + 00107 ff 15 00 00 00 + 00 call QWORD PTR __imp_strncmp + 0010d 85 c0 test eax, eax + 0010f 74 3e je SHORT $LN34@stbi__hdr_ +$LN332@stbi__hdr_: + +; 6855 : } + + 00111 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00117 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00120 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00124 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ + 0012b e9 40 07 00 00 jmp $LN327@stbi__hdr_ +$LN249@stbi__hdr_: + +; 431 : stbi__g_failure_reason = str; + + 00130 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00136 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0013f 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00143 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07NCIOKENI@not?5HDR@ + +; 6741 : return stbi__errpf("not HDR", "Corrupt HDR image"); + + 0014a e9 21 07 00 00 jmp $LN327@stbi__hdr_ +$LN34@stbi__hdr_: + +; 6756 : token += 3; + + 0014f 48 8b 4c 24 48 mov rcx, QWORD PTR token$[rsp] + +; 6757 : height = (int)strtol(token, &token, 10); + + 00154 48 8d 54 24 48 lea rdx, QWORD PTR token$[rsp] + 00159 48 03 cf add rcx, rdi + 0015c 41 b8 0a 00 00 + 00 mov r8d, 10 + 00162 48 89 4c 24 48 mov QWORD PTR token$[rsp], rcx + 00167 ff 15 00 00 00 + 00 call QWORD PTR __imp_strtol + +; 6758 : while (*token == ' ') ++token; + + 0016d 48 8b 4c 24 48 mov rcx, QWORD PTR token$[rsp] + 00172 8b f0 mov esi, eax + 00174 89 44 24 3c mov DWORD PTR height$1$[rsp], eax + 00178 80 39 20 cmp BYTE PTR [rcx], 32 ; 00000020H + 0017b 75 10 jne SHORT $LN6@stbi__hdr_ + 0017d 0f 1f 00 npad 3 +$LL5@stbi__hdr_: + 00180 48 ff c1 inc rcx + 00183 48 89 4c 24 48 mov QWORD PTR token$[rsp], rcx + 00188 80 39 20 cmp BYTE PTR [rcx], 32 ; 00000020H + 0018b 74 f3 je SHORT $LL5@stbi__hdr_ +$LN6@stbi__hdr_: + +; 6759 : if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + + 0018d 4c 8b c7 mov r8, rdi + 00190 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_03FOKDFDHG@?$CLX?5@ + 00197 ff 15 00 00 00 + 00 call QWORD PTR __imp_strncmp + 0019d 85 c0 test eax, eax + 0019f 0f 85 6c ff ff + ff jne $LN332@stbi__hdr_ + +; 6760 : token += 3; + + 001a5 48 8b 4c 24 48 mov rcx, QWORD PTR token$[rsp] + +; 6761 : width = (int)strtol(token, NULL, 10); + + 001aa 44 8d 40 0a lea r8d, QWORD PTR [rax+10] + 001ae 48 03 cf add rcx, rdi + 001b1 33 d2 xor edx, edx + 001b3 48 89 4c 24 48 mov QWORD PTR token$[rsp], rcx + 001b8 ff 15 00 00 00 + 00 call QWORD PTR __imp_strtol + 001be 89 44 24 30 mov DWORD PTR width$1$[rsp], eax + +; 6762 : +; 6763 : if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large", "Very large image (corrupt?)"); + + 001c2 81 fe 00 00 00 + 01 cmp esi, 16777216 ; 01000000H + 001c8 7e 1f jle SHORT $LN36@stbi__hdr_ +$LN333@stbi__hdr_: + +; 6855 : } + + 001ca 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001d0 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001d9 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001dd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 001e4 e9 87 06 00 00 jmp $LN327@stbi__hdr_ +$LN36@stbi__hdr_: + +; 6764 : if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large", "Very large image (corrupt?)"); + + 001e9 3d 00 00 00 01 cmp eax, 16777216 ; 01000000H + 001ee 7f da jg SHORT $LN333@stbi__hdr_ + +; 6765 : +; 6766 : *x = width; + + 001f0 41 89 04 24 mov DWORD PTR [r12], eax + +; 6767 : *y = height; + + 001f4 41 89 75 00 mov DWORD PTR [r13], esi + +; 6768 : +; 6769 : if (comp) *comp = 3; + + 001f8 4d 85 f6 test r14, r14 + 001fb 74 03 je SHORT $LN38@stbi__hdr_ + 001fd 41 89 3e mov DWORD PTR [r14], edi +$LN38@stbi__hdr_: + +; 467 : if (a < 0 || b < 0) return 0; + + 00200 45 85 ff test r15d, r15d + 00203 44 8b e8 mov r13d, eax + 00206 41 0f 45 ff cmovne edi, r15d + 0020a 48 89 7c 24 40 mov QWORD PTR tv1792[rsp], rdi + 0020f 85 c0 test eax, eax + 00211 78 b7 js SHORT $LN333@stbi__hdr_ + 00213 85 f6 test esi, esi + 00215 78 b3 js SHORT $LN333@stbi__hdr_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00217 74 0d je SHORT $LN235@stbi__hdr_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00219 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0021e 99 cdq + 0021f f7 fe idiv esi + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00221 44 3b e8 cmp r13d, eax + 00224 7f a4 jg SHORT $LN333@stbi__hdr_ +$LN235@stbi__hdr_: + 00226 41 8b cd mov ecx, r13d + 00229 0f af ce imul ecx, esi + +; 467 : if (a < 0 || b < 0) return 0; + + 0022c 85 c9 test ecx, ecx + 0022e 78 9a js SHORT $LN333@stbi__hdr_ + 00230 85 ff test edi, edi + 00232 78 96 js SHORT $LN333@stbi__hdr_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00234 74 0c je SHORT $LN234@stbi__hdr_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00236 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0023b 99 cdq + 0023c f7 ff idiv edi + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0023e 3b c8 cmp ecx, eax + 00240 7f 88 jg SHORT $LN333@stbi__hdr_ +$LN234@stbi__hdr_: + 00242 8b c7 mov eax, edi + 00244 41 0f af c5 imul eax, r13d + 00248 0f af c6 imul eax, esi + +; 467 : if (a < 0 || b < 0) return 0; + + 0024b 85 c0 test eax, eax + 0024d 0f 88 77 ff ff + ff js $LN333@stbi__hdr_ + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00253 3d ff ff ff 1f cmp eax, 536870911 ; 1fffffffH + 00258 0f 8f 6c ff ff + ff jg $LN333@stbi__hdr_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0025e 85 f6 test esi, esi + 00260 74 11 je SHORT $LN328@stbi__hdr_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00262 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00267 99 cdq + 00268 f7 fe idiv esi + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0026a 44 3b e8 cmp r13d, eax + 0026d 0f 8f 00 04 00 + 00 jg $LN225@stbi__hdr_ +$LN328@stbi__hdr_: + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00273 41 8b cd mov ecx, r13d + 00276 0f af ce imul ecx, esi + 00279 85 ff test edi, edi + 0027b 75 08 jne SHORT $LN115@stbi__hdr_ + 0027d 41 8b c5 mov eax, r13d + 00280 0f af c7 imul eax, edi + 00283 eb 16 jmp SHORT $LN329@stbi__hdr_ +$LN115@stbi__hdr_: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00285 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0028a 99 cdq + 0028b f7 ff idiv edi + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0028d 3b c8 cmp ecx, eax + 0028f 0f 8f de 03 00 + 00 jg $LN225@stbi__hdr_ + 00295 8b c7 mov eax, edi + 00297 41 0f af c5 imul eax, r13d +$LN329@stbi__hdr_: + +; 516 : return stbi__malloc(a * b * c * d + add); + + 0029b 89 44 24 38 mov DWORD PTR tv1712[rsp], eax + 0029f 0f af c6 imul eax, esi + 002a2 c1 e0 02 shl eax, 2 + 002a5 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 002a8 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 002ae 48 89 44 24 28 mov QWORD PTR hdr_data$1$[rsp], rax + 002b3 4c 8b e0 mov r12, rax + +; 6770 : if (req_comp == 0) req_comp = 3; +; 6771 : +; 6772 : if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) +; 6773 : return stbi__errpf("too large", "HDR image is too large"); +; 6774 : +; 6775 : // Read data +; 6776 : hdr_data = (float*)stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); +; 6777 : if (!hdr_data) + + 002b6 48 85 c0 test rax, rax + 002b9 0f 84 b4 03 00 + 00 je $LN225@stbi__hdr_ + +; 6778 : return stbi__errpf("outofmem", "Out of memory"); +; 6779 : +; 6780 : // Load image data +; 6781 : // image data is stored as some number of sca +; 6782 : if (width < 8 || width >= 32768) { + + 002bf 41 8d 4d f8 lea ecx, DWORD PTR [r13-8] + 002c3 81 f9 f7 7f 00 + 00 cmp ecx, 32759 ; 00007ff7H + 002c9 0f 87 a4 04 00 + 00 ja $LN44@stbi__hdr_ + +; 6790 : } +; 6791 : } +; 6792 : } +; 6793 : else { +; 6794 : // Read RLE-encoded data +; 6795 : scanline = NULL; + + 002cf 33 c0 xor eax, eax + 002d1 48 89 44 24 20 mov QWORD PTR scanline$1$[rsp], rax + +; 6796 : +; 6797 : for (j = 0; j < height; ++j) { + + 002d6 89 44 24 34 mov DWORD PTR j$1$[rsp], eax + 002da 85 f6 test esi, esi + 002dc 0f 8e 6f 05 00 + 00 jle $LN8@stbi__hdr_ + 002e2 89 44 24 50 mov DWORD PTR tv1713[rsp], eax + 002e6 66 66 0f 1f 84 + 00 00 00 00 00 npad 10 +$LL15@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 002f0 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 002f7 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 002fe 73 10 jae SHORT $LN136@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 00300 44 0f b6 38 movzx r15d, BYTE PTR [rax] + 00304 48 ff c0 inc rax + 00307 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0030e eb 28 jmp SHORT $LN330@stbi__hdr_ +$LN136@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 00310 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00314 74 1f je SHORT $LN137@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00316 48 8b cb mov rcx, rbx + 00319 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0031e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00325 44 0f b6 38 movzx r15d, BYTE PTR [rax] + 00329 48 ff c0 inc rax + 0032c 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00333 eb 03 jmp SHORT $LN330@stbi__hdr_ +$LN137@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00335 45 32 ff xor r15b, r15b +$LN330@stbi__hdr_: + +; 6798 : c1 = stbi__get8(s); + + 00338 ba 30 00 00 00 mov edx, 48 ; 00000030H + 0033d 48 8b cb mov rcx, rbx + 00340 4c 8d 34 1a lea r14, QWORD PTR [rdx+rbx] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00344 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0034b 73 0f jae SHORT $LN140@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 0034d 0f b6 30 movzx esi, BYTE PTR [rax] + 00350 48 ff c0 inc rax + 00353 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0035a eb 27 jmp SHORT $LN139@stbi__hdr_ +$LN140@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 0035c 41 83 3e 00 cmp DWORD PTR [r14], 0 + 00360 74 1e je SHORT $LN141@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00362 48 8b cb mov rcx, rbx + 00365 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0036a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00371 0f b6 30 movzx esi, BYTE PTR [rax] + 00374 48 ff c0 inc rax + 00377 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0037e eb 03 jmp SHORT $LN139@stbi__hdr_ +$LN141@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00380 40 32 f6 xor sil, sil +$LN139@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00383 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0038a 73 0f jae SHORT $LN132@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 0038c 0f b6 08 movzx ecx, BYTE PTR [rax] + 0038f 48 ff c0 inc rax + 00392 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00399 eb 26 jmp SHORT $LN131@stbi__hdr_ +$LN132@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 0039b 41 83 3e 00 cmp DWORD PTR [r14], 0 + 0039f 74 1e je SHORT $LN133@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 003a1 48 8b cb mov rcx, rbx + 003a4 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 003a9 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 003b0 0f b6 08 movzx ecx, BYTE PTR [rax] + 003b3 48 ff c0 inc rax + 003b6 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003bd eb 02 jmp SHORT $LN131@stbi__hdr_ +$LN133@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 003bf 32 c9 xor cl, cl +$LN131@stbi__hdr_: + +; 6799 : c2 = stbi__get8(s); +; 6800 : len = stbi__get8(s); + + 003c1 0f b6 f9 movzx edi, cl + +; 6801 : if (c1 != 2 || c2 != 2 || (len & 0x80)) { + + 003c4 41 80 ff 02 cmp r15b, 2 + 003c8 0f 85 2c 03 00 + 00 jne $LN46@stbi__hdr_ + 003ce 41 3a f7 cmp sil, r15b + 003d1 0f 85 23 03 00 + 00 jne $LN46@stbi__hdr_ + 003d7 40 84 ff test dil, dil + 003da 0f 88 1a 03 00 + 00 js $LN46@stbi__hdr_ + +; 6814 : } +; 6815 : len <<= 8; + + 003e0 c1 e7 08 shl edi, 8 + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 003e3 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 003ea 73 0f jae SHORT $LN162@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 003ec 0f b6 08 movzx ecx, BYTE PTR [rax] + 003ef 48 ff c0 inc rax + 003f2 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 003f9 eb 26 jmp SHORT $LN161@stbi__hdr_ +$LN162@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 003fb 41 83 3e 00 cmp DWORD PTR [r14], 0 + 003ff 74 1e je SHORT $LN163@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00401 48 8b cb mov rcx, rbx + 00404 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00409 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00410 0f b6 08 movzx ecx, BYTE PTR [rax] + 00413 48 ff c0 inc rax + 00416 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0041d eb 02 jmp SHORT $LN161@stbi__hdr_ +$LN163@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 0041f 32 c9 xor cl, cl +$LN161@stbi__hdr_: + +; 6816 : len |= stbi__get8(s); + + 00421 0f b6 c1 movzx eax, cl + 00424 0b c7 or eax, edi + +; 6817 : if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + + 00426 41 3b c5 cmp eax, r13d + 00429 0f 85 98 02 00 + 00 jne $LN199@stbi__hdr_ + +; 6818 : if (scanline == NULL) { + + 0042f 4c 8b 4c 24 20 mov r9, QWORD PTR scanline$1$[rsp] + 00434 4d 85 c9 test r9, r9 + 00437 75 22 jne SHORT $LN49@stbi__hdr_ + +; 502 : return stbi__malloc(a * b + add); + + 00439 42 8d 04 ad 00 + 00 00 00 lea eax, DWORD PTR [r13*4] + 00441 48 63 c8 movsxd rcx, eax + +; 438 : return STBI_MALLOC(size); + + 00444 ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 0044a 48 89 44 24 20 mov QWORD PTR scanline$1$[rsp], rax + 0044f 4c 8b c8 mov r9, rax + +; 6819 : scanline = (stbi_uc*)stbi__malloc_mad2(width, 4, 0); +; 6820 : if (!scanline) { + + 00452 48 85 c0 test rax, rax + 00455 0f 84 0f 02 00 + 00 je $LN200@stbi__hdr_ +$LN49@stbi__hdr_: + +; 6822 : return stbi__errpf("outofmem", "Out of memory"); +; 6823 : } +; 6824 : } +; 6825 : +; 6826 : for (k = 0; k < 4; ++k) { + + 0045b 45 33 e4 xor r12d, r12d + 0045e 66 90 npad 2 +$LL18@stbi__hdr_: + +; 6827 : int nleft; +; 6828 : i = 0; + + 00460 45 33 f6 xor r14d, r14d + 00463 45 33 ff xor r15d, r15d + +; 6829 : while ((nleft = width - i) > 0) { + + 00466 41 8b f5 mov esi, r13d + 00469 45 85 ed test r13d, r13d + 0046c 0f 8e 62 01 00 + 00 jle $LN16@stbi__hdr_ + 00472 0f 1f 40 00 66 + 66 0f 1f 84 00 + 00 00 00 00 npad 14 +$LL19@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00480 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00487 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0048e 72 19 jb SHORT $LN331@stbi__hdr_ + +; 1079 : if (s->read_from_callbacks) { + + 00490 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00494 0f 84 f8 01 00 + 00 je $LN196@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 0049a 48 8b cb mov rcx, rbx + 0049d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 004a2 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] +$LN331@stbi__hdr_: + +; 6830 : count = stbi__get8(s); +; 6831 : if (count > 128) { + + 004a9 0f b6 38 movzx edi, BYTE PTR [rax] + 004ac 48 ff c0 inc rax + 004af 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 004b6 40 80 ff 80 cmp dil, 128 ; 00000080H + 004ba 0f 86 84 00 00 + 00 jbe $LN50@stbi__hdr_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 004c0 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 004c7 73 0f jae SHORT $LN154@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 004c9 0f b6 10 movzx edx, BYTE PTR [rax] + 004cc 48 ff c0 inc rax + 004cf 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 004d6 eb 26 jmp SHORT $LN153@stbi__hdr_ +$LN154@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 004d8 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 004dc 74 1e je SHORT $LN155@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 004de 48 8b cb mov rcx, rbx + 004e1 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 004e6 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 004ed 0f b6 10 movzx edx, BYTE PTR [rax] + 004f0 48 ff c0 inc rax + 004f3 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 004fa eb 02 jmp SHORT $LN153@stbi__hdr_ +$LN155@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 004fc 32 d2 xor dl, dl +$LN153@stbi__hdr_: + +; 6832 : // Run +; 6833 : value = stbi__get8(s); +; 6834 : count -= 128; + + 004fe 40 80 c7 80 add dil, 128 ; 00000080H + +; 6835 : if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + + 00502 0f 84 8a 01 00 + 00 je $LN196@stbi__hdr_ + 00508 44 0f b6 c7 movzx r8d, dil + 0050c 44 3b c6 cmp r8d, esi + 0050f 0f 87 7d 01 00 + 00 ja $LN196@stbi__hdr_ + +; 6836 : for (z = 0; z < count; ++z) + + 00515 4c 8b 4c 24 20 mov r9, QWORD PTR scanline$1$[rsp] + 0051a 40 84 ff test dil, dil + 0051d 0f 84 a3 00 00 + 00 je $LN25@stbi__hdr_ + 00523 4b 8d 04 bc lea rax, QWORD PTR [r12+r15*4] + 00527 45 03 f0 add r14d, r8d + 0052a 49 03 c1 add rax, r9 + 0052d 41 8b c8 mov ecx, r8d + 00530 4d 03 f8 add r15, r8 +$LL23@stbi__hdr_: + +; 6837 : scanline[i++ * 4 + k] = value; + + 00533 88 10 mov BYTE PTR [rax], dl + 00535 48 8d 40 04 lea rax, QWORD PTR [rax+4] + 00539 48 83 e9 01 sub rcx, 1 + 0053d 75 f4 jne SHORT $LL23@stbi__hdr_ + +; 6838 : } + + 0053f e9 82 00 00 00 jmp $LN25@stbi__hdr_ +$LN50@stbi__hdr_: + +; 6839 : else { +; 6840 : // Dump +; 6841 : if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + + 00544 40 84 ff test dil, dil + 00547 0f 84 45 01 00 + 00 je $LN196@stbi__hdr_ + 0054d 40 0f b6 c7 movzx eax, dil + 00551 3b c6 cmp eax, esi + 00553 0f 87 39 01 00 + 00 ja $LN196@stbi__hdr_ + +; 6842 : for (z = 0; z < count; ++z) + + 00559 40 84 ff test dil, dil + 0055c 74 63 je SHORT $LN256@stbi__hdr_ + 0055e 4b 8d 3c bc lea rdi, QWORD PTR [r12+r15*4] + 00562 44 03 f0 add r14d, eax + 00565 48 03 7c 24 20 add rdi, QWORD PTR scanline$1$[rsp] + 0056a 8b f0 mov esi, eax + 0056c 4c 03 f8 add r15, rax + 0056f 90 npad 1 +$LL26@stbi__hdr_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00570 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00577 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0057e 73 0f jae SHORT $LN150@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 00580 0f b6 08 movzx ecx, BYTE PTR [rax] + 00583 48 ff c0 inc rax + 00586 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0058d eb 26 jmp SHORT $LN149@stbi__hdr_ +$LN150@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 0058f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00593 74 1e je SHORT $LN151@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00595 48 8b cb mov rcx, rbx + 00598 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0059d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 005a4 0f b6 08 movzx ecx, BYTE PTR [rax] + 005a7 48 ff c0 inc rax + 005aa 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 005b1 eb 02 jmp SHORT $LN149@stbi__hdr_ +$LN151@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 005b3 32 c9 xor cl, cl +$LN149@stbi__hdr_: + +; 6843 : scanline[i++ * 4 + k] = stbi__get8(s); + + 005b5 88 0f mov BYTE PTR [rdi], cl + 005b7 48 83 c7 04 add rdi, 4 + 005bb 48 83 ee 01 sub rsi, 1 + 005bf 75 af jne SHORT $LL26@stbi__hdr_ +$LN256@stbi__hdr_: + +; 6829 : while ((nleft = width - i) > 0) { + + 005c1 4c 8b 4c 24 20 mov r9, QWORD PTR scanline$1$[rsp] +$LN25@stbi__hdr_: + 005c6 41 8b f5 mov esi, r13d + 005c9 41 2b f6 sub esi, r14d + 005cc 85 f6 test esi, esi + 005ce 0f 8f ac fe ff + ff jg $LL19@stbi__hdr_ +$LN16@stbi__hdr_: + +; 6822 : return stbi__errpf("outofmem", "Out of memory"); +; 6823 : } +; 6824 : } +; 6825 : +; 6826 : for (k = 0; k < 4; ++k) { + + 005d4 49 ff c4 inc r12 + 005d7 49 83 fc 04 cmp r12, 4 + 005db 0f 8c 7f fe ff + ff jl $LL18@stbi__hdr_ + +; 6844 : } +; 6845 : } +; 6846 : } +; 6847 : for (i = 0; i < width; ++i) + + 005e1 4c 8b 64 24 28 mov r12, QWORD PTR hdr_data$1$[rsp] + 005e6 45 85 ed test r13d, r13d + 005e9 7e 45 jle SHORT $LN13@stbi__hdr_ + 005eb 48 63 44 24 50 movsxd rax, DWORD PTR tv1713[rsp] + 005f0 49 8b f9 mov rdi, r9 + 005f3 4c 63 7c 24 40 movsxd r15, DWORD PTR tv1792[rsp] + 005f8 45 8b f5 mov r14d, r13d + 005fb 4c 8b 6c 24 40 mov r13, QWORD PTR tv1792[rsp] + 00600 49 8d 34 84 lea rsi, QWORD PTR [r12+rax*4] + 00604 49 c1 e7 02 shl r15, 2 + 00608 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL29@stbi__hdr_: + +; 6848 : stbi__hdr_convert(hdr_data + (j * width + i) * req_comp, scanline + i * 4, req_comp); + + 00610 45 8b c5 mov r8d, r13d + 00613 48 8b d7 mov rdx, rdi + 00616 48 8b ce mov rcx, rsi + 00619 e8 00 00 00 00 call stbi__hdr_convert + 0061e 49 03 f7 add rsi, r15 + 00621 48 83 c7 04 add rdi, 4 + 00625 49 83 ee 01 sub r14, 1 + 00629 75 e5 jne SHORT $LL29@stbi__hdr_ + 0062b 44 8b 6c 24 30 mov r13d, DWORD PTR width$1$[rsp] +$LN13@stbi__hdr_: + +; 6796 : +; 6797 : for (j = 0; j < height; ++j) { + + 00630 8b 4c 24 34 mov ecx, DWORD PTR j$1$[rsp] + 00634 44 8b 74 24 38 mov r14d, DWORD PTR tv1712[rsp] + 00639 ff c1 inc ecx + 0063b 44 01 74 24 50 add DWORD PTR tv1713[rsp], r14d + 00640 89 4c 24 34 mov DWORD PTR j$1$[rsp], ecx + 00644 3b 4c 24 3c cmp ecx, DWORD PTR height$1$[rsp] + 00648 0f 8c a2 fc ff + ff jl $LL15@stbi__hdr_ + +; 6849 : } +; 6850 : if (scanline) + + 0064e 48 8b 4c 24 20 mov rcx, QWORD PTR scanline$1$[rsp] + 00653 48 85 c9 test rcx, rcx + 00656 0f 84 f5 01 00 + 00 je $LN8@stbi__hdr_ + +; 6851 : STBI_FREE(scanline); + + 0065c ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 6852 : } +; 6853 : +; 6854 : return hdr_data; + + 00662 49 8b c4 mov rax, r12 + 00665 e9 11 02 00 00 jmp $LN1@stbi__hdr_ +$LN200@stbi__hdr_: + +; 6821 : STBI_FREE(hdr_data); + + 0066a 49 8b cc mov rcx, r12 + 0066d ff 15 00 00 00 + 00 call QWORD PTR __imp_free +$LN225@stbi__hdr_: + +; 6855 : } + + 00673 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00679 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00682 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00686 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 0068d e9 de 01 00 00 jmp $LN327@stbi__hdr_ +$LN196@stbi__hdr_: + 00692 48 8b 4c 24 28 mov rcx, QWORD PTR hdr_data$1$[rsp] + 00697 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 0069d 48 8b 4c 24 20 mov rcx, QWORD PTR scanline$1$[rsp] + 006a2 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 006a8 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 006ae 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006b7 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006bb 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@ + 006c2 e9 a9 01 00 00 jmp $LN327@stbi__hdr_ +$LN199@stbi__hdr_: + +; 6817 : if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + + 006c7 49 8b cc mov rcx, r12 + 006ca ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 006d0 48 8b 4c 24 20 mov rcx, QWORD PTR scanline$1$[rsp] + 006d5 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 006db 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 006e1 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 006ea 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 006ee 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ + +; 6817 : if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + + 006f5 e9 76 01 00 00 jmp $LN327@stbi__hdr_ +$LN46@stbi__hdr_: + +; 6802 : // not run-length encoded, so we have to actually use THIS data as a decoded +; 6803 : // pixel (note this can't be a valid pixel--one of RGB must be >= 128) +; 6804 : stbi_uc rgbe[4]; +; 6805 : rgbe[0] = (stbi_uc)c1; + + 006fa 44 88 7c 24 50 mov BYTE PTR rgbe$17[rsp], r15b + +; 6806 : rgbe[1] = (stbi_uc)c2; + + 006ff 40 88 74 24 51 mov BYTE PTR rgbe$17[rsp+1], sil + +; 6807 : rgbe[2] = (stbi_uc)len; + + 00704 88 4c 24 52 mov BYTE PTR rgbe$17[rsp+2], cl + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00708 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0070f 73 0f jae SHORT $LN144@stbi__hdr_ + +; 1078 : return *s->img_buffer++; + + 00711 0f b6 08 movzx ecx, BYTE PTR [rax] + 00714 48 ff c0 inc rax + 00717 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0071e eb 26 jmp SHORT $LN143@stbi__hdr_ +$LN144@stbi__hdr_: + +; 1079 : if (s->read_from_callbacks) { + + 00720 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00724 74 1e je SHORT $LN145@stbi__hdr_ + +; 1080 : stbi__refill_buffer(s); + + 00726 48 8b cb mov rcx, rbx + 00729 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0072e 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00735 0f b6 08 movzx ecx, BYTE PTR [rax] + 00738 48 ff c0 inc rax + 0073b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00742 eb 02 jmp SHORT $LN143@stbi__hdr_ +$LN145@stbi__hdr_: + +; 1082 : } +; 1083 : return 0; + + 00744 32 c9 xor cl, cl +$LN143@stbi__hdr_: + +; 6808 : rgbe[3] = (stbi_uc)stbi__get8(s); +; 6809 : stbi__hdr_convert(hdr_data, rgbe, req_comp); + + 00746 48 8b 7c 24 40 mov rdi, QWORD PTR tv1792[rsp] + 0074b 48 8d 54 24 50 lea rdx, QWORD PTR rgbe$17[rsp] + 00750 88 4c 24 53 mov BYTE PTR rgbe$17[rsp+3], cl + 00754 44 8b c7 mov r8d, edi + 00757 49 8b cc mov rcx, r12 + 0075a e8 00 00 00 00 call stbi__hdr_convert + +; 6810 : i = 1; +; 6811 : j = 0; +; 6812 : STBI_FREE(scanline); + + 0075f 48 8b 4c 24 20 mov rcx, QWORD PTR scanline$1$[rsp] + 00764 45 33 ff xor r15d, r15d + 00767 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 6813 : goto main_decode_loop; // yes, this makes no sense + + 0076d 45 8d 67 01 lea r12d, QWORD PTR [r15+1] + 00771 eb 18 jmp SHORT $main_decode_loop$335 +$LN44@stbi__hdr_: + +; 6783 : // Read flat data +; 6784 : for (j = 0; j < height; ++j) { + + 00773 45 33 ff xor r15d, r15d +$LN9@stbi__hdr_: + 00776 44 3b fe cmp r15d, esi + 00779 0f 8d cd 00 00 + 00 jge $LN254@stbi__hdr_ + +; 6785 : for (i = 0; i < width; ++i) { + + 0077f 45 33 e4 xor r12d, r12d +$LN12@stbi__hdr_: + 00782 45 3b e5 cmp r12d, r13d + 00785 0f 8d b5 00 00 + 00 jge $LN7@stbi__hdr_ +$main_decode_loop$335: + +; 1129 : if (s->io.read) { + + 0078b 4c 8b 73 10 mov r14, QWORD PTR [rbx+16] + 0078f 4d 85 f6 test r14, r14 + 00792 74 55 je SHORT $LN228@stbi__hdr_ + +; 1130 : int blen = (int)(s->img_buffer_end - s->img_buffer); + + 00794 8b b3 c8 00 00 + 00 mov esi, DWORD PTR [rbx+200] + 0079a 2b b3 c0 00 00 + 00 sub esi, DWORD PTR [rbx+192] + +; 1131 : if (blen < n) { + + 007a0 83 fe 04 cmp esi, 4 + 007a3 7d 44 jge SHORT $LN228@stbi__hdr_ + +; 1132 : int res, count; +; 1133 : +; 1134 : memcpy(buffer, s->img_buffer, blen); + + 007a5 48 8b 93 c0 00 + 00 00 mov rdx, QWORD PTR [rbx+192] + 007ac 48 8d 4c 24 50 lea rcx, QWORD PTR rgbe$18[rsp] + 007b1 48 63 fe movsxd rdi, esi + 007b4 4c 8b c7 mov r8, rdi + 007b7 e8 00 00 00 00 call memcpy + +; 1135 : +; 1136 : count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); + + 007bc 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 007c0 48 8d 54 24 50 lea rdx, QWORD PTR rgbe$18[rsp] + 007c5 41 b8 04 00 00 + 00 mov r8d, 4 + 007cb 48 03 d7 add rdx, rdi + 007ce 44 2b c6 sub r8d, esi + 007d1 41 ff d6 call r14 + +; 1137 : res = (count == (n - blen)); +; 1138 : s->img_buffer = s->img_buffer_end; + + 007d4 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + +; 1139 : return res; + + 007db 48 8b 7c 24 40 mov rdi, QWORD PTR tv1792[rsp] + 007e0 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 007e7 eb 21 jmp SHORT $LN65@stbi__hdr_ +$LN228@stbi__hdr_: + +; 1140 : } +; 1141 : } +; 1142 : +; 1143 : if (s->img_buffer + n <= s->img_buffer_end) { + + 007e9 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 007f0 48 8d 48 04 lea rcx, QWORD PTR [rax+4] + 007f4 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 007fb 77 0d ja SHORT $LN65@stbi__hdr_ + +; 1144 : memcpy(buffer, s->img_buffer, n); + + 007fd 8b 00 mov eax, DWORD PTR [rax] + 007ff 89 44 24 50 mov DWORD PTR rgbe$18[rsp], eax + +; 1145 : s->img_buffer += n; + + 00803 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx +$LN65@stbi__hdr_: + +; 6786 : stbi_uc rgbe[4]; +; 6787 : main_decode_loop: +; 6788 : stbi__getn(s, rgbe, 4); +; 6789 : stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + + 0080a 8b c7 mov eax, edi + 0080c 48 8d 54 24 50 lea rdx, QWORD PTR rgbe$18[rsp] + 00811 41 0f af c7 imul eax, r15d + 00815 44 8b c7 mov r8d, edi + 00818 41 0f af c5 imul eax, r13d + 0081c 48 63 c8 movsxd rcx, eax + 0081f 8b c7 mov eax, edi + 00821 41 0f af c4 imul eax, r12d + 00825 48 98 cdqe + 00827 48 03 c8 add rcx, rax + 0082a 48 8b 44 24 28 mov rax, QWORD PTR hdr_data$1$[rsp] + 0082f 48 8d 0c 88 lea rcx, QWORD PTR [rax+rcx*4] + 00833 e8 00 00 00 00 call stbi__hdr_convert + 00838 41 ff c4 inc r12d + 0083b e9 42 ff ff ff jmp $LN12@stbi__hdr_ +$LN7@stbi__hdr_: + +; 6783 : // Read flat data +; 6784 : for (j = 0; j < height; ++j) { + + 00840 8b 74 24 3c mov esi, DWORD PTR height$1$[rsp] + 00844 41 ff c7 inc r15d + 00847 e9 2a ff ff ff jmp $LN9@stbi__hdr_ +$LN254@stbi__hdr_: + 0084c 4c 8b 64 24 28 mov r12, QWORD PTR hdr_data$1$[rsp] +$LN8@stbi__hdr_: + +; 6852 : } +; 6853 : +; 6854 : return hdr_data; + + 00851 49 8b c4 mov rax, r12 + 00854 eb 25 jmp SHORT $LN1@stbi__hdr_ +$LN224@stbi__hdr_: + +; 431 : stbi__g_failure_reason = str; + + 00856 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0085c 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00865 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00869 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BD@NKJFFLKL@unsupported?5format@ +$LN327@stbi__hdr_: + +; 6855 : } + + 00870 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 00875 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 00879 33 c0 xor eax, eax +$LN1@stbi__hdr_: + 0087b 48 8b 8d 60 03 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp-256] + 00882 48 33 cc xor rcx, rsp + 00885 e8 00 00 00 00 call __security_check_cookie + 0088a 48 81 c4 78 04 + 00 00 add rsp, 1144 ; 00000478H + 00891 41 5f pop r15 + 00893 41 5e pop r14 + 00895 41 5d pop r13 + 00897 41 5c pop r12 + 00899 5f pop rdi + 0089a 5e pop rsi + 0089b 5b pop rbx + 0089c 5d pop rbp + 0089d c3 ret 0 +stbi__hdr_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_test +_TEXT SEGMENT +s$ = 48 +stbi__pnm_test PROC ; COMDAT + +; 7063 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 57 push rdi + 00006 48 83 ec 20 sub rsp, 32 ; 00000020H + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0000a 48 8b 81 c0 00 + 00 00 mov rax, QWORD PTR [rcx+192] + +; 7063 : { + + 00011 48 8b d9 mov rbx, rcx + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00014 48 3b 81 c8 00 + 00 00 cmp rax, QWORD PTR [rcx+200] + 0001b 73 0f jae SHORT $LN6@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 0001d 0f b6 38 movzx edi, BYTE PTR [rax] + 00020 48 ff c0 inc rax + 00023 48 89 81 c0 00 + 00 00 mov QWORD PTR [rcx+192], rax + 0002a eb 24 jmp SHORT $LN22@stbi__pnm_ +$LN6@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 0002c 83 79 30 00 cmp DWORD PTR [rcx+48], 0 + 00030 74 1b je SHORT $LN7@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 00032 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00037 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 0003e 0f b6 38 movzx edi, BYTE PTR [rax] + 00041 48 ff c0 inc rax + 00044 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0004b eb 03 jmp SHORT $LN22@stbi__pnm_ +$LN7@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 0004d 40 32 ff xor dil, dil +$LN22@stbi__pnm_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00050 b9 30 00 00 00 mov ecx, 48 ; 00000030H + 00055 48 8b d3 mov rdx, rbx + 00058 4c 8d 04 19 lea r8, QWORD PTR [rcx+rbx] + 0005c 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 00063 73 0f jae SHORT $LN10@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 00065 0f b6 08 movzx ecx, BYTE PTR [rax] + 00068 48 ff c0 inc rax + 0006b 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00072 eb 26 jmp SHORT $LN9@stbi__pnm_ +$LN10@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 00074 41 83 38 00 cmp DWORD PTR [r8], 0 + 00078 74 1e je SHORT $LN11@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 0007a 48 8b cb mov rcx, rbx + 0007d e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00082 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00089 0f b6 08 movzx ecx, BYTE PTR [rax] + 0008c 48 ff c0 inc rax + 0008f 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 00096 eb 02 jmp SHORT $LN9@stbi__pnm_ +$LN11@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 00098 32 c9 xor cl, cl +$LN9@stbi__pnm_: + +; 7064 : char p, t; +; 7065 : p = (char)stbi__get8(s); +; 7066 : t = (char)stbi__get8(s); +; 7067 : if (p != 'P' || (t != '5' && t != '6')) { + + 0009a 40 80 ff 50 cmp dil, 80 ; 00000050H + 0009e 75 18 jne SHORT $LN3@stbi__pnm_ + 000a0 80 e9 35 sub cl, 53 ; 00000035H + 000a3 80 f9 01 cmp cl, 1 + 000a6 77 10 ja SHORT $LN3@stbi__pnm_ + +; 7070 : } +; 7071 : return 1; + + 000a8 b8 01 00 00 00 mov eax, 1 + +; 7072 : } + + 000ad 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000b2 48 83 c4 20 add rsp, 32 ; 00000020H + 000b6 5f pop rdi + 000b7 c3 ret 0 +$LN3@stbi__pnm_: + +; 342 : s->img_buffer = s->img_buffer_original; + + 000b8 48 8b 83 d0 00 + 00 00 mov rax, QWORD PTR [rbx+208] + 000bf 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 000c6 48 8b 83 d8 00 + 00 00 mov rax, QWORD PTR [rbx+216] + 000cd 48 89 83 c8 00 + 00 00 mov QWORD PTR [rbx+200], rax + +; 7068 : stbi__rewind(s); +; 7069 : return 0; + + 000d4 33 c0 xor eax, eax + +; 7072 : } + + 000d6 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] + 000db 48 83 c4 20 add rsp, 32 ; 00000020H + 000df 5f pop rdi + 000e0 c3 ret 0 +stbi__pnm_test ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_load +_TEXT SEGMENT +s$ = 80 +x$ = 88 +y$ = 96 +comp$ = 104 +req_comp$ = 112 +ri$ = 120 +stbi__pnm_load PROC ; COMDAT + +; 7075 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 54 push r12 + 00016 41 56 push r14 + 00018 41 57 push r15 + 0001a 48 83 ec 30 sub rsp, 48 ; 00000030H + 0001e 49 8b d9 mov rbx, r9 + 00021 4d 8b f8 mov r15, r8 + 00024 48 8b ea mov rbp, rdx + +; 7076 : stbi_uc* out; +; 7077 : STBI_NOTUSED(ri); +; 7078 : +; 7079 : ri->bits_per_channel = stbi__pnm_info(s, (int*)&s->img_x, (int*)&s->img_y, (int*)&s->img_n); + + 00027 4c 8d 49 08 lea r9, QWORD PTR [rcx+8] + 0002b 4c 8d 41 04 lea r8, QWORD PTR [rcx+4] + 0002f 48 8b d1 mov rdx, rcx + 00032 48 8b f9 mov rdi, rcx + 00035 e8 00 00 00 00 call stbi__pnm_info + 0003a 4c 8b 64 24 78 mov r12, QWORD PTR ri$[rsp] + 0003f 8b c8 mov ecx, eax + 00041 41 89 04 24 mov DWORD PTR [r12], eax + +; 7080 : if (ri->bits_per_channel == 0) + + 00045 85 c0 test eax, eax + 00047 0f 84 12 02 00 + 00 je $LN88@stbi__pnm_ + +; 7081 : return 0; +; 7082 : +; 7083 : if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0004d 81 7f 04 00 00 + 00 01 cmp DWORD PTR [rdi+4], 16777216 ; 01000000H + 00054 0f 87 e2 01 00 + 00 ja $LN78@stbi__pnm_ + +; 7084 : if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + + 0005a 8b 07 mov eax, DWORD PTR [rdi] + 0005c 3d 00 00 00 01 cmp eax, 16777216 ; 01000000H + 00061 0f 87 d5 01 00 + 00 ja $LN78@stbi__pnm_ + +; 7085 : +; 7086 : *x = s->img_x; + + 00067 89 45 00 mov DWORD PTR [rbp], eax + +; 7087 : *y = s->img_y; + + 0006a 8b 47 04 mov eax, DWORD PTR [rdi+4] + 0006d 41 89 07 mov DWORD PTR [r15], eax + +; 7088 : if (comp) *comp = s->img_n; + + 00070 48 85 db test rbx, rbx + 00073 74 05 je SHORT $LN5@stbi__pnm_ + 00075 8b 47 08 mov eax, DWORD PTR [rdi+8] + 00078 89 03 mov DWORD PTR [rbx], eax +$LN5@stbi__pnm_: + +; 7089 : +; 7090 : if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + + 0007a 44 8b 47 08 mov r8d, DWORD PTR [rdi+8] + 0007e 8b c1 mov eax, ecx + 00080 44 8b 57 04 mov r10d, DWORD PTR [rdi+4] + 00084 99 cdq + 00085 44 8b 0f mov r9d, DWORD PTR [rdi] + 00088 83 e2 07 and edx, 7 + 0008b 8d 0c 02 lea ecx, DWORD PTR [rdx+rax] + 0008e c1 f9 03 sar ecx, 3 + +; 467 : if (a < 0 || b < 0) return 0; + + 00091 45 85 c0 test r8d, r8d + 00094 0f 88 a2 01 00 + 00 js $LN78@stbi__pnm_ + 0009a 45 85 c9 test r9d, r9d + 0009d 0f 88 99 01 00 + 00 js $LN78@stbi__pnm_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 000a3 74 12 je SHORT $LN81@stbi__pnm_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 000a5 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 000aa 99 cdq + 000ab 41 f7 f9 idiv r9d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 000ae 44 3b c0 cmp r8d, eax + 000b1 0f 8f 85 01 00 + 00 jg $LN78@stbi__pnm_ +$LN81@stbi__pnm_: + 000b7 45 8b d8 mov r11d, r8d + 000ba 45 0f af d9 imul r11d, r9d + +; 467 : if (a < 0 || b < 0) return 0; + + 000be 45 85 db test r11d, r11d + 000c1 0f 88 75 01 00 + 00 js $LN78@stbi__pnm_ + 000c7 45 85 d2 test r10d, r10d + 000ca 0f 88 6c 01 00 + 00 js $LN78@stbi__pnm_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 000d0 74 12 je SHORT $LN80@stbi__pnm_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 000d2 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 000d7 99 cdq + 000d8 41 f7 fa idiv r10d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 000db 44 3b d8 cmp r11d, eax + 000de 0f 8f 58 01 00 + 00 jg $LN78@stbi__pnm_ +$LN80@stbi__pnm_: + 000e4 45 0f af da imul r11d, r10d + +; 467 : if (a < 0 || b < 0) return 0; + + 000e8 45 85 db test r11d, r11d + 000eb 0f 88 4b 01 00 + 00 js $LN78@stbi__pnm_ + 000f1 85 c9 test ecx, ecx + 000f3 0f 88 43 01 00 + 00 js $LN78@stbi__pnm_ + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 000f9 74 11 je SHORT $LN79@stbi__pnm_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 000fb b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00100 99 cdq + 00101 f7 f9 idiv ecx + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00103 44 3b d8 cmp r11d, eax + 00106 0f 8f 30 01 00 + 00 jg $LN78@stbi__pnm_ +$LN79@stbi__pnm_: + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0010c 45 85 c9 test r9d, r9d + 0010f 75 09 jne SHORT $LN52@stbi__pnm_ + 00111 45 0f af c1 imul r8d, r9d + 00115 45 8b d8 mov r11d, r8d + 00118 eb 1c jmp SHORT $LN83@stbi__pnm_ +$LN52@stbi__pnm_: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 0011a b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 0011f 99 cdq + 00120 41 f7 f9 idiv r9d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00123 44 3b c0 cmp r8d, eax + 00126 0f 8f f4 00 00 + 00 jg $LN73@stbi__pnm_ + 0012c 45 0f af c8 imul r9d, r8d + 00130 45 8b c1 mov r8d, r9d + 00133 45 8b d9 mov r11d, r9d +$LN83@stbi__pnm_: + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 00136 45 85 d2 test r10d, r10d + 00139 75 09 jne SHORT $LN57@stbi__pnm_ + 0013b 45 8b ca mov r9d, r10d + 0013e 45 0f af cb imul r9d, r11d + 00142 eb 19 jmp SHORT $LN82@stbi__pnm_ +$LN57@stbi__pnm_: + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00144 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00149 99 cdq + 0014a 41 f7 fa idiv r10d + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 0014d 44 3b d8 cmp r11d, eax + 00150 0f 8f ca 00 00 + 00 jg $LN73@stbi__pnm_ + 00156 45 8b c8 mov r9d, r8d + 00159 45 0f af ca imul r9d, r10d +$LN82@stbi__pnm_: + +; 468 : if (b == 0) return 1; // mul-by-0 is always safe + + 0015d 85 c9 test ecx, ecx + 0015f 74 11 je SHORT $LN43@stbi__pnm_ + +; 469 : // portable way to check for no overflows in a*b +; 470 : return a <= INT_MAX / b; + + 00161 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH + 00166 99 cdq + 00167 f7 f9 idiv ecx + +; 492 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + + 00169 44 3b c8 cmp r9d, eax + 0016c 0f 8f ae 00 00 + 00 jg $LN73@stbi__pnm_ +$LN43@stbi__pnm_: + +; 516 : return stbi__malloc(a * b * c * d + add); + + 00172 41 0f af ca imul ecx, r10d + 00176 41 0f af c8 imul ecx, r8d + 0017a 48 63 c9 movsxd rcx, ecx + +; 438 : return STBI_MALLOC(size); + + 0017d ff 15 00 00 00 + 00 call QWORD PTR __imp_malloc + 00183 48 8b d8 mov rbx, rax + +; 7091 : return stbi__errpuc("too large", "PNM too large"); +; 7092 : +; 7093 : out = (stbi_uc*)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); +; 7094 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); + + 00186 48 85 c0 test rax, rax + 00189 0f 84 91 00 00 + 00 je $LN73@stbi__pnm_ + +; 7095 : if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + + 0018f 41 8b 04 24 mov eax, DWORD PTR [r12] + 00193 48 8b cf mov rcx, rdi + 00196 99 cdq + 00197 83 e2 07 and edx, 7 + 0019a 44 8d 04 02 lea r8d, DWORD PTR [rdx+rax] + 0019e 48 8b d3 mov rdx, rbx + 001a1 41 c1 f8 03 sar r8d, 3 + 001a5 44 0f af 47 08 imul r8d, DWORD PTR [rdi+8] + 001aa 44 0f af 07 imul r8d, DWORD PTR [rdi] + 001ae 44 0f af 47 04 imul r8d, DWORD PTR [rdi+4] + 001b3 e8 00 00 00 00 call stbi__getn + 001b8 85 c0 test eax, eax + 001ba 75 25 jne SHORT $LN8@stbi__pnm_ + +; 7096 : STBI_FREE(out); + + 001bc 48 8b cb mov rcx, rbx + 001bf ff 15 00 00 00 + 00 call QWORD PTR __imp_free + +; 431 : stbi__g_failure_reason = str; + + 001c5 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001cb 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001d4 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001d8 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_07IDKIDMGJ@bad?5PNM@ + +; 7097 : return stbi__errpuc("bad PNM", "PNM file truncated"); + + 001df eb 75 jmp SHORT $LN115@stbi__pnm_ +$LN8@stbi__pnm_: + +; 7098 : } +; 7099 : +; 7100 : if (req_comp && req_comp != s->img_n) { + + 001e1 44 8b 44 24 70 mov r8d, DWORD PTR req_comp$[rsp] + 001e6 45 85 c0 test r8d, r8d + 001e9 74 30 je SHORT $LN12@stbi__pnm_ + 001eb 8b 57 08 mov edx, DWORD PTR [rdi+8] + 001ee 44 3b c2 cmp r8d, edx + 001f1 74 28 je SHORT $LN12@stbi__pnm_ + +; 7101 : if (ri->bits_per_channel == 16) { + + 001f3 41 83 3c 24 10 cmp DWORD PTR [r12], 16 + 001f8 48 8b cb mov rcx, rbx + 001fb 8b 47 04 mov eax, DWORD PTR [rdi+4] + 001fe 44 8b 0f mov r9d, DWORD PTR [rdi] + 00201 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00205 75 07 jne SHORT $LN10@stbi__pnm_ + +; 7102 : out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, s->img_n, req_comp, s->img_x, s->img_y); + + 00207 e8 00 00 00 00 call stbi__convert_format16 + +; 7103 : } + + 0020c eb 05 jmp SHORT $LN113@stbi__pnm_ +$LN10@stbi__pnm_: + +; 7104 : else { +; 7105 : out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + + 0020e e8 00 00 00 00 call stbi__convert_format +$LN113@stbi__pnm_: + +; 7106 : } +; 7107 : if (out == NULL) return out; // stbi__convert_format frees input on failure + + 00213 48 8b d8 mov rbx, rax + 00216 48 85 c0 test rax, rax + 00219 74 44 je SHORT $LN88@stbi__pnm_ +$LN12@stbi__pnm_: + +; 7108 : } +; 7109 : return out; + + 0021b 48 8b c3 mov rax, rbx + 0021e eb 41 jmp SHORT $LN1@stbi__pnm_ +$LN73@stbi__pnm_: + +; 431 : stbi__g_failure_reason = str; + + 00220 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00226 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0022f 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 00233 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + +; 7091 : return stbi__errpuc("too large", "PNM too large"); +; 7092 : +; 7093 : out = (stbi_uc*)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); +; 7094 : if (!out) return stbi__errpuc("outofmem", "Out of memory"); + + 0023a eb 1a jmp SHORT $LN115@stbi__pnm_ +$LN78@stbi__pnm_: + +; 7110 : } + + 0023c 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 00242 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 0024b 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0024f 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ +$LN115@stbi__pnm_: + 00256 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0025b 48 89 14 01 mov QWORD PTR [rcx+rax], rdx +$LN88@stbi__pnm_: + 0025f 33 c0 xor eax, eax +$LN1@stbi__pnm_: + 00261 48 8b 5c 24 50 mov rbx, QWORD PTR [rsp+80] + 00266 48 8b 6c 24 58 mov rbp, QWORD PTR [rsp+88] + 0026b 48 8b 74 24 60 mov rsi, QWORD PTR [rsp+96] + 00270 48 8b 7c 24 68 mov rdi, QWORD PTR [rsp+104] + 00275 48 83 c4 30 add rsp, 48 ; 00000030H + 00279 41 5f pop r15 + 0027b 41 5e pop r14 + 0027d 41 5c pop r12 + 0027f c3 ret 0 +stbi__pnm_load ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_isspace +_TEXT SEGMENT +c$ = 8 +stbi__pnm_isspace PROC ; COMDAT + +; 7114 : return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; + + 00000 80 f9 20 cmp cl, 32 ; 00000020H + 00003 74 0b je SHORT $LN3@stbi__pnm_ + 00005 80 e9 09 sub cl, 9 + 00008 80 f9 04 cmp cl, 4 + 0000b 76 03 jbe SHORT $LN3@stbi__pnm_ + 0000d 33 c0 xor eax, eax + +; 7115 : } + + 0000f c3 ret 0 +$LN3@stbi__pnm_: + +; 7114 : return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; + + 00010 b8 01 00 00 00 mov eax, 1 + +; 7115 : } + + 00015 c3 ret 0 +stbi__pnm_isspace ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_skip_whitespace +_TEXT SEGMENT +s$ = 64 +c$ = 72 +stbi__pnm_skip_whitespace PROC ; COMDAT + +; 7118 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 54 push r12 + 00016 41 56 push r14 + 00018 41 57 push r15 + 0001a 48 83 ec 20 sub rsp, 32 ; 00000020H + 0001e 4c 8b fa mov r15, rdx + 00021 48 8d 71 20 lea rsi, QWORD PTR [rcx+32] + 00025 48 8b d9 mov rbx, rcx + 00028 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL2@stbi__pnm_: + 00030 48 8d 6b 30 lea rbp, QWORD PTR [rbx+48] +$LL5@stbi__pnm_: + +; 1091 : if (s->io.read) { + + 00034 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00039 48 8d 7b 28 lea rdi, QWORD PTR [rbx+40] + 0003d 74 13 je SHORT $LN53@stbi__pnm_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0003f 48 8b 0f mov rcx, QWORD PTR [rdi] + 00042 ff 16 call QWORD PTR [rsi] + 00044 85 c0 test eax, eax + 00046 74 1a je SHORT $LN60@stbi__pnm_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00048 83 7d 00 00 cmp DWORD PTR [rbp], 0 + 0004c 0f 84 83 00 00 + 00 je $LN6@stbi__pnm_ +$LN53@stbi__pnm_: + +; 7119 : for (;;) { +; 7120 : while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + + 00052 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 00059 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 00060 73 73 jae SHORT $LN6@stbi__pnm_ +$LN60@stbi__pnm_: + 00062 41 0f b6 07 movzx eax, BYTE PTR [r15] + +; 7114 : return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; + + 00066 3c 20 cmp al, 32 ; 00000020H + 00068 74 06 je SHORT $LN59@stbi__pnm_ + 0006a 2c 09 sub al, 9 + 0006c 3c 04 cmp al, 4 + 0006e 77 5d ja SHORT $LN62@stbi__pnm_ +$LN59@stbi__pnm_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00070 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00077 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0007e 73 0f jae SHORT $LN22@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 00080 0f b6 08 movzx ecx, BYTE PTR [rax] + 00083 48 ff c0 inc rax + 00086 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0008d eb 26 jmp SHORT $LN81@stbi__pnm_ +$LN22@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 0008f 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00093 74 1e je SHORT $LN23@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 00095 48 8b cb mov rcx, rbx + 00098 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0009d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000a4 0f b6 08 movzx ecx, BYTE PTR [rax] + 000a7 48 ff c0 inc rax + 000aa 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000b1 eb 02 jmp SHORT $LN81@stbi__pnm_ +$LN23@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 000b3 32 c9 xor cl, cl +$LN81@stbi__pnm_: + +; 7121 : *c = (char)stbi__get8(s); + + 000b5 ba 30 00 00 00 mov edx, 48 ; 00000030H + 000ba 41 88 0f mov BYTE PTR [r15], cl + 000bd 48 8b c3 mov rax, rbx + 000c0 48 8d 73 20 lea rsi, QWORD PTR [rbx+32] + 000c4 48 8d 2c 1a lea rbp, QWORD PTR [rdx+rbx] + 000c8 e9 67 ff ff ff jmp $LL5@stbi__pnm_ +$LN62@stbi__pnm_: + 000cd 48 8d 73 20 lea rsi, QWORD PTR [rbx+32] + 000d1 48 8d 7b 28 lea rdi, QWORD PTR [rbx+40] +$LN6@stbi__pnm_: + +; 1091 : if (s->io.read) { + + 000d5 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 000da 74 13 je SHORT $LN55@stbi__pnm_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 000dc 48 8b 0f mov rcx, QWORD PTR [rdi] + 000df ff 16 call QWORD PTR [rsi] + 000e1 85 c0 test eax, eax + 000e3 74 1e je SHORT $LN58@stbi__pnm_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 000e5 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000e9 0f 84 d7 00 00 + 00 je $LN64@stbi__pnm_ +$LN55@stbi__pnm_: + +; 7122 : +; 7123 : if (stbi__at_eof(s) || *c != '#') + + 000ef 48 8b 83 c8 00 + 00 00 mov rax, QWORD PTR [rbx+200] + 000f6 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 000fd 0f 83 c3 00 00 + 00 jae $LN64@stbi__pnm_ +$LN58@stbi__pnm_: + 00103 41 80 3f 23 cmp BYTE PTR [r15], 35 ; 00000023H + 00107 0f 85 b9 00 00 + 00 jne $LN64@stbi__pnm_ + 0010d 48 8d 6b 30 lea rbp, QWORD PTR [rbx+48] + 00111 48 8d bb c8 00 + 00 00 lea rdi, QWORD PTR [rbx+200] + 00118 0f 1f 84 00 00 + 00 00 00 npad 8 +$LL7@stbi__pnm_: + +; 1091 : if (s->io.read) { + + 00120 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00125 4c 8b f7 mov r14, rdi + 00128 74 1f je SHORT $LN50@stbi__pnm_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0012a 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0012e 48 8d 73 20 lea rsi, QWORD PTR [rbx+32] + 00132 ff 16 call QWORD PTR [rsi] + 00134 85 c0 test eax, eax + 00136 74 25 je SHORT $LN57@stbi__pnm_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00138 83 7d 00 00 cmp DWORD PTR [rbp], 0 + 0013c 0f 84 ee fe ff + ff je $LL2@stbi__pnm_ + 00142 48 8d bb c8 00 + 00 00 lea rdi, QWORD PTR [rbx+200] +$LN50@stbi__pnm_: + +; 7124 : break; +; 7125 : +; 7126 : while (!stbi__at_eof(s) && *c != '\n' && *c != '\r') + + 00149 49 8b 06 mov rax, QWORD PTR [r14] + +; 1098 : return s->img_buffer >= s->img_buffer_end; + + 0014c 48 8d 73 20 lea rsi, QWORD PTR [rbx+32] + +; 7124 : break; +; 7125 : +; 7126 : while (!stbi__at_eof(s) && *c != '\n' && *c != '\r') + + 00150 48 39 83 c0 00 + 00 00 cmp QWORD PTR [rbx+192], rax + 00157 0f 83 d3 fe ff + ff jae $LL2@stbi__pnm_ +$LN57@stbi__pnm_: + 0015d 41 0f b6 07 movzx eax, BYTE PTR [r15] + 00161 3c 0a cmp al, 10 + 00163 0f 84 c7 fe ff + ff je $LL2@stbi__pnm_ + 00169 3c 0d cmp al, 13 + 0016b 0f 84 bf fe ff + ff je $LL2@stbi__pnm_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 00171 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00178 48 3b 07 cmp rax, QWORD PTR [rdi] + 0017b 73 0f jae SHORT $LN36@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 0017d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00180 48 ff c0 inc rax + 00183 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0018a eb 26 jmp SHORT $LN82@stbi__pnm_ +$LN36@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 0018c 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00190 74 1e je SHORT $LN37@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 00192 48 8b cb mov rcx, rbx + 00195 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 0019a 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 001a1 0f b6 08 movzx ecx, BYTE PTR [rax] + 001a4 48 ff c0 inc rax + 001a7 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 001ae eb 02 jmp SHORT $LN82@stbi__pnm_ +$LN37@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 001b0 32 c9 xor cl, cl +$LN82@stbi__pnm_: + +; 7127 : *c = (char)stbi__get8(s); + + 001b2 ba 30 00 00 00 mov edx, 48 ; 00000030H + 001b7 41 88 0f mov BYTE PTR [r15], cl + 001ba 48 8b c3 mov rax, rbx + 001bd 48 8d 2c 1a lea rbp, QWORD PTR [rdx+rbx] + 001c1 e9 5a ff ff ff jmp $LL7@stbi__pnm_ +$LN64@stbi__pnm_: + +; 7128 : } +; 7129 : } + + 001c6 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 001cb 48 8b 6c 24 48 mov rbp, QWORD PTR [rsp+72] + 001d0 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 001d5 48 8b 7c 24 58 mov rdi, QWORD PTR [rsp+88] + 001da 48 83 c4 20 add rsp, 32 ; 00000020H + 001de 41 5f pop r15 + 001e0 41 5e pop r14 + 001e2 41 5c pop r12 + 001e4 c3 ret 0 +stbi__pnm_skip_whitespace ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_isdigit +_TEXT SEGMENT +c$ = 8 +stbi__pnm_isdigit PROC ; COMDAT + +; 7133 : return c >= '0' && c <= '9'; + + 00000 33 c0 xor eax, eax + 00002 80 e9 30 sub cl, 48 ; 00000030H + 00005 80 f9 09 cmp cl, 9 + 00008 0f 96 c0 setbe al + +; 7134 : } + + 0000b c3 ret 0 +stbi__pnm_isdigit ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_getinteger +_TEXT SEGMENT +s$ = 64 +c$ = 72 +stbi__pnm_getinteger PROC ; COMDAT + +; 7137 : { + + 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx + 00005 48 89 6c 24 10 mov QWORD PTR [rsp+16], rbp + 0000a 48 89 74 24 18 mov QWORD PTR [rsp+24], rsi + 0000f 48 89 7c 24 20 mov QWORD PTR [rsp+32], rdi + 00014 41 54 push r12 + 00016 41 56 push r14 + 00018 41 57 push r15 + 0001a 48 83 ec 20 sub rsp, 32 ; 00000020H + 0001e 4c 8b e2 mov r12, rdx + +; 7138 : int value = 0; + + 00021 4c 8d b1 c8 00 + 00 00 lea r14, QWORD PTR [rcx+200] + 00028 48 8b d9 mov rbx, rcx + 0002b 48 8d a9 c0 00 + 00 00 lea rbp, QWORD PTR [rcx+192] + 00032 33 ff xor edi, edi +$LL2@stbi__pnm_: + +; 1091 : if (s->io.read) { + + 00034 48 83 7b 10 00 cmp QWORD PTR [rbx+16], 0 + 00039 74 23 je SHORT $LN27@stbi__pnm_ + +; 1092 : if (!(s->io.eof)(s->io_user_data)) return 0; + + 0003b 48 8b 4b 28 mov rcx, QWORD PTR [rbx+40] + 0003f ff 53 20 call QWORD PTR [rbx+32] + 00042 85 c0 test eax, eax + 00044 74 25 je SHORT $LN29@stbi__pnm_ + +; 1093 : // if feof() is true, check if buffer = end +; 1094 : // special case: we've only got the special 0 character at the end +; 1095 : if (s->read_from_callbacks == 0) return 1; + + 00046 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 0004a 4c 8d b3 c8 00 + 00 00 lea r14, QWORD PTR [rbx+200] + 00051 48 8d ab c0 00 + 00 00 lea rbp, QWORD PTR [rbx+192] + 00058 0f 84 bb 00 00 + 00 je $LN3@stbi__pnm_ +$LN27@stbi__pnm_: + +; 7139 : +; 7140 : while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + + 0005e 49 8b 06 mov rax, QWORD PTR [r14] + 00061 48 39 45 00 cmp QWORD PTR [rbp], rax + 00065 0f 83 ae 00 00 + 00 jae $LN3@stbi__pnm_ +$LN29@stbi__pnm_: + 0006b 41 0f be 14 24 movsx edx, BYTE PTR [r12] + +; 7133 : return c >= '0' && c <= '9'; + + 00070 8d 42 d0 lea eax, DWORD PTR [rdx-48] + 00073 3c 09 cmp al, 9 + 00075 0f 87 9e 00 00 + 00 ja $LN3@stbi__pnm_ + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0007b 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + +; 7141 : value = value * 10 + (*c - '0'); + + 00082 8d 3c bf lea edi, DWORD PTR [rdi+rdi*4] + 00085 8d 7f e8 lea edi, DWORD PTR [rdi-24] + 00088 8d 3c 7a lea edi, DWORD PTR [rdx+rdi*2] + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0008b 4c 8d b3 c8 00 + 00 00 lea r14, QWORD PTR [rbx+200] + 00092 48 8d ab c0 00 + 00 00 lea rbp, QWORD PTR [rbx+192] + 00099 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 000a0 73 0f jae SHORT $LN17@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 000a2 0f b6 08 movzx ecx, BYTE PTR [rax] + 000a5 48 ff c0 inc rax + 000a8 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000af eb 26 jmp SHORT $LN16@stbi__pnm_ +$LN17@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 000b1 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 000b5 74 1e je SHORT $LN18@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 000b7 48 8b cb mov rcx, rbx + 000ba e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000bf 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000c6 0f b6 08 movzx ecx, BYTE PTR [rax] + 000c9 48 ff c0 inc rax + 000cc 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000d3 eb 02 jmp SHORT $LN16@stbi__pnm_ +$LN18@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 000d5 32 c9 xor cl, cl +$LN16@stbi__pnm_: + +; 7142 : *c = (char)stbi__get8(s); + + 000d7 41 88 0c 24 mov BYTE PTR [r12], cl + +; 7143 : if ((value > 214748364) || (value == 214748364 && *c > '7')) + + 000db 81 ff cc cc cc + 0c cmp edi, 214748364 ; 0cccccccH + 000e1 7f 0f jg SHORT $LN23@stbi__pnm_ + 000e3 0f 85 4b ff ff + ff jne $LL2@stbi__pnm_ + 000e9 80 f9 37 cmp cl, 55 ; 00000037H + 000ec 0f 8e 42 ff ff + ff jle $LL2@stbi__pnm_ +$LN23@stbi__pnm_: + +; 431 : stbi__g_failure_reason = str; + + 000f2 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 000fb 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00101 ba 00 00 00 00 mov edx, OFFSET FLAT:stbi__g_failure_reason + 00106 48 8b 0c c8 mov rcx, QWORD PTR [rax+rcx*8] + 0010a 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ + 00111 48 89 04 0a mov QWORD PTR [rdx+rcx], rax + +; 7144 : return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int"); + + 00115 33 c0 xor eax, eax + 00117 eb 02 jmp SHORT $LN1@stbi__pnm_ +$LN3@stbi__pnm_: + +; 7145 : } +; 7146 : +; 7147 : return value; + + 00119 8b c7 mov eax, edi +$LN1@stbi__pnm_: + +; 7148 : } + + 0011b 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] + 00120 48 8b 6c 24 48 mov rbp, QWORD PTR [rsp+72] + 00125 48 8b 74 24 50 mov rsi, QWORD PTR [rsp+80] + 0012a 48 8b 7c 24 58 mov rdi, QWORD PTR [rsp+88] + 0012f 48 83 c4 20 add rsp, 32 ; 00000020H + 00133 41 5f pop r15 + 00135 41 5e pop r14 + 00137 41 5c pop r12 + 00139 c3 ret 0 +stbi__pnm_getinteger ENDP +_TEXT ENDS +; Function compile flags: /Ogtpy +; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\stb_image.c +; COMDAT stbi__pnm_info +_TEXT SEGMENT +c$ = 32 +dummy$ = 36 +__$ArrayPad$ = 40 +s$ = 112 +x$ = 120 +y$ = 128 +comp$ = 136 +stbi__pnm_info PROC ; COMDAT + +; 7151 : { + + 00000 40 53 push rbx + 00002 55 push rbp + 00003 56 push rsi + 00004 57 push rdi + 00005 41 56 push r14 + 00007 41 57 push r15 + 00009 48 83 ec 38 sub rsp, 56 ; 00000038H + 0000d 48 8b 05 00 00 + 00 00 mov rax, QWORD PTR __security_cookie + 00014 48 33 c4 xor rax, rsp + 00017 48 89 44 24 28 mov QWORD PTR __$ArrayPad$[rsp], rax + +; 7152 : int maxv, dummy; +; 7153 : char c, p, t; +; 7154 : +; 7155 : if (!x) x = &dummy; +; 7156 : if (!y) y = &dummy; + + 0001c 48 85 d2 test rdx, rdx + 0001f 48 8d 6c 24 24 lea rbp, QWORD PTR dummy$[rsp] + 00024 48 8b d9 mov rbx, rcx + +; 7157 : if (!comp) comp = &dummy; + + 00027 4c 8d 7c 24 24 lea r15, QWORD PTR dummy$[rsp] + +; 342 : s->img_buffer = s->img_buffer_original; + + 0002c 48 8b 89 d0 00 + 00 00 mov rcx, QWORD PTR [rcx+208] + 00033 4c 8d 74 24 24 lea r14, QWORD PTR dummy$[rsp] + +; 7152 : int maxv, dummy; +; 7153 : char c, p, t; +; 7154 : +; 7155 : if (!x) x = &dummy; +; 7156 : if (!y) y = &dummy; + + 00038 48 0f 45 ea cmovne rbp, rdx + +; 7157 : if (!comp) comp = &dummy; + + 0003c 4d 85 c0 test r8, r8 + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0003f 48 8b 83 d8 00 + 00 00 mov rax, QWORD PTR [rbx+216] + +; 7157 : if (!comp) comp = &dummy; + + 00046 4d 0f 45 f8 cmovne r15, r8 + +; 342 : s->img_buffer = s->img_buffer_original; + + 0004a 4d 85 c9 test r9, r9 + 0004d 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 00054 48 89 83 c8 00 + 00 00 mov QWORD PTR [rbx+200], rax + 0005b 4d 0f 45 f1 cmovne r14, r9 + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0005f 48 3b c8 cmp rcx, rax + 00062 73 0f jae SHORT $LN17@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 00064 0f b6 39 movzx edi, BYTE PTR [rcx] + 00067 48 ff c1 inc rcx + 0006a 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00071 eb 28 jmp SHORT $LN48@stbi__pnm_ +$LN17@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 00073 83 7b 30 00 cmp DWORD PTR [rbx+48], 0 + 00077 74 1f je SHORT $LN18@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 00079 48 8b cb mov rcx, rbx + 0007c e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00081 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00088 0f b6 38 movzx edi, BYTE PTR [rax] + 0008b 48 8d 48 01 lea rcx, QWORD PTR [rax+1] + 0008f 48 89 8b c0 00 + 00 00 mov QWORD PTR [rbx+192], rcx + 00096 eb 03 jmp SHORT $LN48@stbi__pnm_ +$LN18@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 00098 40 32 ff xor dil, dil +$LN48@stbi__pnm_: + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0009b b8 30 00 00 00 mov eax, 48 ; 00000030H + 000a0 48 8b d3 mov rdx, rbx + 000a3 48 8d 34 03 lea rsi, QWORD PTR [rbx+rax] + 000a7 48 3b 8b c8 00 + 00 00 cmp rcx, QWORD PTR [rbx+200] + 000ae 73 10 jae SHORT $LN21@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 000b0 0f b6 11 movzx edx, BYTE PTR [rcx] + 000b3 48 8d 41 01 lea rax, QWORD PTR [rcx+1] + 000b7 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000be eb 25 jmp SHORT $LN20@stbi__pnm_ +$LN21@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 000c0 83 3e 00 cmp DWORD PTR [rsi], 0 + 000c3 74 1e je SHORT $LN22@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 000c5 48 8b cb mov rcx, rbx + 000c8 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 000cd 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 000d4 0f b6 10 movzx edx, BYTE PTR [rax] + 000d7 48 ff c0 inc rax + 000da 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 000e1 eb 02 jmp SHORT $LN20@stbi__pnm_ +$LN22@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 000e3 32 d2 xor dl, dl +$LN20@stbi__pnm_: + +; 7158 : +; 7159 : stbi__rewind(s); +; 7160 : +; 7161 : // Get identifier +; 7162 : p = (char)stbi__get8(s); +; 7163 : t = (char)stbi__get8(s); +; 7164 : if (p != 'P' || (t != '5' && t != '6')) { + + 000e5 40 80 ff 50 cmp dil, 80 ; 00000050H + 000e9 0f 85 2d 01 00 + 00 jne $LN6@stbi__pnm_ + 000ef 8d 42 cb lea eax, DWORD PTR [rdx-53] + 000f2 3c 01 cmp al, 1 + 000f4 0f 87 22 01 00 + 00 ja $LN6@stbi__pnm_ + +; 7165 : stbi__rewind(s); +; 7166 : return 0; +; 7167 : } +; 7168 : +; 7169 : *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + 000fa 80 fa 36 cmp dl, 54 ; 00000036H + 000fd b8 01 00 00 00 mov eax, 1 + 00102 b9 03 00 00 00 mov ecx, 3 + 00107 0f 44 c1 cmove eax, ecx + 0010a 41 89 06 mov DWORD PTR [r14], eax + +; 1077 : if (s->img_buffer < s->img_buffer_end) + + 0010d 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00114 48 3b 83 c8 00 + 00 00 cmp rax, QWORD PTR [rbx+200] + 0011b 73 0f jae SHORT $LN27@stbi__pnm_ + +; 1078 : return *s->img_buffer++; + + 0011d 0f b6 08 movzx ecx, BYTE PTR [rax] + 00120 48 ff c0 inc rax + 00123 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0012a eb 25 jmp SHORT $LN26@stbi__pnm_ +$LN27@stbi__pnm_: + +; 1079 : if (s->read_from_callbacks) { + + 0012c 83 3e 00 cmp DWORD PTR [rsi], 0 + 0012f 74 1e je SHORT $LN28@stbi__pnm_ + +; 1080 : stbi__refill_buffer(s); + + 00131 48 8b cb mov rcx, rbx + 00134 e8 00 00 00 00 call stbi__refill_buffer + +; 1081 : return *s->img_buffer++; + + 00139 48 8b 83 c0 00 + 00 00 mov rax, QWORD PTR [rbx+192] + 00140 0f b6 08 movzx ecx, BYTE PTR [rax] + 00143 48 ff c0 inc rax + 00146 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + 0014d eb 02 jmp SHORT $LN26@stbi__pnm_ +$LN28@stbi__pnm_: + +; 1082 : } +; 1083 : return 0; + + 0014f 32 c9 xor cl, cl +$LN26@stbi__pnm_: + +; 7170 : +; 7171 : c = (char)stbi__get8(s); + + 00151 88 4c 24 20 mov BYTE PTR c$[rsp], cl + +; 7172 : stbi__pnm_skip_whitespace(s, &c); + + 00155 48 8d 54 24 20 lea rdx, QWORD PTR c$[rsp] + 0015a 48 8b cb mov rcx, rbx + 0015d e8 00 00 00 00 call stbi__pnm_skip_whitespace + +; 7173 : +; 7174 : *x = stbi__pnm_getinteger(s, &c); // read width + + 00162 48 8d 54 24 20 lea rdx, QWORD PTR c$[rsp] + 00167 48 8b cb mov rcx, rbx + 0016a e8 00 00 00 00 call stbi__pnm_getinteger + 0016f 89 45 00 mov DWORD PTR [rbp], eax + +; 7175 : if (*x == 0) + + 00172 85 c0 test eax, eax + 00174 75 28 jne SHORT $LN7@stbi__pnm_ +$LN50@stbi__pnm_: + +; 7188 : return 16; +; 7189 : else +; 7190 : return 8; +; 7191 : } + + 00176 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 0017c 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 00185 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 0018a 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 0018e 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@ + 00195 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + 00199 e9 9a 00 00 00 jmp $LN49@stbi__pnm_ +$LN7@stbi__pnm_: + +; 7176 : return stbi__err("invalid width", "PPM image header had zero or overflowing width"); +; 7177 : stbi__pnm_skip_whitespace(s, &c); + + 0019e 48 8d 54 24 20 lea rdx, QWORD PTR c$[rsp] + 001a3 48 8b cb mov rcx, rbx + 001a6 e8 00 00 00 00 call stbi__pnm_skip_whitespace + +; 7178 : +; 7179 : *y = stbi__pnm_getinteger(s, &c); // read height + + 001ab 48 8d 54 24 20 lea rdx, QWORD PTR c$[rsp] + 001b0 48 8b cb mov rcx, rbx + 001b3 e8 00 00 00 00 call stbi__pnm_getinteger + 001b8 41 89 07 mov DWORD PTR [r15], eax + +; 7180 : if (*y == 0) + + 001bb 85 c0 test eax, eax + 001bd 74 b7 je SHORT $LN50@stbi__pnm_ + +; 7181 : return stbi__err("invalid width", "PPM image header had zero or overflowing width"); +; 7182 : stbi__pnm_skip_whitespace(s, &c); + + 001bf 48 8d 54 24 20 lea rdx, QWORD PTR c$[rsp] + 001c4 48 8b cb mov rcx, rbx + 001c7 e8 00 00 00 00 call stbi__pnm_skip_whitespace + +; 7183 : +; 7184 : maxv = stbi__pnm_getinteger(s, &c); // read max value + + 001cc 48 8d 54 24 20 lea rdx, QWORD PTR c$[rsp] + 001d1 48 8b cb mov rcx, rbx + 001d4 e8 00 00 00 00 call stbi__pnm_getinteger + 001d9 8b c8 mov ecx, eax + +; 7185 : if (maxv > 65535) + + 001db 3d ff ff 00 00 cmp eax, 65535 ; 0000ffffH + 001e0 7e 25 jle SHORT $LN9@stbi__pnm_ + +; 431 : stbi__g_failure_reason = str; + + 001e2 8b 15 00 00 00 + 00 mov edx, DWORD PTR _tls_index + 001e8 65 48 8b 04 25 + 58 00 00 00 mov rax, QWORD PTR gs:88 + 001f1 b9 00 00 00 00 mov ecx, OFFSET FLAT:stbi__g_failure_reason + 001f6 48 8b 04 d0 mov rax, QWORD PTR [rax+rdx*8] + 001fa 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ + 00201 48 89 14 01 mov QWORD PTR [rcx+rax], rdx + +; 7186 : return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); + + 00205 eb 31 jmp SHORT $LN49@stbi__pnm_ +$LN9@stbi__pnm_: + +; 7187 : else if (maxv > 255) + + 00207 81 f9 ff 00 00 + 00 cmp ecx, 255 ; 000000ffH + 0020d b8 08 00 00 00 mov eax, 8 + 00212 ba 10 00 00 00 mov edx, 16 + 00217 0f 4f c2 cmovg eax, edx + 0021a eb 1e jmp SHORT $LN12@stbi__pnm_ +$LN6@stbi__pnm_: + +; 342 : s->img_buffer = s->img_buffer_original; + + 0021c 48 8b 83 d0 00 + 00 00 mov rax, QWORD PTR [rbx+208] + 00223 48 89 83 c0 00 + 00 00 mov QWORD PTR [rbx+192], rax + +; 343 : s->img_buffer_end = s->img_buffer_original_end; + + 0022a 48 8b 83 d8 00 + 00 00 mov rax, QWORD PTR [rbx+216] + 00231 48 89 83 c8 00 + 00 00 mov QWORD PTR [rbx+200], rax +$LN49@stbi__pnm_: + +; 7188 : return 16; +; 7189 : else +; 7190 : return 8; +; 7191 : } + + 00238 33 c0 xor eax, eax +$LN12@stbi__pnm_: + 0023a 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp] + 0023f 48 33 cc xor rcx, rsp + 00242 e8 00 00 00 00 call __security_check_cookie + 00247 48 83 c4 38 add rsp, 56 ; 00000038H + 0024b 41 5f pop r15 + 0024d 41 5e pop r14 + 0024f 5f pop rdi + 00250 5e pop rsi + 00251 5d pop rbp + 00252 5b pop rbx + 00253 c3 ret 0 +stbi__pnm_info ENDP +_TEXT ENDS END diff --git a/æº�代ç �/StgSharpC/x64/Release/stb_image.obj b/æº�代ç �/StgSharpC/x64/Release/stb_image.obj index 465112a52b775bfa5f4685fc67cd1304da55b502..2b6fd2ba6224c827223e919f54e5997b774dd1fd 100644 GIT binary patch delta 78 zcmcbAQ2PEsX&wfK|Nj{oQrb532&GNrkzfJQ8#VNp89z6NGq;B`GXgOa5QEq(K+L*5 aoSE&=bw-x$Qn%TrvoL<%zUe-jE+YUt^cqe8 delta 78 zcmcbAQ2PEsX&wfK|Nj{oQrhmG{*yY9M}h@JZ`9CZW_;fq&fFf(%m~CxKn!BD05R+K aaAvkc*BP0&OWkIh&cgV9`=c}I5?0hX=>60te(U~rw&FP zh>(<65*G%eivy*lhe-zqVjMI&>E>Xf#8~Jb;)HrWU#Skt=$HKNd-LY|-h1wOa>*$r zIprDOx&AZ}ZDDv|^_ncnU#pJis1`A$9|^LMRej%h6Jz?>bQp}~2ENd9Zi zq)a5(gb~wbKxc2%J4u#LO1UBS(R7ztKhKvXht6zfql>SoyM(X(IQ$l(#OlV-ChSg# zn8u(U)B(_y-lOxoK@}w|pmwky8~_JF2RH-{gCpQ5I0lY`6QC0WftH@t`8GL(5^kHD zxARXe=D-H2@0xNpHk>eSh6W8I9y7?CyDjxzW{YX|Rob^zA?A^A=Q=)Hppe70s#l_t znJG%=cqTk=6G_PRB>qj{n@FIwgajtnNT7fO1R?>aZ?=tH)ZE`W!F7tJi6U`{qN;gc zW06__U!dar8UZ|lX95vG!3>1?dzIPJ@VYA#%Bc^oa@!xv%XP~~>z0e$3%J^bt0#fy X|5)Brv)m57)SU?~DD0H@g)H?KbxFI2 delta 469 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 *$}RK9 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⁢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�T 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
        Lu6^1?WnVU`e+bXkIyZx76IZ zu5c%4@XB^j7U6`{&e6>_=<%Rf)hN#5eEELOM-GU#y%kXiJ`uo4eGWRVBus@lXrOIA=}L4`ati$csfzMu|pU^vmymwSkQx@eVT(BRM{kGAzEBrt!Sy9fhh?ZwJNOv}867fpJ?mdt<@A6CNvZ6+wARpkx6Qoh0z)<#| zLQKt#AT*wd{49Pr%81GAsoGf}-+GWWFni}Lgw<8yh4`WgU2OB2X0+O~8{Sxqq1m43 zyEtrHs%lj-SSIrWxS`0!evY=d)JvOOe-7I`!P&g}sqL%3wSf~^%t@QYIEXWdAf_Rs zH4K0_(?^Qe>%St*ezn6G(?Nc57KTHq_2 z>Y|3AN~DQ{xWSWTmQb-0B$x>_2@+CFf;Ej}O9P8xr%=^z5a1_;M58ih1-OI~0Nqm# zl?RqvbV)+_igdG`Jo>65-4S|D& zioFKcFYQ3B6j_4ifYDU*U+8ccuRxiK;CSxn04(HN1{cMI6wq8$Qt;}mt1+EWOqT7^ zTtQ^n5hBDy+Fq>Q*&^7xDLGi`;$kb1eZ;yC*CGt73q9NwW-sari#@Cf=L|VOP#y_M zUsaCrV-%N*E#t$a1Ha9kl+;X4&=ib?oDjBENI|G8fGB+>zA$Xa6+}CYbmZwKjut{i zB)!iLOFzKJBp6BGC|G5Df3(5Ybr>6VUmS;<=U$?N=$r(p8%r zAyGZ^fKGuHvT|RvQcQnzD6XSRJ^BQgvWukE$G>>K zdvL{Pf#?^F3vGVa%ne)Xj?KYmV8}$<1?}_j1{H_#IIwd6(^<5i#`jaDnqn1!)=)lT zcFf>w9!|FTQal6>`B0$@9`!DXvPERMJ%zhPxJc*pV%#xk3}l2!L~*#Mgm@Nk<#2^V zE8eItt})R_9U=ldkPUN7sLwOe=N#w^)ZZ$|sAeL_?DO-3zBylgJ;W@BHO%D0|M_x7Xbt5;aJ1n;k63U-~#_bEKsHd90s&(hl?Tm)%FR>T#>$!e@*IPc=@<@~wQQ^mL$K#>1r(#`ral!cRi=SECoffn?gDciDr(E5f_V$R zJ|S%EE){WGLm2mq;eb6Hp{4T#w%iZsu1PIF`0n;-EHDPmVmVFP>Tgh`X!}O#6 z5OQ#8b??H0a+co4EyWl-H-DRkb#97gWf+1zf2)%8nwPEzOO>f;%lz^ZSLiM<*P)`e zOe&bSxel0AMC)FMj0_=14~LLr>I^Vi5~2(t2Wouq-yU{4fE+v+JO$AiSq0g2gZI;M ze`Gm0bw-GVTr3GUfc=@KJ7OxHm$py zGfS<*#vvnv#L>e+;utG<84n530!98Y#j5UrcFa;)1;;Env=GNHE!;dVIT(6i_)p_D zrF&+`5E915PefCkE1G#b{Pit=~#%+rN*oY_qo9Zzc@_g%w5Ohfe-Xk)@V{LOhMd5!3mzbd}e+sja2 z5<4{C5g^{wF}&=}ez_iC=^xA=zU-wLR}$a#V%SnP>tete5@g~35$zq)NYOsw77G^vv5VADb?1m~}K^2LO=Cr66t zWo9Tk%E7r(T=uNi6KHuDFA9b#WWXBfuc(m4ISV{yt&xCOp%$_jR#EyLjfwKnkV>KZ zhP2wFa9|H;qaZd)x zoz3kr{!=)dgTspnG-0?63JBCv84|Dg*iWTw$A4&o0y!~AuV#nGwro)%k)|kJ ztlw2F(ZvewF{sj`G4;D$I4wQA$gF~*zk+!Bz;;#;rLh*%kJ3Izf3%PjgY=4jc+zh% z1@}_Gz{{tS{)!RoYeNG*(UBd=^harN{cc-ap}hhqCUULVp#${0?EqsZ9iYFfWiuy| z!LEQI6a4*G?qOdxR(*(&+w{!j7wueJw zm~m;0eP)2|48q8RF(O&v=n;JD9-(k>Hi}+#I*G}w>K&uW8-%is{@Ihkk&^cER!rM8 zO5* zDhszv5;AsWb9i^-?2#OCmjVd{LWG!{5~QZ{86t5UuV#k>q6{%2ledJqa>|e_bf9pF zp(;+{Ycatxb#!r!r{PnAC>M`2nGnTuBhE_RNm139nI_jB{-z>uH0Ei0q_QP0`GL8E-mV46jj>Gznj*o!E{0C z5DXI7Z+IbSwbN~oAVB@6LZOj&SbLd1qK4Lo^n|H$7(Vgo&jA)0?0v$k38j~phlm~u z3^c|FUgRBNK=fz?05VX;LG9-@w>_M4hcywot0gR2<<XxF1 z(^4Gw>S(|&E5kuty`0Q6u^3?a2N3=MD{L}WK?TDnF%xA61sh(AY!<)D^E1p*+V3a_ zyTGBp>31UA?#j@Tf*c(3HX(lW+wgK^(MX#WoAEuR70 zWlY}X-6C`yW~{Y`H<#=+2O2l2SFSnA4 z9qMQ@RuE{TQEE6BWl$WTI9Yq5HecE)IhjX@bZ1a?+E z>~DGPmZnVWd@_M)$#i8Mq^>ukE7&*c8jzT#oya^~1ewb`EXUOx2B@^spfpH;S=MWp zn0p$+Y1W6O7;_f(V-t0!4KSZFFKNrG0%V2DZ8t1Vu!xIreZw$>`zh!Bx*lU1fL_;x zNY$*R4Ypb8B2|B(3v_RpD@bdXCaZdh3+lYU1+ZG)0?O?Nak?3L@&t><5)k4RWb(LvH;8KST! zk3@ur%rn3`Kvz(2gOX7Vuj;!8r9(H0;FFaL23Zi}16?bY$w z?OWsQu=ZPMKqoWA(!I5BmhAAyZpj=B68{+`bHL_2e)$jW7m+Zz66a}&U*H01Tyo%1gVC5q`bMtb6Gq#P)5$%)qM&rYumfU45q2f zQr5_%KPi~1-3qwVYW`4|yq5E;b7Sp=&?QkaD_8uGpx`p4gMzEg76rE23ngz1x|Ylr z92}Q73;3sLxM1w4&2Gt4=k-F`A?Ajv0FRFpEc3dda9k`N4$#@yP%FQ~AA_I&j2s;h z{2V}jZ@TOZ3W64I-@&U;VhO{F!)}P2y{-nA%C)R&q3Kyn_KejXh38n#& zO1JdN^G#vtKcgxR2!;+QgC558c*w^wzqsO1jc-#2UGYpS@*9clXwZJECV{BVS}PDqC?ZL+41iUe`VwgN(0DJ2 zx0HhCWi=gLoS}M=lp09%bzl7o+=L#Jj!D^`;E!M*yqvFBE6vea+X)mWDw_OjE5f!N zVXC=O;H1TS@r=bG0H;PFG$oi%d*-U@+S22MDUU6jWALl2Afb{7Yxu3aszN1%GRZA` zI>E%u+)eZ5ZQWg==Jj*DQoQa6HPMTVNAtcWGCesX9V<|Dc z8Bqf{WD%pZ0%EN-z$8jnaY@2Ih8Tm zXv5NYUx+3@C%_W1mdE29M|u49_D#A#)4r+q&45oh2FOVlf8DD1&3AuLCMCd}9ZEkN z>p8XsEH?$$x!NvBlu^ar0&;<(ZE|MJ&5%C33N>mBuMgOU1-)9nKgR}SPt!Dzo?z4k zoBZ@4QId)XWX#sa3_LCW?8XSxMDQ9KAv+guvtIhLFoF)WHLs&freeDX5e#y zY+?ki*#iR3dAc!&OFDtI22#f1A{ic+GA$jenIuZ3nKDqx>Xes{g`>U7jc{~QYi1P) zj$e6Y#ZDt8wjon5R|IyrP2t>xBMa1C7?nbdV^m+S>$TEXN6Czs!^xdSHZ$FSMzY); zaExf%QSB0z4&SJOEhWs~tc#tYDU>KtM;NrDY++Kalx>6K%#x%{xu^DU2%O$5c>jU zX};GvZ0lNL|&ZjR@z1KytqZ7R3T1F^&EG36* z4>sPUcF#24paX(2UIW5BdoZLru>^JWmP!P=-9r(*{x;n&G2_>A}+i^?G_W;x|dksEY) z@%3*kB)W=g1LEmBLMh{&Fy}@Yn6)1(LDn-$=Zhe!^;ufJ_^lFxa->eFs*REwjO(fh zCa9+brguq@%3YMC7D($dN-%!VUoX~kd0=m+URK+231ll$f>?nP#Ab-DMhUL2HWFYq zN8DG4Ukqz{xq^I@aLD@_n^+fDonW;2p}FK0x>Tt`>r%O)=~)o)L`tu#Jix;?MpNa* ztxUAItAXPESCh}!G}Ksl^I&v@&nPJX*Q-%vBkYiwNeWsMbrKYO@^DC~YHTIAo<4At zhx;~@>6wEIr`9zI<3n2m$V=7mMt^<(JwMQD8R=ksQp&8Ytu;egRe zLl?MRV#{ZhU-gjb=gT1h@7LX`$MNN^ob2iiMso0OfbtWDPcY7qK|mF%pYRL-ZKIi7 z5#U2A!*atXc_~dNrW~OfI%biQsI1BtK`kK|%@;&rutydSx#yGYct>73Y z%>vv&m91i1)45)(VYKWyU8 z=JLbsPx2p4;s!|GbMwNR|8oMg!sSY7ePa@}D_0gMl*z;4xEI#)c5v9t2Dq@oQZ^

        tN~ti{(-ML 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

        ~*VX_LT7}VnQC&(5GlpK5 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 @@d!o<+dpwL_poAfRraTsZJx`bCGtTh3KZ0dpg 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 FX%ub%aZ@C5Bucz>7m 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%0AO-qyZ)>m(*cNOD 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 DNRQo~ literal 639488 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 z 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 delta 33467 zcmcJY2b2`W_wTEFGc0Mzd6pcPoYRsshy=;(vgDj$1)NzBBniR*4U!fRkPNP{ii%4R z1Bm!TFo3cI1w=r^fB|{m@15@6a(usc-v7Mw=A8Y`{oJ~BySlo&s-`FG$?Mra$jtsy zZSR@4lq&t4QkUOWs#qB8?o%d>95;Nj!sF2~r9$ysx@ULw7wlBpZF{zFh3EChmD*F) zRHa*t89x}D`bVqK%R^L)BP*U?(qQT7;qxnvS=Y`~;mc1KmcAN51gE25SA(^FHlrDzY)p`w>WBL*<0zGw&0*n#xK ziMEC|Q`1DRc;%`1Ai5$Fs9%VNC(^DdnjpGF^pNN`qTh+$6P-Jl@oA#fl4x%htv`fz z<)PGC?f`A6mJRdrDc^8vS@s})I+&da}VKqziJ<*Gz4@4h{hE8BiZqZoL zn$RMuo#Q5cP`A7kyE5rRX}*EuuR`4~V9V9u<90^rGlZ(ceY0d#AA##YL-$HivrD7}3e1 z&x)pqE)ZQNx>|ID=qsYTMPCzrQ zo*|+idgZB93SG5D+lUSjohtgG=q6|{bx`y((ceVl=g_}ebg$^2qB-W$UsANLXcy68 zqBEe+s6}(pqG!}rfzzV-o~LJ&=uFWML@$Zn6OEY17>{TJ(N56bYLMt`(RHFXM7zvq z=|s_YM9+y{pO5puxB5dM?+Xm7BHCKCH?)r$EqY4ywrKPM`g@A*7X4i`dLjKKMeB=p z6CEWw8`@XBB>IZzJ5X<5by1+?A{I{-oiF;C=uOc-MDs3YOcl}AqP?O0)M(L#qB}%? z6m7GFr2|CAiTXs(ie9C9)kA^s7a3Yow7zIJ(IKMKq5aiD(XT`wi+YyQ|E%a0(ceU$ zh}Kxf(pI9qL`R5vMKc2Sd3pL)^pR+umsqWmXiL#v&;e?M=q%BfL@m*cqWeXUiT+3Q zhUl-Nk;@G=P!$$kAi7@kkXN2giCzM}yB05cUq3Al%y`t}mekyuh^cT?x zzid*pvS=;nAk|286Er~`@ZOZ2_p@Y@WqG2lym81%YE)_i?dI35_eJ9#( z741IIp=uO#nA!#%t`0*-s1HQTucqA+I#SJtDs@a0#?$uDI9lbg3^i88uAy#%j#CGq ztVusco>M)E?0^(IcYAL_ZMyL^KnsKf=_nh2RQP)i+YRi}n>Aop!MF zh3rw&0TopHO-5Q`o;>EjimKlxLse8MqMwUi5xpsTU-UQ8C!!IljL#)nP_(3IdC_X3 z^+cPc`ghf6IDWT4hUjfkwV5e$LzVJCE2(v&TSRw?9uQ3zJu3R1=o!&#qPInV6#Y%~ z@6B9V=Ji%mg|{$oy6D%?z@w7-Sv(ZX*+3G?xeOA?JYV|^jXnWqK8B;i2fm3 zbQf#25gjf%S9FtThUjHc?_+r?y_*%fhz=Ee$>!KC*(mzmi zt>`zRCHB$ZLv)$wC!+cG)8Ei5Pc1|{h(0aaS9GvwAm*sp)ef*)s%Ydv+C@Zri>?qo z1C3KLuQ`1grwYT4Q`Iz2bKCYRRZaB=R8!MM7l>|zR#&G)OQg}RCK@mLAJJQ)e?x1i zu-B;`(Hf#HM7u+4s+poch&~q0dx-vuhcLC)R1E>O)nL)nktS?2ikdB&T1WJG(TzFi z$&r)VQFOcLU!wDJ(eKMceP47X))1iqAf&wie`xZ2iip4h6Wx@)Q{o`uRwpSXk*dNqJu=IioR6A^de}t zz}uo{MZXm_Dl$cJ(Q2YCMEi(N6X$iv-c?J z^`TBDvz(e{7e;_PYa9da62x7D_$iGaBEB0q+0M5B{4{u`%>%*R!LtMGRXO13k>yae zu^VI`0=S@h$}Ud^RU6L;6yuqK6n`HDmK3W{th_W}>HncG+0@t2?l^adwt+!H)lV|Hm$5D(F~ z1==wbywq+`AH)ySczPClRc=6Q+p!E4Jg|9;hNHquc7lU8F9+j(I%e}g`3i73*k$oI z0`Y!3ewocH!90Qc*}Mu|1U7e=@vD_Lkf1gkBjK>@1Rb#l@D9dB>T5xf2l+7=L zd3&Jp8gT0$=M=3a_z_G<b9L~u;2k#C1kW_9c-5;~g;@yLsa2Q_-ldg42i~ofd%=5bZiIwB@Lr8m z!24|GWj;q^_Sjt0TSe`+18TwXJOU2b+yFcee9-1<;Q8R!Z00%h0ys@8UjTkxtG^I@ z$mW)aUj#m^l`rNVq-z07z;D>x9u-~$zp0fk1s}1w3(A*)-?Ew4^-JKlwesa=HT90o z;V56BF)w4UUvu!xUa2uJomD}+I*2WeXCQu!#!bO%HD&`|)))=&s&$%!4Op)+8?YgW zHwN)0joE-yjoEny9}cBn(U=X|Y1VNQWC!okI10R5<80tP8Z&-x z5bx7CisSEo&A|i*G-iTB+8*TsA2#c|4dQj2t}z?*hQUm#lP%H2U z8jrzH{h`LViSKd@kN;3OJ~ErC4Er)+7oOHQ8hl1$Ht18cxf{>%{689VzBsQj^L?f< z56K0GdHk91qT{gnbB!b6`$A(j=u3^cg8E8hmS57C<(D;P`PVjc`?3W4Mhjqru4r5u zoT)Lp{Hoc??SXFKYZ~J&q03wmH3wfu`EdmUkF)r@5n$QA^uV`T02}aK5Z?^qTN)QY z{B4bS(tfWo%kOB+@*jjT|MS6syFmf>G-j9G*O&v-j~cW71C6hiAfFeGllD2l7UmD)0zq6bhzkXA;UF%e zF?*<}#_S<)G0nk%;uaSFJe#_PfLHRd_gAcz|VaU+er9N8Lc4mO~P z#`D2V!5`Xtz-4wbjX6-o2XXTtZlQ4o;#-BZcJg@@8_+t-p?D6o3F5Xv+%AaQ2XTiW z?x-=R<4!K4|9O&ib{!Zbz+E(Eg{~TNI(MweVNP!)@Rx-0kL+^x@Q?t@_Hkn@;5dx{p25}dHxvP9>M#>}@HY(Q zAKT@eeuoF~h#(#r#G{0@`G0g!z?dK&8^q&+czh5~2OZ88s`L0)tCvUfj_b1<=44YTMQt$;k-xM;tj1E?avjZ;L71*WAQ2x1HfqU#Qhv|woe}Qt|)#Bevi2u@# z?+;$CF}JZoWA>2OuQ}L7D>Y^pt(U~SN0y4 zfb(TkxMc4EyU1ZyU=NWm+wtt7b>Oe<_)Zuc)@#fjbJ*!I@;8VN^cebJ0~}ZE1k+Jr zqsCpqn>1#ZrE1I`+pIBrY>URMzg1)Ae?{YNOt?*Ri~(=gm|fhg>!XH0A~lYCIDBn#O)`n#Sxghn*fHe`ogqd+c@aP1ynT|0>Nf z2sTeL2HZjbld;PVfp6P;%<0!*v>l(n#Vr|>e{YvJ)0jP29)Ia5|G_TjRr7|!JpOFu zn~no^Py8Lxm|ggm#_YnkHD(XKqcQUx)tDQ6H{=<&0iD1ZHgo%m*X=Pa;0XA*#_R=$ zoh~Kc#U42$+X?VJdk=XMI?Q3|p8$WMG3$S+F*op)#+*GbX*>*kne)HX0CpK1 z!cLcwf46&pUG_Ej4|@;TV-7n#M*h=|XODdY{>zRp3BCe;Y%|L9Plzt=b? z_)bV)Hy^L_A2jA=eplmtVDCN6!9(CMH^yU1Rz}u!ejjXr`QRaN*f|7b(~f5s{|FAT z3gE)uA?NOdn zW1h6Rve+wcpXP=mN;{@`H0FE3G5>|pyE47zMR_*6er@>jfwSAplQh4^yrEIRW%NI< z<$|swa4)!!#_WN@8nXwA1aZ+IE*8YaHD@Fr(2IsYz z4X6^tRYQln<-APe0xa8?B~~>pfO}Lubd+0xTmubqHbAZ!R9-7|tXt0e0ky&T>;{qR zfb-kT2Gm8qf`&c+4~C;&=mb^74(JAMhyaHh;7lVINBIhrEw#%_gH4q29#A8cm$B<_ z2R8;+w3)YfnrQqS>X7lJ0|T$`0txA;32tjAY#KUQ)v^;zMNBhrJ)3!#Bwpjv;O3#N zRU^BcuMJyh91Ct4I?XLl1h+yDdYjr6K82$-94%~S7q>x!9DWYmITW8>(HhW2V-D9{ zHD&{!(wODlG-mnJp%{Oigbe5&n*0y$p)t>Thk3>1!Cz05x3e3>`n@#fW!)PabjrEG zJ{mK=Zz#?`J)mDuK!1&yV1ULm>U?T zG52^-xYtcMBLuhMH0B|DGu-Evj|U&o_y+hbjkAHhZ)*ZImizR%aiP~=HRmEYmM`PzX{?i8gn+w)R-H*sxk9l)0pMgvpDen|BWn% zycK&3+};_8Fd90{nei+9-9~vQySzO3dyUJ0f6&+izN>L1@I9B&{~Vj|yAG^=z&~nS z82li7zPrKF7z4;pp#e8hhL5icKMme#;y$k(-yOUU%nzS2z6batFng5T6I|JgYj~OM z=mp1BF!$&u1Uv)gM@8|9qK7vb+A;``b02Q+5<0-O8W@y~;Q4sWdnfqDMP z`~Sb#4u^jY;@^V!QTRehz@59cMe(B?aJcxB|GK##~So0*|-jc}xp~C)mt8 zB1OOxZLS6`3ZA5u7XweWxh2YrM=bNIDYl~v93>Di)#lpZlHh4t1rK<-&3N&sV!<

        1b^2s*O1;@kYz*QaP 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 - +

        Resize the current form - A (width,height) representing the new size of current form + A (width,height) representing the new size of current form @@ -79,15 +79,15 @@ New width of the window New height of the window - + Set the size limit of current form - Minimun size of current form. In form of a of (width,height) + Minimun size of current form. In form of a of (width,height) - Maximum size of current form. In form of a of (width,height) + Maximum size of current form. In form of a of (width,height) @@ -412,7 +412,7 @@ An IEEE-754 double precision floating-point value, clamped to the range [0,1].
  2. - + A two dimension vector defined by two elements. Vec2Ds in StgSharp are defaultly usaed as colum vector. diff --git a/æº�代ç �/StgSharpDebug/obj/x64/Debug/net6.0/apphost.exe b/æº�代ç �/StgSharpDebug/obj/x64/Debug/net6.0/apphost.exe index 2eefd6f3b0dfbbacb33c2e69f8a01e83a515d370..5f012d06b356d8d7edfde795b19a570729dd9f47 100644 GIT binary patch delta 99 zcmZpez}WyqEsR^33|#$F84MXx8BBnr8AB2ff>?s^@|nE=#55+?uv delta 99 zcmZpez}WyqEsR^33|##U8H^ar8PXV%8B!RMfOHCjF;E0V8v?}=fzSkqO@T0(Ar&ZU e4ur`-oC?Io3>H9@24EVb#*!gRoEq-`BkV?TXmg=@6N#2CYDJjeS26K4g>h)pr*o?NUVBl&l zm$U=HQE;dhS4f*hQ9DOjjcRBt_ehQJT5?A@+7+s4$R@8RRip9us}bjL*JzbAHMpT| zjYoY4a4>s|@&jds$BCo8mXKgS?r#eeTc8YUa5_(B$t;zkP8GLsLn9(9~a#`4A0>wJ#&BB;TYMnuZbJp#3h!x$ r$+U&3Ch)eVD?wcfvsDy6cPw~2(?C{ZMQ*H6?E^Q0RR91Qs|Di<&T!-jD_aBkLI+V=9RGKjjraG zw&jPq>6Do|AmqD_@r9S7CB) GX>Mo12U=VJ diff --git a/æº�代ç �/StgSharpDebug/obj/x64/RealDebug/net6.0/apphost.exe b/æº�代ç �/StgSharpDebug/obj/x64/RealDebug/net6.0/apphost.exe index bb29fa59c72b45ee87412449afe581d265604038..0d34725da3a44a0b94821f67a23ba426b47be120 100644 GIT binary patch delta 303 zcmZpez}YZ?b3#MJkCRV)dJ}+j@Pp6# zoj|%_(q}y-Anp15H&~tL^AGxsKz>kWat6q(iHZ^vKX5T#ZT!9UH{;iBj27EJZf88n z2&8xKWNel3H)b$lNMtZ%Fkr9*k|qom49N`U3@Jc5k--SawqQtQFawGk17%ZzJYyhf z!jJ@%No6nvsx$N3B7w@-jnyU7Mq$BIMZ+Xn21G%gVk;O{XxGT$Pda)&H$M;QBh*z2QEg##@}0iGk)F1XuAF5cE*#8 zKzjF1##R}B69!8LBZfqVBp^%$!ZZd0h7<-1pokfemk5+K0Lv!>#nQmMRG_>u5Lz-M zGnfN)83Or+K-naqyvg?dYmB0d)+Y`drZNBl6A)O_NdW-0lx&Rv diff --git a/æº�代ç �/StgsharpEnvDebug/Program.cs b/æº�代ç �/StgsharpEnvDebug/Program.cs index 2d9e1590..3d99ca25 100644 --- a/æº�代ç �/StgsharpEnvDebug/Program.cs +++ b/æº�代ç �/StgsharpEnvDebug/Program.cs @@ -1,5 +1,6 @@ using StgSharp; using StgSharp.Graphics; +using StgSharp.Math; namespace StgsharpEnvDebug { @@ -7,7 +8,20 @@ namespace StgsharpEnvDebug { static void Main(string[] args) { - Console.WriteLine("Hello, World!"); + Matrix44 m1 = new Matrix44( + 0, 1, 2, 3, + 4,5,6,7, + 8,9,10,11, + 12,13,14,15 + ); + Matrix44 m2 = new Matrix44( + 0, 1, 2, 3, + 4, 5, 6, 7, + 8, 9, 10, 11, + 12, 13, 14, 15 + ); + + Console.WriteLine(m1*m2); } } diff --git a/æº�代ç �/StgsharpEnvDebug/StgsharpEnvDebug.csproj b/æº�代ç �/StgsharpEnvDebug/StgsharpEnvDebug.csproj index 6654c812..783f1bd4 100644 --- a/æº�代ç �/StgsharpEnvDebug/StgsharpEnvDebug.csproj +++ b/æº�代ç �/StgsharpEnvDebug/StgsharpEnvDebug.csproj @@ -13,4 +13,8 @@ + + + + diff --git a/æº�代ç �/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.dll b/æº�代ç �/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..3f49618714762c09edffe3f895a86edb2901dde2 GIT binary patch literal 717312 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ΜO{smkN^bZoj?LpQ3v#rZt*g@%_;Tr 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
    &$cO_^1{t
    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
    u!IBv-^s(tIv1u+huHAZCwOfe;m#;f46TR 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
    #t9*|Mkn=qayUu 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%0Ddp1;0+o@pQl*05utWff;S7Z#%?DDP?CaV+W$ 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%0DH~Bo>P;r{=h+gMoyiZElgoqoN%tLj^PS^7zQN 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 literal 0 HcmV?d00001 diff --git a/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.xml b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.xml new file mode 100644 index 00000000..13be4ca9 --- /dev/null +++ b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharp.xml @@ -0,0 +1,1865 @@ + + + + StgSharp + + + +

    + Get the status of a certain key on the keyboard. + + + + + + + + Function handler to load an opengl function by serching its name. + + the name of the Opengl function + An intptr value representing the pointer to the function + + + + + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + Necessary operation to init graphic elements this form. + + OpenGL library binded to current form. + + + + Behaviour of current form when in a frame cycle. + + + + + Init an OpenGl context if current form has not been binded to any context. and set the context binded to + current form as current OpenGL context. + + + Something goes wrong and StgSharp fails in creating a new OpenGL context. + + + + + Set all necessary metadata to current form instance + + + + + Resize the current form + + + A (width,height) representing the new size of current form + + + + + Resize the current form + + New width of the window + New height of the window + + + + Set the size limit of current form + + + Minimun size of current form. In form of a of (width,height) + + + Maximum size of current form. In form of a of (width,height) + + + + + Set the size limit of current form + + Minimum width of current form + Minimum height of current form + Maximum width of current form + Maximum height of current form + + + + Init this form and render it on screen, and respond with operation + + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be crated. + + + + + Create a set of . + + Amount of VAO to be crated. + + + + + Create aset of . + + Amount of Object to be created. + + + + + Create an instance of program + + New instance of instance. + + + + Mark that a method in a + should be called when rendering. + + + + + Priority level of a render activity. + + + + + One level higher than . + + + + + Two level higher than . + + + + + Three level higher than . + + + + + One level lower than . + + + + + Two level lower than . + + + + + Three level lower than . + + + + + Highest priority, in , it is . + + + + + Default priority, usually is in this priority. + + + + + Lowest priority, in , it is . + + + + + Interface of all kinds OpenGL buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + A collecion of handle to Element Buffer Object in OpenGL. + Each value indexed from instance of this class this + is the only handle to one Element Buffer Object. + + + + + + + + + + + + Set data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these data, defined by + + + + Set data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of data to write in + How OpenGL use these data, defined by + + + + + + + + + Load all aupportable OpenGL APIs and bind them to given context. + + The used as current OpenGL context + A delegate to get address of OprnGL api + + + + Get the function pointer of given OpenGL api name + + Name of the OpenGL api + The funtion pointer of the api in form of + + + + A handle to an OpenGL object, + must be indexed from a . + Direct call will cause + + + + + A handle to an OpenGL object. + + + + + Release all resource in this handle. + This will release all resource in this . + This will be not usable. + + + + + + + + + + + + + + + + + + + + + + + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + Init a program with no shader attached. + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Get a uniform form current shader, + the value type of the uniform should be provided. + + Name of the Uniform in shader code + + + + + Link the shader to current context. + + + + + Let the current context use this shader. + + + + + A sensor used for cheking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by X, Y + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + Init an instance of OpenGL program, + This method should be called before any other StgSharp api. + + + + + Version of current StgSharp platform. + Main version represent in hundred's digit, + and sub version represent in ten's digit. + + + + + Write a log message to log file, and mark the level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + OpenGL numeric type. + An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. + An IEEE-754 double precision floating-point value, clamped to the range [0,1]. + + + + + A two dimension vector defined by two elements. + Vec2Ds in StgSharp are defaultly usaed as colum vector. + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Part of a circle. All points on a arc has the same distance to their center. + + + + + A collection of all point on the same plain and has the same distance to a point + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. + Point to the right direction. + + + + + The vertical axis of the coordinate. + Point to the top direction. + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + Caculate the movement of a point. + + The game tick represent time passed by + A 3d vector representing movement + + + + Move begin side of a line. + It is recommended to override this function rather than + loading an with same function. + + Time passed since current line was created. + + + + Move end side of a line. + It is recommended to override this function rather than + loading an with same function. + + Time passed since current line was created. + + + + + Move the third vertix. this is a useless method for Parallelograms. + + Current time tick + + Geometry overdefined + + + + Move the third vertix. This method is useless for Parallelograms. + + Current time tick + + Geometry overdefined + + + + 平�几何体。包�三角形,对称四边形,自由多边形等。最多�由16个点�数定义。 + + + + + Tick time this geometry eas crested + + + + + Get all sides of this . + + A array contains all straight s of current geometry item. + + + + Get a flat cincide with current geometry. + + + + + + Update the coordinate of the point. If this is a moving point, + (Points on sides or surface if other geometry items) + please do not define any motion here, codes will be ignored by program + + Time passes since the program begin, counted by frames + + + + 计算中心点相对于�考原点的�移 + + 当�游�刻 + + + + + A square + + + + + A linear data structure with dynamic length. + It contains a of , + each is twice longer than the former one. + + + + + + Init a with a certain amount of elements prepared. + + Amount of elements to be prepared. + + + + Create a new instance of , + and fill the begining ones of elemtns as given instance. + + Amount of beginning elements to be filled + + + + + Length of this + + + + + A pair of value + + + + + The first value. + + + + + The second value. + + + + + A value. + The lower byte is , + and higher byte is . + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. + Length of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length of a single time span is defined in microseconds. + + + + + + + Time source provider provided in internal framework. + + + + + The method this will call every time a new time span started. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + Name of all related uniforms. + If you fallow form from + + + + + The COLORREF value is used to specify an RGB color. + + When specifying an explicit [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) color, the **COLORREF** value has the following hexadecimal form: `0x00bbggrr` The low-order byte contains a value for the relative intensity of red; the second byte contains a value for green; and the third byte contains a value for blue. The high-order byte must be zero. The maximum value for a single byte is 0xFF. To create a **COLORREF** color value, use the [RGB](/windows/desktop/api/Wingdi/nf-wingdi-rgb) macro. To extract the individual values for the red, green, and blue components of a color value, use the [**GetRValue**](/windows/desktop/api/Wingdi/nf-wingdi-getrvalue), [GetGValue](/windows/desktop/api/Wingdi/nf-wingdi-getgvalue), and [GetBValue](/windows/desktop/api/Wingdi/nf-wingdi-getbvalue) macros, respectively. + Read more on docs.microsoft.com. + + + + + A pointer to a null-terminated, constant, ANSI character string. + + + + + A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. + + + + + Gets the number of characters up to the first null character (exclusive). + + + + + Returns a with a copy of this character array, decoding as UTF-8. + + A , or if is . + + + + Returns a span of the characters in this string, up to the first null character (exclusive). + + + + + A pointer to a null-terminated, constant character string. + + + + + A pointer to the first character in the string. The content should be considered readonly, as it was typed as constant in the SDK. + + + + + Gets the number of characters up to the first null character (exclusive). + + + + + Returns a with a copy of this character array, up to the first null character (exclusive). + + A , or if is . + + + + Returns a span of the characters in this string, up to the first null character (exclusive). + + + + The RECT structure defines a rectangle by the coordinates of its upper-left and lower-right corners. + The RECT structure is identical to the
    RECTL structure. + + + Specifies the x-coordinate of the upper-left corner of the rectangle. + + + Specifies the y-coordinate of the upper-left corner of the rectangle. + + + Specifies the x-coordinate of the lower-right corner of the rectangle. + + + Specifies the y-coordinate of the lower-right corner of the rectangle. + + + Contains message information from a thread's message queue. + + Learn more about this API from docs.microsoft.com. + + + + + Type: HWND A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message. + Read more on docs.microsoft.com. + + + + + Type: UINT The message identifier. Applications can only use the low word; the high word is reserved by the system. + Read more on docs.microsoft.com. + + + + + Type: WPARAM Additional information about the message. The exact meaning depends on the value of the message member. + Read more on docs.microsoft.com. + + + + + Type: LPARAM Additional information about the message. The exact meaning depends on the value of the message member. + Read more on docs.microsoft.com. + + + + + Type: DWORD The time at which the message was posted. + Read more on docs.microsoft.com. + + + +
    + Type: POINT The cursor position, in screen coordinates, when the message was posted. + Read more on docs.microsoft.com. + + + + Contains the window class attributes that are registered by the RegisterClass function. (ANSI) + + > [!NOTE] > The winuser.h header defines WNDCLASS as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + + Type: UINT The class style(s). This member can be any combination of the Class Styles. + Read more on docs.microsoft.com. + + + + + Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. + Read more on docs.microsoft.com. + + + + + Type: HINSTANCE A handle to the instance that contains the window procedure for the class. + Read more on docs.microsoft.com. + + + + + Type: HICON A handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon. + Read more on docs.microsoft.com. + + + + + Type: HCURSOR A handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application's window. + Read more on docs.microsoft.com. + + + + + Type: HBRUSH A handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR The resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the MAKEINTRESOURCE macro. If this member is NULL, windows belonging to this class have no default menu. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpszClassName; the high-order word must be zero. + If lpszClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. The maximum length for lpszClassName is 256. If lpszClassName is greater than the maximum length, the RegisterClass function will fail. + Read more on docs.microsoft.com. + + + + Contains the window class attributes that are registered by the RegisterClass function. (Unicode) + + > [!NOTE] > The winuser.h header defines WNDCLASS as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + + Type: UINT The class style(s). This member can be any combination of the Class Styles. + Read more on docs.microsoft.com. + + + + + Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window-class structure. The system initializes the bytes to zero. + Read more on docs.microsoft.com. + + + + + Type: int The number of extra bytes to allocate following the window instance. The system initializes the bytes to zero. If an application uses WNDCLASS to register a dialog box created by using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA. + Read more on docs.microsoft.com. + + + + + Type: HINSTANCE A handle to the instance that contains the window procedure for the class. + Read more on docs.microsoft.com. + + + + + Type: HICON A handle to the class icon. This member must be a handle to an icon resource. If this member is NULL, the system provides a default icon. + Read more on docs.microsoft.com. + + + + + Type: HCURSOR A handle to the class cursor. This member must be a handle to a cursor resource. If this member is NULL, an application must explicitly set the cursor shape whenever the mouse moves into the application's window. + Read more on docs.microsoft.com. + + + + + Type: HBRUSH A handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color). If a color value is given, you must convert it to one of the following HBRUSH types: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR The resource name of the class menu, as the name appears in the resource file. If you use an integer to identify the menu, use the MAKEINTRESOURCE macro. If this member is NULL, windows belonging to this class have no default menu. + Read more on docs.microsoft.com. + + + + + Type: LPCTSTR A pointer to a null-terminated string or is an atom. If this parameter is an atom, it must be a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpszClassName; the high-order word must be zero. + If lpszClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. The maximum length for lpszClassName is 256. If lpszClassName is greater than the maximum length, the RegisterClass function will fail. + Read more on docs.microsoft.com. + + + + + Represents a Win32 handle that can be closed with . + + + + + Represents a Win32 handle that can be closed with . + + + + The GLYPHMETRICSFLOAT structure contains information about the placement and orientation of a glyph in a character cell. + The values of GLYPHMETRICSFLOAT are specified as notional units. + + + Specifies the width of the smallest rectangle (the glyph's black box) that completely encloses the glyph. + + + Specifies the height of the smallest rectangle (the glyph's black box) that completely encloses the glyph. + + + Specifies the x and y coordinates of the upper-left corner of the smallest rectangle that completely encloses the glyph. + + + Specifies the horizontal distance from the origin of the current character cell to the origin of the next character cell. + + + Specifies the vertical distance from the origin of the current character cell to the origin of the next character cell. + + + The LAYERPLANEDESCRIPTOR structure describes the pixel format of a drawing surface. + Please notice, as documented above, that certain layer plane properties are not supported in the current implementation. The implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers that enhance parts of OpenGL may support some layer plane properties not supported by the generic implementation. + + + Specifies the size of this data structure. Set this value to sizeof(LAYERPLANEDESCRIPTOR). + + + Specifies the version of this data structure. Set this value to 1. + + + + A set of bit flags that specify properties of the layer plane. The properties are generally not mutually exclusive; any combination of bit flags can be set, with the exceptions noted. The following bit flag constants are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Specifies the type of pixel data. The following types are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color-index buffer. + + + Specifies the number of red bitplanes in each RGBA color buffer. + + + Specifies the shift count for red bitplanes in each RGBA color buffer. + + + Specifies the number of green bitplanes in each RGBA color buffer. + + + Specifies the shift count for green bitplanes in each RGBA color buffer. + + + Specifies the number of blue bitplanes in each RGBA color buffer. + + + Specifies the shift count for blue bitplanes in each RGBA color buffer. + + + Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the total number of bitplanes in the accumulation buffer. + + + Specifies the number of red bitplanes in the accumulation buffer. + + + Specifies the number of green bitplanes in the accumulation buffer. + + + Specifies the number of blue bitplanes in the accumulation buffer. + + + Specifies the number of alpha bitplanes in the accumulation buffer. + + + Specifies the depth of the depth (z-axis) buffer. + + + Specifies the depth of the stencil buffer. + + + Specifies the number of auxiliary buffers. Auxiliary buffers are not supported. + + + + + + Not used. Must be zero. + + + When the LPD_TRANSPARENT flag is set, specifies the transparent color or index value. Typically the value is zero. + + + The PIXELFORMATDESCRIPTOR structure describes the pixel format of a drawing surface. + Please notice carefully, as documented above, that certain pixel format properties are not supported in the current generic implementation. The generic implementation is the Microsoft GDI software implementation of OpenGL. Hardware manufacturers may enhance parts of OpenGL, and may support some pixel format properties not supported by the generic implementation. + + + Specifies the size of this data structure. This value should be set to sizeof(PIXELFORMATDESCRIPTOR). + + + Specifies the version of this data structure. This value should be set to 1. + + + + A set of bit flags that specify properties of the pixel buffer. The properties are generally not mutually exclusive; you can set any combination of bit flags, with the exceptions noted. The following bit flag constants are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + Specifies the type of pixel data. The following types are defined. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Specifies the number of color bitplanes in each color buffer. For RGBA pixel types, it is the size of the color buffer, excluding the alpha bitplanes. For color-index pixels, it is the size of the color-index buffer. + + + Specifies the number of red bitplanes in each RGBA color buffer. + + + Specifies the shift count for red bitplanes in each RGBA color buffer. + + + Specifies the number of green bitplanes in each RGBA color buffer. + + + Specifies the shift count for green bitplanes in each RGBA color buffer. + + + Specifies the number of blue bitplanes in each RGBA color buffer. + + + Specifies the shift count for blue bitplanes in each RGBA color buffer. + + + Specifies the number of alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the shift count for alpha bitplanes in each RGBA color buffer. Alpha bitplanes are not supported. + + + Specifies the total number of bitplanes in the accumulation buffer. + + + Specifies the number of red bitplanes in the accumulation buffer. + + + Specifies the number of green bitplanes in the accumulation buffer. + + + Specifies the number of blue bitplanes in the accumulation buffer. + + + Specifies the number of alpha bitplanes in the accumulation buffer. + + + Specifies the depth of the depth (z-axis) buffer. + + + Specifies the depth of the stencil buffer. + + + Specifies the number of auxiliary buffers. Auxiliary buffers are not supported. + + + Specifies the number of overlay and underlay planes. Bits 0 through 3 specify up to 15 overlay planes and bits 4 through 7 specify up to 15 underlay planes. + + + Ignored. Earlier implementations of OpenGL used this member, but it is no longer used. + + + Specifies the transparent color or index of an underlay plane. When the pixel type is RGBA, dwVisibleMask is a transparent RGB color value. When the pixel type is color index, it is a transparent index value. + + + Ignored. Earlier implementations of OpenGL used this member, but it is no longer used. + + + The POINTFLOAT structure contains the x and y coordinates of a point. + + Learn more about this API from docs.microsoft.com. + + + + Specifies the horizontal (x) coordinate of a point. + + + Specifies the vertical (y) coordinate of a point. + + + + Contains extern methods from "GDI32.dll". + + + Contains extern methods from "KERNEL32.dll". + + + Contains extern methods from "OPENGL32.dll". + + + Contains extern methods from "USER32.dll". + + + + The DeleteObject function deletes a logical pen, brush, font, bitmap, region, or palette, freeing all system resources associated with the object. After the object is deleted, the specified handle is no longer valid. + A handle to a logical pen, brush, font, bitmap, region, or palette. + + If the function succeeds, the return value is nonzero. If the specified handle is not valid or is currently selected into a DC, the return value is zero. + + + Do not delete a drawing object (pen or brush) while it is still selected into a DC. When a pattern brush is deleted, the bitmap associated with the brush is not deleted. The bitmap must be deleted independently. + Read more on docs.microsoft.com. + + + + + + + The ChoosePixelFormat function attempts to match an appropriate pixel format supported by a device context to a given pixel format specification. + Specifies the device context that the function examines to determine the best match for the pixel format descriptor pointed to by ppfd. + + Pointer to a PIXELFORMATDESCRIPTOR structure that specifies the requested pixel format. In this context, the members of the PIXELFORMATDESCRIPTOR structure that ppfd points to are used as follows: + This doc was truncated. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a pixel format index (one-based) that is the closest match to the given pixel format descriptor. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + You must ensure that the pixel format matched by the ChoosePixelFormat function satisfies your requirements. For example, if you request a pixel format with a 24-bit RGB color buffer but the device context offers only 8-bit RGB color buffers, the function returns a pixel format with an 8-bit RGB color buffer. + + + The DescribePixelFormat function obtains information about the pixel format identified by iPixelFormat of the device associated with hdc. The function sets the members of the PIXELFORMATDESCRIPTOR structure pointed to by ppfd with that pixel format data. + Specifies the device context. + Index that specifies the pixel format. The pixel formats that a device context supports are identified by positive one-based integer indexes. + The size, in bytes, of the structure pointed to by ppfd. The DescribePixelFormat function stores no more than nBytes bytes of data to that structure. Set this value to sizeof(PIXELFORMATDESCRIPTOR). + Pointer to a PIXELFORMATDESCRIPTOR structure whose members the function sets with pixel format data. The function stores the number of bytes copied to the structure in the structure's nSize member. If, upon entry, ppfd is NULL, the function writes no data to the structure. This is useful when you only want to obtain the maximum pixel format index of a device context. + + If the function succeeds, the return value is the maximum pixel format index of the device context. In addition, the function sets the members of the PIXELFORMATDESCRIPTOR structure pointed to by ppfd according to the specified pixel format. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Learn more about this API from docs.microsoft.com. + + + + The DeleteEnhMetaFile function deletes an enhanced-format metafile or an enhanced-format metafile handle. + A handle to an enhanced metafile. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + If the hemf parameter identifies an enhanced metafile stored in memory, the DeleteEnhMetaFile function deletes the metafile. If hemf identifies a metafile stored on a disk, the function deletes the metafile handle but does not destroy the actual metafile. An application can retrieve the file by calling the GetEnhMetaFile function. + + + + + + The GetEnhMetaFilePixelFormat function retrieves pixel format information for an enhanced metafile. + Identifies the enhanced metafile. + Specifies the size, in bytes, of the buffer into which the pixel format information is copied. + Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The metafile uses this structure to record the logical pixel format specification. + + If the function succeeds and finds a pixel format, the return value is the size of the metafile's pixel format. If no pixel format is present, the return value is zero. If an error occurs and the function fails, the return value is GDI_ERROR. To get extended error information, call GetLastError. + + + When an enhanced metafile specifies a pixel format in its ENHMETAHEADER structure and the pixel format fits in the buffer, the pixel format information is copied into ppfd. When cbBuffer is too small to contain the pixel format of the metafile, the pixel format is not copied to the buffer. In either case, the function returns the size of the metafile's pixel format. For information on metafile recording and other operations, see Enhanced Metafile Operations. + Read more on docs.microsoft.com. + + + + The GetPixelFormat function obtains the index of the currently selected pixel format of the specified device context. + Specifies the device context of the currently selected pixel format index returned by the function. + + If the function succeeds, the return value is the currently selected pixel format index of the specified device context. This is a positive, one-based index value. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Learn more about this API from docs.microsoft.com. + + + + + + + The SetPixelFormat function sets the pixel format of the specified device context to the format specified by the iPixelFormat index. + Specifies the device context whose pixel format the function attempts to set. + Index that identifies the pixel format to set. The various pixel formats supported by a device context are identified by one-based indexes. + Pointer to a PIXELFORMATDESCRIPTOR structure that contains the logical pixel format specification. The system's metafile component uses this structure to record the logical pixel format specification. The structure has no other effect upon the behavior of the SetPixelFormat function. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + If hdc references a window, calling the SetPixelFormat function also changes the pixel format of the window. Setting the pixel format of a window more than once can lead to significant complications for the Window Manager and for multithread applications, so it is not allowed. An application can only set the pixel format of a window one time. Once a window's pixel format is set, it cannot be changed. You should select a pixel format in the device context before calling the wglCreateContext function. The wglCreateContext function creates a rendering context for drawing on the device in the selected pixel format of the device context. An OpenGL window has its own pixel format. Because of this, only device contexts retrieved for the client area of an OpenGL window are allowed to draw into the window. As a result, an OpenGL window should be created with the WS_CLIPCHILDREN and WS_CLIPSIBLINGS styles. Additionally, the window class attribute should not include the CS_PARENTDC style. + Read more on docs.microsoft.com. + + + + The SwapBuffers function exchanges the front and back buffers if the current pixel format for the window referenced by the specified device context includes a back buffer. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + If the current pixel format for the window referenced by the device context does not include a back buffer, this call has no effect and the content of the back buffer is undefined when the function returns. With multithread applications, flush the drawing commands in any other threads drawing to the same window before calling SwapBuffers. + Read more on docs.microsoft.com. + + + + Closes an open object handle. + A valid handle to an open object. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. If the application is running under a debugger, the function will throw an exception if it receives either a handle value that is not valid or a pseudo-handle value. This can happen if you close a handle twice, or if you call CloseHandle on a handle returned by the FindFirstFile function instead of calling the FindClose function. + + + The CloseHandle function closes handles to the following objects: + This doc was truncated. + Read more on docs.microsoft.com. + + + + Frees the loaded dynamic-link library (DLL) module and, if necessary, decrements its reference count. + + A handle to the loaded library module. The LoadLibrary, LoadLibraryEx, GetModuleHandle, or GetModuleHandleEx function returns this handle. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call the GetLastError function. + + + The system maintains a per-process reference count for each loaded module. A module that was loaded at process initialization due to load-time dynamic linking has a reference count of one. The reference count for a module is incremented each time the module is loaded by a call to LoadLibrary. The reference count is also incremented by a call to LoadLibraryEx unless the module is being loaded for the first time and is being loaded as a data or image file. The reference count is decremented each time the FreeLibrary or FreeLibraryAndExitThread function is called for the module. When a module's reference count reaches zero or the process terminates, the system unloads the module from the address space of the process. Before unloading a library module, the system enables the module to detach from the process by calling the module's DllMain function, if it has one, with the DLL_PROCESS_DETACH value. Doing so gives the library module an opportunity to clean up resources allocated on behalf of the current process. After the entry-point function returns, the library module is removed from the address space of the current process. It is not safe to call FreeLibrary from DllMain. For more information, see the Remarks section in DllMain. Calling FreeLibrary does not affect other processes that are using the same module. Use caution when calling FreeLibrary with a handle returned by GetModuleHandle. The GetModuleHandle function does not increment a module's reference count, so passing this handle to FreeLibrary can cause a module to be unloaded prematurely. A thread that must unload the DLL in which it is executing and then terminate itself should call FreeLibraryAndExitThread instead of calling FreeLibrary and ExitThread separately. Otherwise, a race condition can occur. For details, see the Remarks section of FreeLibraryAndExitThread. + Read more on docs.microsoft.com. + + + + + + + Retrieves a module handle for the specified module. The module must have been loaded by the calling process. (Unicode) + + The name of the loaded module (either a .dll or .exe file). If the file name extension is omitted, the default library extension .dll is appended. The file name string can include a trailing point character (.) to indicate that the module name has no extension. The string does not have to specify a path. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). The name is compared (case independently) to the names of modules currently mapped into the address space of the calling process. + If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file). The GetModuleHandle function does not retrieve handles for modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a handle to the specified module. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The returned handle is not global or inheritable. It cannot be duplicated or used by another process. If lpModuleName does not include a path and there is more than one loaded module with the same base name and extension, you cannot predict which module handle will be returned. To work around this problem, you could specify a path, use side-by-side assemblies, or use GetModuleHandleEx to specify a memory location rather than a DLL name. The GetModuleHandle function returns a handle to a mapped module without incrementing its reference count. However, if this handle is passed to the FreeLibrary function, the reference count of the mapped module will be decremented. Therefore, do not pass a handle returned by GetModuleHandle to the FreeLibrary function. Doing so can cause a DLL module to be unmapped prematurely. This function must be used carefully in a multithreaded application. There is no guarantee that the module handle remains valid between the time this function returns the handle and the time it is used. For example, suppose that a thread retrieves a module handle, but before it uses the handle, a second thread frees the module. If the system loads another module, it could reuse the module handle that was recently freed. Therefore, the first thread would have a handle to a different module than the one intended. + Read more on docs.microsoft.com. + + + + + + + Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL). + + A handle to the DLL module that contains the function or variable. The LoadLibrary, LoadLibraryEx, LoadPackagedLibrary, or GetModuleHandle function returns this handle. The GetProcAddress function does not retrieve addresses from modules that were loaded using the LOAD_LIBRARY_AS_DATAFILE flag. For more information, see LoadLibraryEx. + Read more on docs.microsoft.com. + + The function or variable name, or the function's ordinal value. If this parameter is an ordinal value, it must be in the low-order word; the high-order word must be zero. + + If the function succeeds, the return value is the address of the exported function or variable. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The spelling and case of a function name pointed to by lpProcName must be identical to that in the EXPORTS statement of the source DLL's module-definition (.def) file. The exported names of functions may differ from the names you use when calling these functions in your code. This difference is hidden by macros used in the SDK header files. For more information, see Conventions for Function Prototypes. The lpProcName parameter can identify the DLL function by specifying an ordinal value associated with the function in the EXPORTS statement. GetProcAddress verifies that the specified ordinal is in the range 1 through the highest ordinal value exported in the .def file. The function then uses the ordinal as an index to read the function's address from a function table. If the .def file does not number the functions consecutively from 1 to N (where N is the number of exported functions), an error can occur where GetProcAddress returns an invalid, non-NULL address, even though there is no function with the specified ordinal. If the function might not exist in the DLL module—for example, if the function is available only on Windows Vista but the application might be running on Windows XP—specify the function by name rather than by ordinal value and design your application to handle the case when the function is not available, as shown in the following code fragment. + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Loads the specified module into the address space of the calling process. (LoadLibraryW) + + The name of the module. This can be either a library module (a .dll file) or an executable module (an .exe file). If the specified module is an executable module, static imports are not loaded; instead, the module is loaded as if by LoadLibraryEx with the `DONT_RESOLVE_DLL_REFERENCES` flag. The name specified is the file name of the module and is not related to the name stored in the library module itself, as specified by the LIBRARY keyword in the module-definition (.def) file. If the string specifies a full path, the function searches only that path for the module. If the string specifies a relative path or a module name without a path, the function uses a standard search strategy to find the module; for more information, see the Remarks. If the function cannot find the module, the function fails. When specifying a path, be sure to use backslashes (\\), not forward slashes (/). For more information about paths, see Naming a File or Directory. If the string specifies a module name without a path and the file name extension is omitted, the function appends the default library extension ".DLL" to the module name. To prevent the function from appending ".DLL" to the module name, include a trailing point character (.) in the module name string. + Read more on docs.microsoft.com. + + + If the function succeeds, the return value is a handle to the module. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + To enable or disable error messages displayed by the loader during DLL loads, use the SetErrorMode function. LoadLibrary can be used to load a library module into the address space of the process and return a handle that can be used in GetProcAddress to get the address of a DLL function. LoadLibrary can also be used to load other executable modules. For example, the function can specify an .exe file to get a handle that can be used in FindResource or LoadResource. However, do not use LoadLibrary to run an .exe file. Instead, use the CreateProcess function. If the specified module is a DLL that is not already loaded for the calling process, the system calls the DLL's DllMain function with the DLL_PROCESS_ATTACH value. If DllMain returns TRUE, LoadLibrary returns a handle to the module. If DllMain returns FALSE, the system unloads the DLL from the process address space and LoadLibrary returns NULL. It is not safe to call LoadLibrary from DllMain. For more information, see the Remarks section in DllMain. Module handles are not global or inheritable. A call to LoadLibrary by one process does not produce a handle that another process can use — for example, in calling GetProcAddress. The other process must make its own call to LoadLibrary for the module before calling GetProcAddress. If lpFileName does not include a path and there is more than one loaded module with the same base name and extension, the function returns a handle to the module that was loaded first. If no file name extension is specified in the lpFileName parameter, the default library extension .dll is appended. However, the file name string can include a trailing point character (.) to indicate that the module name has no extension. When no path is specified, the function searches for loaded modules whose base name matches the base name of the module to be loaded. If the name matches, the load succeeds. Otherwise, the function searches for the file. The first directory searched is the directory containing the image file used to create the calling process (for more information, see the CreateProcess function). Doing this allows private dynamic-link library (DLL) files associated with a process to be found without adding the process's installed directory to the PATH environment variable. If a relative path is specified, the entire relative path is appended to every token in the DLL search path list. To load a module from a relative path without searching any other path, use GetFullPathName to get a nonrelative path and call LoadLibrary with the nonrelative path. For more information on the DLL search order, see Dynamic-Link Library Search Order. The search path can be altered using the SetDllDirectory function. This solution is recommended instead of using SetCurrentDirectory or hard-coding the full path to the DLL. If a path is specified and there is a redirection file for the application, the function searches for the module in the application's directory. If the module exists in the application's directory, LoadLibrary ignores the specified path and loads the module from the application's directory. If the module does not exist in the application's directory, LoadLibrary loads the module from the specified directory. For more information, see Dynamic Link Library Redirection. If you call LoadLibrary with the name of an assembly without a path specification and the assembly is listed in the system compatible manifest, the call is automatically redirected to the side-by-side assembly. The system maintains a per-process reference count on all loaded modules. Calling LoadLibrary increments the reference count. Calling the FreeLibrary or FreeLibraryAndExitThread function decrements the reference count. The system unloads a module when its reference count reaches zero or when the process terminates (regardless of the reference count). Windows Server 2003 and Windows XP:  The Visual C++ compiler supports a syntax that enables you to declare thread-local variables: _declspec(thread). If you use this syntax in a DLL, you will not be able to load the DLL explicitly using LoadLibrary on versions of Windows prior to Windows Vista. If your DLL will be loaded explicitly, you must use the thread local storage functions instead of _declspec(thread). For an example, see Using Thread Local Storage in a Dynamic Link Library.

    Security Remarks

    Do not use the SearchPath function to retrieve a path to a DLL for a subsequent LoadLibrary call. The SearchPath function uses a different search order than LoadLibrary and it does not use safe process search mode unless this is explicitly enabled by calling SetSearchPathMode with BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE. Therefore, SearchPath is likely to first search the user’s current working directory for the specified DLL. If an attacker has copied a malicious version of a DLL into the current working directory, the path retrieved by SearchPath will point to the malicious DLL, which LoadLibrary will then load. Do not make assumptions about the operating system version based on a LoadLibrary call that searches for a DLL. If the application is running in an environment where the DLL is legitimately not present but a malicious version of the DLL is in the search path, the malicious version of the DLL may be loaded. Instead, use the recommended techniques described in Getting the System Version.
    + Read more on docs.microsoft.com. +
    +
    + + + + + The wglGetProcAddress function returns the address of an OpenGL extension function for use with the current OpenGL rendering context. + + When the function succeeds, the return value is the address of the extension function. When no current rendering context exists or the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The OpenGL library supports multiple implementations of its functions. Extension functions supported in one rendering context are not necessarily available in a separate rendering context. Thus, for a given rendering context in an application, use the function addresses returned by the wglGetProcAddress function only. The spelling and the case of the extension function pointed to by lpszProc must be identical to that of a function supported and implemented by OpenGL. Because extension functions are not exported by OpenGL, you must use wglGetProcAddress to get the addresses of vendor-specific extension functions. The extension function addresses are unique for each pixel format. All rendering contexts of a given pixel format share the same extension function addresses. + Read more on docs.microsoft.com. + + + + The wglDeleteContext function deletes a specified OpenGL rendering context. + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + It is an error to delete an OpenGL rendering context that is the current context of another thread. However, if a rendering context is the calling thread's current context, the wglDeleteContext function changes the rendering context to being not current before deleting it. The wglDeleteContext function does not delete the device context associated with the OpenGL rendering context when you call the wglMakeCurrent function. After calling wglDeleteContext, you must call DeleteDC to delete the associated device context. + Read more on docs.microsoft.com. + + + + + + + The wglCreateContext function creates a new OpenGL rendering context, which is suitable for drawing on the device referenced by hdc. The rendering context has the same pixel format as the device context. + + If the function succeeds, the return value is a valid handle to an OpenGL rendering context. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + A rendering context is not the same as a device context. Set the pixel format of the device context before creating a rendering context. For more information on setting the device context's pixel format, see the SetPixelFormat function. To use OpenGL, you create a rendering context, select it as a thread's current rendering context, and then call OpenGL functions. When you are finished with the rendering context, you dispose of it by calling the wglDeleteContext function. The following code example shows wglCreateContext usage. + + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + The wglCreateLayerContext function creates a new OpenGL rendering context for drawing to a specified layer plane on a device context. + + If the function succeeds, the return value is a handle to an OpenGL rendering context. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + A rendering context is a port through which all OpenGL commands pass. Every thread that makes OpenGL calls must have one current, active rendering context. A rendering context is not the same as a device context; a rendering context contains information specific to OpenGL, while a device context contains information specific to GDI. Before you create a rendering context, set the pixel format of the device context with the SetPixelFormat function. You can use a rendering context in a specified layer plane of a window with identical pixel formats only. With OpenGL applications that use multiple threads, you create a rendering context, select it as the current rendering context of a thread, and make OpenGL calls for the specified thread. When you are finished with the rendering context of the thread, call the wglDeleteContext function. + Read more on docs.microsoft.com. + + + + + + + The wglCopyContext function copies selected groups of rendering states from one OpenGL rendering context to another. + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + Using the wglCopyContext function, you can synchronize the rendering state of two rendering contexts. You can only copy the rendering state between two rendering contexts within the same process. The rendering contexts must be from the same OpenGL implementation. For example, you can always copy a rendering state between two rendering contexts with identical pixel format in the same process. You can copy the same state information available only with the glPushAttrib function. You cannot copy some state information, such as pixel pack/unpack state, render mode state, select state, and feedback state. When you call wglCopyContext, make sure that the destination rendering context, hglrcDst, is not current to any thread. + Read more on docs.microsoft.com. + + + + + + + The wglDescribeLayerPlane function obtains information about the layer planes of a given pixel format. + + If the function succeeds, the return value is TRUE. In addition, the wglDescribeLayerPlane function sets the members of the LAYERPLANEDESCRIPTOR structure pointed to by plpd according to the specified layer plane (iLayerPlane ) of the specified pixel format (iPixelFormat ). If the function fails, the return value is FALSE. + + The numbering of planes (iLayerPlane ) determines their order. Higher-numbered planes overlay lower-numbered planes. + + + + + + The wglGetCurrentContext function obtains a handle to the current OpenGL rendering context of the calling thread. + If the calling thread has a current OpenGL rendering context, wglGetCurrentContext returns a handle to that rendering context. Otherwise, the return value is NULL. + The current OpenGL rendering context of a thread is associated with a device context by means of the wglMakeCurrent function. You can use the wglGetCurrentDC function to obtain a handle to the device context associated with the current OpenGL rendering context. + + + The wglGetCurrentDC function obtains a handle to the device context that is associated with the current OpenGL rendering context of the calling thread. + If the calling thread has a current OpenGL rendering context, the function returns a handle to the device context associated with that rendering context by means of the wglMakeCurrent function. Otherwise, the return value is NULL. + You associate a device context with an OpenGL rendering context when it calls the wglMakeCurrent function. You can use the wglGetCurrentContext function to obtain a handle to the calling thread's current OpenGL rendering context. + + + + + + Retrieves the palette entries from a given color-index layer plane for a specified device context. + + Type: int If the function succeeds, the return value is the number of entries that were set in the palette in the specified layer plane of the window. If the function fails or when no pixel format is selected, the return value is zero. To get extended error information, call GetLastError. + + + Each color-index layer plane in a window has a palette with a size 2^n, where n is the number of bit planes in the layer plane. You cannot modify the transparent index of a palette. Use the wglRealizeLayerPalette function to realize the layer palette. Initially the layer palette contains only entries for white. + Read more on docs.microsoft.com. + + + + + + + The wglMakeCurrent function makes a specified OpenGL rendering context the calling thread's current rendering context. + When the wglMakeCurrent function succeeds, the return value is TRUE; otherwise the return value is FALSE. To get extended error information, call GetLastError. + + The hdc parameter must refer to a drawing surface supported by OpenGL. It need not be the same hdc that was passed to wglCreateContext when hglrc was created, but it must be on the same device and have the same pixel format. GDI transformation and clipping in hdc are not supported by the rendering context. The current rendering context uses the hdc device context until the rendering context is no longer current. Before switching to the new rendering context, OpenGL flushes any previous rendering context that was current to the calling thread. A thread can have one current rendering context. A process can have multiple rendering contexts by means of multithreading. A thread must set a current rendering context before calling any OpenGL functions. Otherwise, all OpenGL calls are ignored. A rendering context can be current to only one thread at a time. You cannot make a rendering context current to multiple threads. An application can perform multithread drawing by making different rendering contexts current to different threads, supplying each thread with its own rendering context and device context. If an error occurs, the wglMakeCurrent function makes the thread's current rendering context not current before returning. + Read more on docs.microsoft.com. + + + + The wglRealizeLayerPalette function maps palette entries from a given color-index layer plane into the physical palette or initializes the palette of an RGBA layer plane. + If the function succeeds, the return value is TRUE, even if bRealize is TRUE and the physical palette is not available. If the function fails or when no pixel format is selected, the return value is FALSE. To get extended error information, call GetLastError. + + The physical palette for a layer plane is a shared resource among windows with layer planes. When more than one window attempts to realize a palette for a given physical layer plane, only one palette at a time is realized. When you call the wglRealizeLayerPalette function, the layer palette of a foreground window is always realized first. When a window's layer palette is realized, its palette entries are always mapped one-to-one into the physical palette. Unlike GDI logical palettes, with wglRealizeLayerPalette there is no mapping of other windows' layer palettes to the current physical palette. Whenever a window becomes the foreground window, call wglRealizeLayerPalette to realize its layer palettes again, even if the pixel type of the layer plane is RGBA. Because wglRealizeLayerPalette doesn't realize the palette of the main plane, use GDI palette functions to realize the main plane palette. + Read more on docs.microsoft.com. + + + + + + + Sets the palette entries in a given color-index layer plane for a specified device context. + + Type: int If the function succeeds, the return value is the number of entries that were set in the palette in the specified layer plane of the window. If the function fails or no pixel format is selected, the return value is zero. To get extended error information, call GetLastError. + + + Each color-index plane in a window has a palette with a size 2^n, where n is the number of bit planes in the layer plane. You cannot modify the transparent index of a palette. Use the wglRealizeLayerPalette function to realize the layer palette. Initially the layer palette contains only entries for white. The wglSetLayerPaletteEntries function doesn't set the palette entries of the main plane palette. To update the main plane palette, use GDI palette functions. + Read more on docs.microsoft.com. + + + + + + + The wglShareLists function enables multiple OpenGL rendering contexts to share a single display-list space. + + When the function succeeds, the return value is TRUE. When the function fails, the return value is FALSE and the display lists are not shared. To get extended error information, call GetLastError. + + + When you create an OpenGL rendering context, it has its own display-list space. The wglShareLists function enables a rendering context to share the display-list space of another rendering context; any number of rendering contexts can share a single display-list space. Once a rendering context shares a display-list space, the rendering context always uses the display-list space until the rendering context is deleted. When the last rendering context of a shared display-list space is deleted, the shared display-list space is deleted. All the indexes and definitions of display lists in a shared display-list space are shared. You can only share display lists with rendering contexts within the same process. However, not all rendering contexts in a process can share display lists. Rendering contexts can share display lists only if they use the same implementation of OpenGL functions. All client rendering contexts of a given pixel format can always share display lists. All rendering contexts of a shared display list must use an identical pixel format. Otherwise the results depend on the implementation of OpenGL used.
    Note  The wglShareLists function is only available with OpenGL version 1.01 or later. To determine the version number of the implementation of OpenGL, call glGetString.
     
    + Read more on docs.microsoft.com. +
    +
    + + The wglSwapLayerBuffers function swaps the front and back buffers in the overlay, underlay, and main planes of the window referenced by a specified device context. + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + When a layer plane doesn't include a back buffer, calling the wglSwapLayerBuffers function has no effect on that layer plane. After you call wglSwapLayerBuffers, the state of the back buffer content is given in the corresponding LAYERPLANEDESCRIPTOR structure of the layer plane or in the PIXELFORMATDESCRIPTOR structure of the main plane. The wglSwapLayerBuffers function swaps the front and back buffers in the specified layer planes simultaneously. Some devices don't support swapping layer planes individually; they swap all layer planes as a group. When the PFD_SWAP_LAYER_BUFFERS flag of the PIXELFORMATDESCRIPTOR structure is set, it indicates that a device can swap individual layer planes and that you can call wglSwapLayerBuffers. With applications that use multiple threads, before calling wglSwapLayerBuffers, clear all drawing commands in all threads drawing to the same window. + Read more on docs.microsoft.com. + + + + The wglUseFontBitmaps function creates a set of bitmap display lists for use in the current OpenGL rendering context. (Unicode) + + If the function succeeds, the return value is TRUE. If the function fails, the return value is FALSE. To get extended error information, call GetLastError. + + + The wglUseFontBitmaps function defines count display lists in the current OpenGL rendering context. Each display list has an identifying number, starting at listBase. Each display list consists of a single call to glBitmap. The definition of bitmap listBase + i is taken from the glyph first + i of the font currently selected in the device context specified by hdc. If a glyph is not defined, then the function defines an empty display list for it. The wglUseFontBitmaps function creates bitmap text in the plane of the screen. It enables the labeling of objects in OpenGL. In the current version of Microsoft's implementation of OpenGL, you cannot make GDI calls to a device context that has a double-buffered pixel format. Therefore, you cannot use the GDI fonts and text functions with such device contexts. You can use the wglUseFontBitmaps function to circumvent this limitation and draw text in a double-buffered device context. The function determines the parameters of each call to glBitmap as follows. + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + The wglUseFontOutlines function creates a set of display lists, one for each glyph of the currently selected outline font of a device context, for use with the current rendering context. (Unicode) + + When the function succeeds, the return value is TRUE. When the function fails, the return value is FALSE and no display lists are generated. To get extended error information, call GetLastError. + + + The wglUseFontOutlines function defines the glyphs of an outline font with display lists in the current rendering context. The wglUseFontOutlines function works with TrueType fonts only; stroke and raster fonts are not supported. Each display list consists of either line segments or polygons, and has a unique identifying number starting with the listBase number. The wglUseFontOutlines function approximates glyph outlines by subdividing the quadratic B-spline curves of the outline into line segments, until the distance between the outline and the interpolated midpoint is within the value specified by deviation. This is the final format used when format is WGL_FONT_LINES. When you specify WGL_FONT_OUTLINES, the display lists created don't contain any normals; thus lighting doesn't work properly. To get the correct lighting of lines use WGL_FONT_POLYGONS and set glPolygonMode( GL_FRONT, GL_LINE ). When you specify format as WGL_FONT_POLYGONS the outlines are further tessellated into separate triangles, triangle fans, triangle strips, or quadrilateral strips to create the surface of each glyph. With WGL_FONT_POLYGONS, the created display lists call glFrontFace( GL_CW ) or glFrontFace( GL_CCW ); thus the current front-face value might be altered. For the best appearance of text with WGL_FONT_POLYGONS, cull the back faces as follows: + + This doc was truncated. + Read more on docs.microsoft.com. + + + + Destroys an icon and frees any memory the icon occupied. + + Type: HICON A handle to the icon to be destroyed. The icon must not be in use. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + It is only necessary to call DestroyIcon for icons and cursors created with the following functions: CreateIconFromResourceEx (if called without the LR_SHARED flag), CreateIconIndirect, and CopyIcon. Do not use this function to destroy a shared icon. A shared icon is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared icon. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Destroys a cursor and frees any memory the cursor occupied. Do not use this function to destroy a shared cursor. + + Type: HCURSOR A handle to the cursor to be destroyed. The cursor must not be in use. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + The DestroyCursor function destroys a nonshared cursor. Do not use this function to destroy a shared cursor. A shared cursor is valid as long as the module from which it was loaded remains in memory. The following functions obtain a shared cursor: + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Calculates the required size of the window rectangle, based on the desired client-rectangle size. The window rectangle can then be passed to the CreateWindow function to create a window whose client area is the desired size. + + Type: LPRECT A pointer to a RECT structure that contains the coordinates of the top-left and bottom-right corners of the desired client area. When the function returns, the structure contains the coordinates of the top-left and bottom-right corners of the window to accommodate the desired client area. + Read more on docs.microsoft.com. + + + Type: DWORD The window style of the window whose required size is to be calculated. Note that you cannot specify the WS_OVERLAPPED style. + Read more on docs.microsoft.com. + + + Type: BOOL Indicates whether the window has a menu. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + A client rectangle is the smallest rectangle that completely encloses a client area. A window rectangle is the smallest rectangle that completely encloses the window, which includes the client area and the nonclient area. The AdjustWindowRect function does not add extra space when a menu bar wraps to two or more rows. The AdjustWindowRect function does not take the WS_VSCROLL or WS_HSCROLL styles into account. To account for the scroll bars, call the GetSystemMetrics function with SM_CXVSCROLL or SM_CYHSCROLL. + Read more on docs.microsoft.com. + + + + Destroys the specified menu and frees any memory that the menu occupies. + + Type: HMENU A handle to the menu to be destroyed. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + Before closing, an application must use the DestroyMenu function to destroy a menu not assigned to a window. A menu that is assigned to a window is automatically destroyed when the application closes. DestroyMenu is recursive, that is, it will destroy the menu and all its submenus. + Read more on docs.microsoft.com. + + + + + + + Creates an overlapped, pop-up, or child window with an extended window style; otherwise, this function is identical to the CreateWindow function. (Unicode) + + Type: DWORD The extended window style of the window being created. For a list of possible values, see Extended Window Styles. + Read more on docs.microsoft.com. + + + Type: LPCTSTR A null-terminated string or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero. If lpClassName is a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, provided that the module that registers the class is also the module that creates the window. The class name can also be any of the predefined system class names. + Read more on docs.microsoft.com. + + + Type: LPCTSTR The window name. If the window style specifies a title bar, the window title pointed to by lpWindowName is displayed in the title bar. When using CreateWindow to create controls, such as buttons, check boxes, and static controls, use lpWindowName to specify the text of the control. When creating a static control with the SS_ICON style, use lpWindowName to specify the icon name or identifier. To specify an identifier, use the syntax "#num". + Read more on docs.microsoft.com. + + + Type: DWORD The style of the window being created. This parameter can be a combination of the window style values, plus the control styles indicated in the Remarks section. + Read more on docs.microsoft.com. + + + Type: int The initial horizontal position of the window. For an overlapped or pop-up window, the x parameter is the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window, x is the x-coordinate of the upper-left corner of the window relative to the upper-left corner of the parent window's client area. If x is set to CW_USEDEFAULT, the system selects the default position for the window's upper-left corner and ignores the y parameter. CW_USEDEFAULT is valid only for overlapped windows; if it is specified for a pop-up or child window, the x and y parameters are set to zero. + Read more on docs.microsoft.com. + + + Type: int The initial vertical position of the window. For an overlapped or pop-up window, the y parameter is the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window, y is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left corner of the parent window's client area. For a list box y is the initial y-coordinate of the upper-left corner of the list box's client area relative to the upper-left corner of the parent window's client area. + If an overlapped window is created with the WS_VISIBLE style bit set and the x parameter is set to CW_USEDEFAULT, then the y parameter determines how the window is shown. If the y parameter is CW_USEDEFAULT, then the window manager calls ShowWindow with the SW_SHOW flag after the window has been created. If the y parameter is some other value, then the window manager calls ShowWindow with that value as the nCmdShow parameter. + Read more on docs.microsoft.com. + + + Type: int The width, in device units, of the window. For overlapped windows, nWidth is the window's width, in screen coordinates, or CW_USEDEFAULT. If nWidth is CW_USEDEFAULT, the system selects a default width and height for the window; the default width extends from the initial x-coordinates to the right edge of the screen; the default height extends from the initial y-coordinate to the top of the icon area. CW_USEDEFAULT is valid only for overlapped windows; if CW_USEDEFAULT is specified for a pop-up or child window, the nWidth and nHeight parameter are set to zero. + Read more on docs.microsoft.com. + + + Type: int The height, in device units, of the window. For overlapped windows, nHeight is the window's height, in screen coordinates. If the nWidth parameter is set to CW_USEDEFAULT, the system ignores nHeight. + Read more on docs.microsoft.com. + + + Type: HWND A handle to the parent or owner window of the window being created. To create a child window or an owned window, supply a valid window handle. This parameter is optional for pop-up windows. To create a message-only window, supply HWND_MESSAGE or a handle to an existing message-only window. + Read more on docs.microsoft.com. + + + Type: HMENU A handle to a menu, or specifies a child-window identifier, depending on the window style. For an overlapped or pop-up window, hMenu identifies the menu to be used with the window; it can be NULL if the class menu is to be used. For a child window, hMenu specifies the child-window identifier, an integer value used by a dialog box control to notify its parent about events. The application determines the child-window identifier; it must be unique for all child windows with the same parent window. + Read more on docs.microsoft.com. + + + Type: HINSTANCE A handle to the instance of the module to be associated with the window. + Read more on docs.microsoft.com. + + + Type: LPVOID Pointer to a value to be passed to the window through the CREATESTRUCT structure (lpCreateParams member) pointed to by the lParam param of the WM_CREATE message. This message is sent to the created window by this function before it returns. If an application calls CreateWindow to create a MDI client window, lpParam should point to a CLIENTCREATESTRUCT structure. If an MDI client window calls CreateWindow to create an MDI child window, lpParam should point to a MDICREATESTRUCT structure. lpParam may be NULL if no additional data is needed. + Read more on docs.microsoft.com. + + + Type: HWND If the function succeeds, the return value is a handle to the new window. If the function fails, the return value is NULL. To get extended error information, call GetLastError. This function typically fails for one of the following reasons: + This doc was truncated. + + + The CreateWindowEx function sends WM_NCCREATE, WM_NCCALCSIZE, and WM_CREATE messages to the window being created. If the created window is a child window, its default position is at the bottom of the Z-order. If the created window is a top-level window, its default position is at the top of the Z-order (but beneath all topmost windows unless the created window is itself topmost). For information on controlling whether the Taskbar displays a button for the created window, see Managing Taskbar Buttons. For information on removing a window, see the DestroyWindow function. The following predefined control classes can be specified in the lpClassName parameter. Note the corresponding control styles you can use in the dwStyle parameter. + This doc was truncated. + Read more on docs.microsoft.com. + + + + Calls the default window procedure to provide default processing for any window messages that an application does not process. (Unicode) + + Type: HWND A handle to the window procedure that received the message. + Read more on docs.microsoft.com. + + + Type: UINT The message. + Read more on docs.microsoft.com. + + + Type: WPARAM Additional message information. The content of this parameter depends on the value of the Msg parameter. + Read more on docs.microsoft.com. + + + Type: LPARAM Additional message information. The content of this parameter depends on the value of the Msg parameter. + Read more on docs.microsoft.com. + + + Type: LRESULT The return value is the result of the message processing and depends on the message. + + + > [!NOTE] > The winuser.h header defines DefWindowProc as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes). + Read more on docs.microsoft.com. + + + + Destroys the specified window. + + Type: HWND A handle to the window to be destroyed. + Read more on docs.microsoft.com. + + + Type: BOOL If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + A thread cannot use DestroyWindow to destroy a window created by a different thread. If the window being destroyed is a child window that does not have the WS_EX_NOPARENTNOTIFY style, a WM_PARENTNOTIFY message is sent to the parent. + Read more on docs.microsoft.com. + + + + + + + Dispatches a message to a window procedure. It is typically used to dispatch a message retrieved by the GetMessage function. (DispatchMessageW) + + Type: const MSG* A pointer to a structure that contains the message. + Read more on docs.microsoft.com. + + + Type: LRESULT The return value specifies the value returned by the window procedure. Although its meaning depends on the message being dispatched, the return value generally is ignored. + + + The MSG structure must contain valid message values. If the lpmsg parameter points to a WM_TIMER message and the lParam parameter of the WM_TIMER message is not NULL, lParam points to a function that is called instead of the window procedure. Note that the application is responsible for retrieving and dispatching input messages to the dialog box. Most applications use the main message loop for this. However, to permit the user to move to and to select controls by using the keyboard, the application must call IsDialogMessage. For more information, see Dialog Box Keyboard Interface. + Read more on docs.microsoft.com. + + + + The GetDC function retrieves a handle to a device context (DC) for the client area of a specified window or for the entire screen. + A handle to the window whose DC is to be retrieved. If this value is NULL, GetDC retrieves the DC for the entire screen. + + If the function succeeds, the return value is a handle to the DC for the specified window's client area. If the function fails, the return value is NULL. + + + The GetDC function retrieves a common, class, or private DC depending on the class style of the specified window. For class and private DCs, GetDC leaves the previously assigned attributes unchanged. However, for common DCs, GetDC assigns default attributes to the DC each time it is retrieved. For example, the default font is System, which is a bitmap font. Because of this, the handle to a common DC returned by GetDC does not tell you what font, color, or brush was used when the window was drawn. To determine the font, call GetTextFace. Note that the handle to the DC can only be used by a single thread at any one time. After painting with a common DC, the ReleaseDC function must be called to release the DC. Class and private DCs do not have to be released. ReleaseDC must be called from the same thread that called GetDC. The number of DCs is limited only by available memory. + Read more on docs.microsoft.com. + + + + + + + Loads the specified cursor resource from the executable (.EXE) file associated with an application instance. (Unicode) + + Type: HINSTANCE A handle to an instance of the module whose executable file contains the cursor to be loaded. + Read more on docs.microsoft.com. + + + Type: LPCTSTR The name of the cursor resource to be loaded. Alternatively, this parameter can consist of the resource identifier in the low-order word and zero in the high-order word. The MAKEINTRESOURCE macro can also be used to create this value. To use one of the predefined cursors, the application must set the hInstance parameter to NULL and the lpCursorName parameter to one the following values. + This doc was truncated. + Read more on docs.microsoft.com. + + + Type: HCURSOR If the function succeeds, the return value is the handle to the newly loaded cursor. If the function fails, the return value is NULL. To get extended error information, call GetLastError. + + + The LoadCursor function loads the cursor resource only if it has not been loaded; otherwise, it retrieves the handle to the existing resource. This function returns a valid cursor handle only if the lpCursorName parameter is a pointer to a cursor resource. If lpCursorName is a pointer to any type of resource other than a cursor (such as an icon), the return value is not NULL, even though it is not a valid cursor handle. The LoadCursor function searches the cursor resource most appropriate for the cursor for the current display device. The cursor resource can be a color or monochrome bitmap.

    DPI Virtualization

    This API does not participate in DPI virtualization. The output returned is not affected by the DPI of the calling thread.
    + Read more on docs.microsoft.com. +
    +
    + + + + + Dispatches incoming nonqueued messages, checks the thread message queue for a posted message, and retrieves the message (if any exist). (Unicode) + + Type: LPMSG A pointer to an MSG structure that receives message information. + Read more on docs.microsoft.com. + + + Type: HWND A handle to the window whose messages are to be retrieved. The window must belong to the current thread. + If hWnd is NULL, PeekMessage retrieves messages for any window that belongs to the current thread, and any messages on the current thread's message queue whose hwnd value is NULL (see the MSG structure). Therefore if hWnd is NULL, both window messages and thread messages are processed. If hWnd is -1, PeekMessage retrieves only messages on the current thread's message queue whose hwnd value is NULL, that is, thread messages as posted by PostMessage (when the hWnd parameter is NULL) or PostThreadMessage. + Read more on docs.microsoft.com. + + + Type: UINT The value of the first message in the range of messages to be examined. Use WM_KEYFIRST (0x0100) to specify the first keyboard message or WM_MOUSEFIRST (0x0200) to specify the first mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, PeekMessage returns all available messages (that is, no range filtering is performed). + Read more on docs.microsoft.com. + + + Type: UINT The value of the last message in the range of messages to be examined. Use WM_KEYLAST to specify the last keyboard message or WM_MOUSELAST to specify the last mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, PeekMessage returns all available messages (that is, no range filtering is performed). + Read more on docs.microsoft.com. + + Type: UINT + + Type: BOOL If a message is available, the return value is nonzero. If no messages are available, the return value is zero. + + + PeekMessage retrieves messages associated with the window identified by the hWnd parameter or any of its children as specified by the IsChild function, and within the range of message values given by the wMsgFilterMin and wMsgFilterMax parameters. Note that an application can only use the low word in the wMsgFilterMin and wMsgFilterMax parameters; the high word is reserved for the system. Note that PeekMessage always retrieves WM_QUIT messages, no matter which values you specify for wMsgFilterMin and wMsgFilterMax. During this call, the system dispatches (DispatchMessage) pending, nonqueued messages, that is, messages sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. Then the first queued message that matches the specified filter is retrieved. The system may also process internal events. If no filter is specified, messages are processed in the following order: + This doc was truncated. + Read more on docs.microsoft.com. + + + + Indicates to the system that a thread has made a request to terminate (quit). It is typically used in response to a WM_DESTROY message. + + Type: int The application exit code. This value is used as the wParam parameter of the WM_QUIT message. + Read more on docs.microsoft.com. + + + The PostQuitMessage function posts a WM_QUIT message to the thread's message queue and returns immediately; the function simply indicates to the system that the thread is requesting to quit at some time in the future. When the thread retrieves the WM_QUIT message from its message queue, it should exit its message loop and return control to the system. The exit value returned to the system must be the wParam parameter of the WM_QUIT message. + Read more on docs.microsoft.com. + + + + Registers a window class for subsequent use in calls to the CreateWindow or CreateWindowEx function. (RegisterClassW) + + Type: const WNDCLASS* A pointer to a WNDCLASS structure. You must fill the structure with the appropriate class attributes before passing it to the function. + Read more on docs.microsoft.com. + + + Type: ATOM If the function succeeds, the return value is a class atom that uniquely identifies the class being registered. This atom can only be used by the CreateWindow, CreateWindowEx, GetClassInfo, GetClassInfoEx, FindWindow, FindWindowEx, and UnregisterClass functions and the IActiveIMMap::FilterClientWindows method. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + If you register the window class by using RegisterClassA, the application tells the system that the windows of the created class expect messages with text or character parameters to use the ANSI character set; if you register it by using RegisterClassW, the application requests that the system pass text parameters of messages as Unicode. The IsWindowUnicode function enables applications to query the nature of each window. For more information on ANSI and Unicode functions, see Conventions for Function Prototypes. All window classes that an application registers are unregistered when it terminates. No window classes registered by a DLL are unregistered when the DLL is unloaded. A DLL must explicitly unregister its classes when it is unloaded. + Read more on docs.microsoft.com. + + + + The ReleaseDC function releases a device context (DC), freeing it for use by other applications. The effect of the ReleaseDC function depends on the type of DC. It frees only common and window DCs. It has no effect on class or private DCs. + A handle to the window whose DC is to be released. + A handle to the DC to be released. + + The return value indicates whether the DC was released. If the DC was released, the return value is 1. If the DC was not released, the return value is zero. + + + The application must call the ReleaseDC function for each call to the GetWindowDC function and for each call to the GetDC function that retrieves a common DC. An application cannot use the ReleaseDC function to release a DC that was created by calling the CreateDC function; instead, it must use the DeleteDC function. ReleaseDC must be called from the same thread that called GetDC. + Read more on docs.microsoft.com. + + + + Sets the specified window's show state. + + Type: HWND A handle to the window. + Read more on docs.microsoft.com. + + Type: int + + Type: BOOL If the window was previously visible, the return value is nonzero. If the window was previously hidden, the return value is zero. + + + To perform certain special effects when showing or hiding a window, use AnimateWindow. The first time an application calls ShowWindow, it should use the WinMain function's nCmdShow parameter as its nCmdShow parameter. Subsequent calls to ShowWindow must use one of the values in the given list, instead of the one specified by the WinMain function's nCmdShow parameter. As noted in the discussion of the nCmdShow parameter, the nCmdShow value is ignored in the first call to ShowWindow if the program that launched the application specifies startup information in the structure. In this case, ShowWindow uses the information specified in the STARTUPINFO structure to show the window. On subsequent calls, the application must call ShowWindow with nCmdShow set to SW_SHOWDEFAULT to use the startup information provided by the program that launched the application. This behavior is designed for the following situations: + This doc was truncated. + Read more on docs.microsoft.com. + + + + + + + Translates virtual-key messages into character messages. The character messages are posted to the calling thread's message queue, to be read the next time the thread calls the GetMessage or PeekMessage function. + + Type: const MSG* A pointer to an MSG structure that contains message information retrieved from the calling thread's message queue by using the GetMessage or PeekMessage function. + Read more on docs.microsoft.com. + + + Type: BOOL If the message is translated (that is, a character message is posted to the thread's message queue), the return value is nonzero. If the message is WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP, the return value is nonzero, regardless of the translation. If the message is not translated (that is, a character message is not posted to the thread's message queue), the return value is zero. + + + The TranslateMessage function does not modify the message pointed to by the lpMsg parameter. + WM_KEYDOWN and WM_KEYUP combinations produce a WM_CHAR or WM_DEADCHAR message. WM_SYSKEYDOWN and WM_SYSKEYUP combinations produce a WM_SYSCHAR or WM_SYSDEADCHAR message. TranslateMessage produces WM_CHAR messages only for keys that are mapped to ASCII characters by the keyboard driver. If applications process virtual-key messages for some other purpose, they should not call TranslateMessage. For instance, an application should not call TranslateMessage if the TranslateAccelerator function returns a nonzero value. Note that the application is responsible for retrieving and dispatching input messages to the dialog box. Most applications use the main message loop for this. However, to permit the user to move to and to select controls by using the keyboard, the application must call IsDialogMessage. For more information, see Dialog Box Keyboard Interface. + Read more on docs.microsoft.com. + + + + The UpdateWindow function updates the client area of the specified window by sending a WM_PAINT message to the window if the window's update region is not empty. + Handle to the window to be updated. + + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + + Learn more about this API from docs.microsoft.com. + + + + + Represents a Win32 handle that can be closed with . + + + + diff --git a/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharpC.dll b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgSharpC.dll new file mode 100644 index 0000000000000000000000000000000000000000..e451fb234fc74f73152e5c3f481a2d38db277f35 GIT binary patch literal 314880 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

    _ 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 literal 0 HcmV?d00001 diff --git a/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.deps.json b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.deps.json new file mode 100644 index 00000000..abc35a89 --- /dev/null +++ b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.deps.json @@ -0,0 +1,47 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "StgsharpEnvDebug/1.0.0": { + "dependencies": { + "StgSharp": "1.0.0" + }, + "runtime": { + "StgsharpEnvDebug.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": {}, + "StgSharp/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0" + }, + "runtime": { + "StgSharp.dll": {} + } + } + } + }, + "libraries": { + "StgsharpEnvDebug/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "StgSharp/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.dll b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.dll new file mode 100644 index 0000000000000000000000000000000000000000..565b72f2eaf52b7bb51220560eb4dcdde7b64ec7 GIT binary patch literal 5120 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

    QQ3ZTG@G9UNfL8#w0$&8& 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 XXD8``ZT$HQJ_Ut^F>5C$(zV?`oFZ>_ literal 0 HcmV?d00001 diff --git a/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.pdb b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.pdb new file mode 100644 index 0000000000000000000000000000000000000000..27ea9b6bc1f5a56281f1e745ef974ded6ccc8628 GIT binary patch literal 10832 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 Df=s4L literal 0 HcmV?d00001 diff --git a/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.runtimeconfig.json b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.runtimeconfig.json new file mode 100644 index 00000000..e7b3b03d --- /dev/null +++ b/�代�/StgsharpEnvDebug/bin/x64/RealDebug/net6.0/StgsharpEnvDebug.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net6.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "6.0.0" + }, + "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false + } + } +} \ No newline at end of file diff --git a/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs b/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs index b5c6cf54..03688bec 100644 --- a/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs +++ b/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+127fcdbfd32fd1caa4a55ced77c7e738f038a59c")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1")] [assembly: System.Reflection.AssemblyProductAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache b/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache index e6051138..4cfd50b9 100644 --- a/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache +++ b/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache @@ -1 +1 @@ -7b39ff6abc06538421de53cd860cc4b040d25f526075d35815bc7f2642f11431 +2f6a0800ff20fe2b264d1add4cff4743ee7d04c6f1fc2068d67a1a1e8933e7d5 diff --git a/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.csproj.AssemblyReference.cache b/�代�/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.csproj.AssemblyReference.cache index b8da0c9d91a1fbef136960e1e6bdcf275c04bc06..049b47bd2969a0216b4924895457d688afd7c71c 100644 GIT binary patch delta 17 ZcmZ3$ynuN^J6pNRthc|zHuefL0sud#2Ppsm delta 17 ZcmZ3$ynuN^JKLJBC+D99ZR{0h1OP@n2iE`q diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/Stgsharp.2C714B92.Up2Date b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/Stgsharp.2C714B92.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs index d9769845..0340932a 100644 --- a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs +++ b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("RealDebug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1")] [assembly: System.Reflection.AssemblyProductAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache index a5de6d06..674b2ffb 100644 --- a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache +++ b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.AssemblyInfoInputs.cache @@ -1 +1 @@ -5b48c7e18c37930cc7e201483d7e18cb5afc16d205f92faba367f16ea8d4bcc8 +6cee000e8221630111132e7e07ce2b8372b14173cb797ba26627baab98f22bbd diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.assets.cache b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.assets.cache index a2c8b3ea4afd28acf8dac1e67c0f084c4d62944d..2471241eb203ae05093a8cd987d95a594e58c392 100644 GIT binary patch delta 106 zcmdnZ{*%!+z}wxChk=11Mf5}5t-ohYQ)Z;C{=3cNq^d?+*2f5e347J2rU_(*34R5t OAp{sFzMUb0O%VWhL=~?9 literal 955 zcmWIWc6a1qU|=}txHd+1vKq^+TDH9}l4=uJ&ZhIPe_^k%<;t0`KoPH%Gns&jpnwrb zXEH%R)QEFODUTR5leo<;-L4gra#22pI38>rysN5N-TrVXjhZ)IIkQ+dJ79eJY zilb8?HDcI}11S|iNI3^*Bo-CG^n>)t6YvyBtvgUnKv8~rQDUxwTV_sbv4X0RMTLc# zs*xqa7YbpS#ifZk3c)3%DVg~(Ad6B{V*EQQ0jmIke;9yecPY*PkY+a`fN}Cvn}(UP2KRUcipq;+n%=X zdO2mLmBN$VeNXl*c(HHtv#pKKrfhrKvEf-u|I;PYp3iDgaP@anc-ApZ!9d~3j#W?B zPJhwW^tho3j0CTK1#CFMCnx5xloXYw z3b~{fmt^K8mH?d=T$%)OmK1Kg`CKv+)ARCyI+8)TfXy$|(9*zwBRI7zwJ5Wsl07`J JC@(WF9RQo9Ee!ww diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.AssemblyReference.cache b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.AssemblyReference.cache index 4a4117068b0024268150b01e4dbba7f73bc97196..88ab8a882c84172906d00328526bfdee4ea07136 100644 GIT binary patch delta 207 zcmey!{(*&=jgfI8a|ioGgOaS@VRtr8VrP_OWMW`oU}R+E&Py#RE=kNwNi0eMi%nc0 zV$E0&lmr1r2+0AY&QuHkKdXB;5H1YVEa01&T$Ep&pH`yh9GsC@RKUnGaiQ?U4J;AZ uOxR!_UoUu-%L-uvn8j6QqGzCIY+!6?$;il~=jR#{jO-qe6aGU1BLe_?d@i>D delta 582 zcmeys@{ygHjge_0a|ipSd9O|{`Eq;XBzDGn1_nm1G7~)mJ!1o7LrVt63}>sD(Bjmh z;uycolAQb)y}Z)&)RLHj#N_P6^wi>*+|1;n{Nnty61}A49KDRh;*8|{l++kQJs^xJ zN==K&OD##xFG@`;C@=zw_`;Pt0hN0Il{*8K>!sx6FfuX#LH+97f|9Nq9E^;NV%XI} z)PdAO0azc94RSjJO9PMrq!|m+GILU`^!4?ft@Od}*9W^_AL4#}nEUn7++Pp%fIip* z`alopqj*3cyQ9D!SOBz_K?UN5DL^J06NDcW>}bfq0&*84gLm7J(-k4JO?GXQvX)?Y zWc_dJ<~NoMB`l(5%O9Vg8#FLgAwl4ZTQ?~=B~X+{p9qs~+d|39mHH;^$B-8*cM2$>wmXsn!^Y@TFjoR*fH RVw94SVrmG~2m~m}0|2-rz$^d& diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.BuildWithSkipAnalyzers b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.CoreCompileInputs.cache b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.CoreCompileInputs.cache index 9e1e6385..d04bff3f 100644 --- a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.CoreCompileInputs.cache +++ b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -7530e17cc65bfb0971ea5dd8ffba4f063d5ab8ce77bd93f0d95ae21f926f8f5b +f49a32c0be1eabae2a38a6b4d66dd9563b6d68a5a0ebdd30ae9a70fd14834beb diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.FileListAbsolute.txt b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.FileListAbsolute.txt index d0cf8c9e..81e04b42 100644 --- a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.FileListAbsolute.txt +++ b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.csproj.FileListAbsolute.txt @@ -4,3 +4,16 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\Stgsharp D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\StgsharpEnvDebug.AssemblyInfo.cs D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\StgsharpEnvDebug.csproj.CoreCompileInputs.cache D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\StgsharpEnvDebug.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgsharpEnvDebug.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgsharpEnvDebug.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgsharpEnvDebug.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgsharpEnvDebug.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgsharpEnvDebug.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgSharp.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\bin\x64\RealDebug\net6.0\StgSharp.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\Stgsharp.2C714B92.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\StgsharpEnvDebug.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\refint\StgsharpEnvDebug.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\StgsharpEnvDebug.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\StgsharpEnvDebug.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\�代�\StgsharpEnvDebug\obj\x64\RealDebug\net6.0\ref\StgsharpEnvDebug.dll diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.dll b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.dll new file mode 100644 index 0000000000000000000000000000000000000000..565b72f2eaf52b7bb51220560eb4dcdde7b64ec7 GIT binary patch literal 5120 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 Df=s4L literal 0 HcmV?d00001 diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.sourcelink.json b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.sourcelink.json index 47d8fd92..3d27e0be 100644 --- a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.sourcelink.json +++ b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/StgsharpEnvDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/8148c10acd65bd764d3e12418a1ebd37938d8501/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/e1e416bb41a7e16ddec5e7c16d64c72d6aa380e1/*"}} \ No newline at end of file diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/apphost.exe b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/apphost.exe new file mode 100644 index 0000000000000000000000000000000000000000..ae13f8d9dcc6f8a33371b6c4e117f296e96d0281 GIT binary patch literal 149504 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

    QQ3ZTG@G9UNfL8#w0$&8& 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 XXD8``ZT$HQJ_Ut^F>5C$(zV?`oFZ>_ literal 0 HcmV?d00001 diff --git a/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/ref/StgsharpEnvDebug.dll b/�代�/StgsharpEnvDebug/obj/x64/RealDebug/net6.0/ref/StgsharpEnvDebug.dll new file mode 100644 index 0000000000000000000000000000000000000000..0bb89189c85e30583a04464690a22fe670cf69da GIT binary patch literal 4608 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�f4W)9R>(($suuYCaNt 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%0DH~Bo>P;r{=h+gMoyiZElgoqoN%tLj^PS^7zQN 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 literal 1202688 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%0Df!nbM_=z*nq^p)<+41M&r+4RkEL0LWmzuEWBDv~ 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 diff --git a/�代�/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.xml b/�代�/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.xml index 8dc7b3b8..13be4ca9 100644 --- a/�代�/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.xml +++ b/�代�/StgSharp/bin/x64/RealDebug/netstandard2.1/StgSharp.xml @@ -4,13 +4,7 @@ StgSharp - -

    S4s9 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�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 literal 718848 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 FX%ub%aZ@C5Bucz>7m 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%0AO-qyZ)>m(*cNOD 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 DNRQo~ literal 639488 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 z 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