Home » Archimedes archive » Acorn User » AU 1995-12 A.adf » BigPicDem » !TheBigPic/Resources/Delta

!TheBigPic/Resources/Delta

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1995-12 A.adf » BigPicDem
Filename: !TheBigPic/Resources/Delta
Read OK:
File size: 24B3B bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > ChangeFSI
  140areanumber%=0
  150SYS"OS_GetEnv" TO A$
  160IFINSTR(A$," -wimp") THEN
  170DIM z%(1),p%(2),s%(3),m$(22)
  180A%=OPENIN"<ChangeFSI$Dir>.Messages"
  190B%=-1:REPEAT B%+=1:m$(B%)=GET$#A%:UNTILEOF#A%:CLOSE#A%
  200startfile%=RIGHT$(A$,6)<>"-wimp "
  210DIM taskid%4:$taskid%="TASK"
  220SYS "Wimp_Initialise",200,!taskid%,m$(20) TO version%
  230Wimp    = (1<<18) + (3<<6)
  240CreateW = Wimp+1:OpenW   = Wimp+5
  250CloseW  = Wimp+6:RedrawW = Wimp+8
  260UpdateW = Wimp+9:GetR%   = Wimp+10
  270GetW    = Wimp+11:SetI   = Wimp+13
  280GetI    = Wimp+14:GetP   = Wimp+15
  290Drag    = Wimp+16:CrMenu = Wimp+20
  300DcMenu  = Wimp+21
  310SYS "OS_SWINumberFromString",,"Wimp_PollIdle" TO Poll%
  320SYS "OS_SWINumberFromString",,"XOS_SpriteOp" TO spop%
  330SYS "OS_SWINumberFromString",,"OS_ReadMonotonicTime" TO Time%
  340SYS "OS_SWINumberFromString",,"ColourTrans_ReturnColourNumber" TO ctran%
  350SYS "XOS_SWINumberFromString",,"DragASprite_Start" TO dstart%;f%:IFf%AND 1 dstart%=0
  360SYS "OS_Byte",161,&1C TO ,,f%:IF(f% AND 2)=0 dstart%=0
  370nextlocation%=HIMEM
  380SYS "Wimp_SlotSize",-1,-1 TO originalslot%
  390PROClocale_initialise
  410IF version%>=300 THEN
  420DIM q% 255,ifactors% 15,factors% 15,pixtrans% 255,paltemp% 1023,buffer% 255,idata% 1023
  430ELSE
  440DIM z% 1223,q% 255,ifactors% 15,factors% 15,pixtrans% 255,paltemp% 1023,buffer% 255,idata% 2599
  450ENDIF
  470scrap%=FALSE
  480IF version%<300 sidata%=idata%
  490sprite%=FALSE:sar%=FALSE:saved%=TRUE:z$=STRING$(12,CHR$13)
  510SYS "OS_Byte",161,&8C TO ,,f%
  520IFf% AND 1 THEN
  530SYS"Wimp_OpenTemplate",,"<ChangeFSI$Dir>.3dTemplate"
  540ELSE
  550SYS"Wimp_OpenTemplate",,"<ChangeFSI$Dir>.Templates"
  560ENDIF
  580LOCAL ERROR
  590ON ERROR SYS"Wimp_CloseTemplate":ERROR 0,REPORT$+" (code "+STR$ERL+")"
  610IFversion%>=300 THEN
  620DIM z% FNlargest_buffer
  630indsize%=FNsize_indirect("Info")
  640DIM info_wind% indsize%
  650SYS"Wimp_LoadTemplate",,z%,info_wind%,info_wind%+indsize%,-1,"Info"+z$,0
  660ELSE
  670SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Info"+z$,0 TO ,,idata%
  680ENDIF
  690SYS CreateW,,z% TO infow%:$!(z%+88+7*32+20)=m$(21)
  710IFversion%>=300 THEN
  720indsize%=FNsize_indirect("Processing")
  730DIM proc_wind% indsize%
  740SYS"Wimp_LoadTemplate",,z%,proc_wind%,proc_wind%+indsize%,-1,"Processing",0
  750ELSE
  760SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Processing",0 TO ,,idata%
  770ENDIF
  780SYS CreateW,,z% TO proc%
  790p%(0)=!(z%+88+8*32+20):p%(1)=!(z%+88+9*32+20):p%(2)=!(z%+88+10*32+20)
  810IFversion%>=300 THEN
  820indsize%=FNsize_indirect("Output")
  830DIM outp_wind% indsize%
  840SYS"Wimp_LoadTemplate",,z%,outp_wind%,outp_wind%+indsize%,-1,"Output"+z$,0
  850ELSE
  860SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Output"+z$,0 TO ,,idata%
  870ENDIF
  880SYS CreateW,,z% TO output%:admode%=!(z%+88+17*32+20):adspcl%=!(z%+88+16*32+20)
  900IFversion%>=300 THEN
  910indsize%=FNsize_indirect("Scaling")
  920DIM scal_wind% indsize%
  930SYS"Wimp_LoadTemplate",,z%,scal_wind%,scal_wind%+indsize%,-1,"Scaling"+z$,0
  940ELSE
  950SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Scaling"+z$,0 TO ,,idata%
  960ENDIF
  970SYS CreateW,,z% TO scalew%:adscale%=!(z%+88+1*32+20)
  980s%(0)=!(z%+88+10*32+20):s%(1)=!(z%+88+11*32+20)
  990s%(2)=!(z%+88+12*32+20):s%(3)=!(z%+88+13*32+20)
 1010IFversion%>=300 THEN
 1020indsize%=FNsize_indirect("Save")
 1030DIM save_wind% indsize%
 1040SYS"Wimp_LoadTemplate",,z%,save_wind%,save_wind%+indsize%,-1,"Save"+z$,0
 1050ELSE
 1060SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Save"+z$,0 TO ,,idata%
 1070ENDIF
 1080SYS CreateW,,z% TO save%:adsave%=!(z%+88+1*32+20)
 1100IFversion%>=300 THEN
 1110indsize%=FNsize_indirect("Sprite")
 1120DIM sprt_wind% indsize%
 1130SYS"Wimp_LoadTemplate",,z%,sprt_wind%,sprt_wind%+indsize%,-1,"Sprite"+z$,0
 1140ELSE
 1150SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Sprite"+z$,0 TO ,,idata%
 1160ENDIF
 1170SYS CreateW,,z% TO sinfo%:adsname%=!(z%+88+5*32+20):adsbytes%=!(z%+88+8*32+20)
 1180adsx%=!(z%+88+7*32+20):adsy%=!(z%+88+9*32+20):adsm%=!(z%+88+6*32+20)
 1200IFversion%>=300 THEN
 1210indsize%=FNsize_indirect("Source")
 1220DIM src_wind% indsize%
 1230SYS"Wimp_LoadTemplate",,z%,src_wind%,src_wind%+indsize%,-1,"Source"+z$,0
 1240ELSE
 1250SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Source"+z$,0 TO ,,idata%
 1260ENDIF
 1270SYS CreateW,,z% TO srcinfo%:adsrc%=!(z%+88+0*32+20)
 1290IFversion%>=300 THEN
 1300indsize%=FNsize_indirect("Range")
 1310DIM range_wind% indsize%
 1320SYS"Wimp_LoadTemplate",,z%,range_wind%,range_wind%+indsize%,-1,"Range"+z$,0
 1330ELSE
 1340SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Range"+z$,0 TO ,,idata%
 1350ENDIF
 1360SYS CreateW,,z% TO raninfo%:adran%=!(z%+88+0*32+20)
 1380IFversion%>=300 THEN
 1390indsize%=FNsize_indirect("Zoom")
 1400DIM zoom_wind% indsize%
 1410SYS"Wimp_LoadTemplate",,z%,zoom_wind%,zoom_wind%+indsize%,-1,"Zoom"+z$,0
 1420ELSE
 1430SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Zoom"+z$,0 TO ,,idata%
 1440ENDIF
 1450SYS CreateW,,z% TO zoom%:z%(0)=!(z%+88+4*32+20):z%(1)=!(z%+88+5*32+20)
 1470IFversion%>=300 THEN
 1480indsize%=FNsize_indirect("Pic")
 1490DIM pic_wind% indsize%
 1500SYS"Wimp_LoadTemplate",,z%,pic_wind%,pic_wind%+indsize%,-1,"Pic"+z$,0
 1510ELSE
 1520SYS"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Pic"+z$,0
 1530ENDIF
 1540SYS CreateW,,z% TO pic%:adtitle%=z%!72
 1560RESTORE ERROR
 1570SYS"Wimp_CloseTemplate"
 1580!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=%11000000000010
 1590$(q%+24)="!"+m$(20):SYS"Wimp_CreateIcon",,q% TO iconbar%
 1600A%=OPENIN"<ChangeFSI$Dir>.Choices":IFA%=0 THEN
 1610fast%=FALSE:statescale%=%10000000100:stateproc%=0:stateoutput%=&a008
 1620$p%(0)="":$p%(1)="2"+decimal_point$+"2":$p%(2)="24":$adspcl%=""
 1630$admode%="28":$s%(0)="1":$s%(1)="4":$s%(2)="1":$s%(3)="4"
 1640ELSE
 1650INPUT#A%,fast%,statescale%,stateproc%,stateoutput%
 1660INPUT#A%,$p%(0),$p%(1),$p%(2),$admode%,$adspcl%
 1670$p%(1)=FNlocale_convert($p%(1),".",decimal_point$)
 1680INPUT#A%,$s%(0),$s%(1),$s%(2),$s%(3)
 1690CLOSE#A%
 1700ENDIF
 1710q%!12=1<<21
 1720!q%=scalew%:FORI%=0TO9:IFstatescale%>>I%AND1 q%!8=1<<21 ELSEq%!8=0
 1730q%!4=I%:SYS SetI,,q%:NEXT
 1740FORI%=10TO13:IFstatescale%>>I%AND1 q%!8=1<<21 ELSEq%!8=0
 1750q%!4=I%+6:SYS SetI,,q%:NEXT
 1760!q%=proc%:FORI%=0TO7:IFstateproc%>>I%AND1 q%!8=1<<21 ELSEq%!8=0
 1770q%!4=I%:SYS SetI,,q%:NEXT
 1780!q%=output%:FORI%=0TO15:IFstateoutput%>>I%AND1 q%!8=1<<21 ELSEq%!8=0
 1790q%!4=I%:SYS SetI,,q%:NEXT
 1800PROCshowscaletofit:$z%(0)="1":$z%(1)="1"
 1810SYS "OS_UpdateMEMC" TO oldmemc
 1830ON ERROR SYS"OS_UpdateMEMC",oldmemc,&700:PROCerrorbox:SYS CrMenu,,-1 
 1840SYS Drag,,-1
 1850IFNOTsprite% SYS "Wimp_SlotSize",originalslot%,-1
 1860F$="":IFstartfile% startfile%=FALSE:F$=MID$(A$,INSTR(A$,"-wimp")+6):PROCcallFSI
 1870REPEAT
 1880SYS Poll%,1,q% TO A%
 1890CASE A% OF
 1900WHEN 1 :IFsprite% PROCredraw_window(!q%)
 1910WHEN 2 :PROCopen_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
 1920WHEN 3 :SYS &400c3,,q%:nextlocation%=HIMEM:PROCremovearea
 1930SYS "Wimp_SlotSize",originalslot%,-1:saved%=TRUE:sprite%=FALSE
 1940WHEN 6 :PROCcheckmouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)
 1950WHEN 7 :SYS GetP,,q%:dw%=q%!12:di%=q%!16:IFdstart% SYS"DragASprite_Stop"
 1960q%!12=0:q%!16=1:q%!20=dw%:q%!24=di%:q%!28=!q%:q%!32=q%!4
 1970q%!36=!sar%+3:q%!40=&ff9:$adsave%=FNZS(adsave%)
 1980foo%=INSTR($adsave%,"."):WHILEfoo%
 1990$adsave%=MID$($adsave%,foo%+1):foo%=INSTR($adsave%,".")
 2000ENDWHILE
 2010$(q%+44)=$adsave%+CHR$0:!q%=44+(LEN$adsave%+1+3ANDNOT3)
 2020SYS "Wimp_SendMessage",17,q%,dw%,di%:myref%=q%!8
 2030WHEN 8 :PROCkey(!q%,q%!4,q%!24)
 2040WHEN 9 :PROCmenuselect(q%)
 2050WHEN 17,18:PROCreceive(q%)
 2060ENDCASE
 2070UNTIL FALSE
 2080ELSE
 2090Q%=HIMEM
 2100END=&4000000
 2110ON ERROR ON ERROR OFF:OSCLI"Set ChangeFSI$ReturnCode "+REPORT$+" (code "+STR$ERL+")":PROCremovearea:CLEAR:END=Q%:END
 2120foo%=0:A%=FNChangeFSI(A$,-1,-1,0,-1,-1,foo%,TRUE)
 2130PROCremovearea:*unset ChangeFSI$ReturnCode
 2140CLEAR:END=Q%
 2150ENDIF
 2160END
 2180DEF PROClocale_initialise
 2190LOCAL p%
 2200SYS "Territory_ReadSymbols",-1,0 TO p%
 2210decimal_point$=CHR$?p%
 2220ENDPROC
 2240DEF FNlocale_convert(n$,f$,t$)
 2250IF f$=t$ :=n$
 2260LOCAL i%
 2270i%=INSTR(n$,f$)
 2280IF i%<>0 :=LEFT$(n$,i%-1)+t$+MID$(n$,i%+1)
 2290=n$
 2310DEF FNsize_indirect(name$)
 2320LOCAL size%
 2330SYS "Wimp_LoadTemplate",,0,,,,name$+z$,0 TO ,,size%
 2340=size%
 2360DEF FNwinsize_indirect(name$)
 2370LOCAL size%
 2380SYS "Wimp_LoadTemplate",,0,,,,name$+z$,0 TO ,size%
 2390=size%
 2440DEF FNlargest_buffer
 2450LOCAL largest_tem%,size%,here%,name
 2460DIM name 12
 2470$name="*":here%=0:largest_tem%=0
 2480SYS "Wimp_LoadTemplate", ,0,,,,name,0 TO ,size%,,,,,here%
 2490WHILE here%
 2500IF largest_tem%<size% largest_tem%=size%
 2510$name= "*"
 2520SYS "Wimp_LoadTemplate", ,0,,,,name,here% TO ,size%,,,,,here%
 2530ENDWHILE
 2540=largest_tem%
 2560DEF PROCreceive(q%)
 2570CASE q%!16 OF
 2580WHEN 0:PROCcheckandfinish
 2590WHEN 1:IFq%!20<>save% THEN
 2600!q%=60:q%!12=q%!8:q%!16=2:q%!36=-1:$(q%+44)="<Wimp$Scrap>"+CHR$0
 2610SYS"Wimp_SendMessage",17,q%,q%!4:scrap%=q%!8
 2620ENDIF
 2630WHEN 2:SYSspop%,&10C,sar%,FNZS(q%+44):$adsave%=FNZS(q%+44)
 2640q%!12=q%!8:q%!16=3:SYS "Wimp_SendMessage",18,q%,q%!4
 2650IF q%!36<>-1 saved%=TRUE
 2660SYS CrMenu,,-1
 2670WHEN 3:F$=FNZS(q%+44):IFscrap% scrap%=scrap%=q%!12
 2680q%!12=q%!8:q%!16=4:SYS"Wimp_SendMessage",17,q%,q%!4
 2690PROCcallFSI
 2700WHEN 5:CASE q%!40 OF
 2710WHEN &ff0,&c85
 2720q%!12=q%!8:q%!16=4:SYS"Wimp_SendMessage",17,q%,q%!4
 2730F$=FNZS(q%+44):PROCcallFSI
 2740ENDCASE
 2750WHEN9,&400C1:IFsprite% PROCgetmodeinfo:SYS&400d1,pic%,0,-32767,32767,0
 2760PROCshowscaletofit
 2770WHEN 10:SYS"XOS_ReadVarVal","ChangeFSI$Dir",paltemp%,256,0,3 TO,,bootlen%
 2780paltemp%?bootlen%=13
 2790BPUT#q%!20,"Run "+$paltemp%
 2800ENDCASE
 2810ENDPROC
 2830DEF PROCcallFSI
 2840A$=FNdeducemode:A%=47
 2850IFFNgeticonstate(output%,12) THEN
 2860A$+=$adspcl%
 2870ELSE
 2880IFFNgeticonstate(output%,13) THEN
 2890IFFNgeticonstate(output%,2)ORFNgeticonstate(output%,8) A$+="R"
 2900ELSE
 2910SYS53,VALA$,3 TO,,A%
 2920IFA%=63 THEN
 2930IFFNgeticonstate(output%,3) A$="27t"
 2940IFFNgeticonstate(output%,9) A$="12t"
 2950ELSE
 2960IFA%=255 A$+="d"
 2970ENDIF
 2980ENDIF
 2990ENDIF
 3000A$="garbage "+F$+" <ChangeFSI$Dir>.Foo "+A$
 3010IFFNgeticonstate(scalew%,1) A$+=" "+STR$tofitx+": "+STR$tofity+":"
 3020IFFNgeticonstate(scalew%,5) A$+=" 1:2"
 3030IFFNgeticonstate(scalew%,4) A$+=" 1:2 1:1"
 3040IFFNgeticonstate(scalew%,3) A$+=" 1:1 1:2"
 3050IFFNgeticonstate(scalew%,9) THEN
 3060IFVAL$s%(0) A$+=" "+$s%(0) ELSEA$+=" 1"
 3070A$+=":"+$s%(1)
 3080IFVAL$s%(2) A$+=" "+$s%(2) ELSEA$+=" 1"
 3090A$+=":"+$s%(3)
 3100ENDIF
 3110IFFNgeticonstate(scalew%,0) A$+=" -nosize"
 3120IFFNgeticonstate(scalew%,18) A$+=" -noscale"
 3130IFFNgeticonstate(scalew%,19) A$+=" -lock"
 3140IFFNgeticonstate(scalew%,6) THEN
 3150IFFNgeticonstate(scalew%,16) A$+=" -rotate" ELSEA$+=" -rotate-"
 3160ENDIF
 3170IFFNgeticonstate(scalew%,7) A$+=" -hflip"
 3180IFFNgeticonstate(scalew%,8) A$+=" -vflip"
 3190IFFNgeticonstate(proc%,0) A$+=" -range"
 3200IFFNgeticonstate(proc%,1) A$+=" -equal"
 3210IFFNgeticonstate(proc%,2) A$+=" -nodither"
 3220IFFNgeticonstate(proc%,3) A$+=" -invert"
 3230IFFNgeticonstate(proc%,4) A$+=" -brighten"
 3240IFFNgeticonstate(proc%,5) A$+=" -black"+$p%(0)
 3250IFFNgeticonstate(proc%,6) A$+=" -gamma"+FNlocale_convert($p%(1),decimal_point$,".")
 3260IFFNgeticonstate(proc%,7) A$+=" -sharpen"+$p%(2)
 3270info$="":range$=m$(19):cputime%=0
 3280IFsprite% !q%=pic%:SYS &400c3,,q%:saved%=TRUE:sprite%=FALSE
 3290nextlocation%=HIMEM
 3300SYS "Wimp_SlotSize",originalslot%,-1:PROCremovearea
 3310IFfast% SYS "OS_UpdateMEMC",&300,&700 TO oldmemc
 3320A%=FNChangeFSI(A$,-1,-1,nextlocation%,0,0,sar%,0)
 3330IFfast% SYS "OS_UpdateMEMC",oldmemc,&700
 3340IFscrap% scrap%=FALSE:SYS"OS_File",6,F$
 3350IFA%<2 AND sar%<>0 THEN
 3360SYS spop%,&10d,sar%,pixtrans%,255,1
 3370n$=FNZS(pixtrans%):SYS spop%,&128,sar%,n$ TO,,,x,y,,m
 3380$adsx%=STR$x:$adsy%=STR$y:$adsm%=STR$m:$adsname%=n$
 3390$adsbytes%=STR$sar%!12:$adran%=range$
 3400$adsrc%=info$+m$(0)+STR$(cputime%DIV100)+decimal_point$+RIGHT$("0"+STR$(cputime%MOD100),2)+m$(1)
 3410A%=LENF$:WHILEMID$("."+F$,A%,1)<>".":A%-=1:ENDWHILE
 3420$adsave%=MID$("."+F$,A%+1)
 3430SYS&35,m,4 TO,,nx:x=x<<nx
 3440SYS&35,m,5 TO,,ny:y=y<<ny
 3450saved%=FALSE:sprite%=TRUE:PROCgetmodeinfo
 3460pic%=FNcreate_window(x,y,F$)
 3470PROCpopup(pic%,-1)
 3480ENDIF
 3490ENDPROC
 3510DEF PROCcheckandfinish
 3520IFsaved% ORNOTsprite% PROCremovearea:SYS "Wimp_CloseDown":END
 3530!buffer%=ERR:$(buffer%+4)=m$(2)+F$+m$(3)+CHR$0
 3540SYS "Wimp_ReportError",buffer%,%10111,m$(20) TO ,A%
 3550IFA%=1 PROCremovearea:SYS "Wimp_CloseDown":END
 3560ENDPROC
 3580DEF PROCkey(handle%,icon%,key%)
 3590IFkey%=&1b SYS CrMenu,,-1:ENDPROC
 3600CASE handle% OF
 3610WHEN zoom%:CASE key% OF
 3620WHEN 13:PROCdozoom(icon%-4,0):IFicon%=4 SYS &400d2,zoom%,5,,,-1,LEN$z%(0)
 3630IFicon%=5 SYS CrMenu,,-1
 3640ENDPROC
 3650WHEN &18e,&18f:PROCdozoom(icon%-4,0)
 3660SYS &400d2,zoom%,icon%EOR1,,,-1,LEN$z%(icon%EOR5):ENDPROC
 3670ENDCASE
 3680WHEN save%
 3690IFkey%=13 PROCsavesprite:ENDPROC
 3700WHEN output%
 3710PROCshowscaletofit
 3720IFkey%=13 SYS CrMenu,,-1:ENDPROC
 3730IFkey%=&18e ORkey%=&18f THEN
 3740icon%=icon%EOR1:key%=admode%:IFicon%=16 key%=adspcl%
 3750SYS &400d2,output%,icon%,,,-1,LEN$key%:ENDPROC
 3760ENDIF
 3770WHEN proc%:CASE key% OF
 3780WHEN &18e,13:icon%+=1:IFicon%>10 icon%=8:IFkey%=13 SYS CrMenu,,-1:ENDPROC
 3790SYS &400d2,proc%,icon%,,,-1,LEN$p%(icon%-8):ENDPROC
 3800WHEN &18f:icon%-=1:IFicon%<8 icon%=10
 3810SYS &400d2,proc%,icon%,,,-1,LEN$p%(icon%-8):ENDPROC
 3820ENDCASE
 3830WHEN scalew%:CASE key% OF
 3840WHEN &18e,13:icon%+=1:IFicon%>13 icon%=10:IFkey%=13 SYS CrMenu,,-1:ENDPROC
 3850SYS &400d2,scalew%,icon%,,,-1,LEN$s%(icon%-10):ENDPROC
 3860WHEN &18f:icon%-=1:IFicon%<10 icon%=13
 3870SYS &400d2,scalew%,icon%,,,-1,LEN$s%(icon%-10):ENDPROC
 3880ENDCASE
 3890ENDCASE
 3900SYS "Wimp_ProcessKey",key%
 3910ENDPROC
 3930DEF PROCsavesprite
 3940SYS spop%,&10C,sar%,$adsave%
 3950SYS CrMenu,,-1
 3960ENDPROC
 3980DEF PROCcheckmouse(mousex%,mousey%,b%,handle%,icon%,ob%)
 3990IFb%AND2 THEN
 4000CASE handle% OF
 4010WHEN pic%:PROCdomenu(pic%,m$(4)+">sinfo%,"+m$(5)+">srcinfo%,"+m$(6)+">raninfo%,"+m$(7)+">zoom%,"+m$(8)+">save%,"+m$(9),m$(20))
 4020WHEN -2:PROCdomenu(101,m$(10)+">infow%,"+m$(11)+">scalew%,"+m$(12)+">proc%,"+m$(13)+">output%,"+m$(9)+","+m$(14)+":fast%AND1,"+m$(15)+","+m$(16),m$(20))
 4030ENDCASE
 4040rmenuhandle%=handle%
 4050ENDIF
 4060IFb%AND4 THEN
 4070CASE handle% OF
 4080WHEN zoom%:CASE icon% OF
 4090WHEN 0:PROCdozoom(0,1)
 4100WHEN 1:PROCdozoom(0,-1)
 4110WHEN 2:PROCdozoom(1,1)
 4120WHEN 3:PROCdozoom(1,-1)
 4130ENDCASE
 4140ENDCASE
 4150ENDIF
 4160IFb%AND1 THEN
 4170CASE handle% OF
 4180WHEN zoom%:CASE icon% OF
 4190WHEN 0:PROCdozoom(0,-1)
 4200WHEN 1:PROCdozoom(0,1)
 4210WHEN 2:PROCdozoom(1,-1)
 4220WHEN 3:PROCdozoom(1,1)
 4230ENDCASE
 4240ENDCASE
 4250ENDIF
 4260IFb%AND5 THEN
 4270CASE handle% OF
 4280WHEN output%:CASE icon% OF
 4290WHEN 0,1,2,3:PROCkillcurrent(STR$(25+icon%))
 4300WHEN 4:PROCkillcurrent("S16,90,90")
 4310WHEN 5:PROCkillcurrent("S32,90,90")
 4320WHEN 6:PROCkillcurrent("0")
 4330WHEN 7:PROCkillcurrent("8")
 4340WHEN 8:PROCkillcurrent("12")
 4350WHEN 9:PROCkillcurrent("15")
 4360WHEN 10:PROCkillcurrent("S16,90,45")
 4370WHEN 11:PROCkillcurrent("S32,90,45")
 4380ENDCASE
 4390IFFNgeticonstate(output%,15) $admode%=FNdeducemode
 4400!q%=output%:q%!4=17:q%!8=0:q%!12=0:SYS SetI,,q%
 4410PROCshowscaletofit
 4420WHEN save%:CASE icon% OF
 4430WHEN 2:PROCsavesprite
 4440ENDCASE
 4450WHEN -2:IFsprite% PROCgetw(pic%):PROCopen_window(pic%,x0%,y0%,x1%,y1%,scx%,scy%,-1)
 4460ENDCASE
 4470ENDIF
 4480IFb%AND&50 THEN
 4490CASE handle% OF
 4500WHEN save%:CASE icon% OF
 4510WHEN 0:PROCgetw(save%)
 4520!q%=save%:q%!4=0:SYS GetI,,q%
 4530!q%=save%:q%!4=5
 4540q%!8+=bx%:q%!12+=by%:q%!16+=bx%:q%!20+=by%
 4550q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
 4560IFdstart% SYS dstart%,%11000101,1,"file_ff9",q%+8,q%+24 ELSESYS "Wimp_DragBox",,q%
 4570ENDCASE
 4580ENDCASE
 4590ENDIF
 4600ENDPROC
 4620DEF PROCdozoom(s%,a%)
 4630IFs%=0 THEN
 4640$z%(0)=STR$(VAL$z%(0)+a%):IF$z%(0)="0" $z%(0)="1"
 4650ELSE
 4660$z%(1)=STR$(VAL$z%(1)+a%):IF$z%(1)="0" $z%(1)="1"
 4670ENDIF
 4680!q%=zoom%:q%!4=4+s%:q%!8=0:q%!12=0:SYS SetI,,q%
 4690!q%=pic%:SYS GetW,,q%:f%=q%!28:SYS &400c3,,q%
 4700pic%=FNcreate_window(x,y,F$)
 4710PROCpopup(pic%,f%)
 4720ENDPROC
 4740DEF PROCdomenu(handle%,menu$,menutitle$)
 4750menuhandle%=handle%
 4760menuptr%=buffer%:indirect%=idata%
 4770i%=0
 4780menuptr%!20=44
 4790$menuptr%=menutitle$
 4800menuptr%?12=7:menuptr%?13=2:menuptr%?14=7:menuptr%?15=0
 4810menuptr%!16=200:menuptr%!24=0
 4820menuptr%+=28
 4830REPEAT i1%=i%+1:i%=INSTR(menu$+",",",",i1%)
 4840item$=MID$(menu$,i1%,i%-i1%):PROCmenuitem(item$):UNTIL item$=""
 4850menuptr%!-24=(menuptr%!-24)OR&80
 4860IFhandle%=101 SYS CrMenu,,buffer%,mousex%-64,96+8*44 ELSESYS CrMenu,,buffer%,mousex%-32,mousey%+16
 4870ENDPROC
 4890DEF PROCmenuitem(text$)
 4900IF text$="" ENDPROC
 4910flg%=0:submenu%=-1:I%=INSTR(text$,":"):IFI%THEN
 4920flg%=EVALMID$(text$,I%+1):text$=LEFT$(text$,I%-1)
 4930ENDIF
 4940I%=INSTR(text$,">"):IFI%THEN
 4950submenu%=EVALMID$(text$,I%+1):text$=LEFT$(text$,I%-1)
 4960ENDIF
 4970menuptr%!0=flg%
 4980menuptr%!4=submenu%
 4990IFtext$=m$(9)ANDF$="" menuptr%!8=&07400021 ELSEmenuptr%!8=&07000021
 5000IFLENtext$*16+8>buffer%!16 buffer%!16=LENtext$*16+8
 5010IFLENtext$>12 THEN
 5020menuptr%!8=menuptr%!8 OR 256:menuptr%!16=LENtext$
 5030menuptr%!12=indirect%:$indirect%=text$:indirect%+=LENtext$+1
 5040ELSE
 5050$(menuptr%+12)=text$
 5060ENDIF
 5070menuptr%+=24
 5080ENDPROC
 5100DEF PROCmenuselect(menus%)
 5110SYS GetP,,paltemp%:adjust%=paltemp%!8 AND 1
 5120SYS DcMenu,,buffer%,menus%,STRING$(200," ")TO,,,a$
 5130IF a$="" THENENDPROC
 5140CASE menuhandle% OF
 5150WHEN pic%
 5160CASE a$ OF
 5170WHEN m$(9):PROCcallFSI
 5180ENDCASE
 5190WHEN 101
 5200CASE a$ OF
 5210WHEN m$(14):fast%=NOTfast%
 5220WHEN m$(9):PROCcallFSI
 5230WHEN m$(15)
 5240statescale%=0:FORI%=0TO9:statescale%+=FNgeticonstate(scalew%,I%)<<I%:NEXT
 5250FORI%=10TO13:statescale%+=FNgeticonstate(scalew%,I%+6)<<I%:NEXT
 5260stateproc%=0:FORI%=0TO7:stateproc%+=FNgeticonstate(proc%,I%)<<I%:NEXT
 5270stateoutput%=0:FORI%=0TO15:stateoutput%+=FNgeticonstate(output%,I%)<<I%:NEXT
 5280A%=OPENOUT"<ChangeFSI$Dir>.Choices"
 5290PRINT#A%,fast%,statescale%,stateproc%,stateoutput%
 5300PRINT#A%,$p%(0),FNlocale_convert($p%(1),decimal_point$,"."),$p%(2),$admode%,$adspcl%
 5310PRINT#A%,$s%(0),$s%(1),$s%(2),$s%(3)
 5320CLOSE#A%
 5330WHEN m$(16):PROCcheckandfinish
 5340ENDCASE
 5350ENDCASE
 5360IFadjust% PROCcheckmouse(0,0,2,rmenuhandle%,0,0)
 5370ENDPROC
 5390DEF FNcreate_window(x,y,title$)
 5400x=x*VAL$z%(0)DIVVAL$z%(1):y=y*VAL$z%(0)DIVVAL$z%(1)
 5410!z%=0:z%!4=-y:z%!8=x:z%!12=0
 5420z%!40=0:z%!44=-y:z%!48=x:z%!52=0
 5430IFx<128 OR y<128 z%?35=0 ELSEz%?35=255
 5440$adtitle%="":SYS CreateW,,z% TO handle%
 5450$adtitle%=title$
 5460=handle%
 5480DEF PROCpopup(handle%,f%)
 5490SYS "OS_ReadModeVariable",-1,4 TO ,,modexshift%
 5500SYS "OS_ReadModeVariable",-1,5 TO ,,modeyshift%
 5510SYS "OS_ReadModeVariable",-1,11 TO ,,rightscr%
 5520SYS "OS_ReadModeVariable",-1,12 TO ,,topscr%
 5530rightscr%=rightscr%<<modexshift%:topscr%=topscr%<<modeyshift%
 5540PROCgetw(handle%)
 5550xo%=rightscr%/2-(x0%+x1%)/2:yo%=topscr%/2-(y0%+y1%)/2
 5560PROCopen_window(handle%,x0%+xo%,y0%+yo%,x1%+xo%,y1%+yo%,scx%,scy%,f%)
 5570ENDPROC
 5590DEF PROCopen_window(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
 5600IFhandle%=-1THENENDPROC
 5610q%!0=handle%:q%!28=bhandle%
 5620q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
 5630q%!20=scx%:q%!24=scy%
 5640SYS OpenW,,q%
 5650ENDPROC
 5670DEF PROCgetw(handle%)
 5680!q%=handle%:SYS GetW,,q%
 5690PROCinfo(q%+4):bhandle%=q%!28:flags%=q%!32
 5700ENDPROC
 5720DEF PROCinfo(q%)
 5730x0%=!q%:y0%=q%!4:x1%=q%!8:y1%=q%!12:scx%=q%!16:scy%=q%!20
 5740bx%=x0%-scx%:by%=y1%-scy%
 5750ENDPROC
 5770DEF PROCredraw_window(handle%)
 5780IF handle%=pic% THEN
 5790!factors%=!ifactors%*VAL$z%(0):factors%!4=ifactors%!4*VAL$z%(0)
 5800factors%!8=ifactors%!8*VAL$z%(1):factors%!12=ifactors%!12*VAL$z%(1)
 5810PROCreduce(!factors%,factors%!8):PROCreduce(factors%!4,factors%!12)
 5820!q%=handle%
 5830SYS RedrawW,,q% TO more%
 5840PROCinfo(q%+4):by%=by%-INT(y*VAL$z%(0)DIVVAL$z%(1))
 5850WHILE more%
 5860SYS spop%,&134,sar%,n$,bx%,by%,,factors%,spx%
 5870SYS GetR%,0,q% TO more%
 5880ENDWHILE
 5890ENDIF
 5900ENDPROC
 5920DEF FNgeticonstate(handle%,icon%)
 5930!q%=handle%:q%!4=icon%:SYS GetI,,q%
 5940=q%!24>>21 AND 1
 5960DEF PROCgetmodeinfo
 5970SYS"XWimp_ReadPixTrans",&100,sar%,n$,,,,ifactors%,pixtrans%
 5980SYS spop%,&118,sar%,n$ TO ,,sptr%
 5990IF sptr%!32=44 THEN
 6000palptr%=0
 6010ELSE
 6020FOR grab%=0 TO 2048-8 STEP 8
 6030paltemp%!(grab%>>1)=sptr%!(grab%+44)
 6040NEXT
 6050palptr%=paltemp%
 6060ENDIF
 6070FORQ%=0TO255:pixtrans%?Q%=Q%:NEXT
 6080IFsptr%!32=44+2048 THEN
 6090FORQ%=0TO255:SYSctran%,palptr%!(Q%<<2)TOpixtrans%?Q%:NEXT
 6100ELSE
 6110SYS "ColourTrans_SelectTable",m,palptr%,-1,-1,pixtrans%
 6120ENDIF
 6130spx%=-1:FORQ%=0TO255:IFpixtrans%?Q%<>Q% spx%=pixtrans%
 6140NEXT
 6150ENDPROC
 6170DEF FNdeducemode
 6180LOCAL m,x,y
 6190IFFNgeticonstate(output%,15) THEN
 6200SYS&35,-1,9 TO,,m:IFm>3 THEN
 6210SYS&35,-1,4 TO,,x:SYS&35,-1,5 TO,,y
 6220x=180/(2^x):y=180/(2^y)
 6230="S"+STR$(2^m)+","+STR$x+","+STR$y
 6240ELSE
 6250=STR$MODE
 6260ENDIF
 6270ELSE
 6280=$admode%
 6290ENDIF
 6300=0
 6320DEF PROCshowscaletofit
 6330LOCAL m,x,y
 6340$admode%=FNdeducemode
 6350IF?admode%=ASC"S" THEN
 6360IFVALMID$($admode%,5)>VALMID$($admode%,8) x=6 ELSEx=0
 6370IFVALMID$($admode%,2)>16 x+=5 ELSEx+=4
 6380SYS&35,-1,11 TO,,tofitx:SYS&35,-1,12 TO,,tofity
 6390ELSE
 6400m=VAL$admode%
 6410SYS&35,m,11 TO,,tofitx:SYS&35,m,12 TO,,tofity
 6420SYS&35,m,4 TO,,x:SYS&35,m,5 TO,,y:IFy>x x=6 ELSEx=0
 6430SYS&35,m,9 TO,,y:x+=y
 6440ENDIF
 6450tofitx+=1:tofity+=1:$adscale%=m$(17)+STR$tofitx+m$(18)+STR$tofity
 6460q%!12=1<<21:!q%=output%:FORI%=0TO11:IFI%=x q%!8=1<<21 ELSEq%!8=0
 6470q%!4=I%:SYS SetI,,q%:NEXT
 6480ENDPROC
 6500DEF PROCkillcurrent(m$)
 6510q%!12=1<<21:!q%=output%:q%!8=0
 6520q%!4=17:SYS SetI,,q%
 6530$admode%=m$
 6540ENDPROC
 6560DEFFNZS(I%)LOCALA$:REPEATA$+=CHR$?I%:I%+=1:UNTIL?I%<14:=A$
 6580DEF PROCerrorbox
 6590SYS Drag,,-1
 6600!buffer%=ERR:$(buffer%+4)=REPORT$+" (code "+STR$ERL+")"+CHR$0
 6610SYS "Wimp_ReportError",buffer%,%11,m$(20) TO ,A%
 6620IFA%=2 PROCremovearea:SYS "Wimp_CloseDown":END
 6630ENDPROC
 6860DEF FNChangeFSI(A$,spritearea%,workspace%,worklimit%,oksave%,okinfo%,RETURN ram%,fast%)
 6870LOCAL A$(),r%(),g%(),b%(),rpal%(),gpal%(),bpal%(),table%(),cl%(),xl%(),xl2%()
 6880LOCAL xp%(),rm%(),rm1%(),rm2%(),vals%(),nl%(),A%(),B%(),new%(),st%()
 6890WHILELEFT$(A$,1)<>" "ANDLENA$<>0 A$=MID$(A$,2):ENDWHILE
 6900WHILELEFT$(A$,1)=" " A$=MID$(A$,2):ENDWHILE
 6910WHILERIGHT$(A$,1)=" " A$=LEFT$(A$):ENDWHILE
 6920IFFNuc(LEFT$(A$,5))="-QUIT" THEN
 6930A$=MID$(A$,7):WHILELEFT$(A$,1)<>" "ANDLENA$<>0 A$=MID$(A$,2):ENDWHILE
 6940WHILELEFT$(A$,1)=" " A$=MID$(A$,2):ENDWHILE
 6950ENDIF
 6960DIM A$(100):ARG%=0:B%=INSTR(A$," ")
 6970WHILE B%<>0
 6980ARG%+=1:A$(ARG%)=LEFT$(A$,B%-1):A$=MID$(A$,B%+1)
 6990WHILE LEFT$(A$,1)=" ":A$=MID$(A$,2):ENDWHILE
 7000B%=INSTR(A$," ")
 7010ENDWHILE
 7020IFA$<>"" ARG%+=1:A$(ARG%)=A$
 7030invert%=FALSE:range%=FALSE:sharpen%=FALSE:info%=FALSE:cache%=FALSE:cacheareanumber%=0:dither%=TRUE:black%=FALSE
 7040hist%=FALSE:equal%=FALSE:vflip%=FALSE:hflip%=FALSE:scale%=TRUE:scaleo%=TRUE:scrapf%=FALSE
 7050gamma=1:rotate%=FALSE:max%=20000000:bright%=15:lock%=FALSE
 7060rwt=.299:gwt=.587:bwt=.114
 7070IFARG%<3 THEN
 7080PRINT"ChangeFSI interactive input (read FSIinfo for command line details)"
 7090INPUT"Source file: "s$,"Destination file: "f$,"Output mode: "m$
 7100INPUT"(X)Scale (e.g. 2:1): "xs$:INPUT"Y Scale: "ys$
 7110INPUT"Info on input picture?"a$:IFFNuc(LEFT$(a$,1))="Y" info%=TRUE
 7120INPUT"Invert picture colours?"a$:IFFNuc(LEFT$(a$,1))="Y" invert%=TRUE
 7130INPUT"Compute histogram of input?"a$:IFFNuc(LEFT$(a$,1))="Y" hist%=TRUE
 7140INPUT"Apply histogram equalisation?"a$:IFFNuc(LEFT$(a$,1))="Y" equal%=TRUE
 7150INPUT"Expand input dynamic range?"a$:IFFNuc(LEFT$(a$,1))="Y" range%=TRUE:equal%=FALSE
 7160INPUT"Sharpen picture by (e.g. 12 for harsh, 24 for soft) "a$
 7170IFa$<>"" sharpen%=VALa$
 7180INPUT"Rotate?"a$:IFFNuc(LEFT$(a$,1))="Y" rotate%=1
 7190scale%=FALSE:scaleo%=FALSE:fast%=FALSE
 7200ELSE
 7210REPEAT A%=ARG%
 7220IFFNuc(A$(ARG%))="-INFO" info%=TRUE:A$(ARG%)="":ARG%-=1
 7230IFFNuc(A$(ARG%))="-HIST" hist%=TRUE:A$(ARG%)="":ARG%-=1
 7240IFFNuc(A$(ARG%))="-LOCK" lock%=TRUE:A$(ARG%)="":ARG%-=1
 7250IFFNuc(A$(ARG%))="-EQUAL" equal%=TRUE:range%=FALSE:A$(ARG%)="":ARG%-=1
 7260IFFNuc(A$(ARG%))="-RANGE" range%=TRUE:equal%=FALSE:A$(ARG%)="":ARG%-=1
 7270IFFNuc(A$(ARG%))="-INVERT" invert%=TRUE:A$(ARG%)="":ARG%-=1
 7280IFFNuc(A$(ARG%))="-NOSCALE" scale%=FALSE:scaleo%=FALSE:A$(ARG%)="":ARG%-=1
 7290IFFNuc(A$(ARG%))="-NOSIZE" scale%=FALSE:A$(ARG%)="":ARG%-=1
 7300IFFNuc(A$(ARG%))="-NODITHER" dither%=FALSE:A$(ARG%)="":ARG%-=1
 7310IFFNuc(A$(ARG%))="-BRIGHTEN" bright%=16:A$(ARG%)="":ARG%-=1
 7320IFFNuc(A$(ARG%))="-ROTATE" rotate%=1:A$(ARG%)="":ARG%-=1
 7330IFFNuc(A$(ARG%))="-ROTATE-" rotate%=-1:A$(ARG%)="":ARG%-=1
 7340IFFNuc(A$(ARG%))="-VFLIP" vflip%=TRUE:A$(ARG%)="":ARG%-=1
 7350IFFNuc(A$(ARG%))="-HFLIP" hflip%=TRUE:A$(ARG%)="":ARG%-=1
 7360IFFNuc(A$(ARG%))="-NOMODE" fast%=FALSE:A$(ARG%)="":ARG%-=1
 7370IFFNuc(LEFT$(A$(ARG%),6))="-BLACK" THEN
 7380black%=32:IFLENA$(ARG%)>6 black%=VALMID$(A$(ARG%),7):IFblack%>128 black%=128
 7390A$(ARG%)="":ARG%-=1
 7400ENDIF
 7410IFFNuc(LEFT$(A$(ARG%),6))="-GAMMA" THEN
 7420gamma=2.2:IFLENA$(ARG%)>6 gamma=VALMID$(A$(ARG%),7)
 7430A$(ARG%)="":ARG%-=1
 7440ENDIF
 7450IFFNuc(LEFT$(A$(ARG%),8))="-SHARPEN" THEN
 7460sharpen%=TRUE:IFLENA$(ARG%)>8 sharpen%=VALMID$(A$(ARG%),9)
 7470A$(ARG%)="":ARG%-=1
 7480ENDIF
 7490IFFNuc(LEFT$(A$(ARG%),4))="-RED" rwt=VALMID$(A$(ARG%),5):A$(ARG%)="":ARG%-=1
 7500IFFNuc(LEFT$(A$(ARG%),6))="-GREEN" gwt=VALMID$(A$(ARG%),7):A$(ARG%)="":ARG%-=1
 7510IFFNuc(LEFT$(A$(ARG%),5))="-BLUE" bwt=VALMID$(A$(ARG%),6):A$(ARG%)="":ARG%-=1
 7520IFFNuc(LEFT$(A$(ARG%),4))="-MAX" THEN
 7530max%=VALMID$(A$(ARG%),5):IFINSTR(A$(ARG%),"K")ORINSTR(A$(ARG%),"k") max%=max%*1024
 7540A$(ARG%)="":ARG%-=1
 7550ENDIF
 7560UNTILA%=ARG%
 7570s$=A$(1):f$=A$(2):m$=A$(3):xs$=A$(4):ys$=A$(5)
 7580ENDIF
 7590IFokinfo% ELSEinfo%=FALSE
 7600IFworkspace%>=0 THEN
 7610flex%=FALSE
 7620ELSE
 7630IFworklimit%=0 THENflex%=FALSE ELSEflex%=TRUE:nextlocation%=worklimit%
 7640ENDIF
 7650pnm$=FNuc(m$):CASE LEFT$(pnm$+",",3) OF
 7660WHEN"AIM":m=-1:m$=""
 7670WHEN"P1,","P4,":m=-2:m$="":spm=18
 7680WHEN"P2,","P5,":m=-2:m$="T":spm=20
 7690WHEN"P3,","P6,":m=-4:pnm$=LEFT$(pnm$,2):p6bits=8:I%=VALMID$(m$,4):m$=""
 7700IFI%>0IFI%<8 p6bits=I%
 7710WHEN"P15":m=-3:m$=""
 7720WHEN"C15":m=-5:m$=""
 7730WHEN"IRL":m=-4:m$="":p6bits=8
 7740WHEN"S16":m=-6:m$=""
 7750WHEN"S24":m=-7:m$="":p6bits=8
 7760WHEN"S32":m=-8:m$="":p6bits=8
 7770OTHERWISE:m=VALm$:spm=m:m$=FNuc(RIGHT$(m$,1)):IFINSTR("CDRT",m$)=0 m$=""
 7780ENDCASE
 7790IFxs$="" OR LEFT$(xs$,1)="-" THEN
 7800xmul%=1:xdiv%=1:ymul%=1:ydiv%=1
 7810ELSE
 7820IFys$="" ys$=xs$
 7830xmul%=VALxs$:xdiv%=VALMID$(xs$,INSTR(xs$,":")+1)
 7840ymul%=VALys$:ydiv%=VALMID$(ys$,INSTR(ys$,":")+1)
 7850ENDIF
 7860flag=-1:SYS8,5,s$ TO r0,,r2:dir=r0=2
 7870IFdir THEN
 7880panic=TRUE:SYS8,5,s$+".raw" TO r0,,r2:IFr0=1 s$+=".raw":dir=FALSE:panic=FALSE
 7890IFpanic SYS8,5,s$+".red" TO r0,,r2:IFr0=1 panic=FALSE
 7900IFpanic ERROR 42,"Directory given"
 7910ENDIF
 7920ftype=r2>>8 AND &FFF:bits=28:F=2^bits:c%=0:cc%=0:ccc%=0:o%=0
 7930IFdir THEN
 7940c%=OPENIN(s$+".red"):IFc%=0 ERROR 42,"Red file "+s$+".red not found"
 7950cc%=OPENIN(s$+".green"):IFcc%=0 ERROR42,"Green file "+s$+".green not found"
 7960ccc%=OPENIN(s$+".blue"):IFccc%=0 ERROR42,"Blue file "+s$+".blue not found"
 7970ELSE
 7980c%=OPENINs$:IFc%=0 ERROR 42,"File "+s$+" not found"
 7990ENDIF
 8000LOCAL ERROR
 8010ON ERROR LOCAL RESTORE ERROR:PROCclose:ERROR ERR,REPORT$
 8020DIM r%(255)
 8030DIM g%(255),b%(255)
 8040SYS&66f4d TO;pcd%
 8050CASE ftype OF
 8060WHEN &FF9:flag=0
 8070IFINSTR("."+FNuc(s$),".HIP.")ORINSTR(FNuc(s$),":HIP.") THEN
 8080flag=300:I%=INSTR(FNuc(s$),"HIP.")
 8090MID$(s$,I%)="LOP.":cc%=OPENINs$:IFcc%=0 ERROR42,"Can't find Lop file "+s$
 8100ENDIF
 8110WHEN &FF0:PTR#c%=0:S$="":FORI%=1TO4:S$+=CHR$BGET#c%:NEXT
 8120IFS$="II*"+CHR$0 flag=1500:bigendian=FALSE
 8130IFS$="MM"+CHR$0+"*" flag=1500:bigendian=TRUE
 8140WHEN &DFA:flag=800:IFdir flag=801
 8150WHEN &DE2:flag=1000
 8160WHEN &BE8:IF(pcd%AND1)=0 flag=3600
 8170WHEN &7A0:flag=1200
 8180WHEN &69d:flag=2000
 8190WHEN &699:flag=700
 8200WHEN &698:flag=100
 8210WHEN &697:flag=1900
 8220WHEN &691:flag=2600
 8230WHEN &690:flag=2500
 8240WHEN &666:flag=666
 8250WHEN &601:flag=3000
 8260WHEN &371:flag=3100
 8270WHEN &300:flag=1300:IFdir flag=1301
 8280WHEN 4:flag=900:IFdir flag=901
 8290WHEN 6:flag=950
 8300ENDCASE
 8310IFflag=-1 THEN
 8320PTR#c%=0:S$="":FORI%=1TO22:S$+=CHR$BGET#c%:NEXT
 8330IFLEFT$(S$,7)="FSIfile" flag=2100
 8340IFflag=-1 IFLEFT$(S$,8)="SIMPLE  " flag=2800
 8350IFflag=-1 IFFNuc(LEFT$(S$,8))="MERCSOFT"ORFNuc(LEFT$(S$,8))="SNAPSHOT"flag=902
 8360IFflag=-1 IFFNuc(LEFT$(S$,8))="MERCSOF1" flag=903
 8370IFflag=-1 IFFNuc(LEFT$(S$,13))="IRLAM YUV 411" flag=2250
 8380IFflag=-1 IFLEFT$(S$,5)="Irlam" flag=2200
 8390IFflag=-1 IFLEFT$(S$,2)="BM" flag=2400:riffoff%=0
 8400IFflag=-1 IFLEFT$(S$,4)="RIFF" AND MID$(S$,9,8)="RDIBdata" AND MID$(S$,21,2)="BM" flag=2400:riffoff%=20
 8410IFflag=-1 IFLEFT$(S$,4)="GIF8" flag=500
 8420IFflag=-1 IFLEFT$(S$,5)="AV_VO" flag=600
 8430IFflag=-1 IFLEFT$(S$,4)=CHR$&59+CHR$&A6+CHR$&6A+CHR$&95 flag=1100
 8440IFflag=-1 IFLEFT$(S$,4)=CHR$0+CHR$1+CHR$0+CHR$8 flag=1400
 8450IFflag=-1 IFLEFT$(S$,4)=CHR$0+CHR$1+CHR$0+CHR$1 flag=2900
 8460IFflag=-1 IFLEFT$(S$,4)="RIX3" flag=2700
 8470IFflag=-1 IFLEFT$(S$,4)="II*"+CHR$0 flag=1500:bigendian=FALSE
 8480IFflag=-1 IFLEFT$(S$,4)="MM"+CHR$0+"*" flag=1500:bigendian=TRUE
 8490IFflag=-1 IFLEFT$(S$,2)=CHR$&52+CHR$&CC flag=2300
 8500IFflag=-1 IFLEFT$(S$,2)="P4"ORLEFT$(S$,2)="P5"ORLEFT$(S$,2)="P6" flag=3300:info$=""
 8510IFflag=-1 IFLEFT$(S$,3)="P15" flag=3400
 8520IFflag=-1 IFLEFT$(S$,3)="PIC" flag=3500
 8530IFflag=-1 IFFNuc(LEFT$(S$,3))="P13" flag=3450
 8540IFflag=-1 IFLEFT$(S$,4)="FORM" IFMID$(S$,9,4)="ILBM" flag=1600
 8550IFflag=-1 THEN
 8560IFMID$(S$,7,4)="JFIF" OR ftype=&C85 THEN
 8570jpegblk%=FNdim(20):PROCcachesize(jpegblk%)
 8580IFcache%<EXT#c% THEN
 8590CLOSE#c%:X%=OPENIN"Run:djpeg"
 8600IFX% THEN
 8610CLOSE#X%:SYS"Wimp_StartTask","djpeg "+s$+" <Wimp$Scrap>"
 8620ELSE
 8630SYS"XOS_CLI","djpeg "+s$+" <Wimp$Scrap>" TO ;V
 8640IFV AND1 THEN
 8650SYS"Wimp_StartTask","<ChangeFSI$Dir>.djpeg "+s$+" <Wimp$Scrap>"
 8660ENDIF
 8670ENDIF
 8680c%=OPENIN"<Wimp$Scrap>":IFc%=0 THEN=100
 8690scrapf%=TRUE:flag=3300:info$="JPEG (JFIF) file converted to "
 8700ELSE
 8710flag=3700
 8720ENDIF
 8730ENDIF
 8740ENDIF
 8750IFflag=-1 THEN
 8760PTR#c%=&10:S$="":FORI%=1TO9:S$+=CHR$BGET#c%:NEXT
 8770IFS$="MILLIPEDE" flag=200
 8780ENDIF
 8790IFflag=-1 THEN
 8800PTR#c%=&41:S$="":FORI%=1TO8:S$+=CHR$BGET#c%:NEXT
 8810IFLEFT$(S$,4)="PNTG" flag=1800:st%=&280
 8820ENDIF
 8830IFflag=-1 THEN
 8840PTR#c%=196:S$="":FORI%=1TO8:S$+=CHR$BGET#c%:NEXT
 8850IFLEFT$(S$,4)="PNTG" flag=1800:st%=&2e2
 8860ENDIF
 8870IFflag=-1 THEN
 8880PTR#c%=522:S$="":FORI%=1TO8:S$+=CHR$BGET#c%:NEXT
 8890IFS$=CHR$0+CHR$&11+CHR$2+CHR$&ff+CHR$&c+CHR$0+CHR$&ff+CHR$&fe flag=1850
 8900ENDIF
 8910IFflag=-1 THEN
 8920PTR#c%=0:IFBGET#c%=10 THEN
 8930C%=BGET#c%:IFC%<6 AND C%<>1 ANDBGET#c%=1 flag=1900
 8940ENDIF
 8950ENDIF
 8960IFflag=-1 IFINSTR("."+FNuc(s$),".PCX.")ORINSTR(FNuc(s$),":PCX.")ORRIGHT$(s$,4)="/PCX" flag=1900
 8970IFflag=-1 IFINSTR("."+FNuc(s$),".IMAGE.")ORINSTR(FNuc(s$),":IMAGE.") flag=400
 8980IFflag=-1 IFFNuc(RIGHT$(s$,4))=".RAW" flag=100
 8990IFflag=-1 IFFNuc(RIGHT$(s$,3))="TGA" flag=2000
 9000IFflag=-1 IFFNuc(RIGHT$(s$,3))="VDA" flag=2000
 9010IFflag=-1 IFINSTR("."+FNuc(s$),".PIC.")ORINSTR(FNuc(s$),":PIC.") flag=700
 9020IFflag=-1 IFINSTR("."+FNuc(s$),".IMG.")ORINSTR(FNuc(s$),":IMG.")ORRIGHT$(s$,4)="/IMG" flag=1400
 9030IFflag=-1 IFINSTR("."+FNuc(s$),".DSP.")ORINSTR(FNuc(s$),":DSP.")ORRIGHT$(s$,4)="/DSP" flag=1700
 9040IFflag=-1 IFFNuc(RIGHT$(s$,4))="/RGB" flag=3200
 9050IFflag=-1 AND(FNuc(RIGHT$(s$,4))="/PCD"ORftype=&be8)AND((pcd%AND1)=1) THEN
 9060CLOSE#c%:SYS"Wimp_StartTask","<ChangeFSI$Dir>.hpcdtoppm -3 -a "+s$+" <Wimp$Scrap> { > <ChangeFSI$Dir>.pcdtemp }"
 9070c%=OPENIN"<Wimp$Scrap>":scrapf%=TRUE:flag=3300:info$="PhotoCD file converted to "
 9080ENDIF
 9090ENDIF
 9100IFflag=-1 PROCclose:ERROR 42,"Sorry: format not recognised - please try again or contact your supplier"
 9110step24=1:input=8:ham=0:planar%=0:bigendianbits=FALSE:r$="FN"+STR$flag
 9120compression=0:hpredict%=1:striprows%=-1:cachebytes%=FALSE
 9130IFxdiv%=0 AND ydiv%=0 scale%=FALSE
 9140CASE flag OF
 9150WHEN 0
 9160quant%=4:PTR#c%=4:F%=FNW+&1C:PTR#c%=F%:st%=FNW+F%-&20:K%=FNW+F%-&20
 9170sm=FNW:IFsm<256 THEN
 9180SYS53,sm,3 TO ,,I%
 9190CASE I% OF
 9200WHEN 1:IFst%=F%+12 PROCdefpal2 ELSEPROCipal(2)
 9210PTR#c%=F%-16:sx%=(FNW+1)*32:rowbytes%=sx%>>3:input=1
 9220sy%=FNW+1:I%=FNW:sx%-=31-FNW
 9230WHEN 3:IFst%=F%+12 PROCdefpal4 ELSEPROCipal(4)
 9240PTR#c%=F%-16:sx%=(FNW+1)*16:rowbytes%=sx%>>2:input=2
 9250sy%=FNW+1:I%=FNW:sx%-=(31-FNW)DIV2
 9260WHEN 15:IFst%=F%+12 PROCdefpal16 ELSEPROCipal(16)
 9270PTR#c%=F%-16:sx%=(FNW+1)*8:rowbytes%=sx%>>1:input=4
 9280sy%=FNW+1:I%=FNW:sx%-=(31-FNW)DIV4
 9290WHEN 63,255:IFst%=F%+12 THEN
 9300PROCdefpal
 9310ELSE
 9320IFK%>st% K%=st%
 9330IFK%-12-F%=2048 ORI%=255 THEN
 9340PTR#c%=&38
 9350FORC%=0TO255:D%=BGET#c%
 9360r%(C%)=BGET#c%/255*F:g%(C%)=BGET#c%/255*F:b%(C%)=BGET#c%/255*F
 9370D%=FNW:NEXT
 9380ELSE
 9390PROCipal63
 9400ENDIF
 9410ENDIF
 9420PTR#c%=F%-16:sx%=(FNW+1)*4:rowbytes%=sx%:sy%=FNW+1:I%=FNW:sx%-=(31-FNW)DIV8
 9430OTHERWISE ERROR42,"Not understood RISC OS sprite"
 9440ENDCASE
 9450r$="FN8":SYS53,sm,4 TO ,,nx:SYS53,sm,5 TO ,,ny:nx=1<<nx:ny=1<<ny
 9460IFscale% xmul%=xmul%*nx/2:ymul%=ymul%*ny/2
 9470info$="RISC OS sprite, mode "+STR$sm+" "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
 9480ELSE
 9490bpp%=sm>>>27:CASEbpp% OF
 9500WHEN 1:bpp%=1:r$="FN8":IFst%=F%+12 PROCdefpal2 ELSEPROCnewropal(2)
 9510WHEN 2:bpp%=2:r$="FN8":IFst%=F%+12 PROCdefpal4 ELSEPROCnewropal(4)
 9520WHEN 3:bpp%=4:r$="FN8":IFst%=F%+12 PROCdefpal16 ELSEPROCnewropal(16)
 9530WHEN 4:bpp%=8:r$="FN8":IFst%=F%+12 PROCdefpal ELSEPROCnewropal(256)
 9540WHEN 5:bpp%=16:r$="FN16":IFst%=F%+12 ELSE
 9550DIM rpal%(255),gpal%(255):step24=2
 9560FORC%=0TO255
 9570gpal%(C%)=(C%>>5)<<8 OR (C%AND31)
 9580rpal%(C%)=((C%>>2)AND31)<<16 OR (C%AND3)<<11
 9590NEXT
 9600FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
 9610WHEN 6:bpp%=32:r$="FN24":IFst%=F%+12 PROCnopal ELSE
 9620rbo%=0:gbo%=1:bbo%=2:step24=4
 9630WHEN 8:bpp%=24:r$="FN24":IFst%=F%+12 PROCnopal ELSE
 9640rbo%=0:gbo%=1:bbo%=2
 9650OTHERWISE ERROR42,"Not understood new format RISC OS sprite bpp"
 9660ENDCASE
 9670nx=(sm>>1) AND&1fff:ny=(sm>>14) AND&1fff
 9680IFscale% xdiv%=xdiv%*nx:ydiv%=ydiv%*ny:xmul%=xmul%*90:ymul%=ymul%*90
 9690PTR#c%=F%-16:rowbytes%=(FNW+1)*4:sy%=FNW+1:I%=FNW:sx%=(rowbytes%*8-(31-FNW))/bpp%:input=bpp%
 9700info$="New RISC OS sprite, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
 9710IFbpp%=32 input=24
 9720ENDIF
 9730PTR#c%=st%:cache%=TRUE
 9740WHEN 100
 9750quant%=8:PTR#c%=0:sx%=FNHW:sy%=FNHW:PROCnopal:input=24:rowbytes%=sx%*3+2
 9760rbo%=2:gbo%=2+sx%:bbo%=2+2*sx%:r$="FN24":cache%=TRUE
 9770info$="QRT .raw image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
 9780WHEN 200
 9790quant%=8:PTR#c%=5:sx%=FNHW:sy%=FNHW:sx%=(FNHW-sx%+2)/2:sy%=(FNHW-sy%+2)/2
 9800PTR#c%=&1a:cadsoft%=BGET#c%:PTR#c%=&200
 9810FORC%=0TO255:r%(C%)=BGET#c%/255*F:NEXT
 9820FORC%=0TO255:g%(C%)=BGET#c%/255*F:NEXT
 9830FORC%=0TO255:b%(C%)=BGET#c%/255*F:NEXT
 9840PTR#c%=&600:st%=&600:cache%=TRUE:IFcadsoft%=2 THEN
 9850rep%=0:r$="FN1100":plbuff%=FNdim(sx%):plbytes%=sx%:cachebytes%=TRUE
 9860ELSE
 9870r$="FN8":rowbytes%=sx%
 9880ENDIF
 9890info$="Cadsoft type "+STR$cadsoft%+" image, "+STR$sx%+" by "+STR$sy%+" pixels, 8 bits per pixel"
 9900WHEN 300
 9910quant%=5:PTR#c%=&2c:st%=FNW+(&38-&2c):PTR#cc%=&2c:stcc%=FNW1(cc%)+(&38-&2c)
 9920PTR#c%=&1c:sx%=(FNW+1)*4:sy%=FNW+1:PTR#c%=st%:PTR#cc%=stcc%
 9930DIM rpal%(255),gpal%(255):input=16:cache%=TRUE:rowbytes%=sx%
 9940FORC%=0TO255
 9950rpal%(C%)=C%AND7 OR (C%AND64)<<2 OR (C%AND&38)<<13
 9960gpal%(C%)=(C%AND4)<<1ORC%AND16 OR ((C%AND3)<<1OR(C%AND&60)>>2)<<8 OR (C%AND8OR(C%AND128)>>3)<<16
 9970NEXT
 9980FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
 9990pbuff%=FNdim(sx%):IFscale% ymul%=ymul%*2
10000info$="ArVis image, "+STR$sx%+" by "+STR$sy%+" pixels, 15 bits per pixel"
10010WHEN 400
10020quant%=8:PTR#c%=0:sx%=FNbeHW:sy%=FNbeHW:X%=FNbeHW:st%=PTR#c%+X%:PTR#c%=st%
10030plbuff%=FNdim(sx%*3):plbytes%=sx%*3:rb%=plbuff%:gb%=plbuff%+1:bb%=plbuff%+2:rbo%=-1
10040PROCnopal:input=24:rep%=0:cachebytes%=TRUE:cache%=TRUE:step24=3
10050info$="RT image. run length encoded image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
10060WHEN 500
10070compression=5:PTR#c%=6:GIFsx=FNHW:GIFsy=FNHW
10080GIF=BGET#c%:GIFback=BGET#c%:GIFext=BGET#c%:quant%=(GIF AND 7)+1
10090IFGIF AND &80 THEN
10100FORC%=0TO(1<<quant%)-1
10110r%(C%)=BGET#c%/255*F:g%(C%)=BGET#c%/255*F:b%(C%)=BGET#c%/255*F
10120NEXT
10130ENDIF
10140I%=BGET#c%:IFI%<>ASC"," ERROR 42,"GIF file without , in right place"
10150GIFleft=FNHW:GIFright=FNHW:sx%=FNHW:sy%=FNHW
10160IFGIFsx<sx% OR GIFsy<sy% THEN
10170IFinfo% THEN
10180PRINT"GIF file with bigger image inside:"
10190PRINT"Screen ";GIFsx"x by "GIFsy"y; image "sx%"x by "sy%"y"
10200INPUT"Continue with monitor's size [Y or y]?"A$
10210IFA$="Y"ORA$="y" sx%=GIFsx:sy%=GIFsy
10220PRINT"Continuing with ";sx%"x by "sy%"y"
10230ENDIF
10240ENDIF
10250GIF=BGET#c%:IFGIF AND &40 flag=501:r$="FN8"
10260setcodes%=BGET#c%:clearcode%=1<<setcodes%:st%=PTR#c%:cache%=TRUE:cachebytes%=TRUE
10270DIM table%(1<<12):stk%=FNdim(1<<13):buf%=FNdim(280):plbuff%=FNdim(sx%)
10280FORI%=0TOclearcode%-1:table%(I%)=I%:NEXT
10290info$="GIF file, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(quant%)
10300WHEN 600
10310quant%=8:PTR#c%=&5c:FORC%=0TO255
10320r%(C%)=BGET#c%/255*F:g%(C%)=BGET#c%/255*F:b%(C%)=BGET#c%/255*F
10330NEXT
10340PTR#c%=&36e:sy%=FNHW:sx%=FNHW
10350st%=&380:PTR#c%=st%:rowbytes%=sx%:r$="FN8":cache%=TRUE
10360info$=".PIC image, "+STR$sx%+" by "+STR$sy%+" pixels, 8 bits per pixel"
10370WHEN 700
10380quant%=8:PTR#c%=0:a$=GET$#c%:st%=PTR#c%
10390sx%=VALa$:sy%=VAL(MID$(a$,INSTR(a$," ")))
10400PROCnopal:input=24:step24=3:rowbytes%=sx%*3:r$="FN24"
10410rbo%=0:gbo%=1:bbo%=2:cache%=TRUE
10420info$="MTV .pic image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
10430WHEN 800
10440sx%=512:sy%=256:IFscale% ymul%=ymul%*2
10450plbuff%=FNdim(sx%):rep%=0:wt%=0:wtsx%=plbuff%+sx%
10460cache%=TRUE:cachebytes%=TRUE
10470FORC%=0TO255:r%(C%)=(C%AND63)/63*F:NEXT:g%()=r%():b%()=r%():quant%=6
10480info$="Watford digitiser picture, 512 by 256 pixels, 6 bits per pixel"
10490WHEN 801
10500sx%=512:sy%=256:input=24:quant%=6:IFscale% ymul%=ymul%*2
10510rep1%=0:wt1%=0:rep2%=0:wt2%=0:rep3%=0:wt3%=0
10520buff%=FNdim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+2*sx%
10530wtsx1%=buff%+sx%:wtsx2%=buff%+2*sx%:wtsx3%=buff%+3*sx%
10540FORC%=0TO255:r%(C%)=(C%AND63)/63*F:NEXT:g%()=r%():b%()=r%()
10550info$="Triple Watford digitiser picture, 512 by 256 pixels, 18 bits per pixel"
10560WHEN 900
10570quant%=8:st%=0:PTR#c%=0:IFEXT#c%=65536 THEN
10580sx%=256:sy%=256:IFscale% ymul%=ymul%*2:xmul%=xmul%*2
10590ELSE
10600sx%=512:sy%=512
10610ENDIF
10620FORC%=0TO255:r%(C%)=C%/255*F:NEXT:g%()=r%():b%()=r%():rowbytes%=sx%:r$="FN8":cache%=TRUE
10630info$="AIM .raw image, 256 by 256 pixels, 8 bits per pixel"
10640WHEN 901
10650quant%=4:IFEXT#c%=65536 THEN
10660sx%=256:sy%=256:IFscale% ymul%=ymul%*2:xmul%=xmul%*2
10670ELSE
10680sx%=512:sy%=512
10690ENDIF
10700buff%=FNdim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+sx%*2
10710FORC%=0TO255:r%(C%)=C%/255*F:NEXT:g%()=r%():b%()=r%()
10720input=24:info$="Hawk V9 Triple image, 256 by 256 pixels, 24 bits per pixel"
10730WHEN 902
10740quant%=4:PTR#c%=8:sx%=FNW:rowbytes%=sx%*3/2:sy%=FNW:st%=20:PTR#c%=20
10750IFscale% ymul%=ymul%*2
10760plbuff%=FNdim(sx%*3):rb%=plbuff%:gb%=plbuff%+sx%:bb%=plbuff%+sx%*2:rbo%=-1
10770FORC%=0TO255:r%(C%)=(C%AND&F)/&F*F:NEXT:g%()=r%():b%()=r%():cache%=TRUE
10780input=24:info$="Hawk V9/Snapshot Colour image, "+STR$sx%+" by "+STR$sy%+" pixels, 12 bits per pixel"
10790WHEN 903
10800quant%=5:PTR#c%=8:sx%=FNW:rowbytes%=sx%*2:sy%=FNW:st%=20:PTR#c%=20:cache%=TRUE:r$="FN16":flag=700
10810DIM rpal%(255),gpal%(255):input=16:step24=2
10820FORC%=0TO255
10830gpal%(C%)=(C%>>5)<<8 OR (C%AND31)
10840rpal%(C%)=((C%>>2)AND31)<<16 OR (C%AND3)<<11
10850NEXT
10860FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
10870input=16:info$="Hawk V9 mk II Colour image, "+STR$sx%+" by "+STR$sy%+" pixels, 16 bits per pixel"
10880WHEN 950
10890quant%=8:PTR#c%=0:sx%=512:rowbytes%=512:sy%=512:st%=0:flag=900
10900FORC%=0TO255:r%(C%)=C%/255*F:NEXT:g%()=r%():b%()=r%():r$="FN8":cache%=TRUE
10910info$="Wild Vision V12 image, 512 by 512 pixels, 8 bits per pixel"
10920WHEN 1000
10930quant%=4:sx%=640:sy%=256:PROCdefpal:st%=FNW:r$="FN"+STR$(1000+FNW):IFscale% ymul%=ymul%*2
10950buff%=FNdim(sx%):ctable%=FNdim(st%)
10960SYS12,4,c%,ctable%,st%:st%=PTR#c%
10970pa%=ctable%:rep%=0:rep2%=0:pasx%=buff%+sx%
10980info$="ProArtisan image, 640 by 256 pixels, 8 bits per pixel"
10990WHEN 1100
11000quant%=1:PTR#c%=4:sx%=FNbeW:sy%=FNbeW:input=FNbeW:bigendianbits=TRUE
11010S%=FNbeW:S%=FNbeW
11020cache%=TRUE:IFS%=2 cachebytes%=TRUE:info$="Byte Encoded " ELSEinfo$="":r$="FN8"
11030C%=FNbeW
11040D%=FNbeW
11050CASE C% OF
11060WHEN 1,2
11070FORI%=0TOD%/3-1:r%(I%)=BGET#c%/255*F:NEXT
11080FORI%=0TOD%/3-1:g%(I%)=BGET#c%/255*F:NEXT
11090FORI%=0TOD%/3-1:b%(I%)=BGET#c%/255*F:NEXT
11100OTHERWISE
11110CASE input OF
11120WHEN 1:r%(0)=F:g%(0)=F:b%(0)=F
11130WHEN 4,8:PROCnopal
11140WHEN 24:PROCnopal
11150ENDCASE
11160ENDCASE
11170CASE input OF
11180WHEN 1:rowbytes%=(sx%+15>>4)<<1
11190WHEN 4:rowbytes%=(sx%+3>>2)<<1
11200WHEN 8:rowbytes%=(sx%+1>>1)<<1
11210WHEN 24:rowbytes%=(3*sx%+1>>1)<<1:r$="FN24":rbo%=0:gbo%=1:bbo%=2:step24=3
11220IFS%=1 bbo%=0:rbo%=2
11230OTHERWISE:ERROR 42,"Can't do this Sun pixrect"
11240ENDCASE
11250st%=D%+&20:rep%=0:IFcachebytes% plbuff%=FNdim(rowbytes%):plbytes%=rowbytes%
11260info$+="Sun image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
11270WHEN 1200
11280quant%=8:sx%=800:sy%=800:st%=1600:PTR#c%=st%:vflip%=NOT vflip%
11290PROCnopal:r$="FN8":rowbytes%=sx%:cache%=TRUE
11300info$="TimeStep satellite image, 800 by 800 pixels, 8 bits per pixel"
11310WHEN 1300
11320quant%=8:sx%=128:sy%=256:st%=0:PTR#c%=0:IFscale% xmul%=xmul%*2
11330PROCnopal:r$="FN8":rowbytes%=sx%:cache%=TRUE
11340info$="satellite image, 128 by 256 pixels, 8 bits per pixel"
11350WHEN 1301
11360input=24:quant%=8:sx%=128:sy%=256:IFscale% xmul%=xmul%*2
11370buff%=FNdim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+2*sx%:PROCnopal:r$="FN901"
11380info$="Triple satellite image, 128 by 256 pixels, 24 bits per pixel"
11390WHEN 1400
11400planar%=TRUE:PTR#c%=0:Z%=FNHW:IFZ%>255 THEN
11410st%=FNbeHW*2:planes%=FNbeHW:patlen%=FNbeHW
11420pw%=FNbeHW:ph%=FNbeHW:sx%=FNbeHW:sy%=FNbeHW
11430ELSE
11440st%=FNHW*2:input=FNHW:patlen%=FNHW:pw%=FNHW:ph%=FNHW:sx%=FNHW:sy%=FNHW
11450ENDIF
11460IFscale% THEN
11470xmul%=xmul%*pw%:xdiv%=xdiv%*282
11480ymul%=ymul%*ph%:ydiv%=ydiv%*282
11490ENDIF
11500rowbytes%=sx%+7>>3:pbuff%=FNdim(sx%):plbytes%=rowbytes%*planes%:buff%=FNdim(plbytes%)
11510PTR#c%=st%:vrep%=0
11520FORC%=0TO(1<<planes%)-1:r%(C%)=F-C%/((1<<planes%)-1)*F:NEXT:g%()=r%():b%()=r%()
11530info$="IMG file, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(planes%)
11540WHEN 1500
11550PTR#c%=4:dir%=FNtiff(4):PTR#c%=dir%
11560rgb=FALSE:greyunit=100:planar%=1:fillorder=1:resunit=2
11570xnum%=90:xdenom%=1:ynum%=90:ydenom%=1
11580E%=FNtiff(3):FORZ%=1TOE%
11590T%=FNtiff(3):D%=FNtiff(3):C%=FNtiff(4)
11600IFC%>1 V%=FNtiff(4) ELSEIFD%=2 PTR#c%=dir%+2+Z%*12 ELSEIFD%<4 V%=FNtiff(D%):PTR#c%=dir%+2+Z%*12 ELSEV%=FNtiff(4)
11620CASE T% OF
11630WHEN 256:sx%=V%
11640WHEN 257:sy%=V%
11650WHEN 258:IFC%>1 THEN
11660IFD%*C%>6 THEN
11670PTR#c%=V%:quant%=FNtiff(D%)
11680input=quant%:FORI%=1TOC%-1:V%=FNtiff(D%)
11690IFV%<>quant% ERROR42,"Can't do RGB TIFF with different numbers of bits per pixel"
11700input+=V%
11710NEXT:PROCnopal
11720ELSE
11730quant%=V% AND &FF:input=quant%
11740FORI%=0TO(1<<quant%)-1:r%(I%)=I%/((1<<quant%)-1)*F:NEXT
11750g%()=r%():b%()=r%()
11760ENDIF
11770PTR#c%=dir%+2+Z%*12
11780ELSE
11790quant%=V%:input=quant%
11800FORI%=0TO(1<<quant%)-1:r%(I%)=I%/((1<<quant%)-1)*F:NEXT
11810g%()=r%():b%()=r%()
11820ENDIF
11830WHEN 259:compression=V%
11840WHEN 262:photometric=V%:IFV%=0 invert%=NOTinvert%
11850WHEN 266:fillorder=V%
11860WHEN 273:stc%=C%:stv%=V%:std%=D%
11870WHEN 277:sampperpix%=V%:input=quant%*V%:rgb=V%=3
11880WHEN 278:striprows%=V%
11890WHEN 279:stcbyte%=C%:stvbyte%=V%:stdbyte%=D%
11900WHEN 282:PTR#c%=V%:xnum%=FNtiff(4):xdenom%=FNtiff(4)
11910PTR#c%=dir%+2+Z%*12
11920WHEN 283:PTR#c%=V%:ynum%=FNtiff(4):ydenom%=FNtiff(4)
11930PTR#c%=dir%+2+Z%*12
11940WHEN 284:planar%=V%:IFplanar%=2 input=quant%
11950WHEN 290:greyunit=10^V%
11960WHEN 291:PTR#c%=V%:FORI%=0TOC%-1:r%(I%)=FNtiff(D%)/greyunit/2*F:NEXT
11970g%()=r%():b%()=r%()
11980PTR#c%=dir%+2+Z%*12
11990WHEN 296:resunit=V%
12000WHEN 317:hpredict%=V%
12010WHEN 320:PTR#c%=V%:FORI%=0TOC%/3-1:r%(I%)=FNtiff(3)/65535*F:NEXT
12020FORI%=0TOC%/3-1:g%(I%)=FNtiff(3)/65535*F:NEXT
12030FORI%=0TOC%/3-1:b%(I%)=FNtiff(3)/65535*F:NEXT
12040PTR#c%=dir%+2+Z%*12
12050OTHERWISE
12060IFinfo% PRINT"Ignoring tag ";T%" datatype "D%" count "C%" value/pointer "V%
12070ENDCASE
12080NEXT
12090DIM st%(stc%):IFstc%>1 THEN
12100PTR#c%=stv%:FORI%=0TOstc%-1:st%(I%)=FNtiff(std%):NEXT
12120ELSE
12130st%(0)=stv%
12140ENDIF
12150CASE compression OF
12160WHEN 0,1:info$=""
12170WHEN 2:info$="CCITT Group 3 compressed "
12180WHEN 5:info$="LZW compressed ":r$="FN1505"
12190IFhpredict%=2 THENinfo$+="horizontal differenced " ELSEIFhpredict%>2 info$+=" unknown predictor ("+STR$hpredict%+") "
12200setcodes%=8:clearcode%=1<<setcodes%
12210DIM table%(1<<12):stk%=FNdim(1<<13):buf%=FNdim(280)
12220FORI%=0TOclearcode%-1:table%(I%)=I%:NEXT
12230WHEN 32773:info$="PackBits compressed ":r$="FN1501"
12240WHEN 6:info$="JPEG compressed "
12250OTHERWISE info$="Compress "+STR$compression+" - unknown "
12260ENDCASE
12270info$+="TIFF file, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
12280bigendianbits=fillorder=1:PTR#c%=st%(0):stripptr=0:IFstriprows%>=sy% striprows%=-1
12290CASE input OF
12300WHEN 1:rowbytes%=sx%+7>>3
12310WHEN 2:rowbytes%=sx%+3>>2
12320WHEN 4:rowbytes%=sx%+1>>1
12330WHEN 8:rowbytes%=sx%
12340WHEN 24:rowbytes%=3*sx%
12350OTHERWISE ERROR 42,"Can't do "+FNbits(input)+" TIFF"
12360ENDCASE
12370IFplanar%=2 rowbytes%=rowbytes%*sampperpix%
12380IFplanar%<>1 AND rgb<>0 ERROR42,"Can't do this style of TIFF yet" ELSEplanar%=FALSE
12390IF compression<2 THEN
12400cache%=TRUE:stripptr=-1:r$="FN8":IFinput=24 rbo%=0:gbo%=1:bbo%=2:step24=3:r$="FN24"
12410ELSE
12420IFcompression=5 ORcompression=32773 THEN
12430cache%=TRUE:cachebytes%=rowbytes%*striprows%
12440plbuff%=FNdim(rowbytes%):rowstogo%=striprows%
12450IFinput=24 rb%=plbuff%:gb%=plbuff%+1:bb%=plbuff%+2:r$="FN"+STR$(VALMID$(r$,3)+10):step24=3:rbo%=-1
12460ELSE
12470buff%=FNdim(rowbytes%):rowstogo%=striprows%
12480IFinput=24 rb%=buff%:gb%=buff%+1:bb%=buff%+2:r$="FN"+STR$(VALMID$(r$,3)+10):step24=3
12490ENDIF
12500ENDIF
12510IFscale% THEN
12520S%=resunit:IFS%=2 S%=90
12530IFS%=3 S%=35
12540xdiv%=xdiv%*xnum%:xmul%=xmul%*xdenom%*S%
12550ydiv%=ydiv%*ynum%:ymul%=ymul%*ydenom%*S%
12560ENDIF
12570IFr$="FN1500" r$="FN8"
12580WHEN 1600
12590PTR#c%=12:camg=0:planar%=TRUE:REPEAT
12600S$=CHR$BGET#c%+CHR$BGET#c%+CHR$BGET#c%+CHR$BGET#c%:S%=FNbeW
12610CASE S$ OF
12620WHEN "BMHD":sx%=FNbeHW:sy%=FNbeHW:S%=FNW:planes%=BGET#c%:masking%=BGET#c%=1
12630compression=BGET#c%:S%=BGET#c%+FNHW:U%=BGET#c%:V%=BGET#c%:S%=FNW
12640IFscale% ymul%=ymul%*V%:ydiv%=ydiv%*U%
12650FORI%=0TO(1<<planes%)-1:r%(I%)=I%/((1<<planes%)-1)*F:NEXT:g%()=r%():b%()=r%()
12660WHEN "CMAP":S%=PTR#c%+S%:FORI%=0TO(1<<planes%)-1:r%(I%)=(BGET#c%>>4)/15*F
12670g%(I%)=(BGET#c%>>4)/15*F:b%(I%)=(BGET#c%>>4)/15*F:NEXT
12680PTR#c%=S%:IFinfo% PRINT"Warning: truncated IFF CMAP information to 4 bits"
12690WHEN "CAMG":camg=FNbeW:IFinfo% PRINT"Amiga viewport mode ";~camg
12700WHEN "BODY":st%=PTR#c%
12710OTHERWISE IF info% PRINT"Ignoring IFF property "S$" size ";S%
12720PTR#c%=PTR#c%+S%
12730ENDCASE
12740UNTILS$="BODY":IFcompression info$="Compressed " ELSEinfo$=""
12760ham=(camg AND &800)<>0:IFham info$+="HAM "
12770half=(camg AND &80)<>0:IFhalf info$+="half-bright "
12780IFhalf half%=1<<planes%-1:FORI%=0TOhalf%-1:r%(I%+half%)=r%(I%)/2:g%(I%+half%)=g%(I%)/2:b%(I%+half%)=b%(I%)/2:NEXT
12790info$+="IFF file, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(planes%)
12800IFmasking% info$+=" with mask (ignored)"
12810rowbytes%=(sx%+15>>4)<<1:plbytes%=rowbytes%*planes%
12820pbuff%=FNdim(sx%):r$="FN"+STR$(1600+compression):cache%=TRUE
12830IFcompression THEN
12840cachebytes%=TRUE:plbuff%=FNdim(plbytes%)
12850ELSE
12860realrowbytes%=rowbytes%:rowbytes%=plbytes%:IFmasking% rowbytes%+=realrowbytes%
12870ENDIF
12880PTR#c%=st%
12890WHEN 1700
12900sx%=640:rowbytes%=80:sy%=350:planes%=4:plbytes%=4*80:planar%=TRUE
12910buff%=FNdim(80*4):pbuff%=FNdim(640):G=F/3:H=F*2/3
12920r%()=0,0,0,0,F,F,F,H,G,G,G,G,F,F,F,F
12930g%()=0,0,F,F,0,0,F,H,G,G,F,F,G,G,F,F
12940b%()=0,F,0,F,0,F,0,H,G,F,G,F,G,F,G,F
12950masking%=FALSE:r$="FN1600":st%=16:PTR#c%=16:cache%=TRUE:realrowbytes%=80:rowbytes%=plbytes%
12960info$="PC EGA '.dsp' file, 640 by 350 pixels, 4 bits per pixel (fixed palette)"
12970WHEN 1800
12980sx%=72*8:sy%=720:quant%=1:input=1:PTR#c%=st%:plbuff%=FNdim(72)
12990cache%=TRUE:cachebytes%=TRUE
13000r%(0)=F:g%(0)=F:b%(0)=F:bigendianbits=TRUE:rowbytes%=72:r$="FN1501":rowstogo%=-1
13010IFscale% xmul%=xmul%*90:xdiv%=xdiv%*72:ymul%=ymul%*90:ydiv%=ydiv%*72
13020info$="MacPaint file, 576 by 720 bits, creator id "+RIGHT$(S$,4)
13030WHEN 1850
13040PTR#c%=552
13050done%=FALSE
13060REPEAT
13070code%=FNbeHW:CASE code% OF
13080WHEN &01:PTR#c%=PTR#c%+FNbeHW
13090WHEN &1E
13100WHEN &98
13110rowbytes%=FNbeHW:IF(rowbytes% AND&8000)=0 ERROR42,"PICT without Pixmap"
13120sy%=FNbeHW:sx%=FNbeHW:sy%=FNbeHW-sy%:sx%=FNbeHW-sx%
13130junk%=FNHW:packtype%=FNbeHW:junk%=FNW:resx%=FNbeW:resy%=FNbeW
13140IFFNbeHW<>0 CLOSE#c%:ERROR42,"ChangeFSI expected Mac PICT2 pixeltype=Chunky"
13150bpp%=FNbeHW:junk%=FNbeHW:junk%=FNbeHW
13160junk%=FNbeW:junk%=FNbeW:junk%=FNbeW
13170junk%=FNbeW:junk%=FNbeHW
13180C%=FNbeHW:FORI%=0TOC%:J%=FNbeHW:r%(J%)=FNbeHW/65535*F:g%(J%)=FNbeHW/65535*F:b%(J%)=FNbeHW/65535*F:NEXT
13190done%=TRUE
13200WHEN &9A:junk%=FNW:rowbytes%=FNbeHW:IF(rowbytes% AND&8000)=0 ERROR42,"PICT without Pixmap"
13210sy%=FNbeHW:sx%=FNbeHW:sy%=FNbeHW-sy%:sx%=FNbeHW-sx%
13220junk%=FNHW:packtype%=FNbeHW:junk%=FNW:resx%=FNbeW:resy%=FNbeW
13230IFFNbeHW<>16 CLOSE#c%:ERROR42,"ChangeFSI expected Mac PICT2 pixeltype=RGBDirect"
13240bpp%=FNbeHW:comps%=FNbeHW:junk%=FNbeHW
13250junk%=FNbeW:junk%=FNbeW
13260junk%=FNbeHW:junk%=FNbeHW
13270IFbpp%>16 PROCnopal ELSEJ%=2^(bpp%DIV3):FORI%=0TOJ%-1:r%(I%)=I%/(J%-1)*F:NEXT:g%()=r%():b%()=r%()
13280IFbpp%=32 AND comps%=3 bpp%=24:rowbytes%=3*sx%
13290done%=TRUE
13300OTHERWISE:CLOSE#c%:ERROR42,"ChangeFSI can't understand Mac PICT2 code "+STR$~code%
13310ENDCASE
13320UNTIL done%
13330junk%=FNbeHW:junk%=FNbeHW:junk%=FNbeHW:junk%=FNbeHW
13340junk%=FNbeHW:junk%=FNbeHW:junk%=FNbeHW:junk%=FNbeHW
13350junk%=FNbeHW
13360cache%=TRUE:cachebytes%=TRUE:bigendianbits=TRUE:st%=PTR#c%:rowbytes%=rowbytes%ANDNOT&8000
13370IFscale% xmul%=xmul%*90*65536:xdiv%=xdiv%*resx%:ymul%=ymul%*90*65536:ydiv%=ydiv%*resy%
13380info$="Mac PICT2, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(bpp%)
13390plbuff%=FNdim(rowbytes%):IFbpp%>8 THEN
13400rbo%=-1:rb%=plbuff%+sx%:gb%=plbuff%+sx%*2:bb%=plbuff%+sx%*3:r$="FN1851":input=24
13410IFcomps%=3 rb%=plbuff%:gb%=plbuff%+sx%:bb%=plbuff%+sx%*2
13420ENDIF
13430WHEN 1900
13440PTR#c%=1:C%=BGET#c%
13450E%=BGET#c%:IFE%<>1 ERROR 42,"ZSoft .PCX file with unknown encoding"
13460E%=BGET#c%:sx%=FNHW:sy%=FNHW:sx%=FNHW+1-sx%:sy%=FNHW+1-sy%
13470IFscale% xmul%=xmul%*90:xdiv%=xdiv%*FNHW:ymul%=ymul%*90:ydiv%=ydiv%*FNHW ELSEIFFNW
13480PTR#c%=65:planes%=BGET#c%:planar%=planes%>1:rowbytes%=FNHW:bpp%=E%*planes%
13490pcxpal=16:IFbpp%>4 AND C%=5 THEN
13500PTR#c%=EXT#c%-769:IFBGET#c%=12 pcxpal=EXT#c%-768
13510ENDIF
13520PTR#c%=pcxpal:E%=0:FORC%=0TO(1<<bpp%)*3-1:E%=E%ORBGET#c%:NEXT
13530IFinfo% PRINT".PCX palette mask established at ";~E%
13540IFE%=0 THEN
13550FORC%=0TO(1<<bpp%)-1:r%(C%)=C%/((1<<bpp%)-1)*F:NEXT:g%()=r%():b%()=r%()
13560ELSE
13570PTR#c%=pcxpal:FORC%=0TO(1<<bpp%)-1
13580r%(C%)=(BGET#c%ANDE%)/E%*F:g%(C%)=(BGET#c%ANDE%)/E%*F:b%(C%)=(BGET#c%ANDE%)/E%*F
13590NEXT
13600ENDIF
13610PROCrewind
13620plbytes%=rowbytes%*planes%:plbuff%=FNdim(plbytes%):cache%=TRUE:cachebytes%=TRUE
13630IFplanar% pbuff%=FNdim(sx%) ELSEinput=bpp%:bigendianbits=TRUE:r$="FN1100"
13640info$="ZSoft .PCX file, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(bpp%)
13650WHEN 2000
13660PTR#c%=0:L%=BGET#c%:C%=BGET#c%:I%=BGET#c%:J%=FNHW:K%=FNHW:M%=BGET#c%
13670sx%=FNW:sx%=FNHW:sy%=FNHW:B%=BGET#c%:ID%=BGET#c%:IFID%AND&10 hflip%=NOThflip%
13680IF(ID% AND&20)=0 vflip%=NOTvflip%
13690PTR#c%=PTR#c%+L%:CASE C% OF
13700WHEN 1:IFM%=&18 THEN
13710FORC%=J%TOK%-1
13720b%(C%)=BGET#c%/255*F:g%(C%)=BGET#c%/255*F:r%(C%)=BGET#c%/255*F
13730NEXT
13740ELSE
13750ENDIF
13760OTHERWISE PROCnopal
13770ENDCASE
13780st%=PTR#c%
13790CASE I% OF
13800WHEN 1,2,3:cache%=TRUE:IFB%>8 THEN
13810IFB%>16 THEN
13820input=24:bbo%=0:gbo%=1:rbo%=2:step24=B%DIV8:r$="FN24":rowbytes%=step24*sx%
13830ELSE
13840rowbytes%=sx%*2
13850DIM rpal%(255),gpal%(255):input=16:step24=2:r$="FN16"
13860FORC%=0TO255
13870gpal%(C%)=(C%>>5)<<8 OR (C%AND31)<<16
13880rpal%(C%)=(C%>>2)AND31 OR (C%AND3)<<11
13890NEXT
13900FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
13910ENDIF
13920ELSE
13930r$="FN8":rowbytes%=sx%
13940ENDIF
13950info$="Truevision TGA image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(B%)
13960WHEN 9,10,11:step24=B%DIV8:rowbytes%=step24*sx%:buff%=FNdim(rowbytes%)
13970IFB%>8 THEN
13980IFB%>16 THEN
13990input=24:bb%=buff%:gb%=buff%+1:rb%=buff%+2:r$="FN2002"
14000ELSE
14010DIM rpal%(255),gpal%(255):input=16:step24=2:r$="FN2001"
14020FORC%=0TO255
14030gpal%(C%)=(C%>>5)<<8 OR (C%AND31)<<16
14040rpal%(C%)=(C%>>2)AND31 OR (C%AND3)<<11
14050NEXT
14060FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
14070ENDIF
14080ENDIF
14090info$="Truevision TGA RLE image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(B%)
14100ENDCASE
14110WHEN 2100
14120quant%=6:sx%=512:rowbytes%=2*sx%:sy%=256:cache%=TRUE:r$="FN16"
14130DIM rpal%(255),gpal%(255):input=16:step24=2
14140FORC%=0TO255
14150gpal%(C%)=C%>>3 OR (C%AND7)<<11
14160rpal%(C%)=(C%AND7)<<8 OR (C%>>3)<<16
14170NEXT
14180FORC%=0TO31:r%(C%)=C%/31*F:NEXT:b%()=r%()
14190FORC%=0TO63:g%(C%)=C%/63*F:NEXT
14200IFscale% ymul%=ymul%*2
14210info$="Pineapple image, 512 by 256 pixels, 16 bits per pixel":PTR#c%=7
14220WHEN 2200
14230quant%=8:step24=1:PTR#c%=0:s$=GET$#c%:E%=INSTR(s$,":"):st%=PTR#c%
14240sx%=VALMID$(s$,E%+1):sy%=VALMID$(s$,E%+2+LENSTR$sx%):PROCnopal:input=24
14250rowbytes%=sx%*3:rbo%=0:gbo%=sx%:bbo%=2*sx%:cache%=TRUE:r$="FN24"
14260info$="Irlam image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
14270WHEN 2250
14280PTR#c%=16:sx%=FNW:sy%=FNW:DIM rpal%(255),gpal%(255),bpal%(255),table%(255)
14290FORC%=0TO255:D%=C%OR1
14300table%(C%)=(D%-16)/219*F
14310IFD%AND128 D%-=256
14320r%(C%)=INT(D%/160*F):b%(C%)=INT(D%/126*F)
14330g%(C%)=INT(-D%/160*rwt/gwt*F):gpal%(C%)=INT(-D%/126*bwt/gwt*F)
14340NEXT
14350table%()=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
14360st%=32:PTR#c%=32:cache%=TRUE:rowbytes%=2*sx%:input=411
14370info$="Irlam YUV 4:1:1 file "+STR$sx%+" by "+STR$sy%+" pixels"
14380WHEN 2300
14390PTR#c%=6:sx%=FNHW:sy%=FNHW:D%=BGET#c%:ncolors%=BGET#c%:input=24
14400vflip%=NOTvflip%:quant%=BGET#c%:ncmap%=BGET#c%:cmaplen%=1<<BGET#c%
14410PROCnopal:back%=FNdim(4):!back%=0
14420clrfirst%=D%AND1
14430IF(D%AND2)=0 THEN
14440FORI%=0TOncolors%-1:back%?I%=BGET#c%:NEXT
14450IF(ncolors%AND1)=0 IFBGET#c%
14460ENDIF
14470IFD%AND4 alpha%=FNdim(sx%)
14480IFncmap%>0 THEN
14490FORI%=0TOcmaplen%-1:r%(I%)=FNHW/&FF00*F:NEXT
14500FORI%=0TOcmaplen%-1:g%(I%)=FNHW/&FF00*F:NEXT
14510FORI%=0TOcmaplen%-1:b%(I%)=FNHW/&FF00*F:NEXT
14520ENDIF
14530IFD%AND8 THEN
14540PTR#c%=FNHW+PTR#c%:IFPTR#c%AND1 PTR#c%=PTR#c%+1
14550ENDIF
14560st%=PTR#c%:buff%=FNdim(sx%*3):rb%=buff%:gb%=buff%+1*sx%:bb%=buff%+2*sx%
14570PROCrewind
14580info$="Utah rle image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(ncolors%*quant%)
14590WHEN 2400
14600PTR#c%=riffoff%+&0a:st%=FNW:pal%=FNW:sx%=FNW:sy%=FNW
14610CASE pal% OF
14620WHEN 12
14630PTR#c%=riffoff%+&18:input=FNHW:compression=0
14640WHEN 40
14650PTR#c%=riffoff%+&1c:input=FNHW:compression=FNW
14660PTR#c%=riffoff%+&26:xppm=FNW:yppm=FNW
14670IF (xppm<>0 AND yppm<>0) THEN
14680xdiv%=xdiv%*xppm:xmul%=xmul%*3543
14690ydiv%=ydiv%*yppm:ymul%=ymul%*3543
14700ENDIF
14710OTHERWISE
14720ERROR 42,"Unknown .BMP variant ("+STR$pal%+")"
14730ENDCASE
14740bigendianbits=TRUE:vflip%=NOTvflip%
14750CASE input OF
14760WHEN 1:rowbytes%=sx%+7>>3
14770WHEN 4:rowbytes%=sx%+1>>1
14780WHEN 8:rowbytes%=sx%
14790WHEN 16:rowbytes%=sx%*2:r$="FN16":step24=2
14800DIM rpal%(255),gpal%(255)
14810FORC%=0TO255
14820gpal%(C%)=(C%>>5)<<8 OR (C%AND31)
14830rpal%(C%)=((C%>>2)AND31)<<16 OR (C%AND3)<<11
14840NEXT
14850FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
14860WHEN 24:rowbytes%=sx%*3
14870rbo%=0:gbo%=1:bbo%=2:step24=3:r$="FN24"
14880FORC%=0TO255:r%(C%)=C%/255*F:NEXT:g%()=r%():b%()=r%()
14890OTHERWISE ERROR 42,".BMP file of unusual depth ("+STR$input+")"
14900ENDCASE
14910IFinput<=8 THEN
14920PTR#c%=riffoff%+14+pal%:r$="FN8"
14930FORC%=0TO2^input-1
14940b%(C%)=BGET#c%/255*F:g%(C%)=BGET#c%/255*F:r%(C%)=BGET#c%/255*F:IFBGET#c%
14950NEXT
14960ENDIF
14970CASE compression OF
14980WHEN 0:info$="Uncompressed "
14990WHEN 1:info$="RLE8 compressed ":r$="FN2401"
15000WHEN 2:info$="RLE4 compressed ":r$="FN2402"
15010OTHERWISE ERROR 42,".BMP compression type not supported ("+STR$compression+")"
15020ENDCASE
15030rowbytes%=rowbytes%+3ANDNOT3
15040IF compression<>0 cachebytes%=TRUE:plbuff%=FNdim(rowbytes%)
15050cache%=TRUE:PTR#c%=riffoff%+st%
15060info$+="Windows 3.0 .BMP image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
15070WHEN 2500
15080PTR#c%=0:s$="":C%=BGET#c%:WHILEC%<>0 s$+=CHR$C%:C%=BGET#c%:ENDWHILE
15090s$+=" version "+STR$FNW:sx%=FNW:sy%=FNW:input=FNW:cache%=TRUE
15100info$="!Translator Clear format made by "+s$+", "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
15110IFinput>8 THEN
15120PROCnopal:input=24:step24=3:rowbytes%=3*sx%:rbo%=0:gbo%=1:bbo%=2:r$="FN24"
15130ELSE
15140FORC%=0TO2^input-1
15150r%(C%)=BGET#c%/255*F:g%(C%)=BGET#c%/255*F:b%(C%)=BGET#c%/255*F
15160NEXT
15170input=8:r$="FN8":rowbytes%=sx%
15180ENDIF
15190st%=PTR#c%
15200WHEN 2600
15210PTR#c%=0:C%=BGET#c%
15220D%=BGET#c%:CASE D% OF
15230WHEN 0:sx%=320:sy%=200:planes%=4
15240WHEN 1:sx%=640:sy%=200:planes%=2
15250WHEN 2:sx%=640:sy%=400:planes%=1
15260OTHERWISE ERROR42,"ChangeFSI knows nothing of "+STR$C%+" type Degas files"
15270ENDCASE
15280FORI%=0TO(1<<input)-1:D%=FNbeHW:r%(I%)=(D%>>8AND7)/7*F:g%(I%)=(D%>>4AND7)/7*F:b%(I%)=(D%AND7)/7*F:NEXT
15290cache%=TRUE:planar%=TRUE:masking%=FALSE:st%=34:PTR#c%=34:r$="FN1600"
15300rowbytes%=(sx%+15>>4)<<1:plbytes%=rowbytes%*planes%:pbuff%=FNdim(sx%)
15310IFC%AND128 r$="FN1601":flag=1600:cachebytes%=TRUE:plbuff%=FNdim(plbytes%) ELSErealrowbytes%=2:rowbytes%=plbytes%
15320info$="Degas file "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(planes%)
15330WHEN 2700
15340PTR#c%=4:sx%=FNHW:sy%=FNHW
15350CASE FNHW OF
15360WHEN &AF:rowbytes%=sx%:cache%=TRUE:r$="FN8":st%=&30A
15370OTHERWISE CLOSE#c%:ERROR 42,"Panic in ColoRIX reading - ChangeFSI largely ignorant of format!"
15380ENDCASE
15390FORC%=0TO2^input-1
15400r%(C%)=BGET#c%/63*F:g%(C%)=BGET#c%/63*F:b%(C%)=BGET#c%/63*F
15410NEXT
15420PTR#c%=st%
15430info$="ColoRIX file "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
15440WHEN 2800
15450PTR#c%=0:REPEAT s$=FNfits:CASE LEFT$(s$,8) OF
15460WHEN "SIMPLE  ":IFMID$(s$,30,1)<>"T" ERROR42,"ChangeFSI can only read Simple FITS format"
15470WHEN "BITPIX  ":input=VALMID$(s$,10)
15480WHEN "NAXIS   ":IFVALMID$(s$,10)<>2 ERROR42,"ChangeFSI can only read 2d FITS images"
15490WHEN "NAXIS1  ":sx%=VALMID$(s$,10)
15500WHEN "NAXIS2  ":sy%=VALMID$(s$,10)
15510WHEN "END     "
15520OTHERWISE IFinfo% PRINT"Ignoring FITS record "s$
15530ENDCASE
15540UNTILLEFT$(s$,8)="END     "
15550st%=(PTR#c%DIV2880 + 1)*2880:cache%=TRUE:PTR#c%=st%
15560CASE input OF
15570WHEN 8:r$="FN8":rowbytes%=sx%:PROCnopal
15580WHEN 16:rowbytes%=2*sx%:DIM rpal%(255),gpal%(255):step24=2:r$="FN16"
15590FORC%=0TO255
15600gpal%(C%)=C%<<8
15610rpal%(C%)=C%
15620NEXT:cheat%=0:IFinvert% cheat%=F
15630FORC%=0TO255:r%(C%)=cheat%+C%/65535*F:g%(C%)=((C%EOR&80)<<8)/65535*F:b%(C%)=cheat%:NEXT:rwt=1:gwt=1:bwt=1
15640OTHERWISE ERROR 42,"ChangeFSI can't read a FITS image with this number of bits per pixel"
15650ENDCASE
15660info$="FITS file "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
15670WHEN 2900
15680PTR#c%=4:sx%=FNbeHW:sy%=FNbeHW:PTR#c%=&42:input=FNbeHW:C%=FNbeHW
15690rowbytes%=FNbeHW:C%=FNbeW:st%=FNbeW:PTR#c%=st%:r$="FN8":PROCnopal
15700DIM rpal%(15),gpal%(15),bpal%(15)
15710rpal%()=&e6,&23,&e6,&7f,&17,&00,&a1,&45,&e6,&4a,&e6,&73,&6e,&47,&8a,0
15720gpal%()=&e6,&78,&00,&23,&a1,&73,&2e,&2e,&c8,&a6,&75,&40,&b8,&78,&55,0
15730bpal%()=&b8,&e6,&00,&a1,&17,&2e,&0c,&2e,&00,&c6,&00,&e6,&00,&00,&00,0
15740FORC%=&80TO&8F:r%(C%)=rpal%(C%-&80)/255*F:g%(C%)=gpal%(C%-&80)/255*F:b%(C%)=bpal%(C%-&80)/255*F:NEXT:cache%=TRUE
15750info$="Apollo GPR file "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
15760WHEN 3000
15770sx%=720:sy%=EXT#c%/1440:DIM rpal%(255),gpal%(255),bpal%(255),table%(255)
15790IFFALSE THEN
15800FORC%=0TO255
15810table%(C%)=(C%-16)/219*F
15820r%(C%)=(C%-128)/186*0.624*F:rpal%(C%)=(C%-128)/160*0.952*F
15830g%(C%)=-(C%-128)/186*0.64*F:gpal%(C%)=-(C%-128)/160*0.277*F
15840b%(C%)=(C%-128)/186*1.73*F:bpal%(C%)=-(C%-128)/160*1.11*F
15850NEXT
15860ELSE
15880FORC%=0TO255
15890table%(C%)=(C%-16)/219*F
15900r%(C%)=INT((C%-128)/160*F):b%(C%)=INT((C%-128)/126*F)
15910g%(C%)=INT(-(C%-128)/160*rwt/gwt*F):gpal%(C%)=INT(-(C%-128)/126*bwt/gwt*F)
15920NEXT
15930ENDIF
15940table%()=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
15950st%=0:PTR#c%=0:cache%=TRUE:rowbytes%=1440:input=422:gamma=1
15960IFscale% ymul%=ymul%*2
15970info$="CCIR601 4:2:2 file "+STR$sx%+" by "+STR$sy%+" pixels"
15980WHEN 3100
15990quant%=8:PTR#c%=0:a$=GET$#c%:st%=PTR#c%
16000sx%=VALa$:sy%=VAL(MID$(a$,INSTR(a$," ")))
16010PROCnopal:input=24:step24=3:rowbytes%=sx%*3
16020rbo%=0:gbo%=1:bbo%=2:cache%=TRUE:flag=700:r$="FN24"
16030info$="!RayShade 'RGB' image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
16040WHEN 3200
16050quant%=8:PTR#c%=0:st%=0
16060sx%=VALMID$(s$,INSTR(s$,"_")+1,1)
16070CASE sx% OF
16080WHEN 5:sx%=768:sy%=512
16090WHEN 2:sx%=3072:sy%=2048
16100WHEN 1:sx%=1536:sy%=1024
16110ENDCASE
16120PROCnopal:input=24:step24=3:rowbytes%=sx%*3
16130rbo%=0:gbo%=1:bbo%=2:cache%=TRUE:flag=700:r$="FN24"
16140info$="Kodak /RGB image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
16150WHEN 3300
16160PTR#c%=0:input=VALMID$(FNGET,2)
16170s$=FNGET:sx%=VALs$:sy%=VALMID$(s$,INSTR(s$," ")):IFsy%=0 sy%=VALFNGET
16180cache%=TRUE:CASE input OF
16190WHEN 4:input=1:r$="FN8":r%(0)=F:g%()=r%():b%()=r%():bigendianbits=TRUE
16200rowbytes%=(sx%+7)DIV8
16210WHEN 5:input=8:r$="FN8":E%=VALFNGET
16220FORC%=0TOE%:r%(C%)=C%/E%*F:NEXT:g%()=r%():b%()=r%()
16230rowbytes%=sx%
16240WHEN 6:input=24:r$="FN24":E%=VALFNGET:step24=3:rbo%=0:gbo%=1:bbo%=2
16250FORC%=0TOE%:r%(C%)=C%/E%*F:NEXT:g%()=r%():b%()=r%()
16260rowbytes%=sx%*3
16270ENDCASE
16280st%=PTR#c%:flag=700
16290info$+="pbm image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
16300DEF FNGET REPEATs$=GET$#c%:UNTILLEFT$(s$,1)<>"#":=s$
16310WHEN 3400
16320PTR#c%=0:s$=FNGET:input=16:quant%=5
16330s$=FNGET:sx%=VALs$:sy%=VALMID$(s$,INSTR(s$," ")):s$=FNGET
16340DIM rpal%(255),gpal%(255):input=16:step24=2
16350FORC%=0TO255
16360gpal%(C%)=(C%>>5)<<8 OR (C%AND31)
16370rpal%(C%)=((C%>>2)AND31)<<16 OR (C%AND3)<<11
16380NEXT
16390cache%=TRUE:r$="FN16"
16400FORC%=0TO31:r%(C%)=C%/31*F:NEXT:g%()=r%():b%()=r%()
16410rowbytes%=sx%*2:st%=PTR#c%:flag=700
16420info$="p15 image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
16430WHEN 3450
16440PTR#c%=0:info$=FNGET
16450ybits%=VALMID$(info$,INSTR(info$," ")):ymax%=(1<<ybits%)-1
16460ubits%=VALMID$(info$,INSTR(info$,"Y ")+1):umax%=(1<<(ubits%-1))-1
16470vbits%=VALMID$(info$,INSTR(info$,"U ")+1):vmax%=(1<<(vbits%-1))-1
16480s$=FNGET:sx%=VALs$:sy%=VALMID$(s$,INSTR(s$," "))
16490DIM rpal%(255),gpal%(255),bpal%(255),table%(255)
16500FORC%=0TOymax%:table%(C%)=C%/ymax%*F:NEXT
16510D%=(1<<ubits%)-1
16520FORC%=0TOD%:d=C%/umax%:IFd>1 d=-(D%-C%)/umax%
16530b%(C%)=INT(d*(1-bwt)*F):gpal%(C%)=INT(-d*(1-bwt)*bwt/gwt*F)
16540NEXT
16550D%=(1<<vbits%)-1
16560FORC%=0TOD%:d=C%/vmax%:IFd>1 d=-(D%-C%)/vmax%
16570r%(C%)=INT(d*(1-rwt)*F):g%(C%)=INT(-d*(1-rwt)*rwt/gwt*F)
16580NEXT
16590rowbytes%=sx%*2:st%=PTR#c%:cache%=TRUE:r$="FN2250":input=555
16600info$+=", "+STR$sx%+" by "+STR$sy%+" pixels"
16610WHEN 3500
16620quant%=1:PTR#c%=6:E%=FNHW:sx%=FNHW:sx%=FNHW:sy%=FNHW:st%=FNHW:st%=FNW
16630rowbytes%=sx%/8+1ANDNOT1:cache%=TRUE:st%+=PTR#c%:PTR#c%=st%
16640CASE E% OF
16650WHEN 1
16660r$="FN8":input=1:r%(0)=F:g%(0)=F:b%(0)=F
16670info$="Pocketbook bitmap, "+STR$sx%+" by "+STR$sy%+" pixels, 1 bit per pixel"
16680WHEN 2
16690planar%=TRUE:planes%=2:r$="FN1600":input=8:cachebytes%=TRUE
16700r%(0)=F:r%(1)=(F/3)*2:r%(2)=F/3:r%(3)=0:g%()=r%():b%()=r%()
16710plbytes%=rowbytes%*planes%:buff%=FNdim(plbytes%*sy%):pbuff%=FNdim(sx%)
16720realrowbytes%=rowbytes%*sy%
16730info$="PocketbookII bitmap, "+STR$sx%+" by "+STR$sy%+" pixels, 2 bits per pixel"
16740OTHERWISE
16750ERROR 42,"Unknown Pocketbook PIC format"
16760ENDCASE
16770WHEN 3600
16780pcdblk%=FNdim(40):SYS&20023,"ChangeFSI$PCDindex",pcdblk%,20 TO,,Z
16790IFZ THENpcdblk%?Z=13:pcdindex%=VAL$pcdblk% ELSEpcdindex%=3
16800SYS"PhotoCD_Open",1,c%,1 TO pcdh%:SYS"PhotoCD_GetCount",pcdh% TO,Z
16810IF(Z>>pcdindex%)=0 CLOSE#c%:ERROR42,"Desired resolution unavailable"
16820SYS"PhotoCD_GetRotation",pcdh% TO,,pcdtr%
16830SYS"PhotoCD_GetSize",pcdh%,,pcdindex% TO,,,,sx%,sy%
16840pcdblk%!0=0:pcdblk%!8=sx%:pcdblk%!4=0
16850pcdblk%!16=0:pcdblk%!20=2:pcdblk%!24=1:pcdblk%!28=3
16870CASE pcdtr% OF
16880WHEN 0
16890WHEN &80000000:hflip%=NOThflip%
16900WHEN 90
16910CASE rotate% OF
16920WHEN 0:rotate%=1
16930WHEN -1:rotate%=0
16940WHEN 1:rotate%=0:vflip%=NOTvflip%:hflip%=NOThflip%
16950ENDCASE
16960WHEN &8000005A
16970CASE rotate% OF
16980WHEN 0:rotate%=1:vflip%=NOTvflip%
16990WHEN -1:rotate%=0:vflip%=NOTvflip%
17000WHEN 1:rotate%=0:hflip%=NOThflip%
17010ENDCASE
17020WHEN 180:hflip%=NOThflip%:vflip%=NOTvflip%
17030WHEN &800000B4:vflip%=NOTvflip%
17040WHEN 270
17050CASE rotate% OF
17060WHEN 0:rotate%=-1
17070WHEN 1:rotate%=0
17080WHEN -1:rotate%=0:vflip%=NOTvflip%:hflip%=NOThflip%
17090ENDCASE
17100WHEN &8000010E
17110CASE rotate% OF
17120WHEN 0:rotate%=-1:vflip%=NOTvflip%
17130WHEN 1:rotate%=0:vflip%=NOTvflip%
17140WHEN -1:rotate%=0:hflip%=NOThflip%
17150ENDCASE
17160OTHERWISE PANIC
17170ENDCASE
17190input=24:step24=3:rbo%=0:gbo%=1:bbo%=2:pcdcachesize%=32*1024
17200rowbytes%=sx%*3:PROCnopal:cache%=TRUE:pcdcache%=FNdim(pcdcachesize%)
17210info$="PhotoCD image, "+STR$sx%+" by "+STR$sy%+" pixels, 24 bits per pixel"
17220WHEN 3700
17230A%=OPENIN"<ChangeFSI$Dir>.CFSIjpeg":jpeg%=FNdim(EXT#A%)
17240SYS12,4,A%,jpeg%,EXT#A%:CLOSE#A%
17250datacache%=FNcachedim(EXT#c%):IFdatacache%=-1 datacache%=FNdim(EXT#c%)
17260PTR#c%=0:SYS12,4,c%,datacache%,EXT#c%
17270A%=datacache%:B%=jpegblk%:C%=jpegblk%+4:D%=jpegblk%+8:E%=jpegblk%+12:CALLjpeg%+8
17280B%=jpegblk%!12:jpegspace%=FNdim(B%)
17290C%=datacache%:A%=jpegspace%:D%=EXT#c%
17300CALLjpeg%:cache%=FALSE:IF!A% ERROR42,"JPEG code error: "+STR$!A%
17310sx%=A%!20:sy%=A%!24:input=8*A%?28:PROCnopal:step24=4
17320info$="JFIF image, "+STR$sx%+" by "+STR$sy%+" pixels, "+FNbits(input)
17330jpegy%=sy%:r$="FN"+STR$INT(3700+input)
17340WHEN 666
17450st%=0:PTR#c%=0:sx%=160:sy%=128:input=8:cache%=TRUE:rowbytes%=sx%
17460FORC%=0TO255:r%(C%)=C%/255*F:NEXT:g%()=r%():b%()=r%():r$="FN8"
17470info$="The number of the beast, 160 by "+STR$sy%+" pixels, 8 bits per pixel"
17480ENDCASE
17490IFinfo% PRINTinfo$
17500SYS"Hourglass_On",1:hour%=&406c4
17510IFinvert% r%()=F-r%():g%()=F-g%():b%()=F-b%()
17520IFxdiv% PROCreduce(xmul%,xdiv%)
17530IFydiv% PROCreduce(ymul%,ydiv%)
17540CASE m OF
17550WHEN -1:x%=256:y%=256:ncol=256:IFscaleo% xdiv%=xdiv%*2:ydiv%=ydiv%*2
17560WHEN -2:x%=sx%:y%=sy%:IFspm=18 ncol=1 ELSEncol=15
17570WHEN -3,-5,-6:x%=sx%:y%=sy%:ncol=2^15-1
17580WHEN -4,-7,-8:x%=sx%:y%=sy%:ncol=2^24-1
17590OTHERWISE
17600SYS53,m,4 TO ,,nx:SYS53,m,5 TO ,,ny:nx=1<<nx:ny=1<<ny
17610SYS53,m,11 TO ,,x%:SYS53,m,12 TO ,,y%:x%+=1:y%+=1
17620SYS53,m,3 TO ,,ncol:IFscaleo% THEN
17630IFrotate% THEN
17640xdiv%=xdiv%*ny:ydiv%=ydiv%*nx
17650IFxdiv% ymul%=ymul%*2
17660IFydiv% xmul%=xmul%*2
17670ELSE
17680xdiv%=xdiv%*nx:ydiv%=ydiv%*ny
17690IFxdiv% xmul%=xmul%*2
17700IFydiv% ymul%=ymul%*2
17710ENDIF
17720ENDIF
17730SYS&62A51,m TO r0;V:IF(V AND1)=0 THEN
17750IFr0=1 THEN
17760ncol=255:IFm$<>"D" m$="R"
17770ENDIF
17780ENDIF
17790ENDCASE
17800IFm=-6 OR m=-7 OR m=-8 THEN
17810nx=VALMID$(pnm$,5):ny=VALMID$(pnm$,INSTR(pnm$,",",5)+1)
17820IFscaleo% THEN
17830IFrotate% THEN
17840IFxdiv% ymul%=ymul%*nx
17850IFydiv% xmul%=xmul%*ny
17860ELSE
17870IFxdiv% xmul%=xmul%*nx
17880IFydiv% ymul%=ymul%*ny
17890ENDIF
17900xdiv%=xdiv%*90:ydiv%=ydiv%*90
17910ENDIF
17920ENDIF
17930IFrotate% SWAP x%,y%
17950IFxdiv%=0 xdiv%=sx%
17960IFydiv%=0 ydiv%=sy%
17970IFxs$="=" xmul%=x%:xdiv%=sx%
17980IFys$="=" ymul%=y%:ydiv%=sy%
17990IFlock% THEN
18000IFxmul%/xdiv%>ymul%/ydiv% xmul%=ymul%:xdiv%=ydiv% ELSEymul%=xmul%:ydiv%=xdiv%
18010ENDIF
18020IFncol=1 THEN
18030CASE m$ OF
18040WHEN"C":xdiv%=xdiv%*4:ydiv%=ydiv%*4
18050DIM A%(16),B%(16)
18060A%()=0,&00000001,&08000001,&08000101,&08080101,&08080103,&0C080103,&0C080303,&0C0C0303,&0C0E0303,&0C0E0703,&0E0E0703,&0E0E0707,&0E0F0707,&0E0F0F07,&0F0F0F07,&0F0F0F0F
18070B%()=0,&00000008,&01000008,&01000808,&01010808,&0101080C,&0301080C,&03010C0C,&03030C0C,&03070C0C,&03070E0C,&07070E0C,&07070E0E,&070F0E0E,&070F0F0E,&0F0F0F0E,&0F0F0F0F
18080even_gard=FNdim(17*32*4):odd_gard=FNdim(17*32*4)
18090FORI%=0TO16:FORJ%=0TO16:even_gard!(J%*32*4+I%*4)=A%(I%)ORB%(J%)<<4:NEXT:NEXT
18100FORI%=0TO16:FORJ%=0TO16:odd_gard!(I%*32*4+J%*4)=B%(I%)ORA%(J%)<<4:NEXT:NEXT
18110WHEN"T":xdiv%=xdiv%*3:ydiv%=ydiv%*3
18120DIM A%(9),B%(9)
18130A%()=0,&0001,&4001,&4041,&4043,&40C3,&60C3,&61C3,&71C3,&71C7
18140B%()=0,&0004,&1004,&1104,&1106,&1186,&3186,&31C6,&71C6,&71C7
18150even_gard=FNdim(10*16*4):odd_gard=FNdim(10*16*4)
18160FORI%=0TO9:FORJ%=0TO9:even_gard!(J%*16*4+I%*4)=A%(I%)ORB%(J%)<<3:NEXT:NEXT
18170FORI%=0TO9:FORJ%=0TO9:odd_gard!(I%*16*4+J%*4)=B%(I%)ORA%(J%)<<3:NEXT:NEXT
18180WHEN"D":xdiv%=xdiv%*2:ydiv%=ydiv%*2
18190DIM A%(4),B%(4)
18200A%()=0,&1,&21,&31,&33
18210B%()=0,&2,&12,&32,&33
18220even_gard=FNdim(5*8):odd_gard=FNdim(5*8)
18230FORI%=0TO4:FORJ%=0TO4:even_gard?(J%*8+I%)=A%(I%)ORB%(J%)<<2:NEXT:NEXT
18240FORI%=0TO4:FORJ%=0TO4:odd_gard?(I%*8+J%)=B%(I%)ORA%(J%)<<2:NEXT:NEXT
18250ENDCASE
18260ENDIF
18270PROCreduce(xmul%,xdiv%):PROCreduce(ymul%,ydiv%)
18280IFinfo% PRINT"Size ratios are x ";xmul%":"xdiv%" y "ymul%":"ydiv%
18290x%=sx%*xmul%/xdiv%+.9999:y%=sy%*ymul%/ydiv%+.9999:rows%=sy%
18300order%=x%*y%>sx%*sy%
18310code%=FNdim(8192):SP=13
18320IFcache% THEN
18330PROCcachesize(code%)
18340IFcachebytes% THEN
18350filesize%=EXT#c%-PTR#c%:IFcache%>filesize% cache%=filesize%
18360IFcachebytes%>0 IFcache%>cachebytes% cache%=cachebytes%
18370cacherows%=cache%
18380ELSE
18390filesize%=sy%*rowbytes%:IFcache%<rowbytes% cache%=rowbytes%
18400IFcache%>filesize% cache%=filesize%
18410cacherows%=striprows%:IFcacherows%<1 cacherows%=cache%DIVrowbytes%
18420cache%=cacherows%*rowbytes%
18430ENDIF
18440datacache%=FNcachedim(cache%):IFdatacache%=-1 datacache%=FNdim(cache%)
18450ENDIF
18460IFncol=255 IFm$<>"D" m$="R"
18470IFm$="R" OR(ncol=63 ANDm$="") THEN
18480SYS53,-1,3 TO,,J%:IFncol=255 AND MODE=m J%=ncol
18490IFncol=63 AND(m$=""ORm$="R") J%=ncol
18500IFJ%<>ncol PROCclose:ERROR42,"You must be in a "+STR$(ncol+1)+" colour mode to do this"
18510J%=ncol:IFJ%=63 J%=255
18520palette%=FNdim((J%+1)*4)
18530IFncol=255 THEN
18540SYS"ColourTrans_ReadPalette",-1,-1,palette%,256*4
18550FORI%=0TO255:palette%!(I%<<2)=palette%!(I%<<2)>>>8:NEXT
18560ELSE
18570IFncol=63 THEN
18580FORI%=0TO255
18590palette%!(I%<<2)=(I%AND7 OR (I%AND16)>>1)*17
18600palette%?(I%<<2 OR1)=(I%AND3 OR (I%AND&60)>>3)*17
18610palette%?(I%<<2 OR2)=(I%AND3 OR (I%AND8)>>1 OR (I%AND128)>>4)*17
18620NEXT
18630ELSE
18640FORI%=0TOncol:SYS"OS_ReadPalette",I%,16 TO ,,i%:palette%!(I%<<2)=i%>>>8:NEXT
18650ENDIF
18660ENDIF
18670t%=TRUE:k%=palette%+1:nk%=palette%+2
18680FORI%=0TOncol*4STEP4
18690IFpalette%?I%<>k%?I% OR palette%?I%<>nk%?I% t%=FALSE
18700NEXT
18710IFncol>16 IFt% m$="D"
18720IFncol=15 IFt% m$="T"
18730IFm$="R" THEN
18740IF sx%*xmul%/xdiv%*sy%*ymul%/ydiv%<200000 k%=3 ELSEk%=4
18750nk%=8-k%
18760t%=1<<nk%
18770mask%=t%-1
18780td2%=1<<nk%-1
18790step%=1<<(8-k%)
18800ncol%=ncol+1:IFncol%=64 ncol%=256
18810ict%=FNdim(2^(k%*3)*4-1)
18820IFcache%<8192*6 scratch%=FNdim(8192*6):scratchsz%=8192*6 ELSEscratch%=datacache%:scratchsz%=cache%
18830IFinfo% PRINT"Begin table generation with ";scratchsz%" bytes."
18840FORZ%=0TO2STEP2
18850P%=code%
18860[OPT Z%
18870.make%
18880STMFD r13!,{r14}
18890LDR r4,ict
18900MOV r2,#step%/2
18910.blueloop
18920MOV r1,#step%/2
18930.greenloop
18940MOV r0,#step%/2
18950.redloop
18970MOV r3,r0,LSR #nk%
18980MOV r14,r1,LSR #nk%
18990MOV r5,r2,LSR #nk%
19000ORR r3,r3,r14,LSL #k%
19010ORR r3,r3,r5,LSL #k%*2
19020BL devious
19030ADD r0,r0,#step%*2
19040CMP r0,#256
19050BCC redloop
19060ADD r1,r1,#step%
19070CMP r1,#256
19080BCC greenloop
19090ADD r2,r2,#step%
19100CMP r2,#256
19110BCC blueloop
19120LDMFD r13!,{pc}^
19130.ct DCD palette%
19140.min DCD code%+8192-256*2*4
19150.ict DCD ict%
19160.fsaad DCD scratch%
19170.fsalim DCD scratch%+scratchsz%
19180.devious
19190STMFD r13!,{r0,r1,r2,r3,r4,r8,r14}
19200BIC r0,r0,#(mask%<<1)+1 
19210BIC r1,r1,#mask%
19220BIC r2,r2,#mask%
19250MOV r5,#0
19260LDR r6,ct
19270MOV r9,#&ff0000
19280MOV r14,#&ff0000
19290LDR r12,min
19300.devloop
19310LDR r7,[r6,r5,LSL #2] 
19320MOV r8,r7,lsr #16 
19330BIC r10,r8,#mask% 
19340ADD r11,r2,#t% 
19350CMP r10,r2 
19360BEQ blueequal
19370SUBCC r10,r2,r8 
19380SUBCC r11,r11,r8 
19390SUBCS r10,r8,r11 
19400SUBCS r11,r8,r2 
19410MUL r3,r10,r10 
19420.doneblue
19430MUL r4,r11,r11 
19440MOV r8,r7,lsr #8
19450AND r8,r8,#255 
19460BIC r10,r8,#mask% 
19470ADD r11,r1,#t% 
19480CMP r10,r1  
19490BEQ greenequal
19500SUBCC r10,r1,r8 
19510SUBCC r11,r11,r8 
19520SUBCS r10,r8,r11 
19530SUBCS r11,r8,r1 
19540MLA r3,r10,r10,r3 
19550.donegreen
19560MLA r4,r11,r11,r4 
19570AND r8,r7,#255 
19590BIC r10,r8,#mask% 
19600ADD r11,r0,#t% 
19610CMP r10,r0 
19620BEQ redequal0
19630SUBCC r10,r0,r8 
19640SUBCC r11,r11,r8 
19650SUBCS r10,r8,r11 
19660SUBCS r11,r8,r0 
19670MLA r7,r10,r10,r3 
19680STR r7,[r12,r5,LSL #2] 
19690.donered0
19700MLA r7,r11,r11,r4 
19710CMP r7,r9 
19720MOVCC r9,r7 
19740ADD r7,r0,#t% 
19750BIC r10,r8,#mask% 
19760ADD r11,r7,#t% 
19770CMP r10,r7 
19780BEQ redequal1
19790SUBCC r10,r7,r8 
19800SUBCC r11,r11,r8 
19810SUBCS r10,r8,r11 
19820SUBCS r11,r8,r7 
19830MLA r3,r10,r10,r3 
19840.donered1
19850ADD r7,r5,#ncol%
19860STR r3,[r12,r7,LSL #2] 
19870MLA r7,r11,r11,r4 
19880CMP r7,r14 
19890MOVCC r14,r7 
19900ADD r5,r5,#1
19910CMP r5,#ncol%
19920BCC devloop
19930LDMFD r13!,{r0,r1,r2,r3,r4}
19950LDR r5,fsaad 
19960MOV r7,r5
19970MOV r10,#0
19980.calcnum0
19990LDMIA r12!,{r8,r11} 
20000CMP r8,r9 
20010STRLEB r10,[r7],#1
20020ADD r10,r10,#1
20030CMP r11,r9 
20040STRLEB r10,[r7],#1
20050ADD r10,r10,#1
20060LDMIA r12!,{r8,r11} 
20070CMP r8,r9 
20080STRLEB r10,[r7],#1
20090ADD r10,r10,#1
20100CMP r11,r9 
20110STRLEB r10,[r7],#1
20120ADD r10,r10,#1
20130CMP r10,#ncol%
20140BCC calcnum0
20150SUBS r10,r7,r5
20160SWIEQ 256+ASC"A"
20170CMP r10,#4 ;if<4 then
20180MOVCC r7,r5 ;reset list pointer
20190LDRCCB r5,[r7] ;first possible
20200LDRCCB r8,[r7,#1] ;second possible
20210ORRCC r5,r5,r8,lsl #8
20220LDRCCB r8,[r7,#2] ;third possible
20230ORRCC r5,r5,r8,lsl #16
20240ADD r5,r5,r10,lsl #24
20250BIC r10,r3,#1
20260STR r5,[r4,r10,LSL #2]
20270MOV r5,r7
20280MOV r10,#0
20290.calcnum1
20300LDMIA r12!,{r8,r11} 
20310CMP r8,r14 
20320STRLEB r10,[r7],#1
20330ADD r10,r10,#1
20340CMP r11,r14 
20350STRLEB r10,[r7],#1
20360ADD r10,r10,#1
20370LDMIA r12!,{r8,r11} 
20380CMP r8,r14 
20390STRLEB r10,[r7],#1
20400ADD r10,r10,#1
20410CMP r11,r14 
20420STRLEB r10,[r7],#1
20430ADD r10,r10,#1
20440CMP r10,#ncol%
20450BCC calcnum1
20460SUBS r10,r7,r5
20470SWIEQ 256+ASC"B"
20480CMP r10,#4 ;if<4 then
20490MOVCC r7,r5 
20500LDRCCB r5,[r7] 
20510LDRCCB r8,[r7,#1] 
20520ORRCC r5,r5,r8,lsl #8
20530LDRCCB r8,[r7,#2] 
20540ORRCC r5,r5,r8,lsl #16
20550ADD r5,r5,r10,lsl #24
20560ORR r10,r3,#1
20570STR r5,[r4,r10,LSL #2]
20580STR r7,fsaad
20590LDR r8,fsalim
20600CMP r7,r8
20610SWICS 256+ASC"!"
20620LDMFD r13!,{r8,pc}^
20630.redequal0
20640STR r3,[r12,r5,LSL #2] 
20650TST r8,#td2%
20660SUBNE r11,r8,r0 
20670SUBEQ r11,r11,r8 
20680B donered0
20690.redequal1
20700TST r8,#td2%
20710SUBNE r11,r8,r7 
20720SUBEQ r11,r11,r8 
20730B donered1
20740.greenequal
20750TST r8,#td2%
20760SUBNE r11,r8,r1 
20770SUBEQ r11,r11,r8 
20780B donegreen
20790.blueequal
20800MOV r3,#0 
20810TST r8,#td2%
20820SUBNE r11,r8,r2 
20830SUBEQ r11,r11,r8 
20840B doneblue
20850]
20860NEXT
20870I%=TIME:CALLmake%
20880IFinfo% PRINT"Generated 'r'";k%" tables for ";ncol%" colours using ";!fsaad-scratch%" bytes, taking "TIME-I%" cS"
20890safesubict%=FNdim(!fsaad-scratch%)
20900FORI%=0TO!fsaad-scratch%+4STEP4:safesubict%!I%=scratch%!I%:NEXT
20910FORI%=0TO2^(k%*3)*4-1STEP4:IF(ict%!I%>>>24)>3 ict%!I%=ict%!I%-scratch%+safesubict%
20920NEXT
20930ENDIF
20940ENDIF
20950IFfast% IFMODE<>0 MODE0
20970CASE m OF
20980WHEN -1:col=0
20990WHEN -3,-4,-5,-6,-7,-8:col=2
21000OTHERWISE
21010IFm$="D" IFncol=3 m$=""
21020col=0:IFncol>15 ORm$="C" ORm$="D" ORm$="R" col=2
21030IFncol=63 OR ncol=255 IFm$="D" col=0:ncol=256
21040ENDCASE
21050IFncol=1 THEN
21060CASE m$ OF
21070WHEN"C":col=0:x%=x%+1ANDNOT1
21080WHEN"D":col=0:x%=x%+3ANDNOT3
21090WHEN"T":col=0:x%=x%+1ANDNOT1
21100ENDCASE
21110ENDIF
21120IFsharpen%=TRUE sharpen%=24
21130DIM cl%(x%+7,col)
21140DIM xl%(x%+7,col),xp%(sx%+7,col)
21150DIM xl2%(x%+7,col)
21160IFsharpen% THEN
21170IForder% THEN
21180DIM rm%(sx%+7,col),rm1%(sx%+7,col),rm2%(sx%+7,col)
21190ELSE
21200DIM rm%(x%+7,col),rm1%(x%+7,col),rm2%(x%+7,col)
21210ENDIF
21220ENDIF
21230IFhist%ORequal% DIM vals%(256,col)
21240DIM nl%(x%+7,col)
21250totvals%=x%*(col+1)
21260totvals2%=sx%*(col+1)
21270FORZ=0TO2STEP2:P%=code%
21280CASE ncol OF
21290WHEN 2^24-1
21300[OPT Z
21310.div255
21320]
21330FORI%=0TO2^p6bits-1
21340[OPT Z
21350EQUD I%/(2^p6bits-1)*F
21360]
21370NEXT
21380[OPT Z
21390.fs%
21400STMFD SP !,{R14}
21410LDR R1,[R9,#5*8]:LDR R1,[R1] 
21420LDR R10,[R9,#4*8] 
21430LDR R11,[R9,#3*8] 
21440LDR R12,[R9,#2*8]:LDR R12,[R12] 
21450LDR R8,[R9,#8]:LDR R8,[R8] 
21460LDR R9,[R9]:LDR R9,[R9] 
21470LDR R4,[R10] 
21480LDR R5,[R10,#4] 
21490LDR R6,[R10,#8] 
21500ADR R7,div255
21510.fsloop
21520ADD R10,R10,R8 
21530CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
21540SUB R0,R4,R4,LSR #p6bits:ADD R0,R0,#1<<(bits-p6bits-1):MOV R0,R0,LSR #(bits-p6bits)
21550LDR R2,[R7,R0,LSL #2]:SUB R4,R4,R2
21560CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
21570SUB R3,R5,R5,LSR #p6bits:ADD R3,R3,#1<<(bits-p6bits-1):MOV R3,R3,LSR #(bits-p6bits):ORR R0,R0,R3,LSL #8
21580LDR R2,[R7,R3,LSL #2]:SUB R5,R5,R2
21590CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
21600SUB R3,R6,R6,LSR #p6bits:ADD R3,R3,#1<<(bits-p6bits-1):MOV R3,R3,LSR #(bits-p6bits):ORR R0,R0,R3,LSL #16
21610LDR R2,[R7,R3,LSL #2]:SUB R6,R6,R2
21620STRB R0,[R12]:MOV R0,R0,LSR #8:STRB R0,[R12,#1]:MOV R0,R0,LSR #8
21630STRB R0,[R12,#2]
21640]
21650IFm=-8 THEN
21660[OPT Z
21670ADD R12,R12,R1,LSL #2
21680]
21690ELSE
21700[OPT Z
21710ADD R12,R12,R1,LSL #1:ADD R12,R12,R1
21720]
21730ENDIF
21740IFdither% THEN
21750[OPT Z
21760ADD R0,R11,#4 
21770ADD R2,R4,R4,LSL #1 
21780LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
21790STR R3,[R11,-R8]
21800ADD R2,R4,R4,LSL #2 
21810LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
21820STR R3,[R11]
21830MOV R3,R4,ASR #4 
21840STR R3,[R11,R8]! 
21850RSB R2,R4,R4,LSL #3 
21860LDR R4,[R10] 
21870ADD R4,R4,R2,ASR #4 
21880ADD R2,R5,R5,LSL #1 
21890LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
21900STR R3,[R0,-R8]
21910MOV R3,R5,ASR #4 
21920STR R3,[R0,R8] 
21930ADD R2,R5,R5,LSL #2 
21940LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
21950STR R3,[R0],#4 
21960RSB R2,R5,R5,LSL #3 
21970LDR R5,[R10,#4] 
21980ADD R5,R5,R2,ASR #4 
21990ADD R2,R6,R6,LSL #1 
22000LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
22010STR R3,[R0,-R8]
22020ADD R2,R6,R6,LSL #2 
22030LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
22040STR R3,[R0]
22050MOV R3,R6,ASR #4 
22060STR R3,[R0,R8] 
22070RSB R2,R6,R6,LSL #3 
22080LDR R6,[R10,#8] 
22090ADD R6,R6,R2,ASR #4 
22100]
22110ELSE
22120[OPT Z
22130LDMIA R10,{R4,R5,R6}
22140]
22150ENDIF
22160[OPT Z
22170SUBS R9,R9,#1:BNE fsloop
22180LDMFD SP !,{PC}^
22190]
22200WHEN 2^15-1
22210[OPT Z
22220.div31
22230]
22240FORI%=0TO31
22250[OPT Z
22260EQUD I%/31*F
22270]
22280NEXT
22290[OPT Z
22300.fs%
22310STMFD SP !,{R14}
22320LDR R1,[R9,#5*8]:LDR R1,[R1] 
22330LDR R10,[R9,#4*8] 
22340LDR R11,[R9,#3*8] 
22350LDR R12,[R9,#2*8]:LDR R12,[R12] 
22360LDR R8,[R9,#8]:LDR R8,[R8] 
22370LDR R9,[R9]:LDR R9,[R9] 
22380LDR R4,[R10] 
22390LDR R5,[R10,#4] 
22400LDR R6,[R10,#8] 
22410ADR R7,div31
22420.fsloop
22430ADD R10,R10,R8 
22440CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
22450SUB R0,R4,R4,LSR #5:ADD R0,R0,#1<<(bits-6):MOV R0,R0,LSR #(bits-5)
22460LDR R2,[R7,R0,LSL #2]:SUB R4,R4,R2
22470CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
22480SUB R3,R5,R5,LSR #5:ADD R3,R3,#1<<(bits-6):MOV R3,R3,LSR #(bits-5):ORR R0,R0,R3,LSL #5
22490LDR R2,[R7,R3,LSL #2]:SUB R5,R5,R2
22500CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
22510SUB R3,R6,R6,LSR #5:ADD R3,R3,#1<<(bits-6):MOV R3,R3,LSR #(bits-5):ORR R0,R0,R3,LSL #10
22520LDR R2,[R7,R3,LSL #2]:SUB R6,R6,R2
22530STRB R0,[R12]:MOV R0,R0,LSR #8:STRB R0,[R12,#1]:ADD R12,R12,R1,LSL #1
22540]
22550IFdither% THEN
22560[OPT Z
22570ADD R0,R11,#4 
22580ADD R2,R4,R4,LSL #1 
22590LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
22600STR R3,[R11,-R8]
22610ADD R2,R4,R4,LSL #2 
22620LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
22630STR R3,[R11]
22640MOV R3,R4,ASR #4 
22650STR R3,[R11,R8]! 
22660RSB R2,R4,R4,LSL #3 
22670LDR R4,[R10] 
22680ADD R4,R4,R2,ASR #4 
22690ADD R2,R5,R5,LSL #1 
22700LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
22710STR R3,[R0,-R8]
22720MOV R3,R5,ASR #4 
22730STR R3,[R0,R8] 
22740ADD R2,R5,R5,LSL #2 
22750LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
22760STR R3,[R0],#4 
22770RSB R2,R5,R5,LSL #3 
22780LDR R5,[R10,#4] 
22790ADD R5,R5,R2,ASR #4 
22800ADD R2,R6,R6,LSL #1 
22810LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
22820STR R3,[R0,-R8]
22830ADD R2,R6,R6,LSL #2 
22840LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
22850STR R3,[R0]
22860MOV R3,R6,ASR #4 
22870STR R3,[R0,R8] 
22880RSB R2,R6,R6,LSL #3 
22890LDR R6,[R10,#8] 
22900ADD R6,R6,R2,ASR #4 
22910]
22920ELSE
22930[OPT Z
22940LDMIA R10,{R4,R5,R6}
22950]
22960ENDIF
22970[OPT Z
22980SUBS R9,R9,#1:BNE fsloop
22990LDMFD SP !,{PC}^
23000]
23010WHEN 256
23020[OPT Z
23030.div255
23040]
23050FORI%=0TO255
23060[OPT Z
23070EQUD I%/255*F
23080]
23090NEXT
23100[OPT Z
23120.fs%
23130STMFD SP !,{R14}
23140LDR R10,[R9,#4*8] 
23150ADR R7,div255
23160LDR R1,[R9,#5*8]:LDR R1,[R1] 
23170LDR R11,[R9,#3*8] 
23180LDR R12,[R9,#2*8]:LDR R12,[R12] 
23190LDR R8,[R9,#8]:LDR R8,[R8] 
23200LDR R9,[R9]:LDR R9,[R9] 
23210LDR R4,[R10],R8 
23220.fsloop
23230CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
23240SUB R0,R4,R4,LSR #8:ADD R0,R0,#1<<(bits-9):MOV R0,R0,LSR #(bits-8):STRB R0,[R12],R1
23250LDR R2,[R7,R0,LSL #2]
23260]
23270IFdither% THEN
23280[OPT Z
23290SUB R4,R4,R2 
23300MOVCS R4,#0
23310ADD R2,R4,R4,LSL #1 
23320LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
23330STR R3,[R11,-R8]
23340ADD R2,R4,R4,LSL #2 
23350LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
23360STR R3,[R11]
23370MOV R3,R4,ASR #4 
23380STR R3,[R11,R8]! 
23390RSB R2,R4,R4,LSL #3 
23400LDR R4,[R10],R8 
23410ADD R4,R4,R2,ASR #4 
23420]
23430ELSE
23440[OPT Z
23450LDR R4,[R10],R8
23460]
23470ENDIF
23480[OPT Z
23490SUBS R9,R9,#1:BNE fsloop
23500LDMFD SP !,{PC}^
23510]
23520WHEN 63,255
23530div15=P%:FORI%=0TO255*4STEP4
23540[OPT Z
23550EQUD (palette%!I%AND&FF)/255*F
23560EQUD (palette%!I%>>8AND&FF)/255*F
23570EQUD (palette%!I%>>16AND&FF)/255*F
23580]
23590NEXT
23600IFm$="R" THEN
23610[OPT Z
23620.ictloc EQUD ict%
23630]
23640ENDIF
23650[OPT Z
23660EQUD div15
23670.fs%
23680STMFD SP !,{R14}
23690LDR R1,[R9,#5*8]:LDR R1,[R1] 
23700LDR R10,[R9,#4*8] 
23710LDR R11,[R9,#3*8] 
23720LDR R12,[R9,#2*8]:LDR R12,[R12] 
23730LDR R8,[R9,#8]:LDR R8,[R8] 
23740LDR R9,[R9]:LDR R9,[R9] 
23750LDR R4,[R10] 
23760LDR R5,[R10,#4] 
23770LDR R6,[R10,#8] 
23780LDR R7,fs%-4
23790.fsloop
23800ADD R10,R10,R8 
23810]
23820CASE m$ OF
23830WHEN"T"
23840[OPT Z
23850CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
23860MOV R0,R4,LSR #(bits-4):CMP R0,#15:MOVCS R0,#15 
23870CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
23880MOV R3,R5,LSR #(bits-4):CMP R3,#15:MOVCS R3,#15:ORR R0,R0,R3,LSL #4 
23890CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
23900MOV R3,R6,LSR #(bits-4):CMP R3,#15:MOVCS R3,#15:ORR R0,R0,R3,LSL #8 
23910LDR R3,colmatchloc
23920LDRB R0,[R3,R0]
23930ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
23940LDR R2,[R3],#4:SUB R4,R4,R2
23950LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
23960]
23970WHEN"R"
23980PROCsrchdevlist
23990OTHERWISE
24000[OPT Z
24010CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
24020CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
24030CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
24040STMFD SP !,{R7,R8,R9}
24050MVN R2,#0
24060MOV R3,#&30<<23
24070.srch RSB R7,R3,#&20<<23
24080MOV R8,R6,LSR #bits-8
24090SUB R8,R8,R8,LSR #4
24100ADDS R7,R7,R8,LSL #23
24110MOVVSS R7,#&7F000000
24120MOVMI R7,#0
24130AND R7,R7,#&60000000
24140ADD R7,R7,R3
24150ADD R14,R7,R7,LSR #4
24160ADD R7,R14,R14,LSR #8
24170ADD R7,R7,R7,LSR #16
24180SUBS R8,R6,R14,LSR #31-bits
24190RSBLT R8,R8,#0
24200MOV R8,R8,LSR #bits/2
24210MUL R9,R8,R8
24220RSB R7,R3,#&20<<23
24230MOV R8,R5,LSR #bits-8
24240SUB R8,R8,R8,LSR #4
24250ADDS R7,R7,R8,LSL #23
24260MOVVSS R7,#&7F000000
24270MOVMI R7,#0
24280AND R7,R7,#&60000000
24290ADD R7,R3,R7
24300ADD R7,R7,R7,LSR #4
24310ORR R14,R14,R7,LSR #8
24320ADD R7,R7,R7,LSR #8
24330ADD R7,R7,R7,LSR #16
24340SUBS R8,R5,R7,LSR #31-bits
24350RSBLT R8,R8,#0
24360MOV R8,R8,LSR #bits/2
24370MUL R7,R8,R8
24380ADD R7,R7,R7,LSL #2
24390ADD R9,R9,R7,LSL #1
24400RSB R7,R3,#&20<<23
24410MOV R8,R4,LSR #bits-8
24420SUB R8,R8,R8,LSR #4
24430ADDS R7,R7,R8,LSL #23
24440MOVVSS R7,#&7F000000
24450MOVMI R7,#0
24460AND R7,R7,#&60000000
24470ADD R7,R3,R7
24480ADD R7,R7,R7,LSR #4
24490ORR R14,R14,R7,LSR #16
24500ADD R7,R7,R7,LSR #8
24510ADD R7,R7,R7,LSR #16
24520SUBS R8,R4,R7,LSR #31-bits
24530RSBLT R8,R8,#0
24540MOV R8,R8,LSR #bits/2
24550MUL R7,R8,R8
24560ADD R7,R7,R7,LSL #1
24570ADD R9,R9,R7
24580CMP R9,R2
24590MOVLS R2,R9
24600MOVLS R0,R14
24610SUBS R3,R3,#&10<<23
24620BGE srch
24630AND R7,R0,#&40000000
24640MOV R8,R7,LSR #23
24650AND R7,R0,#&600000
24660ORR R8,R8,R7,LSR #16
24670AND R7,R0,#&4000
24680ORR R8,R8,R7,LSR #10
24690AND R7,R0,#&20000000
24700ORR R8,R8,R7,LSR #26
24710AND R7,R0,#&3800
24720ORR R0,R8,R7,LSR #11
24730LDMFD SP !,{R7,R8,R9}
24740ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
24750LDR R2,[R3],#4:SUB R4,R4,R2
24760LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
24770]
24780ENDCASE
24790[OPT Z
24800STRB R0,[R12],R1
24810]
24820IFdither% THEN
24830[OPT Z
24840ADD R0,R11,#4 
24850ADD R2,R4,R4,LSL #1 
24860LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
24870STR R3,[R11,-R8]
24880ADD R2,R4,R4,LSL #2 
24890LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
24900STR R3,[R11]
24910MOV R3,R4,ASR #4 
24920STR R3,[R11,R8]! 
24930RSB R2,R4,R4,LSL #3 
24940LDR R4,[R10] 
24950ADD R4,R4,R2,ASR #4 
24960ADD R2,R5,R5,LSL #1 
24970LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
24980STR R3,[R0,-R8]
24990MOV R3,R5,ASR #4 
25000STR R3,[R0,R8] 
25010ADD R2,R5,R5,LSL #2 
25020LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
25030STR R3,[R0],#4 
25040RSB R2,R5,R5,LSL #3 
25050LDR R5,[R10,#4] 
25060ADD R5,R5,R2,ASR #4 
25070ADD R2,R6,R6,LSL #1 
25080LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
25090STR R3,[R0,-R8]
25100ADD R2,R6,R6,LSL #2 
25110LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
25120STR R3,[R0]
25130MOV R3,R6,ASR #4 
25140STR R3,[R0,R8] 
25150RSB R2,R6,R6,LSL #3 
25160LDR R6,[R10,#8] 
25170ADD R6,R6,R2,ASR #4 
25180]
25190ELSE
25200[OPT Z
25210LDMIA R10,{R4,R5,R6}
25220]
25230ENDIF
25240[OPT Z
25250SUBS R9,R9,#1:BNE fsloop
25260LDMFD SP !,{PC}^
25270]
25280WHEN 15
25290divtable=P%:CASE m$ OF
25300WHEN "D"
25310WHEN "R"
25320FORI%=0TO15*4STEP4
25330[OPT Z
25340EQUD (palette%!I%>>4AND&F)/bright%*F
25350EQUD (palette%!I%>>12AND&F)/bright%*F
25360EQUD (palette%!I%>>20AND&F)/bright%*F
25370]
25380NEXT
25390[OPT Z
25400.ictloc EQUD ict%
25410]
25420WHEN "T"
25430FORI%=0TO15
25440[OPT Z
25450EQUD I%/bright%*F
25460]
25470NEXT
25480OTHERWISE
25490FORI%=0TO7
25500[OPT Z
25510EQUD I%/(bright%DIV2)*F
25520]
25530NEXT
25540ENDCASE
25550[OPT Z
25560.fs%
25570STMFD SP !,{R14}
25580LDR R1,[R9,#5*8]:LDR R1,[R1] 
25590LDR R10,[R9,#4*8] 
25600LDR R11,[R9,#3*8] 
25610LDR R12,[R9,#2*8]:LDR R12,[R12] 
25620LDR R8,[R9,#8]:LDR R8,[R8] 
25630LDR R9,[R9]:LDR R9,[R9] 
25640]
25650IFm$="D" ORm$="R" THEN
25660[OPT Z
25670LDR R4,[R10] 
25680LDR R5,[R10,#4] 
25690LDR R6,[R10,#8] 
25700]
25710ELSE
25720[OPT Z
25730LDR R4,[R10],R8 
25740]
25750ENDIF
25760IFm$<>"D" THEN
25770[OPT Z
25780ADR R7,divtable
25790]
25800ENDIF
25810[OPT Z
25820.fsloop
25830]
25840CASE m$ OF
25850WHEN"R"
25860[OPT Z
25870ADD R10,R10,R8
25880]
25890PROCsrchdevlist
25900[OPT Z
25910MOV r3,r0
25920]
25930WHEN "D"
25940[OPT Z
25950ADD R10,R10,R8 
25960MOV R3,#0
25970CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
25980CMP R4,#F>>1 
25990SUBCS R4,R4,#F:ORRCS R3,R3,#1
26000CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
26010CMP R5,#F>>1 
26020SUBCS R5,R5,#F:ORRCS R3,R3,#2
26030CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
26040CMP R6,#F>>1 
26050SUBCS R6,R6,#F:ORRCS R3,R3,#4
26060]
26070WHEN "T"
26080[OPT Z
26090CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
26100RSB R3,R4,R4,LSL #4:ADD R3,R3,#F>>1:MOV R3,R3,LSR #bits 
26110LDR R2,[R7,R3,LSL #2] 
26120SUB R4,R4,R2 
26130]
26140OTHERWISE
26150[OPT Z
26160CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
26170RSB R3,R4,R4,LSL #3:ADD R3,R3,#F>>1:MOV R3,R3,LSR #bits 
26180LDR R2,[R7,R3,LSL #2] 
26190SUB R4,R4,R2 
26200]
26210ENDCASE
26220[OPT Z
26230MOV R2,R12,LSR #1
26240TST R12,#1
26250LDRB R0,[R2]
26260ANDEQ R0,R0,#&F0:ORREQ R0,R0,R3
26270ANDNE R0,R0,#&0F:ORRNE R0,R0,R3,LSL #4
26280STRB R0,[R2]
26290ADD R12,R12,R1
26300]
26310IFm$="D" ORm$="R" THEN
26320IFdither% THEN
26330[OPT Z
26340ADD R0,R11,#4 
26350ADD R2,R4,R4,LSL #1 
26360LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
26370STR R3,[R11,-R8]
26380ADD R2,R4,R4,LSL #2 
26390LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
26400STR R3,[R11]
26410MOV R3,R4,ASR #4 
26420STR R3,[R11,R8]! 
26430RSB R2,R4,R4,LSL #3 
26440LDR R4,[R10] 
26450ADD R4,R4,R2,ASR #4 
26460ADD R2,R5,R5,LSL #1 
26470LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
26480STR R3,[R0,-R8]
26490MOV R3,R5,ASR #4 
26500STR R3,[R0,R8] 
26510ADD R2,R5,R5,LSL #2 
26520LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
26530STR R3,[R0],#4 
26540RSB R2,R5,R5,LSL #3 
26550LDR R5,[R10,#4] 
26560ADD R5,R5,R2,ASR #4 
26570ADD R2,R6,R6,LSL #1 
26580LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
26590STR R3,[R0,-R8]
26600ADD R2,R6,R6,LSL #2 
26610LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
26620STR R3,[R0]
26630MOV R3,R6,ASR #4 
26640STR R3,[R0,R8] 
26650RSB R2,R6,R6,LSL #3 
26660LDR R6,[R10,#8] 
26670ADD R6,R6,R2,ASR #4 
26680]
26690ELSE
26700[OPT Z
26710LDMIA R10,{R4,R5,R6}
26720]
26730ENDIF
26740ELSE
26750IFdither% THEN
26760[OPT Z
26770ADD R2,R4,R4,LSL #1 
26780LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
26790STR R3,[R11,-R8]
26800ADD R2,R4,R4,LSL #2 
26810LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
26820STR R3,[R11]
26830MOV R3,R4,ASR #4 
26840STR R3,[R11,R8]! 
26850RSB R2,R4,R4,LSL #3 
26860LDR R4,[R10],R8 
26870ADD R4,R4,R2,ASR #4 
26880]
26890ELSE
26900[OPT Z
26910LDR R4,[R10],R8
26920]
26930ENDIF
26940ENDIF
26950[OPT Z
26960SUBS R9,R9,#1:BNE fsloop
26970LDMFD SP !,{PC}^
26980]
26990WHEN 3
27000divtable=P%:CASE m$ OF
27010WHEN "C"
27020WHEN "R"
27030FORI%=0TO3*4STEP4
27040[OPT Z
27050EQUD (palette%!I%>>4AND&F)/bright%*F
27060EQUD (palette%!I%>>12AND&F)/bright%*F
27070EQUD (palette%!I%>>20AND&F)/bright%*F
27080]
27090NEXT
27100OTHERWISE
27110[OPT Z
27120EQUD 0
27130EQUD 1/(bright%DIV4)*F
27140EQUD 2/(bright%DIV4)*F
27150EQUD F
27160]
27170ENDCASE
27180[OPT Z
27190.fs%
27200STMFD SP !,{R14}
27210LDR R1,[R9,#5*8]:LDR R1,[R1] 
27220LDR R10,[R9,#4*8] 
27230LDR R11,[R9,#3*8] 
27240LDR R12,[R9,#2*8] 
27250LDR R12,[R12] 
27260LDR R8,[R9,#8] 
27270LDR R8,[R8] 
27280LDR R9,[R9] 
27290LDR R9,[R9] 
27300]
27310IFm$="C" ORm$="R" THEN
27320[OPT Z
27330LDR R4,[R10] 
27340LDR R5,[R10,#4] 
27350LDR R6,[R10,#8] 
27360]
27370ELSE
27380[OPT Z
27390LDR R4,[R10],R8 
27400]
27410ENDIF
27420[OPT Z
27430.fsloop
27440]
27450IFm$<>"C"THEN
27460[OPT Z
27470ADR R7,divtable
27480]
27490ENDIF
27500CASE m$ OF
27510WHEN"C"
27520[OPT Z
27530ADD R10,R10,R8 
27540CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
27550CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
27560CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
27570MOV R3,#0 
27580CMP R4,#F>>1:ORRCS R3,R3,#1
27590CMP R5,#F>>1:ORRCS R3,R3,#2
27600CMP R6,#F>>1:ORRCS R3,R3,#4
27610CMP R3,#6:MOVEQ R3,#1:BEQ octcyan
27620BCS octwhite
27630CMP R3,#4:BEQ octblue
27640MOVCS R3,#2:BCS octmagenta
27650CMP R3,#2:BEQ octgreen
27660BCS octyellow
27670CMP R3,#0:BEQ octblack
27680.octred
27690RSB R0,R4,#F 
27700CMP R5,R0 
27710BLT octred1
27720CMP R5,R6 
27730MOVGE R3,#3 
27740MOVLT R3,#2 
27750B octconvert
27760.octred1
27770CMP R0,R6 
27780MOVGE R3,#0 
27790MOVLT R3,#2 
27800B octconvert
27810.octgreen
27820RSB R0,R5,#F 
27830CMP R0,R4 
27840BLT octgreen1
27850CMP R0,R6 
27860MOVGE R3,#0 
27870MOVLT R3,#1 
27880B octconvert
27890.octgreen1
27900CMP R4,R6 
27910MOVGE R3,#3 
27920MOVLT R3,#1 
27930B octconvert
27940.octblue
27950RSB R0,R6,#F 
27960CMP R0,R4 
27970BLT octblue1
27980CMP R0,R5 
27990MOVGE R3,#0 
28000MOVLT R3,#1 
28010B octconvert
28020.octblue1
28030CMP R4,R5 
28040MOVGE R3,#2 
28050MOVLT R3,#1 
28060B octconvert
28070.octwhite
28080CMP R4,R5 
28090BLT octwhite1
28100CMP R5,R6 
28110MOVGE R3,#3 
28120MOVLT R3,#2 
28130B octconvert
28140.octwhite1
28150CMP R4,R6 
28160MOVGE R3,#3 
28170MOVLT R3,#1 
28180.octconvert
28190CMP R3,#1 
28200.octcyan
28210SUBEQ R5,R5,#F
28220SUBEQ R6,R6,#F
28230.octmagenta
28240CMP R3,#2 
28250SUBEQ R4,R4,#F
28260SUBEQ R6,R6,#F
28270.octyellow
28280CMP R3,#3 
28290SUBEQ R4,R4,#F
28300SUBEQ R5,R5,#F
28310.octblack
28320MOV R2,R12,LSR #2
28330AND R7,R12,#3:MOV R7,R7,LSL #1
28340MOV R14,#3
28350LDRB R0,[R2]:BIC R0,R0,R14,LSL R7:ORR R0,R0,R3,LSL R7:STRB R0,[R2]
28360ADD R12,R12,R1
28370]
28380WHEN"R"
28390[OPT Z
28400ADD R10,R10,R8
28410CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
28420CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
28430CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
28440STMFD SP !,{R8,R9,R10}
28450MVN R2,#0
28460MOV R3,#3
28470.srch ADD R14,R3,R3,LSL #1
28480ADD R14,R7,R14,LSL #2
28490LDMIA R14,{R8,R9,R10}
28500SUBS R8,R4,R8
28510RSBMI R8,R8,#0
28520SUBS R9,R5,R9
28530RSBMI R9,R9,#0
28540SUBS R10,R6,R10
28550RSBMI R10,R10,#0
28560MOV R14,R8,LSR #bits/2
28570MUL R8,R14,R14
28580MOV R14,R9,LSR #bits/2
28590MUL R9,R14,R14
28600MOV R14,R10,LSR #bits/2
28610MUL R10,R14,R14
28620ADD R9,R9,R9,LSL #2
28630ADD R8,R8,R8,LSL #1
28640ADD R14,R8,R9,LSL #1
28650ADD R14,R14,R10
28660CMP R14,R2
28670MOVCC R2,R14
28680MOVCC R0,R3
28690SUBS R3,R3,#1
28700BPL srch
28710LDMFD SP !,{R8,R9,R10}
28720ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
28730LDR R2,[R3],#4:SUB R4,R4,R2
28740LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
28750MOV R3,R0
28760MOV R2,R12,LSR #2
28770AND R7,R12,#3:MOV R7,R7,LSL #1
28780MOV R14,#3
28790LDRB R0,[R2]:BIC R0,R0,R14,LSL R7:ORR R0,R0,R3,LSL R7:STRB R0,[R2]
28800ADD R12,R12,R1
28810]
28820OTHERWISE
28830[OPT Z
28840CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
28850RSB R3,R4,R4,LSL #2:ADD R3,R3,#F>>1:MOV R3,R3,LSR#bits 
28860LDR R2,[R7,R3,LSL #2] 
28870SUB R4,R4,R2 
28880MOV R2,R12,LSR #2
28890AND R5,R12,#3:MOV R5,R5,LSL #1
28900MOV R6,#3
28910LDRB R0,[R2]:BIC R0,R0,R6,LSL R5:ORR R0,R0,R3,LSL R5:STRB R0,[R2]
28920ADD R12,R12,R1
28930]
28940ENDCASE
28950IFm$="C" ORm$="R" THEN
28960IFdither% THEN
28970[OPT Z
28980ADD R0,R11,#4 
28990ADD R2,R4,R4,LSL #1 
29000LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
29010STR R3,[R11,-R8]
29020ADD R2,R4,R4,LSL #2 
29030LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
29040STR R3,[R11]
29050MOV R3,R4,ASR #4 
29060STR R3,[R11,R8]! 
29070RSB R2,R4,R4,LSL #3 
29080LDR R4,[R10] 
29090ADD R4,R4,R2,ASR #4 
29100ADD R2,R5,R5,LSL #1 
29110LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
29120STR R3,[R0,-R8]
29130MOV R3,R5,ASR #4 
29140STR R3,[R0,R8] 
29150ADD R2,R5,R5,LSL #2 
29160LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
29170STR R3,[R0],#4 
29180RSB R2,R5,R5,LSL #3 
29190LDR R5,[R10,#4] 
29200ADD R5,R5,R2,ASR #4 
29210ADD R2,R6,R6,LSL #1 
29220LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
29230STR R3,[R0,-R8]
29240ADD R2,R6,R6,LSL #2 
29250LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
29260STR R3,[R0]
29270MOV R3,R6,ASR #4 
29280STR R3,[R0,R8] 
29290RSB R2,R6,R6,LSL #3 
29300LDR R6,[R10,#8] 
29310ADD R6,R6,R2,ASR #4 
29320]
29330ELSE
29340[OPT Z
29350LDMIA R10,{R4,R5,R6}
29360]
29370ENDIF
29380ELSE
29390IFdither% THEN
29400[OPT Z
29410ADD R2,R4,R4,LSL #1 
29420LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
29430STR R3,[R11,-R8]
29440ADD R2,R4,R4,LSL #2 
29450LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
29460STR R3,[R11]
29470MOV R3,R4,ASR #4 
29480STR R3,[R11,R8]! 
29490RSB R2,R4,R4,LSL #3 
29500LDR R4,[R10],R8 
29510ADD R4,R4,R2,ASR #4 
29520]
29530ELSE
29540[OPT Z
29550LDR R4,[R10],R8
29560]
29570ENDIF
29580ENDIF
29590[OPT Z
29600SUBS R9,R9,#1:BNE fsloop
29610LDMFD SP !,{PC}^
29620]
29630WHEN 1
29640CASE m$ OF
29650WHEN"C"
29660[OPT Z
29670.divtable EQUD 0
29680EQUD (1-black%/256*2)/16*F
29690EQUD (2-black%/256*4)/16*F
29700EQUD (3-black%/256*5)/16*F
29710EQUD (4-black%/256*6)/16*F
29720EQUD (5-black%/256*7)/16*F
29730EQUD (6-black%/256*8)/16*F
29740EQUD (7-black%/256*8)/16*F
29750EQUD (8-black%/256*8)/16*F
29760EQUD (9-black%/256*8)/16*F
29770EQUD (10-black%/256*8)/16*F
29780EQUD (11-black%/256*7)/16*F
29790EQUD (12-black%/256*6)/16*F
29800EQUD (13-black%/256*5)/16*F
29810EQUD (14-black%/256*4)/16*F
29820EQUD (15-black%/256*2)/16*F
29830EQUD F
29840.evenrow_gard DCD even_gard
29850.oddrow_gard DCD odd_gard
29860.rowinc DCD 0
29870.fs%
29880STMFD SP !,{R14}
29890LDR R1,[R9,#5*8]:LDR R1,[R1] 
29900LDR R10,[R9,#4*8] 
29910LDR R11,[R9,#3*8] 
29920LDR R12,[R9,#2*8] 
29930LDR R12,[R12] 
29940LDR R8,[R9,#8] 
29950LDR R8,[R8] 
29960LDR R9,[R9] 
29970LDR R9,[R9] 
29980LDR R4,[R10],R8 
29990TEQ R8,#0
30000LDRPL R6,evenrow_gard
30010LDRMI R6,oddrow_gard
30020MOV R1,R1,LSL #1
30030LDR R7,rowinc
30040ADR R14,divtable
30050.fsloop
30060CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
30070ADD R5,R4,#F>>5 
30080MOVS R5,R5,LSR #bits-4 
30090LDRNE R0,[R14,R5,LSL #2]
30100SUBNE R4,R4,R0 
30110]
30120IFdither% THEN
30130[OPT Z
30140ADD R2,R4,R4,LSL #1 
30150LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
30160STR R3,[R11,-R8]
30170ADD R2,R4,R4,LSL #2 
30180LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
30190STR R3,[R11]
30200MOV R3,R4,ASR #4 
30210STR R3,[R11,R8]! 
30220RSB R2,R4,R4,LSL #3 
30230LDR R4,[R10],R8 
30240ADDS R4,R4,R2,ASR #4 
30250]
30260ELSE
30270[OPT Z
30280LDR R4,[R10],R8
30290]
30300ENDIF
30310[OPT Z
30320CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
30330ADD R3,R4,#F>>5 
30340MOVS R3,R3,LSR #bits-4 
30350LDRNE R0,[R14,R3,LSL #2]
30360SUBNE R4,R4,R0 
30370ORR R5,R5,R3,LSL #5:LDR R3,[R6,R5,LSL #2] 
30380MOV R2,R12,LSR #1:STRB R3,[R2],R7:MOV R3,R3,LSR #8:STRB R3,[R2],R7
30390MOV R3,R3,LSR #8:STRB R3,[R2],R7:MOV R3,R3,LSR #8:STRB R3,[R2]
30400ADD R12,R12,R1
30410]
30420IFdither% THEN
30430[OPT Z
30440ADD R2,R4,R4,LSL #1 
30450LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
30460STR R3,[R11,-R8]
30470ADD R2,R4,R4,LSL #2 
30480LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
30490STR R3,[R11]
30500MOV R3,R4,ASR #4 
30510STR R3,[R11,R8]! 
30520RSB R2,R4,R4,LSL #3 
30530LDR R4,[R10],R8 
30540ADD R4,R4,R2,ASR #4 
30550]
30560ELSE
30570[OPT Z
30580LDR R4,[R10],R8
30590]
30600ENDIF
30610[OPT Z
30620SUBS R9,R9,#2:BNE fsloop
30630LDMFD SP !,{PC}^
30640]
30650WHEN"T"
30660[OPT Z
30670.divtable EQUD 0
30680EQUD (1-black%/256*2)/9*F
30690EQUD (2-black%/256*4)/9*F
30700EQUD (3-black%/256*5)/9*F
30710EQUD (4-black%/256*6)/9*F
30720EQUD (5-black%/256*6)/9*F
30730EQUD (6-black%/256*5)/9*F
30740EQUD (7-black%/256*4)/9*F
30750EQUD (8-black%/256*2)/9*F
30760EQUD F
30770.evenrow_gard DCD even_gard
30780.oddrow_gard DCD odd_gard
30790.rowinc DCD 0
30800.fs%
30810STMFD SP !,{R14}
30820LDR R1,[R9,#5*8]:LDR R1,[R1] 
30830LDR R10,[R9,#4*8] 
30840LDR R11,[R9,#3*8] 
30850LDR R12,[R9,#2*8] 
30860LDR R12,[R12] 
30870LDR R8,[R9,#8] 
30880LDR R8,[R8] 
30890LDR R9,[R9] 
30900LDR R9,[R9] 
30910LDR R4,[R10],R8 
30920TEQ R8,#0
30930LDRPL R6,evenrow_gard
30940LDRMI R6,oddrow_gard
30950MOV R1,R1,LSL #1
30960LDR R7,rowinc
30970ADR R14,divtable
30980.fsloop
30990CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
31000ADD R5,R4,#F>>4 
31010ADD R5,R5,R5,LSL #3 
31020MOVS R5,R5,LSR #bits 
31030LDRNE R0,[R14,R5,LSL #2]
31040SUBNE R4,R4,R0 
31050]
31060IFdither% THEN
31070[OPT Z
31080ADD R2,R4,R4,LSL #1 
31090LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
31100STR R3,[R11,-R8]
31110ADD R2,R4,R4,LSL #2 
31120LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
31130STR R3,[R11]
31140MOV R3,R4,ASR #4 
31150STR R3,[R11,R8]! 
31160RSB R2,R4,R4,LSL #3 
31170LDR R4,[R10],R8 
31180ADDS R4,R4,R2,ASR #4 
31190]
31200ELSE
31210[OPT Z
31220LDR R4,[R10],R8
31230]
31240ENDIF
31250[OPT Z
31260CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
31270ADD R3,R4,#F>>4 
31280ADD R3,R3,R3,LSL #3 
31290MOVS R3,R3,LSR #bits 
31300LDRNE R0,[R14,R3,LSL #2]
31310SUBNE R4,R4,R0 
31320ORR R5,R5,R3,LSL #4:LDR R5,[R6,R5,LSL #2] 
31330MOV R2,R12,LSR #1
31340AND R3,R5,#&3F
31350STRB R3,[R2],R7
31360MOV R3,R5,LSR #6:AND R3,R3,#&3F
31370STRB R3,[R2],R7
31380MOV R3,R5,LSR #12:STRB R3,[R2]
31390ADD R12,R12,R1
31400]
31410IFdither% THEN
31420[OPT Z
31430ADD R2,R4,R4,LSL #1 
31440LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
31450STR R3,[R11,-R8]
31460ADD R2,R4,R4,LSL #2 
31470LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
31480STR R3,[R11]
31490MOV R3,R4,ASR #4 
31500STR R3,[R11,R8]! 
31510RSB R2,R4,R4,LSL #3 
31520LDR R4,[R10],R8 
31530ADD R4,R4,R2,ASR #4 
31540]
31550ELSE
31560[OPT Z
31570LDR R4,[R10],R8
31580]
31590ENDIF
31600[OPT Z
31610SUBS R9,R9,#2:BNE fsloop
31620LDMFD SP !,{PC}^
31630]
31640WHEN"D"
31650[OPT Z
31660.divtable EQUD 0
31670EQUD (1-black%/256*2)/4*F
31680EQUD (2-black%/256*4)/4*F
31690EQUD (3-black%/256*2)/4*F
31700EQUD F
31710.evenrow_gard DCD even_gard
31720.oddrow_gard DCD odd_gard
31730.rowinc DCD 0
31740.fs%
31750STMFD SP !,{R14}
31760LDR R1,[R9,#5*8]:LDR R1,[R1] 
31770LDR R10,[R9,#4*8] 
31780LDR R11,[R9,#3*8] 
31790LDR R12,[R9,#2*8] 
31800LDR R12,[R12] 
31810LDR R8,[R9,#8] 
31820LDR R8,[R8] 
31830LDR R9,[R9] 
31840LDR R9,[R9] 
31850LDR R4,[R10],R8 
31860TEQ R8,#0
31870LDRPL R6,evenrow_gard
31880LDRMI R6,oddrow_gard
31890MOV R1,R1,LSL #1
31900LDR R7,rowinc
31910ADR R14,divtable
31920.fsloop
31930CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
31940ADD R5,R4,#F>>3 
31950MOVS R5,R5,LSR #bits-2 
31960LDRNE R0,[R14,R5,LSL #2]
31970SUBNE R4,R4,R0 
31980]
31990IFdither% THEN
32000[OPT Z
32010ADD R2,R4,R4,LSL #1 
32020LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
32030STR R3,[R11,-R8]
32040ADD R2,R4,R4,LSL #2 
32050LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
32060STR R3,[R11]
32070MOV R3,R4,ASR #4 
32080STR R3,[R11,R8]! 
32090RSB R2,R4,R4,LSL #3 
32100LDR R4,[R10],R8 
32110ADDS R4,R4,R2,ASR #4 
32120]
32130ELSE
32140[OPT Z
32150LDR R4,[R10],R8
32160]
32170ENDIF
32180[OPT Z
32190CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
32200ADD R3,R4,#F>>3 
32210MOVS R3,R3,LSR #bits-2 
32220LDRNE R0,[R14,R3,LSL #2]
32230SUBNE R4,R4,R0 
32240ORR R5,R5,R3,LSL #3:LDRB R5,[R6,R5] 
32250MOV R2,R12,LSR #2
32260TST R12,#2
32270AND R3,R5,#&F:LDRB R0,[R2]
32280ANDEQ R0,R0,#&F0:ORREQ R0,R0,R3
32290ANDNE R0,R0,#&0F:ORRNE R0,R0,R3,LSL #4
32300STRB R0,[R2],R7
32310MOV R3,R5,LSR #4:LDRB R0,[R2]
32320ANDEQ R0,R0,#&F0:ORREQ R0,R0,R3
32330ANDNE R0,R0,#&0F:ORRNE R0,R0,R3,LSL #4
32340STRB R0,[R2]
32350ADD R12,R12,R1
32360]
32370IFdither% THEN
32380[OPT Z
32390ADD R2,R4,R4,LSL #1 
32400LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
32410STR R3,[R11,-R8]
32420ADD R2,R4,R4,LSL #2 
32430LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
32440STR R3,[R11]
32450MOV R3,R4,ASR #4 
32460STR R3,[R11,R8]! 
32470RSB R2,R4,R4,LSL #3 
32480LDR R4,[R10],R8 
32490ADD R4,R4,R2,ASR #4 
32500]
32510ELSE
32520[OPT Z
32530LDR R4,[R10],R8
32540]
32550ENDIF
32560[OPT Z
32570SUBS R9,R9,#2:BNE fsloop
32580LDMFD SP !,{PC}^
32590]
32600OTHERWISE
32610[OPT Z
32620.fs%
32630STMFD SP !,{R14}
32640LDR R1,[R9,#5*8]:LDR R1,[R1] 
32650LDR R10,[R9,#4*8] 
32660LDR R11,[R9,#3*8] 
32670LDR R12,[R9,#2*8] 
32680LDR R12,[R12] 
32690LDR R8,[R9,#8] 
32700LDR R8,[R8] 
32710LDR R9,[R9] 
32720LDR R9,[R9] 
32730LDR R4,[R10],R8 
32740MOV R7,#1 
32750.fsloop
32760CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
32770]
32780IFblack% THEN
32790[OPT Z
32800MOV R2,R12,LSR #3
32810AND R5,R12,#7:MOV R6,#1
32820LDRB R0,[R2,#-(x%+7>>3)] 
32830SUB R3,R4,#F 
32840CMP R7,#0
32850ADDNE R4,R4,#black%<<(bits-8) 
32860ADDEQ R3,R3,#black%<<(bits-8) 
32870TST R0,R6,LSL R5
32880ADDNE R4,R4,#black%<<(bits-8) 
32890ADDEQ R3,R3,#black%<<(bits-8) 
32900MOVS R0,R3:RSBMI R0,R3,#0 
32910CMP R4,R0 
32920MOVCC R3,#0 
32930MOVCS R4,R3:MOVCS R3,#1 
32940MOV R7,R3 
32950]
32960ELSE
32970[OPT Z
32980ADD R3,R4,#F>>1:MOV R3,R3,LSR #bits 
32990SUB R4,R4,R3,LSL #bits
33000MOV R2,R12,LSR #3
33010AND R5,R12,#7:MOV R6,#1
33020]
33030ENDIF
33040[OPT Z
33050LDRB R0,[R2]:BIC R0,R0,R6,LSL R5:ORR R0,R0,R3,LSL R5
33060STRB R0,[R2]
33070ADD R12,R12,R1
33080]
33090IFdither% THEN
33100[OPT Z
33110ADD R2,R4,R4,LSL #1 
33120LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
33130STR R3,[R11,-R8]
33140ADD R2,R4,R4,LSL #2 
33150LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
33160STR R3,[R11]
33170MOV R3,R4,ASR #4 
33180STR R3,[R11,R8]! 
33190RSB R2,R4,R4,LSL #3 
33200LDR R4,[R10],R8 
33210ADD R4,R4,R2,ASR #4 
33220]
33230ELSE
33240[OPT Z
33250LDR R4,[R10],R8
33260]
33270ENDIF
33280[OPT Z
33290SUBS R9,R9,#1:BNE fsloop
33300LDMFD SP !,{PC}^
33310]
33320ENDCASE
33330ENDCASE
33340[OPT Z
33350.sxloc DCD sx%
33360]
33370CASE col OF
33380WHEN 0
33390IFinput<=8 THEN
33400[OPT Z
33410.mappix% 
33420LDR R0,sxloc 
33430LDR R1,[R9]:LDR R1,[R1] 
33440LDR R2,[R9,#3*8] 
33450LDR R5,[R9,#4*8] 
33460MOV R8,#0
33470.mappixlp
33480LDRB R6,[R1],#step24
33490]
33500ENDIF
33510CASE input OF
33520WHEN 8
33530IFham THEN
33540[OPT Z
33550ADR R9,ltable
33560MOVS R7,R6,LSR #4:AND R6,R6,#15
33570LDREQ R10,[R2,R6,LSL #2]:MOVEQ R11,R10:MOVEQ R12,R10
33580CMP R7,#1:LDREQ R12,[R9,R6,LSL #2]
33590CMP R7,#2:LDREQ R10,[R9,R6,LSL #2]
33600CMP R7,#3:LDREQ R11,[R9,R6,LSL #2]
33610ADD R3,R10,R11
33620ADD R3,R3,R12
33630MOV R3,R3,LSR #2
33640STMIA R5!,{R3}
33650SUBS R0,R0,#1:BNE mappixlp
33660MOVS PC,R14
33670.ltable
33680]
33690FORI%=0TO15
33700[OPT Z
33710EQUD I%/15*F
33720]
33730NEXT
33740ELSE
33750IFhpredict%=2 THEN
33760[OPT Z
33770ADD R6,R6,R8
33780AND R6,R6,#255
33790MOV R8,R6
33800]
33810ENDIF
33820[OPT Z
33830LDR R7,[R2,R6,LSL #2]:STR R7,[R5],#4
33840SUBS R0,R0,#1:BNE mappixlp
33850MOVS PC,R14
33860]
33870ENDIF
33880WHEN 4
33890IFbigendianbits THEN
33900[OPT Z
33910MOV R10,R6,LSR #4
33920LDR R7,[R2,R10,LSL #2]
33930AND R10,R6,#&F
33940]
33950ELSE
33960[OPT Z
33970AND R10,R6,#&F
33980LDR R7,[R2,R10,LSL #2]
33990MOV R10,R6,LSR #4
34000]
34010ENDIF
34020[OPT Z
34030LDR R8,[R2,R10,LSL #2]:STMIA R5!,{R7,R8}
34040SUBS R0,R0,#2:BHI mappixlp
34050MOVS PC,R14
34060]
34070WHEN 2
34080IFbigendianbits THEN
34090[OPT Z
34100MOV R10,R6,LSR #6
34110LDR R7,[R2,R10,LSL #2]
34120AND R10,R6,#&30
34130LDR R8,[R2,R10,LSR #2]
34140AND R10,R6,#&C
34150LDR R9,[R2,R10]
34160AND R10,R6,#&3
34170]
34180ELSE
34190[OPT Z
34200AND R10,R6,#&3
34210LDR R7,[R2,R10,LSL #2]
34220AND R10,R6,#&C
34230LDR R8,[R2,R10]
34240AND R10,R6,#&30
34250LDR R9,[R2,R10,LSR #2]
34260MOV R10,R6,LSR #6
34270]
34280ENDIF
34290[OPT Z
34300LDR R10,[R2,R10,LSL #2]:STMIA R5!,{R7,R8,R9,R10}
34310SUBS R0,R0,#4:BHI mappixlp
34320MOVS PC,R14
34330]
34340WHEN 1
34350IFbigendianbits THEN
34360[OPT Z
34370AND R10,R6,#&80
34380LDR R7,[R2,R10,LSR #5]
34390AND R10,R6,#&40
34400LDR R8,[R2,R10,LSR #4]
34410AND R10,R6,#&20
34420LDR R9,[R2,R10,LSR #3]
34430AND R10,R6,#&10
34440LDR R10,[R2,R10,LSR #2]:STMIA R5!,{R7,R8,R9,R10}
34450AND R10,R6,#&8
34460LDR R7,[R2,R10,LSR #1]
34470AND R10,R6,#&4
34480LDR R8,[R2,R10]
34490AND R10,R6,#&2
34500LDR R9,[R2,R10,LSL #1]
34510AND R10,R6,#&1
34520]
34530ELSE
34540[OPT Z
34550AND R10,R6,#&1
34560LDR R7,[R2,R10,LSL #2]
34570AND R10,R6,#&2
34580LDR R8,[R2,R10,LSL #1]
34590AND R10,R6,#&4
34600LDR R9,[R2,R10]
34610AND R10,R6,#&8
34620LDR R10,[R2,R10,LSR #1]:STMIA R5!,{R7,R8,R9,R10}
34630AND R10,R6,#&10
34640LDR R7,[R2,R10,LSR #2]
34650AND R10,R6,#&20
34660LDR R8,[R2,R10,LSR #3]
34670AND R10,R6,#&40
34680LDR R9,[R2,R10,LSR #4]
34690MOV R10,R6,LSR #7
34700]
34710ENDIF
34720[OPT Z
34730LDR R10,[R2,R10,LSL #2]:STMIA R5!,{R7,R8,R9,R10}
34740SUBS R0,R0,#8:BHI mappixlp
34750MOVS PC,R14
34760]
34770WHEN 16
34780[OPT Z
34790.mappix% 
34800LDR R0,sxloc 
34810LDR R1,[R9]:LDR R1,[R1] 
34820LDR R2,[R9,#8]:LDR R2,[R2] 
34830LDR R3,[R9,#4*8] 
34840LDR R4,[R9,#3*8] 
34850LDR R5,[R9,#2*8] 
34860LDR R6,[R9,#5*8] 
34870LDR R7,[R9,#6*8] 
34880LDR R8,[R9,#7*8] 
34890CMP R1,R2
34900ADDEQ R2,R2,#1
34910.mappixlp
34920LDRB R9,[R1],#step24:LDRB R10,[R2],#step24
34930LDR R9,[R6,R9,LSL #2]:LDR R10,[R7,R10,LSL #2]:ORR R9,R9,R10
34940AND R10,R9,#255:LDR R10,[R3,R10,LSL #2]
34950MOV R11,R9,LSR #8:AND R11,R11,#255:LDR R11,[R4,R11,LSL #2]
34960MOV R12,R9,LSR #16:LDR R12,[R5,R12,LSL #2]
34970ADD R10,R10,R11:ADD R10,R10,R12:STMIA R8!,{R10}
34980SUBS R0,R0,#1:BNE mappixlp
34990MOVS PC,R14
35000]
35010WHEN 24
35020[OPT Z
35030.mappix% 
35040LDR R0,sxloc 
35050LDR R1,[R9,#2*8]:LDR R1,[R1] 
35060LDR R2,[R9,#8]:LDR R2,[R2] 
35070LDR R3,[R9]:LDR R3,[R3] 
35080LDR R4,[R9,#5*8] 
35090LDR R5,[R9,#4*8] 
35100LDR R6,[R9,#3*8] 
35110LDR R7,[R9,#6*8] 
35120STMFD SP !,{R14}
35130MOV r11,#0:MOV R12,#0:MOV R14,#0
35140.mappixlp
35150LDRB R8,[R1],#step24:LDRB R9,[R2],#step24:LDRB R10,[R3],#step24
35160]
35170IFhpredict%=2 THEN
35180[OPT Z
35190ADD r8,r8,r11
35200AND r8,r8,#255
35210MOV r11,r8
35220ADD r9,r9,r12
35230AND r9,r9,#255
35240MOV r12,r9
35250ADD r10,r10,r14
35260AND r10,r10,#255
35270MOV r14,r10
35280]
35290ENDIF
35300[OPT Z
35310LDR R8,[R4,R8,LSL #2]:LDR R9,[R5,R9,LSL #2]:LDR R10,[R6,R10,LSL #2]
35320ADD R8,R8,R9:ADD R8,R8,R10:STR R8,[R7],#4
35330SUBS R0,R0,#1:BNE mappixlp
35340LDMFD SP !,{PC}^
35350]
35360WHEN 411
35370[OPT Z
35380.mappix% 
35390LDR R0,sxloc 
35400LDR R1,[R9]:LDR R1,[R1] 
35410LDR R4,[R9,#1*8] 
35420LDR R7,[R9,#8*8] 
35430.mappixlp
35440LDRB R8,[R1],#2 
35450LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
35460SUBS R0,R0,#1:BNE mappixlp
35470MOVS PC,R14
35480]
35490WHEN 422
35500[OPT Z
35510.mappix% 
35520LDR R0,sxloc 
35530LDR R1,[R9]:LDR R1,[R1] 
35540ADD R1,R1,#1 
35550LDR R4,[R9,#1*8] 
35560LDR R7,[R9,#8*8] 
35570.mappixlp
35580LDRB R8,[R1],#2 
35590LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
35600SUBS R0,R0,#1:BNE mappixlp
35610MOVS PC,R14
35620]
35630WHEN 555
35640[OPT Z
35650.mappix% 
35660LDR R0,sxloc 
35670LDR R1,[R9]:LDR R1,[R1] 
35680ADD R1,R1,#1 
35690LDR R4,[R9,#1*8] 
35700LDR R7,[R9,#8*8] 
35710.mappixlp
35720LDRB R8,[R1],#2 
35730AND R8,R8,#ymax%
35740LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
35750SUBS R0,R0,#1:BNE mappixlp
35760MOVS PC,R14
35770]
35780ENDCASE
35790IFxmul%=2 AND xdiv%=1 THEN
35800[OPT Z
35820.xsample%
35830LDR R0,[R9]:LDR R0,[R0] 
35840LDR R1,[R9,#8] 
35850LDR R2,[R9,#2*8] 
35860SUBS R0,R0,#2
35870BEQ xdonediv
35880BMI xdonediv
35890.xsamplelp
35900LDMIA R1,{R5,R6}
35910ADD R6,R6,R5
35920MOV R6,R6,LSR #1
35930STMIA R2!,{R5,R6}
35940ADD R1,R1,#4
35950SUBS R0,R0,#2:BGT xsamplelp
35960.xdonediv
35970LDMIA R1,{R5}
35980MOV R6,R5
35990STMIA R2!,{R5,R6}
36000MOVS PC,R14
36010]
36020ELSE
36030[OPT Z
36050.xsample%
36060LDR R0,[R9]:LDR R0,[R0] 
36070LDR R1,[R9,#8] 
36080LDR R2,[R9,#2*8] 
36090LDR R3,[R9,#3*8]:LDR R3,[R3] 
36100LDR R4,[R9,#4*8]:LDR R4,[R4] 
36110MOV R11,R4
36120.xsamplelp
36130LDMIA R1,{R5}
36140SUBS R11,R11,#1:MOVEQ R11,R4:ADDEQ R1,R1,#4
36150SUBS R12,R3,#1 
36160BEQ xdonediv
36170.xdivlp
36180CMP R12,R11
36190BCC xdivlp2
36200LDMIA R1!,{R8}:MLA R5,R8,R11,R5
36210SUBS R12,R12,R11:MOV R11,R4
36220BNE xdivlp
36230B xdonediv
36240.xdivlp2
36250LDMIA R1,{R8}
36260SUBS R11,R11,#1:MOVEQ R11,R4:ADDEQ R1,R1,#4
36270ADD R5,R5,R8
36280SUBS R12,R12,#1:BNE xdivlp
36290.xdonediv
36300STMIA R2!,{R5}
36310SUBS R0,R0,#1:BPL xsamplelp
36320MOVS PC,R14
36330]
36340ENDIF
36350WHEN 2
36360IFinput<=8 THEN
36370[OPT Z
36380.mappix% 
36390LDR R0,sxloc 
36400LDR R1,[R9]:LDR R1,[R1] 
36410LDR R2,[R9,#3*8] 
36420LDR R3,[R9,#2*8] 
36430LDR R4,[R9,#8] 
36440LDR R5,[R9,#4*8] 
36450MOV R10,#0
36460.mappixlp
36470LDRB R6,[R1],#step24
36480]
36490ENDIF
36500CASE input OF
36510WHEN 8
36520IFham THEN
36530[OPT Z
36540ADR R9,ltable
36550MOVS R7,R6,LSR #4:AND R6,R6,#15
36560LDREQ R10,[R2,R6,LSL #2]:LDREQ R11,[R3,R6,LSL #2]:LDREQ R12,[R4,R6,LSL #2]
36570CMP R7,#1:LDREQ R12,[R9,R6,LSL #2]
36580CMP R7,#2:LDREQ R10,[R9,R6,LSL #2]
36590CMP R7,#3:LDREQ R11,[R9,R6,LSL #2]
36600STMIA R5!,{R10,R11,R12}
36610SUBS R0,R0,#1:BNE mappixlp
36620MOVS PC,R14
36630.ltable
36640]
36650FORI%=0TO15
36660[OPT Z
36670EQUD I%/15*F
36680]
36690NEXT
36700ELSE
36710IFhpredict%=2 THEN
36720[OPT Z
36730ADD R6,R6,R10
36740AND R6,R6,#255
36750MOV R10,R6
36760]
36770ENDIF
36780[OPT Z
36790LDR R7,[R2,R6,LSL #2]:LDR R8,[R3,R6,LSL #2]:LDR R9,[R4,R6,LSL #2]
36800STMIA R5!,{R7,R8,R9}
36810SUBS R0,R0,#1:BNE mappixlp
36820MOVS PC,R14
36830]
36840ENDIF
36850WHEN 4
36860IFbigendianbits THEN
36870[OPT Z
36880MOV R10,R6,LSR #4
36890LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
36900STMIA R5!,{R7,R8,R9}
36910AND R10,R6,#&F
36920]
36930ELSE
36940[OPT Z
36950AND R10,R6,#&F
36960LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
36970STMIA R5!,{R7,R8,R9}
36980MOV R10,R6,LSR #4
36990]
37000ENDIF
37010[OPT Z
37020LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
37030STMIA R5!,{R7,R8,R9}
37040SUBS R0,R0,#2:BHI mappixlp
37050MOVS PC,R14
37060]
37070WHEN 2
37080IFbigendianbits THEN
37090[OPT Z
37100MOV R10,R6,LSR #6
37110LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
37120STMIA R5!,{R7,R8,R9}
37130AND R10,R6,#&30
37140LDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
37150STMIA R5!,{R7,R8,R9}
37160AND R10,R6,#&C
37170LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
37180STMIA R5!,{R7,R8,R9}
37190AND R10,R6,#&3
37200]
37210ELSE
37220[OPT Z
37230AND R10,R6,#&3
37240LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
37250STMIA R5!,{R7,R8,R9}
37260AND R10,R6,#&C
37270LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
37280STMIA R5!,{R7,R8,R9}
37290AND R10,R6,#&30
37300LDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
37310STMIA R5!,{R7,R8,R9}
37320MOV R10,R6,LSR #6
37330]
37340ENDIF
37350[OPT Z
37360LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
37370STMIA R5!,{R7,R8,R9}
37380SUBS R0,R0,#4:BHI mappixlp
37390MOVS PC,R14
37400]
37410WHEN 1
37420IFbigendianbits THEN
37430[OPT Z
37440AND R10,R6,#&80
37450LDR R7,[R2,R10,LSR #5]:LDR R8,[R3,R10,LSR #5]:LDR R9,[R4,R10,LSR #5]
37460STMIA R5!,{R7,R8,R9}
37470AND R10,R6,#&40
37480LDR R7,[R2,R10,LSR #4]:LDR R8,[R3,R10,LSR #4]:LDR R9,[R4,R10,LSR #4]
37490STMIA R5!,{R7,R8,R9}
37500AND R10,R6,#&20
37510LDR R7,[R2,R10,LSR #3]:LDR R8,[R3,R10,LSR #3]:LDR R9,[R4,R10,LSR #3]
37520STMIA R5!,{R7,R8,R9}
37530AND R10,R6,#&10
37540LDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
37550STMIA R5!,{R7,R8,R9}
37560AND R10,R6,#&8
37570LDR R7,[R2,R10,LSR #1]:LDR R8,[R3,R10,LSR #1]:LDR R9,[R4,R10,LSR #1]
37580STMIA R5!,{R7,R8,R9}
37590AND R10,R6,#&4
37600LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
37610STMIA R5!,{R7,R8,R9}
37620AND R10,R6,#&2
37630LDR R7,[R2,R10,LSL #1]:LDR R8,[R3,R10,LSL #1]:LDR R9,[R4,R10,LSL #1]
37640STMIA R5!,{R7,R8,R9}
37650AND R10,R6,#&1
37660]
37670ELSE
37680[OPT Z
37690AND R10,R6,#&1
37700LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
37710STMIA R5!,{R7,R8,R9}
37720AND R10,R6,#&2
37730LDR R7,[R2,R10,LSL #1]:LDR R8,[R3,R10,LSL #1]:LDR R9,[R4,R10,LSL #1]
37740STMIA R5!,{R7,R8,R9}
37750AND R10,R6,#&4
37760LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
37770STMIA R5!,{R7,R8,R9}
37780AND R10,R6,#&8
37790LDR R7,[R2,R10,LSR #1]:LDR R8,[R3,R10,LSR #1]:LDR R9,[R4,R10,LSR #1]
37800STMIA R5!,{R7,R8,R9}
37810AND R10,R6,#&10
37820LDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
37830STMIA R5!,{R7,R8,R9}
37840AND R10,R6,#&20
37850LDR R7,[R2,R10,LSR #3]:LDR R8,[R3,R10,LSR #3]:LDR R9,[R4,R10,LSR #3]
37860STMIA R5!,{R7,R8,R9}
37870AND R10,R6,#&40
37880LDR R7,[R2,R10,LSR #4]:LDR R8,[R3,R10,LSR #4]:LDR R9,[R4,R10,LSR #4]
37890STMIA R5!,{R7,R8,R9}
37900MOV R10,R6,LSR #7
37910]
37920ENDIF
37930[OPT Z
37940LDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
37950STMIA R5!,{R7,R8,R9}
37960SUBS R0,R0,#8:BHI mappixlp
37970MOVS PC,R14
37980]
37990WHEN 16
38000[OPT Z
38010.mappix% 
38020LDR R0,sxloc 
38030LDR R1,[R9]:LDR R1,[R1] 
38040LDR R2,[R9,#8]:LDR R2,[R2] 
38050LDR R3,[R9,#4*8] 
38060LDR R4,[R9,#3*8] 
38070LDR R5,[R9,#2*8] 
38080LDR R6,[R9,#5*8] 
38090LDR R7,[R9,#6*8] 
38100LDR R8,[R9,#7*8] 
38110CMP R1,R2
38120ADDEQ R2,R2,#1
38130.mappixlp
38140LDRB R9,[R1],#step24:LDRB R10,[R2],#step24
38150LDR R9,[R6,R9,LSL #2]:LDR R10,[R7,R10,LSL #2]:ORR R9,R9,R10
38160AND R10,R9,#255:LDR R10,[R3,R10,LSL #2]
38170MOV R11,R9,LSR #8:AND R11,R11,#255:LDR R11,[R4,R11,LSL #2]
38180MOV R12,R9,LSR #16:LDR R12,[R5,R12,LSL #2]
38190STMIA R8!,{R10,R11,R12}
38200SUBS R0,R0,#1:BNE mappixlp
38210MOVS PC,R14
38220]
38230WHEN 24
38240[OPT Z
38250.mappix% 
38260LDR R0,sxloc 
38270LDR R1,[R9,#2*8]:LDR R1,[R1] 
38280LDR R2,[R9,#8]:LDR R2,[R2] 
38290LDR R3,[R9]:LDR R3,[R3] 
38300LDR R4,[R9,#5*8] 
38310LDR R5,[R9,#4*8] 
38320LDR R6,[R9,#3*8] 
38330LDR R7,[R9,#6*8] 
38340STMFD SP !,{R14}
38350MOV r11,#0:MOV R12,#0:MOV R14,#0
38360.mappixlp
38370LDRB R8,[R1],#step24:LDRB R9,[R2],#step24:LDRB R10,[R3],#step24
38380]
38390IFhpredict%=2 THEN
38400[OPT Z
38410ADD r8,r8,r11
38420AND r8,r8,#255
38430MOV r11,r8
38440ADD r9,r9,r12
38450AND r9,r9,#255
38460MOV r12,r9
38470ADD r10,r10,r14
38480AND r10,r10,#255
38490MOV r14,r10
38500]
38510ENDIF
38520[OPT Z
38530LDR R8,[R4,R8,LSL #2]:LDR R9,[R5,R9,LSL #2]:LDR R10,[R6,R10,LSL #2]
38540STMIA R7!,{R8,R9,R10}
38550SUBS R0,R0,#1:BNE mappixlp
38560LDMFD SP !,{PC}^
38570]
38580WHEN 411
38600[OPT Z
38610.mappix% 
38620LDR R0,sxloc 
38630LDR R1,[R9]:LDR R1,[R1] 
38640LDR R2,[R9,#1*8] 
38650LDR R3,[R9,#2*8] 
38660LDR R5,[R9,#4*8] 
38670LDR R6,[R9,#5*8] 
38680LDR R7,[R9,#6*8] 
38690LDR R9,[R9,#8*8] 
38700STMFD SP !,{R14}
38710.mappixlp
38720LDMIA R1!,{R4,R10} 
38730AND R8,R4,#&C000
38740MOV R8,R8,LSR #8
38750AND R14,R4,#&C0000000
38760ORR R8,R8,R14,LSR #16+8+2
38770AND R14,R10,#&C000
38780ORR R8,R8,R14,LSR #8+4
38790ORR R8,R8,R10,LSR #16+8+6 
38800AND R11,R4,#&3000
38810MOV R11,R11,LSR #6
38820AND R14,R4,#&30000000
38830ORR R11,R11,R14,LSR #16+6+2
38840AND R14,R10,#&3000
38850ORR R11,R11,R14,LSR #6+4
38860AND R14,R10,#&30000000
38870ORR R11,R11,R14,LSR #16+6+6 
38890AND R12,R4,#&FF 
38900LDR R12,[R2,R12,LSL #2] 
38910LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
38920MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
38930LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
38940LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
38950MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
38960AND R12,R4,#&FF 
38970LDR R12,[R2,R12,LSL #2] 
38980LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
38990MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39010MOV R4,R4,LSR #16
39020AND R12,R4,#&FF 
39030LDR R12,[R2,R12,LSL #2] 
39040LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
39050MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39060LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
39070LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
39080MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39090AND R12,R4,#&FF 
39100LDR R12,[R2,R12,LSL #2] 
39110LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
39120MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39140AND R12,R10,#&FF 
39150LDR R12,[R2,R12,LSL #2] 
39160LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
39170MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39180LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
39190LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
39200MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39210AND R12,R10,#&FF 
39220LDR R12,[R2,R12,LSL #2] 
39230LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
39240MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39260MOV R10,R10,LSR #16
39270AND R12,R10,#&FF 
39280LDR R12,[R2,R12,LSL #2] 
39290LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
39300MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39310LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
39320LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
39330MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39340AND R12,R10,#&FF 
39350LDR R12,[R2,R12,LSL #2] 
39360LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
39370MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39390SUBS R0,R0,#4:BNE mappixlp
39400LDMFD SP !,{PC}^
39410]
39420WHEN 423
39430[OPT Z
39440.mappix% 
39450LDR R0,sxloc 
39460LDR R1,[R9]:LDR R1,[R1] 
39470LDR R2,[R9,#1*8] 
39480LDR R3,[R9,#2*8] 
39490LDR R4,[R9,#3*8] 
39500LDR R5,[R9,#4*8] 
39510LDR R6,[R9,#5*8] 
39520LDR R7,[R9,#6*8] 
39530LDR R8,[R9,#7*8] 
39540LDR R9,[R9,#8*8] 
39550STMFD SP !,{R14}
39560.mappixlp
39570LDR R10,[R1],#4 
39580AND R11,R10,#&FF00 
39590LDR R11,[R2,R11,LSR #6]
39600AND R12,R10,#&FF:LDR R12,[R7,R12,LSL #2]:ADD R14,R12,R11
39610AND R12,R10,#&FF0000:LDR R12,[R8,R12,LSR #14]:ADDS R14,R14,R12
39620MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39630AND R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
39640AND R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
39650MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39660AND R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADD R14,R12,R11
39670AND R12,R10,#&FF0000:LDR R12,[R4,R12,LSR #14]:ADDS R14,R14,R12
39680MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39690AND R11,R10,#&FF000000 
39700LDR R11,[R2,R11,LSR #22]
39710AND R12,R10,#&FF:LDR R12,[R7,R12,LSL #2]:ADD R14,R12,R11
39720AND R12,R10,#&FF0000:LDR R12,[R8,R12,LSR #14]:ADDS R14,R14,R12
39730MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39740AND R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
39750AND R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
39760MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39770AND R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADD R14,R12,R11
39780AND R12,R10,#&FF0000:LDR R12,[R4,R12,LSR #14]:ADDS R14,R14,R12
39790MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
39800SUBS R0,R0,#2:BNE mappixlp
39810LDMFD SP !,{PC}^
39820]
39830WHEN 422
39840[OPT Z
39850.mappix% 
39860LDR R0,sxloc 
39870LDR R1,[R9]:LDR R1,[R1] 
39880LDR R2,[R9,#1*8] 
39890LDR R3,[R9,#2*8] 
39900LDR R5,[R9,#4*8] 
39910LDR R6,[R9,#5*8] 
39920LDR R7,[R9,#6*8] 
39930LDR R9,[R9,#8*8] 
39940STMFD SP !,{R14}
39950.mappixlp
39960LDR R10,[R1],#4 
39970AND R11,R10,#&FF00 
39980LDR R11,[R2,R11,LSR #6]
39990AND R12,R10,#&FF0000:LDR R12,[R7,R12,LSR #14]:ADDS R14,R12,R11
40000MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
40010AND R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
40020AND R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
40030MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
40040AND R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADDS R14,R12,R11
40050MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
40060AND R11,R10,#&FF000000 
40070LDR R11,[R2,R11,LSR #22]
40080AND R12,R10,#&FF0000:LDR R12,[R7,R12,LSR #14]:ADDS R14,R12,R11
40090MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
40100AND R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
40110AND R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
40120MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
40130AND R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADDS R14,R12,R11
40140MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
40150SUBS R0,R0,#2:BNE mappixlp
40160LDMFD SP !,{PC}^
40170]
40180WHEN 555
40200[OPT Z
40210.mappix% 
40220LDR R0,sxloc 
40230LDR R1,[R9]:LDR R1,[R1] 
40240LDR R2,[R9,#1*8] 
40250LDR R3,[R9,#2*8] 
40260LDR R5,[R9,#4*8] 
40270LDR R6,[R9,#5*8] 
40280LDR R7,[R9,#6*8] 
40290LDR R9,[R9,#8*8] 
40300STMFD SP !,{R14}
40310.mappixlp
40320LDR R10,[R1],#2 
40330AND R11,R10,#ymax% 
40340LDR R11,[R2,R11,LSL #2]
40350AND R8,R10,#((1<<vbits%)-1)<<(ybits%+ubits%) 
40360AND R10,R10,#((1<<ubits%)-1)<<ybits% 
40380LDR R12,[R7,R8,LSR #ybits%+ubits%-2]:ADDS R14,R12,R11
40390MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4 
40400LDR R12,[R5,R8,LSR #ybits%+ubits%-2]:ADD R14,R12,R11
40410LDR R12,[R6,R10,LSR #ybits%-2]:ADDS R14,R14,R12
40420MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4 
40430LDR R12,[R3,R10,LSR #ybits%-2]:ADDS R14,R12,R11
40440MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4 
40450SUBS R0,R0,#1:BNE mappixlp
40460LDMFD SP !,{PC}^
40470]
40480ENDCASE
40490IFxmul%=2 AND xdiv%=1 THEN
40500[OPT Z
40520.xsample%
40530LDR R0,[R9]:LDR R0,[R0] 
40540LDR R1,[R9,#8] 
40550LDR R2,[R9,#2*8] 
40560SUBS R0,R0,#2
40570BEQ xdonediv
40580BMI xdonediv
40590.xsamplelp
40600LDMIA R1,{R5,R6,R7,R8,R9,R10}
40610ADD R8,R8,R5
40620MOV R8,R8,LSR #1
40630ADD R9,R9,R6
40640MOV R9,R9,LSR #1
40650ADD R10,R10,R7
40660MOV R10,R10,LSR #1
40670STMIA R2!,{R5,R6,R7,R8,R9,R10}
40680ADD R1,R1,#12
40690SUBS R0,R0,#2:BGT xsamplelp
40700.xdonediv
40710LDMIA R1,{R5,R6,R7}
40720MOV R8,R5
40730MOV R9,R6
40740MOV R10,R7
40750STMIA R2!,{R5,R6,R7,R8,R9,R10}
40760MOVS PC,R14
40770]
40780ELSE
40790[OPT Z
40810.xsample%
40820LDR R0,[R9]:LDR R0,[R0] 
40830LDR R1,[R9,#8] 
40840LDR R2,[R9,#2*8] 
40850LDR R3,[R9,#3*8]:LDR R3,[R3] 
40860LDR R4,[R9,#4*8]:LDR R4,[R4] 
40870MOV R11,R4
40880.xsamplelp
40890LDMIA R1,{R5,R6,R7}
40900SUBS R11,R11,#1:MOVEQ R11,R4:ADDEQ R1,R1,#12
40910SUBS R12,R3,#1 
40920BEQ xdonediv
40930.xdivlp
40940CMP R12,R11
40950BCC xdivlp2
40960LDMIA R1!,{R8,R9,R10}:MLA R5,R8,R11,R5:MLA R6,R9,R11,R6:MLA R7,R10,R11,R7
40970SUBS R12,R12,R11:MOV R11,R4
40980BNE xdivlp
40990B xdonediv
41000.xdivlp2
41010LDMIA R1,{R8,R9,R10}
41020SUBS R11,R11,#1:MOVEQ R11,R4:ADDEQ R1,R1,#12
41030ADD R5,R5,R8:ADD R6,R6,R9:ADD R7,R7,R10
41040SUBS R12,R12,#1:BNE xdivlp
41050.xdonediv
41060STMIA R2!,{R5,R6,R7}
41070SUBS R0,R0,#1:BPL xsamplelp
41080MOVS PC,R14
41090]
41100ENDIF
41110ENDCASE
41120IFcompression=5 THEN
41130[OPT Z
41150.firstcode DCD 0
41160.oldcode DCD 0
41170.codesize DCD setcodes%+1
41180.stack DCD stk%
41190.sp DCD stk%
41200.maxcode DCD clearcode%+2
41210.maxcodesize DCD 2*clearcode%
41220.LZWdecode%
41230LDR R2,firstcode:LDR R3,oldcode:LDR R4,stack:LDR R5,codesize
41240LDR R6,sp:LDR R7,maxcode:LDR R8,maxcodesize
41250LDR R10,[R9]:LDR R10,[R10] 
41260LDR R11,[R9,#8]:LDR R11,[R11] 
41270LDR R12,[R9,#24] 
41280STMFD SP !,{R14}
41290.lzwloop
41300CMP R6,R4
41310BHI lzwunstack
41320.lzwengine
41330BL getcode
41340CMP R0,#clearcode%
41350BEQ lzwclear
41370MOV R1,R0 
41380CMP R0,R7 
41390STRCSB R2,[R6],#1 
41400MOVCS R0,R3 
41410CMP R0,#clearcode%
41420BCC lzwdonepush
41430.lzwpushtable
41440LDR R14,[R12,R0,LSL #2] 
41450STRB R14,[R6],#1 
41460MOV R0,R14,LSR #16 
41470CMP R0,#clearcode%
41480BCS lzwpushtable
41490.lzwdonepush
41500LDR R2,[R12,R0,LSL #2]
41510BIC R2,R2,#&FF0000
41520BIC R2,R2,#&FF000000 
41530STRB R2,[R6],#1 
41540CMP R7,#4096
41550BCS lzwnocode
41560ORR R0,R2,R3,LSL #16
41570STR R0,[R12,R7,LSL #2] 
41580ADD R7,R7,#1 
41590CMP R7,R8
41600BCC lzwnocode 
41610CMP R8,#4096 
41620ADDCC R5,R5,#1 
41630MOVCC R8,R8,LSL #1 
41640]
41650IFflag=1500 THEN
41660[OPT Z
41670ORRCC R8,R8,#1
41680]
41690ENDIF
41700[OPT Z
41710.lzwnocode
41720MOV R3,R1 
41730CMP R6,R4 
41740BLS lzwengine
41750.lzwunstack
41760LDRB R0,[R6,#-1]! 
41770.lzwloopend
41780STRB R0,[R11],#1
41790SUBS R10,R10,#1
41800BNE lzwloop
41810STR R2,firstcode:STR R3,oldcode:STR R5,codesize
41820STR R6,sp:STR R7,maxcode:STR R8,maxcodesize
41830LDMFD SP !,{PC}^
41840.lzwclear
41850MOV R0,#0
41860MOV R3,R12
41870.lzwdefaulttable
41880STR R0,[R3],#4
41890ADD R0,R0,#1:CMP R0,#clearcode%
41900BCC lzwdefaulttable
41910MOV R5,#setcodes%+1
41920MOV R7,#clearcode%
41930MOV R8,R7,LSL #1 
41940]
41950IFflag=1500 THEN
41960[OPT Z
41970SUB R8,R8,#1
41980]
41990ENDIF
42000[OPT Z
42010ADD R7,R7,#2 
42020BL getcode
42030MOV R2,R0 
42040MOV R3,R0 
42050MOV R6,R4 
42060B lzwloopend
42080.curbit DCD 0
42090.lastbit DCD 0
42100.buf DCD buf%
42110.getcode
42120STMFD SP !,{R6,R7,R8}
42130ADR R6,curbit
42140LDMIA R6,{R6,R7,R8}
42150ADD R1,R5,R6 
42160CMP R1,R7
42170BCS needmoredata
42180.simplecode
42190ADD R7,R8,R6,LSR #3
42200BIC R7,R7,#3
42210LDMIA R7,{R0,R7}
42220]
42230IFflag=1500 THEN
42240[OPT Z
42250EOR R1,R0,R0,ROR #16
42260BIC R1,R1,#&FF0000
42270MOV R0,R0,ROR #8
42280EOR R0,R0,R1,LSR #8
42290EOR R1,R7,R7,ROR #16
42300BIC R1,R1,#&FF0000
42310MOV R7,R7,ROR #8
42320EOR R7,R7,R1,LSR #8
42330ANDS R1,R6,#31:MOVNE R0,R0,LSL R1:RSBNE R1,R1,#32:ORRNE R0,R0,R7,LSR R1
42340RSB R1,R5,#32
42350MOV R0,R0,LSR R1
42360]
42370ELSE
42380[OPT Z
42390ANDS R1,R6,#31:MOVNE R0,R0,LSR R1:RSBNE R1,R1,#32:ORRNE R0,R0,R7,LSL R1
42400MVN R1,#0:BIC R0,R0,R1,LSL R5
42410]
42420ENDIF
42430[OPT Z
42440ADD R6,R6,R5
42450STR R6,curbit
42460LDMFD SP !,{R6,R7,R8}
42470MOV PC,R14
42480.needmoredata
42490STMFD SP !,{R2,R3,R4,R14}
42500MOV R3,R7,LSR #3
42510SUB R0,R3,#2 
42520LDRB R0,[R8,R0]
42530STRB R0,[R8]
42540SUB R0,R3,#1 
42550LDRB R0,[R8,R0]
42560STRB R0,[R8,#1]
42570LDR R1,[R9,#16]
42580LDR R1,[R1] 
42590]
42600IFflag=1500 THEN
42610[OPT Z
42620MOV R0,#256
42630MOV R3,#256
42640]
42650ELSE
42660[OPT Z
42670BL bytefromcache%
42680MOVS R3,R0 
42690BEQ simplecode1
42700]
42710ENDIF
42720[OPT Z
42730SUB R6,R6,R7 
42740ADD R6,R6,#16
42750ADD R0,R0,#2 
42760MOV R7,R0,LSL #3
42770STR R7,lastbit
42780ADD R2,R8,#2 
42790BL multibytefromcache%
42800.simplecode1
42810LDMFD SP !,{R2,R3,R4,R14}
42820B simplecode
42830]
42840ENDIF
42850IFrange% THEN
42860[OPT Z
42880.maxmin%
42890LDR R0,[R9]:LDR R0,[R0] 
42900LDR R1,[R9,#8] 
42910LDR R2,min
42920LDR R3,max
42930.maxminlp
42940LDR R4,[R1],#4
42950CMP R4,R3:MOVCS R3,R4 
42960CMP R4,R2:MOVCC R2,R4 
42970SUBS R0,R0,#1:BNE maxminlp
42980STR R2,min
42990STR R3,max
43000MOVS PC,R14
43010.min DCD F
43020.max DCD 0
43030]
43040ENDIF
43050IFsharpen% THEN
43060sharp=(col+1)*4:IFsharpen%<>8 sharpmul%=F/(sharpen%-8)
43070[OPT Z
43090.sharp%
43100LDR R0,[R9]:LDR R0,[R0] 
43110LDR R1,[R9,#8] 
43120LDR R2,[R9,#16] 
43130LDR R3,[R9,#24] 
43140LDR R4,[R9,#32] 
43150]
43160CASE sharpen% OF
43170WHEN 8,9,12,16,24
43180OTHERWISE
43190[OPT Z
43200MOV R8,#sharpmul% AND &FF
43210ORR R8,R8,#sharpmul% AND &FF00
43220MOV R9,#(sharpmul% >> 16) AND &FF
43230ORR R9,R9,#(sharpmul% >> 16) AND &FF00
43240]
43250ENDCASE
43260[OPT Z
43270.sharplp
43280LDR R5,[R1,#-sharp]
43290LDR R6,[R1,#sharp]:ADD R5,R5,R6
43300LDR R6,[R1],#4:ADD R5,R5,R6
43310LDR R6,[R3,#-sharp]:ADD R5,R5,R6
43320LDR R6,[R3,#sharp]:ADD R5,R5,R6
43330LDR R6,[R3],#4:ADD R5,R5,R6
43340LDR R6,[R2,#-sharp]:ADD R5,R5,R6
43350LDR R6,[R2,#sharp]:ADD R5,R5,R6 
43360LDR R6,[R2],#4 
43370MOV R6,R6,LSR #1
43380MOV R7,#sharpen%
43390MUL R7,R6,R7 
43400SUBS R5,R7,R5,LSR #1
43410MOVCC R5,#0 
43420]
43430CASE sharpen% OF
43440WHEN 8,9
43450[OPT Z
43460MOV R6,R5,LSL #1
43470]
43480WHEN 10
43490[OPT Z
43500MOV R6,R5
43510]
43520WHEN 12
43530[OPT Z
43540MOV R6,R5,LSR #1
43550]
43560WHEN 16
43570[OPT Z
43580MOV R6,R5,LSR #2
43590]
43600WHEN 24
43610[OPT Z
43620MOV R6,R5,LSR #3
43630]
43640OTHERWISE
43650[OPT Z
43660MOV R6,R5,LSR #16
43670EOR R5,R5,R6,LSL #16
43680MUL R7,R8,R5
43690MUL R5,R9,R5
43700MUL R10,R6,R8
43710MUL R6,R9,R6
43720ADDS R10,R5,R10
43730ADDCS R6,R6,#&10000
43740ADDS R7,R7,R10,LSL #16
43750ADC R6,R6,R10,LSR #16
43760MOV R6,R6,LSL #(32-27)
43770ORRS R6,R6,R7,LSR #27
43780ADDCS R6,R6,#1 
43790]
43800ENDCASE
43810[OPT Z
43820CMP R6,#F:MOVCS R6,#F
43830STR R6,[R4],#4
43840SUBS R0,R0,#1
43850BNE sharplp
43860MOVS PC,R14
43870]
43880ENDIF
43890IFhist%ORequal% THEN
43900[OPT Z
43920.histo%
43930LDR R0,[R9]:LDR R0,[R0] 
43940LDR R1,[R9,#8] 
43950LDR R2,[R9,#16]
43960.histlp
43970LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
43980MOV R3,R3,LSR #bits-8
43990]
44000IFcol=2 THEN
44010[OPT Z
44020ADD R3,R3,R3,LSL #1
44030LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
44040LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
44050MOV R3,R3,LSR #bits-8
44060ADD R3,R3,R3,LSL #1:ADD R3,R3,#1
44070LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
44080LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
44090MOV R3,R3,LSR #bits-8
44100ADD R3,R3,R3,LSL #1:ADD R3,R3,#2
44110]
44120ENDIF
44130[OPT Z
44140LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
44150SUBS R0,R0,#1
44160BNE histlp
44170MOVS PC,R14
44180]
44190ENDIF
44200IFequal% THEN
44210[OPT Z
44230.histequal%
44240LDR R0,[R9]:LDR R0,[R0] 
44250LDR R1,[R9,#8] 
44260LDR R2,[R9,#16] 
44270.equallp
44280LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
44290MOV R3,R3,LSR #bits-8
44300]
44310IFcol=2 THEN
44320[OPT Z
44330LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
44340MOV R3,R3,LSR #bits-8
44350ADD R3,R3,R3,LSL #1
44360LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
44370LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
44380MOV R3,R3,LSR #bits-8
44390ADD R3,R3,R3,LSL #1:ADD R3,R3,#1
44400LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
44410LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
44420MOV R3,R3,LSR #bits-8
44430ADD R3,R3,R3,LSL #1:ADD R3,R3,#2
44440]
44450ENDIF
44460[OPT Z
44470LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
44480SUBS R0,R0,#1
44490BNE equallp
44500MOVS PC,R14
44510]
44520ENDIF
44530CASE r$ OF
44540WHEN "FN800","FN801","FN1000","FN1001"
44550[OPT Z
44580.rlexpand%
44590LDR R0,[R9] 
44600LDR R1,[R0] 
44610LDR R2,[R9,#8]:LDR R2,[R2] 
44620LDR R3,[R9,#16] 
44630LDR R4,[R3] 
44640CMP R4,#1:MOVLTS PC,R14
44650LDR R5,[R9,#24]:LDR R5,[R5] 
44660.rle
44670STRB R2,[R1],#1
44680SUB R4,R4,#1
44690CMP R1,R5
44700TEQNE R4,#0
44710BNE rle
44720.rlexit
44730STR R1,[R0] 
44740STR R4,[R3] 
44750MOVS PC,R14
44760]
44770WHEN "FN902"
44780[OPT Z
44790.unpack%
44800LDR R0,[R9] 
44810LDR R0,[R0] 
44820LDR R1,plbuff
44830ADD R2,R0,#768
44840.unpackloop
44850LDR R3,[R0],#4
44860MOV R5,#0
44870.bitloop
44880MOV R6,R3,LSR R5
44890AND R6,R6,#15
44900ADD R5,R5,#4
44910MOV R7,R3,LSR R5
44920AND R7,R7,#15
44930ADD R5,R5,#4
44940STRB R7,[R1],#1
44950STRB R6,[R1],#1
44960CMP R5,#32
44970BNE bitloop
44980CMP R2,R0
44990BNE unpackloop
45000MOV PC,R14
45010.plbuff EQUD plbuff%
45020]
45030WHEN "FN1601","FN1501","FN1850","FN1851"
45040[OPT Z
45060.readiff%
45070MOV R1,#c%
45080LDR R8,[R9]:LDR R8,[R8] 
45090LDR R7,[R9,#8]:LDR R7,[R7]:ADD R7,R7,R8 
45100STMFD SP !,{R14}
45110]
45120IFr$="FN1850" OR r$="FN1851" THEN
45130[OPT Z
45140BL bytefromcache%
45150]
45160IFsy%>250 THEN
45170[OPT Z
45180BL bytefromcache%
45190]
45200ENDIF
45210ENDIF
45220[OPT Z
45230.rle
45240BL bytefromcache%
45250CMP R0,#128
45260BCC rle1
45270RSB R2,R0,#256
45280BL bytefromcache%
45290.rle0 STRB R0,[R8],#1
45300SUBS R2,R2,#1
45310BPL rle0
45320B rle2
45330.rle1
45340ADD R3,R0,#1
45350MOV R2,R8
45360ADD R8,R8,R3
45370BL multibytefromcache%
45380.rle2
45390CMP R8,R7
45400BCC rle
45410LDMFD SP !,{R14}
45420MOVS PC,R14
45430]
45440WHEN "FN1900","FN1100","FN400"
45450[OPT Z
45470.readline%
45480LDR R2,[R9]:LDR R2,[R2] 
45490LDR R3,[R9,#8] 
45500LDR R0,[R3]
45510LDR R4,[R9,#16] 
45520LDR R5,[R4]
45530LDR R6,[R9,#24]:LDR R6,[R6]:ADD R6,R6,R2 
45540STMFD SP !,{R14}
45550.rle
45560CMP R5,#1
45570BGE rle1
45580BL bytefromcache%
45590MOV R5,#1
45600]
45610IFflag=1900 THEN
45620[OPT Z
45630CMP R0,#192
45640ANDCS R5,R0,#63:BLCS bytefromcache%
45650]
45660ENDIF
45670IFflag=1100 THEN
45680[OPT Z
45690CMP R0,#128
45700BNE rle1
45710BL bytefromcache%
45720TEQ R0,#0
45730MOVEQ R0,#128
45740BEQ rle1
45750ADD R5,R0,#1
45760BL bytefromcache%
45770]
45780ENDIF
45790IFflag=400 THEN
45800[OPT Z
45810MOV R1,R0 
45820BL bytefromcache% 
45830ORR R1,R1,R0,LSL #8
45840BL bytefromcache% 
45850ORR R1,R1,R0,LSL #16
45860BL bytefromcache%
45870ADD R5,R0,#1
45880MOV R0,R1
45890]
45900ENDIF
45910IFflag=200 THEN
45920[OPT Z
45930ADD R5,R0,#1
45940BL bytefromcache%
45950]
45960ENDIF
45970[OPT Z
45980.rle1
45990STRB R0,[R2],#1
46000]
46010IFflag=400 THEN
46020[OPT Z
46030MOV R1,R0,LSR #8
46040STRB R1,[R2],#1
46050MOV R1,R0,LSR #16
46060STRB R1,[R2],#1
46070]
46080ENDIF
46090[OPT Z
46100SUB R5,R5,#1
46110TEQ R2,R6
46120BNE rle
46130.rlexit
46140STR R0,[R3]:STR R5,[R4]
46150LDMFD SP !,{PC}^
46160]
46170WHEN "FN2401"
46180[OPT Z
46190.bm_rle8
46200MOV R1,#c%
46210LDR R8,[R9]:LDR R8,[R8]
46220LDR R7,[R9,#8]:LDR R7,[R7]:ADD R7,R7,R8
46230STMFD SP !,{R14}
46240.rle
46250BL bytefromcache%  
46260TEQ r0,#0          
46270BEQ rlecopy
46290MOV r4,r0          
46300BL bytefromcache%  
46310.rle1
46320STRB r0,[r8],#1
46330SUBS r4,r4,#1
46340BGT rle1
46350B rle
46360.rlecopy
46380BL bytefromcache%  
46390CMP r0,#3          
46400BLT rlespecial
46410MOV r4,r0          
46420.rle2
46440BL bytefromcache%
46450STRB r0,[r8],#1
46460BL bytefromcache%
46470SUBS r4,r4,#1
46480STRGTB r0,[r8],#1
46490SUBGTS r4,r4,#1
46500BGT rle2
46510B rle
46520.rlespecial
46630LDMFD SP !,{R14}
46640MOVS PC,R14
46650]
46660WHEN "FN2402"
46670[OPT Z
46680.bm_rle4
46690MOV R1,#c%
46700LDR R8,[R9]:LDR R8,[R8]
46710LDR R7,[R9,#8]:LDR R7,[R7]:ADD R7,R7,R8
46720STMFD SP !,{R14}
46730MOV r2,#0          
46740MOV r3,#0          
46750.rle
46760BL bytefromcache%  
46770TEQ r0,#0          
46780BEQ rlecopy
46800MOV r4,r0          
46810BL bytefromcache%  
46820.rle1
46830BL bmrle4_insert
46840CMP r3,#8
46850MOVGE r5,r2,LSR#24
46860STRGEB r5,[r8],#1
46870MOVGE r2,r2,LSL#8
46880SUBGE r3,r3,#8
46890CMP r4,#0
46900BGT rle1
46910B rle
46920.rlecopy
46940BL bytefromcache%  
46950CMP r0,#3          
46960BLT rlespecial
46970MOV r4,r0          
46980.rle2
47000BL bytefromcache%
47010BL bmrle4_insert
47020BL bytefromcache%
47030CMP r4,#0
47040BLGT bmrle4_insert
47050B rle4
47060.rle3
47070MOV r5,r2,LSR#24
47080STRB r5,[r8],#1
47090MOV r2,r2,LSL#8
47100SUB r3,r3,#8
47110.rle4
47120CMP r3,#8
47130BGE rle3
47140CMP r4,#0
47150BGT rle2
47160B rle
47170.rlespecial
47270CMP r3,#0
47280MOVGT r5,r2,LSR#24
47290STRGTB r5,[r8],#1
47310LDMFD SP !,{R14}
47320MOVS PC,R14
47330.bmrle4_insert
47340RSB r5,r3,#32
47350MOV r2,r2,LSR r5
47360MOV r2,r2,LSL r5
47370SUB r5,r5,#8
47380ORR r2,r2,r0,LSL r5
47390SUBS r4,r4,#2
47400ADDMI r3,r3,#4
47410ADDPL r3,r3,#8
47420MOVS PC,R14
47430]
47440ENDCASE
47450IFcachebytes% THEN
47460[OPT Z
47470.bytefromcache%
47480STMFD SP !,{R1,R2}
47490LDR R1,incacheptr
47500LDR R2,numlefttogo
47510LDRB R0,[R1],#1
47520SUBS R2,R2,#1
47530STRNE R1,incacheptr
47540STRNE R2,numlefttogo
47550LDMFD SP !,{R1,R2}
47560MOVNE PC,R14
47570STMFD SP !,{R0,R1,R2,R3,R4}
47580LDR R2,valdatacache
47590STR R2,incacheptr
47600LDR R3,valcache
47610STR R3,numlefttogo
47620MOV R0,#4
47630MOV R1,#c%
47640SWI "OS_GBPB"
47650LDMFD SP !,{R0,R1,R2,R3,R4}
47660MOV PC,R14
47670.valdatacache DCD datacache%
47680.valcache DCD cache%
47690.incacheptr DCD datacache%
47700.numlefttogo DCD cache%
47710.multibytefromcache%
47720CMP R3,#0
47730MOVEQ PC,R14
47740STMFD SP !,{R0,R14}
47750.multibytefromcachel
47760BL bytefromcache%
47770STRB R0,[R2],#1
47780SUBS R3,R3,#1
47790BNE multibytefromcachel
47800LDMFD SP !,{R0,R14}
47810MOV PC,R14
47820]
47830ENDIF
47840IFplanar%<0 THEN
47850C%=7:IFflag=2600 C%=15
47860[OPT Z
47870.plancnv% 
47880LDR R0,sxloc 
47890LDR R1,[R9]:LDR R1,[R1] 
47900LDR R3,[R9,#8]:LDR R3,[R3] 
47910LDR R4,[R9,#16]:LDR R4,[R4] 
47920]
47930IFflag=3500 THEN
47940[OPT Z
47950MOV R9,#0
47960]
47970ELSE
47980[OPT Z
47990MOV R9,#C%
48000]
48010ENDIF
48020[OPT Z
48030.planelp
48040MOV R7,#0
48050MOV R5,R3
48060]
48070FORN%=1TOplanes%
48080[OPT Z
48090LDR R6,[R5],R4
48100]
48110IFflag=2600 THEN
48120[OPT Z
48130MOV R6,R6,LSL #8
48140BIC R6,R6,#&FF000000
48150ORR R6,R6,R6,LSR #16
48160]
48170ENDIF
48180IFflag=3500 THEN
48190[OPT Z
48200MOV R6,R6,LSR R9
48210ANDS R6,R6,#1
48220ORR R7,R7,R6,LSL #(planes%-N%) 
48230ORRNE R7,R7,#(planes%-1)
48240]
48250ELSE
48260[OPT Z
48270MOV R6,R6,LSR R9
48280AND R6,R6,#1
48290ORR R7,R7,R6,LSL #(N%-1)
48300]
48310ENDIF
48320NEXT
48330[OPT Z
48340STRB R7,[R1],#1
48350]
48360IFflag=3500 THEN
48370[OPT Z
48380ADD R9,R9,#1
48390CMP R9,#C%+1
48400MOVEQ R9,#0
48410]
48420ELSE
48430[OPT Z
48440SUBS R9,R9,#1:MOVMI R9,#C%
48450]
48460ENDIF
48470CASE flag OF
48480WHEN 2600
48490[OPT Z
48500MOVMI R3,R5
48510]
48520WHEN 3500
48530[OPT Z
48540ADDEQ R3,R3,#1
48550]
48560OTHERWISE
48570[OPT Z
48580ADDMI R3,R3,#1
48590]
48600ENDCASE
48610[OPT Z
48620SUBS R0,R0,#1:BNE planelp
48630MOVS PC,R14
48640]
48650ENDIF
48660NEXT
48670cputime%=TIME
48680IFcache% THEN
48690IFflag=3600 THEN
48700pcdblk%!12=cacherows%:PROCrefillpcd:IFcache%>=filesize% rowstogo%=-1
48710ELSE
48720IFstriprows%>0ANDcompression>1 THEN
48740SYS12,4,c%,datacache%,cache%
48750IFcachebytes% !incacheptr=datacache%:!numlefttogo=cache%
48760ELSE
48770PROCrefill:IFcache%>=filesize% rowstogo%=-1
48780ENDIF
48790ENDIF
48800ENDIF
48810CASE ncol OF
48820WHEN 2^24-1:size%=1
48830WHEN 2^15-1:size%=1
48840WHEN 63,255,256:size%=1
48850WHEN 15:size%=2
48860WHEN 3:size%=4
48870WHEN 1:size%=8:IFm$="C" size%=2
48880IFm$="D" size%=4
48890IFm$="T" size%=2
48900ENDCASE
48920CASE flag OF
48930WHEN 501:IFinfo% PRINT"Reading interlaced GIF"
48940sz%=sx%*sy%:plbuff%=FNdim(sz%+100)
48950FORY%=0TOsy%-1STEP8:X%=plbuff%+Y%*sx%:CALL LZWdecode%,table%(0),c%,X%,sx%:NEXT
48960FORY%=4TOsy%-1STEP8:X%=plbuff%+Y%*sx%:CALL LZWdecode%,table%(0),c%,X%,sx%:NEXT
48970FORY%=2TOsy%-1STEP4:X%=plbuff%+Y%*sx%:CALL LZWdecode%,table%(0),c%,X%,sx%:NEXT
48980FORY%=1TOsy%-1STEP2:X%=plbuff%+Y%*sx%:CALL LZWdecode%,table%(0),c%,X%,sx%:NEXT
48990datacache%=plbuff%:buff%=plbuff%:rowbytes%=sx%:rowstogo%=-1
49000ENDCASE
49010IFgamma<>1 AND gamma<>0 THEN
49020k=1/gamma:FORC%=0TO255
49030IFr%(C%) r%(C%)=((r%(C%)/F)^k)*F
49040IFg%(C%) g%(C%)=((g%(C%)/F)^k)*F
49050IFb%(C%) b%(C%)=((b%(C%)/F)^k)*F
49060NEXT
49070ENDIF
49080rmax=F:gmax=F:bmax=F
49090IFcol=0 THEN
49100IFinput<9 THEN
49110FORC%=0TO255:r%(C%)=r%(C%)*rwt+g%(C%)*gwt+b%(C%)*bwt:NEXT
49120ELSE
49130IFinput<400 THEN
49140rmax=F*rwt:gmax=F*gwt:bmax=F*bwt
49150FORC%=0TO255:r%(C%)=r%(C%)*rwt:g%(C%)=g%(C%)*gwt:b%(C%)=b%(C%)*bwt:NEXT
49160ENDIF
49170ENDIF
49180ENDIF
49190IFNOTorder% PROCadjustpalette(1/ydiv%/xdiv%,0)
49210IFrange% THEN
49220IFinfo% PRINT"Scanning data to compute parameters for '-range'"
49230IForder% THEN
49240Y%=0:REPEAT SYShour%,Y%*100DIVsy%
49250W%=EVAL(r$+"(xp%())"):CALLmaxmin%,xp%(1,0),totvals2%:Y%+=1
49260UNTILY%=sy% OR!min<255 AND!max+255>=F
49270ELSE
49280Y%=0:ysamp%=1:REPEAT SYShour%,Y%*100DIVy%
49290PROCscaledpixelrow(cl%()):CALLmaxmin%,cl%(1,0),totvals%:Y%+=1
49300UNTILY%=y% OR !min<255 AND !max+255>=F
49310ENDIF
49320IF!max+255>=F AND!min<255 range%=FALSE:range$="No point in '-range' on this image"
49330IFrange% PROCadjustpalette(F/(!max-!min),!min/ydiv%/xdiv%):range$="Input image maximum "+STR$(!max/F*100)+"% minimum "+STR$(!min/F*100)+"%"
49340PROCrewind:IFinfo% PRINTrange$
49350ENDIF
49360IFhist% ORequal% THEN
49370IFequal% IFinfo% PRINT"Scanning data to compute parameters for '-equal'"
49380IForder% THEN
49390FORyr%=0TOsy%-1:SYShour%,yr%*100DIVsy%
49400W%=EVAL(r$+"(xp%())"):CALLhisto%,xp%(1,0),vals%(0,0),sx%
49410NEXT
49420ELSE
49430ysamp%=1:FORyr%=0TOy%-1:SYShour%,yr%*100DIVy%
49440PROCscaledpixelrow(cl%()):CALLhisto%,cl%(1,0),vals%(0,0),x%
49450NEXT
49460ENDIF
49470IFinfo% PRINT"Done. Now processing the picture"
49480ENDIF
49490IFinput<400 THEN
49500FORC%=0TO255
49510IFr%(C%)<0 r%(C%)=0
49520IFg%(C%)<0 g%(C%)=0
49530IFb%(C%)<0 b%(C%)=0
49540IFr%(C%)>rmax r%(C%)=rmax
49550IFg%(C%)>gmax g%(C%)=gmax
49560IFb%(C%)>bmax b%(C%)=bmax
49570NEXT
49580ENDIF
49590IFhist% THEN
49600M%=0:ZM%=-1:FORC%=0TOcol
49610FORZ%=0TO256:IFvals%(Z%,C%)>M% M%=vals%(Z%,C%):ZM%=Z%
49620NEXT:NEXT
49630IFZM%=-1 OR okinfo%=0 THEN=100
49640IF col>0 THEN
49650MODE66:ht=500
49660IFMODE<>66 MODE16:ht=400
49670LINE0,6,2000,6
49680ELSE
49690MODE18:ht=400:LINE0,6,1024,6
49700ENDIF
49710M=M%/(ht*2-8):FORC%=0TOcol:CASE C% OF
49720WHEN 0:GCOL1
49730WHEN 1:GCOL2
49740WHEN 2:GCOL4
49750ENDCASE
49760IF col>0 THEN
49770FORZ%=0TO256:IFvals%(Z%,C%) X%=Z%*3+C%<<1:LINEX%,8,X%,vals%(Z%,C%)/M+8
49780NEXT
49790ELSE
49800FORZ%=0TO256:IFvals%(Z%,C%) X%=Z%<<2:RECTANGLE FILLX%,8,2,vals%(Z%,C%)/M
49810NEXT
49820ENDIF
49830NEXT
49840PROCclose:SYS"Hourglass_Off"
49850=100
49860ENDIF
49870IFm>=0 oname$="p"+STR$m+m$ ELSEoname$=m$
49880IFm=-6 ORm=-7 ORm=-8 oname$=pnm$
49890IFrange% oname$+="r"
49900IFequal% oname$+="e"
49910IFsharpen% oname$+="s"+STR$sharpen%
49920IFblack% oname$+="b"+STR$black%
49930IFgamma<>1 A%=@%:@%=&1020100:oname$+="g"+STR$gamma:@%=A%
49940IFbright%=16 oname$+="b"
49950xsp%=x%:ysp%=y%:IFrotate% SWAP xsp%,ysp%
49960CASE m OF
49970WHEN -1:xwords%=xsp%:sz%=xwords%*ysp%:Y%=ysp%
49980PROCgetoutput(sz%,0,xwords%,Y%):base%=ram%
49990WHEN -3,-5:xwords%=xsp%*2:sz%=xwords%*ysp%:Y%=ysp%
50000PROCgetoutput(sz%,0,xwords%,Y%):base%=ram%
50010WHEN -4:xwords%=xsp%*3:sz%=xwords%*ysp%:Y%=ysp%
50020PROCgetoutput(sz%,0,xwords%,Y%):base%=ram%
50030WHEN -6:xwords%=xsp%*2+3ANDNOT3:sz%=xwords%*ysp%:Y%=ysp%
50040A%=Y%:PROCgetoutput(sz%,64,xwords%,Y%)
50050ram%!4=0:ram%!8=16:ram%!12=16:SYS&2e,&109,ram%
50060SYS&2e,&10f,ram%,oname$,0,xsp%*2,Y%,28
50070base%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
50080ram%!12=ram%!12-Y%*xwords%+A%*xwords%
50090base%!(10*4)=5<<27 OR nx<<1 OR ny<<14 OR 1:base%+=base%!(8*4)
50100WHEN -7:xwords%=xsp%*3+3ANDNOT3:sz%=xwords%*ysp%:Y%=ysp%
50110A%=Y%:PROCgetoutput(sz%,64,xwords%,Y%)
50120ram%!4=0:ram%!8=16:ram%!12=16:SYS&2e,&109,ram%
50130SYS&2e,&10f,ram%,oname$,0,xsp%*3,Y%,28
50140base%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
50150ram%!12=ram%!12-Y%*xwords%+A%*xwords%
50160base%!(10*4)=panic<<27 OR nx<<1 OR ny<<14 OR 1:base%+=base%!(8*4)
50170no magic number yet for new format 24bpp sprites
50180WHEN -8:xwords%=xsp%*4:sz%=xwords%*ysp%:Y%=ysp%
50190A%=Y%:PROCgetoutput(sz%,64,xwords%,Y%)
50200ram%!4=0:ram%!8=16:ram%!12=16:SYS&2e,&109,ram%
50210SYS&2e,&10f,ram%,oname$,0,xsp%*4,Y%,28
50220base%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
50230ram%!12=ram%!12-Y%*xwords%+A%*xwords%
50240base%!(10*4)=6<<27 OR nx<<1 OR ny<<14 OR 1:base%+=base%!(8*4)
50250OTHERWISE:xwords%=xsp%/size%+3.9999ANDNOT3:sz%=xwords%*ysp%:X%=xsp%:Y%=ysp%
50260IFncol=1 THEN
50270CASE m$ OF
50280WHEN"C":!rowinc=xwords%:xwords%=xwords%*4:sz%=xwords%*ysp%:X%=xsp%*4:Y%=ysp%*4
50290WHEN"T":!rowinc=xwords%:xwords%=xwords%*3:sz%=xwords%*ysp%:X%=xsp%*4:Y%=ysp%*3
50300WHEN"D":!rowinc=xwords%:xwords%=xwords%*2:sz%=xwords%*ysp%:X%=xsp%*2:Y%=ysp%*2
50310ENDCASE
50320ENDIF
50330A%=Y%:PROCgetoutput(sz%,2048+64,xwords%,Y%)
50340ram%!4=0:ram%!8=16:ram%!12=16:SYS&2e,&109,ram%
50350SYS&2e,&10f,ram%,oname$,(ncol<63)AND1,X%,Y%,spm
50360base%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
50370ram%!12=ram%!12-Y%*xwords%+A%*xwords%
50380pal%=base%+11*4:base%+=base%!(8*4)
50390CASE ncol OF
50400WHEN 256
50410!(pal%-8)+=2048:!(pal%-12)+=2048:base%+=2048:!(ram%+12)+=2048:!(pal%-44)+=2048
50420FORZ%=0TO255:B%=Z%ORZ%<<8ORZ%<<16:B%=B%<<8
50430pal%!(Z%*8)=B%:pal%!(Z%*8+4)=B%:NEXT
50440WHEN 255
50450!(pal%-8)+=2048:!(pal%-12)+=2048:base%+=2048:!(ram%+12)+=2048:!(pal%-44)+=2048
50460FORZ%=0TO255:B%=palette%!(Z%<<2)<<8
50470pal%!(Z%*8)=B%:pal%!(Z%*8+4)=B%:NEXT
50480WHEN 15
50490CASE m$ OF
50500WHEN "R"
50510FORZ%=0TO15:PROCcol(Z%,palette%!(Z%<<2)AND&F0F0F0):NEXT
50520WHEN "D"
50530FORZ%=0TO7:A%=0:IFZ%AND1 A%+=&F0
50540IFZ%AND2 A%+=&F000
50550IFZ%AND4 A%+=&F00000
50560PROCcol(Z%,A%):NEXT
50570WHEN "T"
50580FORZ%=0TO15:A%=Z%<<4:PROCcol(Z%,A%ORA%<<8ORA%<<16):NEXT
50590OTHERWISE
50600FORZ%=0TO15:A%=(Z%AND7)/7*15+.2<<4:PROCcol(Z%,A%ORA%<<8ORA%<<16):NEXT
50610ENDCASE
50620WHEN 3
50630CASEm$ OF
50640WHEN "C"
50650PROCcol(0,0):PROCcol(1,&F0F000):PROCcol(2,&F000F0):PROCcol(3,&F0F0)
50660WHEN "R"
50670FORZ%=0TO3:PROCcol(Z%,palette%!(Z%<<2)AND&F0F0F0):NEXT
50680OTHERWISE
50690FORZ%=0TO3:A%=Z%*5<<4:PROCcol(Z%,A%ORA%<<8ORA%<<16):NEXT
50700ENDCASE
50710WHEN 1:PROCcol(0,0):PROCcol(1,&F0F0F0)
50720ENDCASE
50730ENDCASE
50750IFflex% THEN
50770ELSE
50780IFworkspace%<0 THEN
50790P%=END:[OPT 0:STR r13,P%+16:MOVS Pc,r14:]:CALLEND
50800END=END+32*1024+HIMEM-P%!16
50810ELSE
50830ENDIF
50840ENDIF
50850LOCAL ERROR
50860ON ERROR LOCAL:RESTORE ERROR:PROCSave:ERROR ERR,REPORT$+" internal ("+STR$ERL+")"
50870SYS"Hourglass_LEDs",3
50880ysamp%=1:nl%()=0:step%=4*(col+1)
50890addr%=base%*size%:rowstep%=xwords%*size%:colstep%=1:dist%=xsp%-1
50900IFm=-3ORm=-5ORm=-6 dist%=dist%*2
50910IFm=-4ORm=-7 dist%=dist%*3
50920IFm=-8 dist%=dist%*4
50930IFrotate% THEN
50940odist%=dist%:SWAP colstep%,rowstep%:SWAP hflip%,vflip%
50950IFrotate%=1 THEN
50960addr%+=(ysp%-1)*colstep%:colstep%=-colstep%:dist%=(ysp%-1)*colstep%
50970ELSE
50980addr%+=dist%:rowstep%=-rowstep%:dist%=(ysp%-1)*colstep%
50990ENDIF
51000IFm=-3ORm=-5ORm=-6 colstep%=colstep%/2:rowstep%=rowstep%*2
51010IFm=-4ORm=-7 colstep%=colstep%/3:rowstep%=rowstep%*3
51020IFm=-8 colstep%=colstep%/4:rowstep%=rowstep%*4
51030ENDIF
51040IFhflip% THEN
51050addr%+=dist%:dist%=-dist%:colstep%=-colstep%
51060ENDIF
51070IFvflip% THEN
51080IFrotate% THEN
51090addr%+=odist%*rotate%:rowstep%=-rowstep%
51100ELSE
51110addr%+=(ysp%-1)*rowstep%:rowstep%=-rowstep%
51120ENDIF
51130ENDIF
51140outlim%=(base%+xwords%*Y%)*size%-1:oddcolstep%=-colstep%:oddstep%=-step%
51150IForder% PROCadjustpalette(1/ydiv%/xdiv%,0)
51160IFsy%=y% AND sx%=x% AND range%=FALSE AND sharpen%=FALSE AND equal%=FALSE THEN
51170IFdither% THEN
51180FORyr%=0 TO y%-1:SYShour%,yr%*100DIVy%:IFaddr%>outlim% PROCflushoutput
51190W%=EVAL(r$+"(cl%())"):cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
51200IFyr%AND1 THEN
51210CALLfs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
51220ELSE
51230A%+=dist%:CALLfs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
51240ENDIF
51250NEXT
51260ELSE
51270I%=step%:FORyr%=0TOy%-1:SYShour%,yr%*100DIVy%:IFaddr%>outlim% PROCflushoutput
51280W%=EVAL(r$+"(cl%())"):B%=x%:A%=addr%:addr%+=rowstep%:CALLfs%,colstep%,cl%(1,0),I%,A%,I%,B%
51290NEXT
51300ENDIF
51310ELSE
51320IFequal% THEN
51330PROCrewind:Havg%=SUM(vals%())/256/(col+1):DIM new%(256,col)
51340FORB%=0TOcol:R%=0:Hint%=0:FORZ%=0TO256:L%=R%:Hint%+=vals%(Z%,B%)
51350WHILEHint%>Havg%:Hint%-=Havg%:R%+=1:ENDWHILE
51360new%(Z%,B%)=(L%+R%)/2*F/256
51370NEXT:NEXT
51380ENDIF
51390IFsharpen% THEN
51400IForder% THEN
51410yread%=sy%-1:W%=EVAL(r$+"(rm1%())"):IFequal% PROCfit2(rm1%())
51420FORB%=0TOcol:rm1%(0,B%)=rm1%(1,B%):rm1%(sx%+1,B%)=rm1%(sx%,B%):NEXT
51430ELSE
51440yread%=y%-1:PROCscaledpixelrow(rm1%()):IFequal% PROCfit(rm1%())
51450FORB%=0TOcol:rm1%(0,B%)=rm1%(1,B%):rm1%(x%+1,B%)=rm1%(x%,B%):NEXT
51460ENDIF
51470rm2%()=rm1%()
51480ENDIF
51490IForder% THEN
51500FORyr%=0 TO y%-1
51510SYShour%,yr%*100DIVy%:IFaddr%>outlim% PROCflushoutput
51520IFsy%=y% THEN
51530PROCsharppixelrow(cl%())
51540ELSE
51550ysamp%-=1:IFysamp%=0 PROCsharppixelrow(xl%()):ysamp%=ymul%
51560IFydiv%=1 THEN
51570cl%()=xl%()
51580ELSE
51590IFysamp%>=ydiv% THEN
51600ysamp%-=ydiv%:cl%()=xl%()*ydiv%
51610ELSE
51620cl%()=xl%()*ysamp%:Y%=ydiv%-ysamp%:ysamp%=0
51630REPEAT
51640IFysamp%=0 PROCsharppixelrow(xl%()):ysamp%=ymul%
51650IFysamp%>Y% THEN
51660ysamp%-=Y%:xl2%()=xl%()*Y%:cl%()=cl%()+xl2%():Y%=0
51670ELSE
51680Y%-=ysamp%:xl2%()=xl%()*ysamp%:cl%()=cl%()+xl2%():ysamp%=0
51690ENDIF
51700UNTIL Y%=0
51710ENDIF
51720ysamp%+=1
51730ENDIF
51740ENDIF
51750cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
51760IFyr%AND1 THEN
51770CALLfs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
51780ELSE
51790A%+=dist%:CALLfs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
51800ENDIF
51810NEXT
51820ELSE
51830FORyr%=0 TO y%-1
51840SYShour%,yr%*100DIVy%:IFaddr%>outlim% PROCflushoutput
51850IFsharpen% THEN
51860IFyread% yread%-=1:PROCscaledpixelrow(rm%()):IFequal% PROCfit(rm%())
51870FORB%=0TOcol:rm%(0,B%)=rm%(1,B%):rm%(x%+1,B%)=rm%(x%,B%):NEXT
51880CALL sharp%,cl%(1,0),rm%(1,0),rm1%(1,0),rm2%(1,0),totvals%
51890SWAP rm2%(),rm1%():rm1%()=rm%()
51900ELSE
51910PROCscaledpixelrow(cl%()):IFequal% PROCfit(cl%())
51920ENDIF
51930cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
51940IFyr%AND1 THEN
51950CALLfs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
51960ELSE
51970A%+=dist%:CALLfs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
51980ENDIF
51990NEXT
52000ENDIF
52010ENDIF
52020cputime%=TIME-cputime%
52030PROCSave
52040=0
52050DEF PROCsrchdevlist
52060[OPT Z
52090CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
52100MOV R0,R4,LSR #(bits-k%):CMP R0,#1<<k%:MOVCS R0,#(1<<k%)-1 
52110CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
52120MOV R3,R5,LSR #(bits-k%):CMP R3,#1<<k%:MOVCS R3,#(1<<k%)-1:ORR R0,R0,R3,LSL #k% 
52130CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
52140MOV R3,R6,LSR #(bits-k%):CMP R3,#1<<k%:MOVCS R3,#(1<<k%)-1:ORR R0,R0,R3,LSL #k%*2 
52170STMFD SP !,{R8,R9,R10,R11}
52180LDR r3,ictloc
52190LDR r2,[r3,r0,LSL #2]
52210MOV r14,r2,lsr #24 
52220CMP r14,#4
52230ADDCC r2,r3,r0,lsl #2 
52240BICCS r2,r2,#&ff000000 
52250LDRB r0,[r2],#1 
52260SUBS r14,r14,#1
52270BEQ gotit
52290ADD r3,r0,r0,lsl #1
52300ADD r3,r7,r3,lsl #2
52310LDMIA r3,{r8,r9,r10}
52320SUBS r8,r8,r4
52330RSBMI r8,r8,#0
52340MOV r8,r8,lsr #bits/2 
52350SUBS r9,r9,r5
52360RSBMI r9,r9,#0
52370MOV r9,r9,lsr #bits/2 
52380SUBS r10,r10,r6
52390RSBMI r10,r10,#0
52400MOV r10,r10,lsr #bits/2 
52410MUL r3,r8,r8
52420MUL r11,r9,r9
52430ADD r11,r11,r11,LSL #2
52440ADD r3,r3,r3,LSL #1
52450ADD r3,r3,r11,LSL #1
52460MLA r11,r10,r10,r3 
52480.srchlist
52490LDRB r3,[r2],#1
52500ADD R8,R3,R3,LSL #1
52510ADD R8,R7,R8,LSL #2
52520LDMIA R8,{R8,R9,R10}
52530SUBS R9,R5,R9
52540RSBMI R9,R9,#0
52550MOV R3,R9,LSR #bits/2
52560MUL R9,R3,R3
52570ADD r9,r9,r9,LSL #2
52580CMP R11,R9,LSL #1
52590BCC srchquick
52600SUBS R8,R4,R8
52610RSBMI R8,R8,#0
52620MOV R3,R8,LSR #bits/2
52630MUL R8,r3,r3
52640ADD r8,r8,r8,LSL #1
52650ADD r8,r8,r9,LSL #1
52660SUBS R10,R6,R10
52670RSBMI R10,R10,#0
52680MOV R3,R10,LSR #bits/2
52690MLA R10,R3,R3,R8
52700CMP R10,R11
52710MOVCC R11,R10
52720LDRCCB R0,[r2,#-1]
52730.srchquick
52740SUBS R14,R14,#1
52750BNE srchlist
52760.gotit
52770ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
52780LDMIA R3,{R8,R9,R10}
52790SUB R4,R4,R8:SUB R5,R5,R9:SUB R6,R6,R10
52800LDMFD r13!,{R8,R9,R10,R11}
52810]
52820ENDPROC
52830DEF PROCgetoutput(A%,E%,B%,RETURN C%)
52840IFA%>max% AND rotate%=FALSE AND vflip%=FALSE THEN
52850C%=max%DIVB%+1:A%=xwords%*C%+E%:first%=TRUE:o%=OPENOUTf$
52860ELSE
52870A%+=E%
52880ENDIF
52890IFspritearea%<0 THEN
52900ram%=FNcreatearea(A%):IFram%=-1 ram%=FNdim(A%)
52910ELSE
52920ram%=spritearea%
52930ENDIF
52940!ram%=A%
52950ENDPROC
52970DEF FNcreatearea(size%)
52980LOCAL ERROR
52990areanumber%=0
53000ON ERROR LOCAL:=-1
53010SYS &20066,0,-1,size%,-1,%10000000,size%,0,0,"ChangeFSI sprite" TO ,areanumber%,,areabase%;V%
53020IFV%AND1 THENareanumber%=0:=-1
53080SYS "OS_ReadDynamicArea",areanumber% TO ,areasize%
53090IF areasize%<size% PROCremovearea:ERROR 42,"Couldn't create area"
53100=areabase%
53120DEF PROCremovearea
53130IFareanumber% SYS "OS_DynamicArea",1,areanumber%:areanumber%=0
53140ENDPROC
53160DEF FNcachedim(size%)
53170LOCAL ERROR
53180cacheareanumber%=0
53190ON ERROR LOCAL:=-1
53200SYS &20066,0,-1,size%,-1,%10000000,size%,0,0,"ChangeFSI cache" TO ,cacheareanumber%,,cacheareabase%;V%
53210IFV%AND1 THENcacheareanumber%=0:=-1
53220SYS "OS_ReadDynamicArea",cacheareanumber% TO ,cacheareasize%
53230IF cacheareasize%<size% PROCremovecachearea:ERROR 42,"Couldn't create area"
53240=cacheareabase%
53260DEF PROCremovecachearea
53270IFcacheareanumber% SYS "OS_DynamicArea",1,cacheareanumber%:cacheareanumber%=0
53280ENDPROC
53300DEF PROCflushoutput
53310IFspritearea%<0 ANDoksave% THEN
53320A%=base%:IFfirst% A%=ram%+4:first%=FALSE
53330SYS12,2,o%,A%,addr%DIVsize%-A%
53340ENDIF
53350addr%=base%*size%
53360ENDPROC
53370DEF PROCclose
53380IFc% IFflag=3600 SYS"PhotoCD_Close",pcdh%,1
53390IFc% CLOSE#c%:c%=0:IFscrapf% scrapf%=FALSE:OSCLI"Remove <Wimp$Scrap>"
53400IFcc% CLOSE#cc%:cc%=0
53410IFccc% CLOSE#ccc%:ccc%=0
53420PROCremovecachearea
53430ENDPROC
53440DEF PROCSave
53450PROCclose
53460CASE m OF
53470WHEN -1:IFspritearea%<0 ANDoksave% THEN
53480IFo% PROCflushoutput ELSESYS"OS_File",10,f$,&004,,ram%,ram%+sz%
53490ENDIF
53500WHEN -2:o%=OPENOUTf$:BPUT#o%,pnm$
53510CASE pnm$ OF
53520WHEN "P1"
53530BPUT#o%,"# "+f$+".pbm (options "+oname$+")"
53540BPUT#o%,STR$xsp%+" "+STR$ysp%
53550FORY%=0TOysp%-1:B%=base%+Y%*xwords%
53560FORX%=0TOxsp%-1:IFB%?(X%>>3)AND(1<<(X%AND7)) BPUT#o%,"1"; ELSEBPUT#o%,"0";
53570NEXT
53580BPUT#o%,""
53590NEXT
53600WHEN "P4"
53610BPUT#o%,"# "+f$+".pbm (options "+oname$+") binary encoded"
53620BPUT#o%,STR$xsp%+" "+STR$ysp%
53630FORX%=0TO255:code%?X%=X%<<7 OR X%<<5AND&40 OR X%<<3AND&20 OR X%<<1AND&10 OR X%>>1AND8 OR X%>>3AND4 ORX%>>5AND2 ORX%>>7:NEXT
53640FORY%=0TOysp%-1:B%=base%+Y%*xwords%
53650FORX%=0TOxsp%-1STEP8:BPUT#o%,code%?(B%?(X%>>3)):NEXT
53660NEXT
53670WHEN "P2"
53680BPUT#o%,"# "+f$+".pgm (options "+oname$+")"
53690BPUT#o%,STR$xsp%+" "+STR$ysp%
53700BPUT#o%,"15"
53710FORY%=0TOysp%-1:B%=base%+Y%*xwords%
53720FORX%=0TOxsp%-1:C%=B%?(X%>>1):IFX%AND1 C%=C%>>4 ELSEC%=C%AND15
53730BPUT#o%," "+STR$C%;
53740NEXT
53750BPUT#o%,""
53760NEXT
53770WHEN "P5"
53780BPUT#o%,"# "+f$+".pgm (options "+oname$+") binary encoded"
53790BPUT#o%,STR$xsp%+" "+STR$ysp%
53800BPUT#o%,"15"
53810FORY%=0TOysp%-1:B%=base%+Y%*xwords%
53820FORX%=0TOxsp%-1:C%=B%?(X%>>1):IFX%AND1 C%=C%>>4 ELSEC%=C%AND15
53830BPUT#o%,C%
53840NEXT
53850NEXT
53860ENDCASE
53870CLOSE#o%:o%=0
53880IFpnm$="P2"ORpnm$="P1" OSCLI"Settype "+f$+" &FFF"
53890WHEN -3:o%=OPENOUTf$:BPUT#o%,pnm$
53900BPUT#o%,"# "+f$+".pcm (options "+oname$+") binary encoded 15bpp (5bits r,g,b)"
53910BPUT#o%,STR$xsp%+" "+STR$ysp%
53920BPUT#o%,"31"
53930SYS12,2,o%,ram%,xsp%*ysp%*2
53940CLOSE#o%:o%=0
53950WHEN -4:o%=OPENOUTf$:IFpnm$="IRLAM"THEN
53960BPUT#o%,"Irlam 24: "+STR$xsp%+" "+STR$ysp%
53970FORY%=0TOysp%-1:B%=ram%+Y%*xwords%
53980FORX%=0TOxsp%*3-1STEP3:BPUT#o%,B%?X%:NEXT
53990B%+=1:FORX%=0TOxsp%*3-1STEP3:BPUT#o%,B%?X%:NEXT
54000B%+=1:FORX%=0TOxsp%*3-1STEP3:BPUT#o%,B%?X%:NEXT
54010NEXT
54020ELSE
54030BPUT#o%,pnm$
54040IFpnm$="P6" THEN
54050BPUT#o%,"# "+f$+".ppm (options "+oname$+") binary encoded 24bpp r,g,b"
54060ELSE
54070BPUT#o%,"# "+f$+".ppm (options "+oname$+") "+STR$(p6bits*3)+"bpp r,g,b"
54080ENDIF
54090BPUT#o%,STR$xsp%+" "+STR$ysp%
54100BPUT#o%,STR$(2^p6bits-1)
54110IFpnm$="P6" THEN
54120SYS12,2,o%,ram%,xsp%*ysp%*3
54130ELSE
54140FORY%=0TOysp%-1:B%=ram%+Y%*xwords%
54150FORX%=0TOxsp%-1:C%=B%!(X%*3):BPUT#o%," "+STR$(C%AND255)+" "+STR$((C%>>8)AND&FF)+" "+STR$((C%>>16)AND255);
54160NEXT
54170BPUT#o%,""
54180NEXT
54190ENDIF
54200ENDIF
54210CLOSE#o%:o%=0
54220IFpnm$="P3" OSCLI"Settype "+f$+" &FFF"
54230WHEN -5:o%=OPENOUTf$:BPUT#o%,pnm$
54240BPUT#o%,"# "+f$+".pcm (options "+oname$+") binary encoded 15bpp (5bits y,u,v)"
54250BPUT#o%,STR$xsp%+" "+STR$ysp%
54260BPUT#o%,"31 27 21"
54270SYS12,2,o%,ram%,xsp%*ysp%*2
54280CLOSE#o%:o%=0
54290OTHERWISE
54300IFncol=1ANDm$="T" THEN
54310FORX%=(xsp%*4-1)DIV8*8+6TO6STEP-8
54320SYS&2e,&12e,ram%,oname$,X%
54330SYS&2e,&12e,ram%,oname$,X%
54340NEXT
54350ENDIF
54360IFspritearea%<0 ANDoksave% THEN
54370IFo% PROCflushoutput ELSESYS&2e,&10c,ram%,f$
54380ENDIF
54390ENDCASE
54400IFo% CLOSE#o%:o%=0:OSCLI"settype "+f$+" &ff9":PROCremovearea
54410SYS"Hourglass_Off"
54420ENDPROC
54430DEFPROCdefpal
54440FORC%=0TO255
54450r%(C%)=(C%AND7 OR (C%AND16)>>1)/15*F
54460g%(C%)=(C%AND3 OR (C%AND&60)>>3)/15*F
54470b%(C%)=(C%AND3 OR (C%AND8)>>1 OR (C%AND128)>>4)/15*F
54480NEXT
54490ENDPROC
54500DEFPROCdefpal2
54510r%(0)=F:g%(0)=F:b%(0)=F
54520ENDPROC
54530DEFPROCdefpal4
54540r%()=15,10,5,0:FORC%=0TO3:r%(C%)=r%(C%)/15*F:NEXT
54550g%()=r%():b%()=r%()
54560ENDPROC
54570DEFPROCdefpal16
54580r%()=15,13,11,9,7,5,3,0,0,14, 0,13,14,5,15, 0
54590g%()=15,13,11,9,7,5,3,0,4,14,12, 0,14,8,11,10
54600b%()=15,13,11,9,7,5,3,0,9, 0, 0, 0,11,0, 0,15
54610FORC%=0TO15:r%(C%)=r%(C%)/15*F:g%(C%)=g%(C%)/15*F:b%(C%)=b%(C%)/15*F:NEXT
54620ENDPROC
54630DEFPROCipal63
54640PTR#c%=&38:DIM rpal%(15),gpal%(15),bpal%(15)
54650FORC%=0TO15:D%=BGET#c%
54660rpal%(C%)=BGET#c%>>4 AND 7
54670gpal%(C%)=BGET#c%>>4 AND 3
54680bpal%(C%)=BGET#c%>>4 AND 7
54690D%=FNW:NEXT
54700FORC%=0TO255
54710r%(C%)=(rpal%(C%AND15)OR(C%AND16)>>1)/15*F
54720g%(C%)=(gpal%(C%AND15)OR(C%AND&60)>>3)/15*F
54730b%(C%)=(bpal%(C%AND15)OR(C%AND128)>>4)/15*F
54740NEXT
54750ENDPROC
54760DEFPROCipal(D%)
54770PTR#c%=&38
54780FORC%=0TOD%-1:D%=BGET#c%
54790r%(C%)=(BGET#c%>>4)/15*F
54800g%(C%)=(BGET#c%>>4)/15*F
54810b%(C%)=(BGET#c%>>4)/15*F
54820D%=FNW:NEXT
54830ENDPROC
54840DEF PROCnewropal(D%)
54850PTR#c%=&38
54860FORC%=0TOD%-1:D%=FNW
54870r%(C%)=(D%AND255)/255*F
54880g%(C%)=(D%>>8AND255)/255*F
54890b%(C%)=(D%>>16AND255)/255*F
54900D%=FNW:NEXT
54910ENDPROC
54920DEF PROCnopal
54930FORC%=0TO255:r%(C%)=C%/255*F:NEXT:g%()=r%():b%()=r%()
54940ENDPROC
54950DEF PROCcol(A%,B%)
54960B%=B%<<8ORB%<<4OR&10:pal%!(A%*8)=B%:pal%!(A%*8+4)=B%
54970ENDPROC
54980DEF FNbits(A%)
54990IFA%=1 THEN="1 bit per pixel" ELSE=STR$A%+" bits per pixel"
55000DEF FNfits
55010LOCALZ%,s$
55020FORZ%=1TO80:s$+=CHR$BGET#c%:NEXT
55030=s$
55040DEF FNuc(a$)
55050LOCALZ%,z$,b$
55060FORZ%=1TOLENa$
55070z$=MID$(a$,Z%,1)
55080IFz$>="a"IFz$<="z" z$=CHR$(ASCz$-32)
55090b$+=z$:NEXT
55100=b$
55110DEF FNdim(A%)
55120LOCAL B%
55130IFflex% THEN
55140B%=nextlocation%:A%=A%+3ANDNOT3:nextlocation%+=A%
55150SYS"Wimp_SlotSize",-1,-1 TO currentslot%
55160IFcurrentslot%+&8000<nextlocation% THEN
55170SYS "Wimp_SlotSize",nextlocation%-&8000,-1 TO currentslot%
55180IFcurrentslot%+&8000<nextlocation% ERROR 42,"Can't get enough memory to process image"
55190ENDIF
55200ELSE
55210IFworkspace%<0 THEN
55220DIM B% A%
55230ELSE
55240B%=workspace%:workspace%+=A%+3ANDNOT3:IFworkspace%>worklimit% ERROR42,"Not enough workspace"
55250ENDIF
55260ENDIF
55270=B%
55290DEF FNW=FNW1(c%)
55300DEF FNW1(c%)=BGET#c% OR BGET#c%<<8 OR BGET#c%<<16 OR BGET#c%<<24
55320DEF FNHW=BGET#c% OR BGET#c%<<8
55340DEF FNbeHW=BGET#c%<<8 OR BGET#c%
55360DEF FNbeW=BGET#c%<<24 OR BGET#c%<<16 OR BGET#c%<<8 OR BGET#c%
55380DEF FNtiff(T%)
55390CASE T% OF
55400WHEN 1,7:=BGET#c%
55410WHEN 2:LOCALs$,t$:REPEATs$+=t$:t$=CHR$BGET#c%:UNTILt$=CHR$0:=s$
55420WHEN 3:IFbigendian THEN=BGET#c%<<8 OR BGET#c% ELSE=BGET#c% OR BGET#c%<<8
55430WHEN 4,9:IFbigendian THEN=FNbeW ELSE=FNW1(c%)
55440WHEN 6:=(BGET#c%<<24)>>24
55450WHEN 8:=(FNtiff(3)<<16)>>16
55460ENDCASE
55470ERROR 42,"Silly TIFF tag:"+STR$T%
55480DEF PROCnextstrip
55490rowstogo%=striprows%
55500stripptr+=1:PTR#c%=st%(stripptr)
55510IFcompression=5 THEN
55520!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
55530!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
55540ENDIF
55550IFcompression=5 OR compression=32773 THEN
55560!incacheptr=datacache%:!numlefttogo=cache%
55570SYS12,4,c%,datacache%,cache%
55580ENDIF
55590ENDPROC
55600DEF PROCwatford(wtsx%,RETURN rep%,RETURN wt%,X%,c%)
55610CALLrlexpand%,wtsx%,rep%,wt%,X%
55620REPEAT C%=BGET#c%:CASE C%>>6 OF
55630WHEN 0:?X%=C%:X%+=1:wt%=C%
55640WHEN 1:wt%-=1:rep%=C%AND63:CALLrlexpand%,wtsx%,rep%,wt%,X%
55650WHEN 2:rep%=C%AND63:CALLrlexpand%,wtsx%,rep%,wt%,X%
55660WHEN 3:wt%+=1:rep%=C%AND63:CALLrlexpand%,wtsx%,rep%,wt%,X%
55670ENDCASE
55680UNTILX%=wtsx%
55690ENDPROC
55700DEF PROCwatfordcache(wtsx%,RETURN rep%,RETURN wt%,X%)
55710CALLrlexpand%,wtsx%,rep%,wt%,X%
55720REPEAT C%=USRbytefromcache%:CASE C%>>6 OF
55730WHEN 0:?X%=C%:X%+=1:wt%=C%
55740WHEN 1:wt%-=1:rep%=C%AND63:CALLrlexpand%,wtsx%,rep%,wt%,X%
55750WHEN 2:rep%=C%AND63:CALLrlexpand%,wtsx%,rep%,wt%,X%
55760WHEN 3:wt%+=1:rep%=C%AND63:CALLrlexpand%,wtsx%,rep%,wt%,X%
55770ENDCASE
55780UNTILX%=wtsx%
55790ENDPROC
55800DEF PROCreduce(RETURN A%,RETURN B%)
55810LOCAL C%,D%:C%=A%:D%=B%
55820REPEAT IFC%<D% SWAP C%,D%
55830C%=C%MODD%
55840UNTILC%=0
55850A%=A%DIVD%:B%=B%DIVD%
55860ENDPROC
55870DEF PROCreadpixelrow(z%())
55880IFrows% THEN
55890rows%-=1:IFsx%=x% THEN
55900W%=EVAL(r$+"(z%())")
55910ELSE
55920W%=EVAL(r$+"(xp%())"):CALLxsample%,xmul%,xdiv%,z%(1,0),xp%(1,0),x%
55930ENDIF
55940ELSE
55950z%()=0
55960ENDIF
55970ENDPROC
55980DEF PROCsharppixelrow(z%())
55990IFrows% THEN
56000rows%-=1:IFsx%=x% THEN
56010IFsharpen% PROCsharp(z%()) ELSEW%=EVAL(r$+"(z%())"):IFequal% PROCfit2(z%())
56020ELSE
56030IFsharpen% PROCsharp(xp%()) ELSEW%=EVAL(r$+"(xp%())"):IFequal% PROCfit2(xp%())
56040CALLxsample%,xmul%,xdiv%,z%(1,0),xp%(1,0),x%
56050ENDIF
56060ELSE
56070z%()=0
56080ENDIF
56090ENDPROC
56100DEF PROCsharp(z%())
56110yread%-=1:IFyread% W%=EVAL(r$+"(rm%())"):IFequal% PROCfit2(rm%())
56120FORB%=0TOcol:rm%(0,B%)=rm%(1,B%):rm%(sx%+1,B%)=rm%(sx%,B%):NEXT
56130CALL sharp%,z%(1,0),rm%(1,0),rm1%(1,0),rm2%(1,0),totvals2%
56140SWAP rm2%(),rm1%():rm1%()=rm%()
56150ENDPROC
56160DEF PROCscaledpixelrow(z%())
56170IFsy%=y% THEN
56180PROCreadpixelrow(z%())
56190ELSE
56200ysamp%-=1:IFysamp%=0 PROCreadpixelrow(xl%()):ysamp%=ymul%
56210IFydiv%=1 THEN
56220z%()=xl%()
56230ELSE
56240IFysamp%>=ydiv% THEN
56250ysamp%-=ydiv%:z%()=xl%()*ydiv%
56260ELSE
56270LOCALY%:z%()=xl%()*ysamp%:Y%=ydiv%-ysamp%:ysamp%=0
56280REPEAT
56290IFysamp%=0 PROCreadpixelrow(xl%()):ysamp%=ymul%
56300IFysamp%>Y% THEN
56310ysamp%-=Y%:xl2%()=xl%()*Y%:z%()=z%()+xl2%():Y%=0
56320ELSE
56330Y%-=ysamp%:xl2%()=xl%()*ysamp%:z%()=z%()+xl2%():ysamp%=0
56340ENDIF
56350UNTIL Y%=0
56360ENDIF
56370ysamp%+=1
56380ENDIF
56390ENDIF
56400ENDPROC
56410DEF PROCfit(z%())
56420CALLhistequal%,z%(1,0),new%(0,0),x%
56430ENDPROC
56440DEF PROCfit2(z%())
56450CALLhistequal%,z%(1,0),new%(0,0),sx%
56460ENDPROC
56470DEF PROCadjustpalette(mul,sub)
56480IFmul=1 AND sub=0 ENDPROC
56490FORC%=0TO255
56500r%(C%)=(r%(C%)-sub)*mul+1:g%(C%)=(g%(C%)-sub)*mul+1:b%(C%)=(b%(C%)-sub)*mul+1
56510NEXT
56520IFham THEN
56530FORC%=0TO15*4STEP4:ltable!C%=(ltable!C%-sub)*mul+1:NEXT
56540ENDIF
56550IFinput>400 THEN
56560FORC%=0TO255
56570rpal%(C%)=(rpal%(C%)-sub)*mul+1:gpal%(C%)=(gpal%(C%)-sub)*mul+1
56580bpal%(C%)=(bpal%(C%)-sub)*mul+1:table%(C%)=(table%(C%)-sub)*mul+1
56590NEXT
56600ENDIF
56610ENDPROC
56620DEF PROCcachesize(A%)
56630SYS&20023,"ChangeFSI$Cache",A%,-1 TO,,Z
56640IFZ<>0 THEN
56650SYS35,"ChangeFSI$Cache",A%,20 TO,,Z:A%?Z=13:cache%=VAL$A%
56660IFINSTR($A%,"K")ORINSTR($A%,"k") cache%=cache%*1024
56670ELSE
56680cache%=128*1024
56690ENDIF
56700ENDPROC
56710DEF PROCrefill
56720IFstriprows%>0 PROCnextstrip
56730SYS12,4,c%,datacache%,cache%:rowstogo%=cacherows%:buff%=datacache%
56740IFinput=24 IFrbo%>=0 rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
56750ENDPROC
56760DEF PROCrefillpcd
56770IFpcdblk%!4>=sy% ENDPROC
56780IFpcdblk%!12>=sy% pcdblk%!12=sy%
56800SYS"PhotoCD_GetBlock",pcdh%,,pcdblk%,datacache%,pcdindex%,,,pcdcache%,pcdcachesize%
56810rowstogo%=cacherows%:buff%=datacache%:pcdblk%!4+=cacherows%:pcdblk%!12+=cacherows%
56820rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
56830ENDPROC
56850DEF FN8(z%())
56860CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),buff%:buff%+=rowbytes%
56870rowstogo%-=1:IFrowstogo%=0 PROCrefill
56880=TRUE
56900DEF FN16(z%())
56910CALLmappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),buff%,buff%
56920buff%+=rowbytes%:rowstogo%-=1:IFrowstogo%=0 PROCrefill
56930=TRUE
56950DEF FN24(z%())
56960CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
56970rb%+=rowbytes%:gb%+=rowbytes%:bb%+=rowbytes%
56980rowstogo%-=1:IFrowstogo%=0 PROCrefill
56990=TRUE
57010DEF FN300(z%())
57020SYS12,4,cc%,pbuff%,sx%:CALLmappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),pbuff%,buff%
57030buff%+=rowbytes%:rowstogo%-=1:IFrowstogo%=0 PROCrefill
57040=TRUE
57060DEF FN400(z%())
57070CALLreadline%,plbytes%,rep%,pix%,plbuff%
57080CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
57090=TRUE
57110DEF FN500(z%())
57120CALL LZWdecode%,table%(0),c%,plbuff%,sx%
57130CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
57140=TRUE
57160DEF FN800(z%())
57170PROCwatfordcache(wtsx%,rep%,wt%,plbuff%)
57180CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
57190=TRUE
57210DEF FN801(z%())
57220PROCwatford(wtsx1%,rep1%,wt1%,buff%,c%)
57230PROCwatford(wtsx2%,rep2%,wt2%,wtsx1%,cc%)
57240PROCwatford(wtsx3%,rep3%,wt3%,wtsx2%,ccc%)
57250CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
57260=TRUE
57280DEF FN901(z%())
57290SYS12,4,c%,rb%,sx%:SYS12,4,cc%,gb%,sx%:SYS12,4,ccc%,bb%,sx%
57300CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
57310=TRUE
57330DEF FN902(z%())
57340CALLunpack%,buff%:CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
57350buff%+=rowbytes%:rowstogo%-=1:IFrowstogo%=0 PROCrefill
57360=TRUE
57380DEF FN1000(z%())
57390X%=buff%:IFrep%>0 C%=?pa%:CALLrlexpand%,pasx%,rep%,C%,X%:pa%+=1
57400IFrep2%>0 C%=?pa%:CALLrlexpand%,pasx%,rep2%,C%,X%:pa%+=1
57410REPEAT C%=BGET#c%:IFC%=0 THEN
57420rep%=BGET#c%:C%=?pa%:CALLrlexpand%,pasx%,rep%,C%,X%:IFrep%=0 pa%+=1
57430ELSE
57440rep2%=C%AND15:rep%=C%>>4:IFrep% C%=?pa%:CALLrlexpand%,pasx%,rep%,C%,X%:IFrep%=0 pa%+=1
57450IFX%<pasx% IFrep2% C%=?pa%:CALLrlexpand%,pasx%,rep2%,C%,X%:IFrep2%=0 pa%+=1
57460ENDIF
57470UNTILX%=pasx%
57480CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
57490=TRUE
57510DEF FN1001(z%())
57520X%=buff%:IFrep%>0 C%=?pa%:CALLrlexpand%,pasx%,rep%,C%,X%:pa%+=1
57530REPEAT rep%=BGET#c%:C%=?pa%:CALLrlexpand%,pasx%,rep%,C%,X%:IFrep%=0 pa%+=1
57540UNTILX%=pasx%:CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
57550=TRUE
57570DEF FN1100(z%())
57580CALLreadline%,plbytes%,rep%,pix%,plbuff%
57590CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
57600=TRUE
57620DEF FN1400(z%())
57630IFvrep% THEN
57640vrep%-=1
57650ELSE
57660G%=buff%:FORX%=1TOplanes%:G%+=rowbytes%:F%=G%-rowbytes%
57670REPEAT C%=BGET#c%:IFC%=0 THEN
57680C%=BGET#c%:IFC%=0 THEN
57690C%=BGET#c%:vrep%=BGET#c%-1
57700ELSE
57710D%=F%:SYS12,4,c%,F%,patlen%:F%+=patlen%
57720IFC%>1 FORN%=2TOC%:FORE%=0TOpatlen%-1:F%?E%=D%?E%:NEXT:F%+=patlen%:NEXT
57730ENDIF
57740ELSE
57750IFC%=128 THEN
57760C%=BGET#c%:SYS12,4,c%,F%,C%:F%+=C%
57770ELSE
57780?F%=(C%AND&80)<>0:FORE%=F%+1TOF%+(C%AND&7F):?E%=?F%:NEXT:F%+=C%AND&7F
57790ENDIF
57800ENDIF:UNTILF%>=G%:NEXT
57810CALLplancnv%,rowbytes%,buff%,pbuff%
57820ENDIF
57830CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
57840=TRUE
57860DEF FN1501(z%())
57870CALLreadiff%,rowbytes%,plbuff%:rowstogo%-=1:IFrowstogo%=0 PROCnextstrip
57880CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
57890=TRUE
57910DEF FN1505(z%())
57920CALL LZWdecode%,table%(0),c%,plbuff%,rowbytes%
57930rowstogo%-=1:IFrowstogo%=0 PROCnextstrip
57940CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
57950=TRUE
57970DEF FN1515(z%())
57980CALL LZWdecode%,table%(0),c%,plbuff%,rowbytes%
57990rowstogo%-=1:IFrowstogo%=0 PROCnextstrip
58000CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
58010=TRUE
58030DEF FN1600(z%())
58040CALLplancnv%,realrowbytes%,buff%,pbuff%:buff%+=rowbytes%
58050CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
58060rowstogo%-=1:IFrowstogo%=0 PROCrefill
58070=TRUE
58090DEF FN1601(z%())
58100FORX%=0TOplanes%-1:F%=plbuff%+X%*rowbytes%:CALLreadiff%,rowbytes%,F%:NEXT
58110IFmasking% CALLreadiff%,rowbytes%,pbuff%
58120CALLplancnv%,rowbytes%,plbuff%,pbuff%
58130CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
58140=TRUE
58160DEF FN1850(z%())
58170CALLreadiff%,rowbytes%,plbuff%
58180CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
58190=TRUE
58210DEF FN1851(z%())
58220CALLreadiff%,rowbytes%,plbuff%
58230CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
58240=TRUE
58260DEF FN1900(z%())
58270CALLreadline%,plbytes%,rep%,pix%,plbuff%
58280CALLplancnv%,rowbytes%,plbuff%,pbuff%
58290CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
58300=TRUE
58320DEF FN2000(z%())
58330X%=buff%:REPEAT
58340C%=BGET#c%:IFC%<128 THEN
58350C%+=1:SYS12,4,c%,X%,C%:X%+=C%
58360ELSE
58370F%=X%:?F%=BGET#c%:FORC%=C%TO128STEP-1:?X%=?F%:X%+=1:NEXT
58380ENDIF
58390UNTILX%=buff%+rowbytes%
58400CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
58410=TRUE
58430DEF FN2001(z%())
58440X%=buff%:REPEAT
58450C%=BGET#c%:IFC%<128 THEN
58460C%=(C%+1)*2:SYS12,4,c%,X%,C%:X%+=C%
58470ELSE
58480F%=X%:SYS12,4,c%,X%,2:FORC%=C%TO128STEP-1:!X%=!F%:X%+=2:NEXT
58490ENDIF
58500UNTILX%=buff%+rowbytes%
58510CALLmappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),buff%,buff%
58520=TRUE
58540DEF FN2002(z%())
58550X%=buff%:REPEAT
58560C%=BGET#c%:IFC%<128 THEN
58570C%=(C%+1)*step24:SYS12,4,c%,X%,C%:X%+=C%
58580ELSE
58590F%=X%:SYS12,4,c%,X%,step24:FORC%=C%TO128STEP-1:!X%=!F%:X%+=step24:NEXT
58600ENDIF
58610UNTILX%=buff%+rowbytes%
58620CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
58630=TRUE
58650DEF FN2250(z%())
58660CALLmappix%,z%(1,0),rpal%(0),r%(0),gpal%(0),g%(0),bpal%(0),b%(0),table%(0),buff%
58670buff%+=rowbytes%:rowstogo%-=1:IFrowstogo%=0 PROCrefill
58680=TRUE
58700DEF FN2300(z%())
58710IFclrfirst% FORX%=0TOsx%-1:rb%?X%=?back%:gb%?X%=back%?1:bb%?X%=back%?2:NEXT
58720IFvrep% THEN
58730vrep%-=1
58740ELSE
58750LOCAL ERROR
58760ON ERROR LOCAL vrep%=-1:CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%:=TRUE
58770E%=FALSE:REPEAT C%=BGET#c%:D%=BGET#c%:IFC%AND&40 D%=FNHW
58780CASE C%AND&3f OF
58790WHEN 1:E%=TRUE:vrep%=D%-1:IFvrep%<0 vrep%=FALSE
58800WHEN 2:ccol%=back%?D%:cbuf%=rb%+sx%*D%:IFD%=255 cbuf%=alpha%
58810WHEN 3:FORX%=0TOD%-1:cbuf%?X%=ccol%:NEXT:cbuf%+=D%
58820WHEN 5:SYS12,4,c%,cbuf%,D%+1:cbuf%+=D%+1:IFD%+1AND1 IFBGET#c%
58830WHEN 6:C%=FNHW:FORX%=0TOD%:cbuf%?X%=C%:NEXT:cbuf%+=D%+1
58840ENDCASE
58850UNTILE%
58860ENDIF
58870CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
58880=TRUE
58900DEF FN2401(z%())
58910CALLbm_rle8,rowbytes%,plbuff%
58920CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
58930=TRUE
58950DEF FN2402(z%())
58960CALLbm_rle4,rowbytes%,plbuff%
58970CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
58980=TRUE
59000DEF FN3000(z%())
59010CALLmappix%,z%(1,0),rpal%(0),r%(0),gpal%(0),g%(0),bpal%(0),b%(0),table%(0),buff%
59020buff%+=rowbytes%:rowstogo%-=1:IFrowstogo%=0 PROCrefill
59030=TRUE
59040DEF FN3500(z%())
59050=TRUE
59060DEF FN3600(z%())
59070CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
59080rb%+=rowbytes%:gb%+=rowbytes%:bb%+=rowbytes%
59090rowstogo%-=1:IFrowstogo%=0 PROCrefillpcd
59100=TRUE
59110DEF FN3708(z%())
59120A%=jpegspace%:jpegy%-=1:B%=jpegy%:rb%=USR(jpeg%+4)
59130CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%
59140=TRUE
59150DEF FN3724(z%())
59160A%=jpegspace%:jpegy%-=1:B%=jpegy%:rb%=USR(jpeg%+4):gb%=rb%+1:bb%=rb%+2
59170CALLmappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
59180=TRUE
59190DEF PROCrewind
59200rows%=sy%:CASE flag OF
59210WHEN 0:PTR#c%=st%
59220WHEN 100:PTR#c%=4
59230WHEN 200:PTR#c%=st%:rep%=0
59240WHEN 300:PTR#c%=st%:PTR#cc%=stcc%
59250WHEN 400:PTR#c%=st%:rep%=0
59260WHEN 500:FORI%=0TOclearcode%-1:table%(I%)=I%:NEXT:PTR#c%=st%
59270!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
59280!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
59290WHEN 501:buff%=datacache%
59300WHEN 600:PTR#c%=&380
59310WHEN 700:PTR#c%=st%
59320WHEN 800:PTR#c%=0:rep%=0:wt%=0
59330WHEN 801:PTR#c%=0:PTR#cc%=0:PTR#ccc%=0:rep1%=0:wt1%=0:rep2%=0:wt2%=0:rep3%=0:wt3%=0
59340WHEN 900:PTR#c%=0
59350WHEN 901:PTR#c%=0:PTR#cc%=0:PTR#ccc%=0
59360WHEN 902:PTR#c%=st%
59370WHEN 1000:PTR#c%=st%:pa%=ctable%:rep%=0:rep2%=0
59380WHEN 1100:PTR#c%=st%:rep%=0
59390WHEN 1200:PTR#c%=1600
59400WHEN 1300:PTR#c%=0
59410WHEN 1301:PTR#c%=0:PTR#cc%=0:PTR#ccc%=0
59420WHEN 1400:PTR#c%=st%:vrep%=0
59430WHEN 1500:PTR#c%=st%(0):rowstogo%=striprows%:stripptr=0
59440IFcompression=5 THEN
59450!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
59460!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
59470ENDIF
59480WHEN 1600:PTR#c%=st%
59490WHEN 1700:PTR#c%=16
59500WHEN 1800,1850:PTR#c%=st%
59510WHEN 1900:PTR#c%=128:rep%=-1
59520WHEN 2000:PTR#c%=st%
59530WHEN 2100:PTR#c%=7
59540WHEN 2200:PTR#c%=st%
59550WHEN 2250:PTR#c%=st%
59560WHEN 2300:PTR#c%=st%:vrep%=0
59570WHEN 2400:PTR#c%=st%
59580WHEN 2500:PTR#c%=st%
59590WHEN 2600:PTR#c%=st%
59600WHEN 2700:PTR#c%=st%
59610WHEN 2800:PTR#c%=st%
59620WHEN 2900:PTR#c%=st%
59630WHEN 3000:PTR#c%=0
59640WHEN 3600:pcdblk%!4=0
59650WHEN 3700:jpegy%=sy%
59660ENDCASE
59670IFcache% THEN
59680IFflag=3600 THEN
59690pcdblk%!12=cacherows%:PROCrefillpcd:IFcache%>=filesize% rowstogo%=-1
59700ELSE
59710IFcache%<filesize% SYS12,4,c%,datacache%,cache%:rowstogo%=cacherows%
59720ENDIF
59730buff%=datacache%
59740IFcachebytes% !incacheptr=datacache%:!numlefttogo=cache%
59750IFinput=24 IFrbo%>=0 rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
59760ENDIF
59770IFflag=1500 IFcompression=5 rowstogo%=striprows%
59780ENDPROC

� > ChangeFSI
�areanumber%=0
�ș"OS_GetEnv" � A$
��A$," -wimp") �
�� z%(1),p%(2),s%(3),m$(22)
�"A%=�"<ChangeFSI$Dir>.Messages"
�(B%=-1:� B%+=1:m$(B%)=�#A%:��#A%:�#A%
�startfile%=�A$,6)<>"-wimp "
�� taskid%4:$taskid%="TASK"
�7ș "Wimp_Initialise",200,!taskid%,m$(20) � version%
�Wimp    = (1<<18) + (3<<6)
�%CreateW = Wimp+1:OpenW   = Wimp+5
�%CloseW  = Wimp+6:RedrawW = Wimp+8
&UpdateW = Wimp+9:GetR%   = Wimp+10
&GetW    = Wimp+11:SetI   = Wimp+13
&GetI    = Wimp+14:GetP   = Wimp+15
"&Drag    = Wimp+16:CrMenu = Wimp+20
,DcMenu  = Wimp+21
68ș "OS_SWINumberFromString",,"Wimp_PollIdle" � Poll%
@7ș "OS_SWINumberFromString",,"XOS_SpriteOp" � spop%
J?ș "OS_SWINumberFromString",,"OS_ReadMonotonicTime" � Time%
TJș "OS_SWINumberFromString",,"ColourTrans_ReturnColourNumber" � ctran%
^Sș "XOS_SWINumberFromString",,"DragASprite_Start" � dstart%;f%:�f%� 1 dstart%=0
h5ș "OS_Byte",161,&1C � ,,f%:�(f% � 2)=0 dstart%=0
rnextlocation%=�
|,ș "Wimp_SlotSize",-1,-1 � originalslot%
��locale_initialise
�� version%>=300 �
�Y� q% 255,ifactors% 15,factors% 15,pixtrans% 255,paltemp% 1023,buffer% 255,idata% 1023
��
�a� z% 1223,q% 255,ifactors% 15,factors% 15,pixtrans% 255,paltemp% 1023,buffer% 255,idata% 2599
��
�scrap%=�
�!� version%<300 sidata%=idata%
�)sprite%=�:sar%=�:saved%=�:z$=�12,�13)
�ș "OS_Byte",161,&8C � ,,f%

�f% � 1 �
7ș"Wimp_OpenTemplate",,"<ChangeFSI$Dir>.3dTemplate"
�
&6ș"Wimp_OpenTemplate",,"<ChangeFSI$Dir>.Templates"
0�
D� �
N6� � ș"Wimp_CloseTemplate":� 0,�$+" (code "+Þ+")"
b�version%>=300 �
l� z% �largest_buffer
v#indsize%=�size_indirect("Info")
�� info_wind% indsize%
�Kș"Wimp_LoadTemplate",,z%,info_wind%,info_wind%+indsize%,-1,"Info"+z$,0
��
�Kș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Info"+z$,0 � ,,idata%
��
�4ș CreateW,,z% � infow%:$!(z%+88+7*32+20)=m$(21)
��version%>=300 �
�)indsize%=�size_indirect("Processing")
�� proc_wind% indsize%
�Nș"Wimp_LoadTemplate",,z%,proc_wind%,proc_wind%+indsize%,-1,"Processing",0
��
�Nș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Processing",0 � ,,idata%
�
ș CreateW,,z% � proc%
Ip%(0)=!(z%+88+8*32+20):p%(1)=!(z%+88+9*32+20):p%(2)=!(z%+88+10*32+20)
*�version%>=300 �
4%indsize%=�size_indirect("Output")
>� outp_wind% indsize%
HMș"Wimp_LoadTemplate",,z%,outp_wind%,outp_wind%+indsize%,-1,"Output"+z$,0
R�
\Mș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Output"+z$,0 � ,,idata%
f�
pPș CreateW,,z% � output%:admode%=!(z%+88+17*32+20):adspcl%=!(z%+88+16*32+20)
��version%>=300 �
�&indsize%=�size_indirect("Scaling")
�� scal_wind% indsize%
�Nș"Wimp_LoadTemplate",,z%,scal_wind%,scal_wind%+indsize%,-1,"Scaling"+z$,0
��
�Nș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Scaling"+z$,0 � ,,idata%
��
�6ș CreateW,,z% � scalew%:adscale%=!(z%+88+1*32+20)
�3s%(0)=!(z%+88+10*32+20):s%(1)=!(z%+88+11*32+20)
�3s%(2)=!(z%+88+12*32+20):s%(3)=!(z%+88+13*32+20)
��version%>=300 �
�#indsize%=�size_indirect("Save")
� save_wind% indsize%
Kș"Wimp_LoadTemplate",,z%,save_wind%,save_wind%+indsize%,-1,"Save"+z$,0
�
$Kș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Save"+z$,0 � ,,idata%
.�
83ș CreateW,,z% � save%:adsave%=!(z%+88+1*32+20)
L�version%>=300 �
V%indsize%=�size_indirect("Sprite")
`� sprt_wind% indsize%
jMș"Wimp_LoadTemplate",,z%,sprt_wind%,sprt_wind%+indsize%,-1,"Sprite"+z$,0
t�
~Mș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Sprite"+z$,0 � ,,idata%
��
�Pș CreateW,,z% � sinfo%:adsname%=!(z%+88+5*32+20):adsbytes%=!(z%+88+8*32+20)
�Hadsx%=!(z%+88+7*32+20):adsy%=!(z%+88+9*32+20):adsm%=!(z%+88+6*32+20)
��version%>=300 �
�%indsize%=�size_indirect("Source")
�� src_wind% indsize%
�Kș"Wimp_LoadTemplate",,z%,src_wind%,src_wind%+indsize%,-1,"Source"+z$,0
��
�Mș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Source"+z$,0 � ,,idata%
��
�5ș CreateW,,z% � srcinfo%:adsrc%=!(z%+88+0*32+20)

�version%>=300 �
$indsize%=�size_indirect("Range")
� range_wind% indsize%
(Nș"Wimp_LoadTemplate",,z%,range_wind%,range_wind%+indsize%,-1,"Range"+z$,0
2�
<Lș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Range"+z$,0 � ,,idata%
F�
P5ș CreateW,,z% � raninfo%:adran%=!(z%+88+0*32+20)
d�version%>=300 �
n#indsize%=�size_indirect("Zoom")
x� zoom_wind% indsize%
�Kș"Wimp_LoadTemplate",,z%,zoom_wind%,zoom_wind%+indsize%,-1,"Zoom"+z$,0
��
�Kș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Zoom"+z$,0 � ,,idata%
��
�Hș CreateW,,z% � zoom%:z%(0)=!(z%+88+4*32+20):z%(1)=!(z%+88+5*32+20)
��version%>=300 �
�"indsize%=�size_indirect("Pic")
�� pic_wind% indsize%
�Hș"Wimp_LoadTemplate",,z%,pic_wind%,pic_wind%+indsize%,-1,"Pic"+z$,0
��
�?ș"Wimp_LoadTemplate",,z%,idata%,sidata%+2600,-1,"Pic"+z$,0
��
(ș CreateW,,z% � pic%:adtitle%=z%!72
� �
"ș"Wimp_CloseTemplate"
,@!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=%11000000000010
6:$(q%+24)="!"+m$(20):ș"Wimp_CreateIcon",,q% � iconbar%
@)A%=�"<ChangeFSI$Dir>.Choices":�A%=0 �
JDfast%=�:statescale%=%10000000100:stateproc%=0:stateoutput%=&a008
TC$p%(0)="":$p%(1)="2"+decimal_point$+"2":$p%(2)="24":$adspcl%=""
^=$admode%="28":$s%(0)="1":$s%(1)="4":$s%(2)="1":$s%(3)="4"
h�
r2�#A%,fast%,statescale%,stateproc%,stateoutput%
|/�#A%,$p%(0),$p%(1),$p%(2),$admode%,$adspcl%
�5$p%(1)=�locale_convert($p%(1),".",decimal_point$)
�$�#A%,$s%(0),$s%(1),$s%(2),$s%(3)
��#A%
��
�q%!12=1<<21
�=!q%=scalew%:�I%=0�9:�statescale%>>I%�1 q%!8=1<<21 �q%!8=0
�q%!4=I%:ș SetI,,q%:�
�3�I%=10�13:�statescale%>>I%�1 q%!8=1<<21 �q%!8=0
�q%!4=I%+6:ș SetI,,q%:�
�:!q%=proc%:�I%=0�7:�stateproc%>>I%�1 q%!8=1<<21 �q%!8=0
�q%!4=I%:ș SetI,,q%:�
�?!q%=output%:�I%=0�15:�stateoutput%>>I%�1 q%!8=1<<21 �q%!8=0
�q%!4=I%:ș SetI,,q%:�
)�showscaletofit:$z%(0)="1":$z%(1)="1"
 ș "OS_UpdateMEMC" � oldmemc
&?� � ș"OS_UpdateMEMC",oldmemc,&700:�errorbox:ș CrMenu,,-1 
0ș Drag,,-1
:1�sprite% ș "Wimp_SlotSize",originalslot%,-1
DBF$="":�startfile% startfile%=�:F$=�A$,�A$,"-wimp")+6):�callFSI
N�
Xș Poll%,1,q% � A%
bȎ A% �
l%� 1 :�sprite% �redraw_window(!q%)
vB� 2 :�open_window(!q%,q%!4,q%!8,q%!12,q%!16,q%!20,q%!24,q%!28)
�2� 3 :ș &400c3,,q%:nextlocation%=�:�removearea
�:ș "Wimp_SlotSize",originalslot%,-1:saved%=�:sprite%=�
�5� 6 :�checkmouse(!q%,q%!4,q%!8,q%!12,q%!16,q%!20)
�F� 7 :ș GetP,,q%:dw%=q%!12:di%=q%!16:�dstart% ș"DragASprite_Stop"
�<q%!12=0:q%!16=1:q%!20=dw%:q%!24=di%:q%!28=!q%:q%!32=q%!4
�2q%!36=!sar%+3:q%!40=&ff9:$adsave%=�ZS(adsave%)
�foo%=�$adsave%,"."):ȕfoo%
�2$adsave%=�$adsave%,foo%+1):foo%=�$adsave%,".")
��
�2$(q%+44)=$adsave%+�0:!q%=44+(�$adsave%+1+3��3)
�3ș "Wimp_SendMessage",17,q%,dw%,di%:myref%=q%!8
�� 8 :�key(!q%,q%!4,q%!24)
�� 9 :�menuselect(q%)
� 17,18:�receive(q%)
�
� �
 �
*Q%=�
4�=&4000000
>S� � � � �:�"Set ChangeFSI$ReturnCode "+�$+" (code "+Þ+")":�removearea:�:�=Q%:�
H1foo%=0:A%=�ChangeFSI(A$,-1,-1,0,-1,-1,foo%,�)
R+�removearea:*unset ChangeFSI$ReturnCode
\
�:�=Q%
f�
p�
�� �locale_initialise
�� p%
�(ș "Territory_ReadSymbols",-1,0 � p%
�decimal_point$=�?p%
��
�� �locale_convert(n$,f$,t$)
�� f$=t$ :=n$
�� i%
�i%=�n$,f$)
�$� i%<>0 :=�n$,i%-1)+t$+�n$,i%+1)
�=n$
	� �size_indirect(name$)
	� size%
	5ș "Wimp_LoadTemplate",,0,,,,name$+z$,0 � ,,size%
	$
=size%
	8� �winsize_indirect(name$)
	B� size%
	L4ș "Wimp_LoadTemplate",,0,,,,name$+z$,0 � ,size%
	V
=size%
	�� �largest_buffer
	�#� largest_tem%,size%,here%,name
	�
� name 12
	�$$name="*":here%=0:largest_tem%=0
	�;ș "Wimp_LoadTemplate", ,0,,,,name,0 � ,size%,,,,,here%
	�ȕ here%
	�+� largest_tem%<size% largest_tem%=size%
	�$name= "*"
	�?ș "Wimp_LoadTemplate", ,0,,,,name,here% � ,size%,,,,,here%
	��
	�=largest_tem%
� �receive(q%)

Ȏ q%!16 �
� 0:�checkandfinish
� 1:�q%!20<>save% �
(A!q%=60:q%!12=q%!8:q%!16=2:q%!36=-1:$(q%+44)="<Wimp$Scrap>"+�0
2/ș"Wimp_SendMessage",17,q%,q%!4:scrap%=q%!8
<�
F8� 2:șspop%,&10C,sar%,�ZS(q%+44):$adsave%=�ZS(q%+44)
P7q%!12=q%!8:q%!16=3:ș "Wimp_SendMessage",18,q%,q%!4
Z� q%!36<>-1 saved%=�
dș CrMenu,,-1
n1� 3:F$=�ZS(q%+44):�scrap% scrap%=scrap%=q%!12
x6q%!12=q%!8:q%!16=4:ș"Wimp_SendMessage",17,q%,q%!4
��callFSI
�� 5:Ȏ q%!40 �
�� &ff0,&c85
�6q%!12=q%!8:q%!16=4:ș"Wimp_SendMessage",17,q%,q%!4
�F$=�ZS(q%+44):�callFSI
��
�B�9,&400C1:�sprite% �getmodeinfo:ș&400d1,pic%,0,-32767,32767,0
��showscaletofit
�H� 10:ș"XOS_ReadVarVal","ChangeFSI$Dir",paltemp%,256,0,3 �,,bootlen%
�paltemp%?bootlen%=13
��#q%!20,"Run "+$paltemp%
��
��
� �callFSI
A$=�deducemode:A%=47
" �geticonstate(output%,12) �
,A$+=$adspcl%
6�
@ �geticonstate(output%,13) �
J>�geticonstate(output%,2)��geticonstate(output%,8) A$+="R"
T�
^ș53,�A$,3 �,,A%
h�A%=63 �
r&�geticonstate(output%,3) A$="27t"
|&�geticonstate(output%,9) A$="12t"
��
��A%=255 A$+="d"
��
��
��
�/A$="garbage "+F$+" <ChangeFSI$Dir>.Foo "+A$
�>�geticonstate(scalew%,1) A$+=" "+�tofitx+": "+�tofity+":"
�(�geticonstate(scalew%,5) A$+=" 1:2"
�,�geticonstate(scalew%,4) A$+=" 1:2 1:1"
�,�geticonstate(scalew%,3) A$+=" 1:1 1:2"
��geticonstate(scalew%,9) �
�%�$s%(0) A$+=" "+$s%(0) �A$+=" 1"
�A$+=":"+$s%(1)
%�$s%(2) A$+=" "+$s%(2) �A$+=" 1"
A$+=":"+$s%(3)
�
&,�geticonstate(scalew%,0) A$+=" -nosize"
0.�geticonstate(scalew%,18) A$+=" -noscale"
:+�geticonstate(scalew%,19) A$+=" -lock"
D�geticonstate(scalew%,6) �
N>�geticonstate(scalew%,16) A$+=" -rotate" �A$+=" -rotate-"
X�
b+�geticonstate(scalew%,7) A$+=" -hflip"
l+�geticonstate(scalew%,8) A$+=" -vflip"
v)�geticonstate(proc%,0) A$+=" -range"
�)�geticonstate(proc%,1) A$+=" -equal"
�,�geticonstate(proc%,2) A$+=" -nodither"
�*�geticonstate(proc%,3) A$+=" -invert"
�,�geticonstate(proc%,4) A$+=" -brighten"
�0�geticonstate(proc%,5) A$+=" -black"+$p%(0)
�T�geticonstate(proc%,6) A$+=" -gamma"+�locale_convert($p%(1),decimal_point$,".")
�2�geticonstate(proc%,7) A$+=" -sharpen"+$p%(2)
�%info$="":range$=m$(19):cputime%=0
�6�sprite% !q%=pic%:ș &400c3,,q%:saved%=�:sprite%=�
�nextlocation%=�
�3ș "Wimp_SlotSize",originalslot%,-1:�removearea
�1�fast% ș "OS_UpdateMEMC",&300,&700 � oldmemc
�4A%=�ChangeFSI(A$,-1,-1,nextlocation%,0,0,sar%,0)

*�fast% ș "OS_UpdateMEMC",oldmemc,&700

%�scrap% scrap%=�:ș"OS_File",6,F$

�A%<2 � sar%<>0 �

 &ș spop%,&10d,sar%,pixtrans%,255,1

*6n$=�ZS(pixtrans%):ș spop%,&128,sar%,n$ �,,,x,y,,m

4.$adsx%=�x:$adsy%=�y:$adsm%=�m:$adsname%=n$

>&$adsbytes%=�sar%!12:$adran%=range$

HT$adsrc%=info$+m$(0)+�(cputime%�100)+decimal_point$+�"0"+�(cputime%�100),2)+m$(1)

R'A%=�F$:ȕ�"."+F$,A%,1)<>".":A%-=1:�

\$adsave%=�"."+F$,A%+1)

fș&35,m,4 �,,nx:x=x<<nx

pș&35,m,5 �,,ny:y=y<<ny

z#saved%=�:sprite%=�:�getmodeinfo

�pic%=�create_window(x,y,F$)

��popup(pic%,-1)

��

��

�� �checkandfinish

�7�saved% ��sprite% �removearea:ș "Wimp_CloseDown":�

�-!buffer%=�:$(buffer%+4)=m$(2)+F$+m$(3)+�0

�5ș "Wimp_ReportError",buffer%,%10111,m$(20) � ,A%

�+�A%=1 �removearea:ș "Wimp_CloseDown":�

��

�� �key(handle%,icon%,key%)
�key%=&1b ș CrMenu,,-1:�
Ȏ handle% �
� zoom%:Ȏ key% �
$C� 13:�dozoom(icon%-4,0):�icon%=4 ș &400d2,zoom%,5,,,-1,�$z%(0)
.�icon%=5 ș CrMenu,,-1
8�
B"� &18e,&18f:�dozoom(icon%-4,0)
L0ș &400d2,zoom%,icon%�1,,,-1,�$z%(icon%�5):�
V�
`� save%
j�key%=13 �savesprite:�
t
� output%
~�showscaletofit
��key%=13 ș CrMenu,,-1:�
��key%=&18e �key%=&18f �
�5icon%=icon%�1:key%=admode%:�icon%=16 key%=adspcl%
�)ș &400d2,output%,icon%,,,-1,�$key%:�
��
�� proc%:Ȏ key% �
�A� &18e,13:icon%+=1:�icon%>10 icon%=8:�key%=13 ș CrMenu,,-1:�
�.ș &400d2,proc%,icon%,,,-1,�$p%(icon%-8):�
�%� &18f:icon%-=1:�icon%<8 icon%=10
�.ș &400d2,proc%,icon%,,,-1,�$p%(icon%-8):�
��
�� scalew%:Ȏ key% �
B� &18e,13:icon%+=1:�icon%>13 icon%=10:�key%=13 ș CrMenu,,-1:�

1ș &400d2,scalew%,icon%,,,-1,�$s%(icon%-10):�
&� &18f:icon%-=1:�icon%<10 icon%=13
1ș &400d2,scalew%,icon%,,,-1,�$s%(icon%-10):�
(�
2�
<ș "Wimp_ProcessKey",key%
F�
Z� �savesprite
dș spop%,&10C,sar%,$adsave%
nș CrMenu,,-1
x�
�7� �checkmouse(mousex%,mousey%,b%,handle%,icon%,ob%)
��b%�2 �
�Ȏ handle% �
�|� pic%:�domenu(pic%,m$(4)+">sinfo%,"+m$(5)+">srcinfo%,"+m$(6)+">raninfo%,"+m$(7)+">zoom%,"+m$(8)+">save%,"+m$(9),m$(20))
��� -2:�domenu(101,m$(10)+">infow%,"+m$(11)+">scalew%,"+m$(12)+">proc%,"+m$(13)+">output%,"+m$(9)+","+m$(14)+":fast%AND1,"+m$(15)+","+m$(16),m$(20))
��
�rmenuhandle%=handle%
��
��b%�4 �
�Ȏ handle% �
�� zoom%:Ȏ icon% �
�� 0:�dozoom(0,1)
� 1:�dozoom(0,-1)
� 2:�dozoom(1,1)
� 3:�dozoom(1,-1)
"�
,�
6�
@�b%�1 �
JȎ handle% �
T� zoom%:Ȏ icon% �
^� 0:�dozoom(0,-1)
h� 1:�dozoom(0,1)
r� 2:�dozoom(1,-1)
|� 3:�dozoom(1,1)
��
��
��
��b%�5 �
�Ȏ handle% �
�� output%:Ȏ icon% �
�'� 0,1,2,3:�killcurrent(�(25+icon%))
�!� 4:�killcurrent("S16,90,90")
�!� 5:�killcurrent("S32,90,90")
�� 6:�killcurrent("0")
�� 7:�killcurrent("8")
�� 8:�killcurrent("12")
�� 9:�killcurrent("15")
"� 10:�killcurrent("S16,90,45")
"� 11:�killcurrent("S32,90,45")
�
&3�geticonstate(output%,15) $admode%=�deducemode
02!q%=output%:q%!4=17:q%!8=0:q%!12=0:ș SetI,,q%
:�showscaletofit
D� save%:Ȏ icon% �
N� 2:�savesprite
X�
bM� -2:�sprite% �getw(pic%):�open_window(pic%,x0%,y0%,x1%,y1%,scx%,scy%,-1)
l�
v�
�
�b%�&50 �
�Ȏ handle% �
�� save%:Ȏ icon% �
�� 0:�getw(save%)
� !q%=save%:q%!4=0:ș GetI,,q%
�!q%=save%:q%!4=5
�.q%!8+=bx%:q%!12+=by%:q%!16+=bx%:q%!20+=by%
�3q%!24=0:q%!28=0:q%!32=&7FFFFFFF:q%!36=&7FFFFFFF
�P�dstart% ș dstart%,%11000101,1,"file_ff9",q%+8,q%+24 �ș "Wimp_DragBox",,q%
��
��
��
��
� �dozoom(s%,a%)
�s%=0 �
 /$z%(0)=�(�$z%(0)+a%):�$z%(0)="0" $z%(0)="1"
*�
4/$z%(1)=�(�$z%(1)+a%):�$z%(1)="0" $z%(1)="1"
>�
H2!q%=zoom%:q%!4=4+s%:q%!8=0:q%!12=0:ș SetI,,q%
R/!q%=pic%:ș GetW,,q%:f%=q%!28:ș &400c3,,q%
\pic%=�create_window(x,y,F$)
f�popup(pic%,f%)
p�
�'� �domenu(handle%,menu$,menutitle$)
�menuhandle%=handle%
�%menuptr%=buffer%:indirect%=idata%
�i%=0
�menuptr%!20=44
�$menuptr%=menutitle$
�;menuptr%?12=7:menuptr%?13=2:menuptr%?14=7:menuptr%?15=0
�!menuptr%!16=200:menuptr%!24=0
�menuptr%+=28
�%� i1%=i%+1:i%=�menu$+",",",",i1%)
�8item$=�menu$,i1%,i%-i1%):�menuitem(item$):� item$=""
�#menuptr%!-24=(menuptr%!-24)�&80
�`�handle%=101 ș CrMenu,,buffer%,mousex%-64,96+8*44 �ș CrMenu,,buffer%,mousex%-32,mousey%+16
�
� �menuitem(text$)
$� text$="" �
.*flg%=0:submenu%=-1:I%=�text$,":"):�I%�
8)flg%=��text$,I%+1):text$=�text$,I%-1)
B�
LI%=�text$,">"):�I%�
V-submenu%=��text$,I%+1):text$=�text$,I%-1)
`�
jmenuptr%!0=flg%
tmenuptr%!4=submenu%
~A�text$=m$(9)�F$="" menuptr%!8=&07400021 �menuptr%!8=&07000021
�2�text$*16+8>buffer%!16 buffer%!16=�text$*16+8
��text$>12 �
�2menuptr%!8=menuptr%!8 � 256:menuptr%!16=�text$
�>menuptr%!12=indirect%:$indirect%=text$:indirect%+=�text$+1
��
�$(menuptr%+12)=text$
��
�menuptr%+=24
��
�� �menuselect(menus%)
�,ș GetP,,paltemp%:adjust%=paltemp%!8 � 1
-ș DcMenu,,buffer%,menus%,�200," ")�,,,a$

� a$="" ��
Ȏ menuhandle% �

� pic%
(Ȏ a$ �
2� m$(9):�callFSI
<�
F	� 101
PȎ a$ �
Z� m$(14):fast%=�fast%
d� m$(9):�callFSI
n� m$(15)
xFstatescale%=0:�I%=0�9:statescale%+=�geticonstate(scalew%,I%)<<I%:�
�<�I%=10�13:statescale%+=�geticonstate(scalew%,I%+6)<<I%:�
�Bstateproc%=0:�I%=0�7:stateproc%+=�geticonstate(proc%,I%)<<I%:�
�Istateoutput%=0:�I%=0�15:stateoutput%+=�geticonstate(output%,I%)<<I%:�
�!A%=�"<ChangeFSI$Dir>.Choices"
�2�#A%,fast%,statescale%,stateproc%,stateoutput%
�S�#A%,$p%(0),�locale_convert($p%(1),decimal_point$,"."),$p%(2),$admode%,$adspcl%
�$�#A%,$s%(0),$s%(1),$s%(2),$s%(3)
��#A%
�� m$(16):�checkandfinish
��
��
�0�adjust% �checkmouse(0,0,2,rmenuhandle%,0,0)
��
 � �create_window(x,y,title$)
+x=x*�$z%(0)��$z%(1):y=y*�$z%(0)��$z%(1)
" !z%=0:z%!4=-y:z%!8=x:z%!12=0
,$z%!40=0:z%!44=-y:z%!48=x:z%!52=0
6%�x<128 � y<128 z%?35=0 �z%?35=255
@)$adtitle%="":ș CreateW,,z% � handle%
J$adtitle%=title$
T=handle%
h� �popup(handle%,f%)
r1ș "OS_ReadModeVariable",-1,4 � ,,modexshift%
|1ș "OS_ReadModeVariable",-1,5 � ,,modeyshift%
�0ș "OS_ReadModeVariable",-1,11 � ,,rightscr%
�.ș "OS_ReadModeVariable",-1,12 � ,,topscr%
�Arightscr%=rightscr%<<modexshift%:topscr%=topscr%<<modeyshift%
��getw(handle%)
�9xo%=rightscr%/2-(x0%+x1%)/2:yo%=topscr%/2-(y0%+y1%)/2
�F�open_window(handle%,x0%+xo%,y0%+yo%,x1%+xo%,y1%+yo%,scx%,scy%,f%)
��
�>� �open_window(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)
��handle%=-1��
�q%!0=handle%:q%!28=bhandle%
�)q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1%
�q%!20=scx%:q%!24=scy%
ș OpenW,,q%
�
&� �getw(handle%)
0!q%=handle%:ș GetW,,q%
:+�info(q%+4):bhandle%=q%!28:flags%=q%!32
D�
X� �info(q%)
b=x0%=!q%:y0%=q%!4:x1%=q%!8:y1%=q%!12:scx%=q%!16:scy%=q%!20
lbx%=x0%-scx%:by%=y1%-scy%
v�
�� �redraw_window(handle%)
�� handle%=pic% �
�?!factors%=!ifactors%*�$z%(0):factors%!4=ifactors%!4*�$z%(0)
�Cfactors%!8=ifactors%!8*�$z%(1):factors%!12=ifactors%!12*�$z%(1)
�A�reduce(!factors%,factors%!8):�reduce(factors%!4,factors%!12)
�!q%=handle%
�ș RedrawW,,q% � more%
�,�info(q%+4):by%=by%-�(y*�$z%(0)��$z%(1))
�ȕ more%
�0ș spop%,&134,sar%,n$,bx%,by%,,factors%,spx%
�ș GetR%,0,q% � more%
��
�
�
 "� �geticonstate(handle%,icon%)
*&!q%=handle%:q%!4=icon%:ș GetI,,q%
4=q%!24>>21 � 1
H� �getmodeinfo
R>ș"XWimp_ReadPixTrans",&100,sar%,n$,,,,ifactors%,pixtrans%
\#ș spop%,&118,sar%,n$ � ,,sptr%
f� sptr%!32=44 �
p
palptr%=0
z�
�� grab%=0 � 2048-8 � 8
�(paltemp%!(grab%>>1)=sptr%!(grab%+44)
��
�palptr%=paltemp%
��
��Q%=0�255:pixtrans%?Q%=Q%:�
��sptr%!32=44+2048 �
�5�Q%=0�255:șctran%,palptr%!(Q%<<2)�pixtrans%?Q%:�
��
�:ș "ColourTrans_SelectTable",m,palptr%,-1,-1,pixtrans%
��
�6spx%=-1:�Q%=0�255:�pixtrans%?Q%<>Q% spx%=pixtrans%
��
�
� �deducemode
$� m,x,y
. �geticonstate(output%,15) �
8ș&35,-1,9 �,,m:�m>3 �
B#ș&35,-1,4 �,,x:ș&35,-1,5 �,,y
Lx=180/(2^x):y=180/(2^y)
V="S"+�(2^m)+","+�x+","+�y
`�
j=��
t�
~�
�
=$admode%
��
�=0
�� �showscaletofit
�� m,x,y
�$admode%=�deducemode
��?admode%=�"S" �
�)�$admode%,5)>��$admode%,8) x=6 �x=0
� �$admode%,2)>16 x+=5 �x+=4
�/ș&35,-1,11 �,,tofitx:ș&35,-1,12 �,,tofity
��
m=�$admode%

-ș&35,m,11 �,,tofitx:ș&35,m,12 �,,tofity
/ș&35,m,4 �,,x:ș&35,m,5 �,,y:�y>x x=6 �x=0
ș&35,m,9 �,,y:x+=y
(�
2?tofitx+=1:tofity+=1:$adscale%=m$(17)+�tofitx+m$(18)+�tofity
<=q%!12=1<<21:!q%=output%:�I%=0�11:�I%=x q%!8=1<<21 �q%!8=0
Fq%!4=I%:ș SetI,,q%:�
P�
d� �killcurrent(m$)
n"q%!12=1<<21:!q%=output%:q%!8=0
xq%!4=17:ș SetI,,q%
�$admode%=m$
��
�+ݤZS(I%)�A$:�A$+=�?I%:I%+=1:�?I%<14:=A$
�� �errorbox
�ș Drag,,-1
�2!buffer%=�:$(buffer%+4)=�$+" (code "+Þ+")"+�0
�2ș "Wimp_ReportError",buffer%,%11,m$(20) � ,A%
�+�A%=2 �removearea:ș "Wimp_CloseDown":�
��
�S� �ChangeFSI(A$,spritearea%,workspace%,worklimit%,oksave%,okinfo%,� ram%,fast%)
�M� A$(),r%(),g%(),b%(),rpal%(),gpal%(),bpal%(),table%(),cl%(),xl%(),xl2%()
�D� xp%(),rm%(),rm1%(),rm2%(),vals%(),nl%(),A%(),B%(),new%(),st%()
�$ȕ�A$,1)<>" "��A$<>0 A$=�A$,2):�
�ȕ�A$,1)=" " A$=�A$,2):�
�ȕ�A$,1)=" " A$=�A$):�
�uc(�A$,5))="-QUIT" �
.A$=�A$,7):ȕ�A$,1)<>" "��A$<>0 A$=�A$,2):�
ȕ�A$,1)=" " A$=�A$,2):�
&�
0 � A$(100):ARG%=0:B%=�A$," ")
:ȕ B%<>0
D+ARG%+=1:A$(ARG%)=�A$,B%-1):A$=�A$,B%+1)
Nȕ �A$,1)=" ":A$=�A$,2):�
XB%=�A$," ")
b�
l�A$<>"" ARG%+=1:A$(ARG%)=A$
vXinvert%=�:range%=�:sharpen%=�:info%=�:cache%=�:cacheareanumber%=0:dither%=�:black%=�
�Chist%=�:equal%=�:vflip%=�:hflip%=�:scale%=�:scaleo%=�:scrapf%=�
�6gamma=1:rotate%=�:max%=20000000:bright%=15:lock%=�
�rwt=.299:gwt=.587:bwt=.114
�
�ARG%<3 �
�J�"ChangeFSI interactive input (read FSIinfo for command line details)"
�?�"Source file: "s$,"Destination file: "f$,"Output mode: "m$
�/�"(X)Scale (e.g. 2:1): "xs$:�"Y Scale: "ys$
�8�"Info on input picture?"a$:�uc(�a$,1))="Y" info%=�
�;�"Invert picture colours?"a$:�uc(�a$,1))="Y" invert%=�
�=�"Compute histogram of input?"a$:�uc(�a$,1))="Y" hist%=�
�@�"Apply histogram equalisation?"a$:�uc(�a$,1))="Y" equal%=�
�G�"Expand input dynamic range?"a$:�uc(�a$,1))="Y" range%=�:equal%=�
�=�"Sharpen picture by (e.g. 12 for harsh, 24 for soft) "a$
�a$<>"" sharpen%=�a$
+�"Rotate?"a$:�uc(�a$,1))="Y" rotate%=1
scale%=�:scaleo%=�:fast%=�
 �
*
� A%=ARG%
46�uc(A$(ARG%))="-INFO" info%=�:A$(ARG%)="":ARG%-=1
>6�uc(A$(ARG%))="-HIST" hist%=�:A$(ARG%)="":ARG%-=1
H6�uc(A$(ARG%))="-LOCK" lock%=�:A$(ARG%)="":ARG%-=1
RA�uc(A$(ARG%))="-EQUAL" equal%=�:range%=�:A$(ARG%)="":ARG%-=1
\A�uc(A$(ARG%))="-RANGE" range%=�:equal%=�:A$(ARG%)="":ARG%-=1
f:�uc(A$(ARG%))="-INVERT" invert%=�:A$(ARG%)="":ARG%-=1
pD�uc(A$(ARG%))="-NOSCALE" scale%=�:scaleo%=�:A$(ARG%)="":ARG%-=1
z9�uc(A$(ARG%))="-NOSIZE" scale%=�:A$(ARG%)="":ARG%-=1
�<�uc(A$(ARG%))="-NODITHER" dither%=�:A$(ARG%)="":ARG%-=1
�=�uc(A$(ARG%))="-BRIGHTEN" bright%=16:A$(ARG%)="":ARG%-=1
�:�uc(A$(ARG%))="-ROTATE" rotate%=1:A$(ARG%)="":ARG%-=1
�<�uc(A$(ARG%))="-ROTATE-" rotate%=-1:A$(ARG%)="":ARG%-=1
�8�uc(A$(ARG%))="-VFLIP" vflip%=�:A$(ARG%)="":ARG%-=1
�8�uc(A$(ARG%))="-HFLIP" hflip%=�:A$(ARG%)="":ARG%-=1
�8�uc(A$(ARG%))="-NOMODE" fast%=�:A$(ARG%)="":ARG%-=1
�!�uc(�A$(ARG%),6))="-BLACK" �
�Fblack%=32:�A$(ARG%)>6 black%=��A$(ARG%),7):�black%>128 black%=128
�A$(ARG%)="":ARG%-=1
��
�!�uc(�A$(ARG%),6))="-GAMMA" �
�.gamma=2.2:�A$(ARG%)>6 gamma=��A$(ARG%),7)
A$(ARG%)="":ARG%-=1
�
#�uc(�A$(ARG%),8))="-SHARPEN" �
$2sharpen%=�:�A$(ARG%)>8 sharpen%=��A$(ARG%),9)
.A$(ARG%)="":ARG%-=1
8�
BC�uc(�A$(ARG%),4))="-RED" rwt=��A$(ARG%),5):A$(ARG%)="":ARG%-=1
LE�uc(�A$(ARG%),6))="-GREEN" gwt=��A$(ARG%),7):A$(ARG%)="":ARG%-=1
VD�uc(�A$(ARG%),5))="-BLUE" bwt=��A$(ARG%),6):A$(ARG%)="":ARG%-=1
`�uc(�A$(ARG%),4))="-MAX" �
jDmax%=��A$(ARG%),5):�A$(ARG%),"K")��A$(ARG%),"k") max%=max%*1024
tA$(ARG%)="":ARG%-=1
~�
��A%=ARG%
�2s$=A$(1):f$=A$(2):m$=A$(3):xs$=A$(4):ys$=A$(5)
��
��okinfo% �info%=�
��workspace%>=0 �
�flex%=�
��
�<�worklimit%=0 �flex%=� �flex%=�:nextlocation%=worklimit%
��
�"pnm$=�uc(m$):Ȏ �pnm$+",",3) �
��"AIM":m=-1:m$=""
�"�"P1,","P4,":m=-2:m$="":spm=18
#�"P2,","P5,":m=-2:m$="T":spm=20

=�"P3,","P6,":m=-4:pnm$=�pnm$,2):p6bits=8:I%=��m$,4):m$=""
�I%>0�I%<8 p6bits=I%
�"P15":m=-3:m$=""
(�"C15":m=-5:m$=""
2�"IRL":m=-4:m$="":p6bits=8
<�"S16":m=-6:m$=""
F�"S24":m=-7:m$="":p6bits=8
P�"S32":m=-8:m$="":p6bits=8
Z5:m=�m$:spm=m:m$=�uc(�m$,1)):�"CDRT",m$)=0 m$=""
d�
n�xs$="" � �xs$,1)="-" �
x#xmul%=1:xdiv%=1:ymul%=1:ydiv%=1
��
��ys$="" ys$=xs$
�'xmul%=�xs$:xdiv%=��xs$,�xs$,":")+1)
�'ymul%=�ys$:ydiv%=��ys$,�ys$,":")+1)
��
�&flag=-1:ș8,5,s$ � r0,,r2:dir=r0=2
�
�dir �
�Cpanic=�:ș8,5,s$+".raw" � r0,,r2:�r0=1 s$+=".raw":dir=�:panic=�
�1�panic ș8,5,s$+".red" � r0,,r2:�r0=1 panic=�
�!�panic � 42,"Directory given"
��
�>ftype=r2>>8 � &FFF:bits=28:F=2^bits:c%=0:cc%=0:ccc%=0:o%=0
�
�dir �
>c%=�(s$+".red"):�c%=0 � 42,"Red file "+s$+".red not found"
Ecc%=�(s$+".green"):�cc%=0 �42,"Green file "+s$+".green not found"
Dccc%=�(s$+".blue"):�ccc%=0 �42,"Blue file "+s$+".blue not found"
"�
,-c%=�s$:�c%=0 � 42,"File "+s$+" not found"
6�
@� �
J� � � � �:�close:� �,�$
T
� r%(255)
^� g%(255),b%(255)
hș&66f4d �;pcd%
rȎ ftype �
|� &FF9:flag=0
�.�"."+�uc(s$),".HIP.")���uc(s$),":HIP.") �
� flag=300:I%=��uc(s$),"HIP.")
�?�s$,I%)="LOP.":cc%=�s$:�cc%=0 �42,"Can't find Lop file "+s$
��
�+� &FF0:�#c%=0:S$="":�I%=1�4:S$+=��#c%:�
�&�S$="II*"+�0 flag=1500:bigendian=�
�)�S$="MM"+�0+"*" flag=1500:bigendian=�
�!� &DFA:flag=800:�dir flag=801
�� &DE2:flag=1000
� � &BE8:�(pcd%�1)=0 flag=3600
�� &7A0:flag=1200
�� &69d:flag=2000
�� &699:flag=700
 � &698:flag=100
 � &697:flag=1900
 � &691:flag=2600
 &� &690:flag=2500
 0� &666:flag=666
 :� &601:flag=3000
 D� &371:flag=3100
 N#� &300:flag=1300:�dir flag=1301
 X� 4:flag=900:�dir flag=901
 b� 6:flag=950
 l�
 v�flag=-1 �
 �%�#c%=0:S$="":�I%=1�22:S$+=��#c%:�
 ��S$,7)="FSIfile" flag=2100
 �)�flag=-1 �S$,8)="SIMPLE  " flag=2800
 �C�flag=-1 �uc(�S$,8))="MERCSOFT"��uc(�S$,8))="SNAPSHOT"flag=902
 �-�flag=-1 �uc(�S$,8))="MERCSOF1" flag=903
 �4�flag=-1 �uc(�S$,13))="IRLAM YUV 411" flag=2250
 �&�flag=-1 �S$,5)="Irlam" flag=2200
 �.�flag=-1 �S$,2)="BM" flag=2400:riffoff%=0
 �X�flag=-1 �S$,4)="RIFF" � �S$,9,8)="RDIBdata" � �S$,21,2)="BM" flag=2400:riffoff%=20
 �$�flag=-1 �S$,4)="GIF8" flag=500
 �%�flag=-1 �S$,5)="AV_VO" flag=600
 �2�flag=-1 �S$,4)=�&59+�&A6+�&6A+�&95 flag=1100
 �*�flag=-1 �S$,4)=�0+�1+�0+�8 flag=1400
!*�flag=-1 �S$,4)=�0+�1+�0+�1 flag=2900
!%�flag=-1 �S$,4)="RIX3" flag=2700
!3�flag=-1 �S$,4)="II*"+�0 flag=1500:bigendian=�
! 6�flag=-1 �S$,4)="MM"+�0+"*" flag=1500:bigendian=�
!*(�flag=-1 �S$,2)=�&52+�&CC flag=2300
!4D�flag=-1 �S$,2)="P4"��S$,2)="P5"��S$,2)="P6" flag=3300:info$=""
!>$�flag=-1 �S$,3)="P15" flag=3400
!H$�flag=-1 �S$,3)="PIC" flag=3500
!R)�flag=-1 �uc(�S$,3))="P13" flag=3450
!\6�flag=-1 �S$,4)="FORM" �S$,9,4)="ILBM" flag=1600
!f�flag=-1 �
!p#�S$,7,4)="JFIF" � ftype=&C85 �
!z*jpegblk%=�dim(20):�cachesize(jpegblk%)
!��cache%<�#c% �
!��#c%:X%=�"Run:djpeg"
!�	�X% �
!�7�#X%:ș"Wimp_StartTask","djpeg "+s$+" <Wimp$Scrap>"
!��
!�0ș"XOS_CLI","djpeg "+s$+" <Wimp$Scrap>" � ;V
!��V �1 �
!�Bș"Wimp_StartTask","<ChangeFSI$Dir>.djpeg "+s$+" <Wimp$Scrap>"
!��
!��
!�"c%=�"<Wimp$Scrap>":�c%=0 �=100
!�>scrapf%=�:flag=3300:info$="JPEG (JFIF) file converted to "
!��
"
flag=3700
"�
"�
"$�
".�flag=-1 �
"8&�#c%=&10:S$="":�I%=1�9:S$+=��#c%:�
"B�S$="MILLIPEDE" flag=200
"L�
"V�flag=-1 �
"`&�#c%=&41:S$="":�I%=1�8:S$+=��#c%:�
"j%�S$,4)="PNTG" flag=1800:st%=&280
"t�
"~�flag=-1 �
"�&�#c%=196:S$="":�I%=1�8:S$+=��#c%:�
"�%�S$,4)="PNTG" flag=1800:st%=&2e2
"��
"��flag=-1 �
"�&�#c%=522:S$="":�I%=1�8:S$+=��#c%:�
"�2�S$=�0+�&11+�2+�&ff+�&c+�0+�&ff+�&fe flag=1850
"��
"��flag=-1 �
"��#c%=0:�#c%=10 �
"�+C%=�#c%:�C%<6 � C%<>1 ��#c%=1 flag=1900
"��
"��
#M�flag=-1 �"."+�uc(s$),".PCX.")���uc(s$),":PCX.")��s$,4)="/PCX" flag=1900
#
B�flag=-1 �"."+�uc(s$),".IMAGE.")���uc(s$),":IMAGE.") flag=400
#)�flag=-1 �uc(�s$,4))=".RAW" flag=100
#)�flag=-1 �uc(�s$,3))="TGA" flag=2000
#()�flag=-1 �uc(�s$,3))="VDA" flag=2000
#2>�flag=-1 �"."+�uc(s$),".PIC.")���uc(s$),":PIC.") flag=700
#<M�flag=-1 �"."+�uc(s$),".IMG.")���uc(s$),":IMG.")��s$,4)="/IMG" flag=1400
#FM�flag=-1 �"."+�uc(s$),".DSP.")���uc(s$),":DSP.")��s$,4)="/DSP" flag=1700
#P*�flag=-1 �uc(�s$,4))="/RGB" flag=3200
#Z<�flag=-1 �(�uc(�s$,4))="/PCD"�ftype=&be8)�((pcd%�1)=1) �
#do�#c%:ș"Wimp_StartTask","<ChangeFSI$Dir>.hpcdtoppm -3 -a "+s$+" <Wimp$Scrap> { > <ChangeFSI$Dir>.pcdtemp }"
#nMc%=�"<Wimp$Scrap>":scrapf%=�:flag=3300:info$="PhotoCD file converted to "
#x�
#��
#�c�flag=-1 �close:� 42,"Sorry: format not recognised - please try again or contact your supplier"
#�Bstep24=1:input=8:ham=0:planar%=0:bigendianbits=�:r$="FN"+�flag
#�9compression=0:hpredict%=1:striprows%=-1:cachebytes%=�
#��xdiv%=0 � ydiv%=0 scale%=�
#�
Ȏ flag �
#�� 0
#�@quant%=4:�#c%=4:F%=�W+&1C:�#c%=F%:st%=�W+F%-&20:K%=�W+F%-&20
#�sm=�W:�sm<256 �
#�ș53,sm,3 � ,,I%
#�Ȏ I% �
#�%� 1:�st%=F%+12 �defpal2 ��ipal(2)
#�5�#c%=F%-16:sx%=(�W+1)*32:rowbytes%=sx%>>3:input=1
$sy%=�W+1:I%=�W:sx%-=31-�W
$%� 3:�st%=F%+12 �defpal4 ��ipal(4)
$5�#c%=F%-16:sx%=(�W+1)*16:rowbytes%=sx%>>2:input=2
$"!sy%=�W+1:I%=�W:sx%-=(31-�W)�2
$,(� 15:�st%=F%+12 �defpal16 ��ipal(16)
$64�#c%=F%-16:sx%=(�W+1)*8:rowbytes%=sx%>>1:input=4
$@!sy%=�W+1:I%=�W:sx%-=(31-�W)�4
$J� 63,255:�st%=F%+12 �
$T�defpal
$^�
$h�K%>st% K%=st%
$r�K%-12-F%=2048 �I%=255 �
$|�#c%=&38
$��C%=0�255:D%=�#c%
$�9r%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:b%(C%)=�#c%/255*F
$�D%=�W:�
$��
$��ipal63
$��
$��
$�G�#c%=F%-16:sx%=(�W+1)*4:rowbytes%=sx%:sy%=�W+1:I%=�W:sx%-=(31-�W)�8
$�) �42,"Not understood RISC OS sprite"
$��
$�@r$="FN8":ș53,sm,4 � ,,nx:ș53,sm,5 � ,,ny:nx=1<<nx:ny=1<<ny
$�-�scale% xmul%=xmul%*nx/2:ymul%=ymul%*ny/2
$�Sinfo$="RISC OS sprite, mode "+�sm+" "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
%�
%bpp%=sm>>>27:Ȏbpp% �
%9� 1:bpp%=1:r$="FN8":�st%=F%+12 �defpal2 ��newropal(2)
%&9� 2:bpp%=2:r$="FN8":�st%=F%+12 �defpal4 ��newropal(4)
%0;� 3:bpp%=4:r$="FN8":�st%=F%+12 �defpal16 ��newropal(16)
%::� 4:bpp%=8:r$="FN8":�st%=F%+12 �defpal ��newropal(256)
%D&� 5:bpp%=16:r$="FN16":�st%=F%+12 �
%N$� rpal%(255),gpal%(255):step24=2
%X
�C%=0�255
%b"gpal%(C%)=(C%>>5)<<8 � (C%�31)
%l+rpal%(C%)=((C%>>2)�31)<<16 � (C%�3)<<11
%v�
%�1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
%�-� 6:bpp%=32:r$="FN24":�st%=F%+12 �nopal �
%�!rbo%=0:gbo%=1:bbo%=2:step24=4
%�-� 8:bpp%=24:r$="FN24":�st%=F%+12 �nopal �
%�rbo%=0:gbo%=1:bbo%=2
%�8 �42,"Not understood new format RISC OS sprite bpp"
%��
%�(nx=(sm>>1) �&1fff:ny=(sm>>14) �&1fff
%�G�scale% xdiv%=xdiv%*nx:ydiv%=ydiv%*ny:xmul%=xmul%*90:ymul%=ymul%*90
%�Z�#c%=F%-16:rowbytes%=(�W+1)*4:sy%=�W+1:I%=�W:sx%=(rowbytes%*8-(31-�W))/bpp%:input=bpp%
%�Jinfo$="New RISC OS sprite, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
%��bpp%=32 input=24
%��
&�#c%=st%:cache%=�
&	� 100
&Equant%=8:�#c%=0:sx%=�HW:sy%=�HW:�nopal:input=24:rowbytes%=sx%*3+2
& 5rbo%=2:gbo%=2+sx%:bbo%=2+2*sx%:r$="FN24":cache%=�
&*Jinfo$="QRT .raw image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
&4	� 200
&>Gquant%=8:�#c%=5:sx%=�HW:sy%=�HW:sx%=(�HW-sx%+2)/2:sy%=(�HW-sy%+2)/2
&H$�#c%=&1a:cadsoft%=�#c%:�#c%=&200
&R!�C%=0�255:r%(C%)=�#c%/255*F:�
&\!�C%=0�255:g%(C%)=�#c%/255*F:�
&f!�C%=0�255:b%(C%)=�#c%/255*F:�
&p-�#c%=&600:st%=&600:cache%=�:�cadsoft%=2 �
&zCrep%=0:r$="FN1100":plbuff%=�dim(sx%):plbytes%=sx%:cachebytes%=�
&��
&�r$="FN8":rowbytes%=sx%
&��
&�[info$="Cadsoft type "+�cadsoft%+" image, "+�sx%+" by "+�sy%+" pixels, 8 bits per pixel"
&�	� 300
&�Iquant%=5:�#c%=&2c:st%=�W+(&38-&2c):�#cc%=&2c:stcc%=�W1(cc%)+(&38-&2c)
&�7�#c%=&1c:sx%=(�W+1)*4:sy%=�W+1:�#c%=st%:�#cc%=stcc%
&�;� rpal%(255),gpal%(255):input=16:cache%=�:rowbytes%=sx%
&�
�C%=0�255
&�.rpal%(C%)=C%�7 � (C%�64)<<2 � (C%�&38)<<13
&�Sgpal%(C%)=(C%�4)<<1�C%�16 � ((C%�3)<<1�(C%�&60)>>2)<<8 � (C%�8�(C%�128)>>3)<<16
&��
&�1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
'*pbuff%=�dim(sx%):�scale% ymul%=ymul%*2
'Ginfo$="ArVis image, "+�sx%+" by "+�sy%+" pixels, 15 bits per pixel"
'	� 400
'$Equant%=8:�#c%=0:sx%=�beHW:sy%=�beHW:X%=�beHW:st%=�#c%+X%:�#c%=st%
'.Vplbuff%=�dim(sx%*3):plbytes%=sx%*3:rb%=plbuff%:gb%=plbuff%+1:bb%=plbuff%+2:rbo%=-1
'8:�nopal:input=24:rep%=0:cachebytes%=�:cache%=�:step24=3
'B^info$="RT image. run length encoded image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
'L	� 500
'V,compression=5:�#c%=6:GIFsx=�HW:GIFsy=�HW
'`8GIF=�#c%:GIFback=�#c%:GIFext=�#c%:quant%=(GIF � 7)+1
'j�GIF � &80 �
't�C%=0�(1<<quant%)-1
'~9r%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:b%(C%)=�#c%/255*F
'��
'��
'�>I%=�#c%:�I%<>�"," � 42,"GIF file without , in right place"
'�,GIFleft=�HW:GIFright=�HW:sx%=�HW:sy%=�HW
'��GIFsx<sx% � GIFsy<sy% �
'��info% �
'�)�"GIF file with bigger image inside:"
'�;�"Screen ";GIFsx"x by "GIFsy"y; image "sx%"x by "sy%"y"
'�/�"Continue with monitor's size [Y or y]?"A$
'�&�A$="Y"�A$="y" sx%=GIFsx:sy%=GIFsy
'�(�"Continuing with ";sx%"x by "sy%"y"
'��
(�
(
)GIF=�#c%:�GIF � &40 flag=501:r$="FN8"
(Jsetcodes%=�#c%:clearcode%=1<<setcodes%:st%=�#c%:cache%=�:cachebytes%=�
(E� table%(1<<12):stk%=�dim(1<<13):buf%=�dim(280):plbuff%=�dim(sx%)
((&�I%=0�clearcode%-1:table%(I%)=I%:�
(2Ainfo$="GIF file, "+�sx%+" by "+�sy%+" pixels, "+�bits(quant%)
(<	� 600
(Fquant%=8:�#c%=&5c:�C%=0�255
(P9r%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:b%(C%)=�#c%/255*F
(Z�
(d�#c%=&36e:sy%=�HW:sx%=�HW
(n5st%=&380:�#c%=st%:rowbytes%=sx%:r$="FN8":cache%=�
(xEinfo$=".PIC image, "+�sx%+" by "+�sy%+" pixels, 8 bits per pixel"
(�	� 700
(�$quant%=8:�#c%=0:a$=�#c%:st%=�#c%
(� sx%=�a$:sy%=�(�a$,�a$," ")))
(�6�nopal:input=24:step24=3:rowbytes%=sx%*3:r$="FN24"
(�!rbo%=0:gbo%=1:bbo%=2:cache%=�
(�Jinfo$="MTV .pic image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
(�	� 800
(�)sx%=512:sy%=256:�scale% ymul%=ymul%*2
(�4plbuff%=�dim(sx%):rep%=0:wt%=0:wtsx%=plbuff%+sx%
(�cache%=�:cachebytes%=�
(�@�C%=0�255:r%(C%)=(C%�63)/63*F:�:g%()=r%():b%()=r%():quant%=6
(�Jinfo$="Watford digitiser picture, 512 by 256 pixels, 6 bits per pixel"
(�	� 801
);sx%=512:sy%=256:input=24:quant%=6:�scale% ymul%=ymul%*2
)0rep1%=0:wt1%=0:rep2%=0:wt2%=0:rep3%=0:wt3%=0
)=buff%=�dim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+2*sx%
)":wtsx1%=buff%+sx%:wtsx2%=buff%+2*sx%:wtsx3%=buff%+3*sx%
),7�C%=0�255:r%(C%)=(C%�63)/63*F:�:g%()=r%():b%()=r%()
)6Rinfo$="Triple Watford digitiser picture, 512 by 256 pixels, 18 bits per pixel"
)@	� 900
)J'quant%=8:st%=0:�#c%=0:�#c%=65536 �
)T7sx%=256:sy%=256:�scale% ymul%=ymul%*2:xmul%=xmul%*2
)^�
)hsx%=512:sy%=512
)r�
)|S�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%():rowbytes%=sx%:r$="FN8":cache%=�
)�?info$="AIM .raw image, 256 by 256 pixels, 8 bits per pixel"
)�	� 901
)�quant%=4:�#c%=65536 �
)�7sx%=256:sy%=256:�scale% ymul%=ymul%*2:xmul%=xmul%*2
)��
)�sx%=512:sy%=512
)��
)�=buff%=�dim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+sx%*2
)�3�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%()
)�Oinput=24:info$="Hawk V9 Triple image, 256 by 256 pixels, 24 bits per pixel"
)�	� 902
)�Bquant%=4:�#c%=8:sx%=�W:rowbytes%=sx%*3/2:sy%=�W:st%=20:�#c%=20
)��scale% ymul%=ymul%*2
*Mplbuff%=�dim(sx%*3):rb%=plbuff%:gb%=plbuff%+sx%:bb%=plbuff%+sx%*2:rbo%=-1
*@�C%=0�255:r%(C%)=(C%�&F)/&F*F:�:g%()=r%():b%()=r%():cache%=�
*binput=24:info$="Hawk V9/Snapshot Colour image, "+�sx%+" by "+�sy%+" pixels, 12 bits per pixel"
*&	� 903
*0\quant%=5:�#c%=8:sx%=�W:rowbytes%=sx%*2:sy%=�W:st%=20:�#c%=20:cache%=�:r$="FN16":flag=700
*:-� rpal%(255),gpal%(255):input=16:step24=2
*D
�C%=0�255
*N"gpal%(C%)=(C%>>5)<<8 � (C%�31)
*X+rpal%(C%)=((C%>>2)�31)<<16 � (C%�3)<<11
*b�
*l1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
*v_input=16:info$="Hawk V9 mk II Colour image, "+�sx%+" by "+�sy%+" pixels, 16 bits per pixel"
*�	� 950
*�@quant%=8:�#c%=0:sx%=512:rowbytes%=512:sy%=512:st%=0:flag=900
*�E�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%():r$="FN8":cache%=�
*�Finfo$="Wild Vision V12 image, 512 by 512 pixels, 8 bits per pixel"
*�
� 1000
*�Tquant%=4:sx%=640:sy%=256:�defpal:st%=�W:r$="FN"+�(1000+�W):�scale% ymul%=ymul%*2
*�%buff%=�dim(sx%):ctable%=�dim(st%)
*�"ș12,4,c%,ctable%,st%:st%=�#c%
*�.pa%=ctable%:rep%=0:rep2%=0:pasx%=buff%+sx%
*�Ainfo$="ProArtisan image, 640 by 256 pixels, 8 bits per pixel"
*�
� 1100
*�@quant%=1:�#c%=4:sx%=�beW:sy%=�beW:input=�beW:bigendianbits=�
+S%=�beW:S%=�beW
+Icache%=�:�S%=2 cachebytes%=�:info$="Byte Encoded " �info$="":r$="FN8"
+C%=�beW
+ D%=�beW
+*Ȏ C% �
+4	� 1,2
+>$�I%=0�D%/3-1:r%(I%)=�#c%/255*F:�
+H$�I%=0�D%/3-1:g%(I%)=�#c%/255*F:�
+R$�I%=0�D%/3-1:b%(I%)=�#c%/255*F:�
+\
+fȎ input �
+p� 1:r%(0)=F:g%(0)=F:b%(0)=F
+z� 4,8:�nopal
+�� 24:�nopal
+��
+��
+�Ȏ input �
+� � 1:rowbytes%=(sx%+15>>4)<<1
+�� 4:rowbytes%=(sx%+3>>2)<<1
+�� 8:rowbytes%=(sx%+1>>1)<<1
+�J� 24:rowbytes%=(3*sx%+1>>1)<<1:r$="FN24":rbo%=0:gbo%=1:bbo%=2:step24=3
+��S%=1 bbo%=0:rbo%=2
+�&:� 42,"Can't do this Sun pixrect"
+��
+�Mst%=D%+&20:rep%=0:�cachebytes% plbuff%=�dim(rowbytes%):plbytes%=rowbytes%
+�Binfo$+="Sun image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
,
� 1200
,>quant%=8:sx%=800:sy%=800:st%=1600:�#c%=st%:vflip%=� vflip%
,*�nopal:r$="FN8":rowbytes%=sx%:cache%=�
,$Iinfo$="TimeStep satellite image, 800 by 800 pixels, 8 bits per pixel"
,.
� 1300
,8?quant%=8:sx%=128:sy%=256:st%=0:�#c%=0:�scale% xmul%=xmul%*2
,B*�nopal:r$="FN8":rowbytes%=sx%:cache%=�
,L@info$="satellite image, 128 by 256 pixels, 8 bits per pixel"
,V
� 1301
,`;input=24:quant%=8:sx%=128:sy%=256:�scale% xmul%=xmul%*2
,jObuff%=�dim(sx%*3):rb%=buff%:gb%=buff%+sx%:bb%=buff%+2*sx%:�nopal:r$="FN901"
,tHinfo$="Triple satellite image, 128 by 256 pixels, 24 bits per pixel"
,~
� 1400
,�%planar%=�:�#c%=0:Z%=�HW:�Z%>255 �
,�+st%=�beHW*2:planes%=�beHW:patlen%=�beHW
,�+pw%=�beHW:ph%=�beHW:sx%=�beHW:sy%=�beHW
,��
,�Cst%=�HW*2:input=�HW:patlen%=�HW:pw%=�HW:ph%=�HW:sx%=�HW:sy%=�HW
,��
,�
�scale% �
,�#xmul%=xmul%*pw%:xdiv%=xdiv%*282
,�#ymul%=ymul%*ph%:ydiv%=ydiv%*282
,��
,�Wrowbytes%=sx%+7>>3:pbuff%=�dim(sx%):plbytes%=rowbytes%*planes%:buff%=�dim(plbytes%)
,��#c%=st%:vrep%=0
-M�C%=0�(1<<planes%)-1:r%(C%)=F-C%/((1<<planes%)-1)*F:�:g%()=r%():b%()=r%()
-
Binfo$="IMG file, "+�sx%+" by "+�sy%+" pixels, "+�bits(planes%)
-
� 1500
-"�#c%=4:dir%=�tiff(4):�#c%=dir%
-(6rgb=�:greyunit=100:planar%=1:fillorder=1:resunit=2
-2)xnum%=90:xdenom%=1:ynum%=90:ydenom%=1
-<E%=�tiff(3):�Z%=1�E%
-F'T%=�tiff(3):D%=�tiff(3):C%=�tiff(4)
-Pa�C%>1 V%=�tiff(4) ��D%=2 �#c%=dir%+2+Z%*12 ��D%<4 V%=�tiff(D%):�#c%=dir%+2+Z%*12 �V%=�tiff(4)
-dȎ T% �
-n� 256:sx%=V%
-x� 257:sy%=V%
-�� 258:�C%>1 �
-��D%*C%>6 �
-��#c%=V%:quant%=�tiff(D%)
-�(input=quant%:�I%=1�C%-1:V%=�tiff(D%)
-�P�V%<>quant% �42,"Can't do RGB TIFF with different numbers of bits per pixel"
-�
input+=V%
-��:�nopal
-��
-� quant%=V% � &FF:input=quant%
-�5�I%=0�(1<<quant%)-1:r%(I%)=I%/((1<<quant%)-1)*F:�
-�g%()=r%():b%()=r%()
-��
-��#c%=dir%+2+Z%*12
.�
.quant%=V%:input=quant%
.5�I%=0�(1<<quant%)-1:r%(I%)=I%/((1<<quant%)-1)*F:�
."g%()=r%():b%()=r%()
.,�
.6� 259:compression=V%
.@/� 262:photometric=V%:�V%=0 invert%=�invert%
.J� 266:fillorder=V%
.T!� 273:stc%=C%:stv%=V%:std%=D%
.^1� 277:sampperpix%=V%:input=quant%*V%:rgb=V%=3
.h� 278:striprows%=V%
.r-� 279:stcbyte%=C%:stvbyte%=V%:stdbyte%=D%
.|1� 282:�#c%=V%:xnum%=�tiff(4):xdenom%=�tiff(4)
.��#c%=dir%+2+Z%*12
.�1� 283:�#c%=V%:ynum%=�tiff(4):ydenom%=�tiff(4)
.��#c%=dir%+2+Z%*12
.�,� 284:planar%=V%:�planar%=2 input=quant%
.�� 290:greyunit=10^V%
.�<� 291:�#c%=V%:�I%=0�C%-1:r%(I%)=�tiff(D%)/greyunit/2*F:�
.�g%()=r%():b%()=r%()
.��#c%=dir%+2+Z%*12
.�� 296:resunit=V%
.�� 317:hpredict%=V%
.�8� 320:�#c%=V%:�I%=0�C%/3-1:r%(I%)=�tiff(3)/65535*F:�
.�*�I%=0�C%/3-1:g%(I%)=�tiff(3)/65535*F:�
.�*�I%=0�C%/3-1:b%(I%)=�tiff(3)/65535*F:�
/�#c%=dir%+2+Z%*12
/
/J�info% �"Ignoring tag ";T%" datatype "D%" count "C%" value/pointer "V%
/&�
/0�
/:� st%(stc%):�stc%>1 �
/D0�#c%=stv%:�I%=0�stc%-1:st%(I%)=�tiff(std%):�
/X�
/bst%(0)=stv%
/l�
/vȎ compression �
/�� 0,1:info$=""
/�)� 2:info$="CCITT Group 3 compressed "
/�+� 5:info$="LZW compressed ":r$="FN1505"
/�n�hpredict%=2 �info$+="horizontal differenced " ��hpredict%>2 info$+=" unknown predictor ("+�hpredict%+") "
/�'setcodes%=8:clearcode%=1<<setcodes%
/�3� table%(1<<12):stk%=�dim(1<<13):buf%=�dim(280)
/�&�I%=0�clearcode%-1:table%(I%)=I%:�
/�4� 32773:info$="PackBits compressed ":r$="FN1501"
/� � 6:info$="JPEG compressed "
/�2 info$="Compress "+�compression+" - unknown "
/��
/�Binfo$+="TIFF file, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
/�Sbigendianbits=fillorder=1:�#c%=st%(0):stripptr=0:�striprows%>=sy% striprows%=-1
0Ȏ input �
0� 1:rowbytes%=sx%+7>>3
0� 2:rowbytes%=sx%+3>>2
0 � 4:rowbytes%=sx%+1>>1
0*� 8:rowbytes%=sx%
04� 24:rowbytes%=3*sx%
0>+ � 42,"Can't do "+�bits(input)+" TIFF"
0H�
0R.�planar%=2 rowbytes%=rowbytes%*sampperpix%
0\I�planar%<>1 � rgb<>0 �42,"Can't do this style of TIFF yet" �planar%=�
0f� compression<2 �
0pScache%=�:stripptr=-1:r$="FN8":�input=24 rbo%=0:gbo%=1:bbo%=2:step24=3:r$="FN24"
0z�
0�'�compression=5 �compression=32773 �
0�-cache%=�:cachebytes%=rowbytes%*striprows%
0�0plbuff%=�dim(rowbytes%):rowstogo%=striprows%
0�\�input=24 rb%=plbuff%:gb%=plbuff%+1:bb%=plbuff%+2:r$="FN"+�(��r$,3)+10):step24=3:rbo%=-1
0��
0�.buff%=�dim(rowbytes%):rowstogo%=striprows%
0�N�input=24 rb%=buff%:gb%=buff%+1:bb%=buff%+2:r$="FN"+�(��r$,3)+10):step24=3
0��
0��
0�
�scale% �
0�S%=resunit:�S%=2 S%=90
0��S%=3 S%=35
0�,xdiv%=xdiv%*xnum%:xmul%=xmul%*xdenom%*S%
1,ydiv%=ydiv%*ynum%:ymul%=ymul%*ydenom%*S%
1�
1�r$="FN1500" r$="FN8"
1$
� 1600
1.�#c%=12:camg=0:planar%=�:�
18&S$=��#c%+��#c%+��#c%+��#c%:S%=�beW
1BȎ S$ �
1LC� "BMHD":sx%=�beHW:sy%=�beHW:S%=�W:planes%=�#c%:masking%=�#c%=1
1V6compression=�#c%:S%=�#c%+�HW:U%=�#c%:V%=�#c%:S%=�W
1`)�scale% ymul%=ymul%*V%:ydiv%=ydiv%*U%
1jK�I%=0�(1<<planes%)-1:r%(I%)=I%/((1<<planes%)-1)*F:�:g%()=r%():b%()=r%()
1tB� "CMAP":S%=�#c%+S%:�I%=0�(1<<planes%)-1:r%(I%)=(�#c%>>4)/15*F
1~1g%(I%)=(�#c%>>4)/15*F:b%(I%)=(�#c%>>4)/15*F:�
1�G�#c%=S%:�info% �"Warning: truncated IFF CMAP information to 4 bits"
1�;� "CAMG":camg=�beW:�info% �"Amiga viewport mode ";~camg
1�� "BODY":st%=�#c%
1�4 � info% �"Ignoring IFF property "S$" size ";S%
1��#c%=�#c%+S%
1��
1�9�S$="BODY":�compression info$="Compressed " �info$=""
1�+ham=(camg � &800)<>0:�ham info$+="HAM "
1�4half=(camg � &80)<>0:�half info$+="half-bright "
1�n�half half%=1<<planes%-1:�I%=0�half%-1:r%(I%+half%)=r%(I%)/2:g%(I%+half%)=g%(I%)/2:b%(I%+half%)=b%(I%)/2:�
1�Cinfo$+="IFF file, "+�sx%+" by "+�sy%+" pixels, "+�bits(planes%)
2+�masking% info$+=" with mask (ignored)"
2
7rowbytes%=(sx%+15>>4)<<1:plbytes%=rowbytes%*planes%
29pbuff%=�dim(sx%):r$="FN"+�(1600+compression):cache%=�
2�compression �
2((cachebytes%=�:plbuff%=�dim(plbytes%)
22�
2<Qrealrowbytes%=rowbytes%:rowbytes%=plbytes%:�masking% rowbytes%+=realrowbytes%
2F�
2P�#c%=st%
2Z
� 1700
2dBsx%=640:rowbytes%=80:sy%=350:planes%=4:plbytes%=4*80:planar%=�
2n3buff%=�dim(80*4):pbuff%=�dim(640):G=F/3:H=F*2/3
2x(r%()=0,0,0,0,F,F,F,H,G,G,G,G,F,F,F,F
2�(g%()=0,0,F,F,0,0,F,H,G,G,F,F,G,G,F,F
2�(b%()=0,F,0,F,0,F,0,H,G,F,G,F,G,F,G,F
2�Vmasking%=�:r$="FN1600":st%=16:�#c%=16:cache%=�:realrowbytes%=80:rowbytes%=plbytes%
2�Sinfo$="PC EGA '.dsp' file, 640 by 350 pixels, 4 bits per pixel (fixed palette)"
2�
� 1800
2�?sx%=72*8:sy%=720:quant%=1:input=1:�#c%=st%:plbuff%=�dim(72)
2�cache%=�:cachebytes%=�
2�Qr%(0)=F:g%(0)=F:b%(0)=F:bigendianbits=�:rowbytes%=72:r$="FN1501":rowstogo%=-1
2�G�scale% xmul%=xmul%*90:xdiv%=xdiv%*72:ymul%=ymul%*90:ydiv%=ydiv%*72
2�>info$="MacPaint file, 576 by 720 bits, creator id "+�S$,4)
2�
� 1850
2��#c%=552
2�done%=�
3�
3code%=�beHW:Ȏ code% �
3� &01:�#c%=�#c%+�beHW
3"	� &1E
3,	� &98
36Crowbytes%=�beHW:�(rowbytes% �&8000)=0 �42,"PICT without Pixmap"
3@3sy%=�beHW:sx%=�beHW:sy%=�beHW-sy%:sx%=�beHW-sx%
3J<junk%=�HW:packtype%=�beHW:junk%=�W:resx%=�beW:resy%=�beW
3TF�beHW<>0 �#c%:�42,"ChangeFSI expected Mac PICT2 pixeltype=Chunky"
3^&bpp%=�beHW:junk%=�beHW:junk%=�beHW
3h$junk%=�beW:junk%=�beW:junk%=�beW
3rjunk%=�beW:junk%=�beHW
3|_C%=�beHW:�I%=0�C%:J%=�beHW:r%(J%)=�beHW/65535*F:g%(J%)=�beHW/65535*F:b%(J%)=�beHW/65535*F:�
3�done%=�
3�R� &9A:junk%=�W:rowbytes%=�beHW:�(rowbytes% �&8000)=0 �42,"PICT without Pixmap"
3�3sy%=�beHW:sx%=�beHW:sy%=�beHW-sy%:sx%=�beHW-sx%
3�<junk%=�HW:packtype%=�beHW:junk%=�W:resx%=�beW:resy%=�beW
3�J�beHW<>16 �#c%:�42,"ChangeFSI expected Mac PICT2 pixeltype=RGBDirect"
3�'bpp%=�beHW:comps%=�beHW:junk%=�beHW
3�junk%=�beW:junk%=�beW
3�junk%=�beHW:junk%=�beHW
3�V�bpp%>16 �nopal �J%=2^(bpp%�3):�I%=0�J%-1:r%(I%)=I%/(J%-1)*F:�:g%()=r%():b%()=r%()
3�/�bpp%=32 � comps%=3 bpp%=24:rowbytes%=3*sx%
3�done%=�
3�C:�#c%:�42,"ChangeFSI can't understand Mac PICT2 code "+�~code%
3��
4� done%
43junk%=�beHW:junk%=�beHW:junk%=�beHW:junk%=�beHW
43junk%=�beHW:junk%=�beHW:junk%=�beHW:junk%=�beHW
4&junk%=�beHW
40Ncache%=�:cachebytes%=�:bigendianbits=�:st%=�#c%:rowbytes%=rowbytes%��&8000
4:Y�scale% xmul%=xmul%*90*65536:xdiv%=xdiv%*resx%:ymul%=ymul%*90*65536:ydiv%=ydiv%*resy%
4D@info$="Mac PICT2, "+�sx%+" by "+�sy%+" pixels, "+�bits(bpp%)
4N%plbuff%=�dim(rowbytes%):�bpp%>8 �
4XTrbo%=-1:rb%=plbuff%+sx%:gb%=plbuff%+sx%*2:bb%=plbuff%+sx%*3:r$="FN1851":input=24
4b;�comps%=3 rb%=plbuff%:gb%=plbuff%+sx%:bb%=plbuff%+sx%*2
4l�
4v
� 1900
4��#c%=1:C%=�#c%
4�?E%=�#c%:�E%<>1 � 42,"ZSoft .PCX file with unknown encoding"
4�7E%=�#c%:sx%=�HW:sy%=�HW:sx%=�HW+1-sx%:sy%=�HW+1-sy%
4�N�scale% xmul%=xmul%*90:xdiv%=xdiv%*�HW:ymul%=ymul%*90:ydiv%=ydiv%*�HW ��W
4�H�#c%=65:planes%=�#c%:planar%=planes%>1:rowbytes%=�HW:bpp%=E%*planes%
4�pcxpal=16:�bpp%>4 � C%=5 �
4�*�#c%=�#c%-769:�#c%=12 pcxpal=�#c%-768
4��
4�5�#c%=pcxpal:E%=0:�C%=0�(1<<bpp%)*3-1:E%=E%��#c%:�
4�3�info% �".PCX palette mask established at ";~E%
4��E%=0 �
4�E�C%=0�(1<<bpp%)-1:r%(C%)=C%/((1<<bpp%)-1)*F:�:g%()=r%():b%()=r%()
4��
5!�#c%=pcxpal:�C%=0�(1<<bpp%)-1
5Er%(C%)=(�#c%�E%)/E%*F:g%(C%)=(�#c%�E%)/E%*F:b%(C%)=(�#c%�E%)/E%*F
5�
5 �
5*�rewind
54Lplbytes%=rowbytes%*planes%:plbuff%=�dim(plbytes%):cache%=�:cachebytes%=�
5>E�planar% pbuff%=�dim(sx%) �input=bpp%:bigendianbits=�:r$="FN1100"
5HFinfo$="ZSoft .PCX file, "+�sx%+" by "+�sy%+" pixels, "+�bits(bpp%)
5R
� 2000
5\8�#c%=0:L%=�#c%:C%=�#c%:I%=�#c%:J%=�HW:K%=�HW:M%=�#c%
5fCsx%=�W:sx%=�HW:sy%=�HW:B%=�#c%:ID%=�#c%:�ID%�&10 hflip%=�hflip%
5p �(ID% �&20)=0 vflip%=�vflip%
5z�#c%=�#c%+L%:Ȏ C% �
5�� 1:�M%=&18 �
5��C%=J%�K%-1
5�9b%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:r%(C%)=�#c%/255*F
5��
5��
5��
5� �nopal
5��
5�st%=�#c%
5�Ȏ I% �
5�� 1,2,3:cache%=�:�B%>8 �
5��B%>16 �
5�Linput=24:bbo%=0:gbo%=1:rbo%=2:step24=B%�8:r$="FN24":rowbytes%=step24*sx%
6�
6rowbytes%=sx%*2
67� rpal%(255),gpal%(255):input=16:step24=2:r$="FN16"
6$
�C%=0�255
6.&gpal%(C%)=(C%>>5)<<8 � (C%�31)<<16
68%rpal%(C%)=(C%>>2)�31 � (C%�3)<<11
6B�
6L1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
6V�
6`�
6jr$="FN8":rowbytes%=sx%
6t�
6~Iinfo$="Truevision TGA image, "+�sx%+" by "+�sy%+" pixels, "+�bits(B%)
6�D� 9,10,11:step24=B%�8:rowbytes%=step24*sx%:buff%=�dim(rowbytes%)
6��B%>8 �
6��B%>16 �
6�:input=24:bb%=buff%:gb%=buff%+1:rb%=buff%+2:r$="FN2002"
6��
6�9� rpal%(255),gpal%(255):input=16:step24=2:r$="FN2001"
6�
�C%=0�255
6�&gpal%(C%)=(C%>>5)<<8 � (C%�31)<<16
6�%rpal%(C%)=(C%>>2)�31 � (C%�3)<<11
6��
6�1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
6��
7�
7
Minfo$="Truevision TGA RLE image, "+�sx%+" by "+�sy%+" pixels, "+�bits(B%)
7�
7
� 2100
7(?quant%=6:sx%=512:rowbytes%=2*sx%:sy%=256:cache%=�:r$="FN16"
72-� rpal%(255),gpal%(255):input=16:step24=2
7<
�C%=0�255
7F gpal%(C%)=C%>>3 � (C%�7)<<11
7P%rpal%(C%)=(C%�7)<<8 � (C%>>3)<<16
7Z�
7d'�C%=0�31:r%(C%)=C%/31*F:�:b%()=r%()
7n�C%=0�63:g%(C%)=C%/63*F:�
7x�scale% ymul%=ymul%*2
7�Hinfo$="Pineapple image, 512 by 256 pixels, 16 bits per pixel":�#c%=7
7�
� 2200
7�9quant%=8:step24=1:�#c%=0:s$=�#c%:E%=�s$,":"):st%=�#c%
7�7sx%=��s$,E%+1):sy%=��s$,E%+2+��sx%):�nopal:input=24
7�Arowbytes%=sx%*3:rbo%=0:gbo%=sx%:bbo%=2*sx%:cache%=�:r$="FN24"
7�Ginfo$="Irlam image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
7�
� 2250
7�H�#c%=16:sx%=�W:sy%=�W:� rpal%(255),gpal%(255),bpal%(255),table%(255)
7��C%=0�255:D%=C%�1
7�table%(C%)=(D%-16)/219*F
7��D%�128 D%-=256
7�)r%(C%)=�(D%/160*F):b%(C%)=�(D%/126*F)
7�>g%(C%)=�(-D%/160*rwt/gwt*F):gpal%(C%)=�(-D%/126*bwt/gwt*F)
8�
8,table%()=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
85st%=32:�#c%=32:cache%=�:rowbytes%=2*sx%:input=411
8"<info$="Irlam YUV 4:1:1 file "+�sx%+" by "+�sy%+" pixels"
8,
� 2300
869�#c%=6:sx%=�HW:sy%=�HW:D%=�#c%:ncolors%=�#c%:input=24
8@;vflip%=�vflip%:quant%=�#c%:ncmap%=�#c%:cmaplen%=1<<�#c%
8J!�nopal:back%=�dim(4):!back%=0
8Tclrfirst%=D%�1
8^�(D%�2)=0 �
8h$�I%=0�ncolors%-1:back%?I%=�#c%:�
8r�(ncolors%�1)=0 �#c%
8|�
8��D%�4 alpha%=�dim(sx%)
8��ncmap%>0 �
8�)�I%=0�cmaplen%-1:r%(I%)=�HW/&FF00*F:�
8�)�I%=0�cmaplen%-1:g%(I%)=�HW/&FF00*F:�
8�)�I%=0�cmaplen%-1:b%(I%)=�HW/&FF00*F:�
8��
8��D%�8 �
8�%�#c%=�HW+�#c%:�#c%�1 �#c%=�#c%+1
8��
8�Hst%=�#c%:buff%=�dim(sx%*3):rb%=buff%:gb%=buff%+1*sx%:bb%=buff%+2*sx%
8��rewind
8�Pinfo$="Utah rle image, "+�sx%+" by "+�sy%+" pixels, "+�bits(ncolors%*quant%)
8�
� 2400
92�#c%=riffoff%+&0a:st%=�W:pal%=�W:sx%=�W:sy%=�W
9
Ȏ pal% �
9� 12
9&-�#c%=riffoff%+&18:input=�HW:compression=0
90� 40
9:.�#c%=riffoff%+&1c:input=�HW:compression=�W
9D%�#c%=riffoff%+&26:xppm=�W:yppm=�W
9N� (xppm<>0 � yppm<>0) �
9X%xdiv%=xdiv%*xppm:xmul%=xmul%*3543
9b%ydiv%=ydiv%*yppm:ymul%=ymul%*3543
9l�
9v
9�+� 42,"Unknown .BMP variant ("+�pal%+")"
9��
9�"bigendianbits=�:vflip%=�vflip%
9�Ȏ input �
9�� 1:rowbytes%=sx%+7>>3
9�� 4:rowbytes%=sx%+1>>1
9�� 8:rowbytes%=sx%
9�+� 16:rowbytes%=sx%*2:r$="FN16":step24=2
9�� rpal%(255),gpal%(255)
9�
�C%=0�255
9�"gpal%(C%)=(C%>>5)<<8 � (C%�31)
9�+rpal%(C%)=((C%>>2)�31)<<16 � (C%�3)<<11
9��
:1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
:� 24:rowbytes%=sx%*3
:+rbo%=0:gbo%=1:bbo%=2:step24=3:r$="FN24"
: 3�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%()
:*4 � 42,".BMP file of unusual depth ("+�input+")"
:4�
:>�input<=8 �
:H"�#c%=riffoff%+14+pal%:r$="FN8"
:R�C%=0�2^input-1
:\?b%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:r%(C%)=�#c%/255*F:�#c%
:f�
:p�
:zȎ compression �
:�� 0:info$="Uncompressed "
:�,� 1:info$="RLE8 compressed ":r$="FN2401"
:�,� 2:info$="RLE4 compressed ":r$="FN2402"
:�C � 42,".BMP compression type not supported ("+�compression+")"
:��
:�rowbytes%=rowbytes%+3��3
:�:� compression<>0 cachebytes%=�:plbuff%=�dim(rowbytes%)
:�cache%=�:�#c%=riffoff%+st%
:�Oinfo$+="Windows 3.0 .BMP image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
:�
� 2500
:�2�#c%=0:s$="":C%=�#c%:ȕC%<>0 s$+=�C%:C%=�#c%:�
:�7s$+=" version "+äW:sx%=�W:sy%=�W:input=�W:cache%=�
:�_info$="!Translator Clear format made by "+s$+", "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
;�input>8 �
;K�nopal:input=24:step24=3:rowbytes%=3*sx%:rbo%=0:gbo%=1:bbo%=2:r$="FN24"
;�
;$�C%=0�2^input-1
;.9r%(C%)=�#c%/255*F:g%(C%)=�#c%/255*F:b%(C%)=�#c%/255*F
;8�
;B"input=8:r$="FN8":rowbytes%=sx%
;L�
;Vst%=�#c%
;`
� 2600
;j�#c%=0:C%=�#c%
;tD%=�#c%:Ȏ D% �
;~!� 0:sx%=320:sy%=200:planes%=4
;�!� 1:sx%=640:sy%=200:planes%=2
;�!� 2:sx%=640:sy%=400:planes%=1
;�? �42,"ChangeFSI knows nothing of "+�C%+" type Degas files"
;��
;�]�I%=0�(1<<input)-1:D%=�beHW:r%(I%)=(D%>>8�7)/7*F:g%(I%)=(D%>>4�7)/7*F:b%(I%)=(D%�7)/7*F:�
;�<cache%=�:planar%=�:masking%=�:st%=34:�#c%=34:r$="FN1600"
;�Hrowbytes%=(sx%+15>>4)<<1:plbytes%=rowbytes%*planes%:pbuff%=�dim(sx%)
;�j�C%�128 r$="FN1601":flag=1600:cachebytes%=�:plbuff%=�dim(plbytes%) �realrowbytes%=2:rowbytes%=plbytes%
;�Cinfo$="Degas file "+�sx%+" by "+�sy%+" pixels, "+�bits(planes%)
;�
� 2700
;��#c%=4:sx%=�HW:sy%=�HW
;�Ȏ �HW �
<2� &AF:rowbytes%=sx%:cache%=�:r$="FN8":st%=&30A
<
R �#c%:� 42,"Panic in ColoRIX reading - ChangeFSI largely ignorant of format!"
<�
<�C%=0�2^input-1
<(6r%(C%)=�#c%/63*F:g%(C%)=�#c%/63*F:b%(C%)=�#c%/63*F
<2�
<<�#c%=st%
<FCinfo$="ColoRIX file "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
<P
� 2800
<Z!�#c%=0:� s$=�fits:Ȏ �s$,8) �
<dQ� "SIMPLE  ":�s$,30,1)<>"T" �42,"ChangeFSI can only read Simple FITS format"
<n� "BITPIX  ":input=��s$,10)
<xJ� "NAXIS   ":�s$,10)<>2 �42,"ChangeFSI can only read 2d FITS images"
<�� "NAXIS1  ":sx%=��s$,10)
<�� "NAXIS2  ":sy%=��s$,10)
<�� "END     "
<�' �info% �"Ignoring FITS record "s$
<��
<���s$,8)="END     "
<�.st%=(�#c%�2880 + 1)*2880:cache%=�:�#c%=st%
<�Ȏ input �
<�%� 8:r$="FN8":rowbytes%=sx%:�nopal
<�C� 16:rowbytes%=2*sx%:� rpal%(255),gpal%(255):step24=2:r$="FN16"
<�
�C%=0�255
<�gpal%(C%)=C%<<8
<�rpal%(C%)=C%
= �:cheat%=0:�invert% cheat%=F
=e�C%=0�255:r%(C%)=cheat%+C%/65535*F:g%(C%)=((C%�&80)<<8)/65535*F:b%(C%)=cheat%:�:rwt=1:gwt=1:bwt=1
=Q � 42,"ChangeFSI can't read a FITS image with this number of bits per pixel"
="�
=,@info$="FITS file "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
=6
� 2900
=@<�#c%=4:sx%=�beHW:sy%=�beHW:�#c%=&42:input=�beHW:C%=�beHW
=J=rowbytes%=�beHW:C%=�beW:st%=�beW:�#c%=st%:r$="FN8":�nopal
=T#� rpal%(15),gpal%(15),bpal%(15)
=^Irpal%()=&e6,&23,&e6,&7f,&17,&00,&a1,&45,&e6,&4a,&e6,&73,&6e,&47,&8a,0
=hIgpal%()=&e6,&78,&00,&23,&a1,&73,&2e,&2e,&c8,&a6,&75,&40,&b8,&78,&55,0
=rIbpal%()=&b8,&e6,&00,&a1,&17,&2e,&0c,&2e,&00,&c6,&00,&e6,&00,&00,&00,0
=|k�C%=&80�&8F:r%(C%)=rpal%(C%-&80)/255*F:g%(C%)=gpal%(C%-&80)/255*F:b%(C%)=bpal%(C%-&80)/255*F:�:cache%=�
=�Finfo$="Apollo GPR file "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
=�
� 3000
=�Hsx%=720:sy%=�#c%/1440:� rpal%(255),gpal%(255),bpal%(255),table%(255)
=�� �
=�
�C%=0�255
=�table%(C%)=(C%-16)/219*F
=�>r%(C%)=(C%-128)/186*0.624*F:rpal%(C%)=(C%-128)/160*0.952*F
=�?g%(C%)=-(C%-128)/186*0.64*F:gpal%(C%)=-(C%-128)/160*0.277*F
=�=b%(C%)=(C%-128)/186*1.73*F:bpal%(C%)=-(C%-128)/160*1.11*F
=��
=��
>
�C%=0�255
>table%(C%)=(C%-16)/219*F
>5r%(C%)=�((C%-128)/160*F):b%(C%)=�((C%-128)/126*F)
>&Jg%(C%)=�(-(C%-128)/160*rwt/gwt*F):gpal%(C%)=�(-(C%-128)/126*bwt/gwt*F)
>0�
>:�
>D<table%()=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
>N:st%=0:�#c%=0:cache%=�:rowbytes%=1440:input=422:gamma=1
>X�scale% ymul%=ymul%*2
>b:info$="CCIR601 4:2:2 file "+�sx%+" by "+�sy%+" pixels"
>l
� 3100
>v$quant%=8:�#c%=0:a$=�#c%:st%=�#c%
>� sx%=�a$:sy%=�(�a$,�a$," ")))
>�,�nopal:input=24:step24=3:rowbytes%=sx%*3
>�4rbo%=0:gbo%=1:bbo%=2:cache%=�:flag=700:r$="FN24"
>�Qinfo$="!RayShade 'RGB' image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
>�
� 3200
>�quant%=8:�#c%=0:st%=0
>�sx%=��s$,�s$,"_")+1,1)
>�Ȏ sx% �
>�� 5:sx%=768:sy%=512
>�� 2:sx%=3072:sy%=2048
>�� 1:sx%=1536:sy%=1024
>��
>�,�nopal:input=24:step24=3:rowbytes%=sx%*3
?4rbo%=0:gbo%=1:bbo%=2:cache%=�:flag=700:r$="FN24"
?Linfo$="Kodak /RGB image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
?
� 3300
? �#c%=0:input=���GET,2)
?*7s$=�GET:sx%=�s$:sy%=��s$,�s$," ")):�sy%=0 sy%=��GET
?4cache%=�:Ȏ input �
?>D� 4:input=1:r$="FN8":r%(0)=F:g%()=r%():b%()=r%():bigendianbits=�
?Hrowbytes%=(sx%+7)�8
?R!� 5:input=8:r$="FN8":E%=��GET
?\1�C%=0�E%:r%(C%)=C%/E%*F:�:g%()=r%():b%()=r%()
?frowbytes%=sx%
?pA� 6:input=24:r$="FN24":E%=��GET:step24=3:rbo%=0:gbo%=1:bbo%=2
?z1�C%=0�E%:r%(C%)=C%/E%*F:�:g%()=r%():b%()=r%()
?�rowbytes%=sx%*3
?��
?�st%=�#c%:flag=700
?�Binfo$+="pbm image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
?�$� �GET �s$=�#c%:��s$,1)<>"#":=s$
?�
� 3400
?�$�#c%=0:s$=�GET:input=16:quant%=5
?�.s$=�GET:sx%=�s$:sy%=��s$,�s$," ")):s$=�GET
?�-� rpal%(255),gpal%(255):input=16:step24=2
?�
�C%=0�255
?�"gpal%(C%)=(C%>>5)<<8 � (C%�31)
?�+rpal%(C%)=((C%>>2)�31)<<16 � (C%�3)<<11
?��
@cache%=�:r$="FN16"
@1�C%=0�31:r%(C%)=C%/31*F:�:g%()=r%():b%()=r%()
@%rowbytes%=sx%*2:st%=�#c%:flag=700
@$Ainfo$="p15 image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
@.
� 3450
@8�#c%=0:info$=�GET
@B3ybits%=��info$,�info$," ")):ymax%=(1<<ybits%)-1
@L:ubits%=��info$,�info$,"Y ")+1):umax%=(1<<(ubits%-1))-1
@V:vbits%=��info$,�info$,"U ")+1):vmax%=(1<<(vbits%-1))-1
@`&s$=�GET:sx%=�s$:sy%=��s$,�s$," "))
@j2� rpal%(255),gpal%(255),bpal%(255),table%(255)
@t'�C%=0�ymax%:table%(C%)=C%/ymax%*F:�
@~D%=(1<<ubits%)-1
@�-�C%=0�D%:d=C%/umax%:�d>1 d=-(D%-C%)/umax%
@�;b%(C%)=�(d*(1-bwt)*F):gpal%(C%)=�(-d*(1-bwt)*bwt/gwt*F)
@��
@�D%=(1<<vbits%)-1
@�-�C%=0�D%:d=C%/vmax%:�d>1 d=-(D%-C%)/vmax%
@�8r%(C%)=�(d*(1-rwt)*F):g%(C%)=�(-d*(1-rwt)*rwt/gwt*F)
@��
@�;rowbytes%=sx%*2:st%=�#c%:cache%=�:r$="FN2250":input=555
@�*info$+=", "+�sx%+" by "+�sy%+" pixels"
@�
� 3500
@�Aquant%=1:�#c%=6:E%=�HW:sx%=�HW:sx%=�HW:sy%=�HW:st%=�HW:st%=�W
@�4rowbytes%=sx%/8+1��1:cache%=�:st%+=�#c%:�#c%=st%
AȎ E% �
A
� 1
A,r$="FN8":input=1:r%(0)=F:g%(0)=F:b%(0)=F
AKinfo$="Pocketbook bitmap, "+�sx%+" by "+�sy%+" pixels, 1 bit per pixel"
A(� 2
A29planar%=�:planes%=2:r$="FN1600":input=8:cachebytes%=�
A<?r%(0)=F:r%(1)=(F/3)*2:r%(2)=F/3:r%(3)=0:g%()=r%():b%()=r%()
AFHplbytes%=rowbytes%*planes%:buff%=�dim(plbytes%*sy%):pbuff%=�dim(sx%)
APrealrowbytes%=rowbytes%*sy%
AZNinfo$="PocketbookII bitmap, "+�sx%+" by "+�sy%+" pixels, 2 bits per pixel"
Ad
An(� 42,"Unknown Pocketbook PIC format"
Ax�
A�
� 3600
A�Bpcdblk%=�dim(40):ș&20023,"ChangeFSI$PCDindex",pcdblk%,20 �,,Z
A�5�Z �pcdblk%?Z=13:pcdindex%=�$pcdblk% �pcdindex%=3
A�Bș"PhotoCD_Open",1,c%,1 � pcdh%:ș"PhotoCD_GetCount",pcdh% �,Z
A�?�(Z>>pcdindex%)=0 �#c%:�42,"Desired resolution unavailable"
A�+ș"PhotoCD_GetRotation",pcdh% �,,pcdtr%
A�5ș"PhotoCD_GetSize",pcdh%,,pcdindex% �,,,,sx%,sy%
A�)pcdblk%!0=0:pcdblk%!8=sx%:pcdblk%!4=0
A�7pcdblk%!16=0:pcdblk%!20=2:pcdblk%!24=1:pcdblk%!28=3
A�Ȏ pcdtr% �
A�� 0
A�� &80000000:hflip%=�hflip%
B� 90
BȎ rotate% �
B� 0:rotate%=1
B"� -1:rotate%=0
B,/� 1:rotate%=0:vflip%=�vflip%:hflip%=�hflip%
B6�
B@� &8000005A
BJȎ rotate% �
BT � 0:rotate%=1:vflip%=�vflip%
B^!� -1:rotate%=0:vflip%=�vflip%
Bh � 1:rotate%=0:hflip%=�hflip%
Br�
B|'� 180:hflip%=�hflip%:vflip%=�vflip%
B�� &800000B4:vflip%=�vflip%
B�	� 270
B�Ȏ rotate% �
B�� 0:rotate%=-1
B�� 1:rotate%=0
B�0� -1:rotate%=0:vflip%=�vflip%:hflip%=�hflip%
B��
B�� &8000010E
B�Ȏ rotate% �
B�!� 0:rotate%=-1:vflip%=�vflip%
B� � 1:rotate%=0:vflip%=�vflip%
B�!� -1:rotate%=0:hflip%=�hflip%
B��
C PANIC
C�
C&@input=24:step24=3:rbo%=0:gbo%=1:bbo%=2:pcdcachesize%=32*1024
C0Arowbytes%=sx%*3:�nopal:cache%=�:pcdcache%=�dim(pcdcachesize%)
C:Iinfo$="PhotoCD image, "+�sx%+" by "+�sy%+" pixels, 24 bits per pixel"
CD
� 3700
CN3A%=�"<ChangeFSI$Dir>.CFSIjpeg":jpeg%=�dim(�#A%)
CXș12,4,A%,jpeg%,�#A%:�#A%
CbCdatacache%=�cachedim(�#c%):�datacache%=-1 datacache%=�dim(�#c%)
Cl$�#c%=0:ș12,4,c%,datacache%,�#c%
CvQA%=datacache%:B%=jpegblk%:C%=jpegblk%+4:D%=jpegblk%+8:E%=jpegblk%+12:�jpeg%+8
C�&B%=jpegblk%!12:jpegspace%=�dim(B%)
C�'C%=datacache%:A%=jpegspace%:D%=�#c%
C�5�jpeg%:cache%=�:�!A% �42,"JPEG code error: "+�!A%
C�5sx%=A%!20:sy%=A%!24:input=8*A%?28:�nopal:step24=4
C�Binfo$="JFIF image, "+�sx%+" by "+�sy%+" pixels, "+�bits(input)
C�%jpegy%=sy%:r$="FN"+è(3700+input)
C�	� 666
D*?st%=0:�#c%=0:sx%=160:sy%=128:input=8:cache%=�:rowbytes%=sx%
D4<�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%():r$="FN8"
D>Minfo$="The number of the beast, 160 by "+�sy%+" pixels, 8 bits per pixel"
DH�
DR�info% �info$
D\#ș"Hourglass_On",1:hour%=&406c4
Df0�invert% r%()=F-r%():g%()=F-g%():b%()=F-b%()
Dp�xdiv% �reduce(xmul%,xdiv%)
Dz�ydiv% �reduce(ymul%,ydiv%)
D�
Ȏ m �
D�D� -1:x%=256:y%=256:ncol=256:�scaleo% xdiv%=xdiv%*2:ydiv%=ydiv%*2
D�.� -2:x%=sx%:y%=sy%:�spm=18 ncol=1 �ncol=15
D�(� -3,-5,-6:x%=sx%:y%=sy%:ncol=2^15-1
D�(� -4,-7,-8:x%=sx%:y%=sy%:ncol=2^24-1
D�
D�5ș53,m,4 � ,,nx:ș53,m,5 � ,,ny:nx=1<<nx:ny=1<<ny
D�1ș53,m,11 � ,,x%:ș53,m,12 � ,,y%:x%+=1:y%+=1
D� ș53,m,3 � ,,ncol:�scaleo% �
D��rotate% �
D�!xdiv%=xdiv%*ny:ydiv%=ydiv%*nx
D��xdiv% ymul%=ymul%*2
D��ydiv% xmul%=xmul%*2
E�
E!xdiv%=xdiv%*nx:ydiv%=ydiv%*ny
E�xdiv% xmul%=xmul%*2
E$�ydiv% ymul%=ymul%*2
E.�
E8�
EB!ș&62A51,m � r0;V:�(V �1)=0 �
EV�r0=1 �
E`ncol=255:�m$<>"D" m$="R"
Ej�
Et�
E~�
E��m=-6 � m=-7 � m=-8 �
E�*nx=��pnm$,5):ny=��pnm$,�pnm$,",",5)+1)
E��scaleo% �
E��rotate% �
E��xdiv% ymul%=ymul%*nx
E��ydiv% xmul%=xmul%*ny
E��
E��xdiv% xmul%=xmul%*nx
E��ydiv% ymul%=ymul%*ny
E��
E�!xdiv%=xdiv%*90:ydiv%=ydiv%*90
E��
F�
F
�rotate% Ȕ x%,y%
F�xdiv%=0 xdiv%=sx%
F(�ydiv%=0 ydiv%=sy%
F2�xs$="=" xmul%=x%:xdiv%=sx%
F<�ys$="=" ymul%=y%:ydiv%=sy%
FF�lock% �
FPM�xmul%/xdiv%>ymul%/ydiv% xmul%=ymul%:xdiv%=ydiv% �ymul%=xmul%:ydiv%=xdiv%
FZ�
Fd
�ncol=1 �
FnȎ m$ �
Fx$�"C":xdiv%=xdiv%*4:ydiv%=ydiv%*4
F�� A%(16),B%(16)
F��A%()=0,&00000001,&08000001,&08000101,&08080101,&08080103,&0C080103,&0C080303,&0C0C0303,&0C0E0303,&0C0E0703,&0E0E0703,&0E0E0707,&0E0F0707,&0E0F0F07,&0F0F0F07,&0F0F0F0F
F��B%()=0,&00000008,&01000008,&01000808,&01010808,&0101080C,&0301080C,&03010C0C,&03030C0C,&03070C0C,&03070E0C,&07070E0C,&07070E0E,&070F0E0E,&070F0F0E,&0F0F0F0E,&0F0F0F0F
F�2even_gard=�dim(17*32*4):odd_gard=�dim(17*32*4)
F�C�I%=0�16:�J%=0�16:even_gard!(J%*32*4+I%*4)=A%(I%)�B%(J%)<<4:�:�
F�B�I%=0�16:�J%=0�16:odd_gard!(I%*32*4+J%*4)=B%(I%)�A%(J%)<<4:�:�
F�$�"T":xdiv%=xdiv%*3:ydiv%=ydiv%*3
F�� A%(9),B%(9)
F�@A%()=0,&0001,&4001,&4041,&4043,&40C3,&60C3,&61C3,&71C3,&71C7
F�@B%()=0,&0004,&1004,&1104,&1106,&1186,&3186,&31C6,&71C6,&71C7
F�2even_gard=�dim(10*16*4):odd_gard=�dim(10*16*4)
F�A�I%=0�9:�J%=0�9:even_gard!(J%*16*4+I%*4)=A%(I%)�B%(J%)<<3:�:�
F�@�I%=0�9:�J%=0�9:odd_gard!(I%*16*4+J%*4)=B%(I%)�A%(J%)<<3:�:�
G$�"D":xdiv%=xdiv%*2:ydiv%=ydiv%*2
G� A%(4),B%(4)
GA%()=0,&1,&21,&31,&33
G"B%()=0,&2,&12,&32,&33
G,*even_gard=�dim(5*8):odd_gard=�dim(5*8)
G6<�I%=0�4:�J%=0�4:even_gard?(J%*8+I%)=A%(I%)�B%(J%)<<2:�:�
G@;�I%=0�4:�J%=0�4:odd_gard?(I%*8+J%)=B%(I%)�A%(J%)<<2:�:�
GJ�
GT�
G^-�reduce(xmul%,xdiv%):�reduce(ymul%,ydiv%)
Gh@�info% �"Size ratios are x ";xmul%":"xdiv%" y "ymul%":"ydiv%
Gr?x%=sx%*xmul%/xdiv%+.9999:y%=sy%*ymul%/ydiv%+.9999:rows%=sy%
G|order%=x%*y%>sx%*sy%
G�code%=�dim(8192):SP=13
G�
�cache% �
G��cachesize(code%)
G��cachebytes% �
G�:filesize%=�#c%-�#c%:�cache%>filesize% cache%=filesize%
G�9�cachebytes%>0 �cache%>cachebytes% cache%=cachebytes%
G�cacherows%=cache%
G��
G�>filesize%=sy%*rowbytes%:�cache%<rowbytes% cache%=rowbytes%
G�&�cache%>filesize% cache%=filesize%
G�Ccacherows%=striprows%:�cacherows%<1 cacherows%=cache%�rowbytes%
G�cache%=cacherows%*rowbytes%
G��
HGdatacache%=�cachedim(cache%):�datacache%=-1 datacache%=�dim(cache%)
H�
H�ncol=255 �m$<>"D" m$="R"
H&�m$="R" �(ncol=63 �m$="") �
H0+ș53,-1,3 �,,J%:�ncol=255 � �=m J%=ncol
H:$�ncol=63 �(m$=""�m$="R") J%=ncol
HDP�J%<>ncol �close:�42,"You must be in a "+�(ncol+1)+" colour mode to do this"
HNJ%=ncol:�J%=63 J%=255
HXpalette%=�dim((J%+1)*4)
Hb�ncol=255 �
Hl4ș"ColourTrans_ReadPalette",-1,-1,palette%,256*4
Hv5�I%=0�255:palette%!(I%<<2)=palette%!(I%<<2)>>>8:�
H��
H��ncol=63 �
H�
�I%=0�255
H�+palette%!(I%<<2)=(I%�7 � (I%�16)>>1)*17
H�/palette%?(I%<<2 �1)=(I%�3 � (I%�&60)>>3)*17
H�;palette%?(I%<<2 �2)=(I%�3 � (I%�8)>>1 � (I%�128)>>4)*17
H��
H��
H�H�I%=0�ncol:ș"OS_ReadPalette",I%,16 � ,,i%:palette%!(I%<<2)=i%>>>8:�
H��
H��
H�%t%=�:k%=palette%+1:nk%=palette%+2
H��I%=0�ncol*4�4
I2�palette%?I%<>k%?I% � palette%?I%<>nk%?I% t%=�
I�
I�ncol>16 �t% m$="D"
I �ncol=15 �t% m$="T"
I*
�m$="R" �
I47� sx%*xmul%/xdiv%*sy%*ymul%/ydiv%<200000 k%=3 �k%=4
I>nk%=8-k%
IH
t%=1<<nk%
IRmask%=t%-1
I\td2%=1<<nk%-1
Ifstep%=1<<(8-k%)
Ip$ncol%=ncol+1:�ncol%=64 ncol%=256
Izict%=�dim(2^(k%*3)*4-1)
I�a�cache%<8192*6 scratch%=�dim(8192*6):scratchsz%=8192*6 �scratch%=datacache%:scratchsz%=cache%
I�>�info% �"Begin table generation with ";scratchsz%" bytes."
I�
�Z%=0�2�2
I�P%=code%
I�[OPT Z%
I�
.make%
I�STMFD r13!,{r14}
I�LDR r4,ict
I�MOV r2,#step%/2
I�
.blueloop
I�MOV r1,#step%/2
I�.greenloop
I�MOV r0,#step%/2
J.redloop
JMOV r3,r0,LSR #nk%
J$MOV r14,r1,LSR #nk%
J.MOV r5,r2,LSR #nk%
J8�R r3,r3,r14,LSL #k%
JB�R r3,r3,r5,LSL #k%*2
JLBL devious
JVADD r0,r0,#step%*2
J`CMP r0,#256
JjBCC redloop
JtADD r1,r1,#step%
J~CMP r1,#256
J�BCC greenloop
J�ADD r2,r2,#step%
J�CMP r2,#256
J�BCC blueloop
J�LDMFD r13!,{pc}^
J�.ct DCD palette%
J�.min DCD code%+8192-256*2*4
J�.ict DCD ict%
J�.fsaad DCD scratch%
J�#.fsalim DCD scratch%+scratchsz%
J�.devious
J�&STMFD r13!,{r0,r1,r2,r3,r4,r8,r14}
KBIC r0,r0,#(mask%<<1)+1 
K
BIC r1,r1,#mask%
KBIC r2,r2,#mask%
K2
MOV r5,#0
K<
LDR r6,ct
KFMOV r9,#&ff0000
KPMOV r14,#&ff0000
KZLDR r12,min
Kd.devloop
KnLDR r7,[r6,r5,LSL #2] 
KxMOV r8,r7,lsr #16 
K�BIC r10,r8,#mask% 
K�ADD r11,r2,#t% 
K�CMP r10,r2 
K�BEQ blueequal
K�SUBCC r10,r2,r8 
K�SUBCC r11,r11,r8 
K�SUBCS r10,r8,r11 
K�SUBCS r11,r8,r2 
K�MUL r3,r10,r10 
K�
.doneblue
K�MUL r4,r11,r11 
K�MOV r8,r7,lsr #8
K�� r8,r8,#255 
LBIC r10,r8,#mask% 
LADD r11,r1,#t% 
LCMP r10,r1  
L"BEQ greenequal
L,SUBCC r10,r1,r8 
L6SUBCC r11,r11,r8 
L@SUBCS r10,r8,r11 
LJSUBCS r11,r8,r1 
LTMLA r3,r10,r10,r3 
L^.donegreen
LhMLA r4,r11,r11,r4 
Lr� r8,r7,#255 
L�BIC r10,r8,#mask% 
L�ADD r11,r0,#t% 
L�CMP r10,r0 
L�BEQ redequal0
L�SUBCC r10,r0,r8 
L�SUBCC r11,r11,r8 
L�SUBCS r10,r8,r11 
L�SUBCS r11,r8,r0 
L�MLA r7,r10,r10,r3 
L�STR r7,[r12,r5,LSL #2] 
L�
.donered0
L�MLA r7,r11,r11,r4 
L�CMP r7,r9 
MMOVCC r9,r7 
MADD r7,r0,#t% 
M&BIC r10,r8,#mask% 
M0ADD r11,r7,#t% 
M:CMP r10,r7 
MDBEQ redequal1
MNSUBCC r10,r7,r8 
MXSUBCC r11,r11,r8 
MbSUBCS r10,r8,r11 
MlSUBCS r11,r8,r7 
MvMLA r3,r10,r10,r3 
M�
.donered1
M�ADD r7,r5,#ncol%
M�STR r3,[r12,r7,LSL #2] 
M�MLA r7,r11,r11,r4 
M�CMP r7,r14 
M�MOVCC r14,r7 
M�ADD r5,r5,#1
M�CMP r5,#ncol%
M�BCC devloop
M�LDMFD r13!,{r0,r1,r2,r3,r4}
M�LDR r5,fsaad 
M�
MOV r7,r5
NMOV r10,#0
N
.calcnum0
NLDMIA r12!,{r8,r11} 
N CMP r8,r9 
N*STRLEB r10,[r7],#1
N4ADD r10,r10,#1
N>CMP r11,r9 
NHSTRLEB r10,[r7],#1
NRADD r10,r10,#1
N\LDMIA r12!,{r8,r11} 
NfCMP r8,r9 
NpSTRLEB r10,[r7],#1
NzADD r10,r10,#1
N�CMP r11,r9 
N�STRLEB r10,[r7],#1
N�ADD r10,r10,#1
N�CMP r10,#ncol%
N�BCC calcnum0
N�SUBS r10,r7,r5
N�SWIEQ 256+�"A"
N�CMP r10,#4 ;if<4 then
N�#MOVCC r7,r5 ;reset list pointer
N�"LDRCCB r5,[r7] ;first possible
N�&LDRCCB r8,[r7,#1] ;second possible
N��RCC r5,r5,r8,lsl #8
N�%LDRCCB r8,[r7,#2] ;third possible
O�RCC r5,r5,r8,lsl #16
OADD r5,r5,r10,lsl #24
OBIC r10,r3,#1
O$STR r5,[r4,r10,LSL #2]
O.
MOV r5,r7
O8MOV r10,#0
OB
.calcnum1
OLLDMIA r12!,{r8,r11} 
OVCMP r8,r14 
O`STRLEB r10,[r7],#1
OjADD r10,r10,#1
OtCMP r11,r14 
O~STRLEB r10,[r7],#1
O�ADD r10,r10,#1
O�LDMIA r12!,{r8,r11} 
O�CMP r8,r14 
O�STRLEB r10,[r7],#1
O�ADD r10,r10,#1
O�CMP r11,r14 
O�STRLEB r10,[r7],#1
O�ADD r10,r10,#1
O�CMP r10,#ncol%
O�BCC calcnum1
O�SUBS r10,r7,r5
O�SWIEQ 256+�"B"
PCMP r10,#4 ;if<4 then
P
MOVCC r7,r5 
PLDRCCB r5,[r7] 
PLDRCCB r8,[r7,#1] 
P(�RCC r5,r5,r8,lsl #8
P2LDRCCB r8,[r7,#2] 
P<�RCC r5,r5,r8,lsl #16
PFADD r5,r5,r10,lsl #24
PP�R r10,r3,#1
PZSTR r5,[r4,r10,LSL #2]
PdSTR r7,fsaad
PnLDR r8,fsalim
Px
CMP r7,r8
P�SWICS 256+�"!"
P�LDMFD r13!,{r8,pc}^
P�.redequal0
P�STR r3,[r12,r5,LSL #2] 
P�TST r8,#td2%
P�SUBNE r11,r8,r0 
P�SUBEQ r11,r11,r8 
P�B donered0
P�.redequal1
P�TST r8,#td2%
P�SUBNE r11,r8,r7 
P�SUBEQ r11,r11,r8 
P�B donered1
Q.greenequal
QTST r8,#td2%
QSUBNE r11,r8,r1 
Q"SUBEQ r11,r11,r8 
Q,B donegreen
Q6.blueequal
Q@MOV r3,#0 
QJTST r8,#td2%
QTSUBNE r11,r8,r2 
Q^SUBEQ r11,r11,r8 
QhB doneblue
Qr]
Q|�
Q�I%=�:�make%
Q�m�info% �"Generated 'r'";k%" tables for ";ncol%" colours using ";!fsaad-scratch%" bytes, taking "�-I%" cS"
Q�%safesubict%=�dim(!fsaad-scratch%)
Q�:�I%=0�!fsaad-scratch%+4�4:safesubict%!I%=scratch%!I%:�
Q�O�I%=0�2^(k%*3)*4-1�4:�(ict%!I%>>>24)>3 ict%!I%=ict%!I%-scratch%+safesubict%
Q��
Q��
Q��
Q��fast% ��<>0 �0
Q�
Ȏ m �
Q�� -1:col=0
Q�� -3,-4,-5,-6,-7,-8:col=2
R
R�m$="D" �ncol=3 m$=""
R0col=0:�ncol>15 �m$="C" �m$="D" �m$="R" col=2
R&.�ncol=63 � ncol=255 �m$="D" col=0:ncol=256
R0�
R:
�ncol=1 �
RDȎ m$ �
RN�"C":col=0:x%=x%+1��1
RX�"D":col=0:x%=x%+3��3
Rb�"T":col=0:x%=x%+1��1
Rl�
Rv�
R��sharpen%=� sharpen%=24
R�� cl%(x%+7,col)
R�"� xl%(x%+7,col),xp%(sx%+7,col)
R�� xl2%(x%+7,col)
R��sharpen% �
R�
�order% �
R�4� rm%(sx%+7,col),rm1%(sx%+7,col),rm2%(sx%+7,col)
R��
R�1� rm%(x%+7,col),rm1%(x%+7,col),rm2%(x%+7,col)
R��
R��
R�"�hist%�equal% � vals%(256,col)
R�� nl%(x%+7,col)
Stotvals%=x%*(col+1)
Stotvals2%=sx%*(col+1)
S�Z=0�2�2:P%=code%
S 
Ȏ ncol �
S*� 2^24-1
S4
[OPT Z
S>.div255
SH]
SR�I%=0�2^p6bits-1
S\
[OPT Z
SfEQUD I%/(2^p6bits-1)*F
Sp]
Sz�
S�
[OPT Z
S�.fs%
S�STMFD SP !,{R14}
S�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
S�LDR R10,[R9,#4*8] 
S�LDR R11,[R9,#3*8] 
S�$LDR R12,[R9,#2*8]:LDR R12,[R12] 
S�LDR R8,[R9,#8]:LDR R8,[R8] 
S�LDR R9,[R9]:LDR R9,[R9] 
S�LDR R4,[R10] 
S�LDR R5,[R10,#4] 
S�LDR R6,[R10,#8] 
S�ADR R7,div255
T.fsloop
TADD R10,R10,R8 
T%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
T$WSUB R0,R4,R4,LSR #p6bits:ADD R0,R0,#1<<(bits-p6bits-1):MOV R0,R0,LSR #(bits-p6bits)
T.&LDR R2,[R7,R0,LSL #2]:SUB R4,R4,R2
T8%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
TBjSUB R3,R5,R5,LSR #p6bits:ADD R3,R3,#1<<(bits-p6bits-1):MOV R3,R3,LSR #(bits-p6bits):�R R0,R0,R3,LSL #8
TL&LDR R2,[R7,R3,LSL #2]:SUB R5,R5,R2
TV%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
T`kSUB R3,R6,R6,LSR #p6bits:ADD R3,R3,#1<<(bits-p6bits-1):MOV R3,R3,LSR #(bits-p6bits):�R R0,R0,R3,LSL #16
Tj&LDR R2,[R7,R3,LSL #2]:SUB R6,R6,R2
TtDSTRB R0,[R12]:MOV R0,R0,LSR #8:STRB R0,[R12,#1]:MOV R0,R0,LSR #8
T~STRB R0,[R12,#2]
T�]
T��m=-8 �
T�
[OPT Z
T�ADD R12,R12,R1,LSL #2
T�]
T��
T�
[OPT Z
T�(ADD R12,R12,R1,LSL #1:ADD R12,R12,R1
T�]
T��
T��dither% �
T�
[OPT Z
UADD R0,R11,#4 
U
ADD R2,R4,R4,LSL #1 
U)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
USTR R3,[R11,-R8]
U(ADD R2,R4,R4,LSL #2 
U2%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
U<STR R3,[R11]
UFMOV R3,R4,ASR #4 
UPSTR R3,[R11,R8]! 
UZRSB R2,R4,R4,LSL #3 
UdLDR R4,[R10] 
UnADD R4,R4,R2,ASR #4 
UxADD R2,R5,R5,LSL #1 
U�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
U�STR R3,[R0,-R8]
U�MOV R3,R5,ASR #4 
U�STR R3,[R0,R8] 
U�ADD R2,R5,R5,LSL #2 
U�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
U�STR R3,[R0],#4 
U�RSB R2,R5,R5,LSL #3 
U�LDR R5,[R10,#4] 
U�ADD R5,R5,R2,ASR #4 
U�ADD R2,R6,R6,LSL #1 
U�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
U�STR R3,[R0,-R8]
VADD R2,R6,R6,LSL #2 
V$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
VSTR R3,[R0]
V"MOV R3,R6,ASR #4 
V,STR R3,[R0,R8] 
V6RSB R2,R6,R6,LSL #3 
V@LDR R6,[R10,#8] 
VJADD R6,R6,R2,ASR #4 
VT]
V^�
Vh
[OPT Z
VrLDMIA R10,{R4,R5,R6}
V|]
V��
V�
[OPT Z
V�SUBS R9,R9,#1:BNE fsloop
V�LDMFD SP !,{PC}^
V�]
V�� 2^15-1
V�
[OPT Z
V�
.div31
V�]
V��I%=0�31
V�
[OPT Z
V�EQUD I%/31*F
V�]
W�
W
[OPT Z
W.fs%
W&STMFD SP !,{R14}
W0!LDR R1,[R9,#5*8]:LDR R1,[R1] 
W:LDR R10,[R9,#4*8] 
WDLDR R11,[R9,#3*8] 
WN$LDR R12,[R9,#2*8]:LDR R12,[R12] 
WXLDR R8,[R9,#8]:LDR R8,[R8] 
WbLDR R9,[R9]:LDR R9,[R9] 
WlLDR R4,[R10] 
WvLDR R5,[R10,#4] 
W�LDR R6,[R10,#8] 
W�ADR R7,div31
W�.fsloop
W�ADD R10,R10,R8 
W�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
W�FSUB R0,R4,R4,LSR #5:ADD R0,R0,#1<<(bits-6):MOV R0,R0,LSR #(bits-5)
W�&LDR R2,[R7,R0,LSL #2]:SUB R4,R4,R2
W�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
W�YSUB R3,R5,R5,LSR #5:ADD R3,R3,#1<<(bits-6):MOV R3,R3,LSR #(bits-5):�R R0,R0,R3,LSL #5
W�&LDR R2,[R7,R3,LSL #2]:SUB R5,R5,R2
W�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
W�ZSUB R3,R6,R6,LSR #5:ADD R3,R3,#1<<(bits-6):MOV R3,R3,LSR #(bits-5):�R R0,R0,R3,LSL #10
W�&LDR R2,[R7,R3,LSL #2]:SUB R6,R6,R2
XISTRB R0,[R12]:MOV R0,R0,LSR #8:STRB R0,[R12,#1]:ADD R12,R12,R1,LSL #1
X]
X�dither% �
X 
[OPT Z
X*ADD R0,R11,#4 
X4ADD R2,R4,R4,LSL #1 
X>)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
XHSTR R3,[R11,-R8]
XRADD R2,R4,R4,LSL #2 
X\%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
XfSTR R3,[R11]
XpMOV R3,R4,ASR #4 
XzSTR R3,[R11,R8]! 
X�RSB R2,R4,R4,LSL #3 
X�LDR R4,[R10] 
X�ADD R4,R4,R2,ASR #4 
X�ADD R2,R5,R5,LSL #1 
X�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
X�STR R3,[R0,-R8]
X�MOV R3,R5,ASR #4 
X�STR R3,[R0,R8] 
X�ADD R2,R5,R5,LSL #2 
X�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
X�STR R3,[R0],#4 
X�RSB R2,R5,R5,LSL #3 
X�LDR R5,[R10,#4] 
YADD R5,R5,R2,ASR #4 
YADD R2,R6,R6,LSL #1 
Y(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
Y$STR R3,[R0,-R8]
Y.ADD R2,R6,R6,LSL #2 
Y8$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
YBSTR R3,[R0]
YLMOV R3,R6,ASR #4 
YVSTR R3,[R0,R8] 
Y`RSB R2,R6,R6,LSL #3 
YjLDR R6,[R10,#8] 
YtADD R6,R6,R2,ASR #4 
Y~]
Y��
Y�
[OPT Z
Y�LDMIA R10,{R4,R5,R6}
Y�]
Y��
Y�
[OPT Z
Y�SUBS R9,R9,#1:BNE fsloop
Y�LDMFD SP !,{PC}^
Y�]
Y�	� 256
Y�
[OPT Z
Y�.div255
Z]
Z

�I%=0�255
Z
[OPT Z
ZEQUD I%/255*F
Z(]
Z2�
Z<
[OPT Z
ZP.fs%
ZZSTMFD SP !,{R14}
ZdLDR R10,[R9,#4*8] 
ZnADR R7,div255
Zx!LDR R1,[R9,#5*8]:LDR R1,[R1] 
Z�LDR R11,[R9,#3*8] 
Z�$LDR R12,[R9,#2*8]:LDR R12,[R12] 
Z�LDR R8,[R9,#8]:LDR R8,[R8] 
Z�LDR R9,[R9]:LDR R9,[R9] 
Z�LDR R4,[R10],R8 
Z�.fsloop
Z�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
Z�WSUB R0,R4,R4,LSR #8:ADD R0,R0,#1<<(bits-9):MOV R0,R0,LSR #(bits-8):STRB R0,[R12],R1
Z�LDR R2,[R7,R0,LSL #2]
Z�]
Z��dither% �
Z�
[OPT Z
Z�SUB R4,R4,R2 
[MOVCS R4,#0
[ADD R2,R4,R4,LSL #1 
[)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
["STR R3,[R11,-R8]
[,ADD R2,R4,R4,LSL #2 
[6%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
[@STR R3,[R11]
[JMOV R3,R4,ASR #4 
[TSTR R3,[R11,R8]! 
[^RSB R2,R4,R4,LSL #3 
[hLDR R4,[R10],R8 
[rADD R4,R4,R2,ASR #4 
[|]
[��
[�
[OPT Z
[�LDR R4,[R10],R8
[�]
[��
[�
[OPT Z
[�SUBS R9,R9,#1:BNE fsloop
[�LDMFD SP !,{PC}^
[�]
[�� 63,255
[�div15=P%:�I%=0�255*4�4
[�
[OPT Z
[� EQUD (palette%!I%�&FF)/255*F
\#EQUD (palette%!I%>>8�&FF)/255*F
\$EQUD (palette%!I%>>16�&FF)/255*F
\]
\&�
\0
�m$="R" �
\:
[OPT Z
\D.ictloc EQUD ict%
\N]
\X�
\b
[OPT Z
\lEQUD div15
\v.fs%
\�STMFD SP !,{R14}
\�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
\�LDR R10,[R9,#4*8] 
\�LDR R11,[R9,#3*8] 
\�$LDR R12,[R9,#2*8]:LDR R12,[R12] 
\�LDR R8,[R9,#8]:LDR R8,[R8] 
\�LDR R9,[R9]:LDR R9,[R9] 
\�LDR R4,[R10] 
\�LDR R5,[R10,#4] 
\�LDR R6,[R10,#8] 
\�LDR R7,fs%-4
\�.fsloop
\�ADD R10,R10,R8 
]]
]Ȏ m$ �
]�"T"
] 
[OPT Z
]*%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
]44MOV R0,R4,LSR #(bits-4):CMP R0,#15:MOVCS R0,#15 
]>%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
]HGMOV R3,R5,LSR #(bits-4):CMP R3,#15:MOVCS R3,#15:�R R0,R0,R3,LSL #4 
]R%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
]\GMOV R3,R6,LSR #(bits-4):CMP R3,#15:MOVCS R3,#15:�R R0,R0,R3,LSL #8 
]fLDR R3,colmatchloc
]pLDRB R0,[R3,R0]
]z+ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
]�LDR R2,[R3],#4:SUB R4,R4,R2
]�.LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
]�]
]��"R"
]��srchdevlist
]�
]�
[OPT Z
]�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
]�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
]�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
]�STMFD SP !,{R7,R8,R9}
]�
MVN R2,#0
]�MOV R3,#&30<<23
^.srch RSB R7,R3,#&20<<23
^MOV R8,R6,LSR #bits-8
^SUB R8,R8,R8,LSR #4
^$ADDS R7,R7,R8,LSL #23
^.MOVVSS R7,#&7F000000
^8MOVMI R7,#0
^B� R7,R7,#&60000000
^LADD R7,R7,R3
^VADD R14,R7,R7,LSR #4
^`ADD R7,R14,R14,LSR #8
^jADD R7,R7,R7,LSR #16
^tSUBS R8,R6,R14,LSR #31-bits
^~RSBLT R8,R8,#0
^�MOV R8,R8,LSR #bits/2
^�MUL R9,R8,R8
^�RSB R7,R3,#&20<<23
^�MOV R8,R5,LSR #bits-8
^�SUB R8,R8,R8,LSR #4
^�ADDS R7,R7,R8,LSL #23
^�MOVVSS R7,#&7F000000
^�MOVMI R7,#0
^�� R7,R7,#&60000000
^�ADD R7,R3,R7
^�ADD R7,R7,R7,LSR #4
^��R R14,R14,R7,LSR #8
_ADD R7,R7,R7,LSR #8
_
ADD R7,R7,R7,LSR #16
_SUBS R8,R5,R7,LSR #31-bits
_RSBLT R8,R8,#0
_(MOV R8,R8,LSR #bits/2
_2MUL R7,R8,R8
_<ADD R7,R7,R7,LSL #2
_FADD R9,R9,R7,LSL #1
_PRSB R7,R3,#&20<<23
_ZMOV R8,R4,LSR #bits-8
_dSUB R8,R8,R8,LSR #4
_nADDS R7,R7,R8,LSL #23
_xMOVVSS R7,#&7F000000
_�MOVMI R7,#0
_�� R7,R7,#&60000000
_�ADD R7,R3,R7
_�ADD R7,R7,R7,LSR #4
_��R R14,R14,R7,LSR #16
_�ADD R7,R7,R7,LSR #8
_�ADD R7,R7,R7,LSR #16
_�SUBS R8,R4,R7,LSR #31-bits
_�RSBLT R8,R8,#0
_�MOV R8,R8,LSR #bits/2
_�MUL R7,R8,R8
_�ADD R7,R7,R7,LSL #1
_�ADD R9,R9,R7
`
CMP R9,R2
`MOVLS R2,R9
`MOVLS R0,R14
`"SUBS R3,R3,#&10<<23
`,BGE srch
`6� R7,R0,#&40000000
`@MOV R8,R7,LSR #23
`J� R7,R0,#&600000
`T�R R8,R8,R7,LSR #16
`^� R7,R0,#&4000
`h�R R8,R8,R7,LSR #10
`r� R7,R0,#&20000000
`|�R R8,R8,R7,LSR #26
`�� R7,R0,#&3800
`��R R0,R8,R7,LSR #11
`�LDMFD SP !,{R7,R8,R9}
`�+ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
`�LDR R2,[R3],#4:SUB R4,R4,R2
`�.LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
`�]
`��
`�
[OPT Z
`�STRB R0,[R12],R1
`�]
`��dither% �
`�
[OPT Z
aADD R0,R11,#4 
aADD R2,R4,R4,LSL #1 
a)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
a&STR R3,[R11,-R8]
a0ADD R2,R4,R4,LSL #2 
a:%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
aDSTR R3,[R11]
aNMOV R3,R4,ASR #4 
aXSTR R3,[R11,R8]! 
abRSB R2,R4,R4,LSL #3 
alLDR R4,[R10] 
avADD R4,R4,R2,ASR #4 
a�ADD R2,R5,R5,LSL #1 
a�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
a�STR R3,[R0,-R8]
a�MOV R3,R5,ASR #4 
a�STR R3,[R0,R8] 
a�ADD R2,R5,R5,LSL #2 
a�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
a�STR R3,[R0],#4 
a�RSB R2,R5,R5,LSL #3 
a�LDR R5,[R10,#4] 
a�ADD R5,R5,R2,ASR #4 
a�ADD R2,R6,R6,LSL #1 
a�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
bSTR R3,[R0,-R8]
bADD R2,R6,R6,LSL #2 
b$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
b STR R3,[R0]
b*MOV R3,R6,ASR #4 
b4STR R3,[R0,R8] 
b>RSB R2,R6,R6,LSL #3 
bHLDR R6,[R10,#8] 
bRADD R6,R6,R2,ASR #4 
b\]
bf�
bp
[OPT Z
bzLDMIA R10,{R4,R5,R6}
b�]
b��
b�
[OPT Z
b�SUBS R9,R9,#1:BNE fsloop
b�LDMFD SP !,{PC}^
b�]
b�� 15
b�divtable=P%:Ȏ m$ �
b�	� "D"
b�	� "R"
b��I%=0�15*4�4
b�
[OPT Z
b�&EQUD (palette%!I%>>4�&F)/bright%*F
c'EQUD (palette%!I%>>12�&F)/bright%*F
c'EQUD (palette%!I%>>20�&F)/bright%*F
c]
c$�
c.
[OPT Z
c8.ictloc EQUD ict%
cB]
cL	� "T"
cV�I%=0�15
c`
[OPT Z
cjEQUD I%/bright%*F
ct]
c~�
c�
c��I%=0�7
c�
[OPT Z
c�EQUD I%/(bright%�2)*F
c�]
c��
c��
c�
[OPT Z
c�.fs%
c�STMFD SP !,{R14}
c�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
c�LDR R10,[R9,#4*8] 
dLDR R11,[R9,#3*8] 
d
$LDR R12,[R9,#2*8]:LDR R12,[R12] 
dLDR R8,[R9,#8]:LDR R8,[R8] 
dLDR R9,[R9]:LDR R9,[R9] 
d(]
d2�m$="D" �m$="R" �
d<
[OPT Z
dFLDR R4,[R10] 
dPLDR R5,[R10,#4] 
dZLDR R6,[R10,#8] 
dd]
dn�
dx
[OPT Z
d�LDR R4,[R10],R8 
d�]
d��
d��m$<>"D" �
d�
[OPT Z
d�ADR R7,divtable
d�]
d��
d�
[OPT Z
d�.fsloop
d�]
d�Ȏ m$ �
d��"R"
e
[OPT Z
eADD R10,R10,R8
e]
e"�srchdevlist
e,
[OPT Z
e6
MOV r3,r0
e@]
eJ	� "D"
eT
[OPT Z
e^ADD R10,R10,R8 
eh
MOV R3,#0
er%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
e|CMP R4,#F>>1 
e� SUBCS R4,R4,#F:�RCS R3,R3,#1
e�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
e�CMP R5,#F>>1 
e� SUBCS R5,R5,#F:�RCS R3,R3,#2
e�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
e�CMP R6,#F>>1 
e� SUBCS R6,R6,#F:�RCS R3,R3,#4
e�]
e�	� "T"
e�
[OPT Z
e�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
e�<RSB R3,R4,R4,LSL #4:ADD R3,R3,#F>>1:MOV R3,R3,LSR #bits 
e�LDR R2,[R7,R3,LSL #2] 
fSUB R4,R4,R2 
f]
f
f&
[OPT Z
f0%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
f:<RSB R3,R4,R4,LSL #3:ADD R3,R3,#F>>1:MOV R3,R3,LSR #bits 
fDLDR R2,[R7,R3,LSL #2] 
fNSUB R4,R4,R2 
fX]
fb�
fl
[OPT Z
fvMOV R2,R12,LSR #1
f�TST R12,#1
f�LDRB R0,[R2]
f� �EQ R0,R0,#&F0:�REQ R0,R0,R3
f�'�NE R0,R0,#&0F:�RNE R0,R0,R3,LSL #4
f�STRB R0,[R2]
f�ADD R12,R12,R1
f�]
f��m$="D" �m$="R" �
f��dither% �
f�
[OPT Z
f�ADD R0,R11,#4 
f�ADD R2,R4,R4,LSL #1 
f�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
gSTR R3,[R11,-R8]
gADD R2,R4,R4,LSL #2 
g%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
g STR R3,[R11]
g*MOV R3,R4,ASR #4 
g4STR R3,[R11,R8]! 
g>RSB R2,R4,R4,LSL #3 
gHLDR R4,[R10] 
gRADD R4,R4,R2,ASR #4 
g\ADD R2,R5,R5,LSL #1 
gf(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
gpSTR R3,[R0,-R8]
gzMOV R3,R5,ASR #4 
g�STR R3,[R0,R8] 
g�ADD R2,R5,R5,LSL #2 
g�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
g�STR R3,[R0],#4 
g�RSB R2,R5,R5,LSL #3 
g�LDR R5,[R10,#4] 
g�ADD R5,R5,R2,ASR #4 
g�ADD R2,R6,R6,LSL #1 
g�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
g�STR R3,[R0,-R8]
g�ADD R2,R6,R6,LSL #2 
g�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
g�STR R3,[R0]
hMOV R3,R6,ASR #4 
hSTR R3,[R0,R8] 
hRSB R2,R6,R6,LSL #3 
h$LDR R6,[R10,#8] 
h.ADD R6,R6,R2,ASR #4 
h8]
hB�
hL
[OPT Z
hVLDMIA R10,{R4,R5,R6}
h`]
hj�
ht�
h~�dither% �
h�
[OPT Z
h�ADD R2,R4,R4,LSL #1 
h�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
h�STR R3,[R11,-R8]
h�ADD R2,R4,R4,LSL #2 
h�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
h�STR R3,[R11]
h�MOV R3,R4,ASR #4 
h�STR R3,[R11,R8]! 
h�RSB R2,R4,R4,LSL #3 
h�LDR R4,[R10],R8 
h�ADD R4,R4,R2,ASR #4 
i]
i
�
i
[OPT Z
iLDR R4,[R10],R8
i(]
i2�
i<�
iF
[OPT Z
iPSUBS R9,R9,#1:BNE fsloop
iZLDMFD SP !,{PC}^
id]
in� 3
ixdivtable=P%:Ȏ m$ �
i�	� "C"
i�	� "R"
i��I%=0�3*4�4
i�
[OPT Z
i�&EQUD (palette%!I%>>4�&F)/bright%*F
i�'EQUD (palette%!I%>>12�&F)/bright%*F
i�'EQUD (palette%!I%>>20�&F)/bright%*F
i�]
i��
i�
i�
[OPT Z
i�
EQUD 0
i�EQUD 1/(bright%�4)*F
jEQUD 2/(bright%�4)*F
j
EQUD F
j]
j"�
j,
[OPT Z
j6.fs%
j@STMFD SP !,{R14}
jJ!LDR R1,[R9,#5*8]:LDR R1,[R1] 
jTLDR R10,[R9,#4*8] 
j^LDR R11,[R9,#3*8] 
jhLDR R12,[R9,#2*8] 
jrLDR R12,[R12] 
j|LDR R8,[R9,#8] 
j�LDR R8,[R8] 
j�LDR R9,[R9] 
j�LDR R9,[R9] 
j�]
j��m$="C" �m$="R" �
j�
[OPT Z
j�LDR R4,[R10] 
j�LDR R5,[R10,#4] 
j�LDR R6,[R10,#8] 
j�]
j��
j�
[OPT Z
j�LDR R4,[R10],R8 
k]
k�
k
[OPT Z
k&.fsloop
k0]
k:
�m$<>"C"�
kD
[OPT Z
kNADR R7,divtable
kX]
kb�
klȎ m$ �
kv�"C"
k�
[OPT Z
k�ADD R10,R10,R8 
k�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
k�%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
k�%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
k�MOV R3,#0 
k�CMP R4,#F>>1:�RCS R3,R3,#1
k�CMP R5,#F>>1:�RCS R3,R3,#2
k�CMP R6,#F>>1:�RCS R3,R3,#4
k�"CMP R3,#6:�Q R3,#1:BEQ octcyan
k�BCS octwhite
k�CMP R3,#4:BEQ octblue
k�MOVCS R3,#2:BCS octmagenta
lCMP R3,#2:BEQ octgreen
lBCS octyellow
lCMP R3,#0:BEQ octblack
l .octred
l*RSB R0,R4,#F 
l4CMP R5,R0 
l>BLT octred1
lHCMP R5,R6 
lRMOVGE R3,#3 
l\MOVLT R3,#2 
lfB octconvert
lp.octred1
lzCMP R0,R6 
l�MOVGE R3,#0 
l�MOVLT R3,#2 
l�B octconvert
l�
.octgreen
l�RSB R0,R5,#F 
l�CMP R0,R4 
l�BLT octgreen1
l�CMP R0,R6 
l�MOVGE R3,#0 
l�MOVLT R3,#1 
l�B octconvert
l�.octgreen1
l�CMP R4,R6 
mMOVGE R3,#3 
mMOVLT R3,#1 
mB octconvert
m$.octblue
m.RSB R0,R6,#F 
m8CMP R0,R4 
mBBLT octblue1
mLCMP R0,R5 
mVMOVGE R3,#0 
m`MOVLT R3,#1 
mjB octconvert
mt
.octblue1
m~CMP R4,R5 
m�MOVGE R3,#2 
m�MOVLT R3,#1 
m�B octconvert
m�
.octwhite
m�CMP R4,R5 
m�BLT octwhite1
m�CMP R5,R6 
m�MOVGE R3,#3 
m�MOVLT R3,#2 
m�B octconvert
m�.octwhite1
m�CMP R4,R6 
nMOVGE R3,#3 
n
MOVLT R3,#1 
n.octconvert
nCMP R3,#1 
n(.octcyan
n2SUBEQ R5,R5,#F
n<SUBEQ R6,R6,#F
nF.octmagenta
nPCMP R3,#2 
nZSUBEQ R4,R4,#F
ndSUBEQ R6,R6,#F
nn.octyellow
nxCMP R3,#3 
n�SUBEQ R4,R4,#F
n�SUBEQ R5,R5,#F
n�
.octblack
n�MOV R2,R12,LSR #2
n� � R7,R12,#3:MOV R7,R7,LSL #1
n�MOV R14,#3
n�ELDRB R0,[R2]:BIC R0,R0,R14,LSL R7:�R R0,R0,R3,LSL R7:STRB R0,[R2]
n�ADD R12,R12,R1
n�]
n��"R"
n�
[OPT Z
n�ADD R10,R10,R8
n�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
o%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
o%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
oSTMFD SP !,{R8,R9,R10}
o"
MVN R2,#0
o,
MOV R3,#3
o6.srch ADD R14,R3,R3,LSL #1
o@ADD R14,R7,R14,LSL #2
oJLDMIA R14,{R8,R9,R10}
oTSUBS R8,R4,R8
o^RSBMI R8,R8,#0
ohSUBS R9,R5,R9
orRSBMI R9,R9,#0
o|SUBS R10,R6,R10
o�RSBMI R10,R10,#0
o�MOV R14,R8,LSR #bits/2
o�MUL R8,R14,R14
o�MOV R14,R9,LSR #bits/2
o�MUL R9,R14,R14
o�MOV R14,R10,LSR #bits/2
o�MUL R10,R14,R14
o�ADD R9,R9,R9,LSL #2
o�ADD R8,R8,R8,LSL #1
o�ADD R14,R8,R9,LSL #1
o�ADD R14,R14,R10
o�CMP R14,R2
o�MOVCC R2,R14
pMOVCC R0,R3
pSUBS R3,R3,#1
pBPL srch
p&LDMFD SP !,{R8,R9,R10}
p0+ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
p:LDR R2,[R3],#4:SUB R4,R4,R2
pD.LDMIA R3,{R2,R3}:SUB R5,R5,R2:SUB R6,R6,R3
pN
MOV R3,R0
pXMOV R2,R12,LSR #2
pb � R7,R12,#3:MOV R7,R7,LSL #1
plMOV R14,#3
pvELDRB R0,[R2]:BIC R0,R0,R14,LSL R7:�R R0,R0,R3,LSL R7:STRB R0,[R2]
p�ADD R12,R12,R1
p�]
p�
p�
[OPT Z
p�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
p�;RSB R3,R4,R4,LSL #2:ADD R3,R3,#F>>1:MOV R3,R3,LSR#bits 
p�LDR R2,[R7,R3,LSL #2] 
p�SUB R4,R4,R2 
p�MOV R2,R12,LSR #2
p� � R5,R12,#3:MOV R5,R5,LSL #1
p�
MOV R6,#3
p�DLDRB R0,[R2]:BIC R0,R0,R6,LSL R5:�R R0,R0,R3,LSL R5:STRB R0,[R2]
p�ADD R12,R12,R1
q]
q�
q�m$="C" �m$="R" �
q �dither% �
q*
[OPT Z
q4ADD R0,R11,#4 
q>ADD R2,R4,R4,LSL #1 
qH)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
qRSTR R3,[R11,-R8]
q\ADD R2,R4,R4,LSL #2 
qf%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
qpSTR R3,[R11]
qzMOV R3,R4,ASR #4 
q�STR R3,[R11,R8]! 
q�RSB R2,R4,R4,LSL #3 
q�LDR R4,[R10] 
q�ADD R4,R4,R2,ASR #4 
q�ADD R2,R5,R5,LSL #1 
q�(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
q�STR R3,[R0,-R8]
q�MOV R3,R5,ASR #4 
q�STR R3,[R0,R8] 
q�ADD R2,R5,R5,LSL #2 
q�$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
q�STR R3,[R0],#4 
q�RSB R2,R5,R5,LSL #3 
rLDR R5,[R10,#4] 
rADD R5,R5,R2,ASR #4 
rADD R2,R6,R6,LSL #1 
r$(LDR R3,[R0,-R8]:ADD R3,R3,R2,ASR #4 
r.STR R3,[R0,-R8]
r8ADD R2,R6,R6,LSL #2 
rB$LDR R3,[R0]:ADD R3,R3,R2,ASR #4 
rLSTR R3,[R0]
rVMOV R3,R6,ASR #4 
r`STR R3,[R0,R8] 
rjRSB R2,R6,R6,LSL #3 
rtLDR R6,[R10,#8] 
r~ADD R6,R6,R2,ASR #4 
r�]
r��
r�
[OPT Z
r�LDMIA R10,{R4,R5,R6}
r�]
r��
r��
r��dither% �
r�
[OPT Z
r�ADD R2,R4,R4,LSL #1 
r�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
r�STR R3,[R11,-R8]
sADD R2,R4,R4,LSL #2 
s
%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
sSTR R3,[R11]
sMOV R3,R4,ASR #4 
s(STR R3,[R11,R8]! 
s2RSB R2,R4,R4,LSL #3 
s<LDR R4,[R10],R8 
sFADD R4,R4,R2,ASR #4 
sP]
sZ�
sd
[OPT Z
snLDR R4,[R10],R8
sx]
s��
s��
s�
[OPT Z
s�SUBS R9,R9,#1:BNE fsloop
s�LDMFD SP !,{PC}^
s�]
s�� 1
s�Ȏ m$ �
s��"C"
s�
[OPT Z
s�.divtable EQUD 0
s�EQUD (1-black%/256*2)/16*F
s�EQUD (2-black%/256*4)/16*F
tEQUD (3-black%/256*5)/16*F
tEQUD (4-black%/256*6)/16*F
tEQUD (5-black%/256*7)/16*F
t"EQUD (6-black%/256*8)/16*F
t,EQUD (7-black%/256*8)/16*F
t6EQUD (8-black%/256*8)/16*F
t@EQUD (9-black%/256*8)/16*F
tJEQUD (10-black%/256*8)/16*F
tTEQUD (11-black%/256*7)/16*F
t^EQUD (12-black%/256*6)/16*F
thEQUD (13-black%/256*5)/16*F
trEQUD (14-black%/256*4)/16*F
t|EQUD (15-black%/256*2)/16*F
t�
EQUD F
t�.evenrow_gard DCD even_gard
t�.oddrow_gard DCD odd_gard
t�.rowinc DCD 0
t�.fs%
t�STMFD SP !,{R14}
t�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
t�LDR R10,[R9,#4*8] 
t�LDR R11,[R9,#3*8] 
t�LDR R12,[R9,#2*8] 
t�LDR R12,[R12] 
t�LDR R8,[R9,#8] 
t�LDR R8,[R8] 
uLDR R9,[R9] 
uLDR R9,[R9] 
uLDR R4,[R10],R8 
u&
TEQ R8,#0
u0LDRPL R6,evenrow_gard
u:LDRMI R6,oddrow_gard
uDMOV R1,R1,LSL #1
uNLDR R7,rowinc
uXADR R14,divtable
ub.fsloop
ul%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
uvADD R5,R4,#F>>5 
u�MOVS R5,R5,LSR #bits-4 
u�LDRNE R0,[R14,R5,LSL #2]
u�SUBNE R4,R4,R0 
u�]
u��dither% �
u�
[OPT Z
u�ADD R2,R4,R4,LSL #1 
u�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
u�STR R3,[R11,-R8]
u�ADD R2,R4,R4,LSL #2 
u�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
u�STR R3,[R11]
u�MOV R3,R4,ASR #4 
vSTR R3,[R11,R8]! 
vRSB R2,R4,R4,LSL #3 
vLDR R4,[R10],R8 
v ADDS R4,R4,R2,ASR #4 
v*]
v4�
v>
[OPT Z
vHLDR R4,[R10],R8
vR]
v\�
vf
[OPT Z
vp%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
vzADD R3,R4,#F>>5 
v�MOVS R3,R3,LSR #bits-4 
v�LDRNE R0,[R14,R3,LSL #2]
v�SUBNE R4,R4,R0 
v�-�R R5,R5,R3,LSL #5:LDR R3,[R6,R5,LSL #2] 
v�FMOV R2,R12,LSR #1:STRB R3,[R2],R7:MOV R3,R3,LSR #8:STRB R3,[R2],R7
v�BMOV R3,R3,LSR #8:STRB R3,[R2],R7:MOV R3,R3,LSR #8:STRB R3,[R2]
v�ADD R12,R12,R1
v�]
v��dither% �
v�
[OPT Z
v�ADD R2,R4,R4,LSL #1 
v�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
v�STR R3,[R11,-R8]
wADD R2,R4,R4,LSL #2 
w%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
wSTR R3,[R11]
w$MOV R3,R4,ASR #4 
w.STR R3,[R11,R8]! 
w8RSB R2,R4,R4,LSL #3 
wBLDR R4,[R10],R8 
wLADD R4,R4,R2,ASR #4 
wV]
w`�
wj
[OPT Z
wtLDR R4,[R10],R8
w~]
w��
w�
[OPT Z
w�SUBS R9,R9,#2:BNE fsloop
w�LDMFD SP !,{PC}^
w�]
w��"T"
w�
[OPT Z
w�.divtable EQUD 0
w�EQUD (1-black%/256*2)/9*F
w�EQUD (2-black%/256*4)/9*F
w�EQUD (3-black%/256*5)/9*F
w�EQUD (4-black%/256*6)/9*F
xEQUD (5-black%/256*6)/9*F
x
EQUD (6-black%/256*5)/9*F
xEQUD (7-black%/256*4)/9*F
xEQUD (8-black%/256*2)/9*F
x(
EQUD F
x2.evenrow_gard DCD even_gard
x<.oddrow_gard DCD odd_gard
xF.rowinc DCD 0
xP.fs%
xZSTMFD SP !,{R14}
xd!LDR R1,[R9,#5*8]:LDR R1,[R1] 
xnLDR R10,[R9,#4*8] 
xxLDR R11,[R9,#3*8] 
x�LDR R12,[R9,#2*8] 
x�LDR R12,[R12] 
x�LDR R8,[R9,#8] 
x�LDR R8,[R8] 
x�LDR R9,[R9] 
x�LDR R9,[R9] 
x�LDR R4,[R10],R8 
x�
TEQ R8,#0
x�LDRPL R6,evenrow_gard
x�LDRMI R6,oddrow_gard
x�MOV R1,R1,LSL #1
x�LDR R7,rowinc
x�ADR R14,divtable
y.fsloop
y%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
yADD R5,R4,#F>>4 
y"ADD R5,R5,R5,LSL #3 
y,MOVS R5,R5,LSR #bits 
y6LDRNE R0,[R14,R5,LSL #2]
y@SUBNE R4,R4,R0 
yJ]
yT�dither% �
y^
[OPT Z
yhADD R2,R4,R4,LSL #1 
yr)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
y|STR R3,[R11,-R8]
y�ADD R2,R4,R4,LSL #2 
y�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
y�STR R3,[R11]
y�MOV R3,R4,ASR #4 
y�STR R3,[R11,R8]! 
y�RSB R2,R4,R4,LSL #3 
y�LDR R4,[R10],R8 
y�ADDS R4,R4,R2,ASR #4 
y�]
y��
y�
[OPT Z
y�LDR R4,[R10],R8
y�]
z�
z
[OPT Z
z%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
z&ADD R3,R4,#F>>4 
z0ADD R3,R3,R3,LSL #3 
z:MOVS R3,R3,LSR #bits 
zDLDRNE R0,[R14,R3,LSL #2]
zNSUBNE R4,R4,R0 
zX-�R R5,R5,R3,LSL #4:LDR R5,[R6,R5,LSL #2] 
zbMOV R2,R12,LSR #1
zl� R3,R5,#&3F
zvSTRB R3,[R2],R7
z�!MOV R3,R5,LSR #6:� R3,R3,#&3F
z�STRB R3,[R2],R7
z�"MOV R3,R5,LSR #12:STRB R3,[R2]
z�ADD R12,R12,R1
z�]
z��dither% �
z�
[OPT Z
z�ADD R2,R4,R4,LSL #1 
z�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
z�STR R3,[R11,-R8]
z�ADD R2,R4,R4,LSL #2 
z�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
z�STR R3,[R11]
{MOV R3,R4,ASR #4 
{STR R3,[R11,R8]! 
{RSB R2,R4,R4,LSL #3 
{ LDR R4,[R10],R8 
{*ADD R4,R4,R2,ASR #4 
{4]
{>�
{H
[OPT Z
{RLDR R4,[R10],R8
{\]
{f�
{p
[OPT Z
{zSUBS R9,R9,#2:BNE fsloop
{�LDMFD SP !,{PC}^
{�]
{��"D"
{�
[OPT Z
{�.divtable EQUD 0
{�EQUD (1-black%/256*2)/4*F
{�EQUD (2-black%/256*4)/4*F
{�EQUD (3-black%/256*2)/4*F
{�
EQUD F
{�.evenrow_gard DCD even_gard
{�.oddrow_gard DCD odd_gard
{�.rowinc DCD 0
{�.fs%
|STMFD SP !,{R14}
|!LDR R1,[R9,#5*8]:LDR R1,[R1] 
|LDR R10,[R9,#4*8] 
|$LDR R11,[R9,#3*8] 
|.LDR R12,[R9,#2*8] 
|8LDR R12,[R12] 
|BLDR R8,[R9,#8] 
|LLDR R8,[R8] 
|VLDR R9,[R9] 
|`LDR R9,[R9] 
|jLDR R4,[R10],R8 
|t
TEQ R8,#0
|~LDRPL R6,evenrow_gard
|�LDRMI R6,oddrow_gard
|�MOV R1,R1,LSL #1
|�LDR R7,rowinc
|�ADR R14,divtable
|�.fsloop
|�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
|�ADD R5,R4,#F>>3 
|�MOVS R5,R5,LSR #bits-2 
|�LDRNE R0,[R14,R5,LSL #2]
|�SUBNE R4,R4,R0 
|�]
|��dither% �
}
[OPT Z
}
ADD R2,R4,R4,LSL #1 
})LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
}STR R3,[R11,-R8]
}(ADD R2,R4,R4,LSL #2 
}2%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
}<STR R3,[R11]
}FMOV R3,R4,ASR #4 
}PSTR R3,[R11,R8]! 
}ZRSB R2,R4,R4,LSL #3 
}dLDR R4,[R10],R8 
}nADDS R4,R4,R2,ASR #4 
}x]
}��
}�
[OPT Z
}�LDR R4,[R10],R8
}�]
}��
}�
[OPT Z
}�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
}�ADD R3,R4,#F>>3 
}�MOVS R3,R3,LSR #bits-2 
}�LDRNE R0,[R14,R3,LSL #2]
}�SUBNE R4,R4,R0 
}�'�R R5,R5,R3,LSL #3:LDRB R5,[R6,R5] 
}�MOV R2,R12,LSR #2
~TST R12,#2
~� R3,R5,#&F:LDRB R0,[R2]
~ �EQ R0,R0,#&F0:�REQ R0,R0,R3
~"'�NE R0,R0,#&0F:�RNE R0,R0,R3,LSL #4
~,STRB R0,[R2],R7
~6!MOV R3,R5,LSR #4:LDRB R0,[R2]
~@ �EQ R0,R0,#&F0:�REQ R0,R0,R3
~J'�NE R0,R0,#&0F:�RNE R0,R0,R3,LSL #4
~TSTRB R0,[R2]
~^ADD R12,R12,R1
~h]
~r�dither% �
~|
[OPT Z
~�ADD R2,R4,R4,LSL #1 
~�)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
~�STR R3,[R11,-R8]
~�ADD R2,R4,R4,LSL #2 
~�%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
~�STR R3,[R11]
~�MOV R3,R4,ASR #4 
~�STR R3,[R11,R8]! 
~�RSB R2,R4,R4,LSL #3 
~�LDR R4,[R10],R8 
~�ADD R4,R4,R2,ASR #4 
~�]
~��

[OPT Z
LDR R4,[R10],R8
]
&�
0
[OPT Z
:SUBS R9,R9,#2:BNE fsloop
DLDMFD SP !,{PC}^
N]
X
b
[OPT Z
l.fs%
vSTMFD SP !,{R14}
�!LDR R1,[R9,#5*8]:LDR R1,[R1] 
�LDR R10,[R9,#4*8] 
�LDR R11,[R9,#3*8] 
�LDR R12,[R9,#2*8] 
�LDR R12,[R12] 
�LDR R8,[R9,#8] 
�LDR R8,[R8] 
�LDR R9,[R9] 
�LDR R9,[R9] 
�LDR R4,[R10],R8 
�MOV R7,#1 
�.fsloop
�%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
�]
�
�black% �
�
[OPT Z
� MOV R2,R12,LSR #3
�*� R5,R12,#7:MOV R6,#1
�4LDRB R0,[R2,#-(x%+7>>3)] 
�>SUB R3,R4,#F 
�H
CMP R7,#0
�R"ADDNE R4,R4,#black%<<(bits-8) 
�\"ADDEQ R3,R3,#black%<<(bits-8) 
�fTST R0,R6,LSL R5
�p"ADDNE R4,R4,#black%<<(bits-8) 
�z"ADDEQ R3,R3,#black%<<(bits-8) 
��MOVS R0,R3:RSBMI R0,R3,#0 
��CMP R4,R0 
��MOVCC R3,#0 
��MOVCS R4,R3:MOVCS R3,#1 
��MOV R7,R3 
��]
���
��
[OPT Z
��(ADD R3,R4,#F>>1:MOV R3,R3,LSR #bits 
��SUB R4,R4,R3,LSL #bits
��MOV R2,R12,LSR #3
��� R5,R12,#7:MOV R6,#1
��]
��
�
[OPT Z
�7LDRB R0,[R2]:BIC R0,R0,R6,LSL R5:�R R0,R0,R3,LSL R5
�$STRB R0,[R2]
�.ADD R12,R12,R1
�8]
�B�dither% �
�L
[OPT Z
�VADD R2,R4,R4,LSL #1 
�`)LDR R3,[R11,-R8]:ADD R3,R3,R2,ASR #4 
�jSTR R3,[R11,-R8]
�tADD R2,R4,R4,LSL #2 
�~%LDR R3,[R11]:ADD R3,R3,R2,ASR #4 
��STR R3,[R11]
��MOV R3,R4,ASR #4 
��STR R3,[R11,R8]! 
��RSB R2,R4,R4,LSL #3 
��LDR R4,[R10],R8 
��ADD R4,R4,R2,ASR #4 
��]
���
��
[OPT Z
��LDR R4,[R10],R8
��]
���
�
[OPT Z
�
SUBS R9,R9,#1:BNE fsloop
�LDMFD SP !,{PC}^
�]
�(�
�2�
�<
[OPT Z
�F.sxloc DCD sx%
�P]
�ZȎ col �
�d� 0
�n�input<=8 �
�x
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
��LDR R2,[R9,#3*8] 
��LDR R5,[R9,#4*8] 
��
MOV R8,#0
��
.mappixlp
��LDRB R6,[R1],#step24
��]
���
��Ȏ input �
��� 8
��
�ham �
�
[OPT Z
�ADR R9,ltable
�!MOVS R7,R6,LSR #4:� R6,R6,#15
�"2LDREQ R10,[R2,R6,LSL #2]:�Q R11,R10:�Q R12,R10
�,&CMP R7,#1:LDREQ R12,[R9,R6,LSL #2]
�6&CMP R7,#2:LDREQ R10,[R9,R6,LSL #2]
�@&CMP R7,#3:LDREQ R11,[R9,R6,LSL #2]
�JADD R3,R10,R11
�TADD R3,R3,R12
�^MOV R3,R3,LSR #2
�hSTMIA R5!,{R3}
�rSUBS R0,R0,#1:BNE mappixlp
�|MOVS PC,R14
��.ltable
��]
���I%=0�15
��
[OPT Z
��EQUD I%/15*F
��]
���
���
���hpredict%=2 �
��
[OPT Z
��ADD R6,R6,R8
��� R6,R6,#255
��
MOV R8,R6
�]
��
�
[OPT Z
�&(LDR R7,[R2,R6,LSL #2]:STR R7,[R5],#4
�0SUBS R0,R0,#1:BNE mappixlp
�:MOVS PC,R14
�D]
�N�
�X� 4
�b�bigendianbits �
�l
[OPT Z
�vMOV R10,R6,LSR #4
��LDR R7,[R2,R10,LSL #2]
��� R10,R6,#&F
��]
���
��
[OPT Z
��� R10,R6,#&F
��LDR R7,[R2,R10,LSL #2]
��MOV R10,R6,LSR #4
��]
���
��
[OPT Z
��,LDR R8,[R2,R10,LSL #2]:STMIA R5!,{R7,R8}
��SUBS R0,R0,#2:BHI mappixlp
�MOVS PC,R14
�]
�� 2
� �bigendianbits �
�*
[OPT Z
�4MOV R10,R6,LSR #6
�>LDR R7,[R2,R10,LSL #2]
�H� R10,R6,#&30
�RLDR R8,[R2,R10,LSR #2]
�\� R10,R6,#&C
�fLDR R9,[R2,R10]
�p� R10,R6,#&3
�z]
���
��
[OPT Z
��� R10,R6,#&3
��LDR R7,[R2,R10,LSL #2]
��� R10,R6,#&C
��LDR R8,[R2,R10]
��� R10,R6,#&30
��LDR R9,[R2,R10,LSR #2]
��MOV R10,R6,LSR #6
��]
���
��
[OPT Z
��4LDR R10,[R2,R10,LSL #2]:STMIA R5!,{R7,R8,R9,R10}
�SUBS R0,R0,#4:BHI mappixlp
�MOVS PC,R14
�]
�$� 1
�.�bigendianbits �
�8
[OPT Z
�B� R10,R6,#&80
�LLDR R7,[R2,R10,LSR #5]
�V� R10,R6,#&40
�`LDR R8,[R2,R10,LSR #4]
�j� R10,R6,#&20
�tLDR R9,[R2,R10,LSR #3]
�~� R10,R6,#&10
��4LDR R10,[R2,R10,LSR #2]:STMIA R5!,{R7,R8,R9,R10}
��� R10,R6,#&8
��LDR R7,[R2,R10,LSR #1]
��� R10,R6,#&4
��LDR R8,[R2,R10]
��� R10,R6,#&2
��LDR R9,[R2,R10,LSL #1]
��� R10,R6,#&1
��]
���
��
[OPT Z
��� R10,R6,#&1
�LDR R7,[R2,R10,LSL #2]
�
� R10,R6,#&2
�LDR R8,[R2,R10,LSL #1]
�� R10,R6,#&4
�(LDR R9,[R2,R10]
�2� R10,R6,#&8
�<4LDR R10,[R2,R10,LSR #1]:STMIA R5!,{R7,R8,R9,R10}
�F� R10,R6,#&10
�PLDR R7,[R2,R10,LSR #2]
�Z� R10,R6,#&20
�dLDR R8,[R2,R10,LSR #3]
�n� R10,R6,#&40
�xLDR R9,[R2,R10,LSR #4]
��MOV R10,R6,LSR #7
��]
���
��
[OPT Z
��4LDR R10,[R2,R10,LSL #2]:STMIA R5!,{R7,R8,R9,R10}
��SUBS R0,R0,#8:BHI mappixlp
��MOVS PC,R14
��]
��� 16
��
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
�LDR R2,[R9,#8]:LDR R2,[R2] 
�LDR R3,[R9,#4*8] 
�LDR R4,[R9,#3*8] 
�"LDR R5,[R9,#2*8] 
�,LDR R6,[R9,#5*8] 
�6LDR R7,[R9,#6*8] 
�@LDR R8,[R9,#7*8] 
�J
CMP R1,R2
�TADDEQ R2,R2,#1
�^
.mappixlp
�h.LDRB R9,[R1],#step24:LDRB R10,[R2],#step24
�r>LDR R9,[R6,R9,LSL #2]:LDR R10,[R7,R10,LSL #2]:�R R9,R9,R10
�|)� R10,R9,#255:LDR R10,[R3,R10,LSL #2]
��<MOV R11,R9,LSR #8:� R11,R11,#255:LDR R11,[R4,R11,LSL #2]
��.MOV R12,R9,LSR #16:LDR R12,[R5,R12,LSL #2]
��3ADD R10,R10,R11:ADD R10,R10,R12:STMIA R8!,{R10}
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
��� 24
��
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��!LDR R1,[R9,#2*8]:LDR R1,[R1] 
��LDR R2,[R9,#8]:LDR R2,[R2] 
��LDR R3,[R9]:LDR R3,[R3] 
�LDR R4,[R9,#5*8] 
�LDR R5,[R9,#4*8] 
�LDR R6,[R9,#3*8] 
�&LDR R7,[R9,#6*8] 
�0STMFD SP !,{R14}
�:$MOV r11,#0:MOV R12,#0:MOV R14,#0
�D
.mappixlp
�NCLDRB R8,[R1],#step24:LDRB R9,[R2],#step24:LDRB R10,[R3],#step24
�X]
�b�hpredict%=2 �
�l
[OPT Z
�vADD r8,r8,r11
��� r8,r8,#255
��MOV r11,r8
��ADD r9,r9,r12
��� r9,r9,#255
��MOV r12,r9
��ADD r10,r10,r14
��� r10,r10,#255
��MOV r14,r10
��]
���
��
[OPT Z
��GLDR R8,[R4,R8,LSL #2]:LDR R9,[R5,R9,LSL #2]:LDR R10,[R6,R10,LSL #2]
��-ADD R8,R8,R9:ADD R8,R8,R10:STR R8,[R7],#4
�SUBS R0,R0,#1:BNE mappixlp
�LDMFD SP !,{PC}^
�]
� 	� 411
�*
[OPT Z
�4
.mappix% 
�>LDR R0,sxloc 
�HLDR R1,[R9]:LDR R1,[R1] 
�RLDR R4,[R9,#1*8] 
�\LDR R7,[R9,#8*8] 
�f
.mappixlp
�pLDRB R8,[R1],#2 
�z>LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
��	� 422
��
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
��ADD R1,R1,#1 
��LDR R4,[R9,#1*8] 
��LDR R7,[R9,#8*8] 
��
.mappixlp
��LDRB R8,[R1],#2 
�>LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
�SUBS R0,R0,#1:BNE mappixlp
�MOVS PC,R14
�$]
�.	� 555
�8
[OPT Z
�B
.mappix% 
�LLDR R0,sxloc 
�VLDR R1,[R9]:LDR R1,[R1] 
�`ADD R1,R1,#1 
�jLDR R4,[R9,#1*8] 
�tLDR R7,[R9,#8*8] 
�~
.mappixlp
��LDRB R8,[R1],#2 
��� R8,R8,#ymax%
��>LDR R8,[R4,R8,LSL #2]:CMP R8,#F:MOVCS R8,#F:STR R8,[R7],#4
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
���
���xmul%=2 � xdiv%=1 �
��
[OPT Z
��
.xsample%
��LDR R0,[R9]:LDR R0,[R0] 
�LDR R1,[R9,#8] 
�
LDR R2,[R9,#2*8] 
�SUBS R0,R0,#2
�BEQ xdonediv
�(BMI xdonediv
�2.xsamplelp
�<LDMIA R1,{R5,R6}
�FADD R6,R6,R5
�PMOV R6,R6,LSR #1
�ZSTMIA R2!,{R5,R6}
�dADD R1,R1,#4
�nSUBS R0,R0,#2:BGT xsamplelp
�x
.xdonediv
��LDMIA R1,{R5}
��
MOV R6,R5
��STMIA R2!,{R5,R6}
��MOVS PC,R14
��]
���
��
[OPT Z
��
.xsample%
��LDR R0,[R9]:LDR R0,[R0] 
��LDR R1,[R9,#8] 
��LDR R2,[R9,#2*8] 
��!LDR R3,[R9,#3*8]:LDR R3,[R3] 
�!LDR R4,[R9,#4*8]:LDR R4,[R4] 
�MOV R11,R4
�.xsamplelp
�"LDMIA R1,{R5}
�,,SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#4
�6SUBS R12,R3,#1 
�@BEQ xdonediv
�J.xdivlp
�TCMP R12,R11
�^BCC xdivlp2
�h#LDMIA R1!,{R8}:MLA R5,R8,R11,R5
�rSUBS R12,R12,R11:MOV R11,R4
�|BNE xdivlp
��B xdonediv
��.xdivlp2
��LDMIA R1,{R8}
��,SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#4
��ADD R5,R5,R8
��SUBS R12,R12,#1:BNE xdivlp
��
.xdonediv
��STMIA R2!,{R5}
��SUBS R0,R0,#1:BPL xsamplelp
��MOVS PC,R14
��]
���
��� 2
��input<=8 �
�
[OPT Z
�
.mappix% 
�&LDR R0,sxloc 
�0LDR R1,[R9]:LDR R1,[R1] 
�:LDR R2,[R9,#3*8] 
�DLDR R3,[R9,#2*8] 
�NLDR R4,[R9,#8] 
�XLDR R5,[R9,#4*8] 
�bMOV R10,#0
�l
.mappixlp
�vLDRB R6,[R1],#step24
��]
���
��Ȏ input �
��� 8
��
�ham �
��
[OPT Z
��ADR R9,ltable
��!MOVS R7,R6,LSR #4:� R6,R6,#15
��NLDREQ R10,[R2,R6,LSL #2]:LDREQ R11,[R3,R6,LSL #2]:LDREQ R12,[R4,R6,LSL #2]
��&CMP R7,#1:LDREQ R12,[R9,R6,LSL #2]
��&CMP R7,#2:LDREQ R10,[R9,R6,LSL #2]
��&CMP R7,#3:LDREQ R11,[R9,R6,LSL #2]
��STMIA R5!,{R10,R11,R12}
�SUBS R0,R0,#1:BNE mappixlp
�MOVS PC,R14
�.ltable
� ]
�*�I%=0�15
�4
[OPT Z
�>EQUD I%/15*F
�H]
�R�
�\�
�f�hpredict%=2 �
�p
[OPT Z
�zADD R6,R6,R10
��� R6,R6,#255
��MOV R10,R6
��]
���
��
[OPT Z
��ELDR R7,[R2,R6,LSL #2]:LDR R8,[R3,R6,LSL #2]:LDR R9,[R4,R6,LSL #2]
��STMIA R5!,{R7,R8,R9}
��SUBS R0,R0,#1:BNE mappixlp
��MOVS PC,R14
��]
���
��� 4
���bigendianbits �
�
[OPT Z
�MOV R10,R6,LSR #4
�HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
�$STMIA R5!,{R7,R8,R9}
�.� R10,R6,#&F
�8]
�B�
�L
[OPT Z
�V� R10,R6,#&F
�`HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
�jSTMIA R5!,{R7,R8,R9}
�tMOV R10,R6,LSR #4
�~]
���
��
[OPT Z
��HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
��STMIA R5!,{R7,R8,R9}
��SUBS R0,R0,#2:BHI mappixlp
��MOVS PC,R14
��]
��� 2
���bigendianbits �
��
[OPT Z
��MOV R10,R6,LSR #6
��HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
�STMIA R5!,{R7,R8,R9}
�
� R10,R6,#&30
�HLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
�STMIA R5!,{R7,R8,R9}
�(� R10,R6,#&C
�23LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
�<STMIA R5!,{R7,R8,R9}
�F� R10,R6,#&3
�P]
�Z�
�d
[OPT Z
�n� R10,R6,#&3
�xHLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&C
��3LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&30
��HLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
��STMIA R5!,{R7,R8,R9}
��MOV R10,R6,LSR #6
��]
���
��
[OPT Z
��HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
��STMIA R5!,{R7,R8,R9}
�SUBS R0,R0,#4:BHI mappixlp
�MOVS PC,R14
�]
�"� 1
�,�bigendianbits �
�6
[OPT Z
�@� R10,R6,#&80
�JHLDR R7,[R2,R10,LSR #5]:LDR R8,[R3,R10,LSR #5]:LDR R9,[R4,R10,LSR #5]
�TSTMIA R5!,{R7,R8,R9}
�^� R10,R6,#&40
�hHLDR R7,[R2,R10,LSR #4]:LDR R8,[R3,R10,LSR #4]:LDR R9,[R4,R10,LSR #4]
�rSTMIA R5!,{R7,R8,R9}
�|� R10,R6,#&20
��HLDR R7,[R2,R10,LSR #3]:LDR R8,[R3,R10,LSR #3]:LDR R9,[R4,R10,LSR #3]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&10
��HLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&8
��HLDR R7,[R2,R10,LSR #1]:LDR R8,[R3,R10,LSR #1]:LDR R9,[R4,R10,LSR #1]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&4
��3LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&2
��HLDR R7,[R2,R10,LSL #1]:LDR R8,[R3,R10,LSL #1]:LDR R9,[R4,R10,LSL #1]
�STMIA R5!,{R7,R8,R9}
�� R10,R6,#&1
�]
�&�
�0
[OPT Z
�:� R10,R6,#&1
�DHLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
�NSTMIA R5!,{R7,R8,R9}
�X� R10,R6,#&2
�bHLDR R7,[R2,R10,LSL #1]:LDR R8,[R3,R10,LSL #1]:LDR R9,[R4,R10,LSL #1]
�lSTMIA R5!,{R7,R8,R9}
�v� R10,R6,#&4
��3LDR R7,[R2,R10]:LDR R8,[R3,R10]:LDR R9,[R4,R10]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&8
��HLDR R7,[R2,R10,LSR #1]:LDR R8,[R3,R10,LSR #1]:LDR R9,[R4,R10,LSR #1]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&10
��HLDR R7,[R2,R10,LSR #2]:LDR R8,[R3,R10,LSR #2]:LDR R9,[R4,R10,LSR #2]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&20
��HLDR R7,[R2,R10,LSR #3]:LDR R8,[R3,R10,LSR #3]:LDR R9,[R4,R10,LSR #3]
��STMIA R5!,{R7,R8,R9}
��� R10,R6,#&40
��HLDR R7,[R2,R10,LSR #4]:LDR R8,[R3,R10,LSR #4]:LDR R9,[R4,R10,LSR #4]
�STMIA R5!,{R7,R8,R9}
�MOV R10,R6,LSR #7
�]
� �
�*
[OPT Z
�4HLDR R7,[R2,R10,LSL #2]:LDR R8,[R3,R10,LSL #2]:LDR R9,[R4,R10,LSL #2]
�>STMIA R5!,{R7,R8,R9}
�HSUBS R0,R0,#8:BHI mappixlp
�RMOVS PC,R14
�\]
�f� 16
�p
[OPT Z
�z
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
��LDR R2,[R9,#8]:LDR R2,[R2] 
��LDR R3,[R9,#4*8] 
��LDR R4,[R9,#3*8] 
��LDR R5,[R9,#2*8] 
��LDR R6,[R9,#5*8] 
��LDR R7,[R9,#6*8] 
��LDR R8,[R9,#7*8] 
��
CMP R1,R2
��ADDEQ R2,R2,#1
��
.mappixlp
��.LDRB R9,[R1],#step24:LDRB R10,[R2],#step24
�>LDR R9,[R6,R9,LSL #2]:LDR R10,[R7,R10,LSL #2]:�R R9,R9,R10
�)� R10,R9,#255:LDR R10,[R3,R10,LSL #2]
�<MOV R11,R9,LSR #8:� R11,R11,#255:LDR R11,[R4,R11,LSL #2]
�$.MOV R12,R9,LSR #16:LDR R12,[R5,R12,LSL #2]
�.STMIA R8!,{R10,R11,R12}
�8SUBS R0,R0,#1:BNE mappixlp
�BMOVS PC,R14
�L]
�V� 24
�`
[OPT Z
�j
.mappix% 
�tLDR R0,sxloc 
�~!LDR R1,[R9,#2*8]:LDR R1,[R1] 
��LDR R2,[R9,#8]:LDR R2,[R2] 
��LDR R3,[R9]:LDR R3,[R3] 
��LDR R4,[R9,#5*8] 
��LDR R5,[R9,#4*8] 
��LDR R6,[R9,#3*8] 
��LDR R7,[R9,#6*8] 
��STMFD SP !,{R14}
��$MOV r11,#0:MOV R12,#0:MOV R14,#0
��
.mappixlp
��CLDRB R8,[R1],#step24:LDRB R9,[R2],#step24:LDRB R10,[R3],#step24
��]
���hpredict%=2 �
�
[OPT Z
�
ADD r8,r8,r11
�� r8,r8,#255
�MOV r11,r8
�(ADD r9,r9,r12
�2� r9,r9,#255
�<MOV r12,r9
�FADD r10,r10,r14
�P� r10,r10,#255
�ZMOV r14,r10
�d]
�n�
�x
[OPT Z
��GLDR R8,[R4,R8,LSL #2]:LDR R9,[R5,R9,LSL #2]:LDR R10,[R6,R10,LSL #2]
��STMIA R7!,{R8,R9,R10}
��SUBS R0,R0,#1:BNE mappixlp
��LDMFD SP !,{PC}^
��]
��	� 411
��
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
��LDR R2,[R9,#1*8] 
��LDR R3,[R9,#2*8] 
�LDR R5,[R9,#4*8] 
�LDR R6,[R9,#5*8] 
�LDR R7,[R9,#6*8] 
�"LDR R9,[R9,#8*8] 
�,STMFD SP !,{R14}
�6
.mappixlp
�@LDMIA R1!,{R4,R10} 
�J� R8,R4,#&C000
�TMOV R8,R8,LSR #8
�^� R14,R4,#&C0000000
�h�R R8,R8,R14,LSR #16+8+2
�r� R14,R10,#&C000
�|�R R8,R8,R14,LSR #8+4
���R R8,R8,R10,LSR #16+8+6 
��� R11,R4,#&3000
��MOV R11,R11,LSR #6
��� R14,R4,#&30000000
���R R11,R11,R14,LSR #16+6+2
��� R14,R10,#&3000
���R R11,R11,R14,LSR #6+4
��� R14,R10,#&30000000
���R R11,R11,R14,LSR #16+6+6 
��� R12,R4,#&FF 
��LDR R12,[R2,R12,LSL #2] 
��,LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
�8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�*LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
�,LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
�&8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�0� R12,R4,#&FF 
�:LDR R12,[R2,R12,LSL #2] 
�D+LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
�N8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�bMOV R4,R4,LSR #16
�l� R12,R4,#&FF 
�vLDR R12,[R2,R12,LSL #2] 
��,LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��*LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
��,LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��� R12,R4,#&FF 
��LDR R12,[R2,R12,LSL #2] 
��+LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��� R12,R10,#&FF 
��LDR R12,[R2,R12,LSL #2] 
��,LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
�8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�*LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
�,LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
� 8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�*� R12,R10,#&FF 
�4LDR R12,[R2,R12,LSL #2] 
�>+LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
�H8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�\MOV R10,R10,LSR #16
�f� R12,R10,#&FF 
�pLDR R12,[R2,R12,LSL #2] 
�z,LDR R14,[R7,R11,LSL #2]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��*LDR R14,[R6,R8,LSL #2]:ADD R14,R14,R12
��,LDR R12,[R5,R11,LSL #2]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��� R12,R10,#&FF 
��LDR R12,[R2,R12,LSL #2] 
��+LDR R14,[R3,R8,LSL #2]:ADDS R14,R12,R14
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��SUBS R0,R0,#4:BNE mappixlp
��LDMFD SP !,{PC}^
��]
��	� 423
�
[OPT Z
�
.mappix% 
�LDR R0,sxloc 
�$LDR R1,[R9]:LDR R1,[R1] 
�.LDR R2,[R9,#1*8] 
�8LDR R3,[R9,#2*8] 
�BLDR R4,[R9,#3*8] 
�LLDR R5,[R9,#4*8] 
�VLDR R6,[R9,#5*8] 
�`LDR R7,[R9,#6*8] 
�jLDR R8,[R9,#7*8] 
�tLDR R9,[R9,#8*8] 
�~STMFD SP !,{R14}
��
.mappixlp
��LDR R10,[R1],#4 
��� R11,R10,#&FF00 
��LDR R11,[R2,R11,LSR #6]
��:� R12,R10,#&FF:LDR R12,[R7,R12,LSL #2]:ADD R14,R12,R11
��@� R12,R10,#&FF0000:LDR R12,[R8,R12,LSR #14]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��:� R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
��@� R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��:� R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADD R14,R12,R11
��@� R12,R10,#&FF0000:LDR R12,[R4,R12,LSR #14]:ADDS R14,R14,R12
�8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�
� R11,R10,#&FF000000 
�LDR R11,[R2,R11,LSR #22]
�:� R12,R10,#&FF:LDR R12,[R7,R12,LSL #2]:ADD R14,R12,R11
�(@� R12,R10,#&FF0000:LDR R12,[R8,R12,LSR #14]:ADDS R14,R14,R12
�28MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�<:� R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
�F@� R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
�P8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�Z:� R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADD R14,R12,R11
�d@� R12,R10,#&FF0000:LDR R12,[R4,R12,LSR #14]:ADDS R14,R14,R12
�n8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�xSUBS R0,R0,#2:BNE mappixlp
��LDMFD SP !,{PC}^
��]
��	� 422
��
[OPT Z
��
.mappix% 
��LDR R0,sxloc 
��LDR R1,[R9]:LDR R1,[R1] 
��LDR R2,[R9,#1*8] 
��LDR R3,[R9,#2*8] 
��LDR R5,[R9,#4*8] 
��LDR R6,[R9,#5*8] 
��LDR R7,[R9,#6*8] 
��LDR R9,[R9,#8*8] 
�STMFD SP !,{R14}
�
.mappixlp
�LDR R10,[R1],#4 
�"� R11,R10,#&FF00 
�,LDR R11,[R2,R11,LSR #6]
�6@� R12,R10,#&FF0000:LDR R12,[R7,R12,LSR #14]:ADDS R14,R12,R11
�@8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�J:� R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
�T@� R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
�^8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�h;� R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADDS R14,R12,R11
�r8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
�|� R11,R10,#&FF000000 
��LDR R11,[R2,R11,LSR #22]
��@� R12,R10,#&FF0000:LDR R12,[R7,R12,LSR #14]:ADDS R14,R12,R11
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��:� R12,R10,#&FF:LDR R12,[R5,R12,LSL #2]:ADD R14,R12,R11
��@� R12,R10,#&FF0000:LDR R12,[R6,R12,LSR #14]:ADDS R14,R14,R12
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��;� R12,R10,#&FF:LDR R12,[R3,R12,LSL #2]:ADDS R14,R12,R11
��8MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4
��SUBS R0,R0,#2:BNE mappixlp
��LDMFD SP !,{PC}^
��]
��	� 555
�
[OPT Z
�
.mappix% 
�LDR R0,sxloc 
�&LDR R1,[R9]:LDR R1,[R1] 
�0LDR R2,[R9,#1*8] 
�:LDR R3,[R9,#2*8] 
�DLDR R5,[R9,#4*8] 
�NLDR R6,[R9,#5*8] 
�XLDR R7,[R9,#6*8] 
�bLDR R9,[R9,#8*8] 
�lSTMFD SP !,{R14}
�v
.mappixlp
��LDR R10,[R1],#2 
��� R11,R10,#ymax% 
��LDR R11,[R2,R11,LSL #2]
��/� R8,R10,#((1<<vbits%)-1)<<(ybits%+ubits%) 
��'� R10,R10,#((1<<ubits%)-1)<<ybits% 
��9LDR R12,[R7,R8,LSR #ybits%+ubits%-2]:ADDS R14,R12,R11
��9MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4 
��8LDR R12,[R5,R8,LSR #ybits%+ubits%-2]:ADD R14,R12,R11
��3LDR R12,[R6,R10,LSR #ybits%-2]:ADDS R14,R14,R12
��9MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4 
��3LDR R12,[R3,R10,LSR #ybits%-2]:ADDS R14,R12,R11
��9MOVMI R14,#0:CMP R14,#F:MOVCS R14,#F:STR R14,[R9],#4 
�SUBS R0,R0,#1:BNE mappixlp
�LDMFD SP !,{PC}^
�]
� �
�*�xmul%=2 � xdiv%=1 �
�4
[OPT Z
�H
.xsample%
�RLDR R0,[R9]:LDR R0,[R0] 
�\LDR R1,[R9,#8] 
�fLDR R2,[R9,#2*8] 
�pSUBS R0,R0,#2
�zBEQ xdonediv
��BMI xdonediv
��.xsamplelp
��!LDMIA R1,{R5,R6,R7,R8,R9,R10}
��ADD R8,R8,R5
��MOV R8,R8,LSR #1
��ADD R9,R9,R6
��MOV R9,R9,LSR #1
��ADD R10,R10,R7
��MOV R10,R10,LSR #1
��"STMIA R2!,{R5,R6,R7,R8,R9,R10}
��ADD R1,R1,#12
��SUBS R0,R0,#2:BGT xsamplelp
��
.xdonediv
�LDMIA R1,{R5,R6,R7}
�
MOV R8,R5
�
MOV R9,R6
�$MOV R10,R7
�."STMIA R2!,{R5,R6,R7,R8,R9,R10}
�8MOVS PC,R14
�B]
�L�
�V
[OPT Z
�j
.xsample%
�tLDR R0,[R9]:LDR R0,[R0] 
�~LDR R1,[R9,#8] 
��LDR R2,[R9,#2*8] 
��!LDR R3,[R9,#3*8]:LDR R3,[R3] 
��!LDR R4,[R9,#4*8]:LDR R4,[R4] 
��MOV R11,R4
��.xsamplelp
��LDMIA R1,{R5,R6,R7}
��-SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#12
��SUBS R12,R3,#1 
��BEQ xdonediv
��.xdivlp
��CMP R12,R11
��BCC xdivlp2
�MLDMIA R1!,{R8,R9,R10}:MLA R5,R8,R11,R5:MLA R6,R9,R11,R6:MLA R7,R10,R11,R7
�
SUBS R12,R12,R11:MOV R11,R4
�BNE xdivlp
�B xdonediv
�(.xdivlp2
�2LDMIA R1,{R8,R9,R10}
�<-SUBS R11,R11,#1:�Q R11,R4:ADDEQ R1,R1,#12
�F+ADD R5,R5,R8:ADD R6,R6,R9:ADD R7,R7,R10
�PSUBS R12,R12,#1:BNE xdivlp
�Z
.xdonediv
�dSTMIA R2!,{R5,R6,R7}
�nSUBS R0,R0,#1:BPL xsamplelp
�xMOVS PC,R14
��]
���
���
���compression=5 �
��
[OPT Z
��.firstcode DCD 0
��.oldcode DCD 0
��.codesize DCD setcodes%+1
��.stack DCD stk%
��.sp DCD stk%
��.maxcode DCD clearcode%+2
��!.maxcodesize DCD 2*clearcode%
�.LZWdecode%
�@LDR R2,firstcode:LDR R3,oldcode:LDR R4,stack:LDR R5,codesize
�/LDR R6,sp:LDR R7,maxcode:LDR R8,maxcodesize
�"LDR R10,[R9]:LDR R10,[R10] 
�,"LDR R11,[R9,#8]:LDR R11,[R11] 
�6LDR R12,[R9,#24] 
�@STMFD SP !,{R14}
�J.lzwloop
�T
CMP R6,R4
�^BHI lzwunstack
�h.lzwengine
�rBL getcode
�|CMP R0,#clearcode%
��BEQ lzwclear
��MOV R1,R0 
��CMP R0,R7 
��STRCSB R2,[R6],#1 
��MOVCS R0,R3 
��CMP R0,#clearcode%
��BCC lzwdonepush
��.lzwpushtable
��LDR R14,[R12,R0,LSL #2] 
��STRB R14,[R6],#1 
��MOV R0,R14,LSR #16 
��CMP R0,#clearcode%
�BCS lzwpushtable
�.lzwdonepush
�LDR R2,[R12,R0,LSL #2]
�&BIC R2,R2,#&FF0000
�0BIC R2,R2,#&FF000000 
�:STRB R2,[R6],#1 
�DCMP R7,#4096
�NBCS lzwnocode
�X�R R0,R2,R3,LSL #16
�bSTR R0,[R12,R7,LSL #2] 
�lADD R7,R7,#1 
�v
CMP R7,R8
��BCC lzwnocode 
��CMP R8,#4096 
��ADDCC R5,R5,#1 
��MOVCC R8,R8,LSL #1 
��]
���flag=1500 �
��
[OPT Z
���RCC R8,R8,#1
��]
���
��
[OPT Z
��.lzwnocode
��MOV R3,R1 
�CMP R6,R4 
�BLS lzwengine
�.lzwunstack
� LDRB R0,[R6,#-1]! 
�*.lzwloopend
�4STRB R0,[R11],#1
�>SUBS R10,R10,#1
�HBNE lzwloop
�R3STR R2,firstcode:STR R3,oldcode:STR R5,codesize
�\/STR R6,sp:STR R7,maxcode:STR R8,maxcodesize
�fLDMFD SP !,{PC}^
�p
.lzwclear
�z
MOV R0,#0
��MOV R3,R12
��.lzwdefaulttable
��STR R0,[R3],#4
��#ADD R0,R0,#1:CMP R0,#clearcode%
��BCC lzwdefaulttable
��MOV R5,#setcodes%+1
��MOV R7,#clearcode%
��MOV R8,R7,LSL #1 
��]
���flag=1500 �
��
[OPT Z
��SUB R8,R8,#1
��]
��
�
[OPT Z
�ADD R7,R7,#2 
�$BL getcode
�.MOV R2,R0 
�8MOV R3,R0 
�BMOV R6,R4 
�LB lzwloopend
�`.curbit DCD 0
�j.lastbit DCD 0
�t.buf DCD buf%
�~.getcode
��STMFD SP !,{R6,R7,R8}
��ADR R6,curbit
��LDMIA R6,{R6,R7,R8}
��ADD R1,R5,R6 
��
CMP R1,R7
��BCS needmoredata
��.simplecode
��ADD R7,R8,R6,LSR #3
��BIC R7,R7,#3
��LDMIA R7,{R0,R7}
��]
���flag=1500 �
�
[OPT Z
�
� R1,R0,R0,ROR #16
�BIC R1,R1,#&FF0000
�MOV R0,R0,ROR #8
�(� R0,R0,R1,LSR #8
�2� R1,R7,R7,ROR #16
�<BIC R1,R1,#&FF0000
�FMOV R7,R7,ROR #8
�P� R7,R7,R1,LSR #8
�ZH�S R1,R6,#31:MOVNE R0,R0,LSL R1:RSBNE R1,R1,#32:�RNE R0,R0,R7,LSR R1
�dRSB R1,R5,#32
�nMOV R0,R0,LSR R1
�x]
���
��
[OPT Z
��H�S R1,R6,#31:MOVNE R0,R0,LSR R1:RSBNE R1,R1,#32:�RNE R0,R0,R7,LSL R1
��!MVN R1,#0:BIC R0,R0,R1,LSL R5
��]
���
��
[OPT Z
��ADD R6,R6,R5
��STR R6,curbit
��LDMFD SP !,{R6,R7,R8}
��MOV PC,R14
��.needmoredata
��STMFD SP !,{R2,R3,R4,R14}
�MOV R3,R7,LSR #3
�SUB R0,R3,#2 
�LDRB R0,[R8,R0]
�"STRB R0,[R8]
�,SUB R0,R3,#1 
�6LDRB R0,[R8,R0]
�@STRB R0,[R8,#1]
�JLDR R1,[R9,#16]
�TLDR R1,[R1] 
�^]
�h�flag=1500 �
�r
[OPT Z
�|MOV R0,#256
��MOV R3,#256
��]
���
��
[OPT Z
��BL bytefromcache%
��MOVS R3,R0 
��BEQ simplecode1
��]
���
��
[OPT Z
��SUB R6,R6,R7 
��ADD R6,R6,#16
��ADD R0,R0,#2 
�MOV R7,R0,LSL #3
�STR R7,lastbit
�ADD R2,R8,#2 
�&BL multibytefromcache%
�0.simplecode1
�:LDMFD SP !,{R2,R3,R4,R14}
�DB simplecode
�N]
�X�
�b
�range% �
�l
[OPT Z
��.maxmin%
��LDR R0,[R9]:LDR R0,[R0] 
��LDR R1,[R9,#8] 
��LDR R2,min
��LDR R3,max
��
.maxminlp
��LDR R4,[R1],#4
��CMP R4,R3:MOVCS R3,R4 
��CMP R4,R2:MOVCC R2,R4 
��SUBS R0,R0,#1:BNE maxminlp
��STR R2,min
��STR R3,max
��MOVS PC,R14
�.min DCD F
�.max DCD 0
�]
� �
�*�sharpen% �
�49sharp=(col+1)*4:�sharpen%<>8 sharpmul%=F/(sharpen%-8)
�>
[OPT Z
�R.sharp%
�\LDR R0,[R9]:LDR R0,[R0] 
�fLDR R1,[R9,#8] 
�pLDR R2,[R9,#16] 
�zLDR R3,[R9,#24] 
��LDR R4,[R9,#32] 
��]
��Ȏ sharpen% �
��� 8,9,12,16,24
��
��
[OPT Z
��MOV R8,#sharpmul% � &FF
���R R8,R8,#sharpmul% � &FF00
��#MOV R9,#(sharpmul% >> 16) � &FF
��'�R R9,R9,#(sharpmul% >> 16) � &FF00
��]
���
��
[OPT Z
�.sharplp
�LDR R5,[R1,#-sharp]
�#LDR R6,[R1,#sharp]:ADD R5,R5,R6
�$LDR R6,[R1],#4:ADD R5,R5,R6
�.$LDR R6,[R3,#-sharp]:ADD R5,R5,R6
�8#LDR R6,[R3,#sharp]:ADD R5,R5,R6
�BLDR R6,[R3],#4:ADD R5,R5,R6
�L$LDR R6,[R2,#-sharp]:ADD R5,R5,R6
�V$LDR R6,[R2,#sharp]:ADD R5,R5,R6 
�`LDR R6,[R2],#4 
�jMOV R6,R6,LSR #1
�tMOV R7,#sharpen%
�~MUL R7,R6,R7 
��SUBS R5,R7,R5,LSR #1
��MOVCC R5,#0 
��]
��Ȏ sharpen% �
��	� 8,9
��
[OPT Z
��MOV R6,R5,LSL #1
��]
��� 10
��
[OPT Z
��
MOV R6,R5
��]
�� 12
�

[OPT Z
�MOV R6,R5,LSR #1
�]
�(� 16
�2
[OPT Z
�<MOV R6,R5,LSR #2
�F]
�P� 24
�Z
[OPT Z
�dMOV R6,R5,LSR #3
�n]
�x
��
[OPT Z
��MOV R6,R5,LSR #16
��� R5,R5,R6,LSL #16
��MUL R7,R8,R5
��MUL R5,R9,R5
��MUL R10,R6,R8
��MUL R6,R9,R6
��ADDS R10,R5,R10
��ADDCS R6,R6,#&10000
��ADDS R7,R7,R10,LSL #16
��ADC R6,R6,R10,LSR #16
��MOV R6,R6,LSL #(32-27)
���RS R6,R6,R7,LSR #27
�ADDCS R6,R6,#1 
�]
��
�"
[OPT Z
�,CMP R6,#F:MOVCS R6,#F
�6STR R6,[R4],#4
�@SUBS R0,R0,#1
�JBNE sharplp
�TMOVS PC,R14
�^]
�h�
�r�hist%�equal% �
�|
[OPT Z
��.histo%
��LDR R0,[R9]:LDR R0,[R0] 
��LDR R1,[R9,#8] 
��LDR R2,[R9,#16]
��.histlp
��(LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
��MOV R3,R3,LSR #bits-8
��]
���col=2 �
��
[OPT Z
��ADD R3,R3,R3,LSL #1
��<LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
�(LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
�MOV R3,R3,LSR #bits-8
�$ADD R3,R3,R3,LSL #1:ADD R3,R3,#1
�&<LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
�0(LDR R3,[R2],#4:CMP R3,#F:MOVCS R3,#F
�:MOV R3,R3,LSR #bits-8
�D$ADD R3,R3,R3,LSL #1:ADD R3,R3,#2
�N]
�X�
�b
[OPT Z
�l<LDR R4,[R1,R3,LSL #2]:ADD R4,R4,#1:STR R4,[R1,R3,LSL #2]
�vSUBS R0,R0,#1
��BNE histlp
��MOVS PC,R14
��]
���
��
�equal% �
��
[OPT Z
��.histequal%
��LDR R0,[R9]:LDR R0,[R0] 
��LDR R1,[R9,#8] 
��LDR R2,[R9,#16] 
��.equallp
��%LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
�MOV R3,R3,LSR #bits-8
�]
��col=2 �
� 
[OPT Z
�*%LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
�4MOV R3,R3,LSR #bits-8
�>ADD R3,R3,R3,LSL #1
�H(LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
�R%LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
�\MOV R3,R3,LSR #bits-8
�f$ADD R3,R3,R3,LSL #1:ADD R3,R3,#1
�p(LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
�z%LDR R3,[R2]:CMP R3,#F:MOVCS R3,#F
��MOV R3,R3,LSR #bits-8
��$ADD R3,R3,R3,LSL #1:ADD R3,R3,#2
��]
���
��
[OPT Z
��(LDR R4,[R1,R3,LSL #2]:STR R4,[R2],#4
��SUBS R0,R0,#1
��BNE equallp
��MOVS PC,R14
��]
���
��Ȏ r$ �
��'� "FN800","FN801","FN1000","FN1001"
�
[OPT Z
�$.rlexpand%
�.LDR R0,[R9] 
�8LDR R1,[R0] 
�BLDR R2,[R9,#8]:LDR R2,[R2] 
�LLDR R3,[R9,#16] 
�VLDR R4,[R3] 
�`CMP R4,#1:MOVLTS PC,R14
�j LDR R5,[R9,#24]:LDR R5,[R5] 
�t.rle
�~STRB R2,[R1],#1
��SUB R4,R4,#1
��
CMP R1,R5
��TEQNE R4,#0
��BNE rle
��.rlexit
��STR R1,[R0] 
��STR R4,[R3] 
��MOVS PC,R14
��]
��
� "FN902"
��
[OPT Z
��.unpack%
�LDR R0,[R9] 
�
LDR R0,[R0] 
�LDR R1,plbuff
�ADD R2,R0,#768
�(.unpackloop
�2LDR R3,[R0],#4
�<
MOV R5,#0
�F.bitloop
�PMOV R6,R3,LSR R5
�Z� R6,R6,#15
�dADD R5,R5,#4
�nMOV R7,R3,LSR R5
�x� R7,R7,#15
��ADD R5,R5,#4
��STRB R7,[R1],#1
��STRB R6,[R1],#1
��CMP R5,#32
��BNE bitloop
��
CMP R2,R0
��BNE unpackloop
��MOV PC,R14
��.plbuff EQUD plbuff%
��]
��)� "FN1601","FN1501","FN1850","FN1851"
��
[OPT Z
�
.readiff%
�MOV R1,#c%
�LDR R8,[R9]:LDR R8,[R8] 
�",LDR R7,[R9,#8]:LDR R7,[R7]:ADD R7,R7,R8 
�,STMFD SP !,{R14}
�6]
�@ �r$="FN1850" � r$="FN1851" �
�J
[OPT Z
�TBL bytefromcache%
�^]
�h�sy%>250 �
�r
[OPT Z
�|BL bytefromcache%
��]
���
���
��
[OPT Z
��.rle
��BL bytefromcache%
��CMP R0,#128
��BCC rle1
��RSB R2,R0,#256
��BL bytefromcache%
��.rle0 STRB R0,[R8],#1
��SUBS R2,R2,#1
��BPL rle0
�
B rle2
�	.rle1
�ADD R3,R0,#1
�&
MOV R2,R8
�0ADD R8,R8,R3
�:BL multibytefromcache%
�D	.rle2
�N
CMP R8,R7
�XBCC rle
�bLDMFD SP !,{R14}
�lMOVS PC,R14
�v]
��� "FN1900","FN1100","FN400"
��
[OPT Z
��.readline%
��LDR R2,[R9]:LDR R2,[R2] 
��LDR R3,[R9,#8] 
��LDR R0,[R3]
��LDR R4,[R9,#16] 
��LDR R5,[R4]
��-LDR R6,[R9,#24]:LDR R6,[R6]:ADD R6,R6,R2 
��STMFD SP !,{R14}
��.rle
��
CMP R5,#1
�BGE rle1
�BL bytefromcache%
�
MOV R5,#1
� ]
�*�flag=1900 �
�4
[OPT Z
�>CMP R0,#192
�H%�CS R5,R0,#63:BLCS bytefromcache%
�R]
�\�
�f�flag=1100 �
�p
[OPT Z
�zCMP R0,#128
��BNE rle1
��BL bytefromcache%
��
TEQ R0,#0
���Q R0,#128
��BEQ rle1
��ADD R5,R0,#1
��BL bytefromcache%
��]
���
���flag=400 �
��
[OPT Z
��MOV R1,R0 
��BL bytefromcache% 
��R R1,R1,R0,LSL #8
�BL bytefromcache% 
��R R1,R1,R0,LSL #16
�$BL bytefromcache%
�.ADD R5,R0,#1
�8
MOV R0,R1
�B]
�L�
�V�flag=200 �
�`
[OPT Z
�jADD R5,R0,#1
�tBL bytefromcache%
�~]
���
��
[OPT Z
��	.rle1
��STRB R0,[R2],#1
��]
���flag=400 �
��
[OPT Z
��MOV R1,R0,LSR #8
��STRB R1,[R2],#1
��MOV R1,R0,LSR #16
��STRB R1,[R2],#1
��]
��
�

[OPT Z
�SUB R5,R5,#1
�
TEQ R2,R6
�(BNE rle
�2.rlexit
�<STR R0,[R3]:STR R5,[R4]
�FLDMFD SP !,{PC}^
�P]
�Z� "FN2401"
�d
[OPT Z
�n.bm_rle8
�xMOV R1,#c%
��LDR R8,[R9]:LDR R8,[R8]
��+LDR R7,[R9,#8]:LDR R7,[R7]:ADD R7,R7,R8
��STMFD SP !,{R14}
��.rle
��BL bytefromcache%  
��TEQ r0,#0          
��BEQ rlecopy
��MOV r4,r0          
��BL bytefromcache%  
��	.rle1
��STRB r0,[r8],#1
��SUBS r4,r4,#1
�BGT rle1
�	B rle
�.rlecopy
�,BL bytefromcache%  
�6CMP r0,#3          
�@BLT rlespecial
�JMOV r4,r0          
�T	.rle2
�hBL bytefromcache%
�rSTRB r0,[r8],#1
�|BL bytefromcache%
��SUBS r4,r4,#1
��STRGTB r0,[r8],#1
��SUBGTS r4,r4,#1
��BGT rle2
��	B rle
��.rlespecial
�&LDMFD SP !,{R14}
�0MOVS PC,R14
�:]
�D� "FN2402"
�N
[OPT Z
�X.bm_rle4
�bMOV R1,#c%
�lLDR R8,[R9]:LDR R8,[R8]
�v+LDR R7,[R9,#8]:LDR R7,[R7]:ADD R7,R7,R8
��STMFD SP !,{R14}
��MOV r2,#0          
��MOV r3,#0          
��.rle
��BL bytefromcache%  
��TEQ r0,#0          
��BEQ rlecopy
��MOV r4,r0          
��BL bytefromcache%  
��	.rle1
��BL bmrle4_insert
��
CMP r3,#8
�MOVGE r5,r2,LSR#24
�STRGEB r5,[r8],#1
�MOVGE r2,r2,LSL#8
� SUBGE r3,r3,#8
�*
CMP r4,#0
�4BGT rle1
�>	B rle
�H.rlecopy
�\BL bytefromcache%  
�fCMP r0,#3          
�pBLT rlespecial
�zMOV r4,r0          
��	.rle2
��BL bytefromcache%
��BL bmrle4_insert
��BL bytefromcache%
��
CMP r4,#0
��BLGT bmrle4_insert
��
B rle4
��	.rle3
��MOV r5,r2,LSR#24
��STRB r5,[r8],#1
��MOV r2,r2,LSL#8
��SUB r3,r3,#8
�	.rle4
�
CMP r3,#8
�BGE rle3
�$
CMP r4,#0
�.BGT rle2
�8	B rle
�B.rlespecial
��
CMP r3,#0
��MOVGT r5,r2,LSR#24
��STRGTB r5,[r8],#1
��LDMFD SP !,{R14}
��MOVS PC,R14
��.bmrle4_insert
��RSB r5,r3,#32
��MOV r2,r2,LSR r5
�MOV r2,r2,LSL r5
�
SUB r5,r5,#8
��R r2,r2,r0,LSL r5
�SUBS r4,r4,#2
�(ADDMI r3,r3,#4
�2ADDPL r3,r3,#8
�<MOVS PC,R14
�F]
�P�
�Z�cachebytes% �
�d
[OPT Z
�n.bytefromcache%
�xSTMFD SP !,{R1,R2}
��LDR R1,incacheptr
��LDR R2,numlefttogo
��LDRB R0,[R1],#1
��SUBS R2,R2,#1
��STRNE R1,incacheptr
��STRNE R2,numlefttogo
��LDMFD SP !,{R1,R2}
��MOVNE PC,R14
��STMFD SP !,{R0,R1,R2,R3,R4}
��LDR R2,valdatacache
��STR R2,incacheptr
��LDR R3,valcache
��STR R3,numlefttogo
�
MOV R0,#4
�MOV R1,#c%
�SWI "OS_GBPB"
�"LDMFD SP !,{R0,R1,R2,R3,R4}
�,MOV PC,R14
�6 .valdatacache DCD datacache%
�@.valcache DCD cache%
�J.incacheptr DCD datacache%
�T.numlefttogo DCD cache%
�^.multibytefromcache%
�h
CMP R3,#0
�r
�Q PC,R14
�|STMFD SP !,{R0,R14}
��.multibytefromcachel
��BL bytefromcache%
��STRB R0,[R2],#1
��SUBS R3,R3,#1
��BNE multibytefromcachel
��LDMFD SP !,{R0,R14}
��MOV PC,R14
��]
���
���planar%<0 �
��C%=7:�flag=2600 C%=15
��
[OPT Z
��.plancnv% 
�LDR R0,sxloc 
�LDR R1,[R9]:LDR R1,[R1] 
�LDR R3,[R9,#8]:LDR R3,[R3] 
�& LDR R4,[R9,#16]:LDR R4,[R4] 
�0]
�:�flag=3500 �
�D
[OPT Z
�N
MOV R9,#0
�X]
�b�
�l
[OPT Z
�vMOV R9,#C%
��]
���
��
[OPT Z
��.planelp
��
MOV R7,#0
��
MOV R5,R3
��]
���N%=1�planes%
��
[OPT Z
��LDR R6,[R5],R4
��]
���flag=2600 �
��
[OPT Z
�MOV R6,R6,LSL #8
�BIC R6,R6,#&FF000000
��R R6,R6,R6,LSR #16
� ]
�*�
�4�flag=3500 �
�>
[OPT Z
�HMOV R6,R6,LSR R9
�R�S R6,R6,#1
�\"�R R7,R7,R6,LSL #(planes%-N%) 
�f�RNE R7,R7,#(planes%-1)
�p]
�z�
��
[OPT Z
��MOV R6,R6,LSR R9
��� R6,R6,#1
���R R7,R7,R6,LSL #(N%-1)
��]
���
���
��
[OPT Z
��STRB R7,[R1],#1
��]
���flag=3500 �
��
[OPT Z
��ADD R9,R9,#1
�CMP R9,#C%+1
��Q R9,#0
�]
�$�
�.
[OPT Z
�8SUBS R9,R9,#1:MOVMI R9,#C%
�B]
�L�
�V
Ȏ flag �
�`
� 2600
�j
[OPT Z
�tMOVMI R3,R5
�~]
��
� 3500
��
[OPT Z
��ADDEQ R3,R3,#1
��]
��
��
[OPT Z
��ADDMI R3,R3,#1
��]
���
��
[OPT Z
��SUBS R0,R0,#1:BNE planelp
��MOVS PC,R14
�]
�
�
��
�cputime%=�
�(
�cache% �
�2�flag=3600 �
�<Dpcdblk%!12=cacherows%:�refillpcd:�cache%>=filesize% rowstogo%=-1
�F�
�P!�striprows%>0�compression>1 �
�dș12,4,c%,datacache%,cache%
�n;�cachebytes% !incacheptr=datacache%:!numlefttogo=cache%
�x�
��+�refill:�cache%>=filesize% rowstogo%=-1
���
���
���
��
Ȏ ncol �
��� 2^24-1:size%=1
��� 2^15-1:size%=1
��� 63,255,256:size%=1
��� 15:size%=2
��� 3:size%=4
��� 1:size%=8:�m$="C" size%=2
���m$="D" size%=4
���m$="T" size%=2
��
�
Ȏ flag �
�"*� 501:�info% �"Reading interlaced GIF"
�,%sz%=sx%*sy%:plbuff%=�dim(sz%+100)
�6F�Y%=0�sy%-1�8:X%=plbuff%+Y%*sx%:� LZWdecode%,table%(0),c%,X%,sx%:�
�@F�Y%=4�sy%-1�8:X%=plbuff%+Y%*sx%:� LZWdecode%,table%(0),c%,X%,sx%:�
�JF�Y%=2�sy%-1�4:X%=plbuff%+Y%*sx%:� LZWdecode%,table%(0),c%,X%,sx%:�
�TF�Y%=1�sy%-1�2:X%=plbuff%+Y%*sx%:� LZWdecode%,table%(0),c%,X%,sx%:�
�^?datacache%=plbuff%:buff%=plbuff%:rowbytes%=sx%:rowstogo%=-1
�h�
�r�gamma<>1 � gamma<>0 �
�|k=1/gamma:�C%=0�255
��#�r%(C%) r%(C%)=((r%(C%)/F)^k)*F
��#�g%(C%) g%(C%)=((g%(C%)/F)^k)*F
��#�b%(C%) b%(C%)=((b%(C%)/F)^k)*F
���
���
��rmax=F:gmax=F:bmax=F
���col=0 �
���input<9 �
��7�C%=0�255:r%(C%)=r%(C%)*rwt+g%(C%)*gwt+b%(C%)*bwt:�
���
���input<400 �
��$rmax=F*rwt:gmax=F*gwt:bmax=F*bwt
��E�C%=0�255:r%(C%)=r%(C%)*rwt:g%(C%)=g%(C%)*gwt:b%(C%)=b%(C%)*bwt:�
��
��
��
�&,�order% �adjustpalette(1/ydiv%/xdiv%,0)
�:
�range% �
�D>�info% �"Scanning data to compute parameters for '-range'"
�N
�order% �
�XY%=0:� șhour%,Y%*100�sy%
�b8W%=�(r$+"(xp%())"):�maxmin%,xp%(1,0),totvals2%:Y%+=1
�l"�Y%=sy% �!min<255 �!max+255>=F
�v�
��%Y%=0:ysamp%=1:� șhour%,Y%*100�y%
��;�scaledpixelrow(cl%()):�maxmin%,cl%(1,0),totvals%:Y%+=1
��#�Y%=y% � !min<255 � !max+255>=F
���
��O�!max+255>=F �!min<255 range%=�:range$="No point in '-range' on this image"
����range% �adjustpalette(F/(!max-!min),!min/ydiv%/xdiv%):range$="Input image maximum "+�(!max/F*100)+"% minimum "+�(!min/F*100)+"%"
���rewind:�info% �range$
���
���hist% �equal% �
��F�equal% �info% �"Scanning data to compute parameters for '-equal'"
��
�order% �
��$�yr%=0�sy%-1:șhour%,yr%*100�sy%
��6W%=�(r$+"(xp%())"):�histo%,xp%(1,0),vals%(0,0),sx%
��
��
�+ysamp%=1:�yr%=0�y%-1:șhour%,yr%*100�y%
� 9�scaledpixelrow(cl%()):�histo%,cl%(1,0),vals%(0,0),x%
�*�
�4�
�>.�info% �"Done. Now processing the picture"
�H�
�R�input<400 �
�\
�C%=0�255
�f�r%(C%)<0 r%(C%)=0
�p�g%(C%)<0 g%(C%)=0
�z�b%(C%)<0 b%(C%)=0
���r%(C%)>rmax r%(C%)=rmax
���g%(C%)>gmax g%(C%)=gmax
���b%(C%)>bmax b%(C%)=bmax
���
���
���hist% �
��M%=0:ZM%=-1:�C%=0�col
��5�Z%=0�256:�vals%(Z%,C%)>M% M%=vals%(Z%,C%):ZM%=Z%
���:�
���ZM%=-1 � okinfo%=0 �=100
��
� col>0 �
���66:ht=500
����<>66 �16:ht=400
��0,6,2000,6
��
��18:ht=400:�0,6,1024,6
�$�
�.#M=M%/(ht*2-8):�C%=0�col:Ȏ C% �
�8
� 0:�1
�B
� 1:�2
�L
� 2:�4
�V�
�`
� col>0 �
�jC�Z%=0�256:�vals%(Z%,C%) X%=Z%*3+C%<<1:�X%,8,X%,vals%(Z%,C%)/M+8
�t�
�~�
ˆ?�Z%=0�256:�vals%(Z%,C%) X%=Z%<<2:ȓ ȐX%,8,2,vals%(Z%,C%)/M
’�
œ�
¦�
°�close:ș"Hourglass_Off"
º=100
���
��%�m>=0 oname$="p"+�m+m$ �oname$=m$
��!�m=-6 �m=-7 �m=-8 oname$=pnm$
���range% oname$+="r"
���equal% oname$+="e"
�#�sharpen% oname$+="s"+�sharpen%
��black% oname$+="b"+�black%
�
8�gamma<>1 A%=@%:@%=&1020100:oname$+="g"+�gamma:@%=A%
��bright%=16 oname$+="b"
�)xsp%=x%:ysp%=y%:�rotate% Ȕ xsp%,ysp%
�(
Ȏ m �
�2.� -1:xwords%=xsp%:sz%=xwords%*ysp%:Y%=ysp%
�<+�getoutput(sz%,0,xwords%,Y%):base%=ram%
�F3� -3,-5:xwords%=xsp%*2:sz%=xwords%*ysp%:Y%=ysp%
�P+�getoutput(sz%,0,xwords%,Y%):base%=ram%
�Z0� -4:xwords%=xsp%*3:sz%=xwords%*ysp%:Y%=ysp%
�d+�getoutput(sz%,0,xwords%,Y%):base%=ram%
�n5� -6:xwords%=xsp%*2+3��3:sz%=xwords%*ysp%:Y%=ysp%
�x'A%=Y%:�getoutput(sz%,64,xwords%,Y%)
Â1ram%!4=0:ram%!8=16:ram%!12=16:ș&2e,&109,ram%
Ì)ș&2e,&10f,ram%,oname$,0,xsp%*2,Y%,28
ÖJbase%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
à)ram%!12=ram%!12-Y%*xwords%+A%*xwords%
ê>base%!(10*4)=5<<27 � nx<<1 � ny<<14 � 1:base%+=base%!(8*4)
ô5� -7:xwords%=xsp%*3+3��3:sz%=xwords%*ysp%:Y%=ysp%
þ'A%=Y%:�getoutput(sz%,64,xwords%,Y%)
��1ram%!4=0:ram%!8=16:ram%!12=16:ș&2e,&109,ram%
��)ș&2e,&10f,ram%,oname$,0,xsp%*3,Y%,28
��Jbase%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
��)ram%!12=ram%!12-Y%*xwords%+A%*xwords%
��Bbase%!(10*4)=panic<<27 � nx<<1 � ny<<14 � 1:base%+=base%!(8*4)
�4no magic number yet for new format 24bpp sprites
�0� -8:xwords%=xsp%*4:sz%=xwords%*ysp%:Y%=ysp%
�'A%=Y%:�getoutput(sz%,64,xwords%,Y%)
�1ram%!4=0:ram%!8=16:ram%!12=16:ș&2e,&109,ram%
�")ș&2e,&10f,ram%,oname$,0,xsp%*4,Y%,28
�,Jbase%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
�6)ram%!12=ram%!12-Y%*xwords%+A%*xwords%
�@>base%!(10*4)=6<<27 � nx<<1 � ny<<14 � 1:base%+=base%!(8*4)
�JC:xwords%=xsp%/size%+3.9999��3:sz%=xwords%*ysp%:X%=xsp%:Y%=ysp%
�T
�ncol=1 �
�^Ȏ m$ �
�hO�"C":!rowinc=xwords%:xwords%=xwords%*4:sz%=xwords%*ysp%:X%=xsp%*4:Y%=ysp%*4
�rO�"T":!rowinc=xwords%:xwords%=xwords%*3:sz%=xwords%*ysp%:X%=xsp%*4:Y%=ysp%*3
�|O�"D":!rowinc=xwords%:xwords%=xwords%*2:sz%=xwords%*ysp%:X%=xsp%*2:Y%=ysp%*2
�
�
Ě,A%=Y%:�getoutput(sz%,2048+64,xwords%,Y%)
Ĥ1ram%!4=0:ram%!8=16:ram%!12=16:ș&2e,&109,ram%
Į0ș&2e,&10f,ram%,oname$,(ncol<63)�1,X%,Y%,spm
ĸJbase%=ram%+ram%!8:base%!(5*4)=A%-1:!base%=!base%-Y%*xwords%+A%*xwords%
��)ram%!12=ram%!12-Y%*xwords%+A%*xwords%
��&pal%=base%+11*4:base%+=base%!(8*4)
��
Ȏ ncol �
��	� 256
��R!(pal%-8)+=2048:!(pal%-12)+=2048:base%+=2048:!(ram%+12)+=2048:!(pal%-44)+=2048
��)�Z%=0�255:B%=Z%�Z%<<8�Z%<<16:B%=B%<<8
�%pal%!(Z%*8)=B%:pal%!(Z%*8+4)=B%:�
�	� 255
�R!(pal%-8)+=2048:!(pal%-12)+=2048:base%+=2048:!(ram%+12)+=2048:!(pal%-44)+=2048
�$�Z%=0�255:B%=palette%!(Z%<<2)<<8
�&%pal%!(Z%*8)=B%:pal%!(Z%*8+4)=B%:�
�0� 15
�:Ȏ m$ �
�D	� "R"
�N0�Z%=0�15:�col(Z%,palette%!(Z%<<2)�&F0F0F0):�
�X	� "D"
�b�Z%=0�7:A%=0:�Z%�1 A%+=&F0
�l�Z%�2 A%+=&F000
�v�Z%�4 A%+=&F00000
ŀ�col(Z%,A%):�
Ŋ	� "T"
Ŕ0�Z%=0�15:A%=Z%<<4:�col(Z%,A%�A%<<8�A%<<16):�
Ş
Ũ<�Z%=0�15:A%=(Z%�7)/7*15+.2<<4:�col(Z%,A%�A%<<8�A%<<16):�
Ų�
ż� 3
��
Ȏm$ �
��	� "C"
��;�col(0,0):�col(1,&F0F000):�col(2,&F000F0):�col(3,&F0F0)
��	� "R"
��/�Z%=0�3:�col(Z%,palette%!(Z%<<2)�&F0F0F0):�
�
�1�Z%=0�3:A%=Z%*5<<4:�col(Z%,A%�A%<<8�A%<<16):�
��
�!� 1:�col(0,0):�col(1,&F0F0F0)
� �
�*�
�>�flex% �
�R�
�\�workspace%<0 �
�f.P%=�:[OPT 0:STR r13,P%+16:MOVS Pc,r14:]:��
�p�=�+32*1024+�-P%!16
�z�
Ǝ�
Ƙ�
Ƣ� �
Ƭ/� � �:� �:�Save:� �,�$+" internal ("+Þ+")"
ƶș"Hourglass_LEDs",3
�$ysamp%=1:nl%()=0:step%=4*(col+1)
��Daddr%=base%*size%:rowstep%=xwords%*size%:colstep%=1:dist%=xsp%-1
��!�m=-3�m=-5�m=-6 dist%=dist%*2
���m=-4�m=-7 dist%=dist%*3
���m=-8 dist%=dist%*4
���rotate% �
�6odist%=dist%:Ȕ colstep%,rowstep%:Ȕ hflip%,vflip%
��rotate%=1 �
�Gaddr%+=(ysp%-1)*colstep%:colstep%=-colstep%:dist%=(ysp%-1)*colstep%
��
�$;addr%+=dist%:rowstep%=-rowstep%:dist%=(ysp%-1)*colstep%
�.�
�8;�m=-3�m=-5�m=-6 colstep%=colstep%/2:rowstep%=rowstep%*2
�B6�m=-4�m=-7 colstep%=colstep%/3:rowstep%=rowstep%*3
�L1�m=-8 colstep%=colstep%/4:rowstep%=rowstep%*4
�V�
�`
�hflip% �
�j0addr%+=dist%:dist%=-dist%:colstep%=-colstep%
�t�
�~
�vflip% �
Lj�rotate% �
ǒ,addr%+=odist%*rotate%:rowstep%=-rowstep%
ǜ�
Ǧ/addr%+=(ysp%-1)*rowstep%:rowstep%=-rowstep%
ǰ�
Ǻ�
��Loutlim%=(base%+xwords%*Y%)*size%-1:oddcolstep%=-colstep%:oddstep%=-step%
��+�order% �adjustpalette(1/ydiv%/xdiv%,0)
��9�sy%=y% � sx%=x% � range%=� � sharpen%=� � equal%=� �
���dither% �
��@�yr%=0 � y%-1:șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
�OW%=�(r$+"(cl%())"):cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
��yr%�1 �
�
/�fs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
��
�AA%+=dist%:�fs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
�(�
�2�
�<�
�FGI%=step%:�yr%=0�y%-1:șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
�PXW%=�(r$+"(cl%())"):B%=x%:A%=addr%:addr%+=rowstep%:�fs%,colstep%,cl%(1,0),I%,A%,I%,B%
�Z�
�d�
�n�
�x
�equal% �
Ȃ9�rewind:Havg%=Ǝ(vals%())/256/(col+1):� new%(256,col)
Ȍ>�B%=0�col:R%=0:Hint%=0:�Z%=0�256:L%=R%:Hint%+=vals%(Z%,B%)
Ȗ&ȕHint%>Havg%:Hint%-=Havg%:R%+=1:�
Ƞnew%(Z%,B%)=(L%+R%)/2*F/256
Ȫ�:�
ȴ�
Ⱦ�sharpen% �
��
�order% �
��:yread%=sy%-1:W%=�(r$+"(rm1%())"):�equal% �fit2(rm1%())
��A�B%=0�col:rm1%(0,B%)=rm1%(1,B%):rm1%(sx%+1,B%)=rm1%(sx%,B%):�
���
��<yread%=y%-1:�scaledpixelrow(rm1%()):�equal% �fit(rm1%())
�?�B%=0�col:rm1%(0,B%)=rm1%(1,B%):rm1%(x%+1,B%)=rm1%(x%,B%):�
��
�rm2%()=rm1%()
��
�"
�order% �
�,�yr%=0 � y%-1
�62șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
�@
�sy%=y% �
�J�sharppixelrow(cl%())
�T�
�^:ysamp%-=1:�ysamp%=0 �sharppixelrow(xl%()):ysamp%=ymul%
�h�ydiv%=1 �
�rcl%()=xl%()
�|�
Ɇ�ysamp%>=ydiv% �
ɐ#ysamp%-=ydiv%:cl%()=xl%()*ydiv%
ɚ�
ɤ/cl%()=xl%()*ysamp%:Y%=ydiv%-ysamp%:ysamp%=0
ɮ�
ɸ0�ysamp%=0 �sharppixelrow(xl%()):ysamp%=ymul%
���ysamp%>Y% �
��6ysamp%-=Y%:xl2%()=xl%()*Y%:cl%()=cl%()+xl2%():Y%=0
���
��>Y%-=ysamp%:xl2%()=xl%()*ysamp%:cl%()=cl%()+xl2%():ysamp%=0
���
��
� Y%=0
��
�
ysamp%+=1
��
��
�&<cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
�0�yr%�1 �
�:/�fs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
�D�
�NAA%+=dist%:�fs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
�X�
�b�
�l�
�v�yr%=0 � y%-1
ʀ2șhour%,yr%*100�y%:�addr%>outlim% �flushoutput
ʊ�sharpen% �
ʔ@�yread% yread%-=1:�scaledpixelrow(rm%()):�equal% �fit(rm%())
ʞ;�B%=0�col:rm%(0,B%)=rm%(1,B%):rm%(x%+1,B%)=rm%(x%,B%):�
ʨ;� sharp%,cl%(1,0),rm%(1,0),rm1%(1,0),rm2%(1,0),totvals%
ʲ!Ȕ rm2%(),rm1%():rm1%()=rm%()
ʼ�
��.�scaledpixelrow(cl%()):�equal% �fit(cl%())
���
��<cl%()=cl%()+nl%():nl%()=0:B%=x%:A%=addr%:addr%+=rowstep%
���yr%�1 �
��/�fs%,colstep%,cl%(1,0),nl%(1,0),A%,step%,B%
��
�AA%+=dist%:�fs%,oddcolstep%,cl%(x%,0),nl%(x%,0),A%,oddstep%,B%
��
��
� �
�*�
�4cputime%=�-cputime%
�>	�Save
�H=0
�R� �srchdevlist
�\
[OPT Z
�z%CMP R4,#F:MOVCS R4,#0:MOVGE R4,#F
˄?MOV R0,R4,LSR #(bits-k%):CMP R0,#1<<k%:MOVCS R0,#(1<<k%)-1 
ˎ%CMP R5,#F:MOVCS R5,#0:MOVGE R5,#F
˘SMOV R3,R5,LSR #(bits-k%):CMP R3,#1<<k%:MOVCS R3,#(1<<k%)-1:�R R0,R0,R3,LSL #k% 
ˢ%CMP R6,#F:MOVCS R6,#0:MOVGE R6,#F
ˬUMOV R3,R6,LSR #(bits-k%):CMP R3,#1<<k%:MOVCS R3,#(1<<k%)-1:�R R0,R0,R3,LSL #k%*2 
��STMFD SP !,{R8,R9,R10,R11}
��LDR r3,ictloc
��LDR r2,[r3,r0,LSL #2]
��MOV r14,r2,lsr #24 
�CMP r14,#4
�ADDCC r2,r3,r0,lsl #2 
�BICCS r2,r2,#&ff000000 
�LDRB r0,[r2],#1 
�$SUBS r14,r14,#1
�.
BEQ gotit
�BADD r3,r0,r0,lsl #1
�LADD r3,r7,r3,lsl #2
�VLDMIA r3,{r8,r9,r10}
�`SUBS r8,r8,r4
�jRSBMI r8,r8,#0
�tMOV r8,r8,lsr #bits/2 
�~SUBS r9,r9,r5
̈RSBMI r9,r9,#0
̒MOV r9,r9,lsr #bits/2 
̜SUBS r10,r10,r6
̦RSBMI r10,r10,#0
̰MOV r10,r10,lsr #bits/2 
̺MUL r3,r8,r8
��MUL r11,r9,r9
��ADD r11,r11,r11,LSL #2
��ADD r3,r3,r3,LSL #1
��ADD r3,r3,r11,LSL #1
��MLA r11,r10,r10,r3 
�
.srchlist
�
LDRB r3,[r2],#1
�ADD R8,R3,R3,LSL #1
�ADD R8,R7,R8,LSL #2
�(LDMIA R8,{R8,R9,R10}
�2SUBS R9,R5,R9
�<RSBMI R9,R9,#0
�FMOV R3,R9,LSR #bits/2
�PMUL R9,R3,R3
�ZADD r9,r9,r9,LSL #2
�dCMP R11,R9,LSL #1
�nBCC srchquick
�xSUBS R8,R4,R8
͂RSBMI R8,R8,#0
͌MOV R3,R8,LSR #bits/2
͖MUL R8,r3,r3
͠ADD r8,r8,r8,LSL #1
ͪADD r8,r8,r9,LSL #1
ʹSUBS R10,R6,R10
;RSBMI R10,R10,#0
��MOV R3,R10,LSR #bits/2
��MLA R10,R3,R3,R8
��CMP R10,R11
��MOVCC R11,R10
��LDRCCB R0,[r2,#-1]
�.srchquick
�SUBS R14,R14,#1
�BNE srchlist
�
.gotit
�"+ADD R3,R0,R0,LSL #1:ADD R3,R7,R3,LSL #2
�,LDMIA R3,{R8,R9,R10}
�6+SUB R4,R4,R8:SUB R5,R5,R9:SUB R6,R6,R10
�@LDMFD r13!,{R8,R9,R10,R11}
�J]
�T�
�^� �getoutput(A%,E%,B%,� C%)
�h%�A%>max% � rotate%=� � vflip%=� �
�r1C%=max%�B%+1:A%=xwords%*C%+E%:first%=�:o%=�f$
�|�
Ά
A%+=E%
ΐ�
Κ�spritearea%<0 �
Τ/ram%=�createarea(A%):�ram%=-1 ram%=�dim(A%)
ή�
θram%=spritearea%
���
��!ram%=A%
���
��� �createarea(size%)
��� �
�areanumber%=0
�
� � �:=-1
�_ș &20066,0,-1,size%,-1,%10000000,size%,0,0,"ChangeFSI sprite" � ,areanumber%,,areabase%;V%
��V%�1 �areanumber%=0:=-1
�X4ș "OS_ReadDynamicArea",areanumber% � ,areasize%
�b=� areasize%<size% �removearea:� 42,"Couldn't create area"
�l=areabase%
π� �removearea
ϊ@�areanumber% ș "OS_DynamicArea",1,areanumber%:areanumber%=0
ϔ�
Ϩ� �cachedim(size%)
ϲ� �
ϼcacheareanumber%=0
��
� � �:=-1
��hș &20066,0,-1,size%,-1,%10000000,size%,0,0,"ChangeFSI cache" � ,cacheareanumber%,,cacheareabase%;V%
��!�V%�1 �cacheareanumber%=0:=-1
��>ș "OS_ReadDynamicArea",cacheareanumber% � ,cacheareasize%
��G� cacheareasize%<size% �removecachearea:� 42,"Couldn't create area"
�=cacheareabase%
�� �removecachearea
�O�cacheareanumber% ș "OS_DynamicArea",1,cacheareanumber%:cacheareanumber%=0
� �
�4� �flushoutput
�>�spritearea%<0 �oksave% �
�H'A%=base%:�first% A%=ram%+4:first%=�
�Rș12,2,o%,A%,addr%�size%-A%
�\�
�faddr%=base%*size%
�p�
�z� �close
Є,�c% �flag=3600 ș"PhotoCD_Close",pcdh%,1
Ў;�c% �#c%:c%=0:�scrapf% scrapf%=�:�"Remove <Wimp$Scrap>"
И�cc% �#cc%:cc%=0
Т�ccc% �#ccc%:ccc%=0
Ь�removecachearea
ж�
�� �Save
��
�close
��
Ȏ m �
��"� -1:�spritearea%<0 �oksave% �
��;�o% �flushoutput �ș"OS_File",10,f$,&004,,ram%,ram%+sz%
���
�� -2:o%=�f$:�#o%,pnm$
�
Ȏ pnm$ �
�
� "P1"
�,�#o%,"# "+f$+".pbm (options "+oname$+")"
�$�#o%,�xsp%+" "+�ysp%
�.$�Y%=0�ysp%-1:B%=base%+Y%*xwords%
�8=�X%=0�xsp%-1:�B%?(X%>>3)�(1<<(X%�7)) �#o%,"1"; ��#o%,"0";
�B�
�L�#o%,""
�V�
�`
� "P4"
�j;�#o%,"# "+f$+".pbm (options "+oname$+") binary encoded"
�t�#o%,�xsp%+" "+�ysp%
�~f�X%=0�255:code%?X%=X%<<7 � X%<<5�&40 � X%<<3�&20 � X%<<1�&10 � X%>>1�8 � X%>>3�4 �X%>>5�2 �X%>>7:�
ш$�Y%=0�ysp%-1:B%=base%+Y%*xwords%
ђ,�X%=0�xsp%-1�8:�#o%,code%?(B%?(X%>>3)):�
ќ�
Ѧ
� "P2"
Ѱ,�#o%,"# "+f$+".pgm (options "+oname$+")"
Ѻ�#o%,�xsp%+" "+�ysp%
��
�#o%,"15"
��$�Y%=0�ysp%-1:B%=base%+Y%*xwords%
��7�X%=0�xsp%-1:C%=B%?(X%>>1):�X%�1 C%=C%>>4 �C%=C%�15
���#o%," "+�C%;
���
��#o%,""
��
�

� "P5"
�;�#o%,"# "+f$+".pgm (options "+oname$+") binary encoded"
��#o%,�xsp%+" "+�ysp%
�(
�#o%,"15"
�2$�Y%=0�ysp%-1:B%=base%+Y%*xwords%
�<7�X%=0�xsp%-1:C%=B%?(X%>>1):�X%�1 C%=C%>>4 �C%=C%�15
�F�#o%,C%
�P�
�Z�
�d�
�n
�#o%:o%=0
�x/�pnm$="P2"�pnm$="P1" �"Settype "+f$+" &FFF"
҂� -3:o%=�f$:�#o%,pnm$
ҌO�#o%,"# "+f$+".pcm (options "+oname$+") binary encoded 15bpp (5bits r,g,b)"
Җ�#o%,�xsp%+" "+�ysp%
Ҡ
�#o%,"31"
Ҫș12,2,o%,ram%,xsp%*ysp%*2
Ҵ
�#o%:o%=0
Ҿ� -4:o%=�f$:�pnm$="IRLAM"�
��%�#o%,"Irlam 24: "+�xsp%+" "+�ysp%
��#�Y%=0�ysp%-1:B%=ram%+Y%*xwords%
��!�X%=0�xsp%*3-1�3:�#o%,B%?X%:�
��'B%+=1:�X%=0�xsp%*3-1�3:�#o%,B%?X%:�
��'B%+=1:�X%=0�xsp%*3-1�3:�#o%,B%?X%:�
��
��
�
�#o%,pnm$
��pnm$="P6" �
�"G�#o%,"# "+f$+".ppm (options "+oname$+") binary encoded 24bpp r,g,b"
�,�
�6E�#o%,"# "+f$+".ppm (options "+oname$+") "+�(p6bits*3)+"bpp r,g,b"
�@�
�J�#o%,�xsp%+" "+�ysp%
�T�#o%,�(2^p6bits-1)
�^�pnm$="P6" �
�hș12,2,o%,ram%,xsp%*ysp%*3
�r�
�|#�Y%=0�ysp%-1:B%=ram%+Y%*xwords%
ӆX�X%=0�xsp%-1:C%=B%!(X%*3):�#o%," "+�(C%�255)+" "+�((C%>>8)�&FF)+" "+�((C%>>16)�255);
Ӑ�
Ӛ�#o%,""
Ӥ�
Ӯ�
Ӹ�
��
�#o%:o%=0
��%�pnm$="P3" �"Settype "+f$+" &FFF"
��� -5:o%=�f$:�#o%,pnm$
��O�#o%,"# "+f$+".pcm (options "+oname$+") binary encoded 15bpp (5bits y,u,v)"
���#o%,�xsp%+" "+�ysp%
���#o%,"31 27 21"
�ș12,2,o%,ram%,xsp%*ysp%*2
�
�#o%:o%=0
�
��ncol=1�m$="T" �
�&�X%=(xsp%*4-1)�8*8+6�6�-8
�0ș&2e,&12e,ram%,oname$,X%
�:ș&2e,&12e,ram%,oname$,X%
�D�
�N�
�X�spritearea%<0 �oksave% �
�b(�o% �flushoutput �ș&2e,&10c,ram%,f$
�l�
�v�
Ԁ4�o% �#o%:o%=0:�"settype "+f$+" &ff9":�removearea
Ԋș"Hourglass_Off"
Ԕ�
Ԟ��defpal
Ԩ
�C%=0�255
Բ#r%(C%)=(C%�7 � (C%�16)>>1)/15*F
Լ$g%(C%)=(C%�3 � (C%�&60)>>3)/15*F
��0b%(C%)=(C%�3 � (C%�8)>>1 � (C%�128)>>4)/15*F
���
���
��
��defpal2
��r%(0)=F:g%(0)=F:b%(0)=F
��
�
��defpal4
�/r%()=15,10,5,0:�C%=0�3:r%(C%)=r%(C%)/15*F:�
�g%()=r%():b%()=r%()
� �
�*��defpal16
�41r%()=15,13,11,9,7,5,3,0,0,14, 0,13,14,5,15, 0
�>1g%()=15,13,11,9,7,5,3,0,4,14,12, 0,14,8,11,10
�H1b%()=15,13,11,9,7,5,3,0,9, 0, 0, 0,11,0, 0,15
�RG�C%=0�15:r%(C%)=r%(C%)/15*F:g%(C%)=g%(C%)/15*F:b%(C%)=b%(C%)/15*F:�
�\�
�f��ipal63
�p,�#c%=&38:� rpal%(15),gpal%(15),bpal%(15)
�z�C%=0�15:D%=�#c%
Մrpal%(C%)=�#c%>>4 � 7
Վgpal%(C%)=�#c%>>4 � 3
՘bpal%(C%)=�#c%>>4 � 7
բD%=�W:�
լ
�C%=0�255
ն)r%(C%)=(rpal%(C%�15)�(C%�16)>>1)/15*F
�*g%(C%)=(gpal%(C%�15)�(C%�&60)>>3)/15*F
��*b%(C%)=(bpal%(C%�15)�(C%�128)>>4)/15*F
���
���
����ipal(D%)
���#c%=&38
��C%=0�D%-1:D%=�#c%
�r%(C%)=(�#c%>>4)/15*F
�g%(C%)=(�#c%>>4)/15*F
�b%(C%)=(�#c%>>4)/15*F
�$D%=�W:�
�.�
�8� �newropal(D%)
�B�#c%=&38
�L�C%=0�D%-1:D%=�W
�Vr%(C%)=(D%�255)/255*F
�`g%(C%)=(D%>>8�255)/255*F
�jb%(C%)=(D%>>16�255)/255*F
�tD%=�W:�
�~�
ֈ� �nopal
֒3�C%=0�255:r%(C%)=C%/255*F:�:g%()=r%():b%()=r%()
֜�
֦� �col(A%,B%)
ְ6B%=B%<<8�B%<<4�&10:pal%!(A%*8)=B%:pal%!(A%*8+4)=B%
ֺ�
��� �bits(A%)
��5�A%=1 �="1 bit per pixel" �=�A%+" bits per pixel"
��� �fits
��
�Z%,s$
���Z%=1�80:s$+=��#c%:�
�=s$
�
� �uc(a$)
�

�Z%,z$,b$
�
�Z%=1��a$
�z$=�a$,Z%,1)
�(!�z$>="a"�z$<="z" z$=�(�z$-32)
�2b$+=z$:�
�<=b$
�F� �dim(A%)
�P� B%
�Z�flex% �
�d1B%=nextlocation%:A%=A%+3��3:nextlocation%+=A%
�n*ș"Wimp_SlotSize",-1,-1 � currentslot%
�x'�currentslot%+&8000<nextlocation% �
ׂ<ș "Wimp_SlotSize",nextlocation%-&8000,-1 � currentslot%
׌U�currentslot%+&8000<nextlocation% � 42,"Can't get enough memory to process image"
ז�
נ�
ת�workspace%<0 �
״� B% A%
׾�
��WB%=workspace%:workspace%+=A%+3��3:�workspace%>worklimit% �42,"Not enough workspace"
���
���
��=B%
�� �W=�W1(c%)
�2� �W1(c%)=�#c% � �#c%<<8 � �#c%<<16 � �#c%<<24
�� �HW=�#c% � �#c%<<8
�,� �beHW=�#c%<<8 � �#c%
�@/� �beW=�#c%<<24 � �#c%<<16 � �#c%<<8 � �#c%
�T� �tiff(T%)
�^Ȏ T% �
�h� 1,7:=�#c%
�r*� 2:�s$,t$:�s$+=t$:t$=��#c%:�t$=�0:=s$
�|4� 3:�bigendian �=�#c%<<8 � �#c% �=�#c% � �#c%<<8
؆%� 4,9:�bigendian �=�beW �=�W1(c%)
ؐ� 6:=(�#c%<<24)>>24
ؚ� 8:=(�tiff(3)<<16)>>16
ؤ�
خ� 42,"Silly TIFF tag:"+�T%
ظ� �nextstrip
��rowstogo%=striprows%
��"stripptr+=1:�#c%=st%(stripptr)
���compression=5 �
��F!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
��H!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
���
�(�compression=5 � compression=32773 �
�.!incacheptr=datacache%:!numlefttogo=cache%
�ș12,4,c%,datacache%,cache%
��
�&�
�0(� �watford(wtsx%,� rep%,� wt%,X%,c%)
�: �rlexpand%,wtsx%,rep%,wt%,X%
�D� C%=�#c%:Ȏ C%>>6 �
�N� 0:?X%=C%:X%+=1:wt%=C%
�X6� 1:wt%-=1:rep%=C%�63:�rlexpand%,wtsx%,rep%,wt%,X%
�b/� 2:rep%=C%�63:�rlexpand%,wtsx%,rep%,wt%,X%
�l6� 3:wt%+=1:rep%=C%�63:�rlexpand%,wtsx%,rep%,wt%,X%
�v�
ـ
�X%=wtsx%
ي�
ٔ*� �watfordcache(wtsx%,� rep%,� wt%,X%)
ٞ �rlexpand%,wtsx%,rep%,wt%,X%
٨#� C%=�bytefromcache%:Ȏ C%>>6 �
ٲ� 0:?X%=C%:X%+=1:wt%=C%
ټ6� 1:wt%-=1:rep%=C%�63:�rlexpand%,wtsx%,rep%,wt%,X%
��/� 2:rep%=C%�63:�rlexpand%,wtsx%,rep%,wt%,X%
��6� 3:wt%+=1:rep%=C%�63:�rlexpand%,wtsx%,rep%,wt%,X%
���
��
�X%=wtsx%
���
�� �reduce(� A%,� B%)
�� C%,D%:C%=A%:D%=B%
�� �C%<D% Ȕ C%,D%
�C%=C%�D%
� 	�C%=0
�*A%=A%�D%:B%=B%�D%
�4�
�>� �readpixelrow(z%())
�H�rows% �
�Rrows%-=1:�sx%=x% �
�\W%=�(r$+"(z%())")
�f�
�p@W%=�(r$+"(xp%())"):�xsample%,xmul%,xdiv%,z%(1,0),xp%(1,0),x%
�z�
ڄ�
ڎ
z%()=0
ژ�
ڢ�
ڬ� �sharppixelrow(z%())
ڶ�rows% �
�rows%-=1:�sx%=x% �
��A�sharpen% �sharp(z%()) �W%=�(r$+"(z%())"):�equal% �fit2(z%())
���
��D�sharpen% �sharp(xp%()) �W%=�(r$+"(xp%())"):�equal% �fit2(xp%())
��-�xsample%,xmul%,xdiv%,z%(1,0),xp%(1,0),x%
���
��
�
z%()=0
��
��
�$� �sharp(z%())
�.=yread%-=1:�yread% W%=�(r$+"(rm%())"):�equal% �fit2(rm%())
�8=�B%=0�col:rm%(0,B%)=rm%(1,B%):rm%(sx%+1,B%)=rm%(sx%,B%):�
�B;� sharp%,z%(1,0),rm%(1,0),rm1%(1,0),rm2%(1,0),totvals2%
�L!Ȕ rm2%(),rm1%():rm1%()=rm%()
�V�
�`� �scaledpixelrow(z%())
�j
�sy%=y% �
�t�readpixelrow(z%())
�~�
ۈ9ysamp%-=1:�ysamp%=0 �readpixelrow(xl%()):ysamp%=ymul%
ے�ydiv%=1 �
ۜz%()=xl%()
ۦ�
۰�ysamp%>=ydiv% �
ۺ"ysamp%-=ydiv%:z%()=xl%()*ydiv%
���
��2�Y%:z%()=xl%()*ysamp%:Y%=ydiv%-ysamp%:ysamp%=0
���
��/�ysamp%=0 �readpixelrow(xl%()):ysamp%=ymul%
���ysamp%>Y% �
�4ysamp%-=Y%:xl2%()=xl%()*Y%:z%()=z%()+xl2%():Y%=0
��
�
<Y%-=ysamp%:xl2%()=xl%()*ysamp%:z%()=z%()+xl2%():ysamp%=0
��
�
� Y%=0
�(�
�2
ysamp%+=1
�<�
�F�
�P�
�Z� �fit(z%())
�d$�histequal%,z%(1,0),new%(0,0),x%
�n�
�x� �fit2(z%())
܂%�histequal%,z%(1,0),new%(0,0),sx%
܌�
ܖ� �adjustpalette(mul,sub)
ܠ�mul=1 � sub=0 �
ܪ
�C%=0�255
ܴQr%(C%)=(r%(C%)-sub)*mul+1:g%(C%)=(g%(C%)-sub)*mul+1:b%(C%)=(b%(C%)-sub)*mul+1
ܾ�
��
�ham �
��2�C%=0�15*4�4:ltable!C%=(ltable!C%-sub)*mul+1:�
���
���input>400 �
��
�C%=0�255
�Crpal%(C%)=(rpal%(C%)-sub)*mul+1:gpal%(C%)=(gpal%(C%)-sub)*mul+1
�Ebpal%(C%)=(bpal%(C%)-sub)*mul+1:table%(C%)=(table%(C%)-sub)*mul+1
��
��
�"�
�,� �cachesize(A%)
�6)ș&20023,"ChangeFSI$Cache",A%,-1 �,,Z
�@�Z<>0 �
�J9ș35,"ChangeFSI$Cache",A%,20 �,,Z:A%?Z=13:cache%=�$A%
�T+�$A%,"K")��$A%,"k") cache%=cache%*1024
�^�
�hcache%=128*1024
�r�
�|�
݆
� �refill
ݐ�striprows%>0 �nextstrip
ݚEș12,4,c%,datacache%,cache%:rowstogo%=cacherows%:buff%=datacache%
ݤC�input=24 �rbo%>=0 rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
ݮ�
ݸ� �refillpcd
���pcdblk%!4>=sy% �
��#�pcdblk%!12>=sy% pcdblk%!12=sy%
��Vș"PhotoCD_GetBlock",pcdh%,,pcdblk%,datacache%,pcdindex%,,,pcdcache%,pcdcachesize%
��Vrowstogo%=cacherows%:buff%=datacache%:pcdblk%!4+=cacherows%:pcdblk%!12+=cacherows%
��0rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
��
�� �8(z%())
�=�mappix%,z%(1,0),r%(0),g%(0),b%(0),buff%:buff%+=rowbytes%
�&%rowstogo%-=1:�rowstogo%=0 �refill
�0=�
�D� �16(z%())
�ND�mappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),buff%,buff%
�X6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
�b=�
�v� �24(z%())
ހ2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
ފ0rb%+=rowbytes%:gb%+=rowbytes%:bb%+=rowbytes%
ޔ%rowstogo%-=1:�rowstogo%=0 �refill
ޞ=�
޲� �300(z%())
޼[ș12,4,cc%,pbuff%,sx%:�mappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),pbuff%,buff%
��6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
��=�
��� �400(z%())
��)�readline%,plbytes%,rep%,pix%,plbuff%
�2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�=�
�� �500(z%())
� )� LZWdecode%,table%(0),c%,plbuff%,sx%
�*.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�4=�
�H� �800(z%())
�R)�watfordcache(wtsx%,rep%,wt%,plbuff%)
�\.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�f=�
�z� �801(z%())
߄(�watford(wtsx1%,rep1%,wt1%,buff%,c%)
ߎ*�watford(wtsx2%,rep2%,wt2%,wtsx1%,cc%)
ߘ+�watford(wtsx3%,rep3%,wt3%,wtsx2%,ccc%)
ߢ2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
߬=�
�� �901(z%())
��<ș12,4,c%,rb%,sx%:ș12,4,cc%,gb%,sx%:ș12,4,ccc%,bb%,sx%
��2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
��=�
��� �902(z%())
�A�unpack%,buff%:�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
�=�
�$� �1000(z%())
�.?X%=buff%:�rep%>0 C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:pa%+=1
�88�rep2%>0 C%=?pa%:�rlexpand%,pasx%,rep2%,C%,X%:pa%+=1
�B� C%=�#c%:�C%=0 �
�L@rep%=�#c%:C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:�rep%=0 pa%+=1
�V�
�`Srep2%=C%�15:rep%=C%>>4:�rep% C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:�rep%=0 pa%+=1
�jI�X%<pasx% �rep2% C%=?pa%:�rlexpand%,pasx%,rep2%,C%,X%:�rep2%=0 pa%+=1
�t�
�~
�X%=pasx%
�,�mappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
�=�
�� �1001(z%())
�?X%=buff%:�rep%>0 C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:pa%+=1
�B� rep%=�#c%:C%=?pa%:�rlexpand%,pasx%,rep%,C%,X%:�rep%=0 pa%+=1
��6�X%=pasx%:�mappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
��=�
��� �1100(z%())
��)�readline%,plbytes%,rep%,pix%,plbuff%
�.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�=�
�� �1400(z%())
��vrep% �
�(vrep%-=1
�2�
�<8G%=buff%:�X%=1�planes%:G%+=rowbytes%:F%=G%-rowbytes%
�F� C%=�#c%:�C%=0 �
�PC%=�#c%:�C%=0 �
�ZC%=�#c%:vrep%=�#c%-1
�d�
�n*D%=F%:ș12,4,c%,F%,patlen%:F%+=patlen%
�x>�C%>1 �N%=2�C%:�E%=0�patlen%-1:F%?E%=D%?E%:�:F%+=patlen%:�
��
��
�
�C%=128 �
�"C%=�#c%:ș12,4,c%,F%,C%:F%+=C%
��
�=?F%=(C%�&80)<>0:�E%=F%+1�F%+(C%�&7F):?E%=?F%:�:F%+=C%�&7F
��
���:�F%>=G%:�
��$�plancnv%,rowbytes%,buff%,pbuff%
���
��-�mappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
��=�
�� �1501(z%())
�D�readiff%,rowbytes%,plbuff%:rowstogo%-=1:�rowstogo%=0 �nextstrip
�.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�"=�
�6� �1505(z%())
�@/� LZWdecode%,table%(0),c%,plbuff%,rowbytes%
�J(rowstogo%-=1:�rowstogo%=0 �nextstrip
�T.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�^=�
�r� �1515(z%())
�|/� LZWdecode%,table%(0),c%,plbuff%,rowbytes%
�(rowstogo%-=1:�rowstogo%=0 �nextstrip
�2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�=�
�� �1600(z%())
�9�plancnv%,realrowbytes%,buff%,pbuff%:buff%+=rowbytes%
��-�mappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
��%rowstogo%-=1:�rowstogo%=0 �refill
��=�
��� �1601(z%())
��D�X%=0�planes%-1:F%=plbuff%+X%*rowbytes%:�readiff%,rowbytes%,F%:�
�(�masking% �readiff%,rowbytes%,pbuff%
�&�plancnv%,rowbytes%,plbuff%,pbuff%
�-�mappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
�=�
�0� �1850(z%())
�:�readiff%,rowbytes%,plbuff%
�D.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�N=�
�b� �1851(z%())
�l�readiff%,rowbytes%,plbuff%
�v2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�=�
�� �1900(z%())
�)�readline%,plbytes%,rep%,pix%,plbuff%
�&�plancnv%,rowbytes%,plbuff%,pbuff%
�-�mappix%,z%(1,0),r%(0),g%(0),b%(0),pbuff%
�=�
��� �2000(z%())
��X%=buff%:�
��C%=�#c%:�C%<128 �
�� C%+=1:ș12,4,c%,X%,C%:X%+=C%
��
�0F%=X%:?F%=�#c%:�C%=C%�128�-1:?X%=?F%:X%+=1:�
��
��X%=buff%+rowbytes%
� ,�mappix%,z%(1,0),r%(0),g%(0),b%(0),buff%
�*=�
�>� �2001(z%())
�HX%=buff%:�
�RC%=�#c%:�C%<128 �
�\&C%=(C%+1)*2:ș12,4,c%,X%,C%:X%+=C%
�f�
�p6F%=X%:ș12,4,c%,X%,2:�C%=C%�128�-1:!X%=!F%:X%+=2:�
�z�
��X%=buff%+rowbytes%
�D�mappix%,z%(1,0),rpal%(0),gpal%(0),r%(0),g%(0),b%(0),buff%,buff%
�=�
�� �2002(z%())
�X%=buff%:�
�C%=�#c%:�C%<128 �
��+C%=(C%+1)*step24:ș12,4,c%,X%,C%:X%+=C%
���
��@F%=X%:ș12,4,c%,X%,step24:�C%=C%�128�-1:!X%=!F%:X%+=step24:�
���
���X%=buff%+rowbytes%
�2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�=�
�� �2250(z%())
�$Q�mappix%,z%(1,0),rpal%(0),r%(0),gpal%(0),g%(0),bpal%(0),b%(0),table%(0),buff%
�.6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
�8=�
�L� �2300(z%())
�VH�clrfirst% �X%=0�sx%-1:rb%?X%=?back%:gb%?X%=back%?1:bb%?X%=back%?2:�
�`�vrep% �
�jvrep%-=1
�t�
�~� �
�D� � � vrep%=-1:�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%:=�
�)E%=�:� C%=�#c%:D%=�#c%:�C%�&40 D%=�HW
�Ȏ C%�&3f �
�(� 1:E%=�:vrep%=D%-1:�vrep%<0 vrep%=�
�<� 2:ccol%=back%?D%:cbuf%=rb%+sx%*D%:�D%=255 cbuf%=alpha%
�-� 3:�X%=0�D%-1:cbuf%?X%=ccol%:�:cbuf%+=D%
��6� 5:ș12,4,c%,cbuf%,D%+1:cbuf%+=D%+1:�D%+1�1 �#c%
��1� 6:C%=�HW:�X%=0�D%:cbuf%?X%=C%:�:cbuf%+=D%+1
���
���E%
���
�2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�=�
�� �2401(z%())
��bm_rle8,rowbytes%,plbuff%
�(.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�2=�
�F� �2402(z%())
�P�bm_rle4,rowbytes%,plbuff%
�Z.�mappix%,z%(1,0),r%(0),g%(0),b%(0),plbuff%
�d=�
�x� �3000(z%())
�Q�mappix%,z%(1,0),rpal%(0),r%(0),gpal%(0),g%(0),bpal%(0),b%(0),table%(0),buff%
�6buff%+=rowbytes%:rowstogo%-=1:�rowstogo%=0 �refill
�=�
�� �3500(z%())
�=�
�� �3600(z%())
�2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
��0rb%+=rowbytes%:gb%+=rowbytes%:bb%+=rowbytes%
��(rowstogo%-=1:�rowstogo%=0 �refillpcd
��=�
��� �3708(z%())
��4A%=jpegspace%:jpegy%-=1:B%=jpegy%:rb%=�(jpeg%+4)
�*�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%
�=�
�� �3724(z%())
�HA%=jpegspace%:jpegy%-=1:B%=jpegy%:rb%=�(jpeg%+4):gb%=rb%+1:bb%=rb%+2
�"2�mappix%,z%(1,0),r%(0),g%(0),b%(0),rb%,gb%,bb%
�,=�
�6
� �rewind
�@rows%=sy%:Ȏ flag �
�J� 0:�#c%=st%
�T� 100:�#c%=4
�^� 200:�#c%=st%:rep%=0
�h� 300:�#c%=st%:�#cc%=stcc%
�r� 400:�#c%=st%:rep%=0
�|5� 500:�I%=0�clearcode%-1:table%(I%)=I%:�:�#c%=st%
�F!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
�H!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
�� 501:buff%=datacache%
�� 600:�#c%=&380
�� 700:�#c%=st%
�� 800:�#c%=0:rep%=0:wt%=0
��N� 801:�#c%=0:�#cc%=0:�#ccc%=0:rep1%=0:wt1%=0:rep2%=0:wt2%=0:rep3%=0:wt3%=0
��� 900:�#c%=0
��!� 901:�#c%=0:�#cc%=0:�#ccc%=0
��� 902:�#c%=st%
��.� 1000:�#c%=st%:pa%=ctable%:rep%=0:rep2%=0
��� 1100:�#c%=st%:rep%=0
�� 1200:�#c%=1600
�� 1300:�#c%=0
�"� 1301:�#c%=0:�#cc%=0:�#ccc%=0
�� 1400:�#c%=st%:vrep%=0
�&6� 1500:�#c%=st%(0):rowstogo%=striprows%:stripptr=0
�0�compression=5 �
�:F!firstcode=0:!oldcode=0:!codesize=setcodes%+1:!stack=stk%:!sp=stk%
�DH!maxcode=clearcode%+2:!maxcodesize=2*clearcode%:!curbit=0:!lastbit=0
�N�
�X� 1600:�#c%=st%
�b� 1700:�#c%=16
�l� 1800,1850:�#c%=st%
�v� 1900:�#c%=128:rep%=-1
�� 2000:�#c%=st%
�� 2100:�#c%=7
�� 2200:�#c%=st%
�� 2250:�#c%=st%
�� 2300:�#c%=st%:vrep%=0
�� 2400:�#c%=st%
�� 2500:�#c%=st%
��� 2600:�#c%=st%
��� 2700:�#c%=st%
��� 2800:�#c%=st%
��� 2900:�#c%=st%
��� 3000:�#c%=0
�� 3600:pcdblk%!4=0
�� 3700:jpegy%=sy%
��
�
�cache% �
� �flag=3600 �
�*Dpcdblk%!12=cacherows%:�refillpcd:�cache%>=filesize% rowstogo%=-1
�4�
�>F�cache%<filesize% ș12,4,c%,datacache%,cache%:rowstogo%=cacherows%
�H�
�Rbuff%=datacache%
�\;�cachebytes% !incacheptr=datacache%:!numlefttogo=cache%
�fC�input=24 �rbo%>=0 rb%=buff%+rbo%:gb%=buff%+gbo%:bb%=buff%+bbo%
�p�
�z2�flag=1500 �compression=5 rowstogo%=striprows%
��
�
00000000  0d 00 0a 11 f4 20 3e 20  43 68 61 6e 67 65 46 53  |..... > ChangeFS|
00000010  49 0d 00 8c 11 61 72 65  61 6e 75 6d 62 65 72 25  |I....areanumber%|
00000020  3d 30 0d 00 96 16 c8 99  22 4f 53 5f 47 65 74 45  |=0......"OS_GetE|
00000030  6e 76 22 20 b8 20 41 24  0d 00 a0 14 e7 a7 41 24  |nv" . A$......A$|
00000040  2c 22 20 2d 77 69 6d 70  22 29 20 8c 0d 00 aa 1e  |," -wimp") .....|
00000050  de 20 7a 25 28 31 29 2c  70 25 28 32 29 2c 73 25  |. z%(1),p%(2),s%|
00000060  28 33 29 2c 6d 24 28 32  32 29 0d 00 b4 22 41 25  |(3),m$(22)..."A%|
00000070  3d 8e 22 3c 43 68 61 6e  67 65 46 53 49 24 44 69  |=."<ChangeFSI$Di|
00000080  72 3e 2e 4d 65 73 73 61  67 65 73 22 0d 00 be 28  |r>.Messages"...(|
00000090  42 25 3d 2d 31 3a f5 20  42 25 2b 3d 31 3a 6d 24  |B%=-1:. B%+=1:m$|
000000a0  28 42 25 29 3d be 23 41  25 3a fd c5 23 41 25 3a  |(B%)=.#A%:..#A%:|
000000b0  d9 23 41 25 0d 00 c8 1f  73 74 61 72 74 66 69 6c  |.#A%....startfil|
000000c0  65 25 3d c2 41 24 2c 36  29 3c 3e 22 2d 77 69 6d  |e%=.A$,6)<>"-wim|
000000d0  70 20 22 0d 00 d2 1e de  20 74 61 73 6b 69 64 25  |p "..... taskid%|
000000e0  34 3a 24 74 61 73 6b 69  64 25 3d 22 54 41 53 4b  |4:$taskid%="TASK|
000000f0  22 0d 00 dc 37 c8 99 20  22 57 69 6d 70 5f 49 6e  |"...7.. "Wimp_In|
00000100  69 74 69 61 6c 69 73 65  22 2c 32 30 30 2c 21 74  |itialise",200,!t|
00000110  61 73 6b 69 64 25 2c 6d  24 28 32 30 29 20 b8 20  |askid%,m$(20) . |
00000120  76 65 72 73 69 6f 6e 25  0d 00 e6 1e 57 69 6d 70  |version%....Wimp|
00000130  20 20 20 20 3d 20 28 31  3c 3c 31 38 29 20 2b 20  |    = (1<<18) + |
00000140  28 33 3c 3c 36 29 0d 00  f0 25 43 72 65 61 74 65  |(3<<6)...%Create|
00000150  57 20 3d 20 57 69 6d 70  2b 31 3a 4f 70 65 6e 57  |W = Wimp+1:OpenW|
00000160  20 20 20 3d 20 57 69 6d  70 2b 35 0d 00 fa 25 43  |   = Wimp+5...%C|
00000170  6c 6f 73 65 57 20 20 3d  20 57 69 6d 70 2b 36 3a  |loseW  = Wimp+6:|
00000180  52 65 64 72 61 77 57 20  3d 20 57 69 6d 70 2b 38  |RedrawW = Wimp+8|
00000190  0d 01 04 26 55 70 64 61  74 65 57 20 3d 20 57 69  |...&UpdateW = Wi|
000001a0  6d 70 2b 39 3a 47 65 74  52 25 20 20 20 3d 20 57  |mp+9:GetR%   = W|
000001b0  69 6d 70 2b 31 30 0d 01  0e 26 47 65 74 57 20 20  |imp+10...&GetW  |
000001c0  20 20 3d 20 57 69 6d 70  2b 31 31 3a 53 65 74 49  |  = Wimp+11:SetI|
000001d0  20 20 20 3d 20 57 69 6d  70 2b 31 33 0d 01 18 26  |   = Wimp+13...&|
000001e0  47 65 74 49 20 20 20 20  3d 20 57 69 6d 70 2b 31  |GetI    = Wimp+1|
000001f0  34 3a 47 65 74 50 20 20  20 3d 20 57 69 6d 70 2b  |4:GetP   = Wimp+|
00000200  31 35 0d 01 22 26 44 72  61 67 20 20 20 20 3d 20  |15.."&Drag    = |
00000210  57 69 6d 70 2b 31 36 3a  43 72 4d 65 6e 75 20 3d  |Wimp+16:CrMenu =|
00000220  20 57 69 6d 70 2b 32 30  0d 01 2c 15 44 63 4d 65  | Wimp+20..,.DcMe|
00000230  6e 75 20 20 3d 20 57 69  6d 70 2b 32 31 0d 01 36  |nu  = Wimp+21..6|
00000240  38 c8 99 20 22 4f 53 5f  53 57 49 4e 75 6d 62 65  |8.. "OS_SWINumbe|
00000250  72 46 72 6f 6d 53 74 72  69 6e 67 22 2c 2c 22 57  |rFromString",,"W|
00000260  69 6d 70 5f 50 6f 6c 6c  49 64 6c 65 22 20 b8 20  |imp_PollIdle" . |
00000270  50 6f 6c 6c 25 0d 01 40  37 c8 99 20 22 4f 53 5f  |Poll%..@7.. "OS_|
00000280  53 57 49 4e 75 6d 62 65  72 46 72 6f 6d 53 74 72  |SWINumberFromStr|
00000290  69 6e 67 22 2c 2c 22 58  4f 53 5f 53 70 72 69 74  |ing",,"XOS_Sprit|
000002a0  65 4f 70 22 20 b8 20 73  70 6f 70 25 0d 01 4a 3f  |eOp" . spop%..J?|
000002b0  c8 99 20 22 4f 53 5f 53  57 49 4e 75 6d 62 65 72  |.. "OS_SWINumber|
000002c0  46 72 6f 6d 53 74 72 69  6e 67 22 2c 2c 22 4f 53  |FromString",,"OS|
000002d0  5f 52 65 61 64 4d 6f 6e  6f 74 6f 6e 69 63 54 69  |_ReadMonotonicTi|
000002e0  6d 65 22 20 b8 20 54 69  6d 65 25 0d 01 54 4a c8  |me" . Time%..TJ.|
000002f0  99 20 22 4f 53 5f 53 57  49 4e 75 6d 62 65 72 46  |. "OS_SWINumberF|
00000300  72 6f 6d 53 74 72 69 6e  67 22 2c 2c 22 43 6f 6c  |romString",,"Col|
00000310  6f 75 72 54 72 61 6e 73  5f 52 65 74 75 72 6e 43  |ourTrans_ReturnC|
00000320  6f 6c 6f 75 72 4e 75 6d  62 65 72 22 20 b8 20 63  |olourNumber" . c|
00000330  74 72 61 6e 25 0d 01 5e  53 c8 99 20 22 58 4f 53  |tran%..^S.. "XOS|
00000340  5f 53 57 49 4e 75 6d 62  65 72 46 72 6f 6d 53 74  |_SWINumberFromSt|
00000350  72 69 6e 67 22 2c 2c 22  44 72 61 67 41 53 70 72  |ring",,"DragASpr|
00000360  69 74 65 5f 53 74 61 72  74 22 20 b8 20 64 73 74  |ite_Start" . dst|
00000370  61 72 74 25 3b 66 25 3a  e7 66 25 80 20 31 20 64  |art%;f%:.f%. 1 d|
00000380  73 74 61 72 74 25 3d 30  0d 01 68 35 c8 99 20 22  |start%=0..h5.. "|
00000390  4f 53 5f 42 79 74 65 22  2c 31 36 31 2c 26 31 43  |OS_Byte",161,&1C|
000003a0  20 b8 20 2c 2c 66 25 3a  e7 28 66 25 20 80 20 32  | . ,,f%:.(f% . 2|
000003b0  29 3d 30 20 64 73 74 61  72 74 25 3d 30 0d 01 72  |)=0 dstart%=0..r|
000003c0  13 6e 65 78 74 6c 6f 63  61 74 69 6f 6e 25 3d 93  |.nextlocation%=.|
000003d0  0d 01 7c 2c c8 99 20 22  57 69 6d 70 5f 53 6c 6f  |..|,.. "Wimp_Slo|
000003e0  74 53 69 7a 65 22 2c 2d  31 2c 2d 31 20 b8 20 6f  |tSize",-1,-1 . o|
000003f0  72 69 67 69 6e 61 6c 73  6c 6f 74 25 0d 01 86 16  |riginalslot%....|
00000400  f2 6c 6f 63 61 6c 65 5f  69 6e 69 74 69 61 6c 69  |.locale_initiali|
00000410  73 65 0d 01 9a 15 e7 20  76 65 72 73 69 6f 6e 25  |se..... version%|
00000420  3e 3d 33 30 30 20 8c 0d  01 a4 59 de 20 71 25 20  |>=300 ....Y. q% |
00000430  32 35 35 2c 69 66 61 63  74 6f 72 73 25 20 31 35  |255,ifactors% 15|
00000440  2c 66 61 63 74 6f 72 73  25 20 31 35 2c 70 69 78  |,factors% 15,pix|
00000450  74 72 61 6e 73 25 20 32  35 35 2c 70 61 6c 74 65  |trans% 255,palte|
00000460  6d 70 25 20 31 30 32 33  2c 62 75 66 66 65 72 25  |mp% 1023,buffer%|
00000470  20 32 35 35 2c 69 64 61  74 61 25 20 31 30 32 33  | 255,idata% 1023|
00000480  0d 01 ae 05 cc 0d 01 b8  61 de 20 7a 25 20 31 32  |........a. z% 12|
00000490  32 33 2c 71 25 20 32 35  35 2c 69 66 61 63 74 6f  |23,q% 255,ifacto|
000004a0  72 73 25 20 31 35 2c 66  61 63 74 6f 72 73 25 20  |rs% 15,factors% |
000004b0  31 35 2c 70 69 78 74 72  61 6e 73 25 20 32 35 35  |15,pixtrans% 255|
000004c0  2c 70 61 6c 74 65 6d 70  25 20 31 30 32 33 2c 62  |,paltemp% 1023,b|
000004d0  75 66 66 65 72 25 20 32  35 35 2c 69 64 61 74 61  |uffer% 255,idata|
000004e0  25 20 32 35 39 39 0d 01  c2 05 cd 0d 01 d6 0c 73  |% 2599.........s|
000004f0  63 72 61 70 25 3d a3 0d  01 e0 21 e7 20 76 65 72  |crap%=....!. ver|
00000500  73 69 6f 6e 25 3c 33 30  30 20 73 69 64 61 74 61  |sion%<300 sidata|
00000510  25 3d 69 64 61 74 61 25  0d 01 ea 29 73 70 72 69  |%=idata%...)spri|
00000520  74 65 25 3d a3 3a 73 61  72 25 3d a3 3a 73 61 76  |te%=.:sar%=.:sav|
00000530  65 64 25 3d b9 3a 7a 24  3d c4 31 32 2c bd 31 33  |ed%=.:z$=.12,.13|
00000540  29 0d 01 fe 1f c8 99 20  22 4f 53 5f 42 79 74 65  |)...... "OS_Byte|
00000550  22 2c 31 36 31 2c 26 38  43 20 b8 20 2c 2c 66 25  |",161,&8C . ,,f%|
00000560  0d 02 08 0d e7 66 25 20  80 20 31 20 8c 0d 02 12  |.....f% . 1 ....|
00000570  37 c8 99 22 57 69 6d 70  5f 4f 70 65 6e 54 65 6d  |7.."Wimp_OpenTem|
00000580  70 6c 61 74 65 22 2c 2c  22 3c 43 68 61 6e 67 65  |plate",,"<Change|
00000590  46 53 49 24 44 69 72 3e  2e 33 64 54 65 6d 70 6c  |FSI$Dir>.3dTempl|
000005a0  61 74 65 22 0d 02 1c 05  cc 0d 02 26 36 c8 99 22  |ate".......&6.."|
000005b0  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
000005c0  65 22 2c 2c 22 3c 43 68  61 6e 67 65 46 53 49 24  |e",,"<ChangeFSI$|
000005d0  44 69 72 3e 2e 54 65 6d  70 6c 61 74 65 73 22 0d  |Dir>.Templates".|
000005e0  02 30 05 cd 0d 02 44 07  ea 20 85 0d 02 4e 36 ee  |.0....D.. ...N6.|
000005f0  20 85 20 c8 99 22 57 69  6d 70 5f 43 6c 6f 73 65  | . .."Wimp_Close|
00000600  54 65 6d 70 6c 61 74 65  22 3a 85 20 30 2c f6 24  |Template":. 0,.$|
00000610  2b 22 20 28 63 6f 64 65  20 22 2b c3 9e 2b 22 29  |+" (code "+..+")|
00000620  22 0d 02 62 14 e7 76 65  72 73 69 6f 6e 25 3e 3d  |"..b..version%>=|
00000630  33 30 30 20 8c 0d 02 6c  18 de 20 7a 25 20 a4 6c  |300 ...l.. z% .l|
00000640  61 72 67 65 73 74 5f 62  75 66 66 65 72 0d 02 76  |argest_buffer..v|
00000650  23 69 6e 64 73 69 7a 65  25 3d a4 73 69 7a 65 5f  |#indsize%=.size_|
00000660  69 6e 64 69 72 65 63 74  28 22 49 6e 66 6f 22 29  |indirect("Info")|
00000670  0d 02 80 19 de 20 69 6e  66 6f 5f 77 69 6e 64 25  |..... info_wind%|
00000680  20 69 6e 64 73 69 7a 65  25 0d 02 8a 4b c8 99 22  | indsize%...K.."|
00000690  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
000006a0  65 22 2c 2c 7a 25 2c 69  6e 66 6f 5f 77 69 6e 64  |e",,z%,info_wind|
000006b0  25 2c 69 6e 66 6f 5f 77  69 6e 64 25 2b 69 6e 64  |%,info_wind%+ind|
000006c0  73 69 7a 65 25 2c 2d 31  2c 22 49 6e 66 6f 22 2b  |size%,-1,"Info"+|
000006d0  7a 24 2c 30 0d 02 94 05  cc 0d 02 9e 4b c8 99 22  |z$,0........K.."|
000006e0  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
000006f0  65 22 2c 2c 7a 25 2c 69  64 61 74 61 25 2c 73 69  |e",,z%,idata%,si|
00000700  64 61 74 61 25 2b 32 36  30 30 2c 2d 31 2c 22 49  |data%+2600,-1,"I|
00000710  6e 66 6f 22 2b 7a 24 2c  30 20 b8 20 2c 2c 69 64  |nfo"+z$,0 . ,,id|
00000720  61 74 61 25 0d 02 a8 05  cd 0d 02 b2 34 c8 99 20  |ata%........4.. |
00000730  43 72 65 61 74 65 57 2c  2c 7a 25 20 b8 20 69 6e  |CreateW,,z% . in|
00000740  66 6f 77 25 3a 24 21 28  7a 25 2b 38 38 2b 37 2a  |fow%:$!(z%+88+7*|
00000750  33 32 2b 32 30 29 3d 6d  24 28 32 31 29 0d 02 c6  |32+20)=m$(21)...|
00000760  14 e7 76 65 72 73 69 6f  6e 25 3e 3d 33 30 30 20  |..version%>=300 |
00000770  8c 0d 02 d0 29 69 6e 64  73 69 7a 65 25 3d a4 73  |....)indsize%=.s|
00000780  69 7a 65 5f 69 6e 64 69  72 65 63 74 28 22 50 72  |ize_indirect("Pr|
00000790  6f 63 65 73 73 69 6e 67  22 29 0d 02 da 19 de 20  |ocessing")..... |
000007a0  70 72 6f 63 5f 77 69 6e  64 25 20 69 6e 64 73 69  |proc_wind% indsi|
000007b0  7a 65 25 0d 02 e4 4e c8  99 22 57 69 6d 70 5f 4c  |ze%...N.."Wimp_L|
000007c0  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 2c 7a 25  |oadTemplate",,z%|
000007d0  2c 70 72 6f 63 5f 77 69  6e 64 25 2c 70 72 6f 63  |,proc_wind%,proc|
000007e0  5f 77 69 6e 64 25 2b 69  6e 64 73 69 7a 65 25 2c  |_wind%+indsize%,|
000007f0  2d 31 2c 22 50 72 6f 63  65 73 73 69 6e 67 22 2c  |-1,"Processing",|
00000800  30 0d 02 ee 05 cc 0d 02  f8 4e c8 99 22 57 69 6d  |0........N.."Wim|
00000810  70 5f 4c 6f 61 64 54 65  6d 70 6c 61 74 65 22 2c  |p_LoadTemplate",|
00000820  2c 7a 25 2c 69 64 61 74  61 25 2c 73 69 64 61 74  |,z%,idata%,sidat|
00000830  61 25 2b 32 36 30 30 2c  2d 31 2c 22 50 72 6f 63  |a%+2600,-1,"Proc|
00000840  65 73 73 69 6e 67 22 2c  30 20 b8 20 2c 2c 69 64  |essing",0 . ,,id|
00000850  61 74 61 25 0d 03 02 05  cd 0d 03 0c 1a c8 99 20  |ata%........... |
00000860  43 72 65 61 74 65 57 2c  2c 7a 25 20 b8 20 70 72  |CreateW,,z% . pr|
00000870  6f 63 25 0d 03 16 49 70  25 28 30 29 3d 21 28 7a  |oc%...Ip%(0)=!(z|
00000880  25 2b 38 38 2b 38 2a 33  32 2b 32 30 29 3a 70 25  |%+88+8*32+20):p%|
00000890  28 31 29 3d 21 28 7a 25  2b 38 38 2b 39 2a 33 32  |(1)=!(z%+88+9*32|
000008a0  2b 32 30 29 3a 70 25 28  32 29 3d 21 28 7a 25 2b  |+20):p%(2)=!(z%+|
000008b0  38 38 2b 31 30 2a 33 32  2b 32 30 29 0d 03 2a 14  |88+10*32+20)..*.|
000008c0  e7 76 65 72 73 69 6f 6e  25 3e 3d 33 30 30 20 8c  |.version%>=300 .|
000008d0  0d 03 34 25 69 6e 64 73  69 7a 65 25 3d a4 73 69  |..4%indsize%=.si|
000008e0  7a 65 5f 69 6e 64 69 72  65 63 74 28 22 4f 75 74  |ze_indirect("Out|
000008f0  70 75 74 22 29 0d 03 3e  19 de 20 6f 75 74 70 5f  |put")..>.. outp_|
00000900  77 69 6e 64 25 20 69 6e  64 73 69 7a 65 25 0d 03  |wind% indsize%..|
00000910  48 4d c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |HM.."Wimp_LoadTe|
00000920  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 6f 75 74 70  |mplate",,z%,outp|
00000930  5f 77 69 6e 64 25 2c 6f  75 74 70 5f 77 69 6e 64  |_wind%,outp_wind|
00000940  25 2b 69 6e 64 73 69 7a  65 25 2c 2d 31 2c 22 4f  |%+indsize%,-1,"O|
00000950  75 74 70 75 74 22 2b 7a  24 2c 30 0d 03 52 05 cc  |utput"+z$,0..R..|
00000960  0d 03 5c 4d c8 99 22 57  69 6d 70 5f 4c 6f 61 64  |..\M.."Wimp_Load|
00000970  54 65 6d 70 6c 61 74 65  22 2c 2c 7a 25 2c 69 64  |Template",,z%,id|
00000980  61 74 61 25 2c 73 69 64  61 74 61 25 2b 32 36 30  |ata%,sidata%+260|
00000990  30 2c 2d 31 2c 22 4f 75  74 70 75 74 22 2b 7a 24  |0,-1,"Output"+z$|
000009a0  2c 30 20 b8 20 2c 2c 69  64 61 74 61 25 0d 03 66  |,0 . ,,idata%..f|
000009b0  05 cd 0d 03 70 50 c8 99  20 43 72 65 61 74 65 57  |....pP.. CreateW|
000009c0  2c 2c 7a 25 20 b8 20 6f  75 74 70 75 74 25 3a 61  |,,z% . output%:a|
000009d0  64 6d 6f 64 65 25 3d 21  28 7a 25 2b 38 38 2b 31  |dmode%=!(z%+88+1|
000009e0  37 2a 33 32 2b 32 30 29  3a 61 64 73 70 63 6c 25  |7*32+20):adspcl%|
000009f0  3d 21 28 7a 25 2b 38 38  2b 31 36 2a 33 32 2b 32  |=!(z%+88+16*32+2|
00000a00  30 29 0d 03 84 14 e7 76  65 72 73 69 6f 6e 25 3e  |0).....version%>|
00000a10  3d 33 30 30 20 8c 0d 03  8e 26 69 6e 64 73 69 7a  |=300 ....&indsiz|
00000a20  65 25 3d a4 73 69 7a 65  5f 69 6e 64 69 72 65 63  |e%=.size_indirec|
00000a30  74 28 22 53 63 61 6c 69  6e 67 22 29 0d 03 98 19  |t("Scaling")....|
00000a40  de 20 73 63 61 6c 5f 77  69 6e 64 25 20 69 6e 64  |. scal_wind% ind|
00000a50  73 69 7a 65 25 0d 03 a2  4e c8 99 22 57 69 6d 70  |size%...N.."Wimp|
00000a60  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 22 2c 2c  |_LoadTemplate",,|
00000a70  7a 25 2c 73 63 61 6c 5f  77 69 6e 64 25 2c 73 63  |z%,scal_wind%,sc|
00000a80  61 6c 5f 77 69 6e 64 25  2b 69 6e 64 73 69 7a 65  |al_wind%+indsize|
00000a90  25 2c 2d 31 2c 22 53 63  61 6c 69 6e 67 22 2b 7a  |%,-1,"Scaling"+z|
00000aa0  24 2c 30 0d 03 ac 05 cc  0d 03 b6 4e c8 99 22 57  |$,0........N.."W|
00000ab0  69 6d 70 5f 4c 6f 61 64  54 65 6d 70 6c 61 74 65  |imp_LoadTemplate|
00000ac0  22 2c 2c 7a 25 2c 69 64  61 74 61 25 2c 73 69 64  |",,z%,idata%,sid|
00000ad0  61 74 61 25 2b 32 36 30  30 2c 2d 31 2c 22 53 63  |ata%+2600,-1,"Sc|
00000ae0  61 6c 69 6e 67 22 2b 7a  24 2c 30 20 b8 20 2c 2c  |aling"+z$,0 . ,,|
00000af0  69 64 61 74 61 25 0d 03  c0 05 cd 0d 03 ca 36 c8  |idata%........6.|
00000b00  99 20 43 72 65 61 74 65  57 2c 2c 7a 25 20 b8 20  |. CreateW,,z% . |
00000b10  73 63 61 6c 65 77 25 3a  61 64 73 63 61 6c 65 25  |scalew%:adscale%|
00000b20  3d 21 28 7a 25 2b 38 38  2b 31 2a 33 32 2b 32 30  |=!(z%+88+1*32+20|
00000b30  29 0d 03 d4 33 73 25 28  30 29 3d 21 28 7a 25 2b  |)...3s%(0)=!(z%+|
00000b40  38 38 2b 31 30 2a 33 32  2b 32 30 29 3a 73 25 28  |88+10*32+20):s%(|
00000b50  31 29 3d 21 28 7a 25 2b  38 38 2b 31 31 2a 33 32  |1)=!(z%+88+11*32|
00000b60  2b 32 30 29 0d 03 de 33  73 25 28 32 29 3d 21 28  |+20)...3s%(2)=!(|
00000b70  7a 25 2b 38 38 2b 31 32  2a 33 32 2b 32 30 29 3a  |z%+88+12*32+20):|
00000b80  73 25 28 33 29 3d 21 28  7a 25 2b 38 38 2b 31 33  |s%(3)=!(z%+88+13|
00000b90  2a 33 32 2b 32 30 29 0d  03 f2 14 e7 76 65 72 73  |*32+20).....vers|
00000ba0  69 6f 6e 25 3e 3d 33 30  30 20 8c 0d 03 fc 23 69  |ion%>=300 ....#i|
00000bb0  6e 64 73 69 7a 65 25 3d  a4 73 69 7a 65 5f 69 6e  |ndsize%=.size_in|
00000bc0  64 69 72 65 63 74 28 22  53 61 76 65 22 29 0d 04  |direct("Save")..|
00000bd0  06 19 de 20 73 61 76 65  5f 77 69 6e 64 25 20 69  |... save_wind% i|
00000be0  6e 64 73 69 7a 65 25 0d  04 10 4b c8 99 22 57 69  |ndsize%...K.."Wi|
00000bf0  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
00000c00  2c 2c 7a 25 2c 73 61 76  65 5f 77 69 6e 64 25 2c  |,,z%,save_wind%,|
00000c10  73 61 76 65 5f 77 69 6e  64 25 2b 69 6e 64 73 69  |save_wind%+indsi|
00000c20  7a 65 25 2c 2d 31 2c 22  53 61 76 65 22 2b 7a 24  |ze%,-1,"Save"+z$|
00000c30  2c 30 0d 04 1a 05 cc 0d  04 24 4b c8 99 22 57 69  |,0.......$K.."Wi|
00000c40  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
00000c50  2c 2c 7a 25 2c 69 64 61  74 61 25 2c 73 69 64 61  |,,z%,idata%,sida|
00000c60  74 61 25 2b 32 36 30 30  2c 2d 31 2c 22 53 61 76  |ta%+2600,-1,"Sav|
00000c70  65 22 2b 7a 24 2c 30 20  b8 20 2c 2c 69 64 61 74  |e"+z$,0 . ,,idat|
00000c80  61 25 0d 04 2e 05 cd 0d  04 38 33 c8 99 20 43 72  |a%.......83.. Cr|
00000c90  65 61 74 65 57 2c 2c 7a  25 20 b8 20 73 61 76 65  |eateW,,z% . save|
00000ca0  25 3a 61 64 73 61 76 65  25 3d 21 28 7a 25 2b 38  |%:adsave%=!(z%+8|
00000cb0  38 2b 31 2a 33 32 2b 32  30 29 0d 04 4c 14 e7 76  |8+1*32+20)..L..v|
00000cc0  65 72 73 69 6f 6e 25 3e  3d 33 30 30 20 8c 0d 04  |ersion%>=300 ...|
00000cd0  56 25 69 6e 64 73 69 7a  65 25 3d a4 73 69 7a 65  |V%indsize%=.size|
00000ce0  5f 69 6e 64 69 72 65 63  74 28 22 53 70 72 69 74  |_indirect("Sprit|
00000cf0  65 22 29 0d 04 60 19 de  20 73 70 72 74 5f 77 69  |e")..`.. sprt_wi|
00000d00  6e 64 25 20 69 6e 64 73  69 7a 65 25 0d 04 6a 4d  |nd% indsize%..jM|
00000d10  c8 99 22 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |.."Wimp_LoadTemp|
00000d20  6c 61 74 65 22 2c 2c 7a  25 2c 73 70 72 74 5f 77  |late",,z%,sprt_w|
00000d30  69 6e 64 25 2c 73 70 72  74 5f 77 69 6e 64 25 2b  |ind%,sprt_wind%+|
00000d40  69 6e 64 73 69 7a 65 25  2c 2d 31 2c 22 53 70 72  |indsize%,-1,"Spr|
00000d50  69 74 65 22 2b 7a 24 2c  30 0d 04 74 05 cc 0d 04  |ite"+z$,0..t....|
00000d60  7e 4d c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |~M.."Wimp_LoadTe|
00000d70  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 69 64 61 74  |mplate",,z%,idat|
00000d80  61 25 2c 73 69 64 61 74  61 25 2b 32 36 30 30 2c  |a%,sidata%+2600,|
00000d90  2d 31 2c 22 53 70 72 69  74 65 22 2b 7a 24 2c 30  |-1,"Sprite"+z$,0|
00000da0  20 b8 20 2c 2c 69 64 61  74 61 25 0d 04 88 05 cd  | . ,,idata%.....|
00000db0  0d 04 92 50 c8 99 20 43  72 65 61 74 65 57 2c 2c  |...P.. CreateW,,|
00000dc0  7a 25 20 b8 20 73 69 6e  66 6f 25 3a 61 64 73 6e  |z% . sinfo%:adsn|
00000dd0  61 6d 65 25 3d 21 28 7a  25 2b 38 38 2b 35 2a 33  |ame%=!(z%+88+5*3|
00000de0  32 2b 32 30 29 3a 61 64  73 62 79 74 65 73 25 3d  |2+20):adsbytes%=|
00000df0  21 28 7a 25 2b 38 38 2b  38 2a 33 32 2b 32 30 29  |!(z%+88+8*32+20)|
00000e00  0d 04 9c 48 61 64 73 78  25 3d 21 28 7a 25 2b 38  |...Hadsx%=!(z%+8|
00000e10  38 2b 37 2a 33 32 2b 32  30 29 3a 61 64 73 79 25  |8+7*32+20):adsy%|
00000e20  3d 21 28 7a 25 2b 38 38  2b 39 2a 33 32 2b 32 30  |=!(z%+88+9*32+20|
00000e30  29 3a 61 64 73 6d 25 3d  21 28 7a 25 2b 38 38 2b  |):adsm%=!(z%+88+|
00000e40  36 2a 33 32 2b 32 30 29  0d 04 b0 14 e7 76 65 72  |6*32+20).....ver|
00000e50  73 69 6f 6e 25 3e 3d 33  30 30 20 8c 0d 04 ba 25  |sion%>=300 ....%|
00000e60  69 6e 64 73 69 7a 65 25  3d a4 73 69 7a 65 5f 69  |indsize%=.size_i|
00000e70  6e 64 69 72 65 63 74 28  22 53 6f 75 72 63 65 22  |ndirect("Source"|
00000e80  29 0d 04 c4 18 de 20 73  72 63 5f 77 69 6e 64 25  |)..... src_wind%|
00000e90  20 69 6e 64 73 69 7a 65  25 0d 04 ce 4b c8 99 22  | indsize%...K.."|
00000ea0  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00000eb0  65 22 2c 2c 7a 25 2c 73  72 63 5f 77 69 6e 64 25  |e",,z%,src_wind%|
00000ec0  2c 73 72 63 5f 77 69 6e  64 25 2b 69 6e 64 73 69  |,src_wind%+indsi|
00000ed0  7a 65 25 2c 2d 31 2c 22  53 6f 75 72 63 65 22 2b  |ze%,-1,"Source"+|
00000ee0  7a 24 2c 30 0d 04 d8 05  cc 0d 04 e2 4d c8 99 22  |z$,0........M.."|
00000ef0  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00000f00  65 22 2c 2c 7a 25 2c 69  64 61 74 61 25 2c 73 69  |e",,z%,idata%,si|
00000f10  64 61 74 61 25 2b 32 36  30 30 2c 2d 31 2c 22 53  |data%+2600,-1,"S|
00000f20  6f 75 72 63 65 22 2b 7a  24 2c 30 20 b8 20 2c 2c  |ource"+z$,0 . ,,|
00000f30  69 64 61 74 61 25 0d 04  ec 05 cd 0d 04 f6 35 c8  |idata%........5.|
00000f40  99 20 43 72 65 61 74 65  57 2c 2c 7a 25 20 b8 20  |. CreateW,,z% . |
00000f50  73 72 63 69 6e 66 6f 25  3a 61 64 73 72 63 25 3d  |srcinfo%:adsrc%=|
00000f60  21 28 7a 25 2b 38 38 2b  30 2a 33 32 2b 32 30 29  |!(z%+88+0*32+20)|
00000f70  0d 05 0a 14 e7 76 65 72  73 69 6f 6e 25 3e 3d 33  |.....version%>=3|
00000f80  30 30 20 8c 0d 05 14 24  69 6e 64 73 69 7a 65 25  |00 ....$indsize%|
00000f90  3d a4 73 69 7a 65 5f 69  6e 64 69 72 65 63 74 28  |=.size_indirect(|
00000fa0  22 52 61 6e 67 65 22 29  0d 05 1e 1a de 20 72 61  |"Range")..... ra|
00000fb0  6e 67 65 5f 77 69 6e 64  25 20 69 6e 64 73 69 7a  |nge_wind% indsiz|
00000fc0  65 25 0d 05 28 4e c8 99  22 57 69 6d 70 5f 4c 6f  |e%..(N.."Wimp_Lo|
00000fd0  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 7a 25 2c  |adTemplate",,z%,|
00000fe0  72 61 6e 67 65 5f 77 69  6e 64 25 2c 72 61 6e 67  |range_wind%,rang|
00000ff0  65 5f 77 69 6e 64 25 2b  69 6e 64 73 69 7a 65 25  |e_wind%+indsize%|
00001000  2c 2d 31 2c 22 52 61 6e  67 65 22 2b 7a 24 2c 30  |,-1,"Range"+z$,0|
00001010  0d 05 32 05 cc 0d 05 3c  4c c8 99 22 57 69 6d 70  |..2....<L.."Wimp|
00001020  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 22 2c 2c  |_LoadTemplate",,|
00001030  7a 25 2c 69 64 61 74 61  25 2c 73 69 64 61 74 61  |z%,idata%,sidata|
00001040  25 2b 32 36 30 30 2c 2d  31 2c 22 52 61 6e 67 65  |%+2600,-1,"Range|
00001050  22 2b 7a 24 2c 30 20 b8  20 2c 2c 69 64 61 74 61  |"+z$,0 . ,,idata|
00001060  25 0d 05 46 05 cd 0d 05  50 35 c8 99 20 43 72 65  |%..F....P5.. Cre|
00001070  61 74 65 57 2c 2c 7a 25  20 b8 20 72 61 6e 69 6e  |ateW,,z% . ranin|
00001080  66 6f 25 3a 61 64 72 61  6e 25 3d 21 28 7a 25 2b  |fo%:adran%=!(z%+|
00001090  38 38 2b 30 2a 33 32 2b  32 30 29 0d 05 64 14 e7  |88+0*32+20)..d..|
000010a0  76 65 72 73 69 6f 6e 25  3e 3d 33 30 30 20 8c 0d  |version%>=300 ..|
000010b0  05 6e 23 69 6e 64 73 69  7a 65 25 3d a4 73 69 7a  |.n#indsize%=.siz|
000010c0  65 5f 69 6e 64 69 72 65  63 74 28 22 5a 6f 6f 6d  |e_indirect("Zoom|
000010d0  22 29 0d 05 78 19 de 20  7a 6f 6f 6d 5f 77 69 6e  |")..x.. zoom_win|
000010e0  64 25 20 69 6e 64 73 69  7a 65 25 0d 05 82 4b c8  |d% indsize%...K.|
000010f0  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
00001100  61 74 65 22 2c 2c 7a 25  2c 7a 6f 6f 6d 5f 77 69  |ate",,z%,zoom_wi|
00001110  6e 64 25 2c 7a 6f 6f 6d  5f 77 69 6e 64 25 2b 69  |nd%,zoom_wind%+i|
00001120  6e 64 73 69 7a 65 25 2c  2d 31 2c 22 5a 6f 6f 6d  |ndsize%,-1,"Zoom|
00001130  22 2b 7a 24 2c 30 0d 05  8c 05 cc 0d 05 96 4b c8  |"+z$,0........K.|
00001140  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
00001150  61 74 65 22 2c 2c 7a 25  2c 69 64 61 74 61 25 2c  |ate",,z%,idata%,|
00001160  73 69 64 61 74 61 25 2b  32 36 30 30 2c 2d 31 2c  |sidata%+2600,-1,|
00001170  22 5a 6f 6f 6d 22 2b 7a  24 2c 30 20 b8 20 2c 2c  |"Zoom"+z$,0 . ,,|
00001180  69 64 61 74 61 25 0d 05  a0 05 cd 0d 05 aa 48 c8  |idata%........H.|
00001190  99 20 43 72 65 61 74 65  57 2c 2c 7a 25 20 b8 20  |. CreateW,,z% . |
000011a0  7a 6f 6f 6d 25 3a 7a 25  28 30 29 3d 21 28 7a 25  |zoom%:z%(0)=!(z%|
000011b0  2b 38 38 2b 34 2a 33 32  2b 32 30 29 3a 7a 25 28  |+88+4*32+20):z%(|
000011c0  31 29 3d 21 28 7a 25 2b  38 38 2b 35 2a 33 32 2b  |1)=!(z%+88+5*32+|
000011d0  32 30 29 0d 05 be 14 e7  76 65 72 73 69 6f 6e 25  |20).....version%|
000011e0  3e 3d 33 30 30 20 8c 0d  05 c8 22 69 6e 64 73 69  |>=300 ...."indsi|
000011f0  7a 65 25 3d a4 73 69 7a  65 5f 69 6e 64 69 72 65  |ze%=.size_indire|
00001200  63 74 28 22 50 69 63 22  29 0d 05 d2 18 de 20 70  |ct("Pic")..... p|
00001210  69 63 5f 77 69 6e 64 25  20 69 6e 64 73 69 7a 65  |ic_wind% indsize|
00001220  25 0d 05 dc 48 c8 99 22  57 69 6d 70 5f 4c 6f 61  |%...H.."Wimp_Loa|
00001230  64 54 65 6d 70 6c 61 74  65 22 2c 2c 7a 25 2c 70  |dTemplate",,z%,p|
00001240  69 63 5f 77 69 6e 64 25  2c 70 69 63 5f 77 69 6e  |ic_wind%,pic_win|
00001250  64 25 2b 69 6e 64 73 69  7a 65 25 2c 2d 31 2c 22  |d%+indsize%,-1,"|
00001260  50 69 63 22 2b 7a 24 2c  30 0d 05 e6 05 cc 0d 05  |Pic"+z$,0.......|
00001270  f0 3f c8 99 22 57 69 6d  70 5f 4c 6f 61 64 54 65  |.?.."Wimp_LoadTe|
00001280  6d 70 6c 61 74 65 22 2c  2c 7a 25 2c 69 64 61 74  |mplate",,z%,idat|
00001290  61 25 2c 73 69 64 61 74  61 25 2b 32 36 30 30 2c  |a%,sidata%+2600,|
000012a0  2d 31 2c 22 50 69 63 22  2b 7a 24 2c 30 0d 05 fa  |-1,"Pic"+z$,0...|
000012b0  05 cd 0d 06 04 28 c8 99  20 43 72 65 61 74 65 57  |.....(.. CreateW|
000012c0  2c 2c 7a 25 20 b8 20 70  69 63 25 3a 61 64 74 69  |,,z% . pic%:adti|
000012d0  74 6c 65 25 3d 7a 25 21  37 32 0d 06 18 07 f7 20  |tle%=z%!72..... |
000012e0  85 0d 06 22 1a c8 99 22  57 69 6d 70 5f 43 6c 6f  |..."..."Wimp_Clo|
000012f0  73 65 54 65 6d 70 6c 61  74 65 22 0d 06 2c 40 21  |seTemplate"..,@!|
00001300  71 25 3d 2d 31 3a 71 25  21 34 3d 30 3a 71 25 21  |q%=-1:q%!4=0:q%!|
00001310  38 3d 30 3a 71 25 21 31  32 3d 36 38 3a 71 25 21  |8=0:q%!12=68:q%!|
00001320  31 36 3d 36 38 3a 71 25  21 32 30 3d 25 31 31 30  |16=68:q%!20=%110|
00001330  30 30 30 30 30 30 30 30  30 31 30 0d 06 36 3a 24  |00000000010..6:$|
00001340  28 71 25 2b 32 34 29 3d  22 21 22 2b 6d 24 28 32  |(q%+24)="!"+m$(2|
00001350  30 29 3a c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |0):.."Wimp_Creat|
00001360  65 49 63 6f 6e 22 2c 2c  71 25 20 b8 20 69 63 6f  |eIcon",,q% . ico|
00001370  6e 62 61 72 25 0d 06 40  29 41 25 3d 8e 22 3c 43  |nbar%..@)A%=."<C|
00001380  68 61 6e 67 65 46 53 49  24 44 69 72 3e 2e 43 68  |hangeFSI$Dir>.Ch|
00001390  6f 69 63 65 73 22 3a e7  41 25 3d 30 20 8c 0d 06  |oices":.A%=0 ...|
000013a0  4a 44 66 61 73 74 25 3d  a3 3a 73 74 61 74 65 73  |JDfast%=.:states|
000013b0  63 61 6c 65 25 3d 25 31  30 30 30 30 30 30 30 31  |cale%=%100000001|
000013c0  30 30 3a 73 74 61 74 65  70 72 6f 63 25 3d 30 3a  |00:stateproc%=0:|
000013d0  73 74 61 74 65 6f 75 74  70 75 74 25 3d 26 61 30  |stateoutput%=&a0|
000013e0  30 38 0d 06 54 43 24 70  25 28 30 29 3d 22 22 3a  |08..TC$p%(0)="":|
000013f0  24 70 25 28 31 29 3d 22  32 22 2b 64 65 63 69 6d  |$p%(1)="2"+decim|
00001400  61 6c 5f 70 6f 69 6e 74  24 2b 22 32 22 3a 24 70  |al_point$+"2":$p|
00001410  25 28 32 29 3d 22 32 34  22 3a 24 61 64 73 70 63  |%(2)="24":$adspc|
00001420  6c 25 3d 22 22 0d 06 5e  3d 24 61 64 6d 6f 64 65  |l%=""..^=$admode|
00001430  25 3d 22 32 38 22 3a 24  73 25 28 30 29 3d 22 31  |%="28":$s%(0)="1|
00001440  22 3a 24 73 25 28 31 29  3d 22 34 22 3a 24 73 25  |":$s%(1)="4":$s%|
00001450  28 32 29 3d 22 31 22 3a  24 73 25 28 33 29 3d 22  |(2)="1":$s%(3)="|
00001460  34 22 0d 06 68 05 cc 0d  06 72 32 e8 23 41 25 2c  |4"..h....r2.#A%,|
00001470  66 61 73 74 25 2c 73 74  61 74 65 73 63 61 6c 65  |fast%,statescale|
00001480  25 2c 73 74 61 74 65 70  72 6f 63 25 2c 73 74 61  |%,stateproc%,sta|
00001490  74 65 6f 75 74 70 75 74  25 0d 06 7c 2f e8 23 41  |teoutput%..|/.#A|
000014a0  25 2c 24 70 25 28 30 29  2c 24 70 25 28 31 29 2c  |%,$p%(0),$p%(1),|
000014b0  24 70 25 28 32 29 2c 24  61 64 6d 6f 64 65 25 2c  |$p%(2),$admode%,|
000014c0  24 61 64 73 70 63 6c 25  0d 06 86 35 24 70 25 28  |$adspcl%...5$p%(|
000014d0  31 29 3d a4 6c 6f 63 61  6c 65 5f 63 6f 6e 76 65  |1)=.locale_conve|
000014e0  72 74 28 24 70 25 28 31  29 2c 22 2e 22 2c 64 65  |rt($p%(1),".",de|
000014f0  63 69 6d 61 6c 5f 70 6f  69 6e 74 24 29 0d 06 90  |cimal_point$)...|
00001500  24 e8 23 41 25 2c 24 73  25 28 30 29 2c 24 73 25  |$.#A%,$s%(0),$s%|
00001510  28 31 29 2c 24 73 25 28  32 29 2c 24 73 25 28 33  |(1),$s%(2),$s%(3|
00001520  29 0d 06 9a 08 d9 23 41  25 0d 06 a4 05 cd 0d 06  |).....#A%.......|
00001530  ae 0f 71 25 21 31 32 3d  31 3c 3c 32 31 0d 06 b8  |..q%!12=1<<21...|
00001540  3d 21 71 25 3d 73 63 61  6c 65 77 25 3a e3 49 25  |=!q%=scalew%:.I%|
00001550  3d 30 b8 39 3a e7 73 74  61 74 65 73 63 61 6c 65  |=0.9:.statescale|
00001560  25 3e 3e 49 25 80 31 20  71 25 21 38 3d 31 3c 3c  |%>>I%.1 q%!8=1<<|
00001570  32 31 20 8b 71 25 21 38  3d 30 0d 06 c2 19 71 25  |21 .q%!8=0....q%|
00001580  21 34 3d 49 25 3a c8 99  20 53 65 74 49 2c 2c 71  |!4=I%:.. SetI,,q|
00001590  25 3a ed 0d 06 cc 33 e3  49 25 3d 31 30 b8 31 33  |%:....3.I%=10.13|
000015a0  3a e7 73 74 61 74 65 73  63 61 6c 65 25 3e 3e 49  |:.statescale%>>I|
000015b0  25 80 31 20 71 25 21 38  3d 31 3c 3c 32 31 20 8b  |%.1 q%!8=1<<21 .|
000015c0  71 25 21 38 3d 30 0d 06  d6 1b 71 25 21 34 3d 49  |q%!8=0....q%!4=I|
000015d0  25 2b 36 3a c8 99 20 53  65 74 49 2c 2c 71 25 3a  |%+6:.. SetI,,q%:|
000015e0  ed 0d 06 e0 3a 21 71 25  3d 70 72 6f 63 25 3a e3  |....:!q%=proc%:.|
000015f0  49 25 3d 30 b8 37 3a e7  73 74 61 74 65 70 72 6f  |I%=0.7:.statepro|
00001600  63 25 3e 3e 49 25 80 31  20 71 25 21 38 3d 31 3c  |c%>>I%.1 q%!8=1<|
00001610  3c 32 31 20 8b 71 25 21  38 3d 30 0d 06 ea 19 71  |<21 .q%!8=0....q|
00001620  25 21 34 3d 49 25 3a c8  99 20 53 65 74 49 2c 2c  |%!4=I%:.. SetI,,|
00001630  71 25 3a ed 0d 06 f4 3f  21 71 25 3d 6f 75 74 70  |q%:....?!q%=outp|
00001640  75 74 25 3a e3 49 25 3d  30 b8 31 35 3a e7 73 74  |ut%:.I%=0.15:.st|
00001650  61 74 65 6f 75 74 70 75  74 25 3e 3e 49 25 80 31  |ateoutput%>>I%.1|
00001660  20 71 25 21 38 3d 31 3c  3c 32 31 20 8b 71 25 21  | q%!8=1<<21 .q%!|
00001670  38 3d 30 0d 06 fe 19 71  25 21 34 3d 49 25 3a c8  |8=0....q%!4=I%:.|
00001680  99 20 53 65 74 49 2c 2c  71 25 3a ed 0d 07 08 29  |. SetI,,q%:....)|
00001690  f2 73 68 6f 77 73 63 61  6c 65 74 6f 66 69 74 3a  |.showscaletofit:|
000016a0  24 7a 25 28 30 29 3d 22  31 22 3a 24 7a 25 28 31  |$z%(0)="1":$z%(1|
000016b0  29 3d 22 31 22 0d 07 12  20 c8 99 20 22 4f 53 5f  |)="1"... .. "OS_|
000016c0  55 70 64 61 74 65 4d 45  4d 43 22 20 b8 20 6f 6c  |UpdateMEMC" . ol|
000016d0  64 6d 65 6d 63 0d 07 26  3f ee 20 85 20 c8 99 22  |dmemc..&?. . .."|
000016e0  4f 53 5f 55 70 64 61 74  65 4d 45 4d 43 22 2c 6f  |OS_UpdateMEMC",o|
000016f0  6c 64 6d 65 6d 63 2c 26  37 30 30 3a f2 65 72 72  |ldmemc,&700:.err|
00001700  6f 72 62 6f 78 3a c8 99  20 43 72 4d 65 6e 75 2c  |orbox:.. CrMenu,|
00001710  2c 2d 31 20 0d 07 30 0f  c8 99 20 44 72 61 67 2c  |,-1 ..0... Drag,|
00001720  2c 2d 31 0d 07 3a 31 e7  ac 73 70 72 69 74 65 25  |,-1..:1..sprite%|
00001730  20 c8 99 20 22 57 69 6d  70 5f 53 6c 6f 74 53 69  | .. "Wimp_SlotSi|
00001740  7a 65 22 2c 6f 72 69 67  69 6e 61 6c 73 6c 6f 74  |ze",originalslot|
00001750  25 2c 2d 31 0d 07 44 42  46 24 3d 22 22 3a e7 73  |%,-1..DBF$="":.s|
00001760  74 61 72 74 66 69 6c 65  25 20 73 74 61 72 74 66  |tartfile% startf|
00001770  69 6c 65 25 3d a3 3a 46  24 3d c1 41 24 2c a7 41  |ile%=.:F$=.A$,.A|
00001780  24 2c 22 2d 77 69 6d 70  22 29 2b 36 29 3a f2 63  |$,"-wimp")+6):.c|
00001790  61 6c 6c 46 53 49 0d 07  4e 05 f5 0d 07 58 16 c8  |allFSI..N....X..|
000017a0  99 20 50 6f 6c 6c 25 2c  31 2c 71 25 20 b8 20 41  |. Poll%,1,q% . A|
000017b0  25 0d 07 62 0b c8 8e 20  41 25 20 ca 0d 07 6c 25  |%..b... A% ...l%|
000017c0  c9 20 31 20 3a e7 73 70  72 69 74 65 25 20 f2 72  |. 1 :.sprite% .r|
000017d0  65 64 72 61 77 5f 77 69  6e 64 6f 77 28 21 71 25  |edraw_window(!q%|
000017e0  29 0d 07 76 42 c9 20 32  20 3a f2 6f 70 65 6e 5f  |)..vB. 2 :.open_|
000017f0  77 69 6e 64 6f 77 28 21  71 25 2c 71 25 21 34 2c  |window(!q%,q%!4,|
00001800  71 25 21 38 2c 71 25 21  31 32 2c 71 25 21 31 36  |q%!8,q%!12,q%!16|
00001810  2c 71 25 21 32 30 2c 71  25 21 32 34 2c 71 25 21  |,q%!20,q%!24,q%!|
00001820  32 38 29 0d 07 80 32 c9  20 33 20 3a c8 99 20 26  |28)...2. 3 :.. &|
00001830  34 30 30 63 33 2c 2c 71  25 3a 6e 65 78 74 6c 6f  |400c3,,q%:nextlo|
00001840  63 61 74 69 6f 6e 25 3d  93 3a f2 72 65 6d 6f 76  |cation%=.:.remov|
00001850  65 61 72 65 61 0d 07 8a  3a c8 99 20 22 57 69 6d  |earea...:.. "Wim|
00001860  70 5f 53 6c 6f 74 53 69  7a 65 22 2c 6f 72 69 67  |p_SlotSize",orig|
00001870  69 6e 61 6c 73 6c 6f 74  25 2c 2d 31 3a 73 61 76  |inalslot%,-1:sav|
00001880  65 64 25 3d b9 3a 73 70  72 69 74 65 25 3d a3 0d  |ed%=.:sprite%=..|
00001890  07 94 35 c9 20 36 20 3a  f2 63 68 65 63 6b 6d 6f  |..5. 6 :.checkmo|
000018a0  75 73 65 28 21 71 25 2c  71 25 21 34 2c 71 25 21  |use(!q%,q%!4,q%!|
000018b0  38 2c 71 25 21 31 32 2c  71 25 21 31 36 2c 71 25  |8,q%!12,q%!16,q%|
000018c0  21 32 30 29 0d 07 9e 46  c9 20 37 20 3a c8 99 20  |!20)...F. 7 :.. |
000018d0  47 65 74 50 2c 2c 71 25  3a 64 77 25 3d 71 25 21  |GetP,,q%:dw%=q%!|
000018e0  31 32 3a 64 69 25 3d 71  25 21 31 36 3a e7 64 73  |12:di%=q%!16:.ds|
000018f0  74 61 72 74 25 20 c8 99  22 44 72 61 67 41 53 70  |tart% .."DragASp|
00001900  72 69 74 65 5f 53 74 6f  70 22 0d 07 a8 3c 71 25  |rite_Stop"...<q%|
00001910  21 31 32 3d 30 3a 71 25  21 31 36 3d 31 3a 71 25  |!12=0:q%!16=1:q%|
00001920  21 32 30 3d 64 77 25 3a  71 25 21 32 34 3d 64 69  |!20=dw%:q%!24=di|
00001930  25 3a 71 25 21 32 38 3d  21 71 25 3a 71 25 21 33  |%:q%!28=!q%:q%!3|
00001940  32 3d 71 25 21 34 0d 07  b2 32 71 25 21 33 36 3d  |2=q%!4...2q%!36=|
00001950  21 73 61 72 25 2b 33 3a  71 25 21 34 30 3d 26 66  |!sar%+3:q%!40=&f|
00001960  66 39 3a 24 61 64 73 61  76 65 25 3d a4 5a 53 28  |f9:$adsave%=.ZS(|
00001970  61 64 73 61 76 65 25 29  0d 07 bc 1e 66 6f 6f 25  |adsave%)....foo%|
00001980  3d a7 24 61 64 73 61 76  65 25 2c 22 2e 22 29 3a  |=.$adsave%,"."):|
00001990  c8 95 66 6f 6f 25 0d 07  c6 32 24 61 64 73 61 76  |..foo%...2$adsav|
000019a0  65 25 3d c1 24 61 64 73  61 76 65 25 2c 66 6f 6f  |e%=.$adsave%,foo|
000019b0  25 2b 31 29 3a 66 6f 6f  25 3d a7 24 61 64 73 61  |%+1):foo%=.$adsa|
000019c0  76 65 25 2c 22 2e 22 29  0d 07 d0 05 ce 0d 07 da  |ve%,".")........|
000019d0  32 24 28 71 25 2b 34 34  29 3d 24 61 64 73 61 76  |2$(q%+44)=$adsav|
000019e0  65 25 2b bd 30 3a 21 71  25 3d 34 34 2b 28 a9 24  |e%+.0:!q%=44+(.$|
000019f0  61 64 73 61 76 65 25 2b  31 2b 33 80 ac 33 29 0d  |adsave%+1+3..3).|
00001a00  07 e4 33 c8 99 20 22 57  69 6d 70 5f 53 65 6e 64  |..3.. "Wimp_Send|
00001a10  4d 65 73 73 61 67 65 22  2c 31 37 2c 71 25 2c 64  |Message",17,q%,d|
00001a20  77 25 2c 64 69 25 3a 6d  79 72 65 66 25 3d 71 25  |w%,di%:myref%=q%|
00001a30  21 38 0d 07 ee 1d c9 20  38 20 3a f2 6b 65 79 28  |!8..... 8 :.key(|
00001a40  21 71 25 2c 71 25 21 34  2c 71 25 21 32 34 29 0d  |!q%,q%!4,q%!24).|
00001a50  07 f8 18 c9 20 39 20 3a  f2 6d 65 6e 75 73 65 6c  |.... 9 :.menusel|
00001a60  65 63 74 28 71 25 29 0d  08 02 18 c9 20 31 37 2c  |ect(q%)..... 17,|
00001a70  31 38 3a f2 72 65 63 65  69 76 65 28 71 25 29 0d  |18:.receive(q%).|
00001a80  08 0c 05 cb 0d 08 16 07  fd 20 a3 0d 08 20 05 cc  |......... ... ..|
00001a90  0d 08 2a 08 51 25 3d 93  0d 08 34 0e e0 3d 26 34  |..*.Q%=...4..=&4|
00001aa0  30 30 30 30 30 30 0d 08  3e 53 ee 20 85 20 ee 20  |000000..>S. . . |
00001ab0  85 20 87 3a ff 22 53 65  74 20 43 68 61 6e 67 65  |. .:."Set Change|
00001ac0  46 53 49 24 52 65 74 75  72 6e 43 6f 64 65 20 22  |FSI$ReturnCode "|
00001ad0  2b f6 24 2b 22 20 28 63  6f 64 65 20 22 2b c3 9e  |+.$+" (code "+..|
00001ae0  2b 22 29 22 3a f2 72 65  6d 6f 76 65 61 72 65 61  |+")":.removearea|
00001af0  3a d8 3a e0 3d 51 25 3a  e0 0d 08 48 31 66 6f 6f  |:.:.=Q%:...H1foo|
00001b00  25 3d 30 3a 41 25 3d a4  43 68 61 6e 67 65 46 53  |%=0:A%=.ChangeFS|
00001b10  49 28 41 24 2c 2d 31 2c  2d 31 2c 30 2c 2d 31 2c  |I(A$,-1,-1,0,-1,|
00001b20  2d 31 2c 66 6f 6f 25 2c  b9 29 0d 08 52 2b f2 72  |-1,foo%,.)..R+.r|
00001b30  65 6d 6f 76 65 61 72 65  61 3a 2a 75 6e 73 65 74  |emovearea:*unset|
00001b40  20 43 68 61 6e 67 65 46  53 49 24 52 65 74 75 72  | ChangeFSI$Retur|
00001b50  6e 43 6f 64 65 0d 08 5c  0a d8 3a e0 3d 51 25 0d  |nCode..\..:.=Q%.|
00001b60  08 66 05 cd 0d 08 70 05  e0 0d 08 84 18 dd 20 f2  |.f....p....... .|
00001b70  6c 6f 63 61 6c 65 5f 69  6e 69 74 69 61 6c 69 73  |locale_initialis|
00001b80  65 0d 08 8e 08 ea 20 70  25 0d 08 98 28 c8 99 20  |e..... p%...(.. |
00001b90  22 54 65 72 72 69 74 6f  72 79 5f 52 65 61 64 53  |"Territory_ReadS|
00001ba0  79 6d 62 6f 6c 73 22 2c  2d 31 2c 30 20 b8 20 70  |ymbols",-1,0 . p|
00001bb0  25 0d 08 a2 17 64 65 63  69 6d 61 6c 5f 70 6f 69  |%....decimal_poi|
00001bc0  6e 74 24 3d bd 3f 70 25  0d 08 ac 05 e1 0d 08 c0  |nt$=.?p%........|
00001bd0  1f dd 20 a4 6c 6f 63 61  6c 65 5f 63 6f 6e 76 65  |.. .locale_conve|
00001be0  72 74 28 6e 24 2c 66 24  2c 74 24 29 0d 08 ca 10  |rt(n$,f$,t$)....|
00001bf0  e7 20 66 24 3d 74 24 20  3a 3d 6e 24 0d 08 d4 08  |. f$=t$ :=n$....|
00001c00  ea 20 69 25 0d 08 de 0e  69 25 3d a7 6e 24 2c 66  |. i%....i%=.n$,f|
00001c10  24 29 0d 08 e8 24 e7 20  69 25 3c 3e 30 20 3a 3d  |$)...$. i%<>0 :=|
00001c20  c0 6e 24 2c 69 25 2d 31  29 2b 74 24 2b c1 6e 24  |.n$,i%-1)+t$+.n$|
00001c30  2c 69 25 2b 31 29 0d 08  f2 07 3d 6e 24 0d 09 06  |,i%+1)....=n$...|
00001c40  1b dd 20 a4 73 69 7a 65  5f 69 6e 64 69 72 65 63  |.. .size_indirec|
00001c50  74 28 6e 61 6d 65 24 29  0d 09 10 0b ea 20 73 69  |t(name$)..... si|
00001c60  7a 65 25 0d 09 1a 35 c8  99 20 22 57 69 6d 70 5f  |ze%...5.. "Wimp_|
00001c70  4c 6f 61 64 54 65 6d 70  6c 61 74 65 22 2c 2c 30  |LoadTemplate",,0|
00001c80  2c 2c 2c 2c 6e 61 6d 65  24 2b 7a 24 2c 30 20 b8  |,,,,name$+z$,0 .|
00001c90  20 2c 2c 73 69 7a 65 25  0d 09 24 0a 3d 73 69 7a  | ,,size%..$.=siz|
00001ca0  65 25 0d 09 38 1e dd 20  a4 77 69 6e 73 69 7a 65  |e%..8.. .winsize|
00001cb0  5f 69 6e 64 69 72 65 63  74 28 6e 61 6d 65 24 29  |_indirect(name$)|
00001cc0  0d 09 42 0b ea 20 73 69  7a 65 25 0d 09 4c 34 c8  |..B.. size%..L4.|
00001cd0  99 20 22 57 69 6d 70 5f  4c 6f 61 64 54 65 6d 70  |. "Wimp_LoadTemp|
00001ce0  6c 61 74 65 22 2c 2c 30  2c 2c 2c 2c 6e 61 6d 65  |late",,0,,,,name|
00001cf0  24 2b 7a 24 2c 30 20 b8  20 2c 73 69 7a 65 25 0d  |$+z$,0 . ,size%.|
00001d00  09 56 0a 3d 73 69 7a 65  25 0d 09 88 15 dd 20 a4  |.V.=size%..... .|
00001d10  6c 61 72 67 65 73 74 5f  62 75 66 66 65 72 0d 09  |largest_buffer..|
00001d20  92 23 ea 20 6c 61 72 67  65 73 74 5f 74 65 6d 25  |.#. largest_tem%|
00001d30  2c 73 69 7a 65 25 2c 68  65 72 65 25 2c 6e 61 6d  |,size%,here%,nam|
00001d40  65 0d 09 9c 0d de 20 6e  61 6d 65 20 31 32 0d 09  |e..... name 12..|
00001d50  a6 24 24 6e 61 6d 65 3d  22 2a 22 3a 68 65 72 65  |.$$name="*":here|
00001d60  25 3d 30 3a 6c 61 72 67  65 73 74 5f 74 65 6d 25  |%=0:largest_tem%|
00001d70  3d 30 0d 09 b0 3b c8 99  20 22 57 69 6d 70 5f 4c  |=0...;.. "Wimp_L|
00001d80  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 20 2c 30  |oadTemplate", ,0|
00001d90  2c 2c 2c 2c 6e 61 6d 65  2c 30 20 b8 20 2c 73 69  |,,,,name,0 . ,si|
00001da0  7a 65 25 2c 2c 2c 2c 2c  68 65 72 65 25 0d 09 ba  |ze%,,,,,here%...|
00001db0  0c c8 95 20 68 65 72 65  25 0d 09 c4 2b e7 20 6c  |... here%...+. l|
00001dc0  61 72 67 65 73 74 5f 74  65 6d 25 3c 73 69 7a 65  |argest_tem%<size|
00001dd0  25 20 6c 61 72 67 65 73  74 5f 74 65 6d 25 3d 73  |% largest_tem%=s|
00001de0  69 7a 65 25 0d 09 ce 0e  24 6e 61 6d 65 3d 20 22  |ize%....$name= "|
00001df0  2a 22 0d 09 d8 3f c8 99  20 22 57 69 6d 70 5f 4c  |*"...?.. "Wimp_L|
00001e00  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 20 2c 30  |oadTemplate", ,0|
00001e10  2c 2c 2c 2c 6e 61 6d 65  2c 68 65 72 65 25 20 b8  |,,,,name,here% .|
00001e20  20 2c 73 69 7a 65 25 2c  2c 2c 2c 2c 68 65 72 65  | ,size%,,,,,here|
00001e30  25 0d 09 e2 05 ce 0d 09  ec 11 3d 6c 61 72 67 65  |%.........=large|
00001e40  73 74 5f 74 65 6d 25 0d  0a 00 12 dd 20 f2 72 65  |st_tem%..... .re|
00001e50  63 65 69 76 65 28 71 25  29 0d 0a 0a 0e c8 8e 20  |ceive(q%)...... |
00001e60  71 25 21 31 36 20 ca 0d  0a 14 17 c9 20 30 3a f2  |q%!16 ...... 0:.|
00001e70  63 68 65 63 6b 61 6e 64  66 69 6e 69 73 68 0d 0a  |checkandfinish..|
00001e80  1e 17 c9 20 31 3a e7 71  25 21 32 30 3c 3e 73 61  |... 1:.q%!20<>sa|
00001e90  76 65 25 20 8c 0d 0a 28  41 21 71 25 3d 36 30 3a  |ve% ...(A!q%=60:|
00001ea0  71 25 21 31 32 3d 71 25  21 38 3a 71 25 21 31 36  |q%!12=q%!8:q%!16|
00001eb0  3d 32 3a 71 25 21 33 36  3d 2d 31 3a 24 28 71 25  |=2:q%!36=-1:$(q%|
00001ec0  2b 34 34 29 3d 22 3c 57  69 6d 70 24 53 63 72 61  |+44)="<Wimp$Scra|
00001ed0  70 3e 22 2b bd 30 0d 0a  32 2f c8 99 22 57 69 6d  |p>"+.0..2/.."Wim|
00001ee0  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
00001ef0  37 2c 71 25 2c 71 25 21  34 3a 73 63 72 61 70 25  |7,q%,q%!4:scrap%|
00001f00  3d 71 25 21 38 0d 0a 3c  05 cd 0d 0a 46 38 c9 20  |=q%!8..<....F8. |
00001f10  32 3a c8 99 73 70 6f 70  25 2c 26 31 30 43 2c 73  |2:..spop%,&10C,s|
00001f20  61 72 25 2c a4 5a 53 28  71 25 2b 34 34 29 3a 24  |ar%,.ZS(q%+44):$|
00001f30  61 64 73 61 76 65 25 3d  a4 5a 53 28 71 25 2b 34  |adsave%=.ZS(q%+4|
00001f40  34 29 0d 0a 50 37 71 25  21 31 32 3d 71 25 21 38  |4)..P7q%!12=q%!8|
00001f50  3a 71 25 21 31 36 3d 33  3a c8 99 20 22 57 69 6d  |:q%!16=3:.. "Wim|
00001f60  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
00001f70  38 2c 71 25 2c 71 25 21  34 0d 0a 5a 18 e7 20 71  |8,q%,q%!4..Z.. q|
00001f80  25 21 33 36 3c 3e 2d 31  20 73 61 76 65 64 25 3d  |%!36<>-1 saved%=|
00001f90  b9 0d 0a 64 11 c8 99 20  43 72 4d 65 6e 75 2c 2c  |...d... CrMenu,,|
00001fa0  2d 31 0d 0a 6e 31 c9 20  33 3a 46 24 3d a4 5a 53  |-1..n1. 3:F$=.ZS|
00001fb0  28 71 25 2b 34 34 29 3a  e7 73 63 72 61 70 25 20  |(q%+44):.scrap% |
00001fc0  73 63 72 61 70 25 3d 73  63 72 61 70 25 3d 71 25  |scrap%=scrap%=q%|
00001fd0  21 31 32 0d 0a 78 36 71  25 21 31 32 3d 71 25 21  |!12..x6q%!12=q%!|
00001fe0  38 3a 71 25 21 31 36 3d  34 3a c8 99 22 57 69 6d  |8:q%!16=4:.."Wim|
00001ff0  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
00002000  37 2c 71 25 2c 71 25 21  34 0d 0a 82 0c f2 63 61  |7,q%,q%!4.....ca|
00002010  6c 6c 46 53 49 0d 0a 8c  12 c9 20 35 3a c8 8e 20  |llFSI..... 5:.. |
00002020  71 25 21 34 30 20 ca 0d  0a 96 0f c9 20 26 66 66  |q%!40 ...... &ff|
00002030  30 2c 26 63 38 35 0d 0a  a0 36 71 25 21 31 32 3d  |0,&c85...6q%!12=|
00002040  71 25 21 38 3a 71 25 21  31 36 3d 34 3a c8 99 22  |q%!8:q%!16=4:.."|
00002050  57 69 6d 70 5f 53 65 6e  64 4d 65 73 73 61 67 65  |Wimp_SendMessage|
00002060  22 2c 31 37 2c 71 25 2c  71 25 21 34 0d 0a aa 1a  |",17,q%,q%!4....|
00002070  46 24 3d a4 5a 53 28 71  25 2b 34 34 29 3a f2 63  |F$=.ZS(q%+44):.c|
00002080  61 6c 6c 46 53 49 0d 0a  b4 05 cb 0d 0a be 42 c9  |allFSI........B.|
00002090  39 2c 26 34 30 30 43 31  3a e7 73 70 72 69 74 65  |9,&400C1:.sprite|
000020a0  25 20 f2 67 65 74 6d 6f  64 65 69 6e 66 6f 3a c8  |% .getmodeinfo:.|
000020b0  99 26 34 30 30 64 31 2c  70 69 63 25 2c 30 2c 2d  |.&400d1,pic%,0,-|
000020c0  33 32 37 36 37 2c 33 32  37 36 37 2c 30 0d 0a c8  |32767,32767,0...|
000020d0  13 f2 73 68 6f 77 73 63  61 6c 65 74 6f 66 69 74  |..showscaletofit|
000020e0  0d 0a d2 48 c9 20 31 30  3a c8 99 22 58 4f 53 5f  |...H. 10:.."XOS_|
000020f0  52 65 61 64 56 61 72 56  61 6c 22 2c 22 43 68 61  |ReadVarVal","Cha|
00002100  6e 67 65 46 53 49 24 44  69 72 22 2c 70 61 6c 74  |ngeFSI$Dir",palt|
00002110  65 6d 70 25 2c 32 35 36  2c 30 2c 33 20 b8 2c 2c  |emp%,256,0,3 .,,|
00002120  62 6f 6f 74 6c 65 6e 25  0d 0a dc 18 70 61 6c 74  |bootlen%....palt|
00002130  65 6d 70 25 3f 62 6f 6f  74 6c 65 6e 25 3d 31 33  |emp%?bootlen%=13|
00002140  0d 0a e6 1c d5 23 71 25  21 32 30 2c 22 52 75 6e  |.....#q%!20,"Run|
00002150  20 22 2b 24 70 61 6c 74  65 6d 70 25 0d 0a f0 05  | "+$paltemp%....|
00002160  cb 0d 0a fa 05 e1 0d 0b  0e 0e dd 20 f2 63 61 6c  |........... .cal|
00002170  6c 46 53 49 0d 0b 18 18  41 24 3d a4 64 65 64 75  |lFSI....A$=.dedu|
00002180  63 65 6d 6f 64 65 3a 41  25 3d 34 37 0d 0b 22 20  |cemode:A%=47.." |
00002190  e7 a4 67 65 74 69 63 6f  6e 73 74 61 74 65 28 6f  |..geticonstate(o|
000021a0  75 74 70 75 74 25 2c 31  32 29 20 8c 0d 0b 2c 10  |utput%,12) ...,.|
000021b0  41 24 2b 3d 24 61 64 73  70 63 6c 25 0d 0b 36 05  |A$+=$adspcl%..6.|
000021c0  cc 0d 0b 40 20 e7 a4 67  65 74 69 63 6f 6e 73 74  |...@ ..geticonst|
000021d0  61 74 65 28 6f 75 74 70  75 74 25 2c 31 33 29 20  |ate(output%,13) |
000021e0  8c 0d 0b 4a 3e e7 a4 67  65 74 69 63 6f 6e 73 74  |...J>..geticonst|
000021f0  61 74 65 28 6f 75 74 70  75 74 25 2c 32 29 84 a4  |ate(output%,2)..|
00002200  67 65 74 69 63 6f 6e 73  74 61 74 65 28 6f 75 74  |geticonstate(out|
00002210  70 75 74 25 2c 38 29 20  41 24 2b 3d 22 52 22 0d  |put%,8) A$+="R".|
00002220  0b 54 05 cc 0d 0b 5e 14  c8 99 35 33 2c bb 41 24  |.T....^...53,.A$|
00002230  2c 33 20 b8 2c 2c 41 25  0d 0b 68 0c e7 41 25 3d  |,3 .,,A%..h..A%=|
00002240  36 33 20 8c 0d 0b 72 26  e7 a4 67 65 74 69 63 6f  |63 ...r&..getico|
00002250  6e 73 74 61 74 65 28 6f  75 74 70 75 74 25 2c 33  |nstate(output%,3|
00002260  29 20 41 24 3d 22 32 37  74 22 0d 0b 7c 26 e7 a4  |) A$="27t"..|&..|
00002270  67 65 74 69 63 6f 6e 73  74 61 74 65 28 6f 75 74  |geticonstate(out|
00002280  70 75 74 25 2c 39 29 20  41 24 3d 22 31 32 74 22  |put%,9) A$="12t"|
00002290  0d 0b 86 05 cc 0d 0b 90  13 e7 41 25 3d 32 35 35  |..........A%=255|
000022a0  20 41 24 2b 3d 22 64 22  0d 0b 9a 05 cd 0d 0b a4  | A$+="d"........|
000022b0  05 cd 0d 0b ae 05 cd 0d  0b b8 2f 41 24 3d 22 67  |........../A$="g|
000022c0  61 72 62 61 67 65 20 22  2b 46 24 2b 22 20 3c 43  |arbage "+F$+" <C|
000022d0  68 61 6e 67 65 46 53 49  24 44 69 72 3e 2e 46 6f  |hangeFSI$Dir>.Fo|
000022e0  6f 20 22 2b 41 24 0d 0b  c2 3e e7 a4 67 65 74 69  |o "+A$...>..geti|
000022f0  63 6f 6e 73 74 61 74 65  28 73 63 61 6c 65 77 25  |constate(scalew%|
00002300  2c 31 29 20 41 24 2b 3d  22 20 22 2b c3 74 6f 66  |,1) A$+=" "+.tof|
00002310  69 74 78 2b 22 3a 20 22  2b c3 74 6f 66 69 74 79  |itx+": "+.tofity|
00002320  2b 22 3a 22 0d 0b cc 28  e7 a4 67 65 74 69 63 6f  |+":"...(..getico|
00002330  6e 73 74 61 74 65 28 73  63 61 6c 65 77 25 2c 35  |nstate(scalew%,5|
00002340  29 20 41 24 2b 3d 22 20  31 3a 32 22 0d 0b d6 2c  |) A$+=" 1:2"...,|
00002350  e7 a4 67 65 74 69 63 6f  6e 73 74 61 74 65 28 73  |..geticonstate(s|
00002360  63 61 6c 65 77 25 2c 34  29 20 41 24 2b 3d 22 20  |calew%,4) A$+=" |
00002370  31 3a 32 20 31 3a 31 22  0d 0b e0 2c e7 a4 67 65  |1:2 1:1"...,..ge|
00002380  74 69 63 6f 6e 73 74 61  74 65 28 73 63 61 6c 65  |ticonstate(scale|
00002390  77 25 2c 33 29 20 41 24  2b 3d 22 20 31 3a 31 20  |w%,3) A$+=" 1:1 |
000023a0  31 3a 32 22 0d 0b ea 1f  e7 a4 67 65 74 69 63 6f  |1:2"......getico|
000023b0  6e 73 74 61 74 65 28 73  63 61 6c 65 77 25 2c 39  |nstate(scalew%,9|
000023c0  29 20 8c 0d 0b f4 25 e7  bb 24 73 25 28 30 29 20  |) ....%..$s%(0) |
000023d0  41 24 2b 3d 22 20 22 2b  24 73 25 28 30 29 20 8b  |A$+=" "+$s%(0) .|
000023e0  41 24 2b 3d 22 20 31 22  0d 0b fe 12 41 24 2b 3d  |A$+=" 1"....A$+=|
000023f0  22 3a 22 2b 24 73 25 28  31 29 0d 0c 08 25 e7 bb  |":"+$s%(1)...%..|
00002400  24 73 25 28 32 29 20 41  24 2b 3d 22 20 22 2b 24  |$s%(2) A$+=" "+$|
00002410  73 25 28 32 29 20 8b 41  24 2b 3d 22 20 31 22 0d  |s%(2) .A$+=" 1".|
00002420  0c 12 12 41 24 2b 3d 22  3a 22 2b 24 73 25 28 33  |...A$+=":"+$s%(3|
00002430  29 0d 0c 1c 05 cd 0d 0c  26 2c e7 a4 67 65 74 69  |).......&,..geti|
00002440  63 6f 6e 73 74 61 74 65  28 73 63 61 6c 65 77 25  |constate(scalew%|
00002450  2c 30 29 20 41 24 2b 3d  22 20 2d 6e 6f 73 69 7a  |,0) A$+=" -nosiz|
00002460  65 22 0d 0c 30 2e e7 a4  67 65 74 69 63 6f 6e 73  |e"..0...geticons|
00002470  74 61 74 65 28 73 63 61  6c 65 77 25 2c 31 38 29  |tate(scalew%,18)|
00002480  20 41 24 2b 3d 22 20 2d  6e 6f 73 63 61 6c 65 22  | A$+=" -noscale"|
00002490  0d 0c 3a 2b e7 a4 67 65  74 69 63 6f 6e 73 74 61  |..:+..geticonsta|
000024a0  74 65 28 73 63 61 6c 65  77 25 2c 31 39 29 20 41  |te(scalew%,19) A|
000024b0  24 2b 3d 22 20 2d 6c 6f  63 6b 22 0d 0c 44 1f e7  |$+=" -lock"..D..|
000024c0  a4 67 65 74 69 63 6f 6e  73 74 61 74 65 28 73 63  |.geticonstate(sc|
000024d0  61 6c 65 77 25 2c 36 29  20 8c 0d 0c 4e 3e e7 a4  |alew%,6) ...N>..|
000024e0  67 65 74 69 63 6f 6e 73  74 61 74 65 28 73 63 61  |geticonstate(sca|
000024f0  6c 65 77 25 2c 31 36 29  20 41 24 2b 3d 22 20 2d  |lew%,16) A$+=" -|
00002500  72 6f 74 61 74 65 22 20  8b 41 24 2b 3d 22 20 2d  |rotate" .A$+=" -|
00002510  72 6f 74 61 74 65 2d 22  0d 0c 58 05 cd 0d 0c 62  |rotate-"..X....b|
00002520  2b e7 a4 67 65 74 69 63  6f 6e 73 74 61 74 65 28  |+..geticonstate(|
00002530  73 63 61 6c 65 77 25 2c  37 29 20 41 24 2b 3d 22  |scalew%,7) A$+="|
00002540  20 2d 68 66 6c 69 70 22  0d 0c 6c 2b e7 a4 67 65  | -hflip"..l+..ge|
00002550  74 69 63 6f 6e 73 74 61  74 65 28 73 63 61 6c 65  |ticonstate(scale|
00002560  77 25 2c 38 29 20 41 24  2b 3d 22 20 2d 76 66 6c  |w%,8) A$+=" -vfl|
00002570  69 70 22 0d 0c 76 29 e7  a4 67 65 74 69 63 6f 6e  |ip"..v)..geticon|
00002580  73 74 61 74 65 28 70 72  6f 63 25 2c 30 29 20 41  |state(proc%,0) A|
00002590  24 2b 3d 22 20 2d 72 61  6e 67 65 22 0d 0c 80 29  |$+=" -range"...)|
000025a0  e7 a4 67 65 74 69 63 6f  6e 73 74 61 74 65 28 70  |..geticonstate(p|
000025b0  72 6f 63 25 2c 31 29 20  41 24 2b 3d 22 20 2d 65  |roc%,1) A$+=" -e|
000025c0  71 75 61 6c 22 0d 0c 8a  2c e7 a4 67 65 74 69 63  |qual"...,..getic|
000025d0  6f 6e 73 74 61 74 65 28  70 72 6f 63 25 2c 32 29  |onstate(proc%,2)|
000025e0  20 41 24 2b 3d 22 20 2d  6e 6f 64 69 74 68 65 72  | A$+=" -nodither|
000025f0  22 0d 0c 94 2a e7 a4 67  65 74 69 63 6f 6e 73 74  |"...*..geticonst|
00002600  61 74 65 28 70 72 6f 63  25 2c 33 29 20 41 24 2b  |ate(proc%,3) A$+|
00002610  3d 22 20 2d 69 6e 76 65  72 74 22 0d 0c 9e 2c e7  |=" -invert"...,.|
00002620  a4 67 65 74 69 63 6f 6e  73 74 61 74 65 28 70 72  |.geticonstate(pr|
00002630  6f 63 25 2c 34 29 20 41  24 2b 3d 22 20 2d 62 72  |oc%,4) A$+=" -br|
00002640  69 67 68 74 65 6e 22 0d  0c a8 30 e7 a4 67 65 74  |ighten"...0..get|
00002650  69 63 6f 6e 73 74 61 74  65 28 70 72 6f 63 25 2c  |iconstate(proc%,|
00002660  35 29 20 41 24 2b 3d 22  20 2d 62 6c 61 63 6b 22  |5) A$+=" -black"|
00002670  2b 24 70 25 28 30 29 0d  0c b2 54 e7 a4 67 65 74  |+$p%(0)...T..get|
00002680  69 63 6f 6e 73 74 61 74  65 28 70 72 6f 63 25 2c  |iconstate(proc%,|
00002690  36 29 20 41 24 2b 3d 22  20 2d 67 61 6d 6d 61 22  |6) A$+=" -gamma"|
000026a0  2b a4 6c 6f 63 61 6c 65  5f 63 6f 6e 76 65 72 74  |+.locale_convert|
000026b0  28 24 70 25 28 31 29 2c  64 65 63 69 6d 61 6c 5f  |($p%(1),decimal_|
000026c0  70 6f 69 6e 74 24 2c 22  2e 22 29 0d 0c bc 32 e7  |point$,".")...2.|
000026d0  a4 67 65 74 69 63 6f 6e  73 74 61 74 65 28 70 72  |.geticonstate(pr|
000026e0  6f 63 25 2c 37 29 20 41  24 2b 3d 22 20 2d 73 68  |oc%,7) A$+=" -sh|
000026f0  61 72 70 65 6e 22 2b 24  70 25 28 32 29 0d 0c c6  |arpen"+$p%(2)...|
00002700  25 69 6e 66 6f 24 3d 22  22 3a 72 61 6e 67 65 24  |%info$="":range$|
00002710  3d 6d 24 28 31 39 29 3a  63 70 75 74 69 6d 65 25  |=m$(19):cputime%|
00002720  3d 30 0d 0c d0 36 e7 73  70 72 69 74 65 25 20 21  |=0...6.sprite% !|
00002730  71 25 3d 70 69 63 25 3a  c8 99 20 26 34 30 30 63  |q%=pic%:.. &400c|
00002740  33 2c 2c 71 25 3a 73 61  76 65 64 25 3d b9 3a 73  |3,,q%:saved%=.:s|
00002750  70 72 69 74 65 25 3d a3  0d 0c da 13 6e 65 78 74  |prite%=.....next|
00002760  6c 6f 63 61 74 69 6f 6e  25 3d 93 0d 0c e4 33 c8  |location%=....3.|
00002770  99 20 22 57 69 6d 70 5f  53 6c 6f 74 53 69 7a 65  |. "Wimp_SlotSize|
00002780  22 2c 6f 72 69 67 69 6e  61 6c 73 6c 6f 74 25 2c  |",originalslot%,|
00002790  2d 31 3a f2 72 65 6d 6f  76 65 61 72 65 61 0d 0c  |-1:.removearea..|
000027a0  ee 31 e7 66 61 73 74 25  20 c8 99 20 22 4f 53 5f  |.1.fast% .. "OS_|
000027b0  55 70 64 61 74 65 4d 45  4d 43 22 2c 26 33 30 30  |UpdateMEMC",&300|
000027c0  2c 26 37 30 30 20 b8 20  6f 6c 64 6d 65 6d 63 0d  |,&700 . oldmemc.|
000027d0  0c f8 34 41 25 3d a4 43  68 61 6e 67 65 46 53 49  |..4A%=.ChangeFSI|
000027e0  28 41 24 2c 2d 31 2c 2d  31 2c 6e 65 78 74 6c 6f  |(A$,-1,-1,nextlo|
000027f0  63 61 74 69 6f 6e 25 2c  30 2c 30 2c 73 61 72 25  |cation%,0,0,sar%|
00002800  2c 30 29 0d 0d 02 2a e7  66 61 73 74 25 20 c8 99  |,0)...*.fast% ..|
00002810  20 22 4f 53 5f 55 70 64  61 74 65 4d 45 4d 43 22  | "OS_UpdateMEMC"|
00002820  2c 6f 6c 64 6d 65 6d 63  2c 26 37 30 30 0d 0d 0c  |,oldmemc,&700...|
00002830  25 e7 73 63 72 61 70 25  20 73 63 72 61 70 25 3d  |%.scrap% scrap%=|
00002840  a3 3a c8 99 22 4f 53 5f  46 69 6c 65 22 2c 36 2c  |.:.."OS_File",6,|
00002850  46 24 0d 0d 16 15 e7 41  25 3c 32 20 80 20 73 61  |F$.....A%<2 . sa|
00002860  72 25 3c 3e 30 20 8c 0d  0d 20 26 c8 99 20 73 70  |r%<>0 ... &.. sp|
00002870  6f 70 25 2c 26 31 30 64  2c 73 61 72 25 2c 70 69  |op%,&10d,sar%,pi|
00002880  78 74 72 61 6e 73 25 2c  32 35 35 2c 31 0d 0d 2a  |xtrans%,255,1..*|
00002890  36 6e 24 3d a4 5a 53 28  70 69 78 74 72 61 6e 73  |6n$=.ZS(pixtrans|
000028a0  25 29 3a c8 99 20 73 70  6f 70 25 2c 26 31 32 38  |%):.. spop%,&128|
000028b0  2c 73 61 72 25 2c 6e 24  20 b8 2c 2c 2c 78 2c 79  |,sar%,n$ .,,,x,y|
000028c0  2c 2c 6d 0d 0d 34 2e 24  61 64 73 78 25 3d c3 78  |,,m..4.$adsx%=.x|
000028d0  3a 24 61 64 73 79 25 3d  c3 79 3a 24 61 64 73 6d  |:$adsy%=.y:$adsm|
000028e0  25 3d c3 6d 3a 24 61 64  73 6e 61 6d 65 25 3d 6e  |%=.m:$adsname%=n|
000028f0  24 0d 0d 3e 26 24 61 64  73 62 79 74 65 73 25 3d  |$..>&$adsbytes%=|
00002900  c3 73 61 72 25 21 31 32  3a 24 61 64 72 61 6e 25  |.sar%!12:$adran%|
00002910  3d 72 61 6e 67 65 24 0d  0d 48 54 24 61 64 73 72  |=range$..HT$adsr|
00002920  63 25 3d 69 6e 66 6f 24  2b 6d 24 28 30 29 2b c3  |c%=info$+m$(0)+.|
00002930  28 63 70 75 74 69 6d 65  25 81 31 30 30 29 2b 64  |(cputime%.100)+d|
00002940  65 63 69 6d 61 6c 5f 70  6f 69 6e 74 24 2b c2 22  |ecimal_point$+."|
00002950  30 22 2b c3 28 63 70 75  74 69 6d 65 25 83 31 30  |0"+.(cputime%.10|
00002960  30 29 2c 32 29 2b 6d 24  28 31 29 0d 0d 52 27 41  |0),2)+m$(1)..R'A|
00002970  25 3d a9 46 24 3a c8 95  c1 22 2e 22 2b 46 24 2c  |%=.F$:..."."+F$,|
00002980  41 25 2c 31 29 3c 3e 22  2e 22 3a 41 25 2d 3d 31  |A%,1)<>".":A%-=1|
00002990  3a ce 0d 0d 5c 1a 24 61  64 73 61 76 65 25 3d c1  |:...\.$adsave%=.|
000029a0  22 2e 22 2b 46 24 2c 41  25 2b 31 29 0d 0d 66 1b  |"."+F$,A%+1)..f.|
000029b0  c8 99 26 33 35 2c 6d 2c  34 20 b8 2c 2c 6e 78 3a  |..&35,m,4 .,,nx:|
000029c0  78 3d 78 3c 3c 6e 78 0d  0d 70 1b c8 99 26 33 35  |x=x<<nx..p...&35|
000029d0  2c 6d 2c 35 20 b8 2c 2c  6e 79 3a 79 3d 79 3c 3c  |,m,5 .,,ny:y=y<<|
000029e0  6e 79 0d 0d 7a 23 73 61  76 65 64 25 3d a3 3a 73  |ny..z#saved%=.:s|
000029f0  70 72 69 74 65 25 3d b9  3a f2 67 65 74 6d 6f 64  |prite%=.:.getmod|
00002a00  65 69 6e 66 6f 0d 0d 84  1f 70 69 63 25 3d a4 63  |einfo....pic%=.c|
00002a10  72 65 61 74 65 5f 77 69  6e 64 6f 77 28 78 2c 79  |reate_window(x,y|
00002a20  2c 46 24 29 0d 0d 8e 13  f2 70 6f 70 75 70 28 70  |,F$).....popup(p|
00002a30  69 63 25 2c 2d 31 29 0d  0d 98 05 cd 0d 0d a2 05  |ic%,-1).........|
00002a40  e1 0d 0d b6 15 dd 20 f2  63 68 65 63 6b 61 6e 64  |...... .checkand|
00002a50  66 69 6e 69 73 68 0d 0d  c0 37 e7 73 61 76 65 64  |finish...7.saved|
00002a60  25 20 84 ac 73 70 72 69  74 65 25 20 f2 72 65 6d  |% ..sprite% .rem|
00002a70  6f 76 65 61 72 65 61 3a  c8 99 20 22 57 69 6d 70  |ovearea:.. "Wimp|
00002a80  5f 43 6c 6f 73 65 44 6f  77 6e 22 3a e0 0d 0d ca  |_CloseDown":....|
00002a90  2d 21 62 75 66 66 65 72  25 3d 9f 3a 24 28 62 75  |-!buffer%=.:$(bu|
00002aa0  66 66 65 72 25 2b 34 29  3d 6d 24 28 32 29 2b 46  |ffer%+4)=m$(2)+F|
00002ab0  24 2b 6d 24 28 33 29 2b  bd 30 0d 0d d4 35 c8 99  |$+m$(3)+.0...5..|
00002ac0  20 22 57 69 6d 70 5f 52  65 70 6f 72 74 45 72 72  | "Wimp_ReportErr|
00002ad0  6f 72 22 2c 62 75 66 66  65 72 25 2c 25 31 30 31  |or",buffer%,%101|
00002ae0  31 31 2c 6d 24 28 32 30  29 20 b8 20 2c 41 25 0d  |11,m$(20) . ,A%.|
00002af0  0d de 2b e7 41 25 3d 31  20 f2 72 65 6d 6f 76 65  |..+.A%=1 .remove|
00002b00  61 72 65 61 3a c8 99 20  22 57 69 6d 70 5f 43 6c  |area:.. "Wimp_Cl|
00002b10  6f 73 65 44 6f 77 6e 22  3a e0 0d 0d e8 05 e1 0d  |oseDown":.......|
00002b20  0d fc 1e dd 20 f2 6b 65  79 28 68 61 6e 64 6c 65  |.... .key(handle|
00002b30  25 2c 69 63 6f 6e 25 2c  6b 65 79 25 29 0d 0e 06  |%,icon%,key%)...|
00002b40  1d e7 6b 65 79 25 3d 26  31 62 20 c8 99 20 43 72  |..key%=&1b .. Cr|
00002b50  4d 65 6e 75 2c 2c 2d 31  3a e1 0d 0e 10 10 c8 8e  |Menu,,-1:.......|
00002b60  20 68 61 6e 64 6c 65 25  20 ca 0d 0e 1a 15 c9 20  | handle% ...... |
00002b70  7a 6f 6f 6d 25 3a c8 8e  20 6b 65 79 25 20 ca 0d  |zoom%:.. key% ..|
00002b80  0e 24 43 c9 20 31 33 3a  f2 64 6f 7a 6f 6f 6d 28  |.$C. 13:.dozoom(|
00002b90  69 63 6f 6e 25 2d 34 2c  30 29 3a e7 69 63 6f 6e  |icon%-4,0):.icon|
00002ba0  25 3d 34 20 c8 99 20 26  34 30 30 64 32 2c 7a 6f  |%=4 .. &400d2,zo|
00002bb0  6f 6d 25 2c 35 2c 2c 2c  2d 31 2c a9 24 7a 25 28  |om%,5,,,-1,.$z%(|
00002bc0  30 29 0d 0e 2e 1a e7 69  63 6f 6e 25 3d 35 20 c8  |0).....icon%=5 .|
00002bd0  99 20 43 72 4d 65 6e 75  2c 2c 2d 31 0d 0e 38 05  |. CrMenu,,-1..8.|
00002be0  e1 0d 0e 42 22 c9 20 26  31 38 65 2c 26 31 38 66  |...B". &18e,&18f|
00002bf0  3a f2 64 6f 7a 6f 6f 6d  28 69 63 6f 6e 25 2d 34  |:.dozoom(icon%-4|
00002c00  2c 30 29 0d 0e 4c 30 c8  99 20 26 34 30 30 64 32  |,0)..L0.. &400d2|
00002c10  2c 7a 6f 6f 6d 25 2c 69  63 6f 6e 25 82 31 2c 2c  |,zoom%,icon%.1,,|
00002c20  2c 2d 31 2c a9 24 7a 25  28 69 63 6f 6e 25 82 35  |,-1,.$z%(icon%.5|
00002c30  29 3a e1 0d 0e 56 05 cb  0d 0e 60 0b c9 20 73 61  |):...V....`.. sa|
00002c40  76 65 25 0d 0e 6a 1a e7  6b 65 79 25 3d 31 33 20  |ve%..j..key%=13 |
00002c50  f2 73 61 76 65 73 70 72  69 74 65 3a e1 0d 0e 74  |.savesprite:...t|
00002c60  0d c9 20 6f 75 74 70 75  74 25 0d 0e 7e 13 f2 73  |.. output%..~..s|
00002c70  68 6f 77 73 63 61 6c 65  74 6f 66 69 74 0d 0e 88  |howscaletofit...|
00002c80  1c e7 6b 65 79 25 3d 31  33 20 c8 99 20 43 72 4d  |..key%=13 .. CrM|
00002c90  65 6e 75 2c 2c 2d 31 3a  e1 0d 0e 92 1b e7 6b 65  |enu,,-1:......ke|
00002ca0  79 25 3d 26 31 38 65 20  84 6b 65 79 25 3d 26 31  |y%=&18e .key%=&1|
00002cb0  38 66 20 8c 0d 0e 9c 35  69 63 6f 6e 25 3d 69 63  |8f ....5icon%=ic|
00002cc0  6f 6e 25 82 31 3a 6b 65  79 25 3d 61 64 6d 6f 64  |on%.1:key%=admod|
00002cd0  65 25 3a e7 69 63 6f 6e  25 3d 31 36 20 6b 65 79  |e%:.icon%=16 key|
00002ce0  25 3d 61 64 73 70 63 6c  25 0d 0e a6 29 c8 99 20  |%=adspcl%...).. |
00002cf0  26 34 30 30 64 32 2c 6f  75 74 70 75 74 25 2c 69  |&400d2,output%,i|
00002d00  63 6f 6e 25 2c 2c 2c 2d  31 2c a9 24 6b 65 79 25  |con%,,,-1,.$key%|
00002d10  3a e1 0d 0e b0 05 cd 0d  0e ba 15 c9 20 70 72 6f  |:........... pro|
00002d20  63 25 3a c8 8e 20 6b 65  79 25 20 ca 0d 0e c4 41  |c%:.. key% ....A|
00002d30  c9 20 26 31 38 65 2c 31  33 3a 69 63 6f 6e 25 2b  |. &18e,13:icon%+|
00002d40  3d 31 3a e7 69 63 6f 6e  25 3e 31 30 20 69 63 6f  |=1:.icon%>10 ico|
00002d50  6e 25 3d 38 3a e7 6b 65  79 25 3d 31 33 20 c8 99  |n%=8:.key%=13 ..|
00002d60  20 43 72 4d 65 6e 75 2c  2c 2d 31 3a e1 0d 0e ce  | CrMenu,,-1:....|
00002d70  2e c8 99 20 26 34 30 30  64 32 2c 70 72 6f 63 25  |... &400d2,proc%|
00002d80  2c 69 63 6f 6e 25 2c 2c  2c 2d 31 2c a9 24 70 25  |,icon%,,,-1,.$p%|
00002d90  28 69 63 6f 6e 25 2d 38  29 3a e1 0d 0e d8 25 c9  |(icon%-8):....%.|
00002da0  20 26 31 38 66 3a 69 63  6f 6e 25 2d 3d 31 3a e7  | &18f:icon%-=1:.|
00002db0  69 63 6f 6e 25 3c 38 20  69 63 6f 6e 25 3d 31 30  |icon%<8 icon%=10|
00002dc0  0d 0e e2 2e c8 99 20 26  34 30 30 64 32 2c 70 72  |...... &400d2,pr|
00002dd0  6f 63 25 2c 69 63 6f 6e  25 2c 2c 2c 2d 31 2c a9  |oc%,icon%,,,-1,.|
00002de0  24 70 25 28 69 63 6f 6e  25 2d 38 29 3a e1 0d 0e  |$p%(icon%-8):...|
00002df0  ec 05 cb 0d 0e f6 17 c9  20 73 63 61 6c 65 77 25  |........ scalew%|
00002e00  3a c8 8e 20 6b 65 79 25  20 ca 0d 0f 00 42 c9 20  |:.. key% ....B. |
00002e10  26 31 38 65 2c 31 33 3a  69 63 6f 6e 25 2b 3d 31  |&18e,13:icon%+=1|
00002e20  3a e7 69 63 6f 6e 25 3e  31 33 20 69 63 6f 6e 25  |:.icon%>13 icon%|
00002e30  3d 31 30 3a e7 6b 65 79  25 3d 31 33 20 c8 99 20  |=10:.key%=13 .. |
00002e40  43 72 4d 65 6e 75 2c 2c  2d 31 3a e1 0d 0f 0a 31  |CrMenu,,-1:....1|
00002e50  c8 99 20 26 34 30 30 64  32 2c 73 63 61 6c 65 77  |.. &400d2,scalew|
00002e60  25 2c 69 63 6f 6e 25 2c  2c 2c 2d 31 2c a9 24 73  |%,icon%,,,-1,.$s|
00002e70  25 28 69 63 6f 6e 25 2d  31 30 29 3a e1 0d 0f 14  |%(icon%-10):....|
00002e80  26 c9 20 26 31 38 66 3a  69 63 6f 6e 25 2d 3d 31  |&. &18f:icon%-=1|
00002e90  3a e7 69 63 6f 6e 25 3c  31 30 20 69 63 6f 6e 25  |:.icon%<10 icon%|
00002ea0  3d 31 33 0d 0f 1e 31 c8  99 20 26 34 30 30 64 32  |=13...1.. &400d2|
00002eb0  2c 73 63 61 6c 65 77 25  2c 69 63 6f 6e 25 2c 2c  |,scalew%,icon%,,|
00002ec0  2c 2d 31 2c a9 24 73 25  28 69 63 6f 6e 25 2d 31  |,-1,.$s%(icon%-1|
00002ed0  30 29 3a e1 0d 0f 28 05  cb 0d 0f 32 05 cb 0d 0f  |0):...(....2....|
00002ee0  3c 1d c8 99 20 22 57 69  6d 70 5f 50 72 6f 63 65  |<... "Wimp_Proce|
00002ef0  73 73 4b 65 79 22 2c 6b  65 79 25 0d 0f 46 05 e1  |ssKey",key%..F..|
00002f00  0d 0f 5a 11 dd 20 f2 73  61 76 65 73 70 72 69 74  |..Z.. .savesprit|
00002f10  65 0d 0f 64 1f c8 99 20  73 70 6f 70 25 2c 26 31  |e..d... spop%,&1|
00002f20  30 43 2c 73 61 72 25 2c  24 61 64 73 61 76 65 25  |0C,sar%,$adsave%|
00002f30  0d 0f 6e 11 c8 99 20 43  72 4d 65 6e 75 2c 2c 2d  |..n... CrMenu,,-|
00002f40  31 0d 0f 78 05 e1 0d 0f  8c 37 dd 20 f2 63 68 65  |1..x.....7. .che|
00002f50  63 6b 6d 6f 75 73 65 28  6d 6f 75 73 65 78 25 2c  |ckmouse(mousex%,|
00002f60  6d 6f 75 73 65 79 25 2c  62 25 2c 68 61 6e 64 6c  |mousey%,b%,handl|
00002f70  65 25 2c 69 63 6f 6e 25  2c 6f 62 25 29 0d 0f 96  |e%,icon%,ob%)...|
00002f80  0b e7 62 25 80 32 20 8c  0d 0f a0 10 c8 8e 20 68  |..b%.2 ....... h|
00002f90  61 6e 64 6c 65 25 20 ca  0d 0f aa 7c c9 20 70 69  |andle% ....|. pi|
00002fa0  63 25 3a f2 64 6f 6d 65  6e 75 28 70 69 63 25 2c  |c%:.domenu(pic%,|
00002fb0  6d 24 28 34 29 2b 22 3e  73 69 6e 66 6f 25 2c 22  |m$(4)+">sinfo%,"|
00002fc0  2b 6d 24 28 35 29 2b 22  3e 73 72 63 69 6e 66 6f  |+m$(5)+">srcinfo|
00002fd0  25 2c 22 2b 6d 24 28 36  29 2b 22 3e 72 61 6e 69  |%,"+m$(6)+">rani|
00002fe0  6e 66 6f 25 2c 22 2b 6d  24 28 37 29 2b 22 3e 7a  |nfo%,"+m$(7)+">z|
00002ff0  6f 6f 6d 25 2c 22 2b 6d  24 28 38 29 2b 22 3e 73  |oom%,"+m$(8)+">s|
00003000  61 76 65 25 2c 22 2b 6d  24 28 39 29 2c 6d 24 28  |ave%,"+m$(9),m$(|
00003010  32 30 29 29 0d 0f b4 96  c9 20 2d 32 3a f2 64 6f  |20))..... -2:.do|
00003020  6d 65 6e 75 28 31 30 31  2c 6d 24 28 31 30 29 2b  |menu(101,m$(10)+|
00003030  22 3e 69 6e 66 6f 77 25  2c 22 2b 6d 24 28 31 31  |">infow%,"+m$(11|
00003040  29 2b 22 3e 73 63 61 6c  65 77 25 2c 22 2b 6d 24  |)+">scalew%,"+m$|
00003050  28 31 32 29 2b 22 3e 70  72 6f 63 25 2c 22 2b 6d  |(12)+">proc%,"+m|
00003060  24 28 31 33 29 2b 22 3e  6f 75 74 70 75 74 25 2c  |$(13)+">output%,|
00003070  22 2b 6d 24 28 39 29 2b  22 2c 22 2b 6d 24 28 31  |"+m$(9)+","+m$(1|
00003080  34 29 2b 22 3a 66 61 73  74 25 41 4e 44 31 2c 22  |4)+":fast%AND1,"|
00003090  2b 6d 24 28 31 35 29 2b  22 2c 22 2b 6d 24 28 31  |+m$(15)+","+m$(1|
000030a0  36 29 2c 6d 24 28 32 30  29 29 0d 0f be 05 cb 0d  |6),m$(20))......|
000030b0  0f c8 18 72 6d 65 6e 75  68 61 6e 64 6c 65 25 3d  |...rmenuhandle%=|
000030c0  68 61 6e 64 6c 65 25 0d  0f d2 05 cd 0d 0f dc 0b  |handle%.........|
000030d0  e7 62 25 80 34 20 8c 0d  0f e6 10 c8 8e 20 68 61  |.b%.4 ....... ha|
000030e0  6e 64 6c 65 25 20 ca 0d  0f f0 16 c9 20 7a 6f 6f  |ndle% ...... zoo|
000030f0  6d 25 3a c8 8e 20 69 63  6f 6e 25 20 ca 0d 0f fa  |m%:.. icon% ....|
00003100  14 c9 20 30 3a f2 64 6f  7a 6f 6f 6d 28 30 2c 31  |.. 0:.dozoom(0,1|
00003110  29 0d 10 04 15 c9 20 31  3a f2 64 6f 7a 6f 6f 6d  |)..... 1:.dozoom|
00003120  28 30 2c 2d 31 29 0d 10  0e 14 c9 20 32 3a f2 64  |(0,-1)..... 2:.d|
00003130  6f 7a 6f 6f 6d 28 31 2c  31 29 0d 10 18 15 c9 20  |ozoom(1,1)..... |
00003140  33 3a f2 64 6f 7a 6f 6f  6d 28 31 2c 2d 31 29 0d  |3:.dozoom(1,-1).|
00003150  10 22 05 cb 0d 10 2c 05  cb 0d 10 36 05 cd 0d 10  |."....,....6....|
00003160  40 0b e7 62 25 80 31 20  8c 0d 10 4a 10 c8 8e 20  |@..b%.1 ...J... |
00003170  68 61 6e 64 6c 65 25 20  ca 0d 10 54 16 c9 20 7a  |handle% ...T.. z|
00003180  6f 6f 6d 25 3a c8 8e 20  69 63 6f 6e 25 20 ca 0d  |oom%:.. icon% ..|
00003190  10 5e 15 c9 20 30 3a f2  64 6f 7a 6f 6f 6d 28 30  |.^.. 0:.dozoom(0|
000031a0  2c 2d 31 29 0d 10 68 14  c9 20 31 3a f2 64 6f 7a  |,-1)..h.. 1:.doz|
000031b0  6f 6f 6d 28 30 2c 31 29  0d 10 72 15 c9 20 32 3a  |oom(0,1)..r.. 2:|
000031c0  f2 64 6f 7a 6f 6f 6d 28  31 2c 2d 31 29 0d 10 7c  |.dozoom(1,-1)..||
000031d0  14 c9 20 33 3a f2 64 6f  7a 6f 6f 6d 28 31 2c 31  |.. 3:.dozoom(1,1|
000031e0  29 0d 10 86 05 cb 0d 10  90 05 cb 0d 10 9a 05 cd  |)...............|
000031f0  0d 10 a4 0b e7 62 25 80  35 20 8c 0d 10 ae 10 c8  |.....b%.5 ......|
00003200  8e 20 68 61 6e 64 6c 65  25 20 ca 0d 10 b8 18 c9  |. handle% ......|
00003210  20 6f 75 74 70 75 74 25  3a c8 8e 20 69 63 6f 6e  | output%:.. icon|
00003220  25 20 ca 0d 10 c2 27 c9  20 30 2c 31 2c 32 2c 33  |% ....'. 0,1,2,3|
00003230  3a f2 6b 69 6c 6c 63 75  72 72 65 6e 74 28 c3 28  |:.killcurrent(.(|
00003240  32 35 2b 69 63 6f 6e 25  29 29 0d 10 cc 21 c9 20  |25+icon%))...!. |
00003250  34 3a f2 6b 69 6c 6c 63  75 72 72 65 6e 74 28 22  |4:.killcurrent("|
00003260  53 31 36 2c 39 30 2c 39  30 22 29 0d 10 d6 21 c9  |S16,90,90")...!.|
00003270  20 35 3a f2 6b 69 6c 6c  63 75 72 72 65 6e 74 28  | 5:.killcurrent(|
00003280  22 53 33 32 2c 39 30 2c  39 30 22 29 0d 10 e0 19  |"S32,90,90")....|
00003290  c9 20 36 3a f2 6b 69 6c  6c 63 75 72 72 65 6e 74  |. 6:.killcurrent|
000032a0  28 22 30 22 29 0d 10 ea  19 c9 20 37 3a f2 6b 69  |("0")..... 7:.ki|
000032b0  6c 6c 63 75 72 72 65 6e  74 28 22 38 22 29 0d 10  |llcurrent("8")..|
000032c0  f4 1a c9 20 38 3a f2 6b  69 6c 6c 63 75 72 72 65  |... 8:.killcurre|
000032d0  6e 74 28 22 31 32 22 29  0d 10 fe 1a c9 20 39 3a  |nt("12")..... 9:|
000032e0  f2 6b 69 6c 6c 63 75 72  72 65 6e 74 28 22 31 35  |.killcurrent("15|
000032f0  22 29 0d 11 08 22 c9 20  31 30 3a f2 6b 69 6c 6c  |")...". 10:.kill|
00003300  63 75 72 72 65 6e 74 28  22 53 31 36 2c 39 30 2c  |current("S16,90,|
00003310  34 35 22 29 0d 11 12 22  c9 20 31 31 3a f2 6b 69  |45")...". 11:.ki|
00003320  6c 6c 63 75 72 72 65 6e  74 28 22 53 33 32 2c 39  |llcurrent("S32,9|
00003330  30 2c 34 35 22 29 0d 11  1c 05 cb 0d 11 26 33 e7  |0,45").......&3.|
00003340  a4 67 65 74 69 63 6f 6e  73 74 61 74 65 28 6f 75  |.geticonstate(ou|
00003350  74 70 75 74 25 2c 31 35  29 20 24 61 64 6d 6f 64  |tput%,15) $admod|
00003360  65 25 3d a4 64 65 64 75  63 65 6d 6f 64 65 0d 11  |e%=.deducemode..|
00003370  30 32 21 71 25 3d 6f 75  74 70 75 74 25 3a 71 25  |02!q%=output%:q%|
00003380  21 34 3d 31 37 3a 71 25  21 38 3d 30 3a 71 25 21  |!4=17:q%!8=0:q%!|
00003390  31 32 3d 30 3a c8 99 20  53 65 74 49 2c 2c 71 25  |12=0:.. SetI,,q%|
000033a0  0d 11 3a 13 f2 73 68 6f  77 73 63 61 6c 65 74 6f  |..:..showscaleto|
000033b0  66 69 74 0d 11 44 16 c9  20 73 61 76 65 25 3a c8  |fit..D.. save%:.|
000033c0  8e 20 69 63 6f 6e 25 20  ca 0d 11 4e 13 c9 20 32  |. icon% ...N.. 2|
000033d0  3a f2 73 61 76 65 73 70  72 69 74 65 0d 11 58 05  |:.savesprite..X.|
000033e0  cb 0d 11 62 4d c9 20 2d  32 3a e7 73 70 72 69 74  |...bM. -2:.sprit|
000033f0  65 25 20 f2 67 65 74 77  28 70 69 63 25 29 3a f2  |e% .getw(pic%):.|
00003400  6f 70 65 6e 5f 77 69 6e  64 6f 77 28 70 69 63 25  |open_window(pic%|
00003410  2c 78 30 25 2c 79 30 25  2c 78 31 25 2c 79 31 25  |,x0%,y0%,x1%,y1%|
00003420  2c 73 63 78 25 2c 73 63  79 25 2c 2d 31 29 0d 11  |,scx%,scy%,-1)..|
00003430  6c 05 cb 0d 11 76 05 cd  0d 11 80 0d e7 62 25 80  |l....v.......b%.|
00003440  26 35 30 20 8c 0d 11 8a  10 c8 8e 20 68 61 6e 64  |&50 ....... hand|
00003450  6c 65 25 20 ca 0d 11 94  16 c9 20 73 61 76 65 25  |le% ...... save%|
00003460  3a c8 8e 20 69 63 6f 6e  25 20 ca 0d 11 9e 14 c9  |:.. icon% ......|
00003470  20 30 3a f2 67 65 74 77  28 73 61 76 65 25 29 0d  | 0:.getw(save%).|
00003480  11 a8 20 21 71 25 3d 73  61 76 65 25 3a 71 25 21  |.. !q%=save%:q%!|
00003490  34 3d 30 3a c8 99 20 47  65 74 49 2c 2c 71 25 0d  |4=0:.. GetI,,q%.|
000034a0  11 b2 14 21 71 25 3d 73  61 76 65 25 3a 71 25 21  |...!q%=save%:q%!|
000034b0  34 3d 35 0d 11 bc 2e 71  25 21 38 2b 3d 62 78 25  |4=5....q%!8+=bx%|
000034c0  3a 71 25 21 31 32 2b 3d  62 79 25 3a 71 25 21 31  |:q%!12+=by%:q%!1|
000034d0  36 2b 3d 62 78 25 3a 71  25 21 32 30 2b 3d 62 79  |6+=bx%:q%!20+=by|
000034e0  25 0d 11 c6 33 71 25 21  32 34 3d 30 3a 71 25 21  |%...3q%!24=0:q%!|
000034f0  32 38 3d 30 3a 71 25 21  33 32 3d 26 37 46 46 46  |28=0:q%!32=&7FFF|
00003500  46 46 46 46 3a 71 25 21  33 36 3d 26 37 46 46 46  |FFFF:q%!36=&7FFF|
00003510  46 46 46 46 0d 11 d0 50  e7 64 73 74 61 72 74 25  |FFFF...P.dstart%|
00003520  20 c8 99 20 64 73 74 61  72 74 25 2c 25 31 31 30  | .. dstart%,%110|
00003530  30 30 31 30 31 2c 31 2c  22 66 69 6c 65 5f 66 66  |00101,1,"file_ff|
00003540  39 22 2c 71 25 2b 38 2c  71 25 2b 32 34 20 8b c8  |9",q%+8,q%+24 ..|
00003550  99 20 22 57 69 6d 70 5f  44 72 61 67 42 6f 78 22  |. "Wimp_DragBox"|
00003560  2c 2c 71 25 0d 11 da 05  cb 0d 11 e4 05 cb 0d 11  |,,q%............|
00003570  ee 05 cd 0d 11 f8 05 e1  0d 12 0c 14 dd 20 f2 64  |............. .d|
00003580  6f 7a 6f 6f 6d 28 73 25  2c 61 25 29 0d 12 16 0b  |ozoom(s%,a%)....|
00003590  e7 73 25 3d 30 20 8c 0d  12 20 2f 24 7a 25 28 30  |.s%=0 ... /$z%(0|
000035a0  29 3d c3 28 bb 24 7a 25  28 30 29 2b 61 25 29 3a  |)=.(.$z%(0)+a%):|
000035b0  e7 24 7a 25 28 30 29 3d  22 30 22 20 24 7a 25 28  |.$z%(0)="0" $z%(|
000035c0  30 29 3d 22 31 22 0d 12  2a 05 cc 0d 12 34 2f 24  |0)="1"..*....4/$|
000035d0  7a 25 28 31 29 3d c3 28  bb 24 7a 25 28 31 29 2b  |z%(1)=.(.$z%(1)+|
000035e0  61 25 29 3a e7 24 7a 25  28 31 29 3d 22 30 22 20  |a%):.$z%(1)="0" |
000035f0  24 7a 25 28 31 29 3d 22  31 22 0d 12 3e 05 cd 0d  |$z%(1)="1"..>...|
00003600  12 48 32 21 71 25 3d 7a  6f 6f 6d 25 3a 71 25 21  |.H2!q%=zoom%:q%!|
00003610  34 3d 34 2b 73 25 3a 71  25 21 38 3d 30 3a 71 25  |4=4+s%:q%!8=0:q%|
00003620  21 31 32 3d 30 3a c8 99  20 53 65 74 49 2c 2c 71  |!12=0:.. SetI,,q|
00003630  25 0d 12 52 2f 21 71 25  3d 70 69 63 25 3a c8 99  |%..R/!q%=pic%:..|
00003640  20 47 65 74 57 2c 2c 71  25 3a 66 25 3d 71 25 21  | GetW,,q%:f%=q%!|
00003650  32 38 3a c8 99 20 26 34  30 30 63 33 2c 2c 71 25  |28:.. &400c3,,q%|
00003660  0d 12 5c 1f 70 69 63 25  3d a4 63 72 65 61 74 65  |..\.pic%=.create|
00003670  5f 77 69 6e 64 6f 77 28  78 2c 79 2c 46 24 29 0d  |_window(x,y,F$).|
00003680  12 66 13 f2 70 6f 70 75  70 28 70 69 63 25 2c 66  |.f..popup(pic%,f|
00003690  25 29 0d 12 70 05 e1 0d  12 84 27 dd 20 f2 64 6f  |%)..p.....'. .do|
000036a0  6d 65 6e 75 28 68 61 6e  64 6c 65 25 2c 6d 65 6e  |menu(handle%,men|
000036b0  75 24 2c 6d 65 6e 75 74  69 74 6c 65 24 29 0d 12  |u$,menutitle$)..|
000036c0  8e 17 6d 65 6e 75 68 61  6e 64 6c 65 25 3d 68 61  |..menuhandle%=ha|
000036d0  6e 64 6c 65 25 0d 12 98  25 6d 65 6e 75 70 74 72  |ndle%...%menuptr|
000036e0  25 3d 62 75 66 66 65 72  25 3a 69 6e 64 69 72 65  |%=buffer%:indire|
000036f0  63 74 25 3d 69 64 61 74  61 25 0d 12 a2 08 69 25  |ct%=idata%....i%|
00003700  3d 30 0d 12 ac 12 6d 65  6e 75 70 74 72 25 21 32  |=0....menuptr%!2|
00003710  30 3d 34 34 0d 12 b6 18  24 6d 65 6e 75 70 74 72  |0=44....$menuptr|
00003720  25 3d 6d 65 6e 75 74 69  74 6c 65 24 0d 12 c0 3b  |%=menutitle$...;|
00003730  6d 65 6e 75 70 74 72 25  3f 31 32 3d 37 3a 6d 65  |menuptr%?12=7:me|
00003740  6e 75 70 74 72 25 3f 31  33 3d 32 3a 6d 65 6e 75  |nuptr%?13=2:menu|
00003750  70 74 72 25 3f 31 34 3d  37 3a 6d 65 6e 75 70 74  |ptr%?14=7:menupt|
00003760  72 25 3f 31 35 3d 30 0d  12 ca 21 6d 65 6e 75 70  |r%?15=0...!menup|
00003770  74 72 25 21 31 36 3d 32  30 30 3a 6d 65 6e 75 70  |tr%!16=200:menup|
00003780  74 72 25 21 32 34 3d 30  0d 12 d4 10 6d 65 6e 75  |tr%!24=0....menu|
00003790  70 74 72 25 2b 3d 32 38  0d 12 de 25 f5 20 69 31  |ptr%+=28...%. i1|
000037a0  25 3d 69 25 2b 31 3a 69  25 3d a7 6d 65 6e 75 24  |%=i%+1:i%=.menu$|
000037b0  2b 22 2c 22 2c 22 2c 22  2c 69 31 25 29 0d 12 e8  |+",",",",i1%)...|
000037c0  38 69 74 65 6d 24 3d c1  6d 65 6e 75 24 2c 69 31  |8item$=.menu$,i1|
000037d0  25 2c 69 25 2d 69 31 25  29 3a f2 6d 65 6e 75 69  |%,i%-i1%):.menui|
000037e0  74 65 6d 28 69 74 65 6d  24 29 3a fd 20 69 74 65  |tem(item$):. ite|
000037f0  6d 24 3d 22 22 0d 12 f2  23 6d 65 6e 75 70 74 72  |m$=""...#menuptr|
00003800  25 21 2d 32 34 3d 28 6d  65 6e 75 70 74 72 25 21  |%!-24=(menuptr%!|
00003810  2d 32 34 29 84 26 38 30  0d 12 fc 60 e7 68 61 6e  |-24).&80...`.han|
00003820  64 6c 65 25 3d 31 30 31  20 c8 99 20 43 72 4d 65  |dle%=101 .. CrMe|
00003830  6e 75 2c 2c 62 75 66 66  65 72 25 2c 6d 6f 75 73  |nu,,buffer%,mous|
00003840  65 78 25 2d 36 34 2c 39  36 2b 38 2a 34 34 20 8b  |ex%-64,96+8*44 .|
00003850  c8 99 20 43 72 4d 65 6e  75 2c 2c 62 75 66 66 65  |.. CrMenu,,buffe|
00003860  72 25 2c 6d 6f 75 73 65  78 25 2d 33 32 2c 6d 6f  |r%,mousex%-32,mo|
00003870  75 73 65 79 25 2b 31 36  0d 13 06 05 e1 0d 13 1a  |usey%+16........|
00003880  16 dd 20 f2 6d 65 6e 75  69 74 65 6d 28 74 65 78  |.. .menuitem(tex|
00003890  74 24 29 0d 13 24 10 e7  20 74 65 78 74 24 3d 22  |t$)..$.. text$="|
000038a0  22 20 e1 0d 13 2e 2a 66  6c 67 25 3d 30 3a 73 75  |" ....*flg%=0:su|
000038b0  62 6d 65 6e 75 25 3d 2d  31 3a 49 25 3d a7 74 65  |bmenu%=-1:I%=.te|
000038c0  78 74 24 2c 22 3a 22 29  3a e7 49 25 8c 0d 13 38  |xt$,":"):.I%...8|
000038d0  29 66 6c 67 25 3d a0 c1  74 65 78 74 24 2c 49 25  |)flg%=..text$,I%|
000038e0  2b 31 29 3a 74 65 78 74  24 3d c0 74 65 78 74 24  |+1):text$=.text$|
000038f0  2c 49 25 2d 31 29 0d 13  42 05 cd 0d 13 4c 17 49  |,I%-1)..B....L.I|
00003900  25 3d a7 74 65 78 74 24  2c 22 3e 22 29 3a e7 49  |%=.text$,">"):.I|
00003910  25 8c 0d 13 56 2d 73 75  62 6d 65 6e 75 25 3d a0  |%...V-submenu%=.|
00003920  c1 74 65 78 74 24 2c 49  25 2b 31 29 3a 74 65 78  |.text$,I%+1):tex|
00003930  74 24 3d c0 74 65 78 74  24 2c 49 25 2d 31 29 0d  |t$=.text$,I%-1).|
00003940  13 60 05 cd 0d 13 6a 13  6d 65 6e 75 70 74 72 25  |.`....j.menuptr%|
00003950  21 30 3d 66 6c 67 25 0d  13 74 17 6d 65 6e 75 70  |!0=flg%..t.menup|
00003960  74 72 25 21 34 3d 73 75  62 6d 65 6e 75 25 0d 13  |tr%!4=submenu%..|
00003970  7e 41 e7 74 65 78 74 24  3d 6d 24 28 39 29 80 46  |~A.text$=m$(9).F|
00003980  24 3d 22 22 20 6d 65 6e  75 70 74 72 25 21 38 3d  |$="" menuptr%!8=|
00003990  26 30 37 34 30 30 30 32  31 20 8b 6d 65 6e 75 70  |&07400021 .menup|
000039a0  74 72 25 21 38 3d 26 30  37 30 30 30 30 32 31 0d  |tr%!8=&07000021.|
000039b0  13 88 32 e7 a9 74 65 78  74 24 2a 31 36 2b 38 3e  |..2..text$*16+8>|
000039c0  62 75 66 66 65 72 25 21  31 36 20 62 75 66 66 65  |buffer%!16 buffe|
000039d0  72 25 21 31 36 3d a9 74  65 78 74 24 2a 31 36 2b  |r%!16=.text$*16+|
000039e0  38 0d 13 92 10 e7 a9 74  65 78 74 24 3e 31 32 20  |8......text$>12 |
000039f0  8c 0d 13 9c 32 6d 65 6e  75 70 74 72 25 21 38 3d  |....2menuptr%!8=|
00003a00  6d 65 6e 75 70 74 72 25  21 38 20 84 20 32 35 36  |menuptr%!8 . 256|
00003a10  3a 6d 65 6e 75 70 74 72  25 21 31 36 3d a9 74 65  |:menuptr%!16=.te|
00003a20  78 74 24 0d 13 a6 3e 6d  65 6e 75 70 74 72 25 21  |xt$...>menuptr%!|
00003a30  31 32 3d 69 6e 64 69 72  65 63 74 25 3a 24 69 6e  |12=indirect%:$in|
00003a40  64 69 72 65 63 74 25 3d  74 65 78 74 24 3a 69 6e  |direct%=text$:in|
00003a50  64 69 72 65 63 74 25 2b  3d a9 74 65 78 74 24 2b  |direct%+=.text$+|
00003a60  31 0d 13 b0 05 cc 0d 13  ba 18 24 28 6d 65 6e 75  |1.........$(menu|
00003a70  70 74 72 25 2b 31 32 29  3d 74 65 78 74 24 0d 13  |ptr%+12)=text$..|
00003a80  c4 05 cd 0d 13 ce 10 6d  65 6e 75 70 74 72 25 2b  |.......menuptr%+|
00003a90  3d 32 34 0d 13 d8 05 e1  0d 13 ec 19 dd 20 f2 6d  |=24.......... .m|
00003aa0  65 6e 75 73 65 6c 65 63  74 28 6d 65 6e 75 73 25  |enuselect(menus%|
00003ab0  29 0d 13 f6 2c c8 99 20  47 65 74 50 2c 2c 70 61  |)...,.. GetP,,pa|
00003ac0  6c 74 65 6d 70 25 3a 61  64 6a 75 73 74 25 3d 70  |ltemp%:adjust%=p|
00003ad0  61 6c 74 65 6d 70 25 21  38 20 80 20 31 0d 14 00  |altemp%!8 . 1...|
00003ae0  2d c8 99 20 44 63 4d 65  6e 75 2c 2c 62 75 66 66  |-.. DcMenu,,buff|
00003af0  65 72 25 2c 6d 65 6e 75  73 25 2c c4 32 30 30 2c  |er%,menus%,.200,|
00003b00  22 20 22 29 b8 2c 2c 2c  61 24 0d 14 0a 0e e7 20  |" ").,,,a$..... |
00003b10  61 24 3d 22 22 20 8c e1  0d 14 14 14 c8 8e 20 6d  |a$="" ........ m|
00003b20  65 6e 75 68 61 6e 64 6c  65 25 20 ca 0d 14 1e 0a  |enuhandle% .....|
00003b30  c9 20 70 69 63 25 0d 14  28 0b c8 8e 20 61 24 20  |. pic%..(... a$ |
00003b40  ca 0d 14 32 14 c9 20 6d  24 28 39 29 3a f2 63 61  |...2.. m$(9):.ca|
00003b50  6c 6c 46 53 49 0d 14 3c  05 cb 0d 14 46 09 c9 20  |llFSI..<....F.. |
00003b60  31 30 31 0d 14 50 0b c8  8e 20 61 24 20 ca 0d 14  |101..P... a$ ...|
00003b70  5a 19 c9 20 6d 24 28 31  34 29 3a 66 61 73 74 25  |Z.. m$(14):fast%|
00003b80  3d ac 66 61 73 74 25 0d  14 64 14 c9 20 6d 24 28  |=.fast%..d.. m$(|
00003b90  39 29 3a f2 63 61 6c 6c  46 53 49 0d 14 6e 0c c9  |9):.callFSI..n..|
00003ba0  20 6d 24 28 31 35 29 0d  14 78 46 73 74 61 74 65  | m$(15)..xFstate|
00003bb0  73 63 61 6c 65 25 3d 30  3a e3 49 25 3d 30 b8 39  |scale%=0:.I%=0.9|
00003bc0  3a 73 74 61 74 65 73 63  61 6c 65 25 2b 3d a4 67  |:statescale%+=.g|
00003bd0  65 74 69 63 6f 6e 73 74  61 74 65 28 73 63 61 6c  |eticonstate(scal|
00003be0  65 77 25 2c 49 25 29 3c  3c 49 25 3a ed 0d 14 82  |ew%,I%)<<I%:....|
00003bf0  3c e3 49 25 3d 31 30 b8  31 33 3a 73 74 61 74 65  |<.I%=10.13:state|
00003c00  73 63 61 6c 65 25 2b 3d  a4 67 65 74 69 63 6f 6e  |scale%+=.geticon|
00003c10  73 74 61 74 65 28 73 63  61 6c 65 77 25 2c 49 25  |state(scalew%,I%|
00003c20  2b 36 29 3c 3c 49 25 3a  ed 0d 14 8c 42 73 74 61  |+6)<<I%:....Bsta|
00003c30  74 65 70 72 6f 63 25 3d  30 3a e3 49 25 3d 30 b8  |teproc%=0:.I%=0.|
00003c40  37 3a 73 74 61 74 65 70  72 6f 63 25 2b 3d a4 67  |7:stateproc%+=.g|
00003c50  65 74 69 63 6f 6e 73 74  61 74 65 28 70 72 6f 63  |eticonstate(proc|
00003c60  25 2c 49 25 29 3c 3c 49  25 3a ed 0d 14 96 49 73  |%,I%)<<I%:....Is|
00003c70  74 61 74 65 6f 75 74 70  75 74 25 3d 30 3a e3 49  |tateoutput%=0:.I|
00003c80  25 3d 30 b8 31 35 3a 73  74 61 74 65 6f 75 74 70  |%=0.15:stateoutp|
00003c90  75 74 25 2b 3d a4 67 65  74 69 63 6f 6e 73 74 61  |ut%+=.geticonsta|
00003ca0  74 65 28 6f 75 74 70 75  74 25 2c 49 25 29 3c 3c  |te(output%,I%)<<|
00003cb0  49 25 3a ed 0d 14 a0 21  41 25 3d ae 22 3c 43 68  |I%:....!A%=."<Ch|
00003cc0  61 6e 67 65 46 53 49 24  44 69 72 3e 2e 43 68 6f  |angeFSI$Dir>.Cho|
00003cd0  69 63 65 73 22 0d 14 aa  32 f1 23 41 25 2c 66 61  |ices"...2.#A%,fa|
00003ce0  73 74 25 2c 73 74 61 74  65 73 63 61 6c 65 25 2c  |st%,statescale%,|
00003cf0  73 74 61 74 65 70 72 6f  63 25 2c 73 74 61 74 65  |stateproc%,state|
00003d00  6f 75 74 70 75 74 25 0d  14 b4 53 f1 23 41 25 2c  |output%...S.#A%,|
00003d10  24 70 25 28 30 29 2c a4  6c 6f 63 61 6c 65 5f 63  |$p%(0),.locale_c|
00003d20  6f 6e 76 65 72 74 28 24  70 25 28 31 29 2c 64 65  |onvert($p%(1),de|
00003d30  63 69 6d 61 6c 5f 70 6f  69 6e 74 24 2c 22 2e 22  |cimal_point$,"."|
00003d40  29 2c 24 70 25 28 32 29  2c 24 61 64 6d 6f 64 65  |),$p%(2),$admode|
00003d50  25 2c 24 61 64 73 70 63  6c 25 0d 14 be 24 f1 23  |%,$adspcl%...$.#|
00003d60  41 25 2c 24 73 25 28 30  29 2c 24 73 25 28 31 29  |A%,$s%(0),$s%(1)|
00003d70  2c 24 73 25 28 32 29 2c  24 73 25 28 33 29 0d 14  |,$s%(2),$s%(3)..|
00003d80  c8 08 d9 23 41 25 0d 14  d2 1c c9 20 6d 24 28 31  |...#A%..... m$(1|
00003d90  36 29 3a f2 63 68 65 63  6b 61 6e 64 66 69 6e 69  |6):.checkandfini|
00003da0  73 68 0d 14 dc 05 cb 0d  14 e6 05 cb 0d 14 f0 30  |sh.............0|
00003db0  e7 61 64 6a 75 73 74 25  20 f2 63 68 65 63 6b 6d  |.adjust% .checkm|
00003dc0  6f 75 73 65 28 30 2c 30  2c 32 2c 72 6d 65 6e 75  |ouse(0,0,2,rmenu|
00003dd0  68 61 6e 64 6c 65 25 2c  30 2c 30 29 0d 14 fa 05  |handle%,0,0)....|
00003de0  e1 0d 15 0e 20 dd 20 a4  63 72 65 61 74 65 5f 77  |.... . .create_w|
00003df0  69 6e 64 6f 77 28 78 2c  79 2c 74 69 74 6c 65 24  |indow(x,y,title$|
00003e00  29 0d 15 18 2b 78 3d 78  2a bb 24 7a 25 28 30 29  |)...+x=x*.$z%(0)|
00003e10  81 bb 24 7a 25 28 31 29  3a 79 3d 79 2a bb 24 7a  |..$z%(1):y=y*.$z|
00003e20  25 28 30 29 81 bb 24 7a  25 28 31 29 0d 15 22 20  |%(0)..$z%(1).." |
00003e30  21 7a 25 3d 30 3a 7a 25  21 34 3d 2d 79 3a 7a 25  |!z%=0:z%!4=-y:z%|
00003e40  21 38 3d 78 3a 7a 25 21  31 32 3d 30 0d 15 2c 24  |!8=x:z%!12=0..,$|
00003e50  7a 25 21 34 30 3d 30 3a  7a 25 21 34 34 3d 2d 79  |z%!40=0:z%!44=-y|
00003e60  3a 7a 25 21 34 38 3d 78  3a 7a 25 21 35 32 3d 30  |:z%!48=x:z%!52=0|
00003e70  0d 15 36 25 e7 78 3c 31  32 38 20 84 20 79 3c 31  |..6%.x<128 . y<1|
00003e80  32 38 20 7a 25 3f 33 35  3d 30 20 8b 7a 25 3f 33  |28 z%?35=0 .z%?3|
00003e90  35 3d 32 35 35 0d 15 40  29 24 61 64 74 69 74 6c  |5=255..@)$adtitl|
00003ea0  65 25 3d 22 22 3a c8 99  20 43 72 65 61 74 65 57  |e%="":.. CreateW|
00003eb0  2c 2c 7a 25 20 b8 20 68  61 6e 64 6c 65 25 0d 15  |,,z% . handle%..|
00003ec0  4a 14 24 61 64 74 69 74  6c 65 25 3d 74 69 74 6c  |J.$adtitle%=titl|
00003ed0  65 24 0d 15 54 0c 3d 68  61 6e 64 6c 65 25 0d 15  |e$..T.=handle%..|
00003ee0  68 18 dd 20 f2 70 6f 70  75 70 28 68 61 6e 64 6c  |h.. .popup(handl|
00003ef0  65 25 2c 66 25 29 0d 15  72 31 c8 99 20 22 4f 53  |e%,f%)..r1.. "OS|
00003f00  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
00003f10  65 22 2c 2d 31 2c 34 20  b8 20 2c 2c 6d 6f 64 65  |e",-1,4 . ,,mode|
00003f20  78 73 68 69 66 74 25 0d  15 7c 31 c8 99 20 22 4f  |xshift%..|1.. "O|
00003f30  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
00003f40  6c 65 22 2c 2d 31 2c 35  20 b8 20 2c 2c 6d 6f 64  |le",-1,5 . ,,mod|
00003f50  65 79 73 68 69 66 74 25  0d 15 86 30 c8 99 20 22  |eyshift%...0.. "|
00003f60  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
00003f70  62 6c 65 22 2c 2d 31 2c  31 31 20 b8 20 2c 2c 72  |ble",-1,11 . ,,r|
00003f80  69 67 68 74 73 63 72 25  0d 15 90 2e c8 99 20 22  |ightscr%...... "|
00003f90  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
00003fa0  62 6c 65 22 2c 2d 31 2c  31 32 20 b8 20 2c 2c 74  |ble",-1,12 . ,,t|
00003fb0  6f 70 73 63 72 25 0d 15  9a 41 72 69 67 68 74 73  |opscr%...Arights|
00003fc0  63 72 25 3d 72 69 67 68  74 73 63 72 25 3c 3c 6d  |cr%=rightscr%<<m|
00003fd0  6f 64 65 78 73 68 69 66  74 25 3a 74 6f 70 73 63  |odexshift%:topsc|
00003fe0  72 25 3d 74 6f 70 73 63  72 25 3c 3c 6d 6f 64 65  |r%=topscr%<<mode|
00003ff0  79 73 68 69 66 74 25 0d  15 a4 12 f2 67 65 74 77  |yshift%.....getw|
00004000  28 68 61 6e 64 6c 65 25  29 0d 15 ae 39 78 6f 25  |(handle%)...9xo%|
00004010  3d 72 69 67 68 74 73 63  72 25 2f 32 2d 28 78 30  |=rightscr%/2-(x0|
00004020  25 2b 78 31 25 29 2f 32  3a 79 6f 25 3d 74 6f 70  |%+x1%)/2:yo%=top|
00004030  73 63 72 25 2f 32 2d 28  79 30 25 2b 79 31 25 29  |scr%/2-(y0%+y1%)|
00004040  2f 32 0d 15 b8 46 f2 6f  70 65 6e 5f 77 69 6e 64  |/2...F.open_wind|
00004050  6f 77 28 68 61 6e 64 6c  65 25 2c 78 30 25 2b 78  |ow(handle%,x0%+x|
00004060  6f 25 2c 79 30 25 2b 79  6f 25 2c 78 31 25 2b 78  |o%,y0%+yo%,x1%+x|
00004070  6f 25 2c 79 31 25 2b 79  6f 25 2c 73 63 78 25 2c  |o%,y1%+yo%,scx%,|
00004080  73 63 79 25 2c 66 25 29  0d 15 c2 05 e1 0d 15 d6  |scy%,f%)........|
00004090  3e dd 20 f2 6f 70 65 6e  5f 77 69 6e 64 6f 77 28  |>. .open_window(|
000040a0  68 61 6e 64 6c 65 25 2c  78 30 25 2c 79 30 25 2c  |handle%,x0%,y0%,|
000040b0  78 31 25 2c 79 31 25 2c  73 63 78 25 2c 73 63 79  |x1%,y1%,scx%,scy|
000040c0  25 2c 62 68 61 6e 64 6c  65 25 29 0d 15 e0 11 e7  |%,bhandle%).....|
000040d0  68 61 6e 64 6c 65 25 3d  2d 31 8c e1 0d 15 ea 1f  |handle%=-1......|
000040e0  71 25 21 30 3d 68 61 6e  64 6c 65 25 3a 71 25 21  |q%!0=handle%:q%!|
000040f0  32 38 3d 62 68 61 6e 64  6c 65 25 0d 15 f4 29 71  |28=bhandle%...)q|
00004100  25 21 34 3d 78 30 25 3a  71 25 21 38 3d 79 30 25  |%!4=x0%:q%!8=y0%|
00004110  3a 71 25 21 31 32 3d 78  31 25 3a 71 25 21 31 36  |:q%!12=x1%:q%!16|
00004120  3d 79 31 25 0d 15 fe 19  71 25 21 32 30 3d 73 63  |=y1%....q%!20=sc|
00004130  78 25 3a 71 25 21 32 34  3d 73 63 79 25 0d 16 08  |x%:q%!24=scy%...|
00004140  10 c8 99 20 4f 70 65 6e  57 2c 2c 71 25 0d 16 12  |... OpenW,,q%...|
00004150  05 e1 0d 16 26 14 dd 20  f2 67 65 74 77 28 68 61  |....&.. .getw(ha|
00004160  6e 64 6c 65 25 29 0d 16  30 1b 21 71 25 3d 68 61  |ndle%)..0.!q%=ha|
00004170  6e 64 6c 65 25 3a c8 99  20 47 65 74 57 2c 2c 71  |ndle%:.. GetW,,q|
00004180  25 0d 16 3a 2b f2 69 6e  66 6f 28 71 25 2b 34 29  |%..:+.info(q%+4)|
00004190  3a 62 68 61 6e 64 6c 65  25 3d 71 25 21 32 38 3a  |:bhandle%=q%!28:|
000041a0  66 6c 61 67 73 25 3d 71  25 21 33 32 0d 16 44 05  |flags%=q%!32..D.|
000041b0  e1 0d 16 58 0f dd 20 f2  69 6e 66 6f 28 71 25 29  |...X.. .info(q%)|
000041c0  0d 16 62 3d 78 30 25 3d  21 71 25 3a 79 30 25 3d  |..b=x0%=!q%:y0%=|
000041d0  71 25 21 34 3a 78 31 25  3d 71 25 21 38 3a 79 31  |q%!4:x1%=q%!8:y1|
000041e0  25 3d 71 25 21 31 32 3a  73 63 78 25 3d 71 25 21  |%=q%!12:scx%=q%!|
000041f0  31 36 3a 73 63 79 25 3d  71 25 21 32 30 0d 16 6c  |16:scy%=q%!20..l|
00004200  1d 62 78 25 3d 78 30 25  2d 73 63 78 25 3a 62 79  |.bx%=x0%-scx%:by|
00004210  25 3d 79 31 25 2d 73 63  79 25 0d 16 76 05 e1 0d  |%=y1%-scy%..v...|
00004220  16 8a 1d dd 20 f2 72 65  64 72 61 77 5f 77 69 6e  |.... .redraw_win|
00004230  64 6f 77 28 68 61 6e 64  6c 65 25 29 0d 16 94 14  |dow(handle%)....|
00004240  e7 20 68 61 6e 64 6c 65  25 3d 70 69 63 25 20 8c  |. handle%=pic% .|
00004250  0d 16 9e 3f 21 66 61 63  74 6f 72 73 25 3d 21 69  |...?!factors%=!i|
00004260  66 61 63 74 6f 72 73 25  2a bb 24 7a 25 28 30 29  |factors%*.$z%(0)|
00004270  3a 66 61 63 74 6f 72 73  25 21 34 3d 69 66 61 63  |:factors%!4=ifac|
00004280  74 6f 72 73 25 21 34 2a  bb 24 7a 25 28 30 29 0d  |tors%!4*.$z%(0).|
00004290  16 a8 43 66 61 63 74 6f  72 73 25 21 38 3d 69 66  |..Cfactors%!8=if|
000042a0  61 63 74 6f 72 73 25 21  38 2a bb 24 7a 25 28 31  |actors%!8*.$z%(1|
000042b0  29 3a 66 61 63 74 6f 72  73 25 21 31 32 3d 69 66  |):factors%!12=if|
000042c0  61 63 74 6f 72 73 25 21  31 32 2a bb 24 7a 25 28  |actors%!12*.$z%(|
000042d0  31 29 0d 16 b2 41 f2 72  65 64 75 63 65 28 21 66  |1)...A.reduce(!f|
000042e0  61 63 74 6f 72 73 25 2c  66 61 63 74 6f 72 73 25  |actors%,factors%|
000042f0  21 38 29 3a f2 72 65 64  75 63 65 28 66 61 63 74  |!8):.reduce(fact|
00004300  6f 72 73 25 21 34 2c 66  61 63 74 6f 72 73 25 21  |ors%!4,factors%!|
00004310  31 32 29 0d 16 bc 0f 21  71 25 3d 68 61 6e 64 6c  |12)....!q%=handl|
00004320  65 25 0d 16 c6 1a c8 99  20 52 65 64 72 61 77 57  |e%...... RedrawW|
00004330  2c 2c 71 25 20 b8 20 6d  6f 72 65 25 0d 16 d0 2c  |,,q% . more%...,|
00004340  f2 69 6e 66 6f 28 71 25  2b 34 29 3a 62 79 25 3d  |.info(q%+4):by%=|
00004350  62 79 25 2d a8 28 79 2a  bb 24 7a 25 28 30 29 81  |by%-.(y*.$z%(0).|
00004360  bb 24 7a 25 28 31 29 29  0d 16 da 0c c8 95 20 6d  |.$z%(1))...... m|
00004370  6f 72 65 25 0d 16 e4 30  c8 99 20 73 70 6f 70 25  |ore%...0.. spop%|
00004380  2c 26 31 33 34 2c 73 61  72 25 2c 6e 24 2c 62 78  |,&134,sar%,n$,bx|
00004390  25 2c 62 79 25 2c 2c 66  61 63 74 6f 72 73 25 2c  |%,by%,,factors%,|
000043a0  73 70 78 25 0d 16 ee 19  c8 99 20 47 65 74 52 25  |spx%...... GetR%|
000043b0  2c 30 2c 71 25 20 b8 20  6d 6f 72 65 25 0d 16 f8  |,0,q% . more%...|
000043c0  05 ce 0d 17 02 05 cd 0d  17 0c 05 e1 0d 17 20 22  |.............. "|
000043d0  dd 20 a4 67 65 74 69 63  6f 6e 73 74 61 74 65 28  |. .geticonstate(|
000043e0  68 61 6e 64 6c 65 25 2c  69 63 6f 6e 25 29 0d 17  |handle%,icon%)..|
000043f0  2a 26 21 71 25 3d 68 61  6e 64 6c 65 25 3a 71 25  |*&!q%=handle%:q%|
00004400  21 34 3d 69 63 6f 6e 25  3a c8 99 20 47 65 74 49  |!4=icon%:.. GetI|
00004410  2c 2c 71 25 0d 17 34 12  3d 71 25 21 32 34 3e 3e  |,,q%..4.=q%!24>>|
00004420  32 31 20 80 20 31 0d 17  48 12 dd 20 f2 67 65 74  |21 . 1..H.. .get|
00004430  6d 6f 64 65 69 6e 66 6f  0d 17 52 3e c8 99 22 58  |modeinfo..R>.."X|
00004440  57 69 6d 70 5f 52 65 61  64 50 69 78 54 72 61 6e  |Wimp_ReadPixTran|
00004450  73 22 2c 26 31 30 30 2c  73 61 72 25 2c 6e 24 2c  |s",&100,sar%,n$,|
00004460  2c 2c 2c 69 66 61 63 74  6f 72 73 25 2c 70 69 78  |,,,ifactors%,pix|
00004470  74 72 61 6e 73 25 0d 17  5c 23 c8 99 20 73 70 6f  |trans%..\#.. spo|
00004480  70 25 2c 26 31 31 38 2c  73 61 72 25 2c 6e 24 20  |p%,&118,sar%,n$ |
00004490  b8 20 2c 2c 73 70 74 72  25 0d 17 66 13 e7 20 73  |. ,,sptr%..f.. s|
000044a0  70 74 72 25 21 33 32 3d  34 34 20 8c 0d 17 70 0d  |ptr%!32=44 ...p.|
000044b0  70 61 6c 70 74 72 25 3d  30 0d 17 7a 05 cc 0d 17  |palptr%=0..z....|
000044c0  84 1a e3 20 67 72 61 62  25 3d 30 20 b8 20 32 30  |... grab%=0 . 20|
000044d0  34 38 2d 38 20 88 20 38  0d 17 8e 28 70 61 6c 74  |48-8 . 8...(palt|
000044e0  65 6d 70 25 21 28 67 72  61 62 25 3e 3e 31 29 3d  |emp%!(grab%>>1)=|
000044f0  73 70 74 72 25 21 28 67  72 61 62 25 2b 34 34 29  |sptr%!(grab%+44)|
00004500  0d 17 98 05 ed 0d 17 a2  14 70 61 6c 70 74 72 25  |.........palptr%|
00004510  3d 70 61 6c 74 65 6d 70  25 0d 17 ac 05 cd 0d 17  |=paltemp%.......|
00004520  b6 1f e3 51 25 3d 30 b8  32 35 35 3a 70 69 78 74  |...Q%=0.255:pixt|
00004530  72 61 6e 73 25 3f 51 25  3d 51 25 3a ed 0d 17 c0  |rans%?Q%=Q%:....|
00004540  17 e7 73 70 74 72 25 21  33 32 3d 34 34 2b 32 30  |..sptr%!32=44+20|
00004550  34 38 20 8c 0d 17 ca 35  e3 51 25 3d 30 b8 32 35  |48 ....5.Q%=0.25|
00004560  35 3a c8 99 63 74 72 61  6e 25 2c 70 61 6c 70 74  |5:..ctran%,palpt|
00004570  72 25 21 28 51 25 3c 3c  32 29 b8 70 69 78 74 72  |r%!(Q%<<2).pixtr|
00004580  61 6e 73 25 3f 51 25 3a  ed 0d 17 d4 05 cc 0d 17  |ans%?Q%:........|
00004590  de 3a c8 99 20 22 43 6f  6c 6f 75 72 54 72 61 6e  |.:.. "ColourTran|
000045a0  73 5f 53 65 6c 65 63 74  54 61 62 6c 65 22 2c 6d  |s_SelectTable",m|
000045b0  2c 70 61 6c 70 74 72 25  2c 2d 31 2c 2d 31 2c 70  |,palptr%,-1,-1,p|
000045c0  69 78 74 72 61 6e 73 25  0d 17 e8 05 cd 0d 17 f2  |ixtrans%........|
000045d0  36 73 70 78 25 3d 2d 31  3a e3 51 25 3d 30 b8 32  |6spx%=-1:.Q%=0.2|
000045e0  35 35 3a e7 70 69 78 74  72 61 6e 73 25 3f 51 25  |55:.pixtrans%?Q%|
000045f0  3c 3e 51 25 20 73 70 78  25 3d 70 69 78 74 72 61  |<>Q% spx%=pixtra|
00004600  6e 73 25 0d 17 fc 05 ed  0d 18 06 05 e1 0d 18 1a  |ns%.............|
00004610  11 dd 20 a4 64 65 64 75  63 65 6d 6f 64 65 0d 18  |.. .deducemode..|
00004620  24 0b ea 20 6d 2c 78 2c  79 0d 18 2e 20 e7 a4 67  |$.. m,x,y... ..g|
00004630  65 74 69 63 6f 6e 73 74  61 74 65 28 6f 75 74 70  |eticonstate(outp|
00004640  75 74 25 2c 31 35 29 20  8c 0d 18 38 1a c8 99 26  |ut%,15) ...8...&|
00004650  33 35 2c 2d 31 2c 39 20  b8 2c 2c 6d 3a e7 6d 3e  |35,-1,9 .,,m:.m>|
00004660  33 20 8c 0d 18 42 23 c8  99 26 33 35 2c 2d 31 2c  |3 ...B#..&35,-1,|
00004670  34 20 b8 2c 2c 78 3a c8  99 26 33 35 2c 2d 31 2c  |4 .,,x:..&35,-1,|
00004680  35 20 b8 2c 2c 79 0d 18  4c 1b 78 3d 31 38 30 2f  |5 .,,y..L.x=180/|
00004690  28 32 5e 78 29 3a 79 3d  31 38 30 2f 28 32 5e 79  |(2^x):y=180/(2^y|
000046a0  29 0d 18 56 1d 3d 22 53  22 2b c3 28 32 5e 6d 29  |)..V.="S"+.(2^m)|
000046b0  2b 22 2c 22 2b c3 78 2b  22 2c 22 2b c3 79 0d 18  |+","+.x+","+.y..|
000046c0  60 05 cc 0d 18 6a 07 3d  c3 eb 0d 18 74 05 cd 0d  |`....j.=....t...|
000046d0  18 7e 05 cc 0d 18 88 0d  3d 24 61 64 6d 6f 64 65  |.~......=$admode|
000046e0  25 0d 18 92 05 cd 0d 18  9c 06 3d 30 0d 18 b0 15  |%.........=0....|
000046f0  dd 20 f2 73 68 6f 77 73  63 61 6c 65 74 6f 66 69  |. .showscaletofi|
00004700  74 0d 18 ba 0b ea 20 6d  2c 78 2c 79 0d 18 c4 18  |t..... m,x,y....|
00004710  24 61 64 6d 6f 64 65 25  3d a4 64 65 64 75 63 65  |$admode%=.deduce|
00004720  6d 6f 64 65 0d 18 ce 14  e7 3f 61 64 6d 6f 64 65  |mode.....?admode|
00004730  25 3d 97 22 53 22 20 8c  0d 18 d8 29 e7 bb c1 24  |%=."S" ....)...$|
00004740  61 64 6d 6f 64 65 25 2c  35 29 3e bb c1 24 61 64  |admode%,5)>..$ad|
00004750  6d 6f 64 65 25 2c 38 29  20 78 3d 36 20 8b 78 3d  |mode%,8) x=6 .x=|
00004760  30 0d 18 e2 20 e7 bb c1  24 61 64 6d 6f 64 65 25  |0... ...$admode%|
00004770  2c 32 29 3e 31 36 20 78  2b 3d 35 20 8b 78 2b 3d  |,2)>16 x+=5 .x+=|
00004780  34 0d 18 ec 2f c8 99 26  33 35 2c 2d 31 2c 31 31  |4.../..&35,-1,11|
00004790  20 b8 2c 2c 74 6f 66 69  74 78 3a c8 99 26 33 35  | .,,tofitx:..&35|
000047a0  2c 2d 31 2c 31 32 20 b8  2c 2c 74 6f 66 69 74 79  |,-1,12 .,,tofity|
000047b0  0d 18 f6 05 cc 0d 19 00  0f 6d 3d bb 24 61 64 6d  |.........m=.$adm|
000047c0  6f 64 65 25 0d 19 0a 2d  c8 99 26 33 35 2c 6d 2c  |ode%...-..&35,m,|
000047d0  31 31 20 b8 2c 2c 74 6f  66 69 74 78 3a c8 99 26  |11 .,,tofitx:..&|
000047e0  33 35 2c 6d 2c 31 32 20  b8 2c 2c 74 6f 66 69 74  |35,m,12 .,,tofit|
000047f0  79 0d 19 14 2f c8 99 26  33 35 2c 6d 2c 34 20 b8  |y.../..&35,m,4 .|
00004800  2c 2c 78 3a c8 99 26 33  35 2c 6d 2c 35 20 b8 2c  |,,x:..&35,m,5 .,|
00004810  2c 79 3a e7 79 3e 78 20  78 3d 36 20 8b 78 3d 30  |,y:.y>x x=6 .x=0|
00004820  0d 19 1e 17 c8 99 26 33  35 2c 6d 2c 39 20 b8 2c  |......&35,m,9 .,|
00004830  2c 79 3a 78 2b 3d 79 0d  19 28 05 cd 0d 19 32 3f  |,y:x+=y..(....2?|
00004840  74 6f 66 69 74 78 2b 3d  31 3a 74 6f 66 69 74 79  |tofitx+=1:tofity|
00004850  2b 3d 31 3a 24 61 64 73  63 61 6c 65 25 3d 6d 24  |+=1:$adscale%=m$|
00004860  28 31 37 29 2b c3 74 6f  66 69 74 78 2b 6d 24 28  |(17)+.tofitx+m$(|
00004870  31 38 29 2b c3 74 6f 66  69 74 79 0d 19 3c 3d 71  |18)+.tofity..<=q|
00004880  25 21 31 32 3d 31 3c 3c  32 31 3a 21 71 25 3d 6f  |%!12=1<<21:!q%=o|
00004890  75 74 70 75 74 25 3a e3  49 25 3d 30 b8 31 31 3a  |utput%:.I%=0.11:|
000048a0  e7 49 25 3d 78 20 71 25  21 38 3d 31 3c 3c 32 31  |.I%=x q%!8=1<<21|
000048b0  20 8b 71 25 21 38 3d 30  0d 19 46 19 71 25 21 34  | .q%!8=0..F.q%!4|
000048c0  3d 49 25 3a c8 99 20 53  65 74 49 2c 2c 71 25 3a  |=I%:.. SetI,,q%:|
000048d0  ed 0d 19 50 05 e1 0d 19  64 16 dd 20 f2 6b 69 6c  |...P....d.. .kil|
000048e0  6c 63 75 72 72 65 6e 74  28 6d 24 29 0d 19 6e 22  |lcurrent(m$)..n"|
000048f0  71 25 21 31 32 3d 31 3c  3c 32 31 3a 21 71 25 3d  |q%!12=1<<21:!q%=|
00004900  6f 75 74 70 75 74 25 3a  71 25 21 38 3d 30 0d 19  |output%:q%!8=0..|
00004910  78 17 71 25 21 34 3d 31  37 3a c8 99 20 53 65 74  |x.q%!4=17:.. Set|
00004920  49 2c 2c 71 25 0d 19 82  0f 24 61 64 6d 6f 64 65  |I,,q%....$admode|
00004930  25 3d 6d 24 0d 19 8c 05  e1 0d 19 a0 2b dd a4 5a  |%=m$........+..Z|
00004940  53 28 49 25 29 ea 41 24  3a f5 41 24 2b 3d bd 3f  |S(I%).A$:.A$+=.?|
00004950  49 25 3a 49 25 2b 3d 31  3a fd 3f 49 25 3c 31 34  |I%:I%+=1:.?I%<14|
00004960  3a 3d 41 24 0d 19 b4 0f  dd 20 f2 65 72 72 6f 72  |:=A$..... .error|
00004970  62 6f 78 0d 19 be 0f c8  99 20 44 72 61 67 2c 2c  |box...... Drag,,|
00004980  2d 31 0d 19 c8 32 21 62  75 66 66 65 72 25 3d 9f  |-1...2!buffer%=.|
00004990  3a 24 28 62 75 66 66 65  72 25 2b 34 29 3d f6 24  |:$(buffer%+4)=.$|
000049a0  2b 22 20 28 63 6f 64 65  20 22 2b c3 9e 2b 22 29  |+" (code "+..+")|
000049b0  22 2b bd 30 0d 19 d2 32  c8 99 20 22 57 69 6d 70  |"+.0...2.. "Wimp|
000049c0  5f 52 65 70 6f 72 74 45  72 72 6f 72 22 2c 62 75  |_ReportError",bu|
000049d0  66 66 65 72 25 2c 25 31  31 2c 6d 24 28 32 30 29  |ffer%,%11,m$(20)|
000049e0  20 b8 20 2c 41 25 0d 19  dc 2b e7 41 25 3d 32 20  | . ,A%...+.A%=2 |
000049f0  f2 72 65 6d 6f 76 65 61  72 65 61 3a c8 99 20 22  |.removearea:.. "|
00004a00  57 69 6d 70 5f 43 6c 6f  73 65 44 6f 77 6e 22 3a  |Wimp_CloseDown":|
00004a10  e0 0d 19 e6 05 e1 0d 1a  cc 53 dd 20 a4 43 68 61  |.........S. .Cha|
00004a20  6e 67 65 46 53 49 28 41  24 2c 73 70 72 69 74 65  |ngeFSI(A$,sprite|
00004a30  61 72 65 61 25 2c 77 6f  72 6b 73 70 61 63 65 25  |area%,workspace%|
00004a40  2c 77 6f 72 6b 6c 69 6d  69 74 25 2c 6f 6b 73 61  |,worklimit%,oksa|
00004a50  76 65 25 2c 6f 6b 69 6e  66 6f 25 2c f8 20 72 61  |ve%,okinfo%,. ra|
00004a60  6d 25 2c 66 61 73 74 25  29 0d 1a d6 4d ea 20 41  |m%,fast%)...M. A|
00004a70  24 28 29 2c 72 25 28 29  2c 67 25 28 29 2c 62 25  |$(),r%(),g%(),b%|
00004a80  28 29 2c 72 70 61 6c 25  28 29 2c 67 70 61 6c 25  |(),rpal%(),gpal%|
00004a90  28 29 2c 62 70 61 6c 25  28 29 2c 74 61 62 6c 65  |(),bpal%(),table|
00004aa0  25 28 29 2c 63 6c 25 28  29 2c 78 6c 25 28 29 2c  |%(),cl%(),xl%(),|
00004ab0  78 6c 32 25 28 29 0d 1a  e0 44 ea 20 78 70 25 28  |xl2%()...D. xp%(|
00004ac0  29 2c 72 6d 25 28 29 2c  72 6d 31 25 28 29 2c 72  |),rm%(),rm1%(),r|
00004ad0  6d 32 25 28 29 2c 76 61  6c 73 25 28 29 2c 6e 6c  |m2%(),vals%(),nl|
00004ae0  25 28 29 2c 41 25 28 29  2c 42 25 28 29 2c 6e 65  |%(),A%(),B%(),ne|
00004af0  77 25 28 29 2c 73 74 25  28 29 0d 1a ea 24 c8 95  |w%(),st%()...$..|
00004b00  c0 41 24 2c 31 29 3c 3e  22 20 22 80 a9 41 24 3c  |.A$,1)<>" "..A$<|
00004b10  3e 30 20 41 24 3d c1 41  24 2c 32 29 3a ce 0d 1a  |>0 A$=.A$,2):...|
00004b20  f4 1c c8 95 c0 41 24 2c  31 29 3d 22 20 22 20 41  |.....A$,1)=" " A|
00004b30  24 3d c1 41 24 2c 32 29  3a ce 0d 1a fe 1a c8 95  |$=.A$,2):.......|
00004b40  c2 41 24 2c 31 29 3d 22  20 22 20 41 24 3d c0 41  |.A$,1)=" " A$=.A|
00004b50  24 29 3a ce 0d 1b 08 1a  e7 a4 75 63 28 c0 41 24  |$):.......uc(.A$|
00004b60  2c 35 29 29 3d 22 2d 51  55 49 54 22 20 8c 0d 1b  |,5))="-QUIT" ...|
00004b70  12 2e 41 24 3d c1 41 24  2c 37 29 3a c8 95 c0 41  |..A$=.A$,7):...A|
00004b80  24 2c 31 29 3c 3e 22 20  22 80 a9 41 24 3c 3e 30  |$,1)<>" "..A$<>0|
00004b90  20 41 24 3d c1 41 24 2c  32 29 3a ce 0d 1b 1c 1c  | A$=.A$,2):.....|
00004ba0  c8 95 c0 41 24 2c 31 29  3d 22 20 22 20 41 24 3d  |...A$,1)=" " A$=|
00004bb0  c1 41 24 2c 32 29 3a ce  0d 1b 26 05 cd 0d 1b 30  |.A$,2):...&....0|
00004bc0  20 de 20 41 24 28 31 30  30 29 3a 41 52 47 25 3d  | . A$(100):ARG%=|
00004bd0  30 3a 42 25 3d a7 41 24  2c 22 20 22 29 0d 1b 3a  |0:B%=.A$," ")..:|
00004be0  0c c8 95 20 42 25 3c 3e  30 0d 1b 44 2b 41 52 47  |... B%<>0..D+ARG|
00004bf0  25 2b 3d 31 3a 41 24 28  41 52 47 25 29 3d c0 41  |%+=1:A$(ARG%)=.A|
00004c00  24 2c 42 25 2d 31 29 3a  41 24 3d c1 41 24 2c 42  |$,B%-1):A$=.A$,B|
00004c10  25 2b 31 29 0d 1b 4e 1d  c8 95 20 c0 41 24 2c 31  |%+1)..N... .A$,1|
00004c20  29 3d 22 20 22 3a 41 24  3d c1 41 24 2c 32 29 3a  |)=" ":A$=.A$,2):|
00004c30  ce 0d 1b 58 0f 42 25 3d  a7 41 24 2c 22 20 22 29  |...X.B%=.A$," ")|
00004c40  0d 1b 62 05 ce 0d 1b 6c  1f e7 41 24 3c 3e 22 22  |..b....l..A$<>""|
00004c50  20 41 52 47 25 2b 3d 31  3a 41 24 28 41 52 47 25  | ARG%+=1:A$(ARG%|
00004c60  29 3d 41 24 0d 1b 76 58  69 6e 76 65 72 74 25 3d  |)=A$..vXinvert%=|
00004c70  a3 3a 72 61 6e 67 65 25  3d a3 3a 73 68 61 72 70  |.:range%=.:sharp|
00004c80  65 6e 25 3d a3 3a 69 6e  66 6f 25 3d a3 3a 63 61  |en%=.:info%=.:ca|
00004c90  63 68 65 25 3d a3 3a 63  61 63 68 65 61 72 65 61  |che%=.:cachearea|
00004ca0  6e 75 6d 62 65 72 25 3d  30 3a 64 69 74 68 65 72  |number%=0:dither|
00004cb0  25 3d b9 3a 62 6c 61 63  6b 25 3d a3 0d 1b 80 43  |%=.:black%=....C|
00004cc0  68 69 73 74 25 3d a3 3a  65 71 75 61 6c 25 3d a3  |hist%=.:equal%=.|
00004cd0  3a 76 66 6c 69 70 25 3d  a3 3a 68 66 6c 69 70 25  |:vflip%=.:hflip%|
00004ce0  3d a3 3a 73 63 61 6c 65  25 3d b9 3a 73 63 61 6c  |=.:scale%=.:scal|
00004cf0  65 6f 25 3d b9 3a 73 63  72 61 70 66 25 3d a3 0d  |eo%=.:scrapf%=..|
00004d00  1b 8a 36 67 61 6d 6d 61  3d 31 3a 72 6f 74 61 74  |..6gamma=1:rotat|
00004d10  65 25 3d a3 3a 6d 61 78  25 3d 32 30 30 30 30 30  |e%=.:max%=200000|
00004d20  30 30 3a 62 72 69 67 68  74 25 3d 31 35 3a 6c 6f  |00:bright%=15:lo|
00004d30  63 6b 25 3d a3 0d 1b 94  1e 72 77 74 3d 2e 32 39  |ck%=.....rwt=.29|
00004d40  39 3a 67 77 74 3d 2e 35  38 37 3a 62 77 74 3d 2e  |9:gwt=.587:bwt=.|
00004d50  31 31 34 0d 1b 9e 0d e7  41 52 47 25 3c 33 20 8c  |114.....ARG%<3 .|
00004d60  0d 1b a8 4a f1 22 43 68  61 6e 67 65 46 53 49 20  |...J."ChangeFSI |
00004d70  69 6e 74 65 72 61 63 74  69 76 65 20 69 6e 70 75  |interactive inpu|
00004d80  74 20 28 72 65 61 64 20  46 53 49 69 6e 66 6f 20  |t (read FSIinfo |
00004d90  66 6f 72 20 63 6f 6d 6d  61 6e 64 20 6c 69 6e 65  |for command line|
00004da0  20 64 65 74 61 69 6c 73  29 22 0d 1b b2 3f e8 22  | details)"...?."|
00004db0  53 6f 75 72 63 65 20 66  69 6c 65 3a 20 22 73 24  |Source file: "s$|
00004dc0  2c 22 44 65 73 74 69 6e  61 74 69 6f 6e 20 66 69  |,"Destination fi|
00004dd0  6c 65 3a 20 22 66 24 2c  22 4f 75 74 70 75 74 20  |le: "f$,"Output |
00004de0  6d 6f 64 65 3a 20 22 6d  24 0d 1b bc 2f e8 22 28  |mode: "m$.../."(|
00004df0  58 29 53 63 61 6c 65 20  28 65 2e 67 2e 20 32 3a  |X)Scale (e.g. 2:|
00004e00  31 29 3a 20 22 78 73 24  3a e8 22 59 20 53 63 61  |1): "xs$:."Y Sca|
00004e10  6c 65 3a 20 22 79 73 24  0d 1b c6 38 e8 22 49 6e  |le: "ys$...8."In|
00004e20  66 6f 20 6f 6e 20 69 6e  70 75 74 20 70 69 63 74  |fo on input pict|
00004e30  75 72 65 3f 22 61 24 3a  e7 a4 75 63 28 c0 61 24  |ure?"a$:..uc(.a$|
00004e40  2c 31 29 29 3d 22 59 22  20 69 6e 66 6f 25 3d b9  |,1))="Y" info%=.|
00004e50  0d 1b d0 3b e8 22 49 6e  76 65 72 74 20 70 69 63  |...;."Invert pic|
00004e60  74 75 72 65 20 63 6f 6c  6f 75 72 73 3f 22 61 24  |ture colours?"a$|
00004e70  3a e7 a4 75 63 28 c0 61  24 2c 31 29 29 3d 22 59  |:..uc(.a$,1))="Y|
00004e80  22 20 69 6e 76 65 72 74  25 3d b9 0d 1b da 3d e8  |" invert%=....=.|
00004e90  22 43 6f 6d 70 75 74 65  20 68 69 73 74 6f 67 72  |"Compute histogr|
00004ea0  61 6d 20 6f 66 20 69 6e  70 75 74 3f 22 61 24 3a  |am of input?"a$:|
00004eb0  e7 a4 75 63 28 c0 61 24  2c 31 29 29 3d 22 59 22  |..uc(.a$,1))="Y"|
00004ec0  20 68 69 73 74 25 3d b9  0d 1b e4 40 e8 22 41 70  | hist%=....@."Ap|
00004ed0  70 6c 79 20 68 69 73 74  6f 67 72 61 6d 20 65 71  |ply histogram eq|
00004ee0  75 61 6c 69 73 61 74 69  6f 6e 3f 22 61 24 3a e7  |ualisation?"a$:.|
00004ef0  a4 75 63 28 c0 61 24 2c  31 29 29 3d 22 59 22 20  |.uc(.a$,1))="Y" |
00004f00  65 71 75 61 6c 25 3d b9  0d 1b ee 47 e8 22 45 78  |equal%=....G."Ex|
00004f10  70 61 6e 64 20 69 6e 70  75 74 20 64 79 6e 61 6d  |pand input dynam|
00004f20  69 63 20 72 61 6e 67 65  3f 22 61 24 3a e7 a4 75  |ic range?"a$:..u|
00004f30  63 28 c0 61 24 2c 31 29  29 3d 22 59 22 20 72 61  |c(.a$,1))="Y" ra|
00004f40  6e 67 65 25 3d b9 3a 65  71 75 61 6c 25 3d a3 0d  |nge%=.:equal%=..|
00004f50  1b f8 3d e8 22 53 68 61  72 70 65 6e 20 70 69 63  |..=."Sharpen pic|
00004f60  74 75 72 65 20 62 79 20  28 65 2e 67 2e 20 31 32  |ture by (e.g. 12|
00004f70  20 66 6f 72 20 68 61 72  73 68 2c 20 32 34 20 66  | for harsh, 24 f|
00004f80  6f 72 20 73 6f 66 74 29  20 22 61 24 0d 1c 02 18  |or soft) "a$....|
00004f90  e7 61 24 3c 3e 22 22 20  73 68 61 72 70 65 6e 25  |.a$<>"" sharpen%|
00004fa0  3d bb 61 24 0d 1c 0c 2b  e8 22 52 6f 74 61 74 65  |=.a$...+."Rotate|
00004fb0  3f 22 61 24 3a e7 a4 75  63 28 c0 61 24 2c 31 29  |?"a$:..uc(.a$,1)|
00004fc0  29 3d 22 59 22 20 72 6f  74 61 74 65 25 3d 31 0d  |)="Y" rotate%=1.|
00004fd0  1c 16 1e 73 63 61 6c 65  25 3d a3 3a 73 63 61 6c  |...scale%=.:scal|
00004fe0  65 6f 25 3d a3 3a 66 61  73 74 25 3d a3 0d 1c 20  |eo%=.:fast%=... |
00004ff0  05 cc 0d 1c 2a 0d f5 20  41 25 3d 41 52 47 25 0d  |....*.. A%=ARG%.|
00005000  1c 34 36 e7 a4 75 63 28  41 24 28 41 52 47 25 29  |.46..uc(A$(ARG%)|
00005010  29 3d 22 2d 49 4e 46 4f  22 20 69 6e 66 6f 25 3d  |)="-INFO" info%=|
00005020  b9 3a 41 24 28 41 52 47  25 29 3d 22 22 3a 41 52  |.:A$(ARG%)="":AR|
00005030  47 25 2d 3d 31 0d 1c 3e  36 e7 a4 75 63 28 41 24  |G%-=1..>6..uc(A$|
00005040  28 41 52 47 25 29 29 3d  22 2d 48 49 53 54 22 20  |(ARG%))="-HIST" |
00005050  68 69 73 74 25 3d b9 3a  41 24 28 41 52 47 25 29  |hist%=.:A$(ARG%)|
00005060  3d 22 22 3a 41 52 47 25  2d 3d 31 0d 1c 48 36 e7  |="":ARG%-=1..H6.|
00005070  a4 75 63 28 41 24 28 41  52 47 25 29 29 3d 22 2d  |.uc(A$(ARG%))="-|
00005080  4c 4f 43 4b 22 20 6c 6f  63 6b 25 3d b9 3a 41 24  |LOCK" lock%=.:A$|
00005090  28 41 52 47 25 29 3d 22  22 3a 41 52 47 25 2d 3d  |(ARG%)="":ARG%-=|
000050a0  31 0d 1c 52 41 e7 a4 75  63 28 41 24 28 41 52 47  |1..RA..uc(A$(ARG|
000050b0  25 29 29 3d 22 2d 45 51  55 41 4c 22 20 65 71 75  |%))="-EQUAL" equ|
000050c0  61 6c 25 3d b9 3a 72 61  6e 67 65 25 3d a3 3a 41  |al%=.:range%=.:A|
000050d0  24 28 41 52 47 25 29 3d  22 22 3a 41 52 47 25 2d  |$(ARG%)="":ARG%-|
000050e0  3d 31 0d 1c 5c 41 e7 a4  75 63 28 41 24 28 41 52  |=1..\A..uc(A$(AR|
000050f0  47 25 29 29 3d 22 2d 52  41 4e 47 45 22 20 72 61  |G%))="-RANGE" ra|
00005100  6e 67 65 25 3d b9 3a 65  71 75 61 6c 25 3d a3 3a  |nge%=.:equal%=.:|
00005110  41 24 28 41 52 47 25 29  3d 22 22 3a 41 52 47 25  |A$(ARG%)="":ARG%|
00005120  2d 3d 31 0d 1c 66 3a e7  a4 75 63 28 41 24 28 41  |-=1..f:..uc(A$(A|
00005130  52 47 25 29 29 3d 22 2d  49 4e 56 45 52 54 22 20  |RG%))="-INVERT" |
00005140  69 6e 76 65 72 74 25 3d  b9 3a 41 24 28 41 52 47  |invert%=.:A$(ARG|
00005150  25 29 3d 22 22 3a 41 52  47 25 2d 3d 31 0d 1c 70  |%)="":ARG%-=1..p|
00005160  44 e7 a4 75 63 28 41 24  28 41 52 47 25 29 29 3d  |D..uc(A$(ARG%))=|
00005170  22 2d 4e 4f 53 43 41 4c  45 22 20 73 63 61 6c 65  |"-NOSCALE" scale|
00005180  25 3d a3 3a 73 63 61 6c  65 6f 25 3d a3 3a 41 24  |%=.:scaleo%=.:A$|
00005190  28 41 52 47 25 29 3d 22  22 3a 41 52 47 25 2d 3d  |(ARG%)="":ARG%-=|
000051a0  31 0d 1c 7a 39 e7 a4 75  63 28 41 24 28 41 52 47  |1..z9..uc(A$(ARG|
000051b0  25 29 29 3d 22 2d 4e 4f  53 49 5a 45 22 20 73 63  |%))="-NOSIZE" sc|
000051c0  61 6c 65 25 3d a3 3a 41  24 28 41 52 47 25 29 3d  |ale%=.:A$(ARG%)=|
000051d0  22 22 3a 41 52 47 25 2d  3d 31 0d 1c 84 3c e7 a4  |"":ARG%-=1...<..|
000051e0  75 63 28 41 24 28 41 52  47 25 29 29 3d 22 2d 4e  |uc(A$(ARG%))="-N|
000051f0  4f 44 49 54 48 45 52 22  20 64 69 74 68 65 72 25  |ODITHER" dither%|
00005200  3d a3 3a 41 24 28 41 52  47 25 29 3d 22 22 3a 41  |=.:A$(ARG%)="":A|
00005210  52 47 25 2d 3d 31 0d 1c  8e 3d e7 a4 75 63 28 41  |RG%-=1...=..uc(A|
00005220  24 28 41 52 47 25 29 29  3d 22 2d 42 52 49 47 48  |$(ARG%))="-BRIGH|
00005230  54 45 4e 22 20 62 72 69  67 68 74 25 3d 31 36 3a  |TEN" bright%=16:|
00005240  41 24 28 41 52 47 25 29  3d 22 22 3a 41 52 47 25  |A$(ARG%)="":ARG%|
00005250  2d 3d 31 0d 1c 98 3a e7  a4 75 63 28 41 24 28 41  |-=1...:..uc(A$(A|
00005260  52 47 25 29 29 3d 22 2d  52 4f 54 41 54 45 22 20  |RG%))="-ROTATE" |
00005270  72 6f 74 61 74 65 25 3d  31 3a 41 24 28 41 52 47  |rotate%=1:A$(ARG|
00005280  25 29 3d 22 22 3a 41 52  47 25 2d 3d 31 0d 1c a2  |%)="":ARG%-=1...|
00005290  3c e7 a4 75 63 28 41 24  28 41 52 47 25 29 29 3d  |<..uc(A$(ARG%))=|
000052a0  22 2d 52 4f 54 41 54 45  2d 22 20 72 6f 74 61 74  |"-ROTATE-" rotat|
000052b0  65 25 3d 2d 31 3a 41 24  28 41 52 47 25 29 3d 22  |e%=-1:A$(ARG%)="|
000052c0  22 3a 41 52 47 25 2d 3d  31 0d 1c ac 38 e7 a4 75  |":ARG%-=1...8..u|
000052d0  63 28 41 24 28 41 52 47  25 29 29 3d 22 2d 56 46  |c(A$(ARG%))="-VF|
000052e0  4c 49 50 22 20 76 66 6c  69 70 25 3d b9 3a 41 24  |LIP" vflip%=.:A$|
000052f0  28 41 52 47 25 29 3d 22  22 3a 41 52 47 25 2d 3d  |(ARG%)="":ARG%-=|
00005300  31 0d 1c b6 38 e7 a4 75  63 28 41 24 28 41 52 47  |1...8..uc(A$(ARG|
00005310  25 29 29 3d 22 2d 48 46  4c 49 50 22 20 68 66 6c  |%))="-HFLIP" hfl|
00005320  69 70 25 3d b9 3a 41 24  28 41 52 47 25 29 3d 22  |ip%=.:A$(ARG%)="|
00005330  22 3a 41 52 47 25 2d 3d  31 0d 1c c0 38 e7 a4 75  |":ARG%-=1...8..u|
00005340  63 28 41 24 28 41 52 47  25 29 29 3d 22 2d 4e 4f  |c(A$(ARG%))="-NO|
00005350  4d 4f 44 45 22 20 66 61  73 74 25 3d a3 3a 41 24  |MODE" fast%=.:A$|
00005360  28 41 52 47 25 29 3d 22  22 3a 41 52 47 25 2d 3d  |(ARG%)="":ARG%-=|
00005370  31 0d 1c ca 21 e7 a4 75  63 28 c0 41 24 28 41 52  |1...!..uc(.A$(AR|
00005380  47 25 29 2c 36 29 29 3d  22 2d 42 4c 41 43 4b 22  |G%),6))="-BLACK"|
00005390  20 8c 0d 1c d4 46 62 6c  61 63 6b 25 3d 33 32 3a  | ....Fblack%=32:|
000053a0  e7 a9 41 24 28 41 52 47  25 29 3e 36 20 62 6c 61  |..A$(ARG%)>6 bla|
000053b0  63 6b 25 3d bb c1 41 24  28 41 52 47 25 29 2c 37  |ck%=..A$(ARG%),7|
000053c0  29 3a e7 62 6c 61 63 6b  25 3e 31 32 38 20 62 6c  |):.black%>128 bl|
000053d0  61 63 6b 25 3d 31 32 38  0d 1c de 17 41 24 28 41  |ack%=128....A$(A|
000053e0  52 47 25 29 3d 22 22 3a  41 52 47 25 2d 3d 31 0d  |RG%)="":ARG%-=1.|
000053f0  1c e8 05 cd 0d 1c f2 21  e7 a4 75 63 28 c0 41 24  |.......!..uc(.A$|
00005400  28 41 52 47 25 29 2c 36  29 29 3d 22 2d 47 41 4d  |(ARG%),6))="-GAM|
00005410  4d 41 22 20 8c 0d 1c fc  2e 67 61 6d 6d 61 3d 32  |MA" .....gamma=2|
00005420  2e 32 3a e7 a9 41 24 28  41 52 47 25 29 3e 36 20  |.2:..A$(ARG%)>6 |
00005430  67 61 6d 6d 61 3d bb c1  41 24 28 41 52 47 25 29  |gamma=..A$(ARG%)|
00005440  2c 37 29 0d 1d 06 17 41  24 28 41 52 47 25 29 3d  |,7)....A$(ARG%)=|
00005450  22 22 3a 41 52 47 25 2d  3d 31 0d 1d 10 05 cd 0d  |"":ARG%-=1......|
00005460  1d 1a 23 e7 a4 75 63 28  c0 41 24 28 41 52 47 25  |..#..uc(.A$(ARG%|
00005470  29 2c 38 29 29 3d 22 2d  53 48 41 52 50 45 4e 22  |),8))="-SHARPEN"|
00005480  20 8c 0d 1d 24 32 73 68  61 72 70 65 6e 25 3d b9  | ...$2sharpen%=.|
00005490  3a e7 a9 41 24 28 41 52  47 25 29 3e 38 20 73 68  |:..A$(ARG%)>8 sh|
000054a0  61 72 70 65 6e 25 3d bb  c1 41 24 28 41 52 47 25  |arpen%=..A$(ARG%|
000054b0  29 2c 39 29 0d 1d 2e 17  41 24 28 41 52 47 25 29  |),9)....A$(ARG%)|
000054c0  3d 22 22 3a 41 52 47 25  2d 3d 31 0d 1d 38 05 cd  |="":ARG%-=1..8..|
000054d0  0d 1d 42 43 e7 a4 75 63  28 c0 41 24 28 41 52 47  |..BC..uc(.A$(ARG|
000054e0  25 29 2c 34 29 29 3d 22  2d 52 45 44 22 20 72 77  |%),4))="-RED" rw|
000054f0  74 3d bb c1 41 24 28 41  52 47 25 29 2c 35 29 3a  |t=..A$(ARG%),5):|
00005500  41 24 28 41 52 47 25 29  3d 22 22 3a 41 52 47 25  |A$(ARG%)="":ARG%|
00005510  2d 3d 31 0d 1d 4c 45 e7  a4 75 63 28 c0 41 24 28  |-=1..LE..uc(.A$(|
00005520  41 52 47 25 29 2c 36 29  29 3d 22 2d 47 52 45 45  |ARG%),6))="-GREE|
00005530  4e 22 20 67 77 74 3d bb  c1 41 24 28 41 52 47 25  |N" gwt=..A$(ARG%|
00005540  29 2c 37 29 3a 41 24 28  41 52 47 25 29 3d 22 22  |),7):A$(ARG%)=""|
00005550  3a 41 52 47 25 2d 3d 31  0d 1d 56 44 e7 a4 75 63  |:ARG%-=1..VD..uc|
00005560  28 c0 41 24 28 41 52 47  25 29 2c 35 29 29 3d 22  |(.A$(ARG%),5))="|
00005570  2d 42 4c 55 45 22 20 62  77 74 3d bb c1 41 24 28  |-BLUE" bwt=..A$(|
00005580  41 52 47 25 29 2c 36 29  3a 41 24 28 41 52 47 25  |ARG%),6):A$(ARG%|
00005590  29 3d 22 22 3a 41 52 47  25 2d 3d 31 0d 1d 60 1f  |)="":ARG%-=1..`.|
000055a0  e7 a4 75 63 28 c0 41 24  28 41 52 47 25 29 2c 34  |..uc(.A$(ARG%),4|
000055b0  29 29 3d 22 2d 4d 41 58  22 20 8c 0d 1d 6a 44 6d  |))="-MAX" ...jDm|
000055c0  61 78 25 3d bb c1 41 24  28 41 52 47 25 29 2c 35  |ax%=..A$(ARG%),5|
000055d0  29 3a e7 a7 41 24 28 41  52 47 25 29 2c 22 4b 22  |):..A$(ARG%),"K"|
000055e0  29 84 a7 41 24 28 41 52  47 25 29 2c 22 6b 22 29  |)..A$(ARG%),"k")|
000055f0  20 6d 61 78 25 3d 6d 61  78 25 2a 31 30 32 34 0d  | max%=max%*1024.|
00005600  1d 74 17 41 24 28 41 52  47 25 29 3d 22 22 3a 41  |.t.A$(ARG%)="":A|
00005610  52 47 25 2d 3d 31 0d 1d  7e 05 cd 0d 1d 88 0c fd  |RG%-=1..~.......|
00005620  41 25 3d 41 52 47 25 0d  1d 92 32 73 24 3d 41 24  |A%=ARG%...2s$=A$|
00005630  28 31 29 3a 66 24 3d 41  24 28 32 29 3a 6d 24 3d  |(1):f$=A$(2):m$=|
00005640  41 24 28 33 29 3a 78 73  24 3d 41 24 28 34 29 3a  |A$(3):xs$=A$(4):|
00005650  79 73 24 3d 41 24 28 35  29 0d 1d 9c 05 cd 0d 1d  |ys$=A$(5).......|
00005660  a6 15 e7 6f 6b 69 6e 66  6f 25 20 8b 69 6e 66 6f  |...okinfo% .info|
00005670  25 3d a3 0d 1d b0 14 e7  77 6f 72 6b 73 70 61 63  |%=......workspac|
00005680  65 25 3e 3d 30 20 8c 0d  1d ba 0b 66 6c 65 78 25  |e%>=0 .....flex%|
00005690  3d a3 0d 1d c4 05 cc 0d  1d ce 3c e7 77 6f 72 6b  |=.........<.work|
000056a0  6c 69 6d 69 74 25 3d 30  20 8c 66 6c 65 78 25 3d  |limit%=0 .flex%=|
000056b0  a3 20 8b 66 6c 65 78 25  3d b9 3a 6e 65 78 74 6c  |. .flex%=.:nextl|
000056c0  6f 63 61 74 69 6f 6e 25  3d 77 6f 72 6b 6c 69 6d  |ocation%=worklim|
000056d0  69 74 25 0d 1d d8 05 cd  0d 1d e2 22 70 6e 6d 24  |it%........"pnm$|
000056e0  3d a4 75 63 28 6d 24 29  3a c8 8e 20 c0 70 6e 6d  |=.uc(m$):.. .pnm|
000056f0  24 2b 22 2c 22 2c 33 29  20 ca 0d 1d ec 15 c9 22  |$+",",3) ......"|
00005700  41 49 4d 22 3a 6d 3d 2d  31 3a 6d 24 3d 22 22 0d  |AIM":m=-1:m$="".|
00005710  1d f6 22 c9 22 50 31 2c  22 2c 22 50 34 2c 22 3a  |.."."P1,","P4,":|
00005720  6d 3d 2d 32 3a 6d 24 3d  22 22 3a 73 70 6d 3d 31  |m=-2:m$="":spm=1|
00005730  38 0d 1e 00 23 c9 22 50  32 2c 22 2c 22 50 35 2c  |8...#."P2,","P5,|
00005740  22 3a 6d 3d 2d 32 3a 6d  24 3d 22 54 22 3a 73 70  |":m=-2:m$="T":sp|
00005750  6d 3d 32 30 0d 1e 0a 3d  c9 22 50 33 2c 22 2c 22  |m=20...=."P3,","|
00005760  50 36 2c 22 3a 6d 3d 2d  34 3a 70 6e 6d 24 3d c0  |P6,":m=-4:pnm$=.|
00005770  70 6e 6d 24 2c 32 29 3a  70 36 62 69 74 73 3d 38  |pnm$,2):p6bits=8|
00005780  3a 49 25 3d bb c1 6d 24  2c 34 29 3a 6d 24 3d 22  |:I%=..m$,4):m$="|
00005790  22 0d 1e 14 18 e7 49 25  3e 30 e7 49 25 3c 38 20  |".....I%>0.I%<8 |
000057a0  70 36 62 69 74 73 3d 49  25 0d 1e 1e 15 c9 22 50  |p6bits=I%....."P|
000057b0  31 35 22 3a 6d 3d 2d 33  3a 6d 24 3d 22 22 0d 1e  |15":m=-3:m$=""..|
000057c0  28 15 c9 22 43 31 35 22  3a 6d 3d 2d 35 3a 6d 24  |(.."C15":m=-5:m$|
000057d0  3d 22 22 0d 1e 32 1e c9  22 49 52 4c 22 3a 6d 3d  |=""..2.."IRL":m=|
000057e0  2d 34 3a 6d 24 3d 22 22  3a 70 36 62 69 74 73 3d  |-4:m$="":p6bits=|
000057f0  38 0d 1e 3c 15 c9 22 53  31 36 22 3a 6d 3d 2d 36  |8..<.."S16":m=-6|
00005800  3a 6d 24 3d 22 22 0d 1e  46 1e c9 22 53 32 34 22  |:m$=""..F.."S24"|
00005810  3a 6d 3d 2d 37 3a 6d 24  3d 22 22 3a 70 36 62 69  |:m=-7:m$="":p6bi|
00005820  74 73 3d 38 0d 1e 50 1e  c9 22 53 33 32 22 3a 6d  |ts=8..P.."S32":m|
00005830  3d 2d 38 3a 6d 24 3d 22  22 3a 70 36 62 69 74 73  |=-8:m$="":p6bits|
00005840  3d 38 0d 1e 5a 35 7f 3a  6d 3d bb 6d 24 3a 73 70  |=8..Z5.:m=.m$:sp|
00005850  6d 3d 6d 3a 6d 24 3d a4  75 63 28 c2 6d 24 2c 31  |m=m:m$=.uc(.m$,1|
00005860  29 29 3a e7 a7 22 43 44  52 54 22 2c 6d 24 29 3d  |)):.."CDRT",m$)=|
00005870  30 20 6d 24 3d 22 22 0d  1e 64 05 cb 0d 1e 6e 1b  |0 m$=""..d....n.|
00005880  e7 78 73 24 3d 22 22 20  84 20 c0 78 73 24 2c 31  |.xs$="" . .xs$,1|
00005890  29 3d 22 2d 22 20 8c 0d  1e 78 23 78 6d 75 6c 25  |)="-" ...x#xmul%|
000058a0  3d 31 3a 78 64 69 76 25  3d 31 3a 79 6d 75 6c 25  |=1:xdiv%=1:ymul%|
000058b0  3d 31 3a 79 64 69 76 25  3d 31 0d 1e 82 05 cc 0d  |=1:ydiv%=1......|
000058c0  1e 8c 13 e7 79 73 24 3d  22 22 20 79 73 24 3d 78  |....ys$="" ys$=x|
000058d0  73 24 0d 1e 96 27 78 6d  75 6c 25 3d bb 78 73 24  |s$...'xmul%=.xs$|
000058e0  3a 78 64 69 76 25 3d bb  c1 78 73 24 2c a7 78 73  |:xdiv%=..xs$,.xs|
000058f0  24 2c 22 3a 22 29 2b 31  29 0d 1e a0 27 79 6d 75  |$,":")+1)...'ymu|
00005900  6c 25 3d bb 79 73 24 3a  79 64 69 76 25 3d bb c1  |l%=.ys$:ydiv%=..|
00005910  79 73 24 2c a7 79 73 24  2c 22 3a 22 29 2b 31 29  |ys$,.ys$,":")+1)|
00005920  0d 1e aa 05 cd 0d 1e b4  26 66 6c 61 67 3d 2d 31  |........&flag=-1|
00005930  3a c8 99 38 2c 35 2c 73  24 20 b8 20 72 30 2c 2c  |:..8,5,s$ . r0,,|
00005940  72 32 3a 64 69 72 3d 72  30 3d 32 0d 1e be 0a e7  |r2:dir=r0=2.....|
00005950  64 69 72 20 8c 0d 1e c8  43 70 61 6e 69 63 3d b9  |dir ....Cpanic=.|
00005960  3a c8 99 38 2c 35 2c 73  24 2b 22 2e 72 61 77 22  |:..8,5,s$+".raw"|
00005970  20 b8 20 72 30 2c 2c 72  32 3a e7 72 30 3d 31 20  | . r0,,r2:.r0=1 |
00005980  73 24 2b 3d 22 2e 72 61  77 22 3a 64 69 72 3d a3  |s$+=".raw":dir=.|
00005990  3a 70 61 6e 69 63 3d a3  0d 1e d2 31 e7 70 61 6e  |:panic=....1.pan|
000059a0  69 63 20 c8 99 38 2c 35  2c 73 24 2b 22 2e 72 65  |ic ..8,5,s$+".re|
000059b0  64 22 20 b8 20 72 30 2c  2c 72 32 3a e7 72 30 3d  |d" . r0,,r2:.r0=|
000059c0  31 20 70 61 6e 69 63 3d  a3 0d 1e dc 21 e7 70 61  |1 panic=....!.pa|
000059d0  6e 69 63 20 85 20 34 32  2c 22 44 69 72 65 63 74  |nic . 42,"Direct|
000059e0  6f 72 79 20 67 69 76 65  6e 22 0d 1e e6 05 cd 0d  |ory given"......|
000059f0  1e f0 3e 66 74 79 70 65  3d 72 32 3e 3e 38 20 80  |..>ftype=r2>>8 .|
00005a00  20 26 46 46 46 3a 62 69  74 73 3d 32 38 3a 46 3d  | &FFF:bits=28:F=|
00005a10  32 5e 62 69 74 73 3a 63  25 3d 30 3a 63 63 25 3d  |2^bits:c%=0:cc%=|
00005a20  30 3a 63 63 63 25 3d 30  3a 6f 25 3d 30 0d 1e fa  |0:ccc%=0:o%=0...|
00005a30  0a e7 64 69 72 20 8c 0d  1f 04 3e 63 25 3d 8e 28  |..dir ....>c%=.(|
00005a40  73 24 2b 22 2e 72 65 64  22 29 3a e7 63 25 3d 30  |s$+".red"):.c%=0|
00005a50  20 85 20 34 32 2c 22 52  65 64 20 66 69 6c 65 20  | . 42,"Red file |
00005a60  22 2b 73 24 2b 22 2e 72  65 64 20 6e 6f 74 20 66  |"+s$+".red not f|
00005a70  6f 75 6e 64 22 0d 1f 0e  45 63 63 25 3d 8e 28 73  |ound"...Ecc%=.(s|
00005a80  24 2b 22 2e 67 72 65 65  6e 22 29 3a e7 63 63 25  |$+".green"):.cc%|
00005a90  3d 30 20 85 34 32 2c 22  47 72 65 65 6e 20 66 69  |=0 .42,"Green fi|
00005aa0  6c 65 20 22 2b 73 24 2b  22 2e 67 72 65 65 6e 20  |le "+s$+".green |
00005ab0  6e 6f 74 20 66 6f 75 6e  64 22 0d 1f 18 44 63 63  |not found"...Dcc|
00005ac0  63 25 3d 8e 28 73 24 2b  22 2e 62 6c 75 65 22 29  |c%=.(s$+".blue")|
00005ad0  3a e7 63 63 63 25 3d 30  20 85 34 32 2c 22 42 6c  |:.ccc%=0 .42,"Bl|
00005ae0  75 65 20 66 69 6c 65 20  22 2b 73 24 2b 22 2e 62  |ue file "+s$+".b|
00005af0  6c 75 65 20 6e 6f 74 20  66 6f 75 6e 64 22 0d 1f  |lue not found"..|
00005b00  22 05 cc 0d 1f 2c 2d 63  25 3d 8e 73 24 3a e7 63  |"....,-c%=.s$:.c|
00005b10  25 3d 30 20 85 20 34 32  2c 22 46 69 6c 65 20 22  |%=0 . 42,"File "|
00005b20  2b 73 24 2b 22 20 6e 6f  74 20 66 6f 75 6e 64 22  |+s$+" not found"|
00005b30  0d 1f 36 05 cd 0d 1f 40  07 ea 20 85 0d 1f 4a 1b  |..6....@.. ...J.|
00005b40  ee 20 85 20 ea 20 f7 20  85 3a f2 63 6c 6f 73 65  |. . . . .:.close|
00005b50  3a 85 20 9f 2c f6 24 0d  1f 54 0d de 20 72 25 28  |:. .,.$..T.. r%(|
00005b60  32 35 35 29 0d 1f 5e 15  de 20 67 25 28 32 35 35  |255)..^.. g%(255|
00005b70  29 2c 62 25 28 32 35 35  29 0d 1f 68 13 c8 99 26  |),b%(255)..h...&|
00005b80  36 36 66 34 64 20 b8 3b  70 63 64 25 0d 1f 72 0e  |66f4d .;pcd%..r.|
00005b90  c8 8e 20 66 74 79 70 65  20 ca 0d 1f 7c 11 c9 20  |.. ftype ...|.. |
00005ba0  26 46 46 39 3a 66 6c 61  67 3d 30 0d 1f 86 2e e7  |&FF9:flag=0.....|
00005bb0  a7 22 2e 22 2b a4 75 63  28 73 24 29 2c 22 2e 48  |."."+.uc(s$),".H|
00005bc0  49 50 2e 22 29 84 a7 a4  75 63 28 73 24 29 2c 22  |IP.")...uc(s$),"|
00005bd0  3a 48 49 50 2e 22 29 20  8c 0d 1f 90 20 66 6c 61  |:HIP.") .... fla|
00005be0  67 3d 33 30 30 3a 49 25  3d a7 a4 75 63 28 73 24  |g=300:I%=..uc(s$|
00005bf0  29 2c 22 48 49 50 2e 22  29 0d 1f 9a 3f c1 73 24  |),"HIP.")...?.s$|
00005c00  2c 49 25 29 3d 22 4c 4f  50 2e 22 3a 63 63 25 3d  |,I%)="LOP.":cc%=|
00005c10  8e 73 24 3a e7 63 63 25  3d 30 20 85 34 32 2c 22  |.s$:.cc%=0 .42,"|
00005c20  43 61 6e 27 74 20 66 69  6e 64 20 4c 6f 70 20 66  |Can't find Lop f|
00005c30  69 6c 65 20 22 2b 73 24  0d 1f a4 05 cd 0d 1f ae  |ile "+s$........|
00005c40  2b c9 20 26 46 46 30 3a  cf 23 63 25 3d 30 3a 53  |+. &FF0:.#c%=0:S|
00005c50  24 3d 22 22 3a e3 49 25  3d 31 b8 34 3a 53 24 2b  |$="":.I%=1.4:S$+|
00005c60  3d bd 9a 23 63 25 3a ed  0d 1f b8 26 e7 53 24 3d  |=..#c%:....&.S$=|
00005c70  22 49 49 2a 22 2b bd 30  20 66 6c 61 67 3d 31 35  |"II*"+.0 flag=15|
00005c80  30 30 3a 62 69 67 65 6e  64 69 61 6e 3d a3 0d 1f  |00:bigendian=...|
00005c90  c2 29 e7 53 24 3d 22 4d  4d 22 2b bd 30 2b 22 2a  |.).S$="MM"+.0+"*|
00005ca0  22 20 66 6c 61 67 3d 31  35 30 30 3a 62 69 67 65  |" flag=1500:bige|
00005cb0  6e 64 69 61 6e 3d b9 0d  1f cc 21 c9 20 26 44 46  |ndian=....!. &DF|
00005cc0  41 3a 66 6c 61 67 3d 38  30 30 3a e7 64 69 72 20  |A:flag=800:.dir |
00005cd0  66 6c 61 67 3d 38 30 31  0d 1f d6 14 c9 20 26 44  |flag=801..... &D|
00005ce0  45 32 3a 66 6c 61 67 3d  31 30 30 30 0d 1f e0 20  |E2:flag=1000... |
00005cf0  c9 20 26 42 45 38 3a e7  28 70 63 64 25 80 31 29  |. &BE8:.(pcd%.1)|
00005d00  3d 30 20 66 6c 61 67 3d  33 36 30 30 0d 1f ea 14  |=0 flag=3600....|
00005d10  c9 20 26 37 41 30 3a 66  6c 61 67 3d 31 32 30 30  |. &7A0:flag=1200|
00005d20  0d 1f f4 14 c9 20 26 36  39 64 3a 66 6c 61 67 3d  |..... &69d:flag=|
00005d30  32 30 30 30 0d 1f fe 13  c9 20 26 36 39 39 3a 66  |2000..... &699:f|
00005d40  6c 61 67 3d 37 30 30 0d  20 08 13 c9 20 26 36 39  |lag=700. ... &69|
00005d50  38 3a 66 6c 61 67 3d 31  30 30 0d 20 12 14 c9 20  |8:flag=100. ... |
00005d60  26 36 39 37 3a 66 6c 61  67 3d 31 39 30 30 0d 20  |&697:flag=1900. |
00005d70  1c 14 c9 20 26 36 39 31  3a 66 6c 61 67 3d 32 36  |... &691:flag=26|
00005d80  30 30 0d 20 26 14 c9 20  26 36 39 30 3a 66 6c 61  |00. &.. &690:fla|
00005d90  67 3d 32 35 30 30 0d 20  30 13 c9 20 26 36 36 36  |g=2500. 0.. &666|
00005da0  3a 66 6c 61 67 3d 36 36  36 0d 20 3a 14 c9 20 26  |:flag=666. :.. &|
00005db0  36 30 31 3a 66 6c 61 67  3d 33 30 30 30 0d 20 44  |601:flag=3000. D|
00005dc0  14 c9 20 26 33 37 31 3a  66 6c 61 67 3d 33 31 30  |.. &371:flag=310|
00005dd0  30 0d 20 4e 23 c9 20 26  33 30 30 3a 66 6c 61 67  |0. N#. &300:flag|
00005de0  3d 31 33 30 30 3a e7 64  69 72 20 66 6c 61 67 3d  |=1300:.dir flag=|
00005df0  31 33 30 31 0d 20 58 1e  c9 20 34 3a 66 6c 61 67  |1301. X.. 4:flag|
00005e00  3d 39 30 30 3a e7 64 69  72 20 66 6c 61 67 3d 39  |=900:.dir flag=9|
00005e10  30 31 0d 20 62 10 c9 20  36 3a 66 6c 61 67 3d 39  |01. b.. 6:flag=9|
00005e20  35 30 0d 20 6c 05 cb 0d  20 76 0e e7 66 6c 61 67  |50. l... v..flag|
00005e30  3d 2d 31 20 8c 0d 20 80  25 cf 23 63 25 3d 30 3a  |=-1 .. .%.#c%=0:|
00005e40  53 24 3d 22 22 3a e3 49  25 3d 31 b8 32 32 3a 53  |S$="":.I%=1.22:S|
00005e50  24 2b 3d bd 9a 23 63 25  3a ed 0d 20 8a 1f e7 c0  |$+=..#c%:.. ....|
00005e60  53 24 2c 37 29 3d 22 46  53 49 66 69 6c 65 22 20  |S$,7)="FSIfile" |
00005e70  66 6c 61 67 3d 32 31 30  30 0d 20 94 29 e7 66 6c  |flag=2100. .).fl|
00005e80  61 67 3d 2d 31 20 e7 c0  53 24 2c 38 29 3d 22 53  |ag=-1 ..S$,8)="S|
00005e90  49 4d 50 4c 45 20 20 22  20 66 6c 61 67 3d 32 38  |IMPLE  " flag=28|
00005ea0  30 30 0d 20 9e 43 e7 66  6c 61 67 3d 2d 31 20 e7  |00. .C.flag=-1 .|
00005eb0  a4 75 63 28 c0 53 24 2c  38 29 29 3d 22 4d 45 52  |.uc(.S$,8))="MER|
00005ec0  43 53 4f 46 54 22 84 a4  75 63 28 c0 53 24 2c 38  |CSOFT"..uc(.S$,8|
00005ed0  29 29 3d 22 53 4e 41 50  53 48 4f 54 22 66 6c 61  |))="SNAPSHOT"fla|
00005ee0  67 3d 39 30 32 0d 20 a8  2d e7 66 6c 61 67 3d 2d  |g=902. .-.flag=-|
00005ef0  31 20 e7 a4 75 63 28 c0  53 24 2c 38 29 29 3d 22  |1 ..uc(.S$,8))="|
00005f00  4d 45 52 43 53 4f 46 31  22 20 66 6c 61 67 3d 39  |MERCSOF1" flag=9|
00005f10  30 33 0d 20 b2 34 e7 66  6c 61 67 3d 2d 31 20 e7  |03. .4.flag=-1 .|
00005f20  a4 75 63 28 c0 53 24 2c  31 33 29 29 3d 22 49 52  |.uc(.S$,13))="IR|
00005f30  4c 41 4d 20 59 55 56 20  34 31 31 22 20 66 6c 61  |LAM YUV 411" fla|
00005f40  67 3d 32 32 35 30 0d 20  bc 26 e7 66 6c 61 67 3d  |g=2250. .&.flag=|
00005f50  2d 31 20 e7 c0 53 24 2c  35 29 3d 22 49 72 6c 61  |-1 ..S$,5)="Irla|
00005f60  6d 22 20 66 6c 61 67 3d  32 32 30 30 0d 20 c6 2e  |m" flag=2200. ..|
00005f70  e7 66 6c 61 67 3d 2d 31  20 e7 c0 53 24 2c 32 29  |.flag=-1 ..S$,2)|
00005f80  3d 22 42 4d 22 20 66 6c  61 67 3d 32 34 30 30 3a  |="BM" flag=2400:|
00005f90  72 69 66 66 6f 66 66 25  3d 30 0d 20 d0 58 e7 66  |riffoff%=0. .X.f|
00005fa0  6c 61 67 3d 2d 31 20 e7  c0 53 24 2c 34 29 3d 22  |lag=-1 ..S$,4)="|
00005fb0  52 49 46 46 22 20 80 20  c1 53 24 2c 39 2c 38 29  |RIFF" . .S$,9,8)|
00005fc0  3d 22 52 44 49 42 64 61  74 61 22 20 80 20 c1 53  |="RDIBdata" . .S|
00005fd0  24 2c 32 31 2c 32 29 3d  22 42 4d 22 20 66 6c 61  |$,21,2)="BM" fla|
00005fe0  67 3d 32 34 30 30 3a 72  69 66 66 6f 66 66 25 3d  |g=2400:riffoff%=|
00005ff0  32 30 0d 20 da 24 e7 66  6c 61 67 3d 2d 31 20 e7  |20. .$.flag=-1 .|
00006000  c0 53 24 2c 34 29 3d 22  47 49 46 38 22 20 66 6c  |.S$,4)="GIF8" fl|
00006010  61 67 3d 35 30 30 0d 20  e4 25 e7 66 6c 61 67 3d  |ag=500. .%.flag=|
00006020  2d 31 20 e7 c0 53 24 2c  35 29 3d 22 41 56 5f 56  |-1 ..S$,5)="AV_V|
00006030  4f 22 20 66 6c 61 67 3d  36 30 30 0d 20 ee 32 e7  |O" flag=600. .2.|
00006040  66 6c 61 67 3d 2d 31 20  e7 c0 53 24 2c 34 29 3d  |flag=-1 ..S$,4)=|
00006050  bd 26 35 39 2b bd 26 41  36 2b bd 26 36 41 2b bd  |.&59+.&A6+.&6A+.|
00006060  26 39 35 20 66 6c 61 67  3d 31 31 30 30 0d 20 f8  |&95 flag=1100. .|
00006070  2a e7 66 6c 61 67 3d 2d  31 20 e7 c0 53 24 2c 34  |*.flag=-1 ..S$,4|
00006080  29 3d bd 30 2b bd 31 2b  bd 30 2b bd 38 20 66 6c  |)=.0+.1+.0+.8 fl|
00006090  61 67 3d 31 34 30 30 0d  21 02 2a e7 66 6c 61 67  |ag=1400.!.*.flag|
000060a0  3d 2d 31 20 e7 c0 53 24  2c 34 29 3d bd 30 2b bd  |=-1 ..S$,4)=.0+.|
000060b0  31 2b bd 30 2b bd 31 20  66 6c 61 67 3d 32 39 30  |1+.0+.1 flag=290|
000060c0  30 0d 21 0c 25 e7 66 6c  61 67 3d 2d 31 20 e7 c0  |0.!.%.flag=-1 ..|
000060d0  53 24 2c 34 29 3d 22 52  49 58 33 22 20 66 6c 61  |S$,4)="RIX3" fla|
000060e0  67 3d 32 37 30 30 0d 21  16 33 e7 66 6c 61 67 3d  |g=2700.!.3.flag=|
000060f0  2d 31 20 e7 c0 53 24 2c  34 29 3d 22 49 49 2a 22  |-1 ..S$,4)="II*"|
00006100  2b bd 30 20 66 6c 61 67  3d 31 35 30 30 3a 62 69  |+.0 flag=1500:bi|
00006110  67 65 6e 64 69 61 6e 3d  a3 0d 21 20 36 e7 66 6c  |gendian=..! 6.fl|
00006120  61 67 3d 2d 31 20 e7 c0  53 24 2c 34 29 3d 22 4d  |ag=-1 ..S$,4)="M|
00006130  4d 22 2b bd 30 2b 22 2a  22 20 66 6c 61 67 3d 31  |M"+.0+"*" flag=1|
00006140  35 30 30 3a 62 69 67 65  6e 64 69 61 6e 3d b9 0d  |500:bigendian=..|
00006150  21 2a 28 e7 66 6c 61 67  3d 2d 31 20 e7 c0 53 24  |!*(.flag=-1 ..S$|
00006160  2c 32 29 3d bd 26 35 32  2b bd 26 43 43 20 66 6c  |,2)=.&52+.&CC fl|
00006170  61 67 3d 32 33 30 30 0d  21 34 44 e7 66 6c 61 67  |ag=2300.!4D.flag|
00006180  3d 2d 31 20 e7 c0 53 24  2c 32 29 3d 22 50 34 22  |=-1 ..S$,2)="P4"|
00006190  84 c0 53 24 2c 32 29 3d  22 50 35 22 84 c0 53 24  |..S$,2)="P5"..S$|
000061a0  2c 32 29 3d 22 50 36 22  20 66 6c 61 67 3d 33 33  |,2)="P6" flag=33|
000061b0  30 30 3a 69 6e 66 6f 24  3d 22 22 0d 21 3e 24 e7  |00:info$="".!>$.|
000061c0  66 6c 61 67 3d 2d 31 20  e7 c0 53 24 2c 33 29 3d  |flag=-1 ..S$,3)=|
000061d0  22 50 31 35 22 20 66 6c  61 67 3d 33 34 30 30 0d  |"P15" flag=3400.|
000061e0  21 48 24 e7 66 6c 61 67  3d 2d 31 20 e7 c0 53 24  |!H$.flag=-1 ..S$|
000061f0  2c 33 29 3d 22 50 49 43  22 20 66 6c 61 67 3d 33  |,3)="PIC" flag=3|
00006200  35 30 30 0d 21 52 29 e7  66 6c 61 67 3d 2d 31 20  |500.!R).flag=-1 |
00006210  e7 a4 75 63 28 c0 53 24  2c 33 29 29 3d 22 50 31  |..uc(.S$,3))="P1|
00006220  33 22 20 66 6c 61 67 3d  33 34 35 30 0d 21 5c 36  |3" flag=3450.!\6|
00006230  e7 66 6c 61 67 3d 2d 31  20 e7 c0 53 24 2c 34 29  |.flag=-1 ..S$,4)|
00006240  3d 22 46 4f 52 4d 22 20  e7 c1 53 24 2c 39 2c 34  |="FORM" ..S$,9,4|
00006250  29 3d 22 49 4c 42 4d 22  20 66 6c 61 67 3d 31 36  |)="ILBM" flag=16|
00006260  30 30 0d 21 66 0e e7 66  6c 61 67 3d 2d 31 20 8c  |00.!f..flag=-1 .|
00006270  0d 21 70 23 e7 c1 53 24  2c 37 2c 34 29 3d 22 4a  |.!p#..S$,7,4)="J|
00006280  46 49 46 22 20 84 20 66  74 79 70 65 3d 26 43 38  |FIF" . ftype=&C8|
00006290  35 20 8c 0d 21 7a 2a 6a  70 65 67 62 6c 6b 25 3d  |5 ..!z*jpegblk%=|
000062a0  a4 64 69 6d 28 32 30 29  3a f2 63 61 63 68 65 73  |.dim(20):.caches|
000062b0  69 7a 65 28 6a 70 65 67  62 6c 6b 25 29 0d 21 84  |ize(jpegblk%).!.|
000062c0  12 e7 63 61 63 68 65 25  3c a2 23 63 25 20 8c 0d  |..cache%<.#c% ..|
000062d0  21 8e 18 d9 23 63 25 3a  58 25 3d 8e 22 52 75 6e  |!...#c%:X%=."Run|
000062e0  3a 64 6a 70 65 67 22 0d  21 98 09 e7 58 25 20 8c  |:djpeg".!...X% .|
000062f0  0d 21 a2 37 d9 23 58 25  3a c8 99 22 57 69 6d 70  |.!.7.#X%:.."Wimp|
00006300  5f 53 74 61 72 74 54 61  73 6b 22 2c 22 64 6a 70  |_StartTask","djp|
00006310  65 67 20 22 2b 73 24 2b  22 20 3c 57 69 6d 70 24  |eg "+s$+" <Wimp$|
00006320  53 63 72 61 70 3e 22 0d  21 ac 05 cc 0d 21 b6 30  |Scrap>".!....!.0|
00006330  c8 99 22 58 4f 53 5f 43  4c 49 22 2c 22 64 6a 70  |.."XOS_CLI","djp|
00006340  65 67 20 22 2b 73 24 2b  22 20 3c 57 69 6d 70 24  |eg "+s$+" <Wimp$|
00006350  53 63 72 61 70 3e 22 20  b8 20 3b 56 0d 21 c0 0b  |Scrap>" . ;V.!..|
00006360  e7 56 20 80 31 20 8c 0d  21 ca 42 c8 99 22 57 69  |.V .1 ..!.B.."Wi|
00006370  6d 70 5f 53 74 61 72 74  54 61 73 6b 22 2c 22 3c  |mp_StartTask","<|
00006380  43 68 61 6e 67 65 46 53  49 24 44 69 72 3e 2e 64  |ChangeFSI$Dir>.d|
00006390  6a 70 65 67 20 22 2b 73  24 2b 22 20 3c 57 69 6d  |jpeg "+s$+" <Wim|
000063a0  70 24 53 63 72 61 70 3e  22 0d 21 d4 05 cd 0d 21  |p$Scrap>".!....!|
000063b0  de 05 cd 0d 21 e8 22 63  25 3d 8e 22 3c 57 69 6d  |....!."c%=."<Wim|
000063c0  70 24 53 63 72 61 70 3e  22 3a e7 63 25 3d 30 20  |p$Scrap>":.c%=0 |
000063d0  8c 3d 31 30 30 0d 21 f2  3e 73 63 72 61 70 66 25  |.=100.!.>scrapf%|
000063e0  3d b9 3a 66 6c 61 67 3d  33 33 30 30 3a 69 6e 66  |=.:flag=3300:inf|
000063f0  6f 24 3d 22 4a 50 45 47  20 28 4a 46 49 46 29 20  |o$="JPEG (JFIF) |
00006400  66 69 6c 65 20 63 6f 6e  76 65 72 74 65 64 20 74  |file converted t|
00006410  6f 20 22 0d 21 fc 05 cc  0d 22 06 0d 66 6c 61 67  |o ".!...."..flag|
00006420  3d 33 37 30 30 0d 22 10  05 cd 0d 22 1a 05 cd 0d  |=3700."...."....|
00006430  22 24 05 cd 0d 22 2e 0e  e7 66 6c 61 67 3d 2d 31  |"$..."...flag=-1|
00006440  20 8c 0d 22 38 26 cf 23  63 25 3d 26 31 30 3a 53  | .."8&.#c%=&10:S|
00006450  24 3d 22 22 3a e3 49 25  3d 31 b8 39 3a 53 24 2b  |$="":.I%=1.9:S$+|
00006460  3d bd 9a 23 63 25 3a ed  0d 22 42 1c e7 53 24 3d  |=..#c%:.."B..S$=|
00006470  22 4d 49 4c 4c 49 50 45  44 45 22 20 66 6c 61 67  |"MILLIPEDE" flag|
00006480  3d 32 30 30 0d 22 4c 05  cd 0d 22 56 0e e7 66 6c  |=200."L..."V..fl|
00006490  61 67 3d 2d 31 20 8c 0d  22 60 26 cf 23 63 25 3d  |ag=-1 .."`&.#c%=|
000064a0  26 34 31 3a 53 24 3d 22  22 3a e3 49 25 3d 31 b8  |&41:S$="":.I%=1.|
000064b0  38 3a 53 24 2b 3d bd 9a  23 63 25 3a ed 0d 22 6a  |8:S$+=..#c%:.."j|
000064c0  25 e7 c0 53 24 2c 34 29  3d 22 50 4e 54 47 22 20  |%..S$,4)="PNTG" |
000064d0  66 6c 61 67 3d 31 38 30  30 3a 73 74 25 3d 26 32  |flag=1800:st%=&2|
000064e0  38 30 0d 22 74 05 cd 0d  22 7e 0e e7 66 6c 61 67  |80."t..."~..flag|
000064f0  3d 2d 31 20 8c 0d 22 88  26 cf 23 63 25 3d 31 39  |=-1 ..".&.#c%=19|
00006500  36 3a 53 24 3d 22 22 3a  e3 49 25 3d 31 b8 38 3a  |6:S$="":.I%=1.8:|
00006510  53 24 2b 3d bd 9a 23 63  25 3a ed 0d 22 92 25 e7  |S$+=..#c%:..".%.|
00006520  c0 53 24 2c 34 29 3d 22  50 4e 54 47 22 20 66 6c  |.S$,4)="PNTG" fl|
00006530  61 67 3d 31 38 30 30 3a  73 74 25 3d 26 32 65 32  |ag=1800:st%=&2e2|
00006540  0d 22 9c 05 cd 0d 22 a6  0e e7 66 6c 61 67 3d 2d  |."...."...flag=-|
00006550  31 20 8c 0d 22 b0 26 cf  23 63 25 3d 35 32 32 3a  |1 ..".&.#c%=522:|
00006560  53 24 3d 22 22 3a e3 49  25 3d 31 b8 38 3a 53 24  |S$="":.I%=1.8:S$|
00006570  2b 3d bd 9a 23 63 25 3a  ed 0d 22 ba 32 e7 53 24  |+=..#c%:..".2.S$|
00006580  3d bd 30 2b bd 26 31 31  2b bd 32 2b bd 26 66 66  |=.0+.&11+.2+.&ff|
00006590  2b bd 26 63 2b bd 30 2b  bd 26 66 66 2b bd 26 66  |+.&c+.0+.&ff+.&f|
000065a0  65 20 66 6c 61 67 3d 31  38 35 30 0d 22 c4 05 cd  |e flag=1850."...|
000065b0  0d 22 ce 0e e7 66 6c 61  67 3d 2d 31 20 8c 0d 22  |."...flag=-1 .."|
000065c0  d8 15 cf 23 63 25 3d 30  3a e7 9a 23 63 25 3d 31  |...#c%=0:..#c%=1|
000065d0  30 20 8c 0d 22 e2 2b 43  25 3d 9a 23 63 25 3a e7  |0 ..".+C%=.#c%:.|
000065e0  43 25 3c 36 20 80 20 43  25 3c 3e 31 20 80 9a 23  |C%<6 . C%<>1 ..#|
000065f0  63 25 3d 31 20 66 6c 61  67 3d 31 39 30 30 0d 22  |c%=1 flag=1900."|
00006600  ec 05 cd 0d 22 f6 05 cd  0d 23 00 4d e7 66 6c 61  |...."....#.M.fla|
00006610  67 3d 2d 31 20 e7 a7 22  2e 22 2b a4 75 63 28 73  |g=-1 .."."+.uc(s|
00006620  24 29 2c 22 2e 50 43 58  2e 22 29 84 a7 a4 75 63  |$),".PCX.")...uc|
00006630  28 73 24 29 2c 22 3a 50  43 58 2e 22 29 84 c2 73  |(s$),":PCX.")..s|
00006640  24 2c 34 29 3d 22 2f 50  43 58 22 20 66 6c 61 67  |$,4)="/PCX" flag|
00006650  3d 31 39 30 30 0d 23 0a  42 e7 66 6c 61 67 3d 2d  |=1900.#.B.flag=-|
00006660  31 20 e7 a7 22 2e 22 2b  a4 75 63 28 73 24 29 2c  |1 .."."+.uc(s$),|
00006670  22 2e 49 4d 41 47 45 2e  22 29 84 a7 a4 75 63 28  |".IMAGE.")...uc(|
00006680  73 24 29 2c 22 3a 49 4d  41 47 45 2e 22 29 20 66  |s$),":IMAGE.") f|
00006690  6c 61 67 3d 34 30 30 0d  23 14 29 e7 66 6c 61 67  |lag=400.#.).flag|
000066a0  3d 2d 31 20 e7 a4 75 63  28 c2 73 24 2c 34 29 29  |=-1 ..uc(.s$,4))|
000066b0  3d 22 2e 52 41 57 22 20  66 6c 61 67 3d 31 30 30  |=".RAW" flag=100|
000066c0  0d 23 1e 29 e7 66 6c 61  67 3d 2d 31 20 e7 a4 75  |.#.).flag=-1 ..u|
000066d0  63 28 c2 73 24 2c 33 29  29 3d 22 54 47 41 22 20  |c(.s$,3))="TGA" |
000066e0  66 6c 61 67 3d 32 30 30  30 0d 23 28 29 e7 66 6c  |flag=2000.#().fl|
000066f0  61 67 3d 2d 31 20 e7 a4  75 63 28 c2 73 24 2c 33  |ag=-1 ..uc(.s$,3|
00006700  29 29 3d 22 56 44 41 22  20 66 6c 61 67 3d 32 30  |))="VDA" flag=20|
00006710  30 30 0d 23 32 3e e7 66  6c 61 67 3d 2d 31 20 e7  |00.#2>.flag=-1 .|
00006720  a7 22 2e 22 2b a4 75 63  28 73 24 29 2c 22 2e 50  |."."+.uc(s$),".P|
00006730  49 43 2e 22 29 84 a7 a4  75 63 28 73 24 29 2c 22  |IC.")...uc(s$),"|
00006740  3a 50 49 43 2e 22 29 20  66 6c 61 67 3d 37 30 30  |:PIC.") flag=700|
00006750  0d 23 3c 4d e7 66 6c 61  67 3d 2d 31 20 e7 a7 22  |.#<M.flag=-1 .."|
00006760  2e 22 2b a4 75 63 28 73  24 29 2c 22 2e 49 4d 47  |."+.uc(s$),".IMG|
00006770  2e 22 29 84 a7 a4 75 63  28 73 24 29 2c 22 3a 49  |.")...uc(s$),":I|
00006780  4d 47 2e 22 29 84 c2 73  24 2c 34 29 3d 22 2f 49  |MG.")..s$,4)="/I|
00006790  4d 47 22 20 66 6c 61 67  3d 31 34 30 30 0d 23 46  |MG" flag=1400.#F|
000067a0  4d e7 66 6c 61 67 3d 2d  31 20 e7 a7 22 2e 22 2b  |M.flag=-1 .."."+|
000067b0  a4 75 63 28 73 24 29 2c  22 2e 44 53 50 2e 22 29  |.uc(s$),".DSP.")|
000067c0  84 a7 a4 75 63 28 73 24  29 2c 22 3a 44 53 50 2e  |...uc(s$),":DSP.|
000067d0  22 29 84 c2 73 24 2c 34  29 3d 22 2f 44 53 50 22  |")..s$,4)="/DSP"|
000067e0  20 66 6c 61 67 3d 31 37  30 30 0d 23 50 2a e7 66  | flag=1700.#P*.f|
000067f0  6c 61 67 3d 2d 31 20 e7  a4 75 63 28 c2 73 24 2c  |lag=-1 ..uc(.s$,|
00006800  34 29 29 3d 22 2f 52 47  42 22 20 66 6c 61 67 3d  |4))="/RGB" flag=|
00006810  33 32 30 30 0d 23 5a 3c  e7 66 6c 61 67 3d 2d 31  |3200.#Z<.flag=-1|
00006820  20 80 28 a4 75 63 28 c2  73 24 2c 34 29 29 3d 22  | .(.uc(.s$,4))="|
00006830  2f 50 43 44 22 84 66 74  79 70 65 3d 26 62 65 38  |/PCD".ftype=&be8|
00006840  29 80 28 28 70 63 64 25  80 31 29 3d 31 29 20 8c  |).((pcd%.1)=1) .|
00006850  0d 23 64 6f d9 23 63 25  3a c8 99 22 57 69 6d 70  |.#do.#c%:.."Wimp|
00006860  5f 53 74 61 72 74 54 61  73 6b 22 2c 22 3c 43 68  |_StartTask","<Ch|
00006870  61 6e 67 65 46 53 49 24  44 69 72 3e 2e 68 70 63  |angeFSI$Dir>.hpc|
00006880  64 74 6f 70 70 6d 20 2d  33 20 2d 61 20 22 2b 73  |dtoppm -3 -a "+s|
00006890  24 2b 22 20 3c 57 69 6d  70 24 53 63 72 61 70 3e  |$+" <Wimp$Scrap>|
000068a0  20 7b 20 3e 20 3c 43 68  61 6e 67 65 46 53 49 24  | { > <ChangeFSI$|
000068b0  44 69 72 3e 2e 70 63 64  74 65 6d 70 20 7d 22 0d  |Dir>.pcdtemp }".|
000068c0  23 6e 4d 63 25 3d 8e 22  3c 57 69 6d 70 24 53 63  |#nMc%=."<Wimp$Sc|
000068d0  72 61 70 3e 22 3a 73 63  72 61 70 66 25 3d b9 3a  |rap>":scrapf%=.:|
000068e0  66 6c 61 67 3d 33 33 30  30 3a 69 6e 66 6f 24 3d  |flag=3300:info$=|
000068f0  22 50 68 6f 74 6f 43 44  20 66 69 6c 65 20 63 6f  |"PhotoCD file co|
00006900  6e 76 65 72 74 65 64 20  74 6f 20 22 0d 23 78 05  |nverted to ".#x.|
00006910  cd 0d 23 82 05 cd 0d 23  8c 63 e7 66 6c 61 67 3d  |..#....#.c.flag=|
00006920  2d 31 20 f2 63 6c 6f 73  65 3a 85 20 34 32 2c 22  |-1 .close:. 42,"|
00006930  53 6f 72 72 79 3a 20 66  6f 72 6d 61 74 20 6e 6f  |Sorry: format no|
00006940  74 20 72 65 63 6f 67 6e  69 73 65 64 20 2d 20 70  |t recognised - p|
00006950  6c 65 61 73 65 20 74 72  79 20 61 67 61 69 6e 20  |lease try again |
00006960  6f 72 20 63 6f 6e 74 61  63 74 20 79 6f 75 72 20  |or contact your |
00006970  73 75 70 70 6c 69 65 72  22 0d 23 96 42 73 74 65  |supplier".#.Bste|
00006980  70 32 34 3d 31 3a 69 6e  70 75 74 3d 38 3a 68 61  |p24=1:input=8:ha|
00006990  6d 3d 30 3a 70 6c 61 6e  61 72 25 3d 30 3a 62 69  |m=0:planar%=0:bi|
000069a0  67 65 6e 64 69 61 6e 62  69 74 73 3d a3 3a 72 24  |gendianbits=.:r$|
000069b0  3d 22 46 4e 22 2b c3 66  6c 61 67 0d 23 a0 39 63  |="FN"+.flag.#.9c|
000069c0  6f 6d 70 72 65 73 73 69  6f 6e 3d 30 3a 68 70 72  |ompression=0:hpr|
000069d0  65 64 69 63 74 25 3d 31  3a 73 74 72 69 70 72 6f  |edict%=1:stripro|
000069e0  77 73 25 3d 2d 31 3a 63  61 63 68 65 62 79 74 65  |ws%=-1:cachebyte|
000069f0  73 25 3d a3 0d 23 aa 1f  e7 78 64 69 76 25 3d 30  |s%=..#...xdiv%=0|
00006a00  20 80 20 79 64 69 76 25  3d 30 20 73 63 61 6c 65  | . ydiv%=0 scale|
00006a10  25 3d a3 0d 23 b4 0d c8  8e 20 66 6c 61 67 20 ca  |%=..#.... flag .|
00006a20  0d 23 be 07 c9 20 30 0d  23 c8 40 71 75 61 6e 74  |.#... 0.#.@quant|
00006a30  25 3d 34 3a cf 23 63 25  3d 34 3a 46 25 3d a4 57  |%=4:.#c%=4:F%=.W|
00006a40  2b 26 31 43 3a cf 23 63  25 3d 46 25 3a 73 74 25  |+&1C:.#c%=F%:st%|
00006a50  3d a4 57 2b 46 25 2d 26  32 30 3a 4b 25 3d a4 57  |=.W+F%-&20:K%=.W|
00006a60  2b 46 25 2d 26 32 30 0d  23 d2 13 73 6d 3d a4 57  |+F%-&20.#..sm=.W|
00006a70  3a e7 73 6d 3c 32 35 36  20 8c 0d 23 dc 14 c8 99  |:.sm<256 ..#....|
00006a80  35 33 2c 73 6d 2c 33 20  b8 20 2c 2c 49 25 0d 23  |53,sm,3 . ,,I%.#|
00006a90  e6 0b c8 8e 20 49 25 20  ca 0d 23 f0 25 c9 20 31  |.... I% ..#.%. 1|
00006aa0  3a e7 73 74 25 3d 46 25  2b 31 32 20 f2 64 65 66  |:.st%=F%+12 .def|
00006ab0  70 61 6c 32 20 8b f2 69  70 61 6c 28 32 29 0d 23  |pal2 ..ipal(2).#|
00006ac0  fa 35 cf 23 63 25 3d 46  25 2d 31 36 3a 73 78 25  |.5.#c%=F%-16:sx%|
00006ad0  3d 28 a4 57 2b 31 29 2a  33 32 3a 72 6f 77 62 79  |=(.W+1)*32:rowby|
00006ae0  74 65 73 25 3d 73 78 25  3e 3e 33 3a 69 6e 70 75  |tes%=sx%>>3:inpu|
00006af0  74 3d 31 0d 24 04 1d 73  79 25 3d a4 57 2b 31 3a  |t=1.$..sy%=.W+1:|
00006b00  49 25 3d a4 57 3a 73 78  25 2d 3d 33 31 2d a4 57  |I%=.W:sx%-=31-.W|
00006b10  0d 24 0e 25 c9 20 33 3a  e7 73 74 25 3d 46 25 2b  |.$.%. 3:.st%=F%+|
00006b20  31 32 20 f2 64 65 66 70  61 6c 34 20 8b f2 69 70  |12 .defpal4 ..ip|
00006b30  61 6c 28 34 29 0d 24 18  35 cf 23 63 25 3d 46 25  |al(4).$.5.#c%=F%|
00006b40  2d 31 36 3a 73 78 25 3d  28 a4 57 2b 31 29 2a 31  |-16:sx%=(.W+1)*1|
00006b50  36 3a 72 6f 77 62 79 74  65 73 25 3d 73 78 25 3e  |6:rowbytes%=sx%>|
00006b60  3e 32 3a 69 6e 70 75 74  3d 32 0d 24 22 21 73 79  |>2:input=2.$"!sy|
00006b70  25 3d a4 57 2b 31 3a 49  25 3d a4 57 3a 73 78 25  |%=.W+1:I%=.W:sx%|
00006b80  2d 3d 28 33 31 2d a4 57  29 81 32 0d 24 2c 28 c9  |-=(31-.W).2.$,(.|
00006b90  20 31 35 3a e7 73 74 25  3d 46 25 2b 31 32 20 f2  | 15:.st%=F%+12 .|
00006ba0  64 65 66 70 61 6c 31 36  20 8b f2 69 70 61 6c 28  |defpal16 ..ipal(|
00006bb0  31 36 29 0d 24 36 34 cf  23 63 25 3d 46 25 2d 31  |16).$64.#c%=F%-1|
00006bc0  36 3a 73 78 25 3d 28 a4  57 2b 31 29 2a 38 3a 72  |6:sx%=(.W+1)*8:r|
00006bd0  6f 77 62 79 74 65 73 25  3d 73 78 25 3e 3e 31 3a  |owbytes%=sx%>>1:|
00006be0  69 6e 70 75 74 3d 34 0d  24 40 21 73 79 25 3d a4  |input=4.$@!sy%=.|
00006bf0  57 2b 31 3a 49 25 3d a4  57 3a 73 78 25 2d 3d 28  |W+1:I%=.W:sx%-=(|
00006c00  33 31 2d a4 57 29 81 34  0d 24 4a 19 c9 20 36 33  |31-.W).4.$J.. 63|
00006c10  2c 32 35 35 3a e7 73 74  25 3d 46 25 2b 31 32 20  |,255:.st%=F%+12 |
00006c20  8c 0d 24 54 0b f2 64 65  66 70 61 6c 0d 24 5e 05  |..$T..defpal.$^.|
00006c30  cc 0d 24 68 12 e7 4b 25  3e 73 74 25 20 4b 25 3d  |..$h..K%>st% K%=|
00006c40  73 74 25 0d 24 72 1c e7  4b 25 2d 31 32 2d 46 25  |st%.$r..K%-12-F%|
00006c50  3d 32 30 34 38 20 84 49  25 3d 32 35 35 20 8c 0d  |=2048 .I%=255 ..|
00006c60  24 7c 0c cf 23 63 25 3d  26 33 38 0d 24 86 15 e3  |$|..#c%=&38.$...|
00006c70  43 25 3d 30 b8 32 35 35  3a 44 25 3d 9a 23 63 25  |C%=0.255:D%=.#c%|
00006c80  0d 24 90 39 72 25 28 43  25 29 3d 9a 23 63 25 2f  |.$.9r%(C%)=.#c%/|
00006c90  32 35 35 2a 46 3a 67 25  28 43 25 29 3d 9a 23 63  |255*F:g%(C%)=.#c|
00006ca0  25 2f 32 35 35 2a 46 3a  62 25 28 43 25 29 3d 9a  |%/255*F:b%(C%)=.|
00006cb0  23 63 25 2f 32 35 35 2a  46 0d 24 9a 0b 44 25 3d  |#c%/255*F.$..D%=|
00006cc0  a4 57 3a ed 0d 24 a4 05  cc 0d 24 ae 0b f2 69 70  |.W:..$....$...ip|
00006cd0  61 6c 36 33 0d 24 b8 05  cd 0d 24 c2 05 cd 0d 24  |al63.$....$....$|
00006ce0  cc 47 cf 23 63 25 3d 46  25 2d 31 36 3a 73 78 25  |.G.#c%=F%-16:sx%|
00006cf0  3d 28 a4 57 2b 31 29 2a  34 3a 72 6f 77 62 79 74  |=(.W+1)*4:rowbyt|
00006d00  65 73 25 3d 73 78 25 3a  73 79 25 3d a4 57 2b 31  |es%=sx%:sy%=.W+1|
00006d10  3a 49 25 3d a4 57 3a 73  78 25 2d 3d 28 33 31 2d  |:I%=.W:sx%-=(31-|
00006d20  a4 57 29 81 38 0d 24 d6  29 7f 20 85 34 32 2c 22  |.W).8.$.). .42,"|
00006d30  4e 6f 74 20 75 6e 64 65  72 73 74 6f 6f 64 20 52  |Not understood R|
00006d40  49 53 43 20 4f 53 20 73  70 72 69 74 65 22 0d 24  |ISC OS sprite".$|
00006d50  e0 05 cb 0d 24 ea 40 72  24 3d 22 46 4e 38 22 3a  |....$.@r$="FN8":|
00006d60  c8 99 35 33 2c 73 6d 2c  34 20 b8 20 2c 2c 6e 78  |..53,sm,4 . ,,nx|
00006d70  3a c8 99 35 33 2c 73 6d  2c 35 20 b8 20 2c 2c 6e  |:..53,sm,5 . ,,n|
00006d80  79 3a 6e 78 3d 31 3c 3c  6e 78 3a 6e 79 3d 31 3c  |y:nx=1<<nx:ny=1<|
00006d90  3c 6e 79 0d 24 f4 2d e7  73 63 61 6c 65 25 20 78  |<ny.$.-.scale% x|
00006da0  6d 75 6c 25 3d 78 6d 75  6c 25 2a 6e 78 2f 32 3a  |mul%=xmul%*nx/2:|
00006db0  79 6d 75 6c 25 3d 79 6d  75 6c 25 2a 6e 79 2f 32  |ymul%=ymul%*ny/2|
00006dc0  0d 24 fe 53 69 6e 66 6f  24 3d 22 52 49 53 43 20  |.$.Sinfo$="RISC |
00006dd0  4f 53 20 73 70 72 69 74  65 2c 20 6d 6f 64 65 20  |OS sprite, mode |
00006de0  22 2b c3 73 6d 2b 22 20  22 2b c3 73 78 25 2b 22  |"+.sm+" "+.sx%+"|
00006df0  20 62 79 20 22 2b c3 73  79 25 2b 22 20 70 69 78  | by "+.sy%+" pix|
00006e00  65 6c 73 2c 20 22 2b a4  62 69 74 73 28 69 6e 70  |els, "+.bits(inp|
00006e10  75 74 29 0d 25 08 05 cc  0d 25 12 19 62 70 70 25  |ut).%....%..bpp%|
00006e20  3d 73 6d 3e 3e 3e 32 37  3a c8 8e 62 70 70 25 20  |=sm>>>27:..bpp% |
00006e30  ca 0d 25 1c 39 c9 20 31  3a 62 70 70 25 3d 31 3a  |..%.9. 1:bpp%=1:|
00006e40  72 24 3d 22 46 4e 38 22  3a e7 73 74 25 3d 46 25  |r$="FN8":.st%=F%|
00006e50  2b 31 32 20 f2 64 65 66  70 61 6c 32 20 8b f2 6e  |+12 .defpal2 ..n|
00006e60  65 77 72 6f 70 61 6c 28  32 29 0d 25 26 39 c9 20  |ewropal(2).%&9. |
00006e70  32 3a 62 70 70 25 3d 32  3a 72 24 3d 22 46 4e 38  |2:bpp%=2:r$="FN8|
00006e80  22 3a e7 73 74 25 3d 46  25 2b 31 32 20 f2 64 65  |":.st%=F%+12 .de|
00006e90  66 70 61 6c 34 20 8b f2  6e 65 77 72 6f 70 61 6c  |fpal4 ..newropal|
00006ea0  28 34 29 0d 25 30 3b c9  20 33 3a 62 70 70 25 3d  |(4).%0;. 3:bpp%=|
00006eb0  34 3a 72 24 3d 22 46 4e  38 22 3a e7 73 74 25 3d  |4:r$="FN8":.st%=|
00006ec0  46 25 2b 31 32 20 f2 64  65 66 70 61 6c 31 36 20  |F%+12 .defpal16 |
00006ed0  8b f2 6e 65 77 72 6f 70  61 6c 28 31 36 29 0d 25  |..newropal(16).%|
00006ee0  3a 3a c9 20 34 3a 62 70  70 25 3d 38 3a 72 24 3d  |::. 4:bpp%=8:r$=|
00006ef0  22 46 4e 38 22 3a e7 73  74 25 3d 46 25 2b 31 32  |"FN8":.st%=F%+12|
00006f00  20 f2 64 65 66 70 61 6c  20 8b f2 6e 65 77 72 6f  | .defpal ..newro|
00006f10  70 61 6c 28 32 35 36 29  0d 25 44 26 c9 20 35 3a  |pal(256).%D&. 5:|
00006f20  62 70 70 25 3d 31 36 3a  72 24 3d 22 46 4e 31 36  |bpp%=16:r$="FN16|
00006f30  22 3a e7 73 74 25 3d 46  25 2b 31 32 20 8b 0d 25  |":.st%=F%+12 ..%|
00006f40  4e 24 de 20 72 70 61 6c  25 28 32 35 35 29 2c 67  |N$. rpal%(255),g|
00006f50  70 61 6c 25 28 32 35 35  29 3a 73 74 65 70 32 34  |pal%(255):step24|
00006f60  3d 32 0d 25 58 0d e3 43  25 3d 30 b8 32 35 35 0d  |=2.%X..C%=0.255.|
00006f70  25 62 22 67 70 61 6c 25  28 43 25 29 3d 28 43 25  |%b"gpal%(C%)=(C%|
00006f80  3e 3e 35 29 3c 3c 38 20  84 20 28 43 25 80 33 31  |>>5)<<8 . (C%.31|
00006f90  29 0d 25 6c 2b 72 70 61  6c 25 28 43 25 29 3d 28  |).%l+rpal%(C%)=(|
00006fa0  28 43 25 3e 3e 32 29 80  33 31 29 3c 3c 31 36 20  |(C%>>2).31)<<16 |
00006fb0  84 20 28 43 25 80 33 29  3c 3c 31 31 0d 25 76 05  |. (C%.3)<<11.%v.|
00006fc0  ed 0d 25 80 31 e3 43 25  3d 30 b8 33 31 3a 72 25  |..%.1.C%=0.31:r%|
00006fd0  28 43 25 29 3d 43 25 2f  33 31 2a 46 3a ed 3a 67  |(C%)=C%/31*F:.:g|
00006fe0  25 28 29 3d 72 25 28 29  3a 62 25 28 29 3d 72 25  |%()=r%():b%()=r%|
00006ff0  28 29 0d 25 8a 2d c9 20  36 3a 62 70 70 25 3d 33  |().%.-. 6:bpp%=3|
00007000  32 3a 72 24 3d 22 46 4e  32 34 22 3a e7 73 74 25  |2:r$="FN24":.st%|
00007010  3d 46 25 2b 31 32 20 f2  6e 6f 70 61 6c 20 8b 0d  |=F%+12 .nopal ..|
00007020  25 94 21 72 62 6f 25 3d  30 3a 67 62 6f 25 3d 31  |%.!rbo%=0:gbo%=1|
00007030  3a 62 62 6f 25 3d 32 3a  73 74 65 70 32 34 3d 34  |:bbo%=2:step24=4|
00007040  0d 25 9e 2d c9 20 38 3a  62 70 70 25 3d 32 34 3a  |.%.-. 8:bpp%=24:|
00007050  72 24 3d 22 46 4e 32 34  22 3a e7 73 74 25 3d 46  |r$="FN24":.st%=F|
00007060  25 2b 31 32 20 f2 6e 6f  70 61 6c 20 8b 0d 25 a8  |%+12 .nopal ..%.|
00007070  18 72 62 6f 25 3d 30 3a  67 62 6f 25 3d 31 3a 62  |.rbo%=0:gbo%=1:b|
00007080  62 6f 25 3d 32 0d 25 b2  38 7f 20 85 34 32 2c 22  |bo%=2.%.8. .42,"|
00007090  4e 6f 74 20 75 6e 64 65  72 73 74 6f 6f 64 20 6e  |Not understood n|
000070a0  65 77 20 66 6f 72 6d 61  74 20 52 49 53 43 20 4f  |ew format RISC O|
000070b0  53 20 73 70 72 69 74 65  20 62 70 70 22 0d 25 bc  |S sprite bpp".%.|
000070c0  05 cb 0d 25 c6 28 6e 78  3d 28 73 6d 3e 3e 31 29  |...%.(nx=(sm>>1)|
000070d0  20 80 26 31 66 66 66 3a  6e 79 3d 28 73 6d 3e 3e  | .&1fff:ny=(sm>>|
000070e0  31 34 29 20 80 26 31 66  66 66 0d 25 d0 47 e7 73  |14) .&1fff.%.G.s|
000070f0  63 61 6c 65 25 20 78 64  69 76 25 3d 78 64 69 76  |cale% xdiv%=xdiv|
00007100  25 2a 6e 78 3a 79 64 69  76 25 3d 79 64 69 76 25  |%*nx:ydiv%=ydiv%|
00007110  2a 6e 79 3a 78 6d 75 6c  25 3d 78 6d 75 6c 25 2a  |*ny:xmul%=xmul%*|
00007120  39 30 3a 79 6d 75 6c 25  3d 79 6d 75 6c 25 2a 39  |90:ymul%=ymul%*9|
00007130  30 0d 25 da 5a cf 23 63  25 3d 46 25 2d 31 36 3a  |0.%.Z.#c%=F%-16:|
00007140  72 6f 77 62 79 74 65 73  25 3d 28 a4 57 2b 31 29  |rowbytes%=(.W+1)|
00007150  2a 34 3a 73 79 25 3d a4  57 2b 31 3a 49 25 3d a4  |*4:sy%=.W+1:I%=.|
00007160  57 3a 73 78 25 3d 28 72  6f 77 62 79 74 65 73 25  |W:sx%=(rowbytes%|
00007170  2a 38 2d 28 33 31 2d a4  57 29 29 2f 62 70 70 25  |*8-(31-.W))/bpp%|
00007180  3a 69 6e 70 75 74 3d 62  70 70 25 0d 25 e4 4a 69  |:input=bpp%.%.Ji|
00007190  6e 66 6f 24 3d 22 4e 65  77 20 52 49 53 43 20 4f  |nfo$="New RISC O|
000071a0  53 20 73 70 72 69 74 65  2c 20 22 2b c3 73 78 25  |S sprite, "+.sx%|
000071b0  2b 22 20 62 79 20 22 2b  c3 73 79 25 2b 22 20 70  |+" by "+.sy%+" p|
000071c0  69 78 65 6c 73 2c 20 22  2b a4 62 69 74 73 28 69  |ixels, "+.bits(i|
000071d0  6e 70 75 74 29 0d 25 ee  15 e7 62 70 70 25 3d 33  |nput).%...bpp%=3|
000071e0  32 20 69 6e 70 75 74 3d  32 34 0d 25 f8 05 cd 0d  |2 input=24.%....|
000071f0  26 02 15 cf 23 63 25 3d  73 74 25 3a 63 61 63 68  |&...#c%=st%:cach|
00007200  65 25 3d b9 0d 26 0c 09  c9 20 31 30 30 0d 26 16  |e%=..&... 100.&.|
00007210  45 71 75 61 6e 74 25 3d  38 3a cf 23 63 25 3d 30  |Equant%=8:.#c%=0|
00007220  3a 73 78 25 3d a4 48 57  3a 73 79 25 3d a4 48 57  |:sx%=.HW:sy%=.HW|
00007230  3a f2 6e 6f 70 61 6c 3a  69 6e 70 75 74 3d 32 34  |:.nopal:input=24|
00007240  3a 72 6f 77 62 79 74 65  73 25 3d 73 78 25 2a 33  |:rowbytes%=sx%*3|
00007250  2b 32 0d 26 20 35 72 62  6f 25 3d 32 3a 67 62 6f  |+2.& 5rbo%=2:gbo|
00007260  25 3d 32 2b 73 78 25 3a  62 62 6f 25 3d 32 2b 32  |%=2+sx%:bbo%=2+2|
00007270  2a 73 78 25 3a 72 24 3d  22 46 4e 32 34 22 3a 63  |*sx%:r$="FN24":c|
00007280  61 63 68 65 25 3d b9 0d  26 2a 4a 69 6e 66 6f 24  |ache%=..&*Jinfo$|
00007290  3d 22 51 52 54 20 2e 72  61 77 20 69 6d 61 67 65  |="QRT .raw image|
000072a0  2c 20 22 2b c3 73 78 25  2b 22 20 62 79 20 22 2b  |, "+.sx%+" by "+|
000072b0  c3 73 79 25 2b 22 20 70  69 78 65 6c 73 2c 20 32  |.sy%+" pixels, 2|
000072c0  34 20 62 69 74 73 20 70  65 72 20 70 69 78 65 6c  |4 bits per pixel|
000072d0  22 0d 26 34 09 c9 20 32  30 30 0d 26 3e 47 71 75  |".&4.. 200.&>Gqu|
000072e0  61 6e 74 25 3d 38 3a cf  23 63 25 3d 35 3a 73 78  |ant%=8:.#c%=5:sx|
000072f0  25 3d a4 48 57 3a 73 79  25 3d a4 48 57 3a 73 78  |%=.HW:sy%=.HW:sx|
00007300  25 3d 28 a4 48 57 2d 73  78 25 2b 32 29 2f 32 3a  |%=(.HW-sx%+2)/2:|
00007310  73 79 25 3d 28 a4 48 57  2d 73 79 25 2b 32 29 2f  |sy%=(.HW-sy%+2)/|
00007320  32 0d 26 48 24 cf 23 63  25 3d 26 31 61 3a 63 61  |2.&H$.#c%=&1a:ca|
00007330  64 73 6f 66 74 25 3d 9a  23 63 25 3a cf 23 63 25  |dsoft%=.#c%:.#c%|
00007340  3d 26 32 30 30 0d 26 52  21 e3 43 25 3d 30 b8 32  |=&200.&R!.C%=0.2|
00007350  35 35 3a 72 25 28 43 25  29 3d 9a 23 63 25 2f 32  |55:r%(C%)=.#c%/2|
00007360  35 35 2a 46 3a ed 0d 26  5c 21 e3 43 25 3d 30 b8  |55*F:..&\!.C%=0.|
00007370  32 35 35 3a 67 25 28 43  25 29 3d 9a 23 63 25 2f  |255:g%(C%)=.#c%/|
00007380  32 35 35 2a 46 3a ed 0d  26 66 21 e3 43 25 3d 30  |255*F:..&f!.C%=0|
00007390  b8 32 35 35 3a 62 25 28  43 25 29 3d 9a 23 63 25  |.255:b%(C%)=.#c%|
000073a0  2f 32 35 35 2a 46 3a ed  0d 26 70 2d cf 23 63 25  |/255*F:..&p-.#c%|
000073b0  3d 26 36 30 30 3a 73 74  25 3d 26 36 30 30 3a 63  |=&600:st%=&600:c|
000073c0  61 63 68 65 25 3d b9 3a  e7 63 61 64 73 6f 66 74  |ache%=.:.cadsoft|
000073d0  25 3d 32 20 8c 0d 26 7a  43 72 65 70 25 3d 30 3a  |%=2 ..&zCrep%=0:|
000073e0  72 24 3d 22 46 4e 31 31  30 30 22 3a 70 6c 62 75  |r$="FN1100":plbu|
000073f0  66 66 25 3d a4 64 69 6d  28 73 78 25 29 3a 70 6c  |ff%=.dim(sx%):pl|
00007400  62 79 74 65 73 25 3d 73  78 25 3a 63 61 63 68 65  |bytes%=sx%:cache|
00007410  62 79 74 65 73 25 3d b9  0d 26 84 05 cc 0d 26 8e  |bytes%=..&....&.|
00007420  1a 72 24 3d 22 46 4e 38  22 3a 72 6f 77 62 79 74  |.r$="FN8":rowbyt|
00007430  65 73 25 3d 73 78 25 0d  26 98 05 cd 0d 26 a2 5b  |es%=sx%.&....&.[|
00007440  69 6e 66 6f 24 3d 22 43  61 64 73 6f 66 74 20 74  |info$="Cadsoft t|
00007450  79 70 65 20 22 2b c3 63  61 64 73 6f 66 74 25 2b  |ype "+.cadsoft%+|
00007460  22 20 69 6d 61 67 65 2c  20 22 2b c3 73 78 25 2b  |" image, "+.sx%+|
00007470  22 20 62 79 20 22 2b c3  73 79 25 2b 22 20 70 69  |" by "+.sy%+" pi|
00007480  78 65 6c 73 2c 20 38 20  62 69 74 73 20 70 65 72  |xels, 8 bits per|
00007490  20 70 69 78 65 6c 22 0d  26 ac 09 c9 20 33 30 30  | pixel".&... 300|
000074a0  0d 26 b6 49 71 75 61 6e  74 25 3d 35 3a cf 23 63  |.&.Iquant%=5:.#c|
000074b0  25 3d 26 32 63 3a 73 74  25 3d a4 57 2b 28 26 33  |%=&2c:st%=.W+(&3|
000074c0  38 2d 26 32 63 29 3a cf  23 63 63 25 3d 26 32 63  |8-&2c):.#cc%=&2c|
000074d0  3a 73 74 63 63 25 3d a4  57 31 28 63 63 25 29 2b  |:stcc%=.W1(cc%)+|
000074e0  28 26 33 38 2d 26 32 63  29 0d 26 c0 37 cf 23 63  |(&38-&2c).&.7.#c|
000074f0  25 3d 26 31 63 3a 73 78  25 3d 28 a4 57 2b 31 29  |%=&1c:sx%=(.W+1)|
00007500  2a 34 3a 73 79 25 3d a4  57 2b 31 3a cf 23 63 25  |*4:sy%=.W+1:.#c%|
00007510  3d 73 74 25 3a cf 23 63  63 25 3d 73 74 63 63 25  |=st%:.#cc%=stcc%|
00007520  0d 26 ca 3b de 20 72 70  61 6c 25 28 32 35 35 29  |.&.;. rpal%(255)|
00007530  2c 67 70 61 6c 25 28 32  35 35 29 3a 69 6e 70 75  |,gpal%(255):inpu|
00007540  74 3d 31 36 3a 63 61 63  68 65 25 3d b9 3a 72 6f  |t=16:cache%=.:ro|
00007550  77 62 79 74 65 73 25 3d  73 78 25 0d 26 d4 0d e3  |wbytes%=sx%.&...|
00007560  43 25 3d 30 b8 32 35 35  0d 26 de 2e 72 70 61 6c  |C%=0.255.&..rpal|
00007570  25 28 43 25 29 3d 43 25  80 37 20 84 20 28 43 25  |%(C%)=C%.7 . (C%|
00007580  80 36 34 29 3c 3c 32 20  84 20 28 43 25 80 26 33  |.64)<<2 . (C%.&3|
00007590  38 29 3c 3c 31 33 0d 26  e8 53 67 70 61 6c 25 28  |8)<<13.&.Sgpal%(|
000075a0  43 25 29 3d 28 43 25 80  34 29 3c 3c 31 84 43 25  |C%)=(C%.4)<<1.C%|
000075b0  80 31 36 20 84 20 28 28  43 25 80 33 29 3c 3c 31  |.16 . ((C%.3)<<1|
000075c0  84 28 43 25 80 26 36 30  29 3e 3e 32 29 3c 3c 38  |.(C%.&60)>>2)<<8|
000075d0  20 84 20 28 43 25 80 38  84 28 43 25 80 31 32 38  | . (C%.8.(C%.128|
000075e0  29 3e 3e 33 29 3c 3c 31  36 0d 26 f2 05 ed 0d 26  |)>>3)<<16.&....&|
000075f0  fc 31 e3 43 25 3d 30 b8  33 31 3a 72 25 28 43 25  |.1.C%=0.31:r%(C%|
00007600  29 3d 43 25 2f 33 31 2a  46 3a ed 3a 67 25 28 29  |)=C%/31*F:.:g%()|
00007610  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 0d  |=r%():b%()=r%().|
00007620  27 06 2a 70 62 75 66 66  25 3d a4 64 69 6d 28 73  |'.*pbuff%=.dim(s|
00007630  78 25 29 3a e7 73 63 61  6c 65 25 20 79 6d 75 6c  |x%):.scale% ymul|
00007640  25 3d 79 6d 75 6c 25 2a  32 0d 27 10 47 69 6e 66  |%=ymul%*2.'.Ginf|
00007650  6f 24 3d 22 41 72 56 69  73 20 69 6d 61 67 65 2c  |o$="ArVis image,|
00007660  20 22 2b c3 73 78 25 2b  22 20 62 79 20 22 2b c3  | "+.sx%+" by "+.|
00007670  73 79 25 2b 22 20 70 69  78 65 6c 73 2c 20 31 35  |sy%+" pixels, 15|
00007680  20 62 69 74 73 20 70 65  72 20 70 69 78 65 6c 22  | bits per pixel"|
00007690  0d 27 1a 09 c9 20 34 30  30 0d 27 24 45 71 75 61  |.'... 400.'$Equa|
000076a0  6e 74 25 3d 38 3a cf 23  63 25 3d 30 3a 73 78 25  |nt%=8:.#c%=0:sx%|
000076b0  3d a4 62 65 48 57 3a 73  79 25 3d a4 62 65 48 57  |=.beHW:sy%=.beHW|
000076c0  3a 58 25 3d a4 62 65 48  57 3a 73 74 25 3d 8f 23  |:X%=.beHW:st%=.#|
000076d0  63 25 2b 58 25 3a cf 23  63 25 3d 73 74 25 0d 27  |c%+X%:.#c%=st%.'|
000076e0  2e 56 70 6c 62 75 66 66  25 3d a4 64 69 6d 28 73  |.Vplbuff%=.dim(s|
000076f0  78 25 2a 33 29 3a 70 6c  62 79 74 65 73 25 3d 73  |x%*3):plbytes%=s|
00007700  78 25 2a 33 3a 72 62 25  3d 70 6c 62 75 66 66 25  |x%*3:rb%=plbuff%|
00007710  3a 67 62 25 3d 70 6c 62  75 66 66 25 2b 31 3a 62  |:gb%=plbuff%+1:b|
00007720  62 25 3d 70 6c 62 75 66  66 25 2b 32 3a 72 62 6f  |b%=plbuff%+2:rbo|
00007730  25 3d 2d 31 0d 27 38 3a  f2 6e 6f 70 61 6c 3a 69  |%=-1.'8:.nopal:i|
00007740  6e 70 75 74 3d 32 34 3a  72 65 70 25 3d 30 3a 63  |nput=24:rep%=0:c|
00007750  61 63 68 65 62 79 74 65  73 25 3d b9 3a 63 61 63  |achebytes%=.:cac|
00007760  68 65 25 3d b9 3a 73 74  65 70 32 34 3d 33 0d 27  |he%=.:step24=3.'|
00007770  42 5e 69 6e 66 6f 24 3d  22 52 54 20 69 6d 61 67  |B^info$="RT imag|
00007780  65 2e 20 72 75 6e 20 6c  65 6e 67 74 68 20 65 6e  |e. run length en|
00007790  63 6f 64 65 64 20 69 6d  61 67 65 2c 20 22 2b c3  |coded image, "+.|
000077a0  73 78 25 2b 22 20 62 79  20 22 2b c3 73 79 25 2b  |sx%+" by "+.sy%+|
000077b0  22 20 70 69 78 65 6c 73  2c 20 32 34 20 62 69 74  |" pixels, 24 bit|
000077c0  73 20 70 65 72 20 70 69  78 65 6c 22 0d 27 4c 09  |s per pixel".'L.|
000077d0  c9 20 35 30 30 0d 27 56  2c 63 6f 6d 70 72 65 73  |. 500.'V,compres|
000077e0  73 69 6f 6e 3d 35 3a cf  23 63 25 3d 36 3a 47 49  |sion=5:.#c%=6:GI|
000077f0  46 73 78 3d a4 48 57 3a  47 49 46 73 79 3d a4 48  |Fsx=.HW:GIFsy=.H|
00007800  57 0d 27 60 38 47 49 46  3d 9a 23 63 25 3a 47 49  |W.'`8GIF=.#c%:GI|
00007810  46 62 61 63 6b 3d 9a 23  63 25 3a 47 49 46 65 78  |Fback=.#c%:GIFex|
00007820  74 3d 9a 23 63 25 3a 71  75 61 6e 74 25 3d 28 47  |t=.#c%:quant%=(G|
00007830  49 46 20 80 20 37 29 2b  31 0d 27 6a 10 e7 47 49  |IF . 7)+1.'j..GI|
00007840  46 20 80 20 26 38 30 20  8c 0d 27 74 17 e3 43 25  |F . &80 ..'t..C%|
00007850  3d 30 b8 28 31 3c 3c 71  75 61 6e 74 25 29 2d 31  |=0.(1<<quant%)-1|
00007860  0d 27 7e 39 72 25 28 43  25 29 3d 9a 23 63 25 2f  |.'~9r%(C%)=.#c%/|
00007870  32 35 35 2a 46 3a 67 25  28 43 25 29 3d 9a 23 63  |255*F:g%(C%)=.#c|
00007880  25 2f 32 35 35 2a 46 3a  62 25 28 43 25 29 3d 9a  |%/255*F:b%(C%)=.|
00007890  23 63 25 2f 32 35 35 2a  46 0d 27 88 05 ed 0d 27  |#c%/255*F.'....'|
000078a0  92 05 cd 0d 27 9c 3e 49  25 3d 9a 23 63 25 3a e7  |....'.>I%=.#c%:.|
000078b0  49 25 3c 3e 97 22 2c 22  20 85 20 34 32 2c 22 47  |I%<>."," . 42,"G|
000078c0  49 46 20 66 69 6c 65 20  77 69 74 68 6f 75 74 20  |IF file without |
000078d0  2c 20 69 6e 20 72 69 67  68 74 20 70 6c 61 63 65  |, in right place|
000078e0  22 0d 27 a6 2c 47 49 46  6c 65 66 74 3d a4 48 57  |".'.,GIFleft=.HW|
000078f0  3a 47 49 46 72 69 67 68  74 3d a4 48 57 3a 73 78  |:GIFright=.HW:sx|
00007900  25 3d a4 48 57 3a 73 79  25 3d a4 48 57 0d 27 b0  |%=.HW:sy%=.HW.'.|
00007910  1c e7 47 49 46 73 78 3c  73 78 25 20 84 20 47 49  |..GIFsx<sx% . GI|
00007920  46 73 79 3c 73 79 25 20  8c 0d 27 ba 0c e7 69 6e  |Fsy<sy% ..'...in|
00007930  66 6f 25 20 8c 0d 27 c4  29 f1 22 47 49 46 20 66  |fo% ..'.)."GIF f|
00007940  69 6c 65 20 77 69 74 68  20 62 69 67 67 65 72 20  |ile with bigger |
00007950  69 6d 61 67 65 20 69 6e  73 69 64 65 3a 22 0d 27  |image inside:".'|
00007960  ce 3b f1 22 53 63 72 65  65 6e 20 22 3b 47 49 46  |.;."Screen ";GIF|
00007970  73 78 22 78 20 62 79 20  22 47 49 46 73 79 22 79  |sx"x by "GIFsy"y|
00007980  3b 20 69 6d 61 67 65 20  22 73 78 25 22 78 20 62  |; image "sx%"x b|
00007990  79 20 22 73 79 25 22 79  22 0d 27 d8 2f e8 22 43  |y "sy%"y".'./."C|
000079a0  6f 6e 74 69 6e 75 65 20  77 69 74 68 20 6d 6f 6e  |ontinue with mon|
000079b0  69 74 6f 72 27 73 20 73  69 7a 65 20 5b 59 20 6f  |itor's size [Y o|
000079c0  72 20 79 5d 3f 22 41 24  0d 27 e2 26 e7 41 24 3d  |r y]?"A$.'.&.A$=|
000079d0  22 59 22 84 41 24 3d 22  79 22 20 73 78 25 3d 47  |"Y".A$="y" sx%=G|
000079e0  49 46 73 78 3a 73 79 25  3d 47 49 46 73 79 0d 27  |IFsx:sy%=GIFsy.'|
000079f0  ec 28 f1 22 43 6f 6e 74  69 6e 75 69 6e 67 20 77  |.(."Continuing w|
00007a00  69 74 68 20 22 3b 73 78  25 22 78 20 62 79 20 22  |ith ";sx%"x by "|
00007a10  73 79 25 22 79 22 0d 27  f6 05 cd 0d 28 00 05 cd  |sy%"y".'....(...|
00007a20  0d 28 0a 29 47 49 46 3d  9a 23 63 25 3a e7 47 49  |.(.)GIF=.#c%:.GI|
00007a30  46 20 80 20 26 34 30 20  66 6c 61 67 3d 35 30 31  |F . &40 flag=501|
00007a40  3a 72 24 3d 22 46 4e 38  22 0d 28 14 4a 73 65 74  |:r$="FN8".(.Jset|
00007a50  63 6f 64 65 73 25 3d 9a  23 63 25 3a 63 6c 65 61  |codes%=.#c%:clea|
00007a60  72 63 6f 64 65 25 3d 31  3c 3c 73 65 74 63 6f 64  |rcode%=1<<setcod|
00007a70  65 73 25 3a 73 74 25 3d  8f 23 63 25 3a 63 61 63  |es%:st%=.#c%:cac|
00007a80  68 65 25 3d b9 3a 63 61  63 68 65 62 79 74 65 73  |he%=.:cachebytes|
00007a90  25 3d b9 0d 28 1e 45 de  20 74 61 62 6c 65 25 28  |%=..(.E. table%(|
00007aa0  31 3c 3c 31 32 29 3a 73  74 6b 25 3d a4 64 69 6d  |1<<12):stk%=.dim|
00007ab0  28 31 3c 3c 31 33 29 3a  62 75 66 25 3d a4 64 69  |(1<<13):buf%=.di|
00007ac0  6d 28 32 38 30 29 3a 70  6c 62 75 66 66 25 3d a4  |m(280):plbuff%=.|
00007ad0  64 69 6d 28 73 78 25 29  0d 28 28 26 e3 49 25 3d  |dim(sx%).((&.I%=|
00007ae0  30 b8 63 6c 65 61 72 63  6f 64 65 25 2d 31 3a 74  |0.clearcode%-1:t|
00007af0  61 62 6c 65 25 28 49 25  29 3d 49 25 3a ed 0d 28  |able%(I%)=I%:..(|
00007b00  32 41 69 6e 66 6f 24 3d  22 47 49 46 20 66 69 6c  |2Ainfo$="GIF fil|
00007b10  65 2c 20 22 2b c3 73 78  25 2b 22 20 62 79 20 22  |e, "+.sx%+" by "|
00007b20  2b c3 73 79 25 2b 22 20  70 69 78 65 6c 73 2c 20  |+.sy%+" pixels, |
00007b30  22 2b a4 62 69 74 73 28  71 75 61 6e 74 25 29 0d  |"+.bits(quant%).|
00007b40  28 3c 09 c9 20 36 30 30  0d 28 46 1f 71 75 61 6e  |(<.. 600.(F.quan|
00007b50  74 25 3d 38 3a cf 23 63  25 3d 26 35 63 3a e3 43  |t%=8:.#c%=&5c:.C|
00007b60  25 3d 30 b8 32 35 35 0d  28 50 39 72 25 28 43 25  |%=0.255.(P9r%(C%|
00007b70  29 3d 9a 23 63 25 2f 32  35 35 2a 46 3a 67 25 28  |)=.#c%/255*F:g%(|
00007b80  43 25 29 3d 9a 23 63 25  2f 32 35 35 2a 46 3a 62  |C%)=.#c%/255*F:b|
00007b90  25 28 43 25 29 3d 9a 23  63 25 2f 32 35 35 2a 46  |%(C%)=.#c%/255*F|
00007ba0  0d 28 5a 05 ed 0d 28 64  1d cf 23 63 25 3d 26 33  |.(Z...(d..#c%=&3|
00007bb0  36 65 3a 73 79 25 3d a4  48 57 3a 73 78 25 3d a4  |6e:sy%=.HW:sx%=.|
00007bc0  48 57 0d 28 6e 35 73 74  25 3d 26 33 38 30 3a cf  |HW.(n5st%=&380:.|
00007bd0  23 63 25 3d 73 74 25 3a  72 6f 77 62 79 74 65 73  |#c%=st%:rowbytes|
00007be0  25 3d 73 78 25 3a 72 24  3d 22 46 4e 38 22 3a 63  |%=sx%:r$="FN8":c|
00007bf0  61 63 68 65 25 3d b9 0d  28 78 45 69 6e 66 6f 24  |ache%=..(xEinfo$|
00007c00  3d 22 2e 50 49 43 20 69  6d 61 67 65 2c 20 22 2b  |=".PIC image, "+|
00007c10  c3 73 78 25 2b 22 20 62  79 20 22 2b c3 73 79 25  |.sx%+" by "+.sy%|
00007c20  2b 22 20 70 69 78 65 6c  73 2c 20 38 20 62 69 74  |+" pixels, 8 bit|
00007c30  73 20 70 65 72 20 70 69  78 65 6c 22 0d 28 82 09  |s per pixel".(..|
00007c40  c9 20 37 30 30 0d 28 8c  24 71 75 61 6e 74 25 3d  |. 700.(.$quant%=|
00007c50  38 3a cf 23 63 25 3d 30  3a 61 24 3d be 23 63 25  |8:.#c%=0:a$=.#c%|
00007c60  3a 73 74 25 3d 8f 23 63  25 0d 28 96 20 73 78 25  |:st%=.#c%.(. sx%|
00007c70  3d bb 61 24 3a 73 79 25  3d bb 28 c1 61 24 2c a7  |=.a$:sy%=.(.a$,.|
00007c80  61 24 2c 22 20 22 29 29  29 0d 28 a0 36 f2 6e 6f  |a$," "))).(.6.no|
00007c90  70 61 6c 3a 69 6e 70 75  74 3d 32 34 3a 73 74 65  |pal:input=24:ste|
00007ca0  70 32 34 3d 33 3a 72 6f  77 62 79 74 65 73 25 3d  |p24=3:rowbytes%=|
00007cb0  73 78 25 2a 33 3a 72 24  3d 22 46 4e 32 34 22 0d  |sx%*3:r$="FN24".|
00007cc0  28 aa 21 72 62 6f 25 3d  30 3a 67 62 6f 25 3d 31  |(.!rbo%=0:gbo%=1|
00007cd0  3a 62 62 6f 25 3d 32 3a  63 61 63 68 65 25 3d b9  |:bbo%=2:cache%=.|
00007ce0  0d 28 b4 4a 69 6e 66 6f  24 3d 22 4d 54 56 20 2e  |.(.Jinfo$="MTV .|
00007cf0  70 69 63 20 69 6d 61 67  65 2c 20 22 2b c3 73 78  |pic image, "+.sx|
00007d00  25 2b 22 20 62 79 20 22  2b c3 73 79 25 2b 22 20  |%+" by "+.sy%+" |
00007d10  70 69 78 65 6c 73 2c 20  32 34 20 62 69 74 73 20  |pixels, 24 bits |
00007d20  70 65 72 20 70 69 78 65  6c 22 0d 28 be 09 c9 20  |per pixel".(... |
00007d30  38 30 30 0d 28 c8 29 73  78 25 3d 35 31 32 3a 73  |800.(.)sx%=512:s|
00007d40  79 25 3d 32 35 36 3a e7  73 63 61 6c 65 25 20 79  |y%=256:.scale% y|
00007d50  6d 75 6c 25 3d 79 6d 75  6c 25 2a 32 0d 28 d2 34  |mul%=ymul%*2.(.4|
00007d60  70 6c 62 75 66 66 25 3d  a4 64 69 6d 28 73 78 25  |plbuff%=.dim(sx%|
00007d70  29 3a 72 65 70 25 3d 30  3a 77 74 25 3d 30 3a 77  |):rep%=0:wt%=0:w|
00007d80  74 73 78 25 3d 70 6c 62  75 66 66 25 2b 73 78 25  |tsx%=plbuff%+sx%|
00007d90  0d 28 dc 1a 63 61 63 68  65 25 3d b9 3a 63 61 63  |.(..cache%=.:cac|
00007da0  68 65 62 79 74 65 73 25  3d b9 0d 28 e6 40 e3 43  |hebytes%=..(.@.C|
00007db0  25 3d 30 b8 32 35 35 3a  72 25 28 43 25 29 3d 28  |%=0.255:r%(C%)=(|
00007dc0  43 25 80 36 33 29 2f 36  33 2a 46 3a ed 3a 67 25  |C%.63)/63*F:.:g%|
00007dd0  28 29 3d 72 25 28 29 3a  62 25 28 29 3d 72 25 28  |()=r%():b%()=r%(|
00007de0  29 3a 71 75 61 6e 74 25  3d 36 0d 28 f0 4a 69 6e  |):quant%=6.(.Jin|
00007df0  66 6f 24 3d 22 57 61 74  66 6f 72 64 20 64 69 67  |fo$="Watford dig|
00007e00  69 74 69 73 65 72 20 70  69 63 74 75 72 65 2c 20  |itiser picture, |
00007e10  35 31 32 20 62 79 20 32  35 36 20 70 69 78 65 6c  |512 by 256 pixel|
00007e20  73 2c 20 36 20 62 69 74  73 20 70 65 72 20 70 69  |s, 6 bits per pi|
00007e30  78 65 6c 22 0d 28 fa 09  c9 20 38 30 31 0d 29 04  |xel".(... 801.).|
00007e40  3b 73 78 25 3d 35 31 32  3a 73 79 25 3d 32 35 36  |;sx%=512:sy%=256|
00007e50  3a 69 6e 70 75 74 3d 32  34 3a 71 75 61 6e 74 25  |:input=24:quant%|
00007e60  3d 36 3a e7 73 63 61 6c  65 25 20 79 6d 75 6c 25  |=6:.scale% ymul%|
00007e70  3d 79 6d 75 6c 25 2a 32  0d 29 0e 30 72 65 70 31  |=ymul%*2.).0rep1|
00007e80  25 3d 30 3a 77 74 31 25  3d 30 3a 72 65 70 32 25  |%=0:wt1%=0:rep2%|
00007e90  3d 30 3a 77 74 32 25 3d  30 3a 72 65 70 33 25 3d  |=0:wt2%=0:rep3%=|
00007ea0  30 3a 77 74 33 25 3d 30  0d 29 18 3d 62 75 66 66  |0:wt3%=0.).=buff|
00007eb0  25 3d a4 64 69 6d 28 73  78 25 2a 33 29 3a 72 62  |%=.dim(sx%*3):rb|
00007ec0  25 3d 62 75 66 66 25 3a  67 62 25 3d 62 75 66 66  |%=buff%:gb%=buff|
00007ed0  25 2b 73 78 25 3a 62 62  25 3d 62 75 66 66 25 2b  |%+sx%:bb%=buff%+|
00007ee0  32 2a 73 78 25 0d 29 22  3a 77 74 73 78 31 25 3d  |2*sx%.)":wtsx1%=|
00007ef0  62 75 66 66 25 2b 73 78  25 3a 77 74 73 78 32 25  |buff%+sx%:wtsx2%|
00007f00  3d 62 75 66 66 25 2b 32  2a 73 78 25 3a 77 74 73  |=buff%+2*sx%:wts|
00007f10  78 33 25 3d 62 75 66 66  25 2b 33 2a 73 78 25 0d  |x3%=buff%+3*sx%.|
00007f20  29 2c 37 e3 43 25 3d 30  b8 32 35 35 3a 72 25 28  |),7.C%=0.255:r%(|
00007f30  43 25 29 3d 28 43 25 80  36 33 29 2f 36 33 2a 46  |C%)=(C%.63)/63*F|
00007f40  3a ed 3a 67 25 28 29 3d  72 25 28 29 3a 62 25 28  |:.:g%()=r%():b%(|
00007f50  29 3d 72 25 28 29 0d 29  36 52 69 6e 66 6f 24 3d  |)=r%().)6Rinfo$=|
00007f60  22 54 72 69 70 6c 65 20  57 61 74 66 6f 72 64 20  |"Triple Watford |
00007f70  64 69 67 69 74 69 73 65  72 20 70 69 63 74 75 72  |digitiser pictur|
00007f80  65 2c 20 35 31 32 20 62  79 20 32 35 36 20 70 69  |e, 512 by 256 pi|
00007f90  78 65 6c 73 2c 20 31 38  20 62 69 74 73 20 70 65  |xels, 18 bits pe|
00007fa0  72 20 70 69 78 65 6c 22  0d 29 40 09 c9 20 39 30  |r pixel".)@.. 90|
00007fb0  30 0d 29 4a 27 71 75 61  6e 74 25 3d 38 3a 73 74  |0.)J'quant%=8:st|
00007fc0  25 3d 30 3a cf 23 63 25  3d 30 3a e7 a2 23 63 25  |%=0:.#c%=0:..#c%|
00007fd0  3d 36 35 35 33 36 20 8c  0d 29 54 37 73 78 25 3d  |=65536 ..)T7sx%=|
00007fe0  32 35 36 3a 73 79 25 3d  32 35 36 3a e7 73 63 61  |256:sy%=256:.sca|
00007ff0  6c 65 25 20 79 6d 75 6c  25 3d 79 6d 75 6c 25 2a  |le% ymul%=ymul%*|
00008000  32 3a 78 6d 75 6c 25 3d  78 6d 75 6c 25 2a 32 0d  |2:xmul%=xmul%*2.|
00008010  29 5e 05 cc 0d 29 68 13  73 78 25 3d 35 31 32 3a  |)^...)h.sx%=512:|
00008020  73 79 25 3d 35 31 32 0d  29 72 05 cd 0d 29 7c 53  |sy%=512.)r...)|S|
00008030  e3 43 25 3d 30 b8 32 35  35 3a 72 25 28 43 25 29  |.C%=0.255:r%(C%)|
00008040  3d 43 25 2f 32 35 35 2a  46 3a ed 3a 67 25 28 29  |=C%/255*F:.:g%()|
00008050  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 3a  |=r%():b%()=r%():|
00008060  72 6f 77 62 79 74 65 73  25 3d 73 78 25 3a 72 24  |rowbytes%=sx%:r$|
00008070  3d 22 46 4e 38 22 3a 63  61 63 68 65 25 3d b9 0d  |="FN8":cache%=..|
00008080  29 86 3f 69 6e 66 6f 24  3d 22 41 49 4d 20 2e 72  |).?info$="AIM .r|
00008090  61 77 20 69 6d 61 67 65  2c 20 32 35 36 20 62 79  |aw image, 256 by|
000080a0  20 32 35 36 20 70 69 78  65 6c 73 2c 20 38 20 62  | 256 pixels, 8 b|
000080b0  69 74 73 20 70 65 72 20  70 69 78 65 6c 22 0d 29  |its per pixel".)|
000080c0  90 09 c9 20 39 30 31 0d  29 9a 1a 71 75 61 6e 74  |... 901.)..quant|
000080d0  25 3d 34 3a e7 a2 23 63  25 3d 36 35 35 33 36 20  |%=4:..#c%=65536 |
000080e0  8c 0d 29 a4 37 73 78 25  3d 32 35 36 3a 73 79 25  |..).7sx%=256:sy%|
000080f0  3d 32 35 36 3a e7 73 63  61 6c 65 25 20 79 6d 75  |=256:.scale% ymu|
00008100  6c 25 3d 79 6d 75 6c 25  2a 32 3a 78 6d 75 6c 25  |l%=ymul%*2:xmul%|
00008110  3d 78 6d 75 6c 25 2a 32  0d 29 ae 05 cc 0d 29 b8  |=xmul%*2.)....).|
00008120  13 73 78 25 3d 35 31 32  3a 73 79 25 3d 35 31 32  |.sx%=512:sy%=512|
00008130  0d 29 c2 05 cd 0d 29 cc  3d 62 75 66 66 25 3d a4  |.)....).=buff%=.|
00008140  64 69 6d 28 73 78 25 2a  33 29 3a 72 62 25 3d 62  |dim(sx%*3):rb%=b|
00008150  75 66 66 25 3a 67 62 25  3d 62 75 66 66 25 2b 73  |uff%:gb%=buff%+s|
00008160  78 25 3a 62 62 25 3d 62  75 66 66 25 2b 73 78 25  |x%:bb%=buff%+sx%|
00008170  2a 32 0d 29 d6 33 e3 43  25 3d 30 b8 32 35 35 3a  |*2.).3.C%=0.255:|
00008180  72 25 28 43 25 29 3d 43  25 2f 32 35 35 2a 46 3a  |r%(C%)=C%/255*F:|
00008190  ed 3a 67 25 28 29 3d 72  25 28 29 3a 62 25 28 29  |.:g%()=r%():b%()|
000081a0  3d 72 25 28 29 0d 29 e0  4f 69 6e 70 75 74 3d 32  |=r%().).Oinput=2|
000081b0  34 3a 69 6e 66 6f 24 3d  22 48 61 77 6b 20 56 39  |4:info$="Hawk V9|
000081c0  20 54 72 69 70 6c 65 20  69 6d 61 67 65 2c 20 32  | Triple image, 2|
000081d0  35 36 20 62 79 20 32 35  36 20 70 69 78 65 6c 73  |56 by 256 pixels|
000081e0  2c 20 32 34 20 62 69 74  73 20 70 65 72 20 70 69  |, 24 bits per pi|
000081f0  78 65 6c 22 0d 29 ea 09  c9 20 39 30 32 0d 29 f4  |xel".)... 902.).|
00008200  42 71 75 61 6e 74 25 3d  34 3a cf 23 63 25 3d 38  |Bquant%=4:.#c%=8|
00008210  3a 73 78 25 3d a4 57 3a  72 6f 77 62 79 74 65 73  |:sx%=.W:rowbytes|
00008220  25 3d 73 78 25 2a 33 2f  32 3a 73 79 25 3d a4 57  |%=sx%*3/2:sy%=.W|
00008230  3a 73 74 25 3d 32 30 3a  cf 23 63 25 3d 32 30 0d  |:st%=20:.#c%=20.|
00008240  29 fe 19 e7 73 63 61 6c  65 25 20 79 6d 75 6c 25  |)...scale% ymul%|
00008250  3d 79 6d 75 6c 25 2a 32  0d 2a 08 4d 70 6c 62 75  |=ymul%*2.*.Mplbu|
00008260  66 66 25 3d a4 64 69 6d  28 73 78 25 2a 33 29 3a  |ff%=.dim(sx%*3):|
00008270  72 62 25 3d 70 6c 62 75  66 66 25 3a 67 62 25 3d  |rb%=plbuff%:gb%=|
00008280  70 6c 62 75 66 66 25 2b  73 78 25 3a 62 62 25 3d  |plbuff%+sx%:bb%=|
00008290  70 6c 62 75 66 66 25 2b  73 78 25 2a 32 3a 72 62  |plbuff%+sx%*2:rb|
000082a0  6f 25 3d 2d 31 0d 2a 12  40 e3 43 25 3d 30 b8 32  |o%=-1.*.@.C%=0.2|
000082b0  35 35 3a 72 25 28 43 25  29 3d 28 43 25 80 26 46  |55:r%(C%)=(C%.&F|
000082c0  29 2f 26 46 2a 46 3a ed  3a 67 25 28 29 3d 72 25  |)/&F*F:.:g%()=r%|
000082d0  28 29 3a 62 25 28 29 3d  72 25 28 29 3a 63 61 63  |():b%()=r%():cac|
000082e0  68 65 25 3d b9 0d 2a 1c  62 69 6e 70 75 74 3d 32  |he%=..*.binput=2|
000082f0  34 3a 69 6e 66 6f 24 3d  22 48 61 77 6b 20 56 39  |4:info$="Hawk V9|
00008300  2f 53 6e 61 70 73 68 6f  74 20 43 6f 6c 6f 75 72  |/Snapshot Colour|
00008310  20 69 6d 61 67 65 2c 20  22 2b c3 73 78 25 2b 22  | image, "+.sx%+"|
00008320  20 62 79 20 22 2b c3 73  79 25 2b 22 20 70 69 78  | by "+.sy%+" pix|
00008330  65 6c 73 2c 20 31 32 20  62 69 74 73 20 70 65 72  |els, 12 bits per|
00008340  20 70 69 78 65 6c 22 0d  2a 26 09 c9 20 39 30 33  | pixel".*&.. 903|
00008350  0d 2a 30 5c 71 75 61 6e  74 25 3d 35 3a cf 23 63  |.*0\quant%=5:.#c|
00008360  25 3d 38 3a 73 78 25 3d  a4 57 3a 72 6f 77 62 79  |%=8:sx%=.W:rowby|
00008370  74 65 73 25 3d 73 78 25  2a 32 3a 73 79 25 3d a4  |tes%=sx%*2:sy%=.|
00008380  57 3a 73 74 25 3d 32 30  3a cf 23 63 25 3d 32 30  |W:st%=20:.#c%=20|
00008390  3a 63 61 63 68 65 25 3d  b9 3a 72 24 3d 22 46 4e  |:cache%=.:r$="FN|
000083a0  31 36 22 3a 66 6c 61 67  3d 37 30 30 0d 2a 3a 2d  |16":flag=700.*:-|
000083b0  de 20 72 70 61 6c 25 28  32 35 35 29 2c 67 70 61  |. rpal%(255),gpa|
000083c0  6c 25 28 32 35 35 29 3a  69 6e 70 75 74 3d 31 36  |l%(255):input=16|
000083d0  3a 73 74 65 70 32 34 3d  32 0d 2a 44 0d e3 43 25  |:step24=2.*D..C%|
000083e0  3d 30 b8 32 35 35 0d 2a  4e 22 67 70 61 6c 25 28  |=0.255.*N"gpal%(|
000083f0  43 25 29 3d 28 43 25 3e  3e 35 29 3c 3c 38 20 84  |C%)=(C%>>5)<<8 .|
00008400  20 28 43 25 80 33 31 29  0d 2a 58 2b 72 70 61 6c  | (C%.31).*X+rpal|
00008410  25 28 43 25 29 3d 28 28  43 25 3e 3e 32 29 80 33  |%(C%)=((C%>>2).3|
00008420  31 29 3c 3c 31 36 20 84  20 28 43 25 80 33 29 3c  |1)<<16 . (C%.3)<|
00008430  3c 31 31 0d 2a 62 05 ed  0d 2a 6c 31 e3 43 25 3d  |<11.*b...*l1.C%=|
00008440  30 b8 33 31 3a 72 25 28  43 25 29 3d 43 25 2f 33  |0.31:r%(C%)=C%/3|
00008450  31 2a 46 3a ed 3a 67 25  28 29 3d 72 25 28 29 3a  |1*F:.:g%()=r%():|
00008460  62 25 28 29 3d 72 25 28  29 0d 2a 76 5f 69 6e 70  |b%()=r%().*v_inp|
00008470  75 74 3d 31 36 3a 69 6e  66 6f 24 3d 22 48 61 77  |ut=16:info$="Haw|
00008480  6b 20 56 39 20 6d 6b 20  49 49 20 43 6f 6c 6f 75  |k V9 mk II Colou|
00008490  72 20 69 6d 61 67 65 2c  20 22 2b c3 73 78 25 2b  |r image, "+.sx%+|
000084a0  22 20 62 79 20 22 2b c3  73 79 25 2b 22 20 70 69  |" by "+.sy%+" pi|
000084b0  78 65 6c 73 2c 20 31 36  20 62 69 74 73 20 70 65  |xels, 16 bits pe|
000084c0  72 20 70 69 78 65 6c 22  0d 2a 80 09 c9 20 39 35  |r pixel".*... 95|
000084d0  30 0d 2a 8a 40 71 75 61  6e 74 25 3d 38 3a cf 23  |0.*.@quant%=8:.#|
000084e0  63 25 3d 30 3a 73 78 25  3d 35 31 32 3a 72 6f 77  |c%=0:sx%=512:row|
000084f0  62 79 74 65 73 25 3d 35  31 32 3a 73 79 25 3d 35  |bytes%=512:sy%=5|
00008500  31 32 3a 73 74 25 3d 30  3a 66 6c 61 67 3d 39 30  |12:st%=0:flag=90|
00008510  30 0d 2a 94 45 e3 43 25  3d 30 b8 32 35 35 3a 72  |0.*.E.C%=0.255:r|
00008520  25 28 43 25 29 3d 43 25  2f 32 35 35 2a 46 3a ed  |%(C%)=C%/255*F:.|
00008530  3a 67 25 28 29 3d 72 25  28 29 3a 62 25 28 29 3d  |:g%()=r%():b%()=|
00008540  72 25 28 29 3a 72 24 3d  22 46 4e 38 22 3a 63 61  |r%():r$="FN8":ca|
00008550  63 68 65 25 3d b9 0d 2a  9e 46 69 6e 66 6f 24 3d  |che%=..*.Finfo$=|
00008560  22 57 69 6c 64 20 56 69  73 69 6f 6e 20 56 31 32  |"Wild Vision V12|
00008570  20 69 6d 61 67 65 2c 20  35 31 32 20 62 79 20 35  | image, 512 by 5|
00008580  31 32 20 70 69 78 65 6c  73 2c 20 38 20 62 69 74  |12 pixels, 8 bit|
00008590  73 20 70 65 72 20 70 69  78 65 6c 22 0d 2a a8 0a  |s per pixel".*..|
000085a0  c9 20 31 30 30 30 0d 2a  b2 54 71 75 61 6e 74 25  |. 1000.*.Tquant%|
000085b0  3d 34 3a 73 78 25 3d 36  34 30 3a 73 79 25 3d 32  |=4:sx%=640:sy%=2|
000085c0  35 36 3a f2 64 65 66 70  61 6c 3a 73 74 25 3d a4  |56:.defpal:st%=.|
000085d0  57 3a 72 24 3d 22 46 4e  22 2b c3 28 31 30 30 30  |W:r$="FN"+.(1000|
000085e0  2b a4 57 29 3a e7 73 63  61 6c 65 25 20 79 6d 75  |+.W):.scale% ymu|
000085f0  6c 25 3d 79 6d 75 6c 25  2a 32 0d 2a c6 25 62 75  |l%=ymul%*2.*.%bu|
00008600  66 66 25 3d a4 64 69 6d  28 73 78 25 29 3a 63 74  |ff%=.dim(sx%):ct|
00008610  61 62 6c 65 25 3d a4 64  69 6d 28 73 74 25 29 0d  |able%=.dim(st%).|
00008620  2a d0 22 c8 99 31 32 2c  34 2c 63 25 2c 63 74 61  |*."..12,4,c%,cta|
00008630  62 6c 65 25 2c 73 74 25  3a 73 74 25 3d 8f 23 63  |ble%,st%:st%=.#c|
00008640  25 0d 2a da 2e 70 61 25  3d 63 74 61 62 6c 65 25  |%.*..pa%=ctable%|
00008650  3a 72 65 70 25 3d 30 3a  72 65 70 32 25 3d 30 3a  |:rep%=0:rep2%=0:|
00008660  70 61 73 78 25 3d 62 75  66 66 25 2b 73 78 25 0d  |pasx%=buff%+sx%.|
00008670  2a e4 41 69 6e 66 6f 24  3d 22 50 72 6f 41 72 74  |*.Ainfo$="ProArt|
00008680  69 73 61 6e 20 69 6d 61  67 65 2c 20 36 34 30 20  |isan image, 640 |
00008690  62 79 20 32 35 36 20 70  69 78 65 6c 73 2c 20 38  |by 256 pixels, 8|
000086a0  20 62 69 74 73 20 70 65  72 20 70 69 78 65 6c 22  | bits per pixel"|
000086b0  0d 2a ee 0a c9 20 31 31  30 30 0d 2a f8 40 71 75  |.*... 1100.*.@qu|
000086c0  61 6e 74 25 3d 31 3a cf  23 63 25 3d 34 3a 73 78  |ant%=1:.#c%=4:sx|
000086d0  25 3d a4 62 65 57 3a 73  79 25 3d a4 62 65 57 3a  |%=.beW:sy%=.beW:|
000086e0  69 6e 70 75 74 3d a4 62  65 57 3a 62 69 67 65 6e  |input=.beW:bigen|
000086f0  64 69 61 6e 62 69 74 73  3d b9 0d 2b 02 13 53 25  |dianbits=..+..S%|
00008700  3d a4 62 65 57 3a 53 25  3d a4 62 65 57 0d 2b 0c  |=.beW:S%=.beW.+.|
00008710  49 63 61 63 68 65 25 3d  b9 3a e7 53 25 3d 32 20  |Icache%=.:.S%=2 |
00008720  63 61 63 68 65 62 79 74  65 73 25 3d b9 3a 69 6e  |cachebytes%=.:in|
00008730  66 6f 24 3d 22 42 79 74  65 20 45 6e 63 6f 64 65  |fo$="Byte Encode|
00008740  64 20 22 20 8b 69 6e 66  6f 24 3d 22 22 3a 72 24  |d " .info$="":r$|
00008750  3d 22 46 4e 38 22 0d 2b  16 0b 43 25 3d a4 62 65  |="FN8".+..C%=.be|
00008760  57 0d 2b 20 0b 44 25 3d  a4 62 65 57 0d 2b 2a 0b  |W.+ .D%=.beW.+*.|
00008770  c8 8e 20 43 25 20 ca 0d  2b 34 09 c9 20 31 2c 32  |.. C% ..+4.. 1,2|
00008780  0d 2b 3e 24 e3 49 25 3d  30 b8 44 25 2f 33 2d 31  |.+>$.I%=0.D%/3-1|
00008790  3a 72 25 28 49 25 29 3d  9a 23 63 25 2f 32 35 35  |:r%(I%)=.#c%/255|
000087a0  2a 46 3a ed 0d 2b 48 24  e3 49 25 3d 30 b8 44 25  |*F:..+H$.I%=0.D%|
000087b0  2f 33 2d 31 3a 67 25 28  49 25 29 3d 9a 23 63 25  |/3-1:g%(I%)=.#c%|
000087c0  2f 32 35 35 2a 46 3a ed  0d 2b 52 24 e3 49 25 3d  |/255*F:..+R$.I%=|
000087d0  30 b8 44 25 2f 33 2d 31  3a 62 25 28 49 25 29 3d  |0.D%/3-1:b%(I%)=|
000087e0  9a 23 63 25 2f 32 35 35  2a 46 3a ed 0d 2b 5c 05  |.#c%/255*F:..+\.|
000087f0  7f 0d 2b 66 0e c8 8e 20  69 6e 70 75 74 20 ca 0d  |..+f... input ..|
00008800  2b 70 1f c9 20 31 3a 72  25 28 30 29 3d 46 3a 67  |+p.. 1:r%(0)=F:g|
00008810  25 28 30 29 3d 46 3a 62  25 28 30 29 3d 46 0d 2b  |%(0)=F:b%(0)=F.+|
00008820  7a 10 c9 20 34 2c 38 3a  f2 6e 6f 70 61 6c 0d 2b  |z.. 4,8:.nopal.+|
00008830  84 0f c9 20 32 34 3a f2  6e 6f 70 61 6c 0d 2b 8e  |... 24:.nopal.+.|
00008840  05 cb 0d 2b 98 05 cb 0d  2b a2 0e c8 8e 20 69 6e  |...+....+.... in|
00008850  70 75 74 20 ca 0d 2b ac  20 c9 20 31 3a 72 6f 77  |put ..+. . 1:row|
00008860  62 79 74 65 73 25 3d 28  73 78 25 2b 31 35 3e 3e  |bytes%=(sx%+15>>|
00008870  34 29 3c 3c 31 0d 2b b6  1f c9 20 34 3a 72 6f 77  |4)<<1.+... 4:row|
00008880  62 79 74 65 73 25 3d 28  73 78 25 2b 33 3e 3e 32  |bytes%=(sx%+3>>2|
00008890  29 3c 3c 31 0d 2b c0 1f  c9 20 38 3a 72 6f 77 62  |)<<1.+... 8:rowb|
000088a0  79 74 65 73 25 3d 28 73  78 25 2b 31 3e 3e 31 29  |ytes%=(sx%+1>>1)|
000088b0  3c 3c 31 0d 2b ca 4a c9  20 32 34 3a 72 6f 77 62  |<<1.+.J. 24:rowb|
000088c0  79 74 65 73 25 3d 28 33  2a 73 78 25 2b 31 3e 3e  |ytes%=(3*sx%+1>>|
000088d0  31 29 3c 3c 31 3a 72 24  3d 22 46 4e 32 34 22 3a  |1)<<1:r$="FN24":|
000088e0  72 62 6f 25 3d 30 3a 67  62 6f 25 3d 31 3a 62 62  |rbo%=0:gbo%=1:bb|
000088f0  6f 25 3d 32 3a 73 74 65  70 32 34 3d 33 0d 2b d4  |o%=2:step24=3.+.|
00008900  17 e7 53 25 3d 31 20 62  62 6f 25 3d 30 3a 72 62  |..S%=1 bbo%=0:rb|
00008910  6f 25 3d 32 0d 2b de 26  7f 3a 85 20 34 32 2c 22  |o%=2.+.&.:. 42,"|
00008920  43 61 6e 27 74 20 64 6f  20 74 68 69 73 20 53 75  |Can't do this Su|
00008930  6e 20 70 69 78 72 65 63  74 22 0d 2b e8 05 cb 0d  |n pixrect".+....|
00008940  2b f2 4d 73 74 25 3d 44  25 2b 26 32 30 3a 72 65  |+.Mst%=D%+&20:re|
00008950  70 25 3d 30 3a e7 63 61  63 68 65 62 79 74 65 73  |p%=0:.cachebytes|
00008960  25 20 70 6c 62 75 66 66  25 3d a4 64 69 6d 28 72  |% plbuff%=.dim(r|
00008970  6f 77 62 79 74 65 73 25  29 3a 70 6c 62 79 74 65  |owbytes%):plbyte|
00008980  73 25 3d 72 6f 77 62 79  74 65 73 25 0d 2b fc 42  |s%=rowbytes%.+.B|
00008990  69 6e 66 6f 24 2b 3d 22  53 75 6e 20 69 6d 61 67  |info$+="Sun imag|
000089a0  65 2c 20 22 2b c3 73 78  25 2b 22 20 62 79 20 22  |e, "+.sx%+" by "|
000089b0  2b c3 73 79 25 2b 22 20  70 69 78 65 6c 73 2c 20  |+.sy%+" pixels, |
000089c0  22 2b a4 62 69 74 73 28  69 6e 70 75 74 29 0d 2c  |"+.bits(input).,|
000089d0  06 0a c9 20 31 32 30 30  0d 2c 10 3e 71 75 61 6e  |... 1200.,.>quan|
000089e0  74 25 3d 38 3a 73 78 25  3d 38 30 30 3a 73 79 25  |t%=8:sx%=800:sy%|
000089f0  3d 38 30 30 3a 73 74 25  3d 31 36 30 30 3a cf 23  |=800:st%=1600:.#|
00008a00  63 25 3d 73 74 25 3a 76  66 6c 69 70 25 3d ac 20  |c%=st%:vflip%=. |
00008a10  76 66 6c 69 70 25 0d 2c  1a 2a f2 6e 6f 70 61 6c  |vflip%.,.*.nopal|
00008a20  3a 72 24 3d 22 46 4e 38  22 3a 72 6f 77 62 79 74  |:r$="FN8":rowbyt|
00008a30  65 73 25 3d 73 78 25 3a  63 61 63 68 65 25 3d b9  |es%=sx%:cache%=.|
00008a40  0d 2c 24 49 69 6e 66 6f  24 3d 22 54 69 6d 65 53  |.,$Iinfo$="TimeS|
00008a50  74 65 70 20 73 61 74 65  6c 6c 69 74 65 20 69 6d  |tep satellite im|
00008a60  61 67 65 2c 20 38 30 30  20 62 79 20 38 30 30 20  |age, 800 by 800 |
00008a70  70 69 78 65 6c 73 2c 20  38 20 62 69 74 73 20 70  |pixels, 8 bits p|
00008a80  65 72 20 70 69 78 65 6c  22 0d 2c 2e 0a c9 20 31  |er pixel".,... 1|
00008a90  33 30 30 0d 2c 38 3f 71  75 61 6e 74 25 3d 38 3a  |300.,8?quant%=8:|
00008aa0  73 78 25 3d 31 32 38 3a  73 79 25 3d 32 35 36 3a  |sx%=128:sy%=256:|
00008ab0  73 74 25 3d 30 3a cf 23  63 25 3d 30 3a e7 73 63  |st%=0:.#c%=0:.sc|
00008ac0  61 6c 65 25 20 78 6d 75  6c 25 3d 78 6d 75 6c 25  |ale% xmul%=xmul%|
00008ad0  2a 32 0d 2c 42 2a f2 6e  6f 70 61 6c 3a 72 24 3d  |*2.,B*.nopal:r$=|
00008ae0  22 46 4e 38 22 3a 72 6f  77 62 79 74 65 73 25 3d  |"FN8":rowbytes%=|
00008af0  73 78 25 3a 63 61 63 68  65 25 3d b9 0d 2c 4c 40  |sx%:cache%=..,L@|
00008b00  69 6e 66 6f 24 3d 22 73  61 74 65 6c 6c 69 74 65  |info$="satellite|
00008b10  20 69 6d 61 67 65 2c 20  31 32 38 20 62 79 20 32  | image, 128 by 2|
00008b20  35 36 20 70 69 78 65 6c  73 2c 20 38 20 62 69 74  |56 pixels, 8 bit|
00008b30  73 20 70 65 72 20 70 69  78 65 6c 22 0d 2c 56 0a  |s per pixel".,V.|
00008b40  c9 20 31 33 30 31 0d 2c  60 3b 69 6e 70 75 74 3d  |. 1301.,`;input=|
00008b50  32 34 3a 71 75 61 6e 74  25 3d 38 3a 73 78 25 3d  |24:quant%=8:sx%=|
00008b60  31 32 38 3a 73 79 25 3d  32 35 36 3a e7 73 63 61  |128:sy%=256:.sca|
00008b70  6c 65 25 20 78 6d 75 6c  25 3d 78 6d 75 6c 25 2a  |le% xmul%=xmul%*|
00008b80  32 0d 2c 6a 4f 62 75 66  66 25 3d a4 64 69 6d 28  |2.,jObuff%=.dim(|
00008b90  73 78 25 2a 33 29 3a 72  62 25 3d 62 75 66 66 25  |sx%*3):rb%=buff%|
00008ba0  3a 67 62 25 3d 62 75 66  66 25 2b 73 78 25 3a 62  |:gb%=buff%+sx%:b|
00008bb0  62 25 3d 62 75 66 66 25  2b 32 2a 73 78 25 3a f2  |b%=buff%+2*sx%:.|
00008bc0  6e 6f 70 61 6c 3a 72 24  3d 22 46 4e 39 30 31 22  |nopal:r$="FN901"|
00008bd0  0d 2c 74 48 69 6e 66 6f  24 3d 22 54 72 69 70 6c  |.,tHinfo$="Tripl|
00008be0  65 20 73 61 74 65 6c 6c  69 74 65 20 69 6d 61 67  |e satellite imag|
00008bf0  65 2c 20 31 32 38 20 62  79 20 32 35 36 20 70 69  |e, 128 by 256 pi|
00008c00  78 65 6c 73 2c 20 32 34  20 62 69 74 73 20 70 65  |xels, 24 bits pe|
00008c10  72 20 70 69 78 65 6c 22  0d 2c 7e 0a c9 20 31 34  |r pixel".,~.. 14|
00008c20  30 30 0d 2c 88 25 70 6c  61 6e 61 72 25 3d b9 3a  |00.,.%planar%=.:|
00008c30  cf 23 63 25 3d 30 3a 5a  25 3d a4 48 57 3a e7 5a  |.#c%=0:Z%=.HW:.Z|
00008c40  25 3e 32 35 35 20 8c 0d  2c 92 2b 73 74 25 3d a4  |%>255 ..,.+st%=.|
00008c50  62 65 48 57 2a 32 3a 70  6c 61 6e 65 73 25 3d a4  |beHW*2:planes%=.|
00008c60  62 65 48 57 3a 70 61 74  6c 65 6e 25 3d a4 62 65  |beHW:patlen%=.be|
00008c70  48 57 0d 2c 9c 2b 70 77  25 3d a4 62 65 48 57 3a  |HW.,.+pw%=.beHW:|
00008c80  70 68 25 3d a4 62 65 48  57 3a 73 78 25 3d a4 62  |ph%=.beHW:sx%=.b|
00008c90  65 48 57 3a 73 79 25 3d  a4 62 65 48 57 0d 2c a6  |eHW:sy%=.beHW.,.|
00008ca0  05 cc 0d 2c b0 43 73 74  25 3d a4 48 57 2a 32 3a  |...,.Cst%=.HW*2:|
00008cb0  69 6e 70 75 74 3d a4 48  57 3a 70 61 74 6c 65 6e  |input=.HW:patlen|
00008cc0  25 3d a4 48 57 3a 70 77  25 3d a4 48 57 3a 70 68  |%=.HW:pw%=.HW:ph|
00008cd0  25 3d a4 48 57 3a 73 78  25 3d a4 48 57 3a 73 79  |%=.HW:sx%=.HW:sy|
00008ce0  25 3d a4 48 57 0d 2c ba  05 cd 0d 2c c4 0d e7 73  |%=.HW.,....,...s|
00008cf0  63 61 6c 65 25 20 8c 0d  2c ce 23 78 6d 75 6c 25  |cale% ..,.#xmul%|
00008d00  3d 78 6d 75 6c 25 2a 70  77 25 3a 78 64 69 76 25  |=xmul%*pw%:xdiv%|
00008d10  3d 78 64 69 76 25 2a 32  38 32 0d 2c d8 23 79 6d  |=xdiv%*282.,.#ym|
00008d20  75 6c 25 3d 79 6d 75 6c  25 2a 70 68 25 3a 79 64  |ul%=ymul%*ph%:yd|
00008d30  69 76 25 3d 79 64 69 76  25 2a 32 38 32 0d 2c e2  |iv%=ydiv%*282.,.|
00008d40  05 cd 0d 2c ec 57 72 6f  77 62 79 74 65 73 25 3d  |...,.Wrowbytes%=|
00008d50  73 78 25 2b 37 3e 3e 33  3a 70 62 75 66 66 25 3d  |sx%+7>>3:pbuff%=|
00008d60  a4 64 69 6d 28 73 78 25  29 3a 70 6c 62 79 74 65  |.dim(sx%):plbyte|
00008d70  73 25 3d 72 6f 77 62 79  74 65 73 25 2a 70 6c 61  |s%=rowbytes%*pla|
00008d80  6e 65 73 25 3a 62 75 66  66 25 3d a4 64 69 6d 28  |nes%:buff%=.dim(|
00008d90  70 6c 62 79 74 65 73 25  29 0d 2c f6 14 cf 23 63  |plbytes%).,...#c|
00008da0  25 3d 73 74 25 3a 76 72  65 70 25 3d 30 0d 2d 00  |%=st%:vrep%=0.-.|
00008db0  4d e3 43 25 3d 30 b8 28  31 3c 3c 70 6c 61 6e 65  |M.C%=0.(1<<plane|
00008dc0  73 25 29 2d 31 3a 72 25  28 43 25 29 3d 46 2d 43  |s%)-1:r%(C%)=F-C|
00008dd0  25 2f 28 28 31 3c 3c 70  6c 61 6e 65 73 25 29 2d  |%/((1<<planes%)-|
00008de0  31 29 2a 46 3a ed 3a 67  25 28 29 3d 72 25 28 29  |1)*F:.:g%()=r%()|
00008df0  3a 62 25 28 29 3d 72 25  28 29 0d 2d 0a 42 69 6e  |:b%()=r%().-.Bin|
00008e00  66 6f 24 3d 22 49 4d 47  20 66 69 6c 65 2c 20 22  |fo$="IMG file, "|
00008e10  2b c3 73 78 25 2b 22 20  62 79 20 22 2b c3 73 79  |+.sx%+" by "+.sy|
00008e20  25 2b 22 20 70 69 78 65  6c 73 2c 20 22 2b a4 62  |%+" pixels, "+.b|
00008e30  69 74 73 28 70 6c 61 6e  65 73 25 29 0d 2d 14 0a  |its(planes%).-..|
00008e40  c9 20 31 35 30 30 0d 2d  1e 22 cf 23 63 25 3d 34  |. 1500.-.".#c%=4|
00008e50  3a 64 69 72 25 3d a4 74  69 66 66 28 34 29 3a cf  |:dir%=.tiff(4):.|
00008e60  23 63 25 3d 64 69 72 25  0d 2d 28 36 72 67 62 3d  |#c%=dir%.-(6rgb=|
00008e70  a3 3a 67 72 65 79 75 6e  69 74 3d 31 30 30 3a 70  |.:greyunit=100:p|
00008e80  6c 61 6e 61 72 25 3d 31  3a 66 69 6c 6c 6f 72 64  |lanar%=1:fillord|
00008e90  65 72 3d 31 3a 72 65 73  75 6e 69 74 3d 32 0d 2d  |er=1:resunit=2.-|
00008ea0  32 29 78 6e 75 6d 25 3d  39 30 3a 78 64 65 6e 6f  |2)xnum%=90:xdeno|
00008eb0  6d 25 3d 31 3a 79 6e 75  6d 25 3d 39 30 3a 79 64  |m%=1:ynum%=90:yd|
00008ec0  65 6e 6f 6d 25 3d 31 0d  2d 3c 18 45 25 3d a4 74  |enom%=1.-<.E%=.t|
00008ed0  69 66 66 28 33 29 3a e3  5a 25 3d 31 b8 45 25 0d  |iff(3):.Z%=1.E%.|
00008ee0  2d 46 27 54 25 3d a4 74  69 66 66 28 33 29 3a 44  |-F'T%=.tiff(3):D|
00008ef0  25 3d a4 74 69 66 66 28  33 29 3a 43 25 3d a4 74  |%=.tiff(3):C%=.t|
00008f00  69 66 66 28 34 29 0d 2d  50 61 e7 43 25 3e 31 20  |iff(4).-Pa.C%>1 |
00008f10  56 25 3d a4 74 69 66 66  28 34 29 20 8b e7 44 25  |V%=.tiff(4) ..D%|
00008f20  3d 32 20 8f 23 63 25 3d  64 69 72 25 2b 32 2b 5a  |=2 .#c%=dir%+2+Z|
00008f30  25 2a 31 32 20 8b e7 44  25 3c 34 20 56 25 3d a4  |%*12 ..D%<4 V%=.|
00008f40  74 69 66 66 28 44 25 29  3a cf 23 63 25 3d 64 69  |tiff(D%):.#c%=di|
00008f50  72 25 2b 32 2b 5a 25 2a  31 32 20 8b 56 25 3d a4  |r%+2+Z%*12 .V%=.|
00008f60  74 69 66 66 28 34 29 0d  2d 64 0b c8 8e 20 54 25  |tiff(4).-d... T%|
00008f70  20 ca 0d 2d 6e 10 c9 20  32 35 36 3a 73 78 25 3d  | ..-n.. 256:sx%=|
00008f80  56 25 0d 2d 78 10 c9 20  32 35 37 3a 73 79 25 3d  |V%.-x.. 257:sy%=|
00008f90  56 25 0d 2d 82 11 c9 20  32 35 38 3a e7 43 25 3e  |V%.-... 258:.C%>|
00008fa0  31 20 8c 0d 2d 8c 0e e7  44 25 2a 43 25 3e 36 20  |1 ..-...D%*C%>6 |
00008fb0  8c 0d 2d 96 1c cf 23 63  25 3d 56 25 3a 71 75 61  |..-...#c%=V%:qua|
00008fc0  6e 74 25 3d a4 74 69 66  66 28 44 25 29 0d 2d a0  |nt%=.tiff(D%).-.|
00008fd0  28 69 6e 70 75 74 3d 71  75 61 6e 74 25 3a e3 49  |(input=quant%:.I|
00008fe0  25 3d 31 b8 43 25 2d 31  3a 56 25 3d a4 74 69 66  |%=1.C%-1:V%=.tif|
00008ff0  66 28 44 25 29 0d 2d aa  50 e7 56 25 3c 3e 71 75  |f(D%).-.P.V%<>qu|
00009000  61 6e 74 25 20 85 34 32  2c 22 43 61 6e 27 74 20  |ant% .42,"Can't |
00009010  64 6f 20 52 47 42 20 54  49 46 46 20 77 69 74 68  |do RGB TIFF with|
00009020  20 64 69 66 66 65 72 65  6e 74 20 6e 75 6d 62 65  | different numbe|
00009030  72 73 20 6f 66 20 62 69  74 73 20 70 65 72 20 70  |rs of bits per p|
00009040  69 78 65 6c 22 0d 2d b4  0d 69 6e 70 75 74 2b 3d  |ixel".-..input+=|
00009050  56 25 0d 2d be 0c ed 3a  f2 6e 6f 70 61 6c 0d 2d  |V%.-...:.nopal.-|
00009060  c8 05 cc 0d 2d d2 20 71  75 61 6e 74 25 3d 56 25  |....-. quant%=V%|
00009070  20 80 20 26 46 46 3a 69  6e 70 75 74 3d 71 75 61  | . &FF:input=qua|
00009080  6e 74 25 0d 2d dc 35 e3  49 25 3d 30 b8 28 31 3c  |nt%.-.5.I%=0.(1<|
00009090  3c 71 75 61 6e 74 25 29  2d 31 3a 72 25 28 49 25  |<quant%)-1:r%(I%|
000090a0  29 3d 49 25 2f 28 28 31  3c 3c 71 75 61 6e 74 25  |)=I%/((1<<quant%|
000090b0  29 2d 31 29 2a 46 3a ed  0d 2d e6 17 67 25 28 29  |)-1)*F:..-..g%()|
000090c0  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 0d  |=r%():b%()=r%().|
000090d0  2d f0 05 cd 0d 2d fa 15  cf 23 63 25 3d 64 69 72  |-....-...#c%=dir|
000090e0  25 2b 32 2b 5a 25 2a 31  32 0d 2e 04 05 cc 0d 2e  |%+2+Z%*12.......|
000090f0  0e 1a 71 75 61 6e 74 25  3d 56 25 3a 69 6e 70 75  |..quant%=V%:inpu|
00009100  74 3d 71 75 61 6e 74 25  0d 2e 18 35 e3 49 25 3d  |t=quant%...5.I%=|
00009110  30 b8 28 31 3c 3c 71 75  61 6e 74 25 29 2d 31 3a  |0.(1<<quant%)-1:|
00009120  72 25 28 49 25 29 3d 49  25 2f 28 28 31 3c 3c 71  |r%(I%)=I%/((1<<q|
00009130  75 61 6e 74 25 29 2d 31  29 2a 46 3a ed 0d 2e 22  |uant%)-1)*F:..."|
00009140  17 67 25 28 29 3d 72 25  28 29 3a 62 25 28 29 3d  |.g%()=r%():b%()=|
00009150  72 25 28 29 0d 2e 2c 05  cd 0d 2e 36 18 c9 20 32  |r%()..,....6.. 2|
00009160  35 39 3a 63 6f 6d 70 72  65 73 73 69 6f 6e 3d 56  |59:compression=V|
00009170  25 0d 2e 40 2f c9 20 32  36 32 3a 70 68 6f 74 6f  |%..@/. 262:photo|
00009180  6d 65 74 72 69 63 3d 56  25 3a e7 56 25 3d 30 20  |metric=V%:.V%=0 |
00009190  69 6e 76 65 72 74 25 3d  ac 69 6e 76 65 72 74 25  |invert%=.invert%|
000091a0  0d 2e 4a 16 c9 20 32 36  36 3a 66 69 6c 6c 6f 72  |..J.. 266:fillor|
000091b0  64 65 72 3d 56 25 0d 2e  54 21 c9 20 32 37 33 3a  |der=V%..T!. 273:|
000091c0  73 74 63 25 3d 43 25 3a  73 74 76 25 3d 56 25 3a  |stc%=C%:stv%=V%:|
000091d0  73 74 64 25 3d 44 25 0d  2e 5e 31 c9 20 32 37 37  |std%=D%..^1. 277|
000091e0  3a 73 61 6d 70 70 65 72  70 69 78 25 3d 56 25 3a  |:sampperpix%=V%:|
000091f0  69 6e 70 75 74 3d 71 75  61 6e 74 25 2a 56 25 3a  |input=quant%*V%:|
00009200  72 67 62 3d 56 25 3d 33  0d 2e 68 17 c9 20 32 37  |rgb=V%=3..h.. 27|
00009210  38 3a 73 74 72 69 70 72  6f 77 73 25 3d 56 25 0d  |8:striprows%=V%.|
00009220  2e 72 2d c9 20 32 37 39  3a 73 74 63 62 79 74 65  |.r-. 279:stcbyte|
00009230  25 3d 43 25 3a 73 74 76  62 79 74 65 25 3d 56 25  |%=C%:stvbyte%=V%|
00009240  3a 73 74 64 62 79 74 65  25 3d 44 25 0d 2e 7c 31  |:stdbyte%=D%..|1|
00009250  c9 20 32 38 32 3a cf 23  63 25 3d 56 25 3a 78 6e  |. 282:.#c%=V%:xn|
00009260  75 6d 25 3d a4 74 69 66  66 28 34 29 3a 78 64 65  |um%=.tiff(4):xde|
00009270  6e 6f 6d 25 3d a4 74 69  66 66 28 34 29 0d 2e 86  |nom%=.tiff(4)...|
00009280  15 cf 23 63 25 3d 64 69  72 25 2b 32 2b 5a 25 2a  |..#c%=dir%+2+Z%*|
00009290  31 32 0d 2e 90 31 c9 20  32 38 33 3a cf 23 63 25  |12...1. 283:.#c%|
000092a0  3d 56 25 3a 79 6e 75 6d  25 3d a4 74 69 66 66 28  |=V%:ynum%=.tiff(|
000092b0  34 29 3a 79 64 65 6e 6f  6d 25 3d a4 74 69 66 66  |4):ydenom%=.tiff|
000092c0  28 34 29 0d 2e 9a 15 cf  23 63 25 3d 64 69 72 25  |(4).....#c%=dir%|
000092d0  2b 32 2b 5a 25 2a 31 32  0d 2e a4 2c c9 20 32 38  |+2+Z%*12...,. 28|
000092e0  34 3a 70 6c 61 6e 61 72  25 3d 56 25 3a e7 70 6c  |4:planar%=V%:.pl|
000092f0  61 6e 61 72 25 3d 32 20  69 6e 70 75 74 3d 71 75  |anar%=2 input=qu|
00009300  61 6e 74 25 0d 2e ae 18  c9 20 32 39 30 3a 67 72  |ant%..... 290:gr|
00009310  65 79 75 6e 69 74 3d 31  30 5e 56 25 0d 2e b8 3c  |eyunit=10^V%...<|
00009320  c9 20 32 39 31 3a cf 23  63 25 3d 56 25 3a e3 49  |. 291:.#c%=V%:.I|
00009330  25 3d 30 b8 43 25 2d 31  3a 72 25 28 49 25 29 3d  |%=0.C%-1:r%(I%)=|
00009340  a4 74 69 66 66 28 44 25  29 2f 67 72 65 79 75 6e  |.tiff(D%)/greyun|
00009350  69 74 2f 32 2a 46 3a ed  0d 2e c2 17 67 25 28 29  |it/2*F:.....g%()|
00009360  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 0d  |=r%():b%()=r%().|
00009370  2e cc 15 cf 23 63 25 3d  64 69 72 25 2b 32 2b 5a  |....#c%=dir%+2+Z|
00009380  25 2a 31 32 0d 2e d6 14  c9 20 32 39 36 3a 72 65  |%*12..... 296:re|
00009390  73 75 6e 69 74 3d 56 25  0d 2e e0 16 c9 20 33 31  |sunit=V%..... 31|
000093a0  37 3a 68 70 72 65 64 69  63 74 25 3d 56 25 0d 2e  |7:hpredict%=V%..|
000093b0  ea 38 c9 20 33 32 30 3a  cf 23 63 25 3d 56 25 3a  |.8. 320:.#c%=V%:|
000093c0  e3 49 25 3d 30 b8 43 25  2f 33 2d 31 3a 72 25 28  |.I%=0.C%/3-1:r%(|
000093d0  49 25 29 3d a4 74 69 66  66 28 33 29 2f 36 35 35  |I%)=.tiff(3)/655|
000093e0  33 35 2a 46 3a ed 0d 2e  f4 2a e3 49 25 3d 30 b8  |35*F:....*.I%=0.|
000093f0  43 25 2f 33 2d 31 3a 67  25 28 49 25 29 3d a4 74  |C%/3-1:g%(I%)=.t|
00009400  69 66 66 28 33 29 2f 36  35 35 33 35 2a 46 3a ed  |iff(3)/65535*F:.|
00009410  0d 2e fe 2a e3 49 25 3d  30 b8 43 25 2f 33 2d 31  |...*.I%=0.C%/3-1|
00009420  3a 62 25 28 49 25 29 3d  a4 74 69 66 66 28 33 29  |:b%(I%)=.tiff(3)|
00009430  2f 36 35 35 33 35 2a 46  3a ed 0d 2f 08 15 cf 23  |/65535*F:../...#|
00009440  63 25 3d 64 69 72 25 2b  32 2b 5a 25 2a 31 32 0d  |c%=dir%+2+Z%*12.|
00009450  2f 12 05 7f 0d 2f 1c 4a  e7 69 6e 66 6f 25 20 f1  |/..../.J.info% .|
00009460  22 49 67 6e 6f 72 69 6e  67 20 74 61 67 20 22 3b  |"Ignoring tag ";|
00009470  54 25 22 20 64 61 74 61  74 79 70 65 20 22 44 25  |T%" datatype "D%|
00009480  22 20 63 6f 75 6e 74 20  22 43 25 22 20 76 61 6c  |" count "C%" val|
00009490  75 65 2f 70 6f 69 6e 74  65 72 20 22 56 25 0d 2f  |ue/pointer "V%./|
000094a0  26 05 cb 0d 2f 30 05 ed  0d 2f 3a 19 de 20 73 74  |&.../0.../:.. st|
000094b0  25 28 73 74 63 25 29 3a  e7 73 74 63 25 3e 31 20  |%(stc%):.stc%>1 |
000094c0  8c 0d 2f 44 30 cf 23 63  25 3d 73 74 76 25 3a e3  |../D0.#c%=stv%:.|
000094d0  49 25 3d 30 b8 73 74 63  25 2d 31 3a 73 74 25 28  |I%=0.stc%-1:st%(|
000094e0  49 25 29 3d a4 74 69 66  66 28 73 74 64 25 29 3a  |I%)=.tiff(std%):|
000094f0  ed 0d 2f 58 05 cc 0d 2f  62 0f 73 74 25 28 30 29  |../X.../b.st%(0)|
00009500  3d 73 74 76 25 0d 2f 6c  05 cd 0d 2f 76 14 c8 8e  |=stv%./l.../v...|
00009510  20 63 6f 6d 70 72 65 73  73 69 6f 6e 20 ca 0d 2f  | compression ../|
00009520  80 12 c9 20 30 2c 31 3a  69 6e 66 6f 24 3d 22 22  |... 0,1:info$=""|
00009530  0d 2f 8a 29 c9 20 32 3a  69 6e 66 6f 24 3d 22 43  |./.). 2:info$="C|
00009540  43 49 54 54 20 47 72 6f  75 70 20 33 20 63 6f 6d  |CITT Group 3 com|
00009550  70 72 65 73 73 65 64 20  22 0d 2f 94 2b c9 20 35  |pressed "./.+. 5|
00009560  3a 69 6e 66 6f 24 3d 22  4c 5a 57 20 63 6f 6d 70  |:info$="LZW comp|
00009570  72 65 73 73 65 64 20 22  3a 72 24 3d 22 46 4e 31  |ressed ":r$="FN1|
00009580  35 30 35 22 0d 2f 9e 6e  e7 68 70 72 65 64 69 63  |505"./.n.hpredic|
00009590  74 25 3d 32 20 8c 69 6e  66 6f 24 2b 3d 22 68 6f  |t%=2 .info$+="ho|
000095a0  72 69 7a 6f 6e 74 61 6c  20 64 69 66 66 65 72 65  |rizontal differe|
000095b0  6e 63 65 64 20 22 20 8b  e7 68 70 72 65 64 69 63  |nced " ..hpredic|
000095c0  74 25 3e 32 20 69 6e 66  6f 24 2b 3d 22 20 75 6e  |t%>2 info$+=" un|
000095d0  6b 6e 6f 77 6e 20 70 72  65 64 69 63 74 6f 72 20  |known predictor |
000095e0  28 22 2b c3 68 70 72 65  64 69 63 74 25 2b 22 29  |("+.hpredict%+")|
000095f0  20 22 0d 2f a8 27 73 65  74 63 6f 64 65 73 25 3d  | "./.'setcodes%=|
00009600  38 3a 63 6c 65 61 72 63  6f 64 65 25 3d 31 3c 3c  |8:clearcode%=1<<|
00009610  73 65 74 63 6f 64 65 73  25 0d 2f b2 33 de 20 74  |setcodes%./.3. t|
00009620  61 62 6c 65 25 28 31 3c  3c 31 32 29 3a 73 74 6b  |able%(1<<12):stk|
00009630  25 3d a4 64 69 6d 28 31  3c 3c 31 33 29 3a 62 75  |%=.dim(1<<13):bu|
00009640  66 25 3d a4 64 69 6d 28  32 38 30 29 0d 2f bc 26  |f%=.dim(280)./.&|
00009650  e3 49 25 3d 30 b8 63 6c  65 61 72 63 6f 64 65 25  |.I%=0.clearcode%|
00009660  2d 31 3a 74 61 62 6c 65  25 28 49 25 29 3d 49 25  |-1:table%(I%)=I%|
00009670  3a ed 0d 2f c6 34 c9 20  33 32 37 37 33 3a 69 6e  |:../.4. 32773:in|
00009680  66 6f 24 3d 22 50 61 63  6b 42 69 74 73 20 63 6f  |fo$="PackBits co|
00009690  6d 70 72 65 73 73 65 64  20 22 3a 72 24 3d 22 46  |mpressed ":r$="F|
000096a0  4e 31 35 30 31 22 0d 2f  d0 20 c9 20 36 3a 69 6e  |N1501"./. . 6:in|
000096b0  66 6f 24 3d 22 4a 50 45  47 20 63 6f 6d 70 72 65  |fo$="JPEG compre|
000096c0  73 73 65 64 20 22 0d 2f  da 32 7f 20 69 6e 66 6f  |ssed "./.2. info|
000096d0  24 3d 22 43 6f 6d 70 72  65 73 73 20 22 2b c3 63  |$="Compress "+.c|
000096e0  6f 6d 70 72 65 73 73 69  6f 6e 2b 22 20 2d 20 75  |ompression+" - u|
000096f0  6e 6b 6e 6f 77 6e 20 22  0d 2f e4 05 cb 0d 2f ee  |nknown "./..../.|
00009700  42 69 6e 66 6f 24 2b 3d  22 54 49 46 46 20 66 69  |Binfo$+="TIFF fi|
00009710  6c 65 2c 20 22 2b c3 73  78 25 2b 22 20 62 79 20  |le, "+.sx%+" by |
00009720  22 2b c3 73 79 25 2b 22  20 70 69 78 65 6c 73 2c  |"+.sy%+" pixels,|
00009730  20 22 2b a4 62 69 74 73  28 69 6e 70 75 74 29 0d  | "+.bits(input).|
00009740  2f f8 53 62 69 67 65 6e  64 69 61 6e 62 69 74 73  |/.Sbigendianbits|
00009750  3d 66 69 6c 6c 6f 72 64  65 72 3d 31 3a cf 23 63  |=fillorder=1:.#c|
00009760  25 3d 73 74 25 28 30 29  3a 73 74 72 69 70 70 74  |%=st%(0):strippt|
00009770  72 3d 30 3a e7 73 74 72  69 70 72 6f 77 73 25 3e  |r=0:.striprows%>|
00009780  3d 73 79 25 20 73 74 72  69 70 72 6f 77 73 25 3d  |=sy% striprows%=|
00009790  2d 31 0d 30 02 0e c8 8e  20 69 6e 70 75 74 20 ca  |-1.0.... input .|
000097a0  0d 30 0c 1a c9 20 31 3a  72 6f 77 62 79 74 65 73  |.0... 1:rowbytes|
000097b0  25 3d 73 78 25 2b 37 3e  3e 33 0d 30 16 1a c9 20  |%=sx%+7>>3.0... |
000097c0  32 3a 72 6f 77 62 79 74  65 73 25 3d 73 78 25 2b  |2:rowbytes%=sx%+|
000097d0  33 3e 3e 32 0d 30 20 1a  c9 20 34 3a 72 6f 77 62  |3>>2.0 .. 4:rowb|
000097e0  79 74 65 73 25 3d 73 78  25 2b 31 3e 3e 31 0d 30  |ytes%=sx%+1>>1.0|
000097f0  2a 15 c9 20 38 3a 72 6f  77 62 79 74 65 73 25 3d  |*.. 8:rowbytes%=|
00009800  73 78 25 0d 30 34 18 c9  20 32 34 3a 72 6f 77 62  |sx%.04.. 24:rowb|
00009810  79 74 65 73 25 3d 33 2a  73 78 25 0d 30 3e 2b 7f  |ytes%=3*sx%.0>+.|
00009820  20 85 20 34 32 2c 22 43  61 6e 27 74 20 64 6f 20  | . 42,"Can't do |
00009830  22 2b a4 62 69 74 73 28  69 6e 70 75 74 29 2b 22  |"+.bits(input)+"|
00009840  20 54 49 46 46 22 0d 30  48 05 cb 0d 30 52 2e e7  | TIFF".0H...0R..|
00009850  70 6c 61 6e 61 72 25 3d  32 20 72 6f 77 62 79 74  |planar%=2 rowbyt|
00009860  65 73 25 3d 72 6f 77 62  79 74 65 73 25 2a 73 61  |es%=rowbytes%*sa|
00009870  6d 70 70 65 72 70 69 78  25 0d 30 5c 49 e7 70 6c  |mpperpix%.0\I.pl|
00009880  61 6e 61 72 25 3c 3e 31  20 80 20 72 67 62 3c 3e  |anar%<>1 . rgb<>|
00009890  30 20 85 34 32 2c 22 43  61 6e 27 74 20 64 6f 20  |0 .42,"Can't do |
000098a0  74 68 69 73 20 73 74 79  6c 65 20 6f 66 20 54 49  |this style of TI|
000098b0  46 46 20 79 65 74 22 20  8b 70 6c 61 6e 61 72 25  |FF yet" .planar%|
000098c0  3d a3 0d 30 66 15 e7 20  63 6f 6d 70 72 65 73 73  |=..0f.. compress|
000098d0  69 6f 6e 3c 32 20 8c 0d  30 70 53 63 61 63 68 65  |ion<2 ..0pScache|
000098e0  25 3d b9 3a 73 74 72 69  70 70 74 72 3d 2d 31 3a  |%=.:stripptr=-1:|
000098f0  72 24 3d 22 46 4e 38 22  3a e7 69 6e 70 75 74 3d  |r$="FN8":.input=|
00009900  32 34 20 72 62 6f 25 3d  30 3a 67 62 6f 25 3d 31  |24 rbo%=0:gbo%=1|
00009910  3a 62 62 6f 25 3d 32 3a  73 74 65 70 32 34 3d 33  |:bbo%=2:step24=3|
00009920  3a 72 24 3d 22 46 4e 32  34 22 0d 30 7a 05 cc 0d  |:r$="FN24".0z...|
00009930  30 84 27 e7 63 6f 6d 70  72 65 73 73 69 6f 6e 3d  |0.'.compression=|
00009940  35 20 84 63 6f 6d 70 72  65 73 73 69 6f 6e 3d 33  |5 .compression=3|
00009950  32 37 37 33 20 8c 0d 30  8e 2d 63 61 63 68 65 25  |2773 ..0.-cache%|
00009960  3d b9 3a 63 61 63 68 65  62 79 74 65 73 25 3d 72  |=.:cachebytes%=r|
00009970  6f 77 62 79 74 65 73 25  2a 73 74 72 69 70 72 6f  |owbytes%*stripro|
00009980  77 73 25 0d 30 98 30 70  6c 62 75 66 66 25 3d a4  |ws%.0.0plbuff%=.|
00009990  64 69 6d 28 72 6f 77 62  79 74 65 73 25 29 3a 72  |dim(rowbytes%):r|
000099a0  6f 77 73 74 6f 67 6f 25  3d 73 74 72 69 70 72 6f  |owstogo%=stripro|
000099b0  77 73 25 0d 30 a2 5c e7  69 6e 70 75 74 3d 32 34  |ws%.0.\.input=24|
000099c0  20 72 62 25 3d 70 6c 62  75 66 66 25 3a 67 62 25  | rb%=plbuff%:gb%|
000099d0  3d 70 6c 62 75 66 66 25  2b 31 3a 62 62 25 3d 70  |=plbuff%+1:bb%=p|
000099e0  6c 62 75 66 66 25 2b 32  3a 72 24 3d 22 46 4e 22  |lbuff%+2:r$="FN"|
000099f0  2b c3 28 bb c1 72 24 2c  33 29 2b 31 30 29 3a 73  |+.(..r$,3)+10):s|
00009a00  74 65 70 32 34 3d 33 3a  72 62 6f 25 3d 2d 31 0d  |tep24=3:rbo%=-1.|
00009a10  30 ac 05 cc 0d 30 b6 2e  62 75 66 66 25 3d a4 64  |0....0..buff%=.d|
00009a20  69 6d 28 72 6f 77 62 79  74 65 73 25 29 3a 72 6f  |im(rowbytes%):ro|
00009a30  77 73 74 6f 67 6f 25 3d  73 74 72 69 70 72 6f 77  |wstogo%=striprow|
00009a40  73 25 0d 30 c0 4e e7 69  6e 70 75 74 3d 32 34 20  |s%.0.N.input=24 |
00009a50  72 62 25 3d 62 75 66 66  25 3a 67 62 25 3d 62 75  |rb%=buff%:gb%=bu|
00009a60  66 66 25 2b 31 3a 62 62  25 3d 62 75 66 66 25 2b  |ff%+1:bb%=buff%+|
00009a70  32 3a 72 24 3d 22 46 4e  22 2b c3 28 bb c1 72 24  |2:r$="FN"+.(..r$|
00009a80  2c 33 29 2b 31 30 29 3a  73 74 65 70 32 34 3d 33  |,3)+10):step24=3|
00009a90  0d 30 ca 05 cd 0d 30 d4  05 cd 0d 30 de 0d e7 73  |.0....0....0...s|
00009aa0  63 61 6c 65 25 20 8c 0d  30 e8 1a 53 25 3d 72 65  |cale% ..0..S%=re|
00009ab0  73 75 6e 69 74 3a e7 53  25 3d 32 20 53 25 3d 39  |sunit:.S%=2 S%=9|
00009ac0  30 0d 30 f2 0f e7 53 25  3d 33 20 53 25 3d 33 35  |0.0...S%=3 S%=35|
00009ad0  0d 30 fc 2c 78 64 69 76  25 3d 78 64 69 76 25 2a  |.0.,xdiv%=xdiv%*|
00009ae0  78 6e 75 6d 25 3a 78 6d  75 6c 25 3d 78 6d 75 6c  |xnum%:xmul%=xmul|
00009af0  25 2a 78 64 65 6e 6f 6d  25 2a 53 25 0d 31 06 2c  |%*xdenom%*S%.1.,|
00009b00  79 64 69 76 25 3d 79 64  69 76 25 2a 79 6e 75 6d  |ydiv%=ydiv%*ynum|
00009b10  25 3a 79 6d 75 6c 25 3d  79 6d 75 6c 25 2a 79 64  |%:ymul%=ymul%*yd|
00009b20  65 6e 6f 6d 25 2a 53 25  0d 31 10 05 cd 0d 31 1a  |enom%*S%.1....1.|
00009b30  19 e7 72 24 3d 22 46 4e  31 35 30 30 22 20 72 24  |..r$="FN1500" r$|
00009b40  3d 22 46 4e 38 22 0d 31  24 0a c9 20 31 36 30 30  |="FN8".1$.. 1600|
00009b50  0d 31 2e 1e cf 23 63 25  3d 31 32 3a 63 61 6d 67  |.1...#c%=12:camg|
00009b60  3d 30 3a 70 6c 61 6e 61  72 25 3d b9 3a f5 0d 31  |=0:planar%=.:..1|
00009b70  38 26 53 24 3d bd 9a 23  63 25 2b bd 9a 23 63 25  |8&S$=..#c%+..#c%|
00009b80  2b bd 9a 23 63 25 2b bd  9a 23 63 25 3a 53 25 3d  |+..#c%+..#c%:S%=|
00009b90  a4 62 65 57 0d 31 42 0b  c8 8e 20 53 24 20 ca 0d  |.beW.1B... S$ ..|
00009ba0  31 4c 43 c9 20 22 42 4d  48 44 22 3a 73 78 25 3d  |1LC. "BMHD":sx%=|
00009bb0  a4 62 65 48 57 3a 73 79  25 3d a4 62 65 48 57 3a  |.beHW:sy%=.beHW:|
00009bc0  53 25 3d a4 57 3a 70 6c  61 6e 65 73 25 3d 9a 23  |S%=.W:planes%=.#|
00009bd0  63 25 3a 6d 61 73 6b 69  6e 67 25 3d 9a 23 63 25  |c%:masking%=.#c%|
00009be0  3d 31 0d 31 56 36 63 6f  6d 70 72 65 73 73 69 6f  |=1.1V6compressio|
00009bf0  6e 3d 9a 23 63 25 3a 53  25 3d 9a 23 63 25 2b a4  |n=.#c%:S%=.#c%+.|
00009c00  48 57 3a 55 25 3d 9a 23  63 25 3a 56 25 3d 9a 23  |HW:U%=.#c%:V%=.#|
00009c10  63 25 3a 53 25 3d a4 57  0d 31 60 29 e7 73 63 61  |c%:S%=.W.1`).sca|
00009c20  6c 65 25 20 79 6d 75 6c  25 3d 79 6d 75 6c 25 2a  |le% ymul%=ymul%*|
00009c30  56 25 3a 79 64 69 76 25  3d 79 64 69 76 25 2a 55  |V%:ydiv%=ydiv%*U|
00009c40  25 0d 31 6a 4b e3 49 25  3d 30 b8 28 31 3c 3c 70  |%.1jK.I%=0.(1<<p|
00009c50  6c 61 6e 65 73 25 29 2d  31 3a 72 25 28 49 25 29  |lanes%)-1:r%(I%)|
00009c60  3d 49 25 2f 28 28 31 3c  3c 70 6c 61 6e 65 73 25  |=I%/((1<<planes%|
00009c70  29 2d 31 29 2a 46 3a ed  3a 67 25 28 29 3d 72 25  |)-1)*F:.:g%()=r%|
00009c80  28 29 3a 62 25 28 29 3d  72 25 28 29 0d 31 74 42  |():b%()=r%().1tB|
00009c90  c9 20 22 43 4d 41 50 22  3a 53 25 3d 8f 23 63 25  |. "CMAP":S%=.#c%|
00009ca0  2b 53 25 3a e3 49 25 3d  30 b8 28 31 3c 3c 70 6c  |+S%:.I%=0.(1<<pl|
00009cb0  61 6e 65 73 25 29 2d 31  3a 72 25 28 49 25 29 3d  |anes%)-1:r%(I%)=|
00009cc0  28 9a 23 63 25 3e 3e 34  29 2f 31 35 2a 46 0d 31  |(.#c%>>4)/15*F.1|
00009cd0  7e 31 67 25 28 49 25 29  3d 28 9a 23 63 25 3e 3e  |~1g%(I%)=(.#c%>>|
00009ce0  34 29 2f 31 35 2a 46 3a  62 25 28 49 25 29 3d 28  |4)/15*F:b%(I%)=(|
00009cf0  9a 23 63 25 3e 3e 34 29  2f 31 35 2a 46 3a ed 0d  |.#c%>>4)/15*F:..|
00009d00  31 88 47 cf 23 63 25 3d  53 25 3a e7 69 6e 66 6f  |1.G.#c%=S%:.info|
00009d10  25 20 f1 22 57 61 72 6e  69 6e 67 3a 20 74 72 75  |% ."Warning: tru|
00009d20  6e 63 61 74 65 64 20 49  46 46 20 43 4d 41 50 20  |ncated IFF CMAP |
00009d30  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 74 6f 20 34  |information to 4|
00009d40  20 62 69 74 73 22 0d 31  92 3b c9 20 22 43 41 4d  | bits".1.;. "CAM|
00009d50  47 22 3a 63 61 6d 67 3d  a4 62 65 57 3a e7 69 6e  |G":camg=.beW:.in|
00009d60  66 6f 25 20 f1 22 41 6d  69 67 61 20 76 69 65 77  |fo% ."Amiga view|
00009d70  70 6f 72 74 20 6d 6f 64  65 20 22 3b 7e 63 61 6d  |port mode ";~cam|
00009d80  67 0d 31 9c 15 c9 20 22  42 4f 44 59 22 3a 73 74  |g.1... "BODY":st|
00009d90  25 3d 8f 23 63 25 0d 31  a6 34 7f 20 e7 20 69 6e  |%=.#c%.1.4. . in|
00009da0  66 6f 25 20 f1 22 49 67  6e 6f 72 69 6e 67 20 49  |fo% ."Ignoring I|
00009db0  46 46 20 70 72 6f 70 65  72 74 79 20 22 53 24 22  |FF property "S$"|
00009dc0  20 73 69 7a 65 20 22 3b  53 25 0d 31 b0 10 cf 23  | size ";S%.1...#|
00009dd0  63 25 3d 8f 23 63 25 2b  53 25 0d 31 ba 05 cb 0d  |c%=.#c%+S%.1....|
00009de0  31 c4 39 fd 53 24 3d 22  42 4f 44 59 22 3a e7 63  |1.9.S$="BODY":.c|
00009df0  6f 6d 70 72 65 73 73 69  6f 6e 20 69 6e 66 6f 24  |ompression info$|
00009e00  3d 22 43 6f 6d 70 72 65  73 73 65 64 20 22 20 8b  |="Compressed " .|
00009e10  69 6e 66 6f 24 3d 22 22  0d 31 d8 2b 68 61 6d 3d  |info$="".1.+ham=|
00009e20  28 63 61 6d 67 20 80 20  26 38 30 30 29 3c 3e 30  |(camg . &800)<>0|
00009e30  3a e7 68 61 6d 20 69 6e  66 6f 24 2b 3d 22 48 41  |:.ham info$+="HA|
00009e40  4d 20 22 0d 31 e2 34 68  61 6c 66 3d 28 63 61 6d  |M ".1.4half=(cam|
00009e50  67 20 80 20 26 38 30 29  3c 3e 30 3a e7 68 61 6c  |g . &80)<>0:.hal|
00009e60  66 20 69 6e 66 6f 24 2b  3d 22 68 61 6c 66 2d 62  |f info$+="half-b|
00009e70  72 69 67 68 74 20 22 0d  31 ec 6e e7 68 61 6c 66  |right ".1.n.half|
00009e80  20 68 61 6c 66 25 3d 31  3c 3c 70 6c 61 6e 65 73  | half%=1<<planes|
00009e90  25 2d 31 3a e3 49 25 3d  30 b8 68 61 6c 66 25 2d  |%-1:.I%=0.half%-|
00009ea0  31 3a 72 25 28 49 25 2b  68 61 6c 66 25 29 3d 72  |1:r%(I%+half%)=r|
00009eb0  25 28 49 25 29 2f 32 3a  67 25 28 49 25 2b 68 61  |%(I%)/2:g%(I%+ha|
00009ec0  6c 66 25 29 3d 67 25 28  49 25 29 2f 32 3a 62 25  |lf%)=g%(I%)/2:b%|
00009ed0  28 49 25 2b 68 61 6c 66  25 29 3d 62 25 28 49 25  |(I%+half%)=b%(I%|
00009ee0  29 2f 32 3a ed 0d 31 f6  43 69 6e 66 6f 24 2b 3d  |)/2:..1.Cinfo$+=|
00009ef0  22 49 46 46 20 66 69 6c  65 2c 20 22 2b c3 73 78  |"IFF file, "+.sx|
00009f00  25 2b 22 20 62 79 20 22  2b c3 73 79 25 2b 22 20  |%+" by "+.sy%+" |
00009f10  70 69 78 65 6c 73 2c 20  22 2b a4 62 69 74 73 28  |pixels, "+.bits(|
00009f20  70 6c 61 6e 65 73 25 29  0d 32 00 2b e7 6d 61 73  |planes%).2.+.mas|
00009f30  6b 69 6e 67 25 20 69 6e  66 6f 24 2b 3d 22 20 77  |king% info$+=" w|
00009f40  69 74 68 20 6d 61 73 6b  20 28 69 67 6e 6f 72 65  |ith mask (ignore|
00009f50  64 29 22 0d 32 0a 37 72  6f 77 62 79 74 65 73 25  |d)".2.7rowbytes%|
00009f60  3d 28 73 78 25 2b 31 35  3e 3e 34 29 3c 3c 31 3a  |=(sx%+15>>4)<<1:|
00009f70  70 6c 62 79 74 65 73 25  3d 72 6f 77 62 79 74 65  |plbytes%=rowbyte|
00009f80  73 25 2a 70 6c 61 6e 65  73 25 0d 32 14 39 70 62  |s%*planes%.2.9pb|
00009f90  75 66 66 25 3d a4 64 69  6d 28 73 78 25 29 3a 72  |uff%=.dim(sx%):r|
00009fa0  24 3d 22 46 4e 22 2b c3  28 31 36 30 30 2b 63 6f  |$="FN"+.(1600+co|
00009fb0  6d 70 72 65 73 73 69 6f  6e 29 3a 63 61 63 68 65  |mpression):cache|
00009fc0  25 3d b9 0d 32 1e 12 e7  63 6f 6d 70 72 65 73 73  |%=..2...compress|
00009fd0  69 6f 6e 20 8c 0d 32 28  28 63 61 63 68 65 62 79  |ion ..2((cacheby|
00009fe0  74 65 73 25 3d b9 3a 70  6c 62 75 66 66 25 3d a4  |tes%=.:plbuff%=.|
00009ff0  64 69 6d 28 70 6c 62 79  74 65 73 25 29 0d 32 32  |dim(plbytes%).22|
0000a000  05 cc 0d 32 3c 51 72 65  61 6c 72 6f 77 62 79 74  |...2<Qrealrowbyt|
0000a010  65 73 25 3d 72 6f 77 62  79 74 65 73 25 3a 72 6f  |es%=rowbytes%:ro|
0000a020  77 62 79 74 65 73 25 3d  70 6c 62 79 74 65 73 25  |wbytes%=plbytes%|
0000a030  3a e7 6d 61 73 6b 69 6e  67 25 20 72 6f 77 62 79  |:.masking% rowby|
0000a040  74 65 73 25 2b 3d 72 65  61 6c 72 6f 77 62 79 74  |tes%+=realrowbyt|
0000a050  65 73 25 0d 32 46 05 cd  0d 32 50 0c cf 23 63 25  |es%.2F...2P..#c%|
0000a060  3d 73 74 25 0d 32 5a 0a  c9 20 31 37 30 30 0d 32  |=st%.2Z.. 1700.2|
0000a070  64 42 73 78 25 3d 36 34  30 3a 72 6f 77 62 79 74  |dBsx%=640:rowbyt|
0000a080  65 73 25 3d 38 30 3a 73  79 25 3d 33 35 30 3a 70  |es%=80:sy%=350:p|
0000a090  6c 61 6e 65 73 25 3d 34  3a 70 6c 62 79 74 65 73  |lanes%=4:plbytes|
0000a0a0  25 3d 34 2a 38 30 3a 70  6c 61 6e 61 72 25 3d b9  |%=4*80:planar%=.|
0000a0b0  0d 32 6e 33 62 75 66 66  25 3d a4 64 69 6d 28 38  |.2n3buff%=.dim(8|
0000a0c0  30 2a 34 29 3a 70 62 75  66 66 25 3d a4 64 69 6d  |0*4):pbuff%=.dim|
0000a0d0  28 36 34 30 29 3a 47 3d  46 2f 33 3a 48 3d 46 2a  |(640):G=F/3:H=F*|
0000a0e0  32 2f 33 0d 32 78 28 72  25 28 29 3d 30 2c 30 2c  |2/3.2x(r%()=0,0,|
0000a0f0  30 2c 30 2c 46 2c 46 2c  46 2c 48 2c 47 2c 47 2c  |0,0,F,F,F,H,G,G,|
0000a100  47 2c 47 2c 46 2c 46 2c  46 2c 46 0d 32 82 28 67  |G,G,F,F,F,F.2.(g|
0000a110  25 28 29 3d 30 2c 30 2c  46 2c 46 2c 30 2c 30 2c  |%()=0,0,F,F,0,0,|
0000a120  46 2c 48 2c 47 2c 47 2c  46 2c 46 2c 47 2c 47 2c  |F,H,G,G,F,F,G,G,|
0000a130  46 2c 46 0d 32 8c 28 62  25 28 29 3d 30 2c 46 2c  |F,F.2.(b%()=0,F,|
0000a140  30 2c 46 2c 30 2c 46 2c  30 2c 48 2c 47 2c 46 2c  |0,F,0,F,0,H,G,F,|
0000a150  47 2c 46 2c 47 2c 46 2c  47 2c 46 0d 32 96 56 6d  |G,F,G,F,G,F.2.Vm|
0000a160  61 73 6b 69 6e 67 25 3d  a3 3a 72 24 3d 22 46 4e  |asking%=.:r$="FN|
0000a170  31 36 30 30 22 3a 73 74  25 3d 31 36 3a cf 23 63  |1600":st%=16:.#c|
0000a180  25 3d 31 36 3a 63 61 63  68 65 25 3d b9 3a 72 65  |%=16:cache%=.:re|
0000a190  61 6c 72 6f 77 62 79 74  65 73 25 3d 38 30 3a 72  |alrowbytes%=80:r|
0000a1a0  6f 77 62 79 74 65 73 25  3d 70 6c 62 79 74 65 73  |owbytes%=plbytes|
0000a1b0  25 0d 32 a0 53 69 6e 66  6f 24 3d 22 50 43 20 45  |%.2.Sinfo$="PC E|
0000a1c0  47 41 20 27 2e 64 73 70  27 20 66 69 6c 65 2c 20  |GA '.dsp' file, |
0000a1d0  36 34 30 20 62 79 20 33  35 30 20 70 69 78 65 6c  |640 by 350 pixel|
0000a1e0  73 2c 20 34 20 62 69 74  73 20 70 65 72 20 70 69  |s, 4 bits per pi|
0000a1f0  78 65 6c 20 28 66 69 78  65 64 20 70 61 6c 65 74  |xel (fixed palet|
0000a200  74 65 29 22 0d 32 aa 0a  c9 20 31 38 30 30 0d 32  |te)".2... 1800.2|
0000a210  b4 3f 73 78 25 3d 37 32  2a 38 3a 73 79 25 3d 37  |.?sx%=72*8:sy%=7|
0000a220  32 30 3a 71 75 61 6e 74  25 3d 31 3a 69 6e 70 75  |20:quant%=1:inpu|
0000a230  74 3d 31 3a cf 23 63 25  3d 73 74 25 3a 70 6c 62  |t=1:.#c%=st%:plb|
0000a240  75 66 66 25 3d a4 64 69  6d 28 37 32 29 0d 32 be  |uff%=.dim(72).2.|
0000a250  1a 63 61 63 68 65 25 3d  b9 3a 63 61 63 68 65 62  |.cache%=.:cacheb|
0000a260  79 74 65 73 25 3d b9 0d  32 c8 51 72 25 28 30 29  |ytes%=..2.Qr%(0)|
0000a270  3d 46 3a 67 25 28 30 29  3d 46 3a 62 25 28 30 29  |=F:g%(0)=F:b%(0)|
0000a280  3d 46 3a 62 69 67 65 6e  64 69 61 6e 62 69 74 73  |=F:bigendianbits|
0000a290  3d b9 3a 72 6f 77 62 79  74 65 73 25 3d 37 32 3a  |=.:rowbytes%=72:|
0000a2a0  72 24 3d 22 46 4e 31 35  30 31 22 3a 72 6f 77 73  |r$="FN1501":rows|
0000a2b0  74 6f 67 6f 25 3d 2d 31  0d 32 d2 47 e7 73 63 61  |togo%=-1.2.G.sca|
0000a2c0  6c 65 25 20 78 6d 75 6c  25 3d 78 6d 75 6c 25 2a  |le% xmul%=xmul%*|
0000a2d0  39 30 3a 78 64 69 76 25  3d 78 64 69 76 25 2a 37  |90:xdiv%=xdiv%*7|
0000a2e0  32 3a 79 6d 75 6c 25 3d  79 6d 75 6c 25 2a 39 30  |2:ymul%=ymul%*90|
0000a2f0  3a 79 64 69 76 25 3d 79  64 69 76 25 2a 37 32 0d  |:ydiv%=ydiv%*72.|
0000a300  32 dc 3e 69 6e 66 6f 24  3d 22 4d 61 63 50 61 69  |2.>info$="MacPai|
0000a310  6e 74 20 66 69 6c 65 2c  20 35 37 36 20 62 79 20  |nt file, 576 by |
0000a320  37 32 30 20 62 69 74 73  2c 20 63 72 65 61 74 6f  |720 bits, creato|
0000a330  72 20 69 64 20 22 2b c2  53 24 2c 34 29 0d 32 e6  |r id "+.S$,4).2.|
0000a340  0a c9 20 31 38 35 30 0d  32 f0 0c cf 23 63 25 3d  |.. 1850.2...#c%=|
0000a350  35 35 32 0d 32 fa 0b 64  6f 6e 65 25 3d a3 0d 33  |552.2..done%=..3|
0000a360  04 05 f5 0d 33 0e 1a 63  6f 64 65 25 3d a4 62 65  |....3..code%=.be|
0000a370  48 57 3a c8 8e 20 63 6f  64 65 25 20 ca 0d 33 18  |HW:.. code% ..3.|
0000a380  19 c9 20 26 30 31 3a cf  23 63 25 3d 8f 23 63 25  |.. &01:.#c%=.#c%|
0000a390  2b a4 62 65 48 57 0d 33  22 09 c9 20 26 31 45 0d  |+.beHW.3".. &1E.|
0000a3a0  33 2c 09 c9 20 26 39 38  0d 33 36 43 72 6f 77 62  |3,.. &98.36Crowb|
0000a3b0  79 74 65 73 25 3d a4 62  65 48 57 3a e7 28 72 6f  |ytes%=.beHW:.(ro|
0000a3c0  77 62 79 74 65 73 25 20  80 26 38 30 30 30 29 3d  |wbytes% .&8000)=|
0000a3d0  30 20 85 34 32 2c 22 50  49 43 54 20 77 69 74 68  |0 .42,"PICT with|
0000a3e0  6f 75 74 20 50 69 78 6d  61 70 22 0d 33 40 33 73  |out Pixmap".3@3s|
0000a3f0  79 25 3d a4 62 65 48 57  3a 73 78 25 3d a4 62 65  |y%=.beHW:sx%=.be|
0000a400  48 57 3a 73 79 25 3d a4  62 65 48 57 2d 73 79 25  |HW:sy%=.beHW-sy%|
0000a410  3a 73 78 25 3d a4 62 65  48 57 2d 73 78 25 0d 33  |:sx%=.beHW-sx%.3|
0000a420  4a 3c 6a 75 6e 6b 25 3d  a4 48 57 3a 70 61 63 6b  |J<junk%=.HW:pack|
0000a430  74 79 70 65 25 3d a4 62  65 48 57 3a 6a 75 6e 6b  |type%=.beHW:junk|
0000a440  25 3d a4 57 3a 72 65 73  78 25 3d a4 62 65 57 3a  |%=.W:resx%=.beW:|
0000a450  72 65 73 79 25 3d a4 62  65 57 0d 33 54 46 e7 a4  |resy%=.beW.3TF..|
0000a460  62 65 48 57 3c 3e 30 20  d9 23 63 25 3a 85 34 32  |beHW<>0 .#c%:.42|
0000a470  2c 22 43 68 61 6e 67 65  46 53 49 20 65 78 70 65  |,"ChangeFSI expe|
0000a480  63 74 65 64 20 4d 61 63  20 50 49 43 54 32 20 70  |cted Mac PICT2 p|
0000a490  69 78 65 6c 74 79 70 65  3d 43 68 75 6e 6b 79 22  |ixeltype=Chunky"|
0000a4a0  0d 33 5e 26 62 70 70 25  3d a4 62 65 48 57 3a 6a  |.3^&bpp%=.beHW:j|
0000a4b0  75 6e 6b 25 3d a4 62 65  48 57 3a 6a 75 6e 6b 25  |unk%=.beHW:junk%|
0000a4c0  3d a4 62 65 48 57 0d 33  68 24 6a 75 6e 6b 25 3d  |=.beHW.3h$junk%=|
0000a4d0  a4 62 65 57 3a 6a 75 6e  6b 25 3d a4 62 65 57 3a  |.beW:junk%=.beW:|
0000a4e0  6a 75 6e 6b 25 3d a4 62  65 57 0d 33 72 1a 6a 75  |junk%=.beW.3r.ju|
0000a4f0  6e 6b 25 3d a4 62 65 57  3a 6a 75 6e 6b 25 3d a4  |nk%=.beW:junk%=.|
0000a500  62 65 48 57 0d 33 7c 5f  43 25 3d a4 62 65 48 57  |beHW.3|_C%=.beHW|
0000a510  3a e3 49 25 3d 30 b8 43  25 3a 4a 25 3d a4 62 65  |:.I%=0.C%:J%=.be|
0000a520  48 57 3a 72 25 28 4a 25  29 3d a4 62 65 48 57 2f  |HW:r%(J%)=.beHW/|
0000a530  36 35 35 33 35 2a 46 3a  67 25 28 4a 25 29 3d a4  |65535*F:g%(J%)=.|
0000a540  62 65 48 57 2f 36 35 35  33 35 2a 46 3a 62 25 28  |beHW/65535*F:b%(|
0000a550  4a 25 29 3d a4 62 65 48  57 2f 36 35 35 33 35 2a  |J%)=.beHW/65535*|
0000a560  46 3a ed 0d 33 86 0b 64  6f 6e 65 25 3d b9 0d 33  |F:..3..done%=..3|
0000a570  90 52 c9 20 26 39 41 3a  6a 75 6e 6b 25 3d a4 57  |.R. &9A:junk%=.W|
0000a580  3a 72 6f 77 62 79 74 65  73 25 3d a4 62 65 48 57  |:rowbytes%=.beHW|
0000a590  3a e7 28 72 6f 77 62 79  74 65 73 25 20 80 26 38  |:.(rowbytes% .&8|
0000a5a0  30 30 30 29 3d 30 20 85  34 32 2c 22 50 49 43 54  |000)=0 .42,"PICT|
0000a5b0  20 77 69 74 68 6f 75 74  20 50 69 78 6d 61 70 22  | without Pixmap"|
0000a5c0  0d 33 9a 33 73 79 25 3d  a4 62 65 48 57 3a 73 78  |.3.3sy%=.beHW:sx|
0000a5d0  25 3d a4 62 65 48 57 3a  73 79 25 3d a4 62 65 48  |%=.beHW:sy%=.beH|
0000a5e0  57 2d 73 79 25 3a 73 78  25 3d a4 62 65 48 57 2d  |W-sy%:sx%=.beHW-|
0000a5f0  73 78 25 0d 33 a4 3c 6a  75 6e 6b 25 3d a4 48 57  |sx%.3.<junk%=.HW|
0000a600  3a 70 61 63 6b 74 79 70  65 25 3d a4 62 65 48 57  |:packtype%=.beHW|
0000a610  3a 6a 75 6e 6b 25 3d a4  57 3a 72 65 73 78 25 3d  |:junk%=.W:resx%=|
0000a620  a4 62 65 57 3a 72 65 73  79 25 3d a4 62 65 57 0d  |.beW:resy%=.beW.|
0000a630  33 ae 4a e7 a4 62 65 48  57 3c 3e 31 36 20 d9 23  |3.J..beHW<>16 .#|
0000a640  63 25 3a 85 34 32 2c 22  43 68 61 6e 67 65 46 53  |c%:.42,"ChangeFS|
0000a650  49 20 65 78 70 65 63 74  65 64 20 4d 61 63 20 50  |I expected Mac P|
0000a660  49 43 54 32 20 70 69 78  65 6c 74 79 70 65 3d 52  |ICT2 pixeltype=R|
0000a670  47 42 44 69 72 65 63 74  22 0d 33 b8 27 62 70 70  |GBDirect".3.'bpp|
0000a680  25 3d a4 62 65 48 57 3a  63 6f 6d 70 73 25 3d a4  |%=.beHW:comps%=.|
0000a690  62 65 48 57 3a 6a 75 6e  6b 25 3d a4 62 65 48 57  |beHW:junk%=.beHW|
0000a6a0  0d 33 c2 19 6a 75 6e 6b  25 3d a4 62 65 57 3a 6a  |.3..junk%=.beW:j|
0000a6b0  75 6e 6b 25 3d a4 62 65  57 0d 33 cc 1b 6a 75 6e  |unk%=.beW.3..jun|
0000a6c0  6b 25 3d a4 62 65 48 57  3a 6a 75 6e 6b 25 3d a4  |k%=.beHW:junk%=.|
0000a6d0  62 65 48 57 0d 33 d6 56  e7 62 70 70 25 3e 31 36  |beHW.3.V.bpp%>16|
0000a6e0  20 f2 6e 6f 70 61 6c 20  8b 4a 25 3d 32 5e 28 62  | .nopal .J%=2^(b|
0000a6f0  70 70 25 81 33 29 3a e3  49 25 3d 30 b8 4a 25 2d  |pp%.3):.I%=0.J%-|
0000a700  31 3a 72 25 28 49 25 29  3d 49 25 2f 28 4a 25 2d  |1:r%(I%)=I%/(J%-|
0000a710  31 29 2a 46 3a ed 3a 67  25 28 29 3d 72 25 28 29  |1)*F:.:g%()=r%()|
0000a720  3a 62 25 28 29 3d 72 25  28 29 0d 33 e0 2f e7 62  |:b%()=r%().3./.b|
0000a730  70 70 25 3d 33 32 20 80  20 63 6f 6d 70 73 25 3d  |pp%=32 . comps%=|
0000a740  33 20 62 70 70 25 3d 32  34 3a 72 6f 77 62 79 74  |3 bpp%=24:rowbyt|
0000a750  65 73 25 3d 33 2a 73 78  25 0d 33 ea 0b 64 6f 6e  |es%=3*sx%.3..don|
0000a760  65 25 3d b9 0d 33 f4 43  7f 3a d9 23 63 25 3a 85  |e%=..3.C.:.#c%:.|
0000a770  34 32 2c 22 43 68 61 6e  67 65 46 53 49 20 63 61  |42,"ChangeFSI ca|
0000a780  6e 27 74 20 75 6e 64 65  72 73 74 61 6e 64 20 4d  |n't understand M|
0000a790  61 63 20 50 49 43 54 32  20 63 6f 64 65 20 22 2b  |ac PICT2 code "+|
0000a7a0  c3 7e 63 6f 64 65 25 0d  33 fe 05 cb 0d 34 08 0b  |.~code%.3....4..|
0000a7b0  fd 20 64 6f 6e 65 25 0d  34 12 33 6a 75 6e 6b 25  |. done%.4.3junk%|
0000a7c0  3d a4 62 65 48 57 3a 6a  75 6e 6b 25 3d a4 62 65  |=.beHW:junk%=.be|
0000a7d0  48 57 3a 6a 75 6e 6b 25  3d a4 62 65 48 57 3a 6a  |HW:junk%=.beHW:j|
0000a7e0  75 6e 6b 25 3d a4 62 65  48 57 0d 34 1c 33 6a 75  |unk%=.beHW.4.3ju|
0000a7f0  6e 6b 25 3d a4 62 65 48  57 3a 6a 75 6e 6b 25 3d  |nk%=.beHW:junk%=|
0000a800  a4 62 65 48 57 3a 6a 75  6e 6b 25 3d a4 62 65 48  |.beHW:junk%=.beH|
0000a810  57 3a 6a 75 6e 6b 25 3d  a4 62 65 48 57 0d 34 26  |W:junk%=.beHW.4&|
0000a820  0f 6a 75 6e 6b 25 3d a4  62 65 48 57 0d 34 30 4e  |.junk%=.beHW.40N|
0000a830  63 61 63 68 65 25 3d b9  3a 63 61 63 68 65 62 79  |cache%=.:cacheby|
0000a840  74 65 73 25 3d b9 3a 62  69 67 65 6e 64 69 61 6e  |tes%=.:bigendian|
0000a850  62 69 74 73 3d b9 3a 73  74 25 3d 8f 23 63 25 3a  |bits=.:st%=.#c%:|
0000a860  72 6f 77 62 79 74 65 73  25 3d 72 6f 77 62 79 74  |rowbytes%=rowbyt|
0000a870  65 73 25 80 ac 26 38 30  30 30 0d 34 3a 59 e7 73  |es%..&8000.4:Y.s|
0000a880  63 61 6c 65 25 20 78 6d  75 6c 25 3d 78 6d 75 6c  |cale% xmul%=xmul|
0000a890  25 2a 39 30 2a 36 35 35  33 36 3a 78 64 69 76 25  |%*90*65536:xdiv%|
0000a8a0  3d 78 64 69 76 25 2a 72  65 73 78 25 3a 79 6d 75  |=xdiv%*resx%:ymu|
0000a8b0  6c 25 3d 79 6d 75 6c 25  2a 39 30 2a 36 35 35 33  |l%=ymul%*90*6553|
0000a8c0  36 3a 79 64 69 76 25 3d  79 64 69 76 25 2a 72 65  |6:ydiv%=ydiv%*re|
0000a8d0  73 79 25 0d 34 44 40 69  6e 66 6f 24 3d 22 4d 61  |sy%.4D@info$="Ma|
0000a8e0  63 20 50 49 43 54 32 2c  20 22 2b c3 73 78 25 2b  |c PICT2, "+.sx%+|
0000a8f0  22 20 62 79 20 22 2b c3  73 79 25 2b 22 20 70 69  |" by "+.sy%+" pi|
0000a900  78 65 6c 73 2c 20 22 2b  a4 62 69 74 73 28 62 70  |xels, "+.bits(bp|
0000a910  70 25 29 0d 34 4e 25 70  6c 62 75 66 66 25 3d a4  |p%).4N%plbuff%=.|
0000a920  64 69 6d 28 72 6f 77 62  79 74 65 73 25 29 3a e7  |dim(rowbytes%):.|
0000a930  62 70 70 25 3e 38 20 8c  0d 34 58 54 72 62 6f 25  |bpp%>8 ..4XTrbo%|
0000a940  3d 2d 31 3a 72 62 25 3d  70 6c 62 75 66 66 25 2b  |=-1:rb%=plbuff%+|
0000a950  73 78 25 3a 67 62 25 3d  70 6c 62 75 66 66 25 2b  |sx%:gb%=plbuff%+|
0000a960  73 78 25 2a 32 3a 62 62  25 3d 70 6c 62 75 66 66  |sx%*2:bb%=plbuff|
0000a970  25 2b 73 78 25 2a 33 3a  72 24 3d 22 46 4e 31 38  |%+sx%*3:r$="FN18|
0000a980  35 31 22 3a 69 6e 70 75  74 3d 32 34 0d 34 62 3b  |51":input=24.4b;|
0000a990  e7 63 6f 6d 70 73 25 3d  33 20 72 62 25 3d 70 6c  |.comps%=3 rb%=pl|
0000a9a0  62 75 66 66 25 3a 67 62  25 3d 70 6c 62 75 66 66  |buff%:gb%=plbuff|
0000a9b0  25 2b 73 78 25 3a 62 62  25 3d 70 6c 62 75 66 66  |%+sx%:bb%=plbuff|
0000a9c0  25 2b 73 78 25 2a 32 0d  34 6c 05 cd 0d 34 76 0a  |%+sx%*2.4l...4v.|
0000a9d0  c9 20 31 39 30 30 0d 34  80 12 cf 23 63 25 3d 31  |. 1900.4...#c%=1|
0000a9e0  3a 43 25 3d 9a 23 63 25  0d 34 8a 3f 45 25 3d 9a  |:C%=.#c%.4.?E%=.|
0000a9f0  23 63 25 3a e7 45 25 3c  3e 31 20 85 20 34 32 2c  |#c%:.E%<>1 . 42,|
0000aa00  22 5a 53 6f 66 74 20 2e  50 43 58 20 66 69 6c 65  |"ZSoft .PCX file|
0000aa10  20 77 69 74 68 20 75 6e  6b 6e 6f 77 6e 20 65 6e  | with unknown en|
0000aa20  63 6f 64 69 6e 67 22 0d  34 94 37 45 25 3d 9a 23  |coding".4.7E%=.#|
0000aa30  63 25 3a 73 78 25 3d a4  48 57 3a 73 79 25 3d a4  |c%:sx%=.HW:sy%=.|
0000aa40  48 57 3a 73 78 25 3d a4  48 57 2b 31 2d 73 78 25  |HW:sx%=.HW+1-sx%|
0000aa50  3a 73 79 25 3d a4 48 57  2b 31 2d 73 79 25 0d 34  |:sy%=.HW+1-sy%.4|
0000aa60  9e 4e e7 73 63 61 6c 65  25 20 78 6d 75 6c 25 3d  |.N.scale% xmul%=|
0000aa70  78 6d 75 6c 25 2a 39 30  3a 78 64 69 76 25 3d 78  |xmul%*90:xdiv%=x|
0000aa80  64 69 76 25 2a a4 48 57  3a 79 6d 75 6c 25 3d 79  |div%*.HW:ymul%=y|
0000aa90  6d 75 6c 25 2a 39 30 3a  79 64 69 76 25 3d 79 64  |mul%*90:ydiv%=yd|
0000aaa0  69 76 25 2a a4 48 57 20  8b e7 a4 57 0d 34 a8 48  |iv%*.HW ...W.4.H|
0000aab0  cf 23 63 25 3d 36 35 3a  70 6c 61 6e 65 73 25 3d  |.#c%=65:planes%=|
0000aac0  9a 23 63 25 3a 70 6c 61  6e 61 72 25 3d 70 6c 61  |.#c%:planar%=pla|
0000aad0  6e 65 73 25 3e 31 3a 72  6f 77 62 79 74 65 73 25  |nes%>1:rowbytes%|
0000aae0  3d a4 48 57 3a 62 70 70  25 3d 45 25 2a 70 6c 61  |=.HW:bpp%=E%*pla|
0000aaf0  6e 65 73 25 0d 34 b2 1e  70 63 78 70 61 6c 3d 31  |nes%.4..pcxpal=1|
0000ab00  36 3a e7 62 70 70 25 3e  34 20 80 20 43 25 3d 35  |6:.bpp%>4 . C%=5|
0000ab10  20 8c 0d 34 bc 2a cf 23  63 25 3d a2 23 63 25 2d  | ..4.*.#c%=.#c%-|
0000ab20  37 36 39 3a e7 9a 23 63  25 3d 31 32 20 70 63 78  |769:..#c%=12 pcx|
0000ab30  70 61 6c 3d a2 23 63 25  2d 37 36 38 0d 34 c6 05  |pal=.#c%-768.4..|
0000ab40  cd 0d 34 d0 35 cf 23 63  25 3d 70 63 78 70 61 6c  |..4.5.#c%=pcxpal|
0000ab50  3a 45 25 3d 30 3a e3 43  25 3d 30 b8 28 31 3c 3c  |:E%=0:.C%=0.(1<<|
0000ab60  62 70 70 25 29 2a 33 2d  31 3a 45 25 3d 45 25 84  |bpp%)*3-1:E%=E%.|
0000ab70  9a 23 63 25 3a ed 0d 34  da 33 e7 69 6e 66 6f 25  |.#c%:..4.3.info%|
0000ab80  20 f1 22 2e 50 43 58 20  70 61 6c 65 74 74 65 20  | .".PCX palette |
0000ab90  6d 61 73 6b 20 65 73 74  61 62 6c 69 73 68 65 64  |mask established|
0000aba0  20 61 74 20 22 3b 7e 45  25 0d 34 e4 0b e7 45 25  | at ";~E%.4...E%|
0000abb0  3d 30 20 8c 0d 34 ee 45  e3 43 25 3d 30 b8 28 31  |=0 ..4.E.C%=0.(1|
0000abc0  3c 3c 62 70 70 25 29 2d  31 3a 72 25 28 43 25 29  |<<bpp%)-1:r%(C%)|
0000abd0  3d 43 25 2f 28 28 31 3c  3c 62 70 70 25 29 2d 31  |=C%/((1<<bpp%)-1|
0000abe0  29 2a 46 3a ed 3a 67 25  28 29 3d 72 25 28 29 3a  |)*F:.:g%()=r%():|
0000abf0  62 25 28 29 3d 72 25 28  29 0d 34 f8 05 cc 0d 35  |b%()=r%().4....5|
0000ac00  02 21 cf 23 63 25 3d 70  63 78 70 61 6c 3a e3 43  |.!.#c%=pcxpal:.C|
0000ac10  25 3d 30 b8 28 31 3c 3c  62 70 70 25 29 2d 31 0d  |%=0.(1<<bpp%)-1.|
0000ac20  35 0c 45 72 25 28 43 25  29 3d 28 9a 23 63 25 80  |5.Er%(C%)=(.#c%.|
0000ac30  45 25 29 2f 45 25 2a 46  3a 67 25 28 43 25 29 3d  |E%)/E%*F:g%(C%)=|
0000ac40  28 9a 23 63 25 80 45 25  29 2f 45 25 2a 46 3a 62  |(.#c%.E%)/E%*F:b|
0000ac50  25 28 43 25 29 3d 28 9a  23 63 25 80 45 25 29 2f  |%(C%)=(.#c%.E%)/|
0000ac60  45 25 2a 46 0d 35 16 05  ed 0d 35 20 05 cd 0d 35  |E%*F.5....5 ...5|
0000ac70  2a 0b f2 72 65 77 69 6e  64 0d 35 34 4c 70 6c 62  |*..rewind.54Lplb|
0000ac80  79 74 65 73 25 3d 72 6f  77 62 79 74 65 73 25 2a  |ytes%=rowbytes%*|
0000ac90  70 6c 61 6e 65 73 25 3a  70 6c 62 75 66 66 25 3d  |planes%:plbuff%=|
0000aca0  a4 64 69 6d 28 70 6c 62  79 74 65 73 25 29 3a 63  |.dim(plbytes%):c|
0000acb0  61 63 68 65 25 3d b9 3a  63 61 63 68 65 62 79 74  |ache%=.:cachebyt|
0000acc0  65 73 25 3d b9 0d 35 3e  45 e7 70 6c 61 6e 61 72  |es%=..5>E.planar|
0000acd0  25 20 70 62 75 66 66 25  3d a4 64 69 6d 28 73 78  |% pbuff%=.dim(sx|
0000ace0  25 29 20 8b 69 6e 70 75  74 3d 62 70 70 25 3a 62  |%) .input=bpp%:b|
0000acf0  69 67 65 6e 64 69 61 6e  62 69 74 73 3d b9 3a 72  |igendianbits=.:r|
0000ad00  24 3d 22 46 4e 31 31 30  30 22 0d 35 48 46 69 6e  |$="FN1100".5HFin|
0000ad10  66 6f 24 3d 22 5a 53 6f  66 74 20 2e 50 43 58 20  |fo$="ZSoft .PCX |
0000ad20  66 69 6c 65 2c 20 22 2b  c3 73 78 25 2b 22 20 62  |file, "+.sx%+" b|
0000ad30  79 20 22 2b c3 73 79 25  2b 22 20 70 69 78 65 6c  |y "+.sy%+" pixel|
0000ad40  73 2c 20 22 2b a4 62 69  74 73 28 62 70 70 25 29  |s, "+.bits(bpp%)|
0000ad50  0d 35 52 0a c9 20 32 30  30 30 0d 35 5c 38 cf 23  |.5R.. 2000.5\8.#|
0000ad60  63 25 3d 30 3a 4c 25 3d  9a 23 63 25 3a 43 25 3d  |c%=0:L%=.#c%:C%=|
0000ad70  9a 23 63 25 3a 49 25 3d  9a 23 63 25 3a 4a 25 3d  |.#c%:I%=.#c%:J%=|
0000ad80  a4 48 57 3a 4b 25 3d a4  48 57 3a 4d 25 3d 9a 23  |.HW:K%=.HW:M%=.#|
0000ad90  63 25 0d 35 66 43 73 78  25 3d a4 57 3a 73 78 25  |c%.5fCsx%=.W:sx%|
0000ada0  3d a4 48 57 3a 73 79 25  3d a4 48 57 3a 42 25 3d  |=.HW:sy%=.HW:B%=|
0000adb0  9a 23 63 25 3a 49 44 25  3d 9a 23 63 25 3a e7 49  |.#c%:ID%=.#c%:.I|
0000adc0  44 25 80 26 31 30 20 68  66 6c 69 70 25 3d ac 68  |D%.&10 hflip%=.h|
0000add0  66 6c 69 70 25 0d 35 70  20 e7 28 49 44 25 20 80  |flip%.5p .(ID% .|
0000ade0  26 32 30 29 3d 30 20 76  66 6c 69 70 25 3d ac 76  |&20)=0 vflip%=.v|
0000adf0  66 6c 69 70 25 0d 35 7a  18 cf 23 63 25 3d 8f 23  |flip%.5z..#c%=.#|
0000ae00  63 25 2b 4c 25 3a c8 8e  20 43 25 20 ca 0d 35 84  |c%+L%:.. C% ..5.|
0000ae10  11 c9 20 31 3a e7 4d 25  3d 26 31 38 20 8c 0d 35  |.. 1:.M%=&18 ..5|
0000ae20  8e 0f e3 43 25 3d 4a 25  b8 4b 25 2d 31 0d 35 98  |...C%=J%.K%-1.5.|
0000ae30  39 62 25 28 43 25 29 3d  9a 23 63 25 2f 32 35 35  |9b%(C%)=.#c%/255|
0000ae40  2a 46 3a 67 25 28 43 25  29 3d 9a 23 63 25 2f 32  |*F:g%(C%)=.#c%/2|
0000ae50  35 35 2a 46 3a 72 25 28  43 25 29 3d 9a 23 63 25  |55*F:r%(C%)=.#c%|
0000ae60  2f 32 35 35 2a 46 0d 35  a2 05 ed 0d 35 ac 05 cc  |/255*F.5....5...|
0000ae70  0d 35 b6 05 cd 0d 35 c0  0c 7f 20 f2 6e 6f 70 61  |.5....5... .nopa|
0000ae80  6c 0d 35 ca 05 cb 0d 35  d4 0c 73 74 25 3d 8f 23  |l.5....5..st%=.#|
0000ae90  63 25 0d 35 de 0b c8 8e  20 49 25 20 ca 0d 35 e8  |c%.5.... I% ..5.|
0000aea0  1c c9 20 31 2c 32 2c 33  3a 63 61 63 68 65 25 3d  |.. 1,2,3:cache%=|
0000aeb0  b9 3a e7 42 25 3e 38 20  8c 0d 35 f2 0c e7 42 25  |.:.B%>8 ..5...B%|
0000aec0  3e 31 36 20 8c 0d 35 fc  4c 69 6e 70 75 74 3d 32  |>16 ..5.Linput=2|
0000aed0  34 3a 62 62 6f 25 3d 30  3a 67 62 6f 25 3d 31 3a  |4:bbo%=0:gbo%=1:|
0000aee0  72 62 6f 25 3d 32 3a 73  74 65 70 32 34 3d 42 25  |rbo%=2:step24=B%|
0000aef0  81 38 3a 72 24 3d 22 46  4e 32 34 22 3a 72 6f 77  |.8:r$="FN24":row|
0000af00  62 79 74 65 73 25 3d 73  74 65 70 32 34 2a 73 78  |bytes%=step24*sx|
0000af10  25 0d 36 06 05 cc 0d 36  10 13 72 6f 77 62 79 74  |%.6....6..rowbyt|
0000af20  65 73 25 3d 73 78 25 2a  32 0d 36 1a 37 de 20 72  |es%=sx%*2.6.7. r|
0000af30  70 61 6c 25 28 32 35 35  29 2c 67 70 61 6c 25 28  |pal%(255),gpal%(|
0000af40  32 35 35 29 3a 69 6e 70  75 74 3d 31 36 3a 73 74  |255):input=16:st|
0000af50  65 70 32 34 3d 32 3a 72  24 3d 22 46 4e 31 36 22  |ep24=2:r$="FN16"|
0000af60  0d 36 24 0d e3 43 25 3d  30 b8 32 35 35 0d 36 2e  |.6$..C%=0.255.6.|
0000af70  26 67 70 61 6c 25 28 43  25 29 3d 28 43 25 3e 3e  |&gpal%(C%)=(C%>>|
0000af80  35 29 3c 3c 38 20 84 20  28 43 25 80 33 31 29 3c  |5)<<8 . (C%.31)<|
0000af90  3c 31 36 0d 36 38 25 72  70 61 6c 25 28 43 25 29  |<16.68%rpal%(C%)|
0000afa0  3d 28 43 25 3e 3e 32 29  80 33 31 20 84 20 28 43  |=(C%>>2).31 . (C|
0000afb0  25 80 33 29 3c 3c 31 31  0d 36 42 05 ed 0d 36 4c  |%.3)<<11.6B...6L|
0000afc0  31 e3 43 25 3d 30 b8 33  31 3a 72 25 28 43 25 29  |1.C%=0.31:r%(C%)|
0000afd0  3d 43 25 2f 33 31 2a 46  3a ed 3a 67 25 28 29 3d  |=C%/31*F:.:g%()=|
0000afe0  72 25 28 29 3a 62 25 28  29 3d 72 25 28 29 0d 36  |r%():b%()=r%().6|
0000aff0  56 05 cd 0d 36 60 05 cc  0d 36 6a 1a 72 24 3d 22  |V...6`...6j.r$="|
0000b000  46 4e 38 22 3a 72 6f 77  62 79 74 65 73 25 3d 73  |FN8":rowbytes%=s|
0000b010  78 25 0d 36 74 05 cd 0d  36 7e 49 69 6e 66 6f 24  |x%.6t...6~Iinfo$|
0000b020  3d 22 54 72 75 65 76 69  73 69 6f 6e 20 54 47 41  |="Truevision TGA|
0000b030  20 69 6d 61 67 65 2c 20  22 2b c3 73 78 25 2b 22  | image, "+.sx%+"|
0000b040  20 62 79 20 22 2b c3 73  79 25 2b 22 20 70 69 78  | by "+.sy%+" pix|
0000b050  65 6c 73 2c 20 22 2b a4  62 69 74 73 28 42 25 29  |els, "+.bits(B%)|
0000b060  0d 36 88 44 c9 20 39 2c  31 30 2c 31 31 3a 73 74  |.6.D. 9,10,11:st|
0000b070  65 70 32 34 3d 42 25 81  38 3a 72 6f 77 62 79 74  |ep24=B%.8:rowbyt|
0000b080  65 73 25 3d 73 74 65 70  32 34 2a 73 78 25 3a 62  |es%=step24*sx%:b|
0000b090  75 66 66 25 3d a4 64 69  6d 28 72 6f 77 62 79 74  |uff%=.dim(rowbyt|
0000b0a0  65 73 25 29 0d 36 92 0b  e7 42 25 3e 38 20 8c 0d  |es%).6...B%>8 ..|
0000b0b0  36 9c 0c e7 42 25 3e 31  36 20 8c 0d 36 a6 3a 69  |6...B%>16 ..6.:i|
0000b0c0  6e 70 75 74 3d 32 34 3a  62 62 25 3d 62 75 66 66  |nput=24:bb%=buff|
0000b0d0  25 3a 67 62 25 3d 62 75  66 66 25 2b 31 3a 72 62  |%:gb%=buff%+1:rb|
0000b0e0  25 3d 62 75 66 66 25 2b  32 3a 72 24 3d 22 46 4e  |%=buff%+2:r$="FN|
0000b0f0  32 30 30 32 22 0d 36 b0  05 cc 0d 36 ba 39 de 20  |2002".6....6.9. |
0000b100  72 70 61 6c 25 28 32 35  35 29 2c 67 70 61 6c 25  |rpal%(255),gpal%|
0000b110  28 32 35 35 29 3a 69 6e  70 75 74 3d 31 36 3a 73  |(255):input=16:s|
0000b120  74 65 70 32 34 3d 32 3a  72 24 3d 22 46 4e 32 30  |tep24=2:r$="FN20|
0000b130  30 31 22 0d 36 c4 0d e3  43 25 3d 30 b8 32 35 35  |01".6...C%=0.255|
0000b140  0d 36 ce 26 67 70 61 6c  25 28 43 25 29 3d 28 43  |.6.&gpal%(C%)=(C|
0000b150  25 3e 3e 35 29 3c 3c 38  20 84 20 28 43 25 80 33  |%>>5)<<8 . (C%.3|
0000b160  31 29 3c 3c 31 36 0d 36  d8 25 72 70 61 6c 25 28  |1)<<16.6.%rpal%(|
0000b170  43 25 29 3d 28 43 25 3e  3e 32 29 80 33 31 20 84  |C%)=(C%>>2).31 .|
0000b180  20 28 43 25 80 33 29 3c  3c 31 31 0d 36 e2 05 ed  | (C%.3)<<11.6...|
0000b190  0d 36 ec 31 e3 43 25 3d  30 b8 33 31 3a 72 25 28  |.6.1.C%=0.31:r%(|
0000b1a0  43 25 29 3d 43 25 2f 33  31 2a 46 3a ed 3a 67 25  |C%)=C%/31*F:.:g%|
0000b1b0  28 29 3d 72 25 28 29 3a  62 25 28 29 3d 72 25 28  |()=r%():b%()=r%(|
0000b1c0  29 0d 36 f6 05 cd 0d 37  00 05 cd 0d 37 0a 4d 69  |).6....7....7.Mi|
0000b1d0  6e 66 6f 24 3d 22 54 72  75 65 76 69 73 69 6f 6e  |nfo$="Truevision|
0000b1e0  20 54 47 41 20 52 4c 45  20 69 6d 61 67 65 2c 20  | TGA RLE image, |
0000b1f0  22 2b c3 73 78 25 2b 22  20 62 79 20 22 2b c3 73  |"+.sx%+" by "+.s|
0000b200  79 25 2b 22 20 70 69 78  65 6c 73 2c 20 22 2b a4  |y%+" pixels, "+.|
0000b210  62 69 74 73 28 42 25 29  0d 37 14 05 cb 0d 37 1e  |bits(B%).7....7.|
0000b220  0a c9 20 32 31 30 30 0d  37 28 3f 71 75 61 6e 74  |.. 2100.7(?quant|
0000b230  25 3d 36 3a 73 78 25 3d  35 31 32 3a 72 6f 77 62  |%=6:sx%=512:rowb|
0000b240  79 74 65 73 25 3d 32 2a  73 78 25 3a 73 79 25 3d  |ytes%=2*sx%:sy%=|
0000b250  32 35 36 3a 63 61 63 68  65 25 3d b9 3a 72 24 3d  |256:cache%=.:r$=|
0000b260  22 46 4e 31 36 22 0d 37  32 2d de 20 72 70 61 6c  |"FN16".72-. rpal|
0000b270  25 28 32 35 35 29 2c 67  70 61 6c 25 28 32 35 35  |%(255),gpal%(255|
0000b280  29 3a 69 6e 70 75 74 3d  31 36 3a 73 74 65 70 32  |):input=16:step2|
0000b290  34 3d 32 0d 37 3c 0d e3  43 25 3d 30 b8 32 35 35  |4=2.7<..C%=0.255|
0000b2a0  0d 37 46 20 67 70 61 6c  25 28 43 25 29 3d 43 25  |.7F gpal%(C%)=C%|
0000b2b0  3e 3e 33 20 84 20 28 43  25 80 37 29 3c 3c 31 31  |>>3 . (C%.7)<<11|
0000b2c0  0d 37 50 25 72 70 61 6c  25 28 43 25 29 3d 28 43  |.7P%rpal%(C%)=(C|
0000b2d0  25 80 37 29 3c 3c 38 20  84 20 28 43 25 3e 3e 33  |%.7)<<8 . (C%>>3|
0000b2e0  29 3c 3c 31 36 0d 37 5a  05 ed 0d 37 64 27 e3 43  |)<<16.7Z...7d'.C|
0000b2f0  25 3d 30 b8 33 31 3a 72  25 28 43 25 29 3d 43 25  |%=0.31:r%(C%)=C%|
0000b300  2f 33 31 2a 46 3a ed 3a  62 25 28 29 3d 72 25 28  |/31*F:.:b%()=r%(|
0000b310  29 0d 37 6e 1d e3 43 25  3d 30 b8 36 33 3a 67 25  |).7n..C%=0.63:g%|
0000b320  28 43 25 29 3d 43 25 2f  36 33 2a 46 3a ed 0d 37  |(C%)=C%/63*F:..7|
0000b330  78 19 e7 73 63 61 6c 65  25 20 79 6d 75 6c 25 3d  |x..scale% ymul%=|
0000b340  79 6d 75 6c 25 2a 32 0d  37 82 48 69 6e 66 6f 24  |ymul%*2.7.Hinfo$|
0000b350  3d 22 50 69 6e 65 61 70  70 6c 65 20 69 6d 61 67  |="Pineapple imag|
0000b360  65 2c 20 35 31 32 20 62  79 20 32 35 36 20 70 69  |e, 512 by 256 pi|
0000b370  78 65 6c 73 2c 20 31 36  20 62 69 74 73 20 70 65  |xels, 16 bits pe|
0000b380  72 20 70 69 78 65 6c 22  3a cf 23 63 25 3d 37 0d  |r pixel":.#c%=7.|
0000b390  37 8c 0a c9 20 32 32 30  30 0d 37 96 39 71 75 61  |7... 2200.7.9qua|
0000b3a0  6e 74 25 3d 38 3a 73 74  65 70 32 34 3d 31 3a cf  |nt%=8:step24=1:.|
0000b3b0  23 63 25 3d 30 3a 73 24  3d be 23 63 25 3a 45 25  |#c%=0:s$=.#c%:E%|
0000b3c0  3d a7 73 24 2c 22 3a 22  29 3a 73 74 25 3d 8f 23  |=.s$,":"):st%=.#|
0000b3d0  63 25 0d 37 a0 37 73 78  25 3d bb c1 73 24 2c 45  |c%.7.7sx%=..s$,E|
0000b3e0  25 2b 31 29 3a 73 79 25  3d bb c1 73 24 2c 45 25  |%+1):sy%=..s$,E%|
0000b3f0  2b 32 2b a9 c3 73 78 25  29 3a f2 6e 6f 70 61 6c  |+2+..sx%):.nopal|
0000b400  3a 69 6e 70 75 74 3d 32  34 0d 37 aa 41 72 6f 77  |:input=24.7.Arow|
0000b410  62 79 74 65 73 25 3d 73  78 25 2a 33 3a 72 62 6f  |bytes%=sx%*3:rbo|
0000b420  25 3d 30 3a 67 62 6f 25  3d 73 78 25 3a 62 62 6f  |%=0:gbo%=sx%:bbo|
0000b430  25 3d 32 2a 73 78 25 3a  63 61 63 68 65 25 3d b9  |%=2*sx%:cache%=.|
0000b440  3a 72 24 3d 22 46 4e 32  34 22 0d 37 b4 47 69 6e  |:r$="FN24".7.Gin|
0000b450  66 6f 24 3d 22 49 72 6c  61 6d 20 69 6d 61 67 65  |fo$="Irlam image|
0000b460  2c 20 22 2b c3 73 78 25  2b 22 20 62 79 20 22 2b  |, "+.sx%+" by "+|
0000b470  c3 73 79 25 2b 22 20 70  69 78 65 6c 73 2c 20 32  |.sy%+" pixels, 2|
0000b480  34 20 62 69 74 73 20 70  65 72 20 70 69 78 65 6c  |4 bits per pixel|
0000b490  22 0d 37 be 0a c9 20 32  32 35 30 0d 37 c8 48 cf  |".7... 2250.7.H.|
0000b4a0  23 63 25 3d 31 36 3a 73  78 25 3d a4 57 3a 73 79  |#c%=16:sx%=.W:sy|
0000b4b0  25 3d a4 57 3a de 20 72  70 61 6c 25 28 32 35 35  |%=.W:. rpal%(255|
0000b4c0  29 2c 67 70 61 6c 25 28  32 35 35 29 2c 62 70 61  |),gpal%(255),bpa|
0000b4d0  6c 25 28 32 35 35 29 2c  74 61 62 6c 65 25 28 32  |l%(255),table%(2|
0000b4e0  35 35 29 0d 37 d2 15 e3  43 25 3d 30 b8 32 35 35  |55).7...C%=0.255|
0000b4f0  3a 44 25 3d 43 25 84 31  0d 37 dc 1c 74 61 62 6c  |:D%=C%.1.7..tabl|
0000b500  65 25 28 43 25 29 3d 28  44 25 2d 31 36 29 2f 32  |e%(C%)=(D%-16)/2|
0000b510  31 39 2a 46 0d 37 e6 13  e7 44 25 80 31 32 38 20  |19*F.7...D%.128 |
0000b520  44 25 2d 3d 32 35 36 0d  37 f0 29 72 25 28 43 25  |D%-=256.7.)r%(C%|
0000b530  29 3d a8 28 44 25 2f 31  36 30 2a 46 29 3a 62 25  |)=.(D%/160*F):b%|
0000b540  28 43 25 29 3d a8 28 44  25 2f 31 32 36 2a 46 29  |(C%)=.(D%/126*F)|
0000b550  0d 37 fa 3e 67 25 28 43  25 29 3d a8 28 2d 44 25  |.7.>g%(C%)=.(-D%|
0000b560  2f 31 36 30 2a 72 77 74  2f 67 77 74 2a 46 29 3a  |/160*rwt/gwt*F):|
0000b570  67 70 61 6c 25 28 43 25  29 3d a8 28 2d 44 25 2f  |gpal%(C%)=.(-D%/|
0000b580  31 32 36 2a 62 77 74 2f  67 77 74 2a 46 29 0d 38  |126*bwt/gwt*F).8|
0000b590  04 05 ed 0d 38 0e 2c 74  61 62 6c 65 25 28 29 3d  |....8.,table%()=|
0000b5a0  30 2c 30 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |0,0,0,0,0,0,0,0,|
0000b5b0  30 2c 30 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 0d  |0,0,0,0,0,0,0,0.|
0000b5c0  38 18 35 73 74 25 3d 33  32 3a cf 23 63 25 3d 33  |8.5st%=32:.#c%=3|
0000b5d0  32 3a 63 61 63 68 65 25  3d b9 3a 72 6f 77 62 79  |2:cache%=.:rowby|
0000b5e0  74 65 73 25 3d 32 2a 73  78 25 3a 69 6e 70 75 74  |tes%=2*sx%:input|
0000b5f0  3d 34 31 31 0d 38 22 3c  69 6e 66 6f 24 3d 22 49  |=411.8"<info$="I|
0000b600  72 6c 61 6d 20 59 55 56  20 34 3a 31 3a 31 20 66  |rlam YUV 4:1:1 f|
0000b610  69 6c 65 20 22 2b c3 73  78 25 2b 22 20 62 79 20  |ile "+.sx%+" by |
0000b620  22 2b c3 73 79 25 2b 22  20 70 69 78 65 6c 73 22  |"+.sy%+" pixels"|
0000b630  0d 38 2c 0a c9 20 32 33  30 30 0d 38 36 39 cf 23  |.8,.. 2300.869.#|
0000b640  63 25 3d 36 3a 73 78 25  3d a4 48 57 3a 73 79 25  |c%=6:sx%=.HW:sy%|
0000b650  3d a4 48 57 3a 44 25 3d  9a 23 63 25 3a 6e 63 6f  |=.HW:D%=.#c%:nco|
0000b660  6c 6f 72 73 25 3d 9a 23  63 25 3a 69 6e 70 75 74  |lors%=.#c%:input|
0000b670  3d 32 34 0d 38 40 3b 76  66 6c 69 70 25 3d ac 76  |=24.8@;vflip%=.v|
0000b680  66 6c 69 70 25 3a 71 75  61 6e 74 25 3d 9a 23 63  |flip%:quant%=.#c|
0000b690  25 3a 6e 63 6d 61 70 25  3d 9a 23 63 25 3a 63 6d  |%:ncmap%=.#c%:cm|
0000b6a0  61 70 6c 65 6e 25 3d 31  3c 3c 9a 23 63 25 0d 38  |aplen%=1<<.#c%.8|
0000b6b0  4a 21 f2 6e 6f 70 61 6c  3a 62 61 63 6b 25 3d a4  |J!.nopal:back%=.|
0000b6c0  64 69 6d 28 34 29 3a 21  62 61 63 6b 25 3d 30 0d  |dim(4):!back%=0.|
0000b6d0  38 54 12 63 6c 72 66 69  72 73 74 25 3d 44 25 80  |8T.clrfirst%=D%.|
0000b6e0  31 0d 38 5e 0f e7 28 44  25 80 32 29 3d 30 20 8c  |1.8^..(D%.2)=0 .|
0000b6f0  0d 38 68 24 e3 49 25 3d  30 b8 6e 63 6f 6c 6f 72  |.8h$.I%=0.ncolor|
0000b700  73 25 2d 31 3a 62 61 63  6b 25 3f 49 25 3d 9a 23  |s%-1:back%?I%=.#|
0000b710  63 25 3a ed 0d 38 72 19  e7 28 6e 63 6f 6c 6f 72  |c%:..8r..(ncolor|
0000b720  73 25 80 31 29 3d 30 20  e7 9a 23 63 25 0d 38 7c  |s%.1)=0 ..#c%.8||
0000b730  05 cd 0d 38 86 1a e7 44  25 80 34 20 61 6c 70 68  |...8...D%.4 alph|
0000b740  61 25 3d a4 64 69 6d 28  73 78 25 29 0d 38 90 0f  |a%=.dim(sx%).8..|
0000b750  e7 6e 63 6d 61 70 25 3e  30 20 8c 0d 38 9a 29 e3  |.ncmap%>0 ..8.).|
0000b760  49 25 3d 30 b8 63 6d 61  70 6c 65 6e 25 2d 31 3a  |I%=0.cmaplen%-1:|
0000b770  72 25 28 49 25 29 3d a4  48 57 2f 26 46 46 30 30  |r%(I%)=.HW/&FF00|
0000b780  2a 46 3a ed 0d 38 a4 29  e3 49 25 3d 30 b8 63 6d  |*F:..8.).I%=0.cm|
0000b790  61 70 6c 65 6e 25 2d 31  3a 67 25 28 49 25 29 3d  |aplen%-1:g%(I%)=|
0000b7a0  a4 48 57 2f 26 46 46 30  30 2a 46 3a ed 0d 38 ae  |.HW/&FF00*F:..8.|
0000b7b0  29 e3 49 25 3d 30 b8 63  6d 61 70 6c 65 6e 25 2d  |).I%=0.cmaplen%-|
0000b7c0  31 3a 62 25 28 49 25 29  3d a4 48 57 2f 26 46 46  |1:b%(I%)=.HW/&FF|
0000b7d0  30 30 2a 46 3a ed 0d 38  b8 05 cd 0d 38 c2 0b e7  |00*F:..8....8...|
0000b7e0  44 25 80 38 20 8c 0d 38  cc 25 cf 23 63 25 3d a4  |D%.8 ..8.%.#c%=.|
0000b7f0  48 57 2b 8f 23 63 25 3a  e7 8f 23 63 25 80 31 20  |HW+.#c%:..#c%.1 |
0000b800  8f 23 63 25 3d 8f 23 63  25 2b 31 0d 38 d6 05 cd  |.#c%=.#c%+1.8...|
0000b810  0d 38 e0 48 73 74 25 3d  8f 23 63 25 3a 62 75 66  |.8.Hst%=.#c%:buf|
0000b820  66 25 3d a4 64 69 6d 28  73 78 25 2a 33 29 3a 72  |f%=.dim(sx%*3):r|
0000b830  62 25 3d 62 75 66 66 25  3a 67 62 25 3d 62 75 66  |b%=buff%:gb%=buf|
0000b840  66 25 2b 31 2a 73 78 25  3a 62 62 25 3d 62 75 66  |f%+1*sx%:bb%=buf|
0000b850  66 25 2b 32 2a 73 78 25  0d 38 ea 0b f2 72 65 77  |f%+2*sx%.8...rew|
0000b860  69 6e 64 0d 38 f4 50 69  6e 66 6f 24 3d 22 55 74  |ind.8.Pinfo$="Ut|
0000b870  61 68 20 72 6c 65 20 69  6d 61 67 65 2c 20 22 2b  |ah rle image, "+|
0000b880  c3 73 78 25 2b 22 20 62  79 20 22 2b c3 73 79 25  |.sx%+" by "+.sy%|
0000b890  2b 22 20 70 69 78 65 6c  73 2c 20 22 2b a4 62 69  |+" pixels, "+.bi|
0000b8a0  74 73 28 6e 63 6f 6c 6f  72 73 25 2a 71 75 61 6e  |ts(ncolors%*quan|
0000b8b0  74 25 29 0d 38 fe 0a c9  20 32 34 30 30 0d 39 08  |t%).8... 2400.9.|
0000b8c0  32 cf 23 63 25 3d 72 69  66 66 6f 66 66 25 2b 26  |2.#c%=riffoff%+&|
0000b8d0  30 61 3a 73 74 25 3d a4  57 3a 70 61 6c 25 3d a4  |0a:st%=.W:pal%=.|
0000b8e0  57 3a 73 78 25 3d a4 57  3a 73 79 25 3d a4 57 0d  |W:sx%=.W:sy%=.W.|
0000b8f0  39 12 0d c8 8e 20 70 61  6c 25 20 ca 0d 39 1c 08  |9.... pal% ..9..|
0000b900  c9 20 31 32 0d 39 26 2d  cf 23 63 25 3d 72 69 66  |. 12.9&-.#c%=rif|
0000b910  66 6f 66 66 25 2b 26 31  38 3a 69 6e 70 75 74 3d  |foff%+&18:input=|
0000b920  a4 48 57 3a 63 6f 6d 70  72 65 73 73 69 6f 6e 3d  |.HW:compression=|
0000b930  30 0d 39 30 08 c9 20 34  30 0d 39 3a 2e cf 23 63  |0.90.. 40.9:..#c|
0000b940  25 3d 72 69 66 66 6f 66  66 25 2b 26 31 63 3a 69  |%=riffoff%+&1c:i|
0000b950  6e 70 75 74 3d a4 48 57  3a 63 6f 6d 70 72 65 73  |nput=.HW:compres|
0000b960  73 69 6f 6e 3d a4 57 0d  39 44 25 cf 23 63 25 3d  |sion=.W.9D%.#c%=|
0000b970  72 69 66 66 6f 66 66 25  2b 26 32 36 3a 78 70 70  |riffoff%+&26:xpp|
0000b980  6d 3d a4 57 3a 79 70 70  6d 3d a4 57 0d 39 4e 1b  |m=.W:yppm=.W.9N.|
0000b990  e7 20 28 78 70 70 6d 3c  3e 30 20 80 20 79 70 70  |. (xppm<>0 . ypp|
0000b9a0  6d 3c 3e 30 29 20 8c 0d  39 58 25 78 64 69 76 25  |m<>0) ..9X%xdiv%|
0000b9b0  3d 78 64 69 76 25 2a 78  70 70 6d 3a 78 6d 75 6c  |=xdiv%*xppm:xmul|
0000b9c0  25 3d 78 6d 75 6c 25 2a  33 35 34 33 0d 39 62 25  |%=xmul%*3543.9b%|
0000b9d0  79 64 69 76 25 3d 79 64  69 76 25 2a 79 70 70 6d  |ydiv%=ydiv%*yppm|
0000b9e0  3a 79 6d 75 6c 25 3d 79  6d 75 6c 25 2a 33 35 34  |:ymul%=ymul%*354|
0000b9f0  33 0d 39 6c 05 cd 0d 39  76 05 7f 0d 39 80 2b 85  |3.9l...9v...9.+.|
0000ba00  20 34 32 2c 22 55 6e 6b  6e 6f 77 6e 20 2e 42 4d  | 42,"Unknown .BM|
0000ba10  50 20 76 61 72 69 61 6e  74 20 28 22 2b c3 70 61  |P variant ("+.pa|
0000ba20  6c 25 2b 22 29 22 0d 39  8a 05 cb 0d 39 94 22 62  |l%+")".9....9."b|
0000ba30  69 67 65 6e 64 69 61 6e  62 69 74 73 3d b9 3a 76  |igendianbits=.:v|
0000ba40  66 6c 69 70 25 3d ac 76  66 6c 69 70 25 0d 39 9e  |flip%=.vflip%.9.|
0000ba50  0e c8 8e 20 69 6e 70 75  74 20 ca 0d 39 a8 1a c9  |... input ..9...|
0000ba60  20 31 3a 72 6f 77 62 79  74 65 73 25 3d 73 78 25  | 1:rowbytes%=sx%|
0000ba70  2b 37 3e 3e 33 0d 39 b2  1a c9 20 34 3a 72 6f 77  |+7>>3.9... 4:row|
0000ba80  62 79 74 65 73 25 3d 73  78 25 2b 31 3e 3e 31 0d  |bytes%=sx%+1>>1.|
0000ba90  39 bc 15 c9 20 38 3a 72  6f 77 62 79 74 65 73 25  |9... 8:rowbytes%|
0000baa0  3d 73 78 25 0d 39 c6 2b  c9 20 31 36 3a 72 6f 77  |=sx%.9.+. 16:row|
0000bab0  62 79 74 65 73 25 3d 73  78 25 2a 32 3a 72 24 3d  |bytes%=sx%*2:r$=|
0000bac0  22 46 4e 31 36 22 3a 73  74 65 70 32 34 3d 32 0d  |"FN16":step24=2.|
0000bad0  39 d0 1b de 20 72 70 61  6c 25 28 32 35 35 29 2c  |9... rpal%(255),|
0000bae0  67 70 61 6c 25 28 32 35  35 29 0d 39 da 0d e3 43  |gpal%(255).9...C|
0000baf0  25 3d 30 b8 32 35 35 0d  39 e4 22 67 70 61 6c 25  |%=0.255.9."gpal%|
0000bb00  28 43 25 29 3d 28 43 25  3e 3e 35 29 3c 3c 38 20  |(C%)=(C%>>5)<<8 |
0000bb10  84 20 28 43 25 80 33 31  29 0d 39 ee 2b 72 70 61  |. (C%.31).9.+rpa|
0000bb20  6c 25 28 43 25 29 3d 28  28 43 25 3e 3e 32 29 80  |l%(C%)=((C%>>2).|
0000bb30  33 31 29 3c 3c 31 36 20  84 20 28 43 25 80 33 29  |31)<<16 . (C%.3)|
0000bb40  3c 3c 31 31 0d 39 f8 05  ed 0d 3a 02 31 e3 43 25  |<<11.9....:.1.C%|
0000bb50  3d 30 b8 33 31 3a 72 25  28 43 25 29 3d 43 25 2f  |=0.31:r%(C%)=C%/|
0000bb60  33 31 2a 46 3a ed 3a 67  25 28 29 3d 72 25 28 29  |31*F:.:g%()=r%()|
0000bb70  3a 62 25 28 29 3d 72 25  28 29 0d 3a 0c 18 c9 20  |:b%()=r%().:... |
0000bb80  32 34 3a 72 6f 77 62 79  74 65 73 25 3d 73 78 25  |24:rowbytes%=sx%|
0000bb90  2a 33 0d 3a 16 2b 72 62  6f 25 3d 30 3a 67 62 6f  |*3.:.+rbo%=0:gbo|
0000bba0  25 3d 31 3a 62 62 6f 25  3d 32 3a 73 74 65 70 32  |%=1:bbo%=2:step2|
0000bbb0  34 3d 33 3a 72 24 3d 22  46 4e 32 34 22 0d 3a 20  |4=3:r$="FN24".: |
0000bbc0  33 e3 43 25 3d 30 b8 32  35 35 3a 72 25 28 43 25  |3.C%=0.255:r%(C%|
0000bbd0  29 3d 43 25 2f 32 35 35  2a 46 3a ed 3a 67 25 28  |)=C%/255*F:.:g%(|
0000bbe0  29 3d 72 25 28 29 3a 62  25 28 29 3d 72 25 28 29  |)=r%():b%()=r%()|
0000bbf0  0d 3a 2a 34 7f 20 85 20  34 32 2c 22 2e 42 4d 50  |.:*4. . 42,".BMP|
0000bc00  20 66 69 6c 65 20 6f 66  20 75 6e 75 73 75 61 6c  | file of unusual|
0000bc10  20 64 65 70 74 68 20 28  22 2b c3 69 6e 70 75 74  | depth ("+.input|
0000bc20  2b 22 29 22 0d 3a 34 05  cb 0d 3a 3e 0f e7 69 6e  |+")".:4...:>..in|
0000bc30  70 75 74 3c 3d 38 20 8c  0d 3a 48 22 cf 23 63 25  |put<=8 ..:H".#c%|
0000bc40  3d 72 69 66 66 6f 66 66  25 2b 31 34 2b 70 61 6c  |=riffoff%+14+pal|
0000bc50  25 3a 72 24 3d 22 46 4e  38 22 0d 3a 52 13 e3 43  |%:r$="FN8".:R..C|
0000bc60  25 3d 30 b8 32 5e 69 6e  70 75 74 2d 31 0d 3a 5c  |%=0.2^input-1.:\|
0000bc70  3f 62 25 28 43 25 29 3d  9a 23 63 25 2f 32 35 35  |?b%(C%)=.#c%/255|
0000bc80  2a 46 3a 67 25 28 43 25  29 3d 9a 23 63 25 2f 32  |*F:g%(C%)=.#c%/2|
0000bc90  35 35 2a 46 3a 72 25 28  43 25 29 3d 9a 23 63 25  |55*F:r%(C%)=.#c%|
0000bca0  2f 32 35 35 2a 46 3a e7  9a 23 63 25 0d 3a 66 05  |/255*F:..#c%.:f.|
0000bcb0  ed 0d 3a 70 05 cd 0d 3a  7a 14 c8 8e 20 63 6f 6d  |..:p...:z... com|
0000bcc0  70 72 65 73 73 69 6f 6e  20 ca 0d 3a 84 1d c9 20  |pression ..:... |
0000bcd0  30 3a 69 6e 66 6f 24 3d  22 55 6e 63 6f 6d 70 72  |0:info$="Uncompr|
0000bce0  65 73 73 65 64 20 22 0d  3a 8e 2c c9 20 31 3a 69  |essed ".:.,. 1:i|
0000bcf0  6e 66 6f 24 3d 22 52 4c  45 38 20 63 6f 6d 70 72  |nfo$="RLE8 compr|
0000bd00  65 73 73 65 64 20 22 3a  72 24 3d 22 46 4e 32 34  |essed ":r$="FN24|
0000bd10  30 31 22 0d 3a 98 2c c9  20 32 3a 69 6e 66 6f 24  |01".:.,. 2:info$|
0000bd20  3d 22 52 4c 45 34 20 63  6f 6d 70 72 65 73 73 65  |="RLE4 compresse|
0000bd30  64 20 22 3a 72 24 3d 22  46 4e 32 34 30 32 22 0d  |d ":r$="FN2402".|
0000bd40  3a a2 43 7f 20 85 20 34  32 2c 22 2e 42 4d 50 20  |:.C. . 42,".BMP |
0000bd50  63 6f 6d 70 72 65 73 73  69 6f 6e 20 74 79 70 65  |compression type|
0000bd60  20 6e 6f 74 20 73 75 70  70 6f 72 74 65 64 20 28  | not supported (|
0000bd70  22 2b c3 63 6f 6d 70 72  65 73 73 69 6f 6e 2b 22  |"+.compression+"|
0000bd80  29 22 0d 3a ac 05 cb 0d  3a b6 1c 72 6f 77 62 79  |)".:....:..rowby|
0000bd90  74 65 73 25 3d 72 6f 77  62 79 74 65 73 25 2b 33  |tes%=rowbytes%+3|
0000bda0  80 ac 33 0d 3a c0 3a e7  20 63 6f 6d 70 72 65 73  |..3.:.:. compres|
0000bdb0  73 69 6f 6e 3c 3e 30 20  63 61 63 68 65 62 79 74  |sion<>0 cachebyt|
0000bdc0  65 73 25 3d b9 3a 70 6c  62 75 66 66 25 3d a4 64  |es%=.:plbuff%=.d|
0000bdd0  69 6d 28 72 6f 77 62 79  74 65 73 25 29 0d 3a ca  |im(rowbytes%).:.|
0000bde0  1e 63 61 63 68 65 25 3d  b9 3a cf 23 63 25 3d 72  |.cache%=.:.#c%=r|
0000bdf0  69 66 66 6f 66 66 25 2b  73 74 25 0d 3a d4 4f 69  |iffoff%+st%.:.Oi|
0000be00  6e 66 6f 24 2b 3d 22 57  69 6e 64 6f 77 73 20 33  |nfo$+="Windows 3|
0000be10  2e 30 20 2e 42 4d 50 20  69 6d 61 67 65 2c 20 22  |.0 .BMP image, "|
0000be20  2b c3 73 78 25 2b 22 20  62 79 20 22 2b c3 73 79  |+.sx%+" by "+.sy|
0000be30  25 2b 22 20 70 69 78 65  6c 73 2c 20 22 2b a4 62  |%+" pixels, "+.b|
0000be40  69 74 73 28 69 6e 70 75  74 29 0d 3a de 0a c9 20  |its(input).:... |
0000be50  32 35 30 30 0d 3a e8 32  cf 23 63 25 3d 30 3a 73  |2500.:.2.#c%=0:s|
0000be60  24 3d 22 22 3a 43 25 3d  9a 23 63 25 3a c8 95 43  |$="":C%=.#c%:..C|
0000be70  25 3c 3e 30 20 73 24 2b  3d bd 43 25 3a 43 25 3d  |%<>0 s$+=.C%:C%=|
0000be80  9a 23 63 25 3a ce 0d 3a  f2 37 73 24 2b 3d 22 20  |.#c%:..:.7s$+=" |
0000be90  76 65 72 73 69 6f 6e 20  22 2b c3 a4 57 3a 73 78  |version "+..W:sx|
0000bea0  25 3d a4 57 3a 73 79 25  3d a4 57 3a 69 6e 70 75  |%=.W:sy%=.W:inpu|
0000beb0  74 3d a4 57 3a 63 61 63  68 65 25 3d b9 0d 3a fc  |t=.W:cache%=..:.|
0000bec0  5f 69 6e 66 6f 24 3d 22  21 54 72 61 6e 73 6c 61  |_info$="!Transla|
0000bed0  74 6f 72 20 43 6c 65 61  72 20 66 6f 72 6d 61 74  |tor Clear format|
0000bee0  20 6d 61 64 65 20 62 79  20 22 2b 73 24 2b 22 2c  | made by "+s$+",|
0000bef0  20 22 2b c3 73 78 25 2b  22 20 62 79 20 22 2b c3  | "+.sx%+" by "+.|
0000bf00  73 79 25 2b 22 20 70 69  78 65 6c 73 2c 20 22 2b  |sy%+" pixels, "+|
0000bf10  a4 62 69 74 73 28 69 6e  70 75 74 29 0d 3b 06 0e  |.bits(input).;..|
0000bf20  e7 69 6e 70 75 74 3e 38  20 8c 0d 3b 10 4b f2 6e  |.input>8 ..;.K.n|
0000bf30  6f 70 61 6c 3a 69 6e 70  75 74 3d 32 34 3a 73 74  |opal:input=24:st|
0000bf40  65 70 32 34 3d 33 3a 72  6f 77 62 79 74 65 73 25  |ep24=3:rowbytes%|
0000bf50  3d 33 2a 73 78 25 3a 72  62 6f 25 3d 30 3a 67 62  |=3*sx%:rbo%=0:gb|
0000bf60  6f 25 3d 31 3a 62 62 6f  25 3d 32 3a 72 24 3d 22  |o%=1:bbo%=2:r$="|
0000bf70  46 4e 32 34 22 0d 3b 1a  05 cc 0d 3b 24 13 e3 43  |FN24".;....;$..C|
0000bf80  25 3d 30 b8 32 5e 69 6e  70 75 74 2d 31 0d 3b 2e  |%=0.2^input-1.;.|
0000bf90  39 72 25 28 43 25 29 3d  9a 23 63 25 2f 32 35 35  |9r%(C%)=.#c%/255|
0000bfa0  2a 46 3a 67 25 28 43 25  29 3d 9a 23 63 25 2f 32  |*F:g%(C%)=.#c%/2|
0000bfb0  35 35 2a 46 3a 62 25 28  43 25 29 3d 9a 23 63 25  |55*F:b%(C%)=.#c%|
0000bfc0  2f 32 35 35 2a 46 0d 3b  38 05 ed 0d 3b 42 22 69  |/255*F.;8...;B"i|
0000bfd0  6e 70 75 74 3d 38 3a 72  24 3d 22 46 4e 38 22 3a  |nput=8:r$="FN8":|
0000bfe0  72 6f 77 62 79 74 65 73  25 3d 73 78 25 0d 3b 4c  |rowbytes%=sx%.;L|
0000bff0  05 cd 0d 3b 56 0c 73 74  25 3d 8f 23 63 25 0d 3b  |...;V.st%=.#c%.;|
0000c000  60 0a c9 20 32 36 30 30  0d 3b 6a 12 cf 23 63 25  |`.. 2600.;j..#c%|
0000c010  3d 30 3a 43 25 3d 9a 23  63 25 0d 3b 74 13 44 25  |=0:C%=.#c%.;t.D%|
0000c020  3d 9a 23 63 25 3a c8 8e  20 44 25 20 ca 0d 3b 7e  |=.#c%:.. D% ..;~|
0000c030  21 c9 20 30 3a 73 78 25  3d 33 32 30 3a 73 79 25  |!. 0:sx%=320:sy%|
0000c040  3d 32 30 30 3a 70 6c 61  6e 65 73 25 3d 34 0d 3b  |=200:planes%=4.;|
0000c050  88 21 c9 20 31 3a 73 78  25 3d 36 34 30 3a 73 79  |.!. 1:sx%=640:sy|
0000c060  25 3d 32 30 30 3a 70 6c  61 6e 65 73 25 3d 32 0d  |%=200:planes%=2.|
0000c070  3b 92 21 c9 20 32 3a 73  78 25 3d 36 34 30 3a 73  |;.!. 2:sx%=640:s|
0000c080  79 25 3d 34 30 30 3a 70  6c 61 6e 65 73 25 3d 31  |y%=400:planes%=1|
0000c090  0d 3b 9c 3f 7f 20 85 34  32 2c 22 43 68 61 6e 67  |.;.?. .42,"Chang|
0000c0a0  65 46 53 49 20 6b 6e 6f  77 73 20 6e 6f 74 68 69  |eFSI knows nothi|
0000c0b0  6e 67 20 6f 66 20 22 2b  c3 43 25 2b 22 20 74 79  |ng of "+.C%+" ty|
0000c0c0  70 65 20 44 65 67 61 73  20 66 69 6c 65 73 22 0d  |pe Degas files".|
0000c0d0  3b a6 05 cb 0d 3b b0 5d  e3 49 25 3d 30 b8 28 31  |;....;.].I%=0.(1|
0000c0e0  3c 3c 69 6e 70 75 74 29  2d 31 3a 44 25 3d a4 62  |<<input)-1:D%=.b|
0000c0f0  65 48 57 3a 72 25 28 49  25 29 3d 28 44 25 3e 3e  |eHW:r%(I%)=(D%>>|
0000c100  38 80 37 29 2f 37 2a 46  3a 67 25 28 49 25 29 3d  |8.7)/7*F:g%(I%)=|
0000c110  28 44 25 3e 3e 34 80 37  29 2f 37 2a 46 3a 62 25  |(D%>>4.7)/7*F:b%|
0000c120  28 49 25 29 3d 28 44 25  80 37 29 2f 37 2a 46 3a  |(I%)=(D%.7)/7*F:|
0000c130  ed 0d 3b ba 3c 63 61 63  68 65 25 3d b9 3a 70 6c  |..;.<cache%=.:pl|
0000c140  61 6e 61 72 25 3d b9 3a  6d 61 73 6b 69 6e 67 25  |anar%=.:masking%|
0000c150  3d a3 3a 73 74 25 3d 33  34 3a cf 23 63 25 3d 33  |=.:st%=34:.#c%=3|
0000c160  34 3a 72 24 3d 22 46 4e  31 36 30 30 22 0d 3b c4  |4:r$="FN1600".;.|
0000c170  48 72 6f 77 62 79 74 65  73 25 3d 28 73 78 25 2b  |Hrowbytes%=(sx%+|
0000c180  31 35 3e 3e 34 29 3c 3c  31 3a 70 6c 62 79 74 65  |15>>4)<<1:plbyte|
0000c190  73 25 3d 72 6f 77 62 79  74 65 73 25 2a 70 6c 61  |s%=rowbytes%*pla|
0000c1a0  6e 65 73 25 3a 70 62 75  66 66 25 3d a4 64 69 6d  |nes%:pbuff%=.dim|
0000c1b0  28 73 78 25 29 0d 3b ce  6a e7 43 25 80 31 32 38  |(sx%).;.j.C%.128|
0000c1c0  20 72 24 3d 22 46 4e 31  36 30 31 22 3a 66 6c 61  | r$="FN1601":fla|
0000c1d0  67 3d 31 36 30 30 3a 63  61 63 68 65 62 79 74 65  |g=1600:cachebyte|
0000c1e0  73 25 3d b9 3a 70 6c 62  75 66 66 25 3d a4 64 69  |s%=.:plbuff%=.di|
0000c1f0  6d 28 70 6c 62 79 74 65  73 25 29 20 8b 72 65 61  |m(plbytes%) .rea|
0000c200  6c 72 6f 77 62 79 74 65  73 25 3d 32 3a 72 6f 77  |lrowbytes%=2:row|
0000c210  62 79 74 65 73 25 3d 70  6c 62 79 74 65 73 25 0d  |bytes%=plbytes%.|
0000c220  3b d8 43 69 6e 66 6f 24  3d 22 44 65 67 61 73 20  |;.Cinfo$="Degas |
0000c230  66 69 6c 65 20 22 2b c3  73 78 25 2b 22 20 62 79  |file "+.sx%+" by|
0000c240  20 22 2b c3 73 79 25 2b  22 20 70 69 78 65 6c 73  | "+.sy%+" pixels|
0000c250  2c 20 22 2b a4 62 69 74  73 28 70 6c 61 6e 65 73  |, "+.bits(planes|
0000c260  25 29 0d 3b e2 0a c9 20  32 37 30 30 0d 3b ec 1a  |%).;... 2700.;..|
0000c270  cf 23 63 25 3d 34 3a 73  78 25 3d a4 48 57 3a 73  |.#c%=4:sx%=.HW:s|
0000c280  79 25 3d a4 48 57 0d 3b  f6 0c c8 8e 20 a4 48 57  |y%=.HW.;.... .HW|
0000c290  20 ca 0d 3c 00 32 c9 20  26 41 46 3a 72 6f 77 62  | ..<.2. &AF:rowb|
0000c2a0  79 74 65 73 25 3d 73 78  25 3a 63 61 63 68 65 25  |ytes%=sx%:cache%|
0000c2b0  3d b9 3a 72 24 3d 22 46  4e 38 22 3a 73 74 25 3d  |=.:r$="FN8":st%=|
0000c2c0  26 33 30 41 0d 3c 0a 52  7f 20 d9 23 63 25 3a 85  |&30A.<.R. .#c%:.|
0000c2d0  20 34 32 2c 22 50 61 6e  69 63 20 69 6e 20 43 6f  | 42,"Panic in Co|
0000c2e0  6c 6f 52 49 58 20 72 65  61 64 69 6e 67 20 2d 20  |loRIX reading - |
0000c2f0  43 68 61 6e 67 65 46 53  49 20 6c 61 72 67 65 6c  |ChangeFSI largel|
0000c300  79 20 69 67 6e 6f 72 61  6e 74 20 6f 66 20 66 6f  |y ignorant of fo|
0000c310  72 6d 61 74 21 22 0d 3c  14 05 cb 0d 3c 1e 13 e3  |rmat!".<....<...|
0000c320  43 25 3d 30 b8 32 5e 69  6e 70 75 74 2d 31 0d 3c  |C%=0.2^input-1.<|
0000c330  28 36 72 25 28 43 25 29  3d 9a 23 63 25 2f 36 33  |(6r%(C%)=.#c%/63|
0000c340  2a 46 3a 67 25 28 43 25  29 3d 9a 23 63 25 2f 36  |*F:g%(C%)=.#c%/6|
0000c350  33 2a 46 3a 62 25 28 43  25 29 3d 9a 23 63 25 2f  |3*F:b%(C%)=.#c%/|
0000c360  36 33 2a 46 0d 3c 32 05  ed 0d 3c 3c 0c cf 23 63  |63*F.<2...<<..#c|
0000c370  25 3d 73 74 25 0d 3c 46  43 69 6e 66 6f 24 3d 22  |%=st%.<FCinfo$="|
0000c380  43 6f 6c 6f 52 49 58 20  66 69 6c 65 20 22 2b c3  |ColoRIX file "+.|
0000c390  73 78 25 2b 22 20 62 79  20 22 2b c3 73 79 25 2b  |sx%+" by "+.sy%+|
0000c3a0  22 20 70 69 78 65 6c 73  2c 20 22 2b a4 62 69 74  |" pixels, "+.bit|
0000c3b0  73 28 69 6e 70 75 74 29  0d 3c 50 0a c9 20 32 38  |s(input).<P.. 28|
0000c3c0  30 30 0d 3c 5a 21 cf 23  63 25 3d 30 3a f5 20 73  |00.<Z!.#c%=0:. s|
0000c3d0  24 3d a4 66 69 74 73 3a  c8 8e 20 c0 73 24 2c 38  |$=.fits:.. .s$,8|
0000c3e0  29 20 ca 0d 3c 64 51 c9  20 22 53 49 4d 50 4c 45  |) ..<dQ. "SIMPLE|
0000c3f0  20 20 22 3a e7 c1 73 24  2c 33 30 2c 31 29 3c 3e  |  ":..s$,30,1)<>|
0000c400  22 54 22 20 85 34 32 2c  22 43 68 61 6e 67 65 46  |"T" .42,"ChangeF|
0000c410  53 49 20 63 61 6e 20 6f  6e 6c 79 20 72 65 61 64  |SI can only read|
0000c420  20 53 69 6d 70 6c 65 20  46 49 54 53 20 66 6f 72  | Simple FITS for|
0000c430  6d 61 74 22 0d 3c 6e 1f  c9 20 22 42 49 54 50 49  |mat".<n.. "BITPI|
0000c440  58 20 20 22 3a 69 6e 70  75 74 3d bb c1 73 24 2c  |X  ":input=..s$,|
0000c450  31 30 29 0d 3c 78 4a c9  20 22 4e 41 58 49 53 20  |10).<xJ. "NAXIS |
0000c460  20 20 22 3a e7 bb c1 73  24 2c 31 30 29 3c 3e 32  |  ":...s$,10)<>2|
0000c470  20 85 34 32 2c 22 43 68  61 6e 67 65 46 53 49 20  | .42,"ChangeFSI |
0000c480  63 61 6e 20 6f 6e 6c 79  20 72 65 61 64 20 32 64  |can only read 2d|
0000c490  20 46 49 54 53 20 69 6d  61 67 65 73 22 0d 3c 82  | FITS images".<.|
0000c4a0  1d c9 20 22 4e 41 58 49  53 31 20 20 22 3a 73 78  |.. "NAXIS1  ":sx|
0000c4b0  25 3d bb c1 73 24 2c 31  30 29 0d 3c 8c 1d c9 20  |%=..s$,10).<... |
0000c4c0  22 4e 41 58 49 53 32 20  20 22 3a 73 79 25 3d bb  |"NAXIS2  ":sy%=.|
0000c4d0  c1 73 24 2c 31 30 29 0d  3c 96 10 c9 20 22 45 4e  |.s$,10).<... "EN|
0000c4e0  44 20 20 20 20 20 22 0d  3c a0 27 7f 20 e7 69 6e  |D     ".<.'. .in|
0000c4f0  66 6f 25 20 f1 22 49 67  6e 6f 72 69 6e 67 20 46  |fo% ."Ignoring F|
0000c500  49 54 53 20 72 65 63 6f  72 64 20 22 73 24 0d 3c  |ITS record "s$.<|
0000c510  aa 05 cb 0d 3c b4 16 fd  c0 73 24 2c 38 29 3d 22  |....<....s$,8)="|
0000c520  45 4e 44 20 20 20 20 20  22 0d 3c be 2e 73 74 25  |END     ".<..st%|
0000c530  3d 28 8f 23 63 25 81 32  38 38 30 20 2b 20 31 29  |=(.#c%.2880 + 1)|
0000c540  2a 32 38 38 30 3a 63 61  63 68 65 25 3d b9 3a cf  |*2880:cache%=.:.|
0000c550  23 63 25 3d 73 74 25 0d  3c c8 0e c8 8e 20 69 6e  |#c%=st%.<.... in|
0000c560  70 75 74 20 ca 0d 3c d2  25 c9 20 38 3a 72 24 3d  |put ..<.%. 8:r$=|
0000c570  22 46 4e 38 22 3a 72 6f  77 62 79 74 65 73 25 3d  |"FN8":rowbytes%=|
0000c580  73 78 25 3a f2 6e 6f 70  61 6c 0d 3c dc 43 c9 20  |sx%:.nopal.<.C. |
0000c590  31 36 3a 72 6f 77 62 79  74 65 73 25 3d 32 2a 73  |16:rowbytes%=2*s|
0000c5a0  78 25 3a de 20 72 70 61  6c 25 28 32 35 35 29 2c  |x%:. rpal%(255),|
0000c5b0  67 70 61 6c 25 28 32 35  35 29 3a 73 74 65 70 32  |gpal%(255):step2|
0000c5c0  34 3d 32 3a 72 24 3d 22  46 4e 31 36 22 0d 3c e6  |4=2:r$="FN16".<.|
0000c5d0  0d e3 43 25 3d 30 b8 32  35 35 0d 3c f0 13 67 70  |..C%=0.255.<..gp|
0000c5e0  61 6c 25 28 43 25 29 3d  43 25 3c 3c 38 0d 3c fa  |al%(C%)=C%<<8.<.|
0000c5f0  10 72 70 61 6c 25 28 43  25 29 3d 43 25 0d 3d 04  |.rpal%(C%)=C%.=.|
0000c600  20 ed 3a 63 68 65 61 74  25 3d 30 3a e7 69 6e 76  | .:cheat%=0:.inv|
0000c610  65 72 74 25 20 63 68 65  61 74 25 3d 46 0d 3d 0e  |ert% cheat%=F.=.|
0000c620  65 e3 43 25 3d 30 b8 32  35 35 3a 72 25 28 43 25  |e.C%=0.255:r%(C%|
0000c630  29 3d 63 68 65 61 74 25  2b 43 25 2f 36 35 35 33  |)=cheat%+C%/6553|
0000c640  35 2a 46 3a 67 25 28 43  25 29 3d 28 28 43 25 82  |5*F:g%(C%)=((C%.|
0000c650  26 38 30 29 3c 3c 38 29  2f 36 35 35 33 35 2a 46  |&80)<<8)/65535*F|
0000c660  3a 62 25 28 43 25 29 3d  63 68 65 61 74 25 3a ed  |:b%(C%)=cheat%:.|
0000c670  3a 72 77 74 3d 31 3a 67  77 74 3d 31 3a 62 77 74  |:rwt=1:gwt=1:bwt|
0000c680  3d 31 0d 3d 18 51 7f 20  85 20 34 32 2c 22 43 68  |=1.=.Q. . 42,"Ch|
0000c690  61 6e 67 65 46 53 49 20  63 61 6e 27 74 20 72 65  |angeFSI can't re|
0000c6a0  61 64 20 61 20 46 49 54  53 20 69 6d 61 67 65 20  |ad a FITS image |
0000c6b0  77 69 74 68 20 74 68 69  73 20 6e 75 6d 62 65 72  |with this number|
0000c6c0  20 6f 66 20 62 69 74 73  20 70 65 72 20 70 69 78  | of bits per pix|
0000c6d0  65 6c 22 0d 3d 22 05 cb  0d 3d 2c 40 69 6e 66 6f  |el".="...=,@info|
0000c6e0  24 3d 22 46 49 54 53 20  66 69 6c 65 20 22 2b c3  |$="FITS file "+.|
0000c6f0  73 78 25 2b 22 20 62 79  20 22 2b c3 73 79 25 2b  |sx%+" by "+.sy%+|
0000c700  22 20 70 69 78 65 6c 73  2c 20 22 2b a4 62 69 74  |" pixels, "+.bit|
0000c710  73 28 69 6e 70 75 74 29  0d 3d 36 0a c9 20 32 39  |s(input).=6.. 29|
0000c720  30 30 0d 3d 40 3c cf 23  63 25 3d 34 3a 73 78 25  |00.=@<.#c%=4:sx%|
0000c730  3d a4 62 65 48 57 3a 73  79 25 3d a4 62 65 48 57  |=.beHW:sy%=.beHW|
0000c740  3a cf 23 63 25 3d 26 34  32 3a 69 6e 70 75 74 3d  |:.#c%=&42:input=|
0000c750  a4 62 65 48 57 3a 43 25  3d a4 62 65 48 57 0d 3d  |.beHW:C%=.beHW.=|
0000c760  4a 3d 72 6f 77 62 79 74  65 73 25 3d a4 62 65 48  |J=rowbytes%=.beH|
0000c770  57 3a 43 25 3d a4 62 65  57 3a 73 74 25 3d a4 62  |W:C%=.beW:st%=.b|
0000c780  65 57 3a cf 23 63 25 3d  73 74 25 3a 72 24 3d 22  |eW:.#c%=st%:r$="|
0000c790  46 4e 38 22 3a f2 6e 6f  70 61 6c 0d 3d 54 23 de  |FN8":.nopal.=T#.|
0000c7a0  20 72 70 61 6c 25 28 31  35 29 2c 67 70 61 6c 25  | rpal%(15),gpal%|
0000c7b0  28 31 35 29 2c 62 70 61  6c 25 28 31 35 29 0d 3d  |(15),bpal%(15).=|
0000c7c0  5e 49 72 70 61 6c 25 28  29 3d 26 65 36 2c 26 32  |^Irpal%()=&e6,&2|
0000c7d0  33 2c 26 65 36 2c 26 37  66 2c 26 31 37 2c 26 30  |3,&e6,&7f,&17,&0|
0000c7e0  30 2c 26 61 31 2c 26 34  35 2c 26 65 36 2c 26 34  |0,&a1,&45,&e6,&4|
0000c7f0  61 2c 26 65 36 2c 26 37  33 2c 26 36 65 2c 26 34  |a,&e6,&73,&6e,&4|
0000c800  37 2c 26 38 61 2c 30 0d  3d 68 49 67 70 61 6c 25  |7,&8a,0.=hIgpal%|
0000c810  28 29 3d 26 65 36 2c 26  37 38 2c 26 30 30 2c 26  |()=&e6,&78,&00,&|
0000c820  32 33 2c 26 61 31 2c 26  37 33 2c 26 32 65 2c 26  |23,&a1,&73,&2e,&|
0000c830  32 65 2c 26 63 38 2c 26  61 36 2c 26 37 35 2c 26  |2e,&c8,&a6,&75,&|
0000c840  34 30 2c 26 62 38 2c 26  37 38 2c 26 35 35 2c 30  |40,&b8,&78,&55,0|
0000c850  0d 3d 72 49 62 70 61 6c  25 28 29 3d 26 62 38 2c  |.=rIbpal%()=&b8,|
0000c860  26 65 36 2c 26 30 30 2c  26 61 31 2c 26 31 37 2c  |&e6,&00,&a1,&17,|
0000c870  26 32 65 2c 26 30 63 2c  26 32 65 2c 26 30 30 2c  |&2e,&0c,&2e,&00,|
0000c880  26 63 36 2c 26 30 30 2c  26 65 36 2c 26 30 30 2c  |&c6,&00,&e6,&00,|
0000c890  26 30 30 2c 26 30 30 2c  30 0d 3d 7c 6b e3 43 25  |&00,&00,0.=|k.C%|
0000c8a0  3d 26 38 30 b8 26 38 46  3a 72 25 28 43 25 29 3d  |=&80.&8F:r%(C%)=|
0000c8b0  72 70 61 6c 25 28 43 25  2d 26 38 30 29 2f 32 35  |rpal%(C%-&80)/25|
0000c8c0  35 2a 46 3a 67 25 28 43  25 29 3d 67 70 61 6c 25  |5*F:g%(C%)=gpal%|
0000c8d0  28 43 25 2d 26 38 30 29  2f 32 35 35 2a 46 3a 62  |(C%-&80)/255*F:b|
0000c8e0  25 28 43 25 29 3d 62 70  61 6c 25 28 43 25 2d 26  |%(C%)=bpal%(C%-&|
0000c8f0  38 30 29 2f 32 35 35 2a  46 3a ed 3a 63 61 63 68  |80)/255*F:.:cach|
0000c900  65 25 3d b9 0d 3d 86 46  69 6e 66 6f 24 3d 22 41  |e%=..=.Finfo$="A|
0000c910  70 6f 6c 6c 6f 20 47 50  52 20 66 69 6c 65 20 22  |pollo GPR file "|
0000c920  2b c3 73 78 25 2b 22 20  62 79 20 22 2b c3 73 79  |+.sx%+" by "+.sy|
0000c930  25 2b 22 20 70 69 78 65  6c 73 2c 20 22 2b a4 62  |%+" pixels, "+.b|
0000c940  69 74 73 28 69 6e 70 75  74 29 0d 3d 90 0a c9 20  |its(input).=... |
0000c950  33 30 30 30 0d 3d 9a 48  73 78 25 3d 37 32 30 3a  |3000.=.Hsx%=720:|
0000c960  73 79 25 3d a2 23 63 25  2f 31 34 34 30 3a de 20  |sy%=.#c%/1440:. |
0000c970  72 70 61 6c 25 28 32 35  35 29 2c 67 70 61 6c 25  |rpal%(255),gpal%|
0000c980  28 32 35 35 29 2c 62 70  61 6c 25 28 32 35 35 29  |(255),bpal%(255)|
0000c990  2c 74 61 62 6c 65 25 28  32 35 35 29 0d 3d ae 08  |,table%(255).=..|
0000c9a0  e7 a3 20 8c 0d 3d b8 0d  e3 43 25 3d 30 b8 32 35  |.. ..=...C%=0.25|
0000c9b0  35 0d 3d c2 1c 74 61 62  6c 65 25 28 43 25 29 3d  |5.=..table%(C%)=|
0000c9c0  28 43 25 2d 31 36 29 2f  32 31 39 2a 46 0d 3d cc  |(C%-16)/219*F.=.|
0000c9d0  3e 72 25 28 43 25 29 3d  28 43 25 2d 31 32 38 29  |>r%(C%)=(C%-128)|
0000c9e0  2f 31 38 36 2a 30 2e 36  32 34 2a 46 3a 72 70 61  |/186*0.624*F:rpa|
0000c9f0  6c 25 28 43 25 29 3d 28  43 25 2d 31 32 38 29 2f  |l%(C%)=(C%-128)/|
0000ca00  31 36 30 2a 30 2e 39 35  32 2a 46 0d 3d d6 3f 67  |160*0.952*F.=.?g|
0000ca10  25 28 43 25 29 3d 2d 28  43 25 2d 31 32 38 29 2f  |%(C%)=-(C%-128)/|
0000ca20  31 38 36 2a 30 2e 36 34  2a 46 3a 67 70 61 6c 25  |186*0.64*F:gpal%|
0000ca30  28 43 25 29 3d 2d 28 43  25 2d 31 32 38 29 2f 31  |(C%)=-(C%-128)/1|
0000ca40  36 30 2a 30 2e 32 37 37  2a 46 0d 3d e0 3d 62 25  |60*0.277*F.=.=b%|
0000ca50  28 43 25 29 3d 28 43 25  2d 31 32 38 29 2f 31 38  |(C%)=(C%-128)/18|
0000ca60  36 2a 31 2e 37 33 2a 46  3a 62 70 61 6c 25 28 43  |6*1.73*F:bpal%(C|
0000ca70  25 29 3d 2d 28 43 25 2d  31 32 38 29 2f 31 36 30  |%)=-(C%-128)/160|
0000ca80  2a 31 2e 31 31 2a 46 0d  3d ea 05 ed 0d 3d f4 05  |*1.11*F.=....=..|
0000ca90  cc 0d 3e 08 0d e3 43 25  3d 30 b8 32 35 35 0d 3e  |..>...C%=0.255.>|
0000caa0  12 1c 74 61 62 6c 65 25  28 43 25 29 3d 28 43 25  |..table%(C%)=(C%|
0000cab0  2d 31 36 29 2f 32 31 39  2a 46 0d 3e 1c 35 72 25  |-16)/219*F.>.5r%|
0000cac0  28 43 25 29 3d a8 28 28  43 25 2d 31 32 38 29 2f  |(C%)=.((C%-128)/|
0000cad0  31 36 30 2a 46 29 3a 62  25 28 43 25 29 3d a8 28  |160*F):b%(C%)=.(|
0000cae0  28 43 25 2d 31 32 38 29  2f 31 32 36 2a 46 29 0d  |(C%-128)/126*F).|
0000caf0  3e 26 4a 67 25 28 43 25  29 3d a8 28 2d 28 43 25  |>&Jg%(C%)=.(-(C%|
0000cb00  2d 31 32 38 29 2f 31 36  30 2a 72 77 74 2f 67 77  |-128)/160*rwt/gw|
0000cb10  74 2a 46 29 3a 67 70 61  6c 25 28 43 25 29 3d a8  |t*F):gpal%(C%)=.|
0000cb20  28 2d 28 43 25 2d 31 32  38 29 2f 31 32 36 2a 62  |(-(C%-128)/126*b|
0000cb30  77 74 2f 67 77 74 2a 46  29 0d 3e 30 05 ed 0d 3e  |wt/gwt*F).>0...>|
0000cb40  3a 05 cd 0d 3e 44 3c 74  61 62 6c 65 25 28 29 3d  |:...>D<table%()=|
0000cb50  2d 31 2c 2d 31 2c 2d 31  2c 2d 31 2c 2d 31 2c 2d  |-1,-1,-1,-1,-1,-|
0000cb60  31 2c 2d 31 2c 2d 31 2c  2d 31 2c 2d 31 2c 2d 31  |1,-1,-1,-1,-1,-1|
0000cb70  2c 2d 31 2c 2d 31 2c 2d  31 2c 2d 31 2c 2d 31 0d  |,-1,-1,-1,-1,-1.|
0000cb80  3e 4e 3a 73 74 25 3d 30  3a cf 23 63 25 3d 30 3a  |>N:st%=0:.#c%=0:|
0000cb90  63 61 63 68 65 25 3d b9  3a 72 6f 77 62 79 74 65  |cache%=.:rowbyte|
0000cba0  73 25 3d 31 34 34 30 3a  69 6e 70 75 74 3d 34 32  |s%=1440:input=42|
0000cbb0  32 3a 67 61 6d 6d 61 3d  31 0d 3e 58 19 e7 73 63  |2:gamma=1.>X..sc|
0000cbc0  61 6c 65 25 20 79 6d 75  6c 25 3d 79 6d 75 6c 25  |ale% ymul%=ymul%|
0000cbd0  2a 32 0d 3e 62 3a 69 6e  66 6f 24 3d 22 43 43 49  |*2.>b:info$="CCI|
0000cbe0  52 36 30 31 20 34 3a 32  3a 32 20 66 69 6c 65 20  |R601 4:2:2 file |
0000cbf0  22 2b c3 73 78 25 2b 22  20 62 79 20 22 2b c3 73  |"+.sx%+" by "+.s|
0000cc00  79 25 2b 22 20 70 69 78  65 6c 73 22 0d 3e 6c 0a  |y%+" pixels".>l.|
0000cc10  c9 20 33 31 30 30 0d 3e  76 24 71 75 61 6e 74 25  |. 3100.>v$quant%|
0000cc20  3d 38 3a cf 23 63 25 3d  30 3a 61 24 3d be 23 63  |=8:.#c%=0:a$=.#c|
0000cc30  25 3a 73 74 25 3d 8f 23  63 25 0d 3e 80 20 73 78  |%:st%=.#c%.>. sx|
0000cc40  25 3d bb 61 24 3a 73 79  25 3d bb 28 c1 61 24 2c  |%=.a$:sy%=.(.a$,|
0000cc50  a7 61 24 2c 22 20 22 29  29 29 0d 3e 8a 2c f2 6e  |.a$," "))).>.,.n|
0000cc60  6f 70 61 6c 3a 69 6e 70  75 74 3d 32 34 3a 73 74  |opal:input=24:st|
0000cc70  65 70 32 34 3d 33 3a 72  6f 77 62 79 74 65 73 25  |ep24=3:rowbytes%|
0000cc80  3d 73 78 25 2a 33 0d 3e  94 34 72 62 6f 25 3d 30  |=sx%*3.>.4rbo%=0|
0000cc90  3a 67 62 6f 25 3d 31 3a  62 62 6f 25 3d 32 3a 63  |:gbo%=1:bbo%=2:c|
0000cca0  61 63 68 65 25 3d b9 3a  66 6c 61 67 3d 37 30 30  |ache%=.:flag=700|
0000ccb0  3a 72 24 3d 22 46 4e 32  34 22 0d 3e 9e 51 69 6e  |:r$="FN24".>.Qin|
0000ccc0  66 6f 24 3d 22 21 52 61  79 53 68 61 64 65 20 27  |fo$="!RayShade '|
0000ccd0  52 47 42 27 20 69 6d 61  67 65 2c 20 22 2b c3 73  |RGB' image, "+.s|
0000cce0  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
0000ccf0  20 70 69 78 65 6c 73 2c  20 32 34 20 62 69 74 73  | pixels, 24 bits|
0000cd00  20 70 65 72 20 70 69 78  65 6c 22 0d 3e a8 0a c9  | per pixel".>...|
0000cd10  20 33 32 30 30 0d 3e b2  19 71 75 61 6e 74 25 3d  | 3200.>..quant%=|
0000cd20  38 3a cf 23 63 25 3d 30  3a 73 74 25 3d 30 0d 3e  |8:.#c%=0:st%=0.>|
0000cd30  bc 1a 73 78 25 3d bb c1  73 24 2c a7 73 24 2c 22  |..sx%=..s$,.s$,"|
0000cd40  5f 22 29 2b 31 2c 31 29  0d 3e c6 0c c8 8e 20 73  |_")+1,1).>.... s|
0000cd50  78 25 20 ca 0d 3e d0 17  c9 20 35 3a 73 78 25 3d  |x% ..>... 5:sx%=|
0000cd60  37 36 38 3a 73 79 25 3d  35 31 32 0d 3e da 19 c9  |768:sy%=512.>...|
0000cd70  20 32 3a 73 78 25 3d 33  30 37 32 3a 73 79 25 3d  | 2:sx%=3072:sy%=|
0000cd80  32 30 34 38 0d 3e e4 19  c9 20 31 3a 73 78 25 3d  |2048.>... 1:sx%=|
0000cd90  31 35 33 36 3a 73 79 25  3d 31 30 32 34 0d 3e ee  |1536:sy%=1024.>.|
0000cda0  05 cb 0d 3e f8 2c f2 6e  6f 70 61 6c 3a 69 6e 70  |...>.,.nopal:inp|
0000cdb0  75 74 3d 32 34 3a 73 74  65 70 32 34 3d 33 3a 72  |ut=24:step24=3:r|
0000cdc0  6f 77 62 79 74 65 73 25  3d 73 78 25 2a 33 0d 3f  |owbytes%=sx%*3.?|
0000cdd0  02 34 72 62 6f 25 3d 30  3a 67 62 6f 25 3d 31 3a  |.4rbo%=0:gbo%=1:|
0000cde0  62 62 6f 25 3d 32 3a 63  61 63 68 65 25 3d b9 3a  |bbo%=2:cache%=.:|
0000cdf0  66 6c 61 67 3d 37 30 30  3a 72 24 3d 22 46 4e 32  |flag=700:r$="FN2|
0000ce00  34 22 0d 3f 0c 4c 69 6e  66 6f 24 3d 22 4b 6f 64  |4".?.Linfo$="Kod|
0000ce10  61 6b 20 2f 52 47 42 20  69 6d 61 67 65 2c 20 22  |ak /RGB image, "|
0000ce20  2b c3 73 78 25 2b 22 20  62 79 20 22 2b c3 73 79  |+.sx%+" by "+.sy|
0000ce30  25 2b 22 20 70 69 78 65  6c 73 2c 20 32 34 20 62  |%+" pixels, 24 b|
0000ce40  69 74 73 20 70 65 72 20  70 69 78 65 6c 22 0d 3f  |its per pixel".?|
0000ce50  16 0a c9 20 33 33 30 30  0d 3f 20 1a cf 23 63 25  |... 3300.? ..#c%|
0000ce60  3d 30 3a 69 6e 70 75 74  3d bb c1 a4 47 45 54 2c  |=0:input=...GET,|
0000ce70  32 29 0d 3f 2a 37 73 24  3d a4 47 45 54 3a 73 78  |2).?*7s$=.GET:sx|
0000ce80  25 3d bb 73 24 3a 73 79  25 3d bb c1 73 24 2c a7  |%=.s$:sy%=..s$,.|
0000ce90  73 24 2c 22 20 22 29 29  3a e7 73 79 25 3d 30 20  |s$," ")):.sy%=0 |
0000cea0  73 79 25 3d bb a4 47 45  54 0d 3f 34 17 63 61 63  |sy%=..GET.?4.cac|
0000ceb0  68 65 25 3d b9 3a c8 8e  20 69 6e 70 75 74 20 ca  |he%=.:.. input .|
0000cec0  0d 3f 3e 44 c9 20 34 3a  69 6e 70 75 74 3d 31 3a  |.?>D. 4:input=1:|
0000ced0  72 24 3d 22 46 4e 38 22  3a 72 25 28 30 29 3d 46  |r$="FN8":r%(0)=F|
0000cee0  3a 67 25 28 29 3d 72 25  28 29 3a 62 25 28 29 3d  |:g%()=r%():b%()=|
0000cef0  72 25 28 29 3a 62 69 67  65 6e 64 69 61 6e 62 69  |r%():bigendianbi|
0000cf00  74 73 3d b9 0d 3f 48 17  72 6f 77 62 79 74 65 73  |ts=..?H.rowbytes|
0000cf10  25 3d 28 73 78 25 2b 37  29 81 38 0d 3f 52 21 c9  |%=(sx%+7).8.?R!.|
0000cf20  20 35 3a 69 6e 70 75 74  3d 38 3a 72 24 3d 22 46  | 5:input=8:r$="F|
0000cf30  4e 38 22 3a 45 25 3d bb  a4 47 45 54 0d 3f 5c 31  |N8":E%=..GET.?\1|
0000cf40  e3 43 25 3d 30 b8 45 25  3a 72 25 28 43 25 29 3d  |.C%=0.E%:r%(C%)=|
0000cf50  43 25 2f 45 25 2a 46 3a  ed 3a 67 25 28 29 3d 72  |C%/E%*F:.:g%()=r|
0000cf60  25 28 29 3a 62 25 28 29  3d 72 25 28 29 0d 3f 66  |%():b%()=r%().?f|
0000cf70  11 72 6f 77 62 79 74 65  73 25 3d 73 78 25 0d 3f  |.rowbytes%=sx%.?|
0000cf80  70 41 c9 20 36 3a 69 6e  70 75 74 3d 32 34 3a 72  |pA. 6:input=24:r|
0000cf90  24 3d 22 46 4e 32 34 22  3a 45 25 3d bb a4 47 45  |$="FN24":E%=..GE|
0000cfa0  54 3a 73 74 65 70 32 34  3d 33 3a 72 62 6f 25 3d  |T:step24=3:rbo%=|
0000cfb0  30 3a 67 62 6f 25 3d 31  3a 62 62 6f 25 3d 32 0d  |0:gbo%=1:bbo%=2.|
0000cfc0  3f 7a 31 e3 43 25 3d 30  b8 45 25 3a 72 25 28 43  |?z1.C%=0.E%:r%(C|
0000cfd0  25 29 3d 43 25 2f 45 25  2a 46 3a ed 3a 67 25 28  |%)=C%/E%*F:.:g%(|
0000cfe0  29 3d 72 25 28 29 3a 62  25 28 29 3d 72 25 28 29  |)=r%():b%()=r%()|
0000cff0  0d 3f 84 13 72 6f 77 62  79 74 65 73 25 3d 73 78  |.?..rowbytes%=sx|
0000d000  25 2a 33 0d 3f 8e 05 cb  0d 3f 98 15 73 74 25 3d  |%*3.?....?..st%=|
0000d010  8f 23 63 25 3a 66 6c 61  67 3d 37 30 30 0d 3f a2  |.#c%:flag=700.?.|
0000d020  42 69 6e 66 6f 24 2b 3d  22 70 62 6d 20 69 6d 61  |Binfo$+="pbm ima|
0000d030  67 65 2c 20 22 2b c3 73  78 25 2b 22 20 62 79 20  |ge, "+.sx%+" by |
0000d040  22 2b c3 73 79 25 2b 22  20 70 69 78 65 6c 73 2c  |"+.sy%+" pixels,|
0000d050  20 22 2b a4 62 69 74 73  28 69 6e 70 75 74 29 0d  | "+.bits(input).|
0000d060  3f ac 24 dd 20 a4 47 45  54 20 f5 73 24 3d be 23  |?.$. .GET .s$=.#|
0000d070  63 25 3a fd c0 73 24 2c  31 29 3c 3e 22 23 22 3a  |c%:..s$,1)<>"#":|
0000d080  3d 73 24 0d 3f b6 0a c9  20 33 34 30 30 0d 3f c0  |=s$.?... 3400.?.|
0000d090  24 cf 23 63 25 3d 30 3a  73 24 3d a4 47 45 54 3a  |$.#c%=0:s$=.GET:|
0000d0a0  69 6e 70 75 74 3d 31 36  3a 71 75 61 6e 74 25 3d  |input=16:quant%=|
0000d0b0  35 0d 3f ca 2e 73 24 3d  a4 47 45 54 3a 73 78 25  |5.?..s$=.GET:sx%|
0000d0c0  3d bb 73 24 3a 73 79 25  3d bb c1 73 24 2c a7 73  |=.s$:sy%=..s$,.s|
0000d0d0  24 2c 22 20 22 29 29 3a  73 24 3d a4 47 45 54 0d  |$," ")):s$=.GET.|
0000d0e0  3f d4 2d de 20 72 70 61  6c 25 28 32 35 35 29 2c  |?.-. rpal%(255),|
0000d0f0  67 70 61 6c 25 28 32 35  35 29 3a 69 6e 70 75 74  |gpal%(255):input|
0000d100  3d 31 36 3a 73 74 65 70  32 34 3d 32 0d 3f de 0d  |=16:step24=2.?..|
0000d110  e3 43 25 3d 30 b8 32 35  35 0d 3f e8 22 67 70 61  |.C%=0.255.?."gpa|
0000d120  6c 25 28 43 25 29 3d 28  43 25 3e 3e 35 29 3c 3c  |l%(C%)=(C%>>5)<<|
0000d130  38 20 84 20 28 43 25 80  33 31 29 0d 3f f2 2b 72  |8 . (C%.31).?.+r|
0000d140  70 61 6c 25 28 43 25 29  3d 28 28 43 25 3e 3e 32  |pal%(C%)=((C%>>2|
0000d150  29 80 33 31 29 3c 3c 31  36 20 84 20 28 43 25 80  |).31)<<16 . (C%.|
0000d160  33 29 3c 3c 31 31 0d 3f  fc 05 ed 0d 40 06 16 63  |3)<<11.?....@..c|
0000d170  61 63 68 65 25 3d b9 3a  72 24 3d 22 46 4e 31 36  |ache%=.:r$="FN16|
0000d180  22 0d 40 10 31 e3 43 25  3d 30 b8 33 31 3a 72 25  |".@.1.C%=0.31:r%|
0000d190  28 43 25 29 3d 43 25 2f  33 31 2a 46 3a ed 3a 67  |(C%)=C%/31*F:.:g|
0000d1a0  25 28 29 3d 72 25 28 29  3a 62 25 28 29 3d 72 25  |%()=r%():b%()=r%|
0000d1b0  28 29 0d 40 1a 25 72 6f  77 62 79 74 65 73 25 3d  |().@.%rowbytes%=|
0000d1c0  73 78 25 2a 32 3a 73 74  25 3d 8f 23 63 25 3a 66  |sx%*2:st%=.#c%:f|
0000d1d0  6c 61 67 3d 37 30 30 0d  40 24 41 69 6e 66 6f 24  |lag=700.@$Ainfo$|
0000d1e0  3d 22 70 31 35 20 69 6d  61 67 65 2c 20 22 2b c3  |="p15 image, "+.|
0000d1f0  73 78 25 2b 22 20 62 79  20 22 2b c3 73 79 25 2b  |sx%+" by "+.sy%+|
0000d200  22 20 70 69 78 65 6c 73  2c 20 22 2b a4 62 69 74  |" pixels, "+.bit|
0000d210  73 28 69 6e 70 75 74 29  0d 40 2e 0a c9 20 33 34  |s(input).@... 34|
0000d220  35 30 0d 40 38 15 cf 23  63 25 3d 30 3a 69 6e 66  |50.@8..#c%=0:inf|
0000d230  6f 24 3d a4 47 45 54 0d  40 42 33 79 62 69 74 73  |o$=.GET.@B3ybits|
0000d240  25 3d bb c1 69 6e 66 6f  24 2c a7 69 6e 66 6f 24  |%=..info$,.info$|
0000d250  2c 22 20 22 29 29 3a 79  6d 61 78 25 3d 28 31 3c  |," ")):ymax%=(1<|
0000d260  3c 79 62 69 74 73 25 29  2d 31 0d 40 4c 3a 75 62  |<ybits%)-1.@L:ub|
0000d270  69 74 73 25 3d bb c1 69  6e 66 6f 24 2c a7 69 6e  |its%=..info$,.in|
0000d280  66 6f 24 2c 22 59 20 22  29 2b 31 29 3a 75 6d 61  |fo$,"Y ")+1):uma|
0000d290  78 25 3d 28 31 3c 3c 28  75 62 69 74 73 25 2d 31  |x%=(1<<(ubits%-1|
0000d2a0  29 29 2d 31 0d 40 56 3a  76 62 69 74 73 25 3d bb  |))-1.@V:vbits%=.|
0000d2b0  c1 69 6e 66 6f 24 2c a7  69 6e 66 6f 24 2c 22 55  |.info$,.info$,"U|
0000d2c0  20 22 29 2b 31 29 3a 76  6d 61 78 25 3d 28 31 3c  | ")+1):vmax%=(1<|
0000d2d0  3c 28 76 62 69 74 73 25  2d 31 29 29 2d 31 0d 40  |<(vbits%-1))-1.@|
0000d2e0  60 26 73 24 3d a4 47 45  54 3a 73 78 25 3d bb 73  |`&s$=.GET:sx%=.s|
0000d2f0  24 3a 73 79 25 3d bb c1  73 24 2c a7 73 24 2c 22  |$:sy%=..s$,.s$,"|
0000d300  20 22 29 29 0d 40 6a 32  de 20 72 70 61 6c 25 28  | ")).@j2. rpal%(|
0000d310  32 35 35 29 2c 67 70 61  6c 25 28 32 35 35 29 2c  |255),gpal%(255),|
0000d320  62 70 61 6c 25 28 32 35  35 29 2c 74 61 62 6c 65  |bpal%(255),table|
0000d330  25 28 32 35 35 29 0d 40  74 27 e3 43 25 3d 30 b8  |%(255).@t'.C%=0.|
0000d340  79 6d 61 78 25 3a 74 61  62 6c 65 25 28 43 25 29  |ymax%:table%(C%)|
0000d350  3d 43 25 2f 79 6d 61 78  25 2a 46 3a ed 0d 40 7e  |=C%/ymax%*F:..@~|
0000d360  14 44 25 3d 28 31 3c 3c  75 62 69 74 73 25 29 2d  |.D%=(1<<ubits%)-|
0000d370  31 0d 40 88 2d e3 43 25  3d 30 b8 44 25 3a 64 3d  |1.@.-.C%=0.D%:d=|
0000d380  43 25 2f 75 6d 61 78 25  3a e7 64 3e 31 20 64 3d  |C%/umax%:.d>1 d=|
0000d390  2d 28 44 25 2d 43 25 29  2f 75 6d 61 78 25 0d 40  |-(D%-C%)/umax%.@|
0000d3a0  92 3b 62 25 28 43 25 29  3d a8 28 64 2a 28 31 2d  |.;b%(C%)=.(d*(1-|
0000d3b0  62 77 74 29 2a 46 29 3a  67 70 61 6c 25 28 43 25  |bwt)*F):gpal%(C%|
0000d3c0  29 3d a8 28 2d 64 2a 28  31 2d 62 77 74 29 2a 62  |)=.(-d*(1-bwt)*b|
0000d3d0  77 74 2f 67 77 74 2a 46  29 0d 40 9c 05 ed 0d 40  |wt/gwt*F).@....@|
0000d3e0  a6 14 44 25 3d 28 31 3c  3c 76 62 69 74 73 25 29  |..D%=(1<<vbits%)|
0000d3f0  2d 31 0d 40 b0 2d e3 43  25 3d 30 b8 44 25 3a 64  |-1.@.-.C%=0.D%:d|
0000d400  3d 43 25 2f 76 6d 61 78  25 3a e7 64 3e 31 20 64  |=C%/vmax%:.d>1 d|
0000d410  3d 2d 28 44 25 2d 43 25  29 2f 76 6d 61 78 25 0d  |=-(D%-C%)/vmax%.|
0000d420  40 ba 38 72 25 28 43 25  29 3d a8 28 64 2a 28 31  |@.8r%(C%)=.(d*(1|
0000d430  2d 72 77 74 29 2a 46 29  3a 67 25 28 43 25 29 3d  |-rwt)*F):g%(C%)=|
0000d440  a8 28 2d 64 2a 28 31 2d  72 77 74 29 2a 72 77 74  |.(-d*(1-rwt)*rwt|
0000d450  2f 67 77 74 2a 46 29 0d  40 c4 05 ed 0d 40 ce 3b  |/gwt*F).@....@.;|
0000d460  72 6f 77 62 79 74 65 73  25 3d 73 78 25 2a 32 3a  |rowbytes%=sx%*2:|
0000d470  73 74 25 3d 8f 23 63 25  3a 63 61 63 68 65 25 3d  |st%=.#c%:cache%=|
0000d480  b9 3a 72 24 3d 22 46 4e  32 32 35 30 22 3a 69 6e  |.:r$="FN2250":in|
0000d490  70 75 74 3d 35 35 35 0d  40 d8 2a 69 6e 66 6f 24  |put=555.@.*info$|
0000d4a0  2b 3d 22 2c 20 22 2b c3  73 78 25 2b 22 20 62 79  |+=", "+.sx%+" by|
0000d4b0  20 22 2b c3 73 79 25 2b  22 20 70 69 78 65 6c 73  | "+.sy%+" pixels|
0000d4c0  22 0d 40 e2 0a c9 20 33  35 30 30 0d 40 ec 41 71  |".@... 3500.@.Aq|
0000d4d0  75 61 6e 74 25 3d 31 3a  cf 23 63 25 3d 36 3a 45  |uant%=1:.#c%=6:E|
0000d4e0  25 3d a4 48 57 3a 73 78  25 3d a4 48 57 3a 73 78  |%=.HW:sx%=.HW:sx|
0000d4f0  25 3d a4 48 57 3a 73 79  25 3d a4 48 57 3a 73 74  |%=.HW:sy%=.HW:st|
0000d500  25 3d a4 48 57 3a 73 74  25 3d a4 57 0d 40 f6 34  |%=.HW:st%=.W.@.4|
0000d510  72 6f 77 62 79 74 65 73  25 3d 73 78 25 2f 38 2b  |rowbytes%=sx%/8+|
0000d520  31 80 ac 31 3a 63 61 63  68 65 25 3d b9 3a 73 74  |1..1:cache%=.:st|
0000d530  25 2b 3d 8f 23 63 25 3a  cf 23 63 25 3d 73 74 25  |%+=.#c%:.#c%=st%|
0000d540  0d 41 00 0b c8 8e 20 45  25 20 ca 0d 41 0a 07 c9  |.A.... E% ..A...|
0000d550  20 31 0d 41 14 2c 72 24  3d 22 46 4e 38 22 3a 69  | 1.A.,r$="FN8":i|
0000d560  6e 70 75 74 3d 31 3a 72  25 28 30 29 3d 46 3a 67  |nput=1:r%(0)=F:g|
0000d570  25 28 30 29 3d 46 3a 62  25 28 30 29 3d 46 0d 41  |%(0)=F:b%(0)=F.A|
0000d580  1e 4b 69 6e 66 6f 24 3d  22 50 6f 63 6b 65 74 62  |.Kinfo$="Pocketb|
0000d590  6f 6f 6b 20 62 69 74 6d  61 70 2c 20 22 2b c3 73  |ook bitmap, "+.s|
0000d5a0  78 25 2b 22 20 62 79 20  22 2b c3 73 79 25 2b 22  |x%+" by "+.sy%+"|
0000d5b0  20 70 69 78 65 6c 73 2c  20 31 20 62 69 74 20 70  | pixels, 1 bit p|
0000d5c0  65 72 20 70 69 78 65 6c  22 0d 41 28 07 c9 20 32  |er pixel".A(.. 2|
0000d5d0  0d 41 32 39 70 6c 61 6e  61 72 25 3d b9 3a 70 6c  |.A29planar%=.:pl|
0000d5e0  61 6e 65 73 25 3d 32 3a  72 24 3d 22 46 4e 31 36  |anes%=2:r$="FN16|
0000d5f0  30 30 22 3a 69 6e 70 75  74 3d 38 3a 63 61 63 68  |00":input=8:cach|
0000d600  65 62 79 74 65 73 25 3d  b9 0d 41 3c 3f 72 25 28  |ebytes%=..A<?r%(|
0000d610  30 29 3d 46 3a 72 25 28  31 29 3d 28 46 2f 33 29  |0)=F:r%(1)=(F/3)|
0000d620  2a 32 3a 72 25 28 32 29  3d 46 2f 33 3a 72 25 28  |*2:r%(2)=F/3:r%(|
0000d630  33 29 3d 30 3a 67 25 28  29 3d 72 25 28 29 3a 62  |3)=0:g%()=r%():b|
0000d640  25 28 29 3d 72 25 28 29  0d 41 46 48 70 6c 62 79  |%()=r%().AFHplby|
0000d650  74 65 73 25 3d 72 6f 77  62 79 74 65 73 25 2a 70  |tes%=rowbytes%*p|
0000d660  6c 61 6e 65 73 25 3a 62  75 66 66 25 3d a4 64 69  |lanes%:buff%=.di|
0000d670  6d 28 70 6c 62 79 74 65  73 25 2a 73 79 25 29 3a  |m(plbytes%*sy%):|
0000d680  70 62 75 66 66 25 3d a4  64 69 6d 28 73 78 25 29  |pbuff%=.dim(sx%)|
0000d690  0d 41 50 1f 72 65 61 6c  72 6f 77 62 79 74 65 73  |.AP.realrowbytes|
0000d6a0  25 3d 72 6f 77 62 79 74  65 73 25 2a 73 79 25 0d  |%=rowbytes%*sy%.|
0000d6b0  41 5a 4e 69 6e 66 6f 24  3d 22 50 6f 63 6b 65 74  |AZNinfo$="Pocket|
0000d6c0  62 6f 6f 6b 49 49 20 62  69 74 6d 61 70 2c 20 22  |bookII bitmap, "|
0000d6d0  2b c3 73 78 25 2b 22 20  62 79 20 22 2b c3 73 79  |+.sx%+" by "+.sy|
0000d6e0  25 2b 22 20 70 69 78 65  6c 73 2c 20 32 20 62 69  |%+" pixels, 2 bi|
0000d6f0  74 73 20 70 65 72 20 70  69 78 65 6c 22 0d 41 64  |ts per pixel".Ad|
0000d700  05 7f 0d 41 6e 28 85 20  34 32 2c 22 55 6e 6b 6e  |...An(. 42,"Unkn|
0000d710  6f 77 6e 20 50 6f 63 6b  65 74 62 6f 6f 6b 20 50  |own Pocketbook P|
0000d720  49 43 20 66 6f 72 6d 61  74 22 0d 41 78 05 cb 0d  |IC format".Ax...|
0000d730  41 82 0a c9 20 33 36 30  30 0d 41 8c 42 70 63 64  |A... 3600.A.Bpcd|
0000d740  62 6c 6b 25 3d a4 64 69  6d 28 34 30 29 3a c8 99  |blk%=.dim(40):..|
0000d750  26 32 30 30 32 33 2c 22  43 68 61 6e 67 65 46 53  |&20023,"ChangeFS|
0000d760  49 24 50 43 44 69 6e 64  65 78 22 2c 70 63 64 62  |I$PCDindex",pcdb|
0000d770  6c 6b 25 2c 32 30 20 b8  2c 2c 5a 0d 41 96 35 e7  |lk%,20 .,,Z.A.5.|
0000d780  5a 20 8c 70 63 64 62 6c  6b 25 3f 5a 3d 31 33 3a  |Z .pcdblk%?Z=13:|
0000d790  70 63 64 69 6e 64 65 78  25 3d bb 24 70 63 64 62  |pcdindex%=.$pcdb|
0000d7a0  6c 6b 25 20 8b 70 63 64  69 6e 64 65 78 25 3d 33  |lk% .pcdindex%=3|
0000d7b0  0d 41 a0 42 c8 99 22 50  68 6f 74 6f 43 44 5f 4f  |.A.B.."PhotoCD_O|
0000d7c0  70 65 6e 22 2c 31 2c 63  25 2c 31 20 b8 20 70 63  |pen",1,c%,1 . pc|
0000d7d0  64 68 25 3a c8 99 22 50  68 6f 74 6f 43 44 5f 47  |dh%:.."PhotoCD_G|
0000d7e0  65 74 43 6f 75 6e 74 22  2c 70 63 64 68 25 20 b8  |etCount",pcdh% .|
0000d7f0  2c 5a 0d 41 aa 3f e7 28  5a 3e 3e 70 63 64 69 6e  |,Z.A.?.(Z>>pcdin|
0000d800  64 65 78 25 29 3d 30 20  d9 23 63 25 3a 85 34 32  |dex%)=0 .#c%:.42|
0000d810  2c 22 44 65 73 69 72 65  64 20 72 65 73 6f 6c 75  |,"Desired resolu|
0000d820  74 69 6f 6e 20 75 6e 61  76 61 69 6c 61 62 6c 65  |tion unavailable|
0000d830  22 0d 41 b4 2b c8 99 22  50 68 6f 74 6f 43 44 5f  |".A.+.."PhotoCD_|
0000d840  47 65 74 52 6f 74 61 74  69 6f 6e 22 2c 70 63 64  |GetRotation",pcd|
0000d850  68 25 20 b8 2c 2c 70 63  64 74 72 25 0d 41 be 35  |h% .,,pcdtr%.A.5|
0000d860  c8 99 22 50 68 6f 74 6f  43 44 5f 47 65 74 53 69  |.."PhotoCD_GetSi|
0000d870  7a 65 22 2c 70 63 64 68  25 2c 2c 70 63 64 69 6e  |ze",pcdh%,,pcdin|
0000d880  64 65 78 25 20 b8 2c 2c  2c 2c 73 78 25 2c 73 79  |dex% .,,,,sx%,sy|
0000d890  25 0d 41 c8 29 70 63 64  62 6c 6b 25 21 30 3d 30  |%.A.)pcdblk%!0=0|
0000d8a0  3a 70 63 64 62 6c 6b 25  21 38 3d 73 78 25 3a 70  |:pcdblk%!8=sx%:p|
0000d8b0  63 64 62 6c 6b 25 21 34  3d 30 0d 41 d2 37 70 63  |cdblk%!4=0.A.7pc|
0000d8c0  64 62 6c 6b 25 21 31 36  3d 30 3a 70 63 64 62 6c  |dblk%!16=0:pcdbl|
0000d8d0  6b 25 21 32 30 3d 32 3a  70 63 64 62 6c 6b 25 21  |k%!20=2:pcdblk%!|
0000d8e0  32 34 3d 31 3a 70 63 64  62 6c 6b 25 21 32 38 3d  |24=1:pcdblk%!28=|
0000d8f0  33 0d 41 e6 0f c8 8e 20  70 63 64 74 72 25 20 ca  |3.A.... pcdtr% .|
0000d900  0d 41 f0 07 c9 20 30 0d  41 fa 1e c9 20 26 38 30  |.A... 0.A... &80|
0000d910  30 30 30 30 30 30 3a 68  66 6c 69 70 25 3d ac 68  |000000:hflip%=.h|
0000d920  66 6c 69 70 25 0d 42 04  08 c9 20 39 30 0d 42 0e  |flip%.B... 90.B.|
0000d930  10 c8 8e 20 72 6f 74 61  74 65 25 20 ca 0d 42 18  |... rotate% ..B.|
0000d940  11 c9 20 30 3a 72 6f 74  61 74 65 25 3d 31 0d 42  |.. 0:rotate%=1.B|
0000d950  22 12 c9 20 2d 31 3a 72  6f 74 61 74 65 25 3d 30  |".. -1:rotate%=0|
0000d960  0d 42 2c 2f c9 20 31 3a  72 6f 74 61 74 65 25 3d  |.B,/. 1:rotate%=|
0000d970  30 3a 76 66 6c 69 70 25  3d ac 76 66 6c 69 70 25  |0:vflip%=.vflip%|
0000d980  3a 68 66 6c 69 70 25 3d  ac 68 66 6c 69 70 25 0d  |:hflip%=.hflip%.|
0000d990  42 36 05 cb 0d 42 40 0f  c9 20 26 38 30 30 30 30  |B6...B@.. &80000|
0000d9a0  30 35 41 0d 42 4a 10 c8  8e 20 72 6f 74 61 74 65  |05A.BJ... rotate|
0000d9b0  25 20 ca 0d 42 54 20 c9  20 30 3a 72 6f 74 61 74  |% ..BT . 0:rotat|
0000d9c0  65 25 3d 31 3a 76 66 6c  69 70 25 3d ac 76 66 6c  |e%=1:vflip%=.vfl|
0000d9d0  69 70 25 0d 42 5e 21 c9  20 2d 31 3a 72 6f 74 61  |ip%.B^!. -1:rota|
0000d9e0  74 65 25 3d 30 3a 76 66  6c 69 70 25 3d ac 76 66  |te%=0:vflip%=.vf|
0000d9f0  6c 69 70 25 0d 42 68 20  c9 20 31 3a 72 6f 74 61  |lip%.Bh . 1:rota|
0000da00  74 65 25 3d 30 3a 68 66  6c 69 70 25 3d ac 68 66  |te%=0:hflip%=.hf|
0000da10  6c 69 70 25 0d 42 72 05  cb 0d 42 7c 27 c9 20 31  |lip%.Br...B|'. 1|
0000da20  38 30 3a 68 66 6c 69 70  25 3d ac 68 66 6c 69 70  |80:hflip%=.hflip|
0000da30  25 3a 76 66 6c 69 70 25  3d ac 76 66 6c 69 70 25  |%:vflip%=.vflip%|
0000da40  0d 42 86 1e c9 20 26 38  30 30 30 30 30 42 34 3a  |.B... &800000B4:|
0000da50  76 66 6c 69 70 25 3d ac  76 66 6c 69 70 25 0d 42  |vflip%=.vflip%.B|
0000da60  90 09 c9 20 32 37 30 0d  42 9a 10 c8 8e 20 72 6f  |... 270.B.... ro|
0000da70  74 61 74 65 25 20 ca 0d  42 a4 12 c9 20 30 3a 72  |tate% ..B... 0:r|
0000da80  6f 74 61 74 65 25 3d 2d  31 0d 42 ae 11 c9 20 31  |otate%=-1.B... 1|
0000da90  3a 72 6f 74 61 74 65 25  3d 30 0d 42 b8 30 c9 20  |:rotate%=0.B.0. |
0000daa0  2d 31 3a 72 6f 74 61 74  65 25 3d 30 3a 76 66 6c  |-1:rotate%=0:vfl|
0000dab0  69 70 25 3d ac 76 66 6c  69 70 25 3a 68 66 6c 69  |ip%=.vflip%:hfli|
0000dac0  70 25 3d ac 68 66 6c 69  70 25 0d 42 c2 05 cb 0d  |p%=.hflip%.B....|
0000dad0  42 cc 0f c9 20 26 38 30  30 30 30 31 30 45 0d 42  |B... &8000010E.B|
0000dae0  d6 10 c8 8e 20 72 6f 74  61 74 65 25 20 ca 0d 42  |.... rotate% ..B|
0000daf0  e0 21 c9 20 30 3a 72 6f  74 61 74 65 25 3d 2d 31  |.!. 0:rotate%=-1|
0000db00  3a 76 66 6c 69 70 25 3d  ac 76 66 6c 69 70 25 0d  |:vflip%=.vflip%.|
0000db10  42 ea 20 c9 20 31 3a 72  6f 74 61 74 65 25 3d 30  |B. . 1:rotate%=0|
0000db20  3a 76 66 6c 69 70 25 3d  ac 76 66 6c 69 70 25 0d  |:vflip%=.vflip%.|
0000db30  42 f4 21 c9 20 2d 31 3a  72 6f 74 61 74 65 25 3d  |B.!. -1:rotate%=|
0000db40  30 3a 68 66 6c 69 70 25  3d ac 68 66 6c 69 70 25  |0:hflip%=.hflip%|
0000db50  0d 42 fe 05 cb 0d 43 08  0b 7f 20 50 41 4e 49 43  |.B....C... PANIC|
0000db60  0d 43 12 05 cb 0d 43 26  40 69 6e 70 75 74 3d 32  |.C....C&@input=2|
0000db70  34 3a 73 74 65 70 32 34  3d 33 3a 72 62 6f 25 3d  |4:step24=3:rbo%=|
0000db80  30 3a 67 62 6f 25 3d 31  3a 62 62 6f 25 3d 32 3a  |0:gbo%=1:bbo%=2:|
0000db90  70 63 64 63 61 63 68 65  73 69 7a 65 25 3d 33 32  |pcdcachesize%=32|
0000dba0  2a 31 30 32 34 0d 43 30  41 72 6f 77 62 79 74 65  |*1024.C0Arowbyte|
0000dbb0  73 25 3d 73 78 25 2a 33  3a f2 6e 6f 70 61 6c 3a  |s%=sx%*3:.nopal:|
0000dbc0  63 61 63 68 65 25 3d b9  3a 70 63 64 63 61 63 68  |cache%=.:pcdcach|
0000dbd0  65 25 3d a4 64 69 6d 28  70 63 64 63 61 63 68 65  |e%=.dim(pcdcache|
0000dbe0  73 69 7a 65 25 29 0d 43  3a 49 69 6e 66 6f 24 3d  |size%).C:Iinfo$=|
0000dbf0  22 50 68 6f 74 6f 43 44  20 69 6d 61 67 65 2c 20  |"PhotoCD image, |
0000dc00  22 2b c3 73 78 25 2b 22  20 62 79 20 22 2b c3 73  |"+.sx%+" by "+.s|
0000dc10  79 25 2b 22 20 70 69 78  65 6c 73 2c 20 32 34 20  |y%+" pixels, 24 |
0000dc20  62 69 74 73 20 70 65 72  20 70 69 78 65 6c 22 0d  |bits per pixel".|
0000dc30  43 44 0a c9 20 33 37 30  30 0d 43 4e 33 41 25 3d  |CD.. 3700.CN3A%=|
0000dc40  8e 22 3c 43 68 61 6e 67  65 46 53 49 24 44 69 72  |."<ChangeFSI$Dir|
0000dc50  3e 2e 43 46 53 49 6a 70  65 67 22 3a 6a 70 65 67  |>.CFSIjpeg":jpeg|
0000dc60  25 3d a4 64 69 6d 28 a2  23 41 25 29 0d 43 58 1d  |%=.dim(.#A%).CX.|
0000dc70  c8 99 31 32 2c 34 2c 41  25 2c 6a 70 65 67 25 2c  |..12,4,A%,jpeg%,|
0000dc80  a2 23 41 25 3a d9 23 41  25 0d 43 62 43 64 61 74  |.#A%:.#A%.CbCdat|
0000dc90  61 63 61 63 68 65 25 3d  a4 63 61 63 68 65 64 69  |acache%=.cachedi|
0000dca0  6d 28 a2 23 63 25 29 3a  e7 64 61 74 61 63 61 63  |m(.#c%):.datacac|
0000dcb0  68 65 25 3d 2d 31 20 64  61 74 61 63 61 63 68 65  |he%=-1 datacache|
0000dcc0  25 3d a4 64 69 6d 28 a2  23 63 25 29 0d 43 6c 24  |%=.dim(.#c%).Cl$|
0000dcd0  cf 23 63 25 3d 30 3a c8  99 31 32 2c 34 2c 63 25  |.#c%=0:..12,4,c%|
0000dce0  2c 64 61 74 61 63 61 63  68 65 25 2c a2 23 63 25  |,datacache%,.#c%|
0000dcf0  0d 43 76 51 41 25 3d 64  61 74 61 63 61 63 68 65  |.CvQA%=datacache|
0000dd00  25 3a 42 25 3d 6a 70 65  67 62 6c 6b 25 3a 43 25  |%:B%=jpegblk%:C%|
0000dd10  3d 6a 70 65 67 62 6c 6b  25 2b 34 3a 44 25 3d 6a  |=jpegblk%+4:D%=j|
0000dd20  70 65 67 62 6c 6b 25 2b  38 3a 45 25 3d 6a 70 65  |pegblk%+8:E%=jpe|
0000dd30  67 62 6c 6b 25 2b 31 32  3a d6 6a 70 65 67 25 2b  |gblk%+12:.jpeg%+|
0000dd40  38 0d 43 80 26 42 25 3d  6a 70 65 67 62 6c 6b 25  |8.C.&B%=jpegblk%|
0000dd50  21 31 32 3a 6a 70 65 67  73 70 61 63 65 25 3d a4  |!12:jpegspace%=.|
0000dd60  64 69 6d 28 42 25 29 0d  43 8a 27 43 25 3d 64 61  |dim(B%).C.'C%=da|
0000dd70  74 61 63 61 63 68 65 25  3a 41 25 3d 6a 70 65 67  |tacache%:A%=jpeg|
0000dd80  73 70 61 63 65 25 3a 44  25 3d a2 23 63 25 0d 43  |space%:D%=.#c%.C|
0000dd90  94 35 d6 6a 70 65 67 25  3a 63 61 63 68 65 25 3d  |.5.jpeg%:cache%=|
0000dda0  a3 3a e7 21 41 25 20 85  34 32 2c 22 4a 50 45 47  |.:.!A% .42,"JPEG|
0000ddb0  20 63 6f 64 65 20 65 72  72 6f 72 3a 20 22 2b c3  | code error: "+.|
0000ddc0  21 41 25 0d 43 9e 35 73  78 25 3d 41 25 21 32 30  |!A%.C.5sx%=A%!20|
0000ddd0  3a 73 79 25 3d 41 25 21  32 34 3a 69 6e 70 75 74  |:sy%=A%!24:input|
0000dde0  3d 38 2a 41 25 3f 32 38  3a f2 6e 6f 70 61 6c 3a  |=8*A%?28:.nopal:|
0000ddf0  73 74 65 70 32 34 3d 34  0d 43 a8 42 69 6e 66 6f  |step24=4.C.Binfo|
0000de00  24 3d 22 4a 46 49 46 20  69 6d 61 67 65 2c 20 22  |$="JFIF image, "|
0000de10  2b c3 73 78 25 2b 22 20  62 79 20 22 2b c3 73 79  |+.sx%+" by "+.sy|
0000de20  25 2b 22 20 70 69 78 65  6c 73 2c 20 22 2b a4 62  |%+" pixels, "+.b|
0000de30  69 74 73 28 69 6e 70 75  74 29 0d 43 b2 25 6a 70  |its(input).C.%jp|
0000de40  65 67 79 25 3d 73 79 25  3a 72 24 3d 22 46 4e 22  |egy%=sy%:r$="FN"|
0000de50  2b c3 a8 28 33 37 30 30  2b 69 6e 70 75 74 29 0d  |+..(3700+input).|
0000de60  43 bc 09 c9 20 36 36 36  0d 44 2a 3f 73 74 25 3d  |C... 666.D*?st%=|
0000de70  30 3a cf 23 63 25 3d 30  3a 73 78 25 3d 31 36 30  |0:.#c%=0:sx%=160|
0000de80  3a 73 79 25 3d 31 32 38  3a 69 6e 70 75 74 3d 38  |:sy%=128:input=8|
0000de90  3a 63 61 63 68 65 25 3d  b9 3a 72 6f 77 62 79 74  |:cache%=.:rowbyt|
0000dea0  65 73 25 3d 73 78 25 0d  44 34 3c e3 43 25 3d 30  |es%=sx%.D4<.C%=0|
0000deb0  b8 32 35 35 3a 72 25 28  43 25 29 3d 43 25 2f 32  |.255:r%(C%)=C%/2|
0000dec0  35 35 2a 46 3a ed 3a 67  25 28 29 3d 72 25 28 29  |55*F:.:g%()=r%()|
0000ded0  3a 62 25 28 29 3d 72 25  28 29 3a 72 24 3d 22 46  |:b%()=r%():r$="F|
0000dee0  4e 38 22 0d 44 3e 4d 69  6e 66 6f 24 3d 22 54 68  |N8".D>Minfo$="Th|
0000def0  65 20 6e 75 6d 62 65 72  20 6f 66 20 74 68 65 20  |e number of the |
0000df00  62 65 61 73 74 2c 20 31  36 30 20 62 79 20 22 2b  |beast, 160 by "+|
0000df10  c3 73 79 25 2b 22 20 70  69 78 65 6c 73 2c 20 38  |.sy%+" pixels, 8|
0000df20  20 62 69 74 73 20 70 65  72 20 70 69 78 65 6c 22  | bits per pixel"|
0000df30  0d 44 48 05 cb 0d 44 52  11 e7 69 6e 66 6f 25 20  |.DH...DR..info% |
0000df40  f1 69 6e 66 6f 24 0d 44  5c 23 c8 99 22 48 6f 75  |.info$.D\#.."Hou|
0000df50  72 67 6c 61 73 73 5f 4f  6e 22 2c 31 3a 68 6f 75  |rglass_On",1:hou|
0000df60  72 25 3d 26 34 30 36 63  34 0d 44 66 30 e7 69 6e  |r%=&406c4.Df0.in|
0000df70  76 65 72 74 25 20 72 25  28 29 3d 46 2d 72 25 28  |vert% r%()=F-r%(|
0000df80  29 3a 67 25 28 29 3d 46  2d 67 25 28 29 3a 62 25  |):g%()=F-g%():b%|
0000df90  28 29 3d 46 2d 62 25 28  29 0d 44 70 1f e7 78 64  |()=F-b%().Dp..xd|
0000dfa0  69 76 25 20 f2 72 65 64  75 63 65 28 78 6d 75 6c  |iv% .reduce(xmul|
0000dfb0  25 2c 78 64 69 76 25 29  0d 44 7a 1f e7 79 64 69  |%,xdiv%).Dz..ydi|
0000dfc0  76 25 20 f2 72 65 64 75  63 65 28 79 6d 75 6c 25  |v% .reduce(ymul%|
0000dfd0  2c 79 64 69 76 25 29 0d  44 84 0a c8 8e 20 6d 20  |,ydiv%).D.... m |
0000dfe0  ca 0d 44 8e 44 c9 20 2d  31 3a 78 25 3d 32 35 36  |..D.D. -1:x%=256|
0000dff0  3a 79 25 3d 32 35 36 3a  6e 63 6f 6c 3d 32 35 36  |:y%=256:ncol=256|
0000e000  3a e7 73 63 61 6c 65 6f  25 20 78 64 69 76 25 3d  |:.scaleo% xdiv%=|
0000e010  78 64 69 76 25 2a 32 3a  79 64 69 76 25 3d 79 64  |xdiv%*2:ydiv%=yd|
0000e020  69 76 25 2a 32 0d 44 98  2e c9 20 2d 32 3a 78 25  |iv%*2.D... -2:x%|
0000e030  3d 73 78 25 3a 79 25 3d  73 79 25 3a e7 73 70 6d  |=sx%:y%=sy%:.spm|
0000e040  3d 31 38 20 6e 63 6f 6c  3d 31 20 8b 6e 63 6f 6c  |=18 ncol=1 .ncol|
0000e050  3d 31 35 0d 44 a2 28 c9  20 2d 33 2c 2d 35 2c 2d  |=15.D.(. -3,-5,-|
0000e060  36 3a 78 25 3d 73 78 25  3a 79 25 3d 73 79 25 3a  |6:x%=sx%:y%=sy%:|
0000e070  6e 63 6f 6c 3d 32 5e 31  35 2d 31 0d 44 ac 28 c9  |ncol=2^15-1.D.(.|
0000e080  20 2d 34 2c 2d 37 2c 2d  38 3a 78 25 3d 73 78 25  | -4,-7,-8:x%=sx%|
0000e090  3a 79 25 3d 73 79 25 3a  6e 63 6f 6c 3d 32 5e 32  |:y%=sy%:ncol=2^2|
0000e0a0  34 2d 31 0d 44 b6 05 7f  0d 44 c0 35 c8 99 35 33  |4-1.D....D.5..53|
0000e0b0  2c 6d 2c 34 20 b8 20 2c  2c 6e 78 3a c8 99 35 33  |,m,4 . ,,nx:..53|
0000e0c0  2c 6d 2c 35 20 b8 20 2c  2c 6e 79 3a 6e 78 3d 31  |,m,5 . ,,ny:nx=1|
0000e0d0  3c 3c 6e 78 3a 6e 79 3d  31 3c 3c 6e 79 0d 44 ca  |<<nx:ny=1<<ny.D.|
0000e0e0  31 c8 99 35 33 2c 6d 2c  31 31 20 b8 20 2c 2c 78  |1..53,m,11 . ,,x|
0000e0f0  25 3a c8 99 35 33 2c 6d  2c 31 32 20 b8 20 2c 2c  |%:..53,m,12 . ,,|
0000e100  79 25 3a 78 25 2b 3d 31  3a 79 25 2b 3d 31 0d 44  |y%:x%+=1:y%+=1.D|
0000e110  d4 20 c8 99 35 33 2c 6d  2c 33 20 b8 20 2c 2c 6e  |. ..53,m,3 . ,,n|
0000e120  63 6f 6c 3a e7 73 63 61  6c 65 6f 25 20 8c 0d 44  |col:.scaleo% ..D|
0000e130  de 0e e7 72 6f 74 61 74  65 25 20 8c 0d 44 e8 21  |...rotate% ..D.!|
0000e140  78 64 69 76 25 3d 78 64  69 76 25 2a 6e 79 3a 79  |xdiv%=xdiv%*ny:y|
0000e150  64 69 76 25 3d 79 64 69  76 25 2a 6e 78 0d 44 f2  |div%=ydiv%*nx.D.|
0000e160  18 e7 78 64 69 76 25 20  79 6d 75 6c 25 3d 79 6d  |..xdiv% ymul%=ym|
0000e170  75 6c 25 2a 32 0d 44 fc  18 e7 79 64 69 76 25 20  |ul%*2.D...ydiv% |
0000e180  78 6d 75 6c 25 3d 78 6d  75 6c 25 2a 32 0d 45 06  |xmul%=xmul%*2.E.|
0000e190  05 cc 0d 45 10 21 78 64  69 76 25 3d 78 64 69 76  |...E.!xdiv%=xdiv|
0000e1a0  25 2a 6e 78 3a 79 64 69  76 25 3d 79 64 69 76 25  |%*nx:ydiv%=ydiv%|
0000e1b0  2a 6e 79 0d 45 1a 18 e7  78 64 69 76 25 20 78 6d  |*ny.E...xdiv% xm|
0000e1c0  75 6c 25 3d 78 6d 75 6c  25 2a 32 0d 45 24 18 e7  |ul%=xmul%*2.E$..|
0000e1d0  79 64 69 76 25 20 79 6d  75 6c 25 3d 79 6d 75 6c  |ydiv% ymul%=ymul|
0000e1e0  25 2a 32 0d 45 2e 05 cd  0d 45 38 05 cd 0d 45 42  |%*2.E....E8...EB|
0000e1f0  21 c8 99 26 36 32 41 35  31 2c 6d 20 b8 20 72 30  |!..&62A51,m . r0|
0000e200  3b 56 3a e7 28 56 20 80  31 29 3d 30 20 8c 0d 45  |;V:.(V .1)=0 ..E|
0000e210  56 0b e7 72 30 3d 31 20  8c 0d 45 60 1c 6e 63 6f  |V..r0=1 ..E`.nco|
0000e220  6c 3d 32 35 35 3a e7 6d  24 3c 3e 22 44 22 20 6d  |l=255:.m$<>"D" m|
0000e230  24 3d 22 52 22 0d 45 6a  05 cd 0d 45 74 05 cd 0d  |$="R".Ej...Et...|
0000e240  45 7e 05 cb 0d 45 88 19  e7 6d 3d 2d 36 20 84 20  |E~...E...m=-6 . |
0000e250  6d 3d 2d 37 20 84 20 6d  3d 2d 38 20 8c 0d 45 92  |m=-7 . m=-8 ..E.|
0000e260  2a 6e 78 3d bb c1 70 6e  6d 24 2c 35 29 3a 6e 79  |*nx=..pnm$,5):ny|
0000e270  3d bb c1 70 6e 6d 24 2c  a7 70 6e 6d 24 2c 22 2c  |=..pnm$,.pnm$,",|
0000e280  22 2c 35 29 2b 31 29 0d  45 9c 0e e7 73 63 61 6c  |",5)+1).E...scal|
0000e290  65 6f 25 20 8c 0d 45 a6  0e e7 72 6f 74 61 74 65  |eo% ..E...rotate|
0000e2a0  25 20 8c 0d 45 b0 19 e7  78 64 69 76 25 20 79 6d  |% ..E...xdiv% ym|
0000e2b0  75 6c 25 3d 79 6d 75 6c  25 2a 6e 78 0d 45 ba 19  |ul%=ymul%*nx.E..|
0000e2c0  e7 79 64 69 76 25 20 78  6d 75 6c 25 3d 78 6d 75  |.ydiv% xmul%=xmu|
0000e2d0  6c 25 2a 6e 79 0d 45 c4  05 cc 0d 45 ce 19 e7 78  |l%*ny.E....E...x|
0000e2e0  64 69 76 25 20 78 6d 75  6c 25 3d 78 6d 75 6c 25  |div% xmul%=xmul%|
0000e2f0  2a 6e 78 0d 45 d8 19 e7  79 64 69 76 25 20 79 6d  |*nx.E...ydiv% ym|
0000e300  75 6c 25 3d 79 6d 75 6c  25 2a 6e 79 0d 45 e2 05  |ul%=ymul%*ny.E..|
0000e310  cd 0d 45 ec 21 78 64 69  76 25 3d 78 64 69 76 25  |..E.!xdiv%=xdiv%|
0000e320  2a 39 30 3a 79 64 69 76  25 3d 79 64 69 76 25 2a  |*90:ydiv%=ydiv%*|
0000e330  39 30 0d 45 f6 05 cd 0d  46 00 05 cd 0d 46 0a 15  |90.E....F....F..|
0000e340  e7 72 6f 74 61 74 65 25  20 c8 94 20 78 25 2c 79  |.rotate% .. x%,y|
0000e350  25 0d 46 1e 16 e7 78 64  69 76 25 3d 30 20 78 64  |%.F...xdiv%=0 xd|
0000e360  69 76 25 3d 73 78 25 0d  46 28 16 e7 79 64 69 76  |iv%=sx%.F(..ydiv|
0000e370  25 3d 30 20 79 64 69 76  25 3d 73 79 25 0d 46 32  |%=0 ydiv%=sy%.F2|
0000e380  1f e7 78 73 24 3d 22 3d  22 20 78 6d 75 6c 25 3d  |..xs$="=" xmul%=|
0000e390  78 25 3a 78 64 69 76 25  3d 73 78 25 0d 46 3c 1f  |x%:xdiv%=sx%.F<.|
0000e3a0  e7 79 73 24 3d 22 3d 22  20 79 6d 75 6c 25 3d 79  |.ys$="=" ymul%=y|
0000e3b0  25 3a 79 64 69 76 25 3d  73 79 25 0d 46 46 0c e7  |%:ydiv%=sy%.FF..|
0000e3c0  6c 6f 63 6b 25 20 8c 0d  46 50 4d e7 78 6d 75 6c  |lock% ..FPM.xmul|
0000e3d0  25 2f 78 64 69 76 25 3e  79 6d 75 6c 25 2f 79 64  |%/xdiv%>ymul%/yd|
0000e3e0  69 76 25 20 78 6d 75 6c  25 3d 79 6d 75 6c 25 3a  |iv% xmul%=ymul%:|
0000e3f0  78 64 69 76 25 3d 79 64  69 76 25 20 8b 79 6d 75  |xdiv%=ydiv% .ymu|
0000e400  6c 25 3d 78 6d 75 6c 25  3a 79 64 69 76 25 3d 78  |l%=xmul%:ydiv%=x|
0000e410  64 69 76 25 0d 46 5a 05  cd 0d 46 64 0d e7 6e 63  |div%.FZ...Fd..nc|
0000e420  6f 6c 3d 31 20 8c 0d 46  6e 0b c8 8e 20 6d 24 20  |ol=1 ..Fn... m$ |
0000e430  ca 0d 46 78 24 c9 22 43  22 3a 78 64 69 76 25 3d  |..Fx$."C":xdiv%=|
0000e440  78 64 69 76 25 2a 34 3a  79 64 69 76 25 3d 79 64  |xdiv%*4:ydiv%=yd|
0000e450  69 76 25 2a 34 0d 46 82  13 de 20 41 25 28 31 36  |iv%*4.F... A%(16|
0000e460  29 2c 42 25 28 31 36 29  0d 46 8c aa 41 25 28 29  |),B%(16).F..A%()|
0000e470  3d 30 2c 26 30 30 30 30  30 30 30 31 2c 26 30 38  |=0,&00000001,&08|
0000e480  30 30 30 30 30 31 2c 26  30 38 30 30 30 31 30 31  |000001,&08000101|
0000e490  2c 26 30 38 30 38 30 31  30 31 2c 26 30 38 30 38  |,&08080101,&0808|
0000e4a0  30 31 30 33 2c 26 30 43  30 38 30 31 30 33 2c 26  |0103,&0C080103,&|
0000e4b0  30 43 30 38 30 33 30 33  2c 26 30 43 30 43 30 33  |0C080303,&0C0C03|
0000e4c0  30 33 2c 26 30 43 30 45  30 33 30 33 2c 26 30 43  |03,&0C0E0303,&0C|
0000e4d0  30 45 30 37 30 33 2c 26  30 45 30 45 30 37 30 33  |0E0703,&0E0E0703|
0000e4e0  2c 26 30 45 30 45 30 37  30 37 2c 26 30 45 30 46  |,&0E0E0707,&0E0F|
0000e4f0  30 37 30 37 2c 26 30 45  30 46 30 46 30 37 2c 26  |0707,&0E0F0F07,&|
0000e500  30 46 30 46 30 46 30 37  2c 26 30 46 30 46 30 46  |0F0F0F07,&0F0F0F|
0000e510  30 46 0d 46 96 aa 42 25  28 29 3d 30 2c 26 30 30  |0F.F..B%()=0,&00|
0000e520  30 30 30 30 30 38 2c 26  30 31 30 30 30 30 30 38  |000008,&01000008|
0000e530  2c 26 30 31 30 30 30 38  30 38 2c 26 30 31 30 31  |,&01000808,&0101|
0000e540  30 38 30 38 2c 26 30 31  30 31 30 38 30 43 2c 26  |0808,&0101080C,&|
0000e550  30 33 30 31 30 38 30 43  2c 26 30 33 30 31 30 43  |0301080C,&03010C|
0000e560  30 43 2c 26 30 33 30 33  30 43 30 43 2c 26 30 33  |0C,&03030C0C,&03|
0000e570  30 37 30 43 30 43 2c 26  30 33 30 37 30 45 30 43  |070C0C,&03070E0C|
0000e580  2c 26 30 37 30 37 30 45  30 43 2c 26 30 37 30 37  |,&07070E0C,&0707|
0000e590  30 45 30 45 2c 26 30 37  30 46 30 45 30 45 2c 26  |0E0E,&070F0E0E,&|
0000e5a0  30 37 30 46 30 46 30 45  2c 26 30 46 30 46 30 46  |070F0F0E,&0F0F0F|
0000e5b0  30 45 2c 26 30 46 30 46  30 46 30 46 0d 46 a0 32  |0E,&0F0F0F0F.F.2|
0000e5c0  65 76 65 6e 5f 67 61 72  64 3d a4 64 69 6d 28 31  |even_gard=.dim(1|
0000e5d0  37 2a 33 32 2a 34 29 3a  6f 64 64 5f 67 61 72 64  |7*32*4):odd_gard|
0000e5e0  3d a4 64 69 6d 28 31 37  2a 33 32 2a 34 29 0d 46  |=.dim(17*32*4).F|
0000e5f0  aa 43 e3 49 25 3d 30 b8  31 36 3a e3 4a 25 3d 30  |.C.I%=0.16:.J%=0|
0000e600  b8 31 36 3a 65 76 65 6e  5f 67 61 72 64 21 28 4a  |.16:even_gard!(J|
0000e610  25 2a 33 32 2a 34 2b 49  25 2a 34 29 3d 41 25 28  |%*32*4+I%*4)=A%(|
0000e620  49 25 29 84 42 25 28 4a  25 29 3c 3c 34 3a ed 3a  |I%).B%(J%)<<4:.:|
0000e630  ed 0d 46 b4 42 e3 49 25  3d 30 b8 31 36 3a e3 4a  |..F.B.I%=0.16:.J|
0000e640  25 3d 30 b8 31 36 3a 6f  64 64 5f 67 61 72 64 21  |%=0.16:odd_gard!|
0000e650  28 49 25 2a 33 32 2a 34  2b 4a 25 2a 34 29 3d 42  |(I%*32*4+J%*4)=B|
0000e660  25 28 49 25 29 84 41 25  28 4a 25 29 3c 3c 34 3a  |%(I%).A%(J%)<<4:|
0000e670  ed 3a ed 0d 46 be 24 c9  22 54 22 3a 78 64 69 76  |.:..F.$."T":xdiv|
0000e680  25 3d 78 64 69 76 25 2a  33 3a 79 64 69 76 25 3d  |%=xdiv%*3:ydiv%=|
0000e690  79 64 69 76 25 2a 33 0d  46 c8 11 de 20 41 25 28  |ydiv%*3.F... A%(|
0000e6a0  39 29 2c 42 25 28 39 29  0d 46 d2 40 41 25 28 29  |9),B%(9).F.@A%()|
0000e6b0  3d 30 2c 26 30 30 30 31  2c 26 34 30 30 31 2c 26  |=0,&0001,&4001,&|
0000e6c0  34 30 34 31 2c 26 34 30  34 33 2c 26 34 30 43 33  |4041,&4043,&40C3|
0000e6d0  2c 26 36 30 43 33 2c 26  36 31 43 33 2c 26 37 31  |,&60C3,&61C3,&71|
0000e6e0  43 33 2c 26 37 31 43 37  0d 46 dc 40 42 25 28 29  |C3,&71C7.F.@B%()|
0000e6f0  3d 30 2c 26 30 30 30 34  2c 26 31 30 30 34 2c 26  |=0,&0004,&1004,&|
0000e700  31 31 30 34 2c 26 31 31  30 36 2c 26 31 31 38 36  |1104,&1106,&1186|
0000e710  2c 26 33 31 38 36 2c 26  33 31 43 36 2c 26 37 31  |,&3186,&31C6,&71|
0000e720  43 36 2c 26 37 31 43 37  0d 46 e6 32 65 76 65 6e  |C6,&71C7.F.2even|
0000e730  5f 67 61 72 64 3d a4 64  69 6d 28 31 30 2a 31 36  |_gard=.dim(10*16|
0000e740  2a 34 29 3a 6f 64 64 5f  67 61 72 64 3d a4 64 69  |*4):odd_gard=.di|
0000e750  6d 28 31 30 2a 31 36 2a  34 29 0d 46 f0 41 e3 49  |m(10*16*4).F.A.I|
0000e760  25 3d 30 b8 39 3a e3 4a  25 3d 30 b8 39 3a 65 76  |%=0.9:.J%=0.9:ev|
0000e770  65 6e 5f 67 61 72 64 21  28 4a 25 2a 31 36 2a 34  |en_gard!(J%*16*4|
0000e780  2b 49 25 2a 34 29 3d 41  25 28 49 25 29 84 42 25  |+I%*4)=A%(I%).B%|
0000e790  28 4a 25 29 3c 3c 33 3a  ed 3a ed 0d 46 fa 40 e3  |(J%)<<3:.:..F.@.|
0000e7a0  49 25 3d 30 b8 39 3a e3  4a 25 3d 30 b8 39 3a 6f  |I%=0.9:.J%=0.9:o|
0000e7b0  64 64 5f 67 61 72 64 21  28 49 25 2a 31 36 2a 34  |dd_gard!(I%*16*4|
0000e7c0  2b 4a 25 2a 34 29 3d 42  25 28 49 25 29 84 41 25  |+J%*4)=B%(I%).A%|
0000e7d0  28 4a 25 29 3c 3c 33 3a  ed 3a ed 0d 47 04 24 c9  |(J%)<<3:.:..G.$.|
0000e7e0  22 44 22 3a 78 64 69 76  25 3d 78 64 69 76 25 2a  |"D":xdiv%=xdiv%*|
0000e7f0  32 3a 79 64 69 76 25 3d  79 64 69 76 25 2a 32 0d  |2:ydiv%=ydiv%*2.|
0000e800  47 0e 11 de 20 41 25 28  34 29 2c 42 25 28 34 29  |G... A%(4),B%(4)|
0000e810  0d 47 18 19 41 25 28 29  3d 30 2c 26 31 2c 26 32  |.G..A%()=0,&1,&2|
0000e820  31 2c 26 33 31 2c 26 33  33 0d 47 22 19 42 25 28  |1,&31,&33.G".B%(|
0000e830  29 3d 30 2c 26 32 2c 26  31 32 2c 26 33 32 2c 26  |)=0,&2,&12,&32,&|
0000e840  33 33 0d 47 2c 2a 65 76  65 6e 5f 67 61 72 64 3d  |33.G,*even_gard=|
0000e850  a4 64 69 6d 28 35 2a 38  29 3a 6f 64 64 5f 67 61  |.dim(5*8):odd_ga|
0000e860  72 64 3d a4 64 69 6d 28  35 2a 38 29 0d 47 36 3c  |rd=.dim(5*8).G6<|
0000e870  e3 49 25 3d 30 b8 34 3a  e3 4a 25 3d 30 b8 34 3a  |.I%=0.4:.J%=0.4:|
0000e880  65 76 65 6e 5f 67 61 72  64 3f 28 4a 25 2a 38 2b  |even_gard?(J%*8+|
0000e890  49 25 29 3d 41 25 28 49  25 29 84 42 25 28 4a 25  |I%)=A%(I%).B%(J%|
0000e8a0  29 3c 3c 32 3a ed 3a ed  0d 47 40 3b e3 49 25 3d  |)<<2:.:..G@;.I%=|
0000e8b0  30 b8 34 3a e3 4a 25 3d  30 b8 34 3a 6f 64 64 5f  |0.4:.J%=0.4:odd_|
0000e8c0  67 61 72 64 3f 28 49 25  2a 38 2b 4a 25 29 3d 42  |gard?(I%*8+J%)=B|
0000e8d0  25 28 49 25 29 84 41 25  28 4a 25 29 3c 3c 32 3a  |%(I%).A%(J%)<<2:|
0000e8e0  ed 3a ed 0d 47 4a 05 cb  0d 47 54 05 cd 0d 47 5e  |.:..GJ...GT...G^|
0000e8f0  2d f2 72 65 64 75 63 65  28 78 6d 75 6c 25 2c 78  |-.reduce(xmul%,x|
0000e900  64 69 76 25 29 3a f2 72  65 64 75 63 65 28 79 6d  |div%):.reduce(ym|
0000e910  75 6c 25 2c 79 64 69 76  25 29 0d 47 68 40 e7 69  |ul%,ydiv%).Gh@.i|
0000e920  6e 66 6f 25 20 f1 22 53  69 7a 65 20 72 61 74 69  |nfo% ."Size rati|
0000e930  6f 73 20 61 72 65 20 78  20 22 3b 78 6d 75 6c 25  |os are x ";xmul%|
0000e940  22 3a 22 78 64 69 76 25  22 20 79 20 22 79 6d 75  |":"xdiv%" y "ymu|
0000e950  6c 25 22 3a 22 79 64 69  76 25 0d 47 72 3f 78 25  |l%":"ydiv%.Gr?x%|
0000e960  3d 73 78 25 2a 78 6d 75  6c 25 2f 78 64 69 76 25  |=sx%*xmul%/xdiv%|
0000e970  2b 2e 39 39 39 39 3a 79  25 3d 73 79 25 2a 79 6d  |+.9999:y%=sy%*ym|
0000e980  75 6c 25 2f 79 64 69 76  25 2b 2e 39 39 39 39 3a  |ul%/ydiv%+.9999:|
0000e990  72 6f 77 73 25 3d 73 79  25 0d 47 7c 18 6f 72 64  |rows%=sy%.G|.ord|
0000e9a0  65 72 25 3d 78 25 2a 79  25 3e 73 78 25 2a 73 79  |er%=x%*y%>sx%*sy|
0000e9b0  25 0d 47 86 1a 63 6f 64  65 25 3d a4 64 69 6d 28  |%.G..code%=.dim(|
0000e9c0  38 31 39 32 29 3a 53 50  3d 31 33 0d 47 90 0d e7  |8192):SP=13.G...|
0000e9d0  63 61 63 68 65 25 20 8c  0d 47 9a 15 f2 63 61 63  |cache% ..G...cac|
0000e9e0  68 65 73 69 7a 65 28 63  6f 64 65 25 29 0d 47 a4  |hesize(code%).G.|
0000e9f0  12 e7 63 61 63 68 65 62  79 74 65 73 25 20 8c 0d  |..cachebytes% ..|
0000ea00  47 ae 3a 66 69 6c 65 73  69 7a 65 25 3d a2 23 63  |G.:filesize%=.#c|
0000ea10  25 2d 8f 23 63 25 3a e7  63 61 63 68 65 25 3e 66  |%-.#c%:.cache%>f|
0000ea20  69 6c 65 73 69 7a 65 25  20 63 61 63 68 65 25 3d  |ilesize% cache%=|
0000ea30  66 69 6c 65 73 69 7a 65  25 0d 47 b8 39 e7 63 61  |filesize%.G.9.ca|
0000ea40  63 68 65 62 79 74 65 73  25 3e 30 20 e7 63 61 63  |chebytes%>0 .cac|
0000ea50  68 65 25 3e 63 61 63 68  65 62 79 74 65 73 25 20  |he%>cachebytes% |
0000ea60  63 61 63 68 65 25 3d 63  61 63 68 65 62 79 74 65  |cache%=cachebyte|
0000ea70  73 25 0d 47 c2 15 63 61  63 68 65 72 6f 77 73 25  |s%.G..cacherows%|
0000ea80  3d 63 61 63 68 65 25 0d  47 cc 05 cc 0d 47 d6 3e  |=cache%.G....G.>|
0000ea90  66 69 6c 65 73 69 7a 65  25 3d 73 79 25 2a 72 6f  |filesize%=sy%*ro|
0000eaa0  77 62 79 74 65 73 25 3a  e7 63 61 63 68 65 25 3c  |wbytes%:.cache%<|
0000eab0  72 6f 77 62 79 74 65 73  25 20 63 61 63 68 65 25  |rowbytes% cache%|
0000eac0  3d 72 6f 77 62 79 74 65  73 25 0d 47 e0 26 e7 63  |=rowbytes%.G.&.c|
0000ead0  61 63 68 65 25 3e 66 69  6c 65 73 69 7a 65 25 20  |ache%>filesize% |
0000eae0  63 61 63 68 65 25 3d 66  69 6c 65 73 69 7a 65 25  |cache%=filesize%|
0000eaf0  0d 47 ea 43 63 61 63 68  65 72 6f 77 73 25 3d 73  |.G.Ccacherows%=s|
0000eb00  74 72 69 70 72 6f 77 73  25 3a e7 63 61 63 68 65  |triprows%:.cache|
0000eb10  72 6f 77 73 25 3c 31 20  63 61 63 68 65 72 6f 77  |rows%<1 cacherow|
0000eb20  73 25 3d 63 61 63 68 65  25 81 72 6f 77 62 79 74  |s%=cache%.rowbyt|
0000eb30  65 73 25 0d 47 f4 1f 63  61 63 68 65 25 3d 63 61  |es%.G..cache%=ca|
0000eb40  63 68 65 72 6f 77 73 25  2a 72 6f 77 62 79 74 65  |cherows%*rowbyte|
0000eb50  73 25 0d 47 fe 05 cd 0d  48 08 47 64 61 74 61 63  |s%.G....H.Gdatac|
0000eb60  61 63 68 65 25 3d a4 63  61 63 68 65 64 69 6d 28  |ache%=.cachedim(|
0000eb70  63 61 63 68 65 25 29 3a  e7 64 61 74 61 63 61 63  |cache%):.datacac|
0000eb80  68 65 25 3d 2d 31 20 64  61 74 61 63 61 63 68 65  |he%=-1 datacache|
0000eb90  25 3d a4 64 69 6d 28 63  61 63 68 65 25 29 0d 48  |%=.dim(cache%).H|
0000eba0  12 05 cd 0d 48 1c 1d e7  6e 63 6f 6c 3d 32 35 35  |....H...ncol=255|
0000ebb0  20 e7 6d 24 3c 3e 22 44  22 20 6d 24 3d 22 52 22  | .m$<>"D" m$="R"|
0000ebc0  0d 48 26 1f e7 6d 24 3d  22 52 22 20 84 28 6e 63  |.H&..m$="R" .(nc|
0000ebd0  6f 6c 3d 36 33 20 80 6d  24 3d 22 22 29 20 8c 0d  |ol=63 .m$="") ..|
0000ebe0  48 30 2b c8 99 35 33 2c  2d 31 2c 33 20 b8 2c 2c  |H0+..53,-1,3 .,,|
0000ebf0  4a 25 3a e7 6e 63 6f 6c  3d 32 35 35 20 80 20 eb  |J%:.ncol=255 . .|
0000ec00  3d 6d 20 4a 25 3d 6e 63  6f 6c 0d 48 3a 24 e7 6e  |=m J%=ncol.H:$.n|
0000ec10  63 6f 6c 3d 36 33 20 80  28 6d 24 3d 22 22 84 6d  |col=63 .(m$="".m|
0000ec20  24 3d 22 52 22 29 20 4a  25 3d 6e 63 6f 6c 0d 48  |$="R") J%=ncol.H|
0000ec30  44 50 e7 4a 25 3c 3e 6e  63 6f 6c 20 f2 63 6c 6f  |DP.J%<>ncol .clo|
0000ec40  73 65 3a 85 34 32 2c 22  59 6f 75 20 6d 75 73 74  |se:.42,"You must|
0000ec50  20 62 65 20 69 6e 20 61  20 22 2b c3 28 6e 63 6f  | be in a "+.(nco|
0000ec60  6c 2b 31 29 2b 22 20 63  6f 6c 6f 75 72 20 6d 6f  |l+1)+" colour mo|
0000ec70  64 65 20 74 6f 20 64 6f  20 74 68 69 73 22 0d 48  |de to do this".H|
0000ec80  4e 19 4a 25 3d 6e 63 6f  6c 3a e7 4a 25 3d 36 33  |N.J%=ncol:.J%=63|
0000ec90  20 4a 25 3d 32 35 35 0d  48 58 1b 70 61 6c 65 74  | J%=255.HX.palet|
0000eca0  74 65 25 3d a4 64 69 6d  28 28 4a 25 2b 31 29 2a  |te%=.dim((J%+1)*|
0000ecb0  34 29 0d 48 62 0f e7 6e  63 6f 6c 3d 32 35 35 20  |4).Hb..ncol=255 |
0000ecc0  8c 0d 48 6c 34 c8 99 22  43 6f 6c 6f 75 72 54 72  |..Hl4.."ColourTr|
0000ecd0  61 6e 73 5f 52 65 61 64  50 61 6c 65 74 74 65 22  |ans_ReadPalette"|
0000ece0  2c 2d 31 2c 2d 31 2c 70  61 6c 65 74 74 65 25 2c  |,-1,-1,palette%,|
0000ecf0  32 35 36 2a 34 0d 48 76  35 e3 49 25 3d 30 b8 32  |256*4.Hv5.I%=0.2|
0000ed00  35 35 3a 70 61 6c 65 74  74 65 25 21 28 49 25 3c  |55:palette%!(I%<|
0000ed10  3c 32 29 3d 70 61 6c 65  74 74 65 25 21 28 49 25  |<2)=palette%!(I%|
0000ed20  3c 3c 32 29 3e 3e 3e 38  3a ed 0d 48 80 05 cc 0d  |<<2)>>>8:..H....|
0000ed30  48 8a 0e e7 6e 63 6f 6c  3d 36 33 20 8c 0d 48 94  |H...ncol=63 ..H.|
0000ed40  0d e3 49 25 3d 30 b8 32  35 35 0d 48 9e 2b 70 61  |..I%=0.255.H.+pa|
0000ed50  6c 65 74 74 65 25 21 28  49 25 3c 3c 32 29 3d 28  |lette%!(I%<<2)=(|
0000ed60  49 25 80 37 20 84 20 28  49 25 80 31 36 29 3e 3e  |I%.7 . (I%.16)>>|
0000ed70  31 29 2a 31 37 0d 48 a8  2f 70 61 6c 65 74 74 65  |1)*17.H./palette|
0000ed80  25 3f 28 49 25 3c 3c 32  20 84 31 29 3d 28 49 25  |%?(I%<<2 .1)=(I%|
0000ed90  80 33 20 84 20 28 49 25  80 26 36 30 29 3e 3e 33  |.3 . (I%.&60)>>3|
0000eda0  29 2a 31 37 0d 48 b2 3b  70 61 6c 65 74 74 65 25  |)*17.H.;palette%|
0000edb0  3f 28 49 25 3c 3c 32 20  84 32 29 3d 28 49 25 80  |?(I%<<2 .2)=(I%.|
0000edc0  33 20 84 20 28 49 25 80  38 29 3e 3e 31 20 84 20  |3 . (I%.8)>>1 . |
0000edd0  28 49 25 80 31 32 38 29  3e 3e 34 29 2a 31 37 0d  |(I%.128)>>4)*17.|
0000ede0  48 bc 05 ed 0d 48 c6 05  cc 0d 48 d0 48 e3 49 25  |H....H....H.H.I%|
0000edf0  3d 30 b8 6e 63 6f 6c 3a  c8 99 22 4f 53 5f 52 65  |=0.ncol:.."OS_Re|
0000ee00  61 64 50 61 6c 65 74 74  65 22 2c 49 25 2c 31 36  |adPalette",I%,16|
0000ee10  20 b8 20 2c 2c 69 25 3a  70 61 6c 65 74 74 65 25  | . ,,i%:palette%|
0000ee20  21 28 49 25 3c 3c 32 29  3d 69 25 3e 3e 3e 38 3a  |!(I%<<2)=i%>>>8:|
0000ee30  ed 0d 48 da 05 cd 0d 48  e4 05 cd 0d 48 ee 25 74  |..H....H....H.%t|
0000ee40  25 3d b9 3a 6b 25 3d 70  61 6c 65 74 74 65 25 2b  |%=.:k%=palette%+|
0000ee50  31 3a 6e 6b 25 3d 70 61  6c 65 74 74 65 25 2b 32  |1:nk%=palette%+2|
0000ee60  0d 48 f8 12 e3 49 25 3d  30 b8 6e 63 6f 6c 2a 34  |.H...I%=0.ncol*4|
0000ee70  88 34 0d 49 02 32 e7 70  61 6c 65 74 74 65 25 3f  |.4.I.2.palette%?|
0000ee80  49 25 3c 3e 6b 25 3f 49  25 20 84 20 70 61 6c 65  |I%<>k%?I% . pale|
0000ee90  74 74 65 25 3f 49 25 3c  3e 6e 6b 25 3f 49 25 20  |tte%?I%<>nk%?I% |
0000eea0  74 25 3d a3 0d 49 0c 05  ed 0d 49 16 17 e7 6e 63  |t%=..I....I...nc|
0000eeb0  6f 6c 3e 31 36 20 e7 74  25 20 6d 24 3d 22 44 22  |ol>16 .t% m$="D"|
0000eec0  0d 49 20 17 e7 6e 63 6f  6c 3d 31 35 20 e7 74 25  |.I ..ncol=15 .t%|
0000eed0  20 6d 24 3d 22 54 22 0d  49 2a 0d e7 6d 24 3d 22  | m$="T".I*..m$="|
0000eee0  52 22 20 8c 0d 49 34 37  e7 20 73 78 25 2a 78 6d  |R" ..I47. sx%*xm|
0000eef0  75 6c 25 2f 78 64 69 76  25 2a 73 79 25 2a 79 6d  |ul%/xdiv%*sy%*ym|
0000ef00  75 6c 25 2f 79 64 69 76  25 3c 32 30 30 30 30 30  |ul%/ydiv%<200000|
0000ef10  20 6b 25 3d 33 20 8b 6b  25 3d 34 0d 49 3e 0c 6e  | k%=3 .k%=4.I>.n|
0000ef20  6b 25 3d 38 2d 6b 25 0d  49 48 0d 74 25 3d 31 3c  |k%=8-k%.IH.t%=1<|
0000ef30  3c 6e 6b 25 0d 49 52 0e  6d 61 73 6b 25 3d 74 25  |<nk%.IR.mask%=t%|
0000ef40  2d 31 0d 49 5c 11 74 64  32 25 3d 31 3c 3c 6e 6b  |-1.I\.td2%=1<<nk|
0000ef50  25 2d 31 0d 49 66 13 73  74 65 70 25 3d 31 3c 3c  |%-1.If.step%=1<<|
0000ef60  28 38 2d 6b 25 29 0d 49  70 24 6e 63 6f 6c 25 3d  |(8-k%).Ip$ncol%=|
0000ef70  6e 63 6f 6c 2b 31 3a e7  6e 63 6f 6c 25 3d 36 34  |ncol+1:.ncol%=64|
0000ef80  20 6e 63 6f 6c 25 3d 32  35 36 0d 49 7a 1b 69 63  | ncol%=256.Iz.ic|
0000ef90  74 25 3d a4 64 69 6d 28  32 5e 28 6b 25 2a 33 29  |t%=.dim(2^(k%*3)|
0000efa0  2a 34 2d 31 29 0d 49 84  61 e7 63 61 63 68 65 25  |*4-1).I.a.cache%|
0000efb0  3c 38 31 39 32 2a 36 20  73 63 72 61 74 63 68 25  |<8192*6 scratch%|
0000efc0  3d a4 64 69 6d 28 38 31  39 32 2a 36 29 3a 73 63  |=.dim(8192*6):sc|
0000efd0  72 61 74 63 68 73 7a 25  3d 38 31 39 32 2a 36 20  |ratchsz%=8192*6 |
0000efe0  8b 73 63 72 61 74 63 68  25 3d 64 61 74 61 63 61  |.scratch%=dataca|
0000eff0  63 68 65 25 3a 73 63 72  61 74 63 68 73 7a 25 3d  |che%:scratchsz%=|
0000f000  63 61 63 68 65 25 0d 49  8e 3e e7 69 6e 66 6f 25  |cache%.I.>.info%|
0000f010  20 f1 22 42 65 67 69 6e  20 74 61 62 6c 65 20 67  | ."Begin table g|
0000f020  65 6e 65 72 61 74 69 6f  6e 20 77 69 74 68 20 22  |eneration with "|
0000f030  3b 73 63 72 61 74 63 68  73 7a 25 22 20 62 79 74  |;scratchsz%" byt|
0000f040  65 73 2e 22 0d 49 98 0d  e3 5a 25 3d 30 b8 32 88  |es.".I...Z%=0.2.|
0000f050  32 0d 49 a2 0c 50 25 3d  63 6f 64 65 25 0d 49 ac  |2.I..P%=code%.I.|
0000f060  0b 5b 4f 50 54 20 5a 25  0d 49 b6 0a 2e 6d 61 6b  |.[OPT Z%.I...mak|
0000f070  65 25 0d 49 c0 14 53 54  4d 46 44 20 72 31 33 21  |e%.I..STMFD r13!|
0000f080  2c 7b 72 31 34 7d 0d 49  ca 0e 4c 44 52 20 72 34  |,{r14}.I..LDR r4|
0000f090  2c 69 63 74 0d 49 d4 13  4d 4f 56 20 72 32 2c 23  |,ict.I..MOV r2,#|
0000f0a0  73 74 65 70 25 2f 32 0d  49 de 0d 2e 62 6c 75 65  |step%/2.I...blue|
0000f0b0  6c 6f 6f 70 0d 49 e8 13  4d 4f 56 20 72 31 2c 23  |loop.I..MOV r1,#|
0000f0c0  73 74 65 70 25 2f 32 0d  49 f2 0e 2e 67 72 65 65  |step%/2.I...gree|
0000f0d0  6e 6c 6f 6f 70 0d 49 fc  13 4d 4f 56 20 72 30 2c  |nloop.I..MOV r0,|
0000f0e0  23 73 74 65 70 25 2f 32  0d 4a 06 0c 2e 72 65 64  |#step%/2.J...red|
0000f0f0  6c 6f 6f 70 0d 4a 1a 16  4d 4f 56 20 72 33 2c 72  |loop.J..MOV r3,r|
0000f100  30 2c 4c 53 52 20 23 6e  6b 25 0d 4a 24 17 4d 4f  |0,LSR #nk%.J$.MO|
0000f110  56 20 72 31 34 2c 72 31  2c 4c 53 52 20 23 6e 6b  |V r14,r1,LSR #nk|
0000f120  25 0d 4a 2e 16 4d 4f 56  20 72 35 2c 72 32 2c 4c  |%.J..MOV r5,r2,L|
0000f130  53 52 20 23 6e 6b 25 0d  4a 38 18 84 52 20 72 33  |SR #nk%.J8..R r3|
0000f140  2c 72 33 2c 72 31 34 2c  4c 53 4c 20 23 6b 25 0d  |,r3,r14,LSL #k%.|
0000f150  4a 42 19 84 52 20 72 33  2c 72 33 2c 72 35 2c 4c  |JB..R r3,r3,r5,L|
0000f160  53 4c 20 23 6b 25 2a 32  0d 4a 4c 0e 42 4c 20 64  |SL #k%*2.JL.BL d|
0000f170  65 76 69 6f 75 73 0d 4a  56 16 41 44 44 20 72 30  |evious.JV.ADD r0|
0000f180  2c 72 30 2c 23 73 74 65  70 25 2a 32 0d 4a 60 0f  |,r0,#step%*2.J`.|
0000f190  43 4d 50 20 72 30 2c 23  32 35 36 0d 4a 6a 0f 42  |CMP r0,#256.Jj.B|
0000f1a0  43 43 20 72 65 64 6c 6f  6f 70 0d 4a 74 14 41 44  |CC redloop.Jt.AD|
0000f1b0  44 20 72 31 2c 72 31 2c  23 73 74 65 70 25 0d 4a  |D r1,r1,#step%.J|
0000f1c0  7e 0f 43 4d 50 20 72 31  2c 23 32 35 36 0d 4a 88  |~.CMP r1,#256.J.|
0000f1d0  11 42 43 43 20 67 72 65  65 6e 6c 6f 6f 70 0d 4a  |.BCC greenloop.J|
0000f1e0  92 14 41 44 44 20 72 32  2c 72 32 2c 23 73 74 65  |..ADD r2,r2,#ste|
0000f1f0  70 25 0d 4a 9c 0f 43 4d  50 20 72 32 2c 23 32 35  |p%.J..CMP r2,#25|
0000f200  36 0d 4a a6 10 42 43 43  20 62 6c 75 65 6c 6f 6f  |6.J..BCC blueloo|
0000f210  70 0d 4a b0 14 4c 44 4d  46 44 20 72 31 33 21 2c  |p.J..LDMFD r13!,|
0000f220  7b 70 63 7d 5e 0d 4a ba  14 2e 63 74 20 44 43 44  |{pc}^.J...ct DCD|
0000f230  20 70 61 6c 65 74 74 65  25 0d 4a c4 1f 2e 6d 69  | palette%.J...mi|
0000f240  6e 20 44 43 44 20 63 6f  64 65 25 2b 38 31 39 32  |n DCD code%+8192|
0000f250  2d 32 35 36 2a 32 2a 34  0d 4a ce 11 2e 69 63 74  |-256*2*4.J...ict|
0000f260  20 44 43 44 20 69 63 74  25 0d 4a d8 17 2e 66 73  | DCD ict%.J...fs|
0000f270  61 61 64 20 44 43 44 20  73 63 72 61 74 63 68 25  |aad DCD scratch%|
0000f280  0d 4a e2 23 2e 66 73 61  6c 69 6d 20 44 43 44 20  |.J.#.fsalim DCD |
0000f290  73 63 72 61 74 63 68 25  2b 73 63 72 61 74 63 68  |scratch%+scratch|
0000f2a0  73 7a 25 0d 4a ec 0c 2e  64 65 76 69 6f 75 73 0d  |sz%.J...devious.|
0000f2b0  4a f6 26 53 54 4d 46 44  20 72 31 33 21 2c 7b 72  |J.&STMFD r13!,{r|
0000f2c0  30 2c 72 31 2c 72 32 2c  72 33 2c 72 34 2c 72 38  |0,r1,r2,r3,r4,r8|
0000f2d0  2c 72 31 34 7d 0d 4b 00  1c 42 49 43 20 72 30 2c  |,r14}.K..BIC r0,|
0000f2e0  72 30 2c 23 28 6d 61 73  6b 25 3c 3c 31 29 2b 31  |r0,#(mask%<<1)+1|
0000f2f0  20 0d 4b 0a 14 42 49 43  20 72 31 2c 72 31 2c 23  | .K..BIC r1,r1,#|
0000f300  6d 61 73 6b 25 0d 4b 14  14 42 49 43 20 72 32 2c  |mask%.K..BIC r2,|
0000f310  72 32 2c 23 6d 61 73 6b  25 0d 4b 32 0d 4d 4f 56  |r2,#mask%.K2.MOV|
0000f320  20 72 35 2c 23 30 0d 4b  3c 0d 4c 44 52 20 72 36  | r5,#0.K<.LDR r6|
0000f330  2c 63 74 0d 4b 46 13 4d  4f 56 20 72 39 2c 23 26  |,ct.KF.MOV r9,#&|
0000f340  66 66 30 30 30 30 0d 4b  50 14 4d 4f 56 20 72 31  |ff0000.KP.MOV r1|
0000f350  34 2c 23 26 66 66 30 30  30 30 0d 4b 5a 0f 4c 44  |4,#&ff0000.KZ.LD|
0000f360  52 20 72 31 32 2c 6d 69  6e 0d 4b 64 0c 2e 64 65  |R r12,min.Kd..de|
0000f370  76 6c 6f 6f 70 0d 4b 6e  1a 4c 44 52 20 72 37 2c  |vloop.Kn.LDR r7,|
0000f380  5b 72 36 2c 72 35 2c 4c  53 4c 20 23 32 5d 20 0d  |[r6,r5,LSL #2] .|
0000f390  4b 78 16 4d 4f 56 20 72  38 2c 72 37 2c 6c 73 72  |Kx.MOV r8,r7,lsr|
0000f3a0  20 23 31 36 20 0d 4b 82  16 42 49 43 20 72 31 30  | #16 .K..BIC r10|
0000f3b0  2c 72 38 2c 23 6d 61 73  6b 25 20 0d 4b 8c 13 41  |,r8,#mask% .K..A|
0000f3c0  44 44 20 72 31 31 2c 72  32 2c 23 74 25 20 0d 4b  |DD r11,r2,#t% .K|
0000f3d0  96 0f 43 4d 50 20 72 31  30 2c 72 32 20 0d 4b a0  |..CMP r10,r2 .K.|
0000f3e0  11 42 45 51 20 62 6c 75  65 65 71 75 61 6c 0d 4b  |.BEQ blueequal.K|
0000f3f0  aa 14 53 55 42 43 43 20  72 31 30 2c 72 32 2c 72  |..SUBCC r10,r2,r|
0000f400  38 20 0d 4b b4 15 53 55  42 43 43 20 72 31 31 2c  |8 .K..SUBCC r11,|
0000f410  72 31 31 2c 72 38 20 0d  4b be 15 53 55 42 43 53  |r11,r8 .K..SUBCS|
0000f420  20 72 31 30 2c 72 38 2c  72 31 31 20 0d 4b c8 14  | r10,r8,r11 .K..|
0000f430  53 55 42 43 53 20 72 31  31 2c 72 38 2c 72 32 20  |SUBCS r11,r8,r2 |
0000f440  0d 4b d2 13 4d 55 4c 20  72 33 2c 72 31 30 2c 72  |.K..MUL r3,r10,r|
0000f450  31 30 20 0d 4b dc 0d 2e  64 6f 6e 65 62 6c 75 65  |10 .K...doneblue|
0000f460  0d 4b e6 13 4d 55 4c 20  72 34 2c 72 31 31 2c 72  |.K..MUL r4,r11,r|
0000f470  31 31 20 0d 4b f0 14 4d  4f 56 20 72 38 2c 72 37  |11 .K..MOV r8,r7|
0000f480  2c 6c 73 72 20 23 38 0d  4b fa 11 80 20 72 38 2c  |,lsr #8.K... r8,|
0000f490  72 38 2c 23 32 35 35 20  0d 4c 04 16 42 49 43 20  |r8,#255 .L..BIC |
0000f4a0  72 31 30 2c 72 38 2c 23  6d 61 73 6b 25 20 0d 4c  |r10,r8,#mask% .L|
0000f4b0  0e 13 41 44 44 20 72 31  31 2c 72 31 2c 23 74 25  |..ADD r11,r1,#t%|
0000f4c0  20 0d 4c 18 10 43 4d 50  20 72 31 30 2c 72 31 20  | .L..CMP r10,r1 |
0000f4d0  20 0d 4c 22 12 42 45 51  20 67 72 65 65 6e 65 71  | .L".BEQ greeneq|
0000f4e0  75 61 6c 0d 4c 2c 14 53  55 42 43 43 20 72 31 30  |ual.L,.SUBCC r10|
0000f4f0  2c 72 31 2c 72 38 20 0d  4c 36 15 53 55 42 43 43  |,r1,r8 .L6.SUBCC|
0000f500  20 72 31 31 2c 72 31 31  2c 72 38 20 0d 4c 40 15  | r11,r11,r8 .L@.|
0000f510  53 55 42 43 53 20 72 31  30 2c 72 38 2c 72 31 31  |SUBCS r10,r8,r11|
0000f520  20 0d 4c 4a 14 53 55 42  43 53 20 72 31 31 2c 72  | .LJ.SUBCS r11,r|
0000f530  38 2c 72 31 20 0d 4c 54  16 4d 4c 41 20 72 33 2c  |8,r1 .LT.MLA r3,|
0000f540  72 31 30 2c 72 31 30 2c  72 33 20 0d 4c 5e 0e 2e  |r10,r10,r3 .L^..|
0000f550  64 6f 6e 65 67 72 65 65  6e 0d 4c 68 16 4d 4c 41  |donegreen.Lh.MLA|
0000f560  20 72 34 2c 72 31 31 2c  72 31 31 2c 72 34 20 0d  | r4,r11,r11,r4 .|
0000f570  4c 72 11 80 20 72 38 2c  72 37 2c 23 32 35 35 20  |Lr.. r8,r7,#255 |
0000f580  0d 4c 86 16 42 49 43 20  72 31 30 2c 72 38 2c 23  |.L..BIC r10,r8,#|
0000f590  6d 61 73 6b 25 20 0d 4c  90 13 41 44 44 20 72 31  |mask% .L..ADD r1|
0000f5a0  31 2c 72 30 2c 23 74 25  20 0d 4c 9a 0f 43 4d 50  |1,r0,#t% .L..CMP|
0000f5b0  20 72 31 30 2c 72 30 20  0d 4c a4 11 42 45 51 20  | r10,r0 .L..BEQ |
0000f5c0  72 65 64 65 71 75 61 6c  30 0d 4c ae 14 53 55 42  |redequal0.L..SUB|
0000f5d0  43 43 20 72 31 30 2c 72  30 2c 72 38 20 0d 4c b8  |CC r10,r0,r8 .L.|
0000f5e0  15 53 55 42 43 43 20 72  31 31 2c 72 31 31 2c 72  |.SUBCC r11,r11,r|
0000f5f0  38 20 0d 4c c2 15 53 55  42 43 53 20 72 31 30 2c  |8 .L..SUBCS r10,|
0000f600  72 38 2c 72 31 31 20 0d  4c cc 14 53 55 42 43 53  |r8,r11 .L..SUBCS|
0000f610  20 72 31 31 2c 72 38 2c  72 30 20 0d 4c d6 16 4d  | r11,r8,r0 .L..M|
0000f620  4c 41 20 72 37 2c 72 31  30 2c 72 31 30 2c 72 33  |LA r7,r10,r10,r3|
0000f630  20 0d 4c e0 1b 53 54 52  20 72 37 2c 5b 72 31 32  | .L..STR r7,[r12|
0000f640  2c 72 35 2c 4c 53 4c 20  23 32 5d 20 0d 4c ea 0d  |,r5,LSL #2] .L..|
0000f650  2e 64 6f 6e 65 72 65 64  30 0d 4c f4 16 4d 4c 41  |.donered0.L..MLA|
0000f660  20 72 37 2c 72 31 31 2c  72 31 31 2c 72 34 20 0d  | r7,r11,r11,r4 .|
0000f670  4c fe 0e 43 4d 50 20 72  37 2c 72 39 20 0d 4d 08  |L..CMP r7,r9 .M.|
0000f680  10 4d 4f 56 43 43 20 72  39 2c 72 37 20 0d 4d 1c  |.MOVCC r9,r7 .M.|
0000f690  12 41 44 44 20 72 37 2c  72 30 2c 23 74 25 20 0d  |.ADD r7,r0,#t% .|
0000f6a0  4d 26 16 42 49 43 20 72  31 30 2c 72 38 2c 23 6d  |M&.BIC r10,r8,#m|
0000f6b0  61 73 6b 25 20 0d 4d 30  13 41 44 44 20 72 31 31  |ask% .M0.ADD r11|
0000f6c0  2c 72 37 2c 23 74 25 20  0d 4d 3a 0f 43 4d 50 20  |,r7,#t% .M:.CMP |
0000f6d0  72 31 30 2c 72 37 20 0d  4d 44 11 42 45 51 20 72  |r10,r7 .MD.BEQ r|
0000f6e0  65 64 65 71 75 61 6c 31  0d 4d 4e 14 53 55 42 43  |edequal1.MN.SUBC|
0000f6f0  43 20 72 31 30 2c 72 37  2c 72 38 20 0d 4d 58 15  |C r10,r7,r8 .MX.|
0000f700  53 55 42 43 43 20 72 31  31 2c 72 31 31 2c 72 38  |SUBCC r11,r11,r8|
0000f710  20 0d 4d 62 15 53 55 42  43 53 20 72 31 30 2c 72  | .Mb.SUBCS r10,r|
0000f720  38 2c 72 31 31 20 0d 4d  6c 14 53 55 42 43 53 20  |8,r11 .Ml.SUBCS |
0000f730  72 31 31 2c 72 38 2c 72  37 20 0d 4d 76 16 4d 4c  |r11,r8,r7 .Mv.ML|
0000f740  41 20 72 33 2c 72 31 30  2c 72 31 30 2c 72 33 20  |A r3,r10,r10,r3 |
0000f750  0d 4d 80 0d 2e 64 6f 6e  65 72 65 64 31 0d 4d 8a  |.M...donered1.M.|
0000f760  14 41 44 44 20 72 37 2c  72 35 2c 23 6e 63 6f 6c  |.ADD r7,r5,#ncol|
0000f770  25 0d 4d 94 1b 53 54 52  20 72 33 2c 5b 72 31 32  |%.M..STR r3,[r12|
0000f780  2c 72 37 2c 4c 53 4c 20  23 32 5d 20 0d 4d 9e 16  |,r7,LSL #2] .M..|
0000f790  4d 4c 41 20 72 37 2c 72  31 31 2c 72 31 31 2c 72  |MLA r7,r11,r11,r|
0000f7a0  34 20 0d 4d a8 0f 43 4d  50 20 72 37 2c 72 31 34  |4 .M..CMP r7,r14|
0000f7b0  20 0d 4d b2 11 4d 4f 56  43 43 20 72 31 34 2c 72  | .M..MOVCC r14,r|
0000f7c0  37 20 0d 4d bc 10 41 44  44 20 72 35 2c 72 35 2c  |7 .M..ADD r5,r5,|
0000f7d0  23 31 0d 4d c6 11 43 4d  50 20 72 35 2c 23 6e 63  |#1.M..CMP r5,#nc|
0000f7e0  6f 6c 25 0d 4d d0 0f 42  43 43 20 64 65 76 6c 6f  |ol%.M..BCC devlo|
0000f7f0  6f 70 0d 4d da 1f 4c 44  4d 46 44 20 72 31 33 21  |op.M..LDMFD r13!|
0000f800  2c 7b 72 30 2c 72 31 2c  72 32 2c 72 33 2c 72 34  |,{r0,r1,r2,r3,r4|
0000f810  7d 0d 4d ee 11 4c 44 52  20 72 35 2c 66 73 61 61  |}.M..LDR r5,fsaa|
0000f820  64 20 0d 4d f8 0d 4d 4f  56 20 72 37 2c 72 35 0d  |d .M..MOV r7,r5.|
0000f830  4e 02 0e 4d 4f 56 20 72  31 30 2c 23 30 0d 4e 0c  |N..MOV r10,#0.N.|
0000f840  0d 2e 63 61 6c 63 6e 75  6d 30 0d 4e 16 18 4c 44  |..calcnum0.N..LD|
0000f850  4d 49 41 20 72 31 32 21  2c 7b 72 38 2c 72 31 31  |MIA r12!,{r8,r11|
0000f860  7d 20 0d 4e 20 0e 43 4d  50 20 72 38 2c 72 39 20  |} .N .CMP r8,r9 |
0000f870  0d 4e 2a 16 53 54 52 4c  45 42 20 72 31 30 2c 5b  |.N*.STRLEB r10,[|
0000f880  72 37 5d 2c 23 31 0d 4e  34 12 41 44 44 20 72 31  |r7],#1.N4.ADD r1|
0000f890  30 2c 72 31 30 2c 23 31  0d 4e 3e 0f 43 4d 50 20  |0,r10,#1.N>.CMP |
0000f8a0  72 31 31 2c 72 39 20 0d  4e 48 16 53 54 52 4c 45  |r11,r9 .NH.STRLE|
0000f8b0  42 20 72 31 30 2c 5b 72  37 5d 2c 23 31 0d 4e 52  |B r10,[r7],#1.NR|
0000f8c0  12 41 44 44 20 72 31 30  2c 72 31 30 2c 23 31 0d  |.ADD r10,r10,#1.|
0000f8d0  4e 5c 18 4c 44 4d 49 41  20 72 31 32 21 2c 7b 72  |N\.LDMIA r12!,{r|
0000f8e0  38 2c 72 31 31 7d 20 0d  4e 66 0e 43 4d 50 20 72  |8,r11} .Nf.CMP r|
0000f8f0  38 2c 72 39 20 0d 4e 70  16 53 54 52 4c 45 42 20  |8,r9 .Np.STRLEB |
0000f900  72 31 30 2c 5b 72 37 5d  2c 23 31 0d 4e 7a 12 41  |r10,[r7],#1.Nz.A|
0000f910  44 44 20 72 31 30 2c 72  31 30 2c 23 31 0d 4e 84  |DD r10,r10,#1.N.|
0000f920  0f 43 4d 50 20 72 31 31  2c 72 39 20 0d 4e 8e 16  |.CMP r11,r9 .N..|
0000f930  53 54 52 4c 45 42 20 72  31 30 2c 5b 72 37 5d 2c  |STRLEB r10,[r7],|
0000f940  23 31 0d 4e 98 12 41 44  44 20 72 31 30 2c 72 31  |#1.N..ADD r10,r1|
0000f950  30 2c 23 31 0d 4e a2 12  43 4d 50 20 72 31 30 2c  |0,#1.N..CMP r10,|
0000f960  23 6e 63 6f 6c 25 0d 4e  ac 10 42 43 43 20 63 61  |#ncol%.N..BCC ca|
0000f970  6c 63 6e 75 6d 30 0d 4e  b6 12 53 55 42 53 20 72  |lcnum0.N..SUBS r|
0000f980  31 30 2c 72 37 2c 72 35  0d 4e c0 12 53 57 49 45  |10,r7,r5.N..SWIE|
0000f990  51 20 32 35 36 2b 97 22  41 22 0d 4e ca 19 43 4d  |Q 256+."A".N..CM|
0000f9a0  50 20 72 31 30 2c 23 34  20 3b 69 66 3c 34 20 74  |P r10,#4 ;if<4 t|
0000f9b0  68 65 6e 0d 4e d4 23 4d  4f 56 43 43 20 72 37 2c  |hen.N.#MOVCC r7,|
0000f9c0  72 35 20 3b 72 65 73 65  74 20 6c 69 73 74 20 70  |r5 ;reset list p|
0000f9d0  6f 69 6e 74 65 72 0d 4e  de 22 4c 44 52 43 43 42  |ointer.N."LDRCCB|
0000f9e0  20 72 35 2c 5b 72 37 5d  20 3b 66 69 72 73 74 20  | r5,[r7] ;first |
0000f9f0  70 6f 73 73 69 62 6c 65  0d 4e e8 26 4c 44 52 43  |possible.N.&LDRC|
0000fa00  43 42 20 72 38 2c 5b 72  37 2c 23 31 5d 20 3b 73  |CB r8,[r7,#1] ;s|
0000fa10  65 63 6f 6e 64 20 70 6f  73 73 69 62 6c 65 0d 4e  |econd possible.N|
0000fa20  f2 18 84 52 43 43 20 72  35 2c 72 35 2c 72 38 2c  |...RCC r5,r5,r8,|
0000fa30  6c 73 6c 20 23 38 0d 4e  fc 25 4c 44 52 43 43 42  |lsl #8.N.%LDRCCB|
0000fa40  20 72 38 2c 5b 72 37 2c  23 32 5d 20 3b 74 68 69  | r8,[r7,#2] ;thi|
0000fa50  72 64 20 70 6f 73 73 69  62 6c 65 0d 4f 06 19 84  |rd possible.O...|
0000fa60  52 43 43 20 72 35 2c 72  35 2c 72 38 2c 6c 73 6c  |RCC r5,r5,r8,lsl|
0000fa70  20 23 31 36 0d 4f 10 19  41 44 44 20 72 35 2c 72  | #16.O..ADD r5,r|
0000fa80  35 2c 72 31 30 2c 6c 73  6c 20 23 32 34 0d 4f 1a  |5,r10,lsl #24.O.|
0000fa90  11 42 49 43 20 72 31 30  2c 72 33 2c 23 31 0d 4f  |.BIC r10,r3,#1.O|
0000faa0  24 1a 53 54 52 20 72 35  2c 5b 72 34 2c 72 31 30  |$.STR r5,[r4,r10|
0000fab0  2c 4c 53 4c 20 23 32 5d  0d 4f 2e 0d 4d 4f 56 20  |,LSL #2].O..MOV |
0000fac0  72 35 2c 72 37 0d 4f 38  0e 4d 4f 56 20 72 31 30  |r5,r7.O8.MOV r10|
0000fad0  2c 23 30 0d 4f 42 0d 2e  63 61 6c 63 6e 75 6d 31  |,#0.OB..calcnum1|
0000fae0  0d 4f 4c 18 4c 44 4d 49  41 20 72 31 32 21 2c 7b  |.OL.LDMIA r12!,{|
0000faf0  72 38 2c 72 31 31 7d 20  0d 4f 56 0f 43 4d 50 20  |r8,r11} .OV.CMP |
0000fb00  72 38 2c 72 31 34 20 0d  4f 60 16 53 54 52 4c 45  |r8,r14 .O`.STRLE|
0000fb10  42 20 72 31 30 2c 5b 72  37 5d 2c 23 31 0d 4f 6a  |B r10,[r7],#1.Oj|
0000fb20  12 41 44 44 20 72 31 30  2c 72 31 30 2c 23 31 0d  |.ADD r10,r10,#1.|
0000fb30  4f 74 10 43 4d 50 20 72  31 31 2c 72 31 34 20 0d  |Ot.CMP r11,r14 .|
0000fb40  4f 7e 16 53 54 52 4c 45  42 20 72 31 30 2c 5b 72  |O~.STRLEB r10,[r|
0000fb50  37 5d 2c 23 31 0d 4f 88  12 41 44 44 20 72 31 30  |7],#1.O..ADD r10|
0000fb60  2c 72 31 30 2c 23 31 0d  4f 92 18 4c 44 4d 49 41  |,r10,#1.O..LDMIA|
0000fb70  20 72 31 32 21 2c 7b 72  38 2c 72 31 31 7d 20 0d  | r12!,{r8,r11} .|
0000fb80  4f 9c 0f 43 4d 50 20 72  38 2c 72 31 34 20 0d 4f  |O..CMP r8,r14 .O|
0000fb90  a6 16 53 54 52 4c 45 42  20 72 31 30 2c 5b 72 37  |..STRLEB r10,[r7|
0000fba0  5d 2c 23 31 0d 4f b0 12  41 44 44 20 72 31 30 2c  |],#1.O..ADD r10,|
0000fbb0  72 31 30 2c 23 31 0d 4f  ba 10 43 4d 50 20 72 31  |r10,#1.O..CMP r1|
0000fbc0  31 2c 72 31 34 20 0d 4f  c4 16 53 54 52 4c 45 42  |1,r14 .O..STRLEB|
0000fbd0  20 72 31 30 2c 5b 72 37  5d 2c 23 31 0d 4f ce 12  | r10,[r7],#1.O..|
0000fbe0  41 44 44 20 72 31 30 2c  72 31 30 2c 23 31 0d 4f  |ADD r10,r10,#1.O|
0000fbf0  d8 12 43 4d 50 20 72 31  30 2c 23 6e 63 6f 6c 25  |..CMP r10,#ncol%|
0000fc00  0d 4f e2 10 42 43 43 20  63 61 6c 63 6e 75 6d 31  |.O..BCC calcnum1|
0000fc10  0d 4f ec 12 53 55 42 53  20 72 31 30 2c 72 37 2c  |.O..SUBS r10,r7,|
0000fc20  72 35 0d 4f f6 12 53 57  49 45 51 20 32 35 36 2b  |r5.O..SWIEQ 256+|
0000fc30  97 22 42 22 0d 50 00 19  43 4d 50 20 72 31 30 2c  |."B".P..CMP r10,|
0000fc40  23 34 20 3b 69 66 3c 34  20 74 68 65 6e 0d 50 0a  |#4 ;if<4 then.P.|
0000fc50  10 4d 4f 56 43 43 20 72  37 2c 72 35 20 0d 50 14  |.MOVCC r7,r5 .P.|
0000fc60  13 4c 44 52 43 43 42 20  72 35 2c 5b 72 37 5d 20  |.LDRCCB r5,[r7] |
0000fc70  0d 50 1e 16 4c 44 52 43  43 42 20 72 38 2c 5b 72  |.P..LDRCCB r8,[r|
0000fc80  37 2c 23 31 5d 20 0d 50  28 18 84 52 43 43 20 72  |7,#1] .P(..RCC r|
0000fc90  35 2c 72 35 2c 72 38 2c  6c 73 6c 20 23 38 0d 50  |5,r5,r8,lsl #8.P|
0000fca0  32 16 4c 44 52 43 43 42  20 72 38 2c 5b 72 37 2c  |2.LDRCCB r8,[r7,|
0000fcb0  23 32 5d 20 0d 50 3c 19  84 52 43 43 20 72 35 2c  |#2] .P<..RCC r5,|
0000fcc0  72 35 2c 72 38 2c 6c 73  6c 20 23 31 36 0d 50 46  |r5,r8,lsl #16.PF|
0000fcd0  19 41 44 44 20 72 35 2c  72 35 2c 72 31 30 2c 6c  |.ADD r5,r5,r10,l|
0000fce0  73 6c 20 23 32 34 0d 50  50 10 84 52 20 72 31 30  |sl #24.PP..R r10|
0000fcf0  2c 72 33 2c 23 31 0d 50  5a 1a 53 54 52 20 72 35  |,r3,#1.PZ.STR r5|
0000fd00  2c 5b 72 34 2c 72 31 30  2c 4c 53 4c 20 23 32 5d  |,[r4,r10,LSL #2]|
0000fd10  0d 50 64 10 53 54 52 20  72 37 2c 66 73 61 61 64  |.Pd.STR r7,fsaad|
0000fd20  0d 50 6e 11 4c 44 52 20  72 38 2c 66 73 61 6c 69  |.Pn.LDR r8,fsali|
0000fd30  6d 0d 50 78 0d 43 4d 50  20 72 37 2c 72 38 0d 50  |m.Px.CMP r7,r8.P|
0000fd40  82 12 53 57 49 43 53 20  32 35 36 2b 97 22 21 22  |..SWICS 256+."!"|
0000fd50  0d 50 8c 17 4c 44 4d 46  44 20 72 31 33 21 2c 7b  |.P..LDMFD r13!,{|
0000fd60  72 38 2c 70 63 7d 5e 0d  50 96 0e 2e 72 65 64 65  |r8,pc}^.P...rede|
0000fd70  71 75 61 6c 30 0d 50 a0  1b 53 54 52 20 72 33 2c  |qual0.P..STR r3,|
0000fd80  5b 72 31 32 2c 72 35 2c  4c 53 4c 20 23 32 5d 20  |[r12,r5,LSL #2] |
0000fd90  0d 50 aa 10 54 53 54 20  72 38 2c 23 74 64 32 25  |.P..TST r8,#td2%|
0000fda0  0d 50 b4 14 53 55 42 4e  45 20 72 31 31 2c 72 38  |.P..SUBNE r11,r8|
0000fdb0  2c 72 30 20 0d 50 be 15  53 55 42 45 51 20 72 31  |,r0 .P..SUBEQ r1|
0000fdc0  31 2c 72 31 31 2c 72 38  20 0d 50 c8 0e 42 20 64  |1,r11,r8 .P..B d|
0000fdd0  6f 6e 65 72 65 64 30 0d  50 d2 0e 2e 72 65 64 65  |onered0.P...rede|
0000fde0  71 75 61 6c 31 0d 50 dc  10 54 53 54 20 72 38 2c  |qual1.P..TST r8,|
0000fdf0  23 74 64 32 25 0d 50 e6  14 53 55 42 4e 45 20 72  |#td2%.P..SUBNE r|
0000fe00  31 31 2c 72 38 2c 72 37  20 0d 50 f0 15 53 55 42  |11,r8,r7 .P..SUB|
0000fe10  45 51 20 72 31 31 2c 72  31 31 2c 72 38 20 0d 50  |EQ r11,r11,r8 .P|
0000fe20  fa 0e 42 20 64 6f 6e 65  72 65 64 31 0d 51 04 0f  |..B donered1.Q..|
0000fe30  2e 67 72 65 65 6e 65 71  75 61 6c 0d 51 0e 10 54  |.greenequal.Q..T|
0000fe40  53 54 20 72 38 2c 23 74  64 32 25 0d 51 18 14 53  |ST r8,#td2%.Q..S|
0000fe50  55 42 4e 45 20 72 31 31  2c 72 38 2c 72 31 20 0d  |UBNE r11,r8,r1 .|
0000fe60  51 22 15 53 55 42 45 51  20 72 31 31 2c 72 31 31  |Q".SUBEQ r11,r11|
0000fe70  2c 72 38 20 0d 51 2c 0f  42 20 64 6f 6e 65 67 72  |,r8 .Q,.B donegr|
0000fe80  65 65 6e 0d 51 36 0e 2e  62 6c 75 65 65 71 75 61  |een.Q6..blueequa|
0000fe90  6c 0d 51 40 0e 4d 4f 56  20 72 33 2c 23 30 20 0d  |l.Q@.MOV r3,#0 .|
0000fea0  51 4a 10 54 53 54 20 72  38 2c 23 74 64 32 25 0d  |QJ.TST r8,#td2%.|
0000feb0  51 54 14 53 55 42 4e 45  20 72 31 31 2c 72 38 2c  |QT.SUBNE r11,r8,|
0000fec0  72 32 20 0d 51 5e 15 53  55 42 45 51 20 72 31 31  |r2 .Q^.SUBEQ r11|
0000fed0  2c 72 31 31 2c 72 38 20  0d 51 68 0e 42 20 64 6f  |,r11,r8 .Qh.B do|
0000fee0  6e 65 62 6c 75 65 0d 51  72 05 5d 0d 51 7c 05 ed  |neblue.Qr.].Q|..|
0000fef0  0d 51 86 0f 49 25 3d 91  3a d6 6d 61 6b 65 25 0d  |.Q..I%=.:.make%.|
0000ff00  51 90 6d e7 69 6e 66 6f  25 20 f1 22 47 65 6e 65  |Q.m.info% ."Gene|
0000ff10  72 61 74 65 64 20 27 72  27 22 3b 6b 25 22 20 74  |rated 'r'";k%" t|
0000ff20  61 62 6c 65 73 20 66 6f  72 20 22 3b 6e 63 6f 6c  |ables for ";ncol|
0000ff30  25 22 20 63 6f 6c 6f 75  72 73 20 75 73 69 6e 67  |%" colours using|
0000ff40  20 22 3b 21 66 73 61 61  64 2d 73 63 72 61 74 63  | ";!fsaad-scratc|
0000ff50  68 25 22 20 62 79 74 65  73 2c 20 74 61 6b 69 6e  |h%" bytes, takin|
0000ff60  67 20 22 91 2d 49 25 22  20 63 53 22 0d 51 9a 25  |g ".-I%" cS".Q.%|
0000ff70  73 61 66 65 73 75 62 69  63 74 25 3d a4 64 69 6d  |safesubict%=.dim|
0000ff80  28 21 66 73 61 61 64 2d  73 63 72 61 74 63 68 25  |(!fsaad-scratch%|
0000ff90  29 0d 51 a4 3a e3 49 25  3d 30 b8 21 66 73 61 61  |).Q.:.I%=0.!fsaa|
0000ffa0  64 2d 73 63 72 61 74 63  68 25 2b 34 88 34 3a 73  |d-scratch%+4.4:s|
0000ffb0  61 66 65 73 75 62 69 63  74 25 21 49 25 3d 73 63  |afesubict%!I%=sc|
0000ffc0  72 61 74 63 68 25 21 49  25 3a ed 0d 51 ae 4f e3  |ratch%!I%:..Q.O.|
0000ffd0  49 25 3d 30 b8 32 5e 28  6b 25 2a 33 29 2a 34 2d  |I%=0.2^(k%*3)*4-|
0000ffe0  31 88 34 3a e7 28 69 63  74 25 21 49 25 3e 3e 3e  |1.4:.(ict%!I%>>>|
0000fff0  32 34 29 3e 33 20 69 63  74 25 21 49 25 3d 69 63  |24)>3 ict%!I%=ic|
00010000  74 25 21 49 25 2d 73 63  72 61 74 63 68 25 2b 73  |t%!I%-scratch%+s|
00010010  61 66 65 73 75 62 69 63  74 25 0d 51 b8 05 ed 0d  |afesubict%.Q....|
00010020  51 c2 05 cd 0d 51 cc 05  cd 0d 51 d6 13 e7 66 61  |Q....Q....Q...fa|
00010030  73 74 25 20 e7 eb 3c 3e  30 20 eb 30 0d 51 ea 0a  |st% ..<>0 .0.Q..|
00010040  c8 8e 20 6d 20 ca 0d 51  f4 0e c9 20 2d 31 3a 63  |.. m ..Q... -1:c|
00010050  6f 6c 3d 30 0d 51 fe 1d  c9 20 2d 33 2c 2d 34 2c  |ol=0.Q... -3,-4,|
00010060  2d 35 2c 2d 36 2c 2d 37  2c 2d 38 3a 63 6f 6c 3d  |-5,-6,-7,-8:col=|
00010070  32 0d 52 08 05 7f 0d 52  12 19 e7 6d 24 3d 22 44  |2.R....R...m$="D|
00010080  22 20 e7 6e 63 6f 6c 3d  33 20 6d 24 3d 22 22 0d  |" .ncol=3 m$="".|
00010090  52 1c 30 63 6f 6c 3d 30  3a e7 6e 63 6f 6c 3e 31  |R.0col=0:.ncol>1|
000100a0  35 20 84 6d 24 3d 22 43  22 20 84 6d 24 3d 22 44  |5 .m$="C" .m$="D|
000100b0  22 20 84 6d 24 3d 22 52  22 20 63 6f 6c 3d 32 0d  |" .m$="R" col=2.|
000100c0  52 26 2e e7 6e 63 6f 6c  3d 36 33 20 84 20 6e 63  |R&..ncol=63 . nc|
000100d0  6f 6c 3d 32 35 35 20 e7  6d 24 3d 22 44 22 20 63  |ol=255 .m$="D" c|
000100e0  6f 6c 3d 30 3a 6e 63 6f  6c 3d 32 35 36 0d 52 30  |ol=0:ncol=256.R0|
000100f0  05 cb 0d 52 3a 0d e7 6e  63 6f 6c 3d 31 20 8c 0d  |...R:..ncol=1 ..|
00010100  52 44 0b c8 8e 20 6d 24  20 ca 0d 52 4e 19 c9 22  |RD... m$ ..RN.."|
00010110  43 22 3a 63 6f 6c 3d 30  3a 78 25 3d 78 25 2b 31  |C":col=0:x%=x%+1|
00010120  80 ac 31 0d 52 58 19 c9  22 44 22 3a 63 6f 6c 3d  |..1.RX.."D":col=|
00010130  30 3a 78 25 3d 78 25 2b  33 80 ac 33 0d 52 62 19  |0:x%=x%+3..3.Rb.|
00010140  c9 22 54 22 3a 63 6f 6c  3d 30 3a 78 25 3d 78 25  |."T":col=0:x%=x%|
00010150  2b 31 80 ac 31 0d 52 6c  05 cb 0d 52 76 05 cd 0d  |+1..1.Rl...Rv...|
00010160  52 80 1b e7 73 68 61 72  70 65 6e 25 3d b9 20 73  |R...sharpen%=. s|
00010170  68 61 72 70 65 6e 25 3d  32 34 0d 52 8a 13 de 20  |harpen%=24.R... |
00010180  63 6c 25 28 78 25 2b 37  2c 63 6f 6c 29 0d 52 94  |cl%(x%+7,col).R.|
00010190  22 de 20 78 6c 25 28 78  25 2b 37 2c 63 6f 6c 29  |". xl%(x%+7,col)|
000101a0  2c 78 70 25 28 73 78 25  2b 37 2c 63 6f 6c 29 0d  |,xp%(sx%+7,col).|
000101b0  52 9e 14 de 20 78 6c 32  25 28 78 25 2b 37 2c 63  |R... xl2%(x%+7,c|
000101c0  6f 6c 29 0d 52 a8 0f e7  73 68 61 72 70 65 6e 25  |ol).R...sharpen%|
000101d0  20 8c 0d 52 b2 0d e7 6f  72 64 65 72 25 20 8c 0d  | ..R...order% ..|
000101e0  52 bc 34 de 20 72 6d 25  28 73 78 25 2b 37 2c 63  |R.4. rm%(sx%+7,c|
000101f0  6f 6c 29 2c 72 6d 31 25  28 73 78 25 2b 37 2c 63  |ol),rm1%(sx%+7,c|
00010200  6f 6c 29 2c 72 6d 32 25  28 73 78 25 2b 37 2c 63  |ol),rm2%(sx%+7,c|
00010210  6f 6c 29 0d 52 c6 05 cc  0d 52 d0 31 de 20 72 6d  |ol).R....R.1. rm|
00010220  25 28 78 25 2b 37 2c 63  6f 6c 29 2c 72 6d 31 25  |%(x%+7,col),rm1%|
00010230  28 78 25 2b 37 2c 63 6f  6c 29 2c 72 6d 32 25 28  |(x%+7,col),rm2%(|
00010240  78 25 2b 37 2c 63 6f 6c  29 0d 52 da 05 cd 0d 52  |x%+7,col).R....R|
00010250  e4 05 cd 0d 52 ee 22 e7  68 69 73 74 25 84 65 71  |....R.".hist%.eq|
00010260  75 61 6c 25 20 de 20 76  61 6c 73 25 28 32 35 36  |ual% . vals%(256|
00010270  2c 63 6f 6c 29 0d 52 f8  13 de 20 6e 6c 25 28 78  |,col).R... nl%(x|
00010280  25 2b 37 2c 63 6f 6c 29  0d 53 02 17 74 6f 74 76  |%+7,col).S..totv|
00010290  61 6c 73 25 3d 78 25 2a  28 63 6f 6c 2b 31 29 0d  |als%=x%*(col+1).|
000102a0  53 0c 19 74 6f 74 76 61  6c 73 32 25 3d 73 78 25  |S..totvals2%=sx%|
000102b0  2a 28 63 6f 6c 2b 31 29  0d 53 16 15 e3 5a 3d 30  |*(col+1).S...Z=0|
000102c0  b8 32 88 32 3a 50 25 3d  63 6f 64 65 25 0d 53 20  |.2.2:P%=code%.S |
000102d0  0d c8 8e 20 6e 63 6f 6c  20 ca 0d 53 2a 0c c9 20  |... ncol ..S*.. |
000102e0  32 5e 32 34 2d 31 0d 53  34 0a 5b 4f 50 54 20 5a  |2^24-1.S4.[OPT Z|
000102f0  0d 53 3e 0b 2e 64 69 76  32 35 35 0d 53 48 05 5d  |.S>..div255.SH.]|
00010300  0d 53 52 14 e3 49 25 3d  30 b8 32 5e 70 36 62 69  |.SR..I%=0.2^p6bi|
00010310  74 73 2d 31 0d 53 5c 0a  5b 4f 50 54 20 5a 0d 53  |ts-1.S\.[OPT Z.S|
00010320  66 1a 45 51 55 44 20 49  25 2f 28 32 5e 70 36 62  |f.EQUD I%/(2^p6b|
00010330  69 74 73 2d 31 29 2a 46  0d 53 70 05 5d 0d 53 7a  |its-1)*F.Sp.].Sz|
00010340  05 ed 0d 53 84 0a 5b 4f  50 54 20 5a 0d 53 8e 08  |...S..[OPT Z.S..|
00010350  2e 66 73 25 0d 53 98 14  53 54 4d 46 44 20 53 50  |.fs%.S..STMFD SP|
00010360  20 21 2c 7b 52 31 34 7d  0d 53 a2 21 4c 44 52 20  | !,{R14}.S.!LDR |
00010370  52 31 2c 5b 52 39 2c 23  35 2a 38 5d 3a 4c 44 52  |R1,[R9,#5*8]:LDR|
00010380  20 52 31 2c 5b 52 31 5d  20 0d 53 ac 16 4c 44 52  | R1,[R1] .S..LDR|
00010390  20 52 31 30 2c 5b 52 39  2c 23 34 2a 38 5d 20 0d  | R10,[R9,#4*8] .|
000103a0  53 b6 16 4c 44 52 20 52  31 31 2c 5b 52 39 2c 23  |S..LDR R11,[R9,#|
000103b0  33 2a 38 5d 20 0d 53 c0  24 4c 44 52 20 52 31 32  |3*8] .S.$LDR R12|
000103c0  2c 5b 52 39 2c 23 32 2a  38 5d 3a 4c 44 52 20 52  |,[R9,#2*8]:LDR R|
000103d0  31 32 2c 5b 52 31 32 5d  20 0d 53 ca 1f 4c 44 52  |12,[R12] .S..LDR|
000103e0  20 52 38 2c 5b 52 39 2c  23 38 5d 3a 4c 44 52 20  | R8,[R9,#8]:LDR |
000103f0  52 38 2c 5b 52 38 5d 20  0d 53 d4 1c 4c 44 52 20  |R8,[R8] .S..LDR |
00010400  52 39 2c 5b 52 39 5d 3a  4c 44 52 20 52 39 2c 5b  |R9,[R9]:LDR R9,[|
00010410  52 39 5d 20 0d 53 de 11  4c 44 52 20 52 34 2c 5b  |R9] .S..LDR R4,[|
00010420  52 31 30 5d 20 0d 53 e8  14 4c 44 52 20 52 35 2c  |R10] .S..LDR R5,|
00010430  5b 52 31 30 2c 23 34 5d  20 0d 53 f2 14 4c 44 52  |[R10,#4] .S..LDR|
00010440  20 52 36 2c 5b 52 31 30  2c 23 38 5d 20 0d 53 fc  | R6,[R10,#8] .S.|
00010450  11 41 44 52 20 52 37 2c  64 69 76 32 35 35 0d 54  |.ADR R7,div255.T|
00010460  06 0b 2e 66 73 6c 6f 6f  70 0d 54 10 13 41 44 44  |...fsloop.T..ADD|
00010470  20 52 31 30 2c 52 31 30  2c 52 38 20 0d 54 1a 25  | R10,R10,R8 .T.%|
00010480  43 4d 50 20 52 34 2c 23  46 3a 4d 4f 56 43 53 20  |CMP R4,#F:MOVCS |
00010490  52 34 2c 23 30 3a 4d 4f  56 47 45 20 52 34 2c 23  |R4,#0:MOVGE R4,#|
000104a0  46 0d 54 24 57 53 55 42  20 52 30 2c 52 34 2c 52  |F.T$WSUB R0,R4,R|
000104b0  34 2c 4c 53 52 20 23 70  36 62 69 74 73 3a 41 44  |4,LSR #p6bits:AD|
000104c0  44 20 52 30 2c 52 30 2c  23 31 3c 3c 28 62 69 74  |D R0,R0,#1<<(bit|
000104d0  73 2d 70 36 62 69 74 73  2d 31 29 3a 4d 4f 56 20  |s-p6bits-1):MOV |
000104e0  52 30 2c 52 30 2c 4c 53  52 20 23 28 62 69 74 73  |R0,R0,LSR #(bits|
000104f0  2d 70 36 62 69 74 73 29  0d 54 2e 26 4c 44 52 20  |-p6bits).T.&LDR |
00010500  52 32 2c 5b 52 37 2c 52  30 2c 4c 53 4c 20 23 32  |R2,[R7,R0,LSL #2|
00010510  5d 3a 53 55 42 20 52 34  2c 52 34 2c 52 32 0d 54  |]:SUB R4,R4,R2.T|
00010520  38 25 43 4d 50 20 52 35  2c 23 46 3a 4d 4f 56 43  |8%CMP R5,#F:MOVC|
00010530  53 20 52 35 2c 23 30 3a  4d 4f 56 47 45 20 52 35  |S R5,#0:MOVGE R5|
00010540  2c 23 46 0d 54 42 6a 53  55 42 20 52 33 2c 52 35  |,#F.TBjSUB R3,R5|
00010550  2c 52 35 2c 4c 53 52 20  23 70 36 62 69 74 73 3a  |,R5,LSR #p6bits:|
00010560  41 44 44 20 52 33 2c 52  33 2c 23 31 3c 3c 28 62  |ADD R3,R3,#1<<(b|
00010570  69 74 73 2d 70 36 62 69  74 73 2d 31 29 3a 4d 4f  |its-p6bits-1):MO|
00010580  56 20 52 33 2c 52 33 2c  4c 53 52 20 23 28 62 69  |V R3,R3,LSR #(bi|
00010590  74 73 2d 70 36 62 69 74  73 29 3a 84 52 20 52 30  |ts-p6bits):.R R0|
000105a0  2c 52 30 2c 52 33 2c 4c  53 4c 20 23 38 0d 54 4c  |,R0,R3,LSL #8.TL|
000105b0  26 4c 44 52 20 52 32 2c  5b 52 37 2c 52 33 2c 4c  |&LDR R2,[R7,R3,L|
000105c0  53 4c 20 23 32 5d 3a 53  55 42 20 52 35 2c 52 35  |SL #2]:SUB R5,R5|
000105d0  2c 52 32 0d 54 56 25 43  4d 50 20 52 36 2c 23 46  |,R2.TV%CMP R6,#F|
000105e0  3a 4d 4f 56 43 53 20 52  36 2c 23 30 3a 4d 4f 56  |:MOVCS R6,#0:MOV|
000105f0  47 45 20 52 36 2c 23 46  0d 54 60 6b 53 55 42 20  |GE R6,#F.T`kSUB |
00010600  52 33 2c 52 36 2c 52 36  2c 4c 53 52 20 23 70 36  |R3,R6,R6,LSR #p6|
00010610  62 69 74 73 3a 41 44 44  20 52 33 2c 52 33 2c 23  |bits:ADD R3,R3,#|
00010620  31 3c 3c 28 62 69 74 73  2d 70 36 62 69 74 73 2d  |1<<(bits-p6bits-|
00010630  31 29 3a 4d 4f 56 20 52  33 2c 52 33 2c 4c 53 52  |1):MOV R3,R3,LSR|
00010640  20 23 28 62 69 74 73 2d  70 36 62 69 74 73 29 3a  | #(bits-p6bits):|
00010650  84 52 20 52 30 2c 52 30  2c 52 33 2c 4c 53 4c 20  |.R R0,R0,R3,LSL |
00010660  23 31 36 0d 54 6a 26 4c  44 52 20 52 32 2c 5b 52  |#16.Tj&LDR R2,[R|
00010670  37 2c 52 33 2c 4c 53 4c  20 23 32 5d 3a 53 55 42  |7,R3,LSL #2]:SUB|
00010680  20 52 36 2c 52 36 2c 52  32 0d 54 74 44 53 54 52  | R6,R6,R2.TtDSTR|
00010690  42 20 52 30 2c 5b 52 31  32 5d 3a 4d 4f 56 20 52  |B R0,[R12]:MOV R|
000106a0  30 2c 52 30 2c 4c 53 52  20 23 38 3a 53 54 52 42  |0,R0,LSR #8:STRB|
000106b0  20 52 30 2c 5b 52 31 32  2c 23 31 5d 3a 4d 4f 56  | R0,[R12,#1]:MOV|
000106c0  20 52 30 2c 52 30 2c 4c  53 52 20 23 38 0d 54 7e  | R0,R0,LSR #8.T~|
000106d0  14 53 54 52 42 20 52 30  2c 5b 52 31 32 2c 23 32  |.STRB R0,[R12,#2|
000106e0  5d 0d 54 88 05 5d 0d 54  92 0b e7 6d 3d 2d 38 20  |].T..].T...m=-8 |
000106f0  8c 0d 54 9c 0a 5b 4f 50  54 20 5a 0d 54 a6 19 41  |..T..[OPT Z.T..A|
00010700  44 44 20 52 31 32 2c 52  31 32 2c 52 31 2c 4c 53  |DD R12,R12,R1,LS|
00010710  4c 20 23 32 0d 54 b0 05  5d 0d 54 ba 05 cc 0d 54  |L #2.T..].T....T|
00010720  c4 0a 5b 4f 50 54 20 5a  0d 54 ce 28 41 44 44 20  |..[OPT Z.T.(ADD |
00010730  52 31 32 2c 52 31 32 2c  52 31 2c 4c 53 4c 20 23  |R12,R12,R1,LSL #|
00010740  31 3a 41 44 44 20 52 31  32 2c 52 31 32 2c 52 31  |1:ADD R12,R12,R1|
00010750  0d 54 d8 05 5d 0d 54 e2  05 cd 0d 54 ec 0e e7 64  |.T..].T....T...d|
00010760  69 74 68 65 72 25 20 8c  0d 54 f6 0a 5b 4f 50 54  |ither% ..T..[OPT|
00010770  20 5a 0d 55 00 12 41 44  44 20 52 30 2c 52 31 31  | Z.U..ADD R0,R11|
00010780  2c 23 34 20 0d 55 0a 18  41 44 44 20 52 32 2c 52  |,#4 .U..ADD R2,R|
00010790  34 2c 52 34 2c 4c 53 4c  20 23 31 20 0d 55 14 29  |4,R4,LSL #1 .U.)|
000107a0  4c 44 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |LDR R3,[R11,-R8]|
000107b0  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
000107c0  52 20 23 34 20 0d 55 1e  14 53 54 52 20 52 33 2c  |R #4 .U..STR R3,|
000107d0  5b 52 31 31 2c 2d 52 38  5d 0d 55 28 18 41 44 44  |[R11,-R8].U(.ADD|
000107e0  20 52 32 2c 52 34 2c 52  34 2c 4c 53 4c 20 23 32  | R2,R4,R4,LSL #2|
000107f0  20 0d 55 32 25 4c 44 52  20 52 33 2c 5b 52 31 31  | .U2%LDR R3,[R11|
00010800  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00010810  53 52 20 23 34 20 0d 55  3c 10 53 54 52 20 52 33  |SR #4 .U<.STR R3|
00010820  2c 5b 52 31 31 5d 0d 55  46 15 4d 4f 56 20 52 33  |,[R11].UF.MOV R3|
00010830  2c 52 34 2c 41 53 52 20  23 34 20 0d 55 50 15 53  |,R4,ASR #4 .UP.S|
00010840  54 52 20 52 33 2c 5b 52  31 31 2c 52 38 5d 21 20  |TR R3,[R11,R8]! |
00010850  0d 55 5a 18 52 53 42 20  52 32 2c 52 34 2c 52 34  |.UZ.RSB R2,R4,R4|
00010860  2c 4c 53 4c 20 23 33 20  0d 55 64 11 4c 44 52 20  |,LSL #3 .Ud.LDR |
00010870  52 34 2c 5b 52 31 30 5d  20 0d 55 6e 18 41 44 44  |R4,[R10] .Un.ADD|
00010880  20 52 34 2c 52 34 2c 52  32 2c 41 53 52 20 23 34  | R4,R4,R2,ASR #4|
00010890  20 0d 55 78 18 41 44 44  20 52 32 2c 52 35 2c 52  | .Ux.ADD R2,R5,R|
000108a0  35 2c 4c 53 4c 20 23 31  20 0d 55 82 28 4c 44 52  |5,LSL #1 .U.(LDR|
000108b0  20 52 33 2c 5b 52 30 2c  2d 52 38 5d 3a 41 44 44  | R3,[R0,-R8]:ADD|
000108c0  20 52 33 2c 52 33 2c 52  32 2c 41 53 52 20 23 34  | R3,R3,R2,ASR #4|
000108d0  20 0d 55 8c 13 53 54 52  20 52 33 2c 5b 52 30 2c  | .U..STR R3,[R0,|
000108e0  2d 52 38 5d 0d 55 96 15  4d 4f 56 20 52 33 2c 52  |-R8].U..MOV R3,R|
000108f0  35 2c 41 53 52 20 23 34  20 0d 55 a0 13 53 54 52  |5,ASR #4 .U..STR|
00010900  20 52 33 2c 5b 52 30 2c  52 38 5d 20 0d 55 aa 18  | R3,[R0,R8] .U..|
00010910  41 44 44 20 52 32 2c 52  35 2c 52 35 2c 4c 53 4c  |ADD R2,R5,R5,LSL|
00010920  20 23 32 20 0d 55 b4 24  4c 44 52 20 52 33 2c 5b  | #2 .U.$LDR R3,[|
00010930  52 30 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R0]:ADD R3,R3,R2|
00010940  2c 41 53 52 20 23 34 20  0d 55 be 13 53 54 52 20  |,ASR #4 .U..STR |
00010950  52 33 2c 5b 52 30 5d 2c  23 34 20 0d 55 c8 18 52  |R3,[R0],#4 .U..R|
00010960  53 42 20 52 32 2c 52 35  2c 52 35 2c 4c 53 4c 20  |SB R2,R5,R5,LSL |
00010970  23 33 20 0d 55 d2 14 4c  44 52 20 52 35 2c 5b 52  |#3 .U..LDR R5,[R|
00010980  31 30 2c 23 34 5d 20 0d  55 dc 18 41 44 44 20 52  |10,#4] .U..ADD R|
00010990  35 2c 52 35 2c 52 32 2c  41 53 52 20 23 34 20 0d  |5,R5,R2,ASR #4 .|
000109a0  55 e6 18 41 44 44 20 52  32 2c 52 36 2c 52 36 2c  |U..ADD R2,R6,R6,|
000109b0  4c 53 4c 20 23 31 20 0d  55 f0 28 4c 44 52 20 52  |LSL #1 .U.(LDR R|
000109c0  33 2c 5b 52 30 2c 2d 52  38 5d 3a 41 44 44 20 52  |3,[R0,-R8]:ADD R|
000109d0  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
000109e0  55 fa 13 53 54 52 20 52  33 2c 5b 52 30 2c 2d 52  |U..STR R3,[R0,-R|
000109f0  38 5d 0d 56 04 18 41 44  44 20 52 32 2c 52 36 2c  |8].V..ADD R2,R6,|
00010a00  52 36 2c 4c 53 4c 20 23  32 20 0d 56 0e 24 4c 44  |R6,LSL #2 .V.$LD|
00010a10  52 20 52 33 2c 5b 52 30  5d 3a 41 44 44 20 52 33  |R R3,[R0]:ADD R3|
00010a20  2c 52 33 2c 52 32 2c 41  53 52 20 23 34 20 0d 56  |,R3,R2,ASR #4 .V|
00010a30  18 0f 53 54 52 20 52 33  2c 5b 52 30 5d 0d 56 22  |..STR R3,[R0].V"|
00010a40  15 4d 4f 56 20 52 33 2c  52 36 2c 41 53 52 20 23  |.MOV R3,R6,ASR #|
00010a50  34 20 0d 56 2c 13 53 54  52 20 52 33 2c 5b 52 30  |4 .V,.STR R3,[R0|
00010a60  2c 52 38 5d 20 0d 56 36  18 52 53 42 20 52 32 2c  |,R8] .V6.RSB R2,|
00010a70  52 36 2c 52 36 2c 4c 53  4c 20 23 33 20 0d 56 40  |R6,R6,LSL #3 .V@|
00010a80  14 4c 44 52 20 52 36 2c  5b 52 31 30 2c 23 38 5d  |.LDR R6,[R10,#8]|
00010a90  20 0d 56 4a 18 41 44 44  20 52 36 2c 52 36 2c 52  | .VJ.ADD R6,R6,R|
00010aa0  32 2c 41 53 52 20 23 34  20 0d 56 54 05 5d 0d 56  |2,ASR #4 .VT.].V|
00010ab0  5e 05 cc 0d 56 68 0a 5b  4f 50 54 20 5a 0d 56 72  |^...Vh.[OPT Z.Vr|
00010ac0  18 4c 44 4d 49 41 20 52  31 30 2c 7b 52 34 2c 52  |.LDMIA R10,{R4,R|
00010ad0  35 2c 52 36 7d 0d 56 7c  05 5d 0d 56 86 05 cd 0d  |5,R6}.V|.].V....|
00010ae0  56 90 0a 5b 4f 50 54 20  5a 0d 56 9a 1c 53 55 42  |V..[OPT Z.V..SUB|
00010af0  53 20 52 39 2c 52 39 2c  23 31 3a 42 4e 45 20 66  |S R9,R9,#1:BNE f|
00010b00  73 6c 6f 6f 70 0d 56 a4  14 4c 44 4d 46 44 20 53  |sloop.V..LDMFD S|
00010b10  50 20 21 2c 7b 50 43 7d  5e 0d 56 ae 05 5d 0d 56  |P !,{PC}^.V..].V|
00010b20  b8 0c c9 20 32 5e 31 35  2d 31 0d 56 c2 0a 5b 4f  |... 2^15-1.V..[O|
00010b30  50 54 20 5a 0d 56 cc 0a  2e 64 69 76 33 31 0d 56  |PT Z.V...div31.V|
00010b40  d6 05 5d 0d 56 e0 0c e3  49 25 3d 30 b8 33 31 0d  |..].V...I%=0.31.|
00010b50  56 ea 0a 5b 4f 50 54 20  5a 0d 56 f4 10 45 51 55  |V..[OPT Z.V..EQU|
00010b60  44 20 49 25 2f 33 31 2a  46 0d 56 fe 05 5d 0d 57  |D I%/31*F.V..].W|
00010b70  08 05 ed 0d 57 12 0a 5b  4f 50 54 20 5a 0d 57 1c  |....W..[OPT Z.W.|
00010b80  08 2e 66 73 25 0d 57 26  14 53 54 4d 46 44 20 53  |..fs%.W&.STMFD S|
00010b90  50 20 21 2c 7b 52 31 34  7d 0d 57 30 21 4c 44 52  |P !,{R14}.W0!LDR|
00010ba0  20 52 31 2c 5b 52 39 2c  23 35 2a 38 5d 3a 4c 44  | R1,[R9,#5*8]:LD|
00010bb0  52 20 52 31 2c 5b 52 31  5d 20 0d 57 3a 16 4c 44  |R R1,[R1] .W:.LD|
00010bc0  52 20 52 31 30 2c 5b 52  39 2c 23 34 2a 38 5d 20  |R R10,[R9,#4*8] |
00010bd0  0d 57 44 16 4c 44 52 20  52 31 31 2c 5b 52 39 2c  |.WD.LDR R11,[R9,|
00010be0  23 33 2a 38 5d 20 0d 57  4e 24 4c 44 52 20 52 31  |#3*8] .WN$LDR R1|
00010bf0  32 2c 5b 52 39 2c 23 32  2a 38 5d 3a 4c 44 52 20  |2,[R9,#2*8]:LDR |
00010c00  52 31 32 2c 5b 52 31 32  5d 20 0d 57 58 1f 4c 44  |R12,[R12] .WX.LD|
00010c10  52 20 52 38 2c 5b 52 39  2c 23 38 5d 3a 4c 44 52  |R R8,[R9,#8]:LDR|
00010c20  20 52 38 2c 5b 52 38 5d  20 0d 57 62 1c 4c 44 52  | R8,[R8] .Wb.LDR|
00010c30  20 52 39 2c 5b 52 39 5d  3a 4c 44 52 20 52 39 2c  | R9,[R9]:LDR R9,|
00010c40  5b 52 39 5d 20 0d 57 6c  11 4c 44 52 20 52 34 2c  |[R9] .Wl.LDR R4,|
00010c50  5b 52 31 30 5d 20 0d 57  76 14 4c 44 52 20 52 35  |[R10] .Wv.LDR R5|
00010c60  2c 5b 52 31 30 2c 23 34  5d 20 0d 57 80 14 4c 44  |,[R10,#4] .W..LD|
00010c70  52 20 52 36 2c 5b 52 31  30 2c 23 38 5d 20 0d 57  |R R6,[R10,#8] .W|
00010c80  8a 10 41 44 52 20 52 37  2c 64 69 76 33 31 0d 57  |..ADR R7,div31.W|
00010c90  94 0b 2e 66 73 6c 6f 6f  70 0d 57 9e 13 41 44 44  |...fsloop.W..ADD|
00010ca0  20 52 31 30 2c 52 31 30  2c 52 38 20 0d 57 a8 25  | R10,R10,R8 .W.%|
00010cb0  43 4d 50 20 52 34 2c 23  46 3a 4d 4f 56 43 53 20  |CMP R4,#F:MOVCS |
00010cc0  52 34 2c 23 30 3a 4d 4f  56 47 45 20 52 34 2c 23  |R4,#0:MOVGE R4,#|
00010cd0  46 0d 57 b2 46 53 55 42  20 52 30 2c 52 34 2c 52  |F.W.FSUB R0,R4,R|
00010ce0  34 2c 4c 53 52 20 23 35  3a 41 44 44 20 52 30 2c  |4,LSR #5:ADD R0,|
00010cf0  52 30 2c 23 31 3c 3c 28  62 69 74 73 2d 36 29 3a  |R0,#1<<(bits-6):|
00010d00  4d 4f 56 20 52 30 2c 52  30 2c 4c 53 52 20 23 28  |MOV R0,R0,LSR #(|
00010d10  62 69 74 73 2d 35 29 0d  57 bc 26 4c 44 52 20 52  |bits-5).W.&LDR R|
00010d20  32 2c 5b 52 37 2c 52 30  2c 4c 53 4c 20 23 32 5d  |2,[R7,R0,LSL #2]|
00010d30  3a 53 55 42 20 52 34 2c  52 34 2c 52 32 0d 57 c6  |:SUB R4,R4,R2.W.|
00010d40  25 43 4d 50 20 52 35 2c  23 46 3a 4d 4f 56 43 53  |%CMP R5,#F:MOVCS|
00010d50  20 52 35 2c 23 30 3a 4d  4f 56 47 45 20 52 35 2c  | R5,#0:MOVGE R5,|
00010d60  23 46 0d 57 d0 59 53 55  42 20 52 33 2c 52 35 2c  |#F.W.YSUB R3,R5,|
00010d70  52 35 2c 4c 53 52 20 23  35 3a 41 44 44 20 52 33  |R5,LSR #5:ADD R3|
00010d80  2c 52 33 2c 23 31 3c 3c  28 62 69 74 73 2d 36 29  |,R3,#1<<(bits-6)|
00010d90  3a 4d 4f 56 20 52 33 2c  52 33 2c 4c 53 52 20 23  |:MOV R3,R3,LSR #|
00010da0  28 62 69 74 73 2d 35 29  3a 84 52 20 52 30 2c 52  |(bits-5):.R R0,R|
00010db0  30 2c 52 33 2c 4c 53 4c  20 23 35 0d 57 da 26 4c  |0,R3,LSL #5.W.&L|
00010dc0  44 52 20 52 32 2c 5b 52  37 2c 52 33 2c 4c 53 4c  |DR R2,[R7,R3,LSL|
00010dd0  20 23 32 5d 3a 53 55 42  20 52 35 2c 52 35 2c 52  | #2]:SUB R5,R5,R|
00010de0  32 0d 57 e4 25 43 4d 50  20 52 36 2c 23 46 3a 4d  |2.W.%CMP R6,#F:M|
00010df0  4f 56 43 53 20 52 36 2c  23 30 3a 4d 4f 56 47 45  |OVCS R6,#0:MOVGE|
00010e00  20 52 36 2c 23 46 0d 57  ee 5a 53 55 42 20 52 33  | R6,#F.W.ZSUB R3|
00010e10  2c 52 36 2c 52 36 2c 4c  53 52 20 23 35 3a 41 44  |,R6,R6,LSR #5:AD|
00010e20  44 20 52 33 2c 52 33 2c  23 31 3c 3c 28 62 69 74  |D R3,R3,#1<<(bit|
00010e30  73 2d 36 29 3a 4d 4f 56  20 52 33 2c 52 33 2c 4c  |s-6):MOV R3,R3,L|
00010e40  53 52 20 23 28 62 69 74  73 2d 35 29 3a 84 52 20  |SR #(bits-5):.R |
00010e50  52 30 2c 52 30 2c 52 33  2c 4c 53 4c 20 23 31 30  |R0,R0,R3,LSL #10|
00010e60  0d 57 f8 26 4c 44 52 20  52 32 2c 5b 52 37 2c 52  |.W.&LDR R2,[R7,R|
00010e70  33 2c 4c 53 4c 20 23 32  5d 3a 53 55 42 20 52 36  |3,LSL #2]:SUB R6|
00010e80  2c 52 36 2c 52 32 0d 58  02 49 53 54 52 42 20 52  |,R6,R2.X.ISTRB R|
00010e90  30 2c 5b 52 31 32 5d 3a  4d 4f 56 20 52 30 2c 52  |0,[R12]:MOV R0,R|
00010ea0  30 2c 4c 53 52 20 23 38  3a 53 54 52 42 20 52 30  |0,LSR #8:STRB R0|
00010eb0  2c 5b 52 31 32 2c 23 31  5d 3a 41 44 44 20 52 31  |,[R12,#1]:ADD R1|
00010ec0  32 2c 52 31 32 2c 52 31  2c 4c 53 4c 20 23 31 0d  |2,R12,R1,LSL #1.|
00010ed0  58 0c 05 5d 0d 58 16 0e  e7 64 69 74 68 65 72 25  |X..].X...dither%|
00010ee0  20 8c 0d 58 20 0a 5b 4f  50 54 20 5a 0d 58 2a 12  | ..X .[OPT Z.X*.|
00010ef0  41 44 44 20 52 30 2c 52  31 31 2c 23 34 20 0d 58  |ADD R0,R11,#4 .X|
00010f00  34 18 41 44 44 20 52 32  2c 52 34 2c 52 34 2c 4c  |4.ADD R2,R4,R4,L|
00010f10  53 4c 20 23 31 20 0d 58  3e 29 4c 44 52 20 52 33  |SL #1 .X>)LDR R3|
00010f20  2c 5b 52 31 31 2c 2d 52  38 5d 3a 41 44 44 20 52  |,[R11,-R8]:ADD R|
00010f30  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00010f40  58 48 14 53 54 52 20 52  33 2c 5b 52 31 31 2c 2d  |XH.STR R3,[R11,-|
00010f50  52 38 5d 0d 58 52 18 41  44 44 20 52 32 2c 52 34  |R8].XR.ADD R2,R4|
00010f60  2c 52 34 2c 4c 53 4c 20  23 32 20 0d 58 5c 25 4c  |,R4,LSL #2 .X\%L|
00010f70  44 52 20 52 33 2c 5b 52  31 31 5d 3a 41 44 44 20  |DR R3,[R11]:ADD |
00010f80  52 33 2c 52 33 2c 52 32  2c 41 53 52 20 23 34 20  |R3,R3,R2,ASR #4 |
00010f90  0d 58 66 10 53 54 52 20  52 33 2c 5b 52 31 31 5d  |.Xf.STR R3,[R11]|
00010fa0  0d 58 70 15 4d 4f 56 20  52 33 2c 52 34 2c 41 53  |.Xp.MOV R3,R4,AS|
00010fb0  52 20 23 34 20 0d 58 7a  15 53 54 52 20 52 33 2c  |R #4 .Xz.STR R3,|
00010fc0  5b 52 31 31 2c 52 38 5d  21 20 0d 58 84 18 52 53  |[R11,R8]! .X..RS|
00010fd0  42 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |B R2,R4,R4,LSL #|
00010fe0  33 20 0d 58 8e 11 4c 44  52 20 52 34 2c 5b 52 31  |3 .X..LDR R4,[R1|
00010ff0  30 5d 20 0d 58 98 18 41  44 44 20 52 34 2c 52 34  |0] .X..ADD R4,R4|
00011000  2c 52 32 2c 41 53 52 20  23 34 20 0d 58 a2 18 41  |,R2,ASR #4 .X..A|
00011010  44 44 20 52 32 2c 52 35  2c 52 35 2c 4c 53 4c 20  |DD R2,R5,R5,LSL |
00011020  23 31 20 0d 58 ac 28 4c  44 52 20 52 33 2c 5b 52  |#1 .X.(LDR R3,[R|
00011030  30 2c 2d 52 38 5d 3a 41  44 44 20 52 33 2c 52 33  |0,-R8]:ADD R3,R3|
00011040  2c 52 32 2c 41 53 52 20  23 34 20 0d 58 b6 13 53  |,R2,ASR #4 .X..S|
00011050  54 52 20 52 33 2c 5b 52  30 2c 2d 52 38 5d 0d 58  |TR R3,[R0,-R8].X|
00011060  c0 15 4d 4f 56 20 52 33  2c 52 35 2c 41 53 52 20  |..MOV R3,R5,ASR |
00011070  23 34 20 0d 58 ca 13 53  54 52 20 52 33 2c 5b 52  |#4 .X..STR R3,[R|
00011080  30 2c 52 38 5d 20 0d 58  d4 18 41 44 44 20 52 32  |0,R8] .X..ADD R2|
00011090  2c 52 35 2c 52 35 2c 4c  53 4c 20 23 32 20 0d 58  |,R5,R5,LSL #2 .X|
000110a0  de 24 4c 44 52 20 52 33  2c 5b 52 30 5d 3a 41 44  |.$LDR R3,[R0]:AD|
000110b0  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
000110c0  34 20 0d 58 e8 13 53 54  52 20 52 33 2c 5b 52 30  |4 .X..STR R3,[R0|
000110d0  5d 2c 23 34 20 0d 58 f2  18 52 53 42 20 52 32 2c  |],#4 .X..RSB R2,|
000110e0  52 35 2c 52 35 2c 4c 53  4c 20 23 33 20 0d 58 fc  |R5,R5,LSL #3 .X.|
000110f0  14 4c 44 52 20 52 35 2c  5b 52 31 30 2c 23 34 5d  |.LDR R5,[R10,#4]|
00011100  20 0d 59 06 18 41 44 44  20 52 35 2c 52 35 2c 52  | .Y..ADD R5,R5,R|
00011110  32 2c 41 53 52 20 23 34  20 0d 59 10 18 41 44 44  |2,ASR #4 .Y..ADD|
00011120  20 52 32 2c 52 36 2c 52  36 2c 4c 53 4c 20 23 31  | R2,R6,R6,LSL #1|
00011130  20 0d 59 1a 28 4c 44 52  20 52 33 2c 5b 52 30 2c  | .Y.(LDR R3,[R0,|
00011140  2d 52 38 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |-R8]:ADD R3,R3,R|
00011150  32 2c 41 53 52 20 23 34  20 0d 59 24 13 53 54 52  |2,ASR #4 .Y$.STR|
00011160  20 52 33 2c 5b 52 30 2c  2d 52 38 5d 0d 59 2e 18  | R3,[R0,-R8].Y..|
00011170  41 44 44 20 52 32 2c 52  36 2c 52 36 2c 4c 53 4c  |ADD R2,R6,R6,LSL|
00011180  20 23 32 20 0d 59 38 24  4c 44 52 20 52 33 2c 5b  | #2 .Y8$LDR R3,[|
00011190  52 30 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R0]:ADD R3,R3,R2|
000111a0  2c 41 53 52 20 23 34 20  0d 59 42 0f 53 54 52 20  |,ASR #4 .YB.STR |
000111b0  52 33 2c 5b 52 30 5d 0d  59 4c 15 4d 4f 56 20 52  |R3,[R0].YL.MOV R|
000111c0  33 2c 52 36 2c 41 53 52  20 23 34 20 0d 59 56 13  |3,R6,ASR #4 .YV.|
000111d0  53 54 52 20 52 33 2c 5b  52 30 2c 52 38 5d 20 0d  |STR R3,[R0,R8] .|
000111e0  59 60 18 52 53 42 20 52  32 2c 52 36 2c 52 36 2c  |Y`.RSB R2,R6,R6,|
000111f0  4c 53 4c 20 23 33 20 0d  59 6a 14 4c 44 52 20 52  |LSL #3 .Yj.LDR R|
00011200  36 2c 5b 52 31 30 2c 23  38 5d 20 0d 59 74 18 41  |6,[R10,#8] .Yt.A|
00011210  44 44 20 52 36 2c 52 36  2c 52 32 2c 41 53 52 20  |DD R6,R6,R2,ASR |
00011220  23 34 20 0d 59 7e 05 5d  0d 59 88 05 cc 0d 59 92  |#4 .Y~.].Y....Y.|
00011230  0a 5b 4f 50 54 20 5a 0d  59 9c 18 4c 44 4d 49 41  |.[OPT Z.Y..LDMIA|
00011240  20 52 31 30 2c 7b 52 34  2c 52 35 2c 52 36 7d 0d  | R10,{R4,R5,R6}.|
00011250  59 a6 05 5d 0d 59 b0 05  cd 0d 59 ba 0a 5b 4f 50  |Y..].Y....Y..[OP|
00011260  54 20 5a 0d 59 c4 1c 53  55 42 53 20 52 39 2c 52  |T Z.Y..SUBS R9,R|
00011270  39 2c 23 31 3a 42 4e 45  20 66 73 6c 6f 6f 70 0d  |9,#1:BNE fsloop.|
00011280  59 ce 14 4c 44 4d 46 44  20 53 50 20 21 2c 7b 50  |Y..LDMFD SP !,{P|
00011290  43 7d 5e 0d 59 d8 05 5d  0d 59 e2 09 c9 20 32 35  |C}^.Y..].Y... 25|
000112a0  36 0d 59 ec 0a 5b 4f 50  54 20 5a 0d 59 f6 0b 2e  |6.Y..[OPT Z.Y...|
000112b0  64 69 76 32 35 35 0d 5a  00 05 5d 0d 5a 0a 0d e3  |div255.Z..].Z...|
000112c0  49 25 3d 30 b8 32 35 35  0d 5a 14 0a 5b 4f 50 54  |I%=0.255.Z..[OPT|
000112d0  20 5a 0d 5a 1e 11 45 51  55 44 20 49 25 2f 32 35  | Z.Z..EQUD I%/25|
000112e0  35 2a 46 0d 5a 28 05 5d  0d 5a 32 05 ed 0d 5a 3c  |5*F.Z(.].Z2...Z<|
000112f0  0a 5b 4f 50 54 20 5a 0d  5a 50 08 2e 66 73 25 0d  |.[OPT Z.ZP..fs%.|
00011300  5a 5a 14 53 54 4d 46 44  20 53 50 20 21 2c 7b 52  |ZZ.STMFD SP !,{R|
00011310  31 34 7d 0d 5a 64 16 4c  44 52 20 52 31 30 2c 5b  |14}.Zd.LDR R10,[|
00011320  52 39 2c 23 34 2a 38 5d  20 0d 5a 6e 11 41 44 52  |R9,#4*8] .Zn.ADR|
00011330  20 52 37 2c 64 69 76 32  35 35 0d 5a 78 21 4c 44  | R7,div255.Zx!LD|
00011340  52 20 52 31 2c 5b 52 39  2c 23 35 2a 38 5d 3a 4c  |R R1,[R9,#5*8]:L|
00011350  44 52 20 52 31 2c 5b 52  31 5d 20 0d 5a 82 16 4c  |DR R1,[R1] .Z..L|
00011360  44 52 20 52 31 31 2c 5b  52 39 2c 23 33 2a 38 5d  |DR R11,[R9,#3*8]|
00011370  20 0d 5a 8c 24 4c 44 52  20 52 31 32 2c 5b 52 39  | .Z.$LDR R12,[R9|
00011380  2c 23 32 2a 38 5d 3a 4c  44 52 20 52 31 32 2c 5b  |,#2*8]:LDR R12,[|
00011390  52 31 32 5d 20 0d 5a 96  1f 4c 44 52 20 52 38 2c  |R12] .Z..LDR R8,|
000113a0  5b 52 39 2c 23 38 5d 3a  4c 44 52 20 52 38 2c 5b  |[R9,#8]:LDR R8,[|
000113b0  52 38 5d 20 0d 5a a0 1c  4c 44 52 20 52 39 2c 5b  |R8] .Z..LDR R9,[|
000113c0  52 39 5d 3a 4c 44 52 20  52 39 2c 5b 52 39 5d 20  |R9]:LDR R9,[R9] |
000113d0  0d 5a aa 14 4c 44 52 20  52 34 2c 5b 52 31 30 5d  |.Z..LDR R4,[R10]|
000113e0  2c 52 38 20 0d 5a b4 0b  2e 66 73 6c 6f 6f 70 0d  |,R8 .Z...fsloop.|
000113f0  5a be 25 43 4d 50 20 52  34 2c 23 46 3a 4d 4f 56  |Z.%CMP R4,#F:MOV|
00011400  43 53 20 52 34 2c 23 30  3a 4d 4f 56 47 45 20 52  |CS R4,#0:MOVGE R|
00011410  34 2c 23 46 0d 5a c8 57  53 55 42 20 52 30 2c 52  |4,#F.Z.WSUB R0,R|
00011420  34 2c 52 34 2c 4c 53 52  20 23 38 3a 41 44 44 20  |4,R4,LSR #8:ADD |
00011430  52 30 2c 52 30 2c 23 31  3c 3c 28 62 69 74 73 2d  |R0,R0,#1<<(bits-|
00011440  39 29 3a 4d 4f 56 20 52  30 2c 52 30 2c 4c 53 52  |9):MOV R0,R0,LSR|
00011450  20 23 28 62 69 74 73 2d  38 29 3a 53 54 52 42 20  | #(bits-8):STRB |
00011460  52 30 2c 5b 52 31 32 5d  2c 52 31 0d 5a d2 19 4c  |R0,[R12],R1.Z..L|
00011470  44 52 20 52 32 2c 5b 52  37 2c 52 30 2c 4c 53 4c  |DR R2,[R7,R0,LSL|
00011480  20 23 32 5d 0d 5a dc 05  5d 0d 5a e6 0e e7 64 69  | #2].Z..].Z...di|
00011490  74 68 65 72 25 20 8c 0d  5a f0 0a 5b 4f 50 54 20  |ther% ..Z..[OPT |
000114a0  5a 0d 5a fa 11 53 55 42  20 52 34 2c 52 34 2c 52  |Z.Z..SUB R4,R4,R|
000114b0  32 20 0d 5b 04 0f 4d 4f  56 43 53 20 52 34 2c 23  |2 .[..MOVCS R4,#|
000114c0  30 0d 5b 0e 18 41 44 44  20 52 32 2c 52 34 2c 52  |0.[..ADD R2,R4,R|
000114d0  34 2c 4c 53 4c 20 23 31  20 0d 5b 18 29 4c 44 52  |4,LSL #1 .[.)LDR|
000114e0  20 52 33 2c 5b 52 31 31  2c 2d 52 38 5d 3a 41 44  | R3,[R11,-R8]:AD|
000114f0  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
00011500  34 20 0d 5b 22 14 53 54  52 20 52 33 2c 5b 52 31  |4 .[".STR R3,[R1|
00011510  31 2c 2d 52 38 5d 0d 5b  2c 18 41 44 44 20 52 32  |1,-R8].[,.ADD R2|
00011520  2c 52 34 2c 52 34 2c 4c  53 4c 20 23 32 20 0d 5b  |,R4,R4,LSL #2 .[|
00011530  36 25 4c 44 52 20 52 33  2c 5b 52 31 31 5d 3a 41  |6%LDR R3,[R11]:A|
00011540  44 44 20 52 33 2c 52 33  2c 52 32 2c 41 53 52 20  |DD R3,R3,R2,ASR |
00011550  23 34 20 0d 5b 40 10 53  54 52 20 52 33 2c 5b 52  |#4 .[@.STR R3,[R|
00011560  31 31 5d 0d 5b 4a 15 4d  4f 56 20 52 33 2c 52 34  |11].[J.MOV R3,R4|
00011570  2c 41 53 52 20 23 34 20  0d 5b 54 15 53 54 52 20  |,ASR #4 .[T.STR |
00011580  52 33 2c 5b 52 31 31 2c  52 38 5d 21 20 0d 5b 5e  |R3,[R11,R8]! .[^|
00011590  18 52 53 42 20 52 32 2c  52 34 2c 52 34 2c 4c 53  |.RSB R2,R4,R4,LS|
000115a0  4c 20 23 33 20 0d 5b 68  14 4c 44 52 20 52 34 2c  |L #3 .[h.LDR R4,|
000115b0  5b 52 31 30 5d 2c 52 38  20 0d 5b 72 18 41 44 44  |[R10],R8 .[r.ADD|
000115c0  20 52 34 2c 52 34 2c 52  32 2c 41 53 52 20 23 34  | R4,R4,R2,ASR #4|
000115d0  20 0d 5b 7c 05 5d 0d 5b  86 05 cc 0d 5b 90 0a 5b  | .[|.].[....[..[|
000115e0  4f 50 54 20 5a 0d 5b 9a  13 4c 44 52 20 52 34 2c  |OPT Z.[..LDR R4,|
000115f0  5b 52 31 30 5d 2c 52 38  0d 5b a4 05 5d 0d 5b ae  |[R10],R8.[..].[.|
00011600  05 cd 0d 5b b8 0a 5b 4f  50 54 20 5a 0d 5b c2 1c  |...[..[OPT Z.[..|
00011610  53 55 42 53 20 52 39 2c  52 39 2c 23 31 3a 42 4e  |SUBS R9,R9,#1:BN|
00011620  45 20 66 73 6c 6f 6f 70  0d 5b cc 14 4c 44 4d 46  |E fsloop.[..LDMF|
00011630  44 20 53 50 20 21 2c 7b  50 43 7d 5e 0d 5b d6 05  |D SP !,{PC}^.[..|
00011640  5d 0d 5b e0 0c c9 20 36  33 2c 32 35 35 0d 5b ea  |].[... 63,255.[.|
00011650  1a 64 69 76 31 35 3d 50  25 3a e3 49 25 3d 30 b8  |.div15=P%:.I%=0.|
00011660  32 35 35 2a 34 88 34 0d  5b f4 0a 5b 4f 50 54 20  |255*4.4.[..[OPT |
00011670  5a 0d 5b fe 20 45 51 55  44 20 28 70 61 6c 65 74  |Z.[. EQUD (palet|
00011680  74 65 25 21 49 25 80 26  46 46 29 2f 32 35 35 2a  |te%!I%.&FF)/255*|
00011690  46 0d 5c 08 23 45 51 55  44 20 28 70 61 6c 65 74  |F.\.#EQUD (palet|
000116a0  74 65 25 21 49 25 3e 3e  38 80 26 46 46 29 2f 32  |te%!I%>>8.&FF)/2|
000116b0  35 35 2a 46 0d 5c 12 24  45 51 55 44 20 28 70 61  |55*F.\.$EQUD (pa|
000116c0  6c 65 74 74 65 25 21 49  25 3e 3e 31 36 80 26 46  |lette%!I%>>16.&F|
000116d0  46 29 2f 32 35 35 2a 46  0d 5c 1c 05 5d 0d 5c 26  |F)/255*F.\..].\&|
000116e0  05 ed 0d 5c 30 0d e7 6d  24 3d 22 52 22 20 8c 0d  |...\0..m$="R" ..|
000116f0  5c 3a 0a 5b 4f 50 54 20  5a 0d 5c 44 15 2e 69 63  |\:.[OPT Z.\D..ic|
00011700  74 6c 6f 63 20 45 51 55  44 20 69 63 74 25 0d 5c  |tloc EQUD ict%.\|
00011710  4e 05 5d 0d 5c 58 05 cd  0d 5c 62 0a 5b 4f 50 54  |N.].\X...\b.[OPT|
00011720  20 5a 0d 5c 6c 0e 45 51  55 44 20 64 69 76 31 35  | Z.\l.EQUD div15|
00011730  0d 5c 76 08 2e 66 73 25  0d 5c 80 14 53 54 4d 46  |.\v..fs%.\..STMF|
00011740  44 20 53 50 20 21 2c 7b  52 31 34 7d 0d 5c 8a 21  |D SP !,{R14}.\.!|
00011750  4c 44 52 20 52 31 2c 5b  52 39 2c 23 35 2a 38 5d  |LDR R1,[R9,#5*8]|
00011760  3a 4c 44 52 20 52 31 2c  5b 52 31 5d 20 0d 5c 94  |:LDR R1,[R1] .\.|
00011770  16 4c 44 52 20 52 31 30  2c 5b 52 39 2c 23 34 2a  |.LDR R10,[R9,#4*|
00011780  38 5d 20 0d 5c 9e 16 4c  44 52 20 52 31 31 2c 5b  |8] .\..LDR R11,[|
00011790  52 39 2c 23 33 2a 38 5d  20 0d 5c a8 24 4c 44 52  |R9,#3*8] .\.$LDR|
000117a0  20 52 31 32 2c 5b 52 39  2c 23 32 2a 38 5d 3a 4c  | R12,[R9,#2*8]:L|
000117b0  44 52 20 52 31 32 2c 5b  52 31 32 5d 20 0d 5c b2  |DR R12,[R12] .\.|
000117c0  1f 4c 44 52 20 52 38 2c  5b 52 39 2c 23 38 5d 3a  |.LDR R8,[R9,#8]:|
000117d0  4c 44 52 20 52 38 2c 5b  52 38 5d 20 0d 5c bc 1c  |LDR R8,[R8] .\..|
000117e0  4c 44 52 20 52 39 2c 5b  52 39 5d 3a 4c 44 52 20  |LDR R9,[R9]:LDR |
000117f0  52 39 2c 5b 52 39 5d 20  0d 5c c6 11 4c 44 52 20  |R9,[R9] .\..LDR |
00011800  52 34 2c 5b 52 31 30 5d  20 0d 5c d0 14 4c 44 52  |R4,[R10] .\..LDR|
00011810  20 52 35 2c 5b 52 31 30  2c 23 34 5d 20 0d 5c da  | R5,[R10,#4] .\.|
00011820  14 4c 44 52 20 52 36 2c  5b 52 31 30 2c 23 38 5d  |.LDR R6,[R10,#8]|
00011830  20 0d 5c e4 10 4c 44 52  20 52 37 2c 66 73 25 2d  | .\..LDR R7,fs%-|
00011840  34 0d 5c ee 0b 2e 66 73  6c 6f 6f 70 0d 5c f8 13  |4.\...fsloop.\..|
00011850  41 44 44 20 52 31 30 2c  52 31 30 2c 52 38 20 0d  |ADD R10,R10,R8 .|
00011860  5d 02 05 5d 0d 5d 0c 0b  c8 8e 20 6d 24 20 ca 0d  |]..].].... m$ ..|
00011870  5d 16 08 c9 22 54 22 0d  5d 20 0a 5b 4f 50 54 20  |]..."T".] .[OPT |
00011880  5a 0d 5d 2a 25 43 4d 50  20 52 34 2c 23 46 3a 4d  |Z.]*%CMP R4,#F:M|
00011890  4f 56 43 53 20 52 34 2c  23 30 3a 4d 4f 56 47 45  |OVCS R4,#0:MOVGE|
000118a0  20 52 34 2c 23 46 0d 5d  34 34 4d 4f 56 20 52 30  | R4,#F.]44MOV R0|
000118b0  2c 52 34 2c 4c 53 52 20  23 28 62 69 74 73 2d 34  |,R4,LSR #(bits-4|
000118c0  29 3a 43 4d 50 20 52 30  2c 23 31 35 3a 4d 4f 56  |):CMP R0,#15:MOV|
000118d0  43 53 20 52 30 2c 23 31  35 20 0d 5d 3e 25 43 4d  |CS R0,#15 .]>%CM|
000118e0  50 20 52 35 2c 23 46 3a  4d 4f 56 43 53 20 52 35  |P R5,#F:MOVCS R5|
000118f0  2c 23 30 3a 4d 4f 56 47  45 20 52 35 2c 23 46 0d  |,#0:MOVGE R5,#F.|
00011900  5d 48 47 4d 4f 56 20 52  33 2c 52 35 2c 4c 53 52  |]HGMOV R3,R5,LSR|
00011910  20 23 28 62 69 74 73 2d  34 29 3a 43 4d 50 20 52  | #(bits-4):CMP R|
00011920  33 2c 23 31 35 3a 4d 4f  56 43 53 20 52 33 2c 23  |3,#15:MOVCS R3,#|
00011930  31 35 3a 84 52 20 52 30  2c 52 30 2c 52 33 2c 4c  |15:.R R0,R0,R3,L|
00011940  53 4c 20 23 34 20 0d 5d  52 25 43 4d 50 20 52 36  |SL #4 .]R%CMP R6|
00011950  2c 23 46 3a 4d 4f 56 43  53 20 52 36 2c 23 30 3a  |,#F:MOVCS R6,#0:|
00011960  4d 4f 56 47 45 20 52 36  2c 23 46 0d 5d 5c 47 4d  |MOVGE R6,#F.]\GM|
00011970  4f 56 20 52 33 2c 52 36  2c 4c 53 52 20 23 28 62  |OV R3,R6,LSR #(b|
00011980  69 74 73 2d 34 29 3a 43  4d 50 20 52 33 2c 23 31  |its-4):CMP R3,#1|
00011990  35 3a 4d 4f 56 43 53 20  52 33 2c 23 31 35 3a 84  |5:MOVCS R3,#15:.|
000119a0  52 20 52 30 2c 52 30 2c  52 33 2c 4c 53 4c 20 23  |R R0,R0,R3,LSL #|
000119b0  38 20 0d 5d 66 16 4c 44  52 20 52 33 2c 63 6f 6c  |8 .]f.LDR R3,col|
000119c0  6d 61 74 63 68 6c 6f 63  0d 5d 70 13 4c 44 52 42  |matchloc.]p.LDRB|
000119d0  20 52 30 2c 5b 52 33 2c  52 30 5d 0d 5d 7a 2b 41  | R0,[R3,R0].]z+A|
000119e0  44 44 20 52 33 2c 52 30  2c 52 30 2c 4c 53 4c 20  |DD R3,R0,R0,LSL |
000119f0  23 31 3a 41 44 44 20 52  33 2c 52 37 2c 52 33 2c  |#1:ADD R3,R7,R3,|
00011a00  4c 53 4c 20 23 32 0d 5d  84 1f 4c 44 52 20 52 32  |LSL #2.]..LDR R2|
00011a10  2c 5b 52 33 5d 2c 23 34  3a 53 55 42 20 52 34 2c  |,[R3],#4:SUB R4,|
00011a20  52 34 2c 52 32 0d 5d 8e  2e 4c 44 4d 49 41 20 52  |R4,R2.]..LDMIA R|
00011a30  33 2c 7b 52 32 2c 52 33  7d 3a 53 55 42 20 52 35  |3,{R2,R3}:SUB R5|
00011a40  2c 52 35 2c 52 32 3a 53  55 42 20 52 36 2c 52 36  |,R5,R2:SUB R6,R6|
00011a50  2c 52 33 0d 5d 98 05 5d  0d 5d a2 08 c9 22 52 22  |,R3.]..].]..."R"|
00011a60  0d 5d ac 10 f2 73 72 63  68 64 65 76 6c 69 73 74  |.]...srchdevlist|
00011a70  0d 5d b6 05 7f 0d 5d c0  0a 5b 4f 50 54 20 5a 0d  |.]....]..[OPT Z.|
00011a80  5d ca 25 43 4d 50 20 52  34 2c 23 46 3a 4d 4f 56  |].%CMP R4,#F:MOV|
00011a90  43 53 20 52 34 2c 23 30  3a 4d 4f 56 47 45 20 52  |CS R4,#0:MOVGE R|
00011aa0  34 2c 23 46 0d 5d d4 25  43 4d 50 20 52 35 2c 23  |4,#F.].%CMP R5,#|
00011ab0  46 3a 4d 4f 56 43 53 20  52 35 2c 23 30 3a 4d 4f  |F:MOVCS R5,#0:MO|
00011ac0  56 47 45 20 52 35 2c 23  46 0d 5d de 25 43 4d 50  |VGE R5,#F.].%CMP|
00011ad0  20 52 36 2c 23 46 3a 4d  4f 56 43 53 20 52 36 2c  | R6,#F:MOVCS R6,|
00011ae0  23 30 3a 4d 4f 56 47 45  20 52 36 2c 23 46 0d 5d  |#0:MOVGE R6,#F.]|
00011af0  e8 19 53 54 4d 46 44 20  53 50 20 21 2c 7b 52 37  |..STMFD SP !,{R7|
00011b00  2c 52 38 2c 52 39 7d 0d  5d f2 0d 4d 56 4e 20 52  |,R8,R9}.]..MVN R|
00011b10  32 2c 23 30 0d 5d fc 13  4d 4f 56 20 52 33 2c 23  |2,#0.]..MOV R3,#|
00011b20  26 33 30 3c 3c 32 33 0d  5e 06 1c 2e 73 72 63 68  |&30<<23.^...srch|
00011b30  20 52 53 42 20 52 37 2c  52 33 2c 23 26 32 30 3c  | RSB R7,R3,#&20<|
00011b40  3c 32 33 0d 5e 10 19 4d  4f 56 20 52 38 2c 52 36  |<23.^..MOV R8,R6|
00011b50  2c 4c 53 52 20 23 62 69  74 73 2d 38 0d 5e 1a 17  |,LSR #bits-8.^..|
00011b60  53 55 42 20 52 38 2c 52  38 2c 52 38 2c 4c 53 52  |SUB R8,R8,R8,LSR|
00011b70  20 23 34 0d 5e 24 19 41  44 44 53 20 52 37 2c 52  | #4.^$.ADDS R7,R|
00011b80  37 2c 52 38 2c 4c 53 4c  20 23 32 33 0d 5e 2e 18  |7,R8,LSL #23.^..|
00011b90  4d 4f 56 56 53 53 20 52  37 2c 23 26 37 46 30 30  |MOVVSS R7,#&7F00|
00011ba0  30 30 30 30 0d 5e 38 0f  4d 4f 56 4d 49 20 52 37  |0000.^8.MOVMI R7|
00011bb0  2c 23 30 0d 5e 42 16 80  20 52 37 2c 52 37 2c 23  |,#0.^B.. R7,R7,#|
00011bc0  26 36 30 30 30 30 30 30  30 0d 5e 4c 10 41 44 44  |&60000000.^L.ADD|
00011bd0  20 52 37 2c 52 37 2c 52  33 0d 5e 56 18 41 44 44  | R7,R7,R3.^V.ADD|
00011be0  20 52 31 34 2c 52 37 2c  52 37 2c 4c 53 52 20 23  | R14,R7,R7,LSR #|
00011bf0  34 0d 5e 60 19 41 44 44  20 52 37 2c 52 31 34 2c  |4.^`.ADD R7,R14,|
00011c00  52 31 34 2c 4c 53 52 20  23 38 0d 5e 6a 18 41 44  |R14,LSR #8.^j.AD|
00011c10  44 20 52 37 2c 52 37 2c  52 37 2c 4c 53 52 20 23  |D R7,R7,R7,LSR #|
00011c20  31 36 0d 5e 74 1f 53 55  42 53 20 52 38 2c 52 36  |16.^t.SUBS R8,R6|
00011c30  2c 52 31 34 2c 4c 53 52  20 23 33 31 2d 62 69 74  |,R14,LSR #31-bit|
00011c40  73 0d 5e 7e 12 52 53 42  4c 54 20 52 38 2c 52 38  |s.^~.RSBLT R8,R8|
00011c50  2c 23 30 0d 5e 88 19 4d  4f 56 20 52 38 2c 52 38  |,#0.^..MOV R8,R8|
00011c60  2c 4c 53 52 20 23 62 69  74 73 2f 32 0d 5e 92 10  |,LSR #bits/2.^..|
00011c70  4d 55 4c 20 52 39 2c 52  38 2c 52 38 0d 5e 9c 16  |MUL R9,R8,R8.^..|
00011c80  52 53 42 20 52 37 2c 52  33 2c 23 26 32 30 3c 3c  |RSB R7,R3,#&20<<|
00011c90  32 33 0d 5e a6 19 4d 4f  56 20 52 38 2c 52 35 2c  |23.^..MOV R8,R5,|
00011ca0  4c 53 52 20 23 62 69 74  73 2d 38 0d 5e b0 17 53  |LSR #bits-8.^..S|
00011cb0  55 42 20 52 38 2c 52 38  2c 52 38 2c 4c 53 52 20  |UB R8,R8,R8,LSR |
00011cc0  23 34 0d 5e ba 19 41 44  44 53 20 52 37 2c 52 37  |#4.^..ADDS R7,R7|
00011cd0  2c 52 38 2c 4c 53 4c 20  23 32 33 0d 5e c4 18 4d  |,R8,LSL #23.^..M|
00011ce0  4f 56 56 53 53 20 52 37  2c 23 26 37 46 30 30 30  |OVVSS R7,#&7F000|
00011cf0  30 30 30 0d 5e ce 0f 4d  4f 56 4d 49 20 52 37 2c  |000.^..MOVMI R7,|
00011d00  23 30 0d 5e d8 16 80 20  52 37 2c 52 37 2c 23 26  |#0.^... R7,R7,#&|
00011d10  36 30 30 30 30 30 30 30  0d 5e e2 10 41 44 44 20  |60000000.^..ADD |
00011d20  52 37 2c 52 33 2c 52 37  0d 5e ec 17 41 44 44 20  |R7,R3,R7.^..ADD |
00011d30  52 37 2c 52 37 2c 52 37  2c 4c 53 52 20 23 34 0d  |R7,R7,R7,LSR #4.|
00011d40  5e f6 18 84 52 20 52 31  34 2c 52 31 34 2c 52 37  |^...R R14,R14,R7|
00011d50  2c 4c 53 52 20 23 38 0d  5f 00 17 41 44 44 20 52  |,LSR #8._..ADD R|
00011d60  37 2c 52 37 2c 52 37 2c  4c 53 52 20 23 38 0d 5f  |7,R7,R7,LSR #8._|
00011d70  0a 18 41 44 44 20 52 37  2c 52 37 2c 52 37 2c 4c  |..ADD R7,R7,R7,L|
00011d80  53 52 20 23 31 36 0d 5f  14 1e 53 55 42 53 20 52  |SR #16._..SUBS R|
00011d90  38 2c 52 35 2c 52 37 2c  4c 53 52 20 23 33 31 2d  |8,R5,R7,LSR #31-|
00011da0  62 69 74 73 0d 5f 1e 12  52 53 42 4c 54 20 52 38  |bits._..RSBLT R8|
00011db0  2c 52 38 2c 23 30 0d 5f  28 19 4d 4f 56 20 52 38  |,R8,#0._(.MOV R8|
00011dc0  2c 52 38 2c 4c 53 52 20  23 62 69 74 73 2f 32 0d  |,R8,LSR #bits/2.|
00011dd0  5f 32 10 4d 55 4c 20 52  37 2c 52 38 2c 52 38 0d  |_2.MUL R7,R8,R8.|
00011de0  5f 3c 17 41 44 44 20 52  37 2c 52 37 2c 52 37 2c  |_<.ADD R7,R7,R7,|
00011df0  4c 53 4c 20 23 32 0d 5f  46 17 41 44 44 20 52 39  |LSL #2._F.ADD R9|
00011e00  2c 52 39 2c 52 37 2c 4c  53 4c 20 23 31 0d 5f 50  |,R9,R7,LSL #1._P|
00011e10  16 52 53 42 20 52 37 2c  52 33 2c 23 26 32 30 3c  |.RSB R7,R3,#&20<|
00011e20  3c 32 33 0d 5f 5a 19 4d  4f 56 20 52 38 2c 52 34  |<23._Z.MOV R8,R4|
00011e30  2c 4c 53 52 20 23 62 69  74 73 2d 38 0d 5f 64 17  |,LSR #bits-8._d.|
00011e40  53 55 42 20 52 38 2c 52  38 2c 52 38 2c 4c 53 52  |SUB R8,R8,R8,LSR|
00011e50  20 23 34 0d 5f 6e 19 41  44 44 53 20 52 37 2c 52  | #4._n.ADDS R7,R|
00011e60  37 2c 52 38 2c 4c 53 4c  20 23 32 33 0d 5f 78 18  |7,R8,LSL #23._x.|
00011e70  4d 4f 56 56 53 53 20 52  37 2c 23 26 37 46 30 30  |MOVVSS R7,#&7F00|
00011e80  30 30 30 30 0d 5f 82 0f  4d 4f 56 4d 49 20 52 37  |0000._..MOVMI R7|
00011e90  2c 23 30 0d 5f 8c 16 80  20 52 37 2c 52 37 2c 23  |,#0._... R7,R7,#|
00011ea0  26 36 30 30 30 30 30 30  30 0d 5f 96 10 41 44 44  |&60000000._..ADD|
00011eb0  20 52 37 2c 52 33 2c 52  37 0d 5f a0 17 41 44 44  | R7,R3,R7._..ADD|
00011ec0  20 52 37 2c 52 37 2c 52  37 2c 4c 53 52 20 23 34  | R7,R7,R7,LSR #4|
00011ed0  0d 5f aa 19 84 52 20 52  31 34 2c 52 31 34 2c 52  |._...R R14,R14,R|
00011ee0  37 2c 4c 53 52 20 23 31  36 0d 5f b4 17 41 44 44  |7,LSR #16._..ADD|
00011ef0  20 52 37 2c 52 37 2c 52  37 2c 4c 53 52 20 23 38  | R7,R7,R7,LSR #8|
00011f00  0d 5f be 18 41 44 44 20  52 37 2c 52 37 2c 52 37  |._..ADD R7,R7,R7|
00011f10  2c 4c 53 52 20 23 31 36  0d 5f c8 1e 53 55 42 53  |,LSR #16._..SUBS|
00011f20  20 52 38 2c 52 34 2c 52  37 2c 4c 53 52 20 23 33  | R8,R4,R7,LSR #3|
00011f30  31 2d 62 69 74 73 0d 5f  d2 12 52 53 42 4c 54 20  |1-bits._..RSBLT |
00011f40  52 38 2c 52 38 2c 23 30  0d 5f dc 19 4d 4f 56 20  |R8,R8,#0._..MOV |
00011f50  52 38 2c 52 38 2c 4c 53  52 20 23 62 69 74 73 2f  |R8,R8,LSR #bits/|
00011f60  32 0d 5f e6 10 4d 55 4c  20 52 37 2c 52 38 2c 52  |2._..MUL R7,R8,R|
00011f70  38 0d 5f f0 17 41 44 44  20 52 37 2c 52 37 2c 52  |8._..ADD R7,R7,R|
00011f80  37 2c 4c 53 4c 20 23 31  0d 5f fa 10 41 44 44 20  |7,LSL #1._..ADD |
00011f90  52 39 2c 52 39 2c 52 37  0d 60 04 0d 43 4d 50 20  |R9,R9,R7.`..CMP |
00011fa0  52 39 2c 52 32 0d 60 0e  0f 4d 4f 56 4c 53 20 52  |R9,R2.`..MOVLS R|
00011fb0  32 2c 52 39 0d 60 18 10  4d 4f 56 4c 53 20 52 30  |2,R9.`..MOVLS R0|
00011fc0  2c 52 31 34 0d 60 22 17  53 55 42 53 20 52 33 2c  |,R14.`".SUBS R3,|
00011fd0  52 33 2c 23 26 31 30 3c  3c 32 33 0d 60 2c 0c 42  |R3,#&10<<23.`,.B|
00011fe0  47 45 20 73 72 63 68 0d  60 36 16 80 20 52 37 2c  |GE srch.`6.. R7,|
00011ff0  52 30 2c 23 26 34 30 30  30 30 30 30 30 0d 60 40  |R0,#&40000000.`@|
00012000  15 4d 4f 56 20 52 38 2c  52 37 2c 4c 53 52 20 23  |.MOV R8,R7,LSR #|
00012010  32 33 0d 60 4a 14 80 20  52 37 2c 52 30 2c 23 26  |23.`J.. R7,R0,#&|
00012020  36 30 30 30 30 30 0d 60  54 17 84 52 20 52 38 2c  |600000.`T..R R8,|
00012030  52 38 2c 52 37 2c 4c 53  52 20 23 31 36 0d 60 5e  |R8,R7,LSR #16.`^|
00012040  12 80 20 52 37 2c 52 30  2c 23 26 34 30 30 30 0d  |.. R7,R0,#&4000.|
00012050  60 68 17 84 52 20 52 38  2c 52 38 2c 52 37 2c 4c  |`h..R R8,R8,R7,L|
00012060  53 52 20 23 31 30 0d 60  72 16 80 20 52 37 2c 52  |SR #10.`r.. R7,R|
00012070  30 2c 23 26 32 30 30 30  30 30 30 30 0d 60 7c 17  |0,#&20000000.`|.|
00012080  84 52 20 52 38 2c 52 38  2c 52 37 2c 4c 53 52 20  |.R R8,R8,R7,LSR |
00012090  23 32 36 0d 60 86 12 80  20 52 37 2c 52 30 2c 23  |#26.`... R7,R0,#|
000120a0  26 33 38 30 30 0d 60 90  17 84 52 20 52 30 2c 52  |&3800.`...R R0,R|
000120b0  38 2c 52 37 2c 4c 53 52  20 23 31 31 0d 60 9a 19  |8,R7,LSR #11.`..|
000120c0  4c 44 4d 46 44 20 53 50  20 21 2c 7b 52 37 2c 52  |LDMFD SP !,{R7,R|
000120d0  38 2c 52 39 7d 0d 60 a4  2b 41 44 44 20 52 33 2c  |8,R9}.`.+ADD R3,|
000120e0  52 30 2c 52 30 2c 4c 53  4c 20 23 31 3a 41 44 44  |R0,R0,LSL #1:ADD|
000120f0  20 52 33 2c 52 37 2c 52  33 2c 4c 53 4c 20 23 32  | R3,R7,R3,LSL #2|
00012100  0d 60 ae 1f 4c 44 52 20  52 32 2c 5b 52 33 5d 2c  |.`..LDR R2,[R3],|
00012110  23 34 3a 53 55 42 20 52  34 2c 52 34 2c 52 32 0d  |#4:SUB R4,R4,R2.|
00012120  60 b8 2e 4c 44 4d 49 41  20 52 33 2c 7b 52 32 2c  |`..LDMIA R3,{R2,|
00012130  52 33 7d 3a 53 55 42 20  52 35 2c 52 35 2c 52 32  |R3}:SUB R5,R5,R2|
00012140  3a 53 55 42 20 52 36 2c  52 36 2c 52 33 0d 60 c2  |:SUB R6,R6,R3.`.|
00012150  05 5d 0d 60 cc 05 cb 0d  60 d6 0a 5b 4f 50 54 20  |.].`....`..[OPT |
00012160  5a 0d 60 e0 14 53 54 52  42 20 52 30 2c 5b 52 31  |Z.`..STRB R0,[R1|
00012170  32 5d 2c 52 31 0d 60 ea  05 5d 0d 60 f4 0e e7 64  |2],R1.`..].`...d|
00012180  69 74 68 65 72 25 20 8c  0d 60 fe 0a 5b 4f 50 54  |ither% ..`..[OPT|
00012190  20 5a 0d 61 08 12 41 44  44 20 52 30 2c 52 31 31  | Z.a..ADD R0,R11|
000121a0  2c 23 34 20 0d 61 12 18  41 44 44 20 52 32 2c 52  |,#4 .a..ADD R2,R|
000121b0  34 2c 52 34 2c 4c 53 4c  20 23 31 20 0d 61 1c 29  |4,R4,LSL #1 .a.)|
000121c0  4c 44 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |LDR R3,[R11,-R8]|
000121d0  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
000121e0  52 20 23 34 20 0d 61 26  14 53 54 52 20 52 33 2c  |R #4 .a&.STR R3,|
000121f0  5b 52 31 31 2c 2d 52 38  5d 0d 61 30 18 41 44 44  |[R11,-R8].a0.ADD|
00012200  20 52 32 2c 52 34 2c 52  34 2c 4c 53 4c 20 23 32  | R2,R4,R4,LSL #2|
00012210  20 0d 61 3a 25 4c 44 52  20 52 33 2c 5b 52 31 31  | .a:%LDR R3,[R11|
00012220  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00012230  53 52 20 23 34 20 0d 61  44 10 53 54 52 20 52 33  |SR #4 .aD.STR R3|
00012240  2c 5b 52 31 31 5d 0d 61  4e 15 4d 4f 56 20 52 33  |,[R11].aN.MOV R3|
00012250  2c 52 34 2c 41 53 52 20  23 34 20 0d 61 58 15 53  |,R4,ASR #4 .aX.S|
00012260  54 52 20 52 33 2c 5b 52  31 31 2c 52 38 5d 21 20  |TR R3,[R11,R8]! |
00012270  0d 61 62 18 52 53 42 20  52 32 2c 52 34 2c 52 34  |.ab.RSB R2,R4,R4|
00012280  2c 4c 53 4c 20 23 33 20  0d 61 6c 11 4c 44 52 20  |,LSL #3 .al.LDR |
00012290  52 34 2c 5b 52 31 30 5d  20 0d 61 76 18 41 44 44  |R4,[R10] .av.ADD|
000122a0  20 52 34 2c 52 34 2c 52  32 2c 41 53 52 20 23 34  | R4,R4,R2,ASR #4|
000122b0  20 0d 61 80 18 41 44 44  20 52 32 2c 52 35 2c 52  | .a..ADD R2,R5,R|
000122c0  35 2c 4c 53 4c 20 23 31  20 0d 61 8a 28 4c 44 52  |5,LSL #1 .a.(LDR|
000122d0  20 52 33 2c 5b 52 30 2c  2d 52 38 5d 3a 41 44 44  | R3,[R0,-R8]:ADD|
000122e0  20 52 33 2c 52 33 2c 52  32 2c 41 53 52 20 23 34  | R3,R3,R2,ASR #4|
000122f0  20 0d 61 94 13 53 54 52  20 52 33 2c 5b 52 30 2c  | .a..STR R3,[R0,|
00012300  2d 52 38 5d 0d 61 9e 15  4d 4f 56 20 52 33 2c 52  |-R8].a..MOV R3,R|
00012310  35 2c 41 53 52 20 23 34  20 0d 61 a8 13 53 54 52  |5,ASR #4 .a..STR|
00012320  20 52 33 2c 5b 52 30 2c  52 38 5d 20 0d 61 b2 18  | R3,[R0,R8] .a..|
00012330  41 44 44 20 52 32 2c 52  35 2c 52 35 2c 4c 53 4c  |ADD R2,R5,R5,LSL|
00012340  20 23 32 20 0d 61 bc 24  4c 44 52 20 52 33 2c 5b  | #2 .a.$LDR R3,[|
00012350  52 30 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R0]:ADD R3,R3,R2|
00012360  2c 41 53 52 20 23 34 20  0d 61 c6 13 53 54 52 20  |,ASR #4 .a..STR |
00012370  52 33 2c 5b 52 30 5d 2c  23 34 20 0d 61 d0 18 52  |R3,[R0],#4 .a..R|
00012380  53 42 20 52 32 2c 52 35  2c 52 35 2c 4c 53 4c 20  |SB R2,R5,R5,LSL |
00012390  23 33 20 0d 61 da 14 4c  44 52 20 52 35 2c 5b 52  |#3 .a..LDR R5,[R|
000123a0  31 30 2c 23 34 5d 20 0d  61 e4 18 41 44 44 20 52  |10,#4] .a..ADD R|
000123b0  35 2c 52 35 2c 52 32 2c  41 53 52 20 23 34 20 0d  |5,R5,R2,ASR #4 .|
000123c0  61 ee 18 41 44 44 20 52  32 2c 52 36 2c 52 36 2c  |a..ADD R2,R6,R6,|
000123d0  4c 53 4c 20 23 31 20 0d  61 f8 28 4c 44 52 20 52  |LSL #1 .a.(LDR R|
000123e0  33 2c 5b 52 30 2c 2d 52  38 5d 3a 41 44 44 20 52  |3,[R0,-R8]:ADD R|
000123f0  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00012400  62 02 13 53 54 52 20 52  33 2c 5b 52 30 2c 2d 52  |b..STR R3,[R0,-R|
00012410  38 5d 0d 62 0c 18 41 44  44 20 52 32 2c 52 36 2c  |8].b..ADD R2,R6,|
00012420  52 36 2c 4c 53 4c 20 23  32 20 0d 62 16 24 4c 44  |R6,LSL #2 .b.$LD|
00012430  52 20 52 33 2c 5b 52 30  5d 3a 41 44 44 20 52 33  |R R3,[R0]:ADD R3|
00012440  2c 52 33 2c 52 32 2c 41  53 52 20 23 34 20 0d 62  |,R3,R2,ASR #4 .b|
00012450  20 0f 53 54 52 20 52 33  2c 5b 52 30 5d 0d 62 2a  | .STR R3,[R0].b*|
00012460  15 4d 4f 56 20 52 33 2c  52 36 2c 41 53 52 20 23  |.MOV R3,R6,ASR #|
00012470  34 20 0d 62 34 13 53 54  52 20 52 33 2c 5b 52 30  |4 .b4.STR R3,[R0|
00012480  2c 52 38 5d 20 0d 62 3e  18 52 53 42 20 52 32 2c  |,R8] .b>.RSB R2,|
00012490  52 36 2c 52 36 2c 4c 53  4c 20 23 33 20 0d 62 48  |R6,R6,LSL #3 .bH|
000124a0  14 4c 44 52 20 52 36 2c  5b 52 31 30 2c 23 38 5d  |.LDR R6,[R10,#8]|
000124b0  20 0d 62 52 18 41 44 44  20 52 36 2c 52 36 2c 52  | .bR.ADD R6,R6,R|
000124c0  32 2c 41 53 52 20 23 34  20 0d 62 5c 05 5d 0d 62  |2,ASR #4 .b\.].b|
000124d0  66 05 cc 0d 62 70 0a 5b  4f 50 54 20 5a 0d 62 7a  |f...bp.[OPT Z.bz|
000124e0  18 4c 44 4d 49 41 20 52  31 30 2c 7b 52 34 2c 52  |.LDMIA R10,{R4,R|
000124f0  35 2c 52 36 7d 0d 62 84  05 5d 0d 62 8e 05 cd 0d  |5,R6}.b..].b....|
00012500  62 98 0a 5b 4f 50 54 20  5a 0d 62 a2 1c 53 55 42  |b..[OPT Z.b..SUB|
00012510  53 20 52 39 2c 52 39 2c  23 31 3a 42 4e 45 20 66  |S R9,R9,#1:BNE f|
00012520  73 6c 6f 6f 70 0d 62 ac  14 4c 44 4d 46 44 20 53  |sloop.b..LDMFD S|
00012530  50 20 21 2c 7b 50 43 7d  5e 0d 62 b6 05 5d 0d 62  |P !,{PC}^.b..].b|
00012540  c0 08 c9 20 31 35 0d 62  ca 17 64 69 76 74 61 62  |... 15.b..divtab|
00012550  6c 65 3d 50 25 3a c8 8e  20 6d 24 20 ca 0d 62 d4  |le=P%:.. m$ ..b.|
00012560  09 c9 20 22 44 22 0d 62  de 09 c9 20 22 52 22 0d  |.. "D".b... "R".|
00012570  62 e8 10 e3 49 25 3d 30  b8 31 35 2a 34 88 34 0d  |b...I%=0.15*4.4.|
00012580  62 f2 0a 5b 4f 50 54 20  5a 0d 62 fc 26 45 51 55  |b..[OPT Z.b.&EQU|
00012590  44 20 28 70 61 6c 65 74  74 65 25 21 49 25 3e 3e  |D (palette%!I%>>|
000125a0  34 80 26 46 29 2f 62 72  69 67 68 74 25 2a 46 0d  |4.&F)/bright%*F.|
000125b0  63 06 27 45 51 55 44 20  28 70 61 6c 65 74 74 65  |c.'EQUD (palette|
000125c0  25 21 49 25 3e 3e 31 32  80 26 46 29 2f 62 72 69  |%!I%>>12.&F)/bri|
000125d0  67 68 74 25 2a 46 0d 63  10 27 45 51 55 44 20 28  |ght%*F.c.'EQUD (|
000125e0  70 61 6c 65 74 74 65 25  21 49 25 3e 3e 32 30 80  |palette%!I%>>20.|
000125f0  26 46 29 2f 62 72 69 67  68 74 25 2a 46 0d 63 1a  |&F)/bright%*F.c.|
00012600  05 5d 0d 63 24 05 ed 0d  63 2e 0a 5b 4f 50 54 20  |.].c$...c..[OPT |
00012610  5a 0d 63 38 15 2e 69 63  74 6c 6f 63 20 45 51 55  |Z.c8..ictloc EQU|
00012620  44 20 69 63 74 25 0d 63  42 05 5d 0d 63 4c 09 c9  |D ict%.cB.].cL..|
00012630  20 22 54 22 0d 63 56 0c  e3 49 25 3d 30 b8 31 35  | "T".cV..I%=0.15|
00012640  0d 63 60 0a 5b 4f 50 54  20 5a 0d 63 6a 15 45 51  |.c`.[OPT Z.cj.EQ|
00012650  55 44 20 49 25 2f 62 72  69 67 68 74 25 2a 46 0d  |UD I%/bright%*F.|
00012660  63 74 05 5d 0d 63 7e 05  ed 0d 63 88 05 7f 0d 63  |ct.].c~...c....c|
00012670  92 0b e3 49 25 3d 30 b8  37 0d 63 9c 0a 5b 4f 50  |...I%=0.7.c..[OP|
00012680  54 20 5a 0d 63 a6 19 45  51 55 44 20 49 25 2f 28  |T Z.c..EQUD I%/(|
00012690  62 72 69 67 68 74 25 81  32 29 2a 46 0d 63 b0 05  |bright%.2)*F.c..|
000126a0  5d 0d 63 ba 05 ed 0d 63  c4 05 cb 0d 63 ce 0a 5b  |].c....c....c..[|
000126b0  4f 50 54 20 5a 0d 63 d8  08 2e 66 73 25 0d 63 e2  |OPT Z.c...fs%.c.|
000126c0  14 53 54 4d 46 44 20 53  50 20 21 2c 7b 52 31 34  |.STMFD SP !,{R14|
000126d0  7d 0d 63 ec 21 4c 44 52  20 52 31 2c 5b 52 39 2c  |}.c.!LDR R1,[R9,|
000126e0  23 35 2a 38 5d 3a 4c 44  52 20 52 31 2c 5b 52 31  |#5*8]:LDR R1,[R1|
000126f0  5d 20 0d 63 f6 16 4c 44  52 20 52 31 30 2c 5b 52  |] .c..LDR R10,[R|
00012700  39 2c 23 34 2a 38 5d 20  0d 64 00 16 4c 44 52 20  |9,#4*8] .d..LDR |
00012710  52 31 31 2c 5b 52 39 2c  23 33 2a 38 5d 20 0d 64  |R11,[R9,#3*8] .d|
00012720  0a 24 4c 44 52 20 52 31  32 2c 5b 52 39 2c 23 32  |.$LDR R12,[R9,#2|
00012730  2a 38 5d 3a 4c 44 52 20  52 31 32 2c 5b 52 31 32  |*8]:LDR R12,[R12|
00012740  5d 20 0d 64 14 1f 4c 44  52 20 52 38 2c 5b 52 39  |] .d..LDR R8,[R9|
00012750  2c 23 38 5d 3a 4c 44 52  20 52 38 2c 5b 52 38 5d  |,#8]:LDR R8,[R8]|
00012760  20 0d 64 1e 1c 4c 44 52  20 52 39 2c 5b 52 39 5d  | .d..LDR R9,[R9]|
00012770  3a 4c 44 52 20 52 39 2c  5b 52 39 5d 20 0d 64 28  |:LDR R9,[R9] .d(|
00012780  05 5d 0d 64 32 15 e7 6d  24 3d 22 44 22 20 84 6d  |.].d2..m$="D" .m|
00012790  24 3d 22 52 22 20 8c 0d  64 3c 0a 5b 4f 50 54 20  |$="R" ..d<.[OPT |
000127a0  5a 0d 64 46 11 4c 44 52  20 52 34 2c 5b 52 31 30  |Z.dF.LDR R4,[R10|
000127b0  5d 20 0d 64 50 14 4c 44  52 20 52 35 2c 5b 52 31  |] .dP.LDR R5,[R1|
000127c0  30 2c 23 34 5d 20 0d 64  5a 14 4c 44 52 20 52 36  |0,#4] .dZ.LDR R6|
000127d0  2c 5b 52 31 30 2c 23 38  5d 20 0d 64 64 05 5d 0d  |,[R10,#8] .dd.].|
000127e0  64 6e 05 cc 0d 64 78 0a  5b 4f 50 54 20 5a 0d 64  |dn...dx.[OPT Z.d|
000127f0  82 14 4c 44 52 20 52 34  2c 5b 52 31 30 5d 2c 52  |..LDR R4,[R10],R|
00012800  38 20 0d 64 8c 05 5d 0d  64 96 05 cd 0d 64 a0 0e  |8 .d..].d....d..|
00012810  e7 6d 24 3c 3e 22 44 22  20 8c 0d 64 aa 0a 5b 4f  |.m$<>"D" ..d..[O|
00012820  50 54 20 5a 0d 64 b4 13  41 44 52 20 52 37 2c 64  |PT Z.d..ADR R7,d|
00012830  69 76 74 61 62 6c 65 0d  64 be 05 5d 0d 64 c8 05  |ivtable.d..].d..|
00012840  cd 0d 64 d2 0a 5b 4f 50  54 20 5a 0d 64 dc 0b 2e  |..d..[OPT Z.d...|
00012850  66 73 6c 6f 6f 70 0d 64  e6 05 5d 0d 64 f0 0b c8  |fsloop.d..].d...|
00012860  8e 20 6d 24 20 ca 0d 64  fa 08 c9 22 52 22 0d 65  |. m$ ..d..."R".e|
00012870  04 0a 5b 4f 50 54 20 5a  0d 65 0e 12 41 44 44 20  |..[OPT Z.e..ADD |
00012880  52 31 30 2c 52 31 30 2c  52 38 0d 65 18 05 5d 0d  |R10,R10,R8.e..].|
00012890  65 22 10 f2 73 72 63 68  64 65 76 6c 69 73 74 0d  |e"..srchdevlist.|
000128a0  65 2c 0a 5b 4f 50 54 20  5a 0d 65 36 0d 4d 4f 56  |e,.[OPT Z.e6.MOV|
000128b0  20 72 33 2c 72 30 0d 65  40 05 5d 0d 65 4a 09 c9  | r3,r0.e@.].eJ..|
000128c0  20 22 44 22 0d 65 54 0a  5b 4f 50 54 20 5a 0d 65  | "D".eT.[OPT Z.e|
000128d0  5e 13 41 44 44 20 52 31  30 2c 52 31 30 2c 52 38  |^.ADD R10,R10,R8|
000128e0  20 0d 65 68 0d 4d 4f 56  20 52 33 2c 23 30 0d 65  | .eh.MOV R3,#0.e|
000128f0  72 25 43 4d 50 20 52 34  2c 23 46 3a 4d 4f 56 43  |r%CMP R4,#F:MOVC|
00012900  53 20 52 34 2c 23 30 3a  4d 4f 56 47 45 20 52 34  |S R4,#0:MOVGE R4|
00012910  2c 23 46 0d 65 7c 11 43  4d 50 20 52 34 2c 23 46  |,#F.e|.CMP R4,#F|
00012920  3e 3e 31 20 0d 65 86 20  53 55 42 43 53 20 52 34  |>>1 .e. SUBCS R4|
00012930  2c 52 34 2c 23 46 3a 84  52 43 53 20 52 33 2c 52  |,R4,#F:.RCS R3,R|
00012940  33 2c 23 31 0d 65 90 25  43 4d 50 20 52 35 2c 23  |3,#1.e.%CMP R5,#|
00012950  46 3a 4d 4f 56 43 53 20  52 35 2c 23 30 3a 4d 4f  |F:MOVCS R5,#0:MO|
00012960  56 47 45 20 52 35 2c 23  46 0d 65 9a 11 43 4d 50  |VGE R5,#F.e..CMP|
00012970  20 52 35 2c 23 46 3e 3e  31 20 0d 65 a4 20 53 55  | R5,#F>>1 .e. SU|
00012980  42 43 53 20 52 35 2c 52  35 2c 23 46 3a 84 52 43  |BCS R5,R5,#F:.RC|
00012990  53 20 52 33 2c 52 33 2c  23 32 0d 65 ae 25 43 4d  |S R3,R3,#2.e.%CM|
000129a0  50 20 52 36 2c 23 46 3a  4d 4f 56 43 53 20 52 36  |P R6,#F:MOVCS R6|
000129b0  2c 23 30 3a 4d 4f 56 47  45 20 52 36 2c 23 46 0d  |,#0:MOVGE R6,#F.|
000129c0  65 b8 11 43 4d 50 20 52  36 2c 23 46 3e 3e 31 20  |e..CMP R6,#F>>1 |
000129d0  0d 65 c2 20 53 55 42 43  53 20 52 36 2c 52 36 2c  |.e. SUBCS R6,R6,|
000129e0  23 46 3a 84 52 43 53 20  52 33 2c 52 33 2c 23 34  |#F:.RCS R3,R3,#4|
000129f0  0d 65 cc 05 5d 0d 65 d6  09 c9 20 22 54 22 0d 65  |.e..].e... "T".e|
00012a00  e0 0a 5b 4f 50 54 20 5a  0d 65 ea 25 43 4d 50 20  |..[OPT Z.e.%CMP |
00012a10  52 34 2c 23 46 3a 4d 4f  56 43 53 20 52 34 2c 23  |R4,#F:MOVCS R4,#|
00012a20  30 3a 4d 4f 56 47 45 20  52 34 2c 23 46 0d 65 f4  |0:MOVGE R4,#F.e.|
00012a30  3c 52 53 42 20 52 33 2c  52 34 2c 52 34 2c 4c 53  |<RSB R3,R4,R4,LS|
00012a40  4c 20 23 34 3a 41 44 44  20 52 33 2c 52 33 2c 23  |L #4:ADD R3,R3,#|
00012a50  46 3e 3e 31 3a 4d 4f 56  20 52 33 2c 52 33 2c 4c  |F>>1:MOV R3,R3,L|
00012a60  53 52 20 23 62 69 74 73  20 0d 65 fe 1a 4c 44 52  |SR #bits .e..LDR|
00012a70  20 52 32 2c 5b 52 37 2c  52 33 2c 4c 53 4c 20 23  | R2,[R7,R3,LSL #|
00012a80  32 5d 20 0d 66 08 11 53  55 42 20 52 34 2c 52 34  |2] .f..SUB R4,R4|
00012a90  2c 52 32 20 0d 66 12 05  5d 0d 66 1c 05 7f 0d 66  |,R2 .f..].f....f|
00012aa0  26 0a 5b 4f 50 54 20 5a  0d 66 30 25 43 4d 50 20  |&.[OPT Z.f0%CMP |
00012ab0  52 34 2c 23 46 3a 4d 4f  56 43 53 20 52 34 2c 23  |R4,#F:MOVCS R4,#|
00012ac0  30 3a 4d 4f 56 47 45 20  52 34 2c 23 46 0d 66 3a  |0:MOVGE R4,#F.f:|
00012ad0  3c 52 53 42 20 52 33 2c  52 34 2c 52 34 2c 4c 53  |<RSB R3,R4,R4,LS|
00012ae0  4c 20 23 33 3a 41 44 44  20 52 33 2c 52 33 2c 23  |L #3:ADD R3,R3,#|
00012af0  46 3e 3e 31 3a 4d 4f 56  20 52 33 2c 52 33 2c 4c  |F>>1:MOV R3,R3,L|
00012b00  53 52 20 23 62 69 74 73  20 0d 66 44 1a 4c 44 52  |SR #bits .fD.LDR|
00012b10  20 52 32 2c 5b 52 37 2c  52 33 2c 4c 53 4c 20 23  | R2,[R7,R3,LSL #|
00012b20  32 5d 20 0d 66 4e 11 53  55 42 20 52 34 2c 52 34  |2] .fN.SUB R4,R4|
00012b30  2c 52 32 20 0d 66 58 05  5d 0d 66 62 05 cb 0d 66  |,R2 .fX.].fb...f|
00012b40  6c 0a 5b 4f 50 54 20 5a  0d 66 76 15 4d 4f 56 20  |l.[OPT Z.fv.MOV |
00012b50  52 32 2c 52 31 32 2c 4c  53 52 20 23 31 0d 66 80  |R2,R12,LSR #1.f.|
00012b60  0e 54 53 54 20 52 31 32  2c 23 31 0d 66 8a 10 4c  |.TST R12,#1.f..L|
00012b70  44 52 42 20 52 30 2c 5b  52 32 5d 0d 66 94 20 80  |DRB R0,[R2].f. .|
00012b80  45 51 20 52 30 2c 52 30  2c 23 26 46 30 3a 84 52  |EQ R0,R0,#&F0:.R|
00012b90  45 51 20 52 30 2c 52 30  2c 52 33 0d 66 9e 27 80  |EQ R0,R0,R3.f.'.|
00012ba0  4e 45 20 52 30 2c 52 30  2c 23 26 30 46 3a 84 52  |NE R0,R0,#&0F:.R|
00012bb0  4e 45 20 52 30 2c 52 30  2c 52 33 2c 4c 53 4c 20  |NE R0,R0,R3,LSL |
00012bc0  23 34 0d 66 a8 10 53 54  52 42 20 52 30 2c 5b 52  |#4.f..STRB R0,[R|
00012bd0  32 5d 0d 66 b2 12 41 44  44 20 52 31 32 2c 52 31  |2].f..ADD R12,R1|
00012be0  32 2c 52 31 0d 66 bc 05  5d 0d 66 c6 15 e7 6d 24  |2,R1.f..].f...m$|
00012bf0  3d 22 44 22 20 84 6d 24  3d 22 52 22 20 8c 0d 66  |="D" .m$="R" ..f|
00012c00  d0 0e e7 64 69 74 68 65  72 25 20 8c 0d 66 da 0a  |...dither% ..f..|
00012c10  5b 4f 50 54 20 5a 0d 66  e4 12 41 44 44 20 52 30  |[OPT Z.f..ADD R0|
00012c20  2c 52 31 31 2c 23 34 20  0d 66 ee 18 41 44 44 20  |,R11,#4 .f..ADD |
00012c30  52 32 2c 52 34 2c 52 34  2c 4c 53 4c 20 23 31 20  |R2,R4,R4,LSL #1 |
00012c40  0d 66 f8 29 4c 44 52 20  52 33 2c 5b 52 31 31 2c  |.f.)LDR R3,[R11,|
00012c50  2d 52 38 5d 3a 41 44 44  20 52 33 2c 52 33 2c 52  |-R8]:ADD R3,R3,R|
00012c60  32 2c 41 53 52 20 23 34  20 0d 67 02 14 53 54 52  |2,ASR #4 .g..STR|
00012c70  20 52 33 2c 5b 52 31 31  2c 2d 52 38 5d 0d 67 0c  | R3,[R11,-R8].g.|
00012c80  18 41 44 44 20 52 32 2c  52 34 2c 52 34 2c 4c 53  |.ADD R2,R4,R4,LS|
00012c90  4c 20 23 32 20 0d 67 16  25 4c 44 52 20 52 33 2c  |L #2 .g.%LDR R3,|
00012ca0  5b 52 31 31 5d 3a 41 44  44 20 52 33 2c 52 33 2c  |[R11]:ADD R3,R3,|
00012cb0  52 32 2c 41 53 52 20 23  34 20 0d 67 20 10 53 54  |R2,ASR #4 .g .ST|
00012cc0  52 20 52 33 2c 5b 52 31  31 5d 0d 67 2a 15 4d 4f  |R R3,[R11].g*.MO|
00012cd0  56 20 52 33 2c 52 34 2c  41 53 52 20 23 34 20 0d  |V R3,R4,ASR #4 .|
00012ce0  67 34 15 53 54 52 20 52  33 2c 5b 52 31 31 2c 52  |g4.STR R3,[R11,R|
00012cf0  38 5d 21 20 0d 67 3e 18  52 53 42 20 52 32 2c 52  |8]! .g>.RSB R2,R|
00012d00  34 2c 52 34 2c 4c 53 4c  20 23 33 20 0d 67 48 11  |4,R4,LSL #3 .gH.|
00012d10  4c 44 52 20 52 34 2c 5b  52 31 30 5d 20 0d 67 52  |LDR R4,[R10] .gR|
00012d20  18 41 44 44 20 52 34 2c  52 34 2c 52 32 2c 41 53  |.ADD R4,R4,R2,AS|
00012d30  52 20 23 34 20 0d 67 5c  18 41 44 44 20 52 32 2c  |R #4 .g\.ADD R2,|
00012d40  52 35 2c 52 35 2c 4c 53  4c 20 23 31 20 0d 67 66  |R5,R5,LSL #1 .gf|
00012d50  28 4c 44 52 20 52 33 2c  5b 52 30 2c 2d 52 38 5d  |(LDR R3,[R0,-R8]|
00012d60  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
00012d70  52 20 23 34 20 0d 67 70  13 53 54 52 20 52 33 2c  |R #4 .gp.STR R3,|
00012d80  5b 52 30 2c 2d 52 38 5d  0d 67 7a 15 4d 4f 56 20  |[R0,-R8].gz.MOV |
00012d90  52 33 2c 52 35 2c 41 53  52 20 23 34 20 0d 67 84  |R3,R5,ASR #4 .g.|
00012da0  13 53 54 52 20 52 33 2c  5b 52 30 2c 52 38 5d 20  |.STR R3,[R0,R8] |
00012db0  0d 67 8e 18 41 44 44 20  52 32 2c 52 35 2c 52 35  |.g..ADD R2,R5,R5|
00012dc0  2c 4c 53 4c 20 23 32 20  0d 67 98 24 4c 44 52 20  |,LSL #2 .g.$LDR |
00012dd0  52 33 2c 5b 52 30 5d 3a  41 44 44 20 52 33 2c 52  |R3,[R0]:ADD R3,R|
00012de0  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 67 a2 13  |3,R2,ASR #4 .g..|
00012df0  53 54 52 20 52 33 2c 5b  52 30 5d 2c 23 34 20 0d  |STR R3,[R0],#4 .|
00012e00  67 ac 18 52 53 42 20 52  32 2c 52 35 2c 52 35 2c  |g..RSB R2,R5,R5,|
00012e10  4c 53 4c 20 23 33 20 0d  67 b6 14 4c 44 52 20 52  |LSL #3 .g..LDR R|
00012e20  35 2c 5b 52 31 30 2c 23  34 5d 20 0d 67 c0 18 41  |5,[R10,#4] .g..A|
00012e30  44 44 20 52 35 2c 52 35  2c 52 32 2c 41 53 52 20  |DD R5,R5,R2,ASR |
00012e40  23 34 20 0d 67 ca 18 41  44 44 20 52 32 2c 52 36  |#4 .g..ADD R2,R6|
00012e50  2c 52 36 2c 4c 53 4c 20  23 31 20 0d 67 d4 28 4c  |,R6,LSL #1 .g.(L|
00012e60  44 52 20 52 33 2c 5b 52  30 2c 2d 52 38 5d 3a 41  |DR R3,[R0,-R8]:A|
00012e70  44 44 20 52 33 2c 52 33  2c 52 32 2c 41 53 52 20  |DD R3,R3,R2,ASR |
00012e80  23 34 20 0d 67 de 13 53  54 52 20 52 33 2c 5b 52  |#4 .g..STR R3,[R|
00012e90  30 2c 2d 52 38 5d 0d 67  e8 18 41 44 44 20 52 32  |0,-R8].g..ADD R2|
00012ea0  2c 52 36 2c 52 36 2c 4c  53 4c 20 23 32 20 0d 67  |,R6,R6,LSL #2 .g|
00012eb0  f2 24 4c 44 52 20 52 33  2c 5b 52 30 5d 3a 41 44  |.$LDR R3,[R0]:AD|
00012ec0  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
00012ed0  34 20 0d 67 fc 0f 53 54  52 20 52 33 2c 5b 52 30  |4 .g..STR R3,[R0|
00012ee0  5d 0d 68 06 15 4d 4f 56  20 52 33 2c 52 36 2c 41  |].h..MOV R3,R6,A|
00012ef0  53 52 20 23 34 20 0d 68  10 13 53 54 52 20 52 33  |SR #4 .h..STR R3|
00012f00  2c 5b 52 30 2c 52 38 5d  20 0d 68 1a 18 52 53 42  |,[R0,R8] .h..RSB|
00012f10  20 52 32 2c 52 36 2c 52  36 2c 4c 53 4c 20 23 33  | R2,R6,R6,LSL #3|
00012f20  20 0d 68 24 14 4c 44 52  20 52 36 2c 5b 52 31 30  | .h$.LDR R6,[R10|
00012f30  2c 23 38 5d 20 0d 68 2e  18 41 44 44 20 52 36 2c  |,#8] .h..ADD R6,|
00012f40  52 36 2c 52 32 2c 41 53  52 20 23 34 20 0d 68 38  |R6,R2,ASR #4 .h8|
00012f50  05 5d 0d 68 42 05 cc 0d  68 4c 0a 5b 4f 50 54 20  |.].hB...hL.[OPT |
00012f60  5a 0d 68 56 18 4c 44 4d  49 41 20 52 31 30 2c 7b  |Z.hV.LDMIA R10,{|
00012f70  52 34 2c 52 35 2c 52 36  7d 0d 68 60 05 5d 0d 68  |R4,R5,R6}.h`.].h|
00012f80  6a 05 cd 0d 68 74 05 cc  0d 68 7e 0e e7 64 69 74  |j...ht...h~..dit|
00012f90  68 65 72 25 20 8c 0d 68  88 0a 5b 4f 50 54 20 5a  |her% ..h..[OPT Z|
00012fa0  0d 68 92 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.h..ADD R2,R4,R4|
00012fb0  2c 4c 53 4c 20 23 31 20  0d 68 9c 29 4c 44 52 20  |,LSL #1 .h.)LDR |
00012fc0  52 33 2c 5b 52 31 31 2c  2d 52 38 5d 3a 41 44 44  |R3,[R11,-R8]:ADD|
00012fd0  20 52 33 2c 52 33 2c 52  32 2c 41 53 52 20 23 34  | R3,R3,R2,ASR #4|
00012fe0  20 0d 68 a6 14 53 54 52  20 52 33 2c 5b 52 31 31  | .h..STR R3,[R11|
00012ff0  2c 2d 52 38 5d 0d 68 b0  18 41 44 44 20 52 32 2c  |,-R8].h..ADD R2,|
00013000  52 34 2c 52 34 2c 4c 53  4c 20 23 32 20 0d 68 ba  |R4,R4,LSL #2 .h.|
00013010  25 4c 44 52 20 52 33 2c  5b 52 31 31 5d 3a 41 44  |%LDR R3,[R11]:AD|
00013020  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
00013030  34 20 0d 68 c4 10 53 54  52 20 52 33 2c 5b 52 31  |4 .h..STR R3,[R1|
00013040  31 5d 0d 68 ce 15 4d 4f  56 20 52 33 2c 52 34 2c  |1].h..MOV R3,R4,|
00013050  41 53 52 20 23 34 20 0d  68 d8 15 53 54 52 20 52  |ASR #4 .h..STR R|
00013060  33 2c 5b 52 31 31 2c 52  38 5d 21 20 0d 68 e2 18  |3,[R11,R8]! .h..|
00013070  52 53 42 20 52 32 2c 52  34 2c 52 34 2c 4c 53 4c  |RSB R2,R4,R4,LSL|
00013080  20 23 33 20 0d 68 ec 14  4c 44 52 20 52 34 2c 5b  | #3 .h..LDR R4,[|
00013090  52 31 30 5d 2c 52 38 20  0d 68 f6 18 41 44 44 20  |R10],R8 .h..ADD |
000130a0  52 34 2c 52 34 2c 52 32  2c 41 53 52 20 23 34 20  |R4,R4,R2,ASR #4 |
000130b0  0d 69 00 05 5d 0d 69 0a  05 cc 0d 69 14 0a 5b 4f  |.i..].i....i..[O|
000130c0  50 54 20 5a 0d 69 1e 13  4c 44 52 20 52 34 2c 5b  |PT Z.i..LDR R4,[|
000130d0  52 31 30 5d 2c 52 38 0d  69 28 05 5d 0d 69 32 05  |R10],R8.i(.].i2.|
000130e0  cd 0d 69 3c 05 cd 0d 69  46 0a 5b 4f 50 54 20 5a  |..i<...iF.[OPT Z|
000130f0  0d 69 50 1c 53 55 42 53  20 52 39 2c 52 39 2c 23  |.iP.SUBS R9,R9,#|
00013100  31 3a 42 4e 45 20 66 73  6c 6f 6f 70 0d 69 5a 14  |1:BNE fsloop.iZ.|
00013110  4c 44 4d 46 44 20 53 50  20 21 2c 7b 50 43 7d 5e  |LDMFD SP !,{PC}^|
00013120  0d 69 64 05 5d 0d 69 6e  07 c9 20 33 0d 69 78 17  |.id.].in.. 3.ix.|
00013130  64 69 76 74 61 62 6c 65  3d 50 25 3a c8 8e 20 6d  |divtable=P%:.. m|
00013140  24 20 ca 0d 69 82 09 c9  20 22 43 22 0d 69 8c 09  |$ ..i... "C".i..|
00013150  c9 20 22 52 22 0d 69 96  0f e3 49 25 3d 30 b8 33  |. "R".i...I%=0.3|
00013160  2a 34 88 34 0d 69 a0 0a  5b 4f 50 54 20 5a 0d 69  |*4.4.i..[OPT Z.i|
00013170  aa 26 45 51 55 44 20 28  70 61 6c 65 74 74 65 25  |.&EQUD (palette%|
00013180  21 49 25 3e 3e 34 80 26  46 29 2f 62 72 69 67 68  |!I%>>4.&F)/brigh|
00013190  74 25 2a 46 0d 69 b4 27  45 51 55 44 20 28 70 61  |t%*F.i.'EQUD (pa|
000131a0  6c 65 74 74 65 25 21 49  25 3e 3e 31 32 80 26 46  |lette%!I%>>12.&F|
000131b0  29 2f 62 72 69 67 68 74  25 2a 46 0d 69 be 27 45  |)/bright%*F.i.'E|
000131c0  51 55 44 20 28 70 61 6c  65 74 74 65 25 21 49 25  |QUD (palette%!I%|
000131d0  3e 3e 32 30 80 26 46 29  2f 62 72 69 67 68 74 25  |>>20.&F)/bright%|
000131e0  2a 46 0d 69 c8 05 5d 0d  69 d2 05 ed 0d 69 dc 05  |*F.i..].i....i..|
000131f0  7f 0d 69 e6 0a 5b 4f 50  54 20 5a 0d 69 f0 0a 45  |..i..[OPT Z.i..E|
00013200  51 55 44 20 30 0d 69 fa  18 45 51 55 44 20 31 2f  |QUD 0.i..EQUD 1/|
00013210  28 62 72 69 67 68 74 25  81 34 29 2a 46 0d 6a 04  |(bright%.4)*F.j.|
00013220  18 45 51 55 44 20 32 2f  28 62 72 69 67 68 74 25  |.EQUD 2/(bright%|
00013230  81 34 29 2a 46 0d 6a 0e  0a 45 51 55 44 20 46 0d  |.4)*F.j..EQUD F.|
00013240  6a 18 05 5d 0d 6a 22 05  cb 0d 6a 2c 0a 5b 4f 50  |j..].j"...j,.[OP|
00013250  54 20 5a 0d 6a 36 08 2e  66 73 25 0d 6a 40 14 53  |T Z.j6..fs%.j@.S|
00013260  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
00013270  6a 4a 21 4c 44 52 20 52  31 2c 5b 52 39 2c 23 35  |jJ!LDR R1,[R9,#5|
00013280  2a 38 5d 3a 4c 44 52 20  52 31 2c 5b 52 31 5d 20  |*8]:LDR R1,[R1] |
00013290  0d 6a 54 16 4c 44 52 20  52 31 30 2c 5b 52 39 2c  |.jT.LDR R10,[R9,|
000132a0  23 34 2a 38 5d 20 0d 6a  5e 16 4c 44 52 20 52 31  |#4*8] .j^.LDR R1|
000132b0  31 2c 5b 52 39 2c 23 33  2a 38 5d 20 0d 6a 68 16  |1,[R9,#3*8] .jh.|
000132c0  4c 44 52 20 52 31 32 2c  5b 52 39 2c 23 32 2a 38  |LDR R12,[R9,#2*8|
000132d0  5d 20 0d 6a 72 12 4c 44  52 20 52 31 32 2c 5b 52  |] .jr.LDR R12,[R|
000132e0  31 32 5d 20 0d 6a 7c 13  4c 44 52 20 52 38 2c 5b  |12] .j|.LDR R8,[|
000132f0  52 39 2c 23 38 5d 20 0d  6a 86 10 4c 44 52 20 52  |R9,#8] .j..LDR R|
00013300  38 2c 5b 52 38 5d 20 0d  6a 90 10 4c 44 52 20 52  |8,[R8] .j..LDR R|
00013310  39 2c 5b 52 39 5d 20 0d  6a 9a 10 4c 44 52 20 52  |9,[R9] .j..LDR R|
00013320  39 2c 5b 52 39 5d 20 0d  6a a4 05 5d 0d 6a ae 15  |9,[R9] .j..].j..|
00013330  e7 6d 24 3d 22 43 22 20  84 6d 24 3d 22 52 22 20  |.m$="C" .m$="R" |
00013340  8c 0d 6a b8 0a 5b 4f 50  54 20 5a 0d 6a c2 11 4c  |..j..[OPT Z.j..L|
00013350  44 52 20 52 34 2c 5b 52  31 30 5d 20 0d 6a cc 14  |DR R4,[R10] .j..|
00013360  4c 44 52 20 52 35 2c 5b  52 31 30 2c 23 34 5d 20  |LDR R5,[R10,#4] |
00013370  0d 6a d6 14 4c 44 52 20  52 36 2c 5b 52 31 30 2c  |.j..LDR R6,[R10,|
00013380  23 38 5d 20 0d 6a e0 05  5d 0d 6a ea 05 cc 0d 6a  |#8] .j..].j....j|
00013390  f4 0a 5b 4f 50 54 20 5a  0d 6a fe 14 4c 44 52 20  |..[OPT Z.j..LDR |
000133a0  52 34 2c 5b 52 31 30 5d  2c 52 38 20 0d 6b 08 05  |R4,[R10],R8 .k..|
000133b0  5d 0d 6b 12 05 cd 0d 6b  1c 0a 5b 4f 50 54 20 5a  |].k....k..[OPT Z|
000133c0  0d 6b 26 0b 2e 66 73 6c  6f 6f 70 0d 6b 30 05 5d  |.k&..fsloop.k0.]|
000133d0  0d 6b 3a 0d e7 6d 24 3c  3e 22 43 22 8c 0d 6b 44  |.k:..m$<>"C"..kD|
000133e0  0a 5b 4f 50 54 20 5a 0d  6b 4e 13 41 44 52 20 52  |.[OPT Z.kN.ADR R|
000133f0  37 2c 64 69 76 74 61 62  6c 65 0d 6b 58 05 5d 0d  |7,divtable.kX.].|
00013400  6b 62 05 cd 0d 6b 6c 0b  c8 8e 20 6d 24 20 ca 0d  |kb...kl... m$ ..|
00013410  6b 76 08 c9 22 43 22 0d  6b 80 0a 5b 4f 50 54 20  |kv.."C".k..[OPT |
00013420  5a 0d 6b 8a 13 41 44 44  20 52 31 30 2c 52 31 30  |Z.k..ADD R10,R10|
00013430  2c 52 38 20 0d 6b 94 25  43 4d 50 20 52 34 2c 23  |,R8 .k.%CMP R4,#|
00013440  46 3a 4d 4f 56 43 53 20  52 34 2c 23 30 3a 4d 4f  |F:MOVCS R4,#0:MO|
00013450  56 47 45 20 52 34 2c 23  46 0d 6b 9e 25 43 4d 50  |VGE R4,#F.k.%CMP|
00013460  20 52 35 2c 23 46 3a 4d  4f 56 43 53 20 52 35 2c  | R5,#F:MOVCS R5,|
00013470  23 30 3a 4d 4f 56 47 45  20 52 35 2c 23 46 0d 6b  |#0:MOVGE R5,#F.k|
00013480  a8 25 43 4d 50 20 52 36  2c 23 46 3a 4d 4f 56 43  |.%CMP R6,#F:MOVC|
00013490  53 20 52 36 2c 23 30 3a  4d 4f 56 47 45 20 52 36  |S R6,#0:MOVGE R6|
000134a0  2c 23 46 0d 6b b2 0e 4d  4f 56 20 52 33 2c 23 30  |,#F.k..MOV R3,#0|
000134b0  20 0d 6b bc 1e 43 4d 50  20 52 34 2c 23 46 3e 3e  | .k..CMP R4,#F>>|
000134c0  31 3a 84 52 43 53 20 52  33 2c 52 33 2c 23 31 0d  |1:.RCS R3,R3,#1.|
000134d0  6b c6 1e 43 4d 50 20 52  35 2c 23 46 3e 3e 31 3a  |k..CMP R5,#F>>1:|
000134e0  84 52 43 53 20 52 33 2c  52 33 2c 23 32 0d 6b d0  |.RCS R3,R3,#2.k.|
000134f0  1e 43 4d 50 20 52 36 2c  23 46 3e 3e 31 3a 84 52  |.CMP R6,#F>>1:.R|
00013500  43 53 20 52 33 2c 52 33  2c 23 34 0d 6b da 22 43  |CS R3,R3,#4.k."C|
00013510  4d 50 20 52 33 2c 23 36  3a ec 51 20 52 33 2c 23  |MP R3,#6:.Q R3,#|
00013520  31 3a 42 45 51 20 6f 63  74 63 79 61 6e 0d 6b e4  |1:BEQ octcyan.k.|
00013530  10 42 43 53 20 6f 63 74  77 68 69 74 65 0d 6b ee  |.BCS octwhite.k.|
00013540  19 43 4d 50 20 52 33 2c  23 34 3a 42 45 51 20 6f  |.CMP R3,#4:BEQ o|
00013550  63 74 62 6c 75 65 0d 6b  f8 1e 4d 4f 56 43 53 20  |ctblue.k..MOVCS |
00013560  52 33 2c 23 32 3a 42 43  53 20 6f 63 74 6d 61 67  |R3,#2:BCS octmag|
00013570  65 6e 74 61 0d 6c 02 1a  43 4d 50 20 52 33 2c 23  |enta.l..CMP R3,#|
00013580  32 3a 42 45 51 20 6f 63  74 67 72 65 65 6e 0d 6c  |2:BEQ octgreen.l|
00013590  0c 11 42 43 53 20 6f 63  74 79 65 6c 6c 6f 77 0d  |..BCS octyellow.|
000135a0  6c 16 1a 43 4d 50 20 52  33 2c 23 30 3a 42 45 51  |l..CMP R3,#0:BEQ|
000135b0  20 6f 63 74 62 6c 61 63  6b 0d 6c 20 0b 2e 6f 63  | octblack.l ..oc|
000135c0  74 72 65 64 0d 6c 2a 11  52 53 42 20 52 30 2c 52  |tred.l*.RSB R0,R|
000135d0  34 2c 23 46 20 0d 6c 34  0e 43 4d 50 20 52 35 2c  |4,#F .l4.CMP R5,|
000135e0  52 30 20 0d 6c 3e 0f 42  4c 54 20 6f 63 74 72 65  |R0 .l>.BLT octre|
000135f0  64 31 0d 6c 48 0e 43 4d  50 20 52 35 2c 52 36 20  |d1.lH.CMP R5,R6 |
00013600  0d 6c 52 10 4d 4f 56 47  45 20 52 33 2c 23 33 20  |.lR.MOVGE R3,#3 |
00013610  0d 6c 5c 10 4d 4f 56 4c  54 20 52 33 2c 23 32 20  |.l\.MOVLT R3,#2 |
00013620  0d 6c 66 10 42 20 6f 63  74 63 6f 6e 76 65 72 74  |.lf.B octconvert|
00013630  0d 6c 70 0c 2e 6f 63 74  72 65 64 31 0d 6c 7a 0e  |.lp..octred1.lz.|
00013640  43 4d 50 20 52 30 2c 52  36 20 0d 6c 84 10 4d 4f  |CMP R0,R6 .l..MO|
00013650  56 47 45 20 52 33 2c 23  30 20 0d 6c 8e 10 4d 4f  |VGE R3,#0 .l..MO|
00013660  56 4c 54 20 52 33 2c 23  32 20 0d 6c 98 10 42 20  |VLT R3,#2 .l..B |
00013670  6f 63 74 63 6f 6e 76 65  72 74 0d 6c a2 0d 2e 6f  |octconvert.l...o|
00013680  63 74 67 72 65 65 6e 0d  6c ac 11 52 53 42 20 52  |ctgreen.l..RSB R|
00013690  30 2c 52 35 2c 23 46 20  0d 6c b6 0e 43 4d 50 20  |0,R5,#F .l..CMP |
000136a0  52 30 2c 52 34 20 0d 6c  c0 11 42 4c 54 20 6f 63  |R0,R4 .l..BLT oc|
000136b0  74 67 72 65 65 6e 31 0d  6c ca 0e 43 4d 50 20 52  |tgreen1.l..CMP R|
000136c0  30 2c 52 36 20 0d 6c d4  10 4d 4f 56 47 45 20 52  |0,R6 .l..MOVGE R|
000136d0  33 2c 23 30 20 0d 6c de  10 4d 4f 56 4c 54 20 52  |3,#0 .l..MOVLT R|
000136e0  33 2c 23 31 20 0d 6c e8  10 42 20 6f 63 74 63 6f  |3,#1 .l..B octco|
000136f0  6e 76 65 72 74 0d 6c f2  0e 2e 6f 63 74 67 72 65  |nvert.l...octgre|
00013700  65 6e 31 0d 6c fc 0e 43  4d 50 20 52 34 2c 52 36  |en1.l..CMP R4,R6|
00013710  20 0d 6d 06 10 4d 4f 56  47 45 20 52 33 2c 23 33  | .m..MOVGE R3,#3|
00013720  20 0d 6d 10 10 4d 4f 56  4c 54 20 52 33 2c 23 31  | .m..MOVLT R3,#1|
00013730  20 0d 6d 1a 10 42 20 6f  63 74 63 6f 6e 76 65 72  | .m..B octconver|
00013740  74 0d 6d 24 0c 2e 6f 63  74 62 6c 75 65 0d 6d 2e  |t.m$..octblue.m.|
00013750  11 52 53 42 20 52 30 2c  52 36 2c 23 46 20 0d 6d  |.RSB R0,R6,#F .m|
00013760  38 0e 43 4d 50 20 52 30  2c 52 34 20 0d 6d 42 10  |8.CMP R0,R4 .mB.|
00013770  42 4c 54 20 6f 63 74 62  6c 75 65 31 0d 6d 4c 0e  |BLT octblue1.mL.|
00013780  43 4d 50 20 52 30 2c 52  35 20 0d 6d 56 10 4d 4f  |CMP R0,R5 .mV.MO|
00013790  56 47 45 20 52 33 2c 23  30 20 0d 6d 60 10 4d 4f  |VGE R3,#0 .m`.MO|
000137a0  56 4c 54 20 52 33 2c 23  31 20 0d 6d 6a 10 42 20  |VLT R3,#1 .mj.B |
000137b0  6f 63 74 63 6f 6e 76 65  72 74 0d 6d 74 0d 2e 6f  |octconvert.mt..o|
000137c0  63 74 62 6c 75 65 31 0d  6d 7e 0e 43 4d 50 20 52  |ctblue1.m~.CMP R|
000137d0  34 2c 52 35 20 0d 6d 88  10 4d 4f 56 47 45 20 52  |4,R5 .m..MOVGE R|
000137e0  33 2c 23 32 20 0d 6d 92  10 4d 4f 56 4c 54 20 52  |3,#2 .m..MOVLT R|
000137f0  33 2c 23 31 20 0d 6d 9c  10 42 20 6f 63 74 63 6f  |3,#1 .m..B octco|
00013800  6e 76 65 72 74 0d 6d a6  0d 2e 6f 63 74 77 68 69  |nvert.m...octwhi|
00013810  74 65 0d 6d b0 0e 43 4d  50 20 52 34 2c 52 35 20  |te.m..CMP R4,R5 |
00013820  0d 6d ba 11 42 4c 54 20  6f 63 74 77 68 69 74 65  |.m..BLT octwhite|
00013830  31 0d 6d c4 0e 43 4d 50  20 52 35 2c 52 36 20 0d  |1.m..CMP R5,R6 .|
00013840  6d ce 10 4d 4f 56 47 45  20 52 33 2c 23 33 20 0d  |m..MOVGE R3,#3 .|
00013850  6d d8 10 4d 4f 56 4c 54  20 52 33 2c 23 32 20 0d  |m..MOVLT R3,#2 .|
00013860  6d e2 10 42 20 6f 63 74  63 6f 6e 76 65 72 74 0d  |m..B octconvert.|
00013870  6d ec 0e 2e 6f 63 74 77  68 69 74 65 31 0d 6d f6  |m...octwhite1.m.|
00013880  0e 43 4d 50 20 52 34 2c  52 36 20 0d 6e 00 10 4d  |.CMP R4,R6 .n..M|
00013890  4f 56 47 45 20 52 33 2c  23 33 20 0d 6e 0a 10 4d  |OVGE R3,#3 .n..M|
000138a0  4f 56 4c 54 20 52 33 2c  23 31 20 0d 6e 14 0f 2e  |OVLT R3,#1 .n...|
000138b0  6f 63 74 63 6f 6e 76 65  72 74 0d 6e 1e 0e 43 4d  |octconvert.n..CM|
000138c0  50 20 52 33 2c 23 31 20  0d 6e 28 0c 2e 6f 63 74  |P R3,#1 .n(..oct|
000138d0  63 79 61 6e 0d 6e 32 12  53 55 42 45 51 20 52 35  |cyan.n2.SUBEQ R5|
000138e0  2c 52 35 2c 23 46 0d 6e  3c 12 53 55 42 45 51 20  |,R5,#F.n<.SUBEQ |
000138f0  52 36 2c 52 36 2c 23 46  0d 6e 46 0f 2e 6f 63 74  |R6,R6,#F.nF..oct|
00013900  6d 61 67 65 6e 74 61 0d  6e 50 0e 43 4d 50 20 52  |magenta.nP.CMP R|
00013910  33 2c 23 32 20 0d 6e 5a  12 53 55 42 45 51 20 52  |3,#2 .nZ.SUBEQ R|
00013920  34 2c 52 34 2c 23 46 0d  6e 64 12 53 55 42 45 51  |4,R4,#F.nd.SUBEQ|
00013930  20 52 36 2c 52 36 2c 23  46 0d 6e 6e 0e 2e 6f 63  | R6,R6,#F.nn..oc|
00013940  74 79 65 6c 6c 6f 77 0d  6e 78 0e 43 4d 50 20 52  |tyellow.nx.CMP R|
00013950  33 2c 23 33 20 0d 6e 82  12 53 55 42 45 51 20 52  |3,#3 .n..SUBEQ R|
00013960  34 2c 52 34 2c 23 46 0d  6e 8c 12 53 55 42 45 51  |4,R4,#F.n..SUBEQ|
00013970  20 52 35 2c 52 35 2c 23  46 0d 6e 96 0d 2e 6f 63  | R5,R5,#F.n...oc|
00013980  74 62 6c 61 63 6b 0d 6e  a0 15 4d 4f 56 20 52 32  |tblack.n..MOV R2|
00013990  2c 52 31 32 2c 4c 53 52  20 23 32 0d 6e aa 20 80  |,R12,LSR #2.n. .|
000139a0  20 52 37 2c 52 31 32 2c  23 33 3a 4d 4f 56 20 52  | R7,R12,#3:MOV R|
000139b0  37 2c 52 37 2c 4c 53 4c  20 23 31 0d 6e b4 0e 4d  |7,R7,LSL #1.n..M|
000139c0  4f 56 20 52 31 34 2c 23  33 0d 6e be 45 4c 44 52  |OV R14,#3.n.ELDR|
000139d0  42 20 52 30 2c 5b 52 32  5d 3a 42 49 43 20 52 30  |B R0,[R2]:BIC R0|
000139e0  2c 52 30 2c 52 31 34 2c  4c 53 4c 20 52 37 3a 84  |,R0,R14,LSL R7:.|
000139f0  52 20 52 30 2c 52 30 2c  52 33 2c 4c 53 4c 20 52  |R R0,R0,R3,LSL R|
00013a00  37 3a 53 54 52 42 20 52  30 2c 5b 52 32 5d 0d 6e  |7:STRB R0,[R2].n|
00013a10  c8 12 41 44 44 20 52 31  32 2c 52 31 32 2c 52 31  |..ADD R12,R12,R1|
00013a20  0d 6e d2 05 5d 0d 6e dc  08 c9 22 52 22 0d 6e e6  |.n..].n..."R".n.|
00013a30  0a 5b 4f 50 54 20 5a 0d  6e f0 12 41 44 44 20 52  |.[OPT Z.n..ADD R|
00013a40  31 30 2c 52 31 30 2c 52  38 0d 6e fa 25 43 4d 50  |10,R10,R8.n.%CMP|
00013a50  20 52 34 2c 23 46 3a 4d  4f 56 43 53 20 52 34 2c  | R4,#F:MOVCS R4,|
00013a60  23 30 3a 4d 4f 56 47 45  20 52 34 2c 23 46 0d 6f  |#0:MOVGE R4,#F.o|
00013a70  04 25 43 4d 50 20 52 35  2c 23 46 3a 4d 4f 56 43  |.%CMP R5,#F:MOVC|
00013a80  53 20 52 35 2c 23 30 3a  4d 4f 56 47 45 20 52 35  |S R5,#0:MOVGE R5|
00013a90  2c 23 46 0d 6f 0e 25 43  4d 50 20 52 36 2c 23 46  |,#F.o.%CMP R6,#F|
00013aa0  3a 4d 4f 56 43 53 20 52  36 2c 23 30 3a 4d 4f 56  |:MOVCS R6,#0:MOV|
00013ab0  47 45 20 52 36 2c 23 46  0d 6f 18 1a 53 54 4d 46  |GE R6,#F.o..STMF|
00013ac0  44 20 53 50 20 21 2c 7b  52 38 2c 52 39 2c 52 31  |D SP !,{R8,R9,R1|
00013ad0  30 7d 0d 6f 22 0d 4d 56  4e 20 52 32 2c 23 30 0d  |0}.o".MVN R2,#0.|
00013ae0  6f 2c 0d 4d 4f 56 20 52  33 2c 23 33 0d 6f 36 1e  |o,.MOV R3,#3.o6.|
00013af0  2e 73 72 63 68 20 41 44  44 20 52 31 34 2c 52 33  |.srch ADD R14,R3|
00013b00  2c 52 33 2c 4c 53 4c 20  23 31 0d 6f 40 19 41 44  |,R3,LSL #1.o@.AD|
00013b10  44 20 52 31 34 2c 52 37  2c 52 31 34 2c 4c 53 4c  |D R14,R7,R14,LSL|
00013b20  20 23 32 0d 6f 4a 19 4c  44 4d 49 41 20 52 31 34  | #2.oJ.LDMIA R14|
00013b30  2c 7b 52 38 2c 52 39 2c  52 31 30 7d 0d 6f 54 11  |,{R8,R9,R10}.oT.|
00013b40  53 55 42 53 20 52 38 2c  52 34 2c 52 38 0d 6f 5e  |SUBS R8,R4,R8.o^|
00013b50  12 52 53 42 4d 49 20 52  38 2c 52 38 2c 23 30 0d  |.RSBMI R8,R8,#0.|
00013b60  6f 68 11 53 55 42 53 20  52 39 2c 52 35 2c 52 39  |oh.SUBS R9,R5,R9|
00013b70  0d 6f 72 12 52 53 42 4d  49 20 52 39 2c 52 39 2c  |.or.RSBMI R9,R9,|
00013b80  23 30 0d 6f 7c 13 53 55  42 53 20 52 31 30 2c 52  |#0.o|.SUBS R10,R|
00013b90  36 2c 52 31 30 0d 6f 86  14 52 53 42 4d 49 20 52  |6,R10.o..RSBMI R|
00013ba0  31 30 2c 52 31 30 2c 23  30 0d 6f 90 1a 4d 4f 56  |10,R10,#0.o..MOV|
00013bb0  20 52 31 34 2c 52 38 2c  4c 53 52 20 23 62 69 74  | R14,R8,LSR #bit|
00013bc0  73 2f 32 0d 6f 9a 12 4d  55 4c 20 52 38 2c 52 31  |s/2.o..MUL R8,R1|
00013bd0  34 2c 52 31 34 0d 6f a4  1a 4d 4f 56 20 52 31 34  |4,R14.o..MOV R14|
00013be0  2c 52 39 2c 4c 53 52 20  23 62 69 74 73 2f 32 0d  |,R9,LSR #bits/2.|
00013bf0  6f ae 12 4d 55 4c 20 52  39 2c 52 31 34 2c 52 31  |o..MUL R9,R14,R1|
00013c00  34 0d 6f b8 1b 4d 4f 56  20 52 31 34 2c 52 31 30  |4.o..MOV R14,R10|
00013c10  2c 4c 53 52 20 23 62 69  74 73 2f 32 0d 6f c2 13  |,LSR #bits/2.o..|
00013c20  4d 55 4c 20 52 31 30 2c  52 31 34 2c 52 31 34 0d  |MUL R10,R14,R14.|
00013c30  6f cc 17 41 44 44 20 52  39 2c 52 39 2c 52 39 2c  |o..ADD R9,R9,R9,|
00013c40  4c 53 4c 20 23 32 0d 6f  d6 17 41 44 44 20 52 38  |LSL #2.o..ADD R8|
00013c50  2c 52 38 2c 52 38 2c 4c  53 4c 20 23 31 0d 6f e0  |,R8,R8,LSL #1.o.|
00013c60  18 41 44 44 20 52 31 34  2c 52 38 2c 52 39 2c 4c  |.ADD R14,R8,R9,L|
00013c70  53 4c 20 23 31 0d 6f ea  13 41 44 44 20 52 31 34  |SL #1.o..ADD R14|
00013c80  2c 52 31 34 2c 52 31 30  0d 6f f4 0e 43 4d 50 20  |,R14,R10.o..CMP |
00013c90  52 31 34 2c 52 32 0d 6f  fe 10 4d 4f 56 43 43 20  |R14,R2.o..MOVCC |
00013ca0  52 32 2c 52 31 34 0d 70  08 0f 4d 4f 56 43 43 20  |R2,R14.p..MOVCC |
00013cb0  52 30 2c 52 33 0d 70 12  11 53 55 42 53 20 52 33  |R0,R3.p..SUBS R3|
00013cc0  2c 52 33 2c 23 31 0d 70  1c 0c 42 50 4c 20 73 72  |,R3,#1.p..BPL sr|
00013cd0  63 68 0d 70 26 1a 4c 44  4d 46 44 20 53 50 20 21  |ch.p&.LDMFD SP !|
00013ce0  2c 7b 52 38 2c 52 39 2c  52 31 30 7d 0d 70 30 2b  |,{R8,R9,R10}.p0+|
00013cf0  41 44 44 20 52 33 2c 52  30 2c 52 30 2c 4c 53 4c  |ADD R3,R0,R0,LSL|
00013d00  20 23 31 3a 41 44 44 20  52 33 2c 52 37 2c 52 33  | #1:ADD R3,R7,R3|
00013d10  2c 4c 53 4c 20 23 32 0d  70 3a 1f 4c 44 52 20 52  |,LSL #2.p:.LDR R|
00013d20  32 2c 5b 52 33 5d 2c 23  34 3a 53 55 42 20 52 34  |2,[R3],#4:SUB R4|
00013d30  2c 52 34 2c 52 32 0d 70  44 2e 4c 44 4d 49 41 20  |,R4,R2.pD.LDMIA |
00013d40  52 33 2c 7b 52 32 2c 52  33 7d 3a 53 55 42 20 52  |R3,{R2,R3}:SUB R|
00013d50  35 2c 52 35 2c 52 32 3a  53 55 42 20 52 36 2c 52  |5,R5,R2:SUB R6,R|
00013d60  36 2c 52 33 0d 70 4e 0d  4d 4f 56 20 52 33 2c 52  |6,R3.pN.MOV R3,R|
00013d70  30 0d 70 58 15 4d 4f 56  20 52 32 2c 52 31 32 2c  |0.pX.MOV R2,R12,|
00013d80  4c 53 52 20 23 32 0d 70  62 20 80 20 52 37 2c 52  |LSR #2.pb . R7,R|
00013d90  31 32 2c 23 33 3a 4d 4f  56 20 52 37 2c 52 37 2c  |12,#3:MOV R7,R7,|
00013da0  4c 53 4c 20 23 31 0d 70  6c 0e 4d 4f 56 20 52 31  |LSL #1.pl.MOV R1|
00013db0  34 2c 23 33 0d 70 76 45  4c 44 52 42 20 52 30 2c  |4,#3.pvELDRB R0,|
00013dc0  5b 52 32 5d 3a 42 49 43  20 52 30 2c 52 30 2c 52  |[R2]:BIC R0,R0,R|
00013dd0  31 34 2c 4c 53 4c 20 52  37 3a 84 52 20 52 30 2c  |14,LSL R7:.R R0,|
00013de0  52 30 2c 52 33 2c 4c 53  4c 20 52 37 3a 53 54 52  |R0,R3,LSL R7:STR|
00013df0  42 20 52 30 2c 5b 52 32  5d 0d 70 80 12 41 44 44  |B R0,[R2].p..ADD|
00013e00  20 52 31 32 2c 52 31 32  2c 52 31 0d 70 8a 05 5d  | R12,R12,R1.p..]|
00013e10  0d 70 94 05 7f 0d 70 9e  0a 5b 4f 50 54 20 5a 0d  |.p....p..[OPT Z.|
00013e20  70 a8 25 43 4d 50 20 52  34 2c 23 46 3a 4d 4f 56  |p.%CMP R4,#F:MOV|
00013e30  43 53 20 52 34 2c 23 30  3a 4d 4f 56 47 45 20 52  |CS R4,#0:MOVGE R|
00013e40  34 2c 23 46 0d 70 b2 3b  52 53 42 20 52 33 2c 52  |4,#F.p.;RSB R3,R|
00013e50  34 2c 52 34 2c 4c 53 4c  20 23 32 3a 41 44 44 20  |4,R4,LSL #2:ADD |
00013e60  52 33 2c 52 33 2c 23 46  3e 3e 31 3a 4d 4f 56 20  |R3,R3,#F>>1:MOV |
00013e70  52 33 2c 52 33 2c 4c 53  52 23 62 69 74 73 20 0d  |R3,R3,LSR#bits .|
00013e80  70 bc 1a 4c 44 52 20 52  32 2c 5b 52 37 2c 52 33  |p..LDR R2,[R7,R3|
00013e90  2c 4c 53 4c 20 23 32 5d  20 0d 70 c6 11 53 55 42  |,LSL #2] .p..SUB|
00013ea0  20 52 34 2c 52 34 2c 52  32 20 0d 70 d0 15 4d 4f  | R4,R4,R2 .p..MO|
00013eb0  56 20 52 32 2c 52 31 32  2c 4c 53 52 20 23 32 0d  |V R2,R12,LSR #2.|
00013ec0  70 da 20 80 20 52 35 2c  52 31 32 2c 23 33 3a 4d  |p. . R5,R12,#3:M|
00013ed0  4f 56 20 52 35 2c 52 35  2c 4c 53 4c 20 23 31 0d  |OV R5,R5,LSL #1.|
00013ee0  70 e4 0d 4d 4f 56 20 52  36 2c 23 33 0d 70 ee 44  |p..MOV R6,#3.p.D|
00013ef0  4c 44 52 42 20 52 30 2c  5b 52 32 5d 3a 42 49 43  |LDRB R0,[R2]:BIC|
00013f00  20 52 30 2c 52 30 2c 52  36 2c 4c 53 4c 20 52 35  | R0,R0,R6,LSL R5|
00013f10  3a 84 52 20 52 30 2c 52  30 2c 52 33 2c 4c 53 4c  |:.R R0,R0,R3,LSL|
00013f20  20 52 35 3a 53 54 52 42  20 52 30 2c 5b 52 32 5d  | R5:STRB R0,[R2]|
00013f30  0d 70 f8 12 41 44 44 20  52 31 32 2c 52 31 32 2c  |.p..ADD R12,R12,|
00013f40  52 31 0d 71 02 05 5d 0d  71 0c 05 cb 0d 71 16 15  |R1.q..].q....q..|
00013f50  e7 6d 24 3d 22 43 22 20  84 6d 24 3d 22 52 22 20  |.m$="C" .m$="R" |
00013f60  8c 0d 71 20 0e e7 64 69  74 68 65 72 25 20 8c 0d  |..q ..dither% ..|
00013f70  71 2a 0a 5b 4f 50 54 20  5a 0d 71 34 12 41 44 44  |q*.[OPT Z.q4.ADD|
00013f80  20 52 30 2c 52 31 31 2c  23 34 20 0d 71 3e 18 41  | R0,R11,#4 .q>.A|
00013f90  44 44 20 52 32 2c 52 34  2c 52 34 2c 4c 53 4c 20  |DD R2,R4,R4,LSL |
00013fa0  23 31 20 0d 71 48 29 4c  44 52 20 52 33 2c 5b 52  |#1 .qH)LDR R3,[R|
00013fb0  31 31 2c 2d 52 38 5d 3a  41 44 44 20 52 33 2c 52  |11,-R8]:ADD R3,R|
00013fc0  33 2c 52 32 2c 41 53 52  20 23 34 20 0d 71 52 14  |3,R2,ASR #4 .qR.|
00013fd0  53 54 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |STR R3,[R11,-R8]|
00013fe0  0d 71 5c 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.q\.ADD R2,R4,R4|
00013ff0  2c 4c 53 4c 20 23 32 20  0d 71 66 25 4c 44 52 20  |,LSL #2 .qf%LDR |
00014000  52 33 2c 5b 52 31 31 5d  3a 41 44 44 20 52 33 2c  |R3,[R11]:ADD R3,|
00014010  52 33 2c 52 32 2c 41 53  52 20 23 34 20 0d 71 70  |R3,R2,ASR #4 .qp|
00014020  10 53 54 52 20 52 33 2c  5b 52 31 31 5d 0d 71 7a  |.STR R3,[R11].qz|
00014030  15 4d 4f 56 20 52 33 2c  52 34 2c 41 53 52 20 23  |.MOV R3,R4,ASR #|
00014040  34 20 0d 71 84 15 53 54  52 20 52 33 2c 5b 52 31  |4 .q..STR R3,[R1|
00014050  31 2c 52 38 5d 21 20 0d  71 8e 18 52 53 42 20 52  |1,R8]! .q..RSB R|
00014060  32 2c 52 34 2c 52 34 2c  4c 53 4c 20 23 33 20 0d  |2,R4,R4,LSL #3 .|
00014070  71 98 11 4c 44 52 20 52  34 2c 5b 52 31 30 5d 20  |q..LDR R4,[R10] |
00014080  0d 71 a2 18 41 44 44 20  52 34 2c 52 34 2c 52 32  |.q..ADD R4,R4,R2|
00014090  2c 41 53 52 20 23 34 20  0d 71 ac 18 41 44 44 20  |,ASR #4 .q..ADD |
000140a0  52 32 2c 52 35 2c 52 35  2c 4c 53 4c 20 23 31 20  |R2,R5,R5,LSL #1 |
000140b0  0d 71 b6 28 4c 44 52 20  52 33 2c 5b 52 30 2c 2d  |.q.(LDR R3,[R0,-|
000140c0  52 38 5d 3a 41 44 44 20  52 33 2c 52 33 2c 52 32  |R8]:ADD R3,R3,R2|
000140d0  2c 41 53 52 20 23 34 20  0d 71 c0 13 53 54 52 20  |,ASR #4 .q..STR |
000140e0  52 33 2c 5b 52 30 2c 2d  52 38 5d 0d 71 ca 15 4d  |R3,[R0,-R8].q..M|
000140f0  4f 56 20 52 33 2c 52 35  2c 41 53 52 20 23 34 20  |OV R3,R5,ASR #4 |
00014100  0d 71 d4 13 53 54 52 20  52 33 2c 5b 52 30 2c 52  |.q..STR R3,[R0,R|
00014110  38 5d 20 0d 71 de 18 41  44 44 20 52 32 2c 52 35  |8] .q..ADD R2,R5|
00014120  2c 52 35 2c 4c 53 4c 20  23 32 20 0d 71 e8 24 4c  |,R5,LSL #2 .q.$L|
00014130  44 52 20 52 33 2c 5b 52  30 5d 3a 41 44 44 20 52  |DR R3,[R0]:ADD R|
00014140  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00014150  71 f2 13 53 54 52 20 52  33 2c 5b 52 30 5d 2c 23  |q..STR R3,[R0],#|
00014160  34 20 0d 71 fc 18 52 53  42 20 52 32 2c 52 35 2c  |4 .q..RSB R2,R5,|
00014170  52 35 2c 4c 53 4c 20 23  33 20 0d 72 06 14 4c 44  |R5,LSL #3 .r..LD|
00014180  52 20 52 35 2c 5b 52 31  30 2c 23 34 5d 20 0d 72  |R R5,[R10,#4] .r|
00014190  10 18 41 44 44 20 52 35  2c 52 35 2c 52 32 2c 41  |..ADD R5,R5,R2,A|
000141a0  53 52 20 23 34 20 0d 72  1a 18 41 44 44 20 52 32  |SR #4 .r..ADD R2|
000141b0  2c 52 36 2c 52 36 2c 4c  53 4c 20 23 31 20 0d 72  |,R6,R6,LSL #1 .r|
000141c0  24 28 4c 44 52 20 52 33  2c 5b 52 30 2c 2d 52 38  |$(LDR R3,[R0,-R8|
000141d0  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
000141e0  53 52 20 23 34 20 0d 72  2e 13 53 54 52 20 52 33  |SR #4 .r..STR R3|
000141f0  2c 5b 52 30 2c 2d 52 38  5d 0d 72 38 18 41 44 44  |,[R0,-R8].r8.ADD|
00014200  20 52 32 2c 52 36 2c 52  36 2c 4c 53 4c 20 23 32  | R2,R6,R6,LSL #2|
00014210  20 0d 72 42 24 4c 44 52  20 52 33 2c 5b 52 30 5d  | .rB$LDR R3,[R0]|
00014220  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
00014230  52 20 23 34 20 0d 72 4c  0f 53 54 52 20 52 33 2c  |R #4 .rL.STR R3,|
00014240  5b 52 30 5d 0d 72 56 15  4d 4f 56 20 52 33 2c 52  |[R0].rV.MOV R3,R|
00014250  36 2c 41 53 52 20 23 34  20 0d 72 60 13 53 54 52  |6,ASR #4 .r`.STR|
00014260  20 52 33 2c 5b 52 30 2c  52 38 5d 20 0d 72 6a 18  | R3,[R0,R8] .rj.|
00014270  52 53 42 20 52 32 2c 52  36 2c 52 36 2c 4c 53 4c  |RSB R2,R6,R6,LSL|
00014280  20 23 33 20 0d 72 74 14  4c 44 52 20 52 36 2c 5b  | #3 .rt.LDR R6,[|
00014290  52 31 30 2c 23 38 5d 20  0d 72 7e 18 41 44 44 20  |R10,#8] .r~.ADD |
000142a0  52 36 2c 52 36 2c 52 32  2c 41 53 52 20 23 34 20  |R6,R6,R2,ASR #4 |
000142b0  0d 72 88 05 5d 0d 72 92  05 cc 0d 72 9c 0a 5b 4f  |.r..].r....r..[O|
000142c0  50 54 20 5a 0d 72 a6 18  4c 44 4d 49 41 20 52 31  |PT Z.r..LDMIA R1|
000142d0  30 2c 7b 52 34 2c 52 35  2c 52 36 7d 0d 72 b0 05  |0,{R4,R5,R6}.r..|
000142e0  5d 0d 72 ba 05 cd 0d 72  c4 05 cc 0d 72 ce 0e e7  |].r....r....r...|
000142f0  64 69 74 68 65 72 25 20  8c 0d 72 d8 0a 5b 4f 50  |dither% ..r..[OP|
00014300  54 20 5a 0d 72 e2 18 41  44 44 20 52 32 2c 52 34  |T Z.r..ADD R2,R4|
00014310  2c 52 34 2c 4c 53 4c 20  23 31 20 0d 72 ec 29 4c  |,R4,LSL #1 .r.)L|
00014320  44 52 20 52 33 2c 5b 52  31 31 2c 2d 52 38 5d 3a  |DR R3,[R11,-R8]:|
00014330  41 44 44 20 52 33 2c 52  33 2c 52 32 2c 41 53 52  |ADD R3,R3,R2,ASR|
00014340  20 23 34 20 0d 72 f6 14  53 54 52 20 52 33 2c 5b  | #4 .r..STR R3,[|
00014350  52 31 31 2c 2d 52 38 5d  0d 73 00 18 41 44 44 20  |R11,-R8].s..ADD |
00014360  52 32 2c 52 34 2c 52 34  2c 4c 53 4c 20 23 32 20  |R2,R4,R4,LSL #2 |
00014370  0d 73 0a 25 4c 44 52 20  52 33 2c 5b 52 31 31 5d  |.s.%LDR R3,[R11]|
00014380  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
00014390  52 20 23 34 20 0d 73 14  10 53 54 52 20 52 33 2c  |R #4 .s..STR R3,|
000143a0  5b 52 31 31 5d 0d 73 1e  15 4d 4f 56 20 52 33 2c  |[R11].s..MOV R3,|
000143b0  52 34 2c 41 53 52 20 23  34 20 0d 73 28 15 53 54  |R4,ASR #4 .s(.ST|
000143c0  52 20 52 33 2c 5b 52 31  31 2c 52 38 5d 21 20 0d  |R R3,[R11,R8]! .|
000143d0  73 32 18 52 53 42 20 52  32 2c 52 34 2c 52 34 2c  |s2.RSB R2,R4,R4,|
000143e0  4c 53 4c 20 23 33 20 0d  73 3c 14 4c 44 52 20 52  |LSL #3 .s<.LDR R|
000143f0  34 2c 5b 52 31 30 5d 2c  52 38 20 0d 73 46 18 41  |4,[R10],R8 .sF.A|
00014400  44 44 20 52 34 2c 52 34  2c 52 32 2c 41 53 52 20  |DD R4,R4,R2,ASR |
00014410  23 34 20 0d 73 50 05 5d  0d 73 5a 05 cc 0d 73 64  |#4 .sP.].sZ...sd|
00014420  0a 5b 4f 50 54 20 5a 0d  73 6e 13 4c 44 52 20 52  |.[OPT Z.sn.LDR R|
00014430  34 2c 5b 52 31 30 5d 2c  52 38 0d 73 78 05 5d 0d  |4,[R10],R8.sx.].|
00014440  73 82 05 cd 0d 73 8c 05  cd 0d 73 96 0a 5b 4f 50  |s....s....s..[OP|
00014450  54 20 5a 0d 73 a0 1c 53  55 42 53 20 52 39 2c 52  |T Z.s..SUBS R9,R|
00014460  39 2c 23 31 3a 42 4e 45  20 66 73 6c 6f 6f 70 0d  |9,#1:BNE fsloop.|
00014470  73 aa 14 4c 44 4d 46 44  20 53 50 20 21 2c 7b 50  |s..LDMFD SP !,{P|
00014480  43 7d 5e 0d 73 b4 05 5d  0d 73 be 07 c9 20 31 0d  |C}^.s..].s... 1.|
00014490  73 c8 0b c8 8e 20 6d 24  20 ca 0d 73 d2 08 c9 22  |s.... m$ ..s..."|
000144a0  43 22 0d 73 dc 0a 5b 4f  50 54 20 5a 0d 73 e6 14  |C".s..[OPT Z.s..|
000144b0  2e 64 69 76 74 61 62 6c  65 20 45 51 55 44 20 30  |.divtable EQUD 0|
000144c0  0d 73 f0 1e 45 51 55 44  20 28 31 2d 62 6c 61 63  |.s..EQUD (1-blac|
000144d0  6b 25 2f 32 35 36 2a 32  29 2f 31 36 2a 46 0d 73  |k%/256*2)/16*F.s|
000144e0  fa 1e 45 51 55 44 20 28  32 2d 62 6c 61 63 6b 25  |..EQUD (2-black%|
000144f0  2f 32 35 36 2a 34 29 2f  31 36 2a 46 0d 74 04 1e  |/256*4)/16*F.t..|
00014500  45 51 55 44 20 28 33 2d  62 6c 61 63 6b 25 2f 32  |EQUD (3-black%/2|
00014510  35 36 2a 35 29 2f 31 36  2a 46 0d 74 0e 1e 45 51  |56*5)/16*F.t..EQ|
00014520  55 44 20 28 34 2d 62 6c  61 63 6b 25 2f 32 35 36  |UD (4-black%/256|
00014530  2a 36 29 2f 31 36 2a 46  0d 74 18 1e 45 51 55 44  |*6)/16*F.t..EQUD|
00014540  20 28 35 2d 62 6c 61 63  6b 25 2f 32 35 36 2a 37  | (5-black%/256*7|
00014550  29 2f 31 36 2a 46 0d 74  22 1e 45 51 55 44 20 28  |)/16*F.t".EQUD (|
00014560  36 2d 62 6c 61 63 6b 25  2f 32 35 36 2a 38 29 2f  |6-black%/256*8)/|
00014570  31 36 2a 46 0d 74 2c 1e  45 51 55 44 20 28 37 2d  |16*F.t,.EQUD (7-|
00014580  62 6c 61 63 6b 25 2f 32  35 36 2a 38 29 2f 31 36  |black%/256*8)/16|
00014590  2a 46 0d 74 36 1e 45 51  55 44 20 28 38 2d 62 6c  |*F.t6.EQUD (8-bl|
000145a0  61 63 6b 25 2f 32 35 36  2a 38 29 2f 31 36 2a 46  |ack%/256*8)/16*F|
000145b0  0d 74 40 1e 45 51 55 44  20 28 39 2d 62 6c 61 63  |.t@.EQUD (9-blac|
000145c0  6b 25 2f 32 35 36 2a 38  29 2f 31 36 2a 46 0d 74  |k%/256*8)/16*F.t|
000145d0  4a 1f 45 51 55 44 20 28  31 30 2d 62 6c 61 63 6b  |J.EQUD (10-black|
000145e0  25 2f 32 35 36 2a 38 29  2f 31 36 2a 46 0d 74 54  |%/256*8)/16*F.tT|
000145f0  1f 45 51 55 44 20 28 31  31 2d 62 6c 61 63 6b 25  |.EQUD (11-black%|
00014600  2f 32 35 36 2a 37 29 2f  31 36 2a 46 0d 74 5e 1f  |/256*7)/16*F.t^.|
00014610  45 51 55 44 20 28 31 32  2d 62 6c 61 63 6b 25 2f  |EQUD (12-black%/|
00014620  32 35 36 2a 36 29 2f 31  36 2a 46 0d 74 68 1f 45  |256*6)/16*F.th.E|
00014630  51 55 44 20 28 31 33 2d  62 6c 61 63 6b 25 2f 32  |QUD (13-black%/2|
00014640  35 36 2a 35 29 2f 31 36  2a 46 0d 74 72 1f 45 51  |56*5)/16*F.tr.EQ|
00014650  55 44 20 28 31 34 2d 62  6c 61 63 6b 25 2f 32 35  |UD (14-black%/25|
00014660  36 2a 34 29 2f 31 36 2a  46 0d 74 7c 1f 45 51 55  |6*4)/16*F.t|.EQU|
00014670  44 20 28 31 35 2d 62 6c  61 63 6b 25 2f 32 35 36  |D (15-black%/256|
00014680  2a 32 29 2f 31 36 2a 46  0d 74 86 0a 45 51 55 44  |*2)/16*F.t..EQUD|
00014690  20 46 0d 74 90 1f 2e 65  76 65 6e 72 6f 77 5f 67  | F.t...evenrow_g|
000146a0  61 72 64 20 44 43 44 20  65 76 65 6e 5f 67 61 72  |ard DCD even_gar|
000146b0  64 0d 74 9a 1d 2e 6f 64  64 72 6f 77 5f 67 61 72  |d.t...oddrow_gar|
000146c0  64 20 44 43 44 20 6f 64  64 5f 67 61 72 64 0d 74  |d DCD odd_gard.t|
000146d0  a4 11 2e 72 6f 77 69 6e  63 20 44 43 44 20 30 0d  |...rowinc DCD 0.|
000146e0  74 ae 08 2e 66 73 25 0d  74 b8 14 53 54 4d 46 44  |t...fs%.t..STMFD|
000146f0  20 53 50 20 21 2c 7b 52  31 34 7d 0d 74 c2 21 4c  | SP !,{R14}.t.!L|
00014700  44 52 20 52 31 2c 5b 52  39 2c 23 35 2a 38 5d 3a  |DR R1,[R9,#5*8]:|
00014710  4c 44 52 20 52 31 2c 5b  52 31 5d 20 0d 74 cc 16  |LDR R1,[R1] .t..|
00014720  4c 44 52 20 52 31 30 2c  5b 52 39 2c 23 34 2a 38  |LDR R10,[R9,#4*8|
00014730  5d 20 0d 74 d6 16 4c 44  52 20 52 31 31 2c 5b 52  |] .t..LDR R11,[R|
00014740  39 2c 23 33 2a 38 5d 20  0d 74 e0 16 4c 44 52 20  |9,#3*8] .t..LDR |
00014750  52 31 32 2c 5b 52 39 2c  23 32 2a 38 5d 20 0d 74  |R12,[R9,#2*8] .t|
00014760  ea 12 4c 44 52 20 52 31  32 2c 5b 52 31 32 5d 20  |..LDR R12,[R12] |
00014770  0d 74 f4 13 4c 44 52 20  52 38 2c 5b 52 39 2c 23  |.t..LDR R8,[R9,#|
00014780  38 5d 20 0d 74 fe 10 4c  44 52 20 52 38 2c 5b 52  |8] .t..LDR R8,[R|
00014790  38 5d 20 0d 75 08 10 4c  44 52 20 52 39 2c 5b 52  |8] .u..LDR R9,[R|
000147a0  39 5d 20 0d 75 12 10 4c  44 52 20 52 39 2c 5b 52  |9] .u..LDR R9,[R|
000147b0  39 5d 20 0d 75 1c 14 4c  44 52 20 52 34 2c 5b 52  |9] .u..LDR R4,[R|
000147c0  31 30 5d 2c 52 38 20 0d  75 26 0d 54 45 51 20 52  |10],R8 .u&.TEQ R|
000147d0  38 2c 23 30 0d 75 30 19  4c 44 52 50 4c 20 52 36  |8,#0.u0.LDRPL R6|
000147e0  2c 65 76 65 6e 72 6f 77  5f 67 61 72 64 0d 75 3a  |,evenrow_gard.u:|
000147f0  18 4c 44 52 4d 49 20 52  36 2c 6f 64 64 72 6f 77  |.LDRMI R6,oddrow|
00014800  5f 67 61 72 64 0d 75 44  14 4d 4f 56 20 52 31 2c  |_gard.uD.MOV R1,|
00014810  52 31 2c 4c 53 4c 20 23  31 0d 75 4e 11 4c 44 52  |R1,LSL #1.uN.LDR|
00014820  20 52 37 2c 72 6f 77 69  6e 63 0d 75 58 14 41 44  | R7,rowinc.uX.AD|
00014830  52 20 52 31 34 2c 64 69  76 74 61 62 6c 65 0d 75  |R R14,divtable.u|
00014840  62 0b 2e 66 73 6c 6f 6f  70 0d 75 6c 25 43 4d 50  |b..fsloop.ul%CMP|
00014850  20 52 34 2c 23 46 3a 4d  4f 56 43 53 20 52 34 2c  | R4,#F:MOVCS R4,|
00014860  23 30 3a 4d 4f 56 47 45  20 52 34 2c 23 46 0d 75  |#0:MOVGE R4,#F.u|
00014870  76 14 41 44 44 20 52 35  2c 52 34 2c 23 46 3e 3e  |v.ADD R5,R4,#F>>|
00014880  35 20 0d 75 80 1b 4d 4f  56 53 20 52 35 2c 52 35  |5 .u..MOVS R5,R5|
00014890  2c 4c 53 52 20 23 62 69  74 73 2d 34 20 0d 75 8a  |,LSR #bits-4 .u.|
000148a0  1c 4c 44 52 4e 45 20 52  30 2c 5b 52 31 34 2c 52  |.LDRNE R0,[R14,R|
000148b0  35 2c 4c 53 4c 20 23 32  5d 0d 75 94 13 53 55 42  |5,LSL #2].u..SUB|
000148c0  4e 45 20 52 34 2c 52 34  2c 52 30 20 0d 75 9e 05  |NE R4,R4,R0 .u..|
000148d0  5d 0d 75 a8 0e e7 64 69  74 68 65 72 25 20 8c 0d  |].u...dither% ..|
000148e0  75 b2 0a 5b 4f 50 54 20  5a 0d 75 bc 18 41 44 44  |u..[OPT Z.u..ADD|
000148f0  20 52 32 2c 52 34 2c 52  34 2c 4c 53 4c 20 23 31  | R2,R4,R4,LSL #1|
00014900  20 0d 75 c6 29 4c 44 52  20 52 33 2c 5b 52 31 31  | .u.)LDR R3,[R11|
00014910  2c 2d 52 38 5d 3a 41 44  44 20 52 33 2c 52 33 2c  |,-R8]:ADD R3,R3,|
00014920  52 32 2c 41 53 52 20 23  34 20 0d 75 d0 14 53 54  |R2,ASR #4 .u..ST|
00014930  52 20 52 33 2c 5b 52 31  31 2c 2d 52 38 5d 0d 75  |R R3,[R11,-R8].u|
00014940  da 18 41 44 44 20 52 32  2c 52 34 2c 52 34 2c 4c  |..ADD R2,R4,R4,L|
00014950  53 4c 20 23 32 20 0d 75  e4 25 4c 44 52 20 52 33  |SL #2 .u.%LDR R3|
00014960  2c 5b 52 31 31 5d 3a 41  44 44 20 52 33 2c 52 33  |,[R11]:ADD R3,R3|
00014970  2c 52 32 2c 41 53 52 20  23 34 20 0d 75 ee 10 53  |,R2,ASR #4 .u..S|
00014980  54 52 20 52 33 2c 5b 52  31 31 5d 0d 75 f8 15 4d  |TR R3,[R11].u..M|
00014990  4f 56 20 52 33 2c 52 34  2c 41 53 52 20 23 34 20  |OV R3,R4,ASR #4 |
000149a0  0d 76 02 15 53 54 52 20  52 33 2c 5b 52 31 31 2c  |.v..STR R3,[R11,|
000149b0  52 38 5d 21 20 0d 76 0c  18 52 53 42 20 52 32 2c  |R8]! .v..RSB R2,|
000149c0  52 34 2c 52 34 2c 4c 53  4c 20 23 33 20 0d 76 16  |R4,R4,LSL #3 .v.|
000149d0  14 4c 44 52 20 52 34 2c  5b 52 31 30 5d 2c 52 38  |.LDR R4,[R10],R8|
000149e0  20 0d 76 20 19 41 44 44  53 20 52 34 2c 52 34 2c  | .v .ADDS R4,R4,|
000149f0  52 32 2c 41 53 52 20 23  34 20 0d 76 2a 05 5d 0d  |R2,ASR #4 .v*.].|
00014a00  76 34 05 cc 0d 76 3e 0a  5b 4f 50 54 20 5a 0d 76  |v4...v>.[OPT Z.v|
00014a10  48 13 4c 44 52 20 52 34  2c 5b 52 31 30 5d 2c 52  |H.LDR R4,[R10],R|
00014a20  38 0d 76 52 05 5d 0d 76  5c 05 cd 0d 76 66 0a 5b  |8.vR.].v\...vf.[|
00014a30  4f 50 54 20 5a 0d 76 70  25 43 4d 50 20 52 34 2c  |OPT Z.vp%CMP R4,|
00014a40  23 46 3a 4d 4f 56 43 53  20 52 34 2c 23 30 3a 4d  |#F:MOVCS R4,#0:M|
00014a50  4f 56 47 45 20 52 34 2c  23 46 0d 76 7a 14 41 44  |OVGE R4,#F.vz.AD|
00014a60  44 20 52 33 2c 52 34 2c  23 46 3e 3e 35 20 0d 76  |D R3,R4,#F>>5 .v|
00014a70  84 1b 4d 4f 56 53 20 52  33 2c 52 33 2c 4c 53 52  |..MOVS R3,R3,LSR|
00014a80  20 23 62 69 74 73 2d 34  20 0d 76 8e 1c 4c 44 52  | #bits-4 .v..LDR|
00014a90  4e 45 20 52 30 2c 5b 52  31 34 2c 52 33 2c 4c 53  |NE R0,[R14,R3,LS|
00014aa0  4c 20 23 32 5d 0d 76 98  13 53 55 42 4e 45 20 52  |L #2].v..SUBNE R|
00014ab0  34 2c 52 34 2c 52 30 20  0d 76 a2 2d 84 52 20 52  |4,R4,R0 .v.-.R R|
00014ac0  35 2c 52 35 2c 52 33 2c  4c 53 4c 20 23 35 3a 4c  |5,R5,R3,LSL #5:L|
00014ad0  44 52 20 52 33 2c 5b 52  36 2c 52 35 2c 4c 53 4c  |DR R3,[R6,R5,LSL|
00014ae0  20 23 32 5d 20 0d 76 ac  46 4d 4f 56 20 52 32 2c  | #2] .v.FMOV R2,|
00014af0  52 31 32 2c 4c 53 52 20  23 31 3a 53 54 52 42 20  |R12,LSR #1:STRB |
00014b00  52 33 2c 5b 52 32 5d 2c  52 37 3a 4d 4f 56 20 52  |R3,[R2],R7:MOV R|
00014b10  33 2c 52 33 2c 4c 53 52  20 23 38 3a 53 54 52 42  |3,R3,LSR #8:STRB|
00014b20  20 52 33 2c 5b 52 32 5d  2c 52 37 0d 76 b6 42 4d  | R3,[R2],R7.v.BM|
00014b30  4f 56 20 52 33 2c 52 33  2c 4c 53 52 20 23 38 3a  |OV R3,R3,LSR #8:|
00014b40  53 54 52 42 20 52 33 2c  5b 52 32 5d 2c 52 37 3a  |STRB R3,[R2],R7:|
00014b50  4d 4f 56 20 52 33 2c 52  33 2c 4c 53 52 20 23 38  |MOV R3,R3,LSR #8|
00014b60  3a 53 54 52 42 20 52 33  2c 5b 52 32 5d 0d 76 c0  |:STRB R3,[R2].v.|
00014b70  12 41 44 44 20 52 31 32  2c 52 31 32 2c 52 31 0d  |.ADD R12,R12,R1.|
00014b80  76 ca 05 5d 0d 76 d4 0e  e7 64 69 74 68 65 72 25  |v..].v...dither%|
00014b90  20 8c 0d 76 de 0a 5b 4f  50 54 20 5a 0d 76 e8 18  | ..v..[OPT Z.v..|
00014ba0  41 44 44 20 52 32 2c 52  34 2c 52 34 2c 4c 53 4c  |ADD R2,R4,R4,LSL|
00014bb0  20 23 31 20 0d 76 f2 29  4c 44 52 20 52 33 2c 5b  | #1 .v.)LDR R3,[|
00014bc0  52 31 31 2c 2d 52 38 5d  3a 41 44 44 20 52 33 2c  |R11,-R8]:ADD R3,|
00014bd0  52 33 2c 52 32 2c 41 53  52 20 23 34 20 0d 76 fc  |R3,R2,ASR #4 .v.|
00014be0  14 53 54 52 20 52 33 2c  5b 52 31 31 2c 2d 52 38  |.STR R3,[R11,-R8|
00014bf0  5d 0d 77 06 18 41 44 44  20 52 32 2c 52 34 2c 52  |].w..ADD R2,R4,R|
00014c00  34 2c 4c 53 4c 20 23 32  20 0d 77 10 25 4c 44 52  |4,LSL #2 .w.%LDR|
00014c10  20 52 33 2c 5b 52 31 31  5d 3a 41 44 44 20 52 33  | R3,[R11]:ADD R3|
00014c20  2c 52 33 2c 52 32 2c 41  53 52 20 23 34 20 0d 77  |,R3,R2,ASR #4 .w|
00014c30  1a 10 53 54 52 20 52 33  2c 5b 52 31 31 5d 0d 77  |..STR R3,[R11].w|
00014c40  24 15 4d 4f 56 20 52 33  2c 52 34 2c 41 53 52 20  |$.MOV R3,R4,ASR |
00014c50  23 34 20 0d 77 2e 15 53  54 52 20 52 33 2c 5b 52  |#4 .w..STR R3,[R|
00014c60  31 31 2c 52 38 5d 21 20  0d 77 38 18 52 53 42 20  |11,R8]! .w8.RSB |
00014c70  52 32 2c 52 34 2c 52 34  2c 4c 53 4c 20 23 33 20  |R2,R4,R4,LSL #3 |
00014c80  0d 77 42 14 4c 44 52 20  52 34 2c 5b 52 31 30 5d  |.wB.LDR R4,[R10]|
00014c90  2c 52 38 20 0d 77 4c 18  41 44 44 20 52 34 2c 52  |,R8 .wL.ADD R4,R|
00014ca0  34 2c 52 32 2c 41 53 52  20 23 34 20 0d 77 56 05  |4,R2,ASR #4 .wV.|
00014cb0  5d 0d 77 60 05 cc 0d 77  6a 0a 5b 4f 50 54 20 5a  |].w`...wj.[OPT Z|
00014cc0  0d 77 74 13 4c 44 52 20  52 34 2c 5b 52 31 30 5d  |.wt.LDR R4,[R10]|
00014cd0  2c 52 38 0d 77 7e 05 5d  0d 77 88 05 cd 0d 77 92  |,R8.w~.].w....w.|
00014ce0  0a 5b 4f 50 54 20 5a 0d  77 9c 1c 53 55 42 53 20  |.[OPT Z.w..SUBS |
00014cf0  52 39 2c 52 39 2c 23 32  3a 42 4e 45 20 66 73 6c  |R9,R9,#2:BNE fsl|
00014d00  6f 6f 70 0d 77 a6 14 4c  44 4d 46 44 20 53 50 20  |oop.w..LDMFD SP |
00014d10  21 2c 7b 50 43 7d 5e 0d  77 b0 05 5d 0d 77 ba 08  |!,{PC}^.w..].w..|
00014d20  c9 22 54 22 0d 77 c4 0a  5b 4f 50 54 20 5a 0d 77  |."T".w..[OPT Z.w|
00014d30  ce 14 2e 64 69 76 74 61  62 6c 65 20 45 51 55 44  |...divtable EQUD|
00014d40  20 30 0d 77 d8 1d 45 51  55 44 20 28 31 2d 62 6c  | 0.w..EQUD (1-bl|
00014d50  61 63 6b 25 2f 32 35 36  2a 32 29 2f 39 2a 46 0d  |ack%/256*2)/9*F.|
00014d60  77 e2 1d 45 51 55 44 20  28 32 2d 62 6c 61 63 6b  |w..EQUD (2-black|
00014d70  25 2f 32 35 36 2a 34 29  2f 39 2a 46 0d 77 ec 1d  |%/256*4)/9*F.w..|
00014d80  45 51 55 44 20 28 33 2d  62 6c 61 63 6b 25 2f 32  |EQUD (3-black%/2|
00014d90  35 36 2a 35 29 2f 39 2a  46 0d 77 f6 1d 45 51 55  |56*5)/9*F.w..EQU|
00014da0  44 20 28 34 2d 62 6c 61  63 6b 25 2f 32 35 36 2a  |D (4-black%/256*|
00014db0  36 29 2f 39 2a 46 0d 78  00 1d 45 51 55 44 20 28  |6)/9*F.x..EQUD (|
00014dc0  35 2d 62 6c 61 63 6b 25  2f 32 35 36 2a 36 29 2f  |5-black%/256*6)/|
00014dd0  39 2a 46 0d 78 0a 1d 45  51 55 44 20 28 36 2d 62  |9*F.x..EQUD (6-b|
00014de0  6c 61 63 6b 25 2f 32 35  36 2a 35 29 2f 39 2a 46  |lack%/256*5)/9*F|
00014df0  0d 78 14 1d 45 51 55 44  20 28 37 2d 62 6c 61 63  |.x..EQUD (7-blac|
00014e00  6b 25 2f 32 35 36 2a 34  29 2f 39 2a 46 0d 78 1e  |k%/256*4)/9*F.x.|
00014e10  1d 45 51 55 44 20 28 38  2d 62 6c 61 63 6b 25 2f  |.EQUD (8-black%/|
00014e20  32 35 36 2a 32 29 2f 39  2a 46 0d 78 28 0a 45 51  |256*2)/9*F.x(.EQ|
00014e30  55 44 20 46 0d 78 32 1f  2e 65 76 65 6e 72 6f 77  |UD F.x2..evenrow|
00014e40  5f 67 61 72 64 20 44 43  44 20 65 76 65 6e 5f 67  |_gard DCD even_g|
00014e50  61 72 64 0d 78 3c 1d 2e  6f 64 64 72 6f 77 5f 67  |ard.x<..oddrow_g|
00014e60  61 72 64 20 44 43 44 20  6f 64 64 5f 67 61 72 64  |ard DCD odd_gard|
00014e70  0d 78 46 11 2e 72 6f 77  69 6e 63 20 44 43 44 20  |.xF..rowinc DCD |
00014e80  30 0d 78 50 08 2e 66 73  25 0d 78 5a 14 53 54 4d  |0.xP..fs%.xZ.STM|
00014e90  46 44 20 53 50 20 21 2c  7b 52 31 34 7d 0d 78 64  |FD SP !,{R14}.xd|
00014ea0  21 4c 44 52 20 52 31 2c  5b 52 39 2c 23 35 2a 38  |!LDR R1,[R9,#5*8|
00014eb0  5d 3a 4c 44 52 20 52 31  2c 5b 52 31 5d 20 0d 78  |]:LDR R1,[R1] .x|
00014ec0  6e 16 4c 44 52 20 52 31  30 2c 5b 52 39 2c 23 34  |n.LDR R10,[R9,#4|
00014ed0  2a 38 5d 20 0d 78 78 16  4c 44 52 20 52 31 31 2c  |*8] .xx.LDR R11,|
00014ee0  5b 52 39 2c 23 33 2a 38  5d 20 0d 78 82 16 4c 44  |[R9,#3*8] .x..LD|
00014ef0  52 20 52 31 32 2c 5b 52  39 2c 23 32 2a 38 5d 20  |R R12,[R9,#2*8] |
00014f00  0d 78 8c 12 4c 44 52 20  52 31 32 2c 5b 52 31 32  |.x..LDR R12,[R12|
00014f10  5d 20 0d 78 96 13 4c 44  52 20 52 38 2c 5b 52 39  |] .x..LDR R8,[R9|
00014f20  2c 23 38 5d 20 0d 78 a0  10 4c 44 52 20 52 38 2c  |,#8] .x..LDR R8,|
00014f30  5b 52 38 5d 20 0d 78 aa  10 4c 44 52 20 52 39 2c  |[R8] .x..LDR R9,|
00014f40  5b 52 39 5d 20 0d 78 b4  10 4c 44 52 20 52 39 2c  |[R9] .x..LDR R9,|
00014f50  5b 52 39 5d 20 0d 78 be  14 4c 44 52 20 52 34 2c  |[R9] .x..LDR R4,|
00014f60  5b 52 31 30 5d 2c 52 38  20 0d 78 c8 0d 54 45 51  |[R10],R8 .x..TEQ|
00014f70  20 52 38 2c 23 30 0d 78  d2 19 4c 44 52 50 4c 20  | R8,#0.x..LDRPL |
00014f80  52 36 2c 65 76 65 6e 72  6f 77 5f 67 61 72 64 0d  |R6,evenrow_gard.|
00014f90  78 dc 18 4c 44 52 4d 49  20 52 36 2c 6f 64 64 72  |x..LDRMI R6,oddr|
00014fa0  6f 77 5f 67 61 72 64 0d  78 e6 14 4d 4f 56 20 52  |ow_gard.x..MOV R|
00014fb0  31 2c 52 31 2c 4c 53 4c  20 23 31 0d 78 f0 11 4c  |1,R1,LSL #1.x..L|
00014fc0  44 52 20 52 37 2c 72 6f  77 69 6e 63 0d 78 fa 14  |DR R7,rowinc.x..|
00014fd0  41 44 52 20 52 31 34 2c  64 69 76 74 61 62 6c 65  |ADR R14,divtable|
00014fe0  0d 79 04 0b 2e 66 73 6c  6f 6f 70 0d 79 0e 25 43  |.y...fsloop.y.%C|
00014ff0  4d 50 20 52 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |MP R4,#F:MOVCS R|
00015000  34 2c 23 30 3a 4d 4f 56  47 45 20 52 34 2c 23 46  |4,#0:MOVGE R4,#F|
00015010  0d 79 18 14 41 44 44 20  52 35 2c 52 34 2c 23 46  |.y..ADD R5,R4,#F|
00015020  3e 3e 34 20 0d 79 22 18  41 44 44 20 52 35 2c 52  |>>4 .y".ADD R5,R|
00015030  35 2c 52 35 2c 4c 53 4c  20 23 33 20 0d 79 2c 19  |5,R5,LSL #3 .y,.|
00015040  4d 4f 56 53 20 52 35 2c  52 35 2c 4c 53 52 20 23  |MOVS R5,R5,LSR #|
00015050  62 69 74 73 20 0d 79 36  1c 4c 44 52 4e 45 20 52  |bits .y6.LDRNE R|
00015060  30 2c 5b 52 31 34 2c 52  35 2c 4c 53 4c 20 23 32  |0,[R14,R5,LSL #2|
00015070  5d 0d 79 40 13 53 55 42  4e 45 20 52 34 2c 52 34  |].y@.SUBNE R4,R4|
00015080  2c 52 30 20 0d 79 4a 05  5d 0d 79 54 0e e7 64 69  |,R0 .yJ.].yT..di|
00015090  74 68 65 72 25 20 8c 0d  79 5e 0a 5b 4f 50 54 20  |ther% ..y^.[OPT |
000150a0  5a 0d 79 68 18 41 44 44  20 52 32 2c 52 34 2c 52  |Z.yh.ADD R2,R4,R|
000150b0  34 2c 4c 53 4c 20 23 31  20 0d 79 72 29 4c 44 52  |4,LSL #1 .yr)LDR|
000150c0  20 52 33 2c 5b 52 31 31  2c 2d 52 38 5d 3a 41 44  | R3,[R11,-R8]:AD|
000150d0  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
000150e0  34 20 0d 79 7c 14 53 54  52 20 52 33 2c 5b 52 31  |4 .y|.STR R3,[R1|
000150f0  31 2c 2d 52 38 5d 0d 79  86 18 41 44 44 20 52 32  |1,-R8].y..ADD R2|
00015100  2c 52 34 2c 52 34 2c 4c  53 4c 20 23 32 20 0d 79  |,R4,R4,LSL #2 .y|
00015110  90 25 4c 44 52 20 52 33  2c 5b 52 31 31 5d 3a 41  |.%LDR R3,[R11]:A|
00015120  44 44 20 52 33 2c 52 33  2c 52 32 2c 41 53 52 20  |DD R3,R3,R2,ASR |
00015130  23 34 20 0d 79 9a 10 53  54 52 20 52 33 2c 5b 52  |#4 .y..STR R3,[R|
00015140  31 31 5d 0d 79 a4 15 4d  4f 56 20 52 33 2c 52 34  |11].y..MOV R3,R4|
00015150  2c 41 53 52 20 23 34 20  0d 79 ae 15 53 54 52 20  |,ASR #4 .y..STR |
00015160  52 33 2c 5b 52 31 31 2c  52 38 5d 21 20 0d 79 b8  |R3,[R11,R8]! .y.|
00015170  18 52 53 42 20 52 32 2c  52 34 2c 52 34 2c 4c 53  |.RSB R2,R4,R4,LS|
00015180  4c 20 23 33 20 0d 79 c2  14 4c 44 52 20 52 34 2c  |L #3 .y..LDR R4,|
00015190  5b 52 31 30 5d 2c 52 38  20 0d 79 cc 19 41 44 44  |[R10],R8 .y..ADD|
000151a0  53 20 52 34 2c 52 34 2c  52 32 2c 41 53 52 20 23  |S R4,R4,R2,ASR #|
000151b0  34 20 0d 79 d6 05 5d 0d  79 e0 05 cc 0d 79 ea 0a  |4 .y..].y....y..|
000151c0  5b 4f 50 54 20 5a 0d 79  f4 13 4c 44 52 20 52 34  |[OPT Z.y..LDR R4|
000151d0  2c 5b 52 31 30 5d 2c 52  38 0d 79 fe 05 5d 0d 7a  |,[R10],R8.y..].z|
000151e0  08 05 cd 0d 7a 12 0a 5b  4f 50 54 20 5a 0d 7a 1c  |....z..[OPT Z.z.|
000151f0  25 43 4d 50 20 52 34 2c  23 46 3a 4d 4f 56 43 53  |%CMP R4,#F:MOVCS|
00015200  20 52 34 2c 23 30 3a 4d  4f 56 47 45 20 52 34 2c  | R4,#0:MOVGE R4,|
00015210  23 46 0d 7a 26 14 41 44  44 20 52 33 2c 52 34 2c  |#F.z&.ADD R3,R4,|
00015220  23 46 3e 3e 34 20 0d 7a  30 18 41 44 44 20 52 33  |#F>>4 .z0.ADD R3|
00015230  2c 52 33 2c 52 33 2c 4c  53 4c 20 23 33 20 0d 7a  |,R3,R3,LSL #3 .z|
00015240  3a 19 4d 4f 56 53 20 52  33 2c 52 33 2c 4c 53 52  |:.MOVS R3,R3,LSR|
00015250  20 23 62 69 74 73 20 0d  7a 44 1c 4c 44 52 4e 45  | #bits .zD.LDRNE|
00015260  20 52 30 2c 5b 52 31 34  2c 52 33 2c 4c 53 4c 20  | R0,[R14,R3,LSL |
00015270  23 32 5d 0d 7a 4e 13 53  55 42 4e 45 20 52 34 2c  |#2].zN.SUBNE R4,|
00015280  52 34 2c 52 30 20 0d 7a  58 2d 84 52 20 52 35 2c  |R4,R0 .zX-.R R5,|
00015290  52 35 2c 52 33 2c 4c 53  4c 20 23 34 3a 4c 44 52  |R5,R3,LSL #4:LDR|
000152a0  20 52 35 2c 5b 52 36 2c  52 35 2c 4c 53 4c 20 23  | R5,[R6,R5,LSL #|
000152b0  32 5d 20 0d 7a 62 15 4d  4f 56 20 52 32 2c 52 31  |2] .zb.MOV R2,R1|
000152c0  32 2c 4c 53 52 20 23 31  0d 7a 6c 10 80 20 52 33  |2,LSR #1.zl.. R3|
000152d0  2c 52 35 2c 23 26 33 46  0d 7a 76 13 53 54 52 42  |,R5,#&3F.zv.STRB|
000152e0  20 52 33 2c 5b 52 32 5d  2c 52 37 0d 7a 80 21 4d  | R3,[R2],R7.z.!M|
000152f0  4f 56 20 52 33 2c 52 35  2c 4c 53 52 20 23 36 3a  |OV R3,R5,LSR #6:|
00015300  80 20 52 33 2c 52 33 2c  23 26 33 46 0d 7a 8a 13  |. R3,R3,#&3F.z..|
00015310  53 54 52 42 20 52 33 2c  5b 52 32 5d 2c 52 37 0d  |STRB R3,[R2],R7.|
00015320  7a 94 22 4d 4f 56 20 52  33 2c 52 35 2c 4c 53 52  |z."MOV R3,R5,LSR|
00015330  20 23 31 32 3a 53 54 52  42 20 52 33 2c 5b 52 32  | #12:STRB R3,[R2|
00015340  5d 0d 7a 9e 12 41 44 44  20 52 31 32 2c 52 31 32  |].z..ADD R12,R12|
00015350  2c 52 31 0d 7a a8 05 5d  0d 7a b2 0e e7 64 69 74  |,R1.z..].z...dit|
00015360  68 65 72 25 20 8c 0d 7a  bc 0a 5b 4f 50 54 20 5a  |her% ..z..[OPT Z|
00015370  0d 7a c6 18 41 44 44 20  52 32 2c 52 34 2c 52 34  |.z..ADD R2,R4,R4|
00015380  2c 4c 53 4c 20 23 31 20  0d 7a d0 29 4c 44 52 20  |,LSL #1 .z.)LDR |
00015390  52 33 2c 5b 52 31 31 2c  2d 52 38 5d 3a 41 44 44  |R3,[R11,-R8]:ADD|
000153a0  20 52 33 2c 52 33 2c 52  32 2c 41 53 52 20 23 34  | R3,R3,R2,ASR #4|
000153b0  20 0d 7a da 14 53 54 52  20 52 33 2c 5b 52 31 31  | .z..STR R3,[R11|
000153c0  2c 2d 52 38 5d 0d 7a e4  18 41 44 44 20 52 32 2c  |,-R8].z..ADD R2,|
000153d0  52 34 2c 52 34 2c 4c 53  4c 20 23 32 20 0d 7a ee  |R4,R4,LSL #2 .z.|
000153e0  25 4c 44 52 20 52 33 2c  5b 52 31 31 5d 3a 41 44  |%LDR R3,[R11]:AD|
000153f0  44 20 52 33 2c 52 33 2c  52 32 2c 41 53 52 20 23  |D R3,R3,R2,ASR #|
00015400  34 20 0d 7a f8 10 53 54  52 20 52 33 2c 5b 52 31  |4 .z..STR R3,[R1|
00015410  31 5d 0d 7b 02 15 4d 4f  56 20 52 33 2c 52 34 2c  |1].{..MOV R3,R4,|
00015420  41 53 52 20 23 34 20 0d  7b 0c 15 53 54 52 20 52  |ASR #4 .{..STR R|
00015430  33 2c 5b 52 31 31 2c 52  38 5d 21 20 0d 7b 16 18  |3,[R11,R8]! .{..|
00015440  52 53 42 20 52 32 2c 52  34 2c 52 34 2c 4c 53 4c  |RSB R2,R4,R4,LSL|
00015450  20 23 33 20 0d 7b 20 14  4c 44 52 20 52 34 2c 5b  | #3 .{ .LDR R4,[|
00015460  52 31 30 5d 2c 52 38 20  0d 7b 2a 18 41 44 44 20  |R10],R8 .{*.ADD |
00015470  52 34 2c 52 34 2c 52 32  2c 41 53 52 20 23 34 20  |R4,R4,R2,ASR #4 |
00015480  0d 7b 34 05 5d 0d 7b 3e  05 cc 0d 7b 48 0a 5b 4f  |.{4.].{>...{H.[O|
00015490  50 54 20 5a 0d 7b 52 13  4c 44 52 20 52 34 2c 5b  |PT Z.{R.LDR R4,[|
000154a0  52 31 30 5d 2c 52 38 0d  7b 5c 05 5d 0d 7b 66 05  |R10],R8.{\.].{f.|
000154b0  cd 0d 7b 70 0a 5b 4f 50  54 20 5a 0d 7b 7a 1c 53  |..{p.[OPT Z.{z.S|
000154c0  55 42 53 20 52 39 2c 52  39 2c 23 32 3a 42 4e 45  |UBS R9,R9,#2:BNE|
000154d0  20 66 73 6c 6f 6f 70 0d  7b 84 14 4c 44 4d 46 44  | fsloop.{..LDMFD|
000154e0  20 53 50 20 21 2c 7b 50  43 7d 5e 0d 7b 8e 05 5d  | SP !,{PC}^.{..]|
000154f0  0d 7b 98 08 c9 22 44 22  0d 7b a2 0a 5b 4f 50 54  |.{..."D".{..[OPT|
00015500  20 5a 0d 7b ac 14 2e 64  69 76 74 61 62 6c 65 20  | Z.{...divtable |
00015510  45 51 55 44 20 30 0d 7b  b6 1d 45 51 55 44 20 28  |EQUD 0.{..EQUD (|
00015520  31 2d 62 6c 61 63 6b 25  2f 32 35 36 2a 32 29 2f  |1-black%/256*2)/|
00015530  34 2a 46 0d 7b c0 1d 45  51 55 44 20 28 32 2d 62  |4*F.{..EQUD (2-b|
00015540  6c 61 63 6b 25 2f 32 35  36 2a 34 29 2f 34 2a 46  |lack%/256*4)/4*F|
00015550  0d 7b ca 1d 45 51 55 44  20 28 33 2d 62 6c 61 63  |.{..EQUD (3-blac|
00015560  6b 25 2f 32 35 36 2a 32  29 2f 34 2a 46 0d 7b d4  |k%/256*2)/4*F.{.|
00015570  0a 45 51 55 44 20 46 0d  7b de 1f 2e 65 76 65 6e  |.EQUD F.{...even|
00015580  72 6f 77 5f 67 61 72 64  20 44 43 44 20 65 76 65  |row_gard DCD eve|
00015590  6e 5f 67 61 72 64 0d 7b  e8 1d 2e 6f 64 64 72 6f  |n_gard.{...oddro|
000155a0  77 5f 67 61 72 64 20 44  43 44 20 6f 64 64 5f 67  |w_gard DCD odd_g|
000155b0  61 72 64 0d 7b f2 11 2e  72 6f 77 69 6e 63 20 44  |ard.{...rowinc D|
000155c0  43 44 20 30 0d 7b fc 08  2e 66 73 25 0d 7c 06 14  |CD 0.{...fs%.|..|
000155d0  53 54 4d 46 44 20 53 50  20 21 2c 7b 52 31 34 7d  |STMFD SP !,{R14}|
000155e0  0d 7c 10 21 4c 44 52 20  52 31 2c 5b 52 39 2c 23  |.|.!LDR R1,[R9,#|
000155f0  35 2a 38 5d 3a 4c 44 52  20 52 31 2c 5b 52 31 5d  |5*8]:LDR R1,[R1]|
00015600  20 0d 7c 1a 16 4c 44 52  20 52 31 30 2c 5b 52 39  | .|..LDR R10,[R9|
00015610  2c 23 34 2a 38 5d 20 0d  7c 24 16 4c 44 52 20 52  |,#4*8] .|$.LDR R|
00015620  31 31 2c 5b 52 39 2c 23  33 2a 38 5d 20 0d 7c 2e  |11,[R9,#3*8] .|.|
00015630  16 4c 44 52 20 52 31 32  2c 5b 52 39 2c 23 32 2a  |.LDR R12,[R9,#2*|
00015640  38 5d 20 0d 7c 38 12 4c  44 52 20 52 31 32 2c 5b  |8] .|8.LDR R12,[|
00015650  52 31 32 5d 20 0d 7c 42  13 4c 44 52 20 52 38 2c  |R12] .|B.LDR R8,|
00015660  5b 52 39 2c 23 38 5d 20  0d 7c 4c 10 4c 44 52 20  |[R9,#8] .|L.LDR |
00015670  52 38 2c 5b 52 38 5d 20  0d 7c 56 10 4c 44 52 20  |R8,[R8] .|V.LDR |
00015680  52 39 2c 5b 52 39 5d 20  0d 7c 60 10 4c 44 52 20  |R9,[R9] .|`.LDR |
00015690  52 39 2c 5b 52 39 5d 20  0d 7c 6a 14 4c 44 52 20  |R9,[R9] .|j.LDR |
000156a0  52 34 2c 5b 52 31 30 5d  2c 52 38 20 0d 7c 74 0d  |R4,[R10],R8 .|t.|
000156b0  54 45 51 20 52 38 2c 23  30 0d 7c 7e 19 4c 44 52  |TEQ R8,#0.|~.LDR|
000156c0  50 4c 20 52 36 2c 65 76  65 6e 72 6f 77 5f 67 61  |PL R6,evenrow_ga|
000156d0  72 64 0d 7c 88 18 4c 44  52 4d 49 20 52 36 2c 6f  |rd.|..LDRMI R6,o|
000156e0  64 64 72 6f 77 5f 67 61  72 64 0d 7c 92 14 4d 4f  |ddrow_gard.|..MO|
000156f0  56 20 52 31 2c 52 31 2c  4c 53 4c 20 23 31 0d 7c  |V R1,R1,LSL #1.||
00015700  9c 11 4c 44 52 20 52 37  2c 72 6f 77 69 6e 63 0d  |..LDR R7,rowinc.|
00015710  7c a6 14 41 44 52 20 52  31 34 2c 64 69 76 74 61  ||..ADR R14,divta|
00015720  62 6c 65 0d 7c b0 0b 2e  66 73 6c 6f 6f 70 0d 7c  |ble.|...fsloop.||
00015730  ba 25 43 4d 50 20 52 34  2c 23 46 3a 4d 4f 56 43  |.%CMP R4,#F:MOVC|
00015740  53 20 52 34 2c 23 30 3a  4d 4f 56 47 45 20 52 34  |S R4,#0:MOVGE R4|
00015750  2c 23 46 0d 7c c4 14 41  44 44 20 52 35 2c 52 34  |,#F.|..ADD R5,R4|
00015760  2c 23 46 3e 3e 33 20 0d  7c ce 1b 4d 4f 56 53 20  |,#F>>3 .|..MOVS |
00015770  52 35 2c 52 35 2c 4c 53  52 20 23 62 69 74 73 2d  |R5,R5,LSR #bits-|
00015780  32 20 0d 7c d8 1c 4c 44  52 4e 45 20 52 30 2c 5b  |2 .|..LDRNE R0,[|
00015790  52 31 34 2c 52 35 2c 4c  53 4c 20 23 32 5d 0d 7c  |R14,R5,LSL #2].||
000157a0  e2 13 53 55 42 4e 45 20  52 34 2c 52 34 2c 52 30  |..SUBNE R4,R4,R0|
000157b0  20 0d 7c ec 05 5d 0d 7c  f6 0e e7 64 69 74 68 65  | .|..].|...dithe|
000157c0  72 25 20 8c 0d 7d 00 0a  5b 4f 50 54 20 5a 0d 7d  |r% ..}..[OPT Z.}|
000157d0  0a 18 41 44 44 20 52 32  2c 52 34 2c 52 34 2c 4c  |..ADD R2,R4,R4,L|
000157e0  53 4c 20 23 31 20 0d 7d  14 29 4c 44 52 20 52 33  |SL #1 .}.)LDR R3|
000157f0  2c 5b 52 31 31 2c 2d 52  38 5d 3a 41 44 44 20 52  |,[R11,-R8]:ADD R|
00015800  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00015810  7d 1e 14 53 54 52 20 52  33 2c 5b 52 31 31 2c 2d  |}..STR R3,[R11,-|
00015820  52 38 5d 0d 7d 28 18 41  44 44 20 52 32 2c 52 34  |R8].}(.ADD R2,R4|
00015830  2c 52 34 2c 4c 53 4c 20  23 32 20 0d 7d 32 25 4c  |,R4,LSL #2 .}2%L|
00015840  44 52 20 52 33 2c 5b 52  31 31 5d 3a 41 44 44 20  |DR R3,[R11]:ADD |
00015850  52 33 2c 52 33 2c 52 32  2c 41 53 52 20 23 34 20  |R3,R3,R2,ASR #4 |
00015860  0d 7d 3c 10 53 54 52 20  52 33 2c 5b 52 31 31 5d  |.}<.STR R3,[R11]|
00015870  0d 7d 46 15 4d 4f 56 20  52 33 2c 52 34 2c 41 53  |.}F.MOV R3,R4,AS|
00015880  52 20 23 34 20 0d 7d 50  15 53 54 52 20 52 33 2c  |R #4 .}P.STR R3,|
00015890  5b 52 31 31 2c 52 38 5d  21 20 0d 7d 5a 18 52 53  |[R11,R8]! .}Z.RS|
000158a0  42 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |B R2,R4,R4,LSL #|
000158b0  33 20 0d 7d 64 14 4c 44  52 20 52 34 2c 5b 52 31  |3 .}d.LDR R4,[R1|
000158c0  30 5d 2c 52 38 20 0d 7d  6e 19 41 44 44 53 20 52  |0],R8 .}n.ADDS R|
000158d0  34 2c 52 34 2c 52 32 2c  41 53 52 20 23 34 20 0d  |4,R4,R2,ASR #4 .|
000158e0  7d 78 05 5d 0d 7d 82 05  cc 0d 7d 8c 0a 5b 4f 50  |}x.].}....}..[OP|
000158f0  54 20 5a 0d 7d 96 13 4c  44 52 20 52 34 2c 5b 52  |T Z.}..LDR R4,[R|
00015900  31 30 5d 2c 52 38 0d 7d  a0 05 5d 0d 7d aa 05 cd  |10],R8.}..].}...|
00015910  0d 7d b4 0a 5b 4f 50 54  20 5a 0d 7d be 25 43 4d  |.}..[OPT Z.}.%CM|
00015920  50 20 52 34 2c 23 46 3a  4d 4f 56 43 53 20 52 34  |P R4,#F:MOVCS R4|
00015930  2c 23 30 3a 4d 4f 56 47  45 20 52 34 2c 23 46 0d  |,#0:MOVGE R4,#F.|
00015940  7d c8 14 41 44 44 20 52  33 2c 52 34 2c 23 46 3e  |}..ADD R3,R4,#F>|
00015950  3e 33 20 0d 7d d2 1b 4d  4f 56 53 20 52 33 2c 52  |>3 .}..MOVS R3,R|
00015960  33 2c 4c 53 52 20 23 62  69 74 73 2d 32 20 0d 7d  |3,LSR #bits-2 .}|
00015970  dc 1c 4c 44 52 4e 45 20  52 30 2c 5b 52 31 34 2c  |..LDRNE R0,[R14,|
00015980  52 33 2c 4c 53 4c 20 23  32 5d 0d 7d e6 13 53 55  |R3,LSL #2].}..SU|
00015990  42 4e 45 20 52 34 2c 52  34 2c 52 30 20 0d 7d f0  |BNE R4,R4,R0 .}.|
000159a0  27 84 52 20 52 35 2c 52  35 2c 52 33 2c 4c 53 4c  |'.R R5,R5,R3,LSL|
000159b0  20 23 33 3a 4c 44 52 42  20 52 35 2c 5b 52 36 2c  | #3:LDRB R5,[R6,|
000159c0  52 35 5d 20 0d 7d fa 15  4d 4f 56 20 52 32 2c 52  |R5] .}..MOV R2,R|
000159d0  31 32 2c 4c 53 52 20 23  32 0d 7e 04 0e 54 53 54  |12,LSR #2.~..TST|
000159e0  20 52 31 32 2c 23 32 0d  7e 0e 1c 80 20 52 33 2c  | R12,#2.~... R3,|
000159f0  52 35 2c 23 26 46 3a 4c  44 52 42 20 52 30 2c 5b  |R5,#&F:LDRB R0,[|
00015a00  52 32 5d 0d 7e 18 20 80  45 51 20 52 30 2c 52 30  |R2].~. .EQ R0,R0|
00015a10  2c 23 26 46 30 3a 84 52  45 51 20 52 30 2c 52 30  |,#&F0:.REQ R0,R0|
00015a20  2c 52 33 0d 7e 22 27 80  4e 45 20 52 30 2c 52 30  |,R3.~"'.NE R0,R0|
00015a30  2c 23 26 30 46 3a 84 52  4e 45 20 52 30 2c 52 30  |,#&0F:.RNE R0,R0|
00015a40  2c 52 33 2c 4c 53 4c 20  23 34 0d 7e 2c 13 53 54  |,R3,LSL #4.~,.ST|
00015a50  52 42 20 52 30 2c 5b 52  32 5d 2c 52 37 0d 7e 36  |RB R0,[R2],R7.~6|
00015a60  21 4d 4f 56 20 52 33 2c  52 35 2c 4c 53 52 20 23  |!MOV R3,R5,LSR #|
00015a70  34 3a 4c 44 52 42 20 52  30 2c 5b 52 32 5d 0d 7e  |4:LDRB R0,[R2].~|
00015a80  40 20 80 45 51 20 52 30  2c 52 30 2c 23 26 46 30  |@ .EQ R0,R0,#&F0|
00015a90  3a 84 52 45 51 20 52 30  2c 52 30 2c 52 33 0d 7e  |:.REQ R0,R0,R3.~|
00015aa0  4a 27 80 4e 45 20 52 30  2c 52 30 2c 23 26 30 46  |J'.NE R0,R0,#&0F|
00015ab0  3a 84 52 4e 45 20 52 30  2c 52 30 2c 52 33 2c 4c  |:.RNE R0,R0,R3,L|
00015ac0  53 4c 20 23 34 0d 7e 54  10 53 54 52 42 20 52 30  |SL #4.~T.STRB R0|
00015ad0  2c 5b 52 32 5d 0d 7e 5e  12 41 44 44 20 52 31 32  |,[R2].~^.ADD R12|
00015ae0  2c 52 31 32 2c 52 31 0d  7e 68 05 5d 0d 7e 72 0e  |,R12,R1.~h.].~r.|
00015af0  e7 64 69 74 68 65 72 25  20 8c 0d 7e 7c 0a 5b 4f  |.dither% ..~|.[O|
00015b00  50 54 20 5a 0d 7e 86 18  41 44 44 20 52 32 2c 52  |PT Z.~..ADD R2,R|
00015b10  34 2c 52 34 2c 4c 53 4c  20 23 31 20 0d 7e 90 29  |4,R4,LSL #1 .~.)|
00015b20  4c 44 52 20 52 33 2c 5b  52 31 31 2c 2d 52 38 5d  |LDR R3,[R11,-R8]|
00015b30  3a 41 44 44 20 52 33 2c  52 33 2c 52 32 2c 41 53  |:ADD R3,R3,R2,AS|
00015b40  52 20 23 34 20 0d 7e 9a  14 53 54 52 20 52 33 2c  |R #4 .~..STR R3,|
00015b50  5b 52 31 31 2c 2d 52 38  5d 0d 7e a4 18 41 44 44  |[R11,-R8].~..ADD|
00015b60  20 52 32 2c 52 34 2c 52  34 2c 4c 53 4c 20 23 32  | R2,R4,R4,LSL #2|
00015b70  20 0d 7e ae 25 4c 44 52  20 52 33 2c 5b 52 31 31  | .~.%LDR R3,[R11|
00015b80  5d 3a 41 44 44 20 52 33  2c 52 33 2c 52 32 2c 41  |]:ADD R3,R3,R2,A|
00015b90  53 52 20 23 34 20 0d 7e  b8 10 53 54 52 20 52 33  |SR #4 .~..STR R3|
00015ba0  2c 5b 52 31 31 5d 0d 7e  c2 15 4d 4f 56 20 52 33  |,[R11].~..MOV R3|
00015bb0  2c 52 34 2c 41 53 52 20  23 34 20 0d 7e cc 15 53  |,R4,ASR #4 .~..S|
00015bc0  54 52 20 52 33 2c 5b 52  31 31 2c 52 38 5d 21 20  |TR R3,[R11,R8]! |
00015bd0  0d 7e d6 18 52 53 42 20  52 32 2c 52 34 2c 52 34  |.~..RSB R2,R4,R4|
00015be0  2c 4c 53 4c 20 23 33 20  0d 7e e0 14 4c 44 52 20  |,LSL #3 .~..LDR |
00015bf0  52 34 2c 5b 52 31 30 5d  2c 52 38 20 0d 7e ea 18  |R4,[R10],R8 .~..|
00015c00  41 44 44 20 52 34 2c 52  34 2c 52 32 2c 41 53 52  |ADD R4,R4,R2,ASR|
00015c10  20 23 34 20 0d 7e f4 05  5d 0d 7e fe 05 cc 0d 7f  | #4 .~..].~.....|
00015c20  08 0a 5b 4f 50 54 20 5a  0d 7f 12 13 4c 44 52 20  |..[OPT Z....LDR |
00015c30  52 34 2c 5b 52 31 30 5d  2c 52 38 0d 7f 1c 05 5d  |R4,[R10],R8....]|
00015c40  0d 7f 26 05 cd 0d 7f 30  0a 5b 4f 50 54 20 5a 0d  |..&....0.[OPT Z.|
00015c50  7f 3a 1c 53 55 42 53 20  52 39 2c 52 39 2c 23 32  |.:.SUBS R9,R9,#2|
00015c60  3a 42 4e 45 20 66 73 6c  6f 6f 70 0d 7f 44 14 4c  |:BNE fsloop..D.L|
00015c70  44 4d 46 44 20 53 50 20  21 2c 7b 50 43 7d 5e 0d  |DMFD SP !,{PC}^.|
00015c80  7f 4e 05 5d 0d 7f 58 05  7f 0d 7f 62 0a 5b 4f 50  |.N.]..X....b.[OP|
00015c90  54 20 5a 0d 7f 6c 08 2e  66 73 25 0d 7f 76 14 53  |T Z..l..fs%..v.S|
00015ca0  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
00015cb0  7f 80 21 4c 44 52 20 52  31 2c 5b 52 39 2c 23 35  |..!LDR R1,[R9,#5|
00015cc0  2a 38 5d 3a 4c 44 52 20  52 31 2c 5b 52 31 5d 20  |*8]:LDR R1,[R1] |
00015cd0  0d 7f 8a 16 4c 44 52 20  52 31 30 2c 5b 52 39 2c  |....LDR R10,[R9,|
00015ce0  23 34 2a 38 5d 20 0d 7f  94 16 4c 44 52 20 52 31  |#4*8] ....LDR R1|
00015cf0  31 2c 5b 52 39 2c 23 33  2a 38 5d 20 0d 7f 9e 16  |1,[R9,#3*8] ....|
00015d00  4c 44 52 20 52 31 32 2c  5b 52 39 2c 23 32 2a 38  |LDR R12,[R9,#2*8|
00015d10  5d 20 0d 7f a8 12 4c 44  52 20 52 31 32 2c 5b 52  |] ....LDR R12,[R|
00015d20  31 32 5d 20 0d 7f b2 13  4c 44 52 20 52 38 2c 5b  |12] ....LDR R8,[|
00015d30  52 39 2c 23 38 5d 20 0d  7f bc 10 4c 44 52 20 52  |R9,#8] ....LDR R|
00015d40  38 2c 5b 52 38 5d 20 0d  7f c6 10 4c 44 52 20 52  |8,[R8] ....LDR R|
00015d50  39 2c 5b 52 39 5d 20 0d  7f d0 10 4c 44 52 20 52  |9,[R9] ....LDR R|
00015d60  39 2c 5b 52 39 5d 20 0d  7f da 14 4c 44 52 20 52  |9,[R9] ....LDR R|
00015d70  34 2c 5b 52 31 30 5d 2c  52 38 20 0d 7f e4 0e 4d  |4,[R10],R8 ....M|
00015d80  4f 56 20 52 37 2c 23 31  20 0d 7f ee 0b 2e 66 73  |OV R7,#1 .....fs|
00015d90  6c 6f 6f 70 0d 7f f8 25  43 4d 50 20 52 34 2c 23  |loop...%CMP R4,#|
00015da0  46 3a 4d 4f 56 43 53 20  52 34 2c 23 30 3a 4d 4f  |F:MOVCS R4,#0:MO|
00015db0  56 47 45 20 52 34 2c 23  46 0d 80 02 05 5d 0d 80  |VGE R4,#F....]..|
00015dc0  0c 0d e7 62 6c 61 63 6b  25 20 8c 0d 80 16 0a 5b  |...black% .....[|
00015dd0  4f 50 54 20 5a 0d 80 20  15 4d 4f 56 20 52 32 2c  |OPT Z.. .MOV R2,|
00015de0  52 31 32 2c 4c 53 52 20  23 33 0d 80 2a 19 80 20  |R12,LSR #3..*.. |
00015df0  52 35 2c 52 31 32 2c 23  37 3a 4d 4f 56 20 52 36  |R5,R12,#7:MOV R6|
00015e00  2c 23 31 0d 80 34 1d 4c  44 52 42 20 52 30 2c 5b  |,#1..4.LDRB R0,[|
00015e10  52 32 2c 23 2d 28 78 25  2b 37 3e 3e 33 29 5d 20  |R2,#-(x%+7>>3)] |
00015e20  0d 80 3e 11 53 55 42 20  52 33 2c 52 34 2c 23 46  |..>.SUB R3,R4,#F|
00015e30  20 0d 80 48 0d 43 4d 50  20 52 37 2c 23 30 0d 80  | ..H.CMP R7,#0..|
00015e40  52 22 41 44 44 4e 45 20  52 34 2c 52 34 2c 23 62  |R"ADDNE R4,R4,#b|
00015e50  6c 61 63 6b 25 3c 3c 28  62 69 74 73 2d 38 29 20  |lack%<<(bits-8) |
00015e60  0d 80 5c 22 41 44 44 45  51 20 52 33 2c 52 33 2c  |..\"ADDEQ R3,R3,|
00015e70  23 62 6c 61 63 6b 25 3c  3c 28 62 69 74 73 2d 38  |#black%<<(bits-8|
00015e80  29 20 0d 80 66 14 54 53  54 20 52 30 2c 52 36 2c  |) ..f.TST R0,R6,|
00015e90  4c 53 4c 20 52 35 0d 80  70 22 41 44 44 4e 45 20  |LSL R5..p"ADDNE |
00015ea0  52 34 2c 52 34 2c 23 62  6c 61 63 6b 25 3c 3c 28  |R4,R4,#black%<<(|
00015eb0  62 69 74 73 2d 38 29 20  0d 80 7a 22 41 44 44 45  |bits-8) ..z"ADDE|
00015ec0  51 20 52 33 2c 52 33 2c  23 62 6c 61 63 6b 25 3c  |Q R3,R3,#black%<|
00015ed0  3c 28 62 69 74 73 2d 38  29 20 0d 80 84 1e 4d 4f  |<(bits-8) ....MO|
00015ee0  56 53 20 52 30 2c 52 33  3a 52 53 42 4d 49 20 52  |VS R0,R3:RSBMI R|
00015ef0  30 2c 52 33 2c 23 30 20  0d 80 8e 0e 43 4d 50 20  |0,R3,#0 ....CMP |
00015f00  52 34 2c 52 30 20 0d 80  98 10 4d 4f 56 43 43 20  |R4,R0 ....MOVCC |
00015f10  52 33 2c 23 30 20 0d 80  a2 1c 4d 4f 56 43 53 20  |R3,#0 ....MOVCS |
00015f20  52 34 2c 52 33 3a 4d 4f  56 43 53 20 52 33 2c 23  |R4,R3:MOVCS R3,#|
00015f30  31 20 0d 80 ac 0e 4d 4f  56 20 52 37 2c 52 33 20  |1 ....MOV R7,R3 |
00015f40  0d 80 b6 05 5d 0d 80 c0  05 cc 0d 80 ca 0a 5b 4f  |....].........[O|
00015f50  50 54 20 5a 0d 80 d4 28  41 44 44 20 52 33 2c 52  |PT Z...(ADD R3,R|
00015f60  34 2c 23 46 3e 3e 31 3a  4d 4f 56 20 52 33 2c 52  |4,#F>>1:MOV R3,R|
00015f70  33 2c 4c 53 52 20 23 62  69 74 73 20 0d 80 de 1a  |3,LSR #bits ....|
00015f80  53 55 42 20 52 34 2c 52  34 2c 52 33 2c 4c 53 4c  |SUB R4,R4,R3,LSL|
00015f90  20 23 62 69 74 73 0d 80  e8 15 4d 4f 56 20 52 32  | #bits....MOV R2|
00015fa0  2c 52 31 32 2c 4c 53 52  20 23 33 0d 80 f2 19 80  |,R12,LSR #3.....|
00015fb0  20 52 35 2c 52 31 32 2c  23 37 3a 4d 4f 56 20 52  | R5,R12,#7:MOV R|
00015fc0  36 2c 23 31 0d 80 fc 05  5d 0d 81 06 05 cd 0d 81  |6,#1....].......|
00015fd0  10 0a 5b 4f 50 54 20 5a  0d 81 1a 37 4c 44 52 42  |..[OPT Z...7LDRB|
00015fe0  20 52 30 2c 5b 52 32 5d  3a 42 49 43 20 52 30 2c  | R0,[R2]:BIC R0,|
00015ff0  52 30 2c 52 36 2c 4c 53  4c 20 52 35 3a 84 52 20  |R0,R6,LSL R5:.R |
00016000  52 30 2c 52 30 2c 52 33  2c 4c 53 4c 20 52 35 0d  |R0,R0,R3,LSL R5.|
00016010  81 24 10 53 54 52 42 20  52 30 2c 5b 52 32 5d 0d  |.$.STRB R0,[R2].|
00016020  81 2e 12 41 44 44 20 52  31 32 2c 52 31 32 2c 52  |...ADD R12,R12,R|
00016030  31 0d 81 38 05 5d 0d 81  42 0e e7 64 69 74 68 65  |1..8.]..B..dithe|
00016040  72 25 20 8c 0d 81 4c 0a  5b 4f 50 54 20 5a 0d 81  |r% ...L.[OPT Z..|
00016050  56 18 41 44 44 20 52 32  2c 52 34 2c 52 34 2c 4c  |V.ADD R2,R4,R4,L|
00016060  53 4c 20 23 31 20 0d 81  60 29 4c 44 52 20 52 33  |SL #1 ..`)LDR R3|
00016070  2c 5b 52 31 31 2c 2d 52  38 5d 3a 41 44 44 20 52  |,[R11,-R8]:ADD R|
00016080  33 2c 52 33 2c 52 32 2c  41 53 52 20 23 34 20 0d  |3,R3,R2,ASR #4 .|
00016090  81 6a 14 53 54 52 20 52  33 2c 5b 52 31 31 2c 2d  |.j.STR R3,[R11,-|
000160a0  52 38 5d 0d 81 74 18 41  44 44 20 52 32 2c 52 34  |R8]..t.ADD R2,R4|
000160b0  2c 52 34 2c 4c 53 4c 20  23 32 20 0d 81 7e 25 4c  |,R4,LSL #2 ..~%L|
000160c0  44 52 20 52 33 2c 5b 52  31 31 5d 3a 41 44 44 20  |DR R3,[R11]:ADD |
000160d0  52 33 2c 52 33 2c 52 32  2c 41 53 52 20 23 34 20  |R3,R3,R2,ASR #4 |
000160e0  0d 81 88 10 53 54 52 20  52 33 2c 5b 52 31 31 5d  |....STR R3,[R11]|
000160f0  0d 81 92 15 4d 4f 56 20  52 33 2c 52 34 2c 41 53  |....MOV R3,R4,AS|
00016100  52 20 23 34 20 0d 81 9c  15 53 54 52 20 52 33 2c  |R #4 ....STR R3,|
00016110  5b 52 31 31 2c 52 38 5d  21 20 0d 81 a6 18 52 53  |[R11,R8]! ....RS|
00016120  42 20 52 32 2c 52 34 2c  52 34 2c 4c 53 4c 20 23  |B R2,R4,R4,LSL #|
00016130  33 20 0d 81 b0 14 4c 44  52 20 52 34 2c 5b 52 31  |3 ....LDR R4,[R1|
00016140  30 5d 2c 52 38 20 0d 81  ba 18 41 44 44 20 52 34  |0],R8 ....ADD R4|
00016150  2c 52 34 2c 52 32 2c 41  53 52 20 23 34 20 0d 81  |,R4,R2,ASR #4 ..|
00016160  c4 05 5d 0d 81 ce 05 cc  0d 81 d8 0a 5b 4f 50 54  |..].........[OPT|
00016170  20 5a 0d 81 e2 13 4c 44  52 20 52 34 2c 5b 52 31  | Z....LDR R4,[R1|
00016180  30 5d 2c 52 38 0d 81 ec  05 5d 0d 81 f6 05 cd 0d  |0],R8....]......|
00016190  82 00 0a 5b 4f 50 54 20  5a 0d 82 0a 1c 53 55 42  |...[OPT Z....SUB|
000161a0  53 20 52 39 2c 52 39 2c  23 31 3a 42 4e 45 20 66  |S R9,R9,#1:BNE f|
000161b0  73 6c 6f 6f 70 0d 82 14  14 4c 44 4d 46 44 20 53  |sloop....LDMFD S|
000161c0  50 20 21 2c 7b 50 43 7d  5e 0d 82 1e 05 5d 0d 82  |P !,{PC}^....]..|
000161d0  28 05 cb 0d 82 32 05 cb  0d 82 3c 0a 5b 4f 50 54  |(....2....<.[OPT|
000161e0  20 5a 0d 82 46 12 2e 73  78 6c 6f 63 20 44 43 44  | Z..F..sxloc DCD|
000161f0  20 73 78 25 0d 82 50 05  5d 0d 82 5a 0c c8 8e 20  | sx%..P.]..Z... |
00016200  63 6f 6c 20 ca 0d 82 64  07 c9 20 30 0d 82 6e 0f  |col ...d.. 0..n.|
00016210  e7 69 6e 70 75 74 3c 3d  38 20 8c 0d 82 78 0a 5b  |.input<=8 ...x.[|
00016220  4f 50 54 20 5a 0d 82 82  0d 2e 6d 61 70 70 69 78  |OPT Z.....mappix|
00016230  25 20 0d 82 8c 11 4c 44  52 20 52 30 2c 73 78 6c  |% ....LDR R0,sxl|
00016240  6f 63 20 0d 82 96 1c 4c  44 52 20 52 31 2c 5b 52  |oc ....LDR R1,[R|
00016250  39 5d 3a 4c 44 52 20 52  31 2c 5b 52 31 5d 20 0d  |9]:LDR R1,[R1] .|
00016260  82 a0 15 4c 44 52 20 52  32 2c 5b 52 39 2c 23 33  |...LDR R2,[R9,#3|
00016270  2a 38 5d 20 0d 82 aa 15  4c 44 52 20 52 35 2c 5b  |*8] ....LDR R5,[|
00016280  52 39 2c 23 34 2a 38 5d  20 0d 82 b4 0d 4d 4f 56  |R9,#4*8] ....MOV|
00016290  20 52 38 2c 23 30 0d 82  be 0d 2e 6d 61 70 70 69  | R8,#0.....mappi|
000162a0  78 6c 70 0d 82 c8 18 4c  44 52 42 20 52 36 2c 5b  |xlp....LDRB R6,[|
000162b0  52 31 5d 2c 23 73 74 65  70 32 34 0d 82 d2 05 5d  |R1],#step24....]|
000162c0  0d 82 dc 05 cd 0d 82 e6  0e c8 8e 20 69 6e 70 75  |........... inpu|
000162d0  74 20 ca 0d 82 f0 07 c9  20 38 0d 82 fa 0a e7 68  |t ...... 8.....h|
000162e0  61 6d 20 8c 0d 83 04 0a  5b 4f 50 54 20 5a 0d 83  |am .....[OPT Z..|
000162f0  0e 11 41 44 52 20 52 39  2c 6c 74 61 62 6c 65 0d  |..ADR R9,ltable.|
00016300  83 18 21 4d 4f 56 53 20  52 37 2c 52 36 2c 4c 53  |..!MOVS R7,R6,LS|
00016310  52 20 23 34 3a 80 20 52  36 2c 52 36 2c 23 31 35  |R #4:. R6,R6,#15|
00016320  0d 83 22 32 4c 44 52 45  51 20 52 31 30 2c 5b 52  |.."2LDREQ R10,[R|
00016330  32 2c 52 36 2c 4c 53 4c  20 23 32 5d 3a ec 51 20  |2,R6,LSL #2]:.Q |
00016340  52 31 31 2c 52 31 30 3a  ec 51 20 52 31 32 2c 52  |R11,R10:.Q R12,R|
00016350  31 30 0d 83 2c 26 43 4d  50 20 52 37 2c 23 31 3a  |10..,&CMP R7,#1:|
00016360  4c 44 52 45 51 20 52 31  32 2c 5b 52 39 2c 52 36  |LDREQ R12,[R9,R6|
00016370  2c 4c 53 4c 20 23 32 5d  0d 83 36 26 43 4d 50 20  |,LSL #2]..6&CMP |
00016380  52 37 2c 23 32 3a 4c 44  52 45 51 20 52 31 30 2c  |R7,#2:LDREQ R10,|
00016390  5b 52 39 2c 52 36 2c 4c  53 4c 20 23 32 5d 0d 83  |[R9,R6,LSL #2]..|
000163a0  40 26 43 4d 50 20 52 37  2c 23 33 3a 4c 44 52 45  |@&CMP R7,#3:LDRE|
000163b0  51 20 52 31 31 2c 5b 52  39 2c 52 36 2c 4c 53 4c  |Q R11,[R9,R6,LSL|
000163c0  20 23 32 5d 0d 83 4a 12  41 44 44 20 52 33 2c 52  | #2]..J.ADD R3,R|
000163d0  31 30 2c 52 31 31 0d 83  54 11 41 44 44 20 52 33  |10,R11..T.ADD R3|
000163e0  2c 52 33 2c 52 31 32 0d  83 5e 14 4d 4f 56 20 52  |,R3,R12..^.MOV R|
000163f0  33 2c 52 33 2c 4c 53 52  20 23 32 0d 83 68 12 53  |3,R3,LSR #2..h.S|
00016400  54 4d 49 41 20 52 35 21  2c 7b 52 33 7d 0d 83 72  |TMIA R5!,{R3}..r|
00016410  1e 53 55 42 53 20 52 30  2c 52 30 2c 23 31 3a 42  |.SUBS R0,R0,#1:B|
00016420  4e 45 20 6d 61 70 70 69  78 6c 70 0d 83 7c 0f 4d  |NE mappixlp..|.M|
00016430  4f 56 53 20 50 43 2c 52  31 34 0d 83 86 0b 2e 6c  |OVS PC,R14.....l|
00016440  74 61 62 6c 65 0d 83 90  05 5d 0d 83 9a 0c e3 49  |table....].....I|
00016450  25 3d 30 b8 31 35 0d 83  a4 0a 5b 4f 50 54 20 5a  |%=0.15....[OPT Z|
00016460  0d 83 ae 10 45 51 55 44  20 49 25 2f 31 35 2a 46  |....EQUD I%/15*F|
00016470  0d 83 b8 05 5d 0d 83 c2  05 ed 0d 83 cc 05 cc 0d  |....]...........|
00016480  83 d6 12 e7 68 70 72 65  64 69 63 74 25 3d 32 20  |....hpredict%=2 |
00016490  8c 0d 83 e0 0a 5b 4f 50  54 20 5a 0d 83 ea 10 41  |.....[OPT Z....A|
000164a0  44 44 20 52 36 2c 52 36  2c 52 38 0d 83 f4 10 80  |DD R6,R6,R8.....|
000164b0  20 52 36 2c 52 36 2c 23  32 35 35 0d 83 fe 0d 4d  | R6,R6,#255....M|
000164c0  4f 56 20 52 38 2c 52 36  0d 84 08 05 5d 0d 84 12  |OV R8,R6....]...|
000164d0  05 cd 0d 84 1c 0a 5b 4f  50 54 20 5a 0d 84 26 28  |......[OPT Z..&(|
000164e0  4c 44 52 20 52 37 2c 5b  52 32 2c 52 36 2c 4c 53  |LDR R7,[R2,R6,LS|
000164f0  4c 20 23 32 5d 3a 53 54  52 20 52 37 2c 5b 52 35  |L #2]:STR R7,[R5|
00016500  5d 2c 23 34 0d 84 30 1e  53 55 42 53 20 52 30 2c  |],#4..0.SUBS R0,|
00016510  52 30 2c 23 31 3a 42 4e  45 20 6d 61 70 70 69 78  |R0,#1:BNE mappix|
00016520  6c 70 0d 84 3a 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp..:.MOVS PC,R1|
00016530  34 0d 84 44 05 5d 0d 84  4e 05 cd 0d 84 58 07 c9  |4..D.]..N....X..|
00016540  20 34 0d 84 62 14 e7 62  69 67 65 6e 64 69 61 6e  | 4..b..bigendian|
00016550  62 69 74 73 20 8c 0d 84  6c 0a 5b 4f 50 54 20 5a  |bits ...l.[OPT Z|
00016560  0d 84 76 15 4d 4f 56 20  52 31 30 2c 52 36 2c 4c  |..v.MOV R10,R6,L|
00016570  53 52 20 23 34 0d 84 80  1a 4c 44 52 20 52 37 2c  |SR #4....LDR R7,|
00016580  5b 52 32 2c 52 31 30 2c  4c 53 4c 20 23 32 5d 0d  |[R2,R10,LSL #2].|
00016590  84 8a 10 80 20 52 31 30  2c 52 36 2c 23 26 46 0d  |.... R10,R6,#&F.|
000165a0  84 94 05 5d 0d 84 9e 05  cc 0d 84 a8 0a 5b 4f 50  |...].........[OP|
000165b0  54 20 5a 0d 84 b2 10 80  20 52 31 30 2c 52 36 2c  |T Z..... R10,R6,|
000165c0  23 26 46 0d 84 bc 1a 4c  44 52 20 52 37 2c 5b 52  |#&F....LDR R7,[R|
000165d0  32 2c 52 31 30 2c 4c 53  4c 20 23 32 5d 0d 84 c6  |2,R10,LSL #2]...|
000165e0  15 4d 4f 56 20 52 31 30  2c 52 36 2c 4c 53 52 20  |.MOV R10,R6,LSR |
000165f0  23 34 0d 84 d0 05 5d 0d  84 da 05 cd 0d 84 e4 0a  |#4....].........|
00016600  5b 4f 50 54 20 5a 0d 84  ee 2c 4c 44 52 20 52 38  |[OPT Z...,LDR R8|
00016610  2c 5b 52 32 2c 52 31 30  2c 4c 53 4c 20 23 32 5d  |,[R2,R10,LSL #2]|
00016620  3a 53 54 4d 49 41 20 52  35 21 2c 7b 52 37 2c 52  |:STMIA R5!,{R7,R|
00016630  38 7d 0d 84 f8 1e 53 55  42 53 20 52 30 2c 52 30  |8}....SUBS R0,R0|
00016640  2c 23 32 3a 42 48 49 20  6d 61 70 70 69 78 6c 70  |,#2:BHI mappixlp|
00016650  0d 85 02 0f 4d 4f 56 53  20 50 43 2c 52 31 34 0d  |....MOVS PC,R14.|
00016660  85 0c 05 5d 0d 85 16 07  c9 20 32 0d 85 20 14 e7  |...]..... 2.. ..|
00016670  62 69 67 65 6e 64 69 61  6e 62 69 74 73 20 8c 0d  |bigendianbits ..|
00016680  85 2a 0a 5b 4f 50 54 20  5a 0d 85 34 15 4d 4f 56  |.*.[OPT Z..4.MOV|
00016690  20 52 31 30 2c 52 36 2c  4c 53 52 20 23 36 0d 85  | R10,R6,LSR #6..|
000166a0  3e 1a 4c 44 52 20 52 37  2c 5b 52 32 2c 52 31 30  |>.LDR R7,[R2,R10|
000166b0  2c 4c 53 4c 20 23 32 5d  0d 85 48 11 80 20 52 31  |,LSL #2]..H.. R1|
000166c0  30 2c 52 36 2c 23 26 33  30 0d 85 52 1a 4c 44 52  |0,R6,#&30..R.LDR|
000166d0  20 52 38 2c 5b 52 32 2c  52 31 30 2c 4c 53 52 20  | R8,[R2,R10,LSR |
000166e0  23 32 5d 0d 85 5c 10 80  20 52 31 30 2c 52 36 2c  |#2]..\.. R10,R6,|
000166f0  23 26 43 0d 85 66 13 4c  44 52 20 52 39 2c 5b 52  |#&C..f.LDR R9,[R|
00016700  32 2c 52 31 30 5d 0d 85  70 10 80 20 52 31 30 2c  |2,R10]..p.. R10,|
00016710  52 36 2c 23 26 33 0d 85  7a 05 5d 0d 85 84 05 cc  |R6,#&3..z.].....|
00016720  0d 85 8e 0a 5b 4f 50 54  20 5a 0d 85 98 10 80 20  |....[OPT Z..... |
00016730  52 31 30 2c 52 36 2c 23  26 33 0d 85 a2 1a 4c 44  |R10,R6,#&3....LD|
00016740  52 20 52 37 2c 5b 52 32  2c 52 31 30 2c 4c 53 4c  |R R7,[R2,R10,LSL|
00016750  20 23 32 5d 0d 85 ac 10  80 20 52 31 30 2c 52 36  | #2]..... R10,R6|
00016760  2c 23 26 43 0d 85 b6 13  4c 44 52 20 52 38 2c 5b  |,#&C....LDR R8,[|
00016770  52 32 2c 52 31 30 5d 0d  85 c0 11 80 20 52 31 30  |R2,R10]..... R10|
00016780  2c 52 36 2c 23 26 33 30  0d 85 ca 1a 4c 44 52 20  |,R6,#&30....LDR |
00016790  52 39 2c 5b 52 32 2c 52  31 30 2c 4c 53 52 20 23  |R9,[R2,R10,LSR #|
000167a0  32 5d 0d 85 d4 15 4d 4f  56 20 52 31 30 2c 52 36  |2]....MOV R10,R6|
000167b0  2c 4c 53 52 20 23 36 0d  85 de 05 5d 0d 85 e8 05  |,LSR #6....]....|
000167c0  cd 0d 85 f2 0a 5b 4f 50  54 20 5a 0d 85 fc 34 4c  |.....[OPT Z...4L|
000167d0  44 52 20 52 31 30 2c 5b  52 32 2c 52 31 30 2c 4c  |DR R10,[R2,R10,L|
000167e0  53 4c 20 23 32 5d 3a 53  54 4d 49 41 20 52 35 21  |SL #2]:STMIA R5!|
000167f0  2c 7b 52 37 2c 52 38 2c  52 39 2c 52 31 30 7d 0d  |,{R7,R8,R9,R10}.|
00016800  86 06 1e 53 55 42 53 20  52 30 2c 52 30 2c 23 34  |...SUBS R0,R0,#4|
00016810  3a 42 48 49 20 6d 61 70  70 69 78 6c 70 0d 86 10  |:BHI mappixlp...|
00016820  0f 4d 4f 56 53 20 50 43  2c 52 31 34 0d 86 1a 05  |.MOVS PC,R14....|
00016830  5d 0d 86 24 07 c9 20 31  0d 86 2e 14 e7 62 69 67  |]..$.. 1.....big|
00016840  65 6e 64 69 61 6e 62 69  74 73 20 8c 0d 86 38 0a  |endianbits ...8.|
00016850  5b 4f 50 54 20 5a 0d 86  42 11 80 20 52 31 30 2c  |[OPT Z..B.. R10,|
00016860  52 36 2c 23 26 38 30 0d  86 4c 1a 4c 44 52 20 52  |R6,#&80..L.LDR R|
00016870  37 2c 5b 52 32 2c 52 31  30 2c 4c 53 52 20 23 35  |7,[R2,R10,LSR #5|
00016880  5d 0d 86 56 11 80 20 52  31 30 2c 52 36 2c 23 26  |]..V.. R10,R6,#&|
00016890  34 30 0d 86 60 1a 4c 44  52 20 52 38 2c 5b 52 32  |40..`.LDR R8,[R2|
000168a0  2c 52 31 30 2c 4c 53 52  20 23 34 5d 0d 86 6a 11  |,R10,LSR #4]..j.|
000168b0  80 20 52 31 30 2c 52 36  2c 23 26 32 30 0d 86 74  |. R10,R6,#&20..t|
000168c0  1a 4c 44 52 20 52 39 2c  5b 52 32 2c 52 31 30 2c  |.LDR R9,[R2,R10,|
000168d0  4c 53 52 20 23 33 5d 0d  86 7e 11 80 20 52 31 30  |LSR #3]..~.. R10|
000168e0  2c 52 36 2c 23 26 31 30  0d 86 88 34 4c 44 52 20  |,R6,#&10...4LDR |
000168f0  52 31 30 2c 5b 52 32 2c  52 31 30 2c 4c 53 52 20  |R10,[R2,R10,LSR |
00016900  23 32 5d 3a 53 54 4d 49  41 20 52 35 21 2c 7b 52  |#2]:STMIA R5!,{R|
00016910  37 2c 52 38 2c 52 39 2c  52 31 30 7d 0d 86 92 10  |7,R8,R9,R10}....|
00016920  80 20 52 31 30 2c 52 36  2c 23 26 38 0d 86 9c 1a  |. R10,R6,#&8....|
00016930  4c 44 52 20 52 37 2c 5b  52 32 2c 52 31 30 2c 4c  |LDR R7,[R2,R10,L|
00016940  53 52 20 23 31 5d 0d 86  a6 10 80 20 52 31 30 2c  |SR #1]..... R10,|
00016950  52 36 2c 23 26 34 0d 86  b0 13 4c 44 52 20 52 38  |R6,#&4....LDR R8|
00016960  2c 5b 52 32 2c 52 31 30  5d 0d 86 ba 10 80 20 52  |,[R2,R10]..... R|
00016970  31 30 2c 52 36 2c 23 26  32 0d 86 c4 1a 4c 44 52  |10,R6,#&2....LDR|
00016980  20 52 39 2c 5b 52 32 2c  52 31 30 2c 4c 53 4c 20  | R9,[R2,R10,LSL |
00016990  23 31 5d 0d 86 ce 10 80  20 52 31 30 2c 52 36 2c  |#1]..... R10,R6,|
000169a0  23 26 31 0d 86 d8 05 5d  0d 86 e2 05 cc 0d 86 ec  |#&1....]........|
000169b0  0a 5b 4f 50 54 20 5a 0d  86 f6 10 80 20 52 31 30  |.[OPT Z..... R10|
000169c0  2c 52 36 2c 23 26 31 0d  87 00 1a 4c 44 52 20 52  |,R6,#&1....LDR R|
000169d0  37 2c 5b 52 32 2c 52 31  30 2c 4c 53 4c 20 23 32  |7,[R2,R10,LSL #2|
000169e0  5d 0d 87 0a 10 80 20 52  31 30 2c 52 36 2c 23 26  |]..... R10,R6,#&|
000169f0  32 0d 87 14 1a 4c 44 52  20 52 38 2c 5b 52 32 2c  |2....LDR R8,[R2,|
00016a00  52 31 30 2c 4c 53 4c 20  23 31 5d 0d 87 1e 10 80  |R10,LSL #1].....|
00016a10  20 52 31 30 2c 52 36 2c  23 26 34 0d 87 28 13 4c  | R10,R6,#&4..(.L|
00016a20  44 52 20 52 39 2c 5b 52  32 2c 52 31 30 5d 0d 87  |DR R9,[R2,R10]..|
00016a30  32 10 80 20 52 31 30 2c  52 36 2c 23 26 38 0d 87  |2.. R10,R6,#&8..|
00016a40  3c 34 4c 44 52 20 52 31  30 2c 5b 52 32 2c 52 31  |<4LDR R10,[R2,R1|
00016a50  30 2c 4c 53 52 20 23 31  5d 3a 53 54 4d 49 41 20  |0,LSR #1]:STMIA |
00016a60  52 35 21 2c 7b 52 37 2c  52 38 2c 52 39 2c 52 31  |R5!,{R7,R8,R9,R1|
00016a70  30 7d 0d 87 46 11 80 20  52 31 30 2c 52 36 2c 23  |0}..F.. R10,R6,#|
00016a80  26 31 30 0d 87 50 1a 4c  44 52 20 52 37 2c 5b 52  |&10..P.LDR R7,[R|
00016a90  32 2c 52 31 30 2c 4c 53  52 20 23 32 5d 0d 87 5a  |2,R10,LSR #2]..Z|
00016aa0  11 80 20 52 31 30 2c 52  36 2c 23 26 32 30 0d 87  |.. R10,R6,#&20..|
00016ab0  64 1a 4c 44 52 20 52 38  2c 5b 52 32 2c 52 31 30  |d.LDR R8,[R2,R10|
00016ac0  2c 4c 53 52 20 23 33 5d  0d 87 6e 11 80 20 52 31  |,LSR #3]..n.. R1|
00016ad0  30 2c 52 36 2c 23 26 34  30 0d 87 78 1a 4c 44 52  |0,R6,#&40..x.LDR|
00016ae0  20 52 39 2c 5b 52 32 2c  52 31 30 2c 4c 53 52 20  | R9,[R2,R10,LSR |
00016af0  23 34 5d 0d 87 82 15 4d  4f 56 20 52 31 30 2c 52  |#4]....MOV R10,R|
00016b00  36 2c 4c 53 52 20 23 37  0d 87 8c 05 5d 0d 87 96  |6,LSR #7....]...|
00016b10  05 cd 0d 87 a0 0a 5b 4f  50 54 20 5a 0d 87 aa 34  |......[OPT Z...4|
00016b20  4c 44 52 20 52 31 30 2c  5b 52 32 2c 52 31 30 2c  |LDR R10,[R2,R10,|
00016b30  4c 53 4c 20 23 32 5d 3a  53 54 4d 49 41 20 52 35  |LSL #2]:STMIA R5|
00016b40  21 2c 7b 52 37 2c 52 38  2c 52 39 2c 52 31 30 7d  |!,{R7,R8,R9,R10}|
00016b50  0d 87 b4 1e 53 55 42 53  20 52 30 2c 52 30 2c 23  |....SUBS R0,R0,#|
00016b60  38 3a 42 48 49 20 6d 61  70 70 69 78 6c 70 0d 87  |8:BHI mappixlp..|
00016b70  be 0f 4d 4f 56 53 20 50  43 2c 52 31 34 0d 87 c8  |..MOVS PC,R14...|
00016b80  05 5d 0d 87 d2 08 c9 20  31 36 0d 87 dc 0a 5b 4f  |.]..... 16....[O|
00016b90  50 54 20 5a 0d 87 e6 0d  2e 6d 61 70 70 69 78 25  |PT Z.....mappix%|
00016ba0  20 0d 87 f0 11 4c 44 52  20 52 30 2c 73 78 6c 6f  | ....LDR R0,sxlo|
00016bb0  63 20 0d 87 fa 1c 4c 44  52 20 52 31 2c 5b 52 39  |c ....LDR R1,[R9|
00016bc0  5d 3a 4c 44 52 20 52 31  2c 5b 52 31 5d 20 0d 88  |]:LDR R1,[R1] ..|
00016bd0  04 1f 4c 44 52 20 52 32  2c 5b 52 39 2c 23 38 5d  |..LDR R2,[R9,#8]|
00016be0  3a 4c 44 52 20 52 32 2c  5b 52 32 5d 20 0d 88 0e  |:LDR R2,[R2] ...|
00016bf0  15 4c 44 52 20 52 33 2c  5b 52 39 2c 23 34 2a 38  |.LDR R3,[R9,#4*8|
00016c00  5d 20 0d 88 18 15 4c 44  52 20 52 34 2c 5b 52 39  |] ....LDR R4,[R9|
00016c10  2c 23 33 2a 38 5d 20 0d  88 22 15 4c 44 52 20 52  |,#3*8] ..".LDR R|
00016c20  35 2c 5b 52 39 2c 23 32  2a 38 5d 20 0d 88 2c 15  |5,[R9,#2*8] ..,.|
00016c30  4c 44 52 20 52 36 2c 5b  52 39 2c 23 35 2a 38 5d  |LDR R6,[R9,#5*8]|
00016c40  20 0d 88 36 15 4c 44 52  20 52 37 2c 5b 52 39 2c  | ..6.LDR R7,[R9,|
00016c50  23 36 2a 38 5d 20 0d 88  40 15 4c 44 52 20 52 38  |#6*8] ..@.LDR R8|
00016c60  2c 5b 52 39 2c 23 37 2a  38 5d 20 0d 88 4a 0d 43  |,[R9,#7*8] ..J.C|
00016c70  4d 50 20 52 31 2c 52 32  0d 88 54 12 41 44 44 45  |MP R1,R2..T.ADDE|
00016c80  51 20 52 32 2c 52 32 2c  23 31 0d 88 5e 0d 2e 6d  |Q R2,R2,#1..^..m|
00016c90  61 70 70 69 78 6c 70 0d  88 68 2e 4c 44 52 42 20  |appixlp..h.LDRB |
00016ca0  52 39 2c 5b 52 31 5d 2c  23 73 74 65 70 32 34 3a  |R9,[R1],#step24:|
00016cb0  4c 44 52 42 20 52 31 30  2c 5b 52 32 5d 2c 23 73  |LDRB R10,[R2],#s|
00016cc0  74 65 70 32 34 0d 88 72  3e 4c 44 52 20 52 39 2c  |tep24..r>LDR R9,|
00016cd0  5b 52 36 2c 52 39 2c 4c  53 4c 20 23 32 5d 3a 4c  |[R6,R9,LSL #2]:L|
00016ce0  44 52 20 52 31 30 2c 5b  52 37 2c 52 31 30 2c 4c  |DR R10,[R7,R10,L|
00016cf0  53 4c 20 23 32 5d 3a 84  52 20 52 39 2c 52 39 2c  |SL #2]:.R R9,R9,|
00016d00  52 31 30 0d 88 7c 29 80  20 52 31 30 2c 52 39 2c  |R10..|). R10,R9,|
00016d10  23 32 35 35 3a 4c 44 52  20 52 31 30 2c 5b 52 33  |#255:LDR R10,[R3|
00016d20  2c 52 31 30 2c 4c 53 4c  20 23 32 5d 0d 88 86 3c  |,R10,LSL #2]...<|
00016d30  4d 4f 56 20 52 31 31 2c  52 39 2c 4c 53 52 20 23  |MOV R11,R9,LSR #|
00016d40  38 3a 80 20 52 31 31 2c  52 31 31 2c 23 32 35 35  |8:. R11,R11,#255|
00016d50  3a 4c 44 52 20 52 31 31  2c 5b 52 34 2c 52 31 31  |:LDR R11,[R4,R11|
00016d60  2c 4c 53 4c 20 23 32 5d  0d 88 90 2e 4d 4f 56 20  |,LSL #2]....MOV |
00016d70  52 31 32 2c 52 39 2c 4c  53 52 20 23 31 36 3a 4c  |R12,R9,LSR #16:L|
00016d80  44 52 20 52 31 32 2c 5b  52 35 2c 52 31 32 2c 4c  |DR R12,[R5,R12,L|
00016d90  53 4c 20 23 32 5d 0d 88  9a 33 41 44 44 20 52 31  |SL #2]...3ADD R1|
00016da0  30 2c 52 31 30 2c 52 31  31 3a 41 44 44 20 52 31  |0,R10,R11:ADD R1|
00016db0  30 2c 52 31 30 2c 52 31  32 3a 53 54 4d 49 41 20  |0,R10,R12:STMIA |
00016dc0  52 38 21 2c 7b 52 31 30  7d 0d 88 a4 1e 53 55 42  |R8!,{R10}....SUB|
00016dd0  53 20 52 30 2c 52 30 2c  23 31 3a 42 4e 45 20 6d  |S R0,R0,#1:BNE m|
00016de0  61 70 70 69 78 6c 70 0d  88 ae 0f 4d 4f 56 53 20  |appixlp....MOVS |
00016df0  50 43 2c 52 31 34 0d 88  b8 05 5d 0d 88 c2 08 c9  |PC,R14....].....|
00016e00  20 32 34 0d 88 cc 0a 5b  4f 50 54 20 5a 0d 88 d6  | 24....[OPT Z...|
00016e10  0d 2e 6d 61 70 70 69 78  25 20 0d 88 e0 11 4c 44  |..mappix% ....LD|
00016e20  52 20 52 30 2c 73 78 6c  6f 63 20 0d 88 ea 21 4c  |R R0,sxloc ...!L|
00016e30  44 52 20 52 31 2c 5b 52  39 2c 23 32 2a 38 5d 3a  |DR R1,[R9,#2*8]:|
00016e40  4c 44 52 20 52 31 2c 5b  52 31 5d 20 0d 88 f4 1f  |LDR R1,[R1] ....|
00016e50  4c 44 52 20 52 32 2c 5b  52 39 2c 23 38 5d 3a 4c  |LDR R2,[R9,#8]:L|
00016e60  44 52 20 52 32 2c 5b 52  32 5d 20 0d 88 fe 1c 4c  |DR R2,[R2] ....L|
00016e70  44 52 20 52 33 2c 5b 52  39 5d 3a 4c 44 52 20 52  |DR R3,[R9]:LDR R|
00016e80  33 2c 5b 52 33 5d 20 0d  89 08 15 4c 44 52 20 52  |3,[R3] ....LDR R|
00016e90  34 2c 5b 52 39 2c 23 35  2a 38 5d 20 0d 89 12 15  |4,[R9,#5*8] ....|
00016ea0  4c 44 52 20 52 35 2c 5b  52 39 2c 23 34 2a 38 5d  |LDR R5,[R9,#4*8]|
00016eb0  20 0d 89 1c 15 4c 44 52  20 52 36 2c 5b 52 39 2c  | ....LDR R6,[R9,|
00016ec0  23 33 2a 38 5d 20 0d 89  26 15 4c 44 52 20 52 37  |#3*8] ..&.LDR R7|
00016ed0  2c 5b 52 39 2c 23 36 2a  38 5d 20 0d 89 30 14 53  |,[R9,#6*8] ..0.S|
00016ee0  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
00016ef0  89 3a 24 4d 4f 56 20 72  31 31 2c 23 30 3a 4d 4f  |.:$MOV r11,#0:MO|
00016f00  56 20 52 31 32 2c 23 30  3a 4d 4f 56 20 52 31 34  |V R12,#0:MOV R14|
00016f10  2c 23 30 0d 89 44 0d 2e  6d 61 70 70 69 78 6c 70  |,#0..D..mappixlp|
00016f20  0d 89 4e 43 4c 44 52 42  20 52 38 2c 5b 52 31 5d  |..NCLDRB R8,[R1]|
00016f30  2c 23 73 74 65 70 32 34  3a 4c 44 52 42 20 52 39  |,#step24:LDRB R9|
00016f40  2c 5b 52 32 5d 2c 23 73  74 65 70 32 34 3a 4c 44  |,[R2],#step24:LD|
00016f50  52 42 20 52 31 30 2c 5b  52 33 5d 2c 23 73 74 65  |RB R10,[R3],#ste|
00016f60  70 32 34 0d 89 58 05 5d  0d 89 62 12 e7 68 70 72  |p24..X.]..b..hpr|
00016f70  65 64 69 63 74 25 3d 32  20 8c 0d 89 6c 0a 5b 4f  |edict%=2 ...l.[O|
00016f80  50 54 20 5a 0d 89 76 11  41 44 44 20 72 38 2c 72  |PT Z..v.ADD r8,r|
00016f90  38 2c 72 31 31 0d 89 80  10 80 20 72 38 2c 72 38  |8,r11..... r8,r8|
00016fa0  2c 23 32 35 35 0d 89 8a  0e 4d 4f 56 20 72 31 31  |,#255....MOV r11|
00016fb0  2c 72 38 0d 89 94 11 41  44 44 20 72 39 2c 72 39  |,r8....ADD r9,r9|
00016fc0  2c 72 31 32 0d 89 9e 10  80 20 72 39 2c 72 39 2c  |,r12..... r9,r9,|
00016fd0  23 32 35 35 0d 89 a8 0e  4d 4f 56 20 72 31 32 2c  |#255....MOV r12,|
00016fe0  72 39 0d 89 b2 13 41 44  44 20 72 31 30 2c 72 31  |r9....ADD r10,r1|
00016ff0  30 2c 72 31 34 0d 89 bc  12 80 20 72 31 30 2c 72  |0,r14..... r10,r|
00017000  31 30 2c 23 32 35 35 0d  89 c6 0f 4d 4f 56 20 72  |10,#255....MOV r|
00017010  31 34 2c 72 31 30 0d 89  d0 05 5d 0d 89 da 05 cd  |14,r10....].....|
00017020  0d 89 e4 0a 5b 4f 50 54  20 5a 0d 89 ee 47 4c 44  |....[OPT Z...GLD|
00017030  52 20 52 38 2c 5b 52 34  2c 52 38 2c 4c 53 4c 20  |R R8,[R4,R8,LSL |
00017040  23 32 5d 3a 4c 44 52 20  52 39 2c 5b 52 35 2c 52  |#2]:LDR R9,[R5,R|
00017050  39 2c 4c 53 4c 20 23 32  5d 3a 4c 44 52 20 52 31  |9,LSL #2]:LDR R1|
00017060  30 2c 5b 52 36 2c 52 31  30 2c 4c 53 4c 20 23 32  |0,[R6,R10,LSL #2|
00017070  5d 0d 89 f8 2d 41 44 44  20 52 38 2c 52 38 2c 52  |]...-ADD R8,R8,R|
00017080  39 3a 41 44 44 20 52 38  2c 52 38 2c 52 31 30 3a  |9:ADD R8,R8,R10:|
00017090  53 54 52 20 52 38 2c 5b  52 37 5d 2c 23 34 0d 8a  |STR R8,[R7],#4..|
000170a0  02 1e 53 55 42 53 20 52  30 2c 52 30 2c 23 31 3a  |..SUBS R0,R0,#1:|
000170b0  42 4e 45 20 6d 61 70 70  69 78 6c 70 0d 8a 0c 14  |BNE mappixlp....|
000170c0  4c 44 4d 46 44 20 53 50  20 21 2c 7b 50 43 7d 5e  |LDMFD SP !,{PC}^|
000170d0  0d 8a 16 05 5d 0d 8a 20  09 c9 20 34 31 31 0d 8a  |....].. .. 411..|
000170e0  2a 0a 5b 4f 50 54 20 5a  0d 8a 34 0d 2e 6d 61 70  |*.[OPT Z..4..map|
000170f0  70 69 78 25 20 0d 8a 3e  11 4c 44 52 20 52 30 2c  |pix% ..>.LDR R0,|
00017100  73 78 6c 6f 63 20 0d 8a  48 1c 4c 44 52 20 52 31  |sxloc ..H.LDR R1|
00017110  2c 5b 52 39 5d 3a 4c 44  52 20 52 31 2c 5b 52 31  |,[R9]:LDR R1,[R1|
00017120  5d 20 0d 8a 52 15 4c 44  52 20 52 34 2c 5b 52 39  |] ..R.LDR R4,[R9|
00017130  2c 23 31 2a 38 5d 20 0d  8a 5c 15 4c 44 52 20 52  |,#1*8] ..\.LDR R|
00017140  37 2c 5b 52 39 2c 23 38  2a 38 5d 20 0d 8a 66 0d  |7,[R9,#8*8] ..f.|
00017150  2e 6d 61 70 70 69 78 6c  70 0d 8a 70 14 4c 44 52  |.mappixlp..p.LDR|
00017160  42 20 52 38 2c 5b 52 31  5d 2c 23 32 20 0d 8a 7a  |B R8,[R1],#2 ..z|
00017170  3e 4c 44 52 20 52 38 2c  5b 52 34 2c 52 38 2c 4c  |>LDR R8,[R4,R8,L|
00017180  53 4c 20 23 32 5d 3a 43  4d 50 20 52 38 2c 23 46  |SL #2]:CMP R8,#F|
00017190  3a 4d 4f 56 43 53 20 52  38 2c 23 46 3a 53 54 52  |:MOVCS R8,#F:STR|
000171a0  20 52 38 2c 5b 52 37 5d  2c 23 34 0d 8a 84 1e 53  | R8,[R7],#4....S|
000171b0  55 42 53 20 52 30 2c 52  30 2c 23 31 3a 42 4e 45  |UBS R0,R0,#1:BNE|
000171c0  20 6d 61 70 70 69 78 6c  70 0d 8a 8e 0f 4d 4f 56  | mappixlp....MOV|
000171d0  53 20 50 43 2c 52 31 34  0d 8a 98 05 5d 0d 8a a2  |S PC,R14....]...|
000171e0  09 c9 20 34 32 32 0d 8a  ac 0a 5b 4f 50 54 20 5a  |.. 422....[OPT Z|
000171f0  0d 8a b6 0d 2e 6d 61 70  70 69 78 25 20 0d 8a c0  |.....mappix% ...|
00017200  11 4c 44 52 20 52 30 2c  73 78 6c 6f 63 20 0d 8a  |.LDR R0,sxloc ..|
00017210  ca 1c 4c 44 52 20 52 31  2c 5b 52 39 5d 3a 4c 44  |..LDR R1,[R9]:LD|
00017220  52 20 52 31 2c 5b 52 31  5d 20 0d 8a d4 11 41 44  |R R1,[R1] ....AD|
00017230  44 20 52 31 2c 52 31 2c  23 31 20 0d 8a de 15 4c  |D R1,R1,#1 ....L|
00017240  44 52 20 52 34 2c 5b 52  39 2c 23 31 2a 38 5d 20  |DR R4,[R9,#1*8] |
00017250  0d 8a e8 15 4c 44 52 20  52 37 2c 5b 52 39 2c 23  |....LDR R7,[R9,#|
00017260  38 2a 38 5d 20 0d 8a f2  0d 2e 6d 61 70 70 69 78  |8*8] .....mappix|
00017270  6c 70 0d 8a fc 14 4c 44  52 42 20 52 38 2c 5b 52  |lp....LDRB R8,[R|
00017280  31 5d 2c 23 32 20 0d 8b  06 3e 4c 44 52 20 52 38  |1],#2 ...>LDR R8|
00017290  2c 5b 52 34 2c 52 38 2c  4c 53 4c 20 23 32 5d 3a  |,[R4,R8,LSL #2]:|
000172a0  43 4d 50 20 52 38 2c 23  46 3a 4d 4f 56 43 53 20  |CMP R8,#F:MOVCS |
000172b0  52 38 2c 23 46 3a 53 54  52 20 52 38 2c 5b 52 37  |R8,#F:STR R8,[R7|
000172c0  5d 2c 23 34 0d 8b 10 1e  53 55 42 53 20 52 30 2c  |],#4....SUBS R0,|
000172d0  52 30 2c 23 31 3a 42 4e  45 20 6d 61 70 70 69 78  |R0,#1:BNE mappix|
000172e0  6c 70 0d 8b 1a 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp....MOVS PC,R1|
000172f0  34 0d 8b 24 05 5d 0d 8b  2e 09 c9 20 35 35 35 0d  |4..$.]..... 555.|
00017300  8b 38 0a 5b 4f 50 54 20  5a 0d 8b 42 0d 2e 6d 61  |.8.[OPT Z..B..ma|
00017310  70 70 69 78 25 20 0d 8b  4c 11 4c 44 52 20 52 30  |ppix% ..L.LDR R0|
00017320  2c 73 78 6c 6f 63 20 0d  8b 56 1c 4c 44 52 20 52  |,sxloc ..V.LDR R|
00017330  31 2c 5b 52 39 5d 3a 4c  44 52 20 52 31 2c 5b 52  |1,[R9]:LDR R1,[R|
00017340  31 5d 20 0d 8b 60 11 41  44 44 20 52 31 2c 52 31  |1] ..`.ADD R1,R1|
00017350  2c 23 31 20 0d 8b 6a 15  4c 44 52 20 52 34 2c 5b  |,#1 ..j.LDR R4,[|
00017360  52 39 2c 23 31 2a 38 5d  20 0d 8b 74 15 4c 44 52  |R9,#1*8] ..t.LDR|
00017370  20 52 37 2c 5b 52 39 2c  23 38 2a 38 5d 20 0d 8b  | R7,[R9,#8*8] ..|
00017380  7e 0d 2e 6d 61 70 70 69  78 6c 70 0d 8b 88 14 4c  |~..mappixlp....L|
00017390  44 52 42 20 52 38 2c 5b  52 31 5d 2c 23 32 20 0d  |DRB R8,[R1],#2 .|
000173a0  8b 92 12 80 20 52 38 2c  52 38 2c 23 79 6d 61 78  |.... R8,R8,#ymax|
000173b0  25 0d 8b 9c 3e 4c 44 52  20 52 38 2c 5b 52 34 2c  |%...>LDR R8,[R4,|
000173c0  52 38 2c 4c 53 4c 20 23  32 5d 3a 43 4d 50 20 52  |R8,LSL #2]:CMP R|
000173d0  38 2c 23 46 3a 4d 4f 56  43 53 20 52 38 2c 23 46  |8,#F:MOVCS R8,#F|
000173e0  3a 53 54 52 20 52 38 2c  5b 52 37 5d 2c 23 34 0d  |:STR R8,[R7],#4.|
000173f0  8b a6 1e 53 55 42 53 20  52 30 2c 52 30 2c 23 31  |...SUBS R0,R0,#1|
00017400  3a 42 4e 45 20 6d 61 70  70 69 78 6c 70 0d 8b b0  |:BNE mappixlp...|
00017410  0f 4d 4f 56 53 20 50 43  2c 52 31 34 0d 8b ba 05  |.MOVS PC,R14....|
00017420  5d 0d 8b c4 05 cb 0d 8b  ce 18 e7 78 6d 75 6c 25  |]..........xmul%|
00017430  3d 32 20 80 20 78 64 69  76 25 3d 31 20 8c 0d 8b  |=2 . xdiv%=1 ...|
00017440  d8 0a 5b 4f 50 54 20 5a  0d 8b ec 0d 2e 78 73 61  |..[OPT Z.....xsa|
00017450  6d 70 6c 65 25 0d 8b f6  1c 4c 44 52 20 52 30 2c  |mple%....LDR R0,|
00017460  5b 52 39 5d 3a 4c 44 52  20 52 30 2c 5b 52 30 5d  |[R9]:LDR R0,[R0]|
00017470  20 0d 8c 00 13 4c 44 52  20 52 31 2c 5b 52 39 2c  | ....LDR R1,[R9,|
00017480  23 38 5d 20 0d 8c 0a 15  4c 44 52 20 52 32 2c 5b  |#8] ....LDR R2,[|
00017490  52 39 2c 23 32 2a 38 5d  20 0d 8c 14 11 53 55 42  |R9,#2*8] ....SUB|
000174a0  53 20 52 30 2c 52 30 2c  23 32 0d 8c 1e 10 42 45  |S R0,R0,#2....BE|
000174b0  51 20 78 64 6f 6e 65 64  69 76 0d 8c 28 10 42 4d  |Q xdonediv..(.BM|
000174c0  49 20 78 64 6f 6e 65 64  69 76 0d 8c 32 0e 2e 78  |I xdonediv..2..x|
000174d0  73 61 6d 70 6c 65 6c 70  0d 8c 3c 14 4c 44 4d 49  |samplelp..<.LDMI|
000174e0  41 20 52 31 2c 7b 52 35  2c 52 36 7d 0d 8c 46 10  |A R1,{R5,R6}..F.|
000174f0  41 44 44 20 52 36 2c 52  36 2c 52 35 0d 8c 50 14  |ADD R6,R6,R5..P.|
00017500  4d 4f 56 20 52 36 2c 52  36 2c 4c 53 52 20 23 31  |MOV R6,R6,LSR #1|
00017510  0d 8c 5a 15 53 54 4d 49  41 20 52 32 21 2c 7b 52  |..Z.STMIA R2!,{R|
00017520  35 2c 52 36 7d 0d 8c 64  10 41 44 44 20 52 31 2c  |5,R6}..d.ADD R1,|
00017530  52 31 2c 23 34 0d 8c 6e  1f 53 55 42 53 20 52 30  |R1,#4..n.SUBS R0|
00017540  2c 52 30 2c 23 32 3a 42  47 54 20 78 73 61 6d 70  |,R0,#2:BGT xsamp|
00017550  6c 65 6c 70 0d 8c 78 0d  2e 78 64 6f 6e 65 64 69  |lelp..x..xdonedi|
00017560  76 0d 8c 82 11 4c 44 4d  49 41 20 52 31 2c 7b 52  |v....LDMIA R1,{R|
00017570  35 7d 0d 8c 8c 0d 4d 4f  56 20 52 36 2c 52 35 0d  |5}....MOV R6,R5.|
00017580  8c 96 15 53 54 4d 49 41  20 52 32 21 2c 7b 52 35  |...STMIA R2!,{R5|
00017590  2c 52 36 7d 0d 8c a0 0f  4d 4f 56 53 20 50 43 2c  |,R6}....MOVS PC,|
000175a0  52 31 34 0d 8c aa 05 5d  0d 8c b4 05 cc 0d 8c be  |R14....]........|
000175b0  0a 5b 4f 50 54 20 5a 0d  8c d2 0d 2e 78 73 61 6d  |.[OPT Z.....xsam|
000175c0  70 6c 65 25 0d 8c dc 1c  4c 44 52 20 52 30 2c 5b  |ple%....LDR R0,[|
000175d0  52 39 5d 3a 4c 44 52 20  52 30 2c 5b 52 30 5d 20  |R9]:LDR R0,[R0] |
000175e0  0d 8c e6 13 4c 44 52 20  52 31 2c 5b 52 39 2c 23  |....LDR R1,[R9,#|
000175f0  38 5d 20 0d 8c f0 15 4c  44 52 20 52 32 2c 5b 52  |8] ....LDR R2,[R|
00017600  39 2c 23 32 2a 38 5d 20  0d 8c fa 21 4c 44 52 20  |9,#2*8] ...!LDR |
00017610  52 33 2c 5b 52 39 2c 23  33 2a 38 5d 3a 4c 44 52  |R3,[R9,#3*8]:LDR|
00017620  20 52 33 2c 5b 52 33 5d  20 0d 8d 04 21 4c 44 52  | R3,[R3] ...!LDR|
00017630  20 52 34 2c 5b 52 39 2c  23 34 2a 38 5d 3a 4c 44  | R4,[R9,#4*8]:LD|
00017640  52 20 52 34 2c 5b 52 34  5d 20 0d 8d 0e 0e 4d 4f  |R R4,[R4] ....MO|
00017650  56 20 52 31 31 2c 52 34  0d 8d 18 0e 2e 78 73 61  |V R11,R4.....xsa|
00017660  6d 70 6c 65 6c 70 0d 8d  22 11 4c 44 4d 49 41 20  |mplelp..".LDMIA |
00017670  52 31 2c 7b 52 35 7d 0d  8d 2c 2c 53 55 42 53 20  |R1,{R5}..,,SUBS |
00017680  52 31 31 2c 52 31 31 2c  23 31 3a ec 51 20 52 31  |R11,R11,#1:.Q R1|
00017690  31 2c 52 34 3a 41 44 44  45 51 20 52 31 2c 52 31  |1,R4:ADDEQ R1,R1|
000176a0  2c 23 34 0d 8d 36 13 53  55 42 53 20 52 31 32 2c  |,#4..6.SUBS R12,|
000176b0  52 33 2c 23 31 20 0d 8d  40 10 42 45 51 20 78 64  |R3,#1 ..@.BEQ xd|
000176c0  6f 6e 65 64 69 76 0d 8d  4a 0b 2e 78 64 69 76 6c  |onediv..J..xdivl|
000176d0  70 0d 8d 54 0f 43 4d 50  20 52 31 32 2c 52 31 31  |p..T.CMP R12,R11|
000176e0  0d 8d 5e 0f 42 43 43 20  78 64 69 76 6c 70 32 0d  |..^.BCC xdivlp2.|
000176f0  8d 68 23 4c 44 4d 49 41  20 52 31 21 2c 7b 52 38  |.h#LDMIA R1!,{R8|
00017700  7d 3a 4d 4c 41 20 52 35  2c 52 38 2c 52 31 31 2c  |}:MLA R5,R8,R11,|
00017710  52 35 0d 8d 72 1f 53 55  42 53 20 52 31 32 2c 52  |R5..r.SUBS R12,R|
00017720  31 32 2c 52 31 31 3a 4d  4f 56 20 52 31 31 2c 52  |12,R11:MOV R11,R|
00017730  34 0d 8d 7c 0e 42 4e 45  20 78 64 69 76 6c 70 0d  |4..|.BNE xdivlp.|
00017740  8d 86 0e 42 20 78 64 6f  6e 65 64 69 76 0d 8d 90  |...B xdonediv...|
00017750  0c 2e 78 64 69 76 6c 70  32 0d 8d 9a 11 4c 44 4d  |..xdivlp2....LDM|
00017760  49 41 20 52 31 2c 7b 52  38 7d 0d 8d a4 2c 53 55  |IA R1,{R8}...,SU|
00017770  42 53 20 52 31 31 2c 52  31 31 2c 23 31 3a ec 51  |BS R11,R11,#1:.Q|
00017780  20 52 31 31 2c 52 34 3a  41 44 44 45 51 20 52 31  | R11,R4:ADDEQ R1|
00017790  2c 52 31 2c 23 34 0d 8d  ae 10 41 44 44 20 52 35  |,R1,#4....ADD R5|
000177a0  2c 52 35 2c 52 38 0d 8d  b8 1e 53 55 42 53 20 52  |,R5,R8....SUBS R|
000177b0  31 32 2c 52 31 32 2c 23  31 3a 42 4e 45 20 78 64  |12,R12,#1:BNE xd|
000177c0  69 76 6c 70 0d 8d c2 0d  2e 78 64 6f 6e 65 64 69  |ivlp.....xdonedi|
000177d0  76 0d 8d cc 12 53 54 4d  49 41 20 52 32 21 2c 7b  |v....STMIA R2!,{|
000177e0  52 35 7d 0d 8d d6 1f 53  55 42 53 20 52 30 2c 52  |R5}....SUBS R0,R|
000177f0  30 2c 23 31 3a 42 50 4c  20 78 73 61 6d 70 6c 65  |0,#1:BPL xsample|
00017800  6c 70 0d 8d e0 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp....MOVS PC,R1|
00017810  34 0d 8d ea 05 5d 0d 8d  f4 05 cd 0d 8d fe 07 c9  |4....]..........|
00017820  20 32 0d 8e 08 0f e7 69  6e 70 75 74 3c 3d 38 20  | 2.....input<=8 |
00017830  8c 0d 8e 12 0a 5b 4f 50  54 20 5a 0d 8e 1c 0d 2e  |.....[OPT Z.....|
00017840  6d 61 70 70 69 78 25 20  0d 8e 26 11 4c 44 52 20  |mappix% ..&.LDR |
00017850  52 30 2c 73 78 6c 6f 63  20 0d 8e 30 1c 4c 44 52  |R0,sxloc ..0.LDR|
00017860  20 52 31 2c 5b 52 39 5d  3a 4c 44 52 20 52 31 2c  | R1,[R9]:LDR R1,|
00017870  5b 52 31 5d 20 0d 8e 3a  15 4c 44 52 20 52 32 2c  |[R1] ..:.LDR R2,|
00017880  5b 52 39 2c 23 33 2a 38  5d 20 0d 8e 44 15 4c 44  |[R9,#3*8] ..D.LD|
00017890  52 20 52 33 2c 5b 52 39  2c 23 32 2a 38 5d 20 0d  |R R3,[R9,#2*8] .|
000178a0  8e 4e 13 4c 44 52 20 52  34 2c 5b 52 39 2c 23 38  |.N.LDR R4,[R9,#8|
000178b0  5d 20 0d 8e 58 15 4c 44  52 20 52 35 2c 5b 52 39  |] ..X.LDR R5,[R9|
000178c0  2c 23 34 2a 38 5d 20 0d  8e 62 0e 4d 4f 56 20 52  |,#4*8] ..b.MOV R|
000178d0  31 30 2c 23 30 0d 8e 6c  0d 2e 6d 61 70 70 69 78  |10,#0..l..mappix|
000178e0  6c 70 0d 8e 76 18 4c 44  52 42 20 52 36 2c 5b 52  |lp..v.LDRB R6,[R|
000178f0  31 5d 2c 23 73 74 65 70  32 34 0d 8e 80 05 5d 0d  |1],#step24....].|
00017900  8e 8a 05 cd 0d 8e 94 0e  c8 8e 20 69 6e 70 75 74  |.......... input|
00017910  20 ca 0d 8e 9e 07 c9 20  38 0d 8e a8 0a e7 68 61  | ...... 8.....ha|
00017920  6d 20 8c 0d 8e b2 0a 5b  4f 50 54 20 5a 0d 8e bc  |m .....[OPT Z...|
00017930  11 41 44 52 20 52 39 2c  6c 74 61 62 6c 65 0d 8e  |.ADR R9,ltable..|
00017940  c6 21 4d 4f 56 53 20 52  37 2c 52 36 2c 4c 53 52  |.!MOVS R7,R6,LSR|
00017950  20 23 34 3a 80 20 52 36  2c 52 36 2c 23 31 35 0d  | #4:. R6,R6,#15.|
00017960  8e d0 4e 4c 44 52 45 51  20 52 31 30 2c 5b 52 32  |..NLDREQ R10,[R2|
00017970  2c 52 36 2c 4c 53 4c 20  23 32 5d 3a 4c 44 52 45  |,R6,LSL #2]:LDRE|
00017980  51 20 52 31 31 2c 5b 52  33 2c 52 36 2c 4c 53 4c  |Q R11,[R3,R6,LSL|
00017990  20 23 32 5d 3a 4c 44 52  45 51 20 52 31 32 2c 5b  | #2]:LDREQ R12,[|
000179a0  52 34 2c 52 36 2c 4c 53  4c 20 23 32 5d 0d 8e da  |R4,R6,LSL #2]...|
000179b0  26 43 4d 50 20 52 37 2c  23 31 3a 4c 44 52 45 51  |&CMP R7,#1:LDREQ|
000179c0  20 52 31 32 2c 5b 52 39  2c 52 36 2c 4c 53 4c 20  | R12,[R9,R6,LSL |
000179d0  23 32 5d 0d 8e e4 26 43  4d 50 20 52 37 2c 23 32  |#2]...&CMP R7,#2|
000179e0  3a 4c 44 52 45 51 20 52  31 30 2c 5b 52 39 2c 52  |:LDREQ R10,[R9,R|
000179f0  36 2c 4c 53 4c 20 23 32  5d 0d 8e ee 26 43 4d 50  |6,LSL #2]...&CMP|
00017a00  20 52 37 2c 23 33 3a 4c  44 52 45 51 20 52 31 31  | R7,#3:LDREQ R11|
00017a10  2c 5b 52 39 2c 52 36 2c  4c 53 4c 20 23 32 5d 0d  |,[R9,R6,LSL #2].|
00017a20  8e f8 1b 53 54 4d 49 41  20 52 35 21 2c 7b 52 31  |...STMIA R5!,{R1|
00017a30  30 2c 52 31 31 2c 52 31  32 7d 0d 8f 02 1e 53 55  |0,R11,R12}....SU|
00017a40  42 53 20 52 30 2c 52 30  2c 23 31 3a 42 4e 45 20  |BS R0,R0,#1:BNE |
00017a50  6d 61 70 70 69 78 6c 70  0d 8f 0c 0f 4d 4f 56 53  |mappixlp....MOVS|
00017a60  20 50 43 2c 52 31 34 0d  8f 16 0b 2e 6c 74 61 62  | PC,R14.....ltab|
00017a70  6c 65 0d 8f 20 05 5d 0d  8f 2a 0c e3 49 25 3d 30  |le.. .]..*..I%=0|
00017a80  b8 31 35 0d 8f 34 0a 5b  4f 50 54 20 5a 0d 8f 3e  |.15..4.[OPT Z..>|
00017a90  10 45 51 55 44 20 49 25  2f 31 35 2a 46 0d 8f 48  |.EQUD I%/15*F..H|
00017aa0  05 5d 0d 8f 52 05 ed 0d  8f 5c 05 cc 0d 8f 66 12  |.]..R....\....f.|
00017ab0  e7 68 70 72 65 64 69 63  74 25 3d 32 20 8c 0d 8f  |.hpredict%=2 ...|
00017ac0  70 0a 5b 4f 50 54 20 5a  0d 8f 7a 11 41 44 44 20  |p.[OPT Z..z.ADD |
00017ad0  52 36 2c 52 36 2c 52 31  30 0d 8f 84 10 80 20 52  |R6,R6,R10..... R|
00017ae0  36 2c 52 36 2c 23 32 35  35 0d 8f 8e 0e 4d 4f 56  |6,R6,#255....MOV|
00017af0  20 52 31 30 2c 52 36 0d  8f 98 05 5d 0d 8f a2 05  | R10,R6....]....|
00017b00  cd 0d 8f ac 0a 5b 4f 50  54 20 5a 0d 8f b6 45 4c  |.....[OPT Z...EL|
00017b10  44 52 20 52 37 2c 5b 52  32 2c 52 36 2c 4c 53 4c  |DR R7,[R2,R6,LSL|
00017b20  20 23 32 5d 3a 4c 44 52  20 52 38 2c 5b 52 33 2c  | #2]:LDR R8,[R3,|
00017b30  52 36 2c 4c 53 4c 20 23  32 5d 3a 4c 44 52 20 52  |R6,LSL #2]:LDR R|
00017b40  39 2c 5b 52 34 2c 52 36  2c 4c 53 4c 20 23 32 5d  |9,[R4,R6,LSL #2]|
00017b50  0d 8f c0 18 53 54 4d 49  41 20 52 35 21 2c 7b 52  |....STMIA R5!,{R|
00017b60  37 2c 52 38 2c 52 39 7d  0d 8f ca 1e 53 55 42 53  |7,R8,R9}....SUBS|
00017b70  20 52 30 2c 52 30 2c 23  31 3a 42 4e 45 20 6d 61  | R0,R0,#1:BNE ma|
00017b80  70 70 69 78 6c 70 0d 8f  d4 0f 4d 4f 56 53 20 50  |ppixlp....MOVS P|
00017b90  43 2c 52 31 34 0d 8f de  05 5d 0d 8f e8 05 cd 0d  |C,R14....]......|
00017ba0  8f f2 07 c9 20 34 0d 8f  fc 14 e7 62 69 67 65 6e  |.... 4.....bigen|
00017bb0  64 69 61 6e 62 69 74 73  20 8c 0d 90 06 0a 5b 4f  |dianbits .....[O|
00017bc0  50 54 20 5a 0d 90 10 15  4d 4f 56 20 52 31 30 2c  |PT Z....MOV R10,|
00017bd0  52 36 2c 4c 53 52 20 23  34 0d 90 1a 48 4c 44 52  |R6,LSR #4...HLDR|
00017be0  20 52 37 2c 5b 52 32 2c  52 31 30 2c 4c 53 4c 20  | R7,[R2,R10,LSL |
00017bf0  23 32 5d 3a 4c 44 52 20  52 38 2c 5b 52 33 2c 52  |#2]:LDR R8,[R3,R|
00017c00  31 30 2c 4c 53 4c 20 23  32 5d 3a 4c 44 52 20 52  |10,LSL #2]:LDR R|
00017c10  39 2c 5b 52 34 2c 52 31  30 2c 4c 53 4c 20 23 32  |9,[R4,R10,LSL #2|
00017c20  5d 0d 90 24 18 53 54 4d  49 41 20 52 35 21 2c 7b  |]..$.STMIA R5!,{|
00017c30  52 37 2c 52 38 2c 52 39  7d 0d 90 2e 10 80 20 52  |R7,R8,R9}..... R|
00017c40  31 30 2c 52 36 2c 23 26  46 0d 90 38 05 5d 0d 90  |10,R6,#&F..8.]..|
00017c50  42 05 cc 0d 90 4c 0a 5b  4f 50 54 20 5a 0d 90 56  |B....L.[OPT Z..V|
00017c60  10 80 20 52 31 30 2c 52  36 2c 23 26 46 0d 90 60  |.. R10,R6,#&F..`|
00017c70  48 4c 44 52 20 52 37 2c  5b 52 32 2c 52 31 30 2c  |HLDR R7,[R2,R10,|
00017c80  4c 53 4c 20 23 32 5d 3a  4c 44 52 20 52 38 2c 5b  |LSL #2]:LDR R8,[|
00017c90  52 33 2c 52 31 30 2c 4c  53 4c 20 23 32 5d 3a 4c  |R3,R10,LSL #2]:L|
00017ca0  44 52 20 52 39 2c 5b 52  34 2c 52 31 30 2c 4c 53  |DR R9,[R4,R10,LS|
00017cb0  4c 20 23 32 5d 0d 90 6a  18 53 54 4d 49 41 20 52  |L #2]..j.STMIA R|
00017cc0  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 90 74  |5!,{R7,R8,R9}..t|
00017cd0  15 4d 4f 56 20 52 31 30  2c 52 36 2c 4c 53 52 20  |.MOV R10,R6,LSR |
00017ce0  23 34 0d 90 7e 05 5d 0d  90 88 05 cd 0d 90 92 0a  |#4..~.].........|
00017cf0  5b 4f 50 54 20 5a 0d 90  9c 48 4c 44 52 20 52 37  |[OPT Z...HLDR R7|
00017d00  2c 5b 52 32 2c 52 31 30  2c 4c 53 4c 20 23 32 5d  |,[R2,R10,LSL #2]|
00017d10  3a 4c 44 52 20 52 38 2c  5b 52 33 2c 52 31 30 2c  |:LDR R8,[R3,R10,|
00017d20  4c 53 4c 20 23 32 5d 3a  4c 44 52 20 52 39 2c 5b  |LSL #2]:LDR R9,[|
00017d30  52 34 2c 52 31 30 2c 4c  53 4c 20 23 32 5d 0d 90  |R4,R10,LSL #2]..|
00017d40  a6 18 53 54 4d 49 41 20  52 35 21 2c 7b 52 37 2c  |..STMIA R5!,{R7,|
00017d50  52 38 2c 52 39 7d 0d 90  b0 1e 53 55 42 53 20 52  |R8,R9}....SUBS R|
00017d60  30 2c 52 30 2c 23 32 3a  42 48 49 20 6d 61 70 70  |0,R0,#2:BHI mapp|
00017d70  69 78 6c 70 0d 90 ba 0f  4d 4f 56 53 20 50 43 2c  |ixlp....MOVS PC,|
00017d80  52 31 34 0d 90 c4 05 5d  0d 90 ce 07 c9 20 32 0d  |R14....]..... 2.|
00017d90  90 d8 14 e7 62 69 67 65  6e 64 69 61 6e 62 69 74  |....bigendianbit|
00017da0  73 20 8c 0d 90 e2 0a 5b  4f 50 54 20 5a 0d 90 ec  |s .....[OPT Z...|
00017db0  15 4d 4f 56 20 52 31 30  2c 52 36 2c 4c 53 52 20  |.MOV R10,R6,LSR |
00017dc0  23 36 0d 90 f6 48 4c 44  52 20 52 37 2c 5b 52 32  |#6...HLDR R7,[R2|
00017dd0  2c 52 31 30 2c 4c 53 4c  20 23 32 5d 3a 4c 44 52  |,R10,LSL #2]:LDR|
00017de0  20 52 38 2c 5b 52 33 2c  52 31 30 2c 4c 53 4c 20  | R8,[R3,R10,LSL |
00017df0  23 32 5d 3a 4c 44 52 20  52 39 2c 5b 52 34 2c 52  |#2]:LDR R9,[R4,R|
00017e00  31 30 2c 4c 53 4c 20 23  32 5d 0d 91 00 18 53 54  |10,LSL #2]....ST|
00017e10  4d 49 41 20 52 35 21 2c  7b 52 37 2c 52 38 2c 52  |MIA R5!,{R7,R8,R|
00017e20  39 7d 0d 91 0a 11 80 20  52 31 30 2c 52 36 2c 23  |9}..... R10,R6,#|
00017e30  26 33 30 0d 91 14 48 4c  44 52 20 52 37 2c 5b 52  |&30...HLDR R7,[R|
00017e40  32 2c 52 31 30 2c 4c 53  52 20 23 32 5d 3a 4c 44  |2,R10,LSR #2]:LD|
00017e50  52 20 52 38 2c 5b 52 33  2c 52 31 30 2c 4c 53 52  |R R8,[R3,R10,LSR|
00017e60  20 23 32 5d 3a 4c 44 52  20 52 39 2c 5b 52 34 2c  | #2]:LDR R9,[R4,|
00017e70  52 31 30 2c 4c 53 52 20  23 32 5d 0d 91 1e 18 53  |R10,LSR #2]....S|
00017e80  54 4d 49 41 20 52 35 21  2c 7b 52 37 2c 52 38 2c  |TMIA R5!,{R7,R8,|
00017e90  52 39 7d 0d 91 28 10 80  20 52 31 30 2c 52 36 2c  |R9}..(.. R10,R6,|
00017ea0  23 26 43 0d 91 32 33 4c  44 52 20 52 37 2c 5b 52  |#&C..23LDR R7,[R|
00017eb0  32 2c 52 31 30 5d 3a 4c  44 52 20 52 38 2c 5b 52  |2,R10]:LDR R8,[R|
00017ec0  33 2c 52 31 30 5d 3a 4c  44 52 20 52 39 2c 5b 52  |3,R10]:LDR R9,[R|
00017ed0  34 2c 52 31 30 5d 0d 91  3c 18 53 54 4d 49 41 20  |4,R10]..<.STMIA |
00017ee0  52 35 21 2c 7b 52 37 2c  52 38 2c 52 39 7d 0d 91  |R5!,{R7,R8,R9}..|
00017ef0  46 10 80 20 52 31 30 2c  52 36 2c 23 26 33 0d 91  |F.. R10,R6,#&3..|
00017f00  50 05 5d 0d 91 5a 05 cc  0d 91 64 0a 5b 4f 50 54  |P.]..Z....d.[OPT|
00017f10  20 5a 0d 91 6e 10 80 20  52 31 30 2c 52 36 2c 23  | Z..n.. R10,R6,#|
00017f20  26 33 0d 91 78 48 4c 44  52 20 52 37 2c 5b 52 32  |&3..xHLDR R7,[R2|
00017f30  2c 52 31 30 2c 4c 53 4c  20 23 32 5d 3a 4c 44 52  |,R10,LSL #2]:LDR|
00017f40  20 52 38 2c 5b 52 33 2c  52 31 30 2c 4c 53 4c 20  | R8,[R3,R10,LSL |
00017f50  23 32 5d 3a 4c 44 52 20  52 39 2c 5b 52 34 2c 52  |#2]:LDR R9,[R4,R|
00017f60  31 30 2c 4c 53 4c 20 23  32 5d 0d 91 82 18 53 54  |10,LSL #2]....ST|
00017f70  4d 49 41 20 52 35 21 2c  7b 52 37 2c 52 38 2c 52  |MIA R5!,{R7,R8,R|
00017f80  39 7d 0d 91 8c 10 80 20  52 31 30 2c 52 36 2c 23  |9}..... R10,R6,#|
00017f90  26 43 0d 91 96 33 4c 44  52 20 52 37 2c 5b 52 32  |&C...3LDR R7,[R2|
00017fa0  2c 52 31 30 5d 3a 4c 44  52 20 52 38 2c 5b 52 33  |,R10]:LDR R8,[R3|
00017fb0  2c 52 31 30 5d 3a 4c 44  52 20 52 39 2c 5b 52 34  |,R10]:LDR R9,[R4|
00017fc0  2c 52 31 30 5d 0d 91 a0  18 53 54 4d 49 41 20 52  |,R10]....STMIA R|
00017fd0  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 91 aa  |5!,{R7,R8,R9}...|
00017fe0  11 80 20 52 31 30 2c 52  36 2c 23 26 33 30 0d 91  |.. R10,R6,#&30..|
00017ff0  b4 48 4c 44 52 20 52 37  2c 5b 52 32 2c 52 31 30  |.HLDR R7,[R2,R10|
00018000  2c 4c 53 52 20 23 32 5d  3a 4c 44 52 20 52 38 2c  |,LSR #2]:LDR R8,|
00018010  5b 52 33 2c 52 31 30 2c  4c 53 52 20 23 32 5d 3a  |[R3,R10,LSR #2]:|
00018020  4c 44 52 20 52 39 2c 5b  52 34 2c 52 31 30 2c 4c  |LDR R9,[R4,R10,L|
00018030  53 52 20 23 32 5d 0d 91  be 18 53 54 4d 49 41 20  |SR #2]....STMIA |
00018040  52 35 21 2c 7b 52 37 2c  52 38 2c 52 39 7d 0d 91  |R5!,{R7,R8,R9}..|
00018050  c8 15 4d 4f 56 20 52 31  30 2c 52 36 2c 4c 53 52  |..MOV R10,R6,LSR|
00018060  20 23 36 0d 91 d2 05 5d  0d 91 dc 05 cd 0d 91 e6  | #6....]........|
00018070  0a 5b 4f 50 54 20 5a 0d  91 f0 48 4c 44 52 20 52  |.[OPT Z...HLDR R|
00018080  37 2c 5b 52 32 2c 52 31  30 2c 4c 53 4c 20 23 32  |7,[R2,R10,LSL #2|
00018090  5d 3a 4c 44 52 20 52 38  2c 5b 52 33 2c 52 31 30  |]:LDR R8,[R3,R10|
000180a0  2c 4c 53 4c 20 23 32 5d  3a 4c 44 52 20 52 39 2c  |,LSL #2]:LDR R9,|
000180b0  5b 52 34 2c 52 31 30 2c  4c 53 4c 20 23 32 5d 0d  |[R4,R10,LSL #2].|
000180c0  91 fa 18 53 54 4d 49 41  20 52 35 21 2c 7b 52 37  |...STMIA R5!,{R7|
000180d0  2c 52 38 2c 52 39 7d 0d  92 04 1e 53 55 42 53 20  |,R8,R9}....SUBS |
000180e0  52 30 2c 52 30 2c 23 34  3a 42 48 49 20 6d 61 70  |R0,R0,#4:BHI map|
000180f0  70 69 78 6c 70 0d 92 0e  0f 4d 4f 56 53 20 50 43  |pixlp....MOVS PC|
00018100  2c 52 31 34 0d 92 18 05  5d 0d 92 22 07 c9 20 31  |,R14....]..".. 1|
00018110  0d 92 2c 14 e7 62 69 67  65 6e 64 69 61 6e 62 69  |..,..bigendianbi|
00018120  74 73 20 8c 0d 92 36 0a  5b 4f 50 54 20 5a 0d 92  |ts ...6.[OPT Z..|
00018130  40 11 80 20 52 31 30 2c  52 36 2c 23 26 38 30 0d  |@.. R10,R6,#&80.|
00018140  92 4a 48 4c 44 52 20 52  37 2c 5b 52 32 2c 52 31  |.JHLDR R7,[R2,R1|
00018150  30 2c 4c 53 52 20 23 35  5d 3a 4c 44 52 20 52 38  |0,LSR #5]:LDR R8|
00018160  2c 5b 52 33 2c 52 31 30  2c 4c 53 52 20 23 35 5d  |,[R3,R10,LSR #5]|
00018170  3a 4c 44 52 20 52 39 2c  5b 52 34 2c 52 31 30 2c  |:LDR R9,[R4,R10,|
00018180  4c 53 52 20 23 35 5d 0d  92 54 18 53 54 4d 49 41  |LSR #5]..T.STMIA|
00018190  20 52 35 21 2c 7b 52 37  2c 52 38 2c 52 39 7d 0d  | R5!,{R7,R8,R9}.|
000181a0  92 5e 11 80 20 52 31 30  2c 52 36 2c 23 26 34 30  |.^.. R10,R6,#&40|
000181b0  0d 92 68 48 4c 44 52 20  52 37 2c 5b 52 32 2c 52  |..hHLDR R7,[R2,R|
000181c0  31 30 2c 4c 53 52 20 23  34 5d 3a 4c 44 52 20 52  |10,LSR #4]:LDR R|
000181d0  38 2c 5b 52 33 2c 52 31  30 2c 4c 53 52 20 23 34  |8,[R3,R10,LSR #4|
000181e0  5d 3a 4c 44 52 20 52 39  2c 5b 52 34 2c 52 31 30  |]:LDR R9,[R4,R10|
000181f0  2c 4c 53 52 20 23 34 5d  0d 92 72 18 53 54 4d 49  |,LSR #4]..r.STMI|
00018200  41 20 52 35 21 2c 7b 52  37 2c 52 38 2c 52 39 7d  |A R5!,{R7,R8,R9}|
00018210  0d 92 7c 11 80 20 52 31  30 2c 52 36 2c 23 26 32  |..|.. R10,R6,#&2|
00018220  30 0d 92 86 48 4c 44 52  20 52 37 2c 5b 52 32 2c  |0...HLDR R7,[R2,|
00018230  52 31 30 2c 4c 53 52 20  23 33 5d 3a 4c 44 52 20  |R10,LSR #3]:LDR |
00018240  52 38 2c 5b 52 33 2c 52  31 30 2c 4c 53 52 20 23  |R8,[R3,R10,LSR #|
00018250  33 5d 3a 4c 44 52 20 52  39 2c 5b 52 34 2c 52 31  |3]:LDR R9,[R4,R1|
00018260  30 2c 4c 53 52 20 23 33  5d 0d 92 90 18 53 54 4d  |0,LSR #3]....STM|
00018270  49 41 20 52 35 21 2c 7b  52 37 2c 52 38 2c 52 39  |IA R5!,{R7,R8,R9|
00018280  7d 0d 92 9a 11 80 20 52  31 30 2c 52 36 2c 23 26  |}..... R10,R6,#&|
00018290  31 30 0d 92 a4 48 4c 44  52 20 52 37 2c 5b 52 32  |10...HLDR R7,[R2|
000182a0  2c 52 31 30 2c 4c 53 52  20 23 32 5d 3a 4c 44 52  |,R10,LSR #2]:LDR|
000182b0  20 52 38 2c 5b 52 33 2c  52 31 30 2c 4c 53 52 20  | R8,[R3,R10,LSR |
000182c0  23 32 5d 3a 4c 44 52 20  52 39 2c 5b 52 34 2c 52  |#2]:LDR R9,[R4,R|
000182d0  31 30 2c 4c 53 52 20 23  32 5d 0d 92 ae 18 53 54  |10,LSR #2]....ST|
000182e0  4d 49 41 20 52 35 21 2c  7b 52 37 2c 52 38 2c 52  |MIA R5!,{R7,R8,R|
000182f0  39 7d 0d 92 b8 10 80 20  52 31 30 2c 52 36 2c 23  |9}..... R10,R6,#|
00018300  26 38 0d 92 c2 48 4c 44  52 20 52 37 2c 5b 52 32  |&8...HLDR R7,[R2|
00018310  2c 52 31 30 2c 4c 53 52  20 23 31 5d 3a 4c 44 52  |,R10,LSR #1]:LDR|
00018320  20 52 38 2c 5b 52 33 2c  52 31 30 2c 4c 53 52 20  | R8,[R3,R10,LSR |
00018330  23 31 5d 3a 4c 44 52 20  52 39 2c 5b 52 34 2c 52  |#1]:LDR R9,[R4,R|
00018340  31 30 2c 4c 53 52 20 23  31 5d 0d 92 cc 18 53 54  |10,LSR #1]....ST|
00018350  4d 49 41 20 52 35 21 2c  7b 52 37 2c 52 38 2c 52  |MIA R5!,{R7,R8,R|
00018360  39 7d 0d 92 d6 10 80 20  52 31 30 2c 52 36 2c 23  |9}..... R10,R6,#|
00018370  26 34 0d 92 e0 33 4c 44  52 20 52 37 2c 5b 52 32  |&4...3LDR R7,[R2|
00018380  2c 52 31 30 5d 3a 4c 44  52 20 52 38 2c 5b 52 33  |,R10]:LDR R8,[R3|
00018390  2c 52 31 30 5d 3a 4c 44  52 20 52 39 2c 5b 52 34  |,R10]:LDR R9,[R4|
000183a0  2c 52 31 30 5d 0d 92 ea  18 53 54 4d 49 41 20 52  |,R10]....STMIA R|
000183b0  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 92 f4  |5!,{R7,R8,R9}...|
000183c0  10 80 20 52 31 30 2c 52  36 2c 23 26 32 0d 92 fe  |.. R10,R6,#&2...|
000183d0  48 4c 44 52 20 52 37 2c  5b 52 32 2c 52 31 30 2c  |HLDR R7,[R2,R10,|
000183e0  4c 53 4c 20 23 31 5d 3a  4c 44 52 20 52 38 2c 5b  |LSL #1]:LDR R8,[|
000183f0  52 33 2c 52 31 30 2c 4c  53 4c 20 23 31 5d 3a 4c  |R3,R10,LSL #1]:L|
00018400  44 52 20 52 39 2c 5b 52  34 2c 52 31 30 2c 4c 53  |DR R9,[R4,R10,LS|
00018410  4c 20 23 31 5d 0d 93 08  18 53 54 4d 49 41 20 52  |L #1]....STMIA R|
00018420  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 93 12  |5!,{R7,R8,R9}...|
00018430  10 80 20 52 31 30 2c 52  36 2c 23 26 31 0d 93 1c  |.. R10,R6,#&1...|
00018440  05 5d 0d 93 26 05 cc 0d  93 30 0a 5b 4f 50 54 20  |.]..&....0.[OPT |
00018450  5a 0d 93 3a 10 80 20 52  31 30 2c 52 36 2c 23 26  |Z..:.. R10,R6,#&|
00018460  31 0d 93 44 48 4c 44 52  20 52 37 2c 5b 52 32 2c  |1..DHLDR R7,[R2,|
00018470  52 31 30 2c 4c 53 4c 20  23 32 5d 3a 4c 44 52 20  |R10,LSL #2]:LDR |
00018480  52 38 2c 5b 52 33 2c 52  31 30 2c 4c 53 4c 20 23  |R8,[R3,R10,LSL #|
00018490  32 5d 3a 4c 44 52 20 52  39 2c 5b 52 34 2c 52 31  |2]:LDR R9,[R4,R1|
000184a0  30 2c 4c 53 4c 20 23 32  5d 0d 93 4e 18 53 54 4d  |0,LSL #2]..N.STM|
000184b0  49 41 20 52 35 21 2c 7b  52 37 2c 52 38 2c 52 39  |IA R5!,{R7,R8,R9|
000184c0  7d 0d 93 58 10 80 20 52  31 30 2c 52 36 2c 23 26  |}..X.. R10,R6,#&|
000184d0  32 0d 93 62 48 4c 44 52  20 52 37 2c 5b 52 32 2c  |2..bHLDR R7,[R2,|
000184e0  52 31 30 2c 4c 53 4c 20  23 31 5d 3a 4c 44 52 20  |R10,LSL #1]:LDR |
000184f0  52 38 2c 5b 52 33 2c 52  31 30 2c 4c 53 4c 20 23  |R8,[R3,R10,LSL #|
00018500  31 5d 3a 4c 44 52 20 52  39 2c 5b 52 34 2c 52 31  |1]:LDR R9,[R4,R1|
00018510  30 2c 4c 53 4c 20 23 31  5d 0d 93 6c 18 53 54 4d  |0,LSL #1]..l.STM|
00018520  49 41 20 52 35 21 2c 7b  52 37 2c 52 38 2c 52 39  |IA R5!,{R7,R8,R9|
00018530  7d 0d 93 76 10 80 20 52  31 30 2c 52 36 2c 23 26  |}..v.. R10,R6,#&|
00018540  34 0d 93 80 33 4c 44 52  20 52 37 2c 5b 52 32 2c  |4...3LDR R7,[R2,|
00018550  52 31 30 5d 3a 4c 44 52  20 52 38 2c 5b 52 33 2c  |R10]:LDR R8,[R3,|
00018560  52 31 30 5d 3a 4c 44 52  20 52 39 2c 5b 52 34 2c  |R10]:LDR R9,[R4,|
00018570  52 31 30 5d 0d 93 8a 18  53 54 4d 49 41 20 52 35  |R10]....STMIA R5|
00018580  21 2c 7b 52 37 2c 52 38  2c 52 39 7d 0d 93 94 10  |!,{R7,R8,R9}....|
00018590  80 20 52 31 30 2c 52 36  2c 23 26 38 0d 93 9e 48  |. R10,R6,#&8...H|
000185a0  4c 44 52 20 52 37 2c 5b  52 32 2c 52 31 30 2c 4c  |LDR R7,[R2,R10,L|
000185b0  53 52 20 23 31 5d 3a 4c  44 52 20 52 38 2c 5b 52  |SR #1]:LDR R8,[R|
000185c0  33 2c 52 31 30 2c 4c 53  52 20 23 31 5d 3a 4c 44  |3,R10,LSR #1]:LD|
000185d0  52 20 52 39 2c 5b 52 34  2c 52 31 30 2c 4c 53 52  |R R9,[R4,R10,LSR|
000185e0  20 23 31 5d 0d 93 a8 18  53 54 4d 49 41 20 52 35  | #1]....STMIA R5|
000185f0  21 2c 7b 52 37 2c 52 38  2c 52 39 7d 0d 93 b2 11  |!,{R7,R8,R9}....|
00018600  80 20 52 31 30 2c 52 36  2c 23 26 31 30 0d 93 bc  |. R10,R6,#&10...|
00018610  48 4c 44 52 20 52 37 2c  5b 52 32 2c 52 31 30 2c  |HLDR R7,[R2,R10,|
00018620  4c 53 52 20 23 32 5d 3a  4c 44 52 20 52 38 2c 5b  |LSR #2]:LDR R8,[|
00018630  52 33 2c 52 31 30 2c 4c  53 52 20 23 32 5d 3a 4c  |R3,R10,LSR #2]:L|
00018640  44 52 20 52 39 2c 5b 52  34 2c 52 31 30 2c 4c 53  |DR R9,[R4,R10,LS|
00018650  52 20 23 32 5d 0d 93 c6  18 53 54 4d 49 41 20 52  |R #2]....STMIA R|
00018660  35 21 2c 7b 52 37 2c 52  38 2c 52 39 7d 0d 93 d0  |5!,{R7,R8,R9}...|
00018670  11 80 20 52 31 30 2c 52  36 2c 23 26 32 30 0d 93  |.. R10,R6,#&20..|
00018680  da 48 4c 44 52 20 52 37  2c 5b 52 32 2c 52 31 30  |.HLDR R7,[R2,R10|
00018690  2c 4c 53 52 20 23 33 5d  3a 4c 44 52 20 52 38 2c  |,LSR #3]:LDR R8,|
000186a0  5b 52 33 2c 52 31 30 2c  4c 53 52 20 23 33 5d 3a  |[R3,R10,LSR #3]:|
000186b0  4c 44 52 20 52 39 2c 5b  52 34 2c 52 31 30 2c 4c  |LDR R9,[R4,R10,L|
000186c0  53 52 20 23 33 5d 0d 93  e4 18 53 54 4d 49 41 20  |SR #3]....STMIA |
000186d0  52 35 21 2c 7b 52 37 2c  52 38 2c 52 39 7d 0d 93  |R5!,{R7,R8,R9}..|
000186e0  ee 11 80 20 52 31 30 2c  52 36 2c 23 26 34 30 0d  |... R10,R6,#&40.|
000186f0  93 f8 48 4c 44 52 20 52  37 2c 5b 52 32 2c 52 31  |..HLDR R7,[R2,R1|
00018700  30 2c 4c 53 52 20 23 34  5d 3a 4c 44 52 20 52 38  |0,LSR #4]:LDR R8|
00018710  2c 5b 52 33 2c 52 31 30  2c 4c 53 52 20 23 34 5d  |,[R3,R10,LSR #4]|
00018720  3a 4c 44 52 20 52 39 2c  5b 52 34 2c 52 31 30 2c  |:LDR R9,[R4,R10,|
00018730  4c 53 52 20 23 34 5d 0d  94 02 18 53 54 4d 49 41  |LSR #4]....STMIA|
00018740  20 52 35 21 2c 7b 52 37  2c 52 38 2c 52 39 7d 0d  | R5!,{R7,R8,R9}.|
00018750  94 0c 15 4d 4f 56 20 52  31 30 2c 52 36 2c 4c 53  |...MOV R10,R6,LS|
00018760  52 20 23 37 0d 94 16 05  5d 0d 94 20 05 cd 0d 94  |R #7....].. ....|
00018770  2a 0a 5b 4f 50 54 20 5a  0d 94 34 48 4c 44 52 20  |*.[OPT Z..4HLDR |
00018780  52 37 2c 5b 52 32 2c 52  31 30 2c 4c 53 4c 20 23  |R7,[R2,R10,LSL #|
00018790  32 5d 3a 4c 44 52 20 52  38 2c 5b 52 33 2c 52 31  |2]:LDR R8,[R3,R1|
000187a0  30 2c 4c 53 4c 20 23 32  5d 3a 4c 44 52 20 52 39  |0,LSL #2]:LDR R9|
000187b0  2c 5b 52 34 2c 52 31 30  2c 4c 53 4c 20 23 32 5d  |,[R4,R10,LSL #2]|
000187c0  0d 94 3e 18 53 54 4d 49  41 20 52 35 21 2c 7b 52  |..>.STMIA R5!,{R|
000187d0  37 2c 52 38 2c 52 39 7d  0d 94 48 1e 53 55 42 53  |7,R8,R9}..H.SUBS|
000187e0  20 52 30 2c 52 30 2c 23  38 3a 42 48 49 20 6d 61  | R0,R0,#8:BHI ma|
000187f0  70 70 69 78 6c 70 0d 94  52 0f 4d 4f 56 53 20 50  |ppixlp..R.MOVS P|
00018800  43 2c 52 31 34 0d 94 5c  05 5d 0d 94 66 08 c9 20  |C,R14..\.]..f.. |
00018810  31 36 0d 94 70 0a 5b 4f  50 54 20 5a 0d 94 7a 0d  |16..p.[OPT Z..z.|
00018820  2e 6d 61 70 70 69 78 25  20 0d 94 84 11 4c 44 52  |.mappix% ....LDR|
00018830  20 52 30 2c 73 78 6c 6f  63 20 0d 94 8e 1c 4c 44  | R0,sxloc ....LD|
00018840  52 20 52 31 2c 5b 52 39  5d 3a 4c 44 52 20 52 31  |R R1,[R9]:LDR R1|
00018850  2c 5b 52 31 5d 20 0d 94  98 1f 4c 44 52 20 52 32  |,[R1] ....LDR R2|
00018860  2c 5b 52 39 2c 23 38 5d  3a 4c 44 52 20 52 32 2c  |,[R9,#8]:LDR R2,|
00018870  5b 52 32 5d 20 0d 94 a2  15 4c 44 52 20 52 33 2c  |[R2] ....LDR R3,|
00018880  5b 52 39 2c 23 34 2a 38  5d 20 0d 94 ac 15 4c 44  |[R9,#4*8] ....LD|
00018890  52 20 52 34 2c 5b 52 39  2c 23 33 2a 38 5d 20 0d  |R R4,[R9,#3*8] .|
000188a0  94 b6 15 4c 44 52 20 52  35 2c 5b 52 39 2c 23 32  |...LDR R5,[R9,#2|
000188b0  2a 38 5d 20 0d 94 c0 15  4c 44 52 20 52 36 2c 5b  |*8] ....LDR R6,[|
000188c0  52 39 2c 23 35 2a 38 5d  20 0d 94 ca 15 4c 44 52  |R9,#5*8] ....LDR|
000188d0  20 52 37 2c 5b 52 39 2c  23 36 2a 38 5d 20 0d 94  | R7,[R9,#6*8] ..|
000188e0  d4 15 4c 44 52 20 52 38  2c 5b 52 39 2c 23 37 2a  |..LDR R8,[R9,#7*|
000188f0  38 5d 20 0d 94 de 0d 43  4d 50 20 52 31 2c 52 32  |8] ....CMP R1,R2|
00018900  0d 94 e8 12 41 44 44 45  51 20 52 32 2c 52 32 2c  |....ADDEQ R2,R2,|
00018910  23 31 0d 94 f2 0d 2e 6d  61 70 70 69 78 6c 70 0d  |#1.....mappixlp.|
00018920  94 fc 2e 4c 44 52 42 20  52 39 2c 5b 52 31 5d 2c  |...LDRB R9,[R1],|
00018930  23 73 74 65 70 32 34 3a  4c 44 52 42 20 52 31 30  |#step24:LDRB R10|
00018940  2c 5b 52 32 5d 2c 23 73  74 65 70 32 34 0d 95 06  |,[R2],#step24...|
00018950  3e 4c 44 52 20 52 39 2c  5b 52 36 2c 52 39 2c 4c  |>LDR R9,[R6,R9,L|
00018960  53 4c 20 23 32 5d 3a 4c  44 52 20 52 31 30 2c 5b  |SL #2]:LDR R10,[|
00018970  52 37 2c 52 31 30 2c 4c  53 4c 20 23 32 5d 3a 84  |R7,R10,LSL #2]:.|
00018980  52 20 52 39 2c 52 39 2c  52 31 30 0d 95 10 29 80  |R R9,R9,R10...).|
00018990  20 52 31 30 2c 52 39 2c  23 32 35 35 3a 4c 44 52  | R10,R9,#255:LDR|
000189a0  20 52 31 30 2c 5b 52 33  2c 52 31 30 2c 4c 53 4c  | R10,[R3,R10,LSL|
000189b0  20 23 32 5d 0d 95 1a 3c  4d 4f 56 20 52 31 31 2c  | #2]...<MOV R11,|
000189c0  52 39 2c 4c 53 52 20 23  38 3a 80 20 52 31 31 2c  |R9,LSR #8:. R11,|
000189d0  52 31 31 2c 23 32 35 35  3a 4c 44 52 20 52 31 31  |R11,#255:LDR R11|
000189e0  2c 5b 52 34 2c 52 31 31  2c 4c 53 4c 20 23 32 5d  |,[R4,R11,LSL #2]|
000189f0  0d 95 24 2e 4d 4f 56 20  52 31 32 2c 52 39 2c 4c  |..$.MOV R12,R9,L|
00018a00  53 52 20 23 31 36 3a 4c  44 52 20 52 31 32 2c 5b  |SR #16:LDR R12,[|
00018a10  52 35 2c 52 31 32 2c 4c  53 4c 20 23 32 5d 0d 95  |R5,R12,LSL #2]..|
00018a20  2e 1b 53 54 4d 49 41 20  52 38 21 2c 7b 52 31 30  |..STMIA R8!,{R10|
00018a30  2c 52 31 31 2c 52 31 32  7d 0d 95 38 1e 53 55 42  |,R11,R12}..8.SUB|
00018a40  53 20 52 30 2c 52 30 2c  23 31 3a 42 4e 45 20 6d  |S R0,R0,#1:BNE m|
00018a50  61 70 70 69 78 6c 70 0d  95 42 0f 4d 4f 56 53 20  |appixlp..B.MOVS |
00018a60  50 43 2c 52 31 34 0d 95  4c 05 5d 0d 95 56 08 c9  |PC,R14..L.]..V..|
00018a70  20 32 34 0d 95 60 0a 5b  4f 50 54 20 5a 0d 95 6a  | 24..`.[OPT Z..j|
00018a80  0d 2e 6d 61 70 70 69 78  25 20 0d 95 74 11 4c 44  |..mappix% ..t.LD|
00018a90  52 20 52 30 2c 73 78 6c  6f 63 20 0d 95 7e 21 4c  |R R0,sxloc ..~!L|
00018aa0  44 52 20 52 31 2c 5b 52  39 2c 23 32 2a 38 5d 3a  |DR R1,[R9,#2*8]:|
00018ab0  4c 44 52 20 52 31 2c 5b  52 31 5d 20 0d 95 88 1f  |LDR R1,[R1] ....|
00018ac0  4c 44 52 20 52 32 2c 5b  52 39 2c 23 38 5d 3a 4c  |LDR R2,[R9,#8]:L|
00018ad0  44 52 20 52 32 2c 5b 52  32 5d 20 0d 95 92 1c 4c  |DR R2,[R2] ....L|
00018ae0  44 52 20 52 33 2c 5b 52  39 5d 3a 4c 44 52 20 52  |DR R3,[R9]:LDR R|
00018af0  33 2c 5b 52 33 5d 20 0d  95 9c 15 4c 44 52 20 52  |3,[R3] ....LDR R|
00018b00  34 2c 5b 52 39 2c 23 35  2a 38 5d 20 0d 95 a6 15  |4,[R9,#5*8] ....|
00018b10  4c 44 52 20 52 35 2c 5b  52 39 2c 23 34 2a 38 5d  |LDR R5,[R9,#4*8]|
00018b20  20 0d 95 b0 15 4c 44 52  20 52 36 2c 5b 52 39 2c  | ....LDR R6,[R9,|
00018b30  23 33 2a 38 5d 20 0d 95  ba 15 4c 44 52 20 52 37  |#3*8] ....LDR R7|
00018b40  2c 5b 52 39 2c 23 36 2a  38 5d 20 0d 95 c4 14 53  |,[R9,#6*8] ....S|
00018b50  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
00018b60  95 ce 24 4d 4f 56 20 72  31 31 2c 23 30 3a 4d 4f  |..$MOV r11,#0:MO|
00018b70  56 20 52 31 32 2c 23 30  3a 4d 4f 56 20 52 31 34  |V R12,#0:MOV R14|
00018b80  2c 23 30 0d 95 d8 0d 2e  6d 61 70 70 69 78 6c 70  |,#0.....mappixlp|
00018b90  0d 95 e2 43 4c 44 52 42  20 52 38 2c 5b 52 31 5d  |...CLDRB R8,[R1]|
00018ba0  2c 23 73 74 65 70 32 34  3a 4c 44 52 42 20 52 39  |,#step24:LDRB R9|
00018bb0  2c 5b 52 32 5d 2c 23 73  74 65 70 32 34 3a 4c 44  |,[R2],#step24:LD|
00018bc0  52 42 20 52 31 30 2c 5b  52 33 5d 2c 23 73 74 65  |RB R10,[R3],#ste|
00018bd0  70 32 34 0d 95 ec 05 5d  0d 95 f6 12 e7 68 70 72  |p24....].....hpr|
00018be0  65 64 69 63 74 25 3d 32  20 8c 0d 96 00 0a 5b 4f  |edict%=2 .....[O|
00018bf0  50 54 20 5a 0d 96 0a 11  41 44 44 20 72 38 2c 72  |PT Z....ADD r8,r|
00018c00  38 2c 72 31 31 0d 96 14  10 80 20 72 38 2c 72 38  |8,r11..... r8,r8|
00018c10  2c 23 32 35 35 0d 96 1e  0e 4d 4f 56 20 72 31 31  |,#255....MOV r11|
00018c20  2c 72 38 0d 96 28 11 41  44 44 20 72 39 2c 72 39  |,r8..(.ADD r9,r9|
00018c30  2c 72 31 32 0d 96 32 10  80 20 72 39 2c 72 39 2c  |,r12..2.. r9,r9,|
00018c40  23 32 35 35 0d 96 3c 0e  4d 4f 56 20 72 31 32 2c  |#255..<.MOV r12,|
00018c50  72 39 0d 96 46 13 41 44  44 20 72 31 30 2c 72 31  |r9..F.ADD r10,r1|
00018c60  30 2c 72 31 34 0d 96 50  12 80 20 72 31 30 2c 72  |0,r14..P.. r10,r|
00018c70  31 30 2c 23 32 35 35 0d  96 5a 0f 4d 4f 56 20 72  |10,#255..Z.MOV r|
00018c80  31 34 2c 72 31 30 0d 96  64 05 5d 0d 96 6e 05 cd  |14,r10..d.]..n..|
00018c90  0d 96 78 0a 5b 4f 50 54  20 5a 0d 96 82 47 4c 44  |..x.[OPT Z...GLD|
00018ca0  52 20 52 38 2c 5b 52 34  2c 52 38 2c 4c 53 4c 20  |R R8,[R4,R8,LSL |
00018cb0  23 32 5d 3a 4c 44 52 20  52 39 2c 5b 52 35 2c 52  |#2]:LDR R9,[R5,R|
00018cc0  39 2c 4c 53 4c 20 23 32  5d 3a 4c 44 52 20 52 31  |9,LSL #2]:LDR R1|
00018cd0  30 2c 5b 52 36 2c 52 31  30 2c 4c 53 4c 20 23 32  |0,[R6,R10,LSL #2|
00018ce0  5d 0d 96 8c 19 53 54 4d  49 41 20 52 37 21 2c 7b  |]....STMIA R7!,{|
00018cf0  52 38 2c 52 39 2c 52 31  30 7d 0d 96 96 1e 53 55  |R8,R9,R10}....SU|
00018d00  42 53 20 52 30 2c 52 30  2c 23 31 3a 42 4e 45 20  |BS R0,R0,#1:BNE |
00018d10  6d 61 70 70 69 78 6c 70  0d 96 a0 14 4c 44 4d 46  |mappixlp....LDMF|
00018d20  44 20 53 50 20 21 2c 7b  50 43 7d 5e 0d 96 aa 05  |D SP !,{PC}^....|
00018d30  5d 0d 96 b4 09 c9 20 34  31 31 0d 96 c8 0a 5b 4f  |]..... 411....[O|
00018d40  50 54 20 5a 0d 96 d2 0d  2e 6d 61 70 70 69 78 25  |PT Z.....mappix%|
00018d50  20 0d 96 dc 11 4c 44 52  20 52 30 2c 73 78 6c 6f  | ....LDR R0,sxlo|
00018d60  63 20 0d 96 e6 1c 4c 44  52 20 52 31 2c 5b 52 39  |c ....LDR R1,[R9|
00018d70  5d 3a 4c 44 52 20 52 31  2c 5b 52 31 5d 20 0d 96  |]:LDR R1,[R1] ..|
00018d80  f0 15 4c 44 52 20 52 32  2c 5b 52 39 2c 23 31 2a  |..LDR R2,[R9,#1*|
00018d90  38 5d 20 0d 96 fa 15 4c  44 52 20 52 33 2c 5b 52  |8] ....LDR R3,[R|
00018da0  39 2c 23 32 2a 38 5d 20  0d 97 04 15 4c 44 52 20  |9,#2*8] ....LDR |
00018db0  52 35 2c 5b 52 39 2c 23  34 2a 38 5d 20 0d 97 0e  |R5,[R9,#4*8] ...|
00018dc0  15 4c 44 52 20 52 36 2c  5b 52 39 2c 23 35 2a 38  |.LDR R6,[R9,#5*8|
00018dd0  5d 20 0d 97 18 15 4c 44  52 20 52 37 2c 5b 52 39  |] ....LDR R7,[R9|
00018de0  2c 23 36 2a 38 5d 20 0d  97 22 15 4c 44 52 20 52  |,#6*8] ..".LDR R|
00018df0  39 2c 5b 52 39 2c 23 38  2a 38 5d 20 0d 97 2c 14  |9,[R9,#8*8] ..,.|
00018e00  53 54 4d 46 44 20 53 50  20 21 2c 7b 52 31 34 7d  |STMFD SP !,{R14}|
00018e10  0d 97 36 0d 2e 6d 61 70  70 69 78 6c 70 0d 97 40  |..6..mappixlp..@|
00018e20  17 4c 44 4d 49 41 20 52  31 21 2c 7b 52 34 2c 52  |.LDMIA R1!,{R4,R|
00018e30  31 30 7d 20 0d 97 4a 12  80 20 52 38 2c 52 34 2c  |10} ..J.. R8,R4,|
00018e40  23 26 43 30 30 30 0d 97  54 14 4d 4f 56 20 52 38  |#&C000..T.MOV R8|
00018e50  2c 52 38 2c 4c 53 52 20  23 38 0d 97 5e 17 80 20  |,R8,LSR #8..^.. |
00018e60  52 31 34 2c 52 34 2c 23  26 43 30 30 30 30 30 30  |R14,R4,#&C000000|
00018e70  30 0d 97 68 1c 84 52 20  52 38 2c 52 38 2c 52 31  |0..h..R R8,R8,R1|
00018e80  34 2c 4c 53 52 20 23 31  36 2b 38 2b 32 0d 97 72  |4,LSR #16+8+2..r|
00018e90  14 80 20 52 31 34 2c 52  31 30 2c 23 26 43 30 30  |.. R14,R10,#&C00|
00018ea0  30 0d 97 7c 19 84 52 20  52 38 2c 52 38 2c 52 31  |0..|..R R8,R8,R1|
00018eb0  34 2c 4c 53 52 20 23 38  2b 34 0d 97 86 1d 84 52  |4,LSR #8+4.....R|
00018ec0  20 52 38 2c 52 38 2c 52  31 30 2c 4c 53 52 20 23  | R8,R8,R10,LSR #|
00018ed0  31 36 2b 38 2b 36 20 0d  97 90 13 80 20 52 31 31  |16+8+6 ..... R11|
00018ee0  2c 52 34 2c 23 26 33 30  30 30 0d 97 9a 16 4d 4f  |,R4,#&3000....MO|
00018ef0  56 20 52 31 31 2c 52 31  31 2c 4c 53 52 20 23 36  |V R11,R11,LSR #6|
00018f00  0d 97 a4 17 80 20 52 31  34 2c 52 34 2c 23 26 33  |..... R14,R4,#&3|
00018f10  30 30 30 30 30 30 30 0d  97 ae 1e 84 52 20 52 31  |0000000.....R R1|
00018f20  31 2c 52 31 31 2c 52 31  34 2c 4c 53 52 20 23 31  |1,R11,R14,LSR #1|
00018f30  36 2b 36 2b 32 0d 97 b8  14 80 20 52 31 34 2c 52  |6+6+2..... R14,R|
00018f40  31 30 2c 23 26 33 30 30  30 0d 97 c2 1b 84 52 20  |10,#&3000.....R |
00018f50  52 31 31 2c 52 31 31 2c  52 31 34 2c 4c 53 52 20  |R11,R11,R14,LSR |
00018f60  23 36 2b 34 0d 97 cc 18  80 20 52 31 34 2c 52 31  |#6+4..... R14,R1|
00018f70  30 2c 23 26 33 30 30 30  30 30 30 30 0d 97 d6 1f  |0,#&30000000....|
00018f80  84 52 20 52 31 31 2c 52  31 31 2c 52 31 34 2c 4c  |.R R11,R11,R14,L|
00018f90  53 52 20 23 31 36 2b 36  2b 36 20 0d 97 ea 12 80  |SR #16+6+6 .....|
00018fa0  20 52 31 32 2c 52 34 2c  23 26 46 46 20 0d 97 f4  | R12,R4,#&FF ...|
00018fb0  1c 4c 44 52 20 52 31 32  2c 5b 52 32 2c 52 31 32  |.LDR R12,[R2,R12|
00018fc0  2c 4c 53 4c 20 23 32 5d  20 0d 97 fe 2c 4c 44 52  |,LSL #2] ...,LDR|
00018fd0  20 52 31 34 2c 5b 52 37  2c 52 31 31 2c 4c 53 4c  | R14,[R7,R11,LSL|
00018fe0  20 23 32 5d 3a 41 44 44  53 20 52 31 34 2c 52 31  | #2]:ADDS R14,R1|
00018ff0  34 2c 52 31 32 0d 98 08  38 4d 4f 56 4d 49 20 52  |4,R12...8MOVMI R|
00019000  31 34 2c 23 30 3a 43 4d  50 20 52 31 34 2c 23 46  |14,#0:CMP R14,#F|
00019010  3a 4d 4f 56 43 53 20 52  31 34 2c 23 46 3a 53 54  |:MOVCS R14,#F:ST|
00019020  52 20 52 31 34 2c 5b 52  39 5d 2c 23 34 0d 98 12  |R R14,[R9],#4...|
00019030  2a 4c 44 52 20 52 31 34  2c 5b 52 36 2c 52 38 2c  |*LDR R14,[R6,R8,|
00019040  4c 53 4c 20 23 32 5d 3a  41 44 44 20 52 31 34 2c  |LSL #2]:ADD R14,|
00019050  52 31 34 2c 52 31 32 0d  98 1c 2c 4c 44 52 20 52  |R14,R12...,LDR R|
00019060  31 32 2c 5b 52 35 2c 52  31 31 2c 4c 53 4c 20 23  |12,[R5,R11,LSL #|
00019070  32 5d 3a 41 44 44 53 20  52 31 34 2c 52 31 34 2c  |2]:ADDS R14,R14,|
00019080  52 31 32 0d 98 26 38 4d  4f 56 4d 49 20 52 31 34  |R12..&8MOVMI R14|
00019090  2c 23 30 3a 43 4d 50 20  52 31 34 2c 23 46 3a 4d  |,#0:CMP R14,#F:M|
000190a0  4f 56 43 53 20 52 31 34  2c 23 46 3a 53 54 52 20  |OVCS R14,#F:STR |
000190b0  52 31 34 2c 5b 52 39 5d  2c 23 34 0d 98 30 12 80  |R14,[R9],#4..0..|
000190c0  20 52 31 32 2c 52 34 2c  23 26 46 46 20 0d 98 3a  | R12,R4,#&FF ..:|
000190d0  1c 4c 44 52 20 52 31 32  2c 5b 52 32 2c 52 31 32  |.LDR R12,[R2,R12|
000190e0  2c 4c 53 4c 20 23 32 5d  20 0d 98 44 2b 4c 44 52  |,LSL #2] ..D+LDR|
000190f0  20 52 31 34 2c 5b 52 33  2c 52 38 2c 4c 53 4c 20  | R14,[R3,R8,LSL |
00019100  23 32 5d 3a 41 44 44 53  20 52 31 34 2c 52 31 32  |#2]:ADDS R14,R12|
00019110  2c 52 31 34 0d 98 4e 38  4d 4f 56 4d 49 20 52 31  |,R14..N8MOVMI R1|
00019120  34 2c 23 30 3a 43 4d 50  20 52 31 34 2c 23 46 3a  |4,#0:CMP R14,#F:|
00019130  4d 4f 56 43 53 20 52 31  34 2c 23 46 3a 53 54 52  |MOVCS R14,#F:STR|
00019140  20 52 31 34 2c 5b 52 39  5d 2c 23 34 0d 98 62 15  | R14,[R9],#4..b.|
00019150  4d 4f 56 20 52 34 2c 52  34 2c 4c 53 52 20 23 31  |MOV R4,R4,LSR #1|
00019160  36 0d 98 6c 12 80 20 52  31 32 2c 52 34 2c 23 26  |6..l.. R12,R4,#&|
00019170  46 46 20 0d 98 76 1c 4c  44 52 20 52 31 32 2c 5b  |FF ..v.LDR R12,[|
00019180  52 32 2c 52 31 32 2c 4c  53 4c 20 23 32 5d 20 0d  |R2,R12,LSL #2] .|
00019190  98 80 2c 4c 44 52 20 52  31 34 2c 5b 52 37 2c 52  |..,LDR R14,[R7,R|
000191a0  31 31 2c 4c 53 4c 20 23  32 5d 3a 41 44 44 53 20  |11,LSL #2]:ADDS |
000191b0  52 31 34 2c 52 31 34 2c  52 31 32 0d 98 8a 38 4d  |R14,R14,R12...8M|
000191c0  4f 56 4d 49 20 52 31 34  2c 23 30 3a 43 4d 50 20  |OVMI R14,#0:CMP |
000191d0  52 31 34 2c 23 46 3a 4d  4f 56 43 53 20 52 31 34  |R14,#F:MOVCS R14|
000191e0  2c 23 46 3a 53 54 52 20  52 31 34 2c 5b 52 39 5d  |,#F:STR R14,[R9]|
000191f0  2c 23 34 0d 98 94 2a 4c  44 52 20 52 31 34 2c 5b  |,#4...*LDR R14,[|
00019200  52 36 2c 52 38 2c 4c 53  4c 20 23 32 5d 3a 41 44  |R6,R8,LSL #2]:AD|
00019210  44 20 52 31 34 2c 52 31  34 2c 52 31 32 0d 98 9e  |D R14,R14,R12...|
00019220  2c 4c 44 52 20 52 31 32  2c 5b 52 35 2c 52 31 31  |,LDR R12,[R5,R11|
00019230  2c 4c 53 4c 20 23 32 5d  3a 41 44 44 53 20 52 31  |,LSL #2]:ADDS R1|
00019240  34 2c 52 31 34 2c 52 31  32 0d 98 a8 38 4d 4f 56  |4,R14,R12...8MOV|
00019250  4d 49 20 52 31 34 2c 23  30 3a 43 4d 50 20 52 31  |MI R14,#0:CMP R1|
00019260  34 2c 23 46 3a 4d 4f 56  43 53 20 52 31 34 2c 23  |4,#F:MOVCS R14,#|
00019270  46 3a 53 54 52 20 52 31  34 2c 5b 52 39 5d 2c 23  |F:STR R14,[R9],#|
00019280  34 0d 98 b2 12 80 20 52  31 32 2c 52 34 2c 23 26  |4..... R12,R4,#&|
00019290  46 46 20 0d 98 bc 1c 4c  44 52 20 52 31 32 2c 5b  |FF ....LDR R12,[|
000192a0  52 32 2c 52 31 32 2c 4c  53 4c 20 23 32 5d 20 0d  |R2,R12,LSL #2] .|
000192b0  98 c6 2b 4c 44 52 20 52  31 34 2c 5b 52 33 2c 52  |..+LDR R14,[R3,R|
000192c0  38 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 53 20 52  |8,LSL #2]:ADDS R|
000192d0  31 34 2c 52 31 32 2c 52  31 34 0d 98 d0 38 4d 4f  |14,R12,R14...8MO|
000192e0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
000192f0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
00019300  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
00019310  23 34 0d 98 e4 13 80 20  52 31 32 2c 52 31 30 2c  |#4..... R12,R10,|
00019320  23 26 46 46 20 0d 98 ee  1c 4c 44 52 20 52 31 32  |#&FF ....LDR R12|
00019330  2c 5b 52 32 2c 52 31 32  2c 4c 53 4c 20 23 32 5d  |,[R2,R12,LSL #2]|
00019340  20 0d 98 f8 2c 4c 44 52  20 52 31 34 2c 5b 52 37  | ...,LDR R14,[R7|
00019350  2c 52 31 31 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |,R11,LSL #2]:ADD|
00019360  53 20 52 31 34 2c 52 31  34 2c 52 31 32 0d 99 02  |S R14,R14,R12...|
00019370  38 4d 4f 56 4d 49 20 52  31 34 2c 23 30 3a 43 4d  |8MOVMI R14,#0:CM|
00019380  50 20 52 31 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |P R14,#F:MOVCS R|
00019390  31 34 2c 23 46 3a 53 54  52 20 52 31 34 2c 5b 52  |14,#F:STR R14,[R|
000193a0  39 5d 2c 23 34 0d 99 0c  2a 4c 44 52 20 52 31 34  |9],#4...*LDR R14|
000193b0  2c 5b 52 36 2c 52 38 2c  4c 53 4c 20 23 32 5d 3a  |,[R6,R8,LSL #2]:|
000193c0  41 44 44 20 52 31 34 2c  52 31 34 2c 52 31 32 0d  |ADD R14,R14,R12.|
000193d0  99 16 2c 4c 44 52 20 52  31 32 2c 5b 52 35 2c 52  |..,LDR R12,[R5,R|
000193e0  31 31 2c 4c 53 4c 20 23  32 5d 3a 41 44 44 53 20  |11,LSL #2]:ADDS |
000193f0  52 31 34 2c 52 31 34 2c  52 31 32 0d 99 20 38 4d  |R14,R14,R12.. 8M|
00019400  4f 56 4d 49 20 52 31 34  2c 23 30 3a 43 4d 50 20  |OVMI R14,#0:CMP |
00019410  52 31 34 2c 23 46 3a 4d  4f 56 43 53 20 52 31 34  |R14,#F:MOVCS R14|
00019420  2c 23 46 3a 53 54 52 20  52 31 34 2c 5b 52 39 5d  |,#F:STR R14,[R9]|
00019430  2c 23 34 0d 99 2a 13 80  20 52 31 32 2c 52 31 30  |,#4..*.. R12,R10|
00019440  2c 23 26 46 46 20 0d 99  34 1c 4c 44 52 20 52 31  |,#&FF ..4.LDR R1|
00019450  32 2c 5b 52 32 2c 52 31  32 2c 4c 53 4c 20 23 32  |2,[R2,R12,LSL #2|
00019460  5d 20 0d 99 3e 2b 4c 44  52 20 52 31 34 2c 5b 52  |] ..>+LDR R14,[R|
00019470  33 2c 52 38 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |3,R8,LSL #2]:ADD|
00019480  53 20 52 31 34 2c 52 31  32 2c 52 31 34 0d 99 48  |S R14,R12,R14..H|
00019490  38 4d 4f 56 4d 49 20 52  31 34 2c 23 30 3a 43 4d  |8MOVMI R14,#0:CM|
000194a0  50 20 52 31 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |P R14,#F:MOVCS R|
000194b0  31 34 2c 23 46 3a 53 54  52 20 52 31 34 2c 5b 52  |14,#F:STR R14,[R|
000194c0  39 5d 2c 23 34 0d 99 5c  17 4d 4f 56 20 52 31 30  |9],#4..\.MOV R10|
000194d0  2c 52 31 30 2c 4c 53 52  20 23 31 36 0d 99 66 13  |,R10,LSR #16..f.|
000194e0  80 20 52 31 32 2c 52 31  30 2c 23 26 46 46 20 0d  |. R12,R10,#&FF .|
000194f0  99 70 1c 4c 44 52 20 52  31 32 2c 5b 52 32 2c 52  |.p.LDR R12,[R2,R|
00019500  31 32 2c 4c 53 4c 20 23  32 5d 20 0d 99 7a 2c 4c  |12,LSL #2] ..z,L|
00019510  44 52 20 52 31 34 2c 5b  52 37 2c 52 31 31 2c 4c  |DR R14,[R7,R11,L|
00019520  53 4c 20 23 32 5d 3a 41  44 44 53 20 52 31 34 2c  |SL #2]:ADDS R14,|
00019530  52 31 34 2c 52 31 32 0d  99 84 38 4d 4f 56 4d 49  |R14,R12...8MOVMI|
00019540  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00019550  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00019560  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00019570  99 8e 2a 4c 44 52 20 52  31 34 2c 5b 52 36 2c 52  |..*LDR R14,[R6,R|
00019580  38 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 20 52 31  |8,LSL #2]:ADD R1|
00019590  34 2c 52 31 34 2c 52 31  32 0d 99 98 2c 4c 44 52  |4,R14,R12...,LDR|
000195a0  20 52 31 32 2c 5b 52 35  2c 52 31 31 2c 4c 53 4c  | R12,[R5,R11,LSL|
000195b0  20 23 32 5d 3a 41 44 44  53 20 52 31 34 2c 52 31  | #2]:ADDS R14,R1|
000195c0  34 2c 52 31 32 0d 99 a2  38 4d 4f 56 4d 49 20 52  |4,R12...8MOVMI R|
000195d0  31 34 2c 23 30 3a 43 4d  50 20 52 31 34 2c 23 46  |14,#0:CMP R14,#F|
000195e0  3a 4d 4f 56 43 53 20 52  31 34 2c 23 46 3a 53 54  |:MOVCS R14,#F:ST|
000195f0  52 20 52 31 34 2c 5b 52  39 5d 2c 23 34 0d 99 ac  |R R14,[R9],#4...|
00019600  13 80 20 52 31 32 2c 52  31 30 2c 23 26 46 46 20  |.. R12,R10,#&FF |
00019610  0d 99 b6 1c 4c 44 52 20  52 31 32 2c 5b 52 32 2c  |....LDR R12,[R2,|
00019620  52 31 32 2c 4c 53 4c 20  23 32 5d 20 0d 99 c0 2b  |R12,LSL #2] ...+|
00019630  4c 44 52 20 52 31 34 2c  5b 52 33 2c 52 38 2c 4c  |LDR R14,[R3,R8,L|
00019640  53 4c 20 23 32 5d 3a 41  44 44 53 20 52 31 34 2c  |SL #2]:ADDS R14,|
00019650  52 31 32 2c 52 31 34 0d  99 ca 38 4d 4f 56 4d 49  |R12,R14...8MOVMI|
00019660  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00019670  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00019680  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00019690  99 de 1e 53 55 42 53 20  52 30 2c 52 30 2c 23 34  |...SUBS R0,R0,#4|
000196a0  3a 42 4e 45 20 6d 61 70  70 69 78 6c 70 0d 99 e8  |:BNE mappixlp...|
000196b0  14 4c 44 4d 46 44 20 53  50 20 21 2c 7b 50 43 7d  |.LDMFD SP !,{PC}|
000196c0  5e 0d 99 f2 05 5d 0d 99  fc 09 c9 20 34 32 33 0d  |^....]..... 423.|
000196d0  9a 06 0a 5b 4f 50 54 20  5a 0d 9a 10 0d 2e 6d 61  |...[OPT Z.....ma|
000196e0  70 70 69 78 25 20 0d 9a  1a 11 4c 44 52 20 52 30  |ppix% ....LDR R0|
000196f0  2c 73 78 6c 6f 63 20 0d  9a 24 1c 4c 44 52 20 52  |,sxloc ..$.LDR R|
00019700  31 2c 5b 52 39 5d 3a 4c  44 52 20 52 31 2c 5b 52  |1,[R9]:LDR R1,[R|
00019710  31 5d 20 0d 9a 2e 15 4c  44 52 20 52 32 2c 5b 52  |1] ....LDR R2,[R|
00019720  39 2c 23 31 2a 38 5d 20  0d 9a 38 15 4c 44 52 20  |9,#1*8] ..8.LDR |
00019730  52 33 2c 5b 52 39 2c 23  32 2a 38 5d 20 0d 9a 42  |R3,[R9,#2*8] ..B|
00019740  15 4c 44 52 20 52 34 2c  5b 52 39 2c 23 33 2a 38  |.LDR R4,[R9,#3*8|
00019750  5d 20 0d 9a 4c 15 4c 44  52 20 52 35 2c 5b 52 39  |] ..L.LDR R5,[R9|
00019760  2c 23 34 2a 38 5d 20 0d  9a 56 15 4c 44 52 20 52  |,#4*8] ..V.LDR R|
00019770  36 2c 5b 52 39 2c 23 35  2a 38 5d 20 0d 9a 60 15  |6,[R9,#5*8] ..`.|
00019780  4c 44 52 20 52 37 2c 5b  52 39 2c 23 36 2a 38 5d  |LDR R7,[R9,#6*8]|
00019790  20 0d 9a 6a 15 4c 44 52  20 52 38 2c 5b 52 39 2c  | ..j.LDR R8,[R9,|
000197a0  23 37 2a 38 5d 20 0d 9a  74 15 4c 44 52 20 52 39  |#7*8] ..t.LDR R9|
000197b0  2c 5b 52 39 2c 23 38 2a  38 5d 20 0d 9a 7e 14 53  |,[R9,#8*8] ..~.S|
000197c0  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
000197d0  9a 88 0d 2e 6d 61 70 70  69 78 6c 70 0d 9a 92 14  |....mappixlp....|
000197e0  4c 44 52 20 52 31 30 2c  5b 52 31 5d 2c 23 34 20  |LDR R10,[R1],#4 |
000197f0  0d 9a 9c 15 80 20 52 31  31 2c 52 31 30 2c 23 26  |..... R11,R10,#&|
00019800  46 46 30 30 20 0d 9a a6  1b 4c 44 52 20 52 31 31  |FF00 ....LDR R11|
00019810  2c 5b 52 32 2c 52 31 31  2c 4c 53 52 20 23 36 5d  |,[R2,R11,LSR #6]|
00019820  0d 9a b0 3a 80 20 52 31  32 2c 52 31 30 2c 23 26  |...:. R12,R10,#&|
00019830  46 46 3a 4c 44 52 20 52  31 32 2c 5b 52 37 2c 52  |FF:LDR R12,[R7,R|
00019840  31 32 2c 4c 53 4c 20 23  32 5d 3a 41 44 44 20 52  |12,LSL #2]:ADD R|
00019850  31 34 2c 52 31 32 2c 52  31 31 0d 9a ba 40 80 20  |14,R12,R11...@. |
00019860  52 31 32 2c 52 31 30 2c  23 26 46 46 30 30 30 30  |R12,R10,#&FF0000|
00019870  3a 4c 44 52 20 52 31 32  2c 5b 52 38 2c 52 31 32  |:LDR R12,[R8,R12|
00019880  2c 4c 53 52 20 23 31 34  5d 3a 41 44 44 53 20 52  |,LSR #14]:ADDS R|
00019890  31 34 2c 52 31 34 2c 52  31 32 0d 9a c4 38 4d 4f  |14,R14,R12...8MO|
000198a0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
000198b0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
000198c0  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
000198d0  23 34 0d 9a ce 3a 80 20  52 31 32 2c 52 31 30 2c  |#4...:. R12,R10,|
000198e0  23 26 46 46 3a 4c 44 52  20 52 31 32 2c 5b 52 35  |#&FF:LDR R12,[R5|
000198f0  2c 52 31 32 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |,R12,LSL #2]:ADD|
00019900  20 52 31 34 2c 52 31 32  2c 52 31 31 0d 9a d8 40  | R14,R12,R11...@|
00019910  80 20 52 31 32 2c 52 31  30 2c 23 26 46 46 30 30  |. R12,R10,#&FF00|
00019920  30 30 3a 4c 44 52 20 52  31 32 2c 5b 52 36 2c 52  |00:LDR R12,[R6,R|
00019930  31 32 2c 4c 53 52 20 23  31 34 5d 3a 41 44 44 53  |12,LSR #14]:ADDS|
00019940  20 52 31 34 2c 52 31 34  2c 52 31 32 0d 9a e2 38  | R14,R14,R12...8|
00019950  4d 4f 56 4d 49 20 52 31  34 2c 23 30 3a 43 4d 50  |MOVMI R14,#0:CMP|
00019960  20 52 31 34 2c 23 46 3a  4d 4f 56 43 53 20 52 31  | R14,#F:MOVCS R1|
00019970  34 2c 23 46 3a 53 54 52  20 52 31 34 2c 5b 52 39  |4,#F:STR R14,[R9|
00019980  5d 2c 23 34 0d 9a ec 3a  80 20 52 31 32 2c 52 31  |],#4...:. R12,R1|
00019990  30 2c 23 26 46 46 3a 4c  44 52 20 52 31 32 2c 5b  |0,#&FF:LDR R12,[|
000199a0  52 33 2c 52 31 32 2c 4c  53 4c 20 23 32 5d 3a 41  |R3,R12,LSL #2]:A|
000199b0  44 44 20 52 31 34 2c 52  31 32 2c 52 31 31 0d 9a  |DD R14,R12,R11..|
000199c0  f6 40 80 20 52 31 32 2c  52 31 30 2c 23 26 46 46  |.@. R12,R10,#&FF|
000199d0  30 30 30 30 3a 4c 44 52  20 52 31 32 2c 5b 52 34  |0000:LDR R12,[R4|
000199e0  2c 52 31 32 2c 4c 53 52  20 23 31 34 5d 3a 41 44  |,R12,LSR #14]:AD|
000199f0  44 53 20 52 31 34 2c 52  31 34 2c 52 31 32 0d 9b  |DS R14,R14,R12..|
00019a00  00 38 4d 4f 56 4d 49 20  52 31 34 2c 23 30 3a 43  |.8MOVMI R14,#0:C|
00019a10  4d 50 20 52 31 34 2c 23  46 3a 4d 4f 56 43 53 20  |MP R14,#F:MOVCS |
00019a20  52 31 34 2c 23 46 3a 53  54 52 20 52 31 34 2c 5b  |R14,#F:STR R14,[|
00019a30  52 39 5d 2c 23 34 0d 9b  0a 19 80 20 52 31 31 2c  |R9],#4..... R11,|
00019a40  52 31 30 2c 23 26 46 46  30 30 30 30 30 30 20 0d  |R10,#&FF000000 .|
00019a50  9b 14 1c 4c 44 52 20 52  31 31 2c 5b 52 32 2c 52  |...LDR R11,[R2,R|
00019a60  31 31 2c 4c 53 52 20 23  32 32 5d 0d 9b 1e 3a 80  |11,LSR #22]...:.|
00019a70  20 52 31 32 2c 52 31 30  2c 23 26 46 46 3a 4c 44  | R12,R10,#&FF:LD|
00019a80  52 20 52 31 32 2c 5b 52  37 2c 52 31 32 2c 4c 53  |R R12,[R7,R12,LS|
00019a90  4c 20 23 32 5d 3a 41 44  44 20 52 31 34 2c 52 31  |L #2]:ADD R14,R1|
00019aa0  32 2c 52 31 31 0d 9b 28  40 80 20 52 31 32 2c 52  |2,R11..(@. R12,R|
00019ab0  31 30 2c 23 26 46 46 30  30 30 30 3a 4c 44 52 20  |10,#&FF0000:LDR |
00019ac0  52 31 32 2c 5b 52 38 2c  52 31 32 2c 4c 53 52 20  |R12,[R8,R12,LSR |
00019ad0  23 31 34 5d 3a 41 44 44  53 20 52 31 34 2c 52 31  |#14]:ADDS R14,R1|
00019ae0  34 2c 52 31 32 0d 9b 32  38 4d 4f 56 4d 49 20 52  |4,R12..28MOVMI R|
00019af0  31 34 2c 23 30 3a 43 4d  50 20 52 31 34 2c 23 46  |14,#0:CMP R14,#F|
00019b00  3a 4d 4f 56 43 53 20 52  31 34 2c 23 46 3a 53 54  |:MOVCS R14,#F:ST|
00019b10  52 20 52 31 34 2c 5b 52  39 5d 2c 23 34 0d 9b 3c  |R R14,[R9],#4..<|
00019b20  3a 80 20 52 31 32 2c 52  31 30 2c 23 26 46 46 3a  |:. R12,R10,#&FF:|
00019b30  4c 44 52 20 52 31 32 2c  5b 52 35 2c 52 31 32 2c  |LDR R12,[R5,R12,|
00019b40  4c 53 4c 20 23 32 5d 3a  41 44 44 20 52 31 34 2c  |LSL #2]:ADD R14,|
00019b50  52 31 32 2c 52 31 31 0d  9b 46 40 80 20 52 31 32  |R12,R11..F@. R12|
00019b60  2c 52 31 30 2c 23 26 46  46 30 30 30 30 3a 4c 44  |,R10,#&FF0000:LD|
00019b70  52 20 52 31 32 2c 5b 52  36 2c 52 31 32 2c 4c 53  |R R12,[R6,R12,LS|
00019b80  52 20 23 31 34 5d 3a 41  44 44 53 20 52 31 34 2c  |R #14]:ADDS R14,|
00019b90  52 31 34 2c 52 31 32 0d  9b 50 38 4d 4f 56 4d 49  |R14,R12..P8MOVMI|
00019ba0  20 52 31 34 2c 23 30 3a  43 4d 50 20 52 31 34 2c  | R14,#0:CMP R14,|
00019bb0  23 46 3a 4d 4f 56 43 53  20 52 31 34 2c 23 46 3a  |#F:MOVCS R14,#F:|
00019bc0  53 54 52 20 52 31 34 2c  5b 52 39 5d 2c 23 34 0d  |STR R14,[R9],#4.|
00019bd0  9b 5a 3a 80 20 52 31 32  2c 52 31 30 2c 23 26 46  |.Z:. R12,R10,#&F|
00019be0  46 3a 4c 44 52 20 52 31  32 2c 5b 52 33 2c 52 31  |F:LDR R12,[R3,R1|
00019bf0  32 2c 4c 53 4c 20 23 32  5d 3a 41 44 44 20 52 31  |2,LSL #2]:ADD R1|
00019c00  34 2c 52 31 32 2c 52 31  31 0d 9b 64 40 80 20 52  |4,R12,R11..d@. R|
00019c10  31 32 2c 52 31 30 2c 23  26 46 46 30 30 30 30 3a  |12,R10,#&FF0000:|
00019c20  4c 44 52 20 52 31 32 2c  5b 52 34 2c 52 31 32 2c  |LDR R12,[R4,R12,|
00019c30  4c 53 52 20 23 31 34 5d  3a 41 44 44 53 20 52 31  |LSR #14]:ADDS R1|
00019c40  34 2c 52 31 34 2c 52 31  32 0d 9b 6e 38 4d 4f 56  |4,R14,R12..n8MOV|
00019c50  4d 49 20 52 31 34 2c 23  30 3a 43 4d 50 20 52 31  |MI R14,#0:CMP R1|
00019c60  34 2c 23 46 3a 4d 4f 56  43 53 20 52 31 34 2c 23  |4,#F:MOVCS R14,#|
00019c70  46 3a 53 54 52 20 52 31  34 2c 5b 52 39 5d 2c 23  |F:STR R14,[R9],#|
00019c80  34 0d 9b 78 1e 53 55 42  53 20 52 30 2c 52 30 2c  |4..x.SUBS R0,R0,|
00019c90  23 32 3a 42 4e 45 20 6d  61 70 70 69 78 6c 70 0d  |#2:BNE mappixlp.|
00019ca0  9b 82 14 4c 44 4d 46 44  20 53 50 20 21 2c 7b 50  |...LDMFD SP !,{P|
00019cb0  43 7d 5e 0d 9b 8c 05 5d  0d 9b 96 09 c9 20 34 32  |C}^....]..... 42|
00019cc0  32 0d 9b a0 0a 5b 4f 50  54 20 5a 0d 9b aa 0d 2e  |2....[OPT Z.....|
00019cd0  6d 61 70 70 69 78 25 20  0d 9b b4 11 4c 44 52 20  |mappix% ....LDR |
00019ce0  52 30 2c 73 78 6c 6f 63  20 0d 9b be 1c 4c 44 52  |R0,sxloc ....LDR|
00019cf0  20 52 31 2c 5b 52 39 5d  3a 4c 44 52 20 52 31 2c  | R1,[R9]:LDR R1,|
00019d00  5b 52 31 5d 20 0d 9b c8  15 4c 44 52 20 52 32 2c  |[R1] ....LDR R2,|
00019d10  5b 52 39 2c 23 31 2a 38  5d 20 0d 9b d2 15 4c 44  |[R9,#1*8] ....LD|
00019d20  52 20 52 33 2c 5b 52 39  2c 23 32 2a 38 5d 20 0d  |R R3,[R9,#2*8] .|
00019d30  9b dc 15 4c 44 52 20 52  35 2c 5b 52 39 2c 23 34  |...LDR R5,[R9,#4|
00019d40  2a 38 5d 20 0d 9b e6 15  4c 44 52 20 52 36 2c 5b  |*8] ....LDR R6,[|
00019d50  52 39 2c 23 35 2a 38 5d  20 0d 9b f0 15 4c 44 52  |R9,#5*8] ....LDR|
00019d60  20 52 37 2c 5b 52 39 2c  23 36 2a 38 5d 20 0d 9b  | R7,[R9,#6*8] ..|
00019d70  fa 15 4c 44 52 20 52 39  2c 5b 52 39 2c 23 38 2a  |..LDR R9,[R9,#8*|
00019d80  38 5d 20 0d 9c 04 14 53  54 4d 46 44 20 53 50 20  |8] ....STMFD SP |
00019d90  21 2c 7b 52 31 34 7d 0d  9c 0e 0d 2e 6d 61 70 70  |!,{R14}.....mapp|
00019da0  69 78 6c 70 0d 9c 18 14  4c 44 52 20 52 31 30 2c  |ixlp....LDR R10,|
00019db0  5b 52 31 5d 2c 23 34 20  0d 9c 22 15 80 20 52 31  |[R1],#4 ..".. R1|
00019dc0  31 2c 52 31 30 2c 23 26  46 46 30 30 20 0d 9c 2c  |1,R10,#&FF00 ..,|
00019dd0  1b 4c 44 52 20 52 31 31  2c 5b 52 32 2c 52 31 31  |.LDR R11,[R2,R11|
00019de0  2c 4c 53 52 20 23 36 5d  0d 9c 36 40 80 20 52 31  |,LSR #6]..6@. R1|
00019df0  32 2c 52 31 30 2c 23 26  46 46 30 30 30 30 3a 4c  |2,R10,#&FF0000:L|
00019e00  44 52 20 52 31 32 2c 5b  52 37 2c 52 31 32 2c 4c  |DR R12,[R7,R12,L|
00019e10  53 52 20 23 31 34 5d 3a  41 44 44 53 20 52 31 34  |SR #14]:ADDS R14|
00019e20  2c 52 31 32 2c 52 31 31  0d 9c 40 38 4d 4f 56 4d  |,R12,R11..@8MOVM|
00019e30  49 20 52 31 34 2c 23 30  3a 43 4d 50 20 52 31 34  |I R14,#0:CMP R14|
00019e40  2c 23 46 3a 4d 4f 56 43  53 20 52 31 34 2c 23 46  |,#F:MOVCS R14,#F|
00019e50  3a 53 54 52 20 52 31 34  2c 5b 52 39 5d 2c 23 34  |:STR R14,[R9],#4|
00019e60  0d 9c 4a 3a 80 20 52 31  32 2c 52 31 30 2c 23 26  |..J:. R12,R10,#&|
00019e70  46 46 3a 4c 44 52 20 52  31 32 2c 5b 52 35 2c 52  |FF:LDR R12,[R5,R|
00019e80  31 32 2c 4c 53 4c 20 23  32 5d 3a 41 44 44 20 52  |12,LSL #2]:ADD R|
00019e90  31 34 2c 52 31 32 2c 52  31 31 0d 9c 54 40 80 20  |14,R12,R11..T@. |
00019ea0  52 31 32 2c 52 31 30 2c  23 26 46 46 30 30 30 30  |R12,R10,#&FF0000|
00019eb0  3a 4c 44 52 20 52 31 32  2c 5b 52 36 2c 52 31 32  |:LDR R12,[R6,R12|
00019ec0  2c 4c 53 52 20 23 31 34  5d 3a 41 44 44 53 20 52  |,LSR #14]:ADDS R|
00019ed0  31 34 2c 52 31 34 2c 52  31 32 0d 9c 5e 38 4d 4f  |14,R14,R12..^8MO|
00019ee0  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
00019ef0  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
00019f00  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
00019f10  23 34 0d 9c 68 3b 80 20  52 31 32 2c 52 31 30 2c  |#4..h;. R12,R10,|
00019f20  23 26 46 46 3a 4c 44 52  20 52 31 32 2c 5b 52 33  |#&FF:LDR R12,[R3|
00019f30  2c 52 31 32 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |,R12,LSL #2]:ADD|
00019f40  53 20 52 31 34 2c 52 31  32 2c 52 31 31 0d 9c 72  |S R14,R12,R11..r|
00019f50  38 4d 4f 56 4d 49 20 52  31 34 2c 23 30 3a 43 4d  |8MOVMI R14,#0:CM|
00019f60  50 20 52 31 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |P R14,#F:MOVCS R|
00019f70  31 34 2c 23 46 3a 53 54  52 20 52 31 34 2c 5b 52  |14,#F:STR R14,[R|
00019f80  39 5d 2c 23 34 0d 9c 7c  19 80 20 52 31 31 2c 52  |9],#4..|.. R11,R|
00019f90  31 30 2c 23 26 46 46 30  30 30 30 30 30 20 0d 9c  |10,#&FF000000 ..|
00019fa0  86 1c 4c 44 52 20 52 31  31 2c 5b 52 32 2c 52 31  |..LDR R11,[R2,R1|
00019fb0  31 2c 4c 53 52 20 23 32  32 5d 0d 9c 90 40 80 20  |1,LSR #22]...@. |
00019fc0  52 31 32 2c 52 31 30 2c  23 26 46 46 30 30 30 30  |R12,R10,#&FF0000|
00019fd0  3a 4c 44 52 20 52 31 32  2c 5b 52 37 2c 52 31 32  |:LDR R12,[R7,R12|
00019fe0  2c 4c 53 52 20 23 31 34  5d 3a 41 44 44 53 20 52  |,LSR #14]:ADDS R|
00019ff0  31 34 2c 52 31 32 2c 52  31 31 0d 9c 9a 38 4d 4f  |14,R12,R11...8MO|
0001a000  56 4d 49 20 52 31 34 2c  23 30 3a 43 4d 50 20 52  |VMI R14,#0:CMP R|
0001a010  31 34 2c 23 46 3a 4d 4f  56 43 53 20 52 31 34 2c  |14,#F:MOVCS R14,|
0001a020  23 46 3a 53 54 52 20 52  31 34 2c 5b 52 39 5d 2c  |#F:STR R14,[R9],|
0001a030  23 34 0d 9c a4 3a 80 20  52 31 32 2c 52 31 30 2c  |#4...:. R12,R10,|
0001a040  23 26 46 46 3a 4c 44 52  20 52 31 32 2c 5b 52 35  |#&FF:LDR R12,[R5|
0001a050  2c 52 31 32 2c 4c 53 4c  20 23 32 5d 3a 41 44 44  |,R12,LSL #2]:ADD|
0001a060  20 52 31 34 2c 52 31 32  2c 52 31 31 0d 9c ae 40  | R14,R12,R11...@|
0001a070  80 20 52 31 32 2c 52 31  30 2c 23 26 46 46 30 30  |. R12,R10,#&FF00|
0001a080  30 30 3a 4c 44 52 20 52  31 32 2c 5b 52 36 2c 52  |00:LDR R12,[R6,R|
0001a090  31 32 2c 4c 53 52 20 23  31 34 5d 3a 41 44 44 53  |12,LSR #14]:ADDS|
0001a0a0  20 52 31 34 2c 52 31 34  2c 52 31 32 0d 9c b8 38  | R14,R14,R12...8|
0001a0b0  4d 4f 56 4d 49 20 52 31  34 2c 23 30 3a 43 4d 50  |MOVMI R14,#0:CMP|
0001a0c0  20 52 31 34 2c 23 46 3a  4d 4f 56 43 53 20 52 31  | R14,#F:MOVCS R1|
0001a0d0  34 2c 23 46 3a 53 54 52  20 52 31 34 2c 5b 52 39  |4,#F:STR R14,[R9|
0001a0e0  5d 2c 23 34 0d 9c c2 3b  80 20 52 31 32 2c 52 31  |],#4...;. R12,R1|
0001a0f0  30 2c 23 26 46 46 3a 4c  44 52 20 52 31 32 2c 5b  |0,#&FF:LDR R12,[|
0001a100  52 33 2c 52 31 32 2c 4c  53 4c 20 23 32 5d 3a 41  |R3,R12,LSL #2]:A|
0001a110  44 44 53 20 52 31 34 2c  52 31 32 2c 52 31 31 0d  |DDS R14,R12,R11.|
0001a120  9c cc 38 4d 4f 56 4d 49  20 52 31 34 2c 23 30 3a  |..8MOVMI R14,#0:|
0001a130  43 4d 50 20 52 31 34 2c  23 46 3a 4d 4f 56 43 53  |CMP R14,#F:MOVCS|
0001a140  20 52 31 34 2c 23 46 3a  53 54 52 20 52 31 34 2c  | R14,#F:STR R14,|
0001a150  5b 52 39 5d 2c 23 34 0d  9c d6 1e 53 55 42 53 20  |[R9],#4....SUBS |
0001a160  52 30 2c 52 30 2c 23 32  3a 42 4e 45 20 6d 61 70  |R0,R0,#2:BNE map|
0001a170  70 69 78 6c 70 0d 9c e0  14 4c 44 4d 46 44 20 53  |pixlp....LDMFD S|
0001a180  50 20 21 2c 7b 50 43 7d  5e 0d 9c ea 05 5d 0d 9c  |P !,{PC}^....]..|
0001a190  f4 09 c9 20 35 35 35 0d  9d 08 0a 5b 4f 50 54 20  |... 555....[OPT |
0001a1a0  5a 0d 9d 12 0d 2e 6d 61  70 70 69 78 25 20 0d 9d  |Z.....mappix% ..|
0001a1b0  1c 11 4c 44 52 20 52 30  2c 73 78 6c 6f 63 20 0d  |..LDR R0,sxloc .|
0001a1c0  9d 26 1c 4c 44 52 20 52  31 2c 5b 52 39 5d 3a 4c  |.&.LDR R1,[R9]:L|
0001a1d0  44 52 20 52 31 2c 5b 52  31 5d 20 0d 9d 30 15 4c  |DR R1,[R1] ..0.L|
0001a1e0  44 52 20 52 32 2c 5b 52  39 2c 23 31 2a 38 5d 20  |DR R2,[R9,#1*8] |
0001a1f0  0d 9d 3a 15 4c 44 52 20  52 33 2c 5b 52 39 2c 23  |..:.LDR R3,[R9,#|
0001a200  32 2a 38 5d 20 0d 9d 44  15 4c 44 52 20 52 35 2c  |2*8] ..D.LDR R5,|
0001a210  5b 52 39 2c 23 34 2a 38  5d 20 0d 9d 4e 15 4c 44  |[R9,#4*8] ..N.LD|
0001a220  52 20 52 36 2c 5b 52 39  2c 23 35 2a 38 5d 20 0d  |R R6,[R9,#5*8] .|
0001a230  9d 58 15 4c 44 52 20 52  37 2c 5b 52 39 2c 23 36  |.X.LDR R7,[R9,#6|
0001a240  2a 38 5d 20 0d 9d 62 15  4c 44 52 20 52 39 2c 5b  |*8] ..b.LDR R9,[|
0001a250  52 39 2c 23 38 2a 38 5d  20 0d 9d 6c 14 53 54 4d  |R9,#8*8] ..l.STM|
0001a260  46 44 20 53 50 20 21 2c  7b 52 31 34 7d 0d 9d 76  |FD SP !,{R14}..v|
0001a270  0d 2e 6d 61 70 70 69 78  6c 70 0d 9d 80 14 4c 44  |..mappixlp....LD|
0001a280  52 20 52 31 30 2c 5b 52  31 5d 2c 23 32 20 0d 9d  |R R10,[R1],#2 ..|
0001a290  8a 15 80 20 52 31 31 2c  52 31 30 2c 23 79 6d 61  |... R11,R10,#yma|
0001a2a0  78 25 20 0d 9d 94 1b 4c  44 52 20 52 31 31 2c 5b  |x% ....LDR R11,[|
0001a2b0  52 32 2c 52 31 31 2c 4c  53 4c 20 23 32 5d 0d 9d  |R2,R11,LSL #2]..|
0001a2c0  9e 2f 80 20 52 38 2c 52  31 30 2c 23 28 28 31 3c  |./. R8,R10,#((1<|
0001a2d0  3c 76 62 69 74 73 25 29  2d 31 29 3c 3c 28 79 62  |<vbits%)-1)<<(yb|
0001a2e0  69 74 73 25 2b 75 62 69  74 73 25 29 20 0d 9d a8  |its%+ubits%) ...|
0001a2f0  27 80 20 52 31 30 2c 52  31 30 2c 23 28 28 31 3c  |'. R10,R10,#((1<|
0001a300  3c 75 62 69 74 73 25 29  2d 31 29 3c 3c 79 62 69  |<ubits%)-1)<<ybi|
0001a310  74 73 25 20 0d 9d bc 39  4c 44 52 20 52 31 32 2c  |ts% ...9LDR R12,|
0001a320  5b 52 37 2c 52 38 2c 4c  53 52 20 23 79 62 69 74  |[R7,R8,LSR #ybit|
0001a330  73 25 2b 75 62 69 74 73  25 2d 32 5d 3a 41 44 44  |s%+ubits%-2]:ADD|
0001a340  53 20 52 31 34 2c 52 31  32 2c 52 31 31 0d 9d c6  |S R14,R12,R11...|
0001a350  39 4d 4f 56 4d 49 20 52  31 34 2c 23 30 3a 43 4d  |9MOVMI R14,#0:CM|
0001a360  50 20 52 31 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |P R14,#F:MOVCS R|
0001a370  31 34 2c 23 46 3a 53 54  52 20 52 31 34 2c 5b 52  |14,#F:STR R14,[R|
0001a380  39 5d 2c 23 34 20 0d 9d  d0 38 4c 44 52 20 52 31  |9],#4 ...8LDR R1|
0001a390  32 2c 5b 52 35 2c 52 38  2c 4c 53 52 20 23 79 62  |2,[R5,R8,LSR #yb|
0001a3a0  69 74 73 25 2b 75 62 69  74 73 25 2d 32 5d 3a 41  |its%+ubits%-2]:A|
0001a3b0  44 44 20 52 31 34 2c 52  31 32 2c 52 31 31 0d 9d  |DD R14,R12,R11..|
0001a3c0  da 33 4c 44 52 20 52 31  32 2c 5b 52 36 2c 52 31  |.3LDR R12,[R6,R1|
0001a3d0  30 2c 4c 53 52 20 23 79  62 69 74 73 25 2d 32 5d  |0,LSR #ybits%-2]|
0001a3e0  3a 41 44 44 53 20 52 31  34 2c 52 31 34 2c 52 31  |:ADDS R14,R14,R1|
0001a3f0  32 0d 9d e4 39 4d 4f 56  4d 49 20 52 31 34 2c 23  |2...9MOVMI R14,#|
0001a400  30 3a 43 4d 50 20 52 31  34 2c 23 46 3a 4d 4f 56  |0:CMP R14,#F:MOV|
0001a410  43 53 20 52 31 34 2c 23  46 3a 53 54 52 20 52 31  |CS R14,#F:STR R1|
0001a420  34 2c 5b 52 39 5d 2c 23  34 20 0d 9d ee 33 4c 44  |4,[R9],#4 ...3LD|
0001a430  52 20 52 31 32 2c 5b 52  33 2c 52 31 30 2c 4c 53  |R R12,[R3,R10,LS|
0001a440  52 20 23 79 62 69 74 73  25 2d 32 5d 3a 41 44 44  |R #ybits%-2]:ADD|
0001a450  53 20 52 31 34 2c 52 31  32 2c 52 31 31 0d 9d f8  |S R14,R12,R11...|
0001a460  39 4d 4f 56 4d 49 20 52  31 34 2c 23 30 3a 43 4d  |9MOVMI R14,#0:CM|
0001a470  50 20 52 31 34 2c 23 46  3a 4d 4f 56 43 53 20 52  |P R14,#F:MOVCS R|
0001a480  31 34 2c 23 46 3a 53 54  52 20 52 31 34 2c 5b 52  |14,#F:STR R14,[R|
0001a490  39 5d 2c 23 34 20 0d 9e  02 1e 53 55 42 53 20 52  |9],#4 ....SUBS R|
0001a4a0  30 2c 52 30 2c 23 31 3a  42 4e 45 20 6d 61 70 70  |0,R0,#1:BNE mapp|
0001a4b0  69 78 6c 70 0d 9e 0c 14  4c 44 4d 46 44 20 53 50  |ixlp....LDMFD SP|
0001a4c0  20 21 2c 7b 50 43 7d 5e  0d 9e 16 05 5d 0d 9e 20  | !,{PC}^....].. |
0001a4d0  05 cb 0d 9e 2a 18 e7 78  6d 75 6c 25 3d 32 20 80  |....*..xmul%=2 .|
0001a4e0  20 78 64 69 76 25 3d 31  20 8c 0d 9e 34 0a 5b 4f  | xdiv%=1 ...4.[O|
0001a4f0  50 54 20 5a 0d 9e 48 0d  2e 78 73 61 6d 70 6c 65  |PT Z..H..xsample|
0001a500  25 0d 9e 52 1c 4c 44 52  20 52 30 2c 5b 52 39 5d  |%..R.LDR R0,[R9]|
0001a510  3a 4c 44 52 20 52 30 2c  5b 52 30 5d 20 0d 9e 5c  |:LDR R0,[R0] ..\|
0001a520  13 4c 44 52 20 52 31 2c  5b 52 39 2c 23 38 5d 20  |.LDR R1,[R9,#8] |
0001a530  0d 9e 66 15 4c 44 52 20  52 32 2c 5b 52 39 2c 23  |..f.LDR R2,[R9,#|
0001a540  32 2a 38 5d 20 0d 9e 70  11 53 55 42 53 20 52 30  |2*8] ..p.SUBS R0|
0001a550  2c 52 30 2c 23 32 0d 9e  7a 10 42 45 51 20 78 64  |,R0,#2..z.BEQ xd|
0001a560  6f 6e 65 64 69 76 0d 9e  84 10 42 4d 49 20 78 64  |onediv....BMI xd|
0001a570  6f 6e 65 64 69 76 0d 9e  8e 0e 2e 78 73 61 6d 70  |onediv.....xsamp|
0001a580  6c 65 6c 70 0d 9e 98 21  4c 44 4d 49 41 20 52 31  |lelp...!LDMIA R1|
0001a590  2c 7b 52 35 2c 52 36 2c  52 37 2c 52 38 2c 52 39  |,{R5,R6,R7,R8,R9|
0001a5a0  2c 52 31 30 7d 0d 9e a2  10 41 44 44 20 52 38 2c  |,R10}....ADD R8,|
0001a5b0  52 38 2c 52 35 0d 9e ac  14 4d 4f 56 20 52 38 2c  |R8,R5....MOV R8,|
0001a5c0  52 38 2c 4c 53 52 20 23  31 0d 9e b6 10 41 44 44  |R8,LSR #1....ADD|
0001a5d0  20 52 39 2c 52 39 2c 52  36 0d 9e c0 14 4d 4f 56  | R9,R9,R6....MOV|
0001a5e0  20 52 39 2c 52 39 2c 4c  53 52 20 23 31 0d 9e ca  | R9,R9,LSR #1...|
0001a5f0  12 41 44 44 20 52 31 30  2c 52 31 30 2c 52 37 0d  |.ADD R10,R10,R7.|
0001a600  9e d4 16 4d 4f 56 20 52  31 30 2c 52 31 30 2c 4c  |...MOV R10,R10,L|
0001a610  53 52 20 23 31 0d 9e de  22 53 54 4d 49 41 20 52  |SR #1..."STMIA R|
0001a620  32 21 2c 7b 52 35 2c 52  36 2c 52 37 2c 52 38 2c  |2!,{R5,R6,R7,R8,|
0001a630  52 39 2c 52 31 30 7d 0d  9e e8 11 41 44 44 20 52  |R9,R10}....ADD R|
0001a640  31 2c 52 31 2c 23 31 32  0d 9e f2 1f 53 55 42 53  |1,R1,#12....SUBS|
0001a650  20 52 30 2c 52 30 2c 23  32 3a 42 47 54 20 78 73  | R0,R0,#2:BGT xs|
0001a660  61 6d 70 6c 65 6c 70 0d  9e fc 0d 2e 78 64 6f 6e  |amplelp.....xdon|
0001a670  65 64 69 76 0d 9f 06 17  4c 44 4d 49 41 20 52 31  |ediv....LDMIA R1|
0001a680  2c 7b 52 35 2c 52 36 2c  52 37 7d 0d 9f 10 0d 4d  |,{R5,R6,R7}....M|
0001a690  4f 56 20 52 38 2c 52 35  0d 9f 1a 0d 4d 4f 56 20  |OV R8,R5....MOV |
0001a6a0  52 39 2c 52 36 0d 9f 24  0e 4d 4f 56 20 52 31 30  |R9,R6..$.MOV R10|
0001a6b0  2c 52 37 0d 9f 2e 22 53  54 4d 49 41 20 52 32 21  |,R7..."STMIA R2!|
0001a6c0  2c 7b 52 35 2c 52 36 2c  52 37 2c 52 38 2c 52 39  |,{R5,R6,R7,R8,R9|
0001a6d0  2c 52 31 30 7d 0d 9f 38  0f 4d 4f 56 53 20 50 43  |,R10}..8.MOVS PC|
0001a6e0  2c 52 31 34 0d 9f 42 05  5d 0d 9f 4c 05 cc 0d 9f  |,R14..B.]..L....|
0001a6f0  56 0a 5b 4f 50 54 20 5a  0d 9f 6a 0d 2e 78 73 61  |V.[OPT Z..j..xsa|
0001a700  6d 70 6c 65 25 0d 9f 74  1c 4c 44 52 20 52 30 2c  |mple%..t.LDR R0,|
0001a710  5b 52 39 5d 3a 4c 44 52  20 52 30 2c 5b 52 30 5d  |[R9]:LDR R0,[R0]|
0001a720  20 0d 9f 7e 13 4c 44 52  20 52 31 2c 5b 52 39 2c  | ..~.LDR R1,[R9,|
0001a730  23 38 5d 20 0d 9f 88 15  4c 44 52 20 52 32 2c 5b  |#8] ....LDR R2,[|
0001a740  52 39 2c 23 32 2a 38 5d  20 0d 9f 92 21 4c 44 52  |R9,#2*8] ...!LDR|
0001a750  20 52 33 2c 5b 52 39 2c  23 33 2a 38 5d 3a 4c 44  | R3,[R9,#3*8]:LD|
0001a760  52 20 52 33 2c 5b 52 33  5d 20 0d 9f 9c 21 4c 44  |R R3,[R3] ...!LD|
0001a770  52 20 52 34 2c 5b 52 39  2c 23 34 2a 38 5d 3a 4c  |R R4,[R9,#4*8]:L|
0001a780  44 52 20 52 34 2c 5b 52  34 5d 20 0d 9f a6 0e 4d  |DR R4,[R4] ....M|
0001a790  4f 56 20 52 31 31 2c 52  34 0d 9f b0 0e 2e 78 73  |OV R11,R4.....xs|
0001a7a0  61 6d 70 6c 65 6c 70 0d  9f ba 17 4c 44 4d 49 41  |amplelp....LDMIA|
0001a7b0  20 52 31 2c 7b 52 35 2c  52 36 2c 52 37 7d 0d 9f  | R1,{R5,R6,R7}..|
0001a7c0  c4 2d 53 55 42 53 20 52  31 31 2c 52 31 31 2c 23  |.-SUBS R11,R11,#|
0001a7d0  31 3a ec 51 20 52 31 31  2c 52 34 3a 41 44 44 45  |1:.Q R11,R4:ADDE|
0001a7e0  51 20 52 31 2c 52 31 2c  23 31 32 0d 9f ce 13 53  |Q R1,R1,#12....S|
0001a7f0  55 42 53 20 52 31 32 2c  52 33 2c 23 31 20 0d 9f  |UBS R12,R3,#1 ..|
0001a800  d8 10 42 45 51 20 78 64  6f 6e 65 64 69 76 0d 9f  |..BEQ xdonediv..|
0001a810  e2 0b 2e 78 64 69 76 6c  70 0d 9f ec 0f 43 4d 50  |...xdivlp....CMP|
0001a820  20 52 31 32 2c 52 31 31  0d 9f f6 0f 42 43 43 20  | R12,R11....BCC |
0001a830  78 64 69 76 6c 70 32 0d  a0 00 4d 4c 44 4d 49 41  |xdivlp2...MLDMIA|
0001a840  20 52 31 21 2c 7b 52 38  2c 52 39 2c 52 31 30 7d  | R1!,{R8,R9,R10}|
0001a850  3a 4d 4c 41 20 52 35 2c  52 38 2c 52 31 31 2c 52  |:MLA R5,R8,R11,R|
0001a860  35 3a 4d 4c 41 20 52 36  2c 52 39 2c 52 31 31 2c  |5:MLA R6,R9,R11,|
0001a870  52 36 3a 4d 4c 41 20 52  37 2c 52 31 30 2c 52 31  |R6:MLA R7,R10,R1|
0001a880  31 2c 52 37 0d a0 0a 1f  53 55 42 53 20 52 31 32  |1,R7....SUBS R12|
0001a890  2c 52 31 32 2c 52 31 31  3a 4d 4f 56 20 52 31 31  |,R12,R11:MOV R11|
0001a8a0  2c 52 34 0d a0 14 0e 42  4e 45 20 78 64 69 76 6c  |,R4....BNE xdivl|
0001a8b0  70 0d a0 1e 0e 42 20 78  64 6f 6e 65 64 69 76 0d  |p....B xdonediv.|
0001a8c0  a0 28 0c 2e 78 64 69 76  6c 70 32 0d a0 32 18 4c  |.(..xdivlp2..2.L|
0001a8d0  44 4d 49 41 20 52 31 2c  7b 52 38 2c 52 39 2c 52  |DMIA R1,{R8,R9,R|
0001a8e0  31 30 7d 0d a0 3c 2d 53  55 42 53 20 52 31 31 2c  |10}..<-SUBS R11,|
0001a8f0  52 31 31 2c 23 31 3a ec  51 20 52 31 31 2c 52 34  |R11,#1:.Q R11,R4|
0001a900  3a 41 44 44 45 51 20 52  31 2c 52 31 2c 23 31 32  |:ADDEQ R1,R1,#12|
0001a910  0d a0 46 2b 41 44 44 20  52 35 2c 52 35 2c 52 38  |..F+ADD R5,R5,R8|
0001a920  3a 41 44 44 20 52 36 2c  52 36 2c 52 39 3a 41 44  |:ADD R6,R6,R9:AD|
0001a930  44 20 52 37 2c 52 37 2c  52 31 30 0d a0 50 1e 53  |D R7,R7,R10..P.S|
0001a940  55 42 53 20 52 31 32 2c  52 31 32 2c 23 31 3a 42  |UBS R12,R12,#1:B|
0001a950  4e 45 20 78 64 69 76 6c  70 0d a0 5a 0d 2e 78 64  |NE xdivlp..Z..xd|
0001a960  6f 6e 65 64 69 76 0d a0  64 18 53 54 4d 49 41 20  |onediv..d.STMIA |
0001a970  52 32 21 2c 7b 52 35 2c  52 36 2c 52 37 7d 0d a0  |R2!,{R5,R6,R7}..|
0001a980  6e 1f 53 55 42 53 20 52  30 2c 52 30 2c 23 31 3a  |n.SUBS R0,R0,#1:|
0001a990  42 50 4c 20 78 73 61 6d  70 6c 65 6c 70 0d a0 78  |BPL xsamplelp..x|
0001a9a0  0f 4d 4f 56 53 20 50 43  2c 52 31 34 0d a0 82 05  |.MOVS PC,R14....|
0001a9b0  5d 0d a0 8c 05 cd 0d a0  96 05 cb 0d a0 a0 14 e7  |]...............|
0001a9c0  63 6f 6d 70 72 65 73 73  69 6f 6e 3d 35 20 8c 0d  |compression=5 ..|
0001a9d0  a0 aa 0a 5b 4f 50 54 20  5a 0d a0 be 14 2e 66 69  |...[OPT Z.....fi|
0001a9e0  72 73 74 63 6f 64 65 20  44 43 44 20 30 0d a0 c8  |rstcode DCD 0...|
0001a9f0  12 2e 6f 6c 64 63 6f 64  65 20 44 43 44 20 30 0d  |..oldcode DCD 0.|
0001aa00  a0 d2 1d 2e 63 6f 64 65  73 69 7a 65 20 44 43 44  |....codesize DCD|
0001aa10  20 73 65 74 63 6f 64 65  73 25 2b 31 0d a0 dc 13  | setcodes%+1....|
0001aa20  2e 73 74 61 63 6b 20 44  43 44 20 73 74 6b 25 0d  |.stack DCD stk%.|
0001aa30  a0 e6 10 2e 73 70 20 44  43 44 20 73 74 6b 25 0d  |....sp DCD stk%.|
0001aa40  a0 f0 1d 2e 6d 61 78 63  6f 64 65 20 44 43 44 20  |....maxcode DCD |
0001aa50  63 6c 65 61 72 63 6f 64  65 25 2b 32 0d a0 fa 21  |clearcode%+2...!|
0001aa60  2e 6d 61 78 63 6f 64 65  73 69 7a 65 20 44 43 44  |.maxcodesize DCD|
0001aa70  20 32 2a 63 6c 65 61 72  63 6f 64 65 25 0d a1 04  | 2*clearcode%...|
0001aa80  0f 2e 4c 5a 57 64 65 63  6f 64 65 25 0d a1 0e 40  |..LZWdecode%...@|
0001aa90  4c 44 52 20 52 32 2c 66  69 72 73 74 63 6f 64 65  |LDR R2,firstcode|
0001aaa0  3a 4c 44 52 20 52 33 2c  6f 6c 64 63 6f 64 65 3a  |:LDR R3,oldcode:|
0001aab0  4c 44 52 20 52 34 2c 73  74 61 63 6b 3a 4c 44 52  |LDR R4,stack:LDR|
0001aac0  20 52 35 2c 63 6f 64 65  73 69 7a 65 0d a1 18 2f  | R5,codesize.../|
0001aad0  4c 44 52 20 52 36 2c 73  70 3a 4c 44 52 20 52 37  |LDR R6,sp:LDR R7|
0001aae0  2c 6d 61 78 63 6f 64 65  3a 4c 44 52 20 52 38 2c  |,maxcode:LDR R8,|
0001aaf0  6d 61 78 63 6f 64 65 73  69 7a 65 0d a1 22 1f 4c  |maxcodesize..".L|
0001ab00  44 52 20 52 31 30 2c 5b  52 39 5d 3a 4c 44 52 20  |DR R10,[R9]:LDR |
0001ab10  52 31 30 2c 5b 52 31 30  5d 20 0d a1 2c 22 4c 44  |R10,[R10] ..,"LD|
0001ab20  52 20 52 31 31 2c 5b 52  39 2c 23 38 5d 3a 4c 44  |R R11,[R9,#8]:LD|
0001ab30  52 20 52 31 31 2c 5b 52  31 31 5d 20 0d a1 36 15  |R R11,[R11] ..6.|
0001ab40  4c 44 52 20 52 31 32 2c  5b 52 39 2c 23 32 34 5d  |LDR R12,[R9,#24]|
0001ab50  20 0d a1 40 14 53 54 4d  46 44 20 53 50 20 21 2c  | ..@.STMFD SP !,|
0001ab60  7b 52 31 34 7d 0d a1 4a  0c 2e 6c 7a 77 6c 6f 6f  |{R14}..J..lzwloo|
0001ab70  70 0d a1 54 0d 43 4d 50  20 52 36 2c 52 34 0d a1  |p..T.CMP R6,R4..|
0001ab80  5e 12 42 48 49 20 6c 7a  77 75 6e 73 74 61 63 6b  |^.BHI lzwunstack|
0001ab90  0d a1 68 0e 2e 6c 7a 77  65 6e 67 69 6e 65 0d a1  |..h..lzwengine..|
0001aba0  72 0e 42 4c 20 67 65 74  63 6f 64 65 0d a1 7c 16  |r.BL getcode..|.|
0001abb0  43 4d 50 20 52 30 2c 23  63 6c 65 61 72 63 6f 64  |CMP R0,#clearcod|
0001abc0  65 25 0d a1 86 10 42 45  51 20 6c 7a 77 63 6c 65  |e%....BEQ lzwcle|
0001abd0  61 72 0d a1 9a 0e 4d 4f  56 20 52 31 2c 52 30 20  |ar....MOV R1,R0 |
0001abe0  0d a1 a4 0e 43 4d 50 20  52 30 2c 52 37 20 0d a1  |....CMP R0,R7 ..|
0001abf0  ae 16 53 54 52 43 53 42  20 52 32 2c 5b 52 36 5d  |..STRCSB R2,[R6]|
0001ac00  2c 23 31 20 0d a1 b8 10  4d 4f 56 43 53 20 52 30  |,#1 ....MOVCS R0|
0001ac10  2c 52 33 20 0d a1 c2 16  43 4d 50 20 52 30 2c 23  |,R3 ....CMP R0,#|
0001ac20  63 6c 65 61 72 63 6f 64  65 25 0d a1 cc 13 42 43  |clearcode%....BC|
0001ac30  43 20 6c 7a 77 64 6f 6e  65 70 75 73 68 0d a1 d6  |C lzwdonepush...|
0001ac40  11 2e 6c 7a 77 70 75 73  68 74 61 62 6c 65 0d a1  |..lzwpushtable..|
0001ac50  e0 1c 4c 44 52 20 52 31  34 2c 5b 52 31 32 2c 52  |..LDR R14,[R12,R|
0001ac60  30 2c 4c 53 4c 20 23 32  5d 20 0d a1 ea 15 53 54  |0,LSL #2] ....ST|
0001ac70  52 42 20 52 31 34 2c 5b  52 36 5d 2c 23 31 20 0d  |RB R14,[R6],#1 .|
0001ac80  a1 f4 17 4d 4f 56 20 52  30 2c 52 31 34 2c 4c 53  |...MOV R0,R14,LS|
0001ac90  52 20 23 31 36 20 0d a1  fe 16 43 4d 50 20 52 30  |R #16 ....CMP R0|
0001aca0  2c 23 63 6c 65 61 72 63  6f 64 65 25 0d a2 08 14  |,#clearcode%....|
0001acb0  42 43 53 20 6c 7a 77 70  75 73 68 74 61 62 6c 65  |BCS lzwpushtable|
0001acc0  0d a2 12 10 2e 6c 7a 77  64 6f 6e 65 70 75 73 68  |.....lzwdonepush|
0001acd0  0d a2 1c 1a 4c 44 52 20  52 32 2c 5b 52 31 32 2c  |....LDR R2,[R12,|
0001ace0  52 30 2c 4c 53 4c 20 23  32 5d 0d a2 26 16 42 49  |R0,LSL #2]..&.BI|
0001acf0  43 20 52 32 2c 52 32 2c  23 26 46 46 30 30 30 30  |C R2,R2,#&FF0000|
0001ad00  0d a2 30 19 42 49 43 20  52 32 2c 52 32 2c 23 26  |..0.BIC R2,R2,#&|
0001ad10  46 46 30 30 30 30 30 30  20 0d a2 3a 14 53 54 52  |FF000000 ..:.STR|
0001ad20  42 20 52 32 2c 5b 52 36  5d 2c 23 31 20 0d a2 44  |B R2,[R6],#1 ..D|
0001ad30  10 43 4d 50 20 52 37 2c  23 34 30 39 36 0d a2 4e  |.CMP R7,#4096..N|
0001ad40  11 42 43 53 20 6c 7a 77  6e 6f 63 6f 64 65 0d a2  |.BCS lzwnocode..|
0001ad50  58 17 84 52 20 52 30 2c  52 32 2c 52 33 2c 4c 53  |X..R R0,R2,R3,LS|
0001ad60  4c 20 23 31 36 0d a2 62  1b 53 54 52 20 52 30 2c  |L #16..b.STR R0,|
0001ad70  5b 52 31 32 2c 52 37 2c  4c 53 4c 20 23 32 5d 20  |[R12,R7,LSL #2] |
0001ad80  0d a2 6c 11 41 44 44 20  52 37 2c 52 37 2c 23 31  |..l.ADD R7,R7,#1|
0001ad90  20 0d a2 76 0d 43 4d 50  20 52 37 2c 52 38 0d a2  | ..v.CMP R7,R8..|
0001ada0  80 12 42 43 43 20 6c 7a  77 6e 6f 63 6f 64 65 20  |..BCC lzwnocode |
0001adb0  0d a2 8a 11 43 4d 50 20  52 38 2c 23 34 30 39 36  |....CMP R8,#4096|
0001adc0  20 0d a2 94 13 41 44 44  43 43 20 52 35 2c 52 35  | ....ADDCC R5,R5|
0001add0  2c 23 31 20 0d a2 9e 17  4d 4f 56 43 43 20 52 38  |,#1 ....MOVCC R8|
0001ade0  2c 52 38 2c 4c 53 4c 20  23 31 20 0d a2 a8 05 5d  |,R8,LSL #1 ....]|
0001adf0  0d a2 b2 10 e7 66 6c 61  67 3d 31 35 30 30 20 8c  |.....flag=1500 .|
0001ae00  0d a2 bc 0a 5b 4f 50 54  20 5a 0d a2 c6 11 84 52  |....[OPT Z.....R|
0001ae10  43 43 20 52 38 2c 52 38  2c 23 31 0d a2 d0 05 5d  |CC R8,R8,#1....]|
0001ae20  0d a2 da 05 cd 0d a2 e4  0a 5b 4f 50 54 20 5a 0d  |.........[OPT Z.|
0001ae30  a2 ee 0e 2e 6c 7a 77 6e  6f 63 6f 64 65 0d a2 f8  |....lzwnocode...|
0001ae40  0e 4d 4f 56 20 52 33 2c  52 31 20 0d a3 02 0e 43  |.MOV R3,R1 ....C|
0001ae50  4d 50 20 52 36 2c 52 34  20 0d a3 0c 11 42 4c 53  |MP R6,R4 ....BLS|
0001ae60  20 6c 7a 77 65 6e 67 69  6e 65 0d a3 16 0f 2e 6c  | lzwengine.....l|
0001ae70  7a 77 75 6e 73 74 61 63  6b 0d a3 20 16 4c 44 52  |zwunstack.. .LDR|
0001ae80  42 20 52 30 2c 5b 52 36  2c 23 2d 31 5d 21 20 0d  |B R0,[R6,#-1]! .|
0001ae90  a3 2a 0f 2e 6c 7a 77 6c  6f 6f 70 65 6e 64 0d a3  |.*..lzwloopend..|
0001aea0  34 14 53 54 52 42 20 52  30 2c 5b 52 31 31 5d 2c  |4.STRB R0,[R11],|
0001aeb0  23 31 0d a3 3e 13 53 55  42 53 20 52 31 30 2c 52  |#1..>.SUBS R10,R|
0001aec0  31 30 2c 23 31 0d a3 48  0f 42 4e 45 20 6c 7a 77  |10,#1..H.BNE lzw|
0001aed0  6c 6f 6f 70 0d a3 52 33  53 54 52 20 52 32 2c 66  |loop..R3STR R2,f|
0001aee0  69 72 73 74 63 6f 64 65  3a 53 54 52 20 52 33 2c  |irstcode:STR R3,|
0001aef0  6f 6c 64 63 6f 64 65 3a  53 54 52 20 52 35 2c 63  |oldcode:STR R5,c|
0001af00  6f 64 65 73 69 7a 65 0d  a3 5c 2f 53 54 52 20 52  |odesize..\/STR R|
0001af10  36 2c 73 70 3a 53 54 52  20 52 37 2c 6d 61 78 63  |6,sp:STR R7,maxc|
0001af20  6f 64 65 3a 53 54 52 20  52 38 2c 6d 61 78 63 6f  |ode:STR R8,maxco|
0001af30  64 65 73 69 7a 65 0d a3  66 14 4c 44 4d 46 44 20  |desize..f.LDMFD |
0001af40  53 50 20 21 2c 7b 50 43  7d 5e 0d a3 70 0d 2e 6c  |SP !,{PC}^..p..l|
0001af50  7a 77 63 6c 65 61 72 0d  a3 7a 0d 4d 4f 56 20 52  |zwclear..z.MOV R|
0001af60  30 2c 23 30 0d a3 84 0e  4d 4f 56 20 52 33 2c 52  |0,#0....MOV R3,R|
0001af70  31 32 0d a3 8e 14 2e 6c  7a 77 64 65 66 61 75 6c  |12.....lzwdefaul|
0001af80  74 74 61 62 6c 65 0d a3  98 12 53 54 52 20 52 30  |ttable....STR R0|
0001af90  2c 5b 52 33 5d 2c 23 34  0d a3 a2 23 41 44 44 20  |,[R3],#4...#ADD |
0001afa0  52 30 2c 52 30 2c 23 31  3a 43 4d 50 20 52 30 2c  |R0,R0,#1:CMP R0,|
0001afb0  23 63 6c 65 61 72 63 6f  64 65 25 0d a3 ac 17 42  |#clearcode%....B|
0001afc0  43 43 20 6c 7a 77 64 65  66 61 75 6c 74 74 61 62  |CC lzwdefaulttab|
0001afd0  6c 65 0d a3 b6 17 4d 4f  56 20 52 35 2c 23 73 65  |le....MOV R5,#se|
0001afe0  74 63 6f 64 65 73 25 2b  31 0d a3 c0 16 4d 4f 56  |tcodes%+1....MOV|
0001aff0  20 52 37 2c 23 63 6c 65  61 72 63 6f 64 65 25 0d  | R7,#clearcode%.|
0001b000  a3 ca 15 4d 4f 56 20 52  38 2c 52 37 2c 4c 53 4c  |...MOV R8,R7,LSL|
0001b010  20 23 31 20 0d a3 d4 05  5d 0d a3 de 10 e7 66 6c  | #1 ....].....fl|
0001b020  61 67 3d 31 35 30 30 20  8c 0d a3 e8 0a 5b 4f 50  |ag=1500 .....[OP|
0001b030  54 20 5a 0d a3 f2 10 53  55 42 20 52 38 2c 52 38  |T Z....SUB R8,R8|
0001b040  2c 23 31 0d a3 fc 05 5d  0d a4 06 05 cd 0d a4 10  |,#1....]........|
0001b050  0a 5b 4f 50 54 20 5a 0d  a4 1a 11 41 44 44 20 52  |.[OPT Z....ADD R|
0001b060  37 2c 52 37 2c 23 32 20  0d a4 24 0e 42 4c 20 67  |7,R7,#2 ..$.BL g|
0001b070  65 74 63 6f 64 65 0d a4  2e 0e 4d 4f 56 20 52 32  |etcode....MOV R2|
0001b080  2c 52 30 20 0d a4 38 0e  4d 4f 56 20 52 33 2c 52  |,R0 ..8.MOV R3,R|
0001b090  30 20 0d a4 42 0e 4d 4f  56 20 52 36 2c 52 34 20  |0 ..B.MOV R6,R4 |
0001b0a0  0d a4 4c 10 42 20 6c 7a  77 6c 6f 6f 70 65 6e 64  |..L.B lzwloopend|
0001b0b0  0d a4 60 11 2e 63 75 72  62 69 74 20 44 43 44 20  |..`..curbit DCD |
0001b0c0  30 0d a4 6a 12 2e 6c 61  73 74 62 69 74 20 44 43  |0..j..lastbit DC|
0001b0d0  44 20 30 0d a4 74 11 2e  62 75 66 20 44 43 44 20  |D 0..t..buf DCD |
0001b0e0  62 75 66 25 0d a4 7e 0c  2e 67 65 74 63 6f 64 65  |buf%..~..getcode|
0001b0f0  0d a4 88 19 53 54 4d 46  44 20 53 50 20 21 2c 7b  |....STMFD SP !,{|
0001b100  52 36 2c 52 37 2c 52 38  7d 0d a4 92 11 41 44 52  |R6,R7,R8}....ADR|
0001b110  20 52 36 2c 63 75 72 62  69 74 0d a4 9c 17 4c 44  | R6,curbit....LD|
0001b120  4d 49 41 20 52 36 2c 7b  52 36 2c 52 37 2c 52 38  |MIA R6,{R6,R7,R8|
0001b130  7d 0d a4 a6 11 41 44 44  20 52 31 2c 52 35 2c 52  |}....ADD R1,R5,R|
0001b140  36 20 0d a4 b0 0d 43 4d  50 20 52 31 2c 52 37 0d  |6 ....CMP R1,R7.|
0001b150  a4 ba 14 42 43 53 20 6e  65 65 64 6d 6f 72 65 64  |...BCS needmored|
0001b160  61 74 61 0d a4 c4 0f 2e  73 69 6d 70 6c 65 63 6f  |ata.....simpleco|
0001b170  64 65 0d a4 ce 17 41 44  44 20 52 37 2c 52 38 2c  |de....ADD R7,R8,|
0001b180  52 36 2c 4c 53 52 20 23  33 0d a4 d8 10 42 49 43  |R6,LSR #3....BIC|
0001b190  20 52 37 2c 52 37 2c 23  33 0d a4 e2 14 4c 44 4d  | R7,R7,#3....LDM|
0001b1a0  49 41 20 52 37 2c 7b 52  30 2c 52 37 7d 0d a4 ec  |IA R7,{R0,R7}...|
0001b1b0  05 5d 0d a4 f6 10 e7 66  6c 61 67 3d 31 35 30 30  |.].....flag=1500|
0001b1c0  20 8c 0d a5 00 0a 5b 4f  50 54 20 5a 0d a5 0a 16  | .....[OPT Z....|
0001b1d0  82 20 52 31 2c 52 30 2c  52 30 2c 52 4f 52 20 23  |. R1,R0,R0,ROR #|
0001b1e0  31 36 0d a5 14 16 42 49  43 20 52 31 2c 52 31 2c  |16....BIC R1,R1,|
0001b1f0  23 26 46 46 30 30 30 30  0d a5 1e 14 4d 4f 56 20  |#&FF0000....MOV |
0001b200  52 30 2c 52 30 2c 52 4f  52 20 23 38 0d a5 28 15  |R0,R0,ROR #8..(.|
0001b210  82 20 52 30 2c 52 30 2c  52 31 2c 4c 53 52 20 23  |. R0,R0,R1,LSR #|
0001b220  38 0d a5 32 16 82 20 52  31 2c 52 37 2c 52 37 2c  |8..2.. R1,R7,R7,|
0001b230  52 4f 52 20 23 31 36 0d  a5 3c 16 42 49 43 20 52  |ROR #16..<.BIC R|
0001b240  31 2c 52 31 2c 23 26 46  46 30 30 30 30 0d a5 46  |1,R1,#&FF0000..F|
0001b250  14 4d 4f 56 20 52 37 2c  52 37 2c 52 4f 52 20 23  |.MOV R7,R7,ROR #|
0001b260  38 0d a5 50 15 82 20 52  37 2c 52 37 2c 52 31 2c  |8..P.. R7,R7,R1,|
0001b270  4c 53 52 20 23 38 0d a5  5a 48 80 53 20 52 31 2c  |LSR #8..ZH.S R1,|
0001b280  52 36 2c 23 33 31 3a 4d  4f 56 4e 45 20 52 30 2c  |R6,#31:MOVNE R0,|
0001b290  52 30 2c 4c 53 4c 20 52  31 3a 52 53 42 4e 45 20  |R0,LSL R1:RSBNE |
0001b2a0  52 31 2c 52 31 2c 23 33  32 3a 84 52 4e 45 20 52  |R1,R1,#32:.RNE R|
0001b2b0  30 2c 52 30 2c 52 37 2c  4c 53 52 20 52 31 0d a5  |0,R0,R7,LSR R1..|
0001b2c0  64 11 52 53 42 20 52 31  2c 52 35 2c 23 33 32 0d  |d.RSB R1,R5,#32.|
0001b2d0  a5 6e 14 4d 4f 56 20 52  30 2c 52 30 2c 4c 53 52  |.n.MOV R0,R0,LSR|
0001b2e0  20 52 31 0d a5 78 05 5d  0d a5 82 05 cc 0d a5 8c  | R1..x.]........|
0001b2f0  0a 5b 4f 50 54 20 5a 0d  a5 96 48 80 53 20 52 31  |.[OPT Z...H.S R1|
0001b300  2c 52 36 2c 23 33 31 3a  4d 4f 56 4e 45 20 52 30  |,R6,#31:MOVNE R0|
0001b310  2c 52 30 2c 4c 53 52 20  52 31 3a 52 53 42 4e 45  |,R0,LSR R1:RSBNE|
0001b320  20 52 31 2c 52 31 2c 23  33 32 3a 84 52 4e 45 20  | R1,R1,#32:.RNE |
0001b330  52 30 2c 52 30 2c 52 37  2c 4c 53 4c 20 52 31 0d  |R0,R0,R7,LSL R1.|
0001b340  a5 a0 21 4d 56 4e 20 52  31 2c 23 30 3a 42 49 43  |..!MVN R1,#0:BIC|
0001b350  20 52 30 2c 52 30 2c 52  31 2c 4c 53 4c 20 52 35  | R0,R0,R1,LSL R5|
0001b360  0d a5 aa 05 5d 0d a5 b4  05 cd 0d a5 be 0a 5b 4f  |....].........[O|
0001b370  50 54 20 5a 0d a5 c8 10  41 44 44 20 52 36 2c 52  |PT Z....ADD R6,R|
0001b380  36 2c 52 35 0d a5 d2 11  53 54 52 20 52 36 2c 63  |6,R5....STR R6,c|
0001b390  75 72 62 69 74 0d a5 dc  19 4c 44 4d 46 44 20 53  |urbit....LDMFD S|
0001b3a0  50 20 21 2c 7b 52 36 2c  52 37 2c 52 38 7d 0d a5  |P !,{R6,R7,R8}..|
0001b3b0  e6 0e 4d 4f 56 20 50 43  2c 52 31 34 0d a5 f0 11  |..MOV PC,R14....|
0001b3c0  2e 6e 65 65 64 6d 6f 72  65 64 61 74 61 0d a5 fa  |.needmoredata...|
0001b3d0  1d 53 54 4d 46 44 20 53  50 20 21 2c 7b 52 32 2c  |.STMFD SP !,{R2,|
0001b3e0  52 33 2c 52 34 2c 52 31  34 7d 0d a6 04 14 4d 4f  |R3,R4,R14}....MO|
0001b3f0  56 20 52 33 2c 52 37 2c  4c 53 52 20 23 33 0d a6  |V R3,R7,LSR #3..|
0001b400  0e 11 53 55 42 20 52 30  2c 52 33 2c 23 32 20 0d  |..SUB R0,R3,#2 .|
0001b410  a6 18 13 4c 44 52 42 20  52 30 2c 5b 52 38 2c 52  |...LDRB R0,[R8,R|
0001b420  30 5d 0d a6 22 10 53 54  52 42 20 52 30 2c 5b 52  |0]..".STRB R0,[R|
0001b430  38 5d 0d a6 2c 11 53 55  42 20 52 30 2c 52 33 2c  |8]..,.SUB R0,R3,|
0001b440  23 31 20 0d a6 36 13 4c  44 52 42 20 52 30 2c 5b  |#1 ..6.LDRB R0,[|
0001b450  52 38 2c 52 30 5d 0d a6  40 13 53 54 52 42 20 52  |R8,R0]..@.STRB R|
0001b460  30 2c 5b 52 38 2c 23 31  5d 0d a6 4a 13 4c 44 52  |0,[R8,#1]..J.LDR|
0001b470  20 52 31 2c 5b 52 39 2c  23 31 36 5d 0d a6 54 10  | R1,[R9,#16]..T.|
0001b480  4c 44 52 20 52 31 2c 5b  52 31 5d 20 0d a6 5e 05  |LDR R1,[R1] ..^.|
0001b490  5d 0d a6 68 10 e7 66 6c  61 67 3d 31 35 30 30 20  |]..h..flag=1500 |
0001b4a0  8c 0d a6 72 0a 5b 4f 50  54 20 5a 0d a6 7c 0f 4d  |...r.[OPT Z..|.M|
0001b4b0  4f 56 20 52 30 2c 23 32  35 36 0d a6 86 0f 4d 4f  |OV R0,#256....MO|
0001b4c0  56 20 52 33 2c 23 32 35  36 0d a6 90 05 5d 0d a6  |V R3,#256....]..|
0001b4d0  9a 05 cc 0d a6 a4 0a 5b  4f 50 54 20 5a 0d a6 ae  |.......[OPT Z...|
0001b4e0  15 42 4c 20 62 79 74 65  66 72 6f 6d 63 61 63 68  |.BL bytefromcach|
0001b4f0  65 25 0d a6 b8 0f 4d 4f  56 53 20 52 33 2c 52 30  |e%....MOVS R3,R0|
0001b500  20 0d a6 c2 13 42 45 51  20 73 69 6d 70 6c 65 63  | ....BEQ simplec|
0001b510  6f 64 65 31 0d a6 cc 05  5d 0d a6 d6 05 cd 0d a6  |ode1....].......|
0001b520  e0 0a 5b 4f 50 54 20 5a  0d a6 ea 11 53 55 42 20  |..[OPT Z....SUB |
0001b530  52 36 2c 52 36 2c 52 37  20 0d a6 f4 11 41 44 44  |R6,R6,R7 ....ADD|
0001b540  20 52 36 2c 52 36 2c 23  31 36 0d a6 fe 11 41 44  | R6,R6,#16....AD|
0001b550  44 20 52 30 2c 52 30 2c  23 32 20 0d a7 08 14 4d  |D R0,R0,#2 ....M|
0001b560  4f 56 20 52 37 2c 52 30  2c 4c 53 4c 20 23 33 0d  |OV R7,R0,LSL #3.|
0001b570  a7 12 12 53 54 52 20 52  37 2c 6c 61 73 74 62 69  |...STR R7,lastbi|
0001b580  74 0d a7 1c 11 41 44 44  20 52 32 2c 52 38 2c 23  |t....ADD R2,R8,#|
0001b590  32 20 0d a7 26 1a 42 4c  20 6d 75 6c 74 69 62 79  |2 ..&.BL multiby|
0001b5a0  74 65 66 72 6f 6d 63 61  63 68 65 25 0d a7 30 10  |tefromcache%..0.|
0001b5b0  2e 73 69 6d 70 6c 65 63  6f 64 65 31 0d a7 3a 1d  |.simplecode1..:.|
0001b5c0  4c 44 4d 46 44 20 53 50  20 21 2c 7b 52 32 2c 52  |LDMFD SP !,{R2,R|
0001b5d0  33 2c 52 34 2c 52 31 34  7d 0d a7 44 10 42 20 73  |3,R4,R14}..D.B s|
0001b5e0  69 6d 70 6c 65 63 6f 64  65 0d a7 4e 05 5d 0d a7  |implecode..N.]..|
0001b5f0  58 05 cd 0d a7 62 0d e7  72 61 6e 67 65 25 20 8c  |X....b..range% .|
0001b600  0d a7 6c 0a 5b 4f 50 54  20 5a 0d a7 80 0c 2e 6d  |..l.[OPT Z.....m|
0001b610  61 78 6d 69 6e 25 0d a7  8a 1c 4c 44 52 20 52 30  |axmin%....LDR R0|
0001b620  2c 5b 52 39 5d 3a 4c 44  52 20 52 30 2c 5b 52 30  |,[R9]:LDR R0,[R0|
0001b630  5d 20 0d a7 94 13 4c 44  52 20 52 31 2c 5b 52 39  |] ....LDR R1,[R9|
0001b640  2c 23 38 5d 20 0d a7 9e  0e 4c 44 52 20 52 32 2c  |,#8] ....LDR R2,|
0001b650  6d 69 6e 0d a7 a8 0e 4c  44 52 20 52 33 2c 6d 61  |min....LDR R3,ma|
0001b660  78 0d a7 b2 0d 2e 6d 61  78 6d 69 6e 6c 70 0d a7  |x.....maxminlp..|
0001b670  bc 12 4c 44 52 20 52 34  2c 5b 52 31 5d 2c 23 34  |..LDR R4,[R1],#4|
0001b680  0d a7 c6 1a 43 4d 50 20  52 34 2c 52 33 3a 4d 4f  |....CMP R4,R3:MO|
0001b690  56 43 53 20 52 33 2c 52  34 20 0d a7 d0 1a 43 4d  |VCS R3,R4 ....CM|
0001b6a0  50 20 52 34 2c 52 32 3a  4d 4f 56 43 43 20 52 32  |P R4,R2:MOVCC R2|
0001b6b0  2c 52 34 20 0d a7 da 1e  53 55 42 53 20 52 30 2c  |,R4 ....SUBS R0,|
0001b6c0  52 30 2c 23 31 3a 42 4e  45 20 6d 61 78 6d 69 6e  |R0,#1:BNE maxmin|
0001b6d0  6c 70 0d a7 e4 0e 53 54  52 20 52 32 2c 6d 69 6e  |lp....STR R2,min|
0001b6e0  0d a7 ee 0e 53 54 52 20  52 33 2c 6d 61 78 0d a7  |....STR R3,max..|
0001b6f0  f8 0f 4d 4f 56 53 20 50  43 2c 52 31 34 0d a8 02  |..MOVS PC,R14...|
0001b700  0e 2e 6d 69 6e 20 44 43  44 20 46 0d a8 0c 0e 2e  |..min DCD F.....|
0001b710  6d 61 78 20 44 43 44 20  30 0d a8 16 05 5d 0d a8  |max DCD 0....]..|
0001b720  20 05 cd 0d a8 2a 0f e7  73 68 61 72 70 65 6e 25  | ....*..sharpen%|
0001b730  20 8c 0d a8 34 39 73 68  61 72 70 3d 28 63 6f 6c  | ...49sharp=(col|
0001b740  2b 31 29 2a 34 3a e7 73  68 61 72 70 65 6e 25 3c  |+1)*4:.sharpen%<|
0001b750  3e 38 20 73 68 61 72 70  6d 75 6c 25 3d 46 2f 28  |>8 sharpmul%=F/(|
0001b760  73 68 61 72 70 65 6e 25  2d 38 29 0d a8 3e 0a 5b  |sharpen%-8)..>.[|
0001b770  4f 50 54 20 5a 0d a8 52  0b 2e 73 68 61 72 70 25  |OPT Z..R..sharp%|
0001b780  0d a8 5c 1c 4c 44 52 20  52 30 2c 5b 52 39 5d 3a  |..\.LDR R0,[R9]:|
0001b790  4c 44 52 20 52 30 2c 5b  52 30 5d 20 0d a8 66 13  |LDR R0,[R0] ..f.|
0001b7a0  4c 44 52 20 52 31 2c 5b  52 39 2c 23 38 5d 20 0d  |LDR R1,[R9,#8] .|
0001b7b0  a8 70 14 4c 44 52 20 52  32 2c 5b 52 39 2c 23 31  |.p.LDR R2,[R9,#1|
0001b7c0  36 5d 20 0d a8 7a 14 4c  44 52 20 52 33 2c 5b 52  |6] ..z.LDR R3,[R|
0001b7d0  39 2c 23 32 34 5d 20 0d  a8 84 14 4c 44 52 20 52  |9,#24] ....LDR R|
0001b7e0  34 2c 5b 52 39 2c 23 33  32 5d 20 0d a8 8e 05 5d  |4,[R9,#32] ....]|
0001b7f0  0d a8 98 11 c8 8e 20 73  68 61 72 70 65 6e 25 20  |...... sharpen% |
0001b800  ca 0d a8 a2 12 c9 20 38  2c 39 2c 31 32 2c 31 36  |...... 8,9,12,16|
0001b810  2c 32 34 0d a8 ac 05 7f  0d a8 b6 0a 5b 4f 50 54  |,24.........[OPT|
0001b820  20 5a 0d a8 c0 1b 4d 4f  56 20 52 38 2c 23 73 68  | Z....MOV R8,#sh|
0001b830  61 72 70 6d 75 6c 25 20  80 20 26 46 46 0d a8 ca  |arpmul% . &FF...|
0001b840  1f 84 52 20 52 38 2c 52  38 2c 23 73 68 61 72 70  |..R R8,R8,#sharp|
0001b850  6d 75 6c 25 20 80 20 26  46 46 30 30 0d a8 d4 23  |mul% . &FF00...#|
0001b860  4d 4f 56 20 52 39 2c 23  28 73 68 61 72 70 6d 75  |MOV R9,#(sharpmu|
0001b870  6c 25 20 3e 3e 20 31 36  29 20 80 20 26 46 46 0d  |l% >> 16) . &FF.|
0001b880  a8 de 27 84 52 20 52 39  2c 52 39 2c 23 28 73 68  |..'.R R9,R9,#(sh|
0001b890  61 72 70 6d 75 6c 25 20  3e 3e 20 31 36 29 20 80  |arpmul% >> 16) .|
0001b8a0  20 26 46 46 30 30 0d a8  e8 05 5d 0d a8 f2 05 cb  | &FF00....].....|
0001b8b0  0d a8 fc 0a 5b 4f 50 54  20 5a 0d a9 06 0c 2e 73  |....[OPT Z.....s|
0001b8c0  68 61 72 70 6c 70 0d a9  10 17 4c 44 52 20 52 35  |harplp....LDR R5|
0001b8d0  2c 5b 52 31 2c 23 2d 73  68 61 72 70 5d 0d a9 1a  |,[R1,#-sharp]...|
0001b8e0  23 4c 44 52 20 52 36 2c  5b 52 31 2c 23 73 68 61  |#LDR R6,[R1,#sha|
0001b8f0  72 70 5d 3a 41 44 44 20  52 35 2c 52 35 2c 52 36  |rp]:ADD R5,R5,R6|
0001b900  0d a9 24 1f 4c 44 52 20  52 36 2c 5b 52 31 5d 2c  |..$.LDR R6,[R1],|
0001b910  23 34 3a 41 44 44 20 52  35 2c 52 35 2c 52 36 0d  |#4:ADD R5,R5,R6.|
0001b920  a9 2e 24 4c 44 52 20 52  36 2c 5b 52 33 2c 23 2d  |..$LDR R6,[R3,#-|
0001b930  73 68 61 72 70 5d 3a 41  44 44 20 52 35 2c 52 35  |sharp]:ADD R5,R5|
0001b940  2c 52 36 0d a9 38 23 4c  44 52 20 52 36 2c 5b 52  |,R6..8#LDR R6,[R|
0001b950  33 2c 23 73 68 61 72 70  5d 3a 41 44 44 20 52 35  |3,#sharp]:ADD R5|
0001b960  2c 52 35 2c 52 36 0d a9  42 1f 4c 44 52 20 52 36  |,R5,R6..B.LDR R6|
0001b970  2c 5b 52 33 5d 2c 23 34  3a 41 44 44 20 52 35 2c  |,[R3],#4:ADD R5,|
0001b980  52 35 2c 52 36 0d a9 4c  24 4c 44 52 20 52 36 2c  |R5,R6..L$LDR R6,|
0001b990  5b 52 32 2c 23 2d 73 68  61 72 70 5d 3a 41 44 44  |[R2,#-sharp]:ADD|
0001b9a0  20 52 35 2c 52 35 2c 52  36 0d a9 56 24 4c 44 52  | R5,R5,R6..V$LDR|
0001b9b0  20 52 36 2c 5b 52 32 2c  23 73 68 61 72 70 5d 3a  | R6,[R2,#sharp]:|
0001b9c0  41 44 44 20 52 35 2c 52  35 2c 52 36 20 0d a9 60  |ADD R5,R5,R6 ..`|
0001b9d0  13 4c 44 52 20 52 36 2c  5b 52 32 5d 2c 23 34 20  |.LDR R6,[R2],#4 |
0001b9e0  0d a9 6a 14 4d 4f 56 20  52 36 2c 52 36 2c 4c 53  |..j.MOV R6,R6,LS|
0001b9f0  52 20 23 31 0d a9 74 14  4d 4f 56 20 52 37 2c 23  |R #1..t.MOV R7,#|
0001ba00  73 68 61 72 70 65 6e 25  0d a9 7e 11 4d 55 4c 20  |sharpen%..~.MUL |
0001ba10  52 37 2c 52 36 2c 52 37  20 0d a9 88 18 53 55 42  |R7,R6,R7 ....SUB|
0001ba20  53 20 52 35 2c 52 37 2c  52 35 2c 4c 53 52 20 23  |S R5,R7,R5,LSR #|
0001ba30  31 0d a9 92 10 4d 4f 56  43 43 20 52 35 2c 23 30  |1....MOVCC R5,#0|
0001ba40  20 0d a9 9c 05 5d 0d a9  a6 11 c8 8e 20 73 68 61  | ....]...... sha|
0001ba50  72 70 65 6e 25 20 ca 0d  a9 b0 09 c9 20 38 2c 39  |rpen% ...... 8,9|
0001ba60  0d a9 ba 0a 5b 4f 50 54  20 5a 0d a9 c4 14 4d 4f  |....[OPT Z....MO|
0001ba70  56 20 52 36 2c 52 35 2c  4c 53 4c 20 23 31 0d a9  |V R6,R5,LSL #1..|
0001ba80  ce 05 5d 0d a9 d8 08 c9  20 31 30 0d a9 e2 0a 5b  |..]..... 10....[|
0001ba90  4f 50 54 20 5a 0d a9 ec  0d 4d 4f 56 20 52 36 2c  |OPT Z....MOV R6,|
0001baa0  52 35 0d a9 f6 05 5d 0d  aa 00 08 c9 20 31 32 0d  |R5....]..... 12.|
0001bab0  aa 0a 0a 5b 4f 50 54 20  5a 0d aa 14 14 4d 4f 56  |...[OPT Z....MOV|
0001bac0  20 52 36 2c 52 35 2c 4c  53 52 20 23 31 0d aa 1e  | R6,R5,LSR #1...|
0001bad0  05 5d 0d aa 28 08 c9 20  31 36 0d aa 32 0a 5b 4f  |.]..(.. 16..2.[O|
0001bae0  50 54 20 5a 0d aa 3c 14  4d 4f 56 20 52 36 2c 52  |PT Z..<.MOV R6,R|
0001baf0  35 2c 4c 53 52 20 23 32  0d aa 46 05 5d 0d aa 50  |5,LSR #2..F.]..P|
0001bb00  08 c9 20 32 34 0d aa 5a  0a 5b 4f 50 54 20 5a 0d  |.. 24..Z.[OPT Z.|
0001bb10  aa 64 14 4d 4f 56 20 52  36 2c 52 35 2c 4c 53 52  |.d.MOV R6,R5,LSR|
0001bb20  20 23 33 0d aa 6e 05 5d  0d aa 78 05 7f 0d aa 82  | #3..n.]..x.....|
0001bb30  0a 5b 4f 50 54 20 5a 0d  aa 8c 15 4d 4f 56 20 52  |.[OPT Z....MOV R|
0001bb40  36 2c 52 35 2c 4c 53 52  20 23 31 36 0d aa 96 16  |6,R5,LSR #16....|
0001bb50  82 20 52 35 2c 52 35 2c  52 36 2c 4c 53 4c 20 23  |. R5,R5,R6,LSL #|
0001bb60  31 36 0d aa a0 10 4d 55  4c 20 52 37 2c 52 38 2c  |16....MUL R7,R8,|
0001bb70  52 35 0d aa aa 10 4d 55  4c 20 52 35 2c 52 39 2c  |R5....MUL R5,R9,|
0001bb80  52 35 0d aa b4 11 4d 55  4c 20 52 31 30 2c 52 36  |R5....MUL R10,R6|
0001bb90  2c 52 38 0d aa be 10 4d  55 4c 20 52 36 2c 52 39  |,R8....MUL R6,R9|
0001bba0  2c 52 36 0d aa c8 13 41  44 44 53 20 52 31 30 2c  |,R6....ADDS R10,|
0001bbb0  52 35 2c 52 31 30 0d aa  d2 17 41 44 44 43 53 20  |R5,R10....ADDCS |
0001bbc0  52 36 2c 52 36 2c 23 26  31 30 30 30 30 0d aa dc  |R6,R6,#&10000...|
0001bbd0  1a 41 44 44 53 20 52 37  2c 52 37 2c 52 31 30 2c  |.ADDS R7,R7,R10,|
0001bbe0  4c 53 4c 20 23 31 36 0d  aa e6 19 41 44 43 20 52  |LSL #16....ADC R|
0001bbf0  36 2c 52 36 2c 52 31 30  2c 4c 53 52 20 23 31 36  |6,R6,R10,LSR #16|
0001bc00  0d aa f0 1a 4d 4f 56 20  52 36 2c 52 36 2c 4c 53  |....MOV R6,R6,LS|
0001bc10  4c 20 23 28 33 32 2d 32  37 29 0d aa fa 18 84 52  |L #(32-27).....R|
0001bc20  53 20 52 36 2c 52 36 2c  52 37 2c 4c 53 52 20 23  |S R6,R6,R7,LSR #|
0001bc30  32 37 0d ab 04 13 41 44  44 43 53 20 52 36 2c 52  |27....ADDCS R6,R|
0001bc40  36 2c 23 31 20 0d ab 0e  05 5d 0d ab 18 05 cb 0d  |6,#1 ....]......|
0001bc50  ab 22 0a 5b 4f 50 54 20  5a 0d ab 2c 19 43 4d 50  |.".[OPT Z..,.CMP|
0001bc60  20 52 36 2c 23 46 3a 4d  4f 56 43 53 20 52 36 2c  | R6,#F:MOVCS R6,|
0001bc70  23 46 0d ab 36 12 53 54  52 20 52 36 2c 5b 52 34  |#F..6.STR R6,[R4|
0001bc80  5d 2c 23 34 0d ab 40 11  53 55 42 53 20 52 30 2c  |],#4..@.SUBS R0,|
0001bc90  52 30 2c 23 31 0d ab 4a  0f 42 4e 45 20 73 68 61  |R0,#1..J.BNE sha|
0001bca0  72 70 6c 70 0d ab 54 0f  4d 4f 56 53 20 50 43 2c  |rplp..T.MOVS PC,|
0001bcb0  52 31 34 0d ab 5e 05 5d  0d ab 68 05 cd 0d ab 72  |R14..^.]..h....r|
0001bcc0  13 e7 68 69 73 74 25 84  65 71 75 61 6c 25 20 8c  |..hist%.equal% .|
0001bcd0  0d ab 7c 0a 5b 4f 50 54  20 5a 0d ab 90 0b 2e 68  |..|.[OPT Z.....h|
0001bce0  69 73 74 6f 25 0d ab 9a  1c 4c 44 52 20 52 30 2c  |isto%....LDR R0,|
0001bcf0  5b 52 39 5d 3a 4c 44 52  20 52 30 2c 5b 52 30 5d  |[R9]:LDR R0,[R0]|
0001bd00  20 0d ab a4 13 4c 44 52  20 52 31 2c 5b 52 39 2c  | ....LDR R1,[R9,|
0001bd10  23 38 5d 20 0d ab ae 13  4c 44 52 20 52 32 2c 5b  |#8] ....LDR R2,[|
0001bd20  52 39 2c 23 31 36 5d 0d  ab b8 0b 2e 68 69 73 74  |R9,#16].....hist|
0001bd30  6c 70 0d ab c2 28 4c 44  52 20 52 33 2c 5b 52 32  |lp...(LDR R3,[R2|
0001bd40  5d 2c 23 34 3a 43 4d 50  20 52 33 2c 23 46 3a 4d  |],#4:CMP R3,#F:M|
0001bd50  4f 56 43 53 20 52 33 2c  23 46 0d ab cc 19 4d 4f  |OVCS R3,#F....MO|
0001bd60  56 20 52 33 2c 52 33 2c  4c 53 52 20 23 62 69 74  |V R3,R3,LSR #bit|
0001bd70  73 2d 38 0d ab d6 05 5d  0d ab e0 0c e7 63 6f 6c  |s-8....].....col|
0001bd80  3d 32 20 8c 0d ab ea 0a  5b 4f 50 54 20 5a 0d ab  |=2 .....[OPT Z..|
0001bd90  f4 17 41 44 44 20 52 33  2c 52 33 2c 52 33 2c 4c  |..ADD R3,R3,R3,L|
0001bda0  53 4c 20 23 31 0d ab fe  3c 4c 44 52 20 52 34 2c  |SL #1...<LDR R4,|
0001bdb0  5b 52 31 2c 52 33 2c 4c  53 4c 20 23 32 5d 3a 41  |[R1,R3,LSL #2]:A|
0001bdc0  44 44 20 52 34 2c 52 34  2c 23 31 3a 53 54 52 20  |DD R4,R4,#1:STR |
0001bdd0  52 34 2c 5b 52 31 2c 52  33 2c 4c 53 4c 20 23 32  |R4,[R1,R3,LSL #2|
0001bde0  5d 0d ac 08 28 4c 44 52  20 52 33 2c 5b 52 32 5d  |]...(LDR R3,[R2]|
0001bdf0  2c 23 34 3a 43 4d 50 20  52 33 2c 23 46 3a 4d 4f  |,#4:CMP R3,#F:MO|
0001be00  56 43 53 20 52 33 2c 23  46 0d ac 12 19 4d 4f 56  |VCS R3,#F....MOV|
0001be10  20 52 33 2c 52 33 2c 4c  53 52 20 23 62 69 74 73  | R3,R3,LSR #bits|
0001be20  2d 38 0d ac 1c 24 41 44  44 20 52 33 2c 52 33 2c  |-8...$ADD R3,R3,|
0001be30  52 33 2c 4c 53 4c 20 23  31 3a 41 44 44 20 52 33  |R3,LSL #1:ADD R3|
0001be40  2c 52 33 2c 23 31 0d ac  26 3c 4c 44 52 20 52 34  |,R3,#1..&<LDR R4|
0001be50  2c 5b 52 31 2c 52 33 2c  4c 53 4c 20 23 32 5d 3a  |,[R1,R3,LSL #2]:|
0001be60  41 44 44 20 52 34 2c 52  34 2c 23 31 3a 53 54 52  |ADD R4,R4,#1:STR|
0001be70  20 52 34 2c 5b 52 31 2c  52 33 2c 4c 53 4c 20 23  | R4,[R1,R3,LSL #|
0001be80  32 5d 0d ac 30 28 4c 44  52 20 52 33 2c 5b 52 32  |2]..0(LDR R3,[R2|
0001be90  5d 2c 23 34 3a 43 4d 50  20 52 33 2c 23 46 3a 4d  |],#4:CMP R3,#F:M|
0001bea0  4f 56 43 53 20 52 33 2c  23 46 0d ac 3a 19 4d 4f  |OVCS R3,#F..:.MO|
0001beb0  56 20 52 33 2c 52 33 2c  4c 53 52 20 23 62 69 74  |V R3,R3,LSR #bit|
0001bec0  73 2d 38 0d ac 44 24 41  44 44 20 52 33 2c 52 33  |s-8..D$ADD R3,R3|
0001bed0  2c 52 33 2c 4c 53 4c 20  23 31 3a 41 44 44 20 52  |,R3,LSL #1:ADD R|
0001bee0  33 2c 52 33 2c 23 32 0d  ac 4e 05 5d 0d ac 58 05  |3,R3,#2..N.]..X.|
0001bef0  cd 0d ac 62 0a 5b 4f 50  54 20 5a 0d ac 6c 3c 4c  |...b.[OPT Z..l<L|
0001bf00  44 52 20 52 34 2c 5b 52  31 2c 52 33 2c 4c 53 4c  |DR R4,[R1,R3,LSL|
0001bf10  20 23 32 5d 3a 41 44 44  20 52 34 2c 52 34 2c 23  | #2]:ADD R4,R4,#|
0001bf20  31 3a 53 54 52 20 52 34  2c 5b 52 31 2c 52 33 2c  |1:STR R4,[R1,R3,|
0001bf30  4c 53 4c 20 23 32 5d 0d  ac 76 11 53 55 42 53 20  |LSL #2]..v.SUBS |
0001bf40  52 30 2c 52 30 2c 23 31  0d ac 80 0e 42 4e 45 20  |R0,R0,#1....BNE |
0001bf50  68 69 73 74 6c 70 0d ac  8a 0f 4d 4f 56 53 20 50  |histlp....MOVS P|
0001bf60  43 2c 52 31 34 0d ac 94  05 5d 0d ac 9e 05 cd 0d  |C,R14....]......|
0001bf70  ac a8 0d e7 65 71 75 61  6c 25 20 8c 0d ac b2 0a  |....equal% .....|
0001bf80  5b 4f 50 54 20 5a 0d ac  c6 0f 2e 68 69 73 74 65  |[OPT Z.....histe|
0001bf90  71 75 61 6c 25 0d ac d0  1c 4c 44 52 20 52 30 2c  |qual%....LDR R0,|
0001bfa0  5b 52 39 5d 3a 4c 44 52  20 52 30 2c 5b 52 30 5d  |[R9]:LDR R0,[R0]|
0001bfb0  20 0d ac da 13 4c 44 52  20 52 31 2c 5b 52 39 2c  | ....LDR R1,[R9,|
0001bfc0  23 38 5d 20 0d ac e4 14  4c 44 52 20 52 32 2c 5b  |#8] ....LDR R2,[|
0001bfd0  52 39 2c 23 31 36 5d 20  0d ac ee 0c 2e 65 71 75  |R9,#16] .....equ|
0001bfe0  61 6c 6c 70 0d ac f8 25  4c 44 52 20 52 33 2c 5b  |allp...%LDR R3,[|
0001bff0  52 32 5d 3a 43 4d 50 20  52 33 2c 23 46 3a 4d 4f  |R2]:CMP R3,#F:MO|
0001c000  56 43 53 20 52 33 2c 23  46 0d ad 02 19 4d 4f 56  |VCS R3,#F....MOV|
0001c010  20 52 33 2c 52 33 2c 4c  53 52 20 23 62 69 74 73  | R3,R3,LSR #bits|
0001c020  2d 38 0d ad 0c 05 5d 0d  ad 16 0c e7 63 6f 6c 3d  |-8....].....col=|
0001c030  32 20 8c 0d ad 20 0a 5b  4f 50 54 20 5a 0d ad 2a  |2 ... .[OPT Z..*|
0001c040  25 4c 44 52 20 52 33 2c  5b 52 32 5d 3a 43 4d 50  |%LDR R3,[R2]:CMP|
0001c050  20 52 33 2c 23 46 3a 4d  4f 56 43 53 20 52 33 2c  | R3,#F:MOVCS R3,|
0001c060  23 46 0d ad 34 19 4d 4f  56 20 52 33 2c 52 33 2c  |#F..4.MOV R3,R3,|
0001c070  4c 53 52 20 23 62 69 74  73 2d 38 0d ad 3e 17 41  |LSR #bits-8..>.A|
0001c080  44 44 20 52 33 2c 52 33  2c 52 33 2c 4c 53 4c 20  |DD R3,R3,R3,LSL |
0001c090  23 31 0d ad 48 28 4c 44  52 20 52 34 2c 5b 52 31  |#1..H(LDR R4,[R1|
0001c0a0  2c 52 33 2c 4c 53 4c 20  23 32 5d 3a 53 54 52 20  |,R3,LSL #2]:STR |
0001c0b0  52 34 2c 5b 52 32 5d 2c  23 34 0d ad 52 25 4c 44  |R4,[R2],#4..R%LD|
0001c0c0  52 20 52 33 2c 5b 52 32  5d 3a 43 4d 50 20 52 33  |R R3,[R2]:CMP R3|
0001c0d0  2c 23 46 3a 4d 4f 56 43  53 20 52 33 2c 23 46 0d  |,#F:MOVCS R3,#F.|
0001c0e0  ad 5c 19 4d 4f 56 20 52  33 2c 52 33 2c 4c 53 52  |.\.MOV R3,R3,LSR|
0001c0f0  20 23 62 69 74 73 2d 38  0d ad 66 24 41 44 44 20  | #bits-8..f$ADD |
0001c100  52 33 2c 52 33 2c 52 33  2c 4c 53 4c 20 23 31 3a  |R3,R3,R3,LSL #1:|
0001c110  41 44 44 20 52 33 2c 52  33 2c 23 31 0d ad 70 28  |ADD R3,R3,#1..p(|
0001c120  4c 44 52 20 52 34 2c 5b  52 31 2c 52 33 2c 4c 53  |LDR R4,[R1,R3,LS|
0001c130  4c 20 23 32 5d 3a 53 54  52 20 52 34 2c 5b 52 32  |L #2]:STR R4,[R2|
0001c140  5d 2c 23 34 0d ad 7a 25  4c 44 52 20 52 33 2c 5b  |],#4..z%LDR R3,[|
0001c150  52 32 5d 3a 43 4d 50 20  52 33 2c 23 46 3a 4d 4f  |R2]:CMP R3,#F:MO|
0001c160  56 43 53 20 52 33 2c 23  46 0d ad 84 19 4d 4f 56  |VCS R3,#F....MOV|
0001c170  20 52 33 2c 52 33 2c 4c  53 52 20 23 62 69 74 73  | R3,R3,LSR #bits|
0001c180  2d 38 0d ad 8e 24 41 44  44 20 52 33 2c 52 33 2c  |-8...$ADD R3,R3,|
0001c190  52 33 2c 4c 53 4c 20 23  31 3a 41 44 44 20 52 33  |R3,LSL #1:ADD R3|
0001c1a0  2c 52 33 2c 23 32 0d ad  98 05 5d 0d ad a2 05 cd  |,R3,#2....].....|
0001c1b0  0d ad ac 0a 5b 4f 50 54  20 5a 0d ad b6 28 4c 44  |....[OPT Z...(LD|
0001c1c0  52 20 52 34 2c 5b 52 31  2c 52 33 2c 4c 53 4c 20  |R R4,[R1,R3,LSL |
0001c1d0  23 32 5d 3a 53 54 52 20  52 34 2c 5b 52 32 5d 2c  |#2]:STR R4,[R2],|
0001c1e0  23 34 0d ad c0 11 53 55  42 53 20 52 30 2c 52 30  |#4....SUBS R0,R0|
0001c1f0  2c 23 31 0d ad ca 0f 42  4e 45 20 65 71 75 61 6c  |,#1....BNE equal|
0001c200  6c 70 0d ad d4 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp....MOVS PC,R1|
0001c210  34 0d ad de 05 5d 0d ad  e8 05 cd 0d ad f2 0b c8  |4....]..........|
0001c220  8e 20 72 24 20 ca 0d ad  fc 27 c9 20 22 46 4e 38  |. r$ ....'. "FN8|
0001c230  30 30 22 2c 22 46 4e 38  30 31 22 2c 22 46 4e 31  |00","FN801","FN1|
0001c240  30 30 30 22 2c 22 46 4e  31 30 30 31 22 0d ae 06  |000","FN1001"...|
0001c250  0a 5b 4f 50 54 20 5a 0d  ae 24 0e 2e 72 6c 65 78  |.[OPT Z..$..rlex|
0001c260  70 61 6e 64 25 0d ae 2e  10 4c 44 52 20 52 30 2c  |pand%....LDR R0,|
0001c270  5b 52 39 5d 20 0d ae 38  10 4c 44 52 20 52 31 2c  |[R9] ..8.LDR R1,|
0001c280  5b 52 30 5d 20 0d ae 42  1f 4c 44 52 20 52 32 2c  |[R0] ..B.LDR R2,|
0001c290  5b 52 39 2c 23 38 5d 3a  4c 44 52 20 52 32 2c 5b  |[R9,#8]:LDR R2,[|
0001c2a0  52 32 5d 20 0d ae 4c 14  4c 44 52 20 52 33 2c 5b  |R2] ..L.LDR R3,[|
0001c2b0  52 39 2c 23 31 36 5d 20  0d ae 56 10 4c 44 52 20  |R9,#16] ..V.LDR |
0001c2c0  52 34 2c 5b 52 33 5d 20  0d ae 60 1b 43 4d 50 20  |R4,[R3] ..`.CMP |
0001c2d0  52 34 2c 23 31 3a 4d 4f  56 4c 54 53 20 50 43 2c  |R4,#1:MOVLTS PC,|
0001c2e0  52 31 34 0d ae 6a 20 4c  44 52 20 52 35 2c 5b 52  |R14..j LDR R5,[R|
0001c2f0  39 2c 23 32 34 5d 3a 4c  44 52 20 52 35 2c 5b 52  |9,#24]:LDR R5,[R|
0001c300  35 5d 20 0d ae 74 08 2e  72 6c 65 0d ae 7e 13 53  |5] ..t..rle..~.S|
0001c310  54 52 42 20 52 32 2c 5b  52 31 5d 2c 23 31 0d ae  |TRB R2,[R1],#1..|
0001c320  88 10 53 55 42 20 52 34  2c 52 34 2c 23 31 0d ae  |..SUB R4,R4,#1..|
0001c330  92 0d 43 4d 50 20 52 31  2c 52 35 0d ae 9c 0f 54  |..CMP R1,R5....T|
0001c340  45 51 4e 45 20 52 34 2c  23 30 0d ae a6 0b 42 4e  |EQNE R4,#0....BN|
0001c350  45 20 72 6c 65 0d ae b0  0b 2e 72 6c 65 78 69 74  |E rle.....rlexit|
0001c360  0d ae ba 10 53 54 52 20  52 31 2c 5b 52 30 5d 20  |....STR R1,[R0] |
0001c370  0d ae c4 10 53 54 52 20  52 34 2c 5b 52 33 5d 20  |....STR R4,[R3] |
0001c380  0d ae ce 0f 4d 4f 56 53  20 50 43 2c 52 31 34 0d  |....MOVS PC,R14.|
0001c390  ae d8 05 5d 0d ae e2 0d  c9 20 22 46 4e 39 30 32  |...]..... "FN902|
0001c3a0  22 0d ae ec 0a 5b 4f 50  54 20 5a 0d ae f6 0c 2e  |"....[OPT Z.....|
0001c3b0  75 6e 70 61 63 6b 25 0d  af 00 10 4c 44 52 20 52  |unpack%....LDR R|
0001c3c0  30 2c 5b 52 39 5d 20 0d  af 0a 10 4c 44 52 20 52  |0,[R9] ....LDR R|
0001c3d0  30 2c 5b 52 30 5d 20 0d  af 14 11 4c 44 52 20 52  |0,[R0] ....LDR R|
0001c3e0  31 2c 70 6c 62 75 66 66  0d af 1e 12 41 44 44 20  |1,plbuff....ADD |
0001c3f0  52 32 2c 52 30 2c 23 37  36 38 0d af 28 0f 2e 75  |R2,R0,#768..(..u|
0001c400  6e 70 61 63 6b 6c 6f 6f  70 0d af 32 12 4c 44 52  |npackloop..2.LDR|
0001c410  20 52 33 2c 5b 52 30 5d  2c 23 34 0d af 3c 0d 4d  | R3,[R0],#4..<.M|
0001c420  4f 56 20 52 35 2c 23 30  0d af 46 0c 2e 62 69 74  |OV R5,#0..F..bit|
0001c430  6c 6f 6f 70 0d af 50 14  4d 4f 56 20 52 36 2c 52  |loop..P.MOV R6,R|
0001c440  33 2c 4c 53 52 20 52 35  0d af 5a 0f 80 20 52 36  |3,LSR R5..Z.. R6|
0001c450  2c 52 36 2c 23 31 35 0d  af 64 10 41 44 44 20 52  |,R6,#15..d.ADD R|
0001c460  35 2c 52 35 2c 23 34 0d  af 6e 14 4d 4f 56 20 52  |5,R5,#4..n.MOV R|
0001c470  37 2c 52 33 2c 4c 53 52  20 52 35 0d af 78 0f 80  |7,R3,LSR R5..x..|
0001c480  20 52 37 2c 52 37 2c 23  31 35 0d af 82 10 41 44  | R7,R7,#15....AD|
0001c490  44 20 52 35 2c 52 35 2c  23 34 0d af 8c 13 53 54  |D R5,R5,#4....ST|
0001c4a0  52 42 20 52 37 2c 5b 52  31 5d 2c 23 31 0d af 96  |RB R7,[R1],#1...|
0001c4b0  13 53 54 52 42 20 52 36  2c 5b 52 31 5d 2c 23 31  |.STRB R6,[R1],#1|
0001c4c0  0d af a0 0e 43 4d 50 20  52 35 2c 23 33 32 0d af  |....CMP R5,#32..|
0001c4d0  aa 0f 42 4e 45 20 62 69  74 6c 6f 6f 70 0d af b4  |..BNE bitloop...|
0001c4e0  0d 43 4d 50 20 52 32 2c  52 30 0d af be 12 42 4e  |.CMP R2,R0....BN|
0001c4f0  45 20 75 6e 70 61 63 6b  6c 6f 6f 70 0d af c8 0e  |E unpackloop....|
0001c500  4d 4f 56 20 50 43 2c 52  31 34 0d af d2 18 2e 70  |MOV PC,R14.....p|
0001c510  6c 62 75 66 66 20 45 51  55 44 20 70 6c 62 75 66  |lbuff EQUD plbuf|
0001c520  66 25 0d af dc 05 5d 0d  af e6 29 c9 20 22 46 4e  |f%....]...). "FN|
0001c530  31 36 30 31 22 2c 22 46  4e 31 35 30 31 22 2c 22  |1601","FN1501","|
0001c540  46 4e 31 38 35 30 22 2c  22 46 4e 31 38 35 31 22  |FN1850","FN1851"|
0001c550  0d af f0 0a 5b 4f 50 54  20 5a 0d b0 04 0d 2e 72  |....[OPT Z.....r|
0001c560  65 61 64 69 66 66 25 0d  b0 0e 0e 4d 4f 56 20 52  |eadiff%....MOV R|
0001c570  31 2c 23 63 25 0d b0 18  1c 4c 44 52 20 52 38 2c  |1,#c%....LDR R8,|
0001c580  5b 52 39 5d 3a 4c 44 52  20 52 38 2c 5b 52 38 5d  |[R9]:LDR R8,[R8]|
0001c590  20 0d b0 22 2c 4c 44 52  20 52 37 2c 5b 52 39 2c  | ..",LDR R7,[R9,|
0001c5a0  23 38 5d 3a 4c 44 52 20  52 37 2c 5b 52 37 5d 3a  |#8]:LDR R7,[R7]:|
0001c5b0  41 44 44 20 52 37 2c 52  37 2c 52 38 20 0d b0 2c  |ADD R7,R7,R8 ..,|
0001c5c0  14 53 54 4d 46 44 20 53  50 20 21 2c 7b 52 31 34  |.STMFD SP !,{R14|
0001c5d0  7d 0d b0 36 05 5d 0d b0  40 20 e7 72 24 3d 22 46  |}..6.]..@ .r$="F|
0001c5e0  4e 31 38 35 30 22 20 84  20 72 24 3d 22 46 4e 31  |N1850" . r$="FN1|
0001c5f0  38 35 31 22 20 8c 0d b0  4a 0a 5b 4f 50 54 20 5a  |851" ...J.[OPT Z|
0001c600  0d b0 54 15 42 4c 20 62  79 74 65 66 72 6f 6d 63  |..T.BL bytefromc|
0001c610  61 63 68 65 25 0d b0 5e  05 5d 0d b0 68 0e e7 73  |ache%..^.]..h..s|
0001c620  79 25 3e 32 35 30 20 8c  0d b0 72 0a 5b 4f 50 54  |y%>250 ...r.[OPT|
0001c630  20 5a 0d b0 7c 15 42 4c  20 62 79 74 65 66 72 6f  | Z..|.BL bytefro|
0001c640  6d 63 61 63 68 65 25 0d  b0 86 05 5d 0d b0 90 05  |mcache%....]....|
0001c650  cd 0d b0 9a 05 cd 0d b0  a4 0a 5b 4f 50 54 20 5a  |..........[OPT Z|
0001c660  0d b0 ae 08 2e 72 6c 65  0d b0 b8 15 42 4c 20 62  |.....rle....BL b|
0001c670  79 74 65 66 72 6f 6d 63  61 63 68 65 25 0d b0 c2  |ytefromcache%...|
0001c680  0f 43 4d 50 20 52 30 2c  23 31 32 38 0d b0 cc 0c  |.CMP R0,#128....|
0001c690  42 43 43 20 72 6c 65 31  0d b0 d6 12 52 53 42 20  |BCC rle1....RSB |
0001c6a0  52 32 2c 52 30 2c 23 32  35 36 0d b0 e0 15 42 4c  |R2,R0,#256....BL|
0001c6b0  20 62 79 74 65 66 72 6f  6d 63 61 63 68 65 25 0d  | bytefromcache%.|
0001c6c0  b0 ea 19 2e 72 6c 65 30  20 53 54 52 42 20 52 30  |....rle0 STRB R0|
0001c6d0  2c 5b 52 38 5d 2c 23 31  0d b0 f4 11 53 55 42 53  |,[R8],#1....SUBS|
0001c6e0  20 52 32 2c 52 32 2c 23  31 0d b0 fe 0c 42 50 4c  | R2,R2,#1....BPL|
0001c6f0  20 72 6c 65 30 0d b1 08  0a 42 20 72 6c 65 32 0d  | rle0....B rle2.|
0001c700  b1 12 09 2e 72 6c 65 31  0d b1 1c 10 41 44 44 20  |....rle1....ADD |
0001c710  52 33 2c 52 30 2c 23 31  0d b1 26 0d 4d 4f 56 20  |R3,R0,#1..&.MOV |
0001c720  52 32 2c 52 38 0d b1 30  10 41 44 44 20 52 38 2c  |R2,R8..0.ADD R8,|
0001c730  52 38 2c 52 33 0d b1 3a  1a 42 4c 20 6d 75 6c 74  |R8,R3..:.BL mult|
0001c740  69 62 79 74 65 66 72 6f  6d 63 61 63 68 65 25 0d  |ibytefromcache%.|
0001c750  b1 44 09 2e 72 6c 65 32  0d b1 4e 0d 43 4d 50 20  |.D..rle2..N.CMP |
0001c760  52 38 2c 52 37 0d b1 58  0b 42 43 43 20 72 6c 65  |R8,R7..X.BCC rle|
0001c770  0d b1 62 14 4c 44 4d 46  44 20 53 50 20 21 2c 7b  |..b.LDMFD SP !,{|
0001c780  52 31 34 7d 0d b1 6c 0f  4d 4f 56 53 20 50 43 2c  |R14}..l.MOVS PC,|
0001c790  52 31 34 0d b1 76 05 5d  0d b1 80 1f c9 20 22 46  |R14..v.]..... "F|
0001c7a0  4e 31 39 30 30 22 2c 22  46 4e 31 31 30 30 22 2c  |N1900","FN1100",|
0001c7b0  22 46 4e 34 30 30 22 0d  b1 8a 0a 5b 4f 50 54 20  |"FN400"....[OPT |
0001c7c0  5a 0d b1 9e 0e 2e 72 65  61 64 6c 69 6e 65 25 0d  |Z.....readline%.|
0001c7d0  b1 a8 1c 4c 44 52 20 52  32 2c 5b 52 39 5d 3a 4c  |...LDR R2,[R9]:L|
0001c7e0  44 52 20 52 32 2c 5b 52  32 5d 20 0d b1 b2 13 4c  |DR R2,[R2] ....L|
0001c7f0  44 52 20 52 33 2c 5b 52  39 2c 23 38 5d 20 0d b1  |DR R3,[R9,#8] ..|
0001c800  bc 0f 4c 44 52 20 52 30  2c 5b 52 33 5d 0d b1 c6  |..LDR R0,[R3]...|
0001c810  14 4c 44 52 20 52 34 2c  5b 52 39 2c 23 31 36 5d  |.LDR R4,[R9,#16]|
0001c820  20 0d b1 d0 0f 4c 44 52  20 52 35 2c 5b 52 34 5d  | ....LDR R5,[R4]|
0001c830  0d b1 da 2d 4c 44 52 20  52 36 2c 5b 52 39 2c 23  |...-LDR R6,[R9,#|
0001c840  32 34 5d 3a 4c 44 52 20  52 36 2c 5b 52 36 5d 3a  |24]:LDR R6,[R6]:|
0001c850  41 44 44 20 52 36 2c 52  36 2c 52 32 20 0d b1 e4  |ADD R6,R6,R2 ...|
0001c860  14 53 54 4d 46 44 20 53  50 20 21 2c 7b 52 31 34  |.STMFD SP !,{R14|
0001c870  7d 0d b1 ee 08 2e 72 6c  65 0d b1 f8 0d 43 4d 50  |}.....rle....CMP|
0001c880  20 52 35 2c 23 31 0d b2  02 0c 42 47 45 20 72 6c  | R5,#1....BGE rl|
0001c890  65 31 0d b2 0c 15 42 4c  20 62 79 74 65 66 72 6f  |e1....BL bytefro|
0001c8a0  6d 63 61 63 68 65 25 0d  b2 16 0d 4d 4f 56 20 52  |mcache%....MOV R|
0001c8b0  35 2c 23 31 0d b2 20 05  5d 0d b2 2a 10 e7 66 6c  |5,#1.. .]..*..fl|
0001c8c0  61 67 3d 31 39 30 30 20  8c 0d b2 34 0a 5b 4f 50  |ag=1900 ...4.[OP|
0001c8d0  54 20 5a 0d b2 3e 0f 43  4d 50 20 52 30 2c 23 31  |T Z..>.CMP R0,#1|
0001c8e0  39 32 0d b2 48 25 80 43  53 20 52 35 2c 52 30 2c  |92..H%.CS R5,R0,|
0001c8f0  23 36 33 3a 42 4c 43 53  20 62 79 74 65 66 72 6f  |#63:BLCS bytefro|
0001c900  6d 63 61 63 68 65 25 0d  b2 52 05 5d 0d b2 5c 05  |mcache%..R.]..\.|
0001c910  cd 0d b2 66 10 e7 66 6c  61 67 3d 31 31 30 30 20  |...f..flag=1100 |
0001c920  8c 0d b2 70 0a 5b 4f 50  54 20 5a 0d b2 7a 0f 43  |...p.[OPT Z..z.C|
0001c930  4d 50 20 52 30 2c 23 31  32 38 0d b2 84 0c 42 4e  |MP R0,#128....BN|
0001c940  45 20 72 6c 65 31 0d b2  8e 15 42 4c 20 62 79 74  |E rle1....BL byt|
0001c950  65 66 72 6f 6d 63 61 63  68 65 25 0d b2 98 0d 54  |efromcache%....T|
0001c960  45 51 20 52 30 2c 23 30  0d b2 a2 0e ec 51 20 52  |EQ R0,#0.....Q R|
0001c970  30 2c 23 31 32 38 0d b2  ac 0c 42 45 51 20 72 6c  |0,#128....BEQ rl|
0001c980  65 31 0d b2 b6 10 41 44  44 20 52 35 2c 52 30 2c  |e1....ADD R5,R0,|
0001c990  23 31 0d b2 c0 15 42 4c  20 62 79 74 65 66 72 6f  |#1....BL bytefro|
0001c9a0  6d 63 61 63 68 65 25 0d  b2 ca 05 5d 0d b2 d4 05  |mcache%....]....|
0001c9b0  cd 0d b2 de 0f e7 66 6c  61 67 3d 34 30 30 20 8c  |......flag=400 .|
0001c9c0  0d b2 e8 0a 5b 4f 50 54  20 5a 0d b2 f2 0e 4d 4f  |....[OPT Z....MO|
0001c9d0  56 20 52 31 2c 52 30 20  0d b2 fc 16 42 4c 20 62  |V R1,R0 ....BL b|
0001c9e0  79 74 65 66 72 6f 6d 63  61 63 68 65 25 20 0d b3  |ytefromcache% ..|
0001c9f0  06 16 84 52 20 52 31 2c  52 31 2c 52 30 2c 4c 53  |...R R1,R1,R0,LS|
0001ca00  4c 20 23 38 0d b3 10 16  42 4c 20 62 79 74 65 66  |L #8....BL bytef|
0001ca10  72 6f 6d 63 61 63 68 65  25 20 0d b3 1a 17 84 52  |romcache% .....R|
0001ca20  20 52 31 2c 52 31 2c 52  30 2c 4c 53 4c 20 23 31  | R1,R1,R0,LSL #1|
0001ca30  36 0d b3 24 15 42 4c 20  62 79 74 65 66 72 6f 6d  |6..$.BL bytefrom|
0001ca40  63 61 63 68 65 25 0d b3  2e 10 41 44 44 20 52 35  |cache%....ADD R5|
0001ca50  2c 52 30 2c 23 31 0d b3  38 0d 4d 4f 56 20 52 30  |,R0,#1..8.MOV R0|
0001ca60  2c 52 31 0d b3 42 05 5d  0d b3 4c 05 cd 0d b3 56  |,R1..B.]..L....V|
0001ca70  0f e7 66 6c 61 67 3d 32  30 30 20 8c 0d b3 60 0a  |..flag=200 ...`.|
0001ca80  5b 4f 50 54 20 5a 0d b3  6a 10 41 44 44 20 52 35  |[OPT Z..j.ADD R5|
0001ca90  2c 52 30 2c 23 31 0d b3  74 15 42 4c 20 62 79 74  |,R0,#1..t.BL byt|
0001caa0  65 66 72 6f 6d 63 61 63  68 65 25 0d b3 7e 05 5d  |efromcache%..~.]|
0001cab0  0d b3 88 05 cd 0d b3 92  0a 5b 4f 50 54 20 5a 0d  |.........[OPT Z.|
0001cac0  b3 9c 09 2e 72 6c 65 31  0d b3 a6 13 53 54 52 42  |....rle1....STRB|
0001cad0  20 52 30 2c 5b 52 32 5d  2c 23 31 0d b3 b0 05 5d  | R0,[R2],#1....]|
0001cae0  0d b3 ba 0f e7 66 6c 61  67 3d 34 30 30 20 8c 0d  |.....flag=400 ..|
0001caf0  b3 c4 0a 5b 4f 50 54 20  5a 0d b3 ce 14 4d 4f 56  |...[OPT Z....MOV|
0001cb00  20 52 31 2c 52 30 2c 4c  53 52 20 23 38 0d b3 d8  | R1,R0,LSR #8...|
0001cb10  13 53 54 52 42 20 52 31  2c 5b 52 32 5d 2c 23 31  |.STRB R1,[R2],#1|
0001cb20  0d b3 e2 15 4d 4f 56 20  52 31 2c 52 30 2c 4c 53  |....MOV R1,R0,LS|
0001cb30  52 20 23 31 36 0d b3 ec  13 53 54 52 42 20 52 31  |R #16....STRB R1|
0001cb40  2c 5b 52 32 5d 2c 23 31  0d b3 f6 05 5d 0d b4 00  |,[R2],#1....]...|
0001cb50  05 cd 0d b4 0a 0a 5b 4f  50 54 20 5a 0d b4 14 10  |......[OPT Z....|
0001cb60  53 55 42 20 52 35 2c 52  35 2c 23 31 0d b4 1e 0d  |SUB R5,R5,#1....|
0001cb70  54 45 51 20 52 32 2c 52  36 0d b4 28 0b 42 4e 45  |TEQ R2,R6..(.BNE|
0001cb80  20 72 6c 65 0d b4 32 0b  2e 72 6c 65 78 69 74 0d  | rle..2..rlexit.|
0001cb90  b4 3c 1b 53 54 52 20 52  30 2c 5b 52 33 5d 3a 53  |.<.STR R0,[R3]:S|
0001cba0  54 52 20 52 35 2c 5b 52  34 5d 0d b4 46 14 4c 44  |TR R5,[R4]..F.LD|
0001cbb0  4d 46 44 20 53 50 20 21  2c 7b 50 43 7d 5e 0d b4  |MFD SP !,{PC}^..|
0001cbc0  50 05 5d 0d b4 5a 0e c9  20 22 46 4e 32 34 30 31  |P.]..Z.. "FN2401|
0001cbd0  22 0d b4 64 0a 5b 4f 50  54 20 5a 0d b4 6e 0c 2e  |"..d.[OPT Z..n..|
0001cbe0  62 6d 5f 72 6c 65 38 0d  b4 78 0e 4d 4f 56 20 52  |bm_rle8..x.MOV R|
0001cbf0  31 2c 23 63 25 0d b4 82  1b 4c 44 52 20 52 38 2c  |1,#c%....LDR R8,|
0001cc00  5b 52 39 5d 3a 4c 44 52  20 52 38 2c 5b 52 38 5d  |[R9]:LDR R8,[R8]|
0001cc10  0d b4 8c 2b 4c 44 52 20  52 37 2c 5b 52 39 2c 23  |...+LDR R7,[R9,#|
0001cc20  38 5d 3a 4c 44 52 20 52  37 2c 5b 52 37 5d 3a 41  |8]:LDR R7,[R7]:A|
0001cc30  44 44 20 52 37 2c 52 37  2c 52 38 0d b4 96 14 53  |DD R7,R7,R8....S|
0001cc40  54 4d 46 44 20 53 50 20  21 2c 7b 52 31 34 7d 0d  |TMFD SP !,{R14}.|
0001cc50  b4 a0 08 2e 72 6c 65 0d  b4 aa 17 42 4c 20 62 79  |....rle....BL by|
0001cc60  74 65 66 72 6f 6d 63 61  63 68 65 25 20 20 0d b4  |tefromcache%  ..|
0001cc70  b4 17 54 45 51 20 72 30  2c 23 30 20 20 20 20 20  |..TEQ r0,#0     |
0001cc80  20 20 20 20 20 0d b4 be  0f 42 45 51 20 72 6c 65  |     ....BEQ rle|
0001cc90  63 6f 70 79 0d b4 d2 17  4d 4f 56 20 72 34 2c 72  |copy....MOV r4,r|
0001cca0  30 20 20 20 20 20 20 20  20 20 20 0d b4 dc 17 42  |0          ....B|
0001ccb0  4c 20 62 79 74 65 66 72  6f 6d 63 61 63 68 65 25  |L bytefromcache%|
0001ccc0  20 20 0d b4 e6 09 2e 72  6c 65 31 0d b4 f0 13 53  |  .....rle1....S|
0001ccd0  54 52 42 20 72 30 2c 5b  72 38 5d 2c 23 31 0d b4  |TRB r0,[r8],#1..|
0001cce0  fa 11 53 55 42 53 20 72  34 2c 72 34 2c 23 31 0d  |..SUBS r4,r4,#1.|
0001ccf0  b5 04 0c 42 47 54 20 72  6c 65 31 0d b5 0e 09 42  |...BGT rle1....B|
0001cd00  20 72 6c 65 0d b5 18 0c  2e 72 6c 65 63 6f 70 79  | rle.....rlecopy|
0001cd10  0d b5 2c 17 42 4c 20 62  79 74 65 66 72 6f 6d 63  |..,.BL bytefromc|
0001cd20  61 63 68 65 25 20 20 0d  b5 36 17 43 4d 50 20 72  |ache%  ..6.CMP r|
0001cd30  30 2c 23 33 20 20 20 20  20 20 20 20 20 20 0d b5  |0,#3          ..|
0001cd40  40 12 42 4c 54 20 72 6c  65 73 70 65 63 69 61 6c  |@.BLT rlespecial|
0001cd50  0d b5 4a 17 4d 4f 56 20  72 34 2c 72 30 20 20 20  |..J.MOV r4,r0   |
0001cd60  20 20 20 20 20 20 20 0d  b5 54 09 2e 72 6c 65 32  |       ..T..rle2|
0001cd70  0d b5 68 15 42 4c 20 62  79 74 65 66 72 6f 6d 63  |..h.BL bytefromc|
0001cd80  61 63 68 65 25 0d b5 72  13 53 54 52 42 20 72 30  |ache%..r.STRB r0|
0001cd90  2c 5b 72 38 5d 2c 23 31  0d b5 7c 15 42 4c 20 62  |,[r8],#1..|.BL b|
0001cda0  79 74 65 66 72 6f 6d 63  61 63 68 65 25 0d b5 86  |ytefromcache%...|
0001cdb0  11 53 55 42 53 20 72 34  2c 72 34 2c 23 31 0d b5  |.SUBS r4,r4,#1..|
0001cdc0  90 15 53 54 52 47 54 42  20 72 30 2c 5b 72 38 5d  |..STRGTB r0,[r8]|
0001cdd0  2c 23 31 0d b5 9a 13 53  55 42 47 54 53 20 72 34  |,#1....SUBGTS r4|
0001cde0  2c 72 34 2c 23 31 0d b5  a4 0c 42 47 54 20 72 6c  |,r4,#1....BGT rl|
0001cdf0  65 32 0d b5 ae 09 42 20  72 6c 65 0d b5 b8 0f 2e  |e2....B rle.....|
0001ce00  72 6c 65 73 70 65 63 69  61 6c 0d b6 26 14 4c 44  |rlespecial..&.LD|
0001ce10  4d 46 44 20 53 50 20 21  2c 7b 52 31 34 7d 0d b6  |MFD SP !,{R14}..|
0001ce20  30 0f 4d 4f 56 53 20 50  43 2c 52 31 34 0d b6 3a  |0.MOVS PC,R14..:|
0001ce30  05 5d 0d b6 44 0e c9 20  22 46 4e 32 34 30 32 22  |.]..D.. "FN2402"|
0001ce40  0d b6 4e 0a 5b 4f 50 54  20 5a 0d b6 58 0c 2e 62  |..N.[OPT Z..X..b|
0001ce50  6d 5f 72 6c 65 34 0d b6  62 0e 4d 4f 56 20 52 31  |m_rle4..b.MOV R1|
0001ce60  2c 23 63 25 0d b6 6c 1b  4c 44 52 20 52 38 2c 5b  |,#c%..l.LDR R8,[|
0001ce70  52 39 5d 3a 4c 44 52 20  52 38 2c 5b 52 38 5d 0d  |R9]:LDR R8,[R8].|
0001ce80  b6 76 2b 4c 44 52 20 52  37 2c 5b 52 39 2c 23 38  |.v+LDR R7,[R9,#8|
0001ce90  5d 3a 4c 44 52 20 52 37  2c 5b 52 37 5d 3a 41 44  |]:LDR R7,[R7]:AD|
0001cea0  44 20 52 37 2c 52 37 2c  52 38 0d b6 80 14 53 54  |D R7,R7,R8....ST|
0001ceb0  4d 46 44 20 53 50 20 21  2c 7b 52 31 34 7d 0d b6  |MFD SP !,{R14}..|
0001cec0  8a 17 4d 4f 56 20 72 32  2c 23 30 20 20 20 20 20  |..MOV r2,#0     |
0001ced0  20 20 20 20 20 0d b6 94  17 4d 4f 56 20 72 33 2c  |     ....MOV r3,|
0001cee0  23 30 20 20 20 20 20 20  20 20 20 20 0d b6 9e 08  |#0          ....|
0001cef0  2e 72 6c 65 0d b6 a8 17  42 4c 20 62 79 74 65 66  |.rle....BL bytef|
0001cf00  72 6f 6d 63 61 63 68 65  25 20 20 0d b6 b2 17 54  |romcache%  ....T|
0001cf10  45 51 20 72 30 2c 23 30  20 20 20 20 20 20 20 20  |EQ r0,#0        |
0001cf20  20 20 0d b6 bc 0f 42 45  51 20 72 6c 65 63 6f 70  |  ....BEQ rlecop|
0001cf30  79 0d b6 d0 17 4d 4f 56  20 72 34 2c 72 30 20 20  |y....MOV r4,r0  |
0001cf40  20 20 20 20 20 20 20 20  0d b6 da 17 42 4c 20 62  |        ....BL b|
0001cf50  79 74 65 66 72 6f 6d 63  61 63 68 65 25 20 20 0d  |ytefromcache%  .|
0001cf60  b6 e4 09 2e 72 6c 65 31  0d b6 ee 14 42 4c 20 62  |....rle1....BL b|
0001cf70  6d 72 6c 65 34 5f 69 6e  73 65 72 74 0d b6 f8 0d  |mrle4_insert....|
0001cf80  43 4d 50 20 72 33 2c 23  38 0d b7 02 16 4d 4f 56  |CMP r3,#8....MOV|
0001cf90  47 45 20 72 35 2c 72 32  2c 4c 53 52 23 32 34 0d  |GE r5,r2,LSR#24.|
0001cfa0  b7 0c 15 53 54 52 47 45  42 20 72 35 2c 5b 72 38  |...STRGEB r5,[r8|
0001cfb0  5d 2c 23 31 0d b7 16 15  4d 4f 56 47 45 20 72 32  |],#1....MOVGE r2|
0001cfc0  2c 72 32 2c 4c 53 4c 23  38 0d b7 20 12 53 55 42  |,r2,LSL#8.. .SUB|
0001cfd0  47 45 20 72 33 2c 72 33  2c 23 38 0d b7 2a 0d 43  |GE r3,r3,#8..*.C|
0001cfe0  4d 50 20 72 34 2c 23 30  0d b7 34 0c 42 47 54 20  |MP r4,#0..4.BGT |
0001cff0  72 6c 65 31 0d b7 3e 09  42 20 72 6c 65 0d b7 48  |rle1..>.B rle..H|
0001d000  0c 2e 72 6c 65 63 6f 70  79 0d b7 5c 17 42 4c 20  |..rlecopy..\.BL |
0001d010  62 79 74 65 66 72 6f 6d  63 61 63 68 65 25 20 20  |bytefromcache%  |
0001d020  0d b7 66 17 43 4d 50 20  72 30 2c 23 33 20 20 20  |..f.CMP r0,#3   |
0001d030  20 20 20 20 20 20 20 0d  b7 70 12 42 4c 54 20 72  |       ..p.BLT r|
0001d040  6c 65 73 70 65 63 69 61  6c 0d b7 7a 17 4d 4f 56  |lespecial..z.MOV|
0001d050  20 72 34 2c 72 30 20 20  20 20 20 20 20 20 20 20  | r4,r0          |
0001d060  0d b7 84 09 2e 72 6c 65  32 0d b7 98 15 42 4c 20  |.....rle2....BL |
0001d070  62 79 74 65 66 72 6f 6d  63 61 63 68 65 25 0d b7  |bytefromcache%..|
0001d080  a2 14 42 4c 20 62 6d 72  6c 65 34 5f 69 6e 73 65  |..BL bmrle4_inse|
0001d090  72 74 0d b7 ac 15 42 4c  20 62 79 74 65 66 72 6f  |rt....BL bytefro|
0001d0a0  6d 63 61 63 68 65 25 0d  b7 b6 0d 43 4d 50 20 72  |mcache%....CMP r|
0001d0b0  34 2c 23 30 0d b7 c0 16  42 4c 47 54 20 62 6d 72  |4,#0....BLGT bmr|
0001d0c0  6c 65 34 5f 69 6e 73 65  72 74 0d b7 ca 0a 42 20  |le4_insert....B |
0001d0d0  72 6c 65 34 0d b7 d4 09  2e 72 6c 65 33 0d b7 de  |rle4.....rle3...|
0001d0e0  14 4d 4f 56 20 72 35 2c  72 32 2c 4c 53 52 23 32  |.MOV r5,r2,LSR#2|
0001d0f0  34 0d b7 e8 13 53 54 52  42 20 72 35 2c 5b 72 38  |4....STRB r5,[r8|
0001d100  5d 2c 23 31 0d b7 f2 13  4d 4f 56 20 72 32 2c 72  |],#1....MOV r2,r|
0001d110  32 2c 4c 53 4c 23 38 0d  b7 fc 10 53 55 42 20 72  |2,LSL#8....SUB r|
0001d120  33 2c 72 33 2c 23 38 0d  b8 06 09 2e 72 6c 65 34  |3,r3,#8.....rle4|
0001d130  0d b8 10 0d 43 4d 50 20  72 33 2c 23 38 0d b8 1a  |....CMP r3,#8...|
0001d140  0c 42 47 45 20 72 6c 65  33 0d b8 24 0d 43 4d 50  |.BGE rle3..$.CMP|
0001d150  20 72 34 2c 23 30 0d b8  2e 0c 42 47 54 20 72 6c  | r4,#0....BGT rl|
0001d160  65 32 0d b8 38 09 42 20  72 6c 65 0d b8 42 0f 2e  |e2..8.B rle..B..|
0001d170  72 6c 65 73 70 65 63 69  61 6c 0d b8 a6 0d 43 4d  |rlespecial....CM|
0001d180  50 20 72 33 2c 23 30 0d  b8 b0 16 4d 4f 56 47 54  |P r3,#0....MOVGT|
0001d190  20 72 35 2c 72 32 2c 4c  53 52 23 32 34 0d b8 ba  | r5,r2,LSR#24...|
0001d1a0  15 53 54 52 47 54 42 20  72 35 2c 5b 72 38 5d 2c  |.STRGTB r5,[r8],|
0001d1b0  23 31 0d b8 ce 14 4c 44  4d 46 44 20 53 50 20 21  |#1....LDMFD SP !|
0001d1c0  2c 7b 52 31 34 7d 0d b8  d8 0f 4d 4f 56 53 20 50  |,{R14}....MOVS P|
0001d1d0  43 2c 52 31 34 0d b8 e2  12 2e 62 6d 72 6c 65 34  |C,R14.....bmrle4|
0001d1e0  5f 69 6e 73 65 72 74 0d  b8 ec 11 52 53 42 20 72  |_insert....RSB r|
0001d1f0  35 2c 72 33 2c 23 33 32  0d b8 f6 14 4d 4f 56 20  |5,r3,#32....MOV |
0001d200  72 32 2c 72 32 2c 4c 53  52 20 72 35 0d b9 00 14  |r2,r2,LSR r5....|
0001d210  4d 4f 56 20 72 32 2c 72  32 2c 4c 53 4c 20 72 35  |MOV r2,r2,LSL r5|
0001d220  0d b9 0a 10 53 55 42 20  72 35 2c 72 35 2c 23 38  |....SUB r5,r5,#8|
0001d230  0d b9 14 16 84 52 20 72  32 2c 72 32 2c 72 30 2c  |.....R r2,r2,r0,|
0001d240  4c 53 4c 20 72 35 0d b9  1e 11 53 55 42 53 20 72  |LSL r5....SUBS r|
0001d250  34 2c 72 34 2c 23 32 0d  b9 28 12 41 44 44 4d 49  |4,r4,#2..(.ADDMI|
0001d260  20 72 33 2c 72 33 2c 23  34 0d b9 32 12 41 44 44  | r3,r3,#4..2.ADD|
0001d270  50 4c 20 72 33 2c 72 33  2c 23 38 0d b9 3c 0f 4d  |PL r3,r3,#8..<.M|
0001d280  4f 56 53 20 50 43 2c 52  31 34 0d b9 46 05 5d 0d  |OVS PC,R14..F.].|
0001d290  b9 50 05 cb 0d b9 5a 12  e7 63 61 63 68 65 62 79  |.P....Z..cacheby|
0001d2a0  74 65 73 25 20 8c 0d b9  64 0a 5b 4f 50 54 20 5a  |tes% ...d.[OPT Z|
0001d2b0  0d b9 6e 13 2e 62 79 74  65 66 72 6f 6d 63 61 63  |..n..bytefromcac|
0001d2c0  68 65 25 0d b9 78 16 53  54 4d 46 44 20 53 50 20  |he%..x.STMFD SP |
0001d2d0  21 2c 7b 52 31 2c 52 32  7d 0d b9 82 15 4c 44 52  |!,{R1,R2}....LDR|
0001d2e0  20 52 31 2c 69 6e 63 61  63 68 65 70 74 72 0d b9  | R1,incacheptr..|
0001d2f0  8c 16 4c 44 52 20 52 32  2c 6e 75 6d 6c 65 66 74  |..LDR R2,numleft|
0001d300  74 6f 67 6f 0d b9 96 13  4c 44 52 42 20 52 30 2c  |togo....LDRB R0,|
0001d310  5b 52 31 5d 2c 23 31 0d  b9 a0 11 53 55 42 53 20  |[R1],#1....SUBS |
0001d320  52 32 2c 52 32 2c 23 31  0d b9 aa 17 53 54 52 4e  |R2,R2,#1....STRN|
0001d330  45 20 52 31 2c 69 6e 63  61 63 68 65 70 74 72 0d  |E R1,incacheptr.|
0001d340  b9 b4 18 53 54 52 4e 45  20 52 32 2c 6e 75 6d 6c  |...STRNE R2,numl|
0001d350  65 66 74 74 6f 67 6f 0d  b9 be 16 4c 44 4d 46 44  |efttogo....LDMFD|
0001d360  20 53 50 20 21 2c 7b 52  31 2c 52 32 7d 0d b9 c8  | SP !,{R1,R2}...|
0001d370  10 4d 4f 56 4e 45 20 50  43 2c 52 31 34 0d b9 d2  |.MOVNE PC,R14...|
0001d380  1f 53 54 4d 46 44 20 53  50 20 21 2c 7b 52 30 2c  |.STMFD SP !,{R0,|
0001d390  52 31 2c 52 32 2c 52 33  2c 52 34 7d 0d b9 dc 17  |R1,R2,R3,R4}....|
0001d3a0  4c 44 52 20 52 32 2c 76  61 6c 64 61 74 61 63 61  |LDR R2,valdataca|
0001d3b0  63 68 65 0d b9 e6 15 53  54 52 20 52 32 2c 69 6e  |che....STR R2,in|
0001d3c0  63 61 63 68 65 70 74 72  0d b9 f0 13 4c 44 52 20  |cacheptr....LDR |
0001d3d0  52 33 2c 76 61 6c 63 61  63 68 65 0d b9 fa 16 53  |R3,valcache....S|
0001d3e0  54 52 20 52 33 2c 6e 75  6d 6c 65 66 74 74 6f 67  |TR R3,numlefttog|
0001d3f0  6f 0d ba 04 0d 4d 4f 56  20 52 30 2c 23 34 0d ba  |o....MOV R0,#4..|
0001d400  0e 0e 4d 4f 56 20 52 31  2c 23 63 25 0d ba 18 11  |..MOV R1,#c%....|
0001d410  53 57 49 20 22 4f 53 5f  47 42 50 42 22 0d ba 22  |SWI "OS_GBPB".."|
0001d420  1f 4c 44 4d 46 44 20 53  50 20 21 2c 7b 52 30 2c  |.LDMFD SP !,{R0,|
0001d430  52 31 2c 52 32 2c 52 33  2c 52 34 7d 0d ba 2c 0e  |R1,R2,R3,R4}..,.|
0001d440  4d 4f 56 20 50 43 2c 52  31 34 0d ba 36 20 2e 76  |MOV PC,R14..6 .v|
0001d450  61 6c 64 61 74 61 63 61  63 68 65 20 44 43 44 20  |aldatacache DCD |
0001d460  64 61 74 61 63 61 63 68  65 25 0d ba 40 18 2e 76  |datacache%..@..v|
0001d470  61 6c 63 61 63 68 65 20  44 43 44 20 63 61 63 68  |alcache DCD cach|
0001d480  65 25 0d ba 4a 1e 2e 69  6e 63 61 63 68 65 70 74  |e%..J..incachept|
0001d490  72 20 44 43 44 20 64 61  74 61 63 61 63 68 65 25  |r DCD datacache%|
0001d4a0  0d ba 54 1b 2e 6e 75 6d  6c 65 66 74 74 6f 67 6f  |..T..numlefttogo|
0001d4b0  20 44 43 44 20 63 61 63  68 65 25 0d ba 5e 18 2e  | DCD cache%..^..|
0001d4c0  6d 75 6c 74 69 62 79 74  65 66 72 6f 6d 63 61 63  |multibytefromcac|
0001d4d0  68 65 25 0d ba 68 0d 43  4d 50 20 52 33 2c 23 30  |he%..h.CMP R3,#0|
0001d4e0  0d ba 72 0d ec 51 20 50  43 2c 52 31 34 0d ba 7c  |..r..Q PC,R14..||
0001d4f0  17 53 54 4d 46 44 20 53  50 20 21 2c 7b 52 30 2c  |.STMFD SP !,{R0,|
0001d500  52 31 34 7d 0d ba 86 18  2e 6d 75 6c 74 69 62 79  |R14}.....multiby|
0001d510  74 65 66 72 6f 6d 63 61  63 68 65 6c 0d ba 90 15  |tefromcachel....|
0001d520  42 4c 20 62 79 74 65 66  72 6f 6d 63 61 63 68 65  |BL bytefromcache|
0001d530  25 0d ba 9a 13 53 54 52  42 20 52 30 2c 5b 52 32  |%....STRB R0,[R2|
0001d540  5d 2c 23 31 0d ba a4 11  53 55 42 53 20 52 33 2c  |],#1....SUBS R3,|
0001d550  52 33 2c 23 31 0d ba ae  1b 42 4e 45 20 6d 75 6c  |R3,#1....BNE mul|
0001d560  74 69 62 79 74 65 66 72  6f 6d 63 61 63 68 65 6c  |tibytefromcachel|
0001d570  0d ba b8 17 4c 44 4d 46  44 20 53 50 20 21 2c 7b  |....LDMFD SP !,{|
0001d580  52 30 2c 52 31 34 7d 0d  ba c2 0e 4d 4f 56 20 50  |R0,R14}....MOV P|
0001d590  43 2c 52 31 34 0d ba cc  05 5d 0d ba d6 05 cd 0d  |C,R14....]......|
0001d5a0  ba e0 10 e7 70 6c 61 6e  61 72 25 3c 30 20 8c 0d  |....planar%<0 ..|
0001d5b0  ba ea 19 43 25 3d 37 3a  e7 66 6c 61 67 3d 32 36  |...C%=7:.flag=26|
0001d5c0  30 30 20 43 25 3d 31 35  0d ba f4 0a 5b 4f 50 54  |00 C%=15....[OPT|
0001d5d0  20 5a 0d ba fe 0e 2e 70  6c 61 6e 63 6e 76 25 20  | Z.....plancnv% |
0001d5e0  0d bb 08 11 4c 44 52 20  52 30 2c 73 78 6c 6f 63  |....LDR R0,sxloc|
0001d5f0  20 0d bb 12 1c 4c 44 52  20 52 31 2c 5b 52 39 5d  | ....LDR R1,[R9]|
0001d600  3a 4c 44 52 20 52 31 2c  5b 52 31 5d 20 0d bb 1c  |:LDR R1,[R1] ...|
0001d610  1f 4c 44 52 20 52 33 2c  5b 52 39 2c 23 38 5d 3a  |.LDR R3,[R9,#8]:|
0001d620  4c 44 52 20 52 33 2c 5b  52 33 5d 20 0d bb 26 20  |LDR R3,[R3] ..& |
0001d630  4c 44 52 20 52 34 2c 5b  52 39 2c 23 31 36 5d 3a  |LDR R4,[R9,#16]:|
0001d640  4c 44 52 20 52 34 2c 5b  52 34 5d 20 0d bb 30 05  |LDR R4,[R4] ..0.|
0001d650  5d 0d bb 3a 10 e7 66 6c  61 67 3d 33 35 30 30 20  |]..:..flag=3500 |
0001d660  8c 0d bb 44 0a 5b 4f 50  54 20 5a 0d bb 4e 0d 4d  |...D.[OPT Z..N.M|
0001d670  4f 56 20 52 39 2c 23 30  0d bb 58 05 5d 0d bb 62  |OV R9,#0..X.]..b|
0001d680  05 cc 0d bb 6c 0a 5b 4f  50 54 20 5a 0d bb 76 0e  |....l.[OPT Z..v.|
0001d690  4d 4f 56 20 52 39 2c 23  43 25 0d bb 80 05 5d 0d  |MOV R9,#C%....].|
0001d6a0  bb 8a 05 cd 0d bb 94 0a  5b 4f 50 54 20 5a 0d bb  |........[OPT Z..|
0001d6b0  9e 0c 2e 70 6c 61 6e 65  6c 70 0d bb a8 0d 4d 4f  |...planelp....MO|
0001d6c0  56 20 52 37 2c 23 30 0d  bb b2 0d 4d 4f 56 20 52  |V R7,#0....MOV R|
0001d6d0  35 2c 52 33 0d bb bc 05  5d 0d bb c6 11 e3 4e 25  |5,R3....].....N%|
0001d6e0  3d 31 b8 70 6c 61 6e 65  73 25 0d bb d0 0a 5b 4f  |=1.planes%....[O|
0001d6f0  50 54 20 5a 0d bb da 12  4c 44 52 20 52 36 2c 5b  |PT Z....LDR R6,[|
0001d700  52 35 5d 2c 52 34 0d bb  e4 05 5d 0d bb ee 10 e7  |R5],R4....].....|
0001d710  66 6c 61 67 3d 32 36 30  30 20 8c 0d bb f8 0a 5b  |flag=2600 .....[|
0001d720  4f 50 54 20 5a 0d bc 02  14 4d 4f 56 20 52 36 2c  |OPT Z....MOV R6,|
0001d730  52 36 2c 4c 53 4c 20 23  38 0d bc 0c 18 42 49 43  |R6,LSL #8....BIC|
0001d740  20 52 36 2c 52 36 2c 23  26 46 46 30 30 30 30 30  | R6,R6,#&FF00000|
0001d750  30 0d bc 16 17 84 52 20  52 36 2c 52 36 2c 52 36  |0.....R R6,R6,R6|
0001d760  2c 4c 53 52 20 23 31 36  0d bc 20 05 5d 0d bc 2a  |,LSR #16.. .]..*|
0001d770  05 cd 0d bc 34 10 e7 66  6c 61 67 3d 33 35 30 30  |....4..flag=3500|
0001d780  20 8c 0d bc 3e 0a 5b 4f  50 54 20 5a 0d bc 48 14  | ...>.[OPT Z..H.|
0001d790  4d 4f 56 20 52 36 2c 52  36 2c 4c 53 52 20 52 39  |MOV R6,R6,LSR R9|
0001d7a0  0d bc 52 0f 80 53 20 52  36 2c 52 36 2c 23 31 0d  |..R..S R6,R6,#1.|
0001d7b0  bc 5c 22 84 52 20 52 37  2c 52 37 2c 52 36 2c 4c  |.\".R R7,R7,R6,L|
0001d7c0  53 4c 20 23 28 70 6c 61  6e 65 73 25 2d 4e 25 29  |SL #(planes%-N%)|
0001d7d0  20 0d bc 66 1b 84 52 4e  45 20 52 37 2c 52 37 2c  | ..f..RNE R7,R7,|
0001d7e0  23 28 70 6c 61 6e 65 73  25 2d 31 29 0d bc 70 05  |#(planes%-1)..p.|
0001d7f0  5d 0d bc 7a 05 cc 0d bc  84 0a 5b 4f 50 54 20 5a  |]..z......[OPT Z|
0001d800  0d bc 8e 14 4d 4f 56 20  52 36 2c 52 36 2c 4c 53  |....MOV R6,R6,LS|
0001d810  52 20 52 39 0d bc 98 0e  80 20 52 36 2c 52 36 2c  |R R9..... R6,R6,|
0001d820  23 31 0d bc a2 1b 84 52  20 52 37 2c 52 37 2c 52  |#1.....R R7,R7,R|
0001d830  36 2c 4c 53 4c 20 23 28  4e 25 2d 31 29 0d bc ac  |6,LSL #(N%-1)...|
0001d840  05 5d 0d bc b6 05 cd 0d  bc c0 05 ed 0d bc ca 0a  |.]..............|
0001d850  5b 4f 50 54 20 5a 0d bc  d4 13 53 54 52 42 20 52  |[OPT Z....STRB R|
0001d860  37 2c 5b 52 31 5d 2c 23  31 0d bc de 05 5d 0d bc  |7,[R1],#1....]..|
0001d870  e8 10 e7 66 6c 61 67 3d  33 35 30 30 20 8c 0d bc  |...flag=3500 ...|
0001d880  f2 0a 5b 4f 50 54 20 5a  0d bc fc 10 41 44 44 20  |..[OPT Z....ADD |
0001d890  52 39 2c 52 39 2c 23 31  0d bd 06 10 43 4d 50 20  |R9,R9,#1....CMP |
0001d8a0  52 39 2c 23 43 25 2b 31  0d bd 10 0c ec 51 20 52  |R9,#C%+1.....Q R|
0001d8b0  39 2c 23 30 0d bd 1a 05  5d 0d bd 24 05 cc 0d bd  |9,#0....]..$....|
0001d8c0  2e 0a 5b 4f 50 54 20 5a  0d bd 38 1e 53 55 42 53  |..[OPT Z..8.SUBS|
0001d8d0  20 52 39 2c 52 39 2c 23  31 3a 4d 4f 56 4d 49 20  | R9,R9,#1:MOVMI |
0001d8e0  52 39 2c 23 43 25 0d bd  42 05 5d 0d bd 4c 05 cd  |R9,#C%..B.]..L..|
0001d8f0  0d bd 56 0d c8 8e 20 66  6c 61 67 20 ca 0d bd 60  |..V... flag ...`|
0001d900  0a c9 20 32 36 30 30 0d  bd 6a 0a 5b 4f 50 54 20  |.. 2600..j.[OPT |
0001d910  5a 0d bd 74 0f 4d 4f 56  4d 49 20 52 33 2c 52 35  |Z..t.MOVMI R3,R5|
0001d920  0d bd 7e 05 5d 0d bd 88  0a c9 20 33 35 30 30 0d  |..~.]..... 3500.|
0001d930  bd 92 0a 5b 4f 50 54 20  5a 0d bd 9c 12 41 44 44  |...[OPT Z....ADD|
0001d940  45 51 20 52 33 2c 52 33  2c 23 31 0d bd a6 05 5d  |EQ R3,R3,#1....]|
0001d950  0d bd b0 05 7f 0d bd ba  0a 5b 4f 50 54 20 5a 0d  |.........[OPT Z.|
0001d960  bd c4 12 41 44 44 4d 49  20 52 33 2c 52 33 2c 23  |...ADDMI R3,R3,#|
0001d970  31 0d bd ce 05 5d 0d bd  d8 05 cb 0d bd e2 0a 5b  |1....].........[|
0001d980  4f 50 54 20 5a 0d bd ec  1d 53 55 42 53 20 52 30  |OPT Z....SUBS R0|
0001d990  2c 52 30 2c 23 31 3a 42  4e 45 20 70 6c 61 6e 65  |,R0,#1:BNE plane|
0001d9a0  6c 70 0d bd f6 0f 4d 4f  56 53 20 50 43 2c 52 31  |lp....MOVS PC,R1|
0001d9b0  34 0d be 00 05 5d 0d be  0a 05 cd 0d be 14 05 ed  |4....]..........|
0001d9c0  0d be 1e 0e 63 70 75 74  69 6d 65 25 3d 91 0d be  |....cputime%=...|
0001d9d0  28 0d e7 63 61 63 68 65  25 20 8c 0d be 32 10 e7  |(..cache% ...2..|
0001d9e0  66 6c 61 67 3d 33 36 30  30 20 8c 0d be 3c 44 70  |flag=3600 ...<Dp|
0001d9f0  63 64 62 6c 6b 25 21 31  32 3d 63 61 63 68 65 72  |cdblk%!12=cacher|
0001da00  6f 77 73 25 3a f2 72 65  66 69 6c 6c 70 63 64 3a  |ows%:.refillpcd:|
0001da10  e7 63 61 63 68 65 25 3e  3d 66 69 6c 65 73 69 7a  |.cache%>=filesiz|
0001da20  65 25 20 72 6f 77 73 74  6f 67 6f 25 3d 2d 31 0d  |e% rowstogo%=-1.|
0001da30  be 46 05 cc 0d be 50 21  e7 73 74 72 69 70 72 6f  |.F....P!.stripro|
0001da40  77 73 25 3e 30 80 63 6f  6d 70 72 65 73 73 69 6f  |ws%>0.compressio|
0001da50  6e 3e 31 20 8c 0d be 64  1f c8 99 31 32 2c 34 2c  |n>1 ...d...12,4,|
0001da60  63 25 2c 64 61 74 61 63  61 63 68 65 25 2c 63 61  |c%,datacache%,ca|
0001da70  63 68 65 25 0d be 6e 3b  e7 63 61 63 68 65 62 79  |che%..n;.cacheby|
0001da80  74 65 73 25 20 21 69 6e  63 61 63 68 65 70 74 72  |tes% !incacheptr|
0001da90  3d 64 61 74 61 63 61 63  68 65 25 3a 21 6e 75 6d  |=datacache%:!num|
0001daa0  6c 65 66 74 74 6f 67 6f  3d 63 61 63 68 65 25 0d  |lefttogo=cache%.|
0001dab0  be 78 05 cc 0d be 82 2b  f2 72 65 66 69 6c 6c 3a  |.x.....+.refill:|
0001dac0  e7 63 61 63 68 65 25 3e  3d 66 69 6c 65 73 69 7a  |.cache%>=filesiz|
0001dad0  65 25 20 72 6f 77 73 74  6f 67 6f 25 3d 2d 31 0d  |e% rowstogo%=-1.|
0001dae0  be 8c 05 cd 0d be 96 05  cd 0d be a0 05 cd 0d be  |................|
0001daf0  aa 0d c8 8e 20 6e 63 6f  6c 20 ca 0d be b4 14 c9  |.... ncol ......|
0001db00  20 32 5e 32 34 2d 31 3a  73 69 7a 65 25 3d 31 0d  | 2^24-1:size%=1.|
0001db10  be be 14 c9 20 32 5e 31  35 2d 31 3a 73 69 7a 65  |.... 2^15-1:size|
0001db20  25 3d 31 0d be c8 18 c9  20 36 33 2c 32 35 35 2c  |%=1..... 63,255,|
0001db30  32 35 36 3a 73 69 7a 65  25 3d 31 0d be d2 10 c9  |256:size%=1.....|
0001db40  20 31 35 3a 73 69 7a 65  25 3d 32 0d be dc 0f c9  | 15:size%=2.....|
0001db50  20 33 3a 73 69 7a 65 25  3d 34 0d be e6 1f c9 20  | 3:size%=4..... |
0001db60  31 3a 73 69 7a 65 25 3d  38 3a e7 6d 24 3d 22 43  |1:size%=8:.m$="C|
0001db70  22 20 73 69 7a 65 25 3d  32 0d be f0 13 e7 6d 24  |" size%=2.....m$|
0001db80  3d 22 44 22 20 73 69 7a  65 25 3d 34 0d be fa 13  |="D" size%=4....|
0001db90  e7 6d 24 3d 22 54 22 20  73 69 7a 65 25 3d 32 0d  |.m$="T" size%=2.|
0001dba0  bf 04 05 cb 0d bf 18 0d  c8 8e 20 66 6c 61 67 20  |.......... flag |
0001dbb0  ca 0d bf 22 2a c9 20 35  30 31 3a e7 69 6e 66 6f  |..."*. 501:.info|
0001dbc0  25 20 f1 22 52 65 61 64  69 6e 67 20 69 6e 74 65  |% ."Reading inte|
0001dbd0  72 6c 61 63 65 64 20 47  49 46 22 0d bf 2c 25 73  |rlaced GIF"..,%s|
0001dbe0  7a 25 3d 73 78 25 2a 73  79 25 3a 70 6c 62 75 66  |z%=sx%*sy%:plbuf|
0001dbf0  66 25 3d a4 64 69 6d 28  73 7a 25 2b 31 30 30 29  |f%=.dim(sz%+100)|
0001dc00  0d bf 36 46 e3 59 25 3d  30 b8 73 79 25 2d 31 88  |..6F.Y%=0.sy%-1.|
0001dc10  38 3a 58 25 3d 70 6c 62  75 66 66 25 2b 59 25 2a  |8:X%=plbuff%+Y%*|
0001dc20  73 78 25 3a d6 20 4c 5a  57 64 65 63 6f 64 65 25  |sx%:. LZWdecode%|
0001dc30  2c 74 61 62 6c 65 25 28  30 29 2c 63 25 2c 58 25  |,table%(0),c%,X%|
0001dc40  2c 73 78 25 3a ed 0d bf  40 46 e3 59 25 3d 34 b8  |,sx%:...@F.Y%=4.|
0001dc50  73 79 25 2d 31 88 38 3a  58 25 3d 70 6c 62 75 66  |sy%-1.8:X%=plbuf|
0001dc60  66 25 2b 59 25 2a 73 78  25 3a d6 20 4c 5a 57 64  |f%+Y%*sx%:. LZWd|
0001dc70  65 63 6f 64 65 25 2c 74  61 62 6c 65 25 28 30 29  |ecode%,table%(0)|
0001dc80  2c 63 25 2c 58 25 2c 73  78 25 3a ed 0d bf 4a 46  |,c%,X%,sx%:...JF|
0001dc90  e3 59 25 3d 32 b8 73 79  25 2d 31 88 34 3a 58 25  |.Y%=2.sy%-1.4:X%|
0001dca0  3d 70 6c 62 75 66 66 25  2b 59 25 2a 73 78 25 3a  |=plbuff%+Y%*sx%:|
0001dcb0  d6 20 4c 5a 57 64 65 63  6f 64 65 25 2c 74 61 62  |. LZWdecode%,tab|
0001dcc0  6c 65 25 28 30 29 2c 63  25 2c 58 25 2c 73 78 25  |le%(0),c%,X%,sx%|
0001dcd0  3a ed 0d bf 54 46 e3 59  25 3d 31 b8 73 79 25 2d  |:...TF.Y%=1.sy%-|
0001dce0  31 88 32 3a 58 25 3d 70  6c 62 75 66 66 25 2b 59  |1.2:X%=plbuff%+Y|
0001dcf0  25 2a 73 78 25 3a d6 20  4c 5a 57 64 65 63 6f 64  |%*sx%:. LZWdecod|
0001dd00  65 25 2c 74 61 62 6c 65  25 28 30 29 2c 63 25 2c  |e%,table%(0),c%,|
0001dd10  58 25 2c 73 78 25 3a ed  0d bf 5e 3f 64 61 74 61  |X%,sx%:...^?data|
0001dd20  63 61 63 68 65 25 3d 70  6c 62 75 66 66 25 3a 62  |cache%=plbuff%:b|
0001dd30  75 66 66 25 3d 70 6c 62  75 66 66 25 3a 72 6f 77  |uff%=plbuff%:row|
0001dd40  62 79 74 65 73 25 3d 73  78 25 3a 72 6f 77 73 74  |bytes%=sx%:rowst|
0001dd50  6f 67 6f 25 3d 2d 31 0d  bf 68 05 cb 0d bf 72 1a  |ogo%=-1..h....r.|
0001dd60  e7 67 61 6d 6d 61 3c 3e  31 20 80 20 67 61 6d 6d  |.gamma<>1 . gamm|
0001dd70  61 3c 3e 30 20 8c 0d bf  7c 17 6b 3d 31 2f 67 61  |a<>0 ...|.k=1/ga|
0001dd80  6d 6d 61 3a e3 43 25 3d  30 b8 32 35 35 0d bf 86  |mma:.C%=0.255...|
0001dd90  23 e7 72 25 28 43 25 29  20 72 25 28 43 25 29 3d  |#.r%(C%) r%(C%)=|
0001dda0  28 28 72 25 28 43 25 29  2f 46 29 5e 6b 29 2a 46  |((r%(C%)/F)^k)*F|
0001ddb0  0d bf 90 23 e7 67 25 28  43 25 29 20 67 25 28 43  |...#.g%(C%) g%(C|
0001ddc0  25 29 3d 28 28 67 25 28  43 25 29 2f 46 29 5e 6b  |%)=((g%(C%)/F)^k|
0001ddd0  29 2a 46 0d bf 9a 23 e7  62 25 28 43 25 29 20 62  |)*F...#.b%(C%) b|
0001dde0  25 28 43 25 29 3d 28 28  62 25 28 43 25 29 2f 46  |%(C%)=((b%(C%)/F|
0001ddf0  29 5e 6b 29 2a 46 0d bf  a4 05 ed 0d bf ae 05 cd  |)^k)*F..........|
0001de00  0d bf b8 18 72 6d 61 78  3d 46 3a 67 6d 61 78 3d  |....rmax=F:gmax=|
0001de10  46 3a 62 6d 61 78 3d 46  0d bf c2 0c e7 63 6f 6c  |F:bmax=F.....col|
0001de20  3d 30 20 8c 0d bf cc 0e  e7 69 6e 70 75 74 3c 39  |=0 ......input<9|
0001de30  20 8c 0d bf d6 37 e3 43  25 3d 30 b8 32 35 35 3a  | ....7.C%=0.255:|
0001de40  72 25 28 43 25 29 3d 72  25 28 43 25 29 2a 72 77  |r%(C%)=r%(C%)*rw|
0001de50  74 2b 67 25 28 43 25 29  2a 67 77 74 2b 62 25 28  |t+g%(C%)*gwt+b%(|
0001de60  43 25 29 2a 62 77 74 3a  ed 0d bf e0 05 cc 0d bf  |C%)*bwt:........|
0001de70  ea 10 e7 69 6e 70 75 74  3c 34 30 30 20 8c 0d bf  |...input<400 ...|
0001de80  f4 24 72 6d 61 78 3d 46  2a 72 77 74 3a 67 6d 61  |.$rmax=F*rwt:gma|
0001de90  78 3d 46 2a 67 77 74 3a  62 6d 61 78 3d 46 2a 62  |x=F*gwt:bmax=F*b|
0001dea0  77 74 0d bf fe 45 e3 43  25 3d 30 b8 32 35 35 3a  |wt...E.C%=0.255:|
0001deb0  72 25 28 43 25 29 3d 72  25 28 43 25 29 2a 72 77  |r%(C%)=r%(C%)*rw|
0001dec0  74 3a 67 25 28 43 25 29  3d 67 25 28 43 25 29 2a  |t:g%(C%)=g%(C%)*|
0001ded0  67 77 74 3a 62 25 28 43  25 29 3d 62 25 28 43 25  |gwt:b%(C%)=b%(C%|
0001dee0  29 2a 62 77 74 3a ed 0d  c0 08 05 cd 0d c0 12 05  |)*bwt:..........|
0001def0  cd 0d c0 1c 05 cd 0d c0  26 2c e7 ac 6f 72 64 65  |........&,..orde|
0001df00  72 25 20 f2 61 64 6a 75  73 74 70 61 6c 65 74 74  |r% .adjustpalett|
0001df10  65 28 31 2f 79 64 69 76  25 2f 78 64 69 76 25 2c  |e(1/ydiv%/xdiv%,|
0001df20  30 29 0d c0 3a 0d e7 72  61 6e 67 65 25 20 8c 0d  |0)..:..range% ..|
0001df30  c0 44 3e e7 69 6e 66 6f  25 20 f1 22 53 63 61 6e  |.D>.info% ."Scan|
0001df40  6e 69 6e 67 20 64 61 74  61 20 74 6f 20 63 6f 6d  |ning data to com|
0001df50  70 75 74 65 20 70 61 72  61 6d 65 74 65 72 73 20  |pute parameters |
0001df60  66 6f 72 20 27 2d 72 61  6e 67 65 27 22 0d c0 4e  |for '-range'"..N|
0001df70  0d e7 6f 72 64 65 72 25  20 8c 0d c0 58 1d 59 25  |..order% ...X.Y%|
0001df80  3d 30 3a f5 20 c8 99 68  6f 75 72 25 2c 59 25 2a  |=0:. ..hour%,Y%*|
0001df90  31 30 30 81 73 79 25 0d  c0 62 38 57 25 3d a0 28  |100.sy%..b8W%=.(|
0001dfa0  72 24 2b 22 28 78 70 25  28 29 29 22 29 3a d6 6d  |r$+"(xp%())"):.m|
0001dfb0  61 78 6d 69 6e 25 2c 78  70 25 28 31 2c 30 29 2c  |axmin%,xp%(1,0),|
0001dfc0  74 6f 74 76 61 6c 73 32  25 3a 59 25 2b 3d 31 0d  |totvals2%:Y%+=1.|
0001dfd0  c0 6c 22 fd 59 25 3d 73  79 25 20 84 21 6d 69 6e  |.l".Y%=sy% .!min|
0001dfe0  3c 32 35 35 20 80 21 6d  61 78 2b 32 35 35 3e 3d  |<255 .!max+255>=|
0001dff0  46 0d c0 76 05 cc 0d c0  80 25 59 25 3d 30 3a 79  |F..v.....%Y%=0:y|
0001e000  73 61 6d 70 25 3d 31 3a  f5 20 c8 99 68 6f 75 72  |samp%=1:. ..hour|
0001e010  25 2c 59 25 2a 31 30 30  81 79 25 0d c0 8a 3b f2  |%,Y%*100.y%...;.|
0001e020  73 63 61 6c 65 64 70 69  78 65 6c 72 6f 77 28 63  |scaledpixelrow(c|
0001e030  6c 25 28 29 29 3a d6 6d  61 78 6d 69 6e 25 2c 63  |l%()):.maxmin%,c|
0001e040  6c 25 28 31 2c 30 29 2c  74 6f 74 76 61 6c 73 25  |l%(1,0),totvals%|
0001e050  3a 59 25 2b 3d 31 0d c0  94 23 fd 59 25 3d 79 25  |:Y%+=1...#.Y%=y%|
0001e060  20 84 20 21 6d 69 6e 3c  32 35 35 20 80 20 21 6d  | . !min<255 . !m|
0001e070  61 78 2b 32 35 35 3e 3d  46 0d c0 9e 05 cd 0d c0  |ax+255>=F.......|
0001e080  a8 4f e7 21 6d 61 78 2b  32 35 35 3e 3d 46 20 80  |.O.!max+255>=F .|
0001e090  21 6d 69 6e 3c 32 35 35  20 72 61 6e 67 65 25 3d  |!min<255 range%=|
0001e0a0  a3 3a 72 61 6e 67 65 24  3d 22 4e 6f 20 70 6f 69  |.:range$="No poi|
0001e0b0  6e 74 20 69 6e 20 27 2d  72 61 6e 67 65 27 20 6f  |nt in '-range' o|
0001e0c0  6e 20 74 68 69 73 20 69  6d 61 67 65 22 0d c0 b2  |n this image"...|
0001e0d0  85 e7 72 61 6e 67 65 25  20 f2 61 64 6a 75 73 74  |..range% .adjust|
0001e0e0  70 61 6c 65 74 74 65 28  46 2f 28 21 6d 61 78 2d  |palette(F/(!max-|
0001e0f0  21 6d 69 6e 29 2c 21 6d  69 6e 2f 79 64 69 76 25  |!min),!min/ydiv%|
0001e100  2f 78 64 69 76 25 29 3a  72 61 6e 67 65 24 3d 22  |/xdiv%):range$="|
0001e110  49 6e 70 75 74 20 69 6d  61 67 65 20 6d 61 78 69  |Input image maxi|
0001e120  6d 75 6d 20 22 2b c3 28  21 6d 61 78 2f 46 2a 31  |mum "+.(!max/F*1|
0001e130  30 30 29 2b 22 25 20 6d  69 6e 69 6d 75 6d 20 22  |00)+"% minimum "|
0001e140  2b c3 28 21 6d 69 6e 2f  46 2a 31 30 30 29 2b 22  |+.(!min/F*100)+"|
0001e150  25 22 0d c0 bc 1a f2 72  65 77 69 6e 64 3a e7 69  |%".....rewind:.i|
0001e160  6e 66 6f 25 20 f1 72 61  6e 67 65 24 0d c0 c6 05  |nfo% .range$....|
0001e170  cd 0d c0 d0 14 e7 68 69  73 74 25 20 84 65 71 75  |......hist% .equ|
0001e180  61 6c 25 20 8c 0d c0 da  46 e7 65 71 75 61 6c 25  |al% ....F.equal%|
0001e190  20 e7 69 6e 66 6f 25 20  f1 22 53 63 61 6e 6e 69  | .info% ."Scanni|
0001e1a0  6e 67 20 64 61 74 61 20  74 6f 20 63 6f 6d 70 75  |ng data to compu|
0001e1b0  74 65 20 70 61 72 61 6d  65 74 65 72 73 20 66 6f  |te parameters fo|
0001e1c0  72 20 27 2d 65 71 75 61  6c 27 22 0d c0 e4 0d e7  |r '-equal'".....|
0001e1d0  6f 72 64 65 72 25 20 8c  0d c0 ee 24 e3 79 72 25  |order% ....$.yr%|
0001e1e0  3d 30 b8 73 79 25 2d 31  3a c8 99 68 6f 75 72 25  |=0.sy%-1:..hour%|
0001e1f0  2c 79 72 25 2a 31 30 30  81 73 79 25 0d c0 f8 36  |,yr%*100.sy%...6|
0001e200  57 25 3d a0 28 72 24 2b  22 28 78 70 25 28 29 29  |W%=.(r$+"(xp%())|
0001e210  22 29 3a d6 68 69 73 74  6f 25 2c 78 70 25 28 31  |"):.histo%,xp%(1|
0001e220  2c 30 29 2c 76 61 6c 73  25 28 30 2c 30 29 2c 73  |,0),vals%(0,0),s|
0001e230  78 25 0d c1 02 05 ed 0d  c1 0c 05 cc 0d c1 16 2b  |x%.............+|
0001e240  79 73 61 6d 70 25 3d 31  3a e3 79 72 25 3d 30 b8  |ysamp%=1:.yr%=0.|
0001e250  79 25 2d 31 3a c8 99 68  6f 75 72 25 2c 79 72 25  |y%-1:..hour%,yr%|
0001e260  2a 31 30 30 81 79 25 0d  c1 20 39 f2 73 63 61 6c  |*100.y%.. 9.scal|
0001e270  65 64 70 69 78 65 6c 72  6f 77 28 63 6c 25 28 29  |edpixelrow(cl%()|
0001e280  29 3a d6 68 69 73 74 6f  25 2c 63 6c 25 28 31 2c  |):.histo%,cl%(1,|
0001e290  30 29 2c 76 61 6c 73 25  28 30 2c 30 29 2c 78 25  |0),vals%(0,0),x%|
0001e2a0  0d c1 2a 05 ed 0d c1 34  05 cd 0d c1 3e 2e e7 69  |..*....4....>..i|
0001e2b0  6e 66 6f 25 20 f1 22 44  6f 6e 65 2e 20 4e 6f 77  |nfo% ."Done. Now|
0001e2c0  20 70 72 6f 63 65 73 73  69 6e 67 20 74 68 65 20  | processing the |
0001e2d0  70 69 63 74 75 72 65 22  0d c1 48 05 cd 0d c1 52  |picture"..H....R|
0001e2e0  10 e7 69 6e 70 75 74 3c  34 30 30 20 8c 0d c1 5c  |..input<400 ...\|
0001e2f0  0d e3 43 25 3d 30 b8 32  35 35 0d c1 66 16 e7 72  |..C%=0.255..f..r|
0001e300  25 28 43 25 29 3c 30 20  72 25 28 43 25 29 3d 30  |%(C%)<0 r%(C%)=0|
0001e310  0d c1 70 16 e7 67 25 28  43 25 29 3c 30 20 67 25  |..p..g%(C%)<0 g%|
0001e320  28 43 25 29 3d 30 0d c1  7a 16 e7 62 25 28 43 25  |(C%)=0..z..b%(C%|
0001e330  29 3c 30 20 62 25 28 43  25 29 3d 30 0d c1 84 1c  |)<0 b%(C%)=0....|
0001e340  e7 72 25 28 43 25 29 3e  72 6d 61 78 20 72 25 28  |.r%(C%)>rmax r%(|
0001e350  43 25 29 3d 72 6d 61 78  0d c1 8e 1c e7 67 25 28  |C%)=rmax.....g%(|
0001e360  43 25 29 3e 67 6d 61 78  20 67 25 28 43 25 29 3d  |C%)>gmax g%(C%)=|
0001e370  67 6d 61 78 0d c1 98 1c  e7 62 25 28 43 25 29 3e  |gmax.....b%(C%)>|
0001e380  62 6d 61 78 20 62 25 28  43 25 29 3d 62 6d 61 78  |bmax b%(C%)=bmax|
0001e390  0d c1 a2 05 ed 0d c1 ac  05 cd 0d c1 b6 0c e7 68  |...............h|
0001e3a0  69 73 74 25 20 8c 0d c1  c0 19 4d 25 3d 30 3a 5a  |ist% .....M%=0:Z|
0001e3b0  4d 25 3d 2d 31 3a e3 43  25 3d 30 b8 63 6f 6c 0d  |M%=-1:.C%=0.col.|
0001e3c0  c1 ca 35 e3 5a 25 3d 30  b8 32 35 36 3a e7 76 61  |..5.Z%=0.256:.va|
0001e3d0  6c 73 25 28 5a 25 2c 43  25 29 3e 4d 25 20 4d 25  |ls%(Z%,C%)>M% M%|
0001e3e0  3d 76 61 6c 73 25 28 5a  25 2c 43 25 29 3a 5a 4d  |=vals%(Z%,C%):ZM|
0001e3f0  25 3d 5a 25 0d c1 d4 07  ed 3a ed 0d c1 de 1d e7  |%=Z%.....:......|
0001e400  5a 4d 25 3d 2d 31 20 84  20 6f 6b 69 6e 66 6f 25  |ZM%=-1 . okinfo%|
0001e410  3d 30 20 8c 3d 31 30 30  0d c1 e8 0d e7 20 63 6f  |=0 .=100..... co|
0001e420  6c 3e 30 20 8c 0d c1 f2  0e eb 36 36 3a 68 74 3d  |l>0 ......66:ht=|
0001e430  35 30 30 0d c1 fc 15 e7  eb 3c 3e 36 36 20 eb 31  |500......<>66 .1|
0001e440  36 3a 68 74 3d 34 30 30  0d c2 06 0f 86 30 2c 36  |6:ht=400.....0,6|
0001e450  2c 32 30 30 30 2c 36 0d  c2 10 05 cc 0d c2 1a 1a  |,2000,6.........|
0001e460  eb 31 38 3a 68 74 3d 34  30 30 3a 86 30 2c 36 2c  |.18:ht=400:.0,6,|
0001e470  31 30 32 34 2c 36 0d c2  24 05 cd 0d c2 2e 23 4d  |1024,6..$.....#M|
0001e480  3d 4d 25 2f 28 68 74 2a  32 2d 38 29 3a e3 43 25  |=M%/(ht*2-8):.C%|
0001e490  3d 30 b8 63 6f 6c 3a c8  8e 20 43 25 20 ca 0d c2  |=0.col:.. C% ...|
0001e4a0  38 0a c9 20 30 3a e6 31  0d c2 42 0a c9 20 31 3a  |8.. 0:.1..B.. 1:|
0001e4b0  e6 32 0d c2 4c 0a c9 20  32 3a e6 34 0d c2 56 05  |.2..L.. 2:.4..V.|
0001e4c0  cb 0d c2 60 0d e7 20 63  6f 6c 3e 30 20 8c 0d c2  |...`.. col>0 ...|
0001e4d0  6a 43 e3 5a 25 3d 30 b8  32 35 36 3a e7 76 61 6c  |jC.Z%=0.256:.val|
0001e4e0  73 25 28 5a 25 2c 43 25  29 20 58 25 3d 5a 25 2a  |s%(Z%,C%) X%=Z%*|
0001e4f0  33 2b 43 25 3c 3c 31 3a  86 58 25 2c 38 2c 58 25  |3+C%<<1:.X%,8,X%|
0001e500  2c 76 61 6c 73 25 28 5a  25 2c 43 25 29 2f 4d 2b  |,vals%(Z%,C%)/M+|
0001e510  38 0d c2 74 05 ed 0d c2  7e 05 cc 0d c2 88 3f e3  |8..t....~.....?.|
0001e520  5a 25 3d 30 b8 32 35 36  3a e7 76 61 6c 73 25 28  |Z%=0.256:.vals%(|
0001e530  5a 25 2c 43 25 29 20 58  25 3d 5a 25 3c 3c 32 3a  |Z%,C%) X%=Z%<<2:|
0001e540  c8 93 20 c8 90 58 25 2c  38 2c 32 2c 76 61 6c 73  |.. ..X%,8,2,vals|
0001e550  25 28 5a 25 2c 43 25 29  2f 4d 0d c2 92 05 ed 0d  |%(Z%,C%)/M......|
0001e560  c2 9c 05 cd 0d c2 a6 05  ed 0d c2 b0 1c f2 63 6c  |..............cl|
0001e570  6f 73 65 3a c8 99 22 48  6f 75 72 67 6c 61 73 73  |ose:.."Hourglass|
0001e580  5f 4f 66 66 22 0d c2 ba  08 3d 31 30 30 0d c2 c4  |_Off"....=100...|
0001e590  05 cd 0d c2 ce 25 e7 6d  3e 3d 30 20 6f 6e 61 6d  |.....%.m>=0 onam|
0001e5a0  65 24 3d 22 70 22 2b c3  6d 2b 6d 24 20 8b 6f 6e  |e$="p"+.m+m$ .on|
0001e5b0  61 6d 65 24 3d 6d 24 0d  c2 d8 21 e7 6d 3d 2d 36  |ame$=m$...!.m=-6|
0001e5c0  20 84 6d 3d 2d 37 20 84  6d 3d 2d 38 20 6f 6e 61  | .m=-7 .m=-8 ona|
0001e5d0  6d 65 24 3d 70 6e 6d 24  0d c2 e2 17 e7 72 61 6e  |me$=pnm$.....ran|
0001e5e0  67 65 25 20 6f 6e 61 6d  65 24 2b 3d 22 72 22 0d  |ge% oname$+="r".|
0001e5f0  c2 ec 17 e7 65 71 75 61  6c 25 20 6f 6e 61 6d 65  |....equal% oname|
0001e600  24 2b 3d 22 65 22 0d c2  f6 23 e7 73 68 61 72 70  |$+="e"...#.sharp|
0001e610  65 6e 25 20 6f 6e 61 6d  65 24 2b 3d 22 73 22 2b  |en% oname$+="s"+|
0001e620  c3 73 68 61 72 70 65 6e  25 0d c3 00 1f e7 62 6c  |.sharpen%.....bl|
0001e630  61 63 6b 25 20 6f 6e 61  6d 65 24 2b 3d 22 62 22  |ack% oname$+="b"|
0001e640  2b c3 62 6c 61 63 6b 25  0d c3 0a 38 e7 67 61 6d  |+.black%...8.gam|
0001e650  6d 61 3c 3e 31 20 41 25  3d 40 25 3a 40 25 3d 26  |ma<>1 A%=@%:@%=&|
0001e660  31 30 32 30 31 30 30 3a  6f 6e 61 6d 65 24 2b 3d  |1020100:oname$+=|
0001e670  22 67 22 2b c3 67 61 6d  6d 61 3a 40 25 3d 41 25  |"g"+.gamma:@%=A%|
0001e680  0d c3 14 1b e7 62 72 69  67 68 74 25 3d 31 36 20  |.....bright%=16 |
0001e690  6f 6e 61 6d 65 24 2b 3d  22 62 22 0d c3 1e 29 78  |oname$+="b"...)x|
0001e6a0  73 70 25 3d 78 25 3a 79  73 70 25 3d 79 25 3a e7  |sp%=x%:ysp%=y%:.|
0001e6b0  72 6f 74 61 74 65 25 20  c8 94 20 78 73 70 25 2c  |rotate% .. xsp%,|
0001e6c0  79 73 70 25 0d c3 28 0a  c8 8e 20 6d 20 ca 0d c3  |ysp%..(... m ...|
0001e6d0  32 2e c9 20 2d 31 3a 78  77 6f 72 64 73 25 3d 78  |2.. -1:xwords%=x|
0001e6e0  73 70 25 3a 73 7a 25 3d  78 77 6f 72 64 73 25 2a  |sp%:sz%=xwords%*|
0001e6f0  79 73 70 25 3a 59 25 3d  79 73 70 25 0d c3 3c 2b  |ysp%:Y%=ysp%..<+|
0001e700  f2 67 65 74 6f 75 74 70  75 74 28 73 7a 25 2c 30  |.getoutput(sz%,0|
0001e710  2c 78 77 6f 72 64 73 25  2c 59 25 29 3a 62 61 73  |,xwords%,Y%):bas|
0001e720  65 25 3d 72 61 6d 25 0d  c3 46 33 c9 20 2d 33 2c  |e%=ram%..F3. -3,|
0001e730  2d 35 3a 78 77 6f 72 64  73 25 3d 78 73 70 25 2a  |-5:xwords%=xsp%*|
0001e740  32 3a 73 7a 25 3d 78 77  6f 72 64 73 25 2a 79 73  |2:sz%=xwords%*ys|
0001e750  70 25 3a 59 25 3d 79 73  70 25 0d c3 50 2b f2 67  |p%:Y%=ysp%..P+.g|
0001e760  65 74 6f 75 74 70 75 74  28 73 7a 25 2c 30 2c 78  |etoutput(sz%,0,x|
0001e770  77 6f 72 64 73 25 2c 59  25 29 3a 62 61 73 65 25  |words%,Y%):base%|
0001e780  3d 72 61 6d 25 0d c3 5a  30 c9 20 2d 34 3a 78 77  |=ram%..Z0. -4:xw|
0001e790  6f 72 64 73 25 3d 78 73  70 25 2a 33 3a 73 7a 25  |ords%=xsp%*3:sz%|
0001e7a0  3d 78 77 6f 72 64 73 25  2a 79 73 70 25 3a 59 25  |=xwords%*ysp%:Y%|
0001e7b0  3d 79 73 70 25 0d c3 64  2b f2 67 65 74 6f 75 74  |=ysp%..d+.getout|
0001e7c0  70 75 74 28 73 7a 25 2c  30 2c 78 77 6f 72 64 73  |put(sz%,0,xwords|
0001e7d0  25 2c 59 25 29 3a 62 61  73 65 25 3d 72 61 6d 25  |%,Y%):base%=ram%|
0001e7e0  0d c3 6e 35 c9 20 2d 36  3a 78 77 6f 72 64 73 25  |..n5. -6:xwords%|
0001e7f0  3d 78 73 70 25 2a 32 2b  33 80 ac 33 3a 73 7a 25  |=xsp%*2+3..3:sz%|
0001e800  3d 78 77 6f 72 64 73 25  2a 79 73 70 25 3a 59 25  |=xwords%*ysp%:Y%|
0001e810  3d 79 73 70 25 0d c3 78  27 41 25 3d 59 25 3a f2  |=ysp%..x'A%=Y%:.|
0001e820  67 65 74 6f 75 74 70 75  74 28 73 7a 25 2c 36 34  |getoutput(sz%,64|
0001e830  2c 78 77 6f 72 64 73 25  2c 59 25 29 0d c3 82 31  |,xwords%,Y%)...1|
0001e840  72 61 6d 25 21 34 3d 30  3a 72 61 6d 25 21 38 3d  |ram%!4=0:ram%!8=|
0001e850  31 36 3a 72 61 6d 25 21  31 32 3d 31 36 3a c8 99  |16:ram%!12=16:..|
0001e860  26 32 65 2c 26 31 30 39  2c 72 61 6d 25 0d c3 8c  |&2e,&109,ram%...|
0001e870  29 c8 99 26 32 65 2c 26  31 30 66 2c 72 61 6d 25  |)..&2e,&10f,ram%|
0001e880  2c 6f 6e 61 6d 65 24 2c  30 2c 78 73 70 25 2a 32  |,oname$,0,xsp%*2|
0001e890  2c 59 25 2c 32 38 0d c3  96 4a 62 61 73 65 25 3d  |,Y%,28...Jbase%=|
0001e8a0  72 61 6d 25 2b 72 61 6d  25 21 38 3a 62 61 73 65  |ram%+ram%!8:base|
0001e8b0  25 21 28 35 2a 34 29 3d  41 25 2d 31 3a 21 62 61  |%!(5*4)=A%-1:!ba|
0001e8c0  73 65 25 3d 21 62 61 73  65 25 2d 59 25 2a 78 77  |se%=!base%-Y%*xw|
0001e8d0  6f 72 64 73 25 2b 41 25  2a 78 77 6f 72 64 73 25  |ords%+A%*xwords%|
0001e8e0  0d c3 a0 29 72 61 6d 25  21 31 32 3d 72 61 6d 25  |...)ram%!12=ram%|
0001e8f0  21 31 32 2d 59 25 2a 78  77 6f 72 64 73 25 2b 41  |!12-Y%*xwords%+A|
0001e900  25 2a 78 77 6f 72 64 73  25 0d c3 aa 3e 62 61 73  |%*xwords%...>bas|
0001e910  65 25 21 28 31 30 2a 34  29 3d 35 3c 3c 32 37 20  |e%!(10*4)=5<<27 |
0001e920  84 20 6e 78 3c 3c 31 20  84 20 6e 79 3c 3c 31 34  |. nx<<1 . ny<<14|
0001e930  20 84 20 31 3a 62 61 73  65 25 2b 3d 62 61 73 65  | . 1:base%+=base|
0001e940  25 21 28 38 2a 34 29 0d  c3 b4 35 c9 20 2d 37 3a  |%!(8*4)...5. -7:|
0001e950  78 77 6f 72 64 73 25 3d  78 73 70 25 2a 33 2b 33  |xwords%=xsp%*3+3|
0001e960  80 ac 33 3a 73 7a 25 3d  78 77 6f 72 64 73 25 2a  |..3:sz%=xwords%*|
0001e970  79 73 70 25 3a 59 25 3d  79 73 70 25 0d c3 be 27  |ysp%:Y%=ysp%...'|
0001e980  41 25 3d 59 25 3a f2 67  65 74 6f 75 74 70 75 74  |A%=Y%:.getoutput|
0001e990  28 73 7a 25 2c 36 34 2c  78 77 6f 72 64 73 25 2c  |(sz%,64,xwords%,|
0001e9a0  59 25 29 0d c3 c8 31 72  61 6d 25 21 34 3d 30 3a  |Y%)...1ram%!4=0:|
0001e9b0  72 61 6d 25 21 38 3d 31  36 3a 72 61 6d 25 21 31  |ram%!8=16:ram%!1|
0001e9c0  32 3d 31 36 3a c8 99 26  32 65 2c 26 31 30 39 2c  |2=16:..&2e,&109,|
0001e9d0  72 61 6d 25 0d c3 d2 29  c8 99 26 32 65 2c 26 31  |ram%...)..&2e,&1|
0001e9e0  30 66 2c 72 61 6d 25 2c  6f 6e 61 6d 65 24 2c 30  |0f,ram%,oname$,0|
0001e9f0  2c 78 73 70 25 2a 33 2c  59 25 2c 32 38 0d c3 dc  |,xsp%*3,Y%,28...|
0001ea00  4a 62 61 73 65 25 3d 72  61 6d 25 2b 72 61 6d 25  |Jbase%=ram%+ram%|
0001ea10  21 38 3a 62 61 73 65 25  21 28 35 2a 34 29 3d 41  |!8:base%!(5*4)=A|
0001ea20  25 2d 31 3a 21 62 61 73  65 25 3d 21 62 61 73 65  |%-1:!base%=!base|
0001ea30  25 2d 59 25 2a 78 77 6f  72 64 73 25 2b 41 25 2a  |%-Y%*xwords%+A%*|
0001ea40  78 77 6f 72 64 73 25 0d  c3 e6 29 72 61 6d 25 21  |xwords%...)ram%!|
0001ea50  31 32 3d 72 61 6d 25 21  31 32 2d 59 25 2a 78 77  |12=ram%!12-Y%*xw|
0001ea60  6f 72 64 73 25 2b 41 25  2a 78 77 6f 72 64 73 25  |ords%+A%*xwords%|
0001ea70  0d c3 f0 42 62 61 73 65  25 21 28 31 30 2a 34 29  |...Bbase%!(10*4)|
0001ea80  3d 70 61 6e 69 63 3c 3c  32 37 20 84 20 6e 78 3c  |=panic<<27 . nx<|
0001ea90  3c 31 20 84 20 6e 79 3c  3c 31 34 20 84 20 31 3a  |<1 . ny<<14 . 1:|
0001eaa0  62 61 73 65 25 2b 3d 62  61 73 65 25 21 28 38 2a  |base%+=base%!(8*|
0001eab0  34 29 0d c3 fa 34 6e 6f  20 6d 61 67 69 63 20 6e  |4)...4no magic n|
0001eac0  75 6d 62 65 72 20 79 65  74 20 66 6f 72 20 6e 65  |umber yet for ne|
0001ead0  77 20 66 6f 72 6d 61 74  20 32 34 62 70 70 20 73  |w format 24bpp s|
0001eae0  70 72 69 74 65 73 0d c4  04 30 c9 20 2d 38 3a 78  |prites...0. -8:x|
0001eaf0  77 6f 72 64 73 25 3d 78  73 70 25 2a 34 3a 73 7a  |words%=xsp%*4:sz|
0001eb00  25 3d 78 77 6f 72 64 73  25 2a 79 73 70 25 3a 59  |%=xwords%*ysp%:Y|
0001eb10  25 3d 79 73 70 25 0d c4  0e 27 41 25 3d 59 25 3a  |%=ysp%...'A%=Y%:|
0001eb20  f2 67 65 74 6f 75 74 70  75 74 28 73 7a 25 2c 36  |.getoutput(sz%,6|
0001eb30  34 2c 78 77 6f 72 64 73  25 2c 59 25 29 0d c4 18  |4,xwords%,Y%)...|
0001eb40  31 72 61 6d 25 21 34 3d  30 3a 72 61 6d 25 21 38  |1ram%!4=0:ram%!8|
0001eb50  3d 31 36 3a 72 61 6d 25  21 31 32 3d 31 36 3a c8  |=16:ram%!12=16:.|
0001eb60  99 26 32 65 2c 26 31 30  39 2c 72 61 6d 25 0d c4  |.&2e,&109,ram%..|
0001eb70  22 29 c8 99 26 32 65 2c  26 31 30 66 2c 72 61 6d  |")..&2e,&10f,ram|
0001eb80  25 2c 6f 6e 61 6d 65 24  2c 30 2c 78 73 70 25 2a  |%,oname$,0,xsp%*|
0001eb90  34 2c 59 25 2c 32 38 0d  c4 2c 4a 62 61 73 65 25  |4,Y%,28..,Jbase%|
0001eba0  3d 72 61 6d 25 2b 72 61  6d 25 21 38 3a 62 61 73  |=ram%+ram%!8:bas|
0001ebb0  65 25 21 28 35 2a 34 29  3d 41 25 2d 31 3a 21 62  |e%!(5*4)=A%-1:!b|
0001ebc0  61 73 65 25 3d 21 62 61  73 65 25 2d 59 25 2a 78  |ase%=!base%-Y%*x|
0001ebd0  77 6f 72 64 73 25 2b 41  25 2a 78 77 6f 72 64 73  |words%+A%*xwords|
0001ebe0  25 0d c4 36 29 72 61 6d  25 21 31 32 3d 72 61 6d  |%..6)ram%!12=ram|
0001ebf0  25 21 31 32 2d 59 25 2a  78 77 6f 72 64 73 25 2b  |%!12-Y%*xwords%+|
0001ec00  41 25 2a 78 77 6f 72 64  73 25 0d c4 40 3e 62 61  |A%*xwords%..@>ba|
0001ec10  73 65 25 21 28 31 30 2a  34 29 3d 36 3c 3c 32 37  |se%!(10*4)=6<<27|
0001ec20  20 84 20 6e 78 3c 3c 31  20 84 20 6e 79 3c 3c 31  | . nx<<1 . ny<<1|
0001ec30  34 20 84 20 31 3a 62 61  73 65 25 2b 3d 62 61 73  |4 . 1:base%+=bas|
0001ec40  65 25 21 28 38 2a 34 29  0d c4 4a 43 7f 3a 78 77  |e%!(8*4)..JC.:xw|
0001ec50  6f 72 64 73 25 3d 78 73  70 25 2f 73 69 7a 65 25  |ords%=xsp%/size%|
0001ec60  2b 33 2e 39 39 39 39 80  ac 33 3a 73 7a 25 3d 78  |+3.9999..3:sz%=x|
0001ec70  77 6f 72 64 73 25 2a 79  73 70 25 3a 58 25 3d 78  |words%*ysp%:X%=x|
0001ec80  73 70 25 3a 59 25 3d 79  73 70 25 0d c4 54 0d e7  |sp%:Y%=ysp%..T..|
0001ec90  6e 63 6f 6c 3d 31 20 8c  0d c4 5e 0b c8 8e 20 6d  |ncol=1 ...^... m|
0001eca0  24 20 ca 0d c4 68 4f c9  22 43 22 3a 21 72 6f 77  |$ ...hO."C":!row|
0001ecb0  69 6e 63 3d 78 77 6f 72  64 73 25 3a 78 77 6f 72  |inc=xwords%:xwor|
0001ecc0  64 73 25 3d 78 77 6f 72  64 73 25 2a 34 3a 73 7a  |ds%=xwords%*4:sz|
0001ecd0  25 3d 78 77 6f 72 64 73  25 2a 79 73 70 25 3a 58  |%=xwords%*ysp%:X|
0001ece0  25 3d 78 73 70 25 2a 34  3a 59 25 3d 79 73 70 25  |%=xsp%*4:Y%=ysp%|
0001ecf0  2a 34 0d c4 72 4f c9 22  54 22 3a 21 72 6f 77 69  |*4..rO."T":!rowi|
0001ed00  6e 63 3d 78 77 6f 72 64  73 25 3a 78 77 6f 72 64  |nc=xwords%:xword|
0001ed10  73 25 3d 78 77 6f 72 64  73 25 2a 33 3a 73 7a 25  |s%=xwords%*3:sz%|
0001ed20  3d 78 77 6f 72 64 73 25  2a 79 73 70 25 3a 58 25  |=xwords%*ysp%:X%|
0001ed30  3d 78 73 70 25 2a 34 3a  59 25 3d 79 73 70 25 2a  |=xsp%*4:Y%=ysp%*|
0001ed40  33 0d c4 7c 4f c9 22 44  22 3a 21 72 6f 77 69 6e  |3..|O."D":!rowin|
0001ed50  63 3d 78 77 6f 72 64 73  25 3a 78 77 6f 72 64 73  |c=xwords%:xwords|
0001ed60  25 3d 78 77 6f 72 64 73  25 2a 32 3a 73 7a 25 3d  |%=xwords%*2:sz%=|
0001ed70  78 77 6f 72 64 73 25 2a  79 73 70 25 3a 58 25 3d  |xwords%*ysp%:X%=|
0001ed80  78 73 70 25 2a 32 3a 59  25 3d 79 73 70 25 2a 32  |xsp%*2:Y%=ysp%*2|
0001ed90  0d c4 86 05 cb 0d c4 90  05 cd 0d c4 9a 2c 41 25  |.............,A%|
0001eda0  3d 59 25 3a f2 67 65 74  6f 75 74 70 75 74 28 73  |=Y%:.getoutput(s|
0001edb0  7a 25 2c 32 30 34 38 2b  36 34 2c 78 77 6f 72 64  |z%,2048+64,xword|
0001edc0  73 25 2c 59 25 29 0d c4  a4 31 72 61 6d 25 21 34  |s%,Y%)...1ram%!4|
0001edd0  3d 30 3a 72 61 6d 25 21  38 3d 31 36 3a 72 61 6d  |=0:ram%!8=16:ram|
0001ede0  25 21 31 32 3d 31 36 3a  c8 99 26 32 65 2c 26 31  |%!12=16:..&2e,&1|
0001edf0  30 39 2c 72 61 6d 25 0d  c4 ae 30 c8 99 26 32 65  |09,ram%...0..&2e|
0001ee00  2c 26 31 30 66 2c 72 61  6d 25 2c 6f 6e 61 6d 65  |,&10f,ram%,oname|
0001ee10  24 2c 28 6e 63 6f 6c 3c  36 33 29 80 31 2c 58 25  |$,(ncol<63).1,X%|
0001ee20  2c 59 25 2c 73 70 6d 0d  c4 b8 4a 62 61 73 65 25  |,Y%,spm...Jbase%|
0001ee30  3d 72 61 6d 25 2b 72 61  6d 25 21 38 3a 62 61 73  |=ram%+ram%!8:bas|
0001ee40  65 25 21 28 35 2a 34 29  3d 41 25 2d 31 3a 21 62  |e%!(5*4)=A%-1:!b|
0001ee50  61 73 65 25 3d 21 62 61  73 65 25 2d 59 25 2a 78  |ase%=!base%-Y%*x|
0001ee60  77 6f 72 64 73 25 2b 41  25 2a 78 77 6f 72 64 73  |words%+A%*xwords|
0001ee70  25 0d c4 c2 29 72 61 6d  25 21 31 32 3d 72 61 6d  |%...)ram%!12=ram|
0001ee80  25 21 31 32 2d 59 25 2a  78 77 6f 72 64 73 25 2b  |%!12-Y%*xwords%+|
0001ee90  41 25 2a 78 77 6f 72 64  73 25 0d c4 cc 26 70 61  |A%*xwords%...&pa|
0001eea0  6c 25 3d 62 61 73 65 25  2b 31 31 2a 34 3a 62 61  |l%=base%+11*4:ba|
0001eeb0  73 65 25 2b 3d 62 61 73  65 25 21 28 38 2a 34 29  |se%+=base%!(8*4)|
0001eec0  0d c4 d6 0d c8 8e 20 6e  63 6f 6c 20 ca 0d c4 e0  |...... ncol ....|
0001eed0  09 c9 20 32 35 36 0d c4  ea 52 21 28 70 61 6c 25  |.. 256...R!(pal%|
0001eee0  2d 38 29 2b 3d 32 30 34  38 3a 21 28 70 61 6c 25  |-8)+=2048:!(pal%|
0001eef0  2d 31 32 29 2b 3d 32 30  34 38 3a 62 61 73 65 25  |-12)+=2048:base%|
0001ef00  2b 3d 32 30 34 38 3a 21  28 72 61 6d 25 2b 31 32  |+=2048:!(ram%+12|
0001ef10  29 2b 3d 32 30 34 38 3a  21 28 70 61 6c 25 2d 34  |)+=2048:!(pal%-4|
0001ef20  34 29 2b 3d 32 30 34 38  0d c4 f4 29 e3 5a 25 3d  |4)+=2048...).Z%=|
0001ef30  30 b8 32 35 35 3a 42 25  3d 5a 25 84 5a 25 3c 3c  |0.255:B%=Z%.Z%<<|
0001ef40  38 84 5a 25 3c 3c 31 36  3a 42 25 3d 42 25 3c 3c  |8.Z%<<16:B%=B%<<|
0001ef50  38 0d c4 fe 25 70 61 6c  25 21 28 5a 25 2a 38 29  |8...%pal%!(Z%*8)|
0001ef60  3d 42 25 3a 70 61 6c 25  21 28 5a 25 2a 38 2b 34  |=B%:pal%!(Z%*8+4|
0001ef70  29 3d 42 25 3a ed 0d c5  08 09 c9 20 32 35 35 0d  |)=B%:...... 255.|
0001ef80  c5 12 52 21 28 70 61 6c  25 2d 38 29 2b 3d 32 30  |..R!(pal%-8)+=20|
0001ef90  34 38 3a 21 28 70 61 6c  25 2d 31 32 29 2b 3d 32  |48:!(pal%-12)+=2|
0001efa0  30 34 38 3a 62 61 73 65  25 2b 3d 32 30 34 38 3a  |048:base%+=2048:|
0001efb0  21 28 72 61 6d 25 2b 31  32 29 2b 3d 32 30 34 38  |!(ram%+12)+=2048|
0001efc0  3a 21 28 70 61 6c 25 2d  34 34 29 2b 3d 32 30 34  |:!(pal%-44)+=204|
0001efd0  38 0d c5 1c 24 e3 5a 25  3d 30 b8 32 35 35 3a 42  |8...$.Z%=0.255:B|
0001efe0  25 3d 70 61 6c 65 74 74  65 25 21 28 5a 25 3c 3c  |%=palette%!(Z%<<|
0001eff0  32 29 3c 3c 38 0d c5 26  25 70 61 6c 25 21 28 5a  |2)<<8..&%pal%!(Z|
0001f000  25 2a 38 29 3d 42 25 3a  70 61 6c 25 21 28 5a 25  |%*8)=B%:pal%!(Z%|
0001f010  2a 38 2b 34 29 3d 42 25  3a ed 0d c5 30 08 c9 20  |*8+4)=B%:...0.. |
0001f020  31 35 0d c5 3a 0b c8 8e  20 6d 24 20 ca 0d c5 44  |15..:... m$ ...D|
0001f030  09 c9 20 22 52 22 0d c5  4e 30 e3 5a 25 3d 30 b8  |.. "R"..N0.Z%=0.|
0001f040  31 35 3a f2 63 6f 6c 28  5a 25 2c 70 61 6c 65 74  |15:.col(Z%,palet|
0001f050  74 65 25 21 28 5a 25 3c  3c 32 29 80 26 46 30 46  |te%!(Z%<<2).&F0F|
0001f060  30 46 30 29 3a ed 0d c5  58 09 c9 20 22 44 22 0d  |0F0):...X.. "D".|
0001f070  c5 62 1e e3 5a 25 3d 30  b8 37 3a 41 25 3d 30 3a  |.b..Z%=0.7:A%=0:|
0001f080  e7 5a 25 80 31 20 41 25  2b 3d 26 46 30 0d c5 6c  |.Z%.1 A%+=&F0..l|
0001f090  13 e7 5a 25 80 32 20 41  25 2b 3d 26 46 30 30 30  |..Z%.2 A%+=&F000|
0001f0a0  0d c5 76 15 e7 5a 25 80  34 20 41 25 2b 3d 26 46  |..v..Z%.4 A%+=&F|
0001f0b0  30 30 30 30 30 0d c5 80  11 f2 63 6f 6c 28 5a 25  |00000.....col(Z%|
0001f0c0  2c 41 25 29 3a ed 0d c5  8a 09 c9 20 22 54 22 0d  |,A%):...... "T".|
0001f0d0  c5 94 30 e3 5a 25 3d 30  b8 31 35 3a 41 25 3d 5a  |..0.Z%=0.15:A%=Z|
0001f0e0  25 3c 3c 34 3a f2 63 6f  6c 28 5a 25 2c 41 25 84  |%<<4:.col(Z%,A%.|
0001f0f0  41 25 3c 3c 38 84 41 25  3c 3c 31 36 29 3a ed 0d  |A%<<8.A%<<16):..|
0001f100  c5 9e 05 7f 0d c5 a8 3c  e3 5a 25 3d 30 b8 31 35  |.......<.Z%=0.15|
0001f110  3a 41 25 3d 28 5a 25 80  37 29 2f 37 2a 31 35 2b  |:A%=(Z%.7)/7*15+|
0001f120  2e 32 3c 3c 34 3a f2 63  6f 6c 28 5a 25 2c 41 25  |.2<<4:.col(Z%,A%|
0001f130  84 41 25 3c 3c 38 84 41  25 3c 3c 31 36 29 3a ed  |.A%<<8.A%<<16):.|
0001f140  0d c5 b2 05 cb 0d c5 bc  07 c9 20 33 0d c5 c6 0a  |.......... 3....|
0001f150  c8 8e 6d 24 20 ca 0d c5  d0 09 c9 20 22 43 22 0d  |..m$ ...... "C".|
0001f160  c5 da 3b f2 63 6f 6c 28  30 2c 30 29 3a f2 63 6f  |..;.col(0,0):.co|
0001f170  6c 28 31 2c 26 46 30 46  30 30 30 29 3a f2 63 6f  |l(1,&F0F000):.co|
0001f180  6c 28 32 2c 26 46 30 30  30 46 30 29 3a f2 63 6f  |l(2,&F000F0):.co|
0001f190  6c 28 33 2c 26 46 30 46  30 29 0d c5 e4 09 c9 20  |l(3,&F0F0)..... |
0001f1a0  22 52 22 0d c5 ee 2f e3  5a 25 3d 30 b8 33 3a f2  |"R".../.Z%=0.3:.|
0001f1b0  63 6f 6c 28 5a 25 2c 70  61 6c 65 74 74 65 25 21  |col(Z%,palette%!|
0001f1c0  28 5a 25 3c 3c 32 29 80  26 46 30 46 30 46 30 29  |(Z%<<2).&F0F0F0)|
0001f1d0  3a ed 0d c5 f8 05 7f 0d  c6 02 31 e3 5a 25 3d 30  |:.........1.Z%=0|
0001f1e0  b8 33 3a 41 25 3d 5a 25  2a 35 3c 3c 34 3a f2 63  |.3:A%=Z%*5<<4:.c|
0001f1f0  6f 6c 28 5a 25 2c 41 25  84 41 25 3c 3c 38 84 41  |ol(Z%,A%.A%<<8.A|
0001f200  25 3c 3c 31 36 29 3a ed  0d c6 0c 05 cb 0d c6 16  |%<<16):.........|
0001f210  21 c9 20 31 3a f2 63 6f  6c 28 30 2c 30 29 3a f2  |!. 1:.col(0,0):.|
0001f220  63 6f 6c 28 31 2c 26 46  30 46 30 46 30 29 0d c6  |col(1,&F0F0F0)..|
0001f230  20 05 cb 0d c6 2a 05 cb  0d c6 3e 0c e7 66 6c 65  | ....*....>..fle|
0001f240  78 25 20 8c 0d c6 52 05  cc 0d c6 5c 13 e7 77 6f  |x% ...R....\..wo|
0001f250  72 6b 73 70 61 63 65 25  3c 30 20 8c 0d c6 66 2e  |rkspace%<0 ...f.|
0001f260  50 25 3d e0 3a 5b 4f 50  54 20 30 3a 53 54 52 20  |P%=.:[OPT 0:STR |
0001f270  72 31 33 2c 50 25 2b 31  36 3a 4d 4f 56 53 20 50  |r13,P%+16:MOVS P|
0001f280  63 2c 72 31 34 3a 5d 3a  d6 e0 0d c6 70 17 e0 3d  |c,r14:]:....p..=|
0001f290  e0 2b 33 32 2a 31 30 32  34 2b 93 2d 50 25 21 31  |.+32*1024+.-P%!1|
0001f2a0  36 0d c6 7a 05 cc 0d c6  8e 05 cd 0d c6 98 05 cd  |6..z............|
0001f2b0  0d c6 a2 07 ea 20 85 0d  c6 ac 2f ee 20 85 20 ea  |..... ..../. . .|
0001f2c0  3a f7 20 85 3a f2 53 61  76 65 3a 85 20 9f 2c f6  |:. .:.Save:. .,.|
0001f2d0  24 2b 22 20 69 6e 74 65  72 6e 61 6c 20 28 22 2b  |$+" internal ("+|
0001f2e0  c3 9e 2b 22 29 22 0d c6  b6 18 c8 99 22 48 6f 75  |..+")"......"Hou|
0001f2f0  72 67 6c 61 73 73 5f 4c  45 44 73 22 2c 33 0d c6  |rglass_LEDs",3..|
0001f300  c0 24 79 73 61 6d 70 25  3d 31 3a 6e 6c 25 28 29  |.$ysamp%=1:nl%()|
0001f310  3d 30 3a 73 74 65 70 25  3d 34 2a 28 63 6f 6c 2b  |=0:step%=4*(col+|
0001f320  31 29 0d c6 ca 44 61 64  64 72 25 3d 62 61 73 65  |1)...Daddr%=base|
0001f330  25 2a 73 69 7a 65 25 3a  72 6f 77 73 74 65 70 25  |%*size%:rowstep%|
0001f340  3d 78 77 6f 72 64 73 25  2a 73 69 7a 65 25 3a 63  |=xwords%*size%:c|
0001f350  6f 6c 73 74 65 70 25 3d  31 3a 64 69 73 74 25 3d  |olstep%=1:dist%=|
0001f360  78 73 70 25 2d 31 0d c6  d4 21 e7 6d 3d 2d 33 84  |xsp%-1...!.m=-3.|
0001f370  6d 3d 2d 35 84 6d 3d 2d  36 20 64 69 73 74 25 3d  |m=-5.m=-6 dist%=|
0001f380  64 69 73 74 25 2a 32 0d  c6 de 1c e7 6d 3d 2d 34  |dist%*2.....m=-4|
0001f390  84 6d 3d 2d 37 20 64 69  73 74 25 3d 64 69 73 74  |.m=-7 dist%=dist|
0001f3a0  25 2a 33 0d c6 e8 17 e7  6d 3d 2d 38 20 64 69 73  |%*3.....m=-8 dis|
0001f3b0  74 25 3d 64 69 73 74 25  2a 34 0d c6 f2 0e e7 72  |t%=dist%*4.....r|
0001f3c0  6f 74 61 74 65 25 20 8c  0d c6 fc 36 6f 64 69 73  |otate% ....6odis|
0001f3d0  74 25 3d 64 69 73 74 25  3a c8 94 20 63 6f 6c 73  |t%=dist%:.. cols|
0001f3e0  74 65 70 25 2c 72 6f 77  73 74 65 70 25 3a c8 94  |tep%,rowstep%:..|
0001f3f0  20 68 66 6c 69 70 25 2c  76 66 6c 69 70 25 0d c7  | hflip%,vflip%..|
0001f400  06 10 e7 72 6f 74 61 74  65 25 3d 31 20 8c 0d c7  |...rotate%=1 ...|
0001f410  10 47 61 64 64 72 25 2b  3d 28 79 73 70 25 2d 31  |.Gaddr%+=(ysp%-1|
0001f420  29 2a 63 6f 6c 73 74 65  70 25 3a 63 6f 6c 73 74  |)*colstep%:colst|
0001f430  65 70 25 3d 2d 63 6f 6c  73 74 65 70 25 3a 64 69  |ep%=-colstep%:di|
0001f440  73 74 25 3d 28 79 73 70  25 2d 31 29 2a 63 6f 6c  |st%=(ysp%-1)*col|
0001f450  73 74 65 70 25 0d c7 1a  05 cc 0d c7 24 3b 61 64  |step%.......$;ad|
0001f460  64 72 25 2b 3d 64 69 73  74 25 3a 72 6f 77 73 74  |dr%+=dist%:rowst|
0001f470  65 70 25 3d 2d 72 6f 77  73 74 65 70 25 3a 64 69  |ep%=-rowstep%:di|
0001f480  73 74 25 3d 28 79 73 70  25 2d 31 29 2a 63 6f 6c  |st%=(ysp%-1)*col|
0001f490  73 74 65 70 25 0d c7 2e  05 cd 0d c7 38 3b e7 6d  |step%.......8;.m|
0001f4a0  3d 2d 33 84 6d 3d 2d 35  84 6d 3d 2d 36 20 63 6f  |=-3.m=-5.m=-6 co|
0001f4b0  6c 73 74 65 70 25 3d 63  6f 6c 73 74 65 70 25 2f  |lstep%=colstep%/|
0001f4c0  32 3a 72 6f 77 73 74 65  70 25 3d 72 6f 77 73 74  |2:rowstep%=rowst|
0001f4d0  65 70 25 2a 32 0d c7 42  36 e7 6d 3d 2d 34 84 6d  |ep%*2..B6.m=-4.m|
0001f4e0  3d 2d 37 20 63 6f 6c 73  74 65 70 25 3d 63 6f 6c  |=-7 colstep%=col|
0001f4f0  73 74 65 70 25 2f 33 3a  72 6f 77 73 74 65 70 25  |step%/3:rowstep%|
0001f500  3d 72 6f 77 73 74 65 70  25 2a 33 0d c7 4c 31 e7  |=rowstep%*3..L1.|
0001f510  6d 3d 2d 38 20 63 6f 6c  73 74 65 70 25 3d 63 6f  |m=-8 colstep%=co|
0001f520  6c 73 74 65 70 25 2f 34  3a 72 6f 77 73 74 65 70  |lstep%/4:rowstep|
0001f530  25 3d 72 6f 77 73 74 65  70 25 2a 34 0d c7 56 05  |%=rowstep%*4..V.|
0001f540  cd 0d c7 60 0d e7 68 66  6c 69 70 25 20 8c 0d c7  |...`..hflip% ...|
0001f550  6a 30 61 64 64 72 25 2b  3d 64 69 73 74 25 3a 64  |j0addr%+=dist%:d|
0001f560  69 73 74 25 3d 2d 64 69  73 74 25 3a 63 6f 6c 73  |ist%=-dist%:cols|
0001f570  74 65 70 25 3d 2d 63 6f  6c 73 74 65 70 25 0d c7  |tep%=-colstep%..|
0001f580  74 05 cd 0d c7 7e 0d e7  76 66 6c 69 70 25 20 8c  |t....~..vflip% .|
0001f590  0d c7 88 0e e7 72 6f 74  61 74 65 25 20 8c 0d c7  |.....rotate% ...|
0001f5a0  92 2c 61 64 64 72 25 2b  3d 6f 64 69 73 74 25 2a  |.,addr%+=odist%*|
0001f5b0  72 6f 74 61 74 65 25 3a  72 6f 77 73 74 65 70 25  |rotate%:rowstep%|
0001f5c0  3d 2d 72 6f 77 73 74 65  70 25 0d c7 9c 05 cc 0d  |=-rowstep%......|
0001f5d0  c7 a6 2f 61 64 64 72 25  2b 3d 28 79 73 70 25 2d  |../addr%+=(ysp%-|
0001f5e0  31 29 2a 72 6f 77 73 74  65 70 25 3a 72 6f 77 73  |1)*rowstep%:rows|
0001f5f0  74 65 70 25 3d 2d 72 6f  77 73 74 65 70 25 0d c7  |tep%=-rowstep%..|
0001f600  b0 05 cd 0d c7 ba 05 cd  0d c7 c4 4c 6f 75 74 6c  |...........Loutl|
0001f610  69 6d 25 3d 28 62 61 73  65 25 2b 78 77 6f 72 64  |im%=(base%+xword|
0001f620  73 25 2a 59 25 29 2a 73  69 7a 65 25 2d 31 3a 6f  |s%*Y%)*size%-1:o|
0001f630  64 64 63 6f 6c 73 74 65  70 25 3d 2d 63 6f 6c 73  |ddcolstep%=-cols|
0001f640  74 65 70 25 3a 6f 64 64  73 74 65 70 25 3d 2d 73  |tep%:oddstep%=-s|
0001f650  74 65 70 25 0d c7 ce 2b  e7 6f 72 64 65 72 25 20  |tep%...+.order% |
0001f660  f2 61 64 6a 75 73 74 70  61 6c 65 74 74 65 28 31  |.adjustpalette(1|
0001f670  2f 79 64 69 76 25 2f 78  64 69 76 25 2c 30 29 0d  |/ydiv%/xdiv%,0).|
0001f680  c7 d8 39 e7 73 79 25 3d  79 25 20 80 20 73 78 25  |..9.sy%=y% . sx%|
0001f690  3d 78 25 20 80 20 72 61  6e 67 65 25 3d a3 20 80  |=x% . range%=. .|
0001f6a0  20 73 68 61 72 70 65 6e  25 3d a3 20 80 20 65 71  | sharpen%=. . eq|
0001f6b0  75 61 6c 25 3d a3 20 8c  0d c7 e2 0e e7 64 69 74  |ual%=. ......dit|
0001f6c0  68 65 72 25 20 8c 0d c7  ec 40 e3 79 72 25 3d 30  |her% ....@.yr%=0|
0001f6d0  20 b8 20 79 25 2d 31 3a  c8 99 68 6f 75 72 25 2c  | . y%-1:..hour%,|
0001f6e0  79 72 25 2a 31 30 30 81  79 25 3a e7 61 64 64 72  |yr%*100.y%:.addr|
0001f6f0  25 3e 6f 75 74 6c 69 6d  25 20 f2 66 6c 75 73 68  |%>outlim% .flush|
0001f700  6f 75 74 70 75 74 0d c7  f6 4f 57 25 3d a0 28 72  |output...OW%=.(r|
0001f710  24 2b 22 28 63 6c 25 28  29 29 22 29 3a 63 6c 25  |$+"(cl%())"):cl%|
0001f720  28 29 3d 63 6c 25 28 29  2b 6e 6c 25 28 29 3a 6e  |()=cl%()+nl%():n|
0001f730  6c 25 28 29 3d 30 3a 42  25 3d 78 25 3a 41 25 3d  |l%()=0:B%=x%:A%=|
0001f740  61 64 64 72 25 3a 61 64  64 72 25 2b 3d 72 6f 77  |addr%:addr%+=row|
0001f750  73 74 65 70 25 0d c8 00  0c e7 79 72 25 80 31 20  |step%.....yr%.1 |
0001f760  8c 0d c8 0a 2f d6 66 73  25 2c 63 6f 6c 73 74 65  |..../.fs%,colste|
0001f770  70 25 2c 63 6c 25 28 31  2c 30 29 2c 6e 6c 25 28  |p%,cl%(1,0),nl%(|
0001f780  31 2c 30 29 2c 41 25 2c  73 74 65 70 25 2c 42 25  |1,0),A%,step%,B%|
0001f790  0d c8 14 05 cc 0d c8 1e  41 41 25 2b 3d 64 69 73  |........AA%+=dis|
0001f7a0  74 25 3a d6 66 73 25 2c  6f 64 64 63 6f 6c 73 74  |t%:.fs%,oddcolst|
0001f7b0  65 70 25 2c 63 6c 25 28  78 25 2c 30 29 2c 6e 6c  |ep%,cl%(x%,0),nl|
0001f7c0  25 28 78 25 2c 30 29 2c  41 25 2c 6f 64 64 73 74  |%(x%,0),A%,oddst|
0001f7d0  65 70 25 2c 42 25 0d c8  28 05 cd 0d c8 32 05 ed  |ep%,B%..(....2..|
0001f7e0  0d c8 3c 05 cc 0d c8 46  47 49 25 3d 73 74 65 70  |..<....FGI%=step|
0001f7f0  25 3a e3 79 72 25 3d 30  b8 79 25 2d 31 3a c8 99  |%:.yr%=0.y%-1:..|
0001f800  68 6f 75 72 25 2c 79 72  25 2a 31 30 30 81 79 25  |hour%,yr%*100.y%|
0001f810  3a e7 61 64 64 72 25 3e  6f 75 74 6c 69 6d 25 20  |:.addr%>outlim% |
0001f820  f2 66 6c 75 73 68 6f 75  74 70 75 74 0d c8 50 58  |.flushoutput..PX|
0001f830  57 25 3d a0 28 72 24 2b  22 28 63 6c 25 28 29 29  |W%=.(r$+"(cl%())|
0001f840  22 29 3a 42 25 3d 78 25  3a 41 25 3d 61 64 64 72  |"):B%=x%:A%=addr|
0001f850  25 3a 61 64 64 72 25 2b  3d 72 6f 77 73 74 65 70  |%:addr%+=rowstep|
0001f860  25 3a d6 66 73 25 2c 63  6f 6c 73 74 65 70 25 2c  |%:.fs%,colstep%,|
0001f870  63 6c 25 28 31 2c 30 29  2c 49 25 2c 41 25 2c 49  |cl%(1,0),I%,A%,I|
0001f880  25 2c 42 25 0d c8 5a 05  ed 0d c8 64 05 cd 0d c8  |%,B%..Z....d....|
0001f890  6e 05 cc 0d c8 78 0d e7  65 71 75 61 6c 25 20 8c  |n....x..equal% .|
0001f8a0  0d c8 82 39 f2 72 65 77  69 6e 64 3a 48 61 76 67  |...9.rewind:Havg|
0001f8b0  25 3d c6 8e 28 76 61 6c  73 25 28 29 29 2f 32 35  |%=..(vals%())/25|
0001f8c0  36 2f 28 63 6f 6c 2b 31  29 3a de 20 6e 65 77 25  |6/(col+1):. new%|
0001f8d0  28 32 35 36 2c 63 6f 6c  29 0d c8 8c 3e e3 42 25  |(256,col)...>.B%|
0001f8e0  3d 30 b8 63 6f 6c 3a 52  25 3d 30 3a 48 69 6e 74  |=0.col:R%=0:Hint|
0001f8f0  25 3d 30 3a e3 5a 25 3d  30 b8 32 35 36 3a 4c 25  |%=0:.Z%=0.256:L%|
0001f900  3d 52 25 3a 48 69 6e 74  25 2b 3d 76 61 6c 73 25  |=R%:Hint%+=vals%|
0001f910  28 5a 25 2c 42 25 29 0d  c8 96 26 c8 95 48 69 6e  |(Z%,B%)...&..Hin|
0001f920  74 25 3e 48 61 76 67 25  3a 48 69 6e 74 25 2d 3d  |t%>Havg%:Hint%-=|
0001f930  48 61 76 67 25 3a 52 25  2b 3d 31 3a ce 0d c8 a0  |Havg%:R%+=1:....|
0001f940  1f 6e 65 77 25 28 5a 25  2c 42 25 29 3d 28 4c 25  |.new%(Z%,B%)=(L%|
0001f950  2b 52 25 29 2f 32 2a 46  2f 32 35 36 0d c8 aa 07  |+R%)/2*F/256....|
0001f960  ed 3a ed 0d c8 b4 05 cd  0d c8 be 0f e7 73 68 61  |.:...........sha|
0001f970  72 70 65 6e 25 20 8c 0d  c8 c8 0d e7 6f 72 64 65  |rpen% ......orde|
0001f980  72 25 20 8c 0d c8 d2 3a  79 72 65 61 64 25 3d 73  |r% ....:yread%=s|
0001f990  79 25 2d 31 3a 57 25 3d  a0 28 72 24 2b 22 28 72  |y%-1:W%=.(r$+"(r|
0001f9a0  6d 31 25 28 29 29 22 29  3a e7 65 71 75 61 6c 25  |m1%())"):.equal%|
0001f9b0  20 f2 66 69 74 32 28 72  6d 31 25 28 29 29 0d c8  | .fit2(rm1%())..|
0001f9c0  dc 41 e3 42 25 3d 30 b8  63 6f 6c 3a 72 6d 31 25  |.A.B%=0.col:rm1%|
0001f9d0  28 30 2c 42 25 29 3d 72  6d 31 25 28 31 2c 42 25  |(0,B%)=rm1%(1,B%|
0001f9e0  29 3a 72 6d 31 25 28 73  78 25 2b 31 2c 42 25 29  |):rm1%(sx%+1,B%)|
0001f9f0  3d 72 6d 31 25 28 73 78  25 2c 42 25 29 3a ed 0d  |=rm1%(sx%,B%):..|
0001fa00  c8 e6 05 cc 0d c8 f0 3c  79 72 65 61 64 25 3d 79  |.......<yread%=y|
0001fa10  25 2d 31 3a f2 73 63 61  6c 65 64 70 69 78 65 6c  |%-1:.scaledpixel|
0001fa20  72 6f 77 28 72 6d 31 25  28 29 29 3a e7 65 71 75  |row(rm1%()):.equ|
0001fa30  61 6c 25 20 f2 66 69 74  28 72 6d 31 25 28 29 29  |al% .fit(rm1%())|
0001fa40  0d c8 fa 3f e3 42 25 3d  30 b8 63 6f 6c 3a 72 6d  |...?.B%=0.col:rm|
0001fa50  31 25 28 30 2c 42 25 29  3d 72 6d 31 25 28 31 2c  |1%(0,B%)=rm1%(1,|
0001fa60  42 25 29 3a 72 6d 31 25  28 78 25 2b 31 2c 42 25  |B%):rm1%(x%+1,B%|
0001fa70  29 3d 72 6d 31 25 28 78  25 2c 42 25 29 3a ed 0d  |)=rm1%(x%,B%):..|
0001fa80  c9 04 05 cd 0d c9 0e 11  72 6d 32 25 28 29 3d 72  |........rm2%()=r|
0001fa90  6d 31 25 28 29 0d c9 18  05 cd 0d c9 22 0d e7 6f  |m1%()......."..o|
0001faa0  72 64 65 72 25 20 8c 0d  c9 2c 11 e3 79 72 25 3d  |rder% ...,..yr%=|
0001fab0  30 20 b8 20 79 25 2d 31  0d c9 36 32 c8 99 68 6f  |0 . y%-1..62..ho|
0001fac0  75 72 25 2c 79 72 25 2a  31 30 30 81 79 25 3a e7  |ur%,yr%*100.y%:.|
0001fad0  61 64 64 72 25 3e 6f 75  74 6c 69 6d 25 20 f2 66  |addr%>outlim% .f|
0001fae0  6c 75 73 68 6f 75 74 70  75 74 0d c9 40 0d e7 73  |lushoutput..@..s|
0001faf0  79 25 3d 79 25 20 8c 0d  c9 4a 19 f2 73 68 61 72  |y%=y% ...J..shar|
0001fb00  70 70 69 78 65 6c 72 6f  77 28 63 6c 25 28 29 29  |ppixelrow(cl%())|
0001fb10  0d c9 54 05 cc 0d c9 5e  3a 79 73 61 6d 70 25 2d  |..T....^:ysamp%-|
0001fb20  3d 31 3a e7 79 73 61 6d  70 25 3d 30 20 f2 73 68  |=1:.ysamp%=0 .sh|
0001fb30  61 72 70 70 69 78 65 6c  72 6f 77 28 78 6c 25 28  |arppixelrow(xl%(|
0001fb40  29 29 3a 79 73 61 6d 70  25 3d 79 6d 75 6c 25 0d  |)):ysamp%=ymul%.|
0001fb50  c9 68 0e e7 79 64 69 76  25 3d 31 20 8c 0d c9 72  |.h..ydiv%=1 ...r|
0001fb60  0f 63 6c 25 28 29 3d 78  6c 25 28 29 0d c9 7c 05  |.cl%()=xl%()..|.|
0001fb70  cc 0d c9 86 14 e7 79 73  61 6d 70 25 3e 3d 79 64  |......ysamp%>=yd|
0001fb80  69 76 25 20 8c 0d c9 90  23 79 73 61 6d 70 25 2d  |iv% ....#ysamp%-|
0001fb90  3d 79 64 69 76 25 3a 63  6c 25 28 29 3d 78 6c 25  |=ydiv%:cl%()=xl%|
0001fba0  28 29 2a 79 64 69 76 25  0d c9 9a 05 cc 0d c9 a4  |()*ydiv%........|
0001fbb0  2f 63 6c 25 28 29 3d 78  6c 25 28 29 2a 79 73 61  |/cl%()=xl%()*ysa|
0001fbc0  6d 70 25 3a 59 25 3d 79  64 69 76 25 2d 79 73 61  |mp%:Y%=ydiv%-ysa|
0001fbd0  6d 70 25 3a 79 73 61 6d  70 25 3d 30 0d c9 ae 05  |mp%:ysamp%=0....|
0001fbe0  f5 0d c9 b8 30 e7 79 73  61 6d 70 25 3d 30 20 f2  |....0.ysamp%=0 .|
0001fbf0  73 68 61 72 70 70 69 78  65 6c 72 6f 77 28 78 6c  |sharppixelrow(xl|
0001fc00  25 28 29 29 3a 79 73 61  6d 70 25 3d 79 6d 75 6c  |%()):ysamp%=ymul|
0001fc10  25 0d c9 c2 10 e7 79 73  61 6d 70 25 3e 59 25 20  |%.....ysamp%>Y% |
0001fc20  8c 0d c9 cc 36 79 73 61  6d 70 25 2d 3d 59 25 3a  |....6ysamp%-=Y%:|
0001fc30  78 6c 32 25 28 29 3d 78  6c 25 28 29 2a 59 25 3a  |xl2%()=xl%()*Y%:|
0001fc40  63 6c 25 28 29 3d 63 6c  25 28 29 2b 78 6c 32 25  |cl%()=cl%()+xl2%|
0001fc50  28 29 3a 59 25 3d 30 0d  c9 d6 05 cc 0d c9 e0 3e  |():Y%=0........>|
0001fc60  59 25 2d 3d 79 73 61 6d  70 25 3a 78 6c 32 25 28  |Y%-=ysamp%:xl2%(|
0001fc70  29 3d 78 6c 25 28 29 2a  79 73 61 6d 70 25 3a 63  |)=xl%()*ysamp%:c|
0001fc80  6c 25 28 29 3d 63 6c 25  28 29 2b 78 6c 32 25 28  |l%()=cl%()+xl2%(|
0001fc90  29 3a 79 73 61 6d 70 25  3d 30 0d c9 ea 05 cd 0d  |):ysamp%=0......|
0001fca0  c9 f4 0a fd 20 59 25 3d  30 0d c9 fe 05 cd 0d ca  |.... Y%=0.......|
0001fcb0  08 0d 79 73 61 6d 70 25  2b 3d 31 0d ca 12 05 cd  |..ysamp%+=1.....|
0001fcc0  0d ca 1c 05 cd 0d ca 26  3c 63 6c 25 28 29 3d 63  |.......&<cl%()=c|
0001fcd0  6c 25 28 29 2b 6e 6c 25  28 29 3a 6e 6c 25 28 29  |l%()+nl%():nl%()|
0001fce0  3d 30 3a 42 25 3d 78 25  3a 41 25 3d 61 64 64 72  |=0:B%=x%:A%=addr|
0001fcf0  25 3a 61 64 64 72 25 2b  3d 72 6f 77 73 74 65 70  |%:addr%+=rowstep|
0001fd00  25 0d ca 30 0c e7 79 72  25 80 31 20 8c 0d ca 3a  |%..0..yr%.1 ...:|
0001fd10  2f d6 66 73 25 2c 63 6f  6c 73 74 65 70 25 2c 63  |/.fs%,colstep%,c|
0001fd20  6c 25 28 31 2c 30 29 2c  6e 6c 25 28 31 2c 30 29  |l%(1,0),nl%(1,0)|
0001fd30  2c 41 25 2c 73 74 65 70  25 2c 42 25 0d ca 44 05  |,A%,step%,B%..D.|
0001fd40  cc 0d ca 4e 41 41 25 2b  3d 64 69 73 74 25 3a d6  |...NAA%+=dist%:.|
0001fd50  66 73 25 2c 6f 64 64 63  6f 6c 73 74 65 70 25 2c  |fs%,oddcolstep%,|
0001fd60  63 6c 25 28 78 25 2c 30  29 2c 6e 6c 25 28 78 25  |cl%(x%,0),nl%(x%|
0001fd70  2c 30 29 2c 41 25 2c 6f  64 64 73 74 65 70 25 2c  |,0),A%,oddstep%,|
0001fd80  42 25 0d ca 58 05 cd 0d  ca 62 05 ed 0d ca 6c 05  |B%..X....b....l.|
0001fd90  cc 0d ca 76 11 e3 79 72  25 3d 30 20 b8 20 79 25  |...v..yr%=0 . y%|
0001fda0  2d 31 0d ca 80 32 c8 99  68 6f 75 72 25 2c 79 72  |-1...2..hour%,yr|
0001fdb0  25 2a 31 30 30 81 79 25  3a e7 61 64 64 72 25 3e  |%*100.y%:.addr%>|
0001fdc0  6f 75 74 6c 69 6d 25 20  f2 66 6c 75 73 68 6f 75  |outlim% .flushou|
0001fdd0  74 70 75 74 0d ca 8a 0f  e7 73 68 61 72 70 65 6e  |tput.....sharpen|
0001fde0  25 20 8c 0d ca 94 40 e7  79 72 65 61 64 25 20 79  |% ....@.yread% y|
0001fdf0  72 65 61 64 25 2d 3d 31  3a f2 73 63 61 6c 65 64  |read%-=1:.scaled|
0001fe00  70 69 78 65 6c 72 6f 77  28 72 6d 25 28 29 29 3a  |pixelrow(rm%()):|
0001fe10  e7 65 71 75 61 6c 25 20  f2 66 69 74 28 72 6d 25  |.equal% .fit(rm%|
0001fe20  28 29 29 0d ca 9e 3b e3  42 25 3d 30 b8 63 6f 6c  |())...;.B%=0.col|
0001fe30  3a 72 6d 25 28 30 2c 42  25 29 3d 72 6d 25 28 31  |:rm%(0,B%)=rm%(1|
0001fe40  2c 42 25 29 3a 72 6d 25  28 78 25 2b 31 2c 42 25  |,B%):rm%(x%+1,B%|
0001fe50  29 3d 72 6d 25 28 78 25  2c 42 25 29 3a ed 0d ca  |)=rm%(x%,B%):...|
0001fe60  a8 3b d6 20 73 68 61 72  70 25 2c 63 6c 25 28 31  |.;. sharp%,cl%(1|
0001fe70  2c 30 29 2c 72 6d 25 28  31 2c 30 29 2c 72 6d 31  |,0),rm%(1,0),rm1|
0001fe80  25 28 31 2c 30 29 2c 72  6d 32 25 28 31 2c 30 29  |%(1,0),rm2%(1,0)|
0001fe90  2c 74 6f 74 76 61 6c 73  25 0d ca b2 21 c8 94 20  |,totvals%...!.. |
0001fea0  72 6d 32 25 28 29 2c 72  6d 31 25 28 29 3a 72 6d  |rm2%(),rm1%():rm|
0001feb0  31 25 28 29 3d 72 6d 25  28 29 0d ca bc 05 cc 0d  |1%()=rm%()......|
0001fec0  ca c6 2e f2 73 63 61 6c  65 64 70 69 78 65 6c 72  |....scaledpixelr|
0001fed0  6f 77 28 63 6c 25 28 29  29 3a e7 65 71 75 61 6c  |ow(cl%()):.equal|
0001fee0  25 20 f2 66 69 74 28 63  6c 25 28 29 29 0d ca d0  |% .fit(cl%())...|
0001fef0  05 cd 0d ca da 3c 63 6c  25 28 29 3d 63 6c 25 28  |.....<cl%()=cl%(|
0001ff00  29 2b 6e 6c 25 28 29 3a  6e 6c 25 28 29 3d 30 3a  |)+nl%():nl%()=0:|
0001ff10  42 25 3d 78 25 3a 41 25  3d 61 64 64 72 25 3a 61  |B%=x%:A%=addr%:a|
0001ff20  64 64 72 25 2b 3d 72 6f  77 73 74 65 70 25 0d ca  |ddr%+=rowstep%..|
0001ff30  e4 0c e7 79 72 25 80 31  20 8c 0d ca ee 2f d6 66  |...yr%.1 ..../.f|
0001ff40  73 25 2c 63 6f 6c 73 74  65 70 25 2c 63 6c 25 28  |s%,colstep%,cl%(|
0001ff50  31 2c 30 29 2c 6e 6c 25  28 31 2c 30 29 2c 41 25  |1,0),nl%(1,0),A%|
0001ff60  2c 73 74 65 70 25 2c 42  25 0d ca f8 05 cc 0d cb  |,step%,B%.......|
0001ff70  02 41 41 25 2b 3d 64 69  73 74 25 3a d6 66 73 25  |.AA%+=dist%:.fs%|
0001ff80  2c 6f 64 64 63 6f 6c 73  74 65 70 25 2c 63 6c 25  |,oddcolstep%,cl%|
0001ff90  28 78 25 2c 30 29 2c 6e  6c 25 28 78 25 2c 30 29  |(x%,0),nl%(x%,0)|
0001ffa0  2c 41 25 2c 6f 64 64 73  74 65 70 25 2c 42 25 0d  |,A%,oddstep%,B%.|
0001ffb0  cb 0c 05 cd 0d cb 16 05  ed 0d cb 20 05 cd 0d cb  |........... ....|
0001ffc0  2a 05 cd 0d cb 34 17 63  70 75 74 69 6d 65 25 3d  |*....4.cputime%=|
0001ffd0  91 2d 63 70 75 74 69 6d  65 25 0d cb 3e 09 f2 53  |.-cputime%..>..S|
0001ffe0  61 76 65 0d cb 48 06 3d  30 0d cb 52 12 dd 20 f2  |ave..H.=0..R.. .|
0001fff0  73 72 63 68 64 65 76 6c  69 73 74 0d cb 5c 0a 5b  |srchdevlist..\.[|
00020000  4f 50 54 20 5a 0d cb 7a  25 43 4d 50 20 52 34 2c  |OPT Z..z%CMP R4,|
00020010  23 46 3a 4d 4f 56 43 53  20 52 34 2c 23 30 3a 4d  |#F:MOVCS R4,#0:M|
00020020  4f 56 47 45 20 52 34 2c  23 46 0d cb 84 3f 4d 4f  |OVGE R4,#F...?MO|
00020030  56 20 52 30 2c 52 34 2c  4c 53 52 20 23 28 62 69  |V R0,R4,LSR #(bi|
00020040  74 73 2d 6b 25 29 3a 43  4d 50 20 52 30 2c 23 31  |ts-k%):CMP R0,#1|
00020050  3c 3c 6b 25 3a 4d 4f 56  43 53 20 52 30 2c 23 28  |<<k%:MOVCS R0,#(|
00020060  31 3c 3c 6b 25 29 2d 31  20 0d cb 8e 25 43 4d 50  |1<<k%)-1 ...%CMP|
00020070  20 52 35 2c 23 46 3a 4d  4f 56 43 53 20 52 35 2c  | R5,#F:MOVCS R5,|
00020080  23 30 3a 4d 4f 56 47 45  20 52 35 2c 23 46 0d cb  |#0:MOVGE R5,#F..|
00020090  98 53 4d 4f 56 20 52 33  2c 52 35 2c 4c 53 52 20  |.SMOV R3,R5,LSR |
000200a0  23 28 62 69 74 73 2d 6b  25 29 3a 43 4d 50 20 52  |#(bits-k%):CMP R|
000200b0  33 2c 23 31 3c 3c 6b 25  3a 4d 4f 56 43 53 20 52  |3,#1<<k%:MOVCS R|
000200c0  33 2c 23 28 31 3c 3c 6b  25 29 2d 31 3a 84 52 20  |3,#(1<<k%)-1:.R |
000200d0  52 30 2c 52 30 2c 52 33  2c 4c 53 4c 20 23 6b 25  |R0,R0,R3,LSL #k%|
000200e0  20 0d cb a2 25 43 4d 50  20 52 36 2c 23 46 3a 4d  | ...%CMP R6,#F:M|
000200f0  4f 56 43 53 20 52 36 2c  23 30 3a 4d 4f 56 47 45  |OVCS R6,#0:MOVGE|
00020100  20 52 36 2c 23 46 0d cb  ac 55 4d 4f 56 20 52 33  | R6,#F...UMOV R3|
00020110  2c 52 36 2c 4c 53 52 20  23 28 62 69 74 73 2d 6b  |,R6,LSR #(bits-k|
00020120  25 29 3a 43 4d 50 20 52  33 2c 23 31 3c 3c 6b 25  |%):CMP R3,#1<<k%|
00020130  3a 4d 4f 56 43 53 20 52  33 2c 23 28 31 3c 3c 6b  |:MOVCS R3,#(1<<k|
00020140  25 29 2d 31 3a 84 52 20  52 30 2c 52 30 2c 52 33  |%)-1:.R R0,R0,R3|
00020150  2c 4c 53 4c 20 23 6b 25  2a 32 20 0d cb ca 1e 53  |,LSL #k%*2 ....S|
00020160  54 4d 46 44 20 53 50 20  21 2c 7b 52 38 2c 52 39  |TMFD SP !,{R8,R9|
00020170  2c 52 31 30 2c 52 31 31  7d 0d cb d4 11 4c 44 52  |,R10,R11}....LDR|
00020180  20 72 33 2c 69 63 74 6c  6f 63 0d cb de 19 4c 44  | r3,ictloc....LD|
00020190  52 20 72 32 2c 5b 72 33  2c 72 30 2c 4c 53 4c 20  |R r2,[r3,r0,LSL |
000201a0  23 32 5d 0d cb f2 17 4d  4f 56 20 72 31 34 2c 72  |#2]....MOV r14,r|
000201b0  32 2c 6c 73 72 20 23 32  34 20 0d cb fc 0e 43 4d  |2,lsr #24 ....CM|
000201c0  50 20 72 31 34 2c 23 34  0d cc 06 1a 41 44 44 43  |P r14,#4....ADDC|
000201d0  43 20 72 32 2c 72 33 2c  72 30 2c 6c 73 6c 20 23  |C r2,r3,r0,lsl #|
000201e0  32 20 0d cc 10 1b 42 49  43 43 53 20 72 32 2c 72  |2 ....BICCS r2,r|
000201f0  32 2c 23 26 66 66 30 30  30 30 30 30 20 0d cc 1a  |2,#&ff000000 ...|
00020200  14 4c 44 52 42 20 72 30  2c 5b 72 32 5d 2c 23 31  |.LDRB r0,[r2],#1|
00020210  20 0d cc 24 13 53 55 42  53 20 72 31 34 2c 72 31  | ..$.SUBS r14,r1|
00020220  34 2c 23 31 0d cc 2e 0d  42 45 51 20 67 6f 74 69  |4,#1....BEQ goti|
00020230  74 0d cc 42 17 41 44 44  20 72 33 2c 72 30 2c 72  |t..B.ADD r3,r0,r|
00020240  30 2c 6c 73 6c 20 23 31  0d cc 4c 17 41 44 44 20  |0,lsl #1..L.ADD |
00020250  72 33 2c 72 37 2c 72 33  2c 6c 73 6c 20 23 32 0d  |r3,r7,r3,lsl #2.|
00020260  cc 56 18 4c 44 4d 49 41  20 72 33 2c 7b 72 38 2c  |.V.LDMIA r3,{r8,|
00020270  72 39 2c 72 31 30 7d 0d  cc 60 11 53 55 42 53 20  |r9,r10}..`.SUBS |
00020280  72 38 2c 72 38 2c 72 34  0d cc 6a 12 52 53 42 4d  |r8,r8,r4..j.RSBM|
00020290  49 20 72 38 2c 72 38 2c  23 30 0d cc 74 1a 4d 4f  |I r8,r8,#0..t.MO|
000202a0  56 20 72 38 2c 72 38 2c  6c 73 72 20 23 62 69 74  |V r8,r8,lsr #bit|
000202b0  73 2f 32 20 0d cc 7e 11  53 55 42 53 20 72 39 2c  |s/2 ..~.SUBS r9,|
000202c0  72 39 2c 72 35 0d cc 88  12 52 53 42 4d 49 20 72  |r9,r5....RSBMI r|
000202d0  39 2c 72 39 2c 23 30 0d  cc 92 1a 4d 4f 56 20 72  |9,r9,#0....MOV r|
000202e0  39 2c 72 39 2c 6c 73 72  20 23 62 69 74 73 2f 32  |9,r9,lsr #bits/2|
000202f0  20 0d cc 9c 13 53 55 42  53 20 72 31 30 2c 72 31  | ....SUBS r10,r1|
00020300  30 2c 72 36 0d cc a6 14  52 53 42 4d 49 20 72 31  |0,r6....RSBMI r1|
00020310  30 2c 72 31 30 2c 23 30  0d cc b0 1c 4d 4f 56 20  |0,r10,#0....MOV |
00020320  72 31 30 2c 72 31 30 2c  6c 73 72 20 23 62 69 74  |r10,r10,lsr #bit|
00020330  73 2f 32 20 0d cc ba 10  4d 55 4c 20 72 33 2c 72  |s/2 ....MUL r3,r|
00020340  38 2c 72 38 0d cc c4 11  4d 55 4c 20 72 31 31 2c  |8,r8....MUL r11,|
00020350  72 39 2c 72 39 0d cc ce  1a 41 44 44 20 72 31 31  |r9,r9....ADD r11|
00020360  2c 72 31 31 2c 72 31 31  2c 4c 53 4c 20 23 32 0d  |,r11,r11,LSL #2.|
00020370  cc d8 17 41 44 44 20 72  33 2c 72 33 2c 72 33 2c  |...ADD r3,r3,r3,|
00020380  4c 53 4c 20 23 31 0d cc  e2 18 41 44 44 20 72 33  |LSL #1....ADD r3|
00020390  2c 72 33 2c 72 31 31 2c  4c 53 4c 20 23 31 0d cc  |,r3,r11,LSL #1..|
000203a0  ec 17 4d 4c 41 20 72 31  31 2c 72 31 30 2c 72 31  |..MLA r11,r10,r1|
000203b0  30 2c 72 33 20 0d cd 00  0d 2e 73 72 63 68 6c 69  |0,r3 .....srchli|
000203c0  73 74 0d cd 0a 13 4c 44  52 42 20 72 33 2c 5b 72  |st....LDRB r3,[r|
000203d0  32 5d 2c 23 31 0d cd 14  17 41 44 44 20 52 38 2c  |2],#1....ADD R8,|
000203e0  52 33 2c 52 33 2c 4c 53  4c 20 23 31 0d cd 1e 17  |R3,R3,LSL #1....|
000203f0  41 44 44 20 52 38 2c 52  37 2c 52 38 2c 4c 53 4c  |ADD R8,R7,R8,LSL|
00020400  20 23 32 0d cd 28 18 4c  44 4d 49 41 20 52 38 2c  | #2..(.LDMIA R8,|
00020410  7b 52 38 2c 52 39 2c 52  31 30 7d 0d cd 32 11 53  |{R8,R9,R10}..2.S|
00020420  55 42 53 20 52 39 2c 52  35 2c 52 39 0d cd 3c 12  |UBS R9,R5,R9..<.|
00020430  52 53 42 4d 49 20 52 39  2c 52 39 2c 23 30 0d cd  |RSBMI R9,R9,#0..|
00020440  46 19 4d 4f 56 20 52 33  2c 52 39 2c 4c 53 52 20  |F.MOV R3,R9,LSR |
00020450  23 62 69 74 73 2f 32 0d  cd 50 10 4d 55 4c 20 52  |#bits/2..P.MUL R|
00020460  39 2c 52 33 2c 52 33 0d  cd 5a 17 41 44 44 20 72  |9,R3,R3..Z.ADD r|
00020470  39 2c 72 39 2c 72 39 2c  4c 53 4c 20 23 32 0d cd  |9,r9,r9,LSL #2..|
00020480  64 15 43 4d 50 20 52 31  31 2c 52 39 2c 4c 53 4c  |d.CMP R11,R9,LSL|
00020490  20 23 31 0d cd 6e 11 42  43 43 20 73 72 63 68 71  | #1..n.BCC srchq|
000204a0  75 69 63 6b 0d cd 78 11  53 55 42 53 20 52 38 2c  |uick..x.SUBS R8,|
000204b0  52 34 2c 52 38 0d cd 82  12 52 53 42 4d 49 20 52  |R4,R8....RSBMI R|
000204c0  38 2c 52 38 2c 23 30 0d  cd 8c 19 4d 4f 56 20 52  |8,R8,#0....MOV R|
000204d0  33 2c 52 38 2c 4c 53 52  20 23 62 69 74 73 2f 32  |3,R8,LSR #bits/2|
000204e0  0d cd 96 10 4d 55 4c 20  52 38 2c 72 33 2c 72 33  |....MUL R8,r3,r3|
000204f0  0d cd a0 17 41 44 44 20  72 38 2c 72 38 2c 72 38  |....ADD r8,r8,r8|
00020500  2c 4c 53 4c 20 23 31 0d  cd aa 17 41 44 44 20 72  |,LSL #1....ADD r|
00020510  38 2c 72 38 2c 72 39 2c  4c 53 4c 20 23 31 0d cd  |8,r8,r9,LSL #1..|
00020520  b4 13 53 55 42 53 20 52  31 30 2c 52 36 2c 52 31  |..SUBS R10,R6,R1|
00020530  30 0d cd be 14 52 53 42  4d 49 20 52 31 30 2c 52  |0....RSBMI R10,R|
00020540  31 30 2c 23 30 0d cd c8  1a 4d 4f 56 20 52 33 2c  |10,#0....MOV R3,|
00020550  52 31 30 2c 4c 53 52 20  23 62 69 74 73 2f 32 0d  |R10,LSR #bits/2.|
00020560  cd d2 14 4d 4c 41 20 52  31 30 2c 52 33 2c 52 33  |...MLA R10,R3,R3|
00020570  2c 52 38 0d cd dc 0f 43  4d 50 20 52 31 30 2c 52  |,R8....CMP R10,R|
00020580  31 31 0d cd e6 11 4d 4f  56 43 43 20 52 31 31 2c  |11....MOVCC R11,|
00020590  52 31 30 0d cd f0 16 4c  44 52 43 43 42 20 52 30  |R10....LDRCCB R0|
000205a0  2c 5b 72 32 2c 23 2d 31  5d 0d cd fa 0e 2e 73 72  |,[r2,#-1].....sr|
000205b0  63 68 71 75 69 63 6b 0d  ce 04 13 53 55 42 53 20  |chquick....SUBS |
000205c0  52 31 34 2c 52 31 34 2c  23 31 0d ce 0e 10 42 4e  |R14,R14,#1....BN|
000205d0  45 20 73 72 63 68 6c 69  73 74 0d ce 18 0a 2e 67  |E srchlist.....g|
000205e0  6f 74 69 74 0d ce 22 2b  41 44 44 20 52 33 2c 52  |otit.."+ADD R3,R|
000205f0  30 2c 52 30 2c 4c 53 4c  20 23 31 3a 41 44 44 20  |0,R0,LSL #1:ADD |
00020600  52 33 2c 52 37 2c 52 33  2c 4c 53 4c 20 23 32 0d  |R3,R7,R3,LSL #2.|
00020610  ce 2c 18 4c 44 4d 49 41  20 52 33 2c 7b 52 38 2c  |.,.LDMIA R3,{R8,|
00020620  52 39 2c 52 31 30 7d 0d  ce 36 2b 53 55 42 20 52  |R9,R10}..6+SUB R|
00020630  34 2c 52 34 2c 52 38 3a  53 55 42 20 52 35 2c 52  |4,R4,R8:SUB R5,R|
00020640  35 2c 52 39 3a 53 55 42  20 52 36 2c 52 36 2c 52  |5,R9:SUB R6,R6,R|
00020650  31 30 0d ce 40 1e 4c 44  4d 46 44 20 72 31 33 21  |10..@.LDMFD r13!|
00020660  2c 7b 52 38 2c 52 39 2c  52 31 30 2c 52 31 31 7d  |,{R8,R9,R10,R11}|
00020670  0d ce 4a 05 5d 0d ce 54  05 e1 0d ce 5e 1f dd 20  |..J.]..T....^.. |
00020680  f2 67 65 74 6f 75 74 70  75 74 28 41 25 2c 45 25  |.getoutput(A%,E%|
00020690  2c 42 25 2c f8 20 43 25  29 0d ce 68 25 e7 41 25  |,B%,. C%)..h%.A%|
000206a0  3e 6d 61 78 25 20 80 20  72 6f 74 61 74 65 25 3d  |>max% . rotate%=|
000206b0  a3 20 80 20 76 66 6c 69  70 25 3d a3 20 8c 0d ce  |. . vflip%=. ...|
000206c0  72 31 43 25 3d 6d 61 78  25 81 42 25 2b 31 3a 41  |r1C%=max%.B%+1:A|
000206d0  25 3d 78 77 6f 72 64 73  25 2a 43 25 2b 45 25 3a  |%=xwords%*C%+E%:|
000206e0  66 69 72 73 74 25 3d b9  3a 6f 25 3d ae 66 24 0d  |first%=.:o%=.f$.|
000206f0  ce 7c 05 cc 0d ce 86 0a  41 25 2b 3d 45 25 0d ce  |.|......A%+=E%..|
00020700  90 05 cd 0d ce 9a 14 e7  73 70 72 69 74 65 61 72  |........spritear|
00020710  65 61 25 3c 30 20 8c 0d  ce a4 2f 72 61 6d 25 3d  |ea%<0 ..../ram%=|
00020720  a4 63 72 65 61 74 65 61  72 65 61 28 41 25 29 3a  |.createarea(A%):|
00020730  e7 72 61 6d 25 3d 2d 31  20 72 61 6d 25 3d a4 64  |.ram%=-1 ram%=.d|
00020740  69 6d 28 41 25 29 0d ce  ae 05 cc 0d ce b8 14 72  |im(A%).........r|
00020750  61 6d 25 3d 73 70 72 69  74 65 61 72 65 61 25 0d  |am%=spritearea%.|
00020760  ce c2 05 cd 0d ce cc 0c  21 72 61 6d 25 3d 41 25  |........!ram%=A%|
00020770  0d ce d6 05 e1 0d ce ea  18 dd 20 a4 63 72 65 61  |.......... .crea|
00020780  74 65 61 72 65 61 28 73  69 7a 65 25 29 0d ce f4  |tearea(size%)...|
00020790  07 ea 20 85 0d ce fe 11  61 72 65 61 6e 75 6d 62  |.. .....areanumb|
000207a0  65 72 25 3d 30 0d cf 08  0d ee 20 85 20 ea 3a 3d  |er%=0..... . .:=|
000207b0  2d 31 0d cf 12 5f c8 99  20 26 32 30 30 36 36 2c  |-1..._.. &20066,|
000207c0  30 2c 2d 31 2c 73 69 7a  65 25 2c 2d 31 2c 25 31  |0,-1,size%,-1,%1|
000207d0  30 30 30 30 30 30 30 2c  73 69 7a 65 25 2c 30 2c  |0000000,size%,0,|
000207e0  30 2c 22 43 68 61 6e 67  65 46 53 49 20 73 70 72  |0,"ChangeFSI spr|
000207f0  69 74 65 22 20 b8 20 2c  61 72 65 61 6e 75 6d 62  |ite" . ,areanumb|
00020800  65 72 25 2c 2c 61 72 65  61 62 61 73 65 25 3b 56  |er%,,areabase%;V|
00020810  25 0d cf 1c 1c e7 56 25  80 31 20 8c 61 72 65 61  |%.....V%.1 .area|
00020820  6e 75 6d 62 65 72 25 3d  30 3a 3d 2d 31 0d cf 58  |number%=0:=-1..X|
00020830  34 c8 99 20 22 4f 53 5f  52 65 61 64 44 79 6e 61  |4.. "OS_ReadDyna|
00020840  6d 69 63 41 72 65 61 22  2c 61 72 65 61 6e 75 6d  |micArea",areanum|
00020850  62 65 72 25 20 b8 20 2c  61 72 65 61 73 69 7a 65  |ber% . ,areasize|
00020860  25 0d cf 62 3d e7 20 61  72 65 61 73 69 7a 65 25  |%..b=. areasize%|
00020870  3c 73 69 7a 65 25 20 f2  72 65 6d 6f 76 65 61 72  |<size% .removear|
00020880  65 61 3a 85 20 34 32 2c  22 43 6f 75 6c 64 6e 27  |ea:. 42,"Couldn'|
00020890  74 20 63 72 65 61 74 65  20 61 72 65 61 22 0d cf  |t create area"..|
000208a0  6c 0e 3d 61 72 65 61 62  61 73 65 25 0d cf 80 11  |l.=areabase%....|
000208b0  dd 20 f2 72 65 6d 6f 76  65 61 72 65 61 0d cf 8a  |. .removearea...|
000208c0  40 e7 61 72 65 61 6e 75  6d 62 65 72 25 20 c8 99  |@.areanumber% ..|
000208d0  20 22 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  | "OS_DynamicArea|
000208e0  22 2c 31 2c 61 72 65 61  6e 75 6d 62 65 72 25 3a  |",1,areanumber%:|
000208f0  61 72 65 61 6e 75 6d 62  65 72 25 3d 30 0d cf 94  |areanumber%=0...|
00020900  05 e1 0d cf a8 16 dd 20  a4 63 61 63 68 65 64 69  |....... .cachedi|
00020910  6d 28 73 69 7a 65 25 29  0d cf b2 07 ea 20 85 0d  |m(size%)..... ..|
00020920  cf bc 16 63 61 63 68 65  61 72 65 61 6e 75 6d 62  |...cacheareanumb|
00020930  65 72 25 3d 30 0d cf c6  0d ee 20 85 20 ea 3a 3d  |er%=0..... . .:=|
00020940  2d 31 0d cf d0 68 c8 99  20 26 32 30 30 36 36 2c  |-1...h.. &20066,|
00020950  30 2c 2d 31 2c 73 69 7a  65 25 2c 2d 31 2c 25 31  |0,-1,size%,-1,%1|
00020960  30 30 30 30 30 30 30 2c  73 69 7a 65 25 2c 30 2c  |0000000,size%,0,|
00020970  30 2c 22 43 68 61 6e 67  65 46 53 49 20 63 61 63  |0,"ChangeFSI cac|
00020980  68 65 22 20 b8 20 2c 63  61 63 68 65 61 72 65 61  |he" . ,cachearea|
00020990  6e 75 6d 62 65 72 25 2c  2c 63 61 63 68 65 61 72  |number%,,cachear|
000209a0  65 61 62 61 73 65 25 3b  56 25 0d cf da 21 e7 56  |eabase%;V%...!.V|
000209b0  25 80 31 20 8c 63 61 63  68 65 61 72 65 61 6e 75  |%.1 .cacheareanu|
000209c0  6d 62 65 72 25 3d 30 3a  3d 2d 31 0d cf e4 3e c8  |mber%=0:=-1...>.|
000209d0  99 20 22 4f 53 5f 52 65  61 64 44 79 6e 61 6d 69  |. "OS_ReadDynami|
000209e0  63 41 72 65 61 22 2c 63  61 63 68 65 61 72 65 61  |cArea",cachearea|
000209f0  6e 75 6d 62 65 72 25 20  b8 20 2c 63 61 63 68 65  |number% . ,cache|
00020a00  61 72 65 61 73 69 7a 65  25 0d cf ee 47 e7 20 63  |areasize%...G. c|
00020a10  61 63 68 65 61 72 65 61  73 69 7a 65 25 3c 73 69  |acheareasize%<si|
00020a20  7a 65 25 20 f2 72 65 6d  6f 76 65 63 61 63 68 65  |ze% .removecache|
00020a30  61 72 65 61 3a 85 20 34  32 2c 22 43 6f 75 6c 64  |area:. 42,"Could|
00020a40  6e 27 74 20 63 72 65 61  74 65 20 61 72 65 61 22  |n't create area"|
00020a50  0d cf f8 13 3d 63 61 63  68 65 61 72 65 61 62 61  |....=cacheareaba|
00020a60  73 65 25 0d d0 0c 16 dd  20 f2 72 65 6d 6f 76 65  |se%..... .remove|
00020a70  63 61 63 68 65 61 72 65  61 0d d0 16 4f e7 63 61  |cachearea...O.ca|
00020a80  63 68 65 61 72 65 61 6e  75 6d 62 65 72 25 20 c8  |cheareanumber% .|
00020a90  99 20 22 4f 53 5f 44 79  6e 61 6d 69 63 41 72 65  |. "OS_DynamicAre|
00020aa0  61 22 2c 31 2c 63 61 63  68 65 61 72 65 61 6e 75  |a",1,cacheareanu|
00020ab0  6d 62 65 72 25 3a 63 61  63 68 65 61 72 65 61 6e  |mber%:cachearean|
00020ac0  75 6d 62 65 72 25 3d 30  0d d0 20 05 e1 0d d0 34  |umber%=0.. ....4|
00020ad0  12 dd 20 f2 66 6c 75 73  68 6f 75 74 70 75 74 0d  |.. .flushoutput.|
00020ae0  d0 3e 1d e7 73 70 72 69  74 65 61 72 65 61 25 3c  |.>..spritearea%<|
00020af0  30 20 80 6f 6b 73 61 76  65 25 20 8c 0d d0 48 27  |0 .oksave% ...H'|
00020b00  41 25 3d 62 61 73 65 25  3a e7 66 69 72 73 74 25  |A%=base%:.first%|
00020b10  20 41 25 3d 72 61 6d 25  2b 34 3a 66 69 72 73 74  | A%=ram%+4:first|
00020b20  25 3d a3 0d d0 52 1f c8  99 31 32 2c 32 2c 6f 25  |%=...R...12,2,o%|
00020b30  2c 41 25 2c 61 64 64 72  25 81 73 69 7a 65 25 2d  |,A%,addr%.size%-|
00020b40  41 25 0d d0 5c 05 cd 0d  d0 66 15 61 64 64 72 25  |A%..\....f.addr%|
00020b50  3d 62 61 73 65 25 2a 73  69 7a 65 25 0d d0 70 05  |=base%*size%..p.|
00020b60  e1 0d d0 7a 0c dd 20 f2  63 6c 6f 73 65 0d d0 84  |...z.. .close...|
00020b70  2c e7 63 25 20 e7 66 6c  61 67 3d 33 36 30 30 20  |,.c% .flag=3600 |
00020b80  c8 99 22 50 68 6f 74 6f  43 44 5f 43 6c 6f 73 65  |.."PhotoCD_Close|
00020b90  22 2c 70 63 64 68 25 2c  31 0d d0 8e 3b e7 63 25  |",pcdh%,1...;.c%|
00020ba0  20 d9 23 63 25 3a 63 25  3d 30 3a e7 73 63 72 61  | .#c%:c%=0:.scra|
00020bb0  70 66 25 20 73 63 72 61  70 66 25 3d a3 3a ff 22  |pf% scrapf%=.:."|
00020bc0  52 65 6d 6f 76 65 20 3c  57 69 6d 70 24 53 63 72  |Remove <Wimp$Scr|
00020bd0  61 70 3e 22 0d d0 98 14  e7 63 63 25 20 d9 23 63  |ap>".....cc% .#c|
00020be0  63 25 3a 63 63 25 3d 30  0d d0 a2 17 e7 63 63 63  |c%:cc%=0.....ccc|
00020bf0  25 20 d9 23 63 63 63 25  3a 63 63 63 25 3d 30 0d  |% .#ccc%:ccc%=0.|
00020c00  d0 ac 14 f2 72 65 6d 6f  76 65 63 61 63 68 65 61  |....removecachea|
00020c10  72 65 61 0d d0 b6 05 e1  0d d0 c0 0b dd 20 f2 53  |rea.......... .S|
00020c20  61 76 65 0d d0 ca 0a f2  63 6c 6f 73 65 0d d0 d4  |ave.....close...|
00020c30  0a c8 8e 20 6d 20 ca 0d  d0 de 22 c9 20 2d 31 3a  |... m ....". -1:|
00020c40  e7 73 70 72 69 74 65 61  72 65 61 25 3c 30 20 80  |.spritearea%<0 .|
00020c50  6f 6b 73 61 76 65 25 20  8c 0d d0 e8 3b e7 6f 25  |oksave% ....;.o%|
00020c60  20 f2 66 6c 75 73 68 6f  75 74 70 75 74 20 8b c8  | .flushoutput ..|
00020c70  99 22 4f 53 5f 46 69 6c  65 22 2c 31 30 2c 66 24  |."OS_File",10,f$|
00020c80  2c 26 30 30 34 2c 2c 72  61 6d 25 2c 72 61 6d 25  |,&004,,ram%,ram%|
00020c90  2b 73 7a 25 0d d0 f2 05  cd 0d d0 fc 19 c9 20 2d  |+sz%.......... -|
00020ca0  32 3a 6f 25 3d ae 66 24  3a d5 23 6f 25 2c 70 6e  |2:o%=.f$:.#o%,pn|
00020cb0  6d 24 0d d1 06 0d c8 8e  20 70 6e 6d 24 20 ca 0d  |m$...... pnm$ ..|
00020cc0  d1 10 0a c9 20 22 50 31  22 0d d1 1a 2c d5 23 6f  |.... "P1"...,.#o|
00020cd0  25 2c 22 23 20 22 2b 66  24 2b 22 2e 70 62 6d 20  |%,"# "+f$+".pbm |
00020ce0  28 6f 70 74 69 6f 6e 73  20 22 2b 6f 6e 61 6d 65  |(options "+oname|
00020cf0  24 2b 22 29 22 0d d1 24  18 d5 23 6f 25 2c c3 78  |$+")"..$..#o%,.x|
00020d00  73 70 25 2b 22 20 22 2b  c3 79 73 70 25 0d d1 2e  |sp%+" "+.ysp%...|
00020d10  24 e3 59 25 3d 30 b8 79  73 70 25 2d 31 3a 42 25  |$.Y%=0.ysp%-1:B%|
00020d20  3d 62 61 73 65 25 2b 59  25 2a 78 77 6f 72 64 73  |=base%+Y%*xwords|
00020d30  25 0d d1 38 3d e3 58 25  3d 30 b8 78 73 70 25 2d  |%..8=.X%=0.xsp%-|
00020d40  31 3a e7 42 25 3f 28 58  25 3e 3e 33 29 80 28 31  |1:.B%?(X%>>3).(1|
00020d50  3c 3c 28 58 25 80 37 29  29 20 d5 23 6f 25 2c 22  |<<(X%.7)) .#o%,"|
00020d60  31 22 3b 20 8b d5 23 6f  25 2c 22 30 22 3b 0d d1  |1"; ..#o%,"0";..|
00020d70  42 05 ed 0d d1 4c 0b d5  23 6f 25 2c 22 22 0d d1  |B....L..#o%,""..|
00020d80  56 05 ed 0d d1 60 0a c9  20 22 50 34 22 0d d1 6a  |V....`.. "P4"..j|
00020d90  3b d5 23 6f 25 2c 22 23  20 22 2b 66 24 2b 22 2e  |;.#o%,"# "+f$+".|
00020da0  70 62 6d 20 28 6f 70 74  69 6f 6e 73 20 22 2b 6f  |pbm (options "+o|
00020db0  6e 61 6d 65 24 2b 22 29  20 62 69 6e 61 72 79 20  |name$+") binary |
00020dc0  65 6e 63 6f 64 65 64 22  0d d1 74 18 d5 23 6f 25  |encoded"..t..#o%|
00020dd0  2c c3 78 73 70 25 2b 22  20 22 2b c3 79 73 70 25  |,.xsp%+" "+.ysp%|
00020de0  0d d1 7e 66 e3 58 25 3d  30 b8 32 35 35 3a 63 6f  |..~f.X%=0.255:co|
00020df0  64 65 25 3f 58 25 3d 58  25 3c 3c 37 20 84 20 58  |de%?X%=X%<<7 . X|
00020e00  25 3c 3c 35 80 26 34 30  20 84 20 58 25 3c 3c 33  |%<<5.&40 . X%<<3|
00020e10  80 26 32 30 20 84 20 58  25 3c 3c 31 80 26 31 30  |.&20 . X%<<1.&10|
00020e20  20 84 20 58 25 3e 3e 31  80 38 20 84 20 58 25 3e  | . X%>>1.8 . X%>|
00020e30  3e 33 80 34 20 84 58 25  3e 3e 35 80 32 20 84 58  |>3.4 .X%>>5.2 .X|
00020e40  25 3e 3e 37 3a ed 0d d1  88 24 e3 59 25 3d 30 b8  |%>>7:....$.Y%=0.|
00020e50  79 73 70 25 2d 31 3a 42  25 3d 62 61 73 65 25 2b  |ysp%-1:B%=base%+|
00020e60  59 25 2a 78 77 6f 72 64  73 25 0d d1 92 2c e3 58  |Y%*xwords%...,.X|
00020e70  25 3d 30 b8 78 73 70 25  2d 31 88 38 3a d5 23 6f  |%=0.xsp%-1.8:.#o|
00020e80  25 2c 63 6f 64 65 25 3f  28 42 25 3f 28 58 25 3e  |%,code%?(B%?(X%>|
00020e90  3e 33 29 29 3a ed 0d d1  9c 05 ed 0d d1 a6 0a c9  |>3)):...........|
00020ea0  20 22 50 32 22 0d d1 b0  2c d5 23 6f 25 2c 22 23  | "P2"...,.#o%,"#|
00020eb0  20 22 2b 66 24 2b 22 2e  70 67 6d 20 28 6f 70 74  | "+f$+".pgm (opt|
00020ec0  69 6f 6e 73 20 22 2b 6f  6e 61 6d 65 24 2b 22 29  |ions "+oname$+")|
00020ed0  22 0d d1 ba 18 d5 23 6f  25 2c c3 78 73 70 25 2b  |".....#o%,.xsp%+|
00020ee0  22 20 22 2b c3 79 73 70  25 0d d1 c4 0d d5 23 6f  |" "+.ysp%.....#o|
00020ef0  25 2c 22 31 35 22 0d d1  ce 24 e3 59 25 3d 30 b8  |%,"15"...$.Y%=0.|
00020f00  79 73 70 25 2d 31 3a 42  25 3d 62 61 73 65 25 2b  |ysp%-1:B%=base%+|
00020f10  59 25 2a 78 77 6f 72 64  73 25 0d d1 d8 37 e3 58  |Y%*xwords%...7.X|
00020f20  25 3d 30 b8 78 73 70 25  2d 31 3a 43 25 3d 42 25  |%=0.xsp%-1:C%=B%|
00020f30  3f 28 58 25 3e 3e 31 29  3a e7 58 25 80 31 20 43  |?(X%>>1):.X%.1 C|
00020f40  25 3d 43 25 3e 3e 34 20  8b 43 25 3d 43 25 80 31  |%=C%>>4 .C%=C%.1|
00020f50  35 0d d1 e2 11 d5 23 6f  25 2c 22 20 22 2b c3 43  |5.....#o%," "+.C|
00020f60  25 3b 0d d1 ec 05 ed 0d  d1 f6 0b d5 23 6f 25 2c  |%;..........#o%,|
00020f70  22 22 0d d2 00 05 ed 0d  d2 0a 0a c9 20 22 50 35  |"".......... "P5|
00020f80  22 0d d2 14 3b d5 23 6f  25 2c 22 23 20 22 2b 66  |"...;.#o%,"# "+f|
00020f90  24 2b 22 2e 70 67 6d 20  28 6f 70 74 69 6f 6e 73  |$+".pgm (options|
00020fa0  20 22 2b 6f 6e 61 6d 65  24 2b 22 29 20 62 69 6e  | "+oname$+") bin|
00020fb0  61 72 79 20 65 6e 63 6f  64 65 64 22 0d d2 1e 18  |ary encoded"....|
00020fc0  d5 23 6f 25 2c c3 78 73  70 25 2b 22 20 22 2b c3  |.#o%,.xsp%+" "+.|
00020fd0  79 73 70 25 0d d2 28 0d  d5 23 6f 25 2c 22 31 35  |ysp%..(..#o%,"15|
00020fe0  22 0d d2 32 24 e3 59 25  3d 30 b8 79 73 70 25 2d  |"..2$.Y%=0.ysp%-|
00020ff0  31 3a 42 25 3d 62 61 73  65 25 2b 59 25 2a 78 77  |1:B%=base%+Y%*xw|
00021000  6f 72 64 73 25 0d d2 3c  37 e3 58 25 3d 30 b8 78  |ords%..<7.X%=0.x|
00021010  73 70 25 2d 31 3a 43 25  3d 42 25 3f 28 58 25 3e  |sp%-1:C%=B%?(X%>|
00021020  3e 31 29 3a e7 58 25 80  31 20 43 25 3d 43 25 3e  |>1):.X%.1 C%=C%>|
00021030  3e 34 20 8b 43 25 3d 43  25 80 31 35 0d d2 46 0b  |>4 .C%=C%.15..F.|
00021040  d5 23 6f 25 2c 43 25 0d  d2 50 05 ed 0d d2 5a 05  |.#o%,C%..P....Z.|
00021050  ed 0d d2 64 05 cb 0d d2  6e 0d d9 23 6f 25 3a 6f  |...d....n..#o%:o|
00021060  25 3d 30 0d d2 78 2f e7  70 6e 6d 24 3d 22 50 32  |%=0..x/.pnm$="P2|
00021070  22 84 70 6e 6d 24 3d 22  50 31 22 20 ff 22 53 65  |".pnm$="P1" ."Se|
00021080  74 74 79 70 65 20 22 2b  66 24 2b 22 20 26 46 46  |ttype "+f$+" &FF|
00021090  46 22 0d d2 82 19 c9 20  2d 33 3a 6f 25 3d ae 66  |F"..... -3:o%=.f|
000210a0  24 3a d5 23 6f 25 2c 70  6e 6d 24 0d d2 8c 4f d5  |$:.#o%,pnm$...O.|
000210b0  23 6f 25 2c 22 23 20 22  2b 66 24 2b 22 2e 70 63  |#o%,"# "+f$+".pc|
000210c0  6d 20 28 6f 70 74 69 6f  6e 73 20 22 2b 6f 6e 61  |m (options "+ona|
000210d0  6d 65 24 2b 22 29 20 62  69 6e 61 72 79 20 65 6e  |me$+") binary en|
000210e0  63 6f 64 65 64 20 31 35  62 70 70 20 28 35 62 69  |coded 15bpp (5bi|
000210f0  74 73 20 72 2c 67 2c 62  29 22 0d d2 96 18 d5 23  |ts r,g,b)".....#|
00021100  6f 25 2c c3 78 73 70 25  2b 22 20 22 2b c3 79 73  |o%,.xsp%+" "+.ys|
00021110  70 25 0d d2 a0 0d d5 23  6f 25 2c 22 33 31 22 0d  |p%.....#o%,"31".|
00021120  d2 aa 1e c8 99 31 32 2c  32 2c 6f 25 2c 72 61 6d  |.....12,2,o%,ram|
00021130  25 2c 78 73 70 25 2a 79  73 70 25 2a 32 0d d2 b4  |%,xsp%*ysp%*2...|
00021140  0d d9 23 6f 25 3a 6f 25  3d 30 0d d2 be 1e c9 20  |..#o%:o%=0..... |
00021150  2d 34 3a 6f 25 3d ae 66  24 3a e7 70 6e 6d 24 3d  |-4:o%=.f$:.pnm$=|
00021160  22 49 52 4c 41 4d 22 8c  0d d2 c8 25 d5 23 6f 25  |"IRLAM"....%.#o%|
00021170  2c 22 49 72 6c 61 6d 20  32 34 3a 20 22 2b c3 78  |,"Irlam 24: "+.x|
00021180  73 70 25 2b 22 20 22 2b  c3 79 73 70 25 0d d2 d2  |sp%+" "+.ysp%...|
00021190  23 e3 59 25 3d 30 b8 79  73 70 25 2d 31 3a 42 25  |#.Y%=0.ysp%-1:B%|
000211a0  3d 72 61 6d 25 2b 59 25  2a 78 77 6f 72 64 73 25  |=ram%+Y%*xwords%|
000211b0  0d d2 dc 21 e3 58 25 3d  30 b8 78 73 70 25 2a 33  |...!.X%=0.xsp%*3|
000211c0  2d 31 88 33 3a d5 23 6f  25 2c 42 25 3f 58 25 3a  |-1.3:.#o%,B%?X%:|
000211d0  ed 0d d2 e6 27 42 25 2b  3d 31 3a e3 58 25 3d 30  |....'B%+=1:.X%=0|
000211e0  b8 78 73 70 25 2a 33 2d  31 88 33 3a d5 23 6f 25  |.xsp%*3-1.3:.#o%|
000211f0  2c 42 25 3f 58 25 3a ed  0d d2 f0 27 42 25 2b 3d  |,B%?X%:....'B%+=|
00021200  31 3a e3 58 25 3d 30 b8  78 73 70 25 2a 33 2d 31  |1:.X%=0.xsp%*3-1|
00021210  88 33 3a d5 23 6f 25 2c  42 25 3f 58 25 3a ed 0d  |.3:.#o%,B%?X%:..|
00021220  d2 fa 05 ed 0d d3 04 05  cc 0d d3 0e 0d d5 23 6f  |..............#o|
00021230  25 2c 70 6e 6d 24 0d d3  18 10 e7 70 6e 6d 24 3d  |%,pnm$.....pnm$=|
00021240  22 50 36 22 20 8c 0d d3  22 47 d5 23 6f 25 2c 22  |"P6" ..."G.#o%,"|
00021250  23 20 22 2b 66 24 2b 22  2e 70 70 6d 20 28 6f 70  |# "+f$+".ppm (op|
00021260  74 69 6f 6e 73 20 22 2b  6f 6e 61 6d 65 24 2b 22  |tions "+oname$+"|
00021270  29 20 62 69 6e 61 72 79  20 65 6e 63 6f 64 65 64  |) binary encoded|
00021280  20 32 34 62 70 70 20 72  2c 67 2c 62 22 0d d3 2c  | 24bpp r,g,b"..,|
00021290  05 cc 0d d3 36 45 d5 23  6f 25 2c 22 23 20 22 2b  |....6E.#o%,"# "+|
000212a0  66 24 2b 22 2e 70 70 6d  20 28 6f 70 74 69 6f 6e  |f$+".ppm (option|
000212b0  73 20 22 2b 6f 6e 61 6d  65 24 2b 22 29 20 22 2b  |s "+oname$+") "+|
000212c0  c3 28 70 36 62 69 74 73  2a 33 29 2b 22 62 70 70  |.(p6bits*3)+"bpp|
000212d0  20 72 2c 67 2c 62 22 0d  d3 40 05 cd 0d d3 4a 18  | r,g,b"..@....J.|
000212e0  d5 23 6f 25 2c c3 78 73  70 25 2b 22 20 22 2b c3  |.#o%,.xsp%+" "+.|
000212f0  79 73 70 25 0d d3 54 16  d5 23 6f 25 2c c3 28 32  |ysp%..T..#o%,.(2|
00021300  5e 70 36 62 69 74 73 2d  31 29 0d d3 5e 10 e7 70  |^p6bits-1)..^..p|
00021310  6e 6d 24 3d 22 50 36 22  20 8c 0d d3 68 1e c8 99  |nm$="P6" ...h...|
00021320  31 32 2c 32 2c 6f 25 2c  72 61 6d 25 2c 78 73 70  |12,2,o%,ram%,xsp|
00021330  25 2a 79 73 70 25 2a 33  0d d3 72 05 cc 0d d3 7c  |%*ysp%*3..r....||
00021340  23 e3 59 25 3d 30 b8 79  73 70 25 2d 31 3a 42 25  |#.Y%=0.ysp%-1:B%|
00021350  3d 72 61 6d 25 2b 59 25  2a 78 77 6f 72 64 73 25  |=ram%+Y%*xwords%|
00021360  0d d3 86 58 e3 58 25 3d  30 b8 78 73 70 25 2d 31  |...X.X%=0.xsp%-1|
00021370  3a 43 25 3d 42 25 21 28  58 25 2a 33 29 3a d5 23  |:C%=B%!(X%*3):.#|
00021380  6f 25 2c 22 20 22 2b c3  28 43 25 80 32 35 35 29  |o%," "+.(C%.255)|
00021390  2b 22 20 22 2b c3 28 28  43 25 3e 3e 38 29 80 26  |+" "+.((C%>>8).&|
000213a0  46 46 29 2b 22 20 22 2b  c3 28 28 43 25 3e 3e 31  |FF)+" "+.((C%>>1|
000213b0  36 29 80 32 35 35 29 3b  0d d3 90 05 ed 0d d3 9a  |6).255);........|
000213c0  0b d5 23 6f 25 2c 22 22  0d d3 a4 05 ed 0d d3 ae  |..#o%,""........|
000213d0  05 cd 0d d3 b8 05 cd 0d  d3 c2 0d d9 23 6f 25 3a  |............#o%:|
000213e0  6f 25 3d 30 0d d3 cc 25  e7 70 6e 6d 24 3d 22 50  |o%=0...%.pnm$="P|
000213f0  33 22 20 ff 22 53 65 74  74 79 70 65 20 22 2b 66  |3" ."Settype "+f|
00021400  24 2b 22 20 26 46 46 46  22 0d d3 d6 19 c9 20 2d  |$+" &FFF"..... -|
00021410  35 3a 6f 25 3d ae 66 24  3a d5 23 6f 25 2c 70 6e  |5:o%=.f$:.#o%,pn|
00021420  6d 24 0d d3 e0 4f d5 23  6f 25 2c 22 23 20 22 2b  |m$...O.#o%,"# "+|
00021430  66 24 2b 22 2e 70 63 6d  20 28 6f 70 74 69 6f 6e  |f$+".pcm (option|
00021440  73 20 22 2b 6f 6e 61 6d  65 24 2b 22 29 20 62 69  |s "+oname$+") bi|
00021450  6e 61 72 79 20 65 6e 63  6f 64 65 64 20 31 35 62  |nary encoded 15b|
00021460  70 70 20 28 35 62 69 74  73 20 79 2c 75 2c 76 29  |pp (5bits y,u,v)|
00021470  22 0d d3 ea 18 d5 23 6f  25 2c c3 78 73 70 25 2b  |".....#o%,.xsp%+|
00021480  22 20 22 2b c3 79 73 70  25 0d d3 f4 13 d5 23 6f  |" "+.ysp%.....#o|
00021490  25 2c 22 33 31 20 32 37  20 32 31 22 0d d3 fe 1e  |%,"31 27 21"....|
000214a0  c8 99 31 32 2c 32 2c 6f  25 2c 72 61 6d 25 2c 78  |..12,2,o%,ram%,x|
000214b0  73 70 25 2a 79 73 70 25  2a 32 0d d4 08 0d d9 23  |sp%*ysp%*2.....#|
000214c0  6f 25 3a 6f 25 3d 30 0d  d4 12 05 7f 0d d4 1c 14  |o%:o%=0.........|
000214d0  e7 6e 63 6f 6c 3d 31 80  6d 24 3d 22 54 22 20 8c  |.ncol=1.m$="T" .|
000214e0  0d d4 26 1d e3 58 25 3d  28 78 73 70 25 2a 34 2d  |..&..X%=(xsp%*4-|
000214f0  31 29 81 38 2a 38 2b 36  b8 36 88 2d 38 0d d4 30  |1).8*8+6.6.-8..0|
00021500  1d c8 99 26 32 65 2c 26  31 32 65 2c 72 61 6d 25  |...&2e,&12e,ram%|
00021510  2c 6f 6e 61 6d 65 24 2c  58 25 0d d4 3a 1d c8 99  |,oname$,X%..:...|
00021520  26 32 65 2c 26 31 32 65  2c 72 61 6d 25 2c 6f 6e  |&2e,&12e,ram%,on|
00021530  61 6d 65 24 2c 58 25 0d  d4 44 05 ed 0d d4 4e 05  |ame$,X%..D....N.|
00021540  cd 0d d4 58 1d e7 73 70  72 69 74 65 61 72 65 61  |...X..spritearea|
00021550  25 3c 30 20 80 6f 6b 73  61 76 65 25 20 8c 0d d4  |%<0 .oksave% ...|
00021560  62 28 e7 6f 25 20 f2 66  6c 75 73 68 6f 75 74 70  |b(.o% .flushoutp|
00021570  75 74 20 8b c8 99 26 32  65 2c 26 31 30 63 2c 72  |ut ...&2e,&10c,r|
00021580  61 6d 25 2c 66 24 0d d4  6c 05 cd 0d d4 76 05 cb  |am%,f$..l....v..|
00021590  0d d4 80 34 e7 6f 25 20  d9 23 6f 25 3a 6f 25 3d  |...4.o% .#o%:o%=|
000215a0  30 3a ff 22 73 65 74 74  79 70 65 20 22 2b 66 24  |0:."settype "+f$|
000215b0  2b 22 20 26 66 66 39 22  3a f2 72 65 6d 6f 76 65  |+" &ff9":.remove|
000215c0  61 72 65 61 0d d4 8a 15  c8 99 22 48 6f 75 72 67  |area......"Hourg|
000215d0  6c 61 73 73 5f 4f 66 66  22 0d d4 94 05 e1 0d d4  |lass_Off".......|
000215e0  9e 0c dd f2 64 65 66 70  61 6c 0d d4 a8 0d e3 43  |....defpal.....C|
000215f0  25 3d 30 b8 32 35 35 0d  d4 b2 23 72 25 28 43 25  |%=0.255...#r%(C%|
00021600  29 3d 28 43 25 80 37 20  84 20 28 43 25 80 31 36  |)=(C%.7 . (C%.16|
00021610  29 3e 3e 31 29 2f 31 35  2a 46 0d d4 bc 24 67 25  |)>>1)/15*F...$g%|
00021620  28 43 25 29 3d 28 43 25  80 33 20 84 20 28 43 25  |(C%)=(C%.3 . (C%|
00021630  80 26 36 30 29 3e 3e 33  29 2f 31 35 2a 46 0d d4  |.&60)>>3)/15*F..|
00021640  c6 30 62 25 28 43 25 29  3d 28 43 25 80 33 20 84  |.0b%(C%)=(C%.3 .|
00021650  20 28 43 25 80 38 29 3e  3e 31 20 84 20 28 43 25  | (C%.8)>>1 . (C%|
00021660  80 31 32 38 29 3e 3e 34  29 2f 31 35 2a 46 0d d4  |.128)>>4)/15*F..|
00021670  d0 05 ed 0d d4 da 05 e1  0d d4 e4 0d dd f2 64 65  |..............de|
00021680  66 70 61 6c 32 0d d4 ee  1b 72 25 28 30 29 3d 46  |fpal2....r%(0)=F|
00021690  3a 67 25 28 30 29 3d 46  3a 62 25 28 30 29 3d 46  |:g%(0)=F:b%(0)=F|
000216a0  0d d4 f8 05 e1 0d d5 02  0d dd f2 64 65 66 70 61  |...........defpa|
000216b0  6c 34 0d d5 0c 2f 72 25  28 29 3d 31 35 2c 31 30  |l4.../r%()=15,10|
000216c0  2c 35 2c 30 3a e3 43 25  3d 30 b8 33 3a 72 25 28  |,5,0:.C%=0.3:r%(|
000216d0  43 25 29 3d 72 25 28 43  25 29 2f 31 35 2a 46 3a  |C%)=r%(C%)/15*F:|
000216e0  ed 0d d5 16 17 67 25 28  29 3d 72 25 28 29 3a 62  |.....g%()=r%():b|
000216f0  25 28 29 3d 72 25 28 29  0d d5 20 05 e1 0d d5 2a  |%()=r%().. ....*|
00021700  0e dd f2 64 65 66 70 61  6c 31 36 0d d5 34 31 72  |...defpal16..41r|
00021710  25 28 29 3d 31 35 2c 31  33 2c 31 31 2c 39 2c 37  |%()=15,13,11,9,7|
00021720  2c 35 2c 33 2c 30 2c 30  2c 31 34 2c 20 30 2c 31  |,5,3,0,0,14, 0,1|
00021730  33 2c 31 34 2c 35 2c 31  35 2c 20 30 0d d5 3e 31  |3,14,5,15, 0..>1|
00021740  67 25 28 29 3d 31 35 2c  31 33 2c 31 31 2c 39 2c  |g%()=15,13,11,9,|
00021750  37 2c 35 2c 33 2c 30 2c  34 2c 31 34 2c 31 32 2c  |7,5,3,0,4,14,12,|
00021760  20 30 2c 31 34 2c 38 2c  31 31 2c 31 30 0d d5 48  | 0,14,8,11,10..H|
00021770  31 62 25 28 29 3d 31 35  2c 31 33 2c 31 31 2c 39  |1b%()=15,13,11,9|
00021780  2c 37 2c 35 2c 33 2c 30  2c 39 2c 20 30 2c 20 30  |,7,5,3,0,9, 0, 0|
00021790  2c 20 30 2c 31 31 2c 30  2c 20 30 2c 31 35 0d d5  |, 0,11,0, 0,15..|
000217a0  52 47 e3 43 25 3d 30 b8  31 35 3a 72 25 28 43 25  |RG.C%=0.15:r%(C%|
000217b0  29 3d 72 25 28 43 25 29  2f 31 35 2a 46 3a 67 25  |)=r%(C%)/15*F:g%|
000217c0  28 43 25 29 3d 67 25 28  43 25 29 2f 31 35 2a 46  |(C%)=g%(C%)/15*F|
000217d0  3a 62 25 28 43 25 29 3d  62 25 28 43 25 29 2f 31  |:b%(C%)=b%(C%)/1|
000217e0  35 2a 46 3a ed 0d d5 5c  05 e1 0d d5 66 0c dd f2  |5*F:...\....f...|
000217f0  69 70 61 6c 36 33 0d d5  70 2c cf 23 63 25 3d 26  |ipal63..p,.#c%=&|
00021800  33 38 3a de 20 72 70 61  6c 25 28 31 35 29 2c 67  |38:. rpal%(15),g|
00021810  70 61 6c 25 28 31 35 29  2c 62 70 61 6c 25 28 31  |pal%(15),bpal%(1|
00021820  35 29 0d d5 7a 14 e3 43  25 3d 30 b8 31 35 3a 44  |5)..z..C%=0.15:D|
00021830  25 3d 9a 23 63 25 0d d5  84 19 72 70 61 6c 25 28  |%=.#c%....rpal%(|
00021840  43 25 29 3d 9a 23 63 25  3e 3e 34 20 80 20 37 0d  |C%)=.#c%>>4 . 7.|
00021850  d5 8e 19 67 70 61 6c 25  28 43 25 29 3d 9a 23 63  |...gpal%(C%)=.#c|
00021860  25 3e 3e 34 20 80 20 33  0d d5 98 19 62 70 61 6c  |%>>4 . 3....bpal|
00021870  25 28 43 25 29 3d 9a 23  63 25 3e 3e 34 20 80 20  |%(C%)=.#c%>>4 . |
00021880  37 0d d5 a2 0b 44 25 3d  a4 57 3a ed 0d d5 ac 0d  |7....D%=.W:.....|
00021890  e3 43 25 3d 30 b8 32 35  35 0d d5 b6 29 72 25 28  |.C%=0.255...)r%(|
000218a0  43 25 29 3d 28 72 70 61  6c 25 28 43 25 80 31 35  |C%)=(rpal%(C%.15|
000218b0  29 84 28 43 25 80 31 36  29 3e 3e 31 29 2f 31 35  |).(C%.16)>>1)/15|
000218c0  2a 46 0d d5 c0 2a 67 25  28 43 25 29 3d 28 67 70  |*F...*g%(C%)=(gp|
000218d0  61 6c 25 28 43 25 80 31  35 29 84 28 43 25 80 26  |al%(C%.15).(C%.&|
000218e0  36 30 29 3e 3e 33 29 2f  31 35 2a 46 0d d5 ca 2a  |60)>>3)/15*F...*|
000218f0  62 25 28 43 25 29 3d 28  62 70 61 6c 25 28 43 25  |b%(C%)=(bpal%(C%|
00021900  80 31 35 29 84 28 43 25  80 31 32 38 29 3e 3e 34  |.15).(C%.128)>>4|
00021910  29 2f 31 35 2a 46 0d d5  d4 05 ed 0d d5 de 05 e1  |)/15*F..........|
00021920  0d d5 e8 0e dd f2 69 70  61 6c 28 44 25 29 0d d5  |......ipal(D%)..|
00021930  f2 0c cf 23 63 25 3d 26  33 38 0d d5 fc 16 e3 43  |...#c%=&38.....C|
00021940  25 3d 30 b8 44 25 2d 31  3a 44 25 3d 9a 23 63 25  |%=0.D%-1:D%=.#c%|
00021950  0d d6 06 19 72 25 28 43  25 29 3d 28 9a 23 63 25  |....r%(C%)=(.#c%|
00021960  3e 3e 34 29 2f 31 35 2a  46 0d d6 10 19 67 25 28  |>>4)/15*F....g%(|
00021970  43 25 29 3d 28 9a 23 63  25 3e 3e 34 29 2f 31 35  |C%)=(.#c%>>4)/15|
00021980  2a 46 0d d6 1a 19 62 25  28 43 25 29 3d 28 9a 23  |*F....b%(C%)=(.#|
00021990  63 25 3e 3e 34 29 2f 31  35 2a 46 0d d6 24 0b 44  |c%>>4)/15*F..$.D|
000219a0  25 3d a4 57 3a ed 0d d6  2e 05 e1 0d d6 38 13 dd  |%=.W:........8..|
000219b0  20 f2 6e 65 77 72 6f 70  61 6c 28 44 25 29 0d d6  | .newropal(D%)..|
000219c0  42 0c cf 23 63 25 3d 26  33 38 0d d6 4c 14 e3 43  |B..#c%=&38..L..C|
000219d0  25 3d 30 b8 44 25 2d 31  3a 44 25 3d a4 57 0d d6  |%=0.D%-1:D%=.W..|
000219e0  56 19 72 25 28 43 25 29  3d 28 44 25 80 32 35 35  |V.r%(C%)=(D%.255|
000219f0  29 2f 32 35 35 2a 46 0d  d6 60 1c 67 25 28 43 25  |)/255*F..`.g%(C%|
00021a00  29 3d 28 44 25 3e 3e 38  80 32 35 35 29 2f 32 35  |)=(D%>>8.255)/25|
00021a10  35 2a 46 0d d6 6a 1d 62  25 28 43 25 29 3d 28 44  |5*F..j.b%(C%)=(D|
00021a20  25 3e 3e 31 36 80 32 35  35 29 2f 32 35 35 2a 46  |%>>16.255)/255*F|
00021a30  0d d6 74 0b 44 25 3d a4  57 3a ed 0d d6 7e 05 e1  |..t.D%=.W:...~..|
00021a40  0d d6 88 0c dd 20 f2 6e  6f 70 61 6c 0d d6 92 33  |..... .nopal...3|
00021a50  e3 43 25 3d 30 b8 32 35  35 3a 72 25 28 43 25 29  |.C%=0.255:r%(C%)|
00021a60  3d 43 25 2f 32 35 35 2a  46 3a ed 3a 67 25 28 29  |=C%/255*F:.:g%()|
00021a70  3d 72 25 28 29 3a 62 25  28 29 3d 72 25 28 29 0d  |=r%():b%()=r%().|
00021a80  d6 9c 05 e1 0d d6 a6 11  dd 20 f2 63 6f 6c 28 41  |......... .col(A|
00021a90  25 2c 42 25 29 0d d6 b0  36 42 25 3d 42 25 3c 3c  |%,B%)...6B%=B%<<|
00021aa0  38 84 42 25 3c 3c 34 84  26 31 30 3a 70 61 6c 25  |8.B%<<4.&10:pal%|
00021ab0  21 28 41 25 2a 38 29 3d  42 25 3a 70 61 6c 25 21  |!(A%*8)=B%:pal%!|
00021ac0  28 41 25 2a 38 2b 34 29  3d 42 25 0d d6 ba 05 e1  |(A%*8+4)=B%.....|
00021ad0  0d d6 c4 0f dd 20 a4 62  69 74 73 28 41 25 29 0d  |..... .bits(A%).|
00021ae0  d6 ce 35 e7 41 25 3d 31  20 8c 3d 22 31 20 62 69  |..5.A%=1 .="1 bi|
00021af0  74 20 70 65 72 20 70 69  78 65 6c 22 20 8b 3d c3  |t per pixel" .=.|
00021b00  41 25 2b 22 20 62 69 74  73 20 70 65 72 20 70 69  |A%+" bits per pi|
00021b10  78 65 6c 22 0d d6 d8 0b  dd 20 a4 66 69 74 73 0d  |xel"..... .fits.|
00021b20  d6 e2 0a ea 5a 25 2c 73  24 0d d6 ec 18 e3 5a 25  |....Z%,s$.....Z%|
00021b30  3d 31 b8 38 30 3a 73 24  2b 3d bd 9a 23 63 25 3a  |=1.80:s$+=..#c%:|
00021b40  ed 0d d6 f6 07 3d 73 24  0d d7 00 0d dd 20 a4 75  |.....=s$..... .u|
00021b50  63 28 61 24 29 0d d7 0a  0d ea 5a 25 2c 7a 24 2c  |c(a$).....Z%,z$,|
00021b60  62 24 0d d7 14 0d e3 5a  25 3d 31 b8 a9 61 24 0d  |b$.....Z%=1..a$.|
00021b70  d7 1e 10 7a 24 3d c1 61  24 2c 5a 25 2c 31 29 0d  |...z$=.a$,Z%,1).|
00021b80  d7 28 21 e7 7a 24 3e 3d  22 61 22 e7 7a 24 3c 3d  |.(!.z$>="a".z$<=|
00021b90  22 7a 22 20 7a 24 3d bd  28 97 7a 24 2d 33 32 29  |"z" z$=.(.z$-32)|
00021ba0  0d d7 32 0c 62 24 2b 3d  7a 24 3a ed 0d d7 3c 07  |..2.b$+=z$:...<.|
00021bb0  3d 62 24 0d d7 46 0e dd  20 a4 64 69 6d 28 41 25  |=b$..F.. .dim(A%|
00021bc0  29 0d d7 50 08 ea 20 42  25 0d d7 5a 0c e7 66 6c  |)..P.. B%..Z..fl|
00021bd0  65 78 25 20 8c 0d d7 64  31 42 25 3d 6e 65 78 74  |ex% ...d1B%=next|
00021be0  6c 6f 63 61 74 69 6f 6e  25 3a 41 25 3d 41 25 2b  |location%:A%=A%+|
00021bf0  33 80 ac 33 3a 6e 65 78  74 6c 6f 63 61 74 69 6f  |3..3:nextlocatio|
00021c00  6e 25 2b 3d 41 25 0d d7  6e 2a c8 99 22 57 69 6d  |n%+=A%..n*.."Wim|
00021c10  70 5f 53 6c 6f 74 53 69  7a 65 22 2c 2d 31 2c 2d  |p_SlotSize",-1,-|
00021c20  31 20 b8 20 63 75 72 72  65 6e 74 73 6c 6f 74 25  |1 . currentslot%|
00021c30  0d d7 78 27 e7 63 75 72  72 65 6e 74 73 6c 6f 74  |..x'.currentslot|
00021c40  25 2b 26 38 30 30 30 3c  6e 65 78 74 6c 6f 63 61  |%+&8000<nextloca|
00021c50  74 69 6f 6e 25 20 8c 0d  d7 82 3c c8 99 20 22 57  |tion% ....<.. "W|
00021c60  69 6d 70 5f 53 6c 6f 74  53 69 7a 65 22 2c 6e 65  |imp_SlotSize",ne|
00021c70  78 74 6c 6f 63 61 74 69  6f 6e 25 2d 26 38 30 30  |xtlocation%-&800|
00021c80  30 2c 2d 31 20 b8 20 63  75 72 72 65 6e 74 73 6c  |0,-1 . currentsl|
00021c90  6f 74 25 0d d7 8c 55 e7  63 75 72 72 65 6e 74 73  |ot%...U.currents|
00021ca0  6c 6f 74 25 2b 26 38 30  30 30 3c 6e 65 78 74 6c  |lot%+&8000<nextl|
00021cb0  6f 63 61 74 69 6f 6e 25  20 85 20 34 32 2c 22 43  |ocation% . 42,"C|
00021cc0  61 6e 27 74 20 67 65 74  20 65 6e 6f 75 67 68 20  |an't get enough |
00021cd0  6d 65 6d 6f 72 79 20 74  6f 20 70 72 6f 63 65 73  |memory to proces|
00021ce0  73 20 69 6d 61 67 65 22  0d d7 96 05 cd 0d d7 a0  |s image"........|
00021cf0  05 cc 0d d7 aa 13 e7 77  6f 72 6b 73 70 61 63 65  |.......workspace|
00021d00  25 3c 30 20 8c 0d d7 b4  0b de 20 42 25 20 41 25  |%<0 ...... B% A%|
00021d10  0d d7 be 05 cc 0d d7 c8  57 42 25 3d 77 6f 72 6b  |........WB%=work|
00021d20  73 70 61 63 65 25 3a 77  6f 72 6b 73 70 61 63 65  |space%:workspace|
00021d30  25 2b 3d 41 25 2b 33 80  ac 33 3a e7 77 6f 72 6b  |%+=A%+3..3:.work|
00021d40  73 70 61 63 65 25 3e 77  6f 72 6b 6c 69 6d 69 74  |space%>worklimit|
00021d50  25 20 85 34 32 2c 22 4e  6f 74 20 65 6e 6f 75 67  |% .42,"Not enoug|
00021d60  68 20 77 6f 72 6b 73 70  61 63 65 22 0d d7 d2 05  |h workspace"....|
00021d70  cd 0d d7 dc 05 cd 0d d7  e6 07 3d 42 25 0d d7 fa  |..........=B%...|
00021d80  10 dd 20 a4 57 3d a4 57  31 28 63 25 29 0d d8 04  |.. .W=.W1(c%)...|
00021d90  32 dd 20 a4 57 31 28 63  25 29 3d 9a 23 63 25 20  |2. .W1(c%)=.#c% |
00021da0  84 20 9a 23 63 25 3c 3c  38 20 84 20 9a 23 63 25  |. .#c%<<8 . .#c%|
00021db0  3c 3c 31 36 20 84 20 9a  23 63 25 3c 3c 32 34 0d  |<<16 . .#c%<<24.|
00021dc0  d8 18 18 dd 20 a4 48 57  3d 9a 23 63 25 20 84 20  |.... .HW=.#c% . |
00021dd0  9a 23 63 25 3c 3c 38 0d  d8 2c 1a dd 20 a4 62 65  |.#c%<<8..,.. .be|
00021de0  48 57 3d 9a 23 63 25 3c  3c 38 20 84 20 9a 23 63  |HW=.#c%<<8 . .#c|
00021df0  25 0d d8 40 2f dd 20 a4  62 65 57 3d 9a 23 63 25  |%..@/. .beW=.#c%|
00021e00  3c 3c 32 34 20 84 20 9a  23 63 25 3c 3c 31 36 20  |<<24 . .#c%<<16 |
00021e10  84 20 9a 23 63 25 3c 3c  38 20 84 20 9a 23 63 25  |. .#c%<<8 . .#c%|
00021e20  0d d8 54 0f dd 20 a4 74  69 66 66 28 54 25 29 0d  |..T.. .tiff(T%).|
00021e30  d8 5e 0b c8 8e 20 54 25  20 ca 0d d8 68 0f c9 20  |.^... T% ...h.. |
00021e40  31 2c 37 3a 3d 9a 23 63  25 0d d8 72 2a c9 20 32  |1,7:=.#c%..r*. 2|
00021e50  3a ea 73 24 2c 74 24 3a  f5 73 24 2b 3d 74 24 3a  |:.s$,t$:.s$+=t$:|
00021e60  74 24 3d bd 9a 23 63 25  3a fd 74 24 3d bd 30 3a  |t$=..#c%:.t$=.0:|
00021e70  3d 73 24 0d d8 7c 34 c9  20 33 3a e7 62 69 67 65  |=s$..|4. 3:.bige|
00021e80  6e 64 69 61 6e 20 8c 3d  9a 23 63 25 3c 3c 38 20  |ndian .=.#c%<<8 |
00021e90  84 20 9a 23 63 25 20 8b  3d 9a 23 63 25 20 84 20  |. .#c% .=.#c% . |
00021ea0  9a 23 63 25 3c 3c 38 0d  d8 86 25 c9 20 34 2c 39  |.#c%<<8...%. 4,9|
00021eb0  3a e7 62 69 67 65 6e 64  69 61 6e 20 8c 3d a4 62  |:.bigendian .=.b|
00021ec0  65 57 20 8b 3d a4 57 31  28 63 25 29 0d d8 90 17  |eW .=.W1(c%)....|
00021ed0  c9 20 36 3a 3d 28 9a 23  63 25 3c 3c 32 34 29 3e  |. 6:=(.#c%<<24)>|
00021ee0  3e 32 34 0d d8 9a 1b c9  20 38 3a 3d 28 a4 74 69  |>24..... 8:=(.ti|
00021ef0  66 66 28 33 29 3c 3c 31  36 29 3e 3e 31 36 0d d8  |ff(3)<<16)>>16..|
00021f00  a4 05 cb 0d d8 ae 1e 85  20 34 32 2c 22 53 69 6c  |........ 42,"Sil|
00021f10  6c 79 20 54 49 46 46 20  74 61 67 3a 22 2b c3 54  |ly TIFF tag:"+.T|
00021f20  25 0d d8 b8 10 dd 20 f2  6e 65 78 74 73 74 72 69  |%..... .nextstri|
00021f30  70 0d d8 c2 18 72 6f 77  73 74 6f 67 6f 25 3d 73  |p....rowstogo%=s|
00021f40  74 72 69 70 72 6f 77 73  25 0d d8 cc 22 73 74 72  |triprows%..."str|
00021f50  69 70 70 74 72 2b 3d 31  3a cf 23 63 25 3d 73 74  |ipptr+=1:.#c%=st|
00021f60  25 28 73 74 72 69 70 70  74 72 29 0d d8 d6 14 e7  |%(stripptr).....|
00021f70  63 6f 6d 70 72 65 73 73  69 6f 6e 3d 35 20 8c 0d  |compression=5 ..|
00021f80  d8 e0 46 21 66 69 72 73  74 63 6f 64 65 3d 30 3a  |..F!firstcode=0:|
00021f90  21 6f 6c 64 63 6f 64 65  3d 30 3a 21 63 6f 64 65  |!oldcode=0:!code|
00021fa0  73 69 7a 65 3d 73 65 74  63 6f 64 65 73 25 2b 31  |size=setcodes%+1|
00021fb0  3a 21 73 74 61 63 6b 3d  73 74 6b 25 3a 21 73 70  |:!stack=stk%:!sp|
00021fc0  3d 73 74 6b 25 0d d8 ea  48 21 6d 61 78 63 6f 64  |=stk%...H!maxcod|
00021fd0  65 3d 63 6c 65 61 72 63  6f 64 65 25 2b 32 3a 21  |e=clearcode%+2:!|
00021fe0  6d 61 78 63 6f 64 65 73  69 7a 65 3d 32 2a 63 6c  |maxcodesize=2*cl|
00021ff0  65 61 72 63 6f 64 65 25  3a 21 63 75 72 62 69 74  |earcode%:!curbit|
00022000  3d 30 3a 21 6c 61 73 74  62 69 74 3d 30 0d d8 f4  |=0:!lastbit=0...|
00022010  05 cd 0d d8 fe 28 e7 63  6f 6d 70 72 65 73 73 69  |.....(.compressi|
00022020  6f 6e 3d 35 20 84 20 63  6f 6d 70 72 65 73 73 69  |on=5 . compressi|
00022030  6f 6e 3d 33 32 37 37 33  20 8c 0d d9 08 2e 21 69  |on=32773 .....!i|
00022040  6e 63 61 63 68 65 70 74  72 3d 64 61 74 61 63 61  |ncacheptr=dataca|
00022050  63 68 65 25 3a 21 6e 75  6d 6c 65 66 74 74 6f 67  |che%:!numlefttog|
00022060  6f 3d 63 61 63 68 65 25  0d d9 12 1f c8 99 31 32  |o=cache%......12|
00022070  2c 34 2c 63 25 2c 64 61  74 61 63 61 63 68 65 25  |,4,c%,datacache%|
00022080  2c 63 61 63 68 65 25 0d  d9 1c 05 cd 0d d9 26 05  |,cache%.......&.|
00022090  e1 0d d9 30 28 dd 20 f2  77 61 74 66 6f 72 64 28  |...0(. .watford(|
000220a0  77 74 73 78 25 2c f8 20  72 65 70 25 2c f8 20 77  |wtsx%,. rep%,. w|
000220b0  74 25 2c 58 25 2c 63 25  29 0d d9 3a 20 d6 72 6c  |t%,X%,c%)..: .rl|
000220c0  65 78 70 61 6e 64 25 2c  77 74 73 78 25 2c 72 65  |expand%,wtsx%,re|
000220d0  70 25 2c 77 74 25 2c 58  25 0d d9 44 18 f5 20 43  |p%,wt%,X%..D.. C|
000220e0  25 3d 9a 23 63 25 3a c8  8e 20 43 25 3e 3e 36 20  |%=.#c%:.. C%>>6 |
000220f0  ca 0d d9 4e 1b c9 20 30  3a 3f 58 25 3d 43 25 3a  |...N.. 0:?X%=C%:|
00022100  58 25 2b 3d 31 3a 77 74  25 3d 43 25 0d d9 58 36  |X%+=1:wt%=C%..X6|
00022110  c9 20 31 3a 77 74 25 2d  3d 31 3a 72 65 70 25 3d  |. 1:wt%-=1:rep%=|
00022120  43 25 80 36 33 3a d6 72  6c 65 78 70 61 6e 64 25  |C%.63:.rlexpand%|
00022130  2c 77 74 73 78 25 2c 72  65 70 25 2c 77 74 25 2c  |,wtsx%,rep%,wt%,|
00022140  58 25 0d d9 62 2f c9 20  32 3a 72 65 70 25 3d 43  |X%..b/. 2:rep%=C|
00022150  25 80 36 33 3a d6 72 6c  65 78 70 61 6e 64 25 2c  |%.63:.rlexpand%,|
00022160  77 74 73 78 25 2c 72 65  70 25 2c 77 74 25 2c 58  |wtsx%,rep%,wt%,X|
00022170  25 0d d9 6c 36 c9 20 33  3a 77 74 25 2b 3d 31 3a  |%..l6. 3:wt%+=1:|
00022180  72 65 70 25 3d 43 25 80  36 33 3a d6 72 6c 65 78  |rep%=C%.63:.rlex|
00022190  70 61 6e 64 25 2c 77 74  73 78 25 2c 72 65 70 25  |pand%,wtsx%,rep%|
000221a0  2c 77 74 25 2c 58 25 0d  d9 76 05 cb 0d d9 80 0d  |,wt%,X%..v......|
000221b0  fd 58 25 3d 77 74 73 78  25 0d d9 8a 05 e1 0d d9  |.X%=wtsx%.......|
000221c0  94 2a dd 20 f2 77 61 74  66 6f 72 64 63 61 63 68  |.*. .watfordcach|
000221d0  65 28 77 74 73 78 25 2c  f8 20 72 65 70 25 2c f8  |e(wtsx%,. rep%,.|
000221e0  20 77 74 25 2c 58 25 29  0d d9 9e 20 d6 72 6c 65  | wt%,X%)... .rle|
000221f0  78 70 61 6e 64 25 2c 77  74 73 78 25 2c 72 65 70  |xpand%,wtsx%,rep|
00022200  25 2c 77 74 25 2c 58 25  0d d9 a8 23 f5 20 43 25  |%,wt%,X%...#. C%|
00022210  3d ba 62 79 74 65 66 72  6f 6d 63 61 63 68 65 25  |=.bytefromcache%|
00022220  3a c8 8e 20 43 25 3e 3e  36 20 ca 0d d9 b2 1b c9  |:.. C%>>6 ......|
00022230  20 30 3a 3f 58 25 3d 43  25 3a 58 25 2b 3d 31 3a  | 0:?X%=C%:X%+=1:|
00022240  77 74 25 3d 43 25 0d d9  bc 36 c9 20 31 3a 77 74  |wt%=C%...6. 1:wt|
00022250  25 2d 3d 31 3a 72 65 70  25 3d 43 25 80 36 33 3a  |%-=1:rep%=C%.63:|
00022260  d6 72 6c 65 78 70 61 6e  64 25 2c 77 74 73 78 25  |.rlexpand%,wtsx%|
00022270  2c 72 65 70 25 2c 77 74  25 2c 58 25 0d d9 c6 2f  |,rep%,wt%,X%.../|
00022280  c9 20 32 3a 72 65 70 25  3d 43 25 80 36 33 3a d6  |. 2:rep%=C%.63:.|
00022290  72 6c 65 78 70 61 6e 64  25 2c 77 74 73 78 25 2c  |rlexpand%,wtsx%,|
000222a0  72 65 70 25 2c 77 74 25  2c 58 25 0d d9 d0 36 c9  |rep%,wt%,X%...6.|
000222b0  20 33 3a 77 74 25 2b 3d  31 3a 72 65 70 25 3d 43  | 3:wt%+=1:rep%=C|
000222c0  25 80 36 33 3a d6 72 6c  65 78 70 61 6e 64 25 2c  |%.63:.rlexpand%,|
000222d0  77 74 73 78 25 2c 72 65  70 25 2c 77 74 25 2c 58  |wtsx%,rep%,wt%,X|
000222e0  25 0d d9 da 05 cb 0d d9  e4 0d fd 58 25 3d 77 74  |%..........X%=wt|
000222f0  73 78 25 0d d9 ee 05 e1  0d d9 f8 18 dd 20 f2 72  |sx%.......... .r|
00022300  65 64 75 63 65 28 f8 20  41 25 2c f8 20 42 25 29  |educe(. A%,. B%)|
00022310  0d da 02 17 ea 20 43 25  2c 44 25 3a 43 25 3d 41  |..... C%,D%:C%=A|
00022320  25 3a 44 25 3d 42 25 0d  da 0c 15 f5 20 e7 43 25  |%:D%=B%..... .C%|
00022330  3c 44 25 20 c8 94 20 43  25 2c 44 25 0d da 16 0c  |<D% .. C%,D%....|
00022340  43 25 3d 43 25 83 44 25  0d da 20 09 fd 43 25 3d  |C%=C%.D%.. ..C%=|
00022350  30 0d da 2a 15 41 25 3d  41 25 81 44 25 3a 42 25  |0..*.A%=A%.D%:B%|
00022360  3d 42 25 81 44 25 0d da  34 05 e1 0d da 3e 19 dd  |=B%.D%..4....>..|
00022370  20 f2 72 65 61 64 70 69  78 65 6c 72 6f 77 28 7a  | .readpixelrow(z|
00022380  25 28 29 29 0d da 48 0c  e7 72 6f 77 73 25 20 8c  |%())..H..rows% .|
00022390  0d da 52 16 72 6f 77 73  25 2d 3d 31 3a e7 73 78  |..R.rows%-=1:.sx|
000223a0  25 3d 78 25 20 8c 0d da  5c 15 57 25 3d a0 28 72  |%=x% ...\.W%=.(r|
000223b0  24 2b 22 28 7a 25 28 29  29 22 29 0d da 66 05 cc  |$+"(z%())")..f..|
000223c0  0d da 70 40 57 25 3d a0  28 72 24 2b 22 28 78 70  |..p@W%=.(r$+"(xp|
000223d0  25 28 29 29 22 29 3a d6  78 73 61 6d 70 6c 65 25  |%())"):.xsample%|
000223e0  2c 78 6d 75 6c 25 2c 78  64 69 76 25 2c 7a 25 28  |,xmul%,xdiv%,z%(|
000223f0  31 2c 30 29 2c 78 70 25  28 31 2c 30 29 2c 78 25  |1,0),xp%(1,0),x%|
00022400  0d da 7a 05 cd 0d da 84  05 cc 0d da 8e 0a 7a 25  |..z...........z%|
00022410  28 29 3d 30 0d da 98 05  cd 0d da a2 05 e1 0d da  |()=0............|
00022420  ac 1a dd 20 f2 73 68 61  72 70 70 69 78 65 6c 72  |... .sharppixelr|
00022430  6f 77 28 7a 25 28 29 29  0d da b6 0c e7 72 6f 77  |ow(z%()).....row|
00022440  73 25 20 8c 0d da c0 16  72 6f 77 73 25 2d 3d 31  |s% .....rows%-=1|
00022450  3a e7 73 78 25 3d 78 25  20 8c 0d da ca 41 e7 73  |:.sx%=x% ....A.s|
00022460  68 61 72 70 65 6e 25 20  f2 73 68 61 72 70 28 7a  |harpen% .sharp(z|
00022470  25 28 29 29 20 8b 57 25  3d a0 28 72 24 2b 22 28  |%()) .W%=.(r$+"(|
00022480  7a 25 28 29 29 22 29 3a  e7 65 71 75 61 6c 25 20  |z%())"):.equal% |
00022490  f2 66 69 74 32 28 7a 25  28 29 29 0d da d4 05 cc  |.fit2(z%()).....|
000224a0  0d da de 44 e7 73 68 61  72 70 65 6e 25 20 f2 73  |...D.sharpen% .s|
000224b0  68 61 72 70 28 78 70 25  28 29 29 20 8b 57 25 3d  |harp(xp%()) .W%=|
000224c0  a0 28 72 24 2b 22 28 78  70 25 28 29 29 22 29 3a  |.(r$+"(xp%())"):|
000224d0  e7 65 71 75 61 6c 25 20  f2 66 69 74 32 28 78 70  |.equal% .fit2(xp|
000224e0  25 28 29 29 0d da e8 2d  d6 78 73 61 6d 70 6c 65  |%())...-.xsample|
000224f0  25 2c 78 6d 75 6c 25 2c  78 64 69 76 25 2c 7a 25  |%,xmul%,xdiv%,z%|
00022500  28 31 2c 30 29 2c 78 70  25 28 31 2c 30 29 2c 78  |(1,0),xp%(1,0),x|
00022510  25 0d da f2 05 cd 0d da  fc 05 cc 0d db 06 0a 7a  |%..............z|
00022520  25 28 29 3d 30 0d db 10  05 cd 0d db 1a 05 e1 0d  |%()=0...........|
00022530  db 24 12 dd 20 f2 73 68  61 72 70 28 7a 25 28 29  |.$.. .sharp(z%()|
00022540  29 0d db 2e 3d 79 72 65  61 64 25 2d 3d 31 3a e7  |)...=yread%-=1:.|
00022550  79 72 65 61 64 25 20 57  25 3d a0 28 72 24 2b 22  |yread% W%=.(r$+"|
00022560  28 72 6d 25 28 29 29 22  29 3a e7 65 71 75 61 6c  |(rm%())"):.equal|
00022570  25 20 f2 66 69 74 32 28  72 6d 25 28 29 29 0d db  |% .fit2(rm%())..|
00022580  38 3d e3 42 25 3d 30 b8  63 6f 6c 3a 72 6d 25 28  |8=.B%=0.col:rm%(|
00022590  30 2c 42 25 29 3d 72 6d  25 28 31 2c 42 25 29 3a  |0,B%)=rm%(1,B%):|
000225a0  72 6d 25 28 73 78 25 2b  31 2c 42 25 29 3d 72 6d  |rm%(sx%+1,B%)=rm|
000225b0  25 28 73 78 25 2c 42 25  29 3a ed 0d db 42 3b d6  |%(sx%,B%):...B;.|
000225c0  20 73 68 61 72 70 25 2c  7a 25 28 31 2c 30 29 2c  | sharp%,z%(1,0),|
000225d0  72 6d 25 28 31 2c 30 29  2c 72 6d 31 25 28 31 2c  |rm%(1,0),rm1%(1,|
000225e0  30 29 2c 72 6d 32 25 28  31 2c 30 29 2c 74 6f 74  |0),rm2%(1,0),tot|
000225f0  76 61 6c 73 32 25 0d db  4c 21 c8 94 20 72 6d 32  |vals2%..L!.. rm2|
00022600  25 28 29 2c 72 6d 31 25  28 29 3a 72 6d 31 25 28  |%(),rm1%():rm1%(|
00022610  29 3d 72 6d 25 28 29 0d  db 56 05 e1 0d db 60 1b  |)=rm%()..V....`.|
00022620  dd 20 f2 73 63 61 6c 65  64 70 69 78 65 6c 72 6f  |. .scaledpixelro|
00022630  77 28 7a 25 28 29 29 0d  db 6a 0d e7 73 79 25 3d  |w(z%())..j..sy%=|
00022640  79 25 20 8c 0d db 74 17  f2 72 65 61 64 70 69 78  |y% ...t..readpix|
00022650  65 6c 72 6f 77 28 7a 25  28 29 29 0d db 7e 05 cc  |elrow(z%())..~..|
00022660  0d db 88 39 79 73 61 6d  70 25 2d 3d 31 3a e7 79  |...9ysamp%-=1:.y|
00022670  73 61 6d 70 25 3d 30 20  f2 72 65 61 64 70 69 78  |samp%=0 .readpix|
00022680  65 6c 72 6f 77 28 78 6c  25 28 29 29 3a 79 73 61  |elrow(xl%()):ysa|
00022690  6d 70 25 3d 79 6d 75 6c  25 0d db 92 0e e7 79 64  |mp%=ymul%.....yd|
000226a0  69 76 25 3d 31 20 8c 0d  db 9c 0e 7a 25 28 29 3d  |iv%=1 .....z%()=|
000226b0  78 6c 25 28 29 0d db a6  05 cc 0d db b0 14 e7 79  |xl%()..........y|
000226c0  73 61 6d 70 25 3e 3d 79  64 69 76 25 20 8c 0d db  |samp%>=ydiv% ...|
000226d0  ba 22 79 73 61 6d 70 25  2d 3d 79 64 69 76 25 3a  |."ysamp%-=ydiv%:|
000226e0  7a 25 28 29 3d 78 6c 25  28 29 2a 79 64 69 76 25  |z%()=xl%()*ydiv%|
000226f0  0d db c4 05 cc 0d db ce  32 ea 59 25 3a 7a 25 28  |........2.Y%:z%(|
00022700  29 3d 78 6c 25 28 29 2a  79 73 61 6d 70 25 3a 59  |)=xl%()*ysamp%:Y|
00022710  25 3d 79 64 69 76 25 2d  79 73 61 6d 70 25 3a 79  |%=ydiv%-ysamp%:y|
00022720  73 61 6d 70 25 3d 30 0d  db d8 05 f5 0d db e2 2f  |samp%=0......../|
00022730  e7 79 73 61 6d 70 25 3d  30 20 f2 72 65 61 64 70  |.ysamp%=0 .readp|
00022740  69 78 65 6c 72 6f 77 28  78 6c 25 28 29 29 3a 79  |ixelrow(xl%()):y|
00022750  73 61 6d 70 25 3d 79 6d  75 6c 25 0d db ec 10 e7  |samp%=ymul%.....|
00022760  79 73 61 6d 70 25 3e 59  25 20 8c 0d db f6 34 79  |ysamp%>Y% ....4y|
00022770  73 61 6d 70 25 2d 3d 59  25 3a 78 6c 32 25 28 29  |samp%-=Y%:xl2%()|
00022780  3d 78 6c 25 28 29 2a 59  25 3a 7a 25 28 29 3d 7a  |=xl%()*Y%:z%()=z|
00022790  25 28 29 2b 78 6c 32 25  28 29 3a 59 25 3d 30 0d  |%()+xl2%():Y%=0.|
000227a0  dc 00 05 cc 0d dc 0a 3c  59 25 2d 3d 79 73 61 6d  |.......<Y%-=ysam|
000227b0  70 25 3a 78 6c 32 25 28  29 3d 78 6c 25 28 29 2a  |p%:xl2%()=xl%()*|
000227c0  79 73 61 6d 70 25 3a 7a  25 28 29 3d 7a 25 28 29  |ysamp%:z%()=z%()|
000227d0  2b 78 6c 32 25 28 29 3a  79 73 61 6d 70 25 3d 30  |+xl2%():ysamp%=0|
000227e0  0d dc 14 05 cd 0d dc 1e  0a fd 20 59 25 3d 30 0d  |.......... Y%=0.|
000227f0  dc 28 05 cd 0d dc 32 0d  79 73 61 6d 70 25 2b 3d  |.(....2.ysamp%+=|
00022800  31 0d dc 3c 05 cd 0d dc  46 05 cd 0d dc 50 05 e1  |1..<....F....P..|
00022810  0d dc 5a 10 dd 20 f2 66  69 74 28 7a 25 28 29 29  |..Z.. .fit(z%())|
00022820  0d dc 64 24 d6 68 69 73  74 65 71 75 61 6c 25 2c  |..d$.histequal%,|
00022830  7a 25 28 31 2c 30 29 2c  6e 65 77 25 28 30 2c 30  |z%(1,0),new%(0,0|
00022840  29 2c 78 25 0d dc 6e 05  e1 0d dc 78 11 dd 20 f2  |),x%..n....x.. .|
00022850  66 69 74 32 28 7a 25 28  29 29 0d dc 82 25 d6 68  |fit2(z%())...%.h|
00022860  69 73 74 65 71 75 61 6c  25 2c 7a 25 28 31 2c 30  |istequal%,z%(1,0|
00022870  29 2c 6e 65 77 25 28 30  2c 30 29 2c 73 78 25 0d  |),new%(0,0),sx%.|
00022880  dc 8c 05 e1 0d dc 96 1d  dd 20 f2 61 64 6a 75 73  |......... .adjus|
00022890  74 70 61 6c 65 74 74 65  28 6d 75 6c 2c 73 75 62  |tpalette(mul,sub|
000228a0  29 0d dc a0 14 e7 6d 75  6c 3d 31 20 80 20 73 75  |).....mul=1 . su|
000228b0  62 3d 30 20 e1 0d dc aa  0d e3 43 25 3d 30 b8 32  |b=0 ......C%=0.2|
000228c0  35 35 0d dc b4 51 72 25  28 43 25 29 3d 28 72 25  |55...Qr%(C%)=(r%|
000228d0  28 43 25 29 2d 73 75 62  29 2a 6d 75 6c 2b 31 3a  |(C%)-sub)*mul+1:|
000228e0  67 25 28 43 25 29 3d 28  67 25 28 43 25 29 2d 73  |g%(C%)=(g%(C%)-s|
000228f0  75 62 29 2a 6d 75 6c 2b  31 3a 62 25 28 43 25 29  |ub)*mul+1:b%(C%)|
00022900  3d 28 62 25 28 43 25 29  2d 73 75 62 29 2a 6d 75  |=(b%(C%)-sub)*mu|
00022910  6c 2b 31 0d dc be 05 ed  0d dc c8 0a e7 68 61 6d  |l+1..........ham|
00022920  20 8c 0d dc d2 32 e3 43  25 3d 30 b8 31 35 2a 34  | ....2.C%=0.15*4|
00022930  88 34 3a 6c 74 61 62 6c  65 21 43 25 3d 28 6c 74  |.4:ltable!C%=(lt|
00022940  61 62 6c 65 21 43 25 2d  73 75 62 29 2a 6d 75 6c  |able!C%-sub)*mul|
00022950  2b 31 3a ed 0d dc dc 05  cd 0d dc e6 10 e7 69 6e  |+1:...........in|
00022960  70 75 74 3e 34 30 30 20  8c 0d dc f0 0d e3 43 25  |put>400 ......C%|
00022970  3d 30 b8 32 35 35 0d dc  fa 43 72 70 61 6c 25 28  |=0.255...Crpal%(|
00022980  43 25 29 3d 28 72 70 61  6c 25 28 43 25 29 2d 73  |C%)=(rpal%(C%)-s|
00022990  75 62 29 2a 6d 75 6c 2b  31 3a 67 70 61 6c 25 28  |ub)*mul+1:gpal%(|
000229a0  43 25 29 3d 28 67 70 61  6c 25 28 43 25 29 2d 73  |C%)=(gpal%(C%)-s|
000229b0  75 62 29 2a 6d 75 6c 2b  31 0d dd 04 45 62 70 61  |ub)*mul+1...Ebpa|
000229c0  6c 25 28 43 25 29 3d 28  62 70 61 6c 25 28 43 25  |l%(C%)=(bpal%(C%|
000229d0  29 2d 73 75 62 29 2a 6d  75 6c 2b 31 3a 74 61 62  |)-sub)*mul+1:tab|
000229e0  6c 65 25 28 43 25 29 3d  28 74 61 62 6c 65 25 28  |le%(C%)=(table%(|
000229f0  43 25 29 2d 73 75 62 29  2a 6d 75 6c 2b 31 0d dd  |C%)-sub)*mul+1..|
00022a00  0e 05 ed 0d dd 18 05 cd  0d dd 22 05 e1 0d dd 2c  |.........."....,|
00022a10  14 dd 20 f2 63 61 63 68  65 73 69 7a 65 28 41 25  |.. .cachesize(A%|
00022a20  29 0d dd 36 29 c8 99 26  32 30 30 32 33 2c 22 43  |)..6)..&20023,"C|
00022a30  68 61 6e 67 65 46 53 49  24 43 61 63 68 65 22 2c  |hangeFSI$Cache",|
00022a40  41 25 2c 2d 31 20 b8 2c  2c 5a 0d dd 40 0b e7 5a  |A%,-1 .,,Z..@..Z|
00022a50  3c 3e 30 20 8c 0d dd 4a  39 c8 99 33 35 2c 22 43  |<>0 ...J9..35,"C|
00022a60  68 61 6e 67 65 46 53 49  24 43 61 63 68 65 22 2c  |hangeFSI$Cache",|
00022a70  41 25 2c 32 30 20 b8 2c  2c 5a 3a 41 25 3f 5a 3d  |A%,20 .,,Z:A%?Z=|
00022a80  31 33 3a 63 61 63 68 65  25 3d bb 24 41 25 0d dd  |13:cache%=.$A%..|
00022a90  54 2b e7 a7 24 41 25 2c  22 4b 22 29 84 a7 24 41  |T+..$A%,"K")..$A|
00022aa0  25 2c 22 6b 22 29 20 63  61 63 68 65 25 3d 63 61  |%,"k") cache%=ca|
00022ab0  63 68 65 25 2a 31 30 32  34 0d dd 5e 05 cc 0d dd  |che%*1024..^....|
00022ac0  68 13 63 61 63 68 65 25  3d 31 32 38 2a 31 30 32  |h.cache%=128*102|
00022ad0  34 0d dd 72 05 cd 0d dd  7c 05 e1 0d dd 86 0d dd  |4..r....|.......|
00022ae0  20 f2 72 65 66 69 6c 6c  0d dd 90 1c e7 73 74 72  | .refill.....str|
00022af0  69 70 72 6f 77 73 25 3e  30 20 f2 6e 65 78 74 73  |iprows%>0 .nexts|
00022b00  74 72 69 70 0d dd 9a 45  c8 99 31 32 2c 34 2c 63  |trip...E..12,4,c|
00022b10  25 2c 64 61 74 61 63 61  63 68 65 25 2c 63 61 63  |%,datacache%,cac|
00022b20  68 65 25 3a 72 6f 77 73  74 6f 67 6f 25 3d 63 61  |he%:rowstogo%=ca|
00022b30  63 68 65 72 6f 77 73 25  3a 62 75 66 66 25 3d 64  |cherows%:buff%=d|
00022b40  61 74 61 63 61 63 68 65  25 0d dd a4 43 e7 69 6e  |atacache%...C.in|
00022b50  70 75 74 3d 32 34 20 e7  72 62 6f 25 3e 3d 30 20  |put=24 .rbo%>=0 |
00022b60  72 62 25 3d 62 75 66 66  25 2b 72 62 6f 25 3a 67  |rb%=buff%+rbo%:g|
00022b70  62 25 3d 62 75 66 66 25  2b 67 62 6f 25 3a 62 62  |b%=buff%+gbo%:bb|
00022b80  25 3d 62 75 66 66 25 2b  62 62 6f 25 0d dd ae 05  |%=buff%+bbo%....|
00022b90  e1 0d dd b8 10 dd 20 f2  72 65 66 69 6c 6c 70 63  |...... .refillpc|
00022ba0  64 0d dd c2 15 e7 70 63  64 62 6c 6b 25 21 34 3e  |d.....pcdblk%!4>|
00022bb0  3d 73 79 25 20 e1 0d dd  cc 23 e7 70 63 64 62 6c  |=sy% ....#.pcdbl|
00022bc0  6b 25 21 31 32 3e 3d 73  79 25 20 70 63 64 62 6c  |k%!12>=sy% pcdbl|
00022bd0  6b 25 21 31 32 3d 73 79  25 0d dd e0 56 c8 99 22  |k%!12=sy%...V.."|
00022be0  50 68 6f 74 6f 43 44 5f  47 65 74 42 6c 6f 63 6b  |PhotoCD_GetBlock|
00022bf0  22 2c 70 63 64 68 25 2c  2c 70 63 64 62 6c 6b 25  |",pcdh%,,pcdblk%|
00022c00  2c 64 61 74 61 63 61 63  68 65 25 2c 70 63 64 69  |,datacache%,pcdi|
00022c10  6e 64 65 78 25 2c 2c 2c  70 63 64 63 61 63 68 65  |ndex%,,,pcdcache|
00022c20  25 2c 70 63 64 63 61 63  68 65 73 69 7a 65 25 0d  |%,pcdcachesize%.|
00022c30  dd ea 56 72 6f 77 73 74  6f 67 6f 25 3d 63 61 63  |..Vrowstogo%=cac|
00022c40  68 65 72 6f 77 73 25 3a  62 75 66 66 25 3d 64 61  |herows%:buff%=da|
00022c50  74 61 63 61 63 68 65 25  3a 70 63 64 62 6c 6b 25  |tacache%:pcdblk%|
00022c60  21 34 2b 3d 63 61 63 68  65 72 6f 77 73 25 3a 70  |!4+=cacherows%:p|
00022c70  63 64 62 6c 6b 25 21 31  32 2b 3d 63 61 63 68 65  |cdblk%!12+=cache|
00022c80  72 6f 77 73 25 0d dd f4  30 72 62 25 3d 62 75 66  |rows%...0rb%=buf|
00022c90  66 25 2b 72 62 6f 25 3a  67 62 25 3d 62 75 66 66  |f%+rbo%:gb%=buff|
00022ca0  25 2b 67 62 6f 25 3a 62  62 25 3d 62 75 66 66 25  |%+gbo%:bb%=buff%|
00022cb0  2b 62 62 6f 25 0d dd fe  05 e1 0d de 12 0e dd 20  |+bbo%.......... |
00022cc0  a4 38 28 7a 25 28 29 29  0d de 1c 3d d6 6d 61 70  |.8(z%())...=.map|
00022cd0  70 69 78 25 2c 7a 25 28  31 2c 30 29 2c 72 25 28  |pix%,z%(1,0),r%(|
00022ce0  30 29 2c 67 25 28 30 29  2c 62 25 28 30 29 2c 62  |0),g%(0),b%(0),b|
00022cf0  75 66 66 25 3a 62 75 66  66 25 2b 3d 72 6f 77 62  |uff%:buff%+=rowb|
00022d00  79 74 65 73 25 0d de 26  25 72 6f 77 73 74 6f 67  |ytes%..&%rowstog|
00022d10  6f 25 2d 3d 31 3a e7 72  6f 77 73 74 6f 67 6f 25  |o%-=1:.rowstogo%|
00022d20  3d 30 20 f2 72 65 66 69  6c 6c 0d de 30 06 3d b9  |=0 .refill..0.=.|
00022d30  0d de 44 0f dd 20 a4 31  36 28 7a 25 28 29 29 0d  |..D.. .16(z%()).|
00022d40  de 4e 44 d6 6d 61 70 70  69 78 25 2c 7a 25 28 31  |.ND.mappix%,z%(1|
00022d50  2c 30 29 2c 72 70 61 6c  25 28 30 29 2c 67 70 61  |,0),rpal%(0),gpa|
00022d60  6c 25 28 30 29 2c 72 25  28 30 29 2c 67 25 28 30  |l%(0),r%(0),g%(0|
00022d70  29 2c 62 25 28 30 29 2c  62 75 66 66 25 2c 62 75  |),b%(0),buff%,bu|
00022d80  66 66 25 0d de 58 36 62  75 66 66 25 2b 3d 72 6f  |ff%..X6buff%+=ro|
00022d90  77 62 79 74 65 73 25 3a  72 6f 77 73 74 6f 67 6f  |wbytes%:rowstogo|
00022da0  25 2d 3d 31 3a e7 72 6f  77 73 74 6f 67 6f 25 3d  |%-=1:.rowstogo%=|
00022db0  30 20 f2 72 65 66 69 6c  6c 0d de 62 06 3d b9 0d  |0 .refill..b.=..|
00022dc0  de 76 0f dd 20 a4 32 34  28 7a 25 28 29 29 0d de  |.v.. .24(z%())..|
00022dd0  80 32 d6 6d 61 70 70 69  78 25 2c 7a 25 28 31 2c  |.2.mappix%,z%(1,|
00022de0  30 29 2c 72 25 28 30 29  2c 67 25 28 30 29 2c 62  |0),r%(0),g%(0),b|
00022df0  25 28 30 29 2c 72 62 25  2c 67 62 25 2c 62 62 25  |%(0),rb%,gb%,bb%|
00022e00  0d de 8a 30 72 62 25 2b  3d 72 6f 77 62 79 74 65  |...0rb%+=rowbyte|
00022e10  73 25 3a 67 62 25 2b 3d  72 6f 77 62 79 74 65 73  |s%:gb%+=rowbytes|
00022e20  25 3a 62 62 25 2b 3d 72  6f 77 62 79 74 65 73 25  |%:bb%+=rowbytes%|
00022e30  0d de 94 25 72 6f 77 73  74 6f 67 6f 25 2d 3d 31  |...%rowstogo%-=1|
00022e40  3a e7 72 6f 77 73 74 6f  67 6f 25 3d 30 20 f2 72  |:.rowstogo%=0 .r|
00022e50  65 66 69 6c 6c 0d de 9e  06 3d b9 0d de b2 10 dd  |efill....=......|
00022e60  20 a4 33 30 30 28 7a 25  28 29 29 0d de bc 5b c8  | .300(z%())...[.|
00022e70  99 31 32 2c 34 2c 63 63  25 2c 70 62 75 66 66 25  |.12,4,cc%,pbuff%|
00022e80  2c 73 78 25 3a d6 6d 61  70 70 69 78 25 2c 7a 25  |,sx%:.mappix%,z%|
00022e90  28 31 2c 30 29 2c 72 70  61 6c 25 28 30 29 2c 67  |(1,0),rpal%(0),g|
00022ea0  70 61 6c 25 28 30 29 2c  72 25 28 30 29 2c 67 25  |pal%(0),r%(0),g%|
00022eb0  28 30 29 2c 62 25 28 30  29 2c 70 62 75 66 66 25  |(0),b%(0),pbuff%|
00022ec0  2c 62 75 66 66 25 0d de  c6 36 62 75 66 66 25 2b  |,buff%...6buff%+|
00022ed0  3d 72 6f 77 62 79 74 65  73 25 3a 72 6f 77 73 74  |=rowbytes%:rowst|
00022ee0  6f 67 6f 25 2d 3d 31 3a  e7 72 6f 77 73 74 6f 67  |ogo%-=1:.rowstog|
00022ef0  6f 25 3d 30 20 f2 72 65  66 69 6c 6c 0d de d0 06  |o%=0 .refill....|
00022f00  3d b9 0d de e4 10 dd 20  a4 34 30 30 28 7a 25 28  |=...... .400(z%(|
00022f10  29 29 0d de ee 29 d6 72  65 61 64 6c 69 6e 65 25  |))...).readline%|
00022f20  2c 70 6c 62 79 74 65 73  25 2c 72 65 70 25 2c 70  |,plbytes%,rep%,p|
00022f30  69 78 25 2c 70 6c 62 75  66 66 25 0d de f8 32 d6  |ix%,plbuff%...2.|
00022f40  6d 61 70 70 69 78 25 2c  7a 25 28 31 2c 30 29 2c  |mappix%,z%(1,0),|
00022f50  72 25 28 30 29 2c 67 25  28 30 29 2c 62 25 28 30  |r%(0),g%(0),b%(0|
00022f60  29 2c 72 62 25 2c 67 62  25 2c 62 62 25 0d df 02  |),rb%,gb%,bb%...|
00022f70  06 3d b9 0d df 16 10 dd  20 a4 35 30 30 28 7a 25  |.=...... .500(z%|
00022f80  28 29 29 0d df 20 29 d6  20 4c 5a 57 64 65 63 6f  |()).. ). LZWdeco|
00022f90  64 65 25 2c 74 61 62 6c  65 25 28 30 29 2c 63 25  |de%,table%(0),c%|
00022fa0  2c 70 6c 62 75 66 66 25  2c 73 78 25 0d df 2a 2e  |,plbuff%,sx%..*.|
00022fb0  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
00022fc0  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
00022fd0  30 29 2c 70 6c 62 75 66  66 25 0d df 34 06 3d b9  |0),plbuff%..4.=.|
00022fe0  0d df 48 10 dd 20 a4 38  30 30 28 7a 25 28 29 29  |..H.. .800(z%())|
00022ff0  0d df 52 29 f2 77 61 74  66 6f 72 64 63 61 63 68  |..R).watfordcach|
00023000  65 28 77 74 73 78 25 2c  72 65 70 25 2c 77 74 25  |e(wtsx%,rep%,wt%|
00023010  2c 70 6c 62 75 66 66 25  29 0d df 5c 2e d6 6d 61  |,plbuff%)..\..ma|
00023020  70 70 69 78 25 2c 7a 25  28 31 2c 30 29 2c 72 25  |ppix%,z%(1,0),r%|
00023030  28 30 29 2c 67 25 28 30  29 2c 62 25 28 30 29 2c  |(0),g%(0),b%(0),|
00023040  70 6c 62 75 66 66 25 0d  df 66 06 3d b9 0d df 7a  |plbuff%..f.=...z|
00023050  10 dd 20 a4 38 30 31 28  7a 25 28 29 29 0d df 84  |.. .801(z%())...|
00023060  28 f2 77 61 74 66 6f 72  64 28 77 74 73 78 31 25  |(.watford(wtsx1%|
00023070  2c 72 65 70 31 25 2c 77  74 31 25 2c 62 75 66 66  |,rep1%,wt1%,buff|
00023080  25 2c 63 25 29 0d df 8e  2a f2 77 61 74 66 6f 72  |%,c%)...*.watfor|
00023090  64 28 77 74 73 78 32 25  2c 72 65 70 32 25 2c 77  |d(wtsx2%,rep2%,w|
000230a0  74 32 25 2c 77 74 73 78  31 25 2c 63 63 25 29 0d  |t2%,wtsx1%,cc%).|
000230b0  df 98 2b f2 77 61 74 66  6f 72 64 28 77 74 73 78  |..+.watford(wtsx|
000230c0  33 25 2c 72 65 70 33 25  2c 77 74 33 25 2c 77 74  |3%,rep3%,wt3%,wt|
000230d0  73 78 32 25 2c 63 63 63  25 29 0d df a2 32 d6 6d  |sx2%,ccc%)...2.m|
000230e0  61 70 70 69 78 25 2c 7a  25 28 31 2c 30 29 2c 72  |appix%,z%(1,0),r|
000230f0  25 28 30 29 2c 67 25 28  30 29 2c 62 25 28 30 29  |%(0),g%(0),b%(0)|
00023100  2c 72 62 25 2c 67 62 25  2c 62 62 25 0d df ac 06  |,rb%,gb%,bb%....|
00023110  3d b9 0d df c0 10 dd 20  a4 39 30 31 28 7a 25 28  |=...... .901(z%(|
00023120  29 29 0d df ca 3c c8 99  31 32 2c 34 2c 63 25 2c  |))...<..12,4,c%,|
00023130  72 62 25 2c 73 78 25 3a  c8 99 31 32 2c 34 2c 63  |rb%,sx%:..12,4,c|
00023140  63 25 2c 67 62 25 2c 73  78 25 3a c8 99 31 32 2c  |c%,gb%,sx%:..12,|
00023150  34 2c 63 63 63 25 2c 62  62 25 2c 73 78 25 0d df  |4,ccc%,bb%,sx%..|
00023160  d4 32 d6 6d 61 70 70 69  78 25 2c 7a 25 28 31 2c  |.2.mappix%,z%(1,|
00023170  30 29 2c 72 25 28 30 29  2c 67 25 28 30 29 2c 62  |0),r%(0),g%(0),b|
00023180  25 28 30 29 2c 72 62 25  2c 67 62 25 2c 62 62 25  |%(0),rb%,gb%,bb%|
00023190  0d df de 06 3d b9 0d df  f2 10 dd 20 a4 39 30 32  |....=...... .902|
000231a0  28 7a 25 28 29 29 0d df  fc 41 d6 75 6e 70 61 63  |(z%())...A.unpac|
000231b0  6b 25 2c 62 75 66 66 25  3a d6 6d 61 70 70 69 78  |k%,buff%:.mappix|
000231c0  25 2c 7a 25 28 31 2c 30  29 2c 72 25 28 30 29 2c  |%,z%(1,0),r%(0),|
000231d0  67 25 28 30 29 2c 62 25  28 30 29 2c 72 62 25 2c  |g%(0),b%(0),rb%,|
000231e0  67 62 25 2c 62 62 25 0d  e0 06 36 62 75 66 66 25  |gb%,bb%...6buff%|
000231f0  2b 3d 72 6f 77 62 79 74  65 73 25 3a 72 6f 77 73  |+=rowbytes%:rows|
00023200  74 6f 67 6f 25 2d 3d 31  3a e7 72 6f 77 73 74 6f  |togo%-=1:.rowsto|
00023210  67 6f 25 3d 30 20 f2 72  65 66 69 6c 6c 0d e0 10  |go%=0 .refill...|
00023220  06 3d b9 0d e0 24 11 dd  20 a4 31 30 30 30 28 7a  |.=...$.. .1000(z|
00023230  25 28 29 29 0d e0 2e 3f  58 25 3d 62 75 66 66 25  |%())...?X%=buff%|
00023240  3a e7 72 65 70 25 3e 30  20 43 25 3d 3f 70 61 25  |:.rep%>0 C%=?pa%|
00023250  3a d6 72 6c 65 78 70 61  6e 64 25 2c 70 61 73 78  |:.rlexpand%,pasx|
00023260  25 2c 72 65 70 25 2c 43  25 2c 58 25 3a 70 61 25  |%,rep%,C%,X%:pa%|
00023270  2b 3d 31 0d e0 38 38 e7  72 65 70 32 25 3e 30 20  |+=1..88.rep2%>0 |
00023280  43 25 3d 3f 70 61 25 3a  d6 72 6c 65 78 70 61 6e  |C%=?pa%:.rlexpan|
00023290  64 25 2c 70 61 73 78 25  2c 72 65 70 32 25 2c 43  |d%,pasx%,rep2%,C|
000232a0  25 2c 58 25 3a 70 61 25  2b 3d 31 0d e0 42 15 f5  |%,X%:pa%+=1..B..|
000232b0  20 43 25 3d 9a 23 63 25  3a e7 43 25 3d 30 20 8c  | C%=.#c%:.C%=0 .|
000232c0  0d e0 4c 40 72 65 70 25  3d 9a 23 63 25 3a 43 25  |..L@rep%=.#c%:C%|
000232d0  3d 3f 70 61 25 3a d6 72  6c 65 78 70 61 6e 64 25  |=?pa%:.rlexpand%|
000232e0  2c 70 61 73 78 25 2c 72  65 70 25 2c 43 25 2c 58  |,pasx%,rep%,C%,X|
000232f0  25 3a e7 72 65 70 25 3d  30 20 70 61 25 2b 3d 31  |%:.rep%=0 pa%+=1|
00023300  0d e0 56 05 cc 0d e0 60  53 72 65 70 32 25 3d 43  |..V....`Srep2%=C|
00023310  25 80 31 35 3a 72 65 70  25 3d 43 25 3e 3e 34 3a  |%.15:rep%=C%>>4:|
00023320  e7 72 65 70 25 20 43 25  3d 3f 70 61 25 3a d6 72  |.rep% C%=?pa%:.r|
00023330  6c 65 78 70 61 6e 64 25  2c 70 61 73 78 25 2c 72  |lexpand%,pasx%,r|
00023340  65 70 25 2c 43 25 2c 58  25 3a e7 72 65 70 25 3d  |ep%,C%,X%:.rep%=|
00023350  30 20 70 61 25 2b 3d 31  0d e0 6a 49 e7 58 25 3c  |0 pa%+=1..jI.X%<|
00023360  70 61 73 78 25 20 e7 72  65 70 32 25 20 43 25 3d  |pasx% .rep2% C%=|
00023370  3f 70 61 25 3a d6 72 6c  65 78 70 61 6e 64 25 2c  |?pa%:.rlexpand%,|
00023380  70 61 73 78 25 2c 72 65  70 32 25 2c 43 25 2c 58  |pasx%,rep2%,C%,X|
00023390  25 3a e7 72 65 70 32 25  3d 30 20 70 61 25 2b 3d  |%:.rep2%=0 pa%+=|
000233a0  31 0d e0 74 05 cd 0d e0  7e 0d fd 58 25 3d 70 61  |1..t....~..X%=pa|
000233b0  73 78 25 0d e0 88 2c d6  6d 61 70 70 69 78 25 2c  |sx%...,.mappix%,|
000233c0  7a 25 28 31 2c 30 29 2c  72 25 28 30 29 2c 67 25  |z%(1,0),r%(0),g%|
000233d0  28 30 29 2c 62 25 28 30  29 2c 62 75 66 66 25 0d  |(0),b%(0),buff%.|
000233e0  e0 92 06 3d b9 0d e0 a6  11 dd 20 a4 31 30 30 31  |...=...... .1001|
000233f0  28 7a 25 28 29 29 0d e0  b0 3f 58 25 3d 62 75 66  |(z%())...?X%=buf|
00023400  66 25 3a e7 72 65 70 25  3e 30 20 43 25 3d 3f 70  |f%:.rep%>0 C%=?p|
00023410  61 25 3a d6 72 6c 65 78  70 61 6e 64 25 2c 70 61  |a%:.rlexpand%,pa|
00023420  73 78 25 2c 72 65 70 25  2c 43 25 2c 58 25 3a 70  |sx%,rep%,C%,X%:p|
00023430  61 25 2b 3d 31 0d e0 ba  42 f5 20 72 65 70 25 3d  |a%+=1...B. rep%=|
00023440  9a 23 63 25 3a 43 25 3d  3f 70 61 25 3a d6 72 6c  |.#c%:C%=?pa%:.rl|
00023450  65 78 70 61 6e 64 25 2c  70 61 73 78 25 2c 72 65  |expand%,pasx%,re|
00023460  70 25 2c 43 25 2c 58 25  3a e7 72 65 70 25 3d 30  |p%,C%,X%:.rep%=0|
00023470  20 70 61 25 2b 3d 31 0d  e0 c4 36 fd 58 25 3d 70  | pa%+=1...6.X%=p|
00023480  61 73 78 25 3a d6 6d 61  70 70 69 78 25 2c 7a 25  |asx%:.mappix%,z%|
00023490  28 31 2c 30 29 2c 72 25  28 30 29 2c 67 25 28 30  |(1,0),r%(0),g%(0|
000234a0  29 2c 62 25 28 30 29 2c  62 75 66 66 25 0d e0 ce  |),b%(0),buff%...|
000234b0  06 3d b9 0d e0 e2 11 dd  20 a4 31 31 30 30 28 7a  |.=...... .1100(z|
000234c0  25 28 29 29 0d e0 ec 29  d6 72 65 61 64 6c 69 6e  |%())...).readlin|
000234d0  65 25 2c 70 6c 62 79 74  65 73 25 2c 72 65 70 25  |e%,plbytes%,rep%|
000234e0  2c 70 69 78 25 2c 70 6c  62 75 66 66 25 0d e0 f6  |,pix%,plbuff%...|
000234f0  2e d6 6d 61 70 70 69 78  25 2c 7a 25 28 31 2c 30  |..mappix%,z%(1,0|
00023500  29 2c 72 25 28 30 29 2c  67 25 28 30 29 2c 62 25  |),r%(0),g%(0),b%|
00023510  28 30 29 2c 70 6c 62 75  66 66 25 0d e1 00 06 3d  |(0),plbuff%....=|
00023520  b9 0d e1 14 11 dd 20 a4  31 34 30 30 28 7a 25 28  |...... .1400(z%(|
00023530  29 29 0d e1 1e 0c e7 76  72 65 70 25 20 8c 0d e1  |)).....vrep% ...|
00023540  28 0c 76 72 65 70 25 2d  3d 31 0d e1 32 05 cc 0d  |(.vrep%-=1..2...|
00023550  e1 3c 38 47 25 3d 62 75  66 66 25 3a e3 58 25 3d  |.<8G%=buff%:.X%=|
00023560  31 b8 70 6c 61 6e 65 73  25 3a 47 25 2b 3d 72 6f  |1.planes%:G%+=ro|
00023570  77 62 79 74 65 73 25 3a  46 25 3d 47 25 2d 72 6f  |wbytes%:F%=G%-ro|
00023580  77 62 79 74 65 73 25 0d  e1 46 15 f5 20 43 25 3d  |wbytes%..F.. C%=|
00023590  9a 23 63 25 3a e7 43 25  3d 30 20 8c 0d e1 50 13  |.#c%:.C%=0 ...P.|
000235a0  43 25 3d 9a 23 63 25 3a  e7 43 25 3d 30 20 8c 0d  |C%=.#c%:.C%=0 ..|
000235b0  e1 5a 18 43 25 3d 9a 23  63 25 3a 76 72 65 70 25  |.Z.C%=.#c%:vrep%|
000235c0  3d 9a 23 63 25 2d 31 0d  e1 64 05 cc 0d e1 6e 2a  |=.#c%-1..d....n*|
000235d0  44 25 3d 46 25 3a c8 99  31 32 2c 34 2c 63 25 2c  |D%=F%:..12,4,c%,|
000235e0  46 25 2c 70 61 74 6c 65  6e 25 3a 46 25 2b 3d 70  |F%,patlen%:F%+=p|
000235f0  61 74 6c 65 6e 25 0d e1  78 3e e7 43 25 3e 31 20  |atlen%..x>.C%>1 |
00023600  e3 4e 25 3d 32 b8 43 25  3a e3 45 25 3d 30 b8 70  |.N%=2.C%:.E%=0.p|
00023610  61 74 6c 65 6e 25 2d 31  3a 46 25 3f 45 25 3d 44  |atlen%-1:F%?E%=D|
00023620  25 3f 45 25 3a ed 3a 46  25 2b 3d 70 61 74 6c 65  |%?E%:.:F%+=patle|
00023630  6e 25 3a ed 0d e1 82 05  cd 0d e1 8c 05 cc 0d e1  |n%:.............|
00023640  96 0d e7 43 25 3d 31 32  38 20 8c 0d e1 a0 22 43  |...C%=128 ...."C|
00023650  25 3d 9a 23 63 25 3a c8  99 31 32 2c 34 2c 63 25  |%=.#c%:..12,4,c%|
00023660  2c 46 25 2c 43 25 3a 46  25 2b 3d 43 25 0d e1 aa  |,F%,C%:F%+=C%...|
00023670  05 cc 0d e1 b4 3d 3f 46  25 3d 28 43 25 80 26 38  |.....=?F%=(C%.&8|
00023680  30 29 3c 3e 30 3a e3 45  25 3d 46 25 2b 31 b8 46  |0)<>0:.E%=F%+1.F|
00023690  25 2b 28 43 25 80 26 37  46 29 3a 3f 45 25 3d 3f  |%+(C%.&7F):?E%=?|
000236a0  46 25 3a ed 3a 46 25 2b  3d 43 25 80 26 37 46 0d  |F%:.:F%+=C%.&7F.|
000236b0  e1 be 05 cd 0d e1 c8 0f  cd 3a fd 46 25 3e 3d 47  |.........:.F%>=G|
000236c0  25 3a ed 0d e1 d2 24 d6  70 6c 61 6e 63 6e 76 25  |%:....$.plancnv%|
000236d0  2c 72 6f 77 62 79 74 65  73 25 2c 62 75 66 66 25  |,rowbytes%,buff%|
000236e0  2c 70 62 75 66 66 25 0d  e1 dc 05 cd 0d e1 e6 2d  |,pbuff%........-|
000236f0  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
00023700  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
00023710  30 29 2c 70 62 75 66 66  25 0d e1 f0 06 3d b9 0d  |0),pbuff%....=..|
00023720  e2 04 11 dd 20 a4 31 35  30 31 28 7a 25 28 29 29  |.... .1501(z%())|
00023730  0d e2 0e 44 d6 72 65 61  64 69 66 66 25 2c 72 6f  |...D.readiff%,ro|
00023740  77 62 79 74 65 73 25 2c  70 6c 62 75 66 66 25 3a  |wbytes%,plbuff%:|
00023750  72 6f 77 73 74 6f 67 6f  25 2d 3d 31 3a e7 72 6f  |rowstogo%-=1:.ro|
00023760  77 73 74 6f 67 6f 25 3d  30 20 f2 6e 65 78 74 73  |wstogo%=0 .nexts|
00023770  74 72 69 70 0d e2 18 2e  d6 6d 61 70 70 69 78 25  |trip.....mappix%|
00023780  2c 7a 25 28 31 2c 30 29  2c 72 25 28 30 29 2c 67  |,z%(1,0),r%(0),g|
00023790  25 28 30 29 2c 62 25 28  30 29 2c 70 6c 62 75 66  |%(0),b%(0),plbuf|
000237a0  66 25 0d e2 22 06 3d b9  0d e2 36 11 dd 20 a4 31  |f%..".=...6.. .1|
000237b0  35 30 35 28 7a 25 28 29  29 0d e2 40 2f d6 20 4c  |505(z%())..@/. L|
000237c0  5a 57 64 65 63 6f 64 65  25 2c 74 61 62 6c 65 25  |ZWdecode%,table%|
000237d0  28 30 29 2c 63 25 2c 70  6c 62 75 66 66 25 2c 72  |(0),c%,plbuff%,r|
000237e0  6f 77 62 79 74 65 73 25  0d e2 4a 28 72 6f 77 73  |owbytes%..J(rows|
000237f0  74 6f 67 6f 25 2d 3d 31  3a e7 72 6f 77 73 74 6f  |togo%-=1:.rowsto|
00023800  67 6f 25 3d 30 20 f2 6e  65 78 74 73 74 72 69 70  |go%=0 .nextstrip|
00023810  0d e2 54 2e d6 6d 61 70  70 69 78 25 2c 7a 25 28  |..T..mappix%,z%(|
00023820  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00023830  2c 62 25 28 30 29 2c 70  6c 62 75 66 66 25 0d e2  |,b%(0),plbuff%..|
00023840  5e 06 3d b9 0d e2 72 11  dd 20 a4 31 35 31 35 28  |^.=...r.. .1515(|
00023850  7a 25 28 29 29 0d e2 7c  2f d6 20 4c 5a 57 64 65  |z%())..|/. LZWde|
00023860  63 6f 64 65 25 2c 74 61  62 6c 65 25 28 30 29 2c  |code%,table%(0),|
00023870  63 25 2c 70 6c 62 75 66  66 25 2c 72 6f 77 62 79  |c%,plbuff%,rowby|
00023880  74 65 73 25 0d e2 86 28  72 6f 77 73 74 6f 67 6f  |tes%...(rowstogo|
00023890  25 2d 3d 31 3a e7 72 6f  77 73 74 6f 67 6f 25 3d  |%-=1:.rowstogo%=|
000238a0  30 20 f2 6e 65 78 74 73  74 72 69 70 0d e2 90 32  |0 .nextstrip...2|
000238b0  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
000238c0  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
000238d0  30 29 2c 72 62 25 2c 67  62 25 2c 62 62 25 0d e2  |0),rb%,gb%,bb%..|
000238e0  9a 06 3d b9 0d e2 ae 11  dd 20 a4 31 36 30 30 28  |..=...... .1600(|
000238f0  7a 25 28 29 29 0d e2 b8  39 d6 70 6c 61 6e 63 6e  |z%())...9.plancn|
00023900  76 25 2c 72 65 61 6c 72  6f 77 62 79 74 65 73 25  |v%,realrowbytes%|
00023910  2c 62 75 66 66 25 2c 70  62 75 66 66 25 3a 62 75  |,buff%,pbuff%:bu|
00023920  66 66 25 2b 3d 72 6f 77  62 79 74 65 73 25 0d e2  |ff%+=rowbytes%..|
00023930  c2 2d d6 6d 61 70 70 69  78 25 2c 7a 25 28 31 2c  |.-.mappix%,z%(1,|
00023940  30 29 2c 72 25 28 30 29  2c 67 25 28 30 29 2c 62  |0),r%(0),g%(0),b|
00023950  25 28 30 29 2c 70 62 75  66 66 25 0d e2 cc 25 72  |%(0),pbuff%...%r|
00023960  6f 77 73 74 6f 67 6f 25  2d 3d 31 3a e7 72 6f 77  |owstogo%-=1:.row|
00023970  73 74 6f 67 6f 25 3d 30  20 f2 72 65 66 69 6c 6c  |stogo%=0 .refill|
00023980  0d e2 d6 06 3d b9 0d e2  ea 11 dd 20 a4 31 36 30  |....=...... .160|
00023990  31 28 7a 25 28 29 29 0d  e2 f4 44 e3 58 25 3d 30  |1(z%())...D.X%=0|
000239a0  b8 70 6c 61 6e 65 73 25  2d 31 3a 46 25 3d 70 6c  |.planes%-1:F%=pl|
000239b0  62 75 66 66 25 2b 58 25  2a 72 6f 77 62 79 74 65  |buff%+X%*rowbyte|
000239c0  73 25 3a d6 72 65 61 64  69 66 66 25 2c 72 6f 77  |s%:.readiff%,row|
000239d0  62 79 74 65 73 25 2c 46  25 3a ed 0d e2 fe 28 e7  |bytes%,F%:....(.|
000239e0  6d 61 73 6b 69 6e 67 25  20 d6 72 65 61 64 69 66  |masking% .readif|
000239f0  66 25 2c 72 6f 77 62 79  74 65 73 25 2c 70 62 75  |f%,rowbytes%,pbu|
00023a00  66 66 25 0d e3 08 26 d6  70 6c 61 6e 63 6e 76 25  |ff%...&.plancnv%|
00023a10  2c 72 6f 77 62 79 74 65  73 25 2c 70 6c 62 75 66  |,rowbytes%,plbuf|
00023a20  66 25 2c 70 62 75 66 66  25 0d e3 12 2d d6 6d 61  |f%,pbuff%...-.ma|
00023a30  70 70 69 78 25 2c 7a 25  28 31 2c 30 29 2c 72 25  |ppix%,z%(1,0),r%|
00023a40  28 30 29 2c 67 25 28 30  29 2c 62 25 28 30 29 2c  |(0),g%(0),b%(0),|
00023a50  70 62 75 66 66 25 0d e3  1c 06 3d b9 0d e3 30 11  |pbuff%....=...0.|
00023a60  dd 20 a4 31 38 35 30 28  7a 25 28 29 29 0d e3 3a  |. .1850(z%())..:|
00023a70  1f d6 72 65 61 64 69 66  66 25 2c 72 6f 77 62 79  |..readiff%,rowby|
00023a80  74 65 73 25 2c 70 6c 62  75 66 66 25 0d e3 44 2e  |tes%,plbuff%..D.|
00023a90  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
00023aa0  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
00023ab0  30 29 2c 70 6c 62 75 66  66 25 0d e3 4e 06 3d b9  |0),plbuff%..N.=.|
00023ac0  0d e3 62 11 dd 20 a4 31  38 35 31 28 7a 25 28 29  |..b.. .1851(z%()|
00023ad0  29 0d e3 6c 1f d6 72 65  61 64 69 66 66 25 2c 72  |)..l..readiff%,r|
00023ae0  6f 77 62 79 74 65 73 25  2c 70 6c 62 75 66 66 25  |owbytes%,plbuff%|
00023af0  0d e3 76 32 d6 6d 61 70  70 69 78 25 2c 7a 25 28  |..v2.mappix%,z%(|
00023b00  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00023b10  2c 62 25 28 30 29 2c 72  62 25 2c 67 62 25 2c 62  |,b%(0),rb%,gb%,b|
00023b20  62 25 0d e3 80 06 3d b9  0d e3 94 11 dd 20 a4 31  |b%....=...... .1|
00023b30  39 30 30 28 7a 25 28 29  29 0d e3 9e 29 d6 72 65  |900(z%())...).re|
00023b40  61 64 6c 69 6e 65 25 2c  70 6c 62 79 74 65 73 25  |adline%,plbytes%|
00023b50  2c 72 65 70 25 2c 70 69  78 25 2c 70 6c 62 75 66  |,rep%,pix%,plbuf|
00023b60  66 25 0d e3 a8 26 d6 70  6c 61 6e 63 6e 76 25 2c  |f%...&.plancnv%,|
00023b70  72 6f 77 62 79 74 65 73  25 2c 70 6c 62 75 66 66  |rowbytes%,plbuff|
00023b80  25 2c 70 62 75 66 66 25  0d e3 b2 2d d6 6d 61 70  |%,pbuff%...-.map|
00023b90  70 69 78 25 2c 7a 25 28  31 2c 30 29 2c 72 25 28  |pix%,z%(1,0),r%(|
00023ba0  30 29 2c 67 25 28 30 29  2c 62 25 28 30 29 2c 70  |0),g%(0),b%(0),p|
00023bb0  62 75 66 66 25 0d e3 bc  06 3d b9 0d e3 d0 11 dd  |buff%....=......|
00023bc0  20 a4 32 30 30 30 28 7a  25 28 29 29 0d e3 da 0e  | .2000(z%())....|
00023bd0  58 25 3d 62 75 66 66 25  3a f5 0d e3 e4 15 43 25  |X%=buff%:.....C%|
00023be0  3d 9a 23 63 25 3a e7 43  25 3c 31 32 38 20 8c 0d  |=.#c%:.C%<128 ..|
00023bf0  e3 ee 20 43 25 2b 3d 31  3a c8 99 31 32 2c 34 2c  |.. C%+=1:..12,4,|
00023c00  63 25 2c 58 25 2c 43 25  3a 58 25 2b 3d 43 25 0d  |c%,X%,C%:X%+=C%.|
00023c10  e3 f8 05 cc 0d e4 02 30  46 25 3d 58 25 3a 3f 46  |.......0F%=X%:?F|
00023c20  25 3d 9a 23 63 25 3a e3  43 25 3d 43 25 b8 31 32  |%=.#c%:.C%=C%.12|
00023c30  38 88 2d 31 3a 3f 58 25  3d 3f 46 25 3a 58 25 2b  |8.-1:?X%=?F%:X%+|
00023c40  3d 31 3a ed 0d e4 0c 05  cd 0d e4 16 17 fd 58 25  |=1:...........X%|
00023c50  3d 62 75 66 66 25 2b 72  6f 77 62 79 74 65 73 25  |=buff%+rowbytes%|
00023c60  0d e4 20 2c d6 6d 61 70  70 69 78 25 2c 7a 25 28  |.. ,.mappix%,z%(|
00023c70  31 2c 30 29 2c 72 25 28  30 29 2c 67 25 28 30 29  |1,0),r%(0),g%(0)|
00023c80  2c 62 25 28 30 29 2c 62  75 66 66 25 0d e4 2a 06  |,b%(0),buff%..*.|
00023c90  3d b9 0d e4 3e 11 dd 20  a4 32 30 30 31 28 7a 25  |=...>.. .2001(z%|
00023ca0  28 29 29 0d e4 48 0e 58  25 3d 62 75 66 66 25 3a  |())..H.X%=buff%:|
00023cb0  f5 0d e4 52 15 43 25 3d  9a 23 63 25 3a e7 43 25  |...R.C%=.#c%:.C%|
00023cc0  3c 31 32 38 20 8c 0d e4  5c 26 43 25 3d 28 43 25  |<128 ...\&C%=(C%|
00023cd0  2b 31 29 2a 32 3a c8 99  31 32 2c 34 2c 63 25 2c  |+1)*2:..12,4,c%,|
00023ce0  58 25 2c 43 25 3a 58 25  2b 3d 43 25 0d e4 66 05  |X%,C%:X%+=C%..f.|
00023cf0  cc 0d e4 70 36 46 25 3d  58 25 3a c8 99 31 32 2c  |...p6F%=X%:..12,|
00023d00  34 2c 63 25 2c 58 25 2c  32 3a e3 43 25 3d 43 25  |4,c%,X%,2:.C%=C%|
00023d10  b8 31 32 38 88 2d 31 3a  21 58 25 3d 21 46 25 3a  |.128.-1:!X%=!F%:|
00023d20  58 25 2b 3d 32 3a ed 0d  e4 7a 05 cd 0d e4 84 17  |X%+=2:...z......|
00023d30  fd 58 25 3d 62 75 66 66  25 2b 72 6f 77 62 79 74  |.X%=buff%+rowbyt|
00023d40  65 73 25 0d e4 8e 44 d6  6d 61 70 70 69 78 25 2c  |es%...D.mappix%,|
00023d50  7a 25 28 31 2c 30 29 2c  72 70 61 6c 25 28 30 29  |z%(1,0),rpal%(0)|
00023d60  2c 67 70 61 6c 25 28 30  29 2c 72 25 28 30 29 2c  |,gpal%(0),r%(0),|
00023d70  67 25 28 30 29 2c 62 25  28 30 29 2c 62 75 66 66  |g%(0),b%(0),buff|
00023d80  25 2c 62 75 66 66 25 0d  e4 98 06 3d b9 0d e4 ac  |%,buff%....=....|
00023d90  11 dd 20 a4 32 30 30 32  28 7a 25 28 29 29 0d e4  |.. .2002(z%())..|
00023da0  b6 0e 58 25 3d 62 75 66  66 25 3a f5 0d e4 c0 15  |..X%=buff%:.....|
00023db0  43 25 3d 9a 23 63 25 3a  e7 43 25 3c 31 32 38 20  |C%=.#c%:.C%<128 |
00023dc0  8c 0d e4 ca 2b 43 25 3d  28 43 25 2b 31 29 2a 73  |....+C%=(C%+1)*s|
00023dd0  74 65 70 32 34 3a c8 99  31 32 2c 34 2c 63 25 2c  |tep24:..12,4,c%,|
00023de0  58 25 2c 43 25 3a 58 25  2b 3d 43 25 0d e4 d4 05  |X%,C%:X%+=C%....|
00023df0  cc 0d e4 de 40 46 25 3d  58 25 3a c8 99 31 32 2c  |....@F%=X%:..12,|
00023e00  34 2c 63 25 2c 58 25 2c  73 74 65 70 32 34 3a e3  |4,c%,X%,step24:.|
00023e10  43 25 3d 43 25 b8 31 32  38 88 2d 31 3a 21 58 25  |C%=C%.128.-1:!X%|
00023e20  3d 21 46 25 3a 58 25 2b  3d 73 74 65 70 32 34 3a  |=!F%:X%+=step24:|
00023e30  ed 0d e4 e8 05 cd 0d e4  f2 17 fd 58 25 3d 62 75  |...........X%=bu|
00023e40  66 66 25 2b 72 6f 77 62  79 74 65 73 25 0d e4 fc  |ff%+rowbytes%...|
00023e50  32 d6 6d 61 70 70 69 78  25 2c 7a 25 28 31 2c 30  |2.mappix%,z%(1,0|
00023e60  29 2c 72 25 28 30 29 2c  67 25 28 30 29 2c 62 25  |),r%(0),g%(0),b%|
00023e70  28 30 29 2c 72 62 25 2c  67 62 25 2c 62 62 25 0d  |(0),rb%,gb%,bb%.|
00023e80  e5 06 06 3d b9 0d e5 1a  11 dd 20 a4 32 32 35 30  |...=...... .2250|
00023e90  28 7a 25 28 29 29 0d e5  24 51 d6 6d 61 70 70 69  |(z%())..$Q.mappi|
00023ea0  78 25 2c 7a 25 28 31 2c  30 29 2c 72 70 61 6c 25  |x%,z%(1,0),rpal%|
00023eb0  28 30 29 2c 72 25 28 30  29 2c 67 70 61 6c 25 28  |(0),r%(0),gpal%(|
00023ec0  30 29 2c 67 25 28 30 29  2c 62 70 61 6c 25 28 30  |0),g%(0),bpal%(0|
00023ed0  29 2c 62 25 28 30 29 2c  74 61 62 6c 65 25 28 30  |),b%(0),table%(0|
00023ee0  29 2c 62 75 66 66 25 0d  e5 2e 36 62 75 66 66 25  |),buff%...6buff%|
00023ef0  2b 3d 72 6f 77 62 79 74  65 73 25 3a 72 6f 77 73  |+=rowbytes%:rows|
00023f00  74 6f 67 6f 25 2d 3d 31  3a e7 72 6f 77 73 74 6f  |togo%-=1:.rowsto|
00023f10  67 6f 25 3d 30 20 f2 72  65 66 69 6c 6c 0d e5 38  |go%=0 .refill..8|
00023f20  06 3d b9 0d e5 4c 11 dd  20 a4 32 33 30 30 28 7a  |.=...L.. .2300(z|
00023f30  25 28 29 29 0d e5 56 48  e7 63 6c 72 66 69 72 73  |%())..VH.clrfirs|
00023f40  74 25 20 e3 58 25 3d 30  b8 73 78 25 2d 31 3a 72  |t% .X%=0.sx%-1:r|
00023f50  62 25 3f 58 25 3d 3f 62  61 63 6b 25 3a 67 62 25  |b%?X%=?back%:gb%|
00023f60  3f 58 25 3d 62 61 63 6b  25 3f 31 3a 62 62 25 3f  |?X%=back%?1:bb%?|
00023f70  58 25 3d 62 61 63 6b 25  3f 32 3a ed 0d e5 60 0c  |X%=back%?2:...`.|
00023f80  e7 76 72 65 70 25 20 8c  0d e5 6a 0c 76 72 65 70  |.vrep% ...j.vrep|
00023f90  25 2d 3d 31 0d e5 74 05  cc 0d e5 7e 07 ea 20 85  |%-=1..t....~.. .|
00023fa0  0d e5 88 44 ee 20 85 20  ea 20 76 72 65 70 25 3d  |...D. . . vrep%=|
00023fb0  2d 31 3a d6 6d 61 70 70  69 78 25 2c 7a 25 28 31  |-1:.mappix%,z%(1|
00023fc0  2c 30 29 2c 72 25 28 30  29 2c 67 25 28 30 29 2c  |,0),r%(0),g%(0),|
00023fd0  62 25 28 30 29 2c 72 62  25 2c 67 62 25 2c 62 62  |b%(0),rb%,gb%,bb|
00023fe0  25 3a 3d b9 0d e5 92 29  45 25 3d a3 3a f5 20 43  |%:=....)E%=.:. C|
00023ff0  25 3d 9a 23 63 25 3a 44  25 3d 9a 23 63 25 3a e7  |%=.#c%:D%=.#c%:.|
00024000  43 25 80 26 34 30 20 44  25 3d a4 48 57 0d e5 9c  |C%.&40 D%=.HW...|
00024010  0f c8 8e 20 43 25 80 26  33 66 20 ca 0d e5 a6 28  |... C%.&3f ....(|
00024020  c9 20 31 3a 45 25 3d b9  3a 76 72 65 70 25 3d 44  |. 1:E%=.:vrep%=D|
00024030  25 2d 31 3a e7 76 72 65  70 25 3c 30 20 76 72 65  |%-1:.vrep%<0 vre|
00024040  70 25 3d a3 0d e5 b0 3c  c9 20 32 3a 63 63 6f 6c  |p%=....<. 2:ccol|
00024050  25 3d 62 61 63 6b 25 3f  44 25 3a 63 62 75 66 25  |%=back%?D%:cbuf%|
00024060  3d 72 62 25 2b 73 78 25  2a 44 25 3a e7 44 25 3d  |=rb%+sx%*D%:.D%=|
00024070  32 35 35 20 63 62 75 66  25 3d 61 6c 70 68 61 25  |255 cbuf%=alpha%|
00024080  0d e5 ba 2d c9 20 33 3a  e3 58 25 3d 30 b8 44 25  |...-. 3:.X%=0.D%|
00024090  2d 31 3a 63 62 75 66 25  3f 58 25 3d 63 63 6f 6c  |-1:cbuf%?X%=ccol|
000240a0  25 3a ed 3a 63 62 75 66  25 2b 3d 44 25 0d e5 c4  |%:.:cbuf%+=D%...|
000240b0  36 c9 20 35 3a c8 99 31  32 2c 34 2c 63 25 2c 63  |6. 5:..12,4,c%,c|
000240c0  62 75 66 25 2c 44 25 2b  31 3a 63 62 75 66 25 2b  |buf%,D%+1:cbuf%+|
000240d0  3d 44 25 2b 31 3a e7 44  25 2b 31 80 31 20 e7 9a  |=D%+1:.D%+1.1 ..|
000240e0  23 63 25 0d e5 ce 31 c9  20 36 3a 43 25 3d a4 48  |#c%...1. 6:C%=.H|
000240f0  57 3a e3 58 25 3d 30 b8  44 25 3a 63 62 75 66 25  |W:.X%=0.D%:cbuf%|
00024100  3f 58 25 3d 43 25 3a ed  3a 63 62 75 66 25 2b 3d  |?X%=C%:.:cbuf%+=|
00024110  44 25 2b 31 0d e5 d8 05  cb 0d e5 e2 07 fd 45 25  |D%+1..........E%|
00024120  0d e5 ec 05 cd 0d e5 f6  32 d6 6d 61 70 70 69 78  |........2.mappix|
00024130  25 2c 7a 25 28 31 2c 30  29 2c 72 25 28 30 29 2c  |%,z%(1,0),r%(0),|
00024140  67 25 28 30 29 2c 62 25  28 30 29 2c 72 62 25 2c  |g%(0),b%(0),rb%,|
00024150  67 62 25 2c 62 62 25 0d  e6 00 06 3d b9 0d e6 14  |gb%,bb%....=....|
00024160  11 dd 20 a4 32 34 30 31  28 7a 25 28 29 29 0d e6  |.. .2401(z%())..|
00024170  1e 1e d6 62 6d 5f 72 6c  65 38 2c 72 6f 77 62 79  |...bm_rle8,rowby|
00024180  74 65 73 25 2c 70 6c 62  75 66 66 25 0d e6 28 2e  |tes%,plbuff%..(.|
00024190  d6 6d 61 70 70 69 78 25  2c 7a 25 28 31 2c 30 29  |.mappix%,z%(1,0)|
000241a0  2c 72 25 28 30 29 2c 67  25 28 30 29 2c 62 25 28  |,r%(0),g%(0),b%(|
000241b0  30 29 2c 70 6c 62 75 66  66 25 0d e6 32 06 3d b9  |0),plbuff%..2.=.|
000241c0  0d e6 46 11 dd 20 a4 32  34 30 32 28 7a 25 28 29  |..F.. .2402(z%()|
000241d0  29 0d e6 50 1e d6 62 6d  5f 72 6c 65 34 2c 72 6f  |)..P..bm_rle4,ro|
000241e0  77 62 79 74 65 73 25 2c  70 6c 62 75 66 66 25 0d  |wbytes%,plbuff%.|
000241f0  e6 5a 2e d6 6d 61 70 70  69 78 25 2c 7a 25 28 31  |.Z..mappix%,z%(1|
00024200  2c 30 29 2c 72 25 28 30  29 2c 67 25 28 30 29 2c  |,0),r%(0),g%(0),|
00024210  62 25 28 30 29 2c 70 6c  62 75 66 66 25 0d e6 64  |b%(0),plbuff%..d|
00024220  06 3d b9 0d e6 78 11 dd  20 a4 33 30 30 30 28 7a  |.=...x.. .3000(z|
00024230  25 28 29 29 0d e6 82 51  d6 6d 61 70 70 69 78 25  |%())...Q.mappix%|
00024240  2c 7a 25 28 31 2c 30 29  2c 72 70 61 6c 25 28 30  |,z%(1,0),rpal%(0|
00024250  29 2c 72 25 28 30 29 2c  67 70 61 6c 25 28 30 29  |),r%(0),gpal%(0)|
00024260  2c 67 25 28 30 29 2c 62  70 61 6c 25 28 30 29 2c  |,g%(0),bpal%(0),|
00024270  62 25 28 30 29 2c 74 61  62 6c 65 25 28 30 29 2c  |b%(0),table%(0),|
00024280  62 75 66 66 25 0d e6 8c  36 62 75 66 66 25 2b 3d  |buff%...6buff%+=|
00024290  72 6f 77 62 79 74 65 73  25 3a 72 6f 77 73 74 6f  |rowbytes%:rowsto|
000242a0  67 6f 25 2d 3d 31 3a e7  72 6f 77 73 74 6f 67 6f  |go%-=1:.rowstogo|
000242b0  25 3d 30 20 f2 72 65 66  69 6c 6c 0d e6 96 06 3d  |%=0 .refill....=|
000242c0  b9 0d e6 a0 11 dd 20 a4  33 35 30 30 28 7a 25 28  |...... .3500(z%(|
000242d0  29 29 0d e6 aa 06 3d b9  0d e6 b4 11 dd 20 a4 33  |))....=...... .3|
000242e0  36 30 30 28 7a 25 28 29  29 0d e6 be 32 d6 6d 61  |600(z%())...2.ma|
000242f0  70 70 69 78 25 2c 7a 25  28 31 2c 30 29 2c 72 25  |ppix%,z%(1,0),r%|
00024300  28 30 29 2c 67 25 28 30  29 2c 62 25 28 30 29 2c  |(0),g%(0),b%(0),|
00024310  72 62 25 2c 67 62 25 2c  62 62 25 0d e6 c8 30 72  |rb%,gb%,bb%...0r|
00024320  62 25 2b 3d 72 6f 77 62  79 74 65 73 25 3a 67 62  |b%+=rowbytes%:gb|
00024330  25 2b 3d 72 6f 77 62 79  74 65 73 25 3a 62 62 25  |%+=rowbytes%:bb%|
00024340  2b 3d 72 6f 77 62 79 74  65 73 25 0d e6 d2 28 72  |+=rowbytes%...(r|
00024350  6f 77 73 74 6f 67 6f 25  2d 3d 31 3a e7 72 6f 77  |owstogo%-=1:.row|
00024360  73 74 6f 67 6f 25 3d 30  20 f2 72 65 66 69 6c 6c  |stogo%=0 .refill|
00024370  70 63 64 0d e6 dc 06 3d  b9 0d e6 e6 11 dd 20 a4  |pcd....=...... .|
00024380  33 37 30 38 28 7a 25 28  29 29 0d e6 f0 34 41 25  |3708(z%())...4A%|
00024390  3d 6a 70 65 67 73 70 61  63 65 25 3a 6a 70 65 67  |=jpegspace%:jpeg|
000243a0  79 25 2d 3d 31 3a 42 25  3d 6a 70 65 67 79 25 3a  |y%-=1:B%=jpegy%:|
000243b0  72 62 25 3d ba 28 6a 70  65 67 25 2b 34 29 0d e6  |rb%=.(jpeg%+4)..|
000243c0  fa 2a d6 6d 61 70 70 69  78 25 2c 7a 25 28 31 2c  |.*.mappix%,z%(1,|
000243d0  30 29 2c 72 25 28 30 29  2c 67 25 28 30 29 2c 62  |0),r%(0),g%(0),b|
000243e0  25 28 30 29 2c 72 62 25  0d e7 04 06 3d b9 0d e7  |%(0),rb%....=...|
000243f0  0e 11 dd 20 a4 33 37 32  34 28 7a 25 28 29 29 0d  |... .3724(z%()).|
00024400  e7 18 48 41 25 3d 6a 70  65 67 73 70 61 63 65 25  |..HA%=jpegspace%|
00024410  3a 6a 70 65 67 79 25 2d  3d 31 3a 42 25 3d 6a 70  |:jpegy%-=1:B%=jp|
00024420  65 67 79 25 3a 72 62 25  3d ba 28 6a 70 65 67 25  |egy%:rb%=.(jpeg%|
00024430  2b 34 29 3a 67 62 25 3d  72 62 25 2b 31 3a 62 62  |+4):gb%=rb%+1:bb|
00024440  25 3d 72 62 25 2b 32 0d  e7 22 32 d6 6d 61 70 70  |%=rb%+2.."2.mapp|
00024450  69 78 25 2c 7a 25 28 31  2c 30 29 2c 72 25 28 30  |ix%,z%(1,0),r%(0|
00024460  29 2c 67 25 28 30 29 2c  62 25 28 30 29 2c 72 62  |),g%(0),b%(0),rb|
00024470  25 2c 67 62 25 2c 62 62  25 0d e7 2c 06 3d b9 0d  |%,gb%,bb%..,.=..|
00024480  e7 36 0d dd 20 f2 72 65  77 69 6e 64 0d e7 40 17  |.6.. .rewind..@.|
00024490  72 6f 77 73 25 3d 73 79  25 3a c8 8e 20 66 6c 61  |rows%=sy%:.. fla|
000244a0  67 20 ca 0d e7 4a 10 c9  20 30 3a cf 23 63 25 3d  |g ...J.. 0:.#c%=|
000244b0  73 74 25 0d e7 54 10 c9  20 31 30 30 3a cf 23 63  |st%..T.. 100:.#c|
000244c0  25 3d 34 0d e7 5e 19 c9  20 32 30 30 3a cf 23 63  |%=4..^.. 200:.#c|
000244d0  25 3d 73 74 25 3a 72 65  70 25 3d 30 0d e7 68 1e  |%=st%:rep%=0..h.|
000244e0  c9 20 33 30 30 3a cf 23  63 25 3d 73 74 25 3a cf  |. 300:.#c%=st%:.|
000244f0  23 63 63 25 3d 73 74 63  63 25 0d e7 72 19 c9 20  |#cc%=stcc%..r.. |
00024500  34 30 30 3a cf 23 63 25  3d 73 74 25 3a 72 65 70  |400:.#c%=st%:rep|
00024510  25 3d 30 0d e7 7c 35 c9  20 35 30 30 3a e3 49 25  |%=0..|5. 500:.I%|
00024520  3d 30 b8 63 6c 65 61 72  63 6f 64 65 25 2d 31 3a  |=0.clearcode%-1:|
00024530  74 61 62 6c 65 25 28 49  25 29 3d 49 25 3a ed 3a  |table%(I%)=I%:.:|
00024540  cf 23 63 25 3d 73 74 25  0d e7 86 46 21 66 69 72  |.#c%=st%...F!fir|
00024550  73 74 63 6f 64 65 3d 30  3a 21 6f 6c 64 63 6f 64  |stcode=0:!oldcod|
00024560  65 3d 30 3a 21 63 6f 64  65 73 69 7a 65 3d 73 65  |e=0:!codesize=se|
00024570  74 63 6f 64 65 73 25 2b  31 3a 21 73 74 61 63 6b  |tcodes%+1:!stack|
00024580  3d 73 74 6b 25 3a 21 73  70 3d 73 74 6b 25 0d e7  |=stk%:!sp=stk%..|
00024590  90 48 21 6d 61 78 63 6f  64 65 3d 63 6c 65 61 72  |.H!maxcode=clear|
000245a0  63 6f 64 65 25 2b 32 3a  21 6d 61 78 63 6f 64 65  |code%+2:!maxcode|
000245b0  73 69 7a 65 3d 32 2a 63  6c 65 61 72 63 6f 64 65  |size=2*clearcode|
000245c0  25 3a 21 63 75 72 62 69  74 3d 30 3a 21 6c 61 73  |%:!curbit=0:!las|
000245d0  74 62 69 74 3d 30 0d e7  9a 1a c9 20 35 30 31 3a  |tbit=0..... 501:|
000245e0  62 75 66 66 25 3d 64 61  74 61 63 61 63 68 65 25  |buff%=datacache%|
000245f0  0d e7 a4 13 c9 20 36 30  30 3a cf 23 63 25 3d 26  |..... 600:.#c%=&|
00024600  33 38 30 0d e7 ae 12 c9  20 37 30 30 3a cf 23 63  |380..... 700:.#c|
00024610  25 3d 73 74 25 0d e7 b8  1d c9 20 38 30 30 3a cf  |%=st%..... 800:.|
00024620  23 63 25 3d 30 3a 72 65  70 25 3d 30 3a 77 74 25  |#c%=0:rep%=0:wt%|
00024630  3d 30 0d e7 c2 4e c9 20  38 30 31 3a cf 23 63 25  |=0...N. 801:.#c%|
00024640  3d 30 3a cf 23 63 63 25  3d 30 3a cf 23 63 63 63  |=0:.#cc%=0:.#ccc|
00024650  25 3d 30 3a 72 65 70 31  25 3d 30 3a 77 74 31 25  |%=0:rep1%=0:wt1%|
00024660  3d 30 3a 72 65 70 32 25  3d 30 3a 77 74 32 25 3d  |=0:rep2%=0:wt2%=|
00024670  30 3a 72 65 70 33 25 3d  30 3a 77 74 33 25 3d 30  |0:rep3%=0:wt3%=0|
00024680  0d e7 cc 10 c9 20 39 30  30 3a cf 23 63 25 3d 30  |..... 900:.#c%=0|
00024690  0d e7 d6 21 c9 20 39 30  31 3a cf 23 63 25 3d 30  |...!. 901:.#c%=0|
000246a0  3a cf 23 63 63 25 3d 30  3a cf 23 63 63 63 25 3d  |:.#cc%=0:.#ccc%=|
000246b0  30 0d e7 e0 12 c9 20 39  30 32 3a cf 23 63 25 3d  |0..... 902:.#c%=|
000246c0  73 74 25 0d e7 ea 2e c9  20 31 30 30 30 3a cf 23  |st%..... 1000:.#|
000246d0  63 25 3d 73 74 25 3a 70  61 25 3d 63 74 61 62 6c  |c%=st%:pa%=ctabl|
000246e0  65 25 3a 72 65 70 25 3d  30 3a 72 65 70 32 25 3d  |e%:rep%=0:rep2%=|
000246f0  30 0d e7 f4 1a c9 20 31  31 30 30 3a cf 23 63 25  |0..... 1100:.#c%|
00024700  3d 73 74 25 3a 72 65 70  25 3d 30 0d e7 fe 14 c9  |=st%:rep%=0.....|
00024710  20 31 32 30 30 3a cf 23  63 25 3d 31 36 30 30 0d  | 1200:.#c%=1600.|
00024720  e8 08 11 c9 20 31 33 30  30 3a cf 23 63 25 3d 30  |.... 1300:.#c%=0|
00024730  0d e8 12 22 c9 20 31 33  30 31 3a cf 23 63 25 3d  |...". 1301:.#c%=|
00024740  30 3a cf 23 63 63 25 3d  30 3a cf 23 63 63 63 25  |0:.#cc%=0:.#ccc%|
00024750  3d 30 0d e8 1c 1b c9 20  31 34 30 30 3a cf 23 63  |=0..... 1400:.#c|
00024760  25 3d 73 74 25 3a 76 72  65 70 25 3d 30 0d e8 26  |%=st%:vrep%=0..&|
00024770  36 c9 20 31 35 30 30 3a  cf 23 63 25 3d 73 74 25  |6. 1500:.#c%=st%|
00024780  28 30 29 3a 72 6f 77 73  74 6f 67 6f 25 3d 73 74  |(0):rowstogo%=st|
00024790  72 69 70 72 6f 77 73 25  3a 73 74 72 69 70 70 74  |riprows%:strippt|
000247a0  72 3d 30 0d e8 30 14 e7  63 6f 6d 70 72 65 73 73  |r=0..0..compress|
000247b0  69 6f 6e 3d 35 20 8c 0d  e8 3a 46 21 66 69 72 73  |ion=5 ...:F!firs|
000247c0  74 63 6f 64 65 3d 30 3a  21 6f 6c 64 63 6f 64 65  |tcode=0:!oldcode|
000247d0  3d 30 3a 21 63 6f 64 65  73 69 7a 65 3d 73 65 74  |=0:!codesize=set|
000247e0  63 6f 64 65 73 25 2b 31  3a 21 73 74 61 63 6b 3d  |codes%+1:!stack=|
000247f0  73 74 6b 25 3a 21 73 70  3d 73 74 6b 25 0d e8 44  |stk%:!sp=stk%..D|
00024800  48 21 6d 61 78 63 6f 64  65 3d 63 6c 65 61 72 63  |H!maxcode=clearc|
00024810  6f 64 65 25 2b 32 3a 21  6d 61 78 63 6f 64 65 73  |ode%+2:!maxcodes|
00024820  69 7a 65 3d 32 2a 63 6c  65 61 72 63 6f 64 65 25  |ize=2*clearcode%|
00024830  3a 21 63 75 72 62 69 74  3d 30 3a 21 6c 61 73 74  |:!curbit=0:!last|
00024840  62 69 74 3d 30 0d e8 4e  05 cd 0d e8 58 13 c9 20  |bit=0..N....X.. |
00024850  31 36 30 30 3a cf 23 63  25 3d 73 74 25 0d e8 62  |1600:.#c%=st%..b|
00024860  12 c9 20 31 37 30 30 3a  cf 23 63 25 3d 31 36 0d  |.. 1700:.#c%=16.|
00024870  e8 6c 18 c9 20 31 38 30  30 2c 31 38 35 30 3a cf  |.l.. 1800,1850:.|
00024880  23 63 25 3d 73 74 25 0d  e8 76 1b c9 20 31 39 30  |#c%=st%..v.. 190|
00024890  30 3a cf 23 63 25 3d 31  32 38 3a 72 65 70 25 3d  |0:.#c%=128:rep%=|
000248a0  2d 31 0d e8 80 13 c9 20  32 30 30 30 3a cf 23 63  |-1..... 2000:.#c|
000248b0  25 3d 73 74 25 0d e8 8a  11 c9 20 32 31 30 30 3a  |%=st%..... 2100:|
000248c0  cf 23 63 25 3d 37 0d e8  94 13 c9 20 32 32 30 30  |.#c%=7..... 2200|
000248d0  3a cf 23 63 25 3d 73 74  25 0d e8 9e 13 c9 20 32  |:.#c%=st%..... 2|
000248e0  32 35 30 3a cf 23 63 25  3d 73 74 25 0d e8 a8 1b  |250:.#c%=st%....|
000248f0  c9 20 32 33 30 30 3a cf  23 63 25 3d 73 74 25 3a  |. 2300:.#c%=st%:|
00024900  76 72 65 70 25 3d 30 0d  e8 b2 13 c9 20 32 34 30  |vrep%=0..... 240|
00024910  30 3a cf 23 63 25 3d 73  74 25 0d e8 bc 13 c9 20  |0:.#c%=st%..... |
00024920  32 35 30 30 3a cf 23 63  25 3d 73 74 25 0d e8 c6  |2500:.#c%=st%...|
00024930  13 c9 20 32 36 30 30 3a  cf 23 63 25 3d 73 74 25  |.. 2600:.#c%=st%|
00024940  0d e8 d0 13 c9 20 32 37  30 30 3a cf 23 63 25 3d  |..... 2700:.#c%=|
00024950  73 74 25 0d e8 da 13 c9  20 32 38 30 30 3a cf 23  |st%..... 2800:.#|
00024960  63 25 3d 73 74 25 0d e8  e4 13 c9 20 32 39 30 30  |c%=st%..... 2900|
00024970  3a cf 23 63 25 3d 73 74  25 0d e8 ee 11 c9 20 33  |:.#c%=st%..... 3|
00024980  30 30 30 3a cf 23 63 25  3d 30 0d e8 f8 16 c9 20  |000:.#c%=0..... |
00024990  33 36 30 30 3a 70 63 64  62 6c 6b 25 21 34 3d 30  |3600:pcdblk%!4=0|
000249a0  0d e9 02 15 c9 20 33 37  30 30 3a 6a 70 65 67 79  |..... 3700:jpegy|
000249b0  25 3d 73 79 25 0d e9 0c  05 cb 0d e9 16 0d e7 63  |%=sy%..........c|
000249c0  61 63 68 65 25 20 8c 0d  e9 20 10 e7 66 6c 61 67  |ache% ... ..flag|
000249d0  3d 33 36 30 30 20 8c 0d  e9 2a 44 70 63 64 62 6c  |=3600 ...*Dpcdbl|
000249e0  6b 25 21 31 32 3d 63 61  63 68 65 72 6f 77 73 25  |k%!12=cacherows%|
000249f0  3a f2 72 65 66 69 6c 6c  70 63 64 3a e7 63 61 63  |:.refillpcd:.cac|
00024a00  68 65 25 3e 3d 66 69 6c  65 73 69 7a 65 25 20 72  |he%>=filesize% r|
00024a10  6f 77 73 74 6f 67 6f 25  3d 2d 31 0d e9 34 05 cc  |owstogo%=-1..4..|
00024a20  0d e9 3e 46 e7 63 61 63  68 65 25 3c 66 69 6c 65  |..>F.cache%<file|
00024a30  73 69 7a 65 25 20 c8 99  31 32 2c 34 2c 63 25 2c  |size% ..12,4,c%,|
00024a40  64 61 74 61 63 61 63 68  65 25 2c 63 61 63 68 65  |datacache%,cache|
00024a50  25 3a 72 6f 77 73 74 6f  67 6f 25 3d 63 61 63 68  |%:rowstogo%=cach|
00024a60  65 72 6f 77 73 25 0d e9  48 05 cd 0d e9 52 14 62  |erows%..H....R.b|
00024a70  75 66 66 25 3d 64 61 74  61 63 61 63 68 65 25 0d  |uff%=datacache%.|
00024a80  e9 5c 3b e7 63 61 63 68  65 62 79 74 65 73 25 20  |.\;.cachebytes% |
00024a90  21 69 6e 63 61 63 68 65  70 74 72 3d 64 61 74 61  |!incacheptr=data|
00024aa0  63 61 63 68 65 25 3a 21  6e 75 6d 6c 65 66 74 74  |cache%:!numleftt|
00024ab0  6f 67 6f 3d 63 61 63 68  65 25 0d e9 66 43 e7 69  |ogo=cache%..fC.i|
00024ac0  6e 70 75 74 3d 32 34 20  e7 72 62 6f 25 3e 3d 30  |nput=24 .rbo%>=0|
00024ad0  20 72 62 25 3d 62 75 66  66 25 2b 72 62 6f 25 3a  | rb%=buff%+rbo%:|
00024ae0  67 62 25 3d 62 75 66 66  25 2b 67 62 6f 25 3a 62  |gb%=buff%+gbo%:b|
00024af0  62 25 3d 62 75 66 66 25  2b 62 62 6f 25 0d e9 70  |b%=buff%+bbo%..p|
00024b00  05 cd 0d e9 7a 32 e7 66  6c 61 67 3d 31 35 30 30  |....z2.flag=1500|
00024b10  20 e7 63 6f 6d 70 72 65  73 73 69 6f 6e 3d 35 20  | .compression=5 |
00024b20  72 6f 77 73 74 6f 67 6f  25 3d 73 74 72 69 70 72  |rowstogo%=stripr|
00024b30  6f 77 73 25 0d e9 84 05  e1 0d ff                 |ows%.......|
00024b3b